[發明專利]一種減少對象序列化占用存儲空間的方法及系統有效
| 申請號: | 201810737784.4 | 申請日: | 2018-07-06 |
| 公開(公告)號: | CN109189505B | 公開(公告)日: | 2021-11-09 |
| 發明(設計)人: | 黃浩 | 申請(專利權)人: | 武漢斗魚網絡科技有限公司 |
| 主分類號: | G06F9/448 | 分類號: | G06F9/448 |
| 代理公司: | 武漢智權專利代理事務所(特殊普通合伙) 42225 | 代理人: | 張凱 |
| 地址: | 430000 湖北省武漢市東湖開*** | 國省代碼: | 湖北;42 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 減少 對象 序列 占用 存儲空間 方法 系統 | ||
本發明公開了一種減少對象序列化占用存儲空間的方法及系統,涉及軟件開發技術領域,所述方法包括步驟:定義一個Pickle對象,所述Pickle對象用于以字節流格式保存待序列化對象的內容;將待序列化對象的內容寫入到所述Pickle對象中;根據所述Pickle對象的內存地址指針和占用內存的大小,創建本地硬盤文件,并將所述Pickle對象的內容寫入到本地硬盤中。本發明提供的減少對象序列化占用存儲空間的方法,通過使用Pickle對象進行對象序列化,從而減少序列化對象所占用的內存大小,進而提高文件的寫入速度,并減少存儲該文件所需的硬盤空間大小。
技術領域
本發明涉及軟件開發技術領域,具體涉及一種減少對象序列化占用存儲空間的方法及系統。
背景技術
通常,對象序列化是指將對象的狀態信息轉換為可以存儲的形式的過程;在序列化期間,對象將其當前狀態寫入到內存或本地硬盤中;在需要時,可以通過從內存或本地硬盤中讀取或反序列化對象的狀態,并重新創建該對象。
現有技術中,普通序列化的方法過程為:調用memcpy函數,把對象拷貝到一個內存當中,然后再把這個內存數據通過寫文件的方式,存儲在硬盤當中,且該序列化過程中存儲文件格式為json文件格式或xml文件格式。
一方面,由于json文件格式或xml文件格式屬于文本流格式,在存儲時包含有一定的規則,導致文件存儲的內容要比實際的內容大很多,進而使得在寫入文件時速度變慢,且占用更多的硬盤空間。
另一方面,在有些情況下,雖然該對象的總內存較大,但是該總內存中有些字節并未存儲有內容,該對象實際使用到的內存較小。當直接調用memcpy函數對該對象進行序列化時,由于是直接將該對象拷貝到內存當中,然后再寫入到硬盤中,這一過程,將會造成內存浪費,無存儲內容的內存數據也會被序列化到硬盤中,導致寫入到硬盤中的文件變大,使得寫入該文件的速度變慢,并導致占用的硬盤空間較大,用戶體驗較差。
發明內容
針對現有技術中存在的缺陷,本發明的目的在于提供一種減少對象序列化占用存儲空間的方法,通過使用Pickle對象進行對象序列化,從而減少序列化對象所占用的內存大小,進而提高文件的寫入速度,并減少存儲該文件所需的硬盤空間大小。
為達到以上目的,本發明采取的技術方案是:
一種減少對象序列化占用存儲空間的方法,包括步驟:
定義一個Pickle對象,所述Pickle對象用于以字節流格式保存待序列化對象的內容;
將待序列化對象的內容寫入到所述Pickle對象中;
根據所述Pickle對象的內存地址指針和占用內存的大小,創建本地硬盤文件,并將所述Pickle對象的內容寫入到本地硬盤中。
在上述技術方案的基礎上,所述待序列化對象包括若干字段,所述將待序列化對象的內容寫入到所述Pickle對象中的具體步驟包括:
A1:定義一個偏移變量,所述偏移變量用于保存寫入待序列化對象的內存偏移量,并對所述偏移變量進行初始化;
A2:調用strlen函數獲取第一個字段的內存大小;
A3:調用WriteData函數寫入第一個字段的內容,并將所述偏移變量的值增加所述第一個字段的內存大??;
A4:重復步驟A2~A3,寫入下一個字段的內容,并將所述偏移變量的值增加所述下一個字段的內存大小,直至寫入所述待序列化對象中的所有字段。
在上述技術方案的基礎上,所述步驟A2和A3之間還包括步驟:
調用WriteInt函數在所述Pickle對象的內存頭部寫入獲取到的第一個字段的內存大小,并將所述偏移變量的值增加所述第一個字段的內存大小所占用的內存。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于武漢斗魚網絡科技有限公司,未經武漢斗魚網絡科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810737784.4/2.html,轉載請聲明來源鉆瓜專利網。





