一种对比打包文件的方法,装置及其系统制造方法及图纸

技术编号:10751678 阅读:129 留言:0更新日期:2014-12-11 09:55
本发明专利技术公开了一种对比打包文件的方法,装置以及系统。该方法包括两条独立的流水线,每条流水线内包括5个独立的线程,5个独立的任务队列和一个差异结果集合。两条流水线在程序启动时同时运行,其每条流水线对文件的操作包括查询每一个包内文件名对应的包内地址;根据文件在包内的地址由低到高排序,将排序的文件名存入文件名对比队列中;依次运行文件名比较线程,文件校验值比较线程,文件读取线程,文件解压线程和文件内容比较线程;最后从差异结果集合中取出所有文件名,并输出。本发明专利技术相对于传统的比较方式,有较快的比较速度。特别是通过两个独立的硬盘分别存储要对比的打包文件,两个流水线分别对应一个硬盘上的打包文件,能极大的提高效率,缩短时间。

【技术实现步骤摘要】
一种对比打包文件的方法,装置及其系统
本专利技术涉及一种对比打包文件的方法,特别是一种能对比打包文件的装置以及系统。
技术介绍
在大型客户端中所保存的资源文件通常是以压缩包的形式存在。现有的对比打包文件方法在对比两个压缩包中的文件内容是否完全一致时需要如下的三步处理过程:第一步,将第一个压缩包内的所有文件内容解压缩到硬盘上;第二步,再将第二个压缩包内的所有文件内容解压缩到硬盘上;第三步,对比两份解压缩后的相对应文件,确认所述两份文件内容是否相同。但所述这种现有的处理方式有如下四个重要的缺点:缺点1,由于所述现有处理过程的第一步和第二步中的解压缩处理需要进行硬盘的读写操作,因此处理速度相对变得非常缓慢,特别是当压缩包越大,所需要的读写时间就越长;缺点2,由于所述现有处理过程第三步的对比过程均为单一线程,如在文件读取过程中无法同时进行解压缩处理,而在进行解压缩处理过程中又无法同时进行对比文件的处理;缺点3,在执行完所有处理过程并输出对比结果后还需要将前两步解压到硬盘上的文件内容进行清理,从而减少对硬盘空间的占用,但同时该过程也需要一定的时间来进行硬盘的写操作;缺点4,现有的方法在进行文件读取过程中,由于没有考虑压缩包内文件在压缩包里面的地址顺序,而根据硬盘的机械特性,硬盘磁头在高地址与低地址之间反复跳动寻址,将影响文件读取的效率。因此现有的不根据地址顺序的读取会降低硬盘的读取效率。因此所述的现有的对比打包文件方法的效率非常低,当打包文件越大,其所需的时间也越长。
技术实现思路
为了解决现有技术中所存在的上述问题,本专利技术的目的是提供一种高效的对比打包文件的方法,及其对应该算法的对比打包文件的装置。本专利技术解决其技术问题所采用的技术方案是:一种对比打包文件的方法,包括两条独立的流水线,每条流水线内包括5个独立的线程,5个独立的任务队列和一个差异结果集合。整个方法的进程里面有10个独立线程,10个任务队列和两个差异结果集。进一步,每个线程独立完成自己的工作,即每次从自己的任务队列中取出一个任务来完成,之后放入下一个任务队列中。由于线程是可以独立使用CPU内核进行工作的,因此所有的线程不会阻塞,CPU达到最高的运转效率。且线程和线程间不会产生较为复杂的影响。进一步,每条流水线中的独立线程分别为:文件名比较线程,文件校验值比较线程,文件读取线程,文件解压线程,文件内容比较线程。且此5个线程并行工作。进一步,其每条流水线中的独立队列为:文件名比较队列,文件校验值比较队列,文件读取队列,文件解压队列,文件内容比较队列。进一步,用于对比的包文件中,存储了每一个包内的文件名所对应的包内文件地址和校验值。进一步,校验值可选用CRC。进一步,差异结果集合中存储了内容上有差异的文件。即文件对比的输出结果。进一步,两条流水线在程序启动时同时运行,其每条流水线对文件的操作过程是:1)查询每一个包内文件名对应的包内地址;2)根据文件在包内的地址由低到高排序;3)将排序的文件名存入文件名对比队列中;4)运行:文件名比较线程,文件校验值比较线程,文件读取线程,文件解压线程和文件内容比较线程;5)从差异结果集合中取出所有文件名,并输出。进一步,“文件名比较线程”工作过程如下:1)取出本流水线“文件名比较队列”中的一个文件;2)在另一条流水线的“文件名比较队列”中查找此文件名;3)若能找到,则将此文件放入本流水线的“文件校验值对比队列”,并将其从本流水线的“文件名比较队列”中删除。若不能找到则将其存入“差异结果集合”中;4)返回步骤1),以便取下一个文件。进一步,“文件校验值对比线程”工作过程如下:1)取出本流水线“文件校验值对比队列”中的一个文件;2)在另一条流水线的“文件校验值对比队列”中查找此文件名;3)若能找到,跳转到步骤4)。若没有找到,则不做任何处理,跳转到步骤5);4)对比两个文件的校验值值。若此时两个文件的校验值不同则将其存入“差异结果集合”中。则若此时两个文件的校验值值相同,则将此文件放入本流水线的“文件读取队列”,并将其从本流水线的“文件校验值对比队列”中删除;5)返回步骤1),以便取下一个文件。进一步,“文件读取线程”工作过程如下:1)取出本流水线“文件读取队列”中的一个文件;2)将文件内容读取到内存中;3)将此文件放入本流水线的“文件解压队列”,并将其从本流水线的“文件读取队列”中删除;4)返回步骤1,以便取下一个文件。进一步,“文件解压线程”工作过程如下:1)取出本流水线“文件解压队列”中的一个文件;2)将文件内容在内存中解压;3)将此文件放入本流水线的“文件内容比较队列”,并将其从本流水线的“文件解压队列”中删除;4)返回步骤1,以便取下一个文件。进一步,“文件内容比较线程”工作过程如下:1)取出本流水线“文件内容比较队列”中的一个文件;2)在另一条流水线的“文件内容比较队列”中查找此文件名;3)若能找到,则转到步骤4。若没有找到,则不做任何处理,跳转到步骤5;4)比较文件内容,若此时两个文件内容不同,则将其存入“差异结果集合”中。则若此时两个文件的内容相同,将其从本流水线的“文件内容比较队列”中删除;5)返回步骤1,以便取下一个文件。进一步,文件名比较线程工作过程如下:当所有队列为空时,则表明所有文件已经比较完成。此时输出“差异结果集合”中的文件,此集合中的文件即为所求。进一步,用于此方法的设备或系统有两个独立的硬盘,每个硬盘上存储一份需要对比的打包文件,且每个流水线对应一个硬盘。进一步,两个独立硬盘可以是通过网络映射或类似的方法与设备或系统进行连接。进一步,用于此方法的设备或系统,包括处理器用于数据的计算处理,输入部用于输入处理,输出部用于输出结果,主存储部用于存储对比方法所需要的程序指令代码,辅存储部用于文件队列的存储以及存储解压缩时所产生的临时文件,外部存储部用于存储打包文件的数据,差异结果集合中存储了内容上有差异的文件。进一步,所述主存储部包括流水线流程控制以及两条相互独立的流水线流程。进一步,所述流水线流程控制中包括:流水线进程管理部用于管理协调和调度所述的两条相互独立的流水线流程,线程管理部用于管理调度流水线流程,文件名比较处理部对应文件名比较,文件校验值比较处理部对应文件校验值比较,文件内容比较处理部对应文件内容比较。进一步,所述辅存储部用于存储对应所述两条相互独立流水线流程所需的文件名比较队列,文件校验值比较队列,文件读取队列,文件解压队列,文件内容比较队列。本专利技术的有益效果是:两个包对应的两个流水线并行工作,10个线程负责文件比较的各个阶段并且能并行工作,且无需对包内文件依次解压到硬盘上。相对于传统的比较方式,有较快的比较速度。特别是通过两个独立的硬盘分别存储要对比的打包文件,两个流水线分别对应一个硬盘上的打包文件,能极大的提高效率,缩短时间。附图说明下面结合附图和实施例对本专利技术作进一步说明。图1是本专利技术所提打包文件对比方法的两条流水线工作示意图;图2是本专利技术所提打包文件对比装置即系统的框架图;图3是流水线处理流程图;图4是文件名比较线程处理流程图;图5是文件校验值比较线程处理流程图;图6是文件读取线程处理流程图;图7是文件解压线程处理流程图;图8是文件内容比较线程处理流程图;图中1处理器,本文档来自技高网...
一种对比打包文件的方法,装置及其系统

