欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Java序列化和hessian序列化的差異

 更新時間:2017年09月13日 08:41:58   投稿:mengwei  
這篇文章主要通過對二者簡單的實現(xiàn)方式的對比,介紹了Java序列化和hessian序列化的差異,具有一定參考價值,需要的朋友可以了解下。

        在遠程調用中,需要把參數(shù)和返回值通過網(wǎng)絡傳輸,這個使用就要用到序列化將對象轉變成字節(jié)流,從一端到另一端之后再反序列化回來變成對象。

        既然前面有一篇提到了hessian,這里就簡單講講Java序列化和hessian序列化的區(qū)別。

        首先,hessian序列化比Java序列化高效很多,而且生成的字節(jié)流也要短很多。但相對來說沒有Java序列化可靠,而且也不如Java序列化支持的全面。而之所以會出現(xiàn)這樣的區(qū)別,則要從它們的實現(xiàn)方式來看。

        先說Java序列化,具體工作原理就不說了,Java序列化會把要序列化的對象類的元數(shù)據(jù)和業(yè)務數(shù)據(jù)全部序列化從字節(jié)流,而且是把整個繼承關系上的東西全部序列化了。它序列化出來的字節(jié)流是對那個對象結構到內(nèi)容的完全描述,包含所有的信息,因此效率較低而且字節(jié)流比較大。但是由于確實是序列化了所有內(nèi)容,所以可以說什么都可以傳輸,因此也更可用和可靠。

        而hessian序列化,它的實現(xiàn)機制是著重于數(shù)據(jù),附帶簡單的類型信息的方法。就像Integer a = 1,hessian會序列化成I 1這樣的流,I表示int or Integer,1就是數(shù)據(jù)內(nèi)容。而對于復雜對象,通過Java的反射機制,hessian把對象所有的屬性當成一個Map來序列化,產(chǎn)生類似M className propertyName1 I 1 propertyName S stringValue(大概如此,確切的忘了)這樣的流,包含了基本的類型描述和數(shù)據(jù)內(nèi)容。而在序列化過程中,如果一個對象之前出現(xiàn)過,hessian會直接插入一個R index這樣的塊來表示一個引用位置,從而省去再次序列化和反序列化的時間。這樣做的代價就是hessian需要對不同的類型進行不同的處理(因此hessian直接偷懶不支持short),而且遇到某些特殊對象還要做特殊的處理(比如StackTraceElement)。而且同時因為并沒有深入到實現(xiàn)內(nèi)部去進行序列化,所以在某些場合會發(fā)生一定的不一致,比如通過Collections.synchronizedMap得到的map。

總結

        以上就是本文關于Java序列化和hessian序列化的差異的全部內(nèi)容,希望對大家有所幫助。

相關文章

  • Java常用類之比較器的使用詳解

    Java常用類之比較器的使用詳解

    這篇文章主要為大家詳細介紹了Java中比較器的相關資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2022-11-11
  • 解決mybatis-plus新增數(shù)據(jù)自增ID變無序問題

    解決mybatis-plus新增數(shù)據(jù)自增ID變無序問題

    這篇文章主要介紹了解決mybatis-plus新增數(shù)據(jù)自增ID變無序問題,具有很好的參考價值,希望對大家有所幫助。
    2023-07-07
  • Java中的static關鍵字你了解多少

    Java中的static關鍵字你了解多少

    這篇文章主要為大家詳細介紹了Java中的static關鍵字,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Java中BeanUtils.copyProperties()詳解及應用場景

    Java中BeanUtils.copyProperties()詳解及應用場景

    BeanUtils.copyProperties()是Apache?Commons?BeanUtils提供的方法,用于Java對象間屬性的復制,特別適用于DTO、VO和Entity之間的數(shù)據(jù)傳遞,這篇文章主要介紹了Java中BeanUtils.copyProperties()詳解及應用場景的相關資料,需要的朋友可以參考下
    2024-09-09
  • Spring核心容器之Bean創(chuàng)建過程詳解

    Spring核心容器之Bean創(chuàng)建過程詳解

    這篇文章主要介紹了Spring核心容器之Bean創(chuàng)建過程詳解,獲取?Bean?的方法是?getBean,其來自?BeanFactory?繼承的AbstractAutowireCapableBeanFactory?抽象類繼承的AbstractBeanFactory?抽象類中,需要的朋友可以參考下
    2023-11-11
  • 基于springboot和redis實現(xiàn)單點登錄

    基于springboot和redis實現(xiàn)單點登錄

    這篇文章主要為大家詳細介紹了基于springboot和redis實現(xiàn)單點登錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • java獲得平臺相關的行分隔符和java路徑分隔符的方法

    java獲得平臺相關的行分隔符和java路徑分隔符的方法

    不同系統(tǒng)平臺下的行分隔符、路徑分隔符等常常不同,如何在Java程序獲取當前平臺的分隔符,以及其他系統(tǒng)相關的狀態(tài)呢?下面是示例程序,需要的朋友可以參考下
    2014-02-02
  • Java反射的兩種使用方法(推薦)

    Java反射的兩種使用方法(推薦)

    這篇文章主要介紹了Java反射的兩種使用方法,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-05-05
  • java基礎二叉搜索樹圖文詳解

    java基礎二叉搜索樹圖文詳解

    二叉樹是一種非常重要的數(shù)據(jù)結構,它同時具有數(shù)組和鏈表各自的特點,下面這篇文章主要給大家介紹了關于java基礎二叉搜索樹的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • Java字符串無意識的遞歸過程解析

    Java字符串無意識的遞歸過程解析

    這篇文章主要介紹了Java字符串無意識的遞歸過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09

最新評論