文章插圖

文章插圖
1:為什么要序列化
網絡傳輸的數據都必須是二進制數據,但是在Java中都是對象,是沒有辦法在網絡中進行傳輸的,所以就需要對Java對象進行序列化,而且這個要求這個轉換算法是可逆的,不然要是不可逆那鬼知道你傳過來的是個什么東西
2:Java原生序列化
只要讓類實現 Serializable 接口就行,序列化具體的實現是由ObjectOutputStream和ObjectInputStream來實現的
缺點:1:序列化碼流太大2:序列化效率低3:無法跨語言優點:1:簡單3:JSON序列化
JSON 可能是我們最熟悉的一種序列化格式了,JSON 是典型的 Key-Value 方式,沒有數據類型,是一種文本型序列化框架,JSON 的具體格式和特性,網上相關的資料非常多,這里就不再介紹了 。他在應用上還是很廣泛的,無論是前臺 Web 用 Ajax 調用、用磁盤存儲文本類型的數據,還是基于 HTTP 協議的 RPC 框架通信,都會選擇 JSON 格式 。
缺點:1:JSON進行序列化的額外空間開銷比較大,對于大數據量服務就意味著需要巨大的內存和磁盤開銷2:JSON沒有類型,但像Java這種強類型語言,需要通過反射統一解決,所以性能不會太好優點:1:簡潔明了3:Hessian
Hessian 是動態類型、二進制、緊湊的,并且可跨語言移植的一種序列化框架 。Hessian 協議要比 JDK、JSON 更加緊湊,性能上要比 JDK、JSON 序列化高效很多,而且生成的字節數也更小
Student student = new Student(); student.setNo(101);student.setName("HESSIAN"); //把student對象轉化為byte數組ByteArrayOutputStream bos = new ByteArrayOutputStream(); Hessian2Output output = new Hessian2Output(bos); output.writeObject(student); output.flushBuffer(); byte[] data = http://www.mnbkw.com/jxjc/167818/bos.toByteArray(); bos.close(); //把剛才序列化出來的byte數組轉化為student對象ByteArrayInputStream bis = new ByteArrayInputStream(data); Hessian2Input input = new Hessian2Input(bis); Student deStudent = (Student) input.readObject(); input.close(); System.out.println(deStudent);缺點:1:官方版本對Java里面一些常見對象的類型不支持,比如LinkedHashMap、LinkedHashSet 等,但是可以通過擴展CollectionDeserializer 類修復,Locale 類,可以通過擴展 ContextSerializerFactory 類修復;Byte/Short 反序列化的時候變成 Integer優點:1:相對于JDk,JSON,更加高效,生成的字節數更小2:有非常好的兼容性和穩定性4:ProtobufProtobuf 是 Google 公司內部的混合語言數據標準,是一種輕便、高效的結構化數據存儲格式,可以用于結構化數據序列化,支持 Java、Python、C++、Go 等語言 。Protobuf使用的時候需要定義 IDL(Interface description language),然后使用不同語言的 IDL編譯器,生成序列化工具類
缺點:1:為了提高性能,protobuf采用了二進制格式進行編碼 。這直接導致了可讀性差2:對于具有反射和動態語言來講,用起來比較費勁優點:1:高效2:支持多種語言3:支持向前,向后兼容5:Thrift
【序列化工具對比 序列化和反序列化工具】Thrift是Facebook于2007年開發的跨語言的rpc服框架,提供多語言的編譯功能,并提供多種服務器工作模式,用戶通過Thrift的IDL(接口定義語言)來描述接口函數及數據類型,然后通過Thrift的編譯環境生成各種語言類型的接口文件,用戶可以根據自己的需要采用不同的語言開發客戶端代碼和服務器端代碼 。
缺點:1:沒有官方文檔2:Thrift序列化二進制不可讀,調試困難3:buf fix 和更新不積極,維護成本過高4:RPC 在 0.6.1 升級到 0.7.0 是不兼容的優點:1:特性豐富2:性能不錯3:有很多開源項目的周邊支持 都是 thrift
有志者、事竟成,破釜沉舟,百二秦關終屬楚; 苦心人、天不負,臥薪嘗膽,三千越甲可吞吳. 加油吧,致每個正在奮斗路上的你!?。?br />
- 有什么好用的注冊表清理軟件 注冊表清理工具哪個好
- windows用什么激活工具 萬能激活工具怎么使用
- dx安裝教程 dx安裝工具
- 硬盤檢測工具怎么看 硬盤快速檢測工具
- 電腦顯卡測試工具 顯卡檢測器
- windows10激活工具哪個好用 window激活工具干什么用的
- 瀏覽器主頁修復工具 常見的修復工具有哪些
- 蘋果8配置參數表對比 蘋果8參數配置詳情性能
- python正則表達式應用舉例 正則表達式測試工具代碼
- 最好的關鍵詞排名優化軟件 網站快速排名工具
