CN110413960B - 文件对比方法、装置、计算机设备及计算机可读存储介质 - Google Patents
文件对比方法、装置、计算机设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110413960B CN110413960B CN201910533077.8A CN201910533077A CN110413960B CN 110413960 B CN110413960 B CN 110413960B CN 201910533077 A CN201910533077 A CN 201910533077A CN 110413960 B CN110413960 B CN 110413960B
- Authority
- CN
- China
- Prior art keywords
- file
- target data
- compared
- data
- data segment
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种文件对比方法、装置、计算机设备及计算机可读存储介质。所述方法属于过程优化技术,所述方法包括:分别将第一待对比文件以及第二待对比文件划分为数量相同的多个数据段;按顺序从第一待对比文件中读取一数据段到内存中作为第一目标数据段以及按顺序从第二待对比文件中读取一数据段到内存中作为第二目标数据段;通过预构建的字典获取第一目标数据段和所述第二目标数据段中相异的数据存入到字典中;判断第一待对比文件以及第二待对比文件中是否存在未读取的数据段;若是,返回所述读取数据段的步骤。本发明实施例由于每次只是读取部分数据到内存中进行对比,从而可降低数据对比过程对终端内存的占用以及终端硬件能力的要求。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种文件对比方法、装置、计算机设备及计算机可读存储介质。
背景技术
现有的文件对比工具,基本上都需要将待对比的文件全部加载到内存中后,再进行全量对比,对内存容量依赖比较严重。
在条件有限的情况下,如限于机器硬件及扩展困难的情况,或者文件较大的情况下,很难实现文件相似的对比,或只能对比文件的部分数据。
发明内容
本发明实施例提供了一种文件对比方法、装置、计算机设备及计算机可读存储介质,旨在解决现有文件对比工具对内存容量依赖严重的问题。
第一方面,本发明实施例提供了一种文件对比方法,其包括:
分别将第一待对比文件以及第二待对比文件划分为数量相同的多个数据段,其中,各所述数据段包含的数据的数量小于预设的数量阈值,所述数据包括主键以及键值;
按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段;
通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到所述字典中;
判断所述第一待对比文件以及所述第二待对比文件中是否存在未读取到内存中的数据段;
若所述第一待对比文件以及所述第二待对比文件中存在未读取到内存中的数据段,返回所述按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段的步骤。
第二方面,本发明实施例还提供了一种文件对比装置,其包括:
划分单元,用于分别将第一待对比文件以及第二待对比文件划分为数量相同的多个数据段,其中,各所述数据段包含的数据的数量小于预设的数量阈值,所述数据包括主键以及键值;
读取单元,按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段;
对比单元,用于通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到所述字典中;
第一判断单元,用于判断所述第一待对比文件以及所述第二待对比文件中是否存在未读取到内存中的数据段;
第一返回单元,用于若所述第一待对比文件以及所述第二待对比文件中存在未读取到内存中的数据段,返回所述按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段的步骤。
第三方面,本发明实施例还提供了一种计算机设备,其包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序当被处理器执行时可实现上述方法。
本发明实施例提供了一种文件对比方法、装置、计算机设备及存储介质。其中,所述方法包括:分别将第一待对比文件以及第二待对比文件划分为数量相同的多个数据段,其中,各所述数据段包含的数据的数量小于预设的数量阈值,所述数据包括主键以及键值;按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段;通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到所述字典中;判断所述第一待对比文件以及所述第二待对比文件中是否存在未读取到内存中的数据段;若所述第一待对比文件以及所述第二待对比文件中存在未读取到内存中的数据段,返回所述按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段的步骤。本发明实施例由于每次只是读取部分数据到内存中进行对比,从而可降低数据对比过程对终端内存的占用以及终端硬件能力的要求。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种文件对比方法的流程示意图;
图2为本发明实施例提供的一种文件对比方法的子流程示意图;
图3为本发明另一实施例提供的一种文件对比方法的流程示意图;
图4为本发明实施例提供的一种文件对比装置的示意性框图;
图5为本发明实施例提供的一种文件对比装置的对比单元的示意性框图;
图6为本发明另一实施例提供的一种文件对比装置的示意性框图;以及
图7为本发明实施例提供的一种计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
请参阅图1,图1是本发明实施例提供的一种文件对比方法的流程示意图。本发明提供的方法应用于终端中。如图所示,该方法包括以下步骤S1-S5。
S1,分别将第一待对比文件以及第二待对比文件划分为数量相同的多个数据段,其中,各所述数据段包含的数据的数量小于预设的数量阈值,所述数据包括主键以及键值。
具体实施中,为了减少内存占用,本方案中,分别将所述第一待对比文件以及第二待对比文件划分为数量相同的多个数据段,其中,各所述数据段包含的数据的数量小于预设的数量阈值。需要说明的是,数量阈值可由本领域技术人员根据终端内存的实际情况进行设定,例如,在一实施例中,数量阈值设定为5000。
需要说明的是,第一待对比文件以及第二待对比文件均包含多个由键值对组成的数据。键值对包括主键(Key)以及键值(value)。
在一实施例中,可通过在第一待对比文件以及第二待对比文件中添加分隔符的方式来将第一待对比文件以及第二待对比文件划分为多个数据段,具体实施中,每间隔预设数量的数据在第一待对比文件以及第二待对比文件中添加分隔符,从而通过分隔符来实现将第一待对比文件以及第二待对比文件划分为多个数据段。
S2,按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段。
具体实施中,在将所述第一待对比文件以及第二待对比文件划分为多个数据段后,本方案中,按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段。
本方案中,每次只是读取第一待对比文件以及第二待对比文件的一数据段到内存中,可极大地降低对终端内存的占用。
S3,通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到所述字典中。
具体实施中,预先构建一字典(NSDictionary),字典是由键值对组成的数据集合。键值对指的是主键(Key)与键值(value)的映射关系,其中,主键在字典中是唯一的,数据通过键值对的形式存储在字典里。
具体地,可通过字典创建工具来创建字典,常用的字典创建工具包括hashMap(哈希映射)以及concurrentMap(并发映射)等,本发明对此不做具体限定。
由于字典中不能存在相同的主键,则所述第一目标数据段和所述第二目标数据段中相同的数据不能同时存入到字典中,由此可通过该字典将所述第一目标数据段和所述第二目标数据段中相异的数据找出并存入到所述字典中。
在一实施例中,如图2所示,所述步骤S3可包括步骤S21-S28。
S21,从所述第一目标数据段或者所述第二目标数据段中获取一数据作为目标数据,并判断预构建的字典中是否存在与所述目标数据的主键相同的主键。
具体实施中,从所述第一目标数据段或者所述第二目标数据段中获取一数据作为目标数据,该目标数据可为第一待对比文件的数据段中的数据,也可为第二待对比文件的数据段中的数据。在获取到目标数据后,判断预构建的字典中是否存在与所述目标数据的主键相同的主键。
在一实施例中,为了提高效率,采用多线程技术同时从第一目标数据段以及第二目标数据段中同时获取到目标数据进行后续流程,各目标数据之间相互独立,互不干扰。
需要说明的是,通过采用多线程技术,应用程序可以在同一时间里使用芯片的不同部分,从而使芯片同时进行多线程处理,使芯片性能得到提升。
S22,若所述字典中不存在与所述目标数据的主键相同的主键,则将所述目标数据存入到所述字典中。
具体实施中,如果所述字典中不存在与所述目标数据的主键相同的主键,则说明字典中不存在与目标数据相同的数据。
本方案中,如果字典中不存在与目标数据相同的数据,则将所述目标数据的存入到所述字典中。
S23,若所述字典中存在与所述目标数据的主键相同的主键,将所述字典中与所述目标数据的主键相同的主键作为目标主键,并判断所述目标数据的主键的键值是否与所述目标主键的键值相同。
具体实施中,如果所述字典中存在与所述目标数据的主键相同的主键,将所述字典与所述目标数据的主键相同的主键作为目标主键。并进一步判断所述目标数据的主键的键值是否与所述目标主键的键值相同。
如果所述目标数据的主键的键值与所述目标主键的键值相同,则说明字典中存在与所述目标数据相同的数据,即目标数据为第一待对比文件与第二待对比文件中共有的数据(因为同一个文件中不可能存在相同的数据)。
如果所述目标数据的主键的键值与所述目标主键的键值不相同,则说明字典中不存在与所述目标数据相同的数据。
S24,若所述目标数据的主键的键值与所述目标主键的键值相同,则将所述目标主键对应的数据从所述字典中移除。
具体实施中,如果所述目标数据的主键的键值与所述目标主键的键值相同,则说明存在与所述目标数据相同的数据,即目标数据为第一待对比文件与第二待对比文件中共有的数据。
本方案中,将第一待对比文件与第二待对比文件中共有的数据从字典中移除,从而可使得字典中只保存第一待对比文件与第二待对比文件中不同的数据。同时,将所述目标主键从所述字典中移除也可降低内存占用。
S25,若所述目标数据的主键的键值与所述目标主键的键值不相同,则将所述目标数据以及所述目标主键对应的数据写入预建立的结果文件中,并将所述目标主键对应的数据从所述字典中移除。
具体实施中,如果所述目标数据的主键的键值与所述目标主键的键值不相同,则说明字典中不存在与所述目标数据相同的数据;此时,将所述目标数据以及所述目标主键对应的数据写入预建立的结果文件中,并将所述目标主键对应的数据从所述字典中移除。
需要说明的是,结果文件用于存放第一待对比文件以及第二待对比文件中不相同的部分。
S26,将所述目标数据从所述第一目标数据段或者所述第二目标数据段中移除。
具体实施中,将所述目标数据从所述第一目标数据段或者所述第二目标数据段中移除,一方面降低对内存的占用,降低内存占用率;另一方面也可避免重复获取目标数据,造成资源的浪费。
S27,判断所述第一目标数据段或者所述第二目标数据段中是否还存在数据。
具体实施中,判断所述第一目标数据段或者所述第二目标数据段中是否还存在数据,若存在,则说明所述第一目标数据段或者所述第二目标数据段中的数据还未处理完毕,若不存在,则说明所述第一目标数据段以及所述第二目标数据段中的数据已经处理完毕。
若所述第一目标数据段以及所述第二目标数据段中均不存在数据,则转到步骤S4。
S28,若所述第一目标数据段或者所述第二目标数据段中还存在数据,返回所述从所述第一目标数据段或者所述第二目标数据段中获取一数据作为目标数据,并判断预构建的字典中是否存在与所述目标数据的主键相同的主键的步骤。
若所述第一目标数据段或者所述第二目标数据段中还存在数据,返回所述从所述第一目标数据段或者所述第二目标数据段中获取一数据作为目标数据,并判断预构建的字典中是否存在与所述目标数据的主键相同的主键的步骤,直到所述第一目标数据段以及所述第二目标数据段中均不存在数据为止。
S4,判断所述第一待对比文件以及所述第二待对比文件中是否存在未读取到内存中的数据段。
具体实施中,判断所述第一待对比文件以及所述第二待对比文件中是否存在未读取到内存中的数据段。如果所述第一待对比文件以及所述第二待对比文件中存在未读取的数据段,则说明未对比完毕。如果所述第一待对比文件以及所述第二待对比文件中不存在未读取的数据段,则说明已经对比完毕了。
S5,若所述第一待对比文件以及所述第二待对比文件中存在未读取到内存中的数据段,返回所述按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段的步骤。
在本发明实施例中,如果所述第一待对比文件以及所述第二待对比文件中存在未读取到内存中的数据段,返回所述按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段的步骤,如此循环直到所述第一待对比文件以及所述第二待对比文件中均不存在未读取的数据段为止。
通过应用本发明实施例的技术方案,分别将第一待对比文件以及第二待对比文件划分为数量相同的多个数据段,其中,各所述数据段包含的数据的数量小于预设的数量阈值,所述数据包括主键以及键值;按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段;通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到所述字典中;判断所述第一待对比文件以及所述第二待对比文件中是否存在未读取到内存中的数据段;若所述第一待对比文件以及所述第二待对比文件中存在未读取到内存中的数据段,返回所述按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段的步骤。本发明实施例由于每次只是读取部分数据到内存中进行对比,从而可降低数据对比过程对终端内存的占用以及终端硬件能力的要求。
图3是本发明另一实施例提供的一种文件对比方法的流程示意图。如图3所示,本实施例的文件对比方法包括步骤S31-S35。其中步骤S31-S34与上述实施例中的步骤S1-S4类似,在此不再赘述。下面详细说明本实施例中所增加的步骤S35。
S35,若所述第一待对比文件以及所述第二待对比文件中不存在未读取到内存中的数据段,将所述字典中的数据写入到所述结果文件中,并将所述结果文件作为所述第一待对比文件与所述第二待对比文件相异的部分。
具体实施中,如果所述第一待对比文件以及所述第二待对比文件中不存在未读取到内存中的数据段,则将所述字典中的数据写入到所述结果文件中,并将所述结果文件中的数据作为所述第一待对比文件与所述第二待对比文件相异的部分。
图4是本发明实施例提供的一种文件对比装置40的示意性框图。如图4所示,对应于以上文件对比方法,本发明还提供一种文件对比装置40。该文件对比装置40包括用于执行上述文件对比方法的单元,该装置可以被配置于台式电脑、平板电脑、手提电脑、等终端中。具体地,请参阅图4,该文件对比装置40包括划分单元41、读取单元42、对比单元43、第一判断单元44以及第一返回单元45。
划分单元41,用于分别将第一待对比文件以及第二待对比文件划分为数量相同的多个数据段,其中,各所述数据段包含的数据的数量小于预设的数量阈值,所述数据包括主键以及键值;
读取单元42,按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段;
对比单元43,用于通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到所述字典中;
第一判断单元44,用于判断所述第一待对比文件以及所述第二待对比文件中是否存在未读取到内存中的数据段;
第一返回单元45,用于若所述第一待对比文件以及所述第二待对比文件中存在未读取到内存中的数据段,返回所述按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段的步骤。
在一实施例中,如图5所示,所述对比单元43包括第二判断单元431、第一储存单元432、第三判断单元433、第一移除单元434、第二储存单元435、第二移除单元436、第四判断单元437以及第二返回单元438。
第二判断单元431,用于从所述第一目标数据段或者所述第二目标数据段中获取一数据作为目标数据,并判断预构建的字典中是否存在与所述目标数据的主键相同的主键;
第一储存单元432,用于若所述字典中不存在与所述目标数据的主键相同的主键,则将所述目标数据存入到所述字典中。
第三判断单元433,用于若所述字典中存在与所述目标数据的主键相同的主键,将所述字典中与所述目标数据的主键相同的主键作为目标主键,并判断所述目标数据的主键的键值是否与所述目标主键的键值相同;
第一移除单元434,用于若所述目标数据的主键的键值与所述目标主键的键值相同,则将所述目标主键对应的数据从所述字典中移除;
第二储存单元435,用于若所述目标数据的主键的键值与所述目标主键的键值不相同,则将所述目标数据以及所述目标主键对应的数据存入结果文件中,并将所述目标主键对应的数据从所述字典中移除;
第二移除单元436,用于将所述目标数据从所述第一目标数据段或者所述第二目标数据段中移除;
第四判断单元437,用于判断所述第一目标数据段或者所述第二目标数据段中是否还存在数据;
第二返回单元438,用于若所述第一目标数据段或者所述第二目标数据段中还存在数据,返回所述从所述第一目标数据段或者所述第二目标数据段中获取一数据作为目标数据,并判断预构建的字典中是否存在与所述目标数据的主键相同的主键的步骤。
图6是本发明另一实施例提供的一种文件对比装置40的示意性框图。如图7所示,本实施例的文件对比装置40是上述实施例的基础上增加了写入单元46。
写入单元46,用于若所述第一待对比文件以及所述第二待对比文件中不存在未读取到内存中的数据段,将所述字典中的数据写入到所述结果文件中,并将所述结果文件作为所述第一待对比文件与所述第二待对比文件相异的部分。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述文件对比装置40和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述文件对比装置可以实现为一种计算机程序的形式,该计算机程序可以在如图7所示的计算机设备上运行。
请参阅图7,图7是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是终端,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等具有通信功能的电子设备。
参阅图7,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032被执行时,可使得处理器502执行一种文件对比方法。
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种文件对比方法。
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:
分别将第一待对比文件以及第二待对比文件划分为数量相同的多个数据段,其中,各所述数据段包含的数据的数量小于预设的数量阈值,所述数据包括主键以及键值;
按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段;
通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到所述字典中;
判断所述第一待对比文件以及所述第二待对比文件中是否存在未读取到内存中的数据段;
若所述第一待对比文件以及所述第二待对比文件中存在未读取到内存中的数据段,返回所述按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段的步骤。
在一实施例中,处理器502在实现所述通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到所述字典中步骤时,具体实现如下步骤:
从所述第一目标数据段或者所述第二目标数据段中获取一数据作为目标数据,并判断预构建的字典中是否存在与所述目标数据的主键相同的主键;
若所述字典中不存在与所述目标数据的主键相同的主键,则将所述目标数据存入到所述字典中;
若所述字典中存在与所述目标数据的主键相同的主键,将所述字典中与所述目标数据的主键相同的主键作为目标主键,并判断所述目标数据的主键的键值是否与所述目标主键的键值相同;
若所述目标数据的主键的键值与所述目标主键的键值相同,则将所述目标主键对应的数据从所述字典中移除;
若所述目标数据的主键的键值与所述目标主键的键值不相同,则将所述目标数据以及所述目标主键对应的数据写入预建立的结果文件中,并将所述目标主键对应的数据从所述字典中移除;
将所述目标数据从所述第一目标数据段或者所述第二目标数据段中移除;
判断所述第一目标数据段或者所述第二目标数据段中是否还存在数据;
若所述第一目标数据段或者所述第二目标数据段中还存在数据,返回所述从所述第一目标数据段或者所述第二目标数据段中获取一数据作为目标数据,并判断预构建的字典中是否存在与所述目标数据的主键相同的主键的步骤。
在一实施例中,处理器502还实现如下步骤:
若所述第一待对比文件以及所述第二待对比文件中不存在未读取到内存中的数据段,将所述字典中的数据写入到所述结果文件中,并将所述结果文件作为所述第一待对比文件与所述第二待对比文件相异的部分。
应当理解,在本申请实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该计算机程序被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序。该计算机程序被处理器执行时使处理器执行如下步骤:
分别将第一待对比文件以及第二待对比文件划分为数量相同的多个数据段,其中,各所述数据段包含的数据的数量小于预设的数量阈值,所述数据包括主键以及键值;
按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段;
通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到所述字典中;
判断所述第一待对比文件以及所述第二待对比文件中是否存在未读取到内存中的数据段;
若所述第一待对比文件以及所述第二待对比文件中存在未读取到内存中的数据段,返回所述按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段的步骤。
在一实施例中,所述处理器在执行所述计算机程序而实现所述通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到所述字典中步骤时,具体实现如下步骤:
从所述第一目标数据段或者所述第二目标数据段中获取一数据作为目标数据,并判断预构建的字典中是否存在与所述目标数据的主键相同的主键;
若所述字典中不存在与所述目标数据的主键相同的主键,则将所述目标数据存入到所述字典中;
若所述字典中存在与所述目标数据的主键相同的主键,将所述字典中与所述目标数据的主键相同的主键作为目标主键,并判断所述目标数据的主键的键值是否与所述目标主键的键值相同;
若所述目标数据的主键的键值与所述目标主键的键值相同,则将所述目标主键对应的数据从所述字典中移除;
若所述目标数据的主键的键值与所述目标主键的键值不相同,则将所述目标数据以及所述目标主键对应的数据写入预建立的结果文件中,并将所述目标主键对应的数据从所述字典中移除;
将所述目标数据从所述第一目标数据段或者所述第二目标数据段中移除;
判断所述第一目标数据段或者所述第二目标数据段中是否还存在数据;
若所述第一目标数据段或者所述第二目标数据段中还存在数据,返回所述从所述第一目标数据段或者所述第二目标数据段中获取一数据作为目标数据,并判断预构建的字典中是否存在与所述目标数据的主键相同的主键的步骤。
在一实施例中,所述处理器在执行所述计算机程序还实现如下步骤:
若所述第一待对比文件以及所述第二待对比文件中不存在未读取到内存中的数据段,将所述字典中的数据写入到所述结果文件中,并将所述结果文件作为所述第一待对比文件与所述第二待对比文件相异的部分。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,尚且本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (6)
1.一种文件对比方法,其特征在于,包括:
在第一待对比文件以及第二待对比文件中每间隔预设数量的数据添加分隔符,以将所述第一待对比文件以及所述第二待对比文件划分为多个数据段,其中,各所述数据段包含的数据的数量小于预设的数量阈值,所述数据包括主键以及键值;
按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段;
通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到所述字典中;
判断所述第一待对比文件以及所述第二待对比文件中是否存在未读取到内存中的数据段;
若所述第一待对比文件以及所述第二待对比文件中存在未读取到内存中的数据段,返回所述按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段的步骤;
所述通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到所述字典中,包括:
从所述第一目标数据段或者所述第二目标数据段中获取一数据作为目标数据,并判断预构建的字典中是否存在与所述目标数据的主键相同的主键;
若所述字典中不存在与所述目标数据的主键相同的主键,则将所述目标数据存入到所述字典中;
若所述字典中存在与所述目标数据的主键相同的主键,将所述字典中与所述目标数据的主键相同的主键作为目标主键,并判断所述目标数据的主键的键值是否与所述目标主键的键值相同;
若所述目标数据的主键的键值与所述目标主键的键值相同,则将所述目标主键对应的数据从所述字典中移除;
若所述目标数据的主键的键值与所述目标主键的键值不相同,则将所述目标数据以及所述目标主键对应的数据写入预建立的结果文件中,并将所述目标主键对应的数据从所述字典中移除。
2.根据权利要求1所述的文件对比方法,其特征在于,所述通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到结果文件中,还包括:
将所述目标数据从所述第一目标数据段或者所述第二目标数据段中移除;
判断所述第一目标数据段或者所述第二目标数据段中是否还存在数据;
若所述第一目标数据段或者所述第二目标数据段中还存在数据,返回所述从所述第一目标数据段或者所述第二目标数据段中获取一数据作为目标数据,并判断预构建的字典中是否存在与所述目标数据的主键相同的主键的步骤。
3.根据权利要求2所述的文件对比方法,其特征在于,所述方法还包括:
若所述第一待对比文件以及所述第二待对比文件中不存在未读取到内存中的数据段,将所述字典中的数据写入到所述结果文件中,并将所述结果文件作为所述第一待对比文件与所述第二待对比文件相异的部分。
4.一种文件对比装置,其特征在于,包括:
划分单元,用于在第一待对比文件以及第二待对比文件中每间隔预设数量的数据添加分隔符,以将所述第一待对比文件以及所述第二待对比文件划分为多个数据段,其中,各所述数据段包含的数据的数量小于预设的数量阈值,所述数据包括主键以及键值;
读取单元,按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段;
对比单元,用于通过预构建的字典获取所述第一目标数据段和所述第二目标数据段中相异的数据存入到所述字典中;
第一判断单元,用于判断所述第一待对比文件以及所述第二待对比文件中是否存在未读取到内存中的数据段;
第一返回单元,用于若所述第一待对比文件以及所述第二待对比文件中存在未读取到内存中的数据段,返回所述按顺序从所述第一待对比文件中读取一未读取的数据段到内存中作为第一目标数据段以及按顺序从所述第二待对比文件中读取一未读取的数据段到内存中作为第二目标数据段的步骤;
所述对比单元包括:
第二判断单元,用于从所述第一目标数据段或者所述第二目标数据段中获取一数据作为目标数据,并判断预构建的字典中是否存在与所述目标数据的主键相同的主键;
第一储存单元,用于若所述字典中不存在与所述目标数据的主键相同的主键,则将所述目标数据存入到所述字典中;
第三判断单元,用于若所述字典中存在与所述目标数据的主键相同的主键,将所述字典中与所述目标数据的主键相同的主键作为目标主键,并判断所述目标数据的主键的键值是否与所述目标主键的键值相同;
第一移除单元,用于若所述目标数据的主键的键值与所述目标主键的键值相同,则将所述目标主键对应的数据从所述字典中移除;
第二储存单元,用于若所述目标数据的主键的键值与所述目标主键的键值不相同,则将所述目标数据以及所述目标主键对应的数据存入结果文件中,并将所述目标主键对应的数据从所述字典中移除。
5.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-3中任一项所述的方法。
6.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序当被处理器执行时可实现如权利要求1-3中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910533077.8A CN110413960B (zh) | 2019-06-19 | 2019-06-19 | 文件对比方法、装置、计算机设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910533077.8A CN110413960B (zh) | 2019-06-19 | 2019-06-19 | 文件对比方法、装置、计算机设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110413960A CN110413960A (zh) | 2019-11-05 |
CN110413960B true CN110413960B (zh) | 2023-03-28 |
Family
ID=68359448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910533077.8A Active CN110413960B (zh) | 2019-06-19 | 2019-06-19 | 文件对比方法、装置、计算机设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110413960B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653554A (zh) * | 2014-11-14 | 2016-06-08 | 卓望数码技术(深圳)有限公司 | 一种文件数据比对方法和系统 |
CN106649676A (zh) * | 2016-12-15 | 2017-05-10 | 北京锐安科技有限公司 | 一种基于hdfs存储文件的去重方法及装置 |
CN108399151A (zh) * | 2017-02-06 | 2018-08-14 | 百度在线网络技术(北京)有限公司 | 数据比对系统和方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317942A (zh) * | 2014-10-31 | 2015-01-28 | 北京思特奇信息技术股份有限公司 | 一种基于Hadoop云平台的海量数据比对方法及系统 |
US20170371713A1 (en) * | 2016-06-27 | 2017-12-28 | Sidra Medical and Research Center | Intelligent resource management system |
CN109299093A (zh) * | 2018-09-17 | 2019-02-01 | 平安科技(深圳)有限公司 | Hive数据库中拉链表的更新方法、装置和计算机设备 |
CN109815452B (zh) * | 2018-12-25 | 2023-04-07 | 东软集团股份有限公司 | 文本比较方法、装置、存储介质及电子设备 |
CN109783454A (zh) * | 2019-01-23 | 2019-05-21 | 成都易海通科技有限公司 | 一种超大文本文件比对方法 |
-
2019
- 2019-06-19 CN CN201910533077.8A patent/CN110413960B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653554A (zh) * | 2014-11-14 | 2016-06-08 | 卓望数码技术(深圳)有限公司 | 一种文件数据比对方法和系统 |
CN106649676A (zh) * | 2016-12-15 | 2017-05-10 | 北京锐安科技有限公司 | 一种基于hdfs存储文件的去重方法及装置 |
CN108399151A (zh) * | 2017-02-06 | 2018-08-14 | 百度在线网络技术(北京)有限公司 | 数据比对系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110413960A (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8001273B2 (en) | Parallel processing of input data to locate landmarks for chunks | |
US9575984B2 (en) | Similarity analysis method, apparatus, and system | |
US8296274B2 (en) | Considering multiple lookups in bloom filter decision making | |
CN111324303B (zh) | Ssd垃圾回收方法、装置、计算机设备及存储介质 | |
CN110718264A (zh) | 测试固态硬盘信息的方法、装置、计算机设备及存储介质 | |
CN109582228B (zh) | 基于nand闪存控制器的自动读重试的硬件加速方法及装置 | |
CN110333971B (zh) | Ssd坏块表备份方法、装置、计算机设备及存储介质 | |
CN112559386A (zh) | 提升ssd性能的方法、装置、计算机设备及存储介质 | |
CN115061635A (zh) | 固态硬盘闪存块读取次数压缩的方法、装置、计算机设备及存储介质 | |
CN109521970B (zh) | 一种数据处理方法及相关设备 | |
CN117369731B (zh) | 一种数据的缩减处理方法、装置、设备及介质 | |
CN110413960B (zh) | 文件对比方法、装置、计算机设备及计算机可读存储介质 | |
CN110471625B (zh) | 坏块信息保护方法、装置、计算机设备及存储介质 | |
CN110674086A (zh) | 数据合并方法、装置、电子设备及存储介质 | |
CN110955388A (zh) | 一种存储服务器及其数据存储方法、装置和存储介质 | |
CN114374392A (zh) | 一种数据压缩存储方法、装置、终端设备及可读存储介质 | |
CN108959517B (zh) | 文件管理方法、装置及电子设备 | |
CN109885551B (zh) | 电子装置、元数据处理方法和计算机可读存储介质 | |
CN115525208A (zh) | 存储管理方法、存储设备及存储介质 | |
CN109213526B (zh) | 用于确定处理器操作的方法及装置 | |
EP3048541A1 (en) | File access method and device | |
CN111597127A (zh) | 混合slc缓存的方法、装置、计算机设备及存储介质 | |
WO2019100646A1 (zh) | 规则引擎文件的拆分调用方法、电子装置及存储介质 | |
CN111125715A (zh) | 基于固态硬盘的tcg数据处理加速方法、装置、计算机设备及存储介质 | |
KR20160132514A (ko) | 전자 장치 및 이의 페이지 병합 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |