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

上传人:柴****2 文档编号:1498139 上传时间:2018-06-18 格式:PDF 页数:11 大小:2.83MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310359420.4

申请日:

2013.08.16

公开号:

CN103440289A

公开日:

2013.12.11

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||著录事项变更IPC(主分类):G06F 17/30变更事项:发明人变更前:李睿 马世龙变更后:李睿 吕江花 马世龙|||实质审查的生效IPC(主分类):G06F 17/30申请日:20130816|||公开

IPC分类号:

G06F17/30; G06F9/44

主分类号:

G06F17/30

申请人:

北京航空航天大学

发明人:

李睿; 马世龙

地址:

100191 北京市海淀区学院路37号

优先权:

专利代理机构:

北京永创新实专利事务所 11121

代理人:

祗志洁

PDF下载: PDF下载
内容摘要

本发明提供了一种基于MapReduce的网页不兼容标签并行查找方法,用于对不兼容标签快速定位。本方法将要扫描的代码分为n块,在m个计算机上使用Map函数并行查找代码块中的不兼容标签,所使用的不兼容标签库为Trie结构组织;当查找到不兼容标签时,记录标签所在的行数、列数和代码块号;最后通过Reduce操作对所记录的结果进行汇总处理,将中所有不兼容标签的位置返回给用户。本方法可用于大型Web应用程序的多平台部署,能快速定位不兼容标签,以辅助工程师快速定位源代码中需要进行处理的不兼容标签,使部署的Web应用能在不同浏览器上正常显示。

权利要求书

权利要求书
1.  一种基于MapReduce的网页不兼容标签并行查找方法,其特征在于,所述查找方法包括如下步骤:
步骤一:确定Web应用的源代码中需要进行不兼容标签定位的代码边界;
步骤二:将需要扫描的代码近均匀地等分成n块,n为整数,每份代码用一个三元组描述<R,B,F>,其中R表示该代码块的总代码行数,B表示代码块号,F表示代码块当前状态,F取值0或1,0为未进行扫描或正在进行扫描,1为扫描结束;
步骤三:将分割后的代码随机分配到m台机器上进行处理;
步骤四:初始化结构体labelContext,结构体labelContext中包含源代码路径,中间文件的保存路径,map函数的个数,reduce函数的个数,以及不兼容标签库的路径;
步骤五:为每个代码块创建map函数,并设置代码块的三元组中的F为0;
步骤六:每台机器对所分配的代码块,开始向下扫描标签;
步骤七:根据不兼容标签库,判断扫描到的标签是否为不兼容标签,若是,执行步骤八,否则,执行步骤九;
步骤八:在中间文件中记录不兼容标签所在的位置,标签所在的位置用三个参数表示:标签所在的行数r、列数c以及标签所在的代码块号b,然后执行步骤九;
步骤九:判断当前代码块是否扫描结束,若结束,将该代码块三元组中的参数F置为1;若没有,返回步骤六,继续执行;
步骤十:判断所有代码块是否都已结束扫描,若结束,执行步骤十一,否则等待其它代码块的扫描结束,然后再执行步骤十一;
步骤十一:所有中间文件通过Reduce函数,根据记录的不兼容标签所在的位置,计算各不兼容标签的实际位置;
步骤十二:合并同一标签的信息;
步骤十三:将合并后的不兼容标签及标签所在的位置放入哈希集合容器中,并返回给用户。

2.  根据权利要求1所述的基于MapReduce的网页不兼容标签并行查找方法,其特征在于,所述的步骤七中的不兼容标签库,按照单词查找树的结构组织。

3.  根据权利要求1所述的基于MapReduce的网页不兼容标签并行查找方法,其特征在于,所述的步骤十一中,各不兼容标签的实际位置的计算方法为:设某个不兼容标签的位置为(r,c,b),则该不兼容标签的实际位置为(SUM(R1,R2,…,Rb-1,r),c);其中,SUM表示求和,R1,R2,…,Rb-1分别表示第1个代码块、第2个代码块、…、第b-1个代码块的代码行数。

说明书

