精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Protobuf序列化這么強,為什么不花五分鐘學習一下呢?

開發 后端
java自帶的序列化機制效率太低,有很多缺點。因此涌現出了很多優秀的系列化框架,比如說protobuf、protostuff、thrift、hession、kryo、avro、fst、msgpack等等。

[[386741]]

 java自帶的序列化機制效率太低,有很多缺點。因此涌現出了很多優秀的系列化框架,比如說protobuf、protostuff、thrift、hession、kryo、avro、fst、msgpack等等。這篇文章我們就看一下protobuf,給出一個簡單案例,看看其是如何實現的。

注:若你對序列化概念和基本使用還有疑惑,可以翻看我之前的文章,或者百度一些基本概念和作用。

一、為什么要使用protobuf?

使用protobuf的原因肯定是為了解決開發中的一些問題,那使用其他的序列化機制會出現什么問題呢?

(1)java默認序列化機制:效率極低,而且還能不能跨語言之間共享數據。

(2)XML常用于與其他項目之間數據傳輸或者是共享數據,但是編碼和解碼會造成很大的性能損失。

(3)json格式也是常見的一種,但是在json在解析的時候非常耗時,而且json結構非常占內存。

但是我們protobuf是一種靈活的、高效的、自動化的序列化機制,可以有效的解決上面的問題。

二、如何使用protobuf

protobuf這么優秀使用起來也是非常的簡單,我們可以給出其主要的三個步驟,然后使用一個基本的案例去實現一下。

(1)定義.proto文件:我們在這個文件中描述我們序列化的信息,類似于bean類。

(2)根據.proto生成對應的類文件,上面這個proto就像是一個模板,現在我們要根據這個模板創建出一個java類。

(3)序列化。

有了這個基本的步驟我們我們就具體去實現一下:

1、下載安裝protobuf

第一步:下載解壓

我的電腦是windows10,因此這里給出在windows下的使用,linux下面使用我也將在后續文章推出。我們首先下載protobuf(github上搜索protobuf,有各種語言可供選擇)。選擇protoc-3.9.0-win64.zip。下載完成之后解壓到D:/protobuf目錄下面就好了。

第二步:配置環境變量

也就是將D:\protobuf\protoc-3.9.0-win64\bin配置到path環境變量里面。

第三步:驗證是否安裝成功

最后我們可以在cmd中輸入protoc --version驗證一下,是否成功。

OK,到這里我們就安裝好了。

2、編寫proto文件

之前我們說過proto 文件非常類似java的bean。在這里我們在bin目錄下新建一個Person.proto文件(和proto.exe)。輸入下列內容:

  1. syntax="proto3";  
  2. option java_package = "com.fdd.protobuf";    
  3. option java_outer_classname = "PersonProto";    
  4. message Person  {  
  5.   string name = 1; 
  6.   int32 age = 2; 
  7. }   

我們解釋一些我們都寫了什么

(1)第一行有一個proto3,他表示的是protobuf的語法版本,就類似于jdk1.7和jdk1.8的概念。需要在第一行指定。默認使用的是proto2。

(2)java_package:表示的是java包,不指定就使用 package.生成的類會放到該package下。這里表示把生成的類存放在com.fdd.protobuf包下面。

(3)java_outer_classname:我們說過.proto文件,要生成對應的類,這個參數就指定輸出什么類名。這里表示生成的類名是PersonProto。

(4)message 是用于數據格式定義.

  • 一個 .proto 文件中可以定義多個 message
  • message 中定義的字段支持 string、byte、bool、map、enum、數字類型和用戶自定義的 message
  • 定義字段后面需要指定唯一的標識數字,這些數字用于識別二進制格式 message 中的字段,一旦開始使用這個 message,那么標識數字就不能改變
  • 如果需要定義 List,則在字段前加repeated即可.
  • 如果已經使用過該 message 生成的類后,想要增加字段直接新增即可.當新增字段的類解析老數據時,會將新字段置為默認值.當舊的類解析新數據時會忽視掉新增字段.

