Protobuf3 使用笔记

2023-05-16

一、和protobuf2比,更新的内容:

1.字段前取消了required和optional两个关键字,目前可用的只有repeated关键字。
2.不可以现设置默认值了。
  a.string默认为空串
  b.枚举默认为第一个枚举定义的第一个值。并且必须是0,且为无效值,所有有意义的值请不要定义成0值
  c.bytes默认为空bytes
  d.bool默认为false
  e.数字类型默认为0
注意点:当你设置了message的变量等于 默认值时,序列化后是不占用空间的举例如下
message LogoutResponse{
uint32 result_code = 1; //数字类型 默认值为0
}
例如

LogoutResponse pt = LogoutResponse.newBuilder()
                .setResultCode(0)  //设置了默认值0
                .build();

Log.d(“test”,"pt serializedSize = "+pt.getSerializedSize() ) //serializedSize=0
此时调用 pt.getSerializedSize() 返回的值是0,也就是序列化后buf大小为0,
那么解析 序列化后buf为0的message,就可以直接使用默认值

void received(byte [] buf){
	CodedInputStream codedInputStream=null;
	LogoutResponse pt = LogoutResponse.getDefaultInstance(); //使用默认值;
    if (buf.length > 0) {
        codedInputStream = CodedInputStream.newInstance(buf);
        pt = LogoutResponse.parseFrom(codedInputStream);
     }
	Log.d("test","logout result="+pt.getResultCode() )   //result=0
}

二、protobuf3在ubuntu16.04下安装

官方地址:https://github.com/google/protobuf/blob/master/src/README.md

安装命令行如下:

