Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
Protocol Buffer是Google提供的一种数据序列化协议,是一种轻便高效的结构化数据存储格式,可以用于结构化数据序列化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。
指定版本
protocol 语言文件后面名为.proto
。
文件第一行指定版本。必须在文件首行指定,之前不能有任何空行和注释。可以不指定,默认为proto2。
复制代码
- 1
language-inisyntax = "proto3";
定义Message
以message关键字开头,然后指定名称。消息体中时字段的定义,分别指定类型、名称和字段编号。
复制代码
- 1
- 2
- 3
- 4
- 5
language-gomessage SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3; }
示例中只展示了基础类型字段定义,同样可以指定其他枚举类型或者定义好的Message类型。
在二进制格式中,字段编号与类型标识符结合使用。 1到15范围内的字段编号需要一个字节来编码。 从 16 到 2,047 的数字需要 2 个字节。 所以字段编号 1 到 15 的单字节标识符提供更好的性能,所以应将其用于最基本、最常用的字段。
protocol 基础类型与其他语言类型对应关系 Scalar Value Types
关于字段编号是1到2的29次方减一之间的数。不能使用19000到19999之间的数 (FieldDescriptor::kFirstReservedNumber through FieldDescriptor::kLastReservedNumber))。
复杂类型字段声明
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
language-cmake`message SearchResponse {
repeated Result results = 1;
}
message Result {
string url = 1;
string title = 2;
repeated string snippets = 3;
}`
repeated关键字表面该字段是一个重复的值,生成对应语言代码时,会是一个集合字段或属性。
保留字段
如果更新服务的消息删除某些字段,应保证不应重复使用该字段编号。如从现有的message中删除字段应该保留其编号。
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
language-gomessage Foo { reserved 2, 15, 9 to