首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
linjinhe
掘友等级
coredump
|
。
擅长C++、分布式、数据库
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
26
文章 24
沸点 2
赞
26
返回
|
搜索文章
最新
热门
现代 C++:自动类型推导
现代的编程语言,不管是动态语言(JavaScript、Python 等),还是静态语言(Go、Rust 等),大都支持自动类型推导(type deduction)。 自动类型推导,通俗地讲就是定义一个变量的时候不需要明确指定类型,而是让编译器根据上下文进行推导。 在 C++11…
现代 C++:右值引用、移动语意、完美转发
右值引用,简单说就是绑定在右值上的引用。右值的内容可以直接移动(move)给左值对象,而不需要进行开销较大的深拷贝(deep copy)。 v2 = v1 调用的是拷贝赋值操作符,v2 复制了 v1 的内容 —— 复制语义。 v3 = std::move(v1) 调用的是移动赋…
LevelDB 完全解析(10):读操作之 Iterator
对外提供范围查询的接口(NewIterator)。 内部的 Compaction。 通过前面的文章,我们了解到 LevelDB 的数据是保存在内部多个不同组件的,并且每个组件的数据格式都不一样。 LevelDB 通过在每一个组件上实现一套相同的迭代器接口来屏蔽掉每个组件的实现细…
LevelDB 完全解析(9):写操作
Put :插入/修改一条记录。 Delete :删除一条记录。 Write :原子地插入/修改/删除多条记录。 leveldb::WriteOptions 是写操作的控制参数,只有一个成员变量 sync 表示是否每次写完都要将日志 flush 到外存。 leveldb::Wri…
LevelDB 完全解析(8):读操作之 Get
点查询(Point Query):读一个 key 的数据。 范围查询(Range Query):有序读一段 key 范围的数据。 本文主要介绍点查询的实现。 LevelDB 通过 leveldb::DB::Get 接口对外提供点查询的能力,具体的实现是 leveldb::DBI…
LevelDB 完全解析(7):初始化
从 Manifest 文件恢复各个 level 的 SSTable 的元数据。 根据 log 文件恢复 MemTable。 恢复 last_sequence_、next_file_numbe_等元信息。 options - 打开/创建 LevelDB 实例的配置参数。 dbna…
LevelDB 完全解析(6):Filter
LevelDB 可以设置通过 bloom filter 来减少不必要的读 I/O 次数。 1970 年,Burton Howard Bloom 在论文 Space/Time Trade-offs in Hash Coding with Allowable Errors 提出了 …
LevelDB 完全解析(5):Cache
Block cache:缓存解压后的 data block,可以加快热数据的查询。 Table cache:缓存打开的 SSTable 文件描述符和对应的 index block、meta block 等信息。 在 LevelDB 中,block cache 和 table c…
LevelDB 完全解析(4):Manifest
内容上,Manifest 文件保存了整个 LevelDB 实例的元数据,比如:每一层有哪些 SSTable。 格式上,Manifest 文件其实就是一个 log 文件,一个 log record 就是一个 VersionEdit。 LevelDB 用 VersionEdit 来…
LevelDB 完全解析(3):SSTable
SSTable 全称 Sorted String Table,顾名思义,里面的 key-value 都是有序保存的。除了两个 MemTable,LevelDB 中的大部分数据是以 SSTable 的形式保存在外存上。 Minor Compaction:一个 MemTable 直…
下一页
个人成就
文章被点赞
61
文章被阅读
47,092
掘力值
1,018
关注了
0
关注者
42
收藏集
1
关注标签
9
加入于
2020-02-12