【License】 GNU General Public License v2.0 人话版本

Ref:

GPL协议在我心中,一直是一块丰碑,简直让人敬而畏之。

但真正读过GPL的人,少之又少,甚至绝大多数程序员,都没有见过GPL的真身。

原因很简单,一是不关心,二是懒得看,三是觉得看了也看不懂。

其实没有那么难的,看完这篇人话版,你就克服这个心理障碍了。

我们早该读GPL的。

我们早该理解GPL的。

Read more
关于Redis的跳表

在我阅读 Redis 底层实现中跳表的部分的时候,不由得想起 b+ 树系列。它们有类似性,比如都是通过多层结构实现快速跳转查找。但是跳表中的层数完全随机,即便是在统计意义上的平均时间复杂度也是和 b+ 树相近。好像跳表从各个方面都不太比得上 b+ 树,那为什么 Redis 的作者却更偏向使用跳表来实现呢? (3.0版本之后的 Redis 更喜欢将 sdlist 与 skiplist 一起使用,并称之为 quicklist )
如下即是一个典型的跳表[1]:
跳表
关于跳表的细节可以参考 WilliamPugh 关于跳表的论文 《Skip Lists: A Probabilistic Alternative to Balanced Trees》[0]

Include: 跳表的粗浅理解, Redis 作者给出的理由

Read more
Redis 简介

Redis 是一个用 C 实现的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库。

Read more
数据库优化

数据库被删,正好重新设计南大图书项目的数据库,为百万级别的数据库做一些语句的规范。

1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:

select id from t where num is null

Read more
粘对

格律诗的“粘”和“对”

Ref: 平上去入如何辨识

奇偶相对即奇数句与偶数句的平仄相反,奇数句为出句,偶数句为对句,两句称之为一联,因为平仄相反,偶之“对”。

如:仄仄平平仄平平仄仄平

偶奇相粘即对句与紧跟的下一出句的平仄相同,谓之“粘”。

理论上来说,如果上一句为,平平仄仄平,那么下一句也应该为平平仄仄平。

Read more