关于Proto的学习

2023-11-02

关于Proto的学习: proto文件来预先定义的消息格式。数据包是按照proto文件所定义的消息格式完成二进制码流的编码和解码。proto文件,简单地说,就是一个消息的协议文件,这个协议文件的后缀文件名为“.proto”。proto其实就相当于接口的调用,类似于post,get等这些请求于响应处理,它也会携带信息输出,类似于请求头,请求头....

// 声明使用的语法是proto3,否则默认是proto2

syntax = "proto3";

// 导入Any包,就可以支持Protobuf3的 Any类型, // Any包含任意序列化的消息(字节),以及一个URL,该URL充当该消息的全局唯一标识符并解析为该消息的类型

import "google/protobuf/any.proto";

// 命名空间

package proto.demo.message;

// 生成的java包路径

option java_package = "proto.demo.message";

// 生成的java对象名

option java_outer_classname = "ProtoDemoMessage";

// 需要传输的数据格式

message TransportMessage {
    int64 Id = 1;
    string AccessToken = 2;
    EnumMsgType MsgType = 3;
    google.protobuf.Any Content = 4;
    map<int64, int64> map = 5;  map
    repeated xxxx xxxx = 6; 数组
}

// 一个proto文件可以定义多个数据结构

enum EnumMsgType {
    UnknownMsg = 0;
    HeartBeatReq = 1001;
    MsgReceivedAck = 1002;
    Error = 1003; 
}

字段规则 required : 字段只能也必须出现 1 次,多用于必填项,必须赋值的字符 例如:

required int32 id = 1 [default = 123]

optional : 字段可出现 0 次或多次,可有可无的字段,可以使用[default = xxx]配置默认值 例如:

optional string name = 1 [default = "张三"]

repeated : 字段可出现任意多次(包括 0),多用于 Java List 属性 例如:

