protobuf java小栗子

protobuf java小栗子

近来在项目中发现用到了Protocol Buffers,作为netty传输的协议,通过写个例子进行感受下其高效的序列化和反序列化~

1. 所用环境windows ,语言java

下载生成器与对应版本的jar包
当前例子所用:protoc.exe, protobuf-java-2.4.1.jar

2. 编写proto文件,例子如下:

package org.demo.protobuf;
option java_package = "org.demo.protobuf";
option java_outer_classname = "MsgSendProto";

message MsgSend {
  required string msgID = 1;
  required string phone = 2;
  required int64 doneTime = 3;
  required int32 enterpriseID = 4;
  optional string enterpriseName = 5;
  required int32 result = 6;
  required int32 channelID = 7;
  required int32 carrier = 8;
  required int32 busyType = 9;
  optional int32 size = 10;
  optional int32 unit = 11;
}

3. 在protoc.exe所在目录打开cmd,用以下命令执行编译刚刚编写proto文件,成功后无消息输出,在相应的目录下会产生java文件MsgSendProto.java

protoc.exe --java_out=./ MsgSend.proto

这里写图片描述

4. 在工程中导入protobuf-java-2.4.1.jar,编写个简单的测试类,感受下其序列化与反序列化~

public class MsgSendProtoBufTest {
    public static void main(String[] args) {
        // 先进行序列化
        MsgSendProto.MsgSend.Builder builder = MsgSendProto.MsgSend.newBuilder();
        builder.setMsgID("20151101");
        builder.setPhone("13100000000");
        builder.setDoneTime(System.currentTimeMillis());
        builder.setEnterpriseID(1);
        builder.setEnterpriseName("enterprise");
        builder.setResult(1);
        builder.setChannelID(1);
        builder.setCarrier(1);
        builder.setBusyType(1);
        builder.setSize(5);
        builder.setUnit(1);
        MsgSendProto.MsgSend msgSend = builder.build();
        byte[] buf = msgSend.toByteArray();
        try {
            // 再反序列化输出看看
            MsgSendProto.MsgSend msgReceive = MsgSendProto.MsgSend.parseFrom(buf);
            System.out.println(msgReceive.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(buf);
    }
}

结果输出,表明能正常序列化与反序列化~
这里写图片描述

阅读更多
文章标签: java protobuf
个人分类: java
上一篇linux shell(一)
下一篇结合Netty与Protobuf小栗子
博主设置当前文章不允许评论。

protobuf demo

2017年03月09日 3.67MB 下载

SwipeBackLayout

2018年04月16日 1.39MB 下载

protobuf java代码生成

2018年04月10日 5.43MB 下载

jquery自动补全小栗子

2012年09月11日 148KB 下载

protobuf 使用简单示例

2014年06月17日 10.01MB 下载

Mina Tcp实例

2018年03月14日 44KB 下载

没有更多推荐了,返回首页

关闭
关闭