CN102331920A - 一种数据处理方法及装置 - Google Patents

一种数据处理方法及装置 Download PDF

Info

Publication number
CN102331920A
CN102331920A CN201110210031A CN201110210031A CN102331920A CN 102331920 A CN102331920 A CN 102331920A CN 201110210031 A CN201110210031 A CN 201110210031A CN 201110210031 A CN201110210031 A CN 201110210031A CN 102331920 A CN102331920 A CN 102331920A
Authority
CN
China
Prior art keywords
data
presets
disk space
concordance list
internal memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201110210031A
Other languages
English (en)
Other versions
CN102331920B (zh
Inventor
吴思然
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wanxing Polytron Technologies Inc
Original Assignee
Shenzhen Wondershare Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Wondershare Software Co Ltd filed Critical Shenzhen Wondershare Software Co Ltd
Priority to CN201110210031.6A priority Critical patent/CN102331920B/zh
Publication of CN102331920A publication Critical patent/CN102331920A/zh
Application granted granted Critical
Publication of CN102331920B publication Critical patent/CN102331920B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明实施例公开了一种数据处理方法,包括:程序运行时,根据预设的内存使用参数,从预置的磁盘空间中查找所述程序运行所需的数据并加载至内存;运行所述程序,处理已加载的所述数据。本发明实施例还公开了一种数据处理装置。本发明在程序运行时,根据预设的内存使用参数对数据进行读取、加载和处理,减少内存的负荷,保证数据的完整性,保证程序运行的可靠性。

Description

一种数据处理方法及装置
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据处理方法及装置。
背景技术
软件开发过程中,常常需要对文件的数据进行处理。现有的数据处理方案主要为:在软件程序运行时,将程序运行所需的所有数据(整个文件的数据)全部加载至内存中,运行程序处理已加载的数据。由于需要处理的许多文件的数据量较大,比如:流文件,将整个文件的所有数据全部加载至内存中进行处理,必定会占据大量的内存空间,可能导致数据的丢失,从而影响程序的运行。
发明内容
本发明实施例所要解决的技术问题在于,提供一种数据处理方法及装置,可在程序运行时,根据预设的内存使用参数对数据进行读取、加载和处理,减少内存的负荷,保证数据的完整性,保证程序运行的可靠性。
为了解决上述技术问题,本发明实施例提供了一种数据处理方法,包括:
程序运行时,根据预设的内存使用参数,从预置的磁盘空间中查找所述程序运行所需的数据并加载至内存;
运行所述程序,处理已加载的所述数据。
其中,根据预设的内存使用参数,从预置的磁盘空间中查找所述程序运行所需的数据并加载至内存之前,还包括:
将程序运行所需的各种数据存储至预置的磁盘空间中,并建立索引表;
所述索引表包括:所述预置的磁盘空间内存储的各个数据的偏移量、大小、校验值和引用计数;其中,各个数据的偏移量表示各个数据在所述预置的磁盘空间内的存储位置。
其中,所述将程序运行所需的各种数据存储至预置的磁盘空间中,并建立索引表,包括:
预先设置用于存储程序运行所需的各种数据的磁盘空间,并建立索引表;
当所述预置的磁盘空间有数据写入时,计算所述数据的校验值;
判断所述索引表中是否包含计算得到的所述检验值;
若判断结果为是,更新所述索引表中的所述检验值对应的数据的引用计数;
若判断结果为否,将所述数据存储至所述预置的磁盘空间中,并更新所述索引表。
其中,所述程序运行时,根据预设的内存使用参数,从预置的磁盘空间中查找所述程序运行所需的数据并加载至内存,包括:
程序运行时,计算所述程序运行所需的数据的校验值;
查找所述索引表中是否包含计算得到的所述检验值;
若查找结果为是,从所述索引表中读取所述校验值对应的数据的大小,比较所述数据的大小和所述预设的内存使用参数;
若所述数据的大小大于所述预设的内存使用参数,按照所述预设的内存使用参数分段从所述预置的磁盘空间中读取所述数据加载至内存中;
若所述数据的大小小于等于所述预设的内存使用参数,从所述预置的磁盘空间中读取所述数据并加载至内存;
若查找结果为否,将所述程序运行所需的数据存储至所述预置的磁盘空间中,并更新所述索引表。
其中,所述方法还包括: 
当所述预置的磁盘空间中的数据发生变化时,更新所述索引表,并记录每次数据变化对应的所述索引表的更新信息;
根据记录的每次数据变化对应的所述索引表的更新信息,对引起所述数据变化的操作进行撤销恢复。
相应地,本发明实施例还提供了一种数据处理装置,包括:
查找模块,用于当程序运行时,根据预设的内存使用参数,从预置的磁盘空间中查找所述程序运行所需的数据;
加载模块,用于将所述查找模块查找到的所述数据加载至内存;
处理模块,用于运行所述程序,处理所述加载模块已加载的所述数据。
其中,所述装置还包括:
初始化模块,用于将程序运行所需的各种数据存储至预置的磁盘空间中,并建立索引表;
所述索引表包括:所述预置的磁盘空间内存储的各个数据的偏移量、大小、校验值和引用计数;其中,各个数据的偏移量表示各个数据在所述预置的磁盘空间内的存储位置。
其中,所述初始化模块包括:
预置单元,用于预先设置用于存储程序运行所需的各种数据的磁盘空间,并建立索引表;
计算单元,用于当所述预置单元预置的磁盘空间有数据写入时,计算所述数据的校验值;
判断单元,用于判断所述预置单元建立的索引表中是否包含所述计算单元计算得到的所述检验值;
执行单元,用于当所述判断单元判断结果为是时,更新所述索引表中所述检验值对应的数据的引用计数;当所述判断单元判断结果为否时,将所述数据存储至所述预置的磁盘空间中,并更新所述索引表。
其中,所述查找模块包括:
计算单元,用于当程序运行时,计算所述程序运行所需的数据的校验值;
查找单元,用于查找所述索引表中是否包含所述计算单元计算得到的所述检验值;
比较单元,用于当所述查找单元查找结果为是时,从所述索引表中读取所述校验值对应的数据的大小,比较所述数据的大小和所述预设的内存使用参数;
读取单元,用于当所述比较单元比较得到所述数据的大小大于所述预设的内存使用参数时,按照所述预设的内存使用参数分段从所述预置的磁盘空间中读取所述数据;当所述比较单元比较得到所述数据的大小小于等于所述预设的内存使用参数时,从所述预置的磁盘空间中读取所述数据;
存储更新单元,用于当所述查找单元查找结果为否时,将所述程序运行所需的数据存储至所述预置的磁盘空间中,并更新所述索引表。
其中,所述装置还包括:
记录模块,用于当所述预置的磁盘空间中的数据发生变化时,更新所述索引表,并记录每次数据变化对应的所述索引表的更新信息;
撤销恢复模块,用于根据所述记录模块记录的每次数据变化对应的所述索引表的更新信息,对引起所述数据变化的操作进行撤销恢复。
实施本发明实施例,具有如下有益效果:
本发明实施例将程序运行所需的数据存储在预置的磁盘空间中,在程序运行时,根据预设的内存使用参数,从预置的磁盘空间中获取相应大小的数据进行加载和处理,减少了将程序运行的全部数据加载至内存所带来的内存负荷,同时可保证数据的完整性,保证程序运行的可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的数据处理装置的第一实施例的结构示意图;
图2为本发明的数据处理装置的第二实施例的结构示意图;
图3为本发明的树型结构表的示意图;
图4为本发明的数据处理装置的初始化模块的实施例的结构示意图;
图5为本发明的数据处理装置的查找模块的实施例的结构示意图;
图6为本发明的数据处理方法的第一实施例的流程图;
图7为图6所示的步骤S101的具体流程图;
图8为本发明的数据处理方法的第二实施例的流程图;
图9为图8所示的步骤S201的具体流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,为本发明的数据处理装置的第一实施例的结构示意图;所述装置包括:
查找模块10,用于当程序运行时,根据预设的内存使用参数,从预置的磁盘空间中查找所述程序运行所需的数据。
由于程序所需处理的数据量往往较大,在程序运行时,直接将数据加载至内存进行处理,会占据大量的内存空间,影响程序运行,因此,可预先将程序运行所需的数据存储至预置的磁盘空间中,当程序运行时,所述查找模块10根据预设的内存使用参数,从所述预置的磁盘空间中读取。其中,所述预设的内存使用参数是指预先设定的可使用的内存大小,该大小可以为内存的整个存储空间,也可以是内存的部分存储空间,所述预设的内存使用参数可根据实际需要进行设定,在此不赘述。
加载模块20,用于将所述查找模块10查找到的所述数据加载至内存。所述加载模块20将所述查找模块10查找到的数据加载至内存中,该加载过程与现有技术相同,在此不赘述。
处理模块30,用于运行所述程序,处理所述加载模块20已加载的所述数据。当所述加载模块20将数据加载至内存后,所述处理模块30运行所述程序,处理已加载的所述数据。
本发明实施例在程序运行时,根据预设的内存使用参数对数据进行读取、加载和处理,减少内存的负荷,保证数据的完整性,保证程序运行的可靠性。
请参见图2,为本发明的数据处理装置的第二实施例的结构示意图;与上一实施例相同,所述装置包括:查找模块10、加载模块20和处理模块30。本实施例中,所述装置进一步包括:
初始化模块40,用于将程序运行所需的各种数据存储至预置的磁盘空间中,并建立索引表。
所述索引表可以包括:所述预置的磁盘空间内存储的各个数据的偏移量(offset)、大小(size)、校验值(Crc32值)和引用计数(Numlock);其中,各个数据的偏移量表示各个数据在所述预置的磁盘空间内的存储位置。实际应用中,所述预置的磁盘空间内存储的各个数据可以采用树型结构表进行表示,所述树型结构表为类似文件夹结构的表。
请一并参见图3,为本发明的树型结构表的示意图;图3所示例子为:若往磁盘空间根目录中写入三个文件,分别为:AAAA.TXT、BBBB.TXT和CCCC.TXT,若该三个文件的内容相同,那么,将有三个结点指定同一个数据区,该指定的同一个数据的引用计数为3。若往磁盘空间根目录中写入两个文件,分别为:DDD.TXT和EEE.TXT,若该两个文件的内容相同,那么,将有两个结点指定同一个数据区,该指定的同一个数据的引用计数为2。
记录模块50,用于当所述预置的磁盘空间中的数据发生变化时,更新所述索引表,并记录每次数据变化对应的所述索引表的更新信息。
每当所述预置的磁盘空间中的数据发生变化时,所述索引表也会相应发生变化,所述记录模块50依据发生变化的数据,更新所述索引表,并记录每次数据变化对应的所述索引表的更新信息。
撤销恢复模块60,用于根据所述记录模块50记录的每次数据变化对应的所述索引表的更新信息,对引起所述数据变化的操作进行撤销恢复。
由于所述预置的磁盘空间中的数据都以追加的方式进行写入,当需要恢复到某一操作的数据时,用户仅需要向所述数据处理装置输入撤销恢复指令,所述撤销恢复模块60根据该撤销恢复指令以及记录的所述每次数据变化对应的索引表的更新信息,恢复到相应操作的索引表,即可达到对引起所述数据变化的操作进行撤销恢复。
 为了更清楚地说明本发明,下面将结合附图4-5,对本发明的数据处理装置的各模块进行详细介绍。
请参见图4,为本发明的数据处理装置的初始化模块的实施例的结构示意图;所述初始化模块40包括:
预置单元401,用于预先设置用于存储程序运行所需的各种数据的磁盘空间,并建立索引表。
具体实现中,所述预置单元401预先在磁盘中设置一个空间,该空间用来存储程序运行所需的各种数据,并建立该预置的磁盘空间对应的索引表。所述索引表包括:所述预置的磁盘空间内存储的各个数据的偏移量、大小、校验值和引用计数;其中,各个数据的偏移量表示各个数据在所述预置的磁盘空间内的存储位置。
计算单元402,用于当所述预置单元401预置的磁盘空间有数据写入时,计算所述数据的校验值。
当需要向预置的磁盘空间写入数据时,所述计算单元402首先计算需要写入的数据的校验值,即CRC(Cyclical Redundancy Check,循环冗余校验)32值。所述计算单元402的计算过程与现有的CRC的计算过程相同,在此不赘述。 
判断单元403,用于判断所述预置单元401建立的索引表中是否包含所述计算单元402计算得到的所述检验值。
如前述,所述索引表包含所述预置的磁盘空间内存储的各个数据的偏移量、大小、校验值和引用计数,当所述计算单元402计算得到需要写入的数据的CRC32值后,所述判断单元403则判断所述索引表中是否包含相同的CRC32值。可以理解的是,若需要写入的数据在此之前已被写入所述预置的磁盘空间中,则所述索引表中必定包含该CRC32值,若需要写入的数据尚未被写入所述预置的磁盘空间中,则所述索引表中未包含该CRC32值。
执行单元404,用于当所述判断单元403判断结果为是时,更新所述索引表中所述检验值对应的数据的引用计数;当所述判断单元403判断结果为否时,将所述数据存储至所述预置的磁盘空间中,并更新所述索引表。
若所述判断单元403判断结果为是,表明所述需要写入的数据已被存储至所述预置的磁盘空间中,所述执行单元404则无需再对该数据进行写入操作,仅需要更新所述索引表,将所述索引表中该数据的引用计数加1。其中,各个数据的引用计数表明各个数据需要被写入预置的磁盘空间的次数。当有相同的数据写入时,所述执行单元404仅对索引表中的引用计数进行更新,可避免写入同样的数据所带来的资源浪费,比如:相同的偏移量、大小等信息的存储,浪费了存储空间。若所述判断单元403判断结果为否,表明所述需要写入的数据尚未存储于所述预置的磁盘空间中,所述执行单元404则需要将所述数据存储至所述预置的磁盘空间中,具体地,所述执行单元404可以采用从尾追加的方式写入所述数据,即从所述预置的存储空间存储的数据的尾端添加所述需要写入的数据,然后更新所述索引表,在所述索引表中添加新写入的所述数据的偏移量、CRC32值、大小和引用计数等索引信息。
需要说明的是,所述预置的磁盘空间可提供API(Application Programming Interface,应用程序编程接口)接口,通过对该API接口的调用实现对所述预置的磁盘空间内的数据的调用。在现有的软件开发过程中,程序的处理过程中往往会产生很多临时文件数据,这些数据常被用户不小心删除,从而造成数据丢失。本发明实施例中,可采用所述预置的磁盘空间存储所产生的临时文件数据,并提供相应的API接口,开发人员通过调用所述API接口对所述预置的磁盘空间内的临时文件数据进行创建、修改或删除,则可避免现有技术中出现的临时文件数据丢失的问题。另外,通过API接口可以对所述预置的磁盘空间内的数据进行碎片整理,避免文件越来越大,从而提高数据处理效率。
请参见图5,为本发明的数据处理装置的查找模块的实施例的结构示意图;所述查找模块10包括:
计算单元101,用于当程序运行时,计算所述程序运行所需的数据的校验值。
所述计算单元101在程序运行时,首先计算所述程序运行所需的数据的CRC32值,所述计算单元101与图4所示的计算单元402的计算过程相同,二在此不赘述。实际应用中,所述计算单元101与图4所示的计算单元402可以合并为同一单元。
查找单元102,用于查找所述索引表中是否包含所述计算单元101计算得到的所述检验值。
如前述,所述索引表包含所述预置的磁盘空间内存储的各个数据的偏移量、大小、校验值和引用计数,当所述计算单元101计算得到需要写入的数据的CRC32值后,所述查找单元102则查找所述索引表中是否包含相同的CRC32值。可以理解的是,若所述数据已被写入所述预置的磁盘空间中,则所述索引表中必定包含该CRC32值,若所述数据尚未被写入所述预置的磁盘空间中,则所述索引表中未包含该CRC32值。所述查找单元102与图4所示的判断单元403的处理过程相同,实际应用中,所述查找单元102与图4所示的判断单元403可以合并为同一单元。
比较单元103,用于当所述查找单元102查找结果为是时,从所述索引表中读取所述校验值对应的数据的大小,比较所述数据的大小和所述预设的内存使用参数。
若所述查找单元103查找结果为是,表明所述数据已被存储至所述预置的磁盘空间中,所述比较单元103从所述索引表中读取所述数据的大小,并比较所述数据的大小和所述预设的内存使用参数。其中,所述预设的内存使用参数是指预先设定的可使用的内存大小,该大小可以为内存的整个存储空间,也可以是内存的部分存储空间,所述预设的内存使用参数可根据实际需要进行设定,在此不赘述。
读取单元104,用于当所述比较单元103比较得到所述数据的大小大于所述预设的内存使用参数时,按照所述预设的内存使用参数分段从所述预置的磁盘空间中读取所述数据;当所述比较单元103比较得到所述数据的大小小于等于所述预设的内存使用参数时,从所述预置的磁盘空间中读取所述数据。
若所述比较单元103比较得到所述数据的大小大于所述预设的内存使用参数,所述读取单元104则按照所述预设的内存使用参数分段从所述预置的磁盘空间中读取所述数据,比如:若预设的内存使用参数为50M,所述数据为120M,则所述读取单元104每次只能读取不大于50M的数据映射至内存中,本实施例中,所述读取单元104按照所述预设的内存使用参数对所述数据进行分段读取,即第一次读取50M数据映射至内存,当该50M数据被处理完毕后,继续取后50M数据映射至内存进行处理,最后取剩余的20M数据映射至内存中进行处理。需要说明的是,所述读取单元104进行分段读取时,也可以按照预设的、不大于所述预设的内存使用参数的值进行分段读取,依上述例子,比如:所述读取单元104每次取40M数据映射至内存进行处理,等等,其他情况下可类似分析,在此不赘述。
若所述比较单元103比较得到所述数据的大小小于等于(不大于)所述预设的内存使用参数,所述读取单元104则直接从所述预置的磁盘空间中读取所述数据,比如:若预设的内存使用参数为50M,所述数据为40M,则所述读取单元104直接读取该40M的数据映射至内存中进行处理。
存储更新单元105,用于当所述查找单元102查找结果为否时,将所述程序运行所需的数据存储至所述预置的磁盘空间中,并更新所述索引表。
若所述查找单元102查找结果为否,表明所述数据尚未存储于所述预置的磁盘空间中,所述存储更新单元105则需要将所述数据存储至所述预置的磁盘空间中,具体地,所述存储更新单元105可以采用从尾追加的方式写入所述数据,即从所述预置的存储空间存储的数据的尾端添加所述需要写入的数据,然后更新所述索引表,在所述索引表中添加新写入的所述数据的偏移量、CRC32值、大小和引用计数等索引信息。
可以理解的是,所述存储更新单元105与图4所示的执行单元404的部分处理过程相同,所述存储更新单元105与图4所示的执行单元404在实际应用中可以合并为同一单元。
本发明实施例将程序运行所需的数据存储在预置的磁盘空间中,在程序运行时,根据预设的内存使用参数,从预置的磁盘空间中获取相应大小的数据进行查找,减少了将程序运行的全部数据加载至内存所带来的内存负荷,同时可保证数据的完整性,保证程序运行的可靠性。
 为了更清楚地说明本发明,下面将由本发明的数据处理装置所执行的数据处理方法进行详细介绍。
请参见图6,为本发明的数据处理方法的第一实施例的流程图;所述方法包括:
S101,程序运行时,根据预设的内存使用参数,从预置的磁盘空间中查找所述程序运行所需的数据并加载至内存。
由于程序所需处理的数据量往往较大,在程序运行时,直接将数据加载至内存进行处理,会占据大量的内存空间,影响程序运行,因此,可预先将程序运行所需的数据存储至预置的磁盘空间中,当程序运行时,步骤S101根据预设的内存使用参数,从所述预置的磁盘空间中读取数据并加载至内存中。其中,所述预设的内存使用参数是指预先设定的可使用的内存大小,该大小可以为内存的整个存储空间,也可以是内存的部分存储空间,所述预设的内存使用参数可根据实际需要进行设定,在此不赘述。
具体请一并参见图7,为图6所示的步骤S101的具体流程图;步骤S101包括:
S11,程序运行时,计算所述程序运行所需的数据的校验值。
步骤S11中,在程序运行时,首先计算所述程序运行所需的数据的CRC32值,该计算过程与现有的CRC的计算过程相同,在此不赘述。
S12,查找所述索引表中是否包含计算得到的所述检验值;若查找结果为是,转入步骤S13;否则,转入S17。
所述索引表包含所述预置的磁盘空间内存储的各个数据的偏移量、大小、校验值和引用计数,当步骤S11计算得到需要写入的数据的CRC32值后,步骤S12则查找所述索引表中是否包含相同的CRC32值。可以理解的是,若所述数据已被写入所述预置的磁盘空间中,则所述索引表中必定包含该CRC32值,查找结果为是,转入步骤S13;若所述数据尚未被写入所述预置的磁盘空间中,则所述索引表中未包含该CRC32值,查找结果为否,转入步骤S17。
S13,从所述索引表中读取所述校验值对应的数据的大小,比较所述数据的大小和所述预设的内存使用参数。
若步骤S12的查找结果为是,表明所述数据已被存储至所述预置的磁盘空间中,步骤S13则从所述索引表中读取所述数据的大小,并比较所述数据的大小和所述预设的内存使用参数。其中,所述预设的内存使用参数是指预先设定的可使用的内存大小,该大小可以为内存的整个存储空间,也可以是内存的部分存储空间,所述预设的内存使用参数可根据实际需要进行设定,在此不赘述。
S14,判断所述数据的大小是否大于所述预设的内存使用参数;若判断结果为是,转入步骤S15;否则,转入步骤S16。
S15,按照所述预设的内存使用参数分段从所述预置的磁盘空间中读取所述数据加载至内存中。
若步骤S14比较结果为是,步骤S15则按照所述预设的内存使用参数分段从所述预置的磁盘空间中读取所述数据,比如:若预设的内存使用参数为50M,所述数据为120M,则步骤S15每次只能读取不大于50M的数据映射至内存中,本实施例中,步骤S15按照所述预设的内存使用参数对所述数据进行分段读取,即第一次读取50M数据映射至内存,当该50M数据被处理完毕后,继续取后50M数据映射至内存进行处理,最后取剩余的20M数据映射至内存中进行处理。需要说明的是,步骤S15进行分段读取时,也可以按照预设的、不大于所述预设的内存使用参数的值进行分段读取,依上述例子,比如:步骤S15每次取40M数据映射至内存进行处理,等等,其他情况下可类似分析,在此不赘述。
S16,从所述预置的磁盘空间中读取所述数据并加载至内存;之后,转入步骤S102。
若S14比较结果为否,步骤S16则直接从所述预置的磁盘空间中读取所述数据,比如:若预设的内存使用参数为50M,所述数据为40M,则步骤S16直接读取该40M的数据映射至内存中进行处理。
S17,将所述程序运行所需的数据存储至所述预置的磁盘空间中,并更新所述索引表;之后,转入步骤S102。
若步骤S12的查找结果为否,表明所述数据尚未存储于所述预置的磁盘空间中,步骤S17则需要将所述数据存储至所述预置的磁盘空间中,具体地,步骤S17可以采用从尾追加的方式写入所述数据,即从所述预置的存储空间存储的数据的尾端添加所述需要写入的数据,然后更新所述索引表,在所述索引表中添加新写入的所述数据的偏移量、CRC32值、大小和引用计数等索引信息。
S102,运行所述程序,处理已加载的所述数据。当步骤S101将数据加载至内存后,步骤S102则运行所述程序,处理已加载的所述数据。
请参见图8,为本发明的数据处理方法的第二实施例的流程图;所述方法包括:
S201,将程序运行所需的各种数据存储至预置的磁盘空间中,并建立索引表。
所述索引表可以包括:所述预置的磁盘空间内存储的各个数据的偏移量、大小、校验值和引用计数;其中,各个数据的偏移量表示各个数据在所述预置的磁盘空间内的存储位置。实际应用中,所述预置的磁盘空间内存储的各个数据可以采用树型结构表进行表示,所述树型结构表的结构可参见图3所示。
请一并参见图9,为图8所示的步骤S201的具体流程图;步骤S201包括:
S21,预先设置用于存储程序运行所需的各种数据的磁盘空间,并建立索引表。
具体实现中,步骤S21预先在磁盘中设置一个空间,该空间用来存储程序运行所需的各种数据,并建立该预置的磁盘空间对应的索引表。所述索引表包括:所述预置的磁盘空间内存储的各个数据的偏移量、大小、校验值和引用计数;其中,各个数据的偏移量表示各个数据在所述预置的磁盘空间内的存储位置。
S22,当所述预置的磁盘空间有数据写入时,计算所述数据的校验值。
当需要向预置的磁盘空间写入数据时,步骤S22计算需要写入的数据的校验值,即CRC32值。该计算过程与现有的CRC的计算过程相同,在此不赘述。
S23,判断所述索引表中是否包含计算得到的所述检验值,若判断结果为是,转入步骤S24;否则,转入步骤S25。
所述索引表包含所述预置的磁盘空间内存储的各个数据的偏移量、大小、校验值和引用计数,当步骤S22计算得到需要写入的数据的CRC32值后,步骤S23则判断所述索引表中是否包含相同的CRC32值。可以理解的是,若需要写入的数据在此之前已被写入所述预置的磁盘空间中,则所述索引表中必定包含该CRC32值,判断结果为是,转入步骤S24,若需要写入的数据尚未被写入所述预置的磁盘空间中,则所述索引表中未包含该CRC32值,判断结果为否,转入步骤S25。
S24,更新所述索引表中的所述检验值对应的数据的引用计数;之后,转入步骤S202。
若步骤S23的判断结果为是,表明所述需要写入的数据已被存储至所述预置的磁盘空间中,步骤S24则无需再对该数据进行写入操作,仅需要更新所述索引表,将所述索引表中该数据的引用计数加1。其中,各个数据的引用计数表明各个数据需要被写入预置的磁盘空间的次数。当有相同的数据写入时,步骤S24仅对索引表中的引用计数进行更新,可避免写入同样的数据所带来的资源浪费,比如:相同的偏移量、大小等信息的存储,浪费了存储空间。
S25,将所述数据存储至所述预置的磁盘空间中,并更新所述索引表。
若步骤S23的判断结果为否,表明所述需要写入的数据尚未存储于所述预置的磁盘空间中,步骤S25则需要将所述数据存储至所述预置的磁盘空间中,具体地,步骤S25可以采用从尾追加的方式写入所述数据,即从所述预置的存储空间存储的数据的尾端添加所述需要写入的数据,然后更新所述索引表,在所述索引表中添加新写入的所述数据的偏移量、CRC32值、大小和引用计数等索引信息。
S202,程序运行时,根据预设的内存使用参数,从预置的磁盘空间中查找所述程序运行所需的数据并加载至内存。
S203,运行所述程序,处理已加载的所述数据。
本实施例中,步骤S202-步骤S203与上一实施例的步骤S101-步骤S102的具体流程相同,在此不赘述。
S204,当所述预置的磁盘空间中的数据发生变化时,更新所述索引表,并记录每次数据变化对应的所述索引表的更新信息。
每当所述预置的磁盘空间中的数据发生变化时,所述索引表也会相应发生变化,步骤S204依据发生变化的数据,更新所述索引表,并记录每次数据变化对应的所述索引表的更新信息。
S205,根据记录的每次数据变化对应的所述索引表的更新信息,对引起所述数据变化的操作进行撤销恢复。
由于所述预置的磁盘空间中的数据都以追加的方式进行写入,当需要恢复到某一操作的数据时,用户仅需要向所述数据处理装置输入撤销恢复指令,步骤S205根据该撤销恢复指令以及步骤S204记录的所述每次数据变化对应的索引表的更新信息,恢复到相应操作的索引表,即可达到对引起所述数据变化的操作进行撤销恢复。
需要说明的是,本实施例中,步骤S204与步骤S202在时序上不分先后,步骤S201将数据存储至预置的磁盘空间并建立索引表之后,如果所述预置的磁盘空间中的数据发生变化,则执行步骤S204。
本发明实施例将程序运行所需的数据存储在预置的磁盘空间中,在程序运行时,根据预设的内存使用参数,从预置的磁盘空间中获取相应大小的数据进行加载和处理,减少了将程序运行的全部数据加载至内存所带来的内存负荷,同时可保证数据的完整性,保证程序运行的可靠性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

Claims (10)

1.一种数据处理方法,其特征在于,包括:
程序运行时,根据预设的内存使用参数,从预置的磁盘空间中查找所述程序运行所需的数据并加载至内存;
运行所述程序,处理已加载的所述数据。
2.如权利要求1所述的方法,其特征在于,所述程序运行时,根据预设的内存使用参数,从预置的磁盘空间中查找所述程序运行所需的数据并加载至内存之前,还包括:
将程序运行所需的各种数据存储至预置的磁盘空间中,并建立索引表;
所述索引表包括:所述预置的磁盘空间内存储的各个数据的偏移量、大小、校验值和引用计数;
其中,各个数据的偏移量表示各个数据在所述预置的磁盘空间内的存储位置。
3.如权利要求2所述的方法,其特征在于,所述将程序运行所需的各种数据存储至预置的磁盘空间中,并建立索引表,包括:
预先设置用于存储程序运行所需的各种数据的磁盘空间,并建立索引表;
当所述预置的磁盘空间有数据写入时,计算所述数据的校验值;
判断所述索引表中是否包含计算得到的所述检验值;
若判断结果为是,更新所述索引表中的所述检验值对应的数据的引用计数;
若判断结果为否,将所述数据存储至所述预置的磁盘空间中,并更新所述索引表。
4.如权利要求2或3所述的方法,其特征在于,所述程序运行时,根据预设的内存使用参数,从预置的磁盘空间中查找所述程序运行所需的数据并加载至内存,包括:
程序运行时,计算所述程序运行所需的数据的校验值;
查找所述索引表中是否包含计算得到的所述检验值;
若查找结果为是,从所述索引表中读取所述校验值对应的数据的大小,比较所述数据的大小和所述预设的内存使用参数;
若所述数据的大小大于所述预设的内存使用参数,按照所述预设的内存使用参数分段从所述预置的磁盘空间中读取所述数据加载至内存中;
若所述数据的大小小于等于所述预设的内存使用参数,从所述预置的磁盘空间中读取所述数据并加载至内存;
若查找结果为否,将所述程序运行所需的数据存储至所述预置的磁盘空间中,并更新所述索引表。
5.如权利要求2或3所述的方法,其特征在于,还包括: 
当所述预置的磁盘空间中的数据发生变化时,更新所述索引表,并记录每次数据变化对应的所述索引表的更新信息;
根据记录的每次数据变化对应的所述索引表的更新信息,对引起所述数据变化的操作进行撤销恢复。
6.一种数据处理装置,其特征在于,包括:
查找模块,用于当程序运行时,根据预设的内存使用参数,从预置的磁盘空间中查找所述程序运行所需的数据;
加载模块,用于将所述查找模块查找到的所述数据加载至内存;
处理模块,用于运行所述程序,处理所述加载模块已加载的所述数据。
7.如权利要求6所述的装置,其特征在于,还包括:
初始化模块,用于将程序运行所需的各种数据存储至预置的磁盘空间中,并建立索引表;
所述索引表包括:所述预置的磁盘空间内存储的各个数据的偏移量、大小、校验值和引用计数;
其中,各个数据的偏移量表示各个数据在所述预置的磁盘空间内的存储位置。
8.如权利要求7所述的装置,其特征在于,所述初始化模块包括:
预置单元,用于预先设置用于存储程序运行所需的各种数据的磁盘空间,并建立索引表;
计算单元,用于当所述预置单元预置的磁盘空间有数据写入时,计算所述数据的校验值;
判断单元,用于判断所述预置单元建立的索引表中是否包含所述计算单元计算得到的所述检验值;
执行单元,用于当所述判断单元判断结果为是时,更新所述索引表中所述检验值对应的数据的引用计数;当所述判断单元判断结果为否时,将所述数据存储至所述预置的磁盘空间中,并更新所述索引表。
9.如权利要求7或8所述的装置,其特征在于,所述查找模块包括:
计算单元,用于当程序运行时,计算所述程序运行所需的数据的校验值;
查找单元,用于查找所述索引表中是否包含所述计算单元计算得到的所述检验值;
比较单元,用于当所述查找单元查找结果为是时,从所述索引表中读取所述校验值对应的数据的大小,比较所述数据的大小和所述预设的内存使用参数;
读取单元,用于当所述比较单元比较得到所述数据的大小大于所述预设的内存使用参数时,按照所述预设的内存使用参数分段从所述预置的磁盘空间中读取所述数据;当所述比较单元比较得到所述数据的大小小于等于所述预设的内存使用参数时,从所述预置的磁盘空间中读取所述数据;
存储更新单元,用于当所述查找单元查找结果为否时,将所述程序运行所需的数据存储至所述预置的磁盘空间中,并更新所述索引表。
10.如权利要求7或8所述的装置,其特征在于,还包括:
记录模块,用于当所述预置的磁盘空间中的数据发生变化时,更新所述索引表,并记录每次数据变化对应的所述索引表的更新信息;
撤销恢复模块,用于根据所述记录模块记录的每次数据变化对应的所述索引表的更新信息,对引起所述数据变化的操作进行撤销恢复。
CN201110210031.6A 2011-07-26 2011-07-26 一种数据处理方法及装置 Active CN102331920B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110210031.6A CN102331920B (zh) 2011-07-26 2011-07-26 一种数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110210031.6A CN102331920B (zh) 2011-07-26 2011-07-26 一种数据处理方法及装置

Publications (2)

Publication Number Publication Date
CN102331920A true CN102331920A (zh) 2012-01-25
CN102331920B CN102331920B (zh) 2015-04-08

Family

ID=45483708

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110210031.6A Active CN102331920B (zh) 2011-07-26 2011-07-26 一种数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN102331920B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102750174A (zh) * 2012-06-29 2012-10-24 Tcl集团股份有限公司 文件加载方法及装置
CN103617124A (zh) * 2013-11-26 2014-03-05 北京创毅视讯科技有限公司 一种闪存管理方法和装置
CN104182354A (zh) * 2014-08-26 2014-12-03 浙江宇视科技有限公司 一种视频管理方法及装置
CN104834544A (zh) * 2015-05-04 2015-08-12 广州杰赛科技股份有限公司 数据加载方法及装置
CN110647502A (zh) * 2018-06-26 2020-01-03 中兴通讯股份有限公司 一种文件加载方法、设备、装置和计算机存储介质
CN112578995A (zh) * 2019-09-29 2021-03-30 西安诺瓦星云科技股份有限公司 数据集合处理方法、装置和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1635482A (zh) * 2003-12-29 2005-07-06 北京中视联数字系统有限公司 一种嵌入式系统内存管理的方法
CN101059800A (zh) * 2006-04-21 2007-10-24 上海晨兴电子科技有限公司 在手机上显示电子书的方法和设备
CN101894115A (zh) * 2009-05-18 2010-11-24 北京大学 电子文档的图像数据处理方法及其装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1635482A (zh) * 2003-12-29 2005-07-06 北京中视联数字系统有限公司 一种嵌入式系统内存管理的方法
CN101059800A (zh) * 2006-04-21 2007-10-24 上海晨兴电子科技有限公司 在手机上显示电子书的方法和设备
CN101894115A (zh) * 2009-05-18 2010-11-24 北京大学 电子文档的图像数据处理方法及其装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102750174A (zh) * 2012-06-29 2012-10-24 Tcl集团股份有限公司 文件加载方法及装置
CN102750174B (zh) * 2012-06-29 2016-01-27 Tcl集团股份有限公司 文件加载方法及装置
CN103617124A (zh) * 2013-11-26 2014-03-05 北京创毅视讯科技有限公司 一种闪存管理方法和装置
CN103617124B (zh) * 2013-11-26 2017-01-25 北京创毅视讯科技有限公司 一种闪存管理方法和装置
CN104182354A (zh) * 2014-08-26 2014-12-03 浙江宇视科技有限公司 一种视频管理方法及装置
CN104182354B (zh) * 2014-08-26 2017-12-15 浙江宇视科技有限公司 一种视频管理方法及装置
CN104834544A (zh) * 2015-05-04 2015-08-12 广州杰赛科技股份有限公司 数据加载方法及装置
CN104834544B (zh) * 2015-05-04 2018-03-13 广州杰赛科技股份有限公司 数据加载方法及装置
CN110647502A (zh) * 2018-06-26 2020-01-03 中兴通讯股份有限公司 一种文件加载方法、设备、装置和计算机存储介质
CN112578995A (zh) * 2019-09-29 2021-03-30 西安诺瓦星云科技股份有限公司 数据集合处理方法、装置和系统

Also Published As

Publication number Publication date
CN102331920B (zh) 2015-04-08

Similar Documents

Publication Publication Date Title
US8856469B2 (en) Apparatus and method for logging optimization using non-volatile memory
CN105224237B (zh) 一种数据存储方法及装置
CN103164490B (zh) 一种不固定长度数据的高效存储实现方法和装置
CN102662690B (zh) 应用程序启动方法和装置
CN102331920B (zh) 一种数据处理方法及装置
CN103154950B (zh) 重复数据删除方法及装置
US9141626B2 (en) Volume having tiers of different storage traits
CN104182255A (zh) 一种系统应用的库文件升级方法及终端
US9116904B2 (en) File system operation on multi-tiered volume
CN105468686A (zh) 减少冗余数据的方法及装置
EP1810154A2 (en) Flash file system management
CN108777158B (zh) 测试固态硬盘Trim性能的方法、装置及计算机设备
KR20090012821A (ko) 플래시 메모리에 최적화된 입출력 제어 방법 및 장치
KR20100095904A (ko) 컴퓨팅 시스템, 그것의 부팅 방법, 및 코드 데이터 피닝 방법
CN103019787A (zh) 函数调用关系确定方法、热补丁升级方法及装置
CN102169460A (zh) 变长数据管理方法及装置
CN103559139A (zh) 一种数据存储方法及装置
US9477496B2 (en) Method and apparatus for loading classes and re-organizing class archives
CN103389942A (zh) 控制装置、存储装置及存储控制方法
CN103430178A (zh) 数据更新方法及装置和产品
CN104461384A (zh) 一种数据写入方法及存储设备
CN101131649A (zh) 设有闪存的装置的只读存储器升级速度改善方法
KR101676175B1 (ko) 전원 손실 이후 데이터 손실을 방지하기 위한 메모리 저장 장치 및 방법
CN110955632A (zh) 一种文件索引生成方法及装置
US5745749A (en) Method and system of file version clustering of object blocks using a compiler and database and having a predetermined value

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 518057 Guangdong city of Shenzhen province Nanshan District Gao Xin Road, room 9 building on the north side of block A901 No. 006 TCL Industry Research Institute building A A Building 8 floor

Applicant after: Shenzhen Wondershare Information Technology Co., Ltd.

Address before: 518057 Guangdong city of Shenzhen province Nanshan District Gao Xin Road Building A block 8 Building TCL

Applicant before: Shenzhen Wondershare Software Co., Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: SHENZHEN WONDERSHARE SOFTWARE CO., LTD. TO: SHENZHEN WONDERSHARE INFORMATION TECHNOLOGY CO., LTD.

C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 850000 Tibet autonomous region, Lhasa City, New District, west of the East Ring Road, 1-4 road to the north, south of 1-3 Road, Liu Dong building, east of the 8 unit 6, floor 2, No.

Patentee after: Wanxing Polytron Technologies Inc

Address before: 518057 Guangdong city of Shenzhen province Nanshan District Gao Xin Road, room 9 building on the north side of block A901 No. 006 TCL Industry Research Institute building A A Building 8 floor

Patentee before: Shenzhen Wondershare Information Technology Co., Ltd.