LevelDB 源码阅读:内存分配器、随机数生成、CRC32、整数编解码
LevelDB 中实现了不少 utils 工具,比如定制的内存分配器 Arena,随机数生成类 Random,实现中都会考虑到具体的使用场景,做了优化以及取舍,值得好好学习。本篇文章主要聊聊下面部分的实现:
- 内存管理 Arena,一个简单高效,适合 LevelDB 的内存分配管理器;
- 随机数 Random,一个不错的线性同余伪随机生成算法,用位运算替代取模优化了执行效率。
- CRC32 循环冗余校验,用于检测数据传输或存储过程中是否发生错误;
- 整数编、解码,用于将数字存储在字节流或者从字节流中解析数字。
此外,还有些 utils 组件比较复杂些,会放在单独的文章里聊,比如:
- LevelDB 源码阅读:禁止对象被析构 讲在 C++中如何禁止某个对象被析构,以为这样做的原因。