protocol buffer 编码】的更多相关文章

protocol buffer能够跨平台提供轻量的序列化和反序列化,得益于其平台无关的编码格式,本文就介绍下其中的编码格式. Varints 在protocol buffer中大量使用到了Varints的编码格式,这是一个可变长度的编码格式用于编码整形数字.Varint的最小单位是byte,即8位,每byte第一位(msb)是标志位用于标记是否还有后续byte. ===1=== 0000 0001 ===300=== 1010 1100 0000 0010 上面300的例子首先读入第一个字节发现…
欢迎来到protocol buffer的开发者指南文档,一种语言无关.平台无关.扩展性好的用于通信协议.数据存储的结构化数据序列化方法. 本文档是面向计划将protocol buffer使用的到自己的Java.C++或Python应用程序中的开发者的.这个概览介绍了protocol buffer,并告诉你如何开始,你随后可以跟随编程指导(https://developers.google.com/protocol-buffers/docs/tutorials )去深入研究protocol buf…
Google Protocol Buffer 使用到了两种编码方式:Varints 和 zigzag. 一 Varints 编码 每个 byte 只用 7bit 表示数字,最高位 bit作为标志位,如果为: 1,表示后续的 byte 也是该数字的一部分: 0,表示结束. 因此值越小的数字使用越少的字节数.例如小于 128 的数只需要用一个 byte 表示. 1: 0000 0001 128: 0111 1111 129: 1000 0001 0111 1111 二 Zigzag 编码 负数最高位…
这一系列文章主要是对protocol buffer这种编码格式的使用方式.特点.使用技巧进行说明,并在原生protobuf的基础上进行扩展和优化,使得它能更好地为我们服务. 在上一篇文章中,我们展示了protobuf在java中的基本使用方式.而本文将继续深入探究protobuf的编码原理. 主要分为两个部分 第一部分是结合上一篇文章留下的几个伏笔展示protobuf的使用特性 第二部分是分析protobuf的编码原理,解释特性背后的原因 第一部分,Protobuf使用特性 1.不同类型对象的转…
这一系列文章主要是对protocol buffer这种编码格式的使用方式.特点.使用技巧进行说明,并在原生protobuf的基础上进行扩展和优化,使得它能更好地为我们服务. 在上一篇文章中,我们主要通过一些示例了解了protobuf的使用特性,以及和这些特性相关的基础编码原理. 编码原理只开了个头,所以本文将继续展示protobuf剩余的编码原理 在之前的文章中,我们只是定义了一些非常简单的模型,其中只包含了string.int和一个Name对象,所以我们首先先定义一个更复杂的模型 .proto…
目录 简介 定义一个简单的message Base 128 Varints 消息体的结构 符号整数 字符串 嵌套的消息 总结 简介 protocol buffer这种优秀的编码方式,究竟底层是怎么工作的呢?为什么它可以实现高效快速的数据传输呢?这一切都要从它的编码方式说起. 定义一个简单的message 我们知道protocol buffer的主体就是message,接下来我们从一个简单的message出发,详细讲解protobuf中的编码方式. 比如下面的一个非常简单的消息对象: messag…
你为Class外访问private对象而苦恼嘛?你为设计序列化格式而头疼嘛? ——欢迎体验Google Protocol Buffer 面向对象之封装性 历史遗留问题 面向对象中最矛盾的一个特性,就是“封装性”. 在上古时期,大牛们无聊地设计了三种访问域: public.private.protected. 大多数C++初学者都是疑惑的,甚至是对于传统C程序员而言. 在C规范中,没有class(类)的概念,只有struct(结构体)的概念. 面向对象的C++中,尽管将C规范的struct移植过来…
Protocol Buffer 基础知识:c#    原文地址:https://developers.google.com/protocol-buffers/docs/csharptutorial       这篇讲解c#版的Protocol Buffers的帖子,并不是完整的指南.想了解更多的信息请查看 Protocol Buffer Language Guide,  C# API Reference,  C# Generated Code Guide和 Encoding Reference.…
本文转自: http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它可用于通讯协议.数据存储等领域的语言无关.平台无关.可扩展的序列化结构数据格式.目前提供了 C++.Java.Python 三种语言的 API. 简介 什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这…
XML这种属于非常强大的一种格式,能存储任何你想存的数据,而且编辑起来还是比较方便的.致命的缺陷在于比较庞大,在某些情况下,序列化和解析都会成为瓶颈.这种对于实时性很强的应用来说,就不太适合了,想象下,设备正在紧张地进行运算,这时候来了一个解析XML任务,如果恰好这个XML比较大,那么势必产生卡顿,这个就会导致很糟糕的体验了. 二进制格式应该说很普遍的应用了,大家按照字节序列对好,编码和解码都不会有太大问题,但是几乎没什么扩展性,只要一方的格式变了,就得重新对消息,想象下一个有几十个字段的消息,…
以下内容主要整理自官方文档. 为什么使用 Protocol Buffers .proto文件 Protocol Buffers 语法 编译.proto文件 Protocol Buffers API 枚举和嵌套类 Builders vs. Messages 解析和序列化 Writing A Message Reading A Message 扩展协议 编码 对比XML 和 JSON 数据大小 序列化性能 解析性能 为什么使用 Protocol Buffers 通常序列化和解析结构化数据的几种方式?…
什么是protocol Buffer呢? Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准. 我理解的就是:它是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.方便文件的存储与网络传输. 我们自己就不用定义它们的存储与传输协议了. 怎么使用protobuf呢? 第一步, 写一个proto的文件 .定义你需要的数据结构. 每二步, 使用你想要用的语言的proto文件编译器把写的proto文件编译为目标语…
转载自http://www.cnblogs.com/stephen-liu74/archive/2013/01/02/2841485.html 该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则抽取于当前正在开发的一个公司内部项目的Demo.这样做的目的主要在于不仅可以保持Google文档的良好风格和系统性,同时再结合一些比较实用和通用的用例,这样就更加便于公司内部的培训,以及和广大网友的技术交流.需要说明的是,Blog的内容并非line by line的翻…
Protocol Buffer技术详解(数据编码) 之前已经发了三篇有关Protocol Buffer的技术博客,其中第一篇介绍了Protocol Buffer的语言规范,而后两篇则分别基于C++和Java给出了一些相对比较实用而又简单的示例.由于近期工作压力很大,因此对于是否继续写本篇博客也确实让我纠结了几天.但每每想到善终如始则无败事这句话时,最终的决定还是既然开始了,就要尽自己最大的努力去做,而不要留有丝毫的遗憾.      该篇Blog的内容将完全取自于Google的官方文档,只是为一些…
Protocol Buffer技术详解(语言规范) 该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则抽取于当前正在开发的一个公司内部项目的Demo.这样做的目的主要在于不仅可以保持Google文档的良好风格和系统性,同时再结合一些比较实用和通用的用例,这样就更加便于公司内部的培训,以及和广大网友的技术交流.需要说明的是,Blog的内容并非line by line的翻译,其中包含一些经验性总结,与此同时,对于一些不是非常常用的功能并未予以说明,有兴趣的开发者…
Google Protocol Buffer 的使用和原理 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它可用于通讯协议.数据存储等领域的语言无关.平台无关.可扩展的序列化结构数据格式.目前提供了 C++.Java.Python 三种语言的 API. 简介 什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: Google Protocol Buffe…
转自:http://www.cnblogs.com/stephen-liu74/archive/2013/01/02/2841485.html 该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则抽取于当前正在开发的一个公司内部项目的Demo.这样做的目的主要在于不仅可以保持Google文档的良好风格和系统性,同时再结合一些比较实用和通用的用例,这样就更加便于公司内部的培训,以及和广大网友的技术交流.需要说明的是,Blog的内容并非line by line的翻…
1.Protocol Buffer 概念 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件.他们用于 RPC 系统和持续数据存储系统. Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.它很适合做数据存储或 RPC 数据交换格式.可用于通讯协议.数据存储等领域的语言无关…
Protocol Buffer使用简介 字数2630 阅读5067 评论1 喜欢12 我们项目中使用protocol buffer来进行服务器和客户端的消息交互,服务器使用C++,所以本文主要描述protocol buffer C++方面的使用,其他语言方面的使用参见google的官方文档. 1.概览 1.1 什么是protocol buffer protocol buffer是google的一个开源项目,它是用于结构化数据串行化的灵活.高效.自动的方法,例如XML,不过它比xml更小.更快.也…
http://blog.csdn.net/csfreebird/article/details/7624807 varints用于正整数 (无符号整数) varints 是 一个很不错的技术.将一个整数序列化成1或者多个字节.想起以前我们总是使用4字节表示整数,真的很浪费啊.只有真正追求完美的人才会重视每个细节. 我的本篇介绍是https://developers.google.com/protocol-buffers/docs/encoding中的Base 128 Varints一节的逆过程.…
Google Protocol Buffer(protobuf)是一种高效且格式可扩展的编码结构化数据的方法.和JSON不同,protobuf支持混合二进制数据,它还有先进的和可扩展的模式支持.protobuf已在大多数软件平台上实现,包括适用于Android的精简Java版. http://developers.google.com/protocol-buffers/上有protobuf文档,下载链接以及安装说明.需要注意的是,Android平台为构建精简版的protobuf,所以不能使用中央…
http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Google Protocol Buffer 的使用和原理 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它可用于通讯协议.数据存储等领域的语言无关.平台无关.可扩展的序列化结构数据格式.目前提供了 C++.Java.Python 三种语言的 API. 17 评论: 刘 明, 软件工程师, 上海交大电…
Protocol buffer是Google出品的一种轻便高效的结构化数据存储格式,可对结构化数据进行序列化,并具有语言无关.平台无关等特点,在通信协议和数据存储等领域已经得到广泛的应用.目前其已经提供 C/C++.Java.Python 等语言的 API. 一.Protocol buffer和XML 在数据通信传输时,一般需要将结构化的数据序列化成流进行传送,接收方再反序列化为原始格式数据进行处理.在Web通信领域,XML应用算是最通用的了.在时间性能上,虽然XML的序列化开销还可以,但是反序…
essage为主要关键字,类似于java中的class.定义简单message类型 SearchRequest.proto定义了每个查询请求的消息格式,每个请求都会有查询关键词query,查询结果的页数,每页的结果数量这三个属性.于是   message SearchRequest{        required string query = 1;        optional int32 page_number = 2;        optional int32 result_per_p…
[转]转自:序列化笔记之一:Google的Protocol Buffer格式分析 从公开介绍来看,ProtocolBuffer(PB)是google 的一种数据交换的格式,它独立于语言,独立于平台.作为一个学了多年通信的人,ProtocolBuffer在我看来是一种信源编码.所谓信源编码,就是将待传输的信源符号经过某种变换,转换成码流进行传输的这个变换过程.信源编码可分为两类:有损编码与无损编码,PB自然是属于无损编码,在无损编码中,又分为定长编码和变长编码,定长编码就是一个符号变换后的码字的比…
Netty对Protocol Buffer的支持(七) 一.简介 在上一篇博文中笔者已经介绍了google的Protocol Buffer的使用,那么本文笔者就开始介绍netty对Protocol Buffer的支持. 二.编码的实现 2.1 服务端启动代码 public class ServerTest { public static void main(String[] args) throws Exception { EventLoopGroup bossGroup = new NioEv…
目录 Protocol Buffer Basics: C++ 为什么使用 Protocol Buffers 在哪可以找到示例代码 定义你的协议格式 编译你的 Protocol Buffers Protocol Buffer API 写消息(Writing A Message) 读取消息 扩展 Protocol Buffer 优化技巧 高级用法 Protocol Buffer Basics: C++ 这篇教程提供了一个面向 C++ 程序员.关于 protocol buffers 的基础介绍.通过创…
前言 习惯用 Json.XML 数据存储格式的你们,相信大多都没听过Protocol Buffer Protocol Buffer 其实 是 Google出品的一种轻量 & 高效的结构化数据存储格式,性能比 Json.XML 真的强!太!多! 由于 Google出品,我相信Protocol Buffer已经具备足够的吸引力 今天,我将讲解为什么Protocol Buffer的性能如此的好: a. 序列化速度 & 反序列化速度快 b. 数据压缩效果好,即序列化后的数据量体积小 阅读本文前请先…
转自(https://www.cnblogs.com/yinheyi/p/6080244.html) 什么是protocol Buffer呢? Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准. 我理解的就是:它是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.方便文件的存储与网络传输. 我们自己就不用定义它们的存储与传输协议了. 怎么使用protobuf呢? 第一步, 写一个proto的文件 .定义…
Protocol Buffer 基础知识:c#    原文地址:https://developers.google.com/protocol-buffers/docs/csharptutorial       这篇讲解c#版的Protocol Buffers的帖子,并不是完整的指南.想了解更多的信息请查看 Protocol Buffer Language Guide,  C# API Reference,  C# Generated Code Guide和 Encoding Reference.…