1. protobuf的数据类型,有最简单的那种数据类型,就是一个文件中,定义了一个message
  2. 可以在一个文件中定义两个message,两个message之间是没有关联的
  3. 可以在一个文件中,定义两个message,其中一个是简单的,他作为了另个一的字段
message SearchResponse {repeated Result result = 1;
}
message Result {required string url = 1;optional string title = 2;repeated string snippets = 3;
}

也不一定是简单的了,就是其中一个是另一个的字段

  1. 还有一种是嵌套类型的,就是在一个message中定义了另外的一个message
message SearchResponse {message Result {required string url = 1;optional string title = 2;repeated string snippets = 3;}repeated Result result = 1;
}

这个加在中间的message类型,可以理解成是一个子消息
同时可以在其他的消息中使用这个子消息

message SomeOtherMessage {optional SearchResponse.Result result = 1;
}

当然上面的也可以嵌套任意多的message

判断,如果消息类型是repeated的话,这个时候就可以判断的是size,如果是没有repeated,就是其他类型的话,就判断通过has进行判断

本公司基本上很少使用required

简单protobuf相关推荐

  1. 深入理解 ProtoBuf 原理与工程实践(概述)

    ProtoBuf 作为一种跨平台.语言无关.可扩展的序列化结构数据的方法,已广泛应用于网络数据交换及存储.随着互联网的发展,系统的异构性会愈发突出,跨语言的需求会愈加明显,同时 gRPC 也大有取代R ...

  2. 深入理解 ProtoBuf 原理与工程实践

    ProtoBuf 作为一种跨平台.语言无关.可扩展的序列化结构数据的方法,已广泛应用于网络数据交换及存储.随着互联网的发展,系统的异构性会愈发突出,跨语言的需求会愈加明显,同时 gRPC 也大有取代R ...

  3. protobuf和socket通信简单实例

    protobuf和socket通信简单实例   protobuf是 Google 公司内部的混合语言数据标准,可以用来定义通信的协议,由于其有序列化和反序列化的操作,减小了存储或通信的数据量,从而达到 ...

  4. linux下使用protobuf实现简单配置功能

    http://blog.csdn.net/flyan338/article/details/8448518 前言: 程序一般需要load一些参数列表,一般来说我们可以通过linux自带的命令行解析函数 ...

  5. Protobuf介绍及简单使用(下)之文件读写

    目录 Bin二进制文件 写bin文件API 用例一 读bin文件API 用例二 Prototxt文件 写Prototxt文件API 用例三 读Prototxt文件API 用例四 caffe中的prot ...

  6. Protobuf介绍及简单使用(上)

    目录 Protobuf 介绍 优势 protobuf语法 Specifying Field Rules Data type Data name Number Protobuf注释 保留字段与标识符 s ...

  7. linux加protobuf变量环境,protobuf简单介绍和ubuntu 16.04环境下安装教程

    protobuf简单介绍 protobuf是谷歌的开源序列化协议框架,结构类似于XML,JSON这种,显著的特点是二进制的,效率高,主要用于通信协议和数据存储等方面,算是一种结构化数据的表示方法. p ...

  8. Protobuf简单编写与使用

    Protobuf简单介绍 首先Protobuf是google公司提出的一种序列化方法,因为其在网络传输中优点较多,同时使用简单方便维护,因此现如今Protobuf以及逐渐取代Json来传输数据. Pr ...

  9. CocosCreator中Protobuf的简单使用

    cocosCreator中Protobuf的简单使用 proto文件格式: pro1.jpeg 准备工具: cocosCreator webStorm或者VSCode 安装node.js 下载prot ...

最新文章

  1. .Net Discovery 系列之四--深入理解.Net垃圾收集机制(下)
  2. 写个Fragment方便的抽象基类 BaseFragment
  3. java第五章 多线程_java多线程编程核心技术——第五章总结
  4. MongoDB的查询操作
  5. php curl json post请求_php post请求发送json对象数据参数
  6. Javascript学习总结 - JS基础系列三
  7. ASP.NET Web API中实现版本的几种方式
  8. 全排列---STL方法与递归方法
  9. 决策树(二)--C4.5
  10. OpenWrt--高通QCA9563添加多wan口方法
  11. 2022年安全员-A证考试模拟100题模拟考试平台操作
  12. U盘强制格式化的解决方案
  13. 电脑蓝牙音箱,电脑怎么连蓝牙音响吗
  14. 如何找到自己正确需要的抖音搜索关键词
  15. Java实现图片压缩功能
  16. 嘉兴 机器人仓库 菜鸟_菜鸟物流嘉兴未来园区的工业机器人系统运维员的一天...
  17. Freemarker - 根据模板动态生成word文档
  18. 随机获取4位26个英文字母和数字组合的值(4位随机码)
  19. 计算机课翻译成英语,计算机课程英文翻译
  20. 课代表|支付500万美元,为什么连FBI都无法解开美国油管的勒索软件密码?

热门文章

  1. 前置体验,才是打动用户的神器
  2. 敏捷宣言遵循的十二条原则
  3. oracle 分区使用情况,Oracle Hash分区的使用总结
  4. micropython stm32f103_micropython
  5. ensp 路由表_华为模拟器ensp——静态路由实验
  6. 在内网中使用maven_maven构建docker镜像三部曲之三:推送到远程仓库(内网和阿里云)-Go语言中文社区...
  7. java 多选列表框_快逸报表:填报中的下拉多选列表框
  8. mysql数据库解压安装教程_MySQL数据库之windows 10下解压版MySql安装配置方法教程...
  9. 【C++】多态(早期绑定、后期绑定)、抽象类(纯虚函数)、虚析构函数
  10. 2021贵州高考成绩查询文科,贵州高考排名对应大学-贵州高考位次查询(2021年文科参考)...