目录
一、初识ProtoBuf
1.1 序列化概念
什么是序列化?
- 将声音信号转换为光电信号属于序列化,将光电信号转换为声音信号属于反序列化
- 将对象转换为二进制序列属于序列化,将二进制序列转换为对象属于反序列化(常见于网络传输、数据库持久化存储)
- 序列化:把对象转换为字节序列的过程 被称为对象的序列化
- 反序列化:把字节序列恢复为对象的过程 被称为对象的反序列化
什么情况下需要序列化?
- 存储数据:当想将内存中的对象状态保存到⼀个文件中或者存到数据库中时
- 网络传输:网络可以直接传输数据,但是无法直接传输对象,所以要在传输前序列化,传输完成后反序列化成对象。如socket编程中发送与接收数据
序列化的方式
- XML、JSON、ProtoBuf
1.2 认识ProtoBuf
什么是ProtoBuf?
- Google开发的,一种让结构化数据进行序列化的方法
自身特点
- 语言无关、平台无关:即ProtoBuf支持Java、C++、Python等多种语言,支持多个平台
- 高效:比XML更小、更快、更简单
- 扩展性、兼容性好:可以更新数据结构,而不影响和破坏原有的旧程序
使用特点
- 编写.proto文件,定义结构对象(message)及属性内容
- 使用protoc编译器编译.proto文件,生成⼀系列接口代码,存放在新生成头文件和源文件中
- 依赖生成的接口,将编译生成的头文件包含进业务代码中,实现对.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
下载地址: