欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種數(shù)據(jù)處理方法及裝置的制作方法

文檔序號:6429295閱讀:169來源:國知局
專利名稱:一種數(shù)據(jù)處理方法及裝置的制作方法
技術領域
本發(fā)明涉及數(shù)據(jù)處理技術領域,尤其涉及一種數(shù)據(jù)處理方法及裝置。
背景技術
軟件開發(fā)過程中,常常需要對文件的數(shù)據(jù)進行處理?,F(xiàn)有的數(shù)據(jù)處理方案主要為 在軟件程序運行時,將程序運行所需的所有數(shù)據(jù)(整個文件的數(shù)據(jù))全部加載至內存中,運行程序處理已加載的數(shù)據(jù)。由于需要處理的許多文件的數(shù)據(jù)量較大,比如流文件,將整個文件的所有數(shù)據(jù)全部加載至內存中進行處理,必定會占據(jù)大量的內存空間,可能導致數(shù)據(jù)的丟失,從而影響程序的運行。

發(fā)明內容
本發(fā)明實施例所要解決的技術問題在于,提供一種數(shù)據(jù)處理方法及裝置,可在程序運行時,根據(jù)預設的內存使用參數(shù)對數(shù)據(jù)進行讀取、加載和處理,減少內存的負荷,保證數(shù)據(jù)的完整性,保證程序運行的可靠性。為了解決上述技術問題,本發(fā)明實施例提供了一種數(shù)據(jù)處理方法,包括
程序運行時,根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中查找所述程序運行所需的數(shù)據(jù)并加載至內存;
運行所述程序,處理已加載的所述數(shù)據(jù)。其中,根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中查找所述程序運行所需的數(shù)據(jù)并加載至內存之前,還包括
將程序運行所需的各種數(shù)據(jù)存儲至預置的磁盤空間中,并建立索引表; 所述索引表包括所述預置的磁盤空間內存儲的各個數(shù)據(jù)的偏移量、大小、校驗值和引用計數(shù);其中,各個數(shù)據(jù)的偏移量表示各個數(shù)據(jù)在所述預置的磁盤空間內的存儲位置。其中,所述將程序運行所需的各種數(shù)據(jù)存儲至預置的磁盤空間中,并建立索引表, 包括
預先設置用于存儲程序運行所需的各種數(shù)據(jù)的磁盤空間,并建立索引表;
當所述預置的磁盤空間有數(shù)據(jù)寫入時,計算所述數(shù)據(jù)的校驗值;
判斷所述索引表中是否包含計算得到的所述檢驗值;
若判斷結果為是,更新所述索引表中的所述檢驗值對應的數(shù)據(jù)的引用計數(shù);
若判斷結果為否,將所述數(shù)據(jù)存儲至所述預置的磁盤空間中,并更新所述索引表。其中,所述程序運行時,根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中查找所述程序運行所需的數(shù)據(jù)并加載至內存,包括
程序運行時,計算所述程序運行所需的數(shù)據(jù)的校驗值; 查找所述索引表中是否包含計算得到的所述檢驗值;
若查找結果為是,從所述索引表中讀取所述校驗值對應的數(shù)據(jù)的大小,比較所述數(shù)據(jù)的大小和所述預設的內存使用參數(shù);若所述數(shù)據(jù)的大小大于所述預設的內存使用參數(shù),按照所述預設的內存使用參數(shù)分段從所述預置的磁盤空間中讀取所述數(shù)據(jù)加載至內存中;
若所述數(shù)據(jù)的大小小于等于所述預設的內存使用參數(shù),從所述預置的磁盤空間中讀取所述數(shù)據(jù)并加載至內存;
若查找結果為否,將所述程序運行所需的數(shù)據(jù)存儲至所述預置的磁盤空間中,并更新所述索引表。其中,所述方法還包括
當所述預置的磁盤空間中的數(shù)據(jù)發(fā)生變化時,更新所述索引表,并記錄每次數(shù)據(jù)變化對應的所述索引表的更新信息;
根據(jù)記錄的每次數(shù)據(jù)變化對應的所述索引表的更新信息,對引起所述數(shù)據(jù)變化的操作進行撤銷恢復。相應地,本發(fā)明實施例還提供了一種數(shù)據(jù)處理裝置,包括
查找模塊,用于當程序運行時,根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中查找所述程序運行所需的數(shù)據(jù);
加載模塊,用于將所述查找模塊查找到的所述數(shù)據(jù)加載至內存; 處理模塊,用于運行所述程序,處理所述加載模塊已加載的所述數(shù)據(jù)。其中,所述裝置還包括
初始化模塊,用于將程序運行所需的各種數(shù)據(jù)存儲至預置的磁盤空間中,并建立索引
表;
所述索引表包括所述預置的磁盤空間內存儲的各個數(shù)據(jù)的偏移量、大小、校驗值和引用計數(shù);其中,各個數(shù)據(jù)的偏移量表示各個數(shù)據(jù)在所述預置的磁盤空間內的存儲位置。其中,所述初始化模塊包括
預置單元,用于預先設置用于存儲程序運行所需的各種數(shù)據(jù)的磁盤空間,并建立索引
表;
計算單元,用于當所述預置單元預置的磁盤空間有數(shù)據(jù)寫入時,計算所述數(shù)據(jù)的校驗
值;
判斷單元,用于判斷所述預置單元建立的索引表中是否包含所述計算單元計算得到的所述檢驗值;
執(zhí)行單元,用于當所述判斷單元判斷結果為是時,更新所述索引表中所述檢驗值對應的數(shù)據(jù)的引用計數(shù);當所述判斷單元判斷結果為否時,將所述數(shù)據(jù)存儲至所述預置的磁盤空間中,并更新所述索引表。其中,所述查找模塊包括
計算單元,用于當程序運行時,計算所述程序運行所需的數(shù)據(jù)的校驗值; 查找單元,用于查找所述索引表中是否包含所述計算單元計算得到的所述檢驗值; 比較單元,用于當所述查找單元查找結果為是時,從所述索引表中讀取所述校驗值對應的數(shù)據(jù)的大小,比較所述數(shù)據(jù)的大小和所述預設的內存使用參數(shù);
讀取單元,用于當所述比較單元比較得到所述數(shù)據(jù)的大小大于所述預設的內存使用參數(shù)時,按照所述預設的內存使用參數(shù)分段從所述預置的磁盤空間中讀取所述數(shù)據(jù);當所述比較單元比較得到所述數(shù)據(jù)的大小小于等于所述預設的內存使用參數(shù)時,從所述預置的磁
5盤空間中讀取所述數(shù)據(jù);
存儲更新單元,用于當所述查找單元查找結果為否時,將所述程序運行所需的數(shù)據(jù)存儲至所述預置的磁盤空間中,并更新所述索引表。其中,所述裝置還包括
記錄模塊,用于當所述預置的磁盤空間中的數(shù)據(jù)發(fā)生變化時,更新所述索引表,并記錄每次數(shù)據(jù)變化對應的所述索引表的更新信息;
撤銷恢復模塊,用于根據(jù)所述記錄模塊記錄的每次數(shù)據(jù)變化對應的所述索引表的更新信息,對引起所述數(shù)據(jù)變化的操作進行撤銷恢復。實施本發(fā)明實施例,具有如下有益效果
本發(fā)明實施例將程序運行所需的數(shù)據(jù)存儲在預置的磁盤空間中,在程序運行時,根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中獲取相應大小的數(shù)據(jù)進行加載和處理,減少了將程序運行的全部數(shù)據(jù)加載至內存所帶來的內存負荷,同時可保證數(shù)據(jù)的完整性,保證程序運行的可靠性。


