protobuf 使用

2023-10-30

protobuf 生成类

生成的类中包含各个字段的get和set接口,使用SerializeToString可将class实例转换为protobuf二进制数据,ParseFromArray函数可将protobuf二进制反序列化到类的实例中。

message 消息体

message 表示一个消息体, 相当于一个类。每个message中都有对应的变量, 每个变量有个对应的编号, 每个message内不同变量的编号不能重复。新版本的protobuf没有了required, optional等说明关键字, 都默认为optional。

整形变量

  void clear_ret();
  ::google::protobuf::int32 ret() const;
  void set_ret(::google::protobuf::int32 value);

自定义类类型

  bool has_user_info() const;
  void clear_user_info();
  const ::pt::obj_user_info& user_info() const;
  //自定义类型,并没提供set方法,而是通过mutable_接口返回user_info的指针,可根据此指针进行赋值操作
  ::pt::obj_user_info* mutable_user_info();
  //返回user_info字段指针,将所有权移交给此指针,并将user_info字段置为empty状态
  ::pt::obj_user_info* release_user_info();
  //使用set_allocated要小心,传入的参数需要显示allocate,设置后函数内部维护此指针
  void set_allocated_user_info(::pt::obj_user_info* user_info);

repeated的类数组类型

  int record_size() const;
  void clear_record();
  //根据id索引,返回记录的引用,const不可修改内容
  const ::pt::obj_user_game_record& record(int index) const;
  //根据id索引,返回记录的指针,以供查看、修改
  ::pt::obj_user_game_record* mutable_record(int index);
  //repeated类型提供add接口增加一条记录,并返回此记录的指针,以便对其赋值
  ::pt::obj_user_game_record* add_record();
  //提供mutable接口,并返回record字段的容器指针,可根据此指针遍历、修改
  ::google::protobuf::RepeatedPtrField< ::pt::obj_user_game_record >* mutable_record();
  //返回record字段的容器引用,const不可修改内容
  const ::google::protobuf::RepeatedPtrField< ::pt::obj_user_game_record >& record() const;

Android 使用

1、创建proto文件,定义消息的实体结构
2、编译proto文件生成对应的java文件
3、添加protobuf-java-2.5.0.jar到android工程
4、在android中实现对消息结构的序列化/反序列化

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

