Protocol Buffer学习教程之开篇概述(一)

caffe源码学习(一) google protocol buffer caffe源码学习 protocol buffer 阅读详情


1. Protocol Buffer是什么

Protocol Buffer是google旗下的产品,用于序列化与反序列化数据结构,但是比xml更小、更快、更简单,而且能跨语言、跨平台。你可以把你的数据按你的要求结构化,然后可以转化成多种数据流,同时其他语言可以通过不同的流转化成自己熟悉的语言的数据格式。如C++语言开发者,定义了一个User数据结构,java开发者可以把此数据流轻易的转化成java环境下的数据结构。

我们知道json比xml更轻便,风闻json数据大小是xml的1/20,然后protobuf又是json的1/10,所以对数据大小要求高的选择protobuf合适;同时protobuff序列化与反序列化速度更快,所以对速度要求高的,可以选择protobuf;最关键一点,让我选择protobuf的原因是,它是向后兼容的,也就是说你可以对你的消息体进行修改,新旧版本之间相互兼容,而xml与json不容易做到这一点。

然后,protobuf的缺点是可读性差,不结合protobuf消息结构,是没办法读懂数据流的,这也是为获得轻便、高效做出的妥协。

2.它是如何工作的

它是怎么工作的呢,首先要把所有数据结构通过一个简单易懂的“.proto”文件定义,然后再把这个文件,通过Protocol buffer编译器编译成相应的类(C++、java、go等)文件。然后开发的时候,可以直接调用类文件中的接口,进行读、写、序列化与反序列化等操作。也就是说,首先它有一个任何语言开发者都易懂的规范文本(.proto),按此规范定义数据结构,然后用一个工具翻译成自己熟悉的语言的类文件,通过此类文件可以简单的操作数据。

3.如何学习protobuf

学习protobuf非常简单,首先你得学会写简单的“.proto”文件,也就是用protobuf语法描述你的数据结构,得先学习基本的protobuf语法,这样你就能定义自己的数据结构,所以我将在第二部分介绍protobuf的语法。其次,当你有自己的“.protobuf”文件后,你要把文件编译成你熟悉的开发语言(C++、java、python等)的数据结构类文件,所以你要一个编译器,在第三章节,我将介绍如何通过官方的源码获得编译器,然后如何把proto文件编译成C++类文件。最后,是如何利用生成的C++类文件,序列化与反序列化数据,与一些常用的方法与注意事项,将在最后一章节中介绍。

4.资源下载

官网首页(需要翻墙)链接,最新稳定版本官方链接,各种历史版本官方链接,protocolbuffer有各种语言的版本,目前支持的语言有C、C++、java、python、C#、GO、js等语言。我们这里讲C++稳定版本v3.0.0,windows环境下的VC++开发。在以下链接中,找到“protobuf-cpp-3.0.0”,下载链接,proto规范官方介绍链接。

 

Protocol Buffer在Go中的使用简介 为什么使用protocol buffers 下面的例子使用比较简单的“地址登记”应用,可以从文件中读取用户的联系信息。每个用户在地址簿中有名字、ID和邮件地址以及联系电话。 如何序列化以及检索这样的结构化数据,有几种方法可以解决这种问题: 使用gobs序列化Go数据结构。在Go特定环境下,这是一个好的解决方案。但是如果你需要与其他平台编写的应用共享数据,它将无法正常工作。 你可以发明一种特殊的方... 阅读详情

相关推荐

Spring Cloud OpenFeign集成Protocol Buffer

本文作者张天,著有《Spring Cloud 微服务架构进阶》一书。 背景  在之前的文章中,我们介绍过基于Spring Cloud微服务架构,其中,微服务实例之间的交互方式一般为RESTful HTTP请求或RPC调用。Spring Cloud已经为开发者提供了专门用于RESTful HTTP请求处理的OpenFeign组件,但是并没有相关的RPC调用组件。今天,我们就要定制OpenFeig...

aoho求索 2368

Protocol Buffer技术详解(语言规范)

该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则抽取于当前正在开发的一个公司内部项目的Demo。这样做的目的主要在于不仅可以保持Google文档的良好风格和系统性,同时再结合一些比较实用和通用的用例,这样就更加便于公司内部的培训,以及和广大网友的技术交流。需要说明的是,Blog的内容并非line by line的翻译,其中包含一些经验性总结,与此同时,对于一些不是非常常用的功能并未予以说明,有兴趣的开发者可以直接查阅Google的官方文档。 一、为什么使用P...

prochsh的专栏 787

google protocol buffer 与 redis 结合使用

google protocol buffer 可以将对象序列化,而redis作为优秀的NOSQL数据库,这里我将以实例方式介绍,将C++对象序列化,并存放在redis数据库中!   google protocol buffer 的安装以及基础使用可以阅读我上一片文章. redis的安装使用,可以查阅,这里不再描述.我使用redis的官方C client: hiredis.   proto

噬日者 1万+

Protocol Buffers C++ 入门教程

