序列化之陷阱

2021-09-30 07:48:56 字數 447 閱讀 3261

序列化方法為資料的持久化儲存提供了非常方便的解決方法,但是如果你不小心,就會陷入其中的陷阱。下面將我的經驗記下。一次我在寫電網拓撲程式中,電網物件的成員有節點集和連線集,兩個集合中都是用列表來儲存,在節點列表中,每個節點物件有乙個連線列表的成員,記錄了與該節點連線的連線,每條線中有乙個兩個節點元素的列表,記錄了該連線的兩個節點。這樣就建立了電網的邏輯拓撲關係。但是當我在儲存電網資料時,將線和節點兩個列表分開序列化儲存,當我再一次調入兩個列表的資料,把他們放進乙個電網中時,電網裝置都可以正常顯示,但是奇怪的是拓撲關係卻沒有了,追綜檢查,節點的連線在,連線的兩個節點也在,可是就是連線不上。思考了許久,終於明白了其中的緣由。

其實序列化就是相當於物件的複製,包括隱含的物件。而記憶體中建立的拓撲就不存在了。

那沒當然,直接將電網物件整體序列化,問題迎刃而解。經驗之:一般物件不要將成員分開序列化,特別是成員之間互相聯絡時,你中有我,我中有你時特別如此。

序列化(序列化)

原書上翻譯為序列化,msdn翻譯為序列化 作用 當需要儲存,或者網路傳輸 remoting時,資料 物件或值 需要序列化 類似於打包傳輸檔案。system.serializableattribute 序列化是指儲存和獲取磁碟檔案 記憶體或其他地方中的物件。在序列化時,所有的例項資料都儲存到儲存介質上...

MapReducer糾錯之序列化反序列化問題

在mapreducer程式設計中經常會出現序列化反序列化的說法 在這裡解釋一下 序列化 序列化的意思就是把記憶體中的物件變成位元組儲存到磁碟上 反序列化 反序列化的意思就是把磁碟上的物件活化到記憶體中 說到這裡也許還是沒有說清楚序列化的意思,在大資料中,假設有乙個非常大的集群,也就是很多計算機,這一...

Py t hon之csv,ini 序列化,反序列化

1.csv檔案簡介 csv是乙個被行分隔符,列分隔符劃分成行和列的文字 csv不指定字元編碼 行分隔符為 r n,最後一行可以沒有換行符 列分隔符常為逗號和製表符 每一行稱之為record from pathlib import path p path test.csv csv body id,na...