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的方式更节省存储资源。

相关推荐
散峰而望12 小时前
【算法竞赛】堆和 priority_queue
开发语言·数据结构·c++·算法·贪心算法·动态规划·推荐算法
重生之后端学习12 小时前
46. 全排列
数据结构·算法·职场和发展·深度优先·图论
_ziva_12 小时前
5 分钟搭建 CSV 数据问答系统:LangChain + LLM 实战教程
jvm·数据库·oracle
wostcdk12 小时前
数论学习1
数据结构·学习·算法
Zik----13 小时前
Leetcode2 —— 链表两数相加
数据结构·c++·leetcode·链表·蓝桥杯
dust_and_stars13 小时前
APT vs Snap vs Flatpak 核心对比表
运维·服务器·数据库
charliejohn13 小时前
计算机考研 408 数据结构 中缀转后缀
数据结构·考研·算法
lifallen13 小时前
后缀数组 (Suffix Array)
java·数据结构·算法
仰泳的熊猫14 小时前
题目1523:蓝桥杯算法提高VIP-打水问题
数据结构·c++·算法·蓝桥杯
雨翼轻尘14 小时前
2.1 链表1
数据结构·链表