一、 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对象文件相关推荐

  1. ASP.NET Core分布式项目实战(业务介绍,架构设计,oAuth2,IdentityServer4)--学习笔记...

    任务4:第一章计划与目录 敏捷产品开发流程 原型预览与业务介绍 整体架构设计 API 接口设计 / swagger Identity Server 4 搭建登录 账号 API 实现 配置中心 任务5: ...

  2. 视频教程-Word项目实战从入门到精通(兼容2007、2010、2013、2016)-Office/WPS

    Word项目实战从入门到精通(兼容2007.2010.2013.2016) 有十年的开发经验和十年的培训经验,熟悉以下技术: 开源技术:struts2.hibernate.mybatis.spring ...

  3. 视频教程-PowerPoint项目实战从入门到精通视频课程(兼容2007、2010、2013、2016版本)-Office/WPS

    PowerPoint项目实战从入门到精通视频课程(兼容2007.2010.2013.2016版本) 有十年的开发经验和十年的培训经验,熟悉以下技术: 开源技术:struts2.hibernate.my ...

  4. 深度学习项目实战——1.基于WordCloud词云生成

    深度学习项目实战--1.基于WordCloud词云生成 准备 安装依赖库 pip install wordcloud matplotlib jieba pillow WordCloud()可选的参数 ...

  5. 【Python】Python实战从入门到精通之六 -- 教你读取文件

    本文是<Python实战从入门到精通>系列之第6篇 [Python]Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型 [Python]Python实战从入 ...

  6. ASP.NET Core分布式项目实战(课程介绍,MVP,瀑布与敏捷)--学习笔记

    任务1:课程介绍 课程目标: 1.进一步理解 ASP.NET Core 授权认证框架.MVC 管道 2.掌握 Oauth2,结合 Identity Sercer4 实现 OAuth2 和 OpenID ...

  7. SpringBoot交友APP项目实战(详细介绍+案例源码) - 9.小视频(SpringCache缓存)

    有人相爱,有人跳海 系列文章目录 1. 项目介绍及环境配置 2. 短信验证码登录 3. 用户信息 4. MongoDB 5. 推荐好友列表/MongoDB集群/动态发布与查看 6. 圈子动态/圈子互动 ...

  8. 软件接口测试一个项目的实战,全网最全postman接口测试教程和接口项目实战~从入门到精通!!!...

    Postman实现接口测试内容大纲一览: 一.什么是接口?为什么需要接口? 接口指的是实体或者软件提供给外界的一种服务. 因为接口能使我们的实体或者软件的内部数据能够被外部进行修改.从而使得内部和外部 ...

  9. 【Python】Python实战从入门到精通之五 -- 教你使用文件写入

    本文是<Python实战从入门到精通>系列之第5篇 [Python]Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型 [Python]Python实战从入 ...

最新文章

  1. 关于ES、PES、PS以及TS码流
  2. 【CoppeliaSim】远程 API 之 Matlab 控制,对比 V-rep 有些不同
  3. Python面向对象中:__init__() 构造方法
  4. 20175305张天钰 《java程序设计》第四周课下测试总结
  5. java wps linux 安装_ubuntu安装Java开发环境
  6. Android共享电脑上网
  7. 物联网中大数据的挑战有哪些
  8. 超级硬盘数据恢复软件 4.6.5.0注冊码破解版
  9. java版商城源码 spring cloud+spring boot+mybatis 多商户电子商务源码 直播带货源码 短视频带货源码 社交电商源码 分布式微服务电子商务源码
  10. oracle 授权所有语句,oracle grant 授权语句
  11. Android Studio的反编译工具使用。
  12. 计算机应用技术需要学数学吗,学计算机应用技术能不学数学吗?
  13. 计算机英语中paste表示,计算机英语常用词汇
  14. mysql查询时 全外連接_MySQL数据库左外连接、右外连接、全外连接
  15. 腾讯招python吗_#python 爬取腾讯招聘技术类的招聘信息
  16. 一个简单的UDP回显服务器
  17. C# 如何在Word文档中插入艺术字
  18. realtek没有禁用前面板_为何我realtek HD没有禁用前面板检测选项?
  19. DM数据库:springboot+mybaits
  20. 如何打新股|打新股流程

热门文章

  1. Win10内存管理探索
  2. Sell-In, Sell-Through, Sell Out都神马意思?江湖黑话?
  3. 4336: BJOI2015 骑士的旅行
  4. PAT 3. 人生苦短,我学python python实现
  5. maxcompute mysql_MySQL/RDS数据如何同步到MaxCompute之实践讲解
  6. 计算机图形学:Bezier曲线的绘制
  7. 2023年4月布基纳法索签证办理攻略
  8. 白帽子讲Web安全学习之CSRF
  9. nouveau linux,Nouveau (简体中文)
  10. angular-1.2.32路由控制写法与《SPA设计与架构》写法的部分区别