Protocol Buffers(简称 Protobuf)是 Google 开发的一种**语言中立、平台中立、可扩展的结构化数据序列化格式*
Protocol Buffers简称 Protobuf是 Google 开发的一种语言中立、平台中立、可扩展的结构化数据序列化格式主要用于通信协议、数据存储等场景。它不是 JSON 或 XML 那样的文本格式而是二进制序列化格式具有体积小、解析快、强类型约束和向后/向前兼容性好等特点。核心特点✅高效紧凑二进制编码如 Varint、Zigzag 编码通常比 JSON 小 3–10 倍解析速度高数倍✅强契约性通过.proto文件定义数据结构schema生成多语言C/Java/Python/Go/Rust 等绑定代码✅向后/向前兼容支持字段编号、optional/required/repeatedv3 中required已移除、oneof、map等机制保障演进安全✅无运行时反射依赖部分语言如 C/Rust 可零反射高性能解析基本使用流程编写.proto文件例如person.protosyntax proto3; message Person { int32 id 1; string name 2; repeated string email 3; }使用protoc编译器生成目标语言代码protoc--python_out. person.proto# 生成 person_pb2.py在代码中序列化/反序列化importperson_pb2 pperson_pb2.Person()p.id123p.nameAliceserializedp.SerializeToString()# bytesp2person_pb2.Person()p2.ParseFromString(serialized)# 反序列化⚠️ 注意Protobuf v3 默认所有字段为optional不支持requiredv2 已弃用且未设置字段在序列化时被忽略即“默认值不传输”有助于节省空间。Protobuf 的字段编号tag必须唯一是因为它是二进制序列化格式中标识字段的唯一键直接参与 wire format 编码如tag (field_number 3) | wire_type用于在反序列化时准确识别每个字段的类型和位置。该编号不是“顺序索引”而是协议层面的永久标识符一旦发布即不可变更。✅为什么必须唯一Protobuf 使用基于 tag 的稀疏解析二进制流中只包含已设置字段的tag, value对无固定结构偏移解析器仅靠 tag 判断“这是哪个字段”若两个字段使用相同 tag解析器无法区分必然导致数据覆盖、类型错配或解析崩溃如将 string 当作 int 解析.proto编译器在生成代码时也以 tag 为键构建字段映射表如 Python 中_fields_by_number重复 tag 会导致编译失败protoc直接报错Field X has same number as field Y。⚠️重复 tag 的后果禁止编译阶段protoc拒绝编译报错终止若绕过校验如手动构造非法二进制运行时解析结果不可预测后出现的同 tag 字段会覆盖前一个取决于解析实现造成数据丢失或类型混淆如string覆盖int32导致Invalid wire type异常。跳号如用 1、3、5 而非 1、2、3的影响✅完全允许且推荐为未来字段预留空间如预留 2、4、6避免升级时重排编号✅ 不影响性能或大小tag 编码为 Varint小数字1–15仅占 1 字节跳号不增加体积⚠️ 但不建议过大跳跃如从 1 直接到 1000虽合法但可能误导维护者且部分工具如某些调试器/IDE 插件依赖连续编号做可视化易引发可读性问题 关键原则tag 一旦分配永远不可复用即使字段已废弃否则破坏兼容性。补充Protobuf 规范明确要求 tag ∈ [1, 2²⁹−1]即 1–536,870,911且 19000–19999 为 Google 内部保留用户应避开。

相关新闻

GimpPs终极指南:如何3步将GIMP界面秒变Photoshop专业风格

GimpPs终极指南:如何3步将GIMP界面秒变Photoshop专业风格

GimpPs终极指南:如何3步将GIMP界面秒变Photoshop专业风格 【免费下载链接】GimpPs Gimp Theme to be more photoshop like 项目地址: https://gitcode.com/gh_mirrors/gi/GimpPs 如果你是一名Photoshop用户想要转向免费开源的GIMP,或者你已经被GI…

