自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenHarmony啃論文成長(zhǎng)計(jì)劃---淺談序列化規(guī)范

系統(tǒng) OpenHarmony
序列化(Serialization)其實(shí)就是將要傳遞的數(shù)據(jù)以及數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化為位字符串(bit-string),而反序列化(Deserialization)就是將為位字符串重新轉(zhuǎn)換為原始數(shù)據(jù)以及相應(yīng)數(shù)據(jù)結(jié)構(gòu)。

??想了解更多內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??

??https://ost.51cto.com??

大家好! 我是來自深圳技術(shù)大學(xué)FSR實(shí)驗(yàn)室的同學(xué),標(biāo)題FFH就是FSRlab For Harmony!并且我也正在參加OpenHarmony成長(zhǎng)計(jì)劃從論文到開源提交研究,以后我們也會(huì)陸續(xù)在這個(gè)社區(qū)記錄學(xué)習(xí)心得和體會(huì)。

引言

在涉及到網(wǎng)絡(luò)遠(yuǎn)程通信的過程中,序列化傳遞的數(shù)據(jù)是不可避免的。

序列化(Serialization)其實(shí)就是將要傳遞的數(shù)據(jù)以及數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化為位字符串(bit-string),而反序列化(Deserialization)就是將為位字符串重新轉(zhuǎn)換為原始數(shù)據(jù)以及相應(yīng)數(shù)據(jù)結(jié)構(gòu)。

對(duì)于序列化其實(shí)有規(guī)范分類,一種是文本及二進(jìn)制序列化規(guī)范(Textual and Binary Serialization Specififications),還有一種是無模式及模式驅(qū)動(dòng)規(guī)范(Schema-less and Schema-driven Serialization Specififications),下面我們簡(jiǎn)單了解一下這兩個(gè)規(guī)范分類。

文本及二進(jìn)制序列化規(guī)范(Textual and Binary Serialization Specififications)

如果序列化規(guī)范產(chǎn)生的位字符串對(duì)應(yīng)于文本編碼中的字符序列,如對(duì)應(yīng)ASCII、EBCDIC/CCSID 037或UTF-8,則序列化規(guī)范稱為文本序列化規(guī)范(Textual Serialization Specififications),否則序列化規(guī)范稱為二進(jìn)制序列化規(guī)范(Binary Serialization Specififications)。

下圖是用這兩種規(guī)范分別序列化3.1415926535的例子:

文本序列化規(guī)范(Textual Serialization Specififications)

我們可以將文本序列化規(guī)范視為具備特定文本編碼(如UTF-8)規(guī)則內(nèi)的一組約定。用于操作該文本編碼格式的計(jì)算機(jī)工具可以方便的處理對(duì)應(yīng)序列化后的位字符串。

比如上圖用兩種規(guī)范序列化3.1415926535。

文本表示法將十進(jìn)制數(shù)字編碼為一個(gè) 96 bit長(zhǎng)的數(shù)字字符序列 ,我序列化后的位字符串可以使用對(duì)應(yīng)的文本編輯器(比如這里是UTF-8編碼格式的編輯器)輕松地檢查和處理,可讀性較高。

二進(jìn)制序列化規(guī)范(Binary Serialization Specififications)

還是上圖用二進(jìn)制規(guī)范序列化3.1415926535。

從圖中序列化后的位字符串來看, 二進(jìn)制序列化表示法根據(jù)其符號(hào)、指數(shù)和尾數(shù)對(duì)十進(jìn)制數(shù)進(jìn)行編碼。所得到的位字符串只有 32 bit長(zhǎng)。

差異及應(yīng)用

從序列化后的數(shù)據(jù)占用的空間來看——二進(jìn)制序列化規(guī)范比文本序列化規(guī)范表示法小三倍。然而, 我們無法使用通用的基于文本的工具來處理它,二進(jìn)制序列化規(guī)范需要一個(gè)比較詳細(xì)的協(xié)議來定義被序列化后的二進(jìn)制流的每個(gè)字節(jié)的含義是什么。因?yàn)檫@個(gè)規(guī)范處理的數(shù)據(jù)空間占用比較小,因此傳輸效率比較高,但是可讀性較低,一般用于需要數(shù)據(jù)傳輸效率非常高的場(chǎng)景。

JSON,XML以及 BSON,ProtocolBuffers是常用的序列化手段,前面兩個(gè)是基于文本序列化規(guī)范的,后面兩個(gè)是基于二進(jìn)制序列化規(guī)范的。但是,無論是文本格式還是二進(jìn)制格式,存儲(chǔ)的都是二進(jìn)制。

模式驅(qū)動(dòng)及無模式序列化規(guī)范(Schema-less and Schema-driven Serialization Specififications)

如果序列化規(guī)范生成的位字符串可以在事先不了解其原始數(shù)據(jù)及其數(shù)據(jù)結(jié)構(gòu)的情況下進(jìn)行反序列化,則稱這種規(guī)范是模式序列化規(guī)范的。否則,則稱為模式驅(qū)動(dòng)序列化規(guī)范。

下圖是兩種規(guī)范分別序列化兩個(gè)哈希映射的例子:

模式驅(qū)動(dòng)序列化規(guī)范(Schema-driven Serialization Specififications)

模式驅(qū)動(dòng)序列化規(guī)范Schema-driven Serialization Specififications)的特點(diǎn)就是在我們傳遞數(shù)據(jù)的時(shí)候,我們要事先約定傳遞的數(shù)據(jù)結(jié)構(gòu)信息,并且將結(jié)構(gòu)信息編碼到序列化生成的位字符串中。

比如上圖的例子是序列化兩個(gè)映射。

{   
"latitude":48858093,
"longitude":2294694
}

模式驅(qū)動(dòng)列化后位字符串的(底部)除了作為整數(shù)前綴的映射的長(zhǎng)度,省略了大多數(shù)自描述性信息。如果沒有提前約定相關(guān)的源數(shù)據(jù)結(jié)構(gòu)信息,接收者無法處理模式驅(qū)動(dòng)下的位字符串,也就是不知道如何轉(zhuǎn)換為原始數(shù)據(jù)結(jié)構(gòu)。

無模式序列化規(guī)范(Schema-less Serialization Specififications)

還是上圖的例子,無模式序列化規(guī)范(頂部)是自描述性的,原始數(shù)據(jù)結(jié)構(gòu)的信息和原始數(shù)據(jù)都用不同的屬性區(qū)別開來。所以數(shù)據(jù)接收者不需要提前約定,就可以對(duì)序列化后的位字符串進(jìn)行處理。

差異及應(yīng)用

從上面的介紹我們可以看到,模式驅(qū)動(dòng)序列化規(guī)范序列化后會(huì)產(chǎn)生的相對(duì)節(jié)省很多空間的位字符串。因此,網(wǎng)絡(luò)要求高效的系統(tǒng)傾向于采用模式驅(qū)動(dòng)的序列化規(guī)范。模式驅(qū)動(dòng)的序列化規(guī)范通常與空間效率有關(guān),因此往往是二進(jìn)制的。然而,也有人提出了一個(gè)基于文本JSON兼容的模式驅(qū)動(dòng)序列化規(guī)范。

上圖中表示的是用不同的序列化技術(shù),分別序列化相同數(shù)據(jù)后,對(duì)位字符串信息量大小進(jìn)行排序。(越往右信息量越小)。

我們可以根據(jù)上圖直觀地看到序列化后的位字符串包含的信息量,來比較無模式和模式驅(qū)動(dòng)的序列化規(guī)范。

最左邊的處理方法序列化后的位字符串的信息量是最大的,都是無模式序列化規(guī)范(Schema-less Serialization Specififications),比如BSON,Smile,FlexBuffers等,因?yàn)樽畲蟮乇A袅嗽紨?shù)據(jù)及其結(jié)構(gòu)的信息描述。最右邊的信息量是最小的,比如ASN.1,因?yàn)樗麄儼逊浅6嗟慕Y(jié)構(gòu)信息已經(jīng)在規(guī)范中提前約定,因此不需要寫入序列化后的位字符串中。

存在即是合理,這些模式都沒有最好最壞,每種模式都可以在特定的場(chǎng)景發(fā)揮對(duì)應(yīng)場(chǎng)景需要的作用。

??想了解更多內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??

??https://ost.51cto.com??

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2022-03-22 15:04:20

中間件分布式軟件鴻蒙

2022-03-28 15:17:12

JSONXMLHarmony

2022-03-31 16:13:27

Avro數(shù)據(jù)序列化系統(tǒng)Harmony

2022-02-16 16:28:22

RPC鴻蒙操作系統(tǒng)

2022-02-24 16:32:26

OpenHarmon壓縮編碼鴻蒙

2022-03-15 15:17:03

開源技術(shù)HarmonyMQTT協(xié)議

2022-03-28 15:28:42

分布式軟總線通訊Harmony

2022-03-30 14:43:00

Harmony分布式軟總線通訊

2022-08-05 19:55:20

學(xué)術(shù)科研鴻蒙

2012-04-13 10:45:59

XML

2022-02-10 14:57:46

OpenHarmon鴻蒙操作系統(tǒng)

2022-02-10 15:33:05

OpenHarmon應(yīng)用開發(fā)操作系統(tǒng)

2024-09-10 08:28:22

2022-08-06 08:41:18

序列化反序列化Hessian

2022-08-22 17:36:13

啃論文方法啃論文俱樂部

2022-04-20 20:37:58

鴻蒙操作系統(tǒng)

2011-06-01 15:05:02

序列化反序列化

2011-01-15 12:34:37

紅旗IVI

2016-08-18 10:34:40

云存儲(chǔ)

2009-08-24 17:14:08

C#序列化
點(diǎn)贊
收藏

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