初识protobuf(java)

简介

protobuf 是google 开发一个款序列化传输协议,它独立于语言,独立于平台;目前它提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。

下面介绍使用的是目前最新版本: 3.2

maven

    <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>3.2.0</version>
    </dependency>

protoc-3.2.0-win32下载地址

http://download.csdn.net/download/zsj897897/9821364

环境变量配置

将protoc-3.2.0-win32 解压到某一文件夹,在环境变量path路径(我的是:D:\software\protoc-3.2.0-win32\bin)

验证

C:\Users\Administrator>protoc --version
libprotoc 3.2.0

eclipse 插件下载

Eclipse Marketplace --> 搜索 "protobuf-dt" 安装"protobuf-dt-2.2.1"

测试

proto文件
syntax="proto3"; # 使用协议版本
option java_outer_classname="SearchRequestEntity"; # 生成的.java 文件名称
message SearchRequest {  # 最终对象名称同message 名称

string searchString =1;
int32 page_number = 2;
int32 page_size = 3;

}
生成Java对象命令
protoc.exe -I=proto的输入目录 --java_out=java类输出目录 proto的输入目录包括包括proto文件

例如:

C:\Users\Administrator>protoc -I=D:/develporDir/CODE/workspace/test-protobuf/src
/main/java/com/jiazq/test/protobuf/proto --java_out=D:/develporDir/CODE/workspac
e/test-protobuf/src/main/java/com/jiazq/test/protobuf/entity  D:/develporDir/COD
E/workspace/test-protobuf/src/main/java/com/jiazq/test/protobuf/proto/person-ent
ity.proto
测试代码
package com.jiazq.test_protobuf;

import com.jiazq.test.protobuf.entity.PersionEntity;

public class PersionTest {

    public static void main(String[] args) {
        PersionEntity.Persion.Builder builder = PersionEntity.Persion.newBuilder();

        builder.setEmail("281460530@qq.com");
        builder.setOnline(true);
        builder.setPassword("ricisung");
        builder.setPhoneNumber("18320928860");
        builder.setUserName("jiazq");
        builder.setUserId(12345);

        PersionEntity.Persion persion = builder.build();

        System.out.println(persion.toString());

        System.out.println("---------序列化开始----------");
        for (byte b: persion.toByteArray()) {
            System.out.print(b);
        }
        System.out.println();
        byte[] byteArray = persion.toByteArray();
        System.out.println("字节长度:" + byteArray.length);
        System.out.println("字节长度:" + persion.toByteArray().length);

    }

}
输出
userId: 12345
userName: "jiazq"
password: "ricisung"
email: "281460530@qq.com"
phoneNumber: "18320928860"
online: true

---------序列化开始----------
8-71961851061059712211326811410599105115117110103341650564952544853514864113113469911110942114956515048575056565448481
字节长度:53
字节长度:53
---------反序列化开始-----
userId: 12345
userName: "jiazq"
password: "ricisung"
email: "281460530@qq.com"
phoneNumber: "18320928860"
online: true

参考文章

http://blog.csdn.net/antgan/article/details/52103966

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值