Level DB --- coding

Util coding是Level DB中重要的数据结构,它主要用来将uint32,和uint64高效的序列化到字符串中和从字符串中反序列化出来。

coding两种序列化形式

Util coding中主要提供两种序列化形式,即Fixed形式和Var形式。其中Fixed形式是常规形式,如图1所示,可以看到每一个uint32的数字,在内存中占4个字节,在序列化的字符串中也占4个字节。

图1. Fixed mode 序列化

对于Var形式,同样是uint32的数字,它序列化的字节数是可变的。如图2所示,这种形式每一个字节(byte),前7位(bit)用于存有效数字,第8位(bit)用于存储flag。flag的设计如下:1.当当前字节不是最后一个序列化字节的时候,flag为1;当当前的字节是最后一个字节的时候,flag为0。同样是uint32_t 789,序列化只需要2个字节。

图2. Var mode 序列化

总结

可以看到Fixed形式,在序列化的时候固定占用4个字节,而Var形式占用的字节数目是不固定的,一个字节(byte),它有7位(bit)是有效存储数据,1位(bit)存储flag。对于都是比较小的数字,Var的方式更节省存储资源。

相关推荐
寂寞旅行3 小时前
向量数据库Milvus的使用
数据库·milvus
骇城迷影3 小时前
代码随想录:链表篇
数据结构·算法·链表
闻哥4 小时前
Redis事务详解
java·数据库·spring boot·redis·缓存·面试
道亦无名4 小时前
aiPbMgrSendAck
java·网络·数据库
程序员酥皮蛋6 小时前
hot 100 第二十七题 27.合并两个有序链表
数据结构·leetcode·链表
面向对象World7 小时前
正点原子Mini Linux 4.3寸800x480触摸屏gt115x驱动
linux·服务器·数据库
404未精通的狗7 小时前
(高阶数据结构)并查集
数据结构
dinga198510267 小时前
mysql之联合索引
数据库·mysql
im_AMBER7 小时前
Leetcode 121 翻转二叉树 | 二叉树中的最大路径和
数据结构·学习·算法·leetcode
数智工坊7 小时前
【数据结构-排序】8.3 简单选择排序-堆排序
数据结构