$ sudo apt-get install autoconf automake libtool curl make g++ unzip
$ git clone https://github.com/google/protobuf.git
$ cd protobuf
$ git submodule update --init --recursive
$ ./autogen.sh
$ ./configure
$ make
$ make check
$ sudo make install
$ sudo ldconfig # refresh shared library cache.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Protobuf3 使用笔记 的相关文章

  • pandas使用笔记

    DataFrame使用笔记 dates 61 pd date range span class hljs string 39 20160728 39 span periods 61 span class hljs number 6 span
  • vimdiff 使用笔记

    vimdiff 是建立在 diff 命令之上的 启动方法 xff1a vimdiff file left file right 或者 vim d file left file right 只在某一文件中存在的行的背景色被设置为蓝色 xff0
  • Docker使用笔记

    软件安装 https docs docker com engine install ubuntu 下载镜像 span class token function docker span pull ubuntu 创建一个CONTAINER 示例
  • MacBook M12020使用笔记

    1 安装软件 1 1 安装brew 安装brew xff08 知乎高手写的脚本 xff0c 可以选择国内镜像源 xff09 bin zsh c span class token string 34 span class token vari
  • Visual Studio Code使用笔记

    文章目录 简介安装常用功能杂文件对比 常用插件通用快捷键文件头注释 C C 43 43 PythonLaTexMarkdown 其它C C 43 43 多文件编译运行代码运行 简介 与Sublime Text相比 xff0c vscode免
  • 关于ElasticsearchRepository的使用笔记

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一个很全的API链接文档 以下是使用Spring data Jpa操作ES的一些记录 在ElasticsearchRepository中我们可以使用Not Add Like
  • stlink使用笔记

    1 stlink灯一直闪 2 当用外部电源 xff08 外部 就是不直接使用stlink为板子供电 xff09 为板子供电时 xff0c 如果要用stlink xff08 SWD模式 xff09 xff0c 那么不能只插SWCLK和SWDI
  • Jenkins使用笔记

    本章简单记录Jenkins的使用笔记 首先 xff0c 我们从官网中下载安装介质 xff0c 可以看到这里有适合各种操作系统版本的安装源介质 xff0c 简单起见 xff0c 我们直接下载一个通用的war程序包 执行命令java jar j
  • ROS使用笔记

    文章目录 1 提取bag中固定topic或者固定时间段数据2 提取pcd数据3 记录数据4 service amp action5 roslaunch文件6 自定义消息7 from raw velodyne packets to velod
  • CodeWarrior 10.7 使用笔记

    1 Code Warrior 10 7 IDE 工程创建 利用工程向导快速创建工程 1 1 点击菜单File BareBoard Project 裸板工程 1 2 设置工程名称 xff08 默认将该工程创建在当前工作空间 xff08 wor
  • UCOSII 使用笔记

    UCOS使用总结 1 UCOS 是抢占式系统 xff0c 换句话来说 xff0c 优先级高的能够被准时执行 xff0c 优先级低的很容易被高优先级抢占 xff0c 导致执行任务延迟 2 UCOS一般为64个优先级 xff0c 有些可以到25
  • vimdiff 使用笔记

    vimdiff 是建立在 diff 命令之上的 启动方法 xff1a vimdiff file left file right 或者 vim d file left file right 只在某一文件中存在的行的背景色被设置为蓝色 xff0
  • LTC6820和isoSPI使用笔记

    一 LTC6820使用笔记 1 MSTR主控 受控 MSTR 引脚 11 引脚 12 xff1a 串行接口主 从选择器输入 位于隔离式接口的主控器侧 xff08 SPI主机 xff09 xff0c 引脚接 VDD 位于隔离式接口的受控器侧
  • Git:使用笔记

    git局部配置 git config user name 34 username 34 git config user email 34 email 34 git带用户密码clone git clone https username pas
  • 整理alacritty使用笔记

    github xff1a https github com alacritty alacritty features xff1a https github com alacritty alacritty blob master docs f
  • 整理ps使用笔记

    尽管使用ps只需要记住常用命令 xff1a ps aux ps ef 并且理解输出的列含义即可 但不理解命令的含义 xff0c 用起来总有种空虚感 下面研究一下 文章目录 介绍BSD默认simpleaxT r listoutput 总结 介
  • pugixml使用笔记

    https pugixml org docs manual html dom tree pugixml官方使用手册 1 创建xml文件信息 例如 xff1a pugi xml document xmldoc pugi xml node de
  • 【git】使用笔记

    拉取远程分支 git checkout b new branch name origin git reo origin branch name 如果git 项目拉取不到 xff0c 可能是没有更新远程信息 git fetch
  • java学习总结——protobuf3的语法

    本文主要讨论protobuf3在编写proto接口描述文件时的语法 下面是一个proto文件的实例 syntax proto3 import address proto package com study blog protobuf opt
  • 在Python中反序列化Protobuf 3字节数组

    如何通过 bytearray 响应读取 Protobuf 消息作为字符串 我尝试查找 Protobuf 库 https developers google com protocol buffers docs reference python

随机推荐

  • docker命令中的/bin/bash

    docker run i t tomcat bin bash 中的 bin bash的作用是因为docker后台必须运行一个进程 xff0c 否则容器就会退出 xff0c 在这里表示启动容器后启动bash
  • 如何将文件从本机上传到docker容器

    1 如何从docker容器中下载文件 xff1a docker span class token function cp span container created path span class token operator lt sp
  • libjpeg.so.8: cannot open shared object file: No such file or directory.

    在docker容器里执行carla的PythonAPI报错 xff1a libjpeg so 8 cannot span class token function open span shared object file No such s
  • Docker容器图形界面显示的配置方法

    参考博客 0 环境说明 Ubuntu 16 04 docker 19 03 12 因为要在docker中用pygame xff0c 要用到显示器 xff0c 这个时候需要解决这个Docker 可视化 的问题 原理简介 原理上可以把docke
  • 在docker中运行carla

    参考carla文档 ubuntu18 04 carla0 9 9 docker19 03 12 Docker Installation Docker CE For our tests we used the Docker CE versio
  • Pyglet设置窗口标题

    Pyglet教程 Caption The window s caption appears in its title bar and task bar icon on Windows and some Linux window manage
  • Linux 解决远程连接的 “Gtk-WARNING **: cannot open display;”

    转发 ssh Y username 64 ip 使用 Y 参数实际上是授权了 X11 转发 xff0c 这样就可以看到来自远端的 gtk 图形窗口了 span class token function man span span class
  • android jni调试 - 堆栈分析

    一 环境 xff1a windows rk3399 android 7 1 二 奔溃信息 pid 13544 tid 13639 name no localmeeting gt gt gt com sino localmeeting lt
  • CFileDialog的使用[转]

    由于项目需要 xff0c 查阅了一下CFileDialog类 xff0c 以满足程序自动读取配置文件的需求 xff0c 现在小小记录一下 xff01 CFileDialog类封装了Windows常用的文件对话框 xff0c 提供个一种简单的
  • 记录一下c/c++的几种计时方式

    include lt iostream gt include lt string gt include lt chrono gt void Run for int i 61 0 i lt 10000000 i 43 43 void time
  • [转载] 强化学习开源框架整理

    转载 https zhuanlan zhihu com p 582396276 本篇主要是介绍了不同的 RL 开源工作 xff0c 包括环境开源工作和算法开源工作 xff0c 同时关注这些开源工作对于多机多卡并行分布式训练的支持 算法框架
  • tf模型在C++部署

    tensorflow训练好的模型使用ONNX Runtime在C 43 43 部署 tf模型转onnx使用tf2onnx 在前面的文章有讲到c 43 43 调用tf keras的模型 环境 ubuntu20 04cuda 11 6cudnn
  • Google Breakpad 之一,跨平台crash 处理上报系统简介

    C C 43 43 程序最棘手的时候就是一个字 挂 xff0c 总是经常和不经常的挂掉 xff0c 尤其是那些线上的不经常挂的情况 xff0c 光看日志定位问题真的很难 为解决C挂挂的问题 xff0c 有必要提供一个跨平台的crash处理系
  • ubuntu14.04更换内核为3.14

    查看ubuntu14 04支持的内核版本的命令 xff1a atp cache showpkg linux headers 现在Ubuntu14 04安装完成后为4 4 0的内核 xff0c 若要降低内核版本 xff0c 操作方法如下 xf
  • 回首2013,这一年的坚持

    2013年 xff0c 眨眼间已悄悄流逝 这一年回味起来 xff0c 总是那么美 xff0c 充满快乐 xff0c 令人陶醉 一 生活篇 2013年对我来说 xff0c 是快乐的一年 在这一年里 xff0c 遇见了很多美丽的景色 xff0c
  • 使用Cropper进行图片剪裁上传

    在项目中 xff0c 需要多上传的图片按照比例和尺寸进行裁剪 xff0c 这类场景在一些CMS系统中是比较常见的 xff0c 尤其是大部分的文章现在要适配PC Mobile两种平台 xff0c 文章的封面图等便需要按照尺寸做裁剪 xff0c
  • Element-UI消息提示组件Message在Vuex中的调用实现

    在最近的项目开发中 xff0c 前端部分使用 Vue 开发 xff0c 整个页面基于 Element UI 实现 由于是单页面多组件应用 xff0c 使用了 Vuex 做状态管理 为了页面交互的友好和风格的统一 xff0c 消息提醒使用 E
  • Fork原项目新增分支的同步和推送

    在 Github 或者 Gitlab Fork 项目以后 xff0c 原项目增加了新的分支 xff0c 我们可以通过以下流程将分支同步下来 本项目前提假设我们设置了 remote 的名称为 up 与源项目关联 git remote v or
  • Elasticsearch文档版本冲突原理与解决

    一般我们在更新文档时 xff0c 主要的操作流程时 xff1a 读取文档 gt 修改 gt 提交保存 数据中心等保存的都是最新一次提交的内容 大部分时候 xff0c 这都没有什么问题 但是如果两个或更多的请求同时修改一个文档时 xff0c
  • Protobuf3 使用笔记

    一 和protobuf2比 xff0c 更新的内容 xff1a 1 字段前取消了required和optional两个关键字 xff0c 目前可用的只有repeated关键字 2 不可以现设置默认值了 a string默认为空串 b 枚举默