前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单介绍 protocol buffer

简单介绍 protocol buffer

作者头像
ke1th
发布2018-01-02 11:24:22
1.3K0
发布2018-01-02 11:24:22
举报

protocol buffer

protocol buffer 是谷歌的一款序列化结构数据的工具. 它有几个核心的概念:

  • .proto文件: 定义protocol buffer message 类型的地方,这个类型指定了如何序列化你的结构数据,如下所示, 这个.proto文件定义了一个Person 结构数据(也可以看作类/结构体).
代码语言:javascript
复制
message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;
  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }
  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }
  repeated PhoneNumber phone = 4;
}
  • protoc工具: protocol buffer compiler,用于编译.proto 文件,编译完之后,会出现两个文件 **.pb.h**.pb.cc , 这两个文件中就包含了刚才我们在.proto中定义的结构数据, 在生成的文件中以 的形式体现, 同时也存在 序列化和解析 这个结构数据的方法.
代码语言:javascript
复制
//生成文件中的一小部分
class Person : public ::google::protobuf::Message {
 public:
  Person();
  virtual ~Person();
  Person(const Person& from);
  • c++ 代码中 包含这个头文件就可以创建这个类的对象了, 创建了对象之后,我们可以把这个对象序列化, 保存到 .pb 文件中, 我们也可以从.pb文件中来还原之前序列化的对象.
  • 序列化的时候,有两种方式, 可以序列化成 .pbtxt(用这个后缀表示是txt文件,防止混淆),这是一个文本文件,人类可读,但是占用空间大. 也可以序列化成 pb(用这个表示二进制文件)文件, 这个是二进制文件,人类不可读,但是占用空间小,传输方便.

参考资料

https://developers.google.com/protocol-buffers/docs/cpptutorial

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • protocol buffer
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档