比如說這里我們就定義一個復雜的proto文件:

  1. syntax = "proto3"
  2. option java_package = "com.fdd.protobuf"
  3. option java_outer_classname = "Persons"
  4. message Staff { 
  5.     int32 id = 1; 
  6.     string name = 2; 
  7.     int32 age = 3; 
  8.     // 枚舉示例 
  9.     enum PhoneType { 
  10.         MOBILE = 0; 
  11.         TELEPHONE = 1; 
  12.     } 
  13.     // 嵌套示例 
  14.     message PhoneNumber { 
  15.         string number = 1; 
  16.         PhoneType type = 2; 
  17.  
  18.     }  
  19.     // list示例 
  20.     repeated PhoneNumber phone = 4;       
  21.     message Map { 
  22.         string key = 1; 
  23.         int32 value = 2; 
  24.     } 
  25.     // map示例 
  26.     Map map = 5; 

由于這里只是展示一個基本案例,對于其他的數據類型可以根據自己的需要定義即可。

3、根據proto文件生成class類文件

編譯起來很簡單,在我們下載好的protobuf下面有一個bin目錄,里面有一個proto.exe。我們就使用這個去編譯person.proto文件就好。

也就是執行proto.exe --java_out = / Person.proto就會編譯成功。

4、使用class類文件

上面意味著我們已經做好了序列化的準備工作,接下來我們就可以直接使用這個類了。

(1)第一步:將生成的PersonProto類引入到我們的IDEA或者是eclipse中。

(2)第二步:在idea或者是eclipse添加protobuf的依賴。

  1. <dependency> 
  2.     <groupId>com.google.protobuf</groupId> 
  3.     <artifactId>protobuf-java</artifactId> 
  4.     <version>3.9.0</version> 
  5. </dependency> 

(3)第三步:使用

首先看一些如何序列化:

  1. //1、 創建Builder 
  2. PersonProto.Person.Builder builder = PersonProto.Person.newBuilder(); 
  3. //2、 設置Person的屬性 
  4. builder.setAge(20); 
  5. builder.setName("java的架構師技術棧"); 
  6. //3、 創建Person 
  7. PersonProto.Person person = builder.build(); 
  8. //4、序列化 
  9. byte[] data = person.toByteArray(); 
  10. //5、將data保存在本地或者是傳到網絡 

然后反序列化

 

  1. try { 
  2.        //一行代碼實現反序列化,data可以是本地數據或者是網絡數據 
  3.        PersonProto.Person person = PersonProto.Person.parseFrom(data); 
  4.        System.out.println(person.getAge()); 
  5.        System.out.println(person.getName()); 
  6. } catch (InvalidProtocolBufferException e) { 
  7.        e.printStackTrace(); 

OK,基本的使用流程就是這。

總結

基本上就是我們定義好proto文件,然后使用proto.exe編譯成類文件,最后導入這個類和依賴就可以直接使用了。當然這只是一個最簡單不過的代碼,可以把這篇教程當成一個簡單的使用教程。

本文轉載自微信公眾號「愚公要移山」,作者馮冬冬。轉載本文請聯系愚公要移山公眾號。

 

責任編輯:武曉燕 來源: 愚公要移山
相關推薦

2021-01-26 05:39:57

Protobuf java

2011-06-01 15:18:43

Serializabl

2019-10-24 08:11:19

IP下一跳靜態路由

2023-07-02 16:34:06

GPU虛擬化深度學習

2009-11-16 10:53:30

Oracle Hint

2025-03-13 06:22:59

2024-12-11 07:00:00

面向對象代碼

2020-06-16 08:47:53

磁盤

2024-09-03 08:17:59

2022-03-18 15:41:29

原子化服務HarmonyOS鴻蒙

2023-07-12 15:50:29

機器學習人工智能

2020-03-06 10:45:48

機器學習人工智能神經網絡

2019-07-09 14:42:17

SQLexplain索引

2009-11-02 18:07:58

Oracle數據庫

2009-11-05 14:53:54

Visual Stud

2021-06-07 09:51:22

原型模式序列化

2019-08-09 10:33:36

開發技能代碼

2009-10-22 16:18:19

Oracle表空間

2024-09-18 08:21:24

JavaScriptTypeScriptprototype

2025-01-20 08:50:00

點贊
收藏

51CTO技術棧公眾號

美国美女黄色片| 91最新在线观看| 天堂av手机版| 日韩激情av在线| 久久大大胆人体| 99久久免费看精品国产一区| 日本精品另类| 亚洲国产日韩在线一区模特| 日韩妆和欧美的一区二区| 一级片免费观看视频| 亚洲无吗在线| 色偷偷av一区二区三区| 少妇激情一区二区三区视频| 韩国理伦片久久电影网| 午夜精品久久久久久久99水蜜桃 | 1024av视频| a中文在线播放| 成人综合在线观看| 国产在线久久久| 日韩av大片在线观看| 中文字幕一区二区三区久久网站 | 欧美日韩夫妻久久| 黄色www网站| 青春草免费在线视频| 国产精品天干天干在线综合| 国产自产精品| 精品国产999久久久免费| 日本不卡免费在线视频| 66m—66摸成人免费视频| 国产稀缺精品盗摄盗拍| 国产成人精品免费视| 亚洲精品在线观看网站| 午夜免费福利网站| 欧美一区 二区 三区| 激情av一区二区| 免费看欧美一级片| www.欧美日本韩国| 国产精品久久久久久妇女6080| 开心色怡人综合网站| 乱精品一区字幕二区| 国产一区二区三区在线观看免费| 国产精品日韩在线观看| 久久久久久久久黄色| 国产一区二区你懂的| 欧美激情三级免费| 欧洲猛交xxxx乱大交3| 羞羞答答成人影院www| 日韩中文字幕在线| 91香蕉视频污在线观看| av亚洲在线观看| 在线日韩第一页| av电影在线不卡| 精品一二三区| 这里只有精品久久| 国产又色又爽又高潮免费| 日韩精品第一区| 精品国产依人香蕉在线精品| 天天操天天摸天天舔| 99精品视频精品精品视频 | 日本一卡二卡在线播放| 国产精品自拍区| 一本色道久久综合亚洲精品小说 | 男人资源在线播放| 中文字幕在线一区二区三区| 欧美性视频在线播放| 国产黄a三级三级三级av在线看| 亚洲天堂成人网| 日本xxxxx18| 性网站在线观看| 亚洲制服丝袜av| 免费看日本毛片| 免费福利视频一区二区三区| 欧洲精品中文字幕| 亚洲一区二区三区观看| 深夜福利一区| 亚洲欧美福利视频| 女同毛片一区二区三区| 国产精品免费99久久久| 中文字幕免费精品一区高清| 乱h高h女3p含苞待放| 国一区二区在线观看| 清纯唯美亚洲综合| 亚洲一区二区天堂| 国产精品一卡二卡在线观看| 精品九九九九| 日本在线观看免费| 亚洲国产视频直播| 精品久久久久av| 欧美一区二区三区婷婷| 精品不卡在线视频| 中文字幕黄色网址| 国产在线成人| 国产精品久久精品| 性欧美一区二区三区| www国产成人| 在线视频欧美一区| 92久久精品| 欧美男男青年gay1069videost | 555www成人网| 国产又粗又猛又黄又爽无遮挡| 成人网在线播放| 四虎影院一区二区三区 | 色欧美自拍视频| 久久人人爽人人| 精品乱码一区内射人妻无码 | 人人超在线公开视频| 色噜噜狠狠成人网p站| 麻豆网站免费观看| heyzo久久| 性欧美办公室18xxxxhd| 91av久久久| 久久久久久久网| 国产精品视频二| 精品福利在线| 亚洲人精品午夜在线观看| 午夜免费激情视频| 奇米亚洲午夜久久精品| 狠狠久久综合婷婷不卡| 99视频免费在线观看| 欧美性高清videossexo| 黄色录像a级片| 国产精品vip| 91免费视频国产| 成年午夜在线| 在线影院国内精品| 精品无码在线视频| 激情久久五月| 99久久精品免费看国产四区| 黄色网址免费在线观看| 欧美午夜在线观看| 熟女俱乐部一区二区视频在线| 亚洲东热激情| 风间由美久久久| 亚洲91av| 日韩女优电影在线观看| 免费在线观看h片| 久草热8精品视频在线观看| 日产精品久久久一区二区| 中文一区一区三区高中清不卡免费| 精品精品国产高清a毛片牛牛 | 欧美日韩国产亚洲一区| 成人亲热视频网站| 国产在线更新| 日韩一区二区免费视频| 成人免费视频网站入口::| 国产精品中文字幕欧美| 手机在线视频你懂的| 国产精品麻豆| 久热精品视频在线免费观看| 国产乱淫片视频| 亚洲免费在线电影| 精品人妻一区二区三区免费| 欧美777四色影| 粉嫩高清一区二区三区精品视频| 色呦呦久久久| 亚洲国产精久久久久久久| 日本一区二区网站| 91麻豆高清视频| 一本色道无码道dvd在线观看| 亚洲欧美校园春色| 国产精品老女人视频| 在线看的av网站| 91精品国产高清一区二区三区| 爱爱视频免费在线观看| 国产99久久久国产精品潘金 | 青春草免费视频| 国产不卡在线播放| 黄色网页免费在线观看| 久久不见久久见中文字幕免费| 国产福利视频一区二区| 日本电影全部在线观看网站视频| 91麻豆精品国产自产在线观看一区 | 人妻有码中文字幕| 欧美精选一区二区三区| 成人久久精品视频| 成人免费高清观看| 亚洲乱亚洲乱妇无码| 中文区中文字幕免费看| 亚洲欧美色图小说| 激情综合丁香五月| 日本vs亚洲vs韩国一区三区二区| 特级黄色录像片| 欧美日韩另类图片| 国产精品女主播| 欧美1234区| 国产一区二区三区免费视频| 亚洲自拍第二页| 亚洲一区二区三区四区五区黄| 欧美成人午夜精品免费| 九色综合狠狠综合久久| 99热亚洲精品| 日韩毛片视频| 国产美女精品在线观看| 日韩一区二区三区免费视频| 欧美国产乱视频| 国产福利片在线| 亚洲精品在线免费播放| 精品乱码一区内射人妻无码| 亚洲国产毛片aaaaa无费看| 欧美 日韩 成人| 成人亚洲精品久久久久软件| 9久久婷婷国产综合精品性色| 国产精品s色| 一区二区免费在线视频| 欧美高清视频看片在线观看| 91久久精品久久国产性色也91| 日本乱码一区二区三区不卡| 欧美精品在线播放| 国产区av在线| 日韩精品中文字幕视频在线| 国产jzjzjz丝袜老师水多| 在线精品视频免费播放| 国产一级做a爰片在线看免费| 国产精品伦一区二区三级视频| 亚洲一区二区三区无码久久| 国产伦精品一区二区三区在线观看| 国产日韩一区二区在线观看| 99国产精品| av久久久久久| 99免费精品| 午夜精品电影在线观看| 欧美调教网站| 国产精品国产精品国产专区不卡| 亚洲欧美在线综合| 国产精品电影网| 中文字幕高清在线播放| 欧美精品久久久久| 综合图区亚洲| 久久精品最新地址| 91社区在线高清| 一区二区在线免费视频| 你懂的视频在线| 日韩精品一二三四区| 日韩在线一区二区三区四区| 欧美成人aa大片| 成人毛片在线免费观看| 欧美一区二区三区在线观看视频| 亚洲天堂中文在线| 欧美中文字幕亚洲一区二区va在线| 国产精品男女视频| 欧美日韩国产中文字幕| 日韩成人免费观看| 午夜精品久久久久久久99水蜜桃| 日本一区二区免费在线观看| 偷拍与自拍一区| 国产手机在线视频| 婷婷久久综合九色国产成人| 亚洲 欧美 视频| 天涯成人国产亚洲精品一区av| 亚洲国产精品午夜在线观看| 天天亚洲美女在线视频| 国产成人亚洲精品自产在线 | 久久丝袜视频| 久久av免费一区| 一道在线中文一区二区三区| 日韩av在线电影观看| 欧美一二区在线观看| 亚洲一区二区精品在线观看| 天天天综合网| 成人免费在线视频播放| 亚洲国产裸拍裸体视频在线观看乱了中文 | 免费黄色激情视频| 亚洲激情男女视频| 色播视频在线播放| 欧美日韩综合视频| 中文字幕av影视| 91精品久久久久久久91蜜桃| 国产成人精品av在线观| 亚洲黄色在线观看| 黄色片视频在线观看| 久久好看免费视频| 精品日韩av| 欧美在线性爱视频| 欧美视频在线视频精品| 91超碰在线电影| 亚洲免费福利一区| 亚洲国产一区在线| 欧美性久久久| 免费裸体美女网站| 国产一区中文字幕| 免费中文字幕av| 国产精品毛片久久久久久| 久久精品99国产精| 色综合久久综合中文综合网| 91九色蝌蚪91por成人| 欧美va在线播放| 激情小说 在线视频| 久热在线中文字幕色999舞| 国产伦久视频在线观看| 国产精品免费福利| 豆花视频一区二区| 少妇精品久久久久久久久久| 91成人超碰| 国产精品亚洲二区在线观看| 国产一区二区三区免费看| 成人在线视频免费播放| 国产精品福利一区二区| 制服.丝袜.亚洲.中文.综合懂色| 欧美三级资源在线| 人妻一区二区三区免费| 中文在线资源观看视频网站免费不卡| 麻豆福利在线观看| 国产精品露脸自拍| 久久这里只有精品一区二区| 椎名由奈jux491在线播放| 亚洲永久网站| 野花视频免费在线观看| 中国色在线观看另类| 日韩三级小视频| 日韩三级电影网址| 99青草视频在线播放视| 久久人人爽人人爽人人片av高清| 老司机精品视频网| 麻豆视频成人| 99精品国产福利在线观看免费| 91欧美一区二区三区| 国产色一区二区| 免费观看成人毛片| 日韩美女天天操| 国产视频在线播放| 国产精品丝袜久久久久久不卡| 自拍偷拍欧美一区| av高清在线免费观看| 国产jizzjizz一区二区| 免费看特级毛片| 欧美性生活影院| 国产98在线| 日韩美女视频中文字幕| 乱亲女h秽乱长久久久| 国产女教师bbwbbwbbw| 精品一区二区在线观看| av资源在线免费观看| 欧美日韩亚洲综合一区| 免费在线黄色影片| 欧美壮男野外gaytube| 日韩理论电影中文字幕| 福利视频一区二区三区四区| 国产激情视频一区二区三区欧美 | 免费在线稳定资源站| 欧美孕妇与黑人孕交| 丝袜美腿综合| 乱人伦xxxx国语对白| 99久久免费视频.com| 国产五月天婷婷| 亚洲国产精品热久久| 欧美调教sm| 欧美成人在线免费观看| 视频一区欧美精品| 偷拍夫妻性生活| 91久久人澡人人添人人爽欧美| 国产综合在线观看| 国产成人小视频在线观看| 成人免费电影网址| 国产亚洲视频一区| 亚洲日本中文字幕区| 国产福利第一页| 欧美激情极品视频| 欧美综合精品| 日韩精品免费播放| 亚洲欧美自拍偷拍色图| 国产日韩欧美一区二区东京热| 色综合久久久888| 理论片一区二区在线| 国产1区2区在线| 国产精品国产三级国产aⅴ无密码| 国产乱码一区二区| 欧美国产日本在线| 色婷婷综合久久久久久| 国产又粗又长又大的视频| 最新久久zyz资源站| 蜜桃久久一区二区三区| 亲子乱一区二区三区电影 | 夜夜躁狠狠躁日日躁av| 久久国产精品久久久久久| 久久91在线| 黄色免费网址大全| 亚洲乱码精品一二三四区日韩在线 | 色戒汤唯在线观看| 亚洲欧美日韩在线综合| 国产精品资源站在线| 久久国产视频播放| 日韩视频在线免费| 欧美色图五月天| 成 人 黄 色 小说网站 s色| 一区二区三区四区高清精品免费观看| 天天干,夜夜操| 国产精品永久免费| 亚洲高清不卡| 成人18视频免费69| 日韩电影大片中文字幕| 久久精品资源| 无码专区aaaaaa免费视频| 国产精品污网站| 男人天堂手机在线观看| 国产精品高清免费在线观看| 欧美特黄视频| 超碰人人人人人人人| 亚洲福利视频二区| 香蕉久久久久久| 国产又黄又猛视频|