如图,总体buffer可分为3部分:
size
:记录
data
块的字节个数,从0开始编号(size = 0代表data块为空而不是buffer为空),不包括前面的
size
与
pos
(
size
+
pos
统称
header)。
根据size的大小(也就是data块的字节数)可将buffer分为大块与小块,其中size >= 0x8000 为大块,否则为小块。
(这里有个问题:大小块size都是一个范围,我们要怎么快速来确定buffer是大块还是小块呢?这个问题答案我们放到后面再细说)
pos
:记录
data
块的读写指针,也是从0开始编号(这里
pos
既记录读又记录写操作的位置,本身是1个指针,
存不了两条信息,所以我们需要自己手动调整
pos
)
data
:存储buffer里面的实际数据,可以是
int,ulong,str
等多种类型
cornerstone中RAFT的buffer的实现
未经允许不得转载:小狮博客 » cornerstone中RAFT的buffer的实现
相关推荐
- AD 横向移动-LSASS 进程转储
- C#/.NET/.NET Core技术前沿周刊 | 第 41 期(2025年6.1-6.8)
- 现代 Python 包管理器 uv
- ArkUI-X与Android桥接通信之方法回调
- 商品中心—2.商品生命周期和状态的技术文档
- Benchmark论文解读:Evaluating the Ripple Effects of Knowledge Editing in Language Models
- WineHQ 发布的 Framework Mono 6.14 的这个特性对Windows Forms 用户来说肯定很感兴趣
- 不写一行代码 .NET 使用 FluentCMS 快速构建现代化内容管理系统(CMS)