protobuf篇:介绍、安装、测试(1)

本文介绍了Google的Protocol Buffers(Protobuf)的使用,包括消息定义、限定修饰符、数据类型和字段编码值。文章还讨论了 Protobuf 的编译过程和注意事项,如import、package和enum的使用,以及如何在C++和Java中编译和使用PB文件。
摘要由CSDN通过智能技术生成

#(动态库搜索路径) 程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib/

#(静态库搜索路径) 程序编译期间查找动态链接库时指定查找共享库的路径

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/

#执行程序搜索路径

export PATH=$PATH:/usr/local/protobuf/bin/

#c程序头文件搜索路径

export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/

#c++程序头文件搜索路径

export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/

#pkg-config 路径

export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/

7、vi /etc/ld.so.conf,追加/usr/local/protobuf/lib

8、/sbin/ldconfig -v

9、protoc --version



如何写一个PB文件


也有proto3,都可以吧,我最开始接触的是2,就翻译 2 吧。

官网地址:https://developers.google.cn/protocol-buffers/docs/proto,有兴趣的朋友可以自行查阅。

好吧,建议自己打开看,我不全翻译,就看到一些觉得比较重要的我搬过来。

Protobuf消息定义

你首先需要在一个 .proto 文件中定义你需要做串行化的数据结构信息。每个ProtocolBuffer信息是一小段逻辑记录,包含一系列的键值对。

消息由至少一个字段组合而成,类似于C语言中的结构。每个字段都有一定的格式。

字段格式:限定修饰符① | 数据类型② | 字段名称③ | = | 字段编码值④ | [字段默认值⑤]

这里有个非常简单的 .proto 文件定义了个人信息:

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;

}

①限定修饰符

Required: 表示是一个必须字段,必须相对于发送方,在发送消息之前必须设置该字段的值,对于接收方,必须能够识别该字段的意思。发送之前没有设置required字段或者无法识别required字段都会引发编解码异常,导致消息被丢弃。

Optional:表示是一个可选字段,可选对于发送方,在发送消息时,可以有选择性的设置或者不设置该字段的值。对于接收方,如果能够识别可选字段就进行相应的处理,如果无法识别,则忽略该字段,消息中的其它字段正常处理。—因为optional字段的特性,很多接口在升级版本中都把后来添加的字段都统一的设置为optional字段,这样老的版本无需升级程序也可以正常的与新的软件进行通信,只不过新的字段无法识别而已,因为并不是每个节点都需要新的功能,因此可以做到按需升级和平滑过渡。</

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值