日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java protobuf 例子_java使用protobuf例子

發(fā)布時(shí)間:2024/1/23 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java protobuf 例子_java使用protobuf例子 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Protobuf版本:2.5.0

最近研究Hadoop時(shí),發(fā)現(xiàn)Hadoop的RPC使用到了Protobuf這個(gè)東西,于是就了解了這個(gè) Protobuf

Protobuf是google的一種數(shù)據(jù)交互格式(類(lèi)似于xml,json),它獨(dú)立于語(yǔ)言和平臺(tái)。

但是可憐的google已被墻了,我們只能從github那邊下載

由于Hadoop用的是2.5版本,所有我這里也同樣下載了2.5的版本。

有2個(gè)文件protobuf-2.5.0.tar.gz ,protoc-2.5.0-win32.zip(window使用,linux可不下載)

下載protoc主要是需要使用到protoc生成java文件,如果是linux可參照protobuf-2.5.0.tar.gz包里面的readme

編譯

下載完成后我們要先編寫(xiě)proto文件,使用生成java代碼,以下為一個(gè)User類(lèi)的proto的文件

User.proto

syntax = "proto2";

option java_package = "com.bossky.protobuf";

option java_outer_classname = "UserProto";

message User

{

optional string username = 1;

optional string password = 2;

required int64 createTime = 3;

required int32 age = 4;

}

syntax指定了protobuf協(xié)議的版本,默認(rèn)是v2版本

java_package指定了生成類(lèi)的包名

java_outer_classname指定了生成類(lèi)的類(lèi)名

message指定了消息對(duì)象的類(lèi)名

{}里面為屬性 ?x=1 指定了屬性的序號(hào)

然后使用

protoc ?--java_out=./ ./User.proto

java_out 指定了java文件輸出的路徑 ?, ./User.proto指定了proto的路徑

這樣我們就生成了一個(gè)UserProto類(lèi),使用這個(gè)類(lèi)就可以輕松的用protobuf傳輸數(shù)據(jù)了

以下為使用例子

package com.bossky.protobufdemo;

import com.bossky.protobuf.UserProto;

import com.google.protobuf.InvalidProtocolBufferException;

/**

* Hello world!

*

*/

public class ProtobufApp {

public static void main(String[] args) {

// 通過(guò)建造者創(chuàng)建

UserProto.User.Builder builder = UserProto.User.newBuilder();

builder.setCreateTime(System.currentTimeMillis());

builder.setUsername("Test");

builder.setPassword("pass123");

builder.setAge(24);

UserProto.User user = builder.build();// 創(chuàng)建

System.out.println(

user.getCreateTime() + "," + user.getUsername() + "," + user.getPassword() + "," + user.getAge());

byte[] bs = user.toByteArray();

try {

UserProto.User other = UserProto.User.parseFrom(bs);// 從字節(jié)數(shù)組中讀取回

System.out.println(other.getCreateTime() + "," + other.getUsername() + "," + other.getPassword() + ","

+ other.getAge());

} catch (InvalidProtocolBufferException e) {

e.printStackTrace();

}

}

}

總結(jié)

以上是生活随笔為你收集整理的java protobuf 例子_java使用protobuf例子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。