【项目实战】Protobuf入门介绍以及如何生成proto对象文件
一、 Protobuf 介绍
1.1 诞生背景
常用的数据格式是 JSON,XML,或者 YAML,这些都是文本格式,特点是容易被人识别,非常容易编程,缺点是数据量有点大。在某些特定场景下,比如帧同步、各个应用之间的同步信息,这样的场景往往是并发高、发送/接收密集,假如用 JSON/XML 来传输,那么性能上就会大受影响。
所以能否有另外一种数据传输格式有效解决这个问题,这就是 Protobuf 上场的原因。
1.2 Protobuf 是什么?
Protobuf 是 Protocal Buffers 的简称,是 Google 研发的一种数据传输格式。
Protobuf 是采用字节流的方式进行传输,通过一些数据格式约定使得比 JSON 的传输量大为减少。
个人认为,在项目开发中为了各种方便,绝大多数场景下都优先考虑 JSON 格式等其他容易编程的数据传输格式。因为 Protobuf 的格式对于编程、维护都太麻烦 了。
这大概就是为什么 Protobuf 出来了这么多年,但是不流行的原因,因为可以用的场景太少太少。
二、生成proto对象文件
2.1 下载编译器
编译器下载地址
https://github.com/protocolbuffers/protobuf/releases
选择自己需要的版本下载即可,
这里下载的是 win64 3.19.4,下载之后进行解压
2.2 检查是否可用
2.3 使用protoc.exe生成java文件
将写好的message.proto文件,移动到与protoc.exe同级目录
使用cmd,编辑文本protoc.exe --java_out=./ message.proto
生成java文件,在以下目录 。
将它移动到项目的目录中,即可使用。
2.4 使用IDEA插件生成java文件
安装这两个插件即可,安装之后重启 idea
2.4.1 安装 protobuf 相关插件 - Protocal Buffer Editor
这个插件使得 idea 支持我们的 proto 语法,例如关键词高亮等功能
2.4.2 安装 protobuf 相关插件 - Protobuf Generator
一个是根据 .proto 文件来生成 proto 对象
(1)无法直接生成proto 对象
(2)点击工具 - Configure GenProtobuf 按钮 ,按照下面提示配置 相对应目录路径等。
注意正确的填写输出物的地址,否则会多很多文件夹。。
没配置好会提示如下:Exception
(4)执行Generate all Protobufs按钮
生成如下文件
【项目实战】Protobuf入门介绍以及如何生成proto对象文件相关推荐
- ASP.NET Core分布式项目实战(业务介绍,架构设计,oAuth2,IdentityServer4)--学习笔记...
任务4:第一章计划与目录 敏捷产品开发流程 原型预览与业务介绍 整体架构设计 API 接口设计 / swagger Identity Server 4 搭建登录 账号 API 实现 配置中心 任务5: ...
- 视频教程-Word项目实战从入门到精通(兼容2007、2010、2013、2016)-Office/WPS
Word项目实战从入门到精通(兼容2007.2010.2013.2016) 有十年的开发经验和十年的培训经验,熟悉以下技术: 开源技术:struts2.hibernate.mybatis.spring ...
- 视频教程-PowerPoint项目实战从入门到精通视频课程(兼容2007、2010、2013、2016版本)-Office/WPS
PowerPoint项目实战从入门到精通视频课程(兼容2007.2010.2013.2016版本) 有十年的开发经验和十年的培训经验,熟悉以下技术: 开源技术:struts2.hibernate.my ...
- 深度学习项目实战——1.基于WordCloud词云生成
深度学习项目实战--1.基于WordCloud词云生成 准备 安装依赖库 pip install wordcloud matplotlib jieba pillow WordCloud()可选的参数 ...
- 【Python】Python实战从入门到精通之六 -- 教你读取文件
本文是<Python实战从入门到精通>系列之第6篇 [Python]Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型 [Python]Python实战从入 ...
- ASP.NET Core分布式项目实战(课程介绍,MVP,瀑布与敏捷)--学习笔记
任务1:课程介绍 课程目标: 1.进一步理解 ASP.NET Core 授权认证框架.MVC 管道 2.掌握 Oauth2,结合 Identity Sercer4 实现 OAuth2 和 OpenID ...
- SpringBoot交友APP项目实战(详细介绍+案例源码) - 9.小视频(SpringCache缓存)
有人相爱,有人跳海 系列文章目录 1. 项目介绍及环境配置 2. 短信验证码登录 3. 用户信息 4. MongoDB 5. 推荐好友列表/MongoDB集群/动态发布与查看 6. 圈子动态/圈子互动 ...
- 软件接口测试一个项目的实战,全网最全postman接口测试教程和接口项目实战~从入门到精通!!!...
Postman实现接口测试内容大纲一览: 一.什么是接口?为什么需要接口? 接口指的是实体或者软件提供给外界的一种服务. 因为接口能使我们的实体或者软件的内部数据能够被外部进行修改.从而使得内部和外部 ...
- 【Python】Python实战从入门到精通之五 -- 教你使用文件写入
本文是<Python实战从入门到精通>系列之第5篇 [Python]Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型 [Python]Python实战从入 ...
最新文章
- 关于ES、PES、PS以及TS码流
- 【CoppeliaSim】远程 API 之 Matlab 控制,对比 V-rep 有些不同
- Python面向对象中:__init__() 构造方法
- 20175305张天钰 《java程序设计》第四周课下测试总结
- java wps linux 安装_ubuntu安装Java开发环境
- Android共享电脑上网
- 物联网中大数据的挑战有哪些
- 超级硬盘数据恢复软件 4.6.5.0注冊码破解版
- java版商城源码 spring cloud+spring boot+mybatis 多商户电子商务源码 直播带货源码 短视频带货源码 社交电商源码 分布式微服务电子商务源码
- oracle 授权所有语句,oracle grant 授权语句
- Android Studio的反编译工具使用。
- 计算机应用技术需要学数学吗,学计算机应用技术能不学数学吗?
- 计算机英语中paste表示,计算机英语常用词汇
- mysql查询时 全外連接_MySQL数据库左外连接、右外连接、全外连接
- 腾讯招python吗_#python 爬取腾讯招聘技术类的招聘信息
- 一个简单的UDP回显服务器
- C# 如何在Word文档中插入艺术字
- realtek没有禁用前面板_为何我realtek HD没有禁用前面板检测选项?
- DM数据库:springboot+mybaits
- 如何打新股|打新股流程
热门文章
- Win10内存管理探索
- Sell-In, Sell-Through, Sell Out都神马意思?江湖黑话?
- 4336: BJOI2015 骑士的旅行
- PAT 3. 人生苦短,我学python python实现
- maxcompute mysql_MySQL/RDS数据如何同步到MaxCompute之实践讲解
- 计算机图形学:Bezier曲线的绘制
- 2023年4月布基纳法索签证办理攻略
- 白帽子讲Web安全学习之CSRF
- nouveau linux,Nouveau (简体中文)
- angular-1.2.32路由控制写法与《SPA设计与架构》写法的部分区别