1.ProtoBuf的学习与使用

目录

知识讲解介绍

  • 介绍ProtoBuf是什么, 以及会写小的demo样例, 去体验ProtoBuf的使用流程
  • 学习 Proto3 语法
  • 实战 ProtoBuf
  • 总结, 对比多种序列化协议, 分析ProtoBuf的优缺点, 适用的场景

初识ProtoBuf

分为以下三点来讲解:

序列化概念

序列化: 把对象转换为字节序列的过程, 称为对象的序列化.

反序列化: 把字节序列恢复为对象的过程, 称为对象的反序列化
举个例子:

我打电话给张三, 喂, 我们去吃什么? 张三回答到: 我们去吃烧烤吧.

手机会将光电信号进行互相转换, 而这个转换的过程就叫做序列化和反序列化.

对应网络传输时, 两个客户端在传送信息之前, 肯定定义了一种双方都能识别的协议, 协议就是类实例化的对象, 而在传递的过程中, 我们之前也讲过, 传递的不是对象而是二进制序列. 同样: 将对象转换为二进制对象的过程称为序列化, 将二进制序列转换为对象叫做反序列化.
除了在网络传输中存在持久化, 在内存中的对象持久化到磁盘文件的过程中, 也存在序列化和反序列化. 不仅仅如此, 将数据保存到缓存和数据库里都需要序列化和反序列化

如何实现序列化呢?

常见的解决方案有: json, XML, protobuf

ProtoBuf是什么

所以我们知道了什么是ProtoBuf?
ProtoBuf是将结构化数据进行序列化的一种方式.
ProtoBuf的特点:
语言无关、平台无关 : 即ProtoBuf支持Java, C++, Python等多种语言, 支持多个平台.
高效 : 即比XML更小, 更快, 更为简单
扩展性, 兼容性好: 你可以更新数据结构, 而不影响和破坏原有的旧程序.

Protobuf的使用特点

Protobuf是需要依赖通过编译生成的头文件和源文件 来使用的

什么是编译生成的头文件和源文件呢?

当我们定义一个类的时候, 1. 需要定义一系列的属性字段 2. 处理字段的方法: get和set方法 3. 处理类的方法: 序列化和反序列化

这2, 3对于开发人员来说是很耗时的.

所以Protobuf为了减轻开发人员的工作量, 给我们提供了一个编译器, 我们只需要定义一些属性, 它就会自动的给我们生成get,set,序列化反序列化等一系列方法.

1.编写.proto文件, 目的是为了定义结构对象(message)及属性内容.

2.使用protoc编译器编译.proto文件, 生成一系列接口代码, 存放在新生成头文件和源文件中.

3.依赖生成的接口, 将编译生成的头文件包含进我们的代码中, 实现对.proto文件中定义的字段进行设置和获取, 和对message对象进行序列化和反序列化.

小总结

相关推荐
汤姆yu6 分钟前
基于python大数据的天气可视化及预测系统
大数据·开发语言·python
转角羊儿8 分钟前
精灵图案例
开发语言·前端·javascript
l1t12 分钟前
Qwen 3.5plus编写的求解欧拉计划901题python程序优化
开发语言·python
T0uken16 分钟前
【Python】docxnote:优雅的 Word 批注
开发语言·python·word
9稳17 分钟前
基于智能巡检机器人与PLC系统联动控制设计
开发语言·网络·数据库·嵌入式硬件·plc
承渊政道18 分钟前
C++学习之旅【IO库相关内容介绍】
c语言·开发语言·c++·学习·macos·visual studio
Ronin30520 分钟前
【Qt窗口】Qt窗口
开发语言·qt·qt窗口
炸膛坦客21 分钟前
单片机/C/C++八股:(十七)C++ 中指针和引用的区别
c语言·开发语言·c++
bu_shuo22 分钟前
Origin软件学习
学习·origin
zhangrelay27 分钟前
用智能大模型复盘课程博客停更案例
笔记·学习