proto3与proto2的区别
总结:proto3比proto2支持的语言更多,语法更简洁。去掉了复杂的语法和特性,更强调约定而弱化语法。
1 在第一回非空白非注释行,写明语法:syntax = “proto3”;
2 字段规则移除了"required",所有非repeated的字段都默认为optional(可选的)
在proto2中required也是不推荐使用的。proto3直接从语法层面移除了required规则。
3 “repeated”字段默认采用packed编码
在proto2中,需要明确使用packed=true来为字段指定比较紧凑的packed编码方式。
4 语言增加go,ruby,JavaNano支持
5 移除了default选项
在proto2中,可以使用default选项为某一字段指定默认值。在proto3中,字段的默认值只能根据字段类型由系统决定。默认值全部是约定的,而不再提供默认值的语法。在字段被设置为默认值的时候,该字段不会被序列化,这样可以节省空间,提高效率。
6 枚举类型的第一个字段必须为0.
7 移除了对分组的支持。分组的功能完全可以使用消息嵌套方式实现。
8 旧代码在解析新增字段时,会把不认识的字段丢弃,再序列化后新增的字段就没了。
在proto2中,旧代码虽然会忽视不认识的新增字段,但并不会丢弃,再序列化的时候那些字段被原样保留。
9 移除了对扩展的支持,新增了Any类型。
10 新增了json映射特性。
proto3与proto2的区别相关推荐
- Protobuf 的 proto3 与 proto2 的区别
Protobuf 的 proto3 与 proto2 的区别 转载自:https://solicomo.com/network-dev/protobuf-proto3-vs-proto2.html 这 ...
- proto3和proto2的区别
转自:https://solicomo.com/network-dev/protobuf-proto3-vs-proto2.html proto3和proto2的区别 1.在第一行非空白非注释行,必须 ...
- 【Protocol Buffer】Protocol Buffer入门教程(三):proto3与proto2的区别
总的来说,proto3 比 proto2 支持更多语言但 更简洁.去掉了一些复杂的语法和特性,更强调约定而弱化语法.如果是首次使用 Protobuf ,建议使用 proto3 . 在第一行非空白非注释 ...
- 【C++】C/C++系列教程汇总(更新中......)
文章目录 01. C语言基础 02. C开发实战 03. 数据结构 04. C++语言基础 05. C++核心编程 06. C++开发实战 07. MFC 08. QT 09. Visual Stud ...
- 【C/C++】C/C++博客汇总
00. 目录 文章目录 00. 目录 01. C语言控制台相关文章 02. Protocol Buffers相关文章 03. C语言高级用法 04. 嵌入式C语言高级用法 本博客不断更新,敬请关注- ...
- 正确使用 protobuf 的姿势
Protobuf 总结 用途 Protobuf 是 google 出品的序列化框架,可跨平台.跨语言使用,扩展性良好.与 XML, JSON 等序列化框架相同,Protobuf 广泛的应用于数据存储, ...
- hbase协处理器编码实例
Observer协处理器通常在一个特定的事件(诸如Get或Put)之前或之后发生,相当于RDBMS中的触发器.Endpoint协处理器则类似于RDBMS中的存储过程,因为它可以让你在RegionSer ...
- 一文读懂——Protobuf
文章目录 简介 proto3 与 proto2 的区别 定义数据结构 字段类型 字段编号 字段规则 添加更多消息类型 添加注释 保留字段 默认值 定义枚举 编译.proto 文件 protoc编译 c ...
- proto2 proto3 变化
总的来说,proto3 比 proto2 支持更多语言但 更简洁.去掉了一些复杂的语法和特性,更强调约定而弱化语法.如果是首次使用 Protobuf ,建议使用 proto3 . 1.在第一行非空白非 ...
- 深入理解 ProtoBuf 原理与工程实践(概述)
ProtoBuf 作为一种跨平台.语言无关.可扩展的序列化结构数据的方法,已广泛应用于网络数据交换及存储.随着互联网的发展,系统的异构性会愈发突出,跨语言的需求会愈加明显,同时 gRPC 也大有取代R ...
最新文章
- 面试官:你能聊聊高并发下的接口幂等性如何实现吗?
- Android EditText.setError() - 会弹出一个popupwindow,效果很好
- SAP订单编排和流程增强概述
- anaconda+python3.7安装keras_win10(64)+python3.7+Anaconda3+tensorflow-cpu+Keras安装(亲测有效)...
- poj3264RMQ
- pandas 作图 统计_pandas数据作图方法
- spring源码:@Bean注解解析
- python实现批量将域名解析成ip
- 阿里云实践案例:使用ECS与OSS搭建个人云盘
- 代做matlab程序价格,代做data collection、Matlab设计代写、Matlab代做、代做Matlab编程代写R语言程序|代做R语言编程...
- IE浏览器下载中文文件,文件名乱码或变成下划线问题
- 12306网站车票爬取
- ansible之判断语句jinja2模板的使用 与roles角色的配置使用
- EVE-NG模拟器教程(四)——常用镜像导入和使用
- Oracle如何根据一个日期计算同比环比的日期
- 在这里,你终究会真正地失败
- linux上搭建集群环境
- 【flutter】打渠道包-多渠道脚本打包
- Complex复数类
- 使用apimocker工具辅助测试