关闭

protobuf

251人阅读 评论(0) 收藏 举报
分类:

Protocol Buffer的C++入门教程  ---- http://blog.csdn.net/k346k346/article/details/51754431

protobuf 简单入门 ---- http://blog.csdn.net/jeanphorn/article/details/472815

 

下载---安装---编写.proto协议文件----编译生成类 --- 导入使用

 

1.protobuf简介

protobuf(Protocol Buffers )是google的开源项目

简单的说,protobuf是用来对数据进行序列化和反序列化。那么什么是数据的序列化和反序列化呢?见下文。

protobuf支持目前主流的开发语言,包括C++、JavaPython、Objective-C、C#、JavaNano、JavaScript、Ruby、Go、PHP等。只要你使用以上语言,都可以用protobuf来序列化和反序列化你的数据。

2.数据的序列化和反序列化

序列化 (Serialization):将数据结构或对象转换成二进制串的过程

反序列化(Deserialization):将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。

我们为什么要序列化数据,貌似很多人并没有使用过,但是序列化数据却无处不在。我们要存储或者传输数据时,需要将当前数据对象转换成字节流便于网络传输或者存储。当我们需要再次使用这些数据时,需要将接收到的或者读取的字节流进行反序列化,重建我们的数据对象。

多说无益,举个例子。假如程序中你用到了如下结构的对象,以C++为例:

<code class="language-c++ hljs cpp has-numbering"><span class="hljs-comment">//学生类型</span>
<span class="hljs-keyword">struct</span> Student{
    <span class="hljs-keyword">char</span> ID[<span class="hljs-number">20</span>]
    <span class="hljs-keyword">char</span> name[<span class="hljs-number">10</span>];
    <span class="hljs-keyword">int</span> age;
    <span class="hljs-keyword">int</span> gender;
};

<span class="hljs-comment">//定义一个学生对象</span>
Student student;
<span class="hljs-built_in">strcpy</span>(student.ID,<span class="hljs-string">"312822199204085698"</span>);
<span class="hljs-built_in">strcpy</span>(student.name,<span class="hljs-string">"dablelv"</span>);
student.age=<span class="hljs-number">18</span>;
student.gender=<span class="hljs-number">0</span>;</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul><div style="display: none;" class="save_code tracking-ad" data-mod="popu_249"><a target=_blank href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul>

现在我需要将学生对象从客户端程序发送到远程的服务端程序。那们这个时候我们就需要对学生对象student进行序列化操作。以Linux的socket进行发送,我们需要调用系统为我们提供的网络IO相关的API,它们有如下几组:

3

1、在.proto文件中定义消息格式

2、使用protobuf编译器
3、使用c++ api来读写消息

 

 

0
0
查看评论

google protobuf学习笔记二:使用和原理

一.什么是protobuf protobuf全称Google Protocol Buffers,是google开发的的一套用于数据存储,网络通信时用于协议编解码的工具库。它和XML或者JSON差不多,也就是把某种数据结构的信息,以某种格式(XML,JSON)保存起来,protobuf与XML和JSO...
  • majianfei1023
  • majianfei1023
  • 2015-04-19 19:57
  • 21758

【C++】google protobuf库

1、安装
  • fangjin_kl
  • fangjin_kl
  • 2017-03-07 19:56
  • 890

Protobuf开发环境搭建

最近项目中用到protobuf,顺着整理一下使用protobuf的过程。protobuf使用起来是很简单的,网上和官方的资料都很多,但是环境搭建的资料稍微少点,所以主要是记录protobuf的环境搭建。 下文以eclipse下java使用为例。 1.在java中使用protobuf需要使用...
  • pushihai
  • pushihai
  • 2014-09-30 10:57
  • 974

动态使用Protobuf

使用protobuf动态特性
  • Win_Xin
  • Win_Xin
  • 2016-12-05 14:55
  • 1149

protobuf的数据类型和C++数据类型

protobuf支持的数据类型不是很丰富 protobuf属于轻量级的,因此不能支持太多的数据类型,下面是protobuf支持的基本类型列表,一般都能满足需求,不过在选择方案之前,还是先看看是否都能支持,以免前功尽弃。同样该表也值得收藏,作为我们在定义类型时做参考。 .pro...
  • wangchong_fly
  • wangchong_fly
  • 2015-08-13 16:33
  • 6521

protobuf 的优缺点 以及配置和用法

protof的描述 首先 protobuf是一个开源项目,是goole内部久经考验的一个东西。主要用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过他更小,更快,也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。甚至可以在无需重新部署程序的情况下更新数据...
  • machuanfei_c
  • machuanfei_c
  • 2015-05-13 11:34
  • 4080

protobuf的特点

protobuf的特点在网络之间传递可读性强的数据,有xml,还有json。相比之下,json比xml要好。但是他们有个弊端,传递的数据是可读的,也就是没有加密,使用网络抓包工具立马可以抓到。一条消息数据,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化...
  • MYGODLIU
  • MYGODLIU
  • 2016-07-22 11:41
  • 521

protobuf入门详解

引言 要看caffe源码,我认为首先应该看的就是caffe.proto。 它位于…\src\caffe\proto目录下,在这个文件夹下还有一个.pb.cc和一个.pb.h文件,这两个文件都是由caffe.proto编译而来的。 在caffe.proto中定义了很多结构化数据,包括: Blob...
  • Bruce_0712
  • Bruce_0712
  • 2017-05-30 23:40
  • 623

protobuf中会严重影响时间和空间损耗的地方

原文:http://blog.chinaunix.net/uid-26922071-id-3723751.html 当前项目中普遍用到GOOGLE 的一个开源大作PROTOBUF,把它作为网络应用层面的传输协议,至于它的诸多优势这里不作多说了!直接入正题! 前几日在PROTOBUF上面有...
  • yang3wei
  • yang3wei
  • 2015-06-04 13:50
  • 1144

protobuf的困局

在众多对google protobuf赞美中,提示protobuf存在问题有点不和谐。但我们应该在众多美好描述之中看到它的不足之处,才能更好地将它应用在合适的场景下。protobuf的困局核心在于他type失去了扩展空间。
  • romandion
  • romandion
  • 2014-08-19 14:22
  • 3638
    个人资料
    • 访问:220912次
    • 积分:4224
    • 等级:
    • 排名:第8591名
    • 原创:185篇
    • 转载:114篇
    • 译文:1篇
    • 评论:6条