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.资源下载
官网首页(需要FQ)链接,最新稳定版本官方链接,各种历史版本官方链接,protocolbuffer有各种语言的版本,目前支持的语言有C、C++、java、python、C#、GO、js等语言。我们这里讲C++稳定版本v3.0.0,windows环境下的VC++开发。在以下链接中,找到“protobuf-cpp-3.0.0”,下载链接,proto规范官方介绍链接。
Protocol Buffer学习教程之开篇概述(一)的更多相关文章
- Protocol Buffer学习教程之编译器与类文件(三)
Protocol Buffer学习教程之编译器与类文件(三) 1. 概述 在前面两篇中,介绍了Protobuf的基本概念.应用场景.与protobuf的语法等.在此篇中将介绍如何自己编译protobu ...
- Protocol Buffer学习教程之类库应用(四)
Protocol Buffer学习教程之类库应用(四) 此教程是通过一个简单的示例,给C++开发者介绍一下如何使用protocol buffers编程,主要包括以下几部分: 定义一个.proto文件 ...
- Protocol Buffer学习教程之语法手册(二)
1.说明 此向导介绍如何使用protocol buffer language创建一个自己的protocolbuffer文件,包括语法与如何通过“.proto”文件生成数据访问的类,此处只介绍proto ...
- Protocol Buffers学习教程
最近看公司代码的过程中,看到了很多proto后缀的文件,这是个啥玩意?问了大佬,原来这是Protocol Buffers! 这玩意是干啥的?查完资料才知道,又是谷歌大佬推的开源组件,这玩意完全可以取代 ...
- Protocol Buffer学习笔记
Protocol Buffer Protobuf基础概念 Protobuf是google开发的数据结构描述语言,能够将结构化数据序列化与反序列化,取代json和xml,常用于服务器通信协议.RPC系统 ...
- 学习Google Protocol buffer之概述
XML这种属于非常强大的一种格式,能存储任何你想存的数据,而且编辑起来还是比较方便的.致命的缺陷在于比较庞大,在某些情况下,序列化和解析都会成为瓶颈.这种对于实时性很强的应用来说,就不太适合了,想象下 ...
- 学习Google Protocol buffer之语法
上一篇结尾的时候问了几个问题,其实主要就是这个protoBuffer协议的语法,弄清楚语法后边才好开展工作嘛,不然大眼而对小眼儿,互相不认识,就没法玩耍了.其实就是学习怎么用google提供的这套 p ...
- netty4与protocol buffer结合简易教程
各项目之间通常使用二进制进行通讯,占用带宽小.处理速度快~ 感谢netty作者Trustin Lee.让netty天生支持protocol buffer. 本实例使用netty4+protobuf-2 ...
- 【神经网络与深度学习】Google Protocol Buffer介绍
简介 什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: Google Protocol Buffer( 简称 Protobuf) 是 Googl ...
随机推荐
- 【opencv学习笔记一】opencv下载安装与VS2017开发环境配置
本文章摘录自浅墨博客,原文链接http://blog.csdn.net/poem_qianmo/article/details/19809337 目录 1.opencv下载与安装 2.计算机环境变量配 ...
- JavaScript高级程序设计学习笔记第六章--面向对象程序设计
1.ECMAScript没有类的概念,ECMA-262 把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”,有点类似于散列表 2.ECMAScript 中有两种属性:数据属性和访问 ...
- 你所不知道的html5与html中的那些事(四)——文本标签
文章简介: 关于html5相信大家早已经耳熟能详,但是他真正的意义在具体的开发中会有什么作用呢?相对于html,他又有怎样的新的定义与新理念在里面呢?为什么一些专家认为html5完全完成后 ...
- Linux命令总结_sort排序命令
1.sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内容,以行为单位 ...
- phpstrom添加monokai-sublime主题
phpstrom默认的主题看起来不是特别舒服,sublime的主题却相当养眼,搜索之后,大为惊喜. 下载地址:https://github.com/sumiaowen/jetbrains-monoka ...
- 使用Xilinx SDSoc在Xilinx zcu102开发板上编程HelloWorld
关于Xilinx SDSoc的介绍我就不再复述了,我理解的也不一定准确,可以阅读官方文档了解SDSoc,你可以把它理解为一个集成开发环境 (IDE),通过SDSoc我们能够简单快速的对Xilinx的开 ...
- Git查询
Git查询 查询分支 git branch # 查询本地分支 git branch -a # 查询所有分支 $ git branch -a * master remotes/origin/HEAD - ...
- Solr 6.7学习笔记(03)-- 样例配置文件 solrconfig.xml
位于:${solr.home}\example\techproducts\solr\techproducts\conf\solrconfig.xml <?xml version="1. ...
- Codevs 1257 打砖块
1257 打砖块 http://codevs.cn/problem/1257/ 题目描述 Description 在一个凹槽中放置了n层砖块,最上面的一层有n块砖,第二层有n-1块,……最下面一层仅有 ...
- selenium+Python搭建
安装环境:windows 7 64位 1.安装python,版本为python2.7 1)下载安装包. 在python官方网站选择下载python2版本的windows安装包:python-2.7 ...