基于MapReduce的网页不兼容标签并行查找方法

文档序号:6507980阅读:126来源:国知局
基于MapReduce的网页不兼容标签并行查找方法
【专利摘要】本发明提供了一种基于MapReduce的网页不兼容标签并行查找方法,用于对不兼容标签快速定位。本方法将要扫描的代码分为n块,在m个计算机上使用Map函数并行查找代码块中的不兼容标签,所使用的不兼容标签库为Trie结构组织;当查找到不兼容标签时,记录标签所在的行数、列数和代码块号;最后通过Reduce操作对所记录的结果进行汇总处理,将中所有不兼容标签的位置返回给用户。本方法可用于大型Web应用程序的多平台部署,能快速定位不兼容标签,以辅助工程师快速定位源代码中需要进行处理的不兼容标签,使部署的Web应用能在不同浏览器上正常显示。
【专利说明】基于MapReduce的网页不兼容标签并行查找方法
【技术领域】
[0001]本发明属于应用软件跨平台迁移领域,尤其是一种基于MapReduce的网页不兼容标签并行查找方法。
【背景技术】
[0002]Web系统客户端的迁移相对于其他系统客户端的迁移具有其独特的特点。Web系统中开发网页使用的javascript等脚本语言具有跨平台性,开发的程序符合W3C的技术规范,Linux、Windows操作系统上的浏览器对WEB应用系统均能较好的支持。但由于使用的浏览器不同,因此在浏览器引擎对WEB应用系统网页进行解析后,会在用户界面上呈现出不同的显示效果。例如,某些在微软IE浏览器能正常显示的标签和属性,在使用FireFox浏览器的解析时,会出现显示异常或错误等问题。
[0003]一般来说,浏览器是由浏览器的解释引擎和用户界面组成的。用户界面,也就是常说的浏览器外壳,是用户和浏览器进行交互的平台。而作为浏览器的核心的解释引擎,负责对网页语法的解释(如HTML、JavaScript、XML、图像等等)、整理信息(例如加入CSS(Cascading Style Sheet,级联样式表)等)、以及计算网页的显示方式,最后会输出至显示器或打印机。解释引擎直接决定了网页文件的解析方式,所以也被称为浏览器的内核。解释引擎的不同,直接导致了相同网页在不同引擎下呈现不同的显示方式。以Windows的IE浏览器中使用的Trident解释引擎和Linux下的FireFox浏览器使用的Gecko解释引擎为例进行说明:
[0004]Trident是微软开发的一种解释引擎,它的第一个版本是随着1997年10月的Windows internet explorer第四版的发布而发布。随后,trident引擎随着浏览器版本的IE浏览器的版本更新而不断地被更新和完善,并沿用到目前的IE9。Trident引擎的主要工作流程如下:用户在浏览器的地址栏输入地址后,通过向浏览器请求后获得html文件。浏览器加载html文件时,对于外部链接CSS文件,浏览器再发出CSS文件的请求从而获得相应的CSS文件。在此之后,浏览器开始渲染页面,渲染的过程是顺序执行的,但是渲染并不都是一遍就完成的,有时后面遇到的内容导致前面渲染的结果要做出相应的改变,此时就要回到相应的位置重新渲染页面,这也就是reflow过程。
[0005]Gecko是一套开放源代码的、以C++编写的网页解释引擎。这个软件原本是由网景通讯公司开发的,现在则由Mozilla基金会维护。Gecko引擎的工作流程和Trident引擎完全相同。但是,在Trident引擎中,javascript的处理功能集成在Trident引擎之中。而对于包括Gecko在内的大多数引擎来说,由于效率的问题,在引擎之外又开发了一个javascript引擎来进行处理,以提高处理速度。
[0006]虽然解析引擎的工作流程大同小异,但是不同的解析引擎对标签的解析却不尽相同,这样便使得存在某些标签能被某些浏览器正确识别,却不能被另外一些浏览器所识别的现象,这也就是所谓的浏览器不兼容的问题。
[0007]浏览器的兼容性问题在确定使用不同的解释引擎时就已经确定下来了,之后也无法改变,除非重写内核。这也就为开发者提出了要求,要求他们在开发的Web应用的时候要兼顾到不同浏览器内核之间的差异性,尽可能的确保所编写的网页文件能在不同浏览器中正常显示。
[0008]由于需要进行迁移的WEB应用系统往往规模都较大,例如公共资源交易、人防应急指挥、财政协同办公、政协业务办公等系统,每个系统包含若干个子系统,每个子系统包含若干模块,整个需要被迁移的系统,客户端网页的数量庞大,若是手动来完成对标签的查找和修改,所面对的工作量是非常巨大的,同时也非常容易出现遗漏或误判等情况。如何在跨平台迁移Web应用系统时,保证其中网页显示的内容在迁移后能够正确的被不同的浏览器解析并正确显示,是一个亟待解决的问题。

