论protobuf

作者: 谭英智 | 来源:发表于2020-07-13 21:41 被阅读0次

protobuf是google开发的一种数据描述语言,与JSON/XML类似,支持对结构化数据进行序列化和反序列化。可用于协议通讯和数据存储

特性:

  • 支持跨语言
  • 序列化后体积小
  • 序列化和反序列化的速度快

原理:

  • 对数字进行可变长处理,整形用1-5个字节存储,64位整形用1-9个字节存储,形式为tag|varint/ZigZag
    输入整形

    判断整形是否小于127,如果是,则用1个字节来存储,存储结束

    如果大于127,则现存低七位,并在第八位赋值1,表示整形还没存储结束,然后goto step 2

protobuf-varint
  • 对字符串用字符使用tag|len|str的方式来存储

  • tag占一个字节,高4字节存储字段编号,低4字节存储字段类型编号

向前兼容和向后兼容

  • 不可改变已存在标签的数字
  • 不可以增加或删除required字段
  • 可以删除可选(optional)活重复(repeated)字段
  • 可以添加可选或重复字段,新标签数字必须是之前字段没用过的

缺点:

  • 可读性差
  • 缺乏自描述

相关文章

网友评论

    本文标题:论protobuf

    本文链接:https://www.haomeiwen.com/subject/mrgwcktx.html