protobuf 使用 的相关文章

  • 【gRPC】Protobuf中间文件介绍、使用、Go新版本TLS证书认证问题

    文章目录 前言一 gRPCSANCA根证书生成服务端证书签发 二 总结三 参考 前言 初学gRPC xff0c 跟着B站go语言grpc框架实战Up主进行学习 xff0c 其中视频中的坑还是比较多的 xff0c 比如版本方法废弃 xff0c
  • ZeroMQ+Protobuf实例

    使用库版本 zeromq 4 0 3 接收端代码 include lt zmq h gt include 34 stdio h 34 int main int argc char argv void pCtx 61 NULL void pS
  • ProtoBuf: ByteString和String转换

    ByteString bs 61 ByteString copyFrom 34 hi 34 getBytes System out println bs toStringUtf8
  • protobuf安装

    clone 代码 git clone https github com protocolbuffers protobuf git安装依赖项 sudo apt get install autoconf sudo apt get install
  • 消息序列化工具-protobuf介绍及安装使用技巧

    简介 protobuf是google团队开发的用于高效存储和读取结构化数据的工具 xml json也可以用来存储此类结构化数据 xff0c 但是使用protobuf表示的数据能更加高效 xff0c 并且将数据压缩得更小 xff0c 大约是j
  • protobuf的序列化和反序列化的分析

    一 protobuf的optional 数据类型序列化分析 1 optional 的protobuf的文件 格式 syntax proto2 message test proto optional int32 proto1 1 option
  • Protobuf C++ 版入门Demo

    Protobuf C 版入门Demo 前言 有关其编译和安装请查看 Protobuf C 版编译安装和简单使用 之前已经进行了编译安装 并且成功将已知的proto文件转化为cc和h 本文简单探讨如何使用Protobuf进行数据写入和读取 也
  • mac下编译protobuf c++

    由于protobuf官网的文档是英文版的 并且并没有比较详细的说明 可能说得很清楚了 只是我这种英文渣看不懂 学习起来着实费了一翻功夫 在此 记录一下学习过程 希望尽量详细 一 编译过程需要的工具 1 protobuf源码 下载地址 htt
  • c++ protobuf 可能会遇到的坑

    1 发现存在内存泄露 程序退出时记得调用 google protobuf ShutdownProtobufLibrary 这里一定是在程序退出时调用 如果调用后又使用了 protobuf 会出现异常 因为protobuf 中使用构造 会有创
  • proto文件生成教程

    来源 https www cnblogs com jbw752746541 p 10973200 html 首先贴一下Protobuf各个版本历史下载链接 https github com protocolbuffers protobuf
  • TypeError: Descriptors cannot not be created directly. If this call came from a _pb2.py file……

    问题描述 TypeError Descriptors cannot not be created directly If this call came from a pb2 py file your generated code is ou
  • gRPC那点事

    什么是 gRPC gRPC gRPC Remote Procedure Call 是一种高性能 开源的远程过程调用 RPC 框架 它允许分布在不同计算机上的应用程序能够像调用本地方法一样进行通信 从而实现了在分布式系统中进行高效的通信 传统
  • 【Protobuf速成指南】enum类型的使用

    文章目录 2 1枚举类型 一 如何定义枚举类型 二 语法规范 三 重定义问题 四 enum类型相关函数 五 Contact 2 1 改写 六 总结 2 1枚举类型 本系列文章将通过对通讯录项目的不断完善 带大家由浅入深的学习Protobuf
  • protobuf介绍和语法

    目录 前言 语法 标识符 字段 字段类型 proto2和proto3区别 前言 Protobuf即Protocol Buffers 是Google公司开发的一种跨语言和平台的序列化数据结构的方式 是一个灵活的 高效的用于序列化数据的协议 与
  • c++使用proto文件方法简介

    GoogleProtocol Buffers 简称 Protobuf 是 Google 公司内部的混合语言数据标准 它提供一种轻量 高效的结构化数据存储结构 简介 为什么要使用protobuf 1 官方文档中提到一些protobuf的优点
  • Protobuf下载和编译

    系列导航 一 Protobuf下载和编译 二 Protobuf在Java中的简单使用 一 简介 protobuf全称Google Protocol Buffers 是google开发的的一套用于数据存储 网络通信时用于协议编解码的工具库 是
  • Protobuf之proto文件编写规则

    一 简单介绍 protobuf文件 就是定义你要的消息 类似java中的类 和消息中的各个字段及其数据类型 类似java类中的成员变量和他的数据类型 二 Protobuf消息定义 1 消息由至少一个字段组合而成 类似于C语言中的结构 每个字
  • protobuf安装教程

    protobuf安装 一 Windows下安装 下载protobuf 配置环境变量 检查是否安装成功 二 Linux下安装 下载protobuf 安装protobuf 检查是否安装成功 一 Windows下安装 下载protobuf 下载地
  • protobuf在C#项目中的使用

    protobuf在C 项目中的使用 在C 项目中 有时候会使用到使用到protobuf来作为通信时数据交换的格式 protobuf ProtocolBuffer 简称PB 是google 的一种数据交换的格式 这是一种二进制的格式 比使用x
  • 2. IDEA + maven + protobuf配置(on mac)

    1 絮絮叨叨 都说懒惰是人类进步的源泉 有时候想想还真就那么回事 学习了如何使用protoc命令编译 重度依赖IDEA且已经习惯了maven的我 就在想是否能在IDEA中一键编译 proto文件 2 vscode配置protobuf编辑环境