//list String
repeated string strList = 5;
//list 对象
repeated Role roleList = 6;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于Proto的学习 的相关文章

  • ClientRequestFactory RestEasy 已弃用...还有其他 RestEasy 替代方案吗?

    我需要使用其他人创建的 RestService 的接口来创建轻松的客户端 这工作很好 除了一件事 当我从rest easy 2 3 5 Final更新到resteasy 3 0 x时 Client RequestFactory类看起来像 D
  • log4j:ERROR 在 tomcat 7 中部署 war 时无法创建自定义 Appender

    我的 log4j xml 中有以下标签
  • 在 Java 中重新抛出异常而不丢失堆栈跟踪

    在 C 中 我可以使用throw 语句重新抛出异常 同时保留堆栈跟踪 try catch Exception e if e is FooException throw Java中有没有类似的东西 不会丢失原始堆栈跟踪 catch Whate
  • Eclipse JAVA工具jar不存在

    The archive C Java jdk1 6 0 26 32 lib tools jar which is referenced by the classpath does not exist 这是我运行Tomcat时遇到的错误 清理
  • 用Java截取网页的屏幕截图[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有一个免费的工具可以读取给定的网页并截取它的屏幕截图 我使用 VirtualFramebuffer 和 Firefox Binary
  • CDI 对象无法使用注入的构造函数进行代理

    当尝试将参数注入 CDI bean ApplicationScoped 的构造函数时 我遇到以下问题 Caused by org jboss weld exceptions UnproxyableResolutionException WE
  • 为什么需要添加工件 JSR305 才能使用 Guava 14+?

    在stackoverflow上查找信息时 我看到了一个与我类似的问题 但没有真正的答案here https stackoverflow com questions 3800033 guava r07 gwt and javax annota
  • Appengine - 隐藏文件夹的部署

    为了验证 SSL 证书 我需要将包含一些文件的隐藏文件夹 well known 上传到我的应用程序 我正在使用 eclipse 部署 java 应用程序 但 appengine 上的应用程序未收到这些文件 我猜他们被过滤掉了 我尝试将隐藏文
  • 如何使用 Java2D 创建硬件加速图像?

    我正在尝试创建一个快速图像生成器 它可以执行大量 2d 转换和形状渲染 因此我尝试使用 BufferedImage 然后获取 Graphics2D 对象来执行所有绘图 我现在主要关心的是 make 速度非常快 所以我创建一个像这样的 Buf
  • 在java中迭代日期

    我需要遍历一系列日期 不确定如何在 for 循环中获取第二天 我在用java util Date So plusDays 1 不能在 for 循环中用于获取下一个日期 Used date1 new Date date1 getTime 10
  • 要导入什么才能使用@SuppressFBWarnings?

    要使用 SuppressFBWarnings 需要导入什么 我通过帮助 安装新软件安装了 findbugs 插件 当我输入 import edu 时 我无法按 ctrl space 来获取选项 Example try String t nu
  • 结果显示图像上有衬里

    我正在使用 opencv 和 android ndk 下面是我的 jni 代码 void Vignete Mat img1 Mat img2 Mat out resize img1 img1 img2 size img1 convertTo
  • Java 线程 JavaDoc

    我编写了一个只能在特定线程上调用的方法 是否应该将标准注释或注释添加到方法的 javadoc 中来表示这一点 不知道有任何这样的标准注释 Java 并发实践 http www javaconcurrencyinpractice com 在第
  • javax.validation 的 @AssertTrue - 它不应该创建错误消息吗?

    我在 Spring MVC 命令 bean 中有以下代码 AssertTrue public boolean isConditionTrue return false private boolean conditionTrue 我的 JSP
  • Guice 字段注入不起作用(返回 null)

    我在使用 Guice 时遇到空值问题 接下来我将向您展示一个类似场景的示例 我知道字段注入是一种不好的做法 但我希望它在演示中像这样工作 我有一个名为B 这是我要注入的 class B Inject public B public void
  • JNA Windows 服务启动类型

    我一直在使用 JNA 并且能够使用下面的代码返回 Windows 服务的状态 即启动或停止 但我不确定如何返回服务的启动类型 我确信 JNA 之外还有其他方法 但如果可能的话我想继续使用 JNA import com sun jna imp
  • ElasticSearch - 定义自定义字母顺序进行排序

    我正在使用 ElasticSearch 2 4 2 通过 Java 的 HibernateSearch 5 7 1 Final 我在字符串排序方面遇到问题 我的应用程序的语言有变音符号 它们有特定的字母顺序 订购 例如 直接在之后L 追随O
  • java.lang.Object#getClass() 的 Eclipse 外部空注释

    我正在使用 Eclipse Mars 中提供的外部空注释工具 我正在尝试添加外部注释java lang Object getClass 但似乎无法正确签名 我尝试过以下变体 NonNull Class getClass L1java lan
  • 术语“可序列化”是什么意思? [复制]

    这个问题在这里已经有答案了 不太确定我读过的定义可序列化实际上做了什么 import java io Serializable import java text StringCharacterIterator import java uti
  • Java中精确的时间测量

    Java 提供了两种获取当前时间的方法 System nanoTime and System currentTimeMillis 第一个给出的结果以纳秒为单位 但实际精度比这要差得多 许多微秒 JVM 是否已经为每台特定机器提供了最佳的价值

随机推荐

  • Mac系统下vscode快捷键打开控制台?

    调试控制台 command shift Y 终端 control
  • 『PyQt5-Qt Designer篇』| 09 Qt Designer中分割线和间隔如何使用?

    09 Qt Designer中分割线和间隔如何使用 1 间隔 1 1 水平间隔 1 2 垂直间隔 2 分割线 2 1 水平线 2 2 垂直线 3 保存并执行 1 间隔 间隔有水平间隔和垂直间隔 1 1 水平间隔 拖动4个按钮 并设置为水平布
  • 分布式架构知识体系必读

    1 问题 1 何为分布式何为微服务 2 为什么需要分布式 3 分布式核心理论基础 节点 网络 时间 顺序 一致性 4 分布式是系统有哪些设计模式 5 分布式有哪些类型 6 如何实现分布式 2 关键词 节点 时间 一致性 CAP ACID B
  • MFC入门基础(十)静态文本框()、编辑框(Edit Control)

    一 静态文本框的使用 1 如何动态创建静态文本框 不是使用对话框模板进行拖动 而是手动代码进行创建 先看下 函数Create CStatic类的方法Create virtual BOOL Create LPCTSTR lpszText 静态
  • 实战:Springboot集成Sentinel实现流量控制、熔断降级、负载保护

    文章目录 前言 知识积累 流量控制 负载保护 熔断降级 官方文档 实战演练 部署sentinel dashboard 直接jar包部署 docker compose编排 springboot集成sentinel 基础架构搭建 sentine
  • 【RPA技术】UI分析器与可视化树:解决界面元素获取难题

    一般人在使用计算机的时候 都是在和操作系统的图形界面打交道 图形界面各有各的特色 当我们用鼠标点击时 其实鼠标下面都是一个小的图形部件 我们把这些图形部件称为 界面元素 在UiBot中 界面元素的作用 就是作为 有目标 的命令中的目标使用
  • CTF show WEB13

    题目地址 http ctf show 进入题目是个文件上传的题目 尝试了一番文件上传漏洞利用的方法后 没有啥突破 可能有啥隐藏的目录 尝试源码泄露利用的方法 在输入upload php bak时成功下载下来源码 bak文件是备份文件 这里列
  • Mysql中用SQL增加、删除字段,修改字段名、字段类型、注释,调整字段顺序总结

    1 增加一个字段 代码如下 复制代码 增加一个字段 默认为空alter table user add COLUMN new1 VARCHAR 20 DEFAULT NULL 增加一个字段 默认不能为空alter table user add
  • Opengl学习笔记:(一).Ply文件文件格式和文件读取

    转载自 http blog csdn net lxfyzx article details 4997627 http blog csdn net lxfyzx article details 4997780 一 Ply简介 这次实验老师要求
  • PTE工作一个月小结

    PTE全称 量产测试工程师 入职时间 2022年10月31日 概况 2022年6月毕业 第一份工作不合适 同年9月辞职 10月回到四川进行报道 因为毕业时间不长 行业技能和知识尚且不够 有三个月的培训期 培训内容基本和7月校招进来的同事一样
  • 三层架构1

    接入层 提供端口的密度 用于用户端的接入 二层交换机 AP 汇聚层 分布层 流量的集合 DHCP VLAN STP HSRP VRRP channel QOS ACL 核心层 nat 高速路由转发 VLAN 虚拟局域网 二层交换与路由器 三
  • python3文本文件读入以及read,readline,readlines的区别

    1 fr open filename 注意 filename是一个字符串 2 read readline readlines 的区别 1 read size 方法从文件当前位置起读取size个字节 若无参数size 则表示读取至文件结束为止
  • python中re的安装步骤_Python 常用模块 re 使用方法详解

    一 re模块的查找方法 1 findall 匹配所有每一项都是列表中的一个元素 import re ret re findall d asd鲁班七号21313 正则表达式 待匹配的字符串 flag ret re findall d asd鲁
  • 一起学习LLVM(一)

    学习LLVM的源码目录 一 LLVM的周边项目 1 clang llvm clang tools extra compiler rt clang LLVM clang是LLVM的前端 把各种源码编译处理 clang tools extra
  • 英伟达账号为什么登录不了_英伟达无法登陆怎么办_nvidia登不进去的修复方法-系统城...

    我们在日常的办公或是学习时都离不开电脑 但是电脑在使用的过程中可能也会遇到各种各样的问题 例如最近就有用户跟小编反映说 自己的电脑出现了英伟达无法登陆的情况 不知道怎么办很是苦恼 那么对此今天小编就来为大家分享关于nvidia登不进去的修复
  • 解决ChatGPT 学术优化 3.44配置域名遇到的Connection error out问题

    一 发现问题 首先我们通过F12通过IP地址直接访问ChatGPT 学术优化可以发现请求路径为ws IP 端口 路径不难发现请求的协议是ws 二 什么是ws协议呢 1 ws协议全称WebScoket协议 WebScoket协议是基于http
  • 禅道服务器修改ip,访问禅道服务器的ip地址

    访问禅道服务器的ip地址 内容精选 换一换 用户的弹性云服务器已绑定EIP 但是无法连接到Internet 弹性云服务器通过EIP访问Internet的流程如图1所示 本问题请按照以下思路进行排查处理 查看弹性云服务器运行是否正常查看弹性云
  • 传导干扰与手机常见EMC处理措施

    原文来自公众号 工程师看海 以前文章讲了空间传导及其屏蔽 这一篇咱们继续解释传导干扰 同时介绍一些手机中常见的EMC抑制措施 差模共模干扰 差模干扰是两条线直线的噪声 这两条线上的电流大小相等 但方向相反 如果电流方向相同 这种模式就称为共
  • 【微信小程序】授权与重新授权

    授权与重新授权 js getUserInfo function e if e detail userInfo 用户按了允许授权按钮 var that this console log 用户的信息如下 console log e detail
  • 关于Proto的学习

    关于Proto的学习 proto文件来预先定义的消息格式 数据包是按照proto文件所定义的消息格式完成二进制码流的编码和解码 proto文件 简单地说 就是一个消息的协议文件 这个协议文件的后缀文件名为 proto proto其实就相当于