protobuf是一种将结构化数据序列化的机制, 可用于内部设备通信或存储. 与JSON格式相比, 基于protobuf协议的二进制文件体积更小, 解析速度更快.
protobuf简介
类型
类型 | 解释 |
---|---|
float, double | 浮点数 |
int32, int64, uint32, uint64 | 整数,但不适合编码较大的数字和负数 |
sint32, sint64 | 针对负数进行优化的整数类型 |
fixed32, fixed64, sfixed32, sfixed64 | 更适合大数字的有符号数或无符号数 |
bool | 布尔值 |
string | 任意的UTF-8字符串 |
byte | 任意的字节 |
protobuf对数字存储进行了优化,一个数字越小则存储长度越短。由于计算机使用补码表示负数,因此通常情况下负数将使用多个字节表示。为了优化这种情况,sint类型使用交叉的方式表示,绝对值较小的负数依然可以获得较短的存储长度。
protobuf命名冲突解决方案
对于PB的namespace, 规范要求每个PB都是全局唯一的. 如果设计不合理就会导致PB名称冲突, 对于高版本的依赖库, Go语言在启动时会直接painc, 导致系统无法启动.
对于上述问题, 可以通过降级依赖版本临时解决:
1 | replace ( |
最后更新: 2023年08月30日 14:44
版权声明:本文为原创文章,转载请注明出处
原始链接: https://lizec.top/2022/07/23/protobuf%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/