数据结构序列化

编码

编码是一种将信息或数据转换为特定格式的过程,以便在传输、存储或处理时能够被正确识别和理解。编码是将原始信息转换为数字、符号或其他形式的过程,以便在不同的系统、平台或设备之间进行交互和沟通

定长编码

编码的长度是固定的,只需要知道数据的个数再乘上每个数据的长度就可以知道总长度,例如字符串数组

变长编码

变长编码的目的是压缩信息,并非所有数据的长度都一致,例如 uint64 中存储小数的时候用到的信息非常短,于是就产生了一种变长编码方式,例如每7个bit为一组,最高位表示是否停止

序列化

序列化是一种将对象或数据转换为字节流或其他可存储格式的过程,以便在内存之外进行存储和传输。序列化的目的是将对象的状态或数据结构转换为一种紧凑、可读的形式,以便在需要时能够快速还原为原始对象

序列化分为元数据,索引段和数据段

元数据

存储着这段数据的有关信息,如类型,索引长度,数据长度等
将一段数据的元数据交给解码器,就可以进行自动解码了

索引段

存储着这段数据的索引,可以是偏移地址,布隆过滤器,或者其他一些数据,不同的索引对应不同的数据

数据段

数据段存放着索引对应的数据,数据段中的某一块也可以是一段序列化后的数据结构(可嵌套)

嵌套数据结构序列化

当进行数据结构嵌套的编码时,可以把当前类中的基本数据当作索引段,把拥有的子类当作数据段

反序列化

只需要拿到序列后对序列进行解码即可,注意一段数据的设计必须是便于解码的
反序列化的精髓在于需要在文件中提取信息时,可以通过索引快速提取到一段数据
更便捷的反序列化方式是只要拿到信息的开头,不用拿到信息的长度就可以将信息反序列化,那么我们要么记录变长信息的长度,要么对变长信息使用变长编码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值