![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LevelDB源码解析
文章平均质量分 93
LevelDB源码解析
老李头带你看世界
这个作者很懒,什么都没留下…
展开
-
LevelDB源码解析(六)
-->原创 2023-08-14 14:35:19 · 185 阅读 · 0 评论 -
LevelDB源码解析(五)
core skiptablenaruto log systemLSM Tree https://o444bvn7jh.feishu.cn/sheets/shtcn9ulkvMy9rAwUdnngNWBHLe?table=tbl3fU0dYPH8Rxb0&view=vewP2B92zvhttps://o444bvn7jh.feishu.cn/docs/doccn9NZDKDBPquLtYQuMTqNADggoogleTest https://google.github.io/googletest/pri原创 2023-08-14 14:34:28 · 231 阅读 · 0 评论 -
LevelDB源码解析(四)
SSTable的构成是由若干Data Block、若干Meta Data Block、一个Index Block和一个Footer组成。其中:Data Block为key-value存储的结构,由于LevelDB在查询数据的时候,又想顺序读取数据(顺序读要快于随机读),又想缩短查找数据的时间(试想,如果只使用顺序读,一次性读取很大的内存再顺序查找是较慢的),所以LevelDB将默认每16个数据为一组(Group或者下图的Entry)使用进行顺序读,每组之间使用十分查找。原创 2023-08-14 14:31:27 · 287 阅读 · 0 评论 -
LevelDB源码解析(三)
leveldb作者没有使用c++自带的字符串库,而是封装了一个表示字符串的指针和长度的Slice类,这样可以节省复制字符串带来的开销。原创 2023-08-14 14:30:07 · 359 阅读 · 0 评论 -
LevelDB源码解析(一/二)
reinterpret_cast 用于进行各种不同类型的指针之间、不同类型的引用之间以及指针和能容纳指针的整数类型之间的转换。快速管理内存,用于高频次的内存分配和释放,主要用在memtable和immemtable上。创建给定类型对象大小满足对齐要求的未初始化内存块,在一个内存对齐的缓冲区上创建对象。声明一个变量的析构函数永远不会调用,一般还会配合单例模板类使用。对象时,它试图接收给定互斥的所有权。但是可以使用移动语义,对右值进行所有权的传递。,同时提供了转移拥有权的接口。对象的作用域时,销毁。原创 2023-08-14 14:23:28 · 440 阅读 · 0 评论