我們把物件(變數)從記憶體中變成可儲存或傳輸的過程稱之為序列化,在python中叫pickling,在其他語言中也被稱之為serialization,marshalling,flattening等等,都是乙個意思。
1:持久儲存狀態
需知乙個軟體/程式的執行就在處理一系列狀態的變化,在程式語言中,'狀態』會以各種各樣有結構的資料型別(也可簡單的理解為變數)的形式被儲存在記憶體中。
記憶體是無法永久儲存資料的,當程式執行了一段時間,我們斷電或者重啟程式,記憶體中關於這個程式的之前一段時間的資料(有結構)都被清空了。
在斷電或重啟程式之前將程式當前記憶體中所有的資料都儲存下來(儲存到檔案中),以便於下次程式執行能夠從檔案中載入之前的資料,然後繼續執行,這就是序列化。
具體的來說,你玩使命召喚闖到了第13關,你儲存遊戲狀態,關機走人,下次再玩,還能從上次的位置開始繼續闖關。或如,虛擬機器狀態的掛起等。
2:跨平台資料互動
序列化之後,不僅可以把序列化後的內容寫入磁碟,還可以通過網路傳輸到別的機器上,如果收發的雙方約定好實用一種序列化的格式,那麼便打破了平台/語言差異化帶來的限制,實現了跨平台資料互動。
反過來,把變數內容從序列化的物件重新讀到記憶體裡稱之為反序列化,即unpickling。
C 初學者教程系列23 序列化和反序列化
本文環境為visual studio 2019。每當必須將與物件有關的資料從乙個應用程式傳送到另乙個應用程式時,就會使用序列化和反序列化。序列化用於將應用程式資料匯出到檔案中。然後,目標應用程式使用反序列化從應用程式中提取資料以供進一步使用。序列化是將c 類物件寫入或序列化到檔案的概念。假設您有乙個...
Java基礎系列(5) 序列化
序列化可以將任意物件寫出到流中,並在之後將其讀回。可以使用序列化將物件持久化到磁碟,等到使用時再讀出來,可以節省記憶體。可以通過網路傳遞物件。想要乙個類生成的物件可以被序列化,必須實現serializable介面 public class book implements serializable p...
2021 1 10 序列化模組(python)
json序列化 json.dumps 和json.loads import json dic print 原始資料 dic respose json.dumps dic print json序列化資料 respose respose bytes respose.encode print bytes化...