欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Protobuf的簡要介紹及使用詳解

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

一、protobuf的應用場景

在官方文檔中可以看到

protocol buffers 是一種語言無關、平臺無關、可擴展的序列化結(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在使用上較為復雜,過程可以分為以下幾步:

  •  編寫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é)

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

相關文章

  • Java 選擇、冒泡排序、折半查找(實例講解)

    Java 選擇、冒泡排序、折半查找(實例講解)

    下面小編就為大家?guī)硪黄狫ava 選擇、冒泡排序、折半查找(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 使用Java自制一個一個Nacos

    使用Java自制一個一個Nacos

    Nacos是?Dynamic?Naming?and?Configuration?Service的首字母簡稱,一個更易于構(gòu)建云原生應用的動態(tài)服務發(fā)現(xiàn)、配置管理和服務管理平臺,本文將嘗試用Java實現(xiàn)一個Nacos,感興趣的可以了解下
    2024-01-01
  • Java設計模式之單態(tài)模式(Singleton模式)介紹

    Java設計模式之單態(tài)模式(Singleton模式)介紹

    這篇文章主要介紹了Java設計模式之單態(tài)模式(Singleton模式)介紹,本文講解了如何使用單例模式、使用單例模式注意事項等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • Java多線程之Semaphore實現(xiàn)信號燈

    Java多線程之Semaphore實現(xiàn)信號燈

    這篇文章主要給大家分享的是Java多線程之Semaphore實現(xiàn)信號燈的練習,emaphore是計數(shù)信號量。Semaphore管理一系列許可證。每個acquire方法阻塞,直到有一個許可證可以獲得然后拿走一個許可證;下面一起進入文章學習Semaphore的具體內(nèi)容
    2021-10-10
  • Jmeter參數(shù)化實現(xiàn)方法及應用實例

    Jmeter參數(shù)化實現(xiàn)方法及應用實例

    這篇文章主要介紹了Jmeter參數(shù)化實現(xiàn)方法及應用實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • 解決@NonNull @org.jetbrains.annotations.NotNull報紅的問題

    解決@NonNull @org.jetbrains.annotations.NotNull報紅的問題

    這篇文章主要介紹了解決@NonNull @org.jetbrains.annotations.NotNull報紅的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • SpringBoot使用slf4j日志并輸出到文件中的操作方法

    SpringBoot使用slf4j日志并輸出到文件中的操作方法

    這篇文章主要介紹了SpringBoot使用slf4j日志并輸出到文件中,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • SpringBoot?@Value與@ConfigurationProperties二者有哪些區(qū)別

    SpringBoot?@Value與@ConfigurationProperties二者有哪些區(qū)別

    這篇文章主要介紹了SpringBoot?@Value與@ConfigurationProperties二者的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-10-10
  • idea設置JVM運行參數(shù)的幾種方式

    idea設置JVM運行參數(shù)的幾種方式

    對JVM運行參數(shù)進行修改是JVM性能調(diào)優(yōu)的重要手段,本文主要介紹了idea設置JVM運行參數(shù)的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • SpringBoot整合UEditor的示例代碼

    SpringBoot整合UEditor的示例代碼

    本篇文章主要介紹了SpringBoot整合UEditor的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02

最新評論