(點選上方公眾號,可快速關註)
來源:jihite ,
www.cnblogs.com/kaituorensheng/p/9022591.html
1. 介紹Protocol Buffers
Protocal Buffers(簡稱protobuf)是谷歌的一項技術,用於結構化的資料序列化、反序列化,常用於RPC 系統(Remote Procedure Call Protocol System)和持續資料儲存系統。
其類似於XML生成和解析,但protobuf的效率高於XML,不過protobuf生成的是位元組碼,可讀性比XML差,類似的還有json、Java的Serializable等。
很適合做資料儲存或 RPC 資料交換格式。可用於通訊協議、資料儲存等領域的語言無關、平臺無關、可擴充套件的序列化結構資料格式。
2. Idea 安裝protobuf外掛
安裝外掛protobuf Support,之後重啟
3. 配置依賴
pom.xml新增
com.google.protobuf
protobuf-java
3.4.0
com.google.protobuf:protoc:3.1.0:exe:${os.detected.classifier}
4. 書寫proto檔案
syntax = “proto3”;
option java_package = “com.jihite”;
option java_outer_classname = “PersonModel”;
message Person {
int32 id = 1;
string name = 2;
string email = 3;
}
5. 轉化成Java檔案
6. 測試
把生成的類考的程式碼路徑下,用下麵測試用例測試
package com.jihite;
import com.google.protobuf.InvalidProtocolBufferException;
import org.junit.Test;
public class protobufTest {
@Test
public void testN() throws InvalidProtocolBufferException {
PersonModel.Person.Builder builder = PersonModel.Person.newBuilder();
builder.setId(1);
builder.setName(“jihite”);
builder.setEmail(“jihite@jihite.com”);
PersonModel.Person person = builder.build();
System.out.println(“before:” + person);
System.out.println(“===Person Byte:”);
for (byte b : person.toByteArray()) {
System.out.print(b);
}
System.out.println(“================”);
byte[] byteArray = person.toByteArray();
PersonModel.Person p2 = PersonModel.Person.parseFrom(byteArray);
System.out.println(“after id:” + p2.getId());
System.out.println(“after name:” + p2.getName());
System.out.println(“after email:” + p2.getEmail());
}
}
結果
before:id: 1
name: “jihite”
email: “jihite@jihite.com”
===Person Byte:
811861061051041051161012617106105104105116101641061051041051161014699111109================
after id:1
after name:jihite
after email:jihite@jihite.com
看完本文有收穫?請轉發分享給更多人
關註「ImportNew」,提升Java技能