為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明的數(shù)據(jù)處理裝置的第一實施例的結構示意圖; 圖2為本發(fā)明的數(shù)據(jù)處理裝置的第二實施例的結構示意圖3為本發(fā)明的樹型結構表的示意圖4為本發(fā)明的數(shù)據(jù)處理裝置的初始化模塊的實施例的結構示意圖; 圖5為本發(fā)明的數(shù)據(jù)處理裝置的查找模塊的實施例的結構示意圖; 圖6為本發(fā)明的數(shù)據(jù)處理方法的第一實施例的流程圖; 圖7為圖6所示的步驟SlOl的具體流程圖; 圖8為本發(fā)明的數(shù)據(jù)處理方法的第二實施例的流程圖; 圖9為圖8所示的步驟S201的具體流程圖。
具體實施例方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。請參見圖1,為本發(fā)明的數(shù)據(jù)處理裝置的第一實施例的結構示意圖;所述裝置包括
查找模塊10,用于當程序運行時,根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中查找所述程序運行所需的數(shù)據(jù)。由于程序所需處理的數(shù)據(jù)量往往較大,在程序運行時,直接將數(shù)據(jù)加載至內存進行處理,會占據(jù)大量的內存空間,影響程序運行,因此,可預先將程序運行所需的數(shù)據(jù)存儲至預置的磁盤空間中,當程序運行時,所述查找模塊10根據(jù)預設的內存使用參數(shù),從所述預置的磁盤空間中讀取。其中,所述預設的內存使用參數(shù)是指預先設定的可使用的內存大小,該大小可以為內存的整個存儲空間,也可以是內存的部分存儲空間,所述預設的內存使用參數(shù)可根據(jù)實際需要進行設定,在此不贅述。加載模塊20,用于將所述查找模塊10查找到的所述數(shù)據(jù)加載至內存。所述加載模塊20將所述查找模塊10查找到的數(shù)據(jù)加載至內存中,該加載過程與現(xiàn)有技術相同,在此不贅述。處理模塊30,用于運行所述程序,處理所述加載模塊20已加載的所述數(shù)據(jù)。當所述加載模塊20將數(shù)據(jù)加載至內存后,所述處理模塊30運行所述程序,處理已加載的所述數(shù)據(jù)。本發(fā)明實施例在程序運行時,根據(jù)預設的內存使用參數(shù)對數(shù)據(jù)進行讀取、加載和處理,減少內存的負荷,保證數(shù)據(jù)的完整性,保證程序運行的可靠性。請參見圖2,為本發(fā)明的數(shù)據(jù)處理裝置的第二實施例的結構示意圖;與上一實施例相同,所述裝置包括查找模塊10、加載模塊20和處理模塊30。本實施例中,所述裝置進一步包括
初始化模塊40,用于將程序運行所需的各種數(shù)據(jù)存儲至預置的磁盤空間中,并建立索引表。所述索引表可以包括所述預置的磁盤空間內存儲的各個數(shù)據(jù)的偏移量 (offset)、大小(size)、校驗值(Crc32值)和引用計數(shù)(Numlock);其中,各個數(shù)據(jù)的偏移量表示各個數(shù)據(jù)在所述預置的磁盤空間內的存儲位置。實際應用中,所述預置的磁盤空間內存儲的各個數(shù)據(jù)可以采用樹型結構表進行表示,所述樹型結構表為類似文件夾結構的表。請一并參見圖3,為本發(fā)明的樹型結構表的示意圖;圖3所示例子為若往磁盤空間根目錄中寫入三個文件,分別為AAAA. TXT、BBBB. TXT和CCCC. TXT,若該三個文件的內容相同,那么,將有三個結點指定同一個數(shù)據(jù)區(qū),該指定的同一個數(shù)據(jù)的引用計數(shù)為3。若往磁盤空間根目錄中寫入兩個文件,分別為DDD. TXT和EEE. TXT,若該兩個文件的內容相同,那么,將有兩個結點指定同一個數(shù)據(jù)區(qū),該指定的同一個數(shù)據(jù)的引用計數(shù)為2。記錄模塊50,用于當所述預置的磁盤空間中的數(shù)據(jù)發(fā)生變化時,更新所述索引表, 并記錄每次數(shù)據(jù)變化對應的所述索引表的更新信息。每當所述預置的磁盤空間中的數(shù)據(jù)發(fā)生變化時,所述索引表也會相應發(fā)生變化, 所述記錄模塊50依據(jù)發(fā)生變化的數(shù)據(jù),更新所述索引表,并記錄每次數(shù)據(jù)變化對應的所述索引表的更新信息。撤銷恢復模塊60,用于根據(jù)所述記錄模塊50記錄的每次數(shù)據(jù)變化對應的所述索引表的更新信息,對引起所述數(shù)據(jù)變化的操作進行撤銷恢復。由于所述預置的磁盤空間中的數(shù)據(jù)都以追加的方式進行寫入,當需要恢復到某一操作的數(shù)據(jù)時,用戶僅需要向所述數(shù)據(jù)處理裝置輸入撤銷恢復指令,所述撤銷恢復模塊60 根據(jù)該撤銷恢復指令以及記錄的所述每次數(shù)據(jù)變化對應的索引表的更新信息,恢復到相應操作的索引表,即可達到對引起所述數(shù)據(jù)變化的操作進行撤銷恢復。為了更清楚地說明本發(fā)明,下面將結合附圖4-5,對本發(fā)明的數(shù)據(jù)處理裝置的各模塊進行詳細介紹。請參見圖4,為本發(fā)明的數(shù)據(jù)處理裝置的初始化模塊的實施例的結構示意圖;所述初始化模塊40包括
預置單元401,用于預先設置用于存儲程序運行所需的各種數(shù)據(jù)的磁盤空間,并建立索引表。具體實現(xiàn)中,所述預置單元401預先在磁盤中設置一個空間,該空間用來存儲程序運行所需的各種數(shù)據(jù),并建立該預置的磁盤空間對應的索引表。所述索引表包括所述預置的磁盤空間內存儲的各個數(shù)據(jù)的偏移量、大小、校驗值和引用計數(shù);其中,各個數(shù)據(jù)的偏移量表示各個數(shù)據(jù)在所述預置的磁盤空間內的存儲位置。計算單元402,用于當所述預置單元401預置的磁盤空間有數(shù)據(jù)寫入時,計算所述數(shù)據(jù)的校驗值。當需要向預置的磁盤空間寫入數(shù)據(jù)時,所述計算單元402首先計算需要寫入的數(shù)據(jù)的校驗值,即CRC (Cyclical Redundancy Check,循環(huán)冗余校驗)32值。所述計算單元 402的計算過程與現(xiàn)有的CRC的計算過程相同,在此不贅述。判斷單元403,用于判斷所述預置單元401建立的索引表中是否包含所述計算單元402計算得到的所述檢驗值。如前述,所述索引表包含所述預置的磁盤空間內存儲的各個數(shù)據(jù)的偏移量、大小、 校驗值和引用計數(shù),當所述計算單元402計算得到需要寫入的數(shù)據(jù)的CRC32值后,所述判斷單元403則判斷所述索引表中是否包含相同的CRC32值??梢岳斫獾氖?,若需要寫入的數(shù)據(jù)在此之前已被寫入所述預置的磁盤空間中,則所述索引表中必定包含該CRC32值,若需要寫入的數(shù)據(jù)尚未被寫入所述預置的磁盤空間中,則所述索引表中未包含該CRC32值。執(zhí)行單元404,用于當所述判斷單元403判斷結果為是時,更新所述索引表中所述檢驗值對應的數(shù)據(jù)的引用計數(shù);當所述判斷單元403判斷結果為否時,將所述數(shù)據(jù)存儲至所述預置的磁盤空間中,并更新所述索引表。若所述判斷單元403判斷結果為是,表明所述需要寫入的數(shù)據(jù)已被存儲至所述預置的磁盤空間中,所述執(zhí)行單元404則無需再對該數(shù)據(jù)進行寫入操作,僅需要更新所述索引表,將所述索引表中該數(shù)據(jù)的引用計數(shù)加1。其中,各個數(shù)據(jù)的引用計數(shù)表明各個數(shù)據(jù)需要被寫入預置的磁盤空間的次數(shù)。當有相同的數(shù)據(jù)寫入時,所述執(zhí)行單元404僅對索引表中的引用計數(shù)進行更新,可避免寫入同樣的數(shù)據(jù)所帶來的資源浪費,比如相同的偏移量、 大小等信息的存儲,浪費了存儲空間。若所述判斷單元403判斷結果為否,表明所述需要寫入的數(shù)據(jù)尚未存儲于所述預置的磁盤空間中,所述執(zhí)行單元404則需要將所述數(shù)據(jù)存儲至所述預置的磁盤空間中,具體地,所述執(zhí)行單元404可以采用從尾追加的方式寫入所述數(shù)據(jù),即從所述預置的存儲空間存儲的數(shù)據(jù)的尾端添加所述需要寫入的數(shù)據(jù),然后更新所述索引表,在所述索引表中添加新寫入的所述數(shù)據(jù)的偏移量、CRC32值、大小和引用計數(shù)等索弓I fe息O需要說明的是,所述預置的磁盤空間可提供API (Application Programming hterface,應用程序編程接口 )接口,通過對該API接口的調用實現(xiàn)對所述預置的磁盤空間內的數(shù)據(jù)的調用。在現(xiàn)有的軟件開發(fā)過程中,程序的處理過程中往往會產生很多臨時文件數(shù)據(jù),這些數(shù)據(jù)常被用戶不小心刪除,從而造成數(shù)據(jù)丟失。本發(fā)明實施例中,可采用所述預置的磁盤空間存儲所產生的臨時文件數(shù)據(jù),并提供相應的API接口,開發(fā)人員通過調用所述API接口對所述預置的磁盤空間內的臨時文件數(shù)據(jù)進行創(chuàng)建、修改或刪除,則可避免現(xiàn)有技術中出現(xiàn)的臨時文件數(shù)據(jù)丟失的問題。另外,通過API接口可以對所述預置的磁盤空間內的數(shù)據(jù)進行碎片整理,避免文件越來越大,從而提高數(shù)據(jù)處理效率。請參見圖5,為本發(fā)明的數(shù)據(jù)處理裝置的查找模塊的實施例的結構示意圖;所述查找模塊10包括
計算單元101,用于當程序運行時,計算所述程序運行所需的數(shù)據(jù)的校驗值。所述計算單元101在程序運行時,首先計算所述程序運行所需的數(shù)據(jù)的CRC32值, 所述計算單元101與圖4所示的計算單元402的計算過程相同,二在此不贅述。實際應用中,所述計算單元101與圖4所示的計算單元402可以合并為同一單元。查找單元102,用于查找所述索引表中是否包含所述計算單元101計算得到的所述檢驗值。如前述,所述索引表包含所述預置的磁盤空間內存儲的各個數(shù)據(jù)的偏移量、大小、 校驗值和引用計數(shù),當所述計算單元101計算得到需要寫入的數(shù)據(jù)的CRC32值后,所述查找單元102則查找所述索引表中是否包含相同的CRC32值??梢岳斫獾氖牵羲鰯?shù)據(jù)已被寫入所述預置的磁盤空間中,則所述索引表中必定包含該CRC32值,若所述數(shù)據(jù)尚未被寫入所述預置的磁盤空間中,則所述索引表中未包含該CRC32值。所述查找單元102與圖4 所示的判斷單元403的處理過程相同,實際應用中,所述查找單元102與圖4所示的判斷單元403可以合并為同一單元。比較單元103,用于當所述查找單元102查找結果為是時,從所述索引表中讀取所述校驗值對應的數(shù)據(jù)的大小,比較所述數(shù)據(jù)的大小和所述預設的內存使用參數(shù)。若所述查找單元103查找結果為是,表明所述數(shù)據(jù)已被存儲至所述預置的磁盤空間中,所述比較單元103從所述索引表中讀取所述數(shù)據(jù)的大小,并比較所述數(shù)據(jù)的大小和所述預設的內存使用參數(shù)。其中,所述預設的內存使用參數(shù)是指預先設定的可使用的內存大小,該大小可以為內存的整個存儲空間,也可以是內存的部分存儲空間,所述預設的內存使用參數(shù)可根據(jù)實際需要進行設定,在此不贅述。讀取單元104,用于當所述比較單元103比較得到所述數(shù)據(jù)的大小大于所述預設的內存使用參數(shù)時,按照所述預設的內存使用參數(shù)分段從所述預置的磁盤空間中讀取所述數(shù)據(jù);當所述比較單元103比較得到所述數(shù)據(jù)的大小小于等于所述預設的內存使用參數(shù)時,從所述預置的磁盤空間中讀取所述數(shù)據(jù)。若所述比較單元103比較得到所述數(shù)據(jù)的大小大于所述預設的內存使用參數(shù),所述讀取單元104則按照所述預設的內存使用參數(shù)分段從所述預置的磁盤空間中讀取所述數(shù)據(jù),比如若預設的內存使用參數(shù)為50M,所述數(shù)據(jù)為120M,則所述讀取單元104每次只能讀取不大于50M的數(shù)據(jù)映射至內存中,本實施例中,所述讀取單元104按照所述預設的內存使用參數(shù)對所述數(shù)據(jù)進行分段讀取,即第一次讀取50M數(shù)據(jù)映射至內存,當該50M數(shù)據(jù)被處理完畢后,繼續(xù)取后50M數(shù)據(jù)映射至內存進行處理,最后取剩余的20M數(shù)據(jù)映射至內存中進行處理。需要說明的是,所述讀取單元104進行分段讀取時,也可以按照預設的、不大于所述預設的內存使用參數(shù)的值進行分段讀取,依上述例子,比如所述讀取單元104每次取 40M數(shù)據(jù)映射至內存進行處理,等等,其他情況下可類似分析,在此不贅述。
若所述比較單元103比較得到所述數(shù)據(jù)的大小小于等于(不大于)所述預設的內存使用參數(shù),所述讀取單元104則直接從所述預置的磁盤空間中讀取所述數(shù)據(jù),比如若預設的內存使用參數(shù)為50M,所述數(shù)據(jù)為40M,則所述讀取單元104直接讀取該40M的數(shù)據(jù)映射至內存中進行處理。存儲更新單元105,用于當所述查找單元102查找結果為否時,將所述程序運行所需的數(shù)據(jù)存儲至所述預置的磁盤空間中,并更新所述索引表。若所述查找單元102查找結果為否,表明所述數(shù)據(jù)尚未存儲于所述預置的磁盤空間中,所述存儲更新單元105則需要將所述數(shù)據(jù)存儲至所述預置的磁盤空間中,具體地,所述存儲更新單元105可以采用從尾追加的方式寫入所述數(shù)據(jù),即從所述預置的存儲空間存儲的數(shù)據(jù)的尾端添加所述需要寫入的數(shù)據(jù),然后更新所述索引表,在所述索引表中添加新寫入的所述數(shù)據(jù)的偏移量、CRC32值、大小和引用計數(shù)等索引信息。可以理解的是,所述存儲更新單元105與圖4所示的執(zhí)行單元404的部分處理過程相同,所述存儲更新單元105與圖4所示的執(zhí)行單元404在實際應用中可以合并為同一單元。本發(fā)明實施例將程序運行所需的數(shù)據(jù)存儲在預置的磁盤空間中,在程序運行時, 根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中獲取相應大小的數(shù)據(jù)進行查找,減少了將程序運行的全部數(shù)據(jù)加載至內存所帶來的內存負荷,同時可保證數(shù)據(jù)的完整性,保證程序運行的可靠性。為了更清楚地說明本發(fā)明,下面將由本發(fā)明的數(shù)據(jù)處理裝置所執(zhí)行的數(shù)據(jù)處理方法進行詳細介紹。請參見圖6,為本發(fā)明的數(shù)據(jù)處理方法的第一實施例的流程圖;所述方法包括 S101,程序運行時,根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中查找所述程序運行
所需的數(shù)據(jù)并加載至內存。由于程序所需處理的數(shù)據(jù)量往往較大,在程序運行時,直接將數(shù)據(jù)加載至內存進行處理,會占據(jù)大量的內存空間,影響程序運行,因此,可預先將程序運行所需的數(shù)據(jù)存儲至預置的磁盤空間中,當程序運行時,步驟SlOl根據(jù)預設的內存使用參數(shù),從所述預置的磁盤空間中讀取數(shù)據(jù)并加載至內存中。其中,所述預設的內存使用參數(shù)是指預先設定的可使用的內存大小,該大小可以為內存的整個存儲空間,也可以是內存的部分存儲空間,所述預設的內存使用參數(shù)可根據(jù)實際需要進行設定,在此不贅述。具體請一并參見圖7,為圖6所示的步驟SlOl的具體流程圖;步驟SlOl包括 Sll,程序運行時,計算所述程序運行所需的數(shù)據(jù)的校驗值。步驟Sll中,在程序運行時,首先計算所述程序運行所需的數(shù)據(jù)的CRC32值,該計算過程與現(xiàn)有的CRC的計算過程相同,在此不贅述。S12,查找所述索引表中是否包含計算得到的所述檢驗值;若查找結果為是,轉入步驟S13 ;否則,轉入S17。所述索引表包含所述預置的磁盤空間內存儲的各個數(shù)據(jù)的偏移量、大小、校驗值和引用計數(shù),當步驟Sll計算得到需要寫入的數(shù)據(jù)的CRC32值后,步驟S12則查找所述索引表中是否包含相同的CRC32值??梢岳斫獾氖?,若所述數(shù)據(jù)已被寫入所述預置的磁盤空間中,則所述索引表中必定包含該CRC32值,查找結果為是,轉入步驟S13 ;若所述數(shù)據(jù)尚未被寫入所述預置的磁盤空間中,則所述索引表中未包含該CRC32值,查找結果為否,轉入步驟 S17。S13,從所述索引表中讀取所述校驗值對應的數(shù)據(jù)的大小,比較所述數(shù)據(jù)的大小和所述預設的內存使用參數(shù)。若步驟S12的查找結果為是,表明所述數(shù)據(jù)已被存儲至所述預置的磁盤空間中, 步驟S13則從所述索引表中讀取所述數(shù)據(jù)的大小,并比較所述數(shù)據(jù)的大小和所述預設的內存使用參數(shù)。其中,所述預設的內存使用參數(shù)是指預先設定的可使用的內存大小,該大小可以為內存的整個存儲空間,也可以是內存的部分存儲空間,所述預設的內存使用參數(shù)可根據(jù)實際需要進行設定,在此不贅述。S14,判斷所述數(shù)據(jù)的大小是否大于所述預設的內存使用參數(shù);若判斷結果為是, 轉入步驟S15 ;否則,轉入步驟S16。S15,按照所述預設的內存使用參數(shù)分段從所述預置的磁盤空間中讀取所述數(shù)據(jù)加載至內存中。若步驟S14比較結果為是,步驟S15則按照所述預設的內存使用參數(shù)分段從所述預置的磁盤空間中讀取所述數(shù)據(jù),比如若預設的內存使用參數(shù)為50M,所述數(shù)據(jù)為120M, 則步驟S15每次只能讀取不大于50M的數(shù)據(jù)映射至內存中,本實施例中,步驟S15按照所述預設的內存使用參數(shù)對所述數(shù)據(jù)進行分段讀取,即第一次讀取50M數(shù)據(jù)映射至內存,當該 50M數(shù)據(jù)被處理完畢后,繼續(xù)取后50M數(shù)據(jù)映射至內存進行處理,最后取剩余的20M數(shù)據(jù)映射至內存中進行處理。需要說明的是,步驟S15進行分段讀取時,也可以按照預設的、不大于所述預設的內存使用參數(shù)的值進行分段讀取,依上述例子,比如步驟S15每次取40M數(shù)據(jù)映射至內存進行處理,等等,其他情況下可類似分析,在此不贅述。S16,從所述預置的磁盤空間中讀取所述數(shù)據(jù)并加載至內存;之后,轉入步驟 S102。若S14比較結果為否,步驟S16則直接從所述預置的磁盤空間中讀取所述數(shù)據(jù),比如若預設的內存使用參數(shù)為50M,所述數(shù)據(jù)為40M,則步驟S16直接讀取該40M的數(shù)據(jù)映射至內存中進行處理。S17,將所述程序運行所需的數(shù)據(jù)存儲至所述預置的磁盤空間中,并更新所述索引表;之后,轉入步驟S102。若步驟S12的查找結果為否,表明所述數(shù)據(jù)尚未存儲于所述預置的磁盤空間中, 步驟S17則需要將所述數(shù)據(jù)存儲至所述預置的磁盤空間中,具體地,步驟S17可以采用從尾追加的方式寫入所述數(shù)據(jù),即從所述預置的存儲空間存儲的數(shù)據(jù)的尾端添加所述需要寫入的數(shù)據(jù),然后更新所述索引表,在所述索引表中添加新寫入的所述數(shù)據(jù)的偏移量、CRC32值、 大小和引用計數(shù)等索引信息。S102,運行所述程序,處理已加載的所述數(shù)據(jù)。當步驟SlOl將數(shù)據(jù)加載至內存后, 步驟S102則運行所述程序,處理已加載的所述數(shù)據(jù)。請參見圖8,為本發(fā)明的數(shù)據(jù)處理方法的第二實施例的流程圖;所述方法包括 S201,將程序運行所需的各種數(shù)據(jù)存儲至預置的磁盤空間中,并建立索引表。所述索引表可以包括所述預置的磁盤空間內存儲的各個數(shù)據(jù)的偏移量、大小、校驗值和引用計數(shù);其中,各個數(shù)據(jù)的偏移量表示各個數(shù)據(jù)在所述預置的磁盤空間內的存儲
11位置。實際應用中,所述預置的磁盤空間內存儲的各個數(shù)據(jù)可以采用樹型結構表進行表示, 所述樹型結構表的結構可參見圖3所示。請一并參見圖9,為圖8所示的步驟S201的具體流程圖;步驟S201包括 S21,預先設置用于存儲程序運行所需的各種數(shù)據(jù)的磁盤空間,并建立索引表。具體實現(xiàn)中,步驟S21預先在磁盤中設置一個空間,該空間用來存儲程序運行所需的各種數(shù)據(jù),并建立該預置的磁盤空間對應的索引表。所述索引表包括所述預置的磁盤空間內存儲的各個數(shù)據(jù)的偏移量、大小、校驗值和引用計數(shù);其中,各個數(shù)據(jù)的偏移量表示各個數(shù)據(jù)在所述預置的磁盤空間內的存儲位置。S22,當所述預置的磁盤空間有數(shù)據(jù)寫入時,計算所述數(shù)據(jù)的校驗值。當需要向預置的磁盤空間寫入數(shù)據(jù)時,步驟S22計算需要寫入的數(shù)據(jù)的校驗值, 即CRC32值。該計算過程與現(xiàn)有的CRC的計算過程相同,在此不贅述。S23,判斷所述索引表中是否包含計算得到的所述檢驗值,若判斷結果為是,轉入步驟S24 ;否則,轉入步驟S25。所述索引表包含所述預置的磁盤空間內存儲的各個數(shù)據(jù)的偏移量、大小、校驗值和引用計數(shù),當步驟S22計算得到需要寫入的數(shù)據(jù)的CRC32值后,步驟S23則判斷所述索引表中是否包含相同的CRC32值??梢岳斫獾氖?,若需要寫入的數(shù)據(jù)在此之前已被寫入所述預置的磁盤空間中,則所述索引表中必定包含該CRC32值,判斷結果為是,轉入步驟S24,若需要寫入的數(shù)據(jù)尚未被寫入所述預置的磁盤空間中,則所述索引表中未包含該CRC32值, 判斷結果為否,轉入步驟S25。S24,更新所述索引表中的所述檢驗值對應的數(shù)據(jù)的引用計數(shù);之后,轉入步驟 S202。若步驟S23的判斷結果為是,表明所述需要寫入的數(shù)據(jù)已被存儲至所述預置的磁盤空間中,步驟SM則無需再對該數(shù)據(jù)進行寫入操作,僅需要更新所述索引表,將所述索引表中該數(shù)據(jù)的引用計數(shù)加1。其中,各個數(shù)據(jù)的引用計數(shù)表明各個數(shù)據(jù)需要被寫入預置的磁盤空間的次數(shù)。當有相同的數(shù)據(jù)寫入時,步驟SM僅對索引表中的引用計數(shù)進行更新,可避免寫入同樣的數(shù)據(jù)所帶來的資源浪費,比如相同的偏移量、大小等信息的存儲,浪費了存儲空間。S25,將所述數(shù)據(jù)存儲至所述預置的磁盤空間中,并更新所述索引表。若步驟S23的判斷結果為否,表明所述需要寫入的數(shù)據(jù)尚未存儲于所述預置的磁盤空間中,步驟S25則需要將所述數(shù)據(jù)存儲至所述預置的磁盤空間中,具體地,步驟S25可以采用從尾追加的方式寫入所述數(shù)據(jù),即從所述預置的存儲空間存儲的數(shù)據(jù)的尾端添加所述需要寫入的數(shù)據(jù),然后更新所述索引表,在所述索引表中添加新寫入的所述數(shù)據(jù)的偏移量、CRC32值、大小和引用計數(shù)等索引信息。S202,程序運行時,根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中查找所述程序運行所需的數(shù)據(jù)并加載至內存。S203,運行所述程序,處理已加載的所述數(shù)據(jù)。本實施例中,步驟S202-步驟S203與上一實施例的步驟SlOl-步驟S102的具體流程相同,在此不贅述。S204,當所述預置的磁盤空間中的數(shù)據(jù)發(fā)生變化時,更新所述索引表,并記錄每次數(shù)據(jù)變化對應的所述索引表的更新信息。每當所述預置的磁盤空間中的數(shù)據(jù)發(fā)生變化時,所述索引表也會相應發(fā)生變化, 步驟S204依據(jù)發(fā)生變化的數(shù)據(jù),更新所述索引表,并記錄每次數(shù)據(jù)變化對應的所述索引表的更新信息。S205,根據(jù)記錄的每次數(shù)據(jù)變化對應的所述索引表的更新信息,對引起所述數(shù)據(jù)變化的操作進行撤銷恢復。由于所述預置的磁盤空間中的數(shù)據(jù)都以追加的方式進行寫入,當需要恢復到某一操作的數(shù)據(jù)時,用戶僅需要向所述數(shù)據(jù)處理裝置輸入撤銷恢復指令,步驟S205根據(jù)該撤銷恢復指令以及步驟S204記錄的所述每次數(shù)據(jù)變化對應的索引表的更新信息,恢復到相應操作的索引表,即可達到對引起所述數(shù)據(jù)變化的操作進行撤銷恢復。需要說明的是,本實施例中,步驟S204與步驟S202在時序上不分先后,步驟S201 將數(shù)據(jù)存儲至預置的磁盤空間并建立索引表之后,如果所述預置的磁盤空間中的數(shù)據(jù)發(fā)生變化,則執(zhí)行步驟S204。本發(fā)明實施例將程序運行所需的數(shù)據(jù)存儲在預置的磁盤空間中,在程序運行時, 根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中獲取相應大小的數(shù)據(jù)進行加載和處理,減少了將程序運行的全部數(shù)據(jù)加載至內存所帶來的內存負荷,同時可保證數(shù)據(jù)的完整性,保證程序運行的可靠性。本領域普通技術人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random Access Memory, RAM)等。以上所揭露的僅為本發(fā)明較佳實施例而已,當然不能以此來限定本發(fā)明之權利范圍,本領域普通技術人員可以理解實現(xiàn)上述實施例的全部或部分流程,并依本發(fā)明權利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。
權利要求
1.一種數(shù)據(jù)處理方法,其特征在于,包括程序運行時,根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中查找所述程序運行所需的數(shù)據(jù)并加載至內存;運行所述程序,處理已加載的所述數(shù)據(jù)。
2.如權利要求1所述的方法,其特征在于,所述程序運行時,根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中查找所述程序運行所需的數(shù)據(jù)并加載至內存之前,還包括將程序運行所需的各種數(shù)據(jù)存儲至預置的磁盤空間中,并建立索引表; 所述索引表包括所述預置的磁盤空間內存儲的各個數(shù)據(jù)的偏移量、大小、校驗值和引用計數(shù);其中,各個數(shù)據(jù)的偏移量表示各個數(shù)據(jù)在所述預置的磁盤空間內的存儲位置。
3.如權利要求2所述的方法,其特征在于,所述將程序運行所需的各種數(shù)據(jù)存儲至預置的磁盤空間中,并建立索引表,包括預先設置用于存儲程序運行所需的各種數(shù)據(jù)的磁盤空間,并建立索引表;當所述預置的磁盤空間有數(shù)據(jù)寫入時,計算所述數(shù)據(jù)的校驗值;判斷所述索引表中是否包含計算得到的所述檢驗值;若判斷結果為是,更新所述索引表中的所述檢驗值對應的數(shù)據(jù)的引用計數(shù);若判斷結果為否,將所述數(shù)據(jù)存儲至所述預置的磁盤空間中,并更新所述索引表。
4.如權利要求2或3所述的方法,其特征在于,所述程序運行時,根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中查找所述程序運行所需的數(shù)據(jù)并加載至內存,包括程序運行時,計算所述程序運行所需的數(shù)據(jù)的校驗值; 查找所述索引表中是否包含計算得到的所述檢驗值;若查找結果為是,從所述索引表中讀取所述校驗值對應的數(shù)據(jù)的大小,比較所述數(shù)據(jù)的大小和所述預設的內存使用參數(shù);若所述數(shù)據(jù)的大小大于所述預設的內存使用參數(shù),按照所述預設的內存使用參數(shù)分段從所述預置的磁盤空間中讀取所述數(shù)據(jù)加載至內存中;若所述數(shù)據(jù)的大小小于等于所述預設的內存使用參數(shù),從所述預置的磁盤空間中讀取所述數(shù)據(jù)并加載至內存;若查找結果為否,將所述程序運行所需的數(shù)據(jù)存儲至所述預置的磁盤空間中,并更新所述索引表。
5.如權利要求2或3所述的方法,其特征在于,還包括當所述預置的磁盤空間中的數(shù)據(jù)發(fā)生變化時,更新所述索引表,并記錄每次數(shù)據(jù)變化對應的所述索引表的更新信息;根據(jù)記錄的每次數(shù)據(jù)變化對應的所述索引表的更新信息,對引起所述數(shù)據(jù)變化的操作進行撤銷恢復。
6.一種數(shù)據(jù)處理裝置,其特征在于,包括查找模塊,用于當程序運行時,根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中查找所述程序運行所需的數(shù)據(jù);加載模塊,用于將所述查找模塊查找到的所述數(shù)據(jù)加載至內存; 處理模塊,用于運行所述程序,處理所述加載模塊已加載的所述數(shù)據(jù)。
7.如權利要求6所述的裝置,其特征在于,還包括初始化模塊,用于將程序運行所需的各種數(shù)據(jù)存儲至預置的磁盤空間中,并建立索引表;所述索引表包括所述預置的磁盤空間內存儲的各個數(shù)據(jù)的偏移量、大小、校驗值和引用計數(shù);其中,各個數(shù)據(jù)的偏移量表示各個數(shù)據(jù)在所述預置的磁盤空間內的存儲位置。
8.如權利要求7所述的裝置,其特征在于,所述初始化模塊包括預置單元,用于預先設置用于存儲程序運行所需的各種數(shù)據(jù)的磁盤空間,并建立索引表;計算單元,用于當所述預置單元預置的磁盤空間有數(shù)據(jù)寫入時,計算所述數(shù)據(jù)的校驗值;判斷單元,用于判斷所述預置單元建立的索引表中是否包含所述計算單元計算得到的所述檢驗值;執(zhí)行單元,用于當所述判斷單元判斷結果為是時,更新所述索引表中所述檢驗值對應的數(shù)據(jù)的引用計數(shù);當所述判斷單元判斷結果為否時,將所述數(shù)據(jù)存儲至所述預置的磁盤空間中,并更新所述索引表。
9.如權利要求7或8所述的裝置,其特征在于,所述查找模塊包括 計算單元,用于當程序運行時,計算所述程序運行所需的數(shù)據(jù)的校驗值;查找單元,用于查找所述索引表中是否包含所述計算單元計算得到的所述檢驗值; 比較單元,用于當所述查找單元查找結果為是時,從所述索引表中讀取所述校驗值對應的數(shù)據(jù)的大小,比較所述數(shù)據(jù)的大小和所述預設的內存使用參數(shù);讀取單元,用于當所述比較單元比較得到所述數(shù)據(jù)的大小大于所述預設的內存使用參數(shù)時,按照所述預設的內存使用參數(shù)分段從所述預置的磁盤空間中讀取所述數(shù)據(jù);當所述比較單元比較得到所述數(shù)據(jù)的大小小于等于所述預設的內存使用參數(shù)時,從所述預置的磁盤空間中讀取所述數(shù)據(jù);存儲更新單元,用于當所述查找單元查找結果為否時,將所述程序運行所需的數(shù)據(jù)存儲至所述預置的磁盤空間中,并更新所述索引表。
10.如權利要求7或8所述的裝置,其特征在于,還包括記錄模塊,用于當所述預置的磁盤空間中的數(shù)據(jù)發(fā)生變化時,更新所述索引表,并記錄每次數(shù)據(jù)變化對應的所述索引表的更新信息;撤銷恢復模塊,用于根據(jù)所述記錄模塊記錄的每次數(shù)據(jù)變化對應的所述索引表的更新信息,對引起所述數(shù)據(jù)變化的操作進行撤銷恢復。
全文摘要
本發(fā)明實施例公開了一種數(shù)據(jù)處理方法,包括程序運行時,根據(jù)預設的內存使用參數(shù),從預置的磁盤空間中查找所述程序運行所需的數(shù)據(jù)并加載至內存;運行所述程序,處理已加載的所述數(shù)據(jù)。本發(fā)明實施例還公開了一種數(shù)據(jù)處理裝置。本發(fā)明在程序運行時,根據(jù)預設的內存使用參數(shù)對數(shù)據(jù)進行讀取、加載和處理,減少內存的負荷,保證數(shù)據(jù)的完整性,保證程序運行的可靠性。
文檔編號G06F9/312GK102331920SQ20111021003
公開日2012年1月25日 申請日期2011年7月26日 優(yōu)先權日2011年7月26日
發(fā)明者吳思然 申請人:深圳市萬興軟件有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
星子县| 永川市| 海兴县| 祁阳县| 武胜县| 平泉县| 襄垣县| 巴林左旗| 府谷县| 托克托县| 中山市| 莱西市| 汝城县| 许昌市| 德化县| 九龙城区| 宽甸| 繁昌县| 隆化县| 兴宁市| 怀安县| 凌云县| 鄂托克前旗| 民权县| 积石山| 吕梁市| 阿拉善右旗| 三亚市| 日喀则市| 阳高县| 维西| 堆龙德庆县| 株洲市| 涿州市| 临漳县| 吉安市| 崇明县| 达拉特旗| 六盘水市| 通道| 莆田市|