最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Protobuf的簡要介紹及使用詳解

 更新時間:2020年10月14日 09:24:43   作者:三一公子  
這篇文章主要介紹了Protobuf的簡要介紹及使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、protobuf的應(yīng)用場景

在官方文檔中可以看到

protocol buffers 是一種語言無關(guān)、平臺無關(guān)、可擴展的序列化結(jié)構(gòu)數(shù)據(jù)的方法,它可用于(數(shù)據(jù))通信協(xié)議、數(shù)據(jù)存儲等。 Protocol Buffers 是一種靈活,高效,自動化機制的結(jié)構(gòu)數(shù)據(jù)序列化方法-可類比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更為簡單。

可以看到protobuf 與json相比具有 壓縮比高 、解壓縮速度更快的優(yōu)點  

二、protobuf的使用

protobuf在使用上較為復(fù)雜,過程可以分為以下幾步:

  •  編寫java 的POJO類
  • 通過工具將java的POJO類,生成protobuf數(shù)據(jù)格式下的(在idea中可以下載Pojo2Proto插件)
  • 新建一個以.proto的文件,并寫入Pojo2Proto插件生成數(shù)據(jù)
  • 通過proto.exe程序?qū)?proto文件編譯生成java類,該JAVA類中定義有PB對該類的數(shù)據(jù)格式定義、get/set操作、解/壓鎖數(shù)據(jù)的方法

POJO類數(shù)據(jù):

public class Entity {
  private String key;
  private String value;
  public String getKey() {
    return key;
  }
  public void setKey(String key) {
    this.key = key;
  }
  public String getValue() {
    return value;
  }
  public void setValue(String value) {
    this.value = value;
  }
}

    生成的protobuf的數(shù)據(jù):  

syntax = "proto3";
 
message Entity {
  string key = 1;
  string value = 2;
}

通過protoc.exe進行編譯

在proto.exe的下載地址 https://repo1.maven.org/maven2/com/google/protobuf/protoc/ 編譯Entity.proto文件

protoc-3.9.2-windows-x86_64.exe  ./src/main/proto/Entity.proto --java_out=./src/main/java/src/

編譯后生成有 Entity OuterClass類的文件     通過 Entity OuterClass類壓縮數(shù)據(jù)

StreamWrap.Entity.Builder builder = StreamWrap.Entity.newBuilder();
//構(gòu)造數(shù)據(jù)
builder.setKey("123");
builder.setValue("123");
StreamWrap.Entity entity = builder.build();
//將該PB類轉(zhuǎn)換為二進制數(shù)據(jù)格式
byte[] buff = entity.toByteArray();

通過EntityOuterClass類解壓縮數(shù)據(jù)

總結(jié)

到此這篇關(guān)于Protobuf的簡要介紹及使用的文章就介紹到這了,更多相關(guān)Protobuf使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Map遍歷2種實現(xiàn)方法代碼實例

    Java Map遍歷2種實現(xiàn)方法代碼實例

    這篇文章主要介紹了Java Map遍歷2種實現(xiàn)方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • java合并list方法代碼實例

    java合并list方法代碼實例

    這篇文章主要介紹了java合并list方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • Spring bean不被GC的真正原因及分析

    Spring bean不被GC的真正原因及分析

    這篇文章主要介紹了Spring bean不被GC的真正原因及分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • java下使用kaptcha生成驗證碼

    java下使用kaptcha生成驗證碼

    這篇文章主要介紹了java下使用kaptcha生成驗證碼,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Java實現(xiàn)無頭雙向鏈表操作

    Java實現(xiàn)無頭雙向鏈表操作

    這篇文章主要為大家詳細介紹了Java實現(xiàn)無頭雙向鏈表的基本操作,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • java實現(xiàn)四子棋游戲

    java實現(xiàn)四子棋游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)四子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • java基于Apache FTP實現(xiàn)文件上傳、下載、修改文件名、刪除

    java基于Apache FTP實現(xiàn)文件上傳、下載、修改文件名、刪除

    本篇文章主要介紹了Apache FTP實現(xiàn)文件上傳、下載、修改文件名、刪除,實現(xiàn)了FTP文件上傳(斷點續(xù)傳)、FTP文件下載、FTP文件重命名、FTP文件刪除等功能,有需要的可以了解一下。
    2016-11-11
  • 利用SpringMVC和Ajax實現(xiàn)文件上傳功能

    利用SpringMVC和Ajax實現(xiàn)文件上傳功能

    這篇文章主要為大家詳細介紹了利用SpringMVC和Ajax實現(xiàn)文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 一文帶你弄清Map集合及其實現(xiàn)類

    一文帶你弄清Map集合及其實現(xiàn)類

    在Java中,Map是一種鍵值對(Key-Value)的集合,它存儲了一組唯一的鍵與相應(yīng)的值,每個鍵可以映射到一個值,這篇文章將詳細介紹Map集合及其一些常見的實現(xiàn)類,適合小白,感興趣的同學可以參考閱讀
    2023-06-06
  • JUnit測試控制@Test執(zhí)行順序的三種方式小結(jié)

    JUnit測試控制@Test執(zhí)行順序的三種方式小結(jié)

    這篇文章主要介紹了JUnit測試控制@Test執(zhí)行順序的三種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論

宁津县| 饶阳县| 高唐县| 申扎县| 肇州县| 武穴市| 岳阳县| 沅江市| 六安市| 苏尼特右旗| 子洲县| 甘孜| 普兰店市| 阿合奇县| 南丹县| 满洲里市| 涞源县| 乌恰县| 沭阳县| 新宾| 哈密市| 北安市| 文昌市| 杨浦区| 江阴市| 惠安县| 玛多县| 开封县| 抚顺市| 吉安县| 丹江口市| 盐亭县| 花垣县| 武鸣县| 平顶山市| 昌黎县| 石楼县| 宝鸡市| 宣武区| 江津市| 泗洪县|