摘要: 一、db_impl.cc分析 调用WriteLevel0Table把Memtable落盘,在VersionEdit存储新增文件信息 遍历Memtable,调用TableBuilder::Add把key_value写入文件 调用Finish 调用sync把缓冲区强制写入磁盘 生成SST文件 为新的SS 阅读全文
posted @ 2022-03-02 09:44 Z9Y1J5 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 一、SST文件结构分析 其中data block/filter block/meta_index block称之为 x block index block:每个key_value表示一个index entry,指向一个data block,key为data block中最大的key,value为8字 阅读全文
posted @ 2022-03-01 11:43 Z9Y1J5 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 一、log_writer.h分析 功能:可以将随机写的IO变成Append,极大提高了写磁盘速度;可以防止数据丢失 日志文件的名称由6位数字编号和log后缀组成 xx.log 日志文件格式: header放在buf中:crc(4字节)、length(2字节)、RecordType(1字节) 函数功能 阅读全文
posted @ 2022-03-01 11:09 Z9Y1J5 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 〇、前置知识 写数据时分两步:1、将数据追加到日志中;2、将数据插入到内存数据库 sequenceNumber:leveldb数据存放形式是LSM,以追加的形式存储,相同key时以seqnumber来确定先后关系 write操作要记录到log文件中的格式为: 几种类型的key: user_key:用 阅读全文
posted @ 2022-03-01 10:42 Z9Y1J5 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 一、skiplist.h(跳表)分析 用户只需要处理写冲突,leveldb跳表保证没有读写冲突。函数功能如下: Insert(): FindGreaterOrEqual():保存搜索的路径pre[],找到要插入的节点 KeyIsAfterNode():返回值bool,key是否大于n的数据 Rand 阅读全文
posted @ 2022-03-01 10:02 Z9Y1J5 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 一、slice.h string都封装成了slice 支持的方法有:构造、拷贝构造、赋值、clear()、empty()、size() remove_prefix(n):指定长度前缀移除 starts_with(x):是否是以x开始 compare(x):返回值0/-1/1 二、hash.h 是Mu 阅读全文
posted @ 2022-03-01 09:34 Z9Y1J5 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 一、概括 基本组件:接口方法、参数、数据存储、迭代器(遍历表)、string(自定义的,因为c++自带的拷贝花销大)、锁、状态信息(返回值) leveldb使用的是小端模式 功能:对外提供四个接口:put\delete\write\get 解决了什么问题:内容持久化、顺序读写 leveldb写流程: 阅读全文
posted @ 2022-03-01 08:45 Z9Y1J5 阅读(61) 评论(0) 推荐(0) 编辑
摘要: c++后台开发面试常见知识点总结(五)场景设计 - 谁在写西加加 - 博客园 (cnblogs.com) 阅读全文
posted @ 2022-01-17 15:11 Z9Y1J5 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 1、将字符串中的数字打上括号 1 //法一: 2 bool isNumber(const char& c) 3 { 4 if(c >= '0' && c <= '9') 5 return true; 6 return false; 7 } 8 int main() 9 { 10 std::strin 阅读全文
posted @ 2021-10-13 09:36 Z9Y1J5 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 步骤是: 在github上new一个新仓库 在本地需要提交的文件夹下 git clone 自己仓库的url mv 文件 /仓库名称 进入仓库的文件夹下 git status git add . git commit -m "描述" git push origin xxx(本地分支名 git bran 阅读全文
posted @ 2021-10-10 20:44 Z9Y1J5 阅读(36) 评论(0) 推荐(0) 编辑