clojure学习笔记其二
今天的主题是Function
正如标题所言,今天这篇笔记的主题是function,当然也就是lisp语言中的一等公民,“函数"啦XD
那么直入主题,首先来看一下怎么定义一个函数:
;; name params body
;; ----- ------ -------------------
(defn greet [name] (str "Hello, " name) )
这里我引用了官方文档中的说明。
那么这个函数的使用就可以像上一篇中所说的那样:
user=> (greet "小明")
"Hello, 小明"
你也可以给你的方法增加方法说明:
(defn greet
"this is the greet function for you"
[name]
(str "Hello, " name))
clojure学习笔记其一
简述
学习clojure的起因主要还是想学习lisp语言吧。由于既想学lisp现阶段又无法脱离jvm这个大的框架,所以就发现了clojure语言,然后就踏上了“自虐”的不归路:D
学习思路
在刚开始学习的过程中,我看了很多相关的教程、博客,但总是感觉不得其门而入,简单来说就是找不到这门语言的学习思路。大体是因为clojure和传统的C type语言思路不同吧,再加上语法糖太多,导致各种磕磕碰碰。仔细想想,还是整理一下目前所学,也希望整理的东西能给clojure的初学者提供一定的帮助。
本系列的笔记是基于官方文档整理、补充的,如有错漏,请在评论区指出,以便及时进行修改,也有助于我自身的提升和进步。
语言学习的第一步
没错,就是Hello World!
user=> (println "Hello, Clojure!")
Hello, Clojure!
nil
这一句是在repl中执行的,哦,差点忘了,记得安装lein哦,至于怎么装请自行百度,如果需要梯子,emmmmm,自己想办法吧,程序员或者想成为程序员的人不应该被一面墙阻拦(有人敲门,我去开一下,Σ(っ °Д °;)っ好像有哪里不对)
言归正传,输出的结果是“Hello, Clojure!”,但方法的返回值是nil,这个输出其实就是函数println的副产物。
折腾hexo系列之在jacman里集成gitment评论系统
从disqus到gitment
其实就易用性和使用效果上讲,disqus还是很好用的,只需要注册一个账号,在主题里配置一下就可以了,然而,disqus最大的问题还是在于翻墙,咳,科学上网。今天这个问题我的一个小伙伴也跟我吐槽了,毕竟不是每个人都会去弄个vpn啊,ss啊之类的东西。因此,回家之后果断搞起。
《大道至简》读书笔记
编程的精义
开发是一个阐述思想的过程,把想法转化成逻辑,最后变成代码,就是整个开发的过程。
编程,是开发的一环,也就是把逻辑转化为代码的过程。
正如文中所说的那样,“程序=算法+结构”。算法是顺序,分支,循环的组合变化,结构是思想在程序中的映射。因此,代码在编程里是最为easy的一环。
嘛~~第一章大致就是说了这么一个内容,强调了在编程过程中最为重要的反而是思想,逻辑。掌握语言和转化成代码其实都是最为容易的事。PS:是不是说我只要懂得足够多就能当PPT架构师了:)
当然,这里说代码是思想的转化自然是没什么问题的,然而写代码同样是一个磨练技艺的过程,怎么写更好,怎么写更易懂,怎么写更容易维护,这也是一个程序猿需要不断去锻炼学习的。PS:这一段与原文主旨没什么关系,只是忽然想到就加上了。不过话说回来,在这方面如果能做到尽善尽美,这让接盘子的人会非常开心吧(o゜▽゜)o☆
26岁的细思极恐
班车上的感慨(人总是莫名伤感233333)
转眼间已经快工作3年了,年龄也逐渐到达了26岁,我不知道我会在IT这个行业坚持多久,或许是几年也或许是一辈子。人们总是说时光荏苒,白驹过隙。但不仔细回头想想,真的不会发现时间就这样在每天匆忙的上下班中从自己的身后溜走了。 回想过去两年的工作(我是在传统开发行业工作的,互联网接触的不多,主要还是学了没地方用QAQ),虽然在技术上逐渐成熟,也学了很多的东西(想想自己从刚毕业什么都不会,到现在当个开发组的小组长内心还是颇为自豪的23333),框架的,前端的,后端的,也踩了各种坑,但是看看前沿的论坛新闻,感觉自己离这个时代要求的能力还是有不小差距的。不能沉迷于所得的成就,人总是得向前看。 30而立,但看着自己离30岁越来越近,事业上,爱情上都是毫无建树(单身狗。。。哇的一声哭了出来),不禁心里有了些触动,这也是我写这篇博文的动机(估计没什么人愿意看我发牢骚)。
Ubuntu下如何添加ppa仓库
Ubuntu下添加ppa仓库
此处以安装atom为例,命令如下:
sudo add-apt-repository ppa:webupd8team/atom
sudo apt-get update
sudo apt-get install atom
这样就把atom的仓库添加并安装完成了。
然而,并没有这么简单
sudo: add-apt-repository : command not found
mdzz 这是怎么回事,不应该是这样的(╯‵□′)╯︵┻━┻
bilibili-go项目源码学习笔记_2
这一篇主要说明application.go的主要构成和其中用到方法的主要作用。
参数定义
application.go中定义了初始化时需要用到的常量和变量
常量定义:
const (
INDEX_CACHE = "index" //各类别下rank
ALL_RANK_CACHE = "all_rank" //总的rank
BANGUMI_CACHE = "bangumi" //番剧
BANGUMI_LIST_CACHE = "bangumi_list" //新番放松表
SORT_TOP_CACHE = "sort-" //具体某个类别rank(这个在index_cache中要用到)
LIVE_INDEX_CACHE = "live_index" //直播rank
)
bilibili-go项目源码学习笔记_1
bilibili-go服务加载流程浅析
main.go中使用了service包中的application.go创建了新的应用,进而开启了bilibili-go服务,并监听了8080端口。代码如下:
package main
import (
"github.com/go-playground/log"
"github.com/whiteblue/bilibili-go/service"
)
func main() {
app, err := service.NewApplication("conf.json")
if err != nil {
log.Fatal(err)
}
app.Router.Run(":8080")
}
在application.go中,使用了gin作为web框架,并依次执行了以下操作:
对于Go语言中指针的思路整理
为什么要写这个
最近对go语言萌生了不小的学习欲望,因而找了一本书开始看,看到指针一节,不禁再次想起了那些被c语言支配的恐怖日子(这也是我选择java的原因啊,(╯’ - ‘)╯︵ ┻━┻ )。不过,经过再次整理之后发现其实指针这个概念还是蛮好理解的,也希望这篇小文章能给那些难以理解指针的童鞋一点帮助(没帮倒忙就好,o(╯□╰)o),下面就来详细说明一番。
指针概念解析
指针的概念其实主要分为两个部分,一个是内存地址,另一个则是内存地址指向的值。举个栗子:
package main
import (
"fmt"
)
func main() {
a := 3
b := 5
fmt.Println(a, b) //输出值:3 5
}