前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Protocol Buffer使用手册

Protocol Buffer使用手册

作者头像
用户1396155
发布2018-09-28 16:27:44
1.1K0
发布2018-09-28 16:27:44
举报
文章被收录于专栏:IT探索IT探索

一、文件名:*.proto

二、引用其他PB文件:

import  "myprojce/other_protos.proto";

三、文件内容:

1.消息类型

message msgName{

require string query=1;

optional int32 page_number=2; }

说明:

1)一个.proto文件中可以定义多个message类型。

2)同时,如果1个.proto文件定义了多个具有不同依赖的message,会导致依赖膨胀;建议每个文件包含尽可能少的message。

2.字段类型

3.字段序号

message中的每个字段都有唯一序号。

作用:用于识别二进制message中的字段。

注意:

1)序号最小值为1,最大值为2^29-1(536870911);

2)不能使用19000~19999之间的数字,因为它们是为PB实现保留的。其中19000为FieldDescriptor::kFirstReservedNumber,19999为FieldDescriptor::kLastReservedNumber。如果使用了,PB编译器会报错;同样也不能重复使用已保留的字段序号。

3)消息已被使用后不能修改序号。

4)为频繁使用的消息成员保留字段号1~15。

编码格式:

1)1~15的序号用1个字节来编码(并包含字段序号和字段类型);

2)16~2017的序号暂用2个字节;

4.字段规则:

required:message中必有的字段

optional:message中可以有0或1个这个字段(不超过1个)

repeated:该字段在message中可以重复多次(包含0次),并保留重复值的顺序

注:该类型的字段编码效率不高,新代码需使用特殊选项[packed=true]来提高编码效率。例如:

代码语言:javascript
复制
repeated int32 samples = 4 [packed=true];

5.命名空间:

package pkg_name;

1)对于java,解析为包名;

2)对于c++,解析为namespace;

6.注释:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年08月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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