serialization机制
生活随笔
收集整理的這篇文章主要介紹了
serialization机制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 首先說明一下序列化的知識:?
java中的序列化(serialization)機制能夠將一個實例對象的狀態信息寫入到一個字節流中,使其可以通過socket進行傳輸、或者持久化存儲到數據庫或文件系統中;然后在需要的時候,可以根據字節流中的信息來重構一個相同的對象。序列化機制在java中有著廣泛的應用,EJB、RMI等技術都是以此為基礎的。?
序列化機制是通過java.io.ObjectOutputStream類和java.io.ObjectInputStream類來實現的。在序列化(serialize)一個對象的時候,會先實例化一個ObjectOutputStream對象,然后調用其writeObject()方法;在反序列化(deserialize)的時候,則會實例化一個ObjectInputStream對象,然后調用其readObject()方法。?
上面您的錯誤,就是在于有一個或者幾個沒有"序列化"的數據,導致沒有辦法創建輸出流,導致發生的java.io.NotSerializableException。?
之所以要序列化,我猜測是因為您的數據里面存在一個對象型的數據,但是該對象沒有實現序列化。比如:您有一個字段為address,這個字段您是通過一個類Address來描述的,Address里面可能有province、city、street等等屬性或者一些setter 和getter,如果這個類,沒有實現序列化,往往會出現這個問題。?
畢竟沒有看到程序,是我的一個猜測,請檢查一下程序或者發出來進行進一步討論。08-11-03?|?添加評論?|?打賞
- 0
bmd911
?
為了安全啊08-11-03?|?添加評論?|?打賞
- 0
firefiendd
?
將對象的狀態信息轉換為可以存儲或傳輸的窗體的過程。在序列化期間,對象將其當前狀態寫入到臨時或持久性存儲區。以后,可以通過從存儲區中讀取或反序列化對象的狀態,重新創建該對象。
序列化使其他代碼可以查看或修改那些不序列化便無法訪問的對象實例數據。確切地說,代碼執行序列化需要特殊的權限:即指定了 SerializationFormatter 標志的 SecurityPermission。在默認策略下,通過 Internet 下載的代碼或 Intranet 代碼不會授予該權限;只有本地計算機上的代碼才被授予該權限。
通常,對象實例的所有字段都會被序列化,這意味著數據會被表示為實例的序列化數據。這樣,能夠解釋該格式的代碼有可能能夠確定這些數據的值,而不依賴于該成員的可訪問性。類似地,反序列化從序列化的表示形式中提取數據,并直接設置對象狀態,這也與可訪問性規則無關。
對于任何可能包含重要的安全性數據的對象,如果可能,應該使該對象不可序列化。如果它必須為可序列化的,請嘗試生成特定字段來保存不可序列化的重要數據。如果無法實現這一點,則應注意該數據會被公開給任何擁有序列化權限的代碼,并確保不讓任何惡意代碼獲得該權限。
序列化
序列化是將對象狀態轉換為可保持或傳輸的格式的過程。與序列化相對的是反序列化,它將流轉換為對象。這兩個過程結合起來,可以輕松地存儲和傳輸數據。
序列化的目的:
1、以某種存儲形式使自定義對象持久化;
2、將對象從一個地方傳遞到另一個地方。
.NET Framework 提供兩種序列化技術:
* 二進制序列化保持類型保真度,這對于在應用程序的不同調用之間保留對象的狀態很有用。例如,通過將對象序列化到剪貼板,可在不同的應用程序之間共享對象。您可以將對象序列化到流、磁盤、內存和網絡等等。遠程處理使用序列化“通過值”在計算機或應用程序域之間傳遞對象。
* XML 序列化僅序列化公共屬性和字段,且不保持類型保真度。當您要提供或使用數據而不限制使用該數據的應用程序時,這一點是很有用的。由于 XML 是一個開放式標準,因此,對于通過 Web 共享數據而言,這是一個很好的選擇。SOAP 同樣是一個開放式標準,這使它也成為一個頗具吸引力的選擇。09-09-23?|?添加評論?|?打賞
- 首先說明一下序列化的知識:?
總結
以上是生活随笔為你收集整理的serialization机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++实现单链表
- 下一篇: [c语言]运算符的优先级与结合性