完整引擎 + Rust 重写对比

组装完整 LSM-Tree 存储引擎:DB 接口(Open/Put/Get/Delete/Iterator/Snapshot)、单写多读并发控制、启动恢复,然后用 Rust 重写核心模块,记录 5 个编译器不让我过的故事,最后三方 benchmark 对比。从零写一个 LSM-Tree 存储引擎系列第 5 篇。

Compaction:LSM-Tree 的心脏手术

从零实现 LSM-Tree Compaction:最小堆多路归并迭代器、Level 分层与 Compaction 打分、Tombstone 下推、Version/VersionEdit/MANIFEST 版本管理,以及 Leveled/Size-Tiered/Universal 三种策略的量化对比。从零写一个 LSM-Tree 存储引擎系列第 4 篇。

SSTable + Bloom Filter:磁盘上的有序表

从零实现 SSTable 和 Bloom Filter:Data Block 前缀压缩与 restart 二分查找、Bloom Filter 双重哈希把误判率压到约 1%、SSTable Builder 和 Reader 的完整 C 代码。从零写一个 LSM-Tree 存储引擎系列第 3 篇。

WAL + MemTable:崩溃了也不丢数据

从零实现 WAL 和 MemTable:WAL 的 record 格式与 32KB Block 对齐、跳表的 O(log n) 插入与查找、InternalKey 编码、崩溃恢复的正确性证明。从零写一个 LSM-Tree 存储引擎系列第 2 篇。

LSM-Tree 全景:为什么要先写日志再排序

从零理解 LSM-Tree 存储引擎的设计哲学:B-Tree 与 LSM-Tree 的本质差异,写放大/读放大/空间放大的三角权衡,以及 WAL、MemTable、SSTable、Compaction、Bloom Filter 各组件的角色与协作关系。从零写一个 LSM-Tree 存储引擎系列第 1 篇。

量子计算的核心原理

深入浅出介绍量子计算的三大核心支柱:量子比特、叠加态和纠缠态,探讨量子计算机如何利用这些奇特性质解决特定问题,以及 Grover 算法如何实现量子搜索加速。

OPAQUE(RFC 9807)详解:从协议原理到工程落地

在传统的用户名 + 密码登录系统中,服务器通常要么直接保存口令派生值(如 salt + hash(password)),要么依赖 TLS+密码的组合来实现认证。一旦服务器数据库被攻破,攻击者就可以对这些口令派生值做离线暴力破解,且整个系统的安全性高度依赖 TLS 与密码派生方案的组合是否正确实现。OPAQUE(The…

OPRF (RFC 9497) 详解:遗忘伪随机函数

在现代隐私保护协议中,我们经常遇到这样一个需求:客户端拥有一个输入 $x$,服务器拥有一个密钥 $k$,双方希望计算 $y F(k, x)$,但有两个严格的隐私限制: 1. 服务器不能知道客户端的输入 $x$,也不能知道计算结果 $y$。 2. 客户端不能知道服务器的密钥 $k$。