说明书基于MapReduce的网页不兼容标签并行查找方法
技术领域
本发明属于应用软件跨平台迁移领域,尤其是一种基于MapReduce的网页不兼容标签并行查找方法。
背景技术
Web系统客户端的迁移相对于其他系统客户端的迁移具有其独特的特点。Web系统中开发网页使用的javascript等脚本语言具有跨平台性,开发的程序符合W3C的技术规范,Linux、Windows操作系统上的浏览器对WEB应用系统均能较好的支持。但由于使用的浏览器不同,因此在浏览器引擎对WEB应用系统网页进行解析后,会在用户界面上呈现出不同的显示效果。例如,某些在微软IE浏览器能正常显示的标签和属性,在使用FireFox浏览器的解析时,会出现显示异常或错误等问题。
一般来说,浏览器是由浏览器的解释引擎和用户界面组成的。用户界面,也就是常说的浏览器外壳,是用户和浏览器进行交互的平台。而作为浏览器的核心的解释引擎,负责对网页语法的解释(如HTML、JavaScript、XML、图像等等)、整理信息(例如加入CSS(Cascading Style Sheet,级联样式表)等)、以及计算网页的显示方式,最后会输出至显示器或打印机。解释引擎直接决定了网页文件的解析方式,所以也被称为浏览器的内核。解释引擎的不同,直接导致了相同网页在不同引擎下呈现不同的显示方式。以Windows的IE浏览器中使用的Trident解释引擎和Linux下的FireFox浏览器使用的Gecko解释引擎为例进行说明:
Trident是微软开发的一种解释引擎,它的第一个版本是随着1997年10月的Windows internet explorer第四版的发布而发布。随后,trident引擎随着浏览器版本的IE浏览器的版本更新而不断地被更新和完善,并沿用到目前的IE9。Trident引擎的主要工作流程如下:用户在浏览器的地址栏输入地址后,通过向浏览器请求后获得html文件。浏览器加载html文件时,对于外部链接CSS文件,浏览器再发出CSS文件的请求从而获得相应的CSS文件。在此之后,浏览器开始渲染页面,渲染的过程是顺序执行的,但是渲染并不都是一遍就完成的,有时后面遇到的内容导致前面渲染的结果要做出相应的改变,此时就要回到相应的位置重新渲染页面,这也就是reflow过程。
Gecko是一套开放源代码的、以C++编写的网页解释引擎。这个软件原本是由网景通讯公司开发的,现在则由Mozilla基金会维护。Gecko引擎的工作流程和Trident引擎完全相同。但是,在Trident引擎中,javascript的处理功能集成在Trident引擎之中。而对于包括Gecko在内的大多数引擎来说,由于效率的问题,在引擎之外又开发了一个javascript引擎来进行处 理,以提高处理速度。
虽然解析引擎的工作流程大同小异,但是不同的解析引擎对标签的解析却不尽相同,这样便使得存在某些标签能被某些浏览器正确识别,却不能被另外一些浏览器所识别的现象,这也就是所谓的浏览器不兼容的问题。
浏览器的兼容性问题在确定使用不同的解释引擎时就已经确定下来了,之后也无法改变,除非重写内核。这也就为开发者提出了要求,要求他们在开发的Web应用的时候要兼顾到不同浏览器内核之间的差异性,尽可能的确保所编写的网页文件能在不同浏览器中正常显示。
由于需要进行迁移的WEB应用系统往往规模都较大,例如公共资源交易、人防应急指挥、财政协同办公、政协业务办公等系统,每个系统包含若干个子系统,每个子系统包含若干模块,整个需要被迁移的系统,客户端网页的数量庞大,若是手动来完成对标签的查找和修改,所面对的工作量是非常巨大的,同时也非常容易出现遗漏或误判等情况。如何在跨平台迁移Web应用系统时,保证其中网页显示的内容在迁移后能够正确的被不同的浏览器解析并正确显示,是一个亟待解决的问题。
发明内容
本发明针对跨平台迁移Web应用系统存在的问题,提出了一种基于MapReduce的网页不兼容标签并行查找方法,用于对不兼容标签快速定位,以辅助工程师快速定位源代码中需要进行处理的不兼容标签,使部署的Web应用能在不同浏览器上正常显示。
本发明的基于MapReduce的网页不兼容标签并行查找方法,包括如下步骤:
步骤一:确定Web应用的源代码中需要进行不兼容标签定位的代码边界;
步骤二:将需要扫描的代码近均匀地等分成n块,n为整数,每份代码用一个三元组描述<R,B,F>,其中R表示该代码块的总代码行数,B表示代码块号,F表示代码块当前状态,F取值0或1,0为未进行扫描或正在进行扫描,1为扫描结束;
步骤三:将分割后的代码随机分配到m台机器上进行处理;
步骤四:初始化结构体labelContext,结构体labelContext中包含源代码路径,中间文件的保存路径,map函数的个数,reduce函数的个数,以及不兼容标签库的路径;
步骤五:为每个代码块创建map函数,并设置代码块的三元组中的F为0;
步骤六:每台机器对所分配的代码块,开始向下扫描标签;
步骤七:根据不兼容标签库,判断扫描到的标签是否为不兼容标签,若是,执行步骤八,否则,执行步骤九;
步骤八:在中间文件中记录不兼容标签所在的位置,标签所在的位置用三个参数表示:标签所在的行数r、列数c以及标签所在的代码块号b,然后执行步骤九;
步骤九:判断当前代码块是否扫描结束,若结束,将该代码块三元组中的参数F置为1; 若没有,返回步骤六,继续执行;
步骤十:判断所有代码块是否都已结束扫描,若结束,执行步骤十一,否则等待其它代码块的扫描结束,然后再执行步骤十一;
步骤十一:所有中间文件通过Reduce函数,根据记录的不兼容标签所在的位置,计算各不兼容标签的实际位置;
步骤十二:合并同一标签的信息;
步骤十三:将合并后的不兼容标签及标签所在的位置放入哈希集合容器中,并返回给用户。
本发明一种基于MapReduce的网页不兼容标签并行查找方法的优点在于:
(1)本发明查找方法基于MapReduce,MapReduce是一种能处理海量数据的并行编程模式,对于代码量大的Web应用,快速定位效果更为显著,适合用于大型Web应用程序的多平台部署;
(2)由于Web网页代码量繁杂,查找时间长,各个不兼容标签相互独立,相互之间不依赖,因此,非常适合使用并行查找方法,本发明在进行不兼容标签定位的时候,将MapReduce的模式用在标签查找过程中,不兼容标签的查找效率将提高;
(3)本发明方法所使用的不兼容标签库,是按照Trie结构组织,可以最大限度地减少无谓的字符串比较,查找效率高于哈希表。同时这种组织结构更易于扩展。
附图说明
图1是本发明提供的并行查找方法的整体流程图;
图2是不兼容标签库的结构示意图;
图3是本发明运行实例的参数信息设置示意图;
图4是本发明运行实例在执行期间的部分运行日志信息图;
图5是本发明运行实例的运行结果示意图。
具体实施方式
下面将结合附图和实施例对本发明作进一步的详细说明。
本发明是基于MapReduce设计实现的快速网页不兼容标签快速并行查找方法,在实践中可以快速定位不兼容标签,提示工程师需要对此进行相应处理,使部署的Web应用能在不同浏览器上正常显示。
本发明的基于MapReduce的网页不兼容标签并行查找方法,首先将待进行分析的Web界面的源代码进行分割,近均匀地等分为n块,然后,针对分割后的每个代码块使用Map函数,判断源代码中所用到的标签是否为不兼容标签,如果是,记录该标签所在的位置(行数r、列数c),以及标签所在的代码块b;最后通过Reduce操作对所记录的结果进行汇总处理, 得到源代码中所有的不兼容标签,以及每个标签出现的所有位置(行数r、列数c)。本发明的网页不兼容标签并行查找方法,用于大型Web应用程序的多平台部署。而Web网页代码量繁杂,查找时间长,各个不兼容标签相互独立,相互之间不依赖,非常适合使用并行查找方法,因此,在进行不兼容标签定位的时候,将MapReduce的模式用在标签查找过程中,不兼容标签的查找效率将提高。MapReduce是一种编程模型,可用于大规模数据集(大于1TB)的并行运算。MapReduce是一种编程模型,可用于大规模数据集(大于1TB)的并行运算,指定了Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定了并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
如图1所示,本发明提供的基于MapReduce的网页不兼容标签并行查找方法,包括如下步骤:
步骤一:确定Web应用的源代码中需要进行不兼容标签定位的代码边界。
步骤二:将需要扫描的代码等分或近均匀地等分成n块,n为整数,具体值可由用户指定。
第b个代码块分别用一个三元组来描述<Rb,b,Fb>,其中Rb表示的是该代码块的总代码行数,b表示的是代码块号,F表示代码块当前状态,取值0或1,0为未进行扫描或正在进行扫描,1为扫描结束。
例如一个段总行数为378行的代码,根据指定现需要分割成10份,那么前9份代码块的代码行均为38行,最后1个代码块的代码总行数为36行。对于最后1个代码块,总代码行数R10为36,代码块号b为10。
步骤三:将分割后的代码随机分配到m台机器上进行处理。
步骤四:初始化结构体labelContext,用来保存本发明方法所需要的参数,包括源代码路径,中间文件的保存路径,map函数的个数,reduce函数的个数,不兼容标签库的路径等。中间文件用来保存每台机器上运行代码得到的结果,最后还需要汇总中间文件的结果。
结构体labelContext的关键数据结构如下所示:

