Bitcask是一个基于哈希表结构的键值存储系统,Append-only,所有的写操作只追加不修改老的数据。每个文件有一定的大小限制,当文件增加到相应大小,就会产生一个新文件,老的文件只读不写。
一篇文章可以拥有多个标签,同时一个标签下也可以有多篇文章,是多对多模式,因此标签系统的设计显得复杂而重要。本文采用最常见的设计思路,即三张表,一张文章表,一张标签表,一张关联表。
nil在Go语言中随处可见,nil的意思是无,或者是零值。零值,zero value,是不是有点熟悉?在Go语言中,如果你声明了一个变量但是没有对它进行赋值操作,那么这个变量就会有一个类型的默认零值。
main 标识符是随处可见的,每一个 Go 程序都是从一个叫 main 的包中的 main 函数开始的,当 main 函数返回时,程序执行结束。 init 函数也扮演着特殊的角色,接下来我们将描述下 init 函数的属性并介绍下怎么使用它们。
在做一些文章详情页的时候,因为用到了富文本编辑器,因此数据库中存储的是HTML格式的内容,当从数据库中读取显示到页面时需要进行转换,否则显示就是实际的字符串内容,因此需要进行转换,转换的代码很简单,就是通过关键函数template.HTML
对于 Go 1.11 及以上版本,在开启 Go Module 支持的情况下(1.13及以上版本默认开启),还可以通过代理服务来完成 Go 依赖包的下载,这样处理起来比上述第三种方案更加快捷,我们无需手动替换下载源,所有依赖会自动从代理的镜像地址下载。