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

相关推荐
KIN_DIN18 分钟前
SQL 查询最新的一条记录
数据库·sql
毅炼29 分钟前
hot100打卡——day14
java·数据结构·算法·leetcode·ai·深度优先·哈希算法
DLGXY31 分钟前
数据结构——双向循环链表的建立、添加、遍历(十三)
数据结构·链表
C雨后彩虹39 分钟前
优雅子数组
java·数据结构·算法·华为·面试
m0_7066532342 分钟前
Python生成器(Generator)与Yield关键字:惰性求值之美
jvm·数据库·python
wangmengxxw43 分钟前
SpringAI-mysql
java·数据库·人工智能·mysql·springai
漫随流水1 小时前
leetcode回溯算法(46.全排列)
数据结构·算法·leetcode·回溯算法
Coder_Boy_1 小时前
基于SpringAI的在线考试系统-数据库设计核心业务方案
java·数据库·spring boot·ddd·tdd
机器视觉知识推荐、就业指导1 小时前
Qt 元对象系统:机制、组成与典型用法
数据库·qt
睡一觉就好了。2 小时前
直接选择排序
数据结构·算法·排序算法