首页 > 其他 > 详细

ProtoBuffer学习总结

时间:2019-10-21 10:38:26      阅读:59      评论:0      收藏:0      [点我收藏+]

什么是所谓的Protobuffer

  • google推出的一种数据交换的格式,主要用于制定协议的数据格式。
    • 通俗的说,就是双方使用提前约定好的一个文件(这个文件规定了某种数据的结构是怎么样的,字段1是什么类型的数据,代表什么含义,如此类推)作为数据的参考格式,互相传输数据(即序列化和反序列)。

为什么使用ProtoBuffer

  • 效率高(相比json,参考Protobuffer和json深度对比实验
  • 跨语言
  • 提供了程序,方便从Proto文件直接生成编程中可实际使用的类文件
  • 可自动生成序列化和反序列化的接口

ProtoBuffer使用

  • 网上教程一大堆,而且学习起来简单易懂,不解释

曾经踩过的PB的坑

  • 区分版本
    • 有时候使用proc.exe小程序从.proto文件生成代码文件时,会报错
    • 注意观察错误提示,按照错误提示找到错误原因即可,往往是某些语法特性在新版本不支持了
  • 因合法性检查失败解析pb失败
    • 获取到的数据可能和声明的.proto文件的不吻合
    • .proto文件声明为required的字段,在合法性检查时会判断该字段是否有内容,如果没有内容则认为解析失败
    • 解析是否失败,和终端是否进行合法性检查有关
    • 进行合法性检查代码示例

      bool MessagePB::IsInitialized() const {
          if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
          return true;
      }
      • 从上述代码种的0x00000007可以推理出:该结构体有三个字段,都被required修饰了,事实也是如此。

ProtoBuffer学习总结

原文:https://www.cnblogs.com/HelloGreen/p/11711212.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!