ProtoBuf—— (repeated 修饰 )

  • repeated
    • 1、定义
    • 2、使用事项
  • 参考

repeated

1、定义

  • repeated类型相当于STL的vector,可以用来存放N个相同类型的内容。
  • proto2 中还有 repeated 可选,在proto3 中则已经被摒弃并且默认格式为pack
    • packed修饰只用于repeated字段 或 基本类型的repeated字段,用在其他字段,编译 .proto 文件时会报错

2、使用事项

repeated 修饰的字段有两种表达方式:

message Test
{repeated int32 Car = 4 ;// 表达方式1:不带packed=truerepeated int32 Car = 4 [packed=true];// 表达方式2:带packed=true,连续存储// proto 2.1 开始可使用// 区别在于:是否连续存储repeated类型数据
}// 在代码中给`repeated int32 Car`附上3个字段值:3、270、86942Test.setCar(3);
Test.setCar(270);
Test.setCar(86942);

对于同一个 repeated字段、多个字段值来说,他们的Tag都是相同的,即数据类型 & 标识号都相同。

1、问题:表达方式 1
若以传统的多个 T - V-T - V-T - V对存储(不带packed=true),则会导致Tag的冗余,即相同的Tag存储多次;

2、解决方案:表达方式 2
采用带packed=truerepeated 字段存储方式,即将相同的 Tag 只存储一次、添加 repeated 字段下所有字段值的长度Length、连续存储 repeated 字段值,组成一个大的Tag - Length - Value -Value -Value对,即T - L - V - V - V对。

参考

1、https://blog.csdn.net/fuzhufang/article/details/39895551
2、https://blog.csdn.net/mycwq/article/details/19622571
3、https://blog.csdn.net/carson_ho/article/details/70568606

ProtoBuf(Google Protocol Buffers)—— repeated 修饰字段注意点(packed修饰)相关推荐

  1. Google Protocol Buffers介绍

    Google Protocol Buffers(简称Protobuf),是Google的一个开源项目,它是一种结构化数据存储格式,是Google公司内部的混合语言数据标准,是一个用来序列化(将对象的状 ...

  2. 还在用JSON? Google Protocol Buffers 更快更小 (原理篇)

    欢迎关注微信公众号「随手记技术团队」,查看更多随手记团队的技术文章.转载请注明出处 本文作者:丁同舟 原文链接:mp.weixin.qq.com/s/cyOHe1LS-- 背景 随手记客户端与服务端交 ...

  3. Google Protocol Buffers 之.Net应用

    Google Protocol Buffers 之.Net应用 吴剑 2011-2-22 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 最近接到一个 ...

  4. Google Protocol Buffers 2.3.0 for java 快速开始

    Google Protocol Buffers 2.3.0 for java 快速开始 博客分类: Java JavaGoogleUbuntuLinux数据结构 Protocol Buffers是一个 ...

  5. Google Protocol Buffers三两事【知识笔记】

    目录 一.亮点简介 二.使用指南1.定义.proto文件2.编译.proto文件3.读写数据 三.本文总结 四.参考资料 一.亮点简介 Protocol Buffers一种结构化数据存储格式.特点:快 ...

  6. Google Protocol Buffers浅析(四)

    本文作为结束篇,会稍微介绍下怎么反序列化GoogleBuffer数据,并在最后提供本系列文章中所用到的代码整理供下载. 上一篇文章介绍了怎样将数据序列化到了addressbook.data中,那么对于 ...

  7. ProtoBuf(Google Protocol Buffers)—— 反射原理以及反射具体流程介绍

    ProtoBuf-- 反射原理解析 ProtoBuf-- 反射原理 1.反射原理 1.1.反射机制的背景 1.2.定义 1.3.反射原理关注的一些问题 1.4.反射原理的优势和应用 2.ProtoBu ...

  8. [转]Google Protocol Buffers 之.Net应用

    吴剑 2011-2-22 wu-jian.cnblogs.com 前言 最近接到一个跨平台的测试项目,服务端Linux,是Java开发的一系列Socket接口,客户端Windows,所以准备用.Net ...

  9. Google Protocol Buffers和java字符串处理控制

    大多数的操作码被从夜晚复制.懒得敲. 直接在源代码和测试结果如下. serabuffer.proto档.使用下面的命令来生成java代码. protoc -I=./ --java_out=./ ser ...

  10. Protocol Buffers C++ 入门教程

    文章目录 1.ProtoBuf 简介 2.序列化和反序列化 2.1 简介 2.2 JSON 简介 2.3 使用 JSON 进行序列化和反序列化 2.4 C++ 对象序列化常用方法 2.3.1 XML ...

最新文章

  1. 术语1----边界吸收
  2. 用户自助查看kubectl使用的证书状态以及如何更新
  3. android enum java包_Android @IntDef注解取代Java enum枚举提高性能详解
  4. 网银和银企直联的区别
  5. 牛客网(剑指offer) 第十三题 调整数组顺序使奇数位于偶数前面
  6. 逻辑漏洞挖掘初步总结篇
  7. 完美解决SSM中 java.lang...c3p0/impl/NewProxyResultSet.isClosed()Z is abstract 【插入数据只能插入一条问题】
  8. 3D人脸重建——PRNet网络输出的理解
  9. 32位和64位机器上C语言数据类型的大小
  10. 电视领域“烧钱”不止,酷开为何反成赢家?
  11. cas4.0 mysql_【SSO单点系列】:CAS4.0 CAS整合SpringMVC+MyBatis实现数据库校验(04)
  12. Word转PDF方法(jacob插件)
  13. 5G Wifi频段及信道介绍
  14. api sdk开发手册 模板
  15. 用html与js实现简单日历,纯JS实现简单的日历
  16. IOI2022 D2T1 数字电路(计数概率/组合数学+线段树区间翻转)
  17. [渝粤教育] 西南科技大学 语文教材教法 在线考试复习资料2021版
  18. 数学建模竞赛在中国的蝗虫式增长
  19. 掌门优课用户量增多,用户看上了它什么?
  20. JS 简繁体互转代码

热门文章

  1. heka数据流处理工具
  2. Linux进程调度器的设计--Linux进程的管理与调度(十七)
  3. 互联网公司各岗位真实工作内容起底
  4. cocos2dx游戏中添加背景音乐、音效
  5. C# 二维与三维计算多边形面积的方法
  6. 火狐Firefox安装屏蔽广告插件ublock origin方法
  7. 一篇文章带您秒懂地理标志商标注册
  8. nginx: [warn] conflicting server name locahost on 0.0.0.0:80, ignored
  9. 图床:使用新浪微博相册
  10. ECN Trade:飓风灾害短暂冲击美国经济