摘要:
在这个版本中,已经完全去除了虚拟内存的设计,将关注点放到优化数据结构来提高性能。 dict typedef struct dictEntry { void *key; union { // 使用union节省内存 void *val; // 值,当然有各种类型。string,hash,set,zse
阅读全文
posted @ 2025-04-19 20:20
嗯嗯好傅
阅读(15)
推荐(0)
摘要:
首先我们要获取源码,使用 git 拉取 redis 的代码,使用 git checkout 跳到标签为 1.3.6 处,然后就可以愉快的阅读源码了。 推荐 b 站视频 手写redis ,在阅读源码时,从架构层面分析,忽略一些细枝末节的处理。 主要的代码逻辑集中在 redis.c 大约有一万行左右,从
阅读全文
posted @ 2025-04-18 20:44
嗯嗯好傅
阅读(6)
推荐(0)
摘要:
进度最后一个lab 实现 : MapReduce 键值服务 raft共识算法 做实验时需要仔细阅读相关论文,和相关实验提供的暗示,完成了这些在测试的时候就不会有太大的 bug 了。 需要注意的时,实验是并发的,调试起来,使用日志输出比较好。 在遇到一个问题时,如果程序长时间卡住,很有可能是程序中的锁
阅读全文
posted @ 2025-04-11 19:20
嗯嗯好傅
阅读(16)
推荐(0)
摘要:
先和 tracker 节点通信,获取到拥有种子文件的 peer 节点列表。 然后和每个 peer 建立 tcp 连接。 然后和每个 peer 连接发送握手消息,如果握手成功则对方会发送自己所拥有的 piece的位图 ,如果失败对方直接终止连接。 连接成功后需要进一步的通信,来标明双方的状态,比如是否
阅读全文
posted @ 2025-03-21 20:19
嗯嗯好傅
阅读(9)
推荐(0)
摘要:
种子文件编码方式,数据类型 整数 i123e 得 123 字符串 3:abci123e 得 abc 列表 l3:abci123ee 得 ["abc",123] 字典 d3:abci123ee 得 {"abc":123} 使用 go 语言实现
阅读全文
posted @ 2025-03-18 21:43
嗯嗯好傅
阅读(9)
推荐(0)
摘要:
二叉搜索树 满足以下条件: 对于根节点,左子树中所有节点的值 < 根节点的值 < 右子树中所有节点的值。 任意节点的左、右子树也是二叉搜索树,即同样满足条件 1. 这是一个正常的,没有碰到极端情况的二叉搜索树。 如果数据是有序的或者在删除,插入操作下,那么可能会退化成一条链。严重影响性能。 平衡二叉
阅读全文
posted @ 2025-03-16 15:42
嗯嗯好傅
阅读(40)
推荐(0)
摘要:
知道程序员在编写程序时直接和硬件打交道是一件非常麻烦的事,同时不受保障的程序直接运行在硬件上如果出错可能造成计算机宕机,于是可以编写一个应用程序驻留在计算机上管理硬件资源为上层应用提供系统调用(syscall),不允许上层应用随意访问硬件资源,这就是 内核(内核的健壮性往往比其它应用程序要高) Sy
阅读全文
posted @ 2025-03-14 10:45
嗯嗯好傅
阅读(35)
推荐(0)
摘要:
现代编程离不开并发,但并发效率提升的同时也带来了一些问题,比如程序奇怪的执行顺序,诡异的行为,Java 为了解决这个问题提出了一套内存模型 (JMM),同时我们需要注意的是,我们真正要了解的是什么,是 Java语言规范关于 JMM 定义的规则,还是 JVM 对于 JMM 的的具体实现,本文主要根据
阅读全文
posted @ 2025-03-12 15:05
嗯嗯好傅
阅读(16)
推荐(0)
摘要:
是我们需要,才有了三次握手 Sequence numbers 和 Acknowledgments Transmission is made reliable via the use of sequence numbers and acknowledgments. Conceptually, each
阅读全文
posted @ 2025-03-08 22:56
嗯嗯好傅
阅读(20)
推荐(0)
摘要:
事务对于数据库而言,是对数据的一系列操作,比如增删改查,但事务具有 ACID 的特性,原子性,持久性,一致性,隔离性,是为了保证数据库的可靠和数据的一致。需要注意的是我们借助各种方法来保证事务的特性,比如锁就是实现事务隔离性的手段。 在阅读其它博客时有一点需要注意,MySQL的体系结构可以分为两层,
阅读全文
posted @ 2025-03-07 20:27
嗯嗯好傅
阅读(14)
推荐(0)