LPVOID是一个没有类型的指针类型,DWORD是双字节的数据类型。
步骤五:为每个代码块创建map函数,此时代码块的三元组中的F均设置为0。
步骤六:每台机器对所分配的代码块,向下扫描标签。
步骤七:根据不兼容标签库,判断扫描到的标签是否为不兼容标签,若是,执行步骤八,否则,执行步骤九。
不兼容标签库,按照Trie(单词查找树)结构组织,可以最大限度地减少无谓的字符串比较,查找效率高于哈希表。同时这种组织结构是利用了字符串的公共前缀,节约存储空间,而且对于不兼容标签的新增、删除和查找都非常简单,有利于不兼容标签库的扩展。
以IE浏览器IE6.0和FireFox4.0为例,根据现有的W3C规范、公开资料、文档等,在前人工作的基础上总结的不兼容标签,部分典型不兼容标签列举如下:
1.标签!important,FireFox可以识别,而IE不能识别;
2.标签innerText,FireFox可以识别,而IE不能正确识别;
3.FireFox中对象文字常量允许出现多余的逗号,这在IE中是不允许;
4.标签Rgba,FireFox能识别,而IE不能识别;
5.标签HSLT,FireFox能识别,而IE不能识别;
6.标签Multiple backgrounds,FireFox能识别,而IE不能识别;
7.标签Opacity,FireFox能识别,而IE不能识别;
8.标签Canvas,FireFox能识别,而IE不能识别;
9.event.x与event.y在IE中可识别,而在FireFox中只能识别event.pageX与event.pageY;
10.同一用途的标签,在FireFox中只能识别XMLHttpRequest,而在IE中却只能识别ActiveXObject;
11.标签attributes,IE和FireFox的解析结果不同;
12.其它IE中可识别的标签oncopy、oncut、onpasteondragenter、ondragover、ondragleave、ondrop等等,在FireFox中都不能被识别;
不兼容标签库的组织结构如图2所示,是一个树形结构。例如,这里所列的是提到的标签!important、oncopy和opacity。
判断标签是否为不兼容标签,具体方法是:遍历代码,找到代码中的标签,与已建立的不兼容标签库中的标签进行比对,比对一致的为不兼容标签,若比对不成功,则标签兼容。
本发明所述的不兼容标签,指的是由于浏览器的解析引擎的不同,导致Web应用在不同平台上进行迁移时,不同浏览器有不同的解释,甚至存在部分标签不为部分浏览器所识别的情况,从而导致同一个界面在不同浏览器上会有不同的显示效果。
步骤八:如果是不兼容标签,则在中间文件中记录该不兼容标签所在的位置,标签所在 的位置用三个参数表示:标签所在的行数r、列数c以及标签所在的代码块号b;然后执行步骤九。
步骤九:判断当前代码块是否扫描结束,若结束,将该代码块三元组中的参数F置为1;若没有,返回步骤六,继续执行。
步骤十:判断所有代码块是否都已结束扫描,若结束,进入步骤十一,否则等待其它代码块的扫描结束,然后再执行步骤十一。
步骤十一:所有中间文件通过Reduce函数,根据记录的标签所在的位置,计算标签的实际位置。
各不兼容标签的实际位置计算方法为:设某个不兼容标签的位置为(r,c,b),则该不兼容标签的实际位置为(SUM(R1,R2,…,Rb-1,r),c)。SUM表示求和,R1,R2,…,Rb-1分别表示第1个代码块、第2个代码块、…、第b-1个代码块的代码行数。
步骤十二:合并同一标签的信息;
步骤十三:将合并后的不兼容标签及标签所在的位置放入哈希集合容器hash_set中,并返回给用户。
下面通过一个运行实例对本发明的方法进行进一步说明和验证。
如图3所示,首先设置所需的必要的参数信息,获得参数信息后,程序开始执行,图4是执行期间的部分运行日志(log)信息截图。下面对图4所示的部分日志进行说明。

