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. Numpy、TensorFlow和Keras函数输入参数axis理解
  2. ubuntu20安装mysql8.0.28
  3. ​iOS 9音频应用播放音频之第一个ios9音频实例2
  4. caffe web demo 搭建
  5. 2019-06-03 Java学习日记 day24 多线程
  6. c# websocket 心跳重连_websocket的简单使用
  7. 算法训练营08-分治和回溯
  8. linux getline函数用法,get()与getline()
  9. 分治算法——快速排序
  10. 《快乐编程大本营》java语言训练班 1课:第一个java程序:你好,范冰冰;
  11. 事件类型-UI事件、焦点事件
  12. python利用pyhive 连接hive
  13. Android之USB打印
  14. 计算机统计字符数,如何在电脑上统计文字字数及标点个数
  15. powerha_使用IBM PowerHA SystemMirror的Hitachi TrueCopy镜像
  16. 解决“该文件夹包含名称过长且无法放入回收站的项目”导致无法删除
  17. uniapp全局弹窗自定义uni.showModal思路总结
  18. 初步实现fft(偶数点与奇数点均可)
  19. 大数据助力广州精准扶贫
  20. 使用python pip安装PyQt5时遇到的不能安装d3dcompiler_47.dll错误

热门文章

  1. 拔丝芋头的Java学习日记--Day2
  2. 盘点一下CSGO职业选手-光辉背后的悲情故事
  3. 【微信小程序|Demo】订单结算页面
  4. 英国智能机器人技术和自主系统研究发展概况
  5. 数据分析实战(三):美国1800~2010年婴儿名字
  6. android标题栏 状态栏,android设置无标题栏 、 状态栏
  7. matlab表示网络,Matlab绘制网络
  8. 【Flutter】Dart 数据类型 布尔类型 ( 布尔类型定义 | 逻辑运算 )
  9. Tenorshare UltData(苹果数据恢复软件)v8.5.3官方版
  10. 80psi等于多少kpa_PSI和KPa如何转换