• ProtoBuffer学习总结


    什么是所谓的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修饰了,事实也是如此。
  • 相关阅读:
    pywinauto首页、文档和下载
    Android UI自动化测试最佳实践
    5个最佳的Android测试框架(带示例) – 码农网
    (转)使用graphviz绘制流程图
    使用 Graphviz 生成自动化系统图
    程序员的绘图利器 — Graphviz
    绘图工具graphviz学习使用
    Git Book 中文版
    [git] 更新到某个指定版本
    LindDotNetCore~Aspect面向方面编程
  • 原文地址:https://www.cnblogs.com/HelloGreen/p/11711212.html
Copyright © 2020-2023  润新知