java mina 组包_国风的Blog

一、简介

ProtocolBuffer是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。

二、特点

ProtocolBuffer拥有多项比XML更高级的串行化结构数据的特性,ProtocolBuffer:

·更简单

·小3-10倍

·快20-100倍

·更少的歧义

·可以方便的生成数据存取类

例如,让我们看看如何在XML中建模Person的name和email字段:

John Doe

jdoe@example.com

对应的ProtocolBuffer报文则如下:

#ProtocolBuffer的文本表示#这不是正常时使用的二进制数据person {

name: "John Doe"

email: "jdoe@example.com"

}

三、开发步骤

1、下载包( http://code.google.com/p/protobuf/downloads/ ),包含了Java、Python、C++的ProtocolBuffer编译器,用于生成你需要的IO类。构建和安装你的编译器,跟随README的指令就可以做到。

一旦你安装好了,就可以跟着编程指导( http://code.google.com/apis/protocolbuffers/docs/tutorials.html )来选择语言-随后就是使用ProtocolBuffer创建一个简单的应用了。

2、创建. proto文件,文件中定义你需要做串行化的数据结构信息,下面定义个Order. Proto:

package xquant;

option java_package = "com.xquant";

option java_outer_classname = "Order";

message Order {

required int32 action = 1;

required string serialNo = 2;

required string version = 3;

optional string operator = 4;

required string code = 5;

required string name = 6;

required string price = 7;

required string amount = 8;

}

3、使用google的protoc.exe生成对应的C++文件,在CMD命令框中输入如下命令(路径根据实际情况修改):

F:\projects\c++\protobuf-2.4.1\examples>protoc --cpp_out=F:\projects\c++\protobu

f-2.4.1\examples order.proto

生成文件:

order.pb.h

order.pb.cc

4、新建C++工程Demo,把order.pb.h和order.pb.cc加入工程中,添加lib库

#   pragmacomment(lib, "libprotobuf.lib")

代码如下:

#include "stdafx.h"

#include 

#include 

#include 

#include "order.pb.h"

using namespace std;

void initOrder(xquant::Order* order) {

order->set_action(100);

order->set_serialno("100abc");

order->set_version("1.00.003");

string code = "TF0001";

order->set_code(code);

string name = "test";

order->set_name(name);

order->set_price("10.01");

order->set_amount("10000000.00");

}

int _tmain(int argc, _TCHAR* argv[])

{

GOOGLE_PROTOBUF_VERIFY_VERSION;

//组装报文         xquant::Order order;

initOrder(&order);

//对象序列化为string         string order_str;

order.SerializeToString(&order_str);

cout <

//显示调式报文         string order_debug = order.DebugString();

cout <

//string反序列化为对象         xquant::Order order_2;

order_2.ParseFromString(order_str);

cout <

cout <

google::protobuf::ShutdownProtobufLibrary();

getchar();

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值