码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Protocol Buffers语法


    官方文档:https://developers.google.cn/protocol-buffers

    文章目录

    • Protocol Buffers定义消息类型
      • 基本语法
      • 指定字段类型
      • 分配字段编号
      • 指定字段规则
      • 添加更多消息类型
      • 添加注释
      • 保留字段
      • 编译器将生成什么?
    • Protocol Buffers基本数据类型
    • Protocol Buffers默认值
    • Protocol Buffers枚举类型
    • Protocol Buffers使用其他消息类型
    • Protocol Buffers嵌套类型


    Protocol Buffers定义消息类型

    基本语法

    首先让我们看一个非常简单的例子。假设你要定义一个分页搜索请求消息格式,其中每个搜索请求都有一个查询字符串、你感兴趣的特定结果页面以及每页的多个结果。这是.proto你用来定义消息类型的文件。

    syntax = "proto3";
    
    message SearchRequest{
        string query = 1;
        int32 page_number = 2;
        int32 result_per_page = 3;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 文件的第一行指定使用的是proto3语法:如果不这样做,Protocol Buffers编译器将假定你使用的是proto2。这必须是文件的第一个非空、非注释行。

    • SearchRequest消息定义指定了三个字段(名称/值对),每一个字段用于你希望包含在此类消息中的每条数据。每个字段都有一个名称和一个类型。

    指定字段类型

    在一开始的例子中,所有字段都是标量类型:两个整数(page_number和result_per_page)和一个字符串(query)。但是你也可以为字段指定复合类型,包括枚举和其他消息类型。

    分配字段编号

    消息定义中的每个字段都有一个唯一的编号(如一开始例子中的1、2、3)。这些字段编号用于在消息二进制格式中标识您的字段,并且在使用您的消息类型后不应更改。

    请注意:

    • 1 到 15 范围内的字段编号需要一个字节进行编码,包括字段编号和字段类型(您可以在Protocol Buffer Encoding中找到更多相关信息)。
    • 16 到 2047 范围内的字段编号占用两个字节。
    • 因此,您应该为非常频繁出现的消息元素保留数字 1 到 15。
    • 请记住为将来可能添加的频繁出现的元素留出一些空间。

    您可以指定的最小字段编号是 1,最大的是 2^29 - 1,即 536,870,911。您也不能使用数字 19000 到 19999 ( FieldDescriptor::kFirstReservedNumber到 FieldDescriptor::kLastReservedNumber),因为它们是为 Protocol Buffers 实现保留的——如果您在.proto. 同样,您不能使用任何以前保留的字段编号。

  • 相关阅读:
    c语言范例实例
    Kurator v0.5.0发布,打造统一的多集群备份与存储体验
    MATLAB算法实战应用案例精讲-【回归算法】逐步式回归(Stepwise Regression)(附MATLAB、Java、Python和R语言代码)
    Vue-router创建子路由的方法【路由嵌套】
    Debezium系列之:debezium版本升级到2.4.0及以上版本重大注意事项
    Docker专题(二)之 操作Docker容器
    Java通过多线程实现群聊功能
    sqlserver 各种集合、区间、 时间轴(持更)
    OpenGL(十五)——Qt OpenGL三种不同的纹理滤波方式、光照、物体的移动
    SpringBoot--在Entity(DAO)中使用枚举类型
  • 原文地址:https://blog.csdn.net/qq_39280718/article/details/126918183
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号