抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

LevelDB 是 google 开源的 LSM Tree 键值数据库引擎,是大概十五年前的工业级实现,从 Bigtable 中抽离而来。在保持精简的实现的同时也支撑了开源世界许多重要的项目,阅读 LevelDB 代码可以在了解工业级的 LSM Tree 实现的同时学习高性能 C++ 编程。 整体架构 WALLevelDB 将 WAL 日志的结构编码成了一个字节数组,将他们以 block 的...

其实在此之前我就大概知道,stack unwinding 是反向回溯栈的一种机制,在 throw 了什么东西后一层层回溯栈,一层层析构掉这些栈上的 RAII 对象,直到找到 try catch 块后跳转到 catch 块。 但是问题是这种事情是怎样实现的?多说无益,我们直接从 throw 的源码入手分析。 首先我们编写一段示例代码: 12345678910111213141516171819...

本文参考的内核源码版本为 5.15 在 linux 内核项目中,epoll 机制的实现只用了一个文件 fs/eventpull.c 不过这一个文件就有 2000+ 行代码 先从我们熟知的 epoll 系统调用开始分析,看看它们到底都做了些什么: epoll_create123456789101112131415161718192021222324252627282930313233343...