初识ProtoBuf

本文介绍了Google的ProtoBuf,一种高效的数据序列化方法,支持多种语言和平台。内容涵盖序列化概念,ProtoBuf的特点和使用场景,以及ProtoBuf的安装教程(Windows和Linux)。文章还详细讲解了如何编写.proto文件,指定proto3语法,定义消息和字段,以及如何编译.proto文件生成C++代码,并给出了使用示例。
摘要由CSDN通过智能技术生成

目录

一、初识ProtoBuf

1.1 序列化概念

1.2 认识ProtoBuf

二、安装ProtoBuf

2.1 windows

2.2 Linux

三、快速上手ProtoBuf

3.1 .proto文件规范

3.2 指定proto3语法

3.3 package声明符

3.4 定义消息

3.5 定义消息字段

3.6 编译.proto文件,生成C++文件

3.7 使用展示


一、初识ProtoBuf

1.1 序列化概念

什么是序列化?

  • 将声音信号转换为光电信号属于序列化,将光电信号转换为声音信号属于反序列化
  • 将对象转换为二进制序列属于序列化,将二进制序列转换为对象属于反序列化(常见于网络传输、数据库持久化存储)

  • 序列化:把对象转换为字节序列的过程 被称为对象的序列化
  • 反序列化:把字节序列恢复为对象的过程 被称为对象的反序列化

什么情况下需要序列化?

  • 存储数据:当想将内存中的对象状态保存到⼀个文件中或者存到数据库中时
  • 网络传输:网络可以直接传输数据,但是无法直接传输对象,所以要在传输前序列化,传输完成后反序列化成对象。如socket编程中发送与接收数据

序列化的方式

  • XML、JSON、ProtoBuf

1.2 认识ProtoBuf

什么是ProtoBuf?

  • Google开发的,一种让结构化数据进行序列化的方法

自身特点

  • 语言无关、平台无关:即ProtoBuf支持Java、C++、Python等多种语言,支持多个平台
  • 高效:比XML更小、更快、更简单
  • 扩展性、兼容性好:可以更新数据结构,而不影响和破坏原有的旧程序

使用特点

  1. 编写.proto文件,定义结构对象(message)及属性内容
  2. 使用protoc编译器编译.proto文件,生成⼀系列接口代码,存放在新生成头文件和源文件中
  3. 依赖生成的接口,将编译生成的头文件包含进业务代码中,实现对.proto文件中定义的字段进行设置和获取,和对message对象进行序列化和反序列化

ProtoBuf是需要依赖通过编译生成的头文件和源文件使用的,可以减小开发人员压力

二、安装ProtoBuf

2.1 windows

下载地址https://github.com/protocolbuffers/protobuf/releases?page=3

下文以v21.11为例 

下载之后将压缩包解压到本地目录下。解压后的文件内包含bin、include文件和readme.txt

将解压后文件中的bin目录配置到系统环境变量的Path中去 

打开cmd,输入protoc --version查看版本,有显示说明安装成功

2.2 Linux

下载ProtoBuf前要安装依赖库autoconf automake libtool curl make g++ unzip,不同系统选择如下不同指令进行安装

sudo apt-get install autoconf automake libtool curl make g++ unzip -y #Ubuntu
sudo yum install autoconf automake libtool curl make gcc-c++ unzip    #CentOS

下载地址

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GG_Bond20

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值