新聞中心
本篇內(nèi)容介紹了“Java默認(rèn)提供的序列化有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
公司主營(yíng)業(yè)務(wù):成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出曲阜免費(fèi)做網(wǎng)站回饋大家。
序列化(編碼)是將對(duì)象序列化為二進(jìn)制形式(字節(jié)數(shù)組),主要用于網(wǎng)絡(luò)傳輸、數(shù)據(jù)持久化等;而反序列化(解碼)則是將從網(wǎng)絡(luò)、磁盤等讀取的字節(jié)數(shù)組還原成原始對(duì)象,主要用于網(wǎng)絡(luò)傳輸對(duì)象的解碼,以便完成遠(yuǎn)程調(diào)用。
影響序列化性能的關(guān)鍵因素:序列化后的碼流大?。ňW(wǎng)絡(luò)帶寬的占用)、序列化的性能(CPU資源占用);是否支持跨語(yǔ)言(異構(gòu)系統(tǒng)的對(duì)接和開發(fā)語(yǔ)言切換)。
Java默認(rèn)提供的序列化:無法跨語(yǔ)言、序列化后的碼流太大、序列化的性能差
XML,優(yōu)點(diǎn):人機(jī)可讀性好,可指定元素或特性的名稱。缺點(diǎn):序列化數(shù)據(jù)只包含數(shù)據(jù)本身以及類的結(jié)構(gòu),不包括類型標(biāo)識(shí)和程序集信息;只能序列化公共屬性和字段;不能序列化方法;文件龐大,文件格式復(fù)雜,傳輸占帶寬。適用場(chǎng)景:當(dāng)做配置文件存儲(chǔ)數(shù)據(jù),實(shí)時(shí)數(shù)據(jù)轉(zhuǎn)換。
JSON,是一種輕量級(jí)的數(shù)據(jù)交換格式,優(yōu)點(diǎn):兼容性高、數(shù)據(jù)格式比較簡(jiǎn)單,易于讀寫、序列化后數(shù)據(jù)較小,可擴(kuò)展性好,兼容性好、與XML相比,其協(xié)議比較簡(jiǎn)單,解析速度比較快。缺點(diǎn):數(shù)據(jù)的描述性比XML差、不適合性能要求為ms級(jí)別的情況、額外空間開銷比較大。適用場(chǎng)景(可替代XML):跨防火墻訪問、可調(diào)式性要求高、基于Web browser的Ajax請(qǐng)求、傳輸數(shù)據(jù)量相對(duì)小,實(shí)時(shí)性要求相對(duì)低(例如秒級(jí)別)的服務(wù)。
Fastjson,采用一種“假定有序快速匹配”的算法。優(yōu)點(diǎn):接口簡(jiǎn)單易用、目前java語(yǔ)言中最快的json庫(kù)。缺點(diǎn):過于注重快,而偏離了“標(biāo)準(zhǔn)”及功能性、代碼質(zhì)量不高,文檔不全。適用場(chǎng)景:協(xié)議交互、Web輸出、Android客戶端
Thrift,不僅是序列化協(xié)議,還是一個(gè)RPC框架。優(yōu)點(diǎn):序列化后的體積小, 速度快、支持多種語(yǔ)言和豐富的數(shù)據(jù)類型、對(duì)于數(shù)據(jù)字段的增刪具有較強(qiáng)的兼容性、支持二進(jìn)制壓縮編碼。缺點(diǎn):使用者較少、跨防火墻訪問時(shí),不安全、不具有可讀性,調(diào)試代碼時(shí)相對(duì)困難、不能與其他傳輸層協(xié)議共同使用(例如HTTP)、無法支持向持久層直接讀寫數(shù)據(jù),即不適合做數(shù)據(jù)持久化序列化協(xié)議。適用場(chǎng)景:分布式系統(tǒng)的RPC解決方案
Avro,Hadoop的一個(gè)子項(xiàng)目,解決了JSON的冗長(zhǎng)和沒有IDL的問題。優(yōu)點(diǎn):支持豐富的數(shù)據(jù)類型、簡(jiǎn)單的動(dòng)態(tài)語(yǔ)言結(jié)合功能、具有自我描述屬性、提高了數(shù)據(jù)解析速度、快速可壓縮的二進(jìn)制數(shù)據(jù)形式、可以實(shí)現(xiàn)遠(yuǎn)程過程調(diào)用RPC、支持跨編程語(yǔ)言實(shí)現(xiàn)。缺點(diǎn):對(duì)于習(xí)慣于靜態(tài)類型語(yǔ)言的用戶不直觀。適用場(chǎng)景:在Hadoop中做Hive、Pig和MapReduce的持久化數(shù)據(jù)格式。
Protobuf,將數(shù)據(jù)結(jié)構(gòu)以.proto文件進(jìn)行描述,通過代碼生成工具可以生成對(duì)應(yīng)數(shù)據(jù)結(jié)構(gòu)的POJO對(duì)象和Protobuf相關(guān)的方法和屬性。優(yōu)點(diǎn):序列化后碼流小,性能高、結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)格式(XML JSON等)、通過標(biāo)識(shí)字段的順序,可以實(shí)現(xiàn)協(xié)議的前向兼容、結(jié)構(gòu)化的文檔更容易管理和維護(hù)。缺點(diǎn):需要依賴于工具生成代碼、支持的語(yǔ)言相對(duì)較少,官方只支持Java 、C++ 、python。適用場(chǎng)景:對(duì)性能要求高的RPC調(diào)用、具有良好的跨防火墻的訪問屬性、適合應(yīng)用層對(duì)象的持久化
其它
protostuff 基于protobuf協(xié)議,但不需要配置proto文件,直接導(dǎo)包即可 Jboss marshaling 可以直接序列化java類, 無須實(shí)java.io.Serializable接口 Message pack 一個(gè)高效的二進(jìn)制序列化格式 Hessian 采用二進(jìn)制協(xié)議的輕量級(jí)remoting onhttp工具 kryo 基于protobuf協(xié)議,只支持java語(yǔ)言,需要注冊(cè)(Registration),然后序列化(Output),反序列化(Input)
“Java默認(rèn)提供的序列化有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
新聞標(biāo)題:Java默認(rèn)提供的序列化有哪些
標(biāo)題URL:http://www.dlmjj.cn/article/jposji.html