2011-11-26 17:46:56  org.apache.hadoop.mapred.MapTask$MapOutputBuffer  flush
信息:Starting flush of map output
//将缓存中的信息写入map的输出中
2011-11-26     17:46:56     org.apache.hadoop.mapred.MapTask$MapOutputBuffer writeIndexRecord
信息:Index:(0,2,6)
//标签信息
2011-11-26 17:46:56  org.apache.hadoop.mapred.Task done
信息:Task:attempt_local_0001_m_000033_0is done.And is in the process of commiting
//任务attempt_local_0001_m_000033_0(注:即对分割的某一块代码的不兼容标签进行查找)完成,处于提交状态
2011-11-26 17:46:56  org.apache.hadoop.mapred.LocalJobRunner$Job statusUpdate
信息:file:/home/administrator/input/dao.html:0+1031
//更新文件状态
2011-11-26 17:46:56  org.apache.hadoop.mapred.Task sendDone
信息:Task'attempt_local_0001_m_000033_0'done
//任务attempt_local_0001_m_000033_0结束
以上所示为一个代码块的执行完成。
程序执行完毕后,由于最终结果是HDFS(Hadoop Distributed File System)格式的数据格式,需要使用HDFS命令,使用Linux下的Shell进行数据查看。
图5所示的是运行结果。运行结果文档存储在结果文件夹下的part-00000文档下,储格式是HDFS文件系统的SequenceFile格式,是一种二进制的格式。可以借助于HDFS的文档查看命令:/bin/hadoop dfs–cat/目标文件夹/part-00000,来查看文档。通过调用HDFS的解析能力,对目标文档进行解析,使之以可阅读的形式显示在shell下。
Shell中的文档的格式为:Label  行信息(行号,列号)。其中label是标签的信息,行信息为该label所在的行的文字内容。
例如,[<event></event>]xxx[572,16],其中xxx信息可以忽略,该行内容表示的信息是,不兼容的标签event出现的位置是第572行的第16列。

基于MAPREDUCE的网页不兼容标签并行查找方法.pdf_第1页
第1页 / 共11页
基于MAPREDUCE的网页不兼容标签并行查找方法.pdf_第2页
第2页 / 共11页
基于MAPREDUCE的网页不兼容标签并行查找方法.pdf_第3页
第3页 / 共11页
点击查看更多>>
资源描述

