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

相关推荐
爱吃生蚝的于勒4 分钟前
【Linux】深入理解进程(一)
java·linux·运维·服务器·数据结构·c++·蓝桥杯
猫梦www12 分钟前
力扣21:合并两个有序链表
数据结构·算法·leetcode·链表·golang·力扣
草莓工作室23 分钟前
数据结构8:栈
c语言·数据结构
Han.miracle29 分钟前
数据结构——排序的学习(一)
java·数据结构·学习·算法·排序算法
元闰子44 分钟前
怎么让程序更高效地连起来?
数据库·redis·mysql
洲覆1 小时前
Redis 内存淘汰策略
开发语言·数据库·redis·缓存
胖头鱼的鱼缸(尹海文)1 小时前
数据库管理-第376期 Oracle AI DB 23.26新特性一览(20251016)
数据库·人工智能·oracle
麦聪聊数据1 小时前
浅谈SQL审核(一):SQL审核实现方式与常见工具的选择
数据库·sql
ajassi20001 小时前
开源 Linux 服务器与中间件(七)数据库--MySQL
linux·服务器·数据库·ubuntu·开源
晚枫~2 小时前
图论基础:探索节点与关系的复杂网络
网络·数据结构·图论