protobuf用Extensions定义消息方法

Protobuf 介绍与实战41:ServiceOptions 消息 选项介绍 1  go grpc-go 相关技术专栏 总入口 2  Protobuf介绍与实战 图文专栏 文章目录 1、服务级别选项,默认支持哪些服务选项? 打开description.proto文件,找到ServiceOptions即可 已经上传到百度网盘 链接: https://pan.baidu.com/s/1RNDYSmX38xFc_O7iDeGdcw 提取码: t3w6 2、Protobuf deprecated 弃用服务? ServiceOptions类型的选项,只能在service区域使用。 达到效果 阅读详情

protobuf Extensions这个东西还真蛮有用的, 这里记录一下用Extensions定义方法。

msg.proto

package ProtoCS;

enum CmdID
{
	CID_MOD = 1,
}

message MsgHead
{
    optional int32 cid = 1;
}

message Msg
{
    optional MsgHead head = 1;
    optional int32 ret = 2;
    extensions 100 to 10000; 
}

这是主文件,注意看最后一行, 留了100~10000的tag number给其他模块用。注意, 19000 though 19999是protobuf预留的。


接下来,各个模块(角色 任务等) 定义各自的文件。

mod.proto

import "msg.proto";

package ProtoCS;

message ModReq
{
	optional bool b = 1;
}

extend Msg
{
  optional int32 id = 126;
  optional ModReq mod_req = 127;
}

在这个文件里, 该模块把int32 id和ModReq mod_req嵌到主文件的Msg里,这个很关键。

我个人用过几种消息定义方法,这种方法最好,他有下面的好处:

1. 各个模块定义分离, 主文件不会太大, 导致找一个东西很困难的情况出现。

2. 编译上的分离的, 各种模块新增东西不会影响其他模块,而且用法上不会增加复杂度

    http://blog.youkuaiyun.com/herm_lib/article/details/7392222   像以前这种方法,就比现在复杂,使用上也存在一些麻烦的地方。


使用方法也比较简单

Msg msg;

msg.SetExtension(ProtoCS::id, 7);   // 设置上面的id值

ProtoCS::ModReq* modReq = msg.MutableExtension(ProtoCS::mod_req);   // 拿到这个modReq, 就可以修改mod_req field的值了。

读取的方法也类似, GetExtension() 之类的。



血管分割中的直径平衡难题:从clDice到cbDice的演进与实践 本文探讨了血管分割中的直径平衡难题,详细分析了从clDice到cbDice的技术演进与实践。通过引入半径感知权重和边界对齐惩罚,cbDice在保持拓扑完整性的同时提升了几何敏感度,显著改善了细小血管的分割效果。文章还分享了在nnU-Net中实现cbDice的工程细节,包括GPU加速骨架提取和多任务损失组合策略,为医学影像分析提供了重要参考。 阅读详情

相关推荐

手把手教你搞定JBI投稿:从Statement of Significance到Declaration Statement的保姆级避坑指南

本文提供了一份详细的JBI投稿指南,重点解析Statement of Significance和Declaration of Interests的撰写技巧,帮助研究者避开常见格式陷阱。通过实战案例和检查清单,确保投稿符合JBI的学术严谨性和临床转化价值要求,提升稿件通过率。

weixin_29278805的博客 622

proto文件支持继承吗_protobuf extensions(extend)的消息定义及Java使用方法

在定义protobuf消息时,有时候需要用到extensions来对原有的消息类型进行扩展,有利于消息定义的重复使用。1、下面写一个最简单的例子,定义一个message BaseData,并对其进行扩展:Example.proto:// 定义一个message BaseData,100~199之间的tag可供扩展message BaseData {required int32 code = 1;e...

weixin_29213655的博客 3444

贝叶斯神经网络(Bayesian Neural Network)

最近在研究贝叶斯神经网络,一些概念一直搞不清楚,这里整理一下相关内容,方便以后查阅。

梁小憨憨的博客 3655

protobuf extensions(extend)的消息定义及Java使用方法

在定义protobuf消息时,有时候需要用到extensions来对原有的消息类型进行扩展,有利于消息定义的重复使用。1、下面写一个最简单的例子,定义一个message BaseData,并对其进行扩展:Example.proto:// 定义一个message BaseData,100~199之间的tag可供扩展 message BaseData { required int32 code =

叉叉哥的BLOG 2万+

【go-libp2p学习笔记】使用go-libp2p搭建中转服务器(circuit relay server)

libp2p算是一个蛮新的库,提供了非常强大的p2p节点发现/连接/通信能力。IPFS的基石。 中文网上的**技术教程**比较少,所以抛砖引玉开一点坑来体验一下!