随机推荐

  • module ‘seaborn‘ has no attribute ‘histplot‘

    在jupyter notebook上 用seaborn画直方图的时候 遇到以下问题 解决方法 1 打开Anaconda Prompt 2 更新seaborn pip install U seaborn 3 关掉jupyter noteboo
  • Java连接数据库(自学笔记)

    一 六步骤 第一步 注册驱动 主要告诉Java程序连接哪种数据库 如MySql Orcale等 我自己连接的是MySql数据库 Driver driver new com mysql jdbc Driver DriverManager re
  • php7opcache使用,PHP7开启OPcache加速代码执行效率提升网站访问速度

    我们的网站访问速度是用户体念最重要的指标之一 网站内容再好打开速度过慢估计也是没有人愿意访问的 用wordpress企业主题搭建的网站常常有访问慢的问题 除了优化wordpress站内问题 服务器优化也是非常重要的 下面分享一个优化网站访问
  • 小程序成長之路_引入小程序自带icon 和 引用阿里图标(四)

    上篇我们已经成功填加tabBar 那么我们这篇就讲解一下 引用图标icon 小程序里有自己的图标供大家使用 但是图标有限 有很多都满足不了我们的需求 这次呢 给大家介绍一下阿里图标 里面有大量的图标供你选择 点击http www iconf
  • matlab 等间距抽稀算法

    目录 一 算法原理 1 原理概述 2 参考文献 二 代码实现 三 结果展示 一 算法原理 1 原理概述 等间距抽稀算法 在原始点云数据中设置采样间距为 n n n 首先在数据开始的 n n
  • 【Kubernetes资源篇】ConfigMap配置管理中心详解

    文章目录 一 ConfigMap配置中心理论知识 1 ConfigMap配置中心简介 2 ConfigMap局限性 二 创建ConfigMap的四种方式 1 第一种 通过命令行创建ConfigMap 2 第二种 通过指定文件创建Config
  • 蓝桥杯题库 算法提高非vip部分(C++、Java)代码实现(281-300)

    ADV 282 Island Hopping cpp include
  • 2021最新 Minecraft我的世界云服务器搭建教程

    一 购买服务器 熟练的朋友萌请跳过这里 首先我们先去al云或者tx云买个服务器 有学生优惠的话一年才120 当然最低配的单核2G 实测纯净服同时在线10个人无压力 这里以al云为例演示 首先 在搜索栏搜索学生优惠 点进去会是这样 然后我买的
  • 词的分布表示

    词的表示 One hot Representation 独热表示 苹果 表示为 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 优点 简介 缺点 词之间是孤立的 维数灾难 Distributed Representation
  • Writing a Scientific Research Report (IMRaD)学习笔记

    参考资料 Writing a Scientific Research Report IMRaD IMRAD Introduction Methods Results and Discussion How to Organize a Pape
  • pytorch从python转 c++涉及到的数据保存加载问题;libtorch

    pytorch 从python 转 c 涉及到的数据保存加载问题 1 torch nn Module 保存 state dict 无法被 c 访问 只能转化为 python字典 python代码 model ThreeLayer FCNN
  • MongoDB基础篇-08-spring-boot-starter-data-mongodb玩法

    文章目录 0 简述 1 依赖 2 yaml 3 MongoTemplate的使用 3 1 添加文档 3 2 修改文档 3 2 1 使用save修改 3 2 2 使用特定运算符进行更新 3 3 删除文档 3 3 1 根据主键删除 3 3 2
  • 性能测试包含哪些内容?

    性能测试是对软件产品在特定条件下的性能进行测试和评估的过程 性能测试的内容可以包括以下几个方面 1 负载测试 负载测试是指在特定条件下 对软件产品的性能进行测试和评估 测试人员可以通过模拟不同的用户数量 并发请求 访问频率等条件 来评估软件
  • 竞赛 基于机器视觉的停车位识别检测

    简介 你是不是经常在停车场周围转来转去寻找停车位 如果你的车辆能准确地告诉你最近的停车位在哪里 那是不是很爽 事实证明 基于深度学习和OpenCV解决这个问题相对容易 只需获取停车场的实时视频即可 该项目较为新颖 适合作为竞赛课题方向 学长
  • 中国互联网上市科技公司市值蒸发了多少亿?

    科技公司的市值断崖路与程序员的应对救生服 跌 跌 跌 2018 抱团取暖的科技公司 2018 年 对于中国互联网上市科技公司来说 是跌宕起伏的一年 这一年的前半段 以腾讯 阿里为首的头部公司 风光无两 市值屡创新高 腾讯最高市值突破 500
  • JDK8主要新特性介绍(二)

    1 6 类库新特性 java util stream 类库包新特性 java util Optional 类新特性 java util Base64 类新特性 Java time 类新特性 其它常用类新增特性 HashMap类性能提升 1
  • 详解C++类&对象(上篇),带你走进C++

    目录 一 面向对象 面向过程的认识 简单了解即可 逐步认识 二 类 2 1 类的引入 2 2 类的定义 1 struct 2 class 类的两种定义方式 2 3 封装 类的访问限定符 1 封装概念 2 类的访问限定符 2 4 类的作用域
  • 三体攻击问题(三维数组的前缀和 与 差分)(上篇)

    三体攻击问题 文章目录 三体攻击问题 题目详情 前言 预备知识 二维差分与前缀和 三维前缀和 定义 官方解释 自定义 三维数组求前缀和 三维差分 官方解释 自定义 跟二维差分类比 三维查分的求解 总结 题目详情 三体人将对地球发起攻击 为了
  • MES系统总体介绍

    MES系统总体 系统目标 MES系统通过控制包括物料 设备 人员 流程指令和设施在内的所有工厂资源 优化从定单到产品完成的整个生产活动 以最少的投入生产出最优的产品 实现连续均衡生产 MES系统通过与ERP DCS系统的全面集成 为企业搭建
  • protobuf 使用

    protobuf 生成类 生成的类中包含各个字段的get和set接口 使用SerializeToString可将class实例转换为protobuf二进制数据 ParseFromArray函数可将protobuf二进制反序列化到类的实例中