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

相关推荐
在职工程博士2 分钟前
在职博士-南京邮电大学申请考核制博士招生实施细则(信息通信、信息管理工程方向)
大数据·数据库·嵌入式硬件·物联网·硬件工程·数据库开发
chushiyunen11 分钟前
mysql性能调优、连接数、问题排查等
数据库·mysql
盛世宏博北京11 分钟前
《RS485 总线架构下古籍库房中央控制 + 四维防护自动化系统技术方案》
数据库·温湿度·文物库房
Predestination王瀞潞13 分钟前
数据库MySql 8.0.44的安装
数据库·mysql
自然常数e16 分钟前
深入理解指针(7)
c语言·数据结构·算法·visual studio
码农阿豪25 分钟前
兼容是基石,超越是未来:金仓数据库的三重革新
数据库
廋到被风吹走29 分钟前
【数据库】【Redis】基本概念和特点
数据库·redis·缓存
榮十一30 分钟前
10道SQL练习题及答案
数据库·sql·算法
Hns.37 分钟前
MySQL慢SQL问题查找与优化方案
数据库·sql·mysql
一水鉴天38 分钟前
整体设计 定稿 之6 完整设计文档讨论及定稿 之3 整体设计原则(原型-过程-模块三阶联动体系)
前端·数据库·人工智能