Cake_C的博客 6491

学术类PPT制作总结

本文分享了科技类PPT的制作技巧,希望相关的信息能帮助到读者。

奇妙水果的技术博客,欢迎交流技术~ 2881

获取protobuf extensions内容的方法

获取protobuf extensions字段内容

wangruizhong88的博客 565

基于单片机的室内空气质量监控系统设计

摘 要 I Abstract II 引 言 1 1 控制系统设计 3 1.1 方案选择 3 1.2 系统控制原理 4 2系统硬件设计 5 2.1 单片机的选择与设计 5 2.2 温湿度模块设计 6 2.3 甲醛采集模块设计 8 2.4 显示器模块设计 9 2.5 按键模块设计 10 2.6 报警模块设计 11 2.7 加湿及风扇模块设计 11 3系统软件设计 13 3.1 总流程方案设计 13 3.2 温湿度获取的软件设计 14 3.3 液晶屏LCD1602的软件设计 15 4系统调试 13 4

Q_1928499906的博客 2700

protobuf基本用法详解

文章目录1、包名package2、option3、消息类型3.1 message3.2 字段规则3.3 标识号3.4 数据类型3.4.1 基本数据类型3.4.2 枚举类型3.4.3 map数据类型3.4.4 message类型3.4.5 嵌套消息类型4、import导入其他proto文件4.1 import4.2 import public5、更新Message消息类型原则6、protobuf扩展...

langzi989的专栏 1万+

特征拼接(Feature Concatenation)技术全景解析

特征拼接是深度学习中的核心特征融合技术,通过在指定维度连接不同来源的特征张量,创造性地解决了多源、多尺度特征融合的关键挑战。这种简单却强大的操作已成为现代神经网络架构设计的基石。

浩瀚之水的专栏 1640

【DRAM存储器六十八】DDR5介绍--DQS Interval Oscillator—动态时序校准利器

DDR5内存采用DQS间隔振荡器(DQSIntervalOscillator)技术应对高速数据传输中的时序漂移问题。该技术通过测量DQS信号在可编程时间窗口内的振荡次数(16位计数值),动态监测温度/电压变化导致的DQS-DQ延迟偏移。控制器通过MPC命令启停振荡器,读取MR46/MR47寄存器获取计数值,并与基准值对比来调整DQS相位,确保数据采样窗口始终处于最佳位置。该机制使DDR5在8400MT/s高速率下仍能保持数据可靠性,有效补偿±0.48tCK的时序偏移。

highman110的博客 149

java protobuf extend_protobuf extensions(extend)的消息定义及Java使用方法

在定义protobuf消息时,有时候需要用到extensions来对原有的消息类型进行扩展,有利于消息定义的重复使用。1、下面写一个最简单的例子,定义一个message BaseData,并对其进行扩展:Example.proto:// 定义一个message BaseData,100~199之间的tag可供扩展message BaseData {required int32 code = 1;e...

weixin_29111953的博客 513

如何让C++程序生成dump文件?生成dump文件的方式有哪些?如何使用Windbg分析dump文件?

本文详细介绍了如何让C++程序生成dump文件、生成dump文件的多种方式以及如何使用Windbg分析dump文件,并给出了对应的实战分析案例,有一定的实战参考价值。

dvlinker的技术专栏 5万+

数据交换利器 Protobuf 技术浅析

由于最近公司采用protocol buffer(以下简称protobuf)来作为不同应用之间的数据交换,故最近一段时间研究了protobuf相关技术。在这里分享下。 protobuf是什么? protobuf是google旗下的一款平台无关,语言无关,可扩展的序列化结构数据格式。所以很适合用做数据存储和作为不同应用,不同语言之间相互通信的数据交换格式,只要实现相同的协议格式即同一pro

陈守璐的专栏 604

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Protobuf语法:Required,Optional,extensions,extend