《基于MAPREDUCE的网页不兼容标签并行查找方法.pdf》由会员分享,可在线阅读,更多相关《基于MAPREDUCE的网页不兼容标签并行查找方法.pdf(11页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103440289 A(43)申请公布日 2013.12.11CN103440289A*CN103440289A*(21)申请号 201310359420.4(22)申请日 2013.08.16G06F 17/30(2006.01)G06F 9/44(2006.01)(71)申请人北京航空航天大学地址 100191 北京市海淀区学院路37号(72)发明人李睿 马世龙(74)专利代理机构北京永创新实专利事务所 11121代理人祗志洁(54) 发明名称基于MapReduce的网页不兼容标签并行查找方法(57) 摘要本发明提供了一种基于MapReduce的网页不兼容标签并行。

2、查找方法,用于对不兼容标签快速定位。本方法将要扫描的代码分为n块,在m个计算机上使用Map函数并行查找代码块中的不兼容标签,所使用的不兼容标签库为Trie结构组织;当查找到不兼容标签时,记录标签所在的行数、列数和代码块号;最后通过Reduce操作对所记录的结果进行汇总处理,将中所有不兼容标签的位置返回给用户。本方法可用于大型Web应用程序的多平台部署,能快速定位不兼容标签,以辅助工程师快速定位源代码中需要进行处理的不兼容标签,使部署的Web应用能在不同浏览器上正常显示。(51)Int.Cl.权利要求书1页 说明书6页 附图3页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书1。

3、页 说明书6页 附图3页(10)申请公布号 CN 103440289 ACN 103440289 A1/1页21.一种基于MapReduce的网页不兼容标签并行查找方法,其特征在于,所述查找方法包括如下步骤:步骤一:确定Web应用的源代码中需要进行不兼容标签定位的代码边界;步骤二:将需要扫描的代码近均匀地等分成n块,n为整数,每份代码用一个三元组描述,其中R表示该代码块的总代码行数,B表示代码块号,F表示代码块当前状态,F取值0或1,0为未进行扫描或正在进行扫描,1为扫描结束;步骤三:将分割后的代码随机分配到m台机器上进行处理;步骤四:初始化结构体labelContext,结构体labelCo。

4、ntext中包含源代码路径,中间文件的保存路径,map函数的个数,reduce函数的个数,以及不兼容标签库的路径;步骤五:为每个代码块创建map函数,并设置代码块的三元组中的F为0;步骤六:每台机器对所分配的代码块,开始向下扫描标签;步骤七:根据不兼容标签库,判断扫描到的标签是否为不兼容标签,若是,执行步骤八,否则,执行步骤九;步骤八:在中间文件中记录不兼容标签所在的位置,标签所在的位置用三个参数表示:标签所在的行数r、列数c以及标签所在的代码块号b,然后执行步骤九;步骤九:判断当前代码块是否扫描结束,若结束,将该代码块三元组中的参数F置为1;若没有,返回步骤六,继续执行;步骤十:判断所有代码。

5、块是否都已结束扫描,若结束,执行步骤十一,否则等待其它代码块的扫描结束,然后再执行步骤十一;步骤十一:所有中间文件通过Reduce函数,根据记录的不兼容标签所在的位置,计算各不兼容标签的实际位置;步骤十二:合并同一标签的信息;步骤十三:将合并后的不兼容标签及标签所在的位置放入哈希集合容器中,并返回给用户。2.根据权利要求1所述的基于MapReduce的网页不兼容标签并行查找方法,其特征在于,所述的步骤七中的不兼容标签库,按照单词查找树的结构组织。3.根据权利要求1所述的基于MapReduce的网页不兼容标签并行查找方法,其特征在于,所述的步骤十一中,各不兼容标签的实际位置的计算方法为:设某个不。

6、兼容标签的位置为(r,c,b),则该不兼容标签的实际位置为(SUM(R1,R2,Rb-1,r),c);其中,SUM表示求和,R1,R2,Rb-1分别表示第1个代码块、第2个代码块、第b-1个代码块的代码行数。权 利 要 求 书CN 103440289 A1/6页3基于 MapReduce 的网页不兼容标签并行查找方法技术领域0001 本发明属于应用软件跨平台迁移领域,尤其是一种基于MapReduce的网页不兼容标签并行查找方法。背景技术0002 Web系统客户端的迁移相对于其他系统客户端的迁移具有其独特的特点。Web系统中开发网页使用的javascript等脚本语言具有跨平台性,开发的程序符合。

7、W3C的技术规范,Linux、Windows操作系统上的浏览器对WEB应用系统均能较好的支持。但由于使用的浏览器不同,因此在浏览器引擎对WEB应用系统网页进行解析后,会在用户界面上呈现出不同的显示效果。例如,某些在微软IE浏览器能正常显示的标签和属性,在使用FireFox浏览器的解析时,会出现显示异常或错误等问题。0003 一般来说,浏览器是由浏览器的解释引擎和用户界面组成的。用户界面,也就是常说的浏览器外壳,是用户和浏览器进行交互的平台。而作为浏览器的核心的解释引擎,负责对网页语法的解释(如HTML、JavaScript、XML、图像等等)、整理信息(例如加入CSS(Cascading St。

8、yle Sheet,级联样式表)等)、以及计算网页的显示方式,最后会输出至显示器或打印机。解释引擎直接决定了网页文件的解析方式,所以也被称为浏览器的内核。解释引擎的不同,直接导致了相同网页在不同引擎下呈现不同的显示方式。以Windows的IE浏览器中使用的Trident解释引擎和Linux下的FireFox浏览器使用的Gecko解释引擎为例进行说明:0004 Trident是微软开发的一种解释引擎,它的第一个版本是随着1997年10月的Windows internet explorer第四版的发布而发布。随后,trident引擎随着浏览器版本的IE浏览器的版本更新而不断地被更新和完善,并沿用到。

9、目前的IE9。Trident引擎的主要工作流程如下:用户在浏览器的地址栏输入地址后,通过向浏览器请求后获得html文件。浏览器加载html文件时,对于外部链接CSS文件,浏览器再发出CSS文件的请求从而获得相应的CSS文件。在此之后,浏览器开始渲染页面,渲染的过程是顺序执行的,但是渲染并不都是一遍就完成的,有时后面遇到的内容导致前面渲染的结果要做出相应的改变,此时就要回到相应的位置重新渲染页面,这也就是reflow过程。0005 Gecko是一套开放源代码的、以C+编写的网页解释引擎。这个软件原本是由网景通讯公司开发的,现在则由Mozilla基金会维护。Gecko引擎的工作流程和Trident。

10、引擎完全相同。但是,在Trident引擎中,javascript的处理功能集成在Trident引擎之中。而对于包括Gecko在内的大多数引擎来说,由于效率的问题,在引擎之外又开发了一个javascript引擎来进行处理,以提高处理速度。0006 虽然解析引擎的工作流程大同小异,但是不同的解析引擎对标签的解析却不尽相同,这样便使得存在某些标签能被某些浏览器正确识别,却不能被另外一些浏览器所识别的现象,这也就是所谓的浏览器不兼容的问题。0007 浏览器的兼容性问题在确定使用不同的解释引擎时就已经确定下来了,之后也无说 明 书CN 103440289 A2/6页4法改变,除非重写内核。这也就为开发者。

11、提出了要求,要求他们在开发的Web应用的时候要兼顾到不同浏览器内核之间的差异性,尽可能的确保所编写的网页文件能在不同浏览器中正常显示。0008 由于需要进行迁移的WEB应用系统往往规模都较大,例如公共资源交易、人防应急指挥、财政协同办公、政协业务办公等系统,每个系统包含若干个子系统,每个子系统包含若干模块,整个需要被迁移的系统,客户端网页的数量庞大,若是手动来完成对标签的查找和修改,所面对的工作量是非常巨大的,同时也非常容易出现遗漏或误判等情况。如何在跨平台迁移Web应用系统时,保证其中网页显示的内容在迁移后能够正确的被不同的浏览器解析并正确显示,是一个亟待解决的问题。发明内容0009 本发明。

12、针对跨平台迁移Web应用系统存在的问题,提出了一种基于MapReduce的网页不兼容标签并行查找方法,用于对不兼容标签快速定位,以辅助工程师快速定位源代码中需要进行处理的不兼容标签,使部署的Web应用能在不同浏览器上正常显示。0010 本发明的基于MapReduce的网页不兼容标签并行查找方法,包括如下步骤:0011 步骤一:确定Web应用的源代码中需要进行不兼容标签定位的代码边界;0012 步骤二:将需要扫描的代码近均匀地等分成n块,n为整数,每份代码用一个三元组描述,其中R表示该代码块的总代码行数,B表示代码块号,F表示代码块当前状态,F取值0或1,0为未进行扫描或正在进行扫描,1为扫描结。

13、束;0013 步骤三:将分割后的代码随机分配到m台机器上进行处理;0014 步骤四:初始化结构体labelContext,结构体labelContext中包含源代码路径,中间文件的保存路径,map函数的个数,reduce函数的个数,以及不兼容标签库的路径;0015 步骤五:为每个代码块创建map函数,并设置代码块的三元组中的F为0;0016 步骤六:每台机器对所分配的代码块,开始向下扫描标签;0017 步骤七:根据不兼容标签库,判断扫描到的标签是否为不兼容标签,若是,执行步骤八,否则,执行步骤九;0018 步骤八:在中间文件中记录不兼容标签所在的位置,标签所在的位置用三个参数表示:标签所在的行。

14、数r、列数c以及标签所在的代码块号b,然后执行步骤九;0019 步骤九:判断当前代码块是否扫描结束,若结束,将该代码块三元组中的参数F置为1;若没有,返回步骤六,继续执行;0020 步骤十:判断所有代码块是否都已结束扫描,若结束,执行步骤十一,否则等待其它代码块的扫描结束,然后再执行步骤十一;0021 步骤十一:所有中间文件通过Reduce函数,根据记录的不兼容标签所在的位置,计算各不兼容标签的实际位置;0022 步骤十二:合并同一标签的信息;0023 步骤十三:将合并后的不兼容标签及标签所在的位置放入哈希集合容器中,并返回给用户。0024 本发明一种基于MapReduce的网页不兼容标签并行。

15、查找方法的优点在于:0025 (1)本发明查找方法基于MapReduce,MapReduce是一种能处理海量数据的并行编说 明 书CN 103440289 A3/6页5程模式,对于代码量大的Web应用,快速定位效果更为显著,适合用于大型Web应用程序的多平台部署;0026 (2)由于Web网页代码量繁杂,查找时间长,各个不兼容标签相互独立,相互之间不依赖,因此,非常适合使用并行查找方法,本发明在进行不兼容标签定位的时候,将MapReduce的模式用在标签查找过程中,不兼容标签的查找效率将提高;0027 (3)本发明方法所使用的不兼容标签库,是按照Trie结构组织,可以最大限度地减少无谓的字符串。

16、比较,查找效率高于哈希表。同时这种组织结构更易于扩展。附图说明0028 图1是本发明提供的并行查找方法的整体流程图;0029 图2是不兼容标签库的结构示意图;0030 图3是本发明运行实例的参数信息设置示意图;0031 图4是本发明运行实例在执行期间的部分运行日志信息图;0032 图5是本发明运行实例的运行结果示意图。具体实施方 式0033 下面将结合附图和实施例对本发明作进一步的详细说明。0034 本发明是基于MapReduce设计实现的快速网页不兼容标签快速并行查找方法,在实践中可以快速定位不兼容标签,提示工程师需要对此进行相应处理,使部署的Web应用能在不同浏览器上正常显示。0035 本。

17、发明的基于MapReduce的网页不兼容标签并行查找方法,首先将待进行分析的Web界面的源代码进行分割,近均匀地等分为n块,然后,针对分割后的每个代码块使用Map函数,判断源代码中所用到的标签是否为不兼容标签,如果是,记录该标签所在的位置(行数r、列数c),以及标签所在的代码块b;最后通过Reduce操作对所记录的结果进行汇总处理,得到源代码中所有的不兼容标签,以及每个标签出现的所有位置(行数r、列数c)。本发明的网页不兼容标签并行查找方法,用于大型Web应用程序的多平台部署。而Web网页代码量繁杂,查找时间长,各个不兼容标签相互独立,相互之间不依赖,非常适合使用并行查找方法,因此,在进行不兼。

18、容标签定位的时候,将MapReduce的模式用在标签查找过程中,不兼容标签的查找效率将提高。MapReduce是一种编程模型,可用于大规模数据集(大于1TB)的并行运算。MapReduce是一种编程模型,可用于大规模数据集(大于1TB)的并行运算,指定了Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定了并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。0036 如图1所示,本发明提供的基于MapReduce的网页不兼容标签并行查找方法,包括如下步骤:0037 步骤一:确定Web应用的源代码中需要进行不兼容标签定位的代码边界。0038 步骤二:将需要。

19、扫描的代码等分或近均匀地等分成n块,n为整数,具体值可由用户指定。0039 第b个代码块分别用一个三元组来描述,其中Rb表示的是该代码块的总代码行数,b表示的是代码块号,F表示代码块当前状态,取值0或1,0为未进行扫描或正在说 明 书CN 103440289 A4/6页6进行扫描,1为扫描结束。0040 例如一个段总行数为378行的代码,根据指定现需要分割成10份,那么前9份代码块的代码行均为38行,最后1个代码块的代码总行数为36行。对于最后1个代码块,总代码行数R10为36,代码块号b为10。0041 步骤三:将分割后的代码随机分配到m台机器上进行处理。0042 步骤四:初始化结构体lab。

20、elContext,用来保存本发明方法所需要的参数,包括源代码路径,中间文件的保存路径,map函数的个数,reduce函数的个数,不兼容标签库的路径等。中间文件用来保存每台机器上运行代码得到的结果,最后还需要汇总中间文件的结果。0043 结构体labelContext的关键数据结构如下所示:0044 0045 LPVOID是一个没有类型的指针类型,DWORD是双字节的数据类型。0046 步骤五:为每个代码块创建map函数,此时代码块的三元组中的F均设置为0。0047 步骤六:每台机器对所分配的代码块,向下扫描标签。0048 步骤七:根据不兼容标签库,判断扫描到的标签是否为不兼容标签,若是,执行。

21、步骤八,否则,执行步骤九。0049 不兼容标签库,按照Trie(单词查找树)结构组织,可以最大限度地减少无谓的字符串比较,查找效率高于哈希表。同时这种组织结构是利用了字符串的公共前缀,节约存储空间,而且对于不兼容标签的新增、删除和查找都非常简单,有利于不兼容标签库的扩展。0050 以IE浏览器IE6.0和FireFox4.0为例,根据现有的W3C规范、公开资料、文档等,在前人工作的基础上总结的不兼容标签,部分典型不兼容标签列举如下:0051 1.标签!important,FireFox可以识别,而IE不能识别;0052 2.标签innerText,FireFox可以识别,而IE不能正确识别;0。

22、053 3.FireFox中对象文字常量允许出现多余的逗号,这在IE中是不允许;0054 4.标签Rgba,FireFox能识别,而IE不能识别;0055 5.标签HSLT,FireFox能识别,而IE不能识别;0056 6.标签Multiple backgrounds,FireFox能识别,而IE不能识别;0057 7.标签Opacity,FireFox能识别,而IE不能识别;0058 8.标签Canvas,FireFox能识别,而IE不能识别;说 明 书CN 103440289 A5/6页70059 9.event.x与event.y在IE中可识别,而在FireFox中只能识别event.。

23、pageX与event.pageY;0060 10.同一用途的标签,在FireFox中只能识别XMLHttpRequest,而在IE中却只能识别ActiveXObject;0061 11.标签attributes,IE和FireFox的解析结果不同;0062 12.其它IE中可识别的标签oncopy、oncut、onpasteondragenter、ondragover、ondragleave、ondrop等等,在FireFox中都不能被识别;0063 不兼容标签库的组织结构如图2所示,是一个树形结构。例如,这里所列的是提到的标签!important、oncopy和opacity。0064 判。

24、断标签是否为不兼容标签,具体方法是:遍历代码,找到代码中的标签,与已建立的不兼容标签库中的标签进行比对,比对一致的为不兼容标签,若比对不成功,则标签兼容。0065 本发明所述的不兼容标签,指的是由于浏览器的解析引擎的不同,导致Web应用在不同平台上进行迁移时,不同浏览器有不同的解释,甚至存在部分标签不为部分浏览器所识别的情况,从而导致同一个界面在不同浏览器上会有不同的显示效果。0066 步骤八:如果是不兼容标签,则在中间文件中记录该不兼容标签所在的位置,标签所在的位置用三个参数表示:标签所在的行数r、列数c以及标签所在的代码块号b;然后执行步骤九。0067 步骤九:判断当前代码块是否扫描结束,。

25、若结束,将该代码块三元组中的参数F置为1;若没有,返回步骤六,继续执行。0068 步骤十:判断所有代码块是否都已结束扫描,若结束,进入步骤十一,否则等待其它代码块的扫描结束,然后再执行步骤十一。0069 步骤十一:所有中间文件通过Reduce函数,根据记录的标签所在的位置,计算标签的实际位置。0070 各不兼容标签的实际位置计算方法为:设某个不兼容标签的位置为(r,c,b),则该不兼容标签的实际位置为(SUM(R1,R2,Rb-1,r),c)。SUM表示求和,R1,R2,Rb-1分别表示第1个代码块、第2个代码块、第b-1个代码块的代码行数。0071 步骤十二:合并同一标签的信息;0072 步。

26、骤十三:将合并后的不兼容标签及标签所在的位置放入哈希集合容器hash_set中,并返回给用户。0073 下面通过一个运行实例对本发明的方法进行进一步说明和验证。0074 如图3所示,首先设置所需的必要的参数信息,获得参数信息后,程序开始执行,图4是执行期间的部分运行日志(log)信息截图。下面对图4所示的部分日志进行说明。0075 0076 2011-11-26 17:46:56 org.apache.hadoop.mapred.MapTask$MapOutputBuffer 说 明 书CN 103440289 A6/6页8flush0077 信息:Starting flush of map 。

27、output0078 /将缓存中的信息写入map的输出中0079 2011-11-26 17:46:56 org.apache.hadoop.mapred.MapTask$MapOutputBuffer writeIndexRecord0080 信息:Index:(0,2,6)0081 /标签信息0082 2011-11-26 17:46:56 org.apache.hadoop.mapred.Task done0083 信息:Task:attempt_local_0001_m_000033_0is done.And is in the process of commiting0084 /任务。

28、attempt_local_0001_m_000033_0(注:即对分割的某一块代码的不兼容标签进行查找)完成,处于提交状态0085 2011-11-26 17:46:56 org.apache.hadoop.mapred.LocalJobRunner$Job statusUpdate0086 信息:file:/home/administrator/input/dao.html:0+10310087 /更新文件状态0088 2011-11-26 17:46:56 org.apache.hadoop.mapred.Task sendDone0089 信息:Taskattempt_local_00。

29、01_m_000033_0done0090 /任务attempt_local_0001_m_000033_0结束0091 以上所示为一个代码块的执行完成。0092 程序执行完毕后,由于最终结果是HDFS(Hadoop Distributed File System)格式的数据格式,需要使用HDFS命令,使用Linux下的Shell进行数据查看。0093 图5所示的是运行结果。运行结果文档存储在结果文件夹下的part-00000文档下,储格式是HDFS文件系统的SequenceFile格式,是一种二进制的格式。可以借助于HDFS的文档查看命令:/bin/hadoop dfscat/目标文件夹/part-00000,来查看文档。通过调用HDFS的解析能力,对目标文档进行解析,使之以可阅读的形式显示在shell下。0094 Shell中的文档的格式为:Label 行信息(行号,列号)。其中label是标签的信息,行信息为该label所在的行的文字内容。0095 例如,xxx572,16,其中xxx信息可以忽略,该行内容表示的信息是,不兼容的标签event出现的位置是第572行的第16列。说 明 书CN 103440289 A1/3页9图1说 明 书 附 图CN 103440289 A2/3页10图2图3说 明 书 附 图CN 103440289 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1