leveldb源代码分析系列

iOS开发
• 阅读 3901

这个源代码分析准备采用层级主题分析的方式,即从粗略到细致。例如第零层的分析主要涉及leveldb几个基本机制的流程,核心的数据结构和类。每个主题都扩展出第一层的内容,主要是对所属上层主题的补充和分析,更为细致,如此递归直到没有必要做进一步的分析。这样的好处一是对于读者而言,可以根据需要选择阅读内容。二是为我自己留出充分的调整空间。

前言

  • leveldb分析的经典链接(不定期更新)

http://www.360doc.com/content...
https://stor.51cto.com/art/20...
https://blog.csdn.net/westbro...
https://www.cnblogs.com/Kevin...
https://blog.csdn.net/weixin_...
讲compaction流程
https://www.jianshu.com/p/527...
讲recover流程
http://www.bubuko.com/infodetail-282703.html
https://blog.csdn.net/weixin\_36145588/article/details/78029415
https://www.cnblogs.com/cobbl...
讲compaction的分类以及目的
https://mrcroxx.github.io/
一个博主,写的很好

  • 分析工具推荐:QtCreator

leveldb源代码分析系列
界面美观,轻量级,口碑好,有免费版,审美符合心意,书签机制允许实时跟踪代码走向。

目录(不定期更新)
第零层:
1.leveldb中的memtable实现
2.leveldb中sstable相关
3.leveldb中version相关
第一层:
1.1 comparator介绍
1.2 skiplist实现介绍
1.3 变长压缩相关介绍
1.4 Put/Delete流程
1.5 Get流程
2.1 minor_compaction流程
2.2 major_compaction流程
3.1 recover流程

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Stella981 Stella981
3年前
JS 苹果手机日期显示NaN问题
问题描述newDate("2019122910:30:00")在IOS下显示为NaN原因分析带的日期IOS下存在兼容问题解决方法字符串替换letdateStr"2019122910:30:00";datedateStr.repl
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
03.Android崩溃Crash库之ExceptionHandler分析
目录总结00.异常处理几个常用api01.UncaughtExceptionHandler02.Java线程处理异常分析03.Android中线程处理异常分析04.为何使用setDefaultUncaughtExceptionHandler前沿上一篇整体介绍了crash崩溃
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
小万哥 小万哥
1年前
技术写作与内容研究:主题得分、关键词搜索量、社区和论坛策略
内容研究内容研究涉及对特定主题进行系统的调查,以收集可靠和相关的信息。这个过程对于技术作者来说至关重要,因为它有助于生成有价值的、准确的、信息丰富的和引人入胜的内容。它超越了基本的互联网搜索,包括阅读技术文档、采访专家、进行调查和分析数据。内容研究应以战略
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
贾蔷 贾蔷
3个月前
力扣1137题 解题思路和步骤 C++代码实现,力扣一共多少题
一、题目分析力扣1137题要求我们找到第N个泰波那契数。泰波那契数的定义是:T00,T11,T21,且在n0的条件下Tn3TnTn1Tn2。,当n4时,T4T3T2T14。这道题主要考查我们对递归或动态规划的理解和运用。在思考解题方法时,我们