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

相关推荐
STDD11 小时前
Abiotic Factor多人生存建筑游戏《非生物因素》 专用服务器搭建教程
服务器·数据库·游戏
淼淼爱喝水11 小时前
【Ansible 入门实战】三种变量详解
java·linux·数据库·ansible·playbook
我不是懒洋洋11 小时前
【C++】类和对象( 类的定义、实例化、 this指针、 C++和C语言实现Stack对比)
c语言·开发语言·数据结构·c++·经验分享·算法·visual studio
云草桑12 小时前
Odoo企业商用到底是不是免费的?
数据库·odoo·erp
CryptoPP12 小时前
快速集成:基于现代API的金融数据流解决方案
大数据·数据结构·笔记·金融·区块链
YL2004042612 小时前
054实现Trie(前缀树)
数据结构·leetcode
故事和你9112 小时前
洛谷-【图论2-3】最小生成树1
开发语言·数据结构·c++·算法·动态规划·图论
燕-孑12 小时前
redis详解-进阶
数据库·redis·缓存
故事和你9112 小时前
洛谷-【图论2-3】最小生成树2
开发语言·数据结构·c++·算法·动态规划·图论
BGD1045017312 小时前
datagear(7)-期末作业:综合数据分析
数据库·数据分析