02. KVStore 版本二
KVstore 版本二 最小可用持久化KVstore 能把数据写进文件,下次启动时重新插回 B+ 树内存中仍然是 B+ 树,磁盘上只是一个“顺序日志 / 数据文件”启动时: 读文件 → 逐条 insert 到 B+ 树 文件格式定义PUT <key> <value> DEL <key> PUT 1 100 PUT 2 200 PUT 3 300 从头到尾读文件 对每一行: PUT → bptree_insert DEL → bptree_delete 即 Log Replay(日志重放) 代码kvstore.h123456789101112131415161718192021222324252627282930313233343536373839404142434445// /home/ubuntu/c++2512/KVstore/include/kvstore.h/** * kvstore 结构体负责整个存储引擎,包含一个指向 bptree 的指针 * B+ 树则是用来存储键值对的数据结构 */#ifn...
01. KVStore 版本一
版本一功能 创建并销毁 KVStore 实例 使用 B+ 树储存数据,支持插入、查找、删除操作 结构 kvstore 通过 bptree 管理数据 稳定性 代码可以正常运行,执行基本功能,并且没有报错 文件目录 代码kvstore.h123456789101112131415161718192021222324252627282930313233343536373839404142434445// /home/ubuntu/c++2512/KVstore/include/kvstore.h/** * kvstore 结构体负责整个存储引擎,包含一个指向 bptree 的指针 * B+ 树则是用来存储键值对的数据结构 */#ifndef KVSTORE_H#define KVSTORE_H#include "index/bptree.h"#ifdef __cplusplusextern "C" {#endif// 定义 KVSTORE 的结构体typedef struct _kvstore { bptree* ...
02. B+ 树删除复盘
B+ 树删除实现:从 Bug 到稳定架构的完整复盘 关键词:B+ 树、删除操作、下溢(underflow)、borrow / merge、fixup、架构设计 这篇文章不是一份“标准答案式”的 B+ 树删除教程,而是一份真实的实现复盘: 为什么“只删一个 key”,树却会整体崩掉? 为什么 merge 看似成功,parent 却被删空? 为什么修复逻辑一定要拆成 fix_leaf / fix_internal? 如果你正在手写 B+ 树,尤其是 C/C++ 版本,那么这篇文章基本可以帮你避开 90% 的坑。 一、B+ 树删除:真正的难点在哪?很多教程会告诉你: 删除 = 从叶子删 → 不够就借 → 借不到就合并 → 向上递归 但真正的难点不在算法步骤,而在“职责边界”。 也就是说: 谁负责修改 parent? merge 做到哪一步为止? underflow 是谁检测、谁修复? 如果这些问题不想清楚,代码一定会出现: parent key 被删两次 root 被误判为空 children 指针错位 树结构“看起来还能跑,但已经坏了”...
01. 分类测试
hello B+ tree
Hexo的搭建与部署
一、创建英文管理员账户 hector打开 Windows 设置 → 账户 → 家庭和其他用户 → 添加其他用户到这台电脑 二、登录用户,配置开发环境登录 Windows 用户:hector 配置 Git 身份信息 git config –global user.name “hector”git config –global user.email “QQ@qq.com“ 验证: git config –list 输出应包含用户名和邮箱 三、生成 SSH Key打开 Git Bash 生成 SSH Key:ssh-keygen -t ed25519 -C “QQ@qq.com“ 文件路径默认 /c/Users/hector/.ssh/id_ed25519 → 回车 id_ed25519 → 私钥 id_ed25519.pub → 公钥 查看公钥内容:cat ~/.ssh/id_ed25519.pub 复制输出内容添加到 GitHub: 打开 GitHub → Settings → SSH and GPG keys ...
Hello YAF
这是在 Hexo 的测试文章。 butterfly ^_^