protobuf 学习 收藏的文章

本文详细解析了Protobuf中packed repeated与repeated的区别,重点介绍了它们不同的编码方式及应用场景,并探讨了如何通过bool标志位控制repeated字段的有效性。
Protobuf数据格式解析:

packed repeated与repeated的区别在于编码方式不一样,repeated将多个属性类型与值分开存储。而packed repeated采用Length-delimited方式。

proto3的repeated默认就是使用packed这种方式来存储,(proto2与proto3区别在于.proto的语法)。

 

http://blog.youkuaiyun.com/zhaozheng7758/article/details/6749000:

[packed =false / true]->采用更紧凑的编码方式

Package: 命名空间

[deprecated =false/true]->标识该域是否已经被弃用 如:optional int32 old_field = 6[deprecated=true]; 该域已弃用

 

repeated字段,可以包含0~N个相同的内容,所以一般这样用,加个bool表明它到底是0个没数据还是大于0个:

message MSG1

{

   repeated fixed32 data = 1;

   optional bool include_data = 2

当 include_data = true 时,表示要修改data字段,此时如果data字段包含0个元素则是清空。

如果include_data = false ,时表示对data字段不做任何改变,此时data字段包含0个元素或者多个元素在业务逻辑上都应该被忽略。

http://www.xuebuyuan.com/1674264.html

您好!关于学习 Protocol Buffers(protobuf),您可以从以下几个方面入手: 1. 官方文档:首先,您可以查阅 Protocol Buffers 的官方文档,它提供了详细的说明、示例和教程,可以帮助您了解 protobuf 的基本概念和用法。官方文档地址为:https://developers.google.com/protocol-buffers/docs/overview。 2. 安装和使用:接下来,您可以按照官方文档中的指引,安装 Protocol Buffers 工具集,并学习如何使用 protobuf 编译器(protoc)生成指定语言的代码。您可以选择使用 C++、Java、Python 等支持 protobuf 的编程语言进行学习和实践。 3. 语法和消息定义:了解 protobuf 的语法和消息定义是非常重要的。您可以学习如何定义消息类型、字段和其他高级特性,以及如何使用扩展、嵌套消息等。官方文档中有详细的说明和示例,帮助您掌握这些概念。 4. 应用场景:除了基本的语法和消息定义,了解 protobuf 在实际应用中的使用也是很重要的。您可以了解如何在网络通信中使用 protobuf 进行数据传输,如何进行数据序列化和反序列化,以及如何处理不同语言之间的兼容性等问题。 5. 其他资源:除了官方文档,还有一些其他的学习资源可以帮助您更深入地学习和应用 protobuf。例如,可以阅读相关的书籍、博客文章,参与开源项目和社区讨论等。 希望以上信息对您有所帮助!如果您有其他问题,我会尽力回答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值