ProtoBuf(Protocol Buffers )是中立于语言、平台,可扩展的用于序列化结构化数据的解决方案,由 Google 开发并开源。详情见Protocol Buffers 官网和Github 源码。简单地说,ProtoBuf 是用来对数据进行序列化和反序列化。那么什么是数据的序列化和反序列化呢?见下文。ProtoBuf 支持主流的开发语言,包括 Objective-C、C++、C#、Java、Python、Go、JavaNano、JavaScript、Ruby、PHP 等。

Doublelv 的博客专栏。 4万+

LoRA学习: SX1276/SX1277/SX1278对比

Lora芯片 SX1276/SX1277/SX1278的比较SX1276/7/8是一种半双工传输的低中频收发器,配备标了标准FSK和远距离扩频Lora调制解调器。该芯片可以用于超长距离的Lora扩频通信,并且抗干扰性强,同时达到低功耗要求。1、芯片关键参数对比: 可以看出SX1276的带宽范围为 7.8~500kHz ,扩频 因子6~12,并覆盖所有可用频段。 SX1277的带宽和频段方位与 S

HowieXue 薛永浩的博客 1万+

公司综合管理信息系统

包括公司人员信息管理,财务信息分析,人员工资管理,公司各项业务的管理,安装信息以及维护等。该软件为普通的公司数据库开发应用产品。

Protobuf(Protocol Buffers)超详细入门教程(跨平台序列化, Python)——更新于2022.01

protocol buffers是谷歌的语言中立、平台中立、可扩展的结构化**数据序列化**机制——XML,但更小、更快、更简单。您可以一次定义数据的结构化方式,然后可以使用特殊生成的源代码轻松地使用各种语言(**C++/ C#/ Dart/ Go/ Java/ Kotlin/ Python**)在各种数据流中写入和读取结构化数据。

ymzhu385的博客 1976

C语言课设图书馆图书管理系统

C语言课设做的一个图书管理系统,非常适合,大一大二C语言课设使用,非常简单明了。

Protocol Buffer详解

Protocol Buffer是一种支持多平台、多语言、可扩展的的数据序列化机制,相较于XML来说,protobuf更小更快更简单,支持自定义的数据结构,用protobu编译器生成特定语言的源代码,如C++、Java、Python,目前protoBuf对主流的编程语言都提供了支持,非常方便的进行序列化和反序列化。这里简单的给出一个例子,是一个搜索请求的message格式。

Hell_potato777的博客 4676

数字电子技术基础_余孟尝第3版课后习题答案

数字电子技术基础 数字逻辑B 余孟尝第3版 课后习题答案 数字电子技术基础 数字逻辑B 余孟尝第3版 课后习题答案 数字电子技术基础 数字逻辑B 余孟尝第3版 课后习题答案 数字电子技术基础 数字逻辑B 余孟尝第3版 课后习题答案

eclipse-画板-java

大学软件工程课程设计-画板

Protocol Buffer学习教程之语法手册(二)

1.说明 此向导介绍如何使用protocol buffer language创建一个自己的protocolbuffer文件,包括语法与如何通过“.proto”文件生成数据访问的类,此处只介绍proto2,proto3的更多消息点这里。 这是一个参考指南,一步一步功能描述的示例,请访问以下链接,并选择你自己熟悉的开发语言。 2.定义消息类型 首先我们来看一个简单的示例,定义一个searchr

MingoJiang 3320

基于spring、hibernate、spring mvc的汽车管理系统demo

基于spring、hibernate、spring mvc的汽车管理系统demo

必会技能:简明的 Go Protocol Buffer 教程

在这个教程里面,我们将学习如何在你的 Go 应用中使 protocol Buffers 数据格式。我们将详细讲述这种数据格式,以及为什么这种数据格式优于传统的数据格式,例如 XML 甚至 JSON。在我们写更多复杂的例子之前,我们将从一个简单的例子开始编写运行。 在这个教程的最后,你会对 protoco Buffe 有一个基础的了解,并且你将可以顺利的写出更好的系统。 文章目录视频教学Protoc...

一个北漂的程序猿 627

Python爬虫实战:5分钟搞定Web of Science文献批量导出与解析(附完整代码)

本文提供了一套利用Python爬虫技术,快速实现Web of Science文献批量提取与解析的完整方案。通过解析官方导出的HTML文件,结合BeautifulSoup和pandas库,可将文献数据自动转换为结构化的Excel/CSV表格,帮助科研人员高效管理文献信息,节省大量手动整理时间。

weixin_29050513的博客 1162

【SWPUCTF 2021 新生赛】hardrce

对每个字符的ASCII值进行按位取反操作(这种要进行自增马进行绕过。

XiaoHei的博客 460

翻译:Go 中 Protocol Buffer 教程

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34217711的博客 232

水文预报新手别怕!用Matlab 18小时搞定马斯京根法参数K和x(附完整代码)

本文详细介绍了如何使用Matlab在18小时内快速掌握水文预报中的马斯京根法参数K和x的求解方法。通过完整的代码示例和分步解析,帮助新手从理论到实践快速跨越,解决传统手工试算耗时耗力的问题,提升水文预报的效率和精度。

weixin_42573113的博客 254
上一篇: 道路运输车辆卫星定位系统标准符合性检测 ----新规则、新方法
下一篇: Protocol Buffer学习教程之语法手册(二)
MingoJiang
博客等级 码龄14年 161粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MingoJiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值