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

Protobuf序列化這么強(qiáng),為什么不花五分鐘學(xué)習(xí)一下呢?

開發(fā) 后端
java自帶的序列化機(jī)制效率太低,有很多缺點(diǎn)。因此涌現(xiàn)出了很多優(yōu)秀的系列化框架,比如說(shuō)protobuf、protostuff、thrift、hession、kryo、avro、fst、msgpack等等。

[[378317]]

java自帶的序列化機(jī)制效率太低,有很多缺點(diǎn)。因此涌現(xiàn)出了很多優(yōu)秀的系列化框架,比如說(shuō)protobuf、protostuff、thrift、hession、kryo、avro、fst、msgpack等等。這篇文章我們就看一下protobuf,給出一個(gè)簡(jiǎn)單案例,看看其是如何實(shí)現(xiàn)的。

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

一、為什么要使用protobuf?

使用protobuf的原因肯定是為了解決開發(fā)中的一些問(wèn)題,那使用其他的序列化機(jī)制會(huì)出現(xiàn)什么問(wèn)題呢?

(1)java默認(rèn)序列化機(jī)制:效率極低,而且還能不能跨語(yǔ)言之間共享數(shù)據(jù)。

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

(3)json格式也是常見(jiàn)的一種,但是在json在解析的時(shí)候非常耗時(shí),而且json結(jié)構(gòu)非常占內(nèi)存。

但是我們protobuf是一種靈活的、高效的、自動(dòng)化的序列化機(jī)制,可以有效的解決上面的問(wèn)題。

二、如何使用protobuf

protobuf這么優(yōu)秀使用起來(lái)也是非常的簡(jiǎn)單,我們可以給出其主要的三個(gè)步驟,然后使用一個(gè)基本的案例去實(shí)現(xiàn)一下。

(1)定義.proto文件:我們?cè)谶@個(gè)文件中描述我們序列化的信息,類似于bean類。

(2)根據(jù).proto生成對(duì)應(yīng)的類文件,上面這個(gè)proto就像是一個(gè)模板,現(xiàn)在我們要根據(jù)這個(gè)模板創(chuàng)建出一個(gè)java類。

(3)序列化。

有了這個(gè)基本的步驟我們我們就具體去實(shí)現(xiàn)一下:

1、下載安裝protobuf

第一步:下載解壓

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

第二步:配置環(huán)境變量

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

第三步:驗(yàn)證是否安裝成功

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

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

2、編寫proto文件

之前我們說(shuō)過(guò)proto 文件非常類似java的bean。在這里我們?cè)赽in目錄下新建一個(gè)Person.proto文件(和proto.exe)。輸入下列內(nèi)容:

  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)第一行有一個(gè)proto3,他表示的是protobuf的語(yǔ)法版本,就類似于jdk1.7和jdk1.8的概念。需要在第一行指定。默認(rèn)使用的是proto2。

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

(3)java_outer_classname:我們說(shuō)過(guò).proto文件,要生成對(duì)應(yīng)的類,這個(gè)參數(shù)就指定輸出什么類名。這里表示生成的類名是PersonProto。

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

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

比如說(shuō)這里我們就定義一個(gè)復(fù)雜的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; 

由于這里只是展示一個(gè)基本案例,對(duì)于其他的數(shù)據(jù)類型可以根據(jù)自己的需要定義即可。

3、根據(jù)proto文件生成class類文件

編譯起來(lái)很簡(jiǎn)單,在我們下載好的protobuf下面有一個(gè)bin目錄,里面有一個(gè)proto.exe。我們就使用這個(gè)去編譯person.proto文件就好。

也就是執(zhí)行proto.exe --java_out = / Person.proto就會(huì)編譯成功。

4、使用class類文件

上面意味著我們已經(jīng)做好了序列化的準(zhǔn)備工作,接下來(lái)我們就可以直接使用這個(gè)類了。

