黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

2016Java面試題精編版—序列化


面試題:如何實現Java的序列化?

Java培訓

答案:序列化一個對象還是比較簡單的,只要讓它實現serializable接口就行了。但是,當余元引入序列化概念之后,它的很多標準類庫的類,包括primitivewrapper類、所有的容器類,以及別的很多類,都會相應的發生改變,甚至連class對象都會被序列化。

要想序列化對象,必須先創建一個outputstream,然后把它嵌進objectoutputstream。這時就能用writeobject()方法把對象寫入outputstream,。讀的時候需要把inputstream嵌到objectinputstream中,然后在調用readobject()方法。不過這樣讀出來的只是一個objectreference,因此,在用之前,還得線下傳。對象序列化不僅能保存對象的副本,而且還會跟著對象中reference把它所引用的對象也保存起來,然后再繼續跟蹤那些對象的reference,以此類推。這種情形常被稱為“單個對象所連接的‘對象網’”。這個機制所涵蓋的范圍不僅包括對象的成員數據,而且還包含數組里面的reference。如果要自己實現對象序列化,那么編寫跟蹤這些鏈接的程序將會是一件非常痛苦的任務。但是,Java的對象序列化就能準確無誤地做到這一點,毫無疑問,它的遍歷算法是做過優化的。

 

知識拓展:Java的“對象序列化”能將一個是想了serializable接口的對象轉換成一組byte,這樣日后要用這個對象的時候,就能把這些byte數據恢復出來,并據此重新構建那個對象。這一點甚至在擴網絡的環境下也是如此,這就意味著序列化機制能自動補償操作系統方面的差異。也就是說,可以在Windows創建一個對象,序列化之后,在他通過網絡傳到Unix上,然后在哪里進行重建。不用擔心在不同的平臺上數據是怎樣表示的,以及byte順序怎樣,或者別的什么細節。

對象序列化能實現“輕量級的persistence”。所謂的persistence,是指對象的生命周期不是由程序是否運行決定的,在程序的兩次調用之間對象仍然還活著。通過“將做過序列化處理的對象寫入磁盤,等到程序再次運行的時候再把它讀出來”,可以達到persistence的效果。之所以說“輕量級”,是以內不能用想“persistent”這樣的關鍵詞來直接定義一個對象,然后讓系統去處理所有的細節。相反,必須明確的進行序列化和解序列化。

之所以要在語言里加入對象序列化,是因為要用它來實現兩個重要的功能。Java的遠程方法調用能像調用自己機器上的對象那樣去調用其他機器上的對象。當向遠程對象傳遞消息的時候,就需要通過對象序列化來傳送參數和返回值。對Java Bean來說,對象序列化也是必不可少的。Bean的狀態信息通常實在設計時配置的,這些狀態信息必須保存起來,供程序啟動的時候用,對象序列化就負責這個工作。

更多Java知識Java視頻Java教程盡在動力節點Java培訓,關注動力節點官方微信,獲得一手Java面試題

 

上一篇:2016Java面試題精編版—內存管理
下一篇:2016Java面試題精編版—構造函數和析構函數

開班信息

主站蜘蛛池模板: 日韩一区国产一级 | 成人a在线 | 久久久免费观成人影院 | 九九99九九在线精品视频 | h成年日本漫画网站免费 | 波多野结衣中文字 | 97公开免费视频 | 欧美一级特黄啪啪片免费看 | a级毛片免费完整视频 | 九九精品视频免费 | 小明免费看视频 | 欧美成人免费在线视频 | 免费看黄色片视频 | 亚洲日本久久一区二区va | 色老头成人免费视频天天综合 | 九九视频免费精品视频免费 | 日韩精品成人a在线观看 | 国产三级风情寡妇 | 欧美成人性视频在线黑白配 | 午夜色图 | 亚洲国产日韩a在线播放 | 成人免费视屏 | 亚洲日韩中文第一精品 | 色婷婷精品综合久久狠狠 | 亚洲午夜在线播放 | 十八成人网 | 成人午夜视频免费观看 | www.黄在线 | 国产欧美亚洲三区久在线观看 | 成人午夜影院在线观看 | 欧美精品亚洲人成在线观看 | 欧美视频在线不卡 | 欧美一区二区三区不卡 | 666夜色666夜色国产免费看 | 午夜影院色 | 欧洲一区 | 永久网站色视频在线观看免费 | 欧美日韩天堂 | 黄色视屏免费观看 | 日韩在线视频不卡 | 夜夜操夜夜骑 |