【发明内容】

[0009]本发明针对跨平台迁移Web应用系统存在的问题,提出了一种基于MapReduce的网页不兼容标签并行查找方法,用于对不兼容标签快速定位,以辅助工程师快速定位源代码中需要进行处理的不兼容标签,使部署的Web应用能在不同浏览器上正常显示。
[0010]本发明的基于MapReduce的网页不兼容标签并行查找方法,包括如下步骤:
[0011]步骤一:确定Web应用的源代码中需要进行不兼容标签定位的代码边界;
[0012]步骤二:将 需要扫描的代码近均匀地等分成η块,η为整数,每份代码用一个三元组描述〈R,B, F〉,其中R表示该代码块的总代码行数,B表示代码块号,F表示代码块当前状态,F取值O或1,O为未进行扫描或正在进行扫描,I为扫描结束;
[0013]步骤三:将分割后的代码随机分配到m台机器上进行处理;
[0014]步骤四:初始化结构体IabelContext,结构体IabelContext中包含源代码路径,中间文件的保存路径,map函数的个数,reduce函数的个数,以及不兼容标签库的路径;
[0015]步骤五:为每个代码块创建map函数,并设置代码块的三元组中的F为O ;
[0016]步骤六:每台机器对所分配的代码块,开始向下扫描标签;
[0017]步骤七:根据不兼容标签库,判断扫描到的标签是否为不兼容标签,若是,执行步骤八,否则,执行步骤九;
[0018]步骤八:在中间文件中记录不兼容标签所在的位置,标签所在的位置用三个参数表示:标签所在的行数r、列数c以及标签所在的代码块号b,然后执行步骤九;
[0019]步骤九:判断当前代码块是否扫描结束,若结束,将该代码块三元组中的参数F置为I ;若没有,返回步骤六,继续执行;
[0020]步骤十:判断所有代码块是否都已结束扫描,若结束,执行步骤十一,否则等待其它代码块的扫描结束,然后再执行步骤十一;
[0021]步骤--一:所有中间文件通过Reduce函数,根据记录的不兼容标签所在的位置,计算各不兼容标签的实际位置;
[0022]步骤十二:合并同一标签的信息;
[0023]步骤十三:将合并后的不兼容标签及标签所在的位置放入哈希集合容器中,并返回给用户。
[0024]本发明一种基于MapReduce的网页不兼容标签并行查找方法的优点在于:
[0025](I)本发明查找方法基于MapReduce,MapReduce是一种能处理海量数据的并行编程模式,对于代码量大的Web应用,快速定位效果更为显著,适合用于大型Web应用程序的多平台部署;
[0026](2)由于Web网页代码量繁杂,查找时间长,各个不兼容标签相互独立,相互之间不依赖,因此,非常适合使用并行查找方法,本发明在进行不兼容标签定位的时候,将MapReduce的模式用在标签查找过程中,不兼容标签的查找效率将提高;
[0027](3)本发明方法所使用的不兼容标签库,是按照Trie结构组织,可以最大限度地减少无谓的字符串比较,查找效率高于哈希表。同时这种组织结构更易于扩展。
【专利附图】

【附图说明】
[0028]图1是本发明提供的并行查找方法的整体流程图;
[0029]图2是不兼容标签库的结构示意图;
[0030]图3是本发明运行实例的参数信息设置示意图;
[0031]图4是本发明运行实例在执行期间的部分运行日志信息图;
[0032]图5是本发明运行实例的运行结果示意图。
【具体实施方式】
[0033]下面将结合附图和实施例对本发明作进一步的详细说明。
[0034]本发明是基于MapReduce设计实现的快速网页不兼容标签快速并行查找方法,在实践中可以快速定位不兼容标签,提示工程师需要对此进行相应处理,使部署的Web应用能在不同浏览器上正常显示。
[0035]本发明的基于MapReduce的网页不兼容标签并行查找方法,首先将待进行分析的Web界面的源代码进行分割,近均匀地等分为η块,然后,针对分割后的每个代码块使用Map函数,判断源代码中所用到的标签是否为不兼容标签,如果是,记录该标签所在的位置(行数r、列数C),以及标签所在的代码块b ;最后通过Reduce操作对所记录的结果进行汇总处理,得到源代码中所有的不兼容标签,以及每个标签出现的所有位置(行数r、列数C)。本发明的网页不兼容标签并行查找方法,用于大型Web应用程序的多平台部署。而Web网页代码量繁杂,查找时间长,各个不兼容标签相互独立,相互之间不依赖,非常适合使用并行查找方法,因此,在进行不兼容标签定位的时候,将MapReduce的模式用在标签查找过程中,不兼容标签的查找效率将提高。MapReduce是一种编程模型,可用于大规模数据集(大于1TB)的并行运算。MapReduce是一种编程模型,可用于大规模数据集(大于1TB)的并行运算,指定了 Map (映射)函数,用来把一组键值对映射成一组新的键值对,指定了并发的Reduce (化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
[0036]如图1所示,本发明提供的基于MapReduce的网页不兼容标签并行查找方法,包括如下步骤:
[0037]步骤一:确定Web应用的源代码中需要进行不兼容标签定位的代码边界。
[0038]步骤二:将需要扫描的代码等分或近均匀地等分成η块,η为整数,具体值可由用户指定。
[0039]第b个代码块分别用一个三元组来描述<Rb,b, Fb>,其中Rb表示的是该代码块的总代码行数,b表示的是代码块号,F表示代码块当前状态,取值O或I,O为未进行扫描或正在进行扫描,I为扫描结束。
[0040]例如一个段总行数为378行的代码,根据指定现需要分割成10份,那么前9份代码块的代码行均为38行,最后I个代码块的代码总行数为36行。对于最后I个代码块,总代码行数Rltl为36,代码块号b为10。
[0041]步骤三:将分割后的代码随机分配到m台机器上进行处理。
[0042]步骤四:初始化结构体IabelContext,用来保存本发明方法所需要的参数,包括源代码路径,中间文件的保存路径,map函数的个数,reduce函数的个数,不兼容标签库的路径等。中间文件用来保存每台机器上运行代码得到的结果,最后还需要汇总中间文件的结果。
[0043]结构体IabelContext的关键数据结构如下所示:
[0044]
【权利要求】
1.一种基于MapReduce的网页不兼容标签并行查找方法,其特征在于,所述查找方法包括如下步骤:步骤一:确定Web应用的源代码中需要进行不兼容标签定位的代码边界;步骤二:将需要扫描的代码近均匀地等分成η块,η为整数,每份代码用一个三元组描述〈R,B,F〉,其中R表示该代码块的总代码行数,B表示代码块号,F表示代码块当前状态,F取值O或1,O为未进行扫描或正在进行扫描,I为扫描结束;步骤三:将分割后的代码随机分配到m台机器上进行处理;步骤四:初始化结构体IabelContext,结构体IabelContext中包含源代码路径,中间文件的保存路径,map函数的个数,reduce函数的个数,以及不兼容标签库的路径;步骤五:为每个代码块创建map函数,并设置代码块的三元组中的FSo;步骤六:每台机器对所分配的代码块,开始向下扫描标签;步骤七:根据不兼容标签库,判断扫描到的标签是否为不兼容标签,若是,执行步骤八,否则,执行步骤九;步骤八:在中间文件中记录不兼容标签所在的位置,标签所在的位置用三个参数表示:标签所在的行数r、列数c以及标签所在的代码块号b,然后执行步骤九;步骤九:判断当前代码块是否扫描结束,若结束,将该代码块三元组中的参数F置为I ;若没有,返回步骤六,继续执行;步骤十:判断所有代码块是否都已结束扫描,若结束,执行步骤十一,否则等待其它代码块的扫描结束,然后再执行步骤十一;步骤十一:所有中间文件通过Reduce函数,根据记录的不兼容标签所在的位置,计算各不兼容标签的实际位置;步骤十二:合并同一标签的信息;步骤十三:将合并后的不兼容标签及标签所在的位置放入哈希集合容器中,并返回给用户。
2.根据权利要求1所述的基于MapReduce的网页不兼容标签并行查找方法,其特征在于,所述的步骤七中的不兼容标签库,按照单词查找树的结构组织。
3.根据权利要求1所述的基于MapReduce的网页不兼容标签并行查找方法,其特征在于,所述的步骤十一中,各不兼容标签的实际位置的计算方法为:设某个不兼容标签的位置为(r,c,b),则该不兼容标签的实际位置为(SUM(R1, R2,…,Rb1, r),c);其中,SUM表示求和,R1, R2,…,Rb1分别表示第I个代码块、第2个代码块、…、第b-Ι个代码块的代码行数。
【文档编号】G06F17/30GK103440289SQ201310359420
【公开日】2013年12月11日 申请日期:2013年8月16日 优先权日:2013年8月16日
【发明者】李睿, 马世龙 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1