(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、 創(chuàng)建Builder 
  2. PersonProto.Person.Builder builder = PersonProto.Person.newBuilder(); 
  3. //2、 設(shè)置Person的屬性 
  4. builder.setAge(20); 
  5. builder.setName("java的架構(gòu)師技術(shù)棧"); 
  6. //3、 創(chuàng)建Person 
  7. PersonProto.Person person = builder.build(); 
  8. //4、序列化 
  9. byte[] data = person.toByteArray(); 
  10. //5、將data保存在本地或者是傳到網(wǎng)絡(luò) 

然后反序列化

  1. try { 
  2.        //一行代碼實(shí)現(xiàn)反序列化,data可以是本地?cái)?shù)據(jù)或者是網(wǎng)絡(luò)數(shù)據(jù) 
  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,基本的使用流程就是這。

總結(jié)

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

 

責(zé)任編輯:武曉燕 來(lái)源: 愚公要移山
相關(guān)推薦

2021-03-10 18:05:16

JavaProtobuf序列化

2011-06-01 15:18:43

Serializabl

2019-10-24 08:11:19

IP下一跳靜態(tài)路由

2023-07-02 16:34:06

GPU虛擬化深度學(xué)習(xí)

2009-11-16 10:53:30

Oracle Hint

2024-12-11 07:00:00

面向?qū)ο?/a>代碼

2025-03-13 06:22:59

2020-06-16 08:47:53

磁盤

2024-09-03 08:17:59

2022-03-18 15:41:29

原子化服務(wù)HarmonyOS鴻蒙

2023-07-12 15:50:29

機(jī)器學(xué)習(xí)人工智能

2020-03-06 10:45:48

機(jī)器學(xué)習(xí)人工智能神經(jīng)網(wǎng)絡(luò)

2019-07-09 14:42:17

SQLexplain索引

2009-11-02 18:07:58

Oracle數(shù)據(jù)庫(kù)

2021-06-07 09:51:22

原型模式序列化

2019-08-09 10:33:36

開發(fā)技能代碼

2009-10-22 16:18:19

Oracle表空間

2024-09-18 08:21:24

JavaScriptTypeScriptprototype

2025-01-20 08:50:00

2009-11-05 14:53:54

Visual Stud
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

少妇高潮一区二区三区99小说 | 国产尤物精品| 日韩一级精品视频在线观看| 日韩美女爱爱视频| 日本在线丨区| 激情av综合网| 91sa在线看| 国产黄a三级三级| 黄色成人美女网站| 欧美日韩免费观看一区三区| 18黄暴禁片在线观看| 撸视在线观看免费视频| 国产精品一区二区三区网站| 2019av中文字幕| 神马久久精品综合| 精品一区亚洲| 日韩精品最新网址| 蜜桃免费在线视频| 精品丝袜在线| 亚洲乱码国产乱码精品精98午夜| 欧美日韩在线精品一区二区三区| 国产精品久久久久久久成人午夜| 亚洲综合国产激情另类一区| 久久色免费在线视频| 成人免费无遮挡无码黄漫视频| 日韩三级av高清片| 欧美日韩国产一区二区三区地区| 国产伦精品一区二区三区四区视频_| 日本中文字幕伦在线观看| 成人av高清在线| 亚洲最大的免费| 在线视频播放大全| 久久精选视频| 国产91精品久久久久久久| 一级一片免费播放| 成年人网站国产| 丁香婷婷在线| 久久免费看少妇高潮| 国产精品乱码一区二区三区| 一级特黄aaa| 日韩一区精品字幕| 国产91网红主播在线观看| 日本三级视频在线| 国产精品扒开腿做爽爽爽软件| 自拍偷拍亚洲精品| 国产伦精品一区二区三区视频女| 午夜欧洲一区| 精品一区二区三区四区在线| 国产一级黄色录像| 成人香蕉社区| 欧美精品一区视频| 一边摸一边做爽的视频17国产| 欧美影院精品| 日韩欧美二区三区| 国产人妖在线观看| 亚洲日本va中文字幕| 日韩午夜在线影院| 精产国品一区二区三区| 911亚洲精品| 欧美精品一区二区三区蜜桃| 国产大学生视频| 精品网站aaa| 亚洲第一中文字幕| 给我看免费高清在线观看| 精品少妇3p| 亚洲视屏在线播放| 俄罗斯毛片基地| 国产精品久久久久久麻豆一区软件 | 亚洲国产成人自拍| 亚洲一区影院| dj大片免费在线观看| 亚洲伊人色欲综合网| 99在线免费视频观看| 日韩在线伦理| 欧美在线一区二区| 中文字幕线观看| 涩涩屋成人免费视频软件| 亚洲成年人在线播放| 久久午夜夜伦鲁鲁片| 奇米亚洲欧美| 色爱精品视频一区| 久草国产在线观看| 先锋影音久久| 成人免费午夜电影| 日韩一卡二卡在线| 国产亚洲成aⅴ人片在线观看| 视频一区二区在线观看| 26uuu亚洲电影在线观看| 午夜影院在线观看欧美| 国产理论在线播放| 久久综合给合| 亚洲精品视频中文字幕| 中文字幕在线观看2018| 亚洲欧洲午夜| 国产美女主播一区| 日本黄色免费视频| 中文字幕高清不卡| 久草视频这里只有精品| 亚洲不卡系列| 日韩久久久精品| 精品日韩在线视频| 亚洲三级毛片| 国产这里只有精品| 日韩一级免费毛片| 日韩一区在线播放| 女性女同性aⅴ免费观女性恋| 亚洲精品三区| 亚洲乱码国产乱码精品精| www.99re7| 日本在线观看不卡视频| 国产伦精品一区二区三毛| 91官网在线| 狠狠爱在线视频一区| 亚洲一区二区图片| 亚洲综合欧美综合| 精品国产精品| 国产综合在线看| 一级视频在线播放| 国产欧美在线观看一区| 日韩av新片网| 久久一级大片| 少妇久久久久久| 亚洲精品中文字幕乱码三区91| 国产福利一区二区三区视频| 亚洲一区二区三区精品在线观看 | 亚洲三级电影全部在线观看高清| 国产欧美在线一区| 成人爽a毛片免费啪啪红桃视频| 日韩中文在线不卡| 国产一级18片视频| 成人av网站大全| 乱熟女高潮一区二区在线| 精品久久在线| 国产一区二区三区在线播放免费观看| 国产欧美日韩另类| 粉嫩av一区二区三区| 青少年xxxxx性开放hg| 国产一区二区三区朝在线观看| 亚洲高清久久网| 国产在线视频你懂的| 国产精品亚洲一区二区三区妖精| 一区二区欧美日韩| 国产精品99精品一区二区三区∴| 亚洲欧美日韩第一区| 99久热在线精品996热是什么| 成年人国产精品| 18禁裸男晨勃露j毛免费观看| 天堂精品久久久久| 欧美成人性生活| 性生交大片免费看女人按摩| 亚洲综合一区二区| 精品国产免费久久久久久婷婷| 亚洲欧美亚洲| 成人免费91在线看| 白白色在线观看| 亚洲精品国偷自产在线99热| 天天爽夜夜爽夜夜爽精品| 99久久国产免费看| 久久久噜噜噜www成人网| 亚洲香蕉视频| 国产精品亚洲片夜色在线| 在线日本视频| 日韩一区二区电影网| 久久久久久久久毛片| 成人午夜在线视频| 国产二级片在线观看| 免费视频亚洲| 国产精品自拍网| 亚洲国产精品精华素| 欧美videos中文字幕| 日本三级网站在线观看| 久久网这里都是精品| 欧美一级裸体视频| 一区二区蜜桃| 狠狠久久综合婷婷不卡| 欧美电影免费观看高清完整| 在线观看久久久久久| 国产特级黄色片| 无吗不卡中文字幕| 日本一二三不卡视频| 国产河南妇女毛片精品久久久 | 日韩黄色中文字幕| 韩国女主播成人在线观看| 日韩人妻一区二区三区蜜桃视频| 高潮按摩久久久久久av免费| 88xx成人精品| 免费大片在线观看www| 亚洲国产成人在线播放| 中文字幕欧美人妻精品| 一区二区三区日韩精品视频| 黑人巨大精品欧美| 久久99精品久久久久久久久久久久| 国产在线视频在线| 国产麻豆一区二区三区精品视频| 91日本在线视频| 麻豆mv在线观看| xxxxx成人.com| 亚洲色欧美另类| 欧美一区二区视频在线观看2020 | 亚洲片区在线| 亚洲午夜精品一区二区| 精品人人人人| 91网站在线免费观看| 在线观看欧美日韩电影| 九九热视频这里只有精品| 欧美巨乳在线| 精品欧美一区二区在线观看| 中文字幕免费高清网站| 亚洲成人精品一区| 疯狂撞击丝袜人妻| 国产视频视频一区| 黄色在线免费播放| 国产精品资源在线看| 亚洲精品一二三四五区| 99在线观看免费视频精品观看| 影音先锋欧美在线| 久久99蜜桃| 国产欧美日韩一区| 婷婷视频一区二区三区| 国产日本欧美一区二区三区| 大胆人体一区二区| 久久久久亚洲精品成人网小说| 成a人片在线观看www视频| 日韩成人av网址| 亚洲欧美黄色片| 欧美另类变人与禽xxxxx| 黄色片中文字幕| 精品久久久一区二区| 欧美黑吊大战白妞| 亚洲免费观看高清完整版在线观看 | 99久re热视频精品98| 日韩电影二区| 色一情一区二区三区四区| 亚洲毛片免费看| 精品国产免费一区二区三区 | 欧美大香线蕉线伊人久久| 综合成人在线| 国产精品裸体一区二区三区| 欧美成人一级| av一区二区三区在线观看| 精品国产不卡一区二区| 91久久久在线| 精品国产亚洲一区二区在线观看 | 《视频一区视频二区| 刘亦菲国产毛片bd| 国产精品国产三级国产普通话蜜臀| 在线小视频你懂的| 久久久不卡网国产精品一区| 国产精品扒开腿做爽爽| 久久久久久电影| 亚洲成人黄色av| 亚洲国产电影在线观看| 欧美性生交大片| 亚洲人被黑人高潮完整版| 无码人妻精品一区二区三区夜夜嗨| 国产精品久久久久久久久图文区| 日本伦理一区二区三区| 中文字幕中文字幕在线一区| 国产传媒免费在线观看| 一区二区三区国产豹纹内裤在线| 麻豆亚洲av成人无码久久精品| 一区二区欧美国产| 福利一区二区三区四区| 日韩欧美在线观看| 中文字幕欧美人妻精品| 日韩一区二区三区电影| 懂色av蜜臀av粉嫩av分享吧| 亚洲精品国产拍免费91在线| 大片免费播放在线视频| 日韩在线观看成人| 啪啪免费视频一区| 欧美性受xxxx黑人猛交| 草莓视频成人appios| 成人在线一区二区| 国内精品偷拍| 婷婷久久青草热一区二区| 1024精品久久久久久久久| 国产精品va在线观看无码| 亚洲影视在线| 自拍偷拍一区二区三区四区| 国产成人精品三级| 瑟瑟视频在线观看| 亚洲天堂精品视频| 久久久久久久黄色片| 色婷婷av久久久久久久| 国产乱人乱偷精品视频a人人澡| 精品国产免费久久| 国产一二三区在线| 欧美国产第一页| 成人国产二区| 91大片在线观看| 国产成人3p视频免费观看| 97精品国产97久久久久久粉红| 99综合在线| 国产5g成人5g天天爽| 成人免费视频免费观看| 香蕉久久久久久久| 亚洲高清免费观看| 88av在线视频| 日韩精品在线视频美女| 成人国产免费电影| 日韩美女av在线免费观看| 国产精品**亚洲精品| 欧美精品免费观看二区| 欧美色一级片| 伊人影院综合在线| 91丨国产丨九色丨pron| 欧美日韩精品亚洲精品| 欧洲激情一区二区| 性感美女一级片| 成人444kkkk在线观看| 日本综合视频| 欧美成熟毛茸茸复古| 亚洲婷婷免费| 亚洲一区二区图片| 中文字幕在线播放不卡一区| 51国产偷自视频区视频| 亚洲第一免费播放区| 二区三区在线观看| 国产欧美va欧美va香蕉在| 亚洲自拍都市欧美小说| 亚洲国产精品成人天堂| 国产成人av电影免费在线观看| 国产又粗又长又硬| 欧美中文字幕一区二区三区| 视频二区在线| 91av视频在线| 久9re热视频这里只有精品| 9191国产视频| 国产一区二区在线观看视频| 综合 欧美 亚洲日本| 在线日韩av片| 国产私拍精品| 国产精品91在线| 免费成人av| 国模杨依粉嫩蝴蝶150p| 91伊人久久大香线蕉| 91香蕉在线视频| 亚洲黄色片网站| 毛片电影在线| 欧美高清性xxxxhd| 久久国产66| 高清国产在线观看| 欧美亚洲高清一区二区三区不卡| 美州a亚洲一视本频v色道| 日韩av成人在线观看| 国产成人精品免费视| 黄色一级大片在线观看| 久久精品视频一区| www毛片com| 在线视频亚洲欧美| 四虎影视国产精品| 激情五月五月婷婷| 国产成人激情av| 日韩免费观看一区二区| 日韩精品黄色网| 日韩免费电影| 亚洲免费视频一区| 国模少妇一区二区三区| 免费中文字幕在线观看| 亚洲国产欧美日韩精品| 精品3atv在线视频| 亚洲欧美日韩国产yyy| 国内成人精品2018免费看| 日本青青草视频| 日韩av中文字幕在线免费观看| 午夜精品成人av| 在线精品亚洲一区二区| 国产美女久久久久| 日韩成人一区二区三区| 亚洲日韩欧美视频| 亚洲欧洲二区| www.亚洲成人网| 久久久久久久国产精品影院| 91麻豆国产在线| 国内揄拍国内精品| 精品国产日韩欧美| 无码国产精品一区二区高潮| 精品成人乱色一区二区| a天堂中文在线| 动漫精品视频| 爽好久久久欧美精品| 国产精品丝袜一区二区| 亚洲激情国产精品| 欧美成人一二区| av免费观看大全| 国产精品免费av| 午夜成人免费影院| 成人黄色网免费| 99精品99| 欧美大片xxxx| 亚洲区在线播放| 亚洲天堂av资源在线观看| 蜜臀久久99精品久久久酒店新书 | 乱子伦一区二区| 国产午夜精品久久久久久久| 99精品人妻无码专区在线视频区| 欧美一级大胆视频| 中文字幕一区二区三区乱码图片| 久久精品一区二区免费播放 |