【技术保护点】
一种对比打包文件的方法,其特征在于:包括两条独立的流水线,每条流水线内包括:5个独立的线程:文件名比较线程,文件校验值比较线程,文件读取线程,文件解压线程,文件内容比较线程,5个独立的任务队列:文件名比较队列,文件校验值比较队列,文件读取队列,文件解压队列,文件内容比较队列,1个差异结果集合,所述的每个线程独立完成自己的工作,即每次从自己的任务队列中取出一个任务来完成,之后放入下一个任务队列中。

【技术特征摘要】
1.一种对比打包文件的方法,其特征在于:包括两条独立的流水线,每条流水线内包括:5个独立的线程:文件名比较线程,文件校验值比较线程,文件读取线程,文件解压线程,文件内容比较线程,5个独立的任务队列:文件名比较队列,文件校验值比较队列,文件读取队列,文件解压队列,文件内容比较队列,1个差异结果集合,所述的每个线程独立完成自己的工作,即每次从自己的任务队列中取出一个任务来完成,之后放入下一个任务队列中,所述的两条流水线在程序启动时同时运行,其每条流水线对文件的操作过程是:1)查询每一个包内文件名对应的包内地址,2)根据文件在包内的地址由低到高排序,3)将排序的文件名存入文件名比较队列中,4)运行:文件名比较线程,文件校验值比较线程,文件读取线程,文件解压线程和文件内容比较线程,其中,所述文件名比较线程用于执行文件名对比操作,所述文件校验值比较线程用于执行文件校验值比较操作,所述文件读取线程用于执行将文件数据读取至内存的操作,所述文件解压线程用于执行文件解压操作,所述文件内容比较线程用于执行文件内容的比较操作,5)从差异结果集合中取出所有文件名,并输出。2.根据权利要求1所述的一种对比打包文件的方法,其特征在于:用于对比的打包文件中,存储了每一个包内的文件名所对应的包内文件地址和校验值。3.根据权利要求2所述的一种对比打包文件的方法,其特征在于:校验值可选用CRC。4.根据权利要求1所述的一种对比打包文件的方法,其特征在于:所述的差异结果集合中存储了文件名,文件校验值,文件内容上有差异的文件。5.根据权利要求1所述的一种对比打包文件的方法,其特征在于:“文件名比较线程”工作过程如下:1)取出本流水线“文件名比较队列”中的一个文件;2)在另一条流水线的“文件名比较队列”中查找此文件名;3)若能找到,则将此文件放入本流水线的“文件校验值对比队列”,并将其从本流水线的“文件名比较队列”中删除,若不能找到则将其存入“差异结果集合”中;4)返回步骤1),以便取下一个文件。6.根据权利要求1所述的一种对比打包文件的方法,其特征在于:“文件校验值对比线程”工作过程如下:1)取出本流水线“文件校验值对比队列”中的一个文件;2)在另一条流水线的“文件校验值对比队列”中查找此文件名;3)若能找到,跳转到步骤4),若没有找到,则不做任何处理,跳转到步骤5);4)对比两个文件的校验值,若此时两个文件的校验值不同则将其存入“差异结果集合”中,则若此时两个文件的校验值相同,则将此文件放入本流水线的“文件读取队列”,并将其从本流水线的“文件校验值对比队列”中删除;5)返回步骤1),以便取下一个文件。7.根据权利要求1所述的一种对比打包文件的方法,其特征在于:“文件读取线程”工作过程如下:1)取出本流水线“文件读取队列”中...

【专利技术属性】
技术研发人员:刘畅
申请(专利权)人:珠海金山网络游戏科技有限公司成都西山居互动娱乐科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1