2026/10/6 18:49:50 阅读更多 →
`grpcio` 是 Google 开发的 gRPC 框架的 Python 实现,是一个高性能、开源的通用 RPC(远程过程调用)框架

`grpcio` 是 Google 开发的 gRPC 框架的 Python 实现,是一个高性能、开源的通用 RPC(远程过程调用)框架

grpcio 是 Google 开发的 gRPC 框架的 Python 实现,是一个高性能、开源的通用 RPC(远程过程调用)框架,基于 HTTP/2 协议和 Protocol Buffers(protobuf)序列化格式。其核心优势包括: ✅ 高性能&a…

2026/10/4 17:36:04 阅读更多 →
终极iOS自由:Downr1n开源降级工具完整指南

终极iOS自由:Downr1n开源降级工具完整指南

终极iOS自由:Downr1n开源降级工具完整指南 【免费下载链接】downr1n downgrade tethered checkm8 idevices ios 14, 15. 项目地址: https://gitcode.com/gh_mirrors/do/downr1n 你的iPhone是否因为系统升级而变得卡顿?是否怀念某个旧版本iOS的流畅…

2026/10/10 11:19:06 阅读更多 →

最新新闻

未来五年财务人必须掌握的两大核心能力:数据分析与业财融合

未来五年财务人必须掌握的两大核心能力:数据分析与业财融合

财务行业的游戏规则,正在以很多人没有察觉的速度发生变化。我身边不少做财务的朋友,去年还在讨论 Excel 函数怎么写得再快一点、合并报表怎么对平,今年已经开始焦虑一件事:如果核算工作被系统替代,自己还能做什么&…

2026/10/14 4:48:57 阅读更多 →
基于Python和LSTM的股票预测系统设计与毕设实现全解析

基于Python和LSTM的股票预测系统设计与毕设实现全解析

做了几年毕业设计指导,也带过不少学生从开题一路走到答辩现场。要说计算机毕设里最经典也最“容易上手但做精难”的题目,基于Python的股票预测软件绝对排得上号。这个标题一眼看穿了三件事:大数据背景、深度学习建模、软件工程实现。也就是说…

2026/10/14 4:48:57 阅读更多 →
AI运维落地实践:异常检测、告警收敛与根因定位指南

AI运维落地实践:异常检测、告警收敛与根因定位指南

简介:《人工智能在运维中的实践》聚焦金融行业智能运维转型,系统梳理了从纯人力运维、自动化运维、脚本化运维到智能化运维(AIOps)的演进路径,面向运维工程师、架构师、技术管理者及对智能运维感兴趣的决策者。资源包内…

2026/10/14 4:48:57 阅读更多 →
终端安全管理系统白皮书解读:三层架构部署与策略下发链路实战

终端安全管理系统白皮书解读:三层架构部署与策略下发链路实战

简介:这份资源是奇安信天擎终端安全管理系统V10.2.0.1200的产品白皮书公开版,面向企业IT运维、安全管理员及终端安全方案选型人员,用于系统了解该企业级终端防护平台的功能架构与部署思路。白皮书围绕实时监控、威胁检测、防护策略制定、安全…

2026/10/14 4:48:57 阅读更多 →
JAR包反编译实战:从字节码到Java源码的工具与避坑指南

JAR包反编译实战:从字节码到Java源码的工具与避坑指南

搞Java开发的人,几乎都遇到过这种情况:接手一个老项目,源码丢了,或者要排查某个依赖JAR里的逻辑问题,只给你一个编译好的class文件,硬着头皮看字节码。这时候,JAR包反编译就是必须掌握的技能。我…

2026/10/14 4:48:57 阅读更多 →
构建数学解题Agent:从LLM局限到工具调用与验证优先架构

构建数学解题Agent:从LLM局限到工具调用与验证优先架构

1. 从“让模型直接做数学”到“让模型组织数学”写这篇的时候,我翻了下前面三篇的留言,发现问得最多的不是某一个具体提示词怎么写,而是一类带着困惑的问题:为什么我让大模型算个积分、解个方程,它经常一本正经地给我一…

2026/10/14 4:47:57 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →