protobuf简介

article/2025/8/30 8:17:10

文章目录

  • 一、protobuf的定义
  • 二、protobuf的优缺点
    • 2.1、优点
    • 2.2、缺点
  • 三、protobuf的使用流程
    • 3.1、protobuf在Linux下的安装过程
    • 3.2、定义proto文件
    • 3.3、protoc编译器
    • 3.4、调用接口进行序列化、反序列化
  • 四、protobuf的应用场景
  • 五、protobuf与json和XML的对比

一、protobuf的定义

  protobuf是一种用于序列化结构数据的工具,实现数据的存储与交换,与编程语言和开发平台无关

  序列化:将结构数据或者对象转换成能够用于存储和传输的格式。

  反序列化:在其他的计算环境中,将序列化后的数据还原为结构数据和对象。

  定义数据的结构,然后使用protoc编译器生成源代码,在各种数据流中使用各种语言进行编写和读取结构数据。甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。

二、protobuf的优缺点

2.1、优点

  • 性能高效:与XML相比,protobuf更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。

  • 语言无关、平台无关:protobuf支持Java、C++、Python 等多种语言,支持多个平台。

  • 扩展性、兼容性强:只需要使用protobuf对结构数据进行一次描述,即可从各种数据流中读取结构数据,更新数据结构时不会破坏原有的程序。

2.2、缺点

  • 不适合用来对基于文本的标记文档(如 HTML)建模。

  • 自解释性较差,数据存储格式为二进制,需要通过proto文件才能了解到内部的数据结构。

三、protobuf的使用流程

3.1、protobuf在Linux下的安装过程

$ 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

3.2、定义proto文件

message Person {string name = 1;int32 id = 2;string email = 3;enum PhoneType {MOBILE = 0;HOME = 1;WORK = 2;}message PhoneNumber {string number = 1;PhoneType type = 2;}repeated PhoneNumber phone = 4;
}

message是消息体,包含了多个fields(数据项),每一个fields都是key-value类型。

3.3、protoc编译器

  使用proto文件定义好结构数据后,可以使用protoc编译器生成结构数据的源代码,这些源代码提供了读写结构数据的接口,从而能够构造、初始化、读取、序列化、反序列化结构数据。使用以下命令生成相应的接口代码:

// $SRC_DIR: .proto所在的源目录
// --cpp_out: 生成C++代码
// $DST_DIR: 生成代码的目标目录
// xxx.proto: 要针对哪个proto文件生成接口代码protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/xxx.proto

编译完成后将会生成一个xxx.pb.h和xxx.pb.cpp文件,会提供类似SerializeToOstream()、set_name()、name()等方法。

3.4、调用接口进行序列化、反序列化

/*
下面的代码即为protoc编译器生成的原结构数据的接口,
提供了构造函数、初始化、序列化、反序列化和读取数据的方法,
因此可以调用这些接口进行序列化与反序列化。
*/// 构造函数
Person person;
// 初始化
person.set_name("John Doe");
person.set_id(1234);
person.set_email("jdoe@example.com");
fstream output("myfile", ios::out | ios::binary);
// 序列化结构数据到文件中
person.SerializeToOstream(&output);fstream input("myfile", ios::in | ios::binary);
Person person;
// 从文件中反序列化出结构数据
person.ParseFromIstream(&input);
// 读取结构数据
cout << "Name: " << person.name() << endl;
cout << "E-mail: " << person.email() << endl;

四、protobuf的应用场景

  • 压缩效率高:服务器间的海量数据传输与通信,可以节省磁盘和带宽,protobuf适合处理大数据集中的单个小消息,但并不适合处理单个的大消息。

  • 解析速度快:可以提高服务器的吞吐能力。

五、protobuf与json和XML的对比

在这里插入图片描述

  • XML、JSON、protobuf都具有数据结构化和数据序列化的能力

  • XML、JSON更注重数据结构化,关注可读性和语义表达能力;protobuf 更注重数据序列化,关注效率、空间、速度,可读性较差,语义表达能力不足。

  • protobuf的应用场景更为明确,XML、JSON的应用场景更为丰富。

参考:
https://www.iteye.com/blog/maoyidao-1236916
https://www.jianshu.com/p/cae40f8faf1e
https://www.jianshu.com/p/a24c88c0526a


