什么是序列化 為什么要序列化?
為什么要序列化?當(dāng)兩個(gè)進(jìn)程遠(yuǎn)程通信時(shí),它們可以互相發(fā)送各種類型的數(shù)據(jù)。無論是哪種類型的數(shù)據(jù),都將以二進(jìn)制序列的形式在網(wǎng)絡(luò)上傳輸。發(fā)送方需要將對(duì)象轉(zhuǎn)換為字節(jié)序列,然后才能在網(wǎng)絡(luò)上傳輸;接收方需要將字節(jié)序
為什么要序列化?
當(dāng)兩個(gè)進(jìn)程遠(yuǎn)程通信時(shí),它們可以互相發(fā)送各種類型的數(shù)據(jù)。無論是哪種類型的數(shù)據(jù),都將以二進(jìn)制序列的形式在網(wǎng)絡(luò)上傳輸。發(fā)送方需要將對(duì)象轉(zhuǎn)換為字節(jié)序列,然后才能在網(wǎng)絡(luò)上傳輸;接收方需要將字節(jié)序列恢復(fù)為對(duì)象。將對(duì)象轉(zhuǎn)換為字節(jié)序列的過程稱為對(duì)象序列化。將字節(jié)序列恢復(fù)到對(duì)象的過程稱為對(duì)象反序列化。更直接地說,序列化的目的是跨進(jìn)程傳輸格式化數(shù)據(jù)
序列化是以某種方式顯示信息。其實(shí)質(zhì)是信息交換的需要。想象一下,一個(gè)思想家的觀點(diǎn)就在他的腦海里。如果你想和他交流信息或了解他的想法,你應(yīng)該怎么做?最能想象的想法是讓他寫一本書(連載)。然后,你去書店看這本書,打開它閱讀,了解他的想法(反序列化)。這構(gòu)成了一個(gè)單向的信息交互過程。序列化過程中的介質(zhì)是“book”]~。序列化可以將內(nèi)存中的類寫入文件或數(shù)據(jù)庫。例如,如果序列化一個(gè)類并將其另存為文件,則下次讀取時(shí),只需反序列化文件中的數(shù)據(jù)即可將原始類還原到內(nèi)存中。您還可以序列化類以流式傳輸數(shù)據(jù)。一般來說,它是將一個(gè)實(shí)例化的類轉(zhuǎn)換成一個(gè)文件來存儲(chǔ)。下次需要實(shí)例化一個(gè)類時(shí),只需反序列化將該類實(shí)例化到內(nèi)存中,并在序列化時(shí)保留該類中的所有變量和狀態(tài)。例如:Hibernate中實(shí)體類的鈍化就是將類序列化后保存到磁盤上,釋放內(nèi)存空間。
為什么要序列化?
序列化實(shí)際上很容易理解。如果你現(xiàn)在正在做一個(gè)項(xiàng)目,項(xiàng)目被分成不同的小組,而其他小組成員不在同一個(gè)城市,你怎么把你寫的那些課程交給其他小組成員呢?此時(shí),我們需要使用序列化。簡單地說:序列化就是將內(nèi)存中的類或?qū)ο螅帉懙念惗即鎯?chǔ)在內(nèi)存中)更改為可以存儲(chǔ)在存儲(chǔ)介質(zhì)中的流。將類序列化為流后,可以通過Internet將其傳輸給其他人。您還可以將其他人的序列化流反序列化為內(nèi)存中的對(duì)象。就是這樣
對(duì)象序列化可以實(shí)現(xiàn)分布式對(duì)象。例如,主要應(yīng)用程序RMI使用對(duì)象序列化在遠(yuǎn)程主機(jī)上運(yùn)行服務(wù),就像在本地主機(jī)上運(yùn)行對(duì)象一樣。Rjava對(duì)象序列化不僅保存對(duì)象的數(shù)據(jù),而且遞歸地保存對(duì)象引用的每個(gè)對(duì)象的數(shù)據(jù)。整個(gè)對(duì)象層次結(jié)構(gòu)可以寫入字節(jié)流、保存在文件中或通過網(wǎng)絡(luò)連接傳遞。對(duì)象序列化可用于“深度復(fù)制”對(duì)象本身和引用對(duì)象本身。序列化一個(gè)對(duì)象可以產(chǎn)生一個(gè)完整的對(duì)象序列。Rjava序列化相對(duì)簡單,通常不需要編寫自定義代碼來保存和恢復(fù)對(duì)象狀態(tài)。實(shí)現(xiàn)java.io.Serializable可序列化接口的類對(duì)象可以轉(zhuǎn)換為字節(jié)流或從字節(jié)流中恢復(fù),而無需向類中添加任何代碼。只有在極少數(shù)情況下,才需要自定義代碼來保存或恢復(fù)對(duì)象狀態(tài)。注意:不是每個(gè)類都可以序列化。某些類無法序列化。例如,涉及線程的類與特定JVM的關(guān)系非常復(fù)雜。
什么是序列化,為什么要序列化?
序列化是一種用于處理對(duì)象流的機(jī)制,即流化對(duì)象的內(nèi)容。它可以讀寫流對(duì)象,也可以在網(wǎng)絡(luò)間傳輸流對(duì)象。序列化是為了解決對(duì)象流上的讀寫操作所引起的問題。
可序列化實(shí)現(xiàn):為要序列化的類實(shí)現(xiàn)可序列化接口,該類沒有要實(shí)現(xiàn)的方法。Implementsserializable只是標(biāo)記對(duì)象是可序列化的。然后,使用輸出流(如fileoutputstream)構(gòu)造objectoutputstream對(duì)象,然后使用objectoutputstream對(duì)象的writeob。object(objectobj)方法可以寫出參數(shù)為obj的對(duì)象(即保存其狀態(tài)),并使用輸入流還原它。<br/><br/>