leveldb
文章平均质量分 66
carbon06
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Leveldb LRU Cache 解析
LRU原理LRU 是一种经典的缓存淘汰策略,其原理以及实现可以查看我之前的博客LRU Cache 解析及实现。本文主要解析Leveldb LRU Cache。Leveldb 实现leveldb 实现的lru cache 使用自己实现的简单hash表存储键值对,循环双链表记录每个元素的访问时间,为了提升多线程环境下的读写性能,Leveldb 内部使用LruCache 数组对外提供服务...原创 2018-05-09 16:53:56 · 1139 阅读 · 0 评论 -
Leveldb Arena 内存池解析
简介Arena 是leveldb 实现的简单的内存池,以最小4096bytes 为单位申请block, 使用指针记录当前block 中空余内存起始位置以及当前block剩余空间。将所有的block 放到blocks_ 数组中。Arena 提供了分配内存以及分配对齐的内存的两种接口,没有释放内存的接口,当Arena 的生命周期结束时,由Arena 的析构函数统一释放内存。Arena 的主要结构如...原创 2018-05-03 16:38:07 · 771 阅读 · 0 评论 -
Leveldb skiplist 实现及解析
skiplist 原理介绍skiplist 由William Pugh 在论文Skip Lists: A Probabilistic Alternative to Balanced Trees 中提出的一种数据结构,skiplist 是一种随机化存储的多层线性链表结构,插入,查找,删除的都是对数级别的时间复杂度。skiplist 和平衡树有相同的时间复杂度,但相比平衡树,skip实现起来更简单...原创 2018-04-27 17:55:41 · 1899 阅读 · 0 评论 -
Leveldb varint 原理解析
varint 介绍我们知道 uint32_t 类型占用4个byte,uint64_t 占用8个byte, 但是对于比较小的数字来说,使用uint32_t 或者uint64_t 存储会比较浪费,varint 的思想是根据数字所需大小使用unsigned char* 指针存储数据,节约内存。leveldb 实现leveldb 中的varint实现原理简单,每个byte 使用最高bit的...原创 2018-04-17 19:59:20 · 959 阅读 · 0 评论 -
Leveldb BloomFliter 解析
BloomFilter 原理布隆过滤器由巴顿布隆于1970年提出,由一个很长的bit数组以及一系列hash函数组成。bloomfilter可以用于检索一个元素是否出现在一个集合中,bloomfilter的优点是相比hash表拥有极大的空间效率,缺点是会出现一定的错误概率(False positive,一个不在集合中的元素被误认为处于集合中)。 bloomfilter 的原理是,当一个元素在加...原创 2018-04-28 15:26:09 · 1620 阅读 · 0 评论
分享