import "test_common.proto"; message Person { required Header header = 1; required string id = 2; required string name = 3; optional int32 age = 4 [default = 18]; optional string email = 5 [default = "703016035@qq.com"]; repeated int32 a

Have a nice day. 1343

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

protobuf Python API 详解:google.protobuf.symbol_database 符号注册与按名查找消息类型

`google.protobuf.symbol_database` 是 Protocol Buffers Python 运行时中负责管理"已生成符号"的模块:它把编译期生成的 `_pb2` 模块中的消息类、枚举、服务注册到一个符号数据库里,并以其内部持有的 `DescriptorPool` 为底座,提供"只凭符号全名即可反查 Python 类"的能力。本文基于 [symbol_database 模

gitblog_00958的博客 1100

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

protobuf3 自定义option_十一.Protobuf3可选项

Protobuf3 可选项.proto文件中可以声明许多选项。选项不会改变声明的整体含义,但可能会影响在特定上下文中处理声明的方式。可用选项的完整列表在google/protobuf/descriptor.proto中定义有些选项是文件级选项,这意味着它们应该写在顶级范围内,而不是任何消息、枚举或服务定义内。有些选项是消息级选项,这意味着它们应该写在消息定义中。有些选项是字段级选项,这意味着它们应...

weixin_39738755的博客 1327

如何在Burp Suite中集成Blackbox Protobuf:移动渗透测试必备工具

Blackbox Protobuf是一款强大的开源工具,专为处理没有匹配.proto定义文件的编码Protocol Buffers(protobuf)消息而设计。本文将详细介绍如何在Burp Suite中集成这款工具,让你在移动渗透测试中轻松解码和编辑protobuf消息,提升工作效率。 ## 为什么选择Blackbox Protobuf? 在移动应用渗透测试中,protobuf作为一种高效的

gitblog_00140的博客 1042

protobuf3 自定义option_ProtoBuf3语法指南(Protocol Buffers)_下

0.说明ProtoBuf3语法指南,又称为proto3,是谷歌的Protocol Buffers第3个版本。本文基于官方英文版本翻译,加上了自己的理解少量修改,一共分为上下两部分。1.AnyAny类型消息允许在没有.proto定义的情况下,将消息作为嵌入类型使用。Any以bytes的形式包含任意序列化的消息,以及充当该消息类型的全局惟一标识符的URL从而解析为该消息类型。为了使用Any类型,需要使...

weixin_39584571的博客 510

Protobuf Python API 深入解析:google.protobuf.message_factory 动态消息工厂的原理与实战

本文围绕 Protocol Buffers Python 包中的 `google.protobuf.message_factory` 模块展开,完整覆盖该模块的公开 API(`GetMessageClass`、`GetMessages`、`GetMessageClassesForFiles` 等)的用法、参数语义与返回值约定,并结合 [message_factory.py](https://lin

gitblog_00889的博客 232

构建实时消息系统:StackExchange.Redis.Extensions类型安全Pub/Sub发布订阅深度解析

**StackExchange.Redis.Extensions** 是一个增强 StackExchange.Redis 的 .NET 开源库,它的 Pub/Sub 发布订阅能力让构建实时消息系统变得前所未有的简单:订阅和发布消息时不再传递原始字节或 JSON 字符串,而是直接传递强类型 C# 对象。库会自动完成序列化与反序列化,并在订阅处理器抛出异常时记录日志而不中断订阅,帮你快速搭建订单通知、

gitblog_00283的博客 848

Protobuf语言指南

定义一个消息(message)类型 l标量值类型 lOptional 的字段及默认值 l枚举 l使用其他消息类型 l嵌套类型 l更新一个消息类型 l扩展 l包(package) l定义服务(service) l选项(option) l生成访问类 本指南描述了怎样使用protocolbuffer语言来构造你的protocol b...

TheClimb的池塘 188

Protobuf C 中的 proto2 支持:字段存在性、扩展机制与反射 API 完整解析

本文基于 Protocol Buffers 官方仓库中的 `docs/csharp/proto2.md` 文档展开,系统讲解 Google.Protobuf 3.10 引入的实验性 proto2 支持:包括字段存在性(field presence)的 `HasXxx`/`ClearXxx` 生成代码、带扩展范围的 `IExtendableMessage<T>` 接口、扩展(extensions)的

gitblog_00823的博客 297

Understand-Anything 之 Protobuf 语言剖析:让 .proto 与 gRPC 服务定义融入知识图谱

> 本文聚焦 Understand-Anything 开源仓库中面向 LLM 分析器的语言提示片段 [protobuf.md](https://link.gitcode.com/i/9385fc44be3acd654f1222b143ca09aa),讲解该系统如何把 `.proto` 这类"非代码"契约文件当作一等公民进行扫描、构图与总结。读完你将掌握:Protobuf/gRPC 工程在知识图谱中

gitblog_00189的博客 1082

Protobuf Python 运行时反射核心:google.protobuf.descriptor_pool 模块深度解析

`DescriptorPool` 是 Protocol Buffers Python 实现中用于“运行时动态构建消息类型”的核心容器。本文基于 [descriptor_pool.rst](https://link.gitcode.com/i/dfec58655b3eb0a577c3722b6d681f1c) 对应的模块文档及其源码实现 [descriptor_pool.py](https://li

gitblog_01155的博客 456
上一篇: C++运算符优先级,记录一下
下一篇: Linux iptables 设置
herm_lib
博客等级 码龄16年 173粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值