摘要: 原文链接:https://juejin.cn/post/7139572163371073543 项目准备 代码、手册 本文对应 2022 年的课程,Project 0 已经更新为实现字典树了。C++17 的开发环境建议直接下载 CLion,不建议自己瞎折腾。 测试 $ mkdir build && 阅读全文
posted @ 2022-09-11 15:11 李素晴 阅读(2128) 评论(5) 推荐(0) 编辑
摘要: B+树简介 在正式介绍本文的主题前,需要对 B+ 树有一定的了解,B+树是一种磁盘上数据的索引结构,大概长这个样子。 B+树的叶子节点是所有的数据,非叶子节点称为索引页,索引页里有若干个索引项,本例中有 3 个索引项,也就是索引页的出度为 3,表示它有 3 个子节点。 相要寻找某一个数据时,比如值为 阅读全文
posted @ 2022-07-30 14:16 李素晴 阅读(716) 评论(1) 推荐(2) 编辑
摘要: 预备知识梳理 本文中设定 block size 与 page size 大小相等。 什么是 Block 文章的开始先解释一下,磁盘的数据读写是以扇区 (sector) 为单位的,而操作系统从磁盘上读写数据是以块 (block) 为单位的,一个 block 由若干个连续的 sector 组成,使用 b 阅读全文
posted @ 2022-07-23 10:22 李素晴 阅读(666) 评论(0) 推荐(2) 编辑
摘要: 如果一条数据每5分钟被访问一次,那么它应该常驻在内存中。类似的,如果想存储只有0和1两个值的标志位,相比于将8个标志位打包为1个字节,将1个标志位单独存储为1个字节是更节约的选择。 本文参考 Jim Gary(图灵奖得主)于1987年发表的论文:The 5 minute rule for tradi 阅读全文
posted @ 2022-07-13 14:34 李素晴 阅读(1007) 评论(2) 推荐(4) 编辑
摘要: 书接上文Raft Part C | MIT 6.824 Lab2C Persistence。 实验准备 实验代码:git://g.csail.mit.edu/6.824-golabs-2021/src/raft 如何测试:go test -run 2D -race 相关论文:Raft Extende 阅读全文
posted @ 2021-11-13 22:01 李素晴 阅读(891) 评论(1) 推荐(0) 编辑
摘要: 书接上文Raft Part B | MIT 6.824 Lab2B Log Replication。 实验准备 实验代码:git://g.csail.mit.edu/6.824-golabs-2021/src/raft 如何测试:go test -run 2C -race 相关论文:Raft Ext 阅读全文
posted @ 2021-11-13 22:00 李素晴 阅读(496) 评论(0) 推荐(0) 编辑
摘要: 书接上文Raft Part A | MIT 6.824 Lab2A Leader Election。 实验准备 实验代码:git://g.csail.mit.edu/6.824-golabs-2021/src/raft 如何测试:go test -run 2B -race 相关论文:Raft Ext 阅读全文
posted @ 2021-11-13 21:59 李素晴 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 实验准备 实验代码:git://g.csail.mit.edu/6.824-golabs-2021/src/raft 如何测试:go test -run 2A -race 相关论文:Raft Extended Section 5.2 实验指导:6.824 Lab 2: Raft (mit.edu) 阅读全文
posted @ 2021-11-13 21:58 李素晴 阅读(230) 评论(0) 推荐(0) 编辑