Windows系统下使用protobuf:protobuf的简介、安装、使用方法之详细攻略

目录

protobuf的简介

protobuf的安装

protobuf的使用方法


protobuf的简介

Protocol buffers是用于序列化结构化数据的灵活、高效、自动化的机制——比如XML,但是更小、更快、更简单。您只需定义一下希望如何对数据进行结构化,然后就可以使用特殊生成的源代码来轻松地编写和读取到各种数据流中的结构化数据,并使用各种语言。你甚至可以更新你的数据结构,而不必破坏那些被编译为“旧”格式的程序。   
    Google protobuf是一个灵活的、高效的用于序列化数据的协议。相比较XML和JSON格式,protobuf更小、更快、更便捷。protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立于语言,独立于平台。Google protobuf是跨语言的,并且自带了一个编译器(protoc),只需要用它进行编译,可以编译成Java、python、C++、C#、Go等代码,然后就可以直接使用,不需要再写其他代码,自带有解析的代码。
     Google 提供了多种语言的实现:Java、c#、c++、Go 和 Python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 、json进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

1、.proto文件是protobuf一个重要的文件,它定义了需要序列化数据的结构。使用protobuf的3个步骤是:
第一步,在.proto文件中定义消息格式
第二步,用protobuf编译器编译.proto文件
第三步,用C++/Java等对应的protobuf API来写或者读消息

官方文档:https://developers.google.com/protocol-buffers/docs/overview

protobuf的安装

protoc的源码和各个系统的预编译包:https://github.com/protocolbuffers/protobuf/releases
1、选择对应的安装文件下载

2、添加到环境变量中

安装完成!

protobuf的使用方法

1、基本用法

protoc --version    #查看protoc的版本

2、代码转换显例

切换到要使用的proto文件路径下,并打开cmd窗口执行以下命令

protoc -I=源地址 --java_out=目标地址  源地址/xxx.proto

此处生成时会以 proto 里面注明的java_package为路径完整生成,所以目标地址不必包含java_package及之后的路径,比如:option java_package = "com.test.protocol";,那么就会生成com/test/protocol/XXX.java
参数说明

  • -I:主要用于指定待编译的 .proto 消息定义文件所在的目录,即可能出现的包含文件的路径,该选项可以被同时指定多个。此处指定的路径不能为空,如果是当前目录,直接使用.,如果是子目录,直接使用子目录相对径,如:foo/bar/baz,如果要编译的文件指定的文件路径为baz/test.proto,那么应这么写-I=foo/bar,而不要一直写到baz。

比如执行命令:

protoc -I=. --java_out=../../../../ beans/*.proto apis/*.proto *.proto

Windows系统下使用protobuf:protobuf的简介、安装、使用方法之详细攻略相关推荐

  1. sklearn:sklearn.preprocessing.StandardScaler函数的fit_transform、transform、inverse_transform简介、使用方法之详细攻略

    sklearn:sklearn.preprocessing.StandardScaler函数的fit_transform.transform.inverse_transform简介.使用方法之详细攻略 ...

  2. Computer:互联网开放平台项目知识补充之开发-运维-网络-网关等术语(DMZ、负载均衡、F5、Nginx、容器)的简介、使用方法之详细攻略

    Computer:互联网开放平台项目知识补充之开发-运维-网络-网关等术语(DMZ.负载均衡.F5.Nginx.容器)的简介.使用方法之详细攻略 目录 DMZ(隔离区)的简介及其使用方法 1.DMZ区 ...

  3. Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略

    Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略 目录 sklearn中的RobustScaler 函数的简介及使用方法 sklearn中的R ...

  4. ML之sklearn:sklearn.linear_mode中的LogisticRegression函数的简介、使用方法之详细攻略

    ML之sklearn:sklearn.linear_mode中的LogisticRegression函数的简介.使用方法之详细攻略 目录 sklearn.linear_mode中的LogisticRe ...

  5. Python:numpy库中的一些函数简介、使用方法之详细攻略

    Python:numpy库中的一些函数简介.使用方法之详细攻略 目录 numpy库中的一些函数简介.使用方法 1.np.concatenate() 1.1.函数案例 1.2.函数用法 numpy库中的 ...

  6. sklearn:sklearn.GridSearchCV函数的简介、使用方法之详细攻略

    sklearn:sklearn.GridSearchCVl函数的简介.使用方法之详细攻略 目录 sklearn.GridSearchCV函数的简介 1.参数说明 2.功能代码 sklearn.Grid ...

  7. sklearn:sklearn.feature_selection的SelectFromModel函数的简介、使用方法之详细攻略

    sklearn:sklearn.feature_selection的SelectFromModel函数的简介.使用方法之详细攻略 目录 SelectFromModel函数的简介 1.使用SelectF ...

  8. CV之FRec之ME/LF:人脸识别中常用的模型评估指标/损失函数(Triplet Loss、Center Loss)简介、使用方法之详细攻略

    CV之FRec之ME/LF:人脸识别中常用的模型评估指标/损失函数(Triplet Loss.Center Loss)简介.使用方法之详细攻略 目录 T1.Triplet Loss 1.英文原文解释 ...

  9. ML之API:国内外各大人工智能平台(百度云/华为云/阿里云/Face++等)及其API的简介、使用方法之详细攻略

    ML之API:国内外各大人工智能平台(百度云/华为云/阿里云/Face++等)及其API的简介.使用方法之详细攻略 目录 一.百度云api 1.api之CV 二.旷视科技(face++)api 1.a ...

  10. Python编程语言学习:包导入和模块搜索路径简介、使用方法之详细攻略

    Python编程语言学习:包导入和模块搜索路径简介.使用方法之详细攻略 目录 包导入和模块搜索路径简介 1.Pyhon搜索模块路径的机制 2.自定义配置搜索路径

最新文章

  1. TensorRT 数据和表格示例
  2. saltstack执行state.sls耗时长的坑
  3. Cesium环境搭建成功和初步看一下它的示例
  4. SAP SD 定价过程的16个字段的作用说明
  5. 合成孔径成像算法与实现_浅析太赫兹成像技术在消防领域中的应用前景
  6. 第二阶段——个人工作总结DAY10
  7. mysql中tinyint、smallint、int、bigint的区别介绍
  8. 数据结构上机测试2-2:单链表操作B
  9. arm架构linux进程调试,gdb-multiarch + gdbserver调试linux arm应用程序
  10. 建立一个普通方法无法打开查看和删除的文件夹
  11. VC++编程中的文件操作API和CFile类
  12. 我和老公清北毕业,我能接受自己的孩子读三流学校吗?
  13. 如何用手机制作电子版证件照?
  14. mbedtls | 10 - 数字证书及 X.509 证书标准
  15. 松翰SN8P2511 SOP8单片机 可代烧录 提供单片机方案开发 单片机解密
  16. ASP程序性能测试报告
  17. 汽车维修企业管理【11】
  18. 转化类操作符:map、mapTo和pluck
  19. 华为平板电池损耗用什么软件测试,平板怎么看电池损耗
  20. Pytest setup teardown

热门文章

  1. c++七参数坐标转换_深度 | 扒一扒坐标转换之七参数
  2. redis代码 发布订阅
  3. spring cloud架构 - HongHu common-service 项目构建过程
  4. 网路游侠:用防篡改和WAF保护网站安全
  5. Spring/Spring Boot微服务项目 集成Druid 实现监控功能
  6. shell中while循环案例
  7. linux下qq客户端
  8. Linux 最常用命令:简单易学,但能解决 95% 以上的问题
  9. 短网址有啥好处,用长网址不香吗?
  10. 用 ArrayList 还是 LinkedList?