文档章节

Google Protocol Buffers浅析

彼得
 彼得
发布于 2013/11/27 15:32
字数 374
阅读 91
收藏 0
点赞 0
评论 0

(1)基本概念,怎么生成pb文件

http://www.cnblogs.com/royenhome/archive/2010/10/29/1864860.html

(2)配置vs2008

http://www.cnblogs.com/royenhome/archive/2010/10/30/1865066.html

(3)序列化

http://www.cnblogs.com/royenhome/archive/2010/10/30/1865153.html

(4)反序列化

http://www.cnblogs.com/royenhome/archive/2010/10/30/1865256.html

(5)四种序列化反序列化

http://blog.csdn.net/sealyao/article/details/6940245


//C数组的序列化和序列化API
bool ParseFromArray(const void* data, int size);
bool SerializeToArray(void* data, int size) const;
//使用
void set_people()             
{
    wp.set_name("sealyao");   
    wp.set_id(123456);        
    wp.set_email("sealyaog@gmail.com");
    wp.SerializeToArray(parray,256);
}

void get_people()             
{
    rap.ParseFromArray(parray,256);
    cout << "Get People from Array:" << endl;
    cout << "\t Name : " <<rap.name() << endl;
    cout << "\t Id : " << rap.id() << endl;
    cout << "\t email : " << rap.email() << endl;
}

//C++string序列化和序列化API
bool SerializeToString(string* output) const;
bool ParseFromString(const string& data);
//使用:
void set_people()             
{
    wp.set_name("sealyao");   
    wp.set_id(123456);        
    wp.set_email("sealyaog@gmail.com");
    wp.SerializeToString(&pstring);
}

void get_people()             
{
    rsp.ParseFromString(pstring);  
    cout << "Get People from String:" << endl;
    cout << "\t Name : " <<rsp.name() << endl;
    cout << "\t Id : " << rsp.id() << endl;
    cout << "\t email : " << rsp.email() << endl;
}

//C++ stream 序列化/反序列化API
bool SerializeToOstream(ostream* output) const;
bool ParseFromIstream(istream* input);

//使用:
void set_people()
{
    fstream fs(path,ios::out|ios::trunc|ios::binary);
    wp.set_name("sealyaog");
    wp.set_id(123456);
    wp.set_email("sealyaog@gmail.com");
    wp.SerializeToOstream(&fs);    
    fs.close();
    fs.clear();
}

void get_people()
{
    fstream fs(path,ios::in|ios::binary);
    rp.ParseFromIstream(&fs);
    std::cout << "\t Name : " <<rp.name() << endl;
    std::cout << "\t Id : " << rp.id() << endl; 
    std::cout << "\t email : " << rp.email() << endl;   
    fs.close();
    fs.clear();
}

 //文件描述符的序列化和序列化API
 bool SerializeToFileDescriptor(int file_descriptor) const;
 bool ParseFromFileDescriptor(int file_descriptor);

 //使用:
void set_people()
{
    fd = open(path,O_CREAT|O_TRUNC|O_RDWR,0644);
    if(fd <= 0){
        perror("open");
        exit(0); 
    }   
    wp.set_name("sealyaog");
    wp.set_id(123456);
    wp.set_email("sealyaog@gmail.com");
    wp.SerializeToFileDescriptor(fd);   
    close(fd);
}

void get_people()
{
    fd = open(path,O_RDONLY);
    if(fd <= 0){
        perror("open");
        exit(0);
    }
    rp.ParseFromFileDescriptor(fd);
    std::cout << "Get People from FD:" << endl;
    std::cout << "\t Name : " <<rp.name() << endl;
    std::cout << "\t Id : " << rp.id() << endl;
    std::cout << "\t email : " << rp.email() << endl;
    close(fd);
}








© 著作权归作者所有

共有 人打赏支持
彼得

彼得

粉丝 39
博文 121
码字总数 38726
作品 0
深圳
程序员
Protocol Buffer的理解

Protocol Buffers是谷歌提供的一种用来序列化结构体数据的机制,类似于XML。官网上这么定义: Protocol buffers are a language-neutral, platform-neutral extensible mechanism for seria...

兔之 ⋅ 2015/06/22 ⋅ 0

Protocol Buffers在windwos下生成对应语言类文件

1:windows下开发,下载源码包和windows下的编译器 https://developers.google.com/protocol-buffers/docs/downloads 下载 Protocol Buffers 2.6.1 full source和 Protocol Compiler 2.6.1 ......

伊人梦醉 ⋅ 2015/12/29 ⋅ 0

Protocol Buffers Editor 95c 发布

Protocol Buffers Editor 95c 发布,该版本增加对 Protocol Buffers 扩展的支持。 Protocol Buffers Editor 是一个用来查看和编辑 Google 的 Protocol Buffers 的二进制文件的工具。 Protoc...

oschina ⋅ 2014/06/11 ⋅ 5

Some Notes of Protocol Buffer C++

Some Notes of Protocol Buffer C++ Operating System: Ubuntu 14.04 Language: C++ 1. Refer to the official guided documentations for the Installation of Protocol Buffer: Overview......

JiaMing ⋅ 2015/11/22 ⋅ 0

Protocol Buffers Editor 0.85 发布

Protocol Buffers Editor 0.85 发布,该版本对界面做了调整,更改了查找功能,包括 CSV 编辑器 和 XML 查看器。 Protocol Buffers Editor 是一个用来查看和编辑 Google 的 Protocol Buffers...

oschina ⋅ 2012/05/22 ⋅ 0

Protocol Buffers Editor

Protocol Buffers Editor 是一个用来查看和编辑 Google 的 Protocol Buffers 的二进制文件的工具。 Protocol Buffers是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,...

匿名 ⋅ 2010/07/27 ⋅ 0

Protocol Buffers

Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。现阶段支持C++、JAVA、Python等三种...

匿名 ⋅ 2009/11/18 ⋅ 3

iOS网络通信之Protobuf

介绍 在不同平台通信的时候,首先需要将对象进行序列化。iOS平台上我们常用进行归档,当然也可以将数据处理为JSON或者XML格式。只能在iOS/Mac平台使用,因此它归档的二进制数据不适合于在不同...

大茶园丁 ⋅ 2015/12/02 ⋅ 2

Google Protocol Buffers 序列化算法分析

分析一下 Google Protocol Buffers 的序列化原理。介绍参考 Google Protocol Buffers 数据交换协议 说明 详细介绍参见官方文档 编写 proto 文件 定义了4个变量 a, b, c, d,其 Field 分别为 ...

被称为L的男人 ⋅ 05/31 ⋅ 0

Google Protocol Buffers 概述

个人小站,正在持续整理中,欢迎访问:http://shitouer.cn 小站博文地址:Google Protocol Buffers 概述 推荐阅读顺序,希望给你带来收获~ 《Google Protocol Buffers 概述》 《Google Protocol...

SibylY ⋅ 2016/04/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周六乱弹 —— 假如你被熊困到树上

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》 《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》- 谢...

小小编辑 ⋅ 19分钟前 ⋅ 2

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 今天 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部