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对象进行序列化和反序列化.

小总结

相关推荐
xian_wwq21 分钟前
【学习笔记】AGC协调控制系统概述
笔记·学习
社交怪人26 分钟前
【算平均分】信息学奥赛一本通C语言解法(题号2071)
c语言·开发语言
郭涤生1 小时前
不同主机之间网络通信-以太网连接复习
开发语言·rk3588
山居秋暝LS1 小时前
【无标题】RTX00安装paddle OCR,win11不能装最新的,也不能用GPU
开发语言·r语言
卢锡荣1 小时前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
Xin_ye100861 小时前
C# 零基础到精通教程 - 第七章:面向对象编程(入门)——类与对象
开发语言·c#
憧憬成为java架构高手的小白1 小时前
docker学习笔记(基于b站多个视频学习)【未完结】
笔记·学习
辰海Coding2 小时前
MiniSpring框架学习-完成的 IoC 容器
java·spring boot·学习·架构
AI科技星2 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
审判长烧鸡2 小时前
【Go工具】go-playground是什么组织?官方的?
开发语言·安全·go