http://chatgpt.dhexx.cn/article/5ce2x67l.shtml

相关文章

java中使用protobuf总结

基本没怎么接触过java编程&#xff0c;别的团队发过来一个用java编写的存储pb的文件&#xff0c;让拆分和解析&#xff0c;硬着头皮做一下&#xff0c;在此将步骤做个记录&#xff1a; 下载安装protobuf https://github.com/protocolbuffers/protobuf/tags?afterv3.6.1.2 编译…

protobuf 详解

protobuf简介 Protobuf是Protocol Buffers的简称&#xff0c;它是Google公司开发的一种数据描述语言&#xff0c;是一种轻便高效的结构化数据存储格式&#xff0c;可以用于结构化数据串行化&#xff0c;或者说序列化 。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议…

protobuf介绍和语法

目录 前言 语法 标识符 字段 字段类型 proto2和proto3区别 前言 Protobuf即Protocol Buffers&#xff0c;是Google公司开发的一种跨语言和平台的序列化数据结构的方式&#xff0c;是一个灵活的、高效的用于序列化数据的协议。 与XML和JSON格式相比&#xff0c;pr…

Protobuf:一种更小、更快、更高效的协议

C/CLinux服务器开发/后台架构师知识体系 Protobuf介绍 Protobuf (Protocol Buffers) 是谷歌开发的一款无关平台&#xff0c;无关语言&#xff0c;可扩展&#xff0c;轻量级高效的序列化结构的数据格式&#xff0c;用于将自定义数据结构序列化成字节流&#xff0c;和将字节流反…

win10商店打不开_win10应用商店闪退是咋回事呢

win10虽然具有闪电般的开机速度&#xff0c;并且还新增了很多功能。但比较是全新的操作系统&#xff0c;所以难免会存在一些故障&#xff0c;这里小编就给大家讲讲win10应用商店闪退打不开怎么解决。 方法一 1&#xff0c;首先&#xff0c;打开开始菜单&#xff0c;进入设置&am…

电脑安装Linux闪退,win10系统运行内置Linux系统闪退如何处理

我们在win10系统电脑的使用中&#xff0c;有小伙伴在Linux系统的使用中出现了问题&#xff0c; win10系统运行内置Linux系统闪退的情况出现了&#xff0c;这是什么原因导致的呢&#xff0c;我们在win10系统运行内置Linux系统闪退如何处理&#xff0c;今天小编就来跟大家分享一下…

Java版mc闪退_本文传授win10运行mc闪退的具体操作对策

我们在使用电脑的时候遇到了win10运行mc闪退问题确实比较难受&#xff0c;要是你的电脑技术没有达到一定的水平&#xff0c;可能就不能解决这个win10运行mc闪退的情况。我们应当如何处理这个问题呢&#xff1f;小编先给大伙说说简单的措施&#xff1a;1、确保电脑中安装了 .NET…

(2022.5.27)【Win10】Windows10重置后微软商店闪退打不开、图片闪退打不开、UWP应用闪退打不开——可能的解决方案

更新日志 20220609 增加注意事项 注意事项 经过多为网友的反馈&#xff0c;目前这个方法是无法直接解决微软商店打不开的问题。因此&#xff0c;基于我目前的了解&#xff08;6月9日&#xff09;&#xff0c;如果大家遇到这个问题&#xff0c;真的只能重新 U 盘安装系统了。…

win10内置计算机和天气闪退,win10系统中天气闪退怎么办?Win10天气应用闪退问题解决方法...

win10系统中天气闪退怎么办&#xff1f;最近有部分用户在安装了win10系统后发现自带的天气应用出现闪退的情况&#xff0c;点击天气应用&#xff0c;发现它启动了很久&#xff0c;然后就自动关闭了。之后再点击天气应用就闪退&#xff0c;打不开。而尝试打开别的应用却可以正常…

解决WIN10下应用商店不能用,闪退的情况

解决WIN10下应用商店不能用,闪退的情况 先说下我的情况,也是博主手贱,经常看PC上的某个文件或者程序不顺眼的话就会想办法把它干掉,为此重装过几次系统… 这一次是装了win10的周年更新后,烦人的cortana,onedrive等一些我不想要的APP又回来了,在暴力清理这些APP的时候,需要特殊…

win10java闪退怎么办_Win10应用打不开或闪退怎么办?解决方案在此

可能有一些用户升级Win10之后遇到了应用商店、应用打不开或闪退的问题&#xff0c;此时可尝试通过下面的一些方法来解决。 1、点击任务栏的搜索(Cortana小娜)图标&#xff0c;输入Powershell&#xff0c;在搜索结果中右键单击Powershell&#xff0c;选择“以管理员身份运行”。…

win10的c语言程序闪退,Win10专业版软件打不开闪退怎么办?

现在用到最多的Win10系统是Win10专业版&#xff0c;用户重装Win10专业版系统的目的就是为了解决电脑遇到的问题&#xff0c;然而重装系统后还是会出现许许多多的问题&#xff0c;比如说部分软件打不开了&#xff0c;闪退的问题。如果您也遇到了相同的问题&#xff0c;下面就是小…

win10安装虚拟机闪退_win10应用商店战争机器4闪退,无法运行。

创建日期 2018/01/07 win10应用商店战争机器4闪退&#xff0c;无法运行。 日志名称: System 来源: Microsoft-Windows-DistributedCOM 日期: 2018-01-07 14:05:10 事件 ID: 10001 任务类别: 无 级别: 错误 关键字:…

右击计算机管理打开会闪退,win10应用商店为什么会闪退 win10应用商店出故障怎么修复...

win10系统有个应用商店&#xff0c;在商店里用户可以下载一些软件应用&#xff0c;很多用户反馈win10应用商店老是闪退&#xff0c;重启也没有用&#xff0c;这该怎么办&#xff1f;下面小编为大家科普下win10应用商店闪退的解决方案&#xff0c;希望可以帮助到大家。 win10应用…

win10的c语言程序闪退,win10内置应用出现闪退怎么回事? win10打开应用总闪退的解决方法...

Windows10操作系统新增加很多实用的功能&#xff0c;对大家操作电脑有很大帮助。Win10专业版系统自带有相机功能、地图功能、时钟功能&#xff0c;同时还有一个应用商店功能&#xff0c;有的小伙伴说打开内置应用时出现闪退&#xff0c;究竟是哪里出现问题&#xff1f;针对此问…

win10的c语言程序闪退,win10 1909系统出现应用闪退如何解决

许多用户在升级更新到win10 1909版本系统之后&#xff0c;反映说遇到这样一个问题&#xff0c;就是使用应用的时候会出现闪退的现象&#xff0c;该怎么处理呢&#xff0c;下面给大家带来win10 1909系统出现应用闪退的解决措施。 一、重装应用 将闪退的应用卸载之后重新安装一下…

Window10 应用商店闪退问题

新装win10后打开应用商店&#xff0c;搜索软件直接闪退&#xff0c;查看了网上前人留下的经验发现还是没有解决问题&#xff0c;后来点开了电脑的设置 默认是选中第二项&#xff0c;点击第一项后&#xff0c;应用商店可以使用了 当然选中开发人员模式应用商店也是可以使用的

Win10应用商店、应用打不开或闪退的解决方法

越来越多小伙伴都将系统升级成Win10正式版了,win10功能强大令不少朋友感到非常满意,但也有一些朋友升级后却遇到了一些问题,比如应用商店、应用打不开或闪退的问题,今天快启动小编就跟大家介绍Win10应用商店、应用打不开或闪退的解决方法。 1、点击任务栏的搜索(Cortana小娜…

WIN10应用商店(MicrosoftStore)闪退解决方法!!!

本文参考了&#xff1a; CSDN博主「DreamOneDay」的文章https://blog.csdn.net/zyhj2010/article/details/52232749知乎作者千千之雪的文章https://www.zhihu.com/question/31001796/answer/1099015956 本方法适用于&#xff1a;更改过C:\ProgramFiles\WindowsApps权限的用户 如…

win10应用及应用商店闪退有效解决办法

近日遇到win10应用及应用商店闪退问题&#xff0c;在网上找寻各种方法&#xff0c;最终解决&#xff0c;记录下来&#xff0c;供以后查询。 方法 1/步骤1 1、在任务栏的搜索框中输入“Powershell”&#xff0c;然后在搜索结果中找到windows Powershell 鼠标右键单击并选择“以…