1. ProtoBuf概述
ProtoBuf(Google Protocol Buffers)是google开发的一套用于数据存储, 网络通信时用于协议编解码的工具库. 它和XML, Json数据类似, 把数据已某种形式保存起来. ProtoBuf与之不同的是, 它是一种二进制的数据格式, 具有更高的传输, 打包和解包效率.
2. ProtoBuf优势
1. 平台无关, 语言无关, 可扩展
2. 提供友好的动态库, 使用简单
3. 解析速度快, 比对应的XML快约20-100倍
4. 序列化数据非常简洁, 紧凑, 与XML相比, 其序列化之后的数据量约为1/3到1/10.
3. ProtoBuf的语法
1. *.proto文件中的数据类型可以分为两大类:
1. 复合数据类型:枚举, message
2. 标准数据类型: 整型, 浮点, 字符串等
2. 数据前的修饰词:
1. required: 必须赋值, 不能为空, 否则该条message会被认为是未被初始化的("uninitialized"). build一条未被初始化的message时会抛出"RuntimeException"异常, 解析一条未被初始化的messages时会抛出"IOException"异常. 除此之外, "required"字段和"optional"字段并无差别.
2. optional: 可以赋值, 也可以不赋值, 假如不赋值的话, 会被赋默认值.
3. repeated: 可以重复任意次数, 包括0次. 重复数据的顺序将会保存在protobuf中, 将这个字段想象为一个可以自动设置size的数组.
3. 每个字段要给数字:
该Number是用来标记该字段在序列化后的二进制数据中所在的filed, 每个字段的Number在message内部都