一种基于树结构的数据比较及处理方法、装置与流程

文档序号:19652253发布日期:2020-01-10 15:46阅读:175来源:国知局
一种基于树结构的数据比较及处理方法、装置与流程

本申请涉及通信领域,尤其涉及一种基于树结构的数据比较及处理方法、装置。



背景技术:

目前,在虚拟机顶盒技术方案中,服务器端ui页面的解析和渲染需要使用浏览器技术进行html页面的解析和渲染。html页面的解析和渲染需要占用服务器端大量的计算资源。

因此,如何提高html页面的解析和渲染效率,从而节省服务器端的计算资源,成为目前亟待解决的问题。



技术实现要素:

本申请提供了一种基于树结构的数据比较及处理方法、装置,目的在于解决如何提高html页面的解析和渲染效率,从而节省服务器端的计算资源的问题。

为了实现上述目的,本申请提供了以下技术方案:

本申请的第一方面提供了一种基于树结构的数据比较方法,包括:

比较第一数据和第二数据的权重是否相同,所述第一数据和所述第二数据分别以树结构存储,所述第一数据的权重由按照预设顺序排列的、所述第一数据的树结构中的节点的权重确定,所述第二数据的权重由按照所述预设顺序排列的、所述第二数据的树结构中的节点的权重确定;

如果所述第一数据和第二数据的权重相同,则确定所述第一数据与所述第二数据相同。

结合第一方面,在本申请的第一方面的第一种实现方式中,所述第一数据和所述第二数据中任意一个的权重的获取方法具体包括:

计算数据的树结构中每一个节点的权重,其中,任意一个节点的权重为此节点下的子节点的权重及所述子节点对应的属性的权重的总和;

通过将所述每一个节点的权重以所述预设顺序排列,得到权重序列,所述预设顺序为预设的对所述树结构中的全部节点的遍历顺序;

通过将所述权重序列进行哈希运算,得到所述权重队列权重,所述权重队列权重为所述数据的权重。

结合第一方面的第一种实现方式,在本申请的第一方面的第二种实现方式中,任意一个子节点对应的属性的权重的确定方法具体包括:

确定此属性的子元素及子属性;

分别计算每一个子元素的权重及每一个子属性的权重,所有子元素的权重及每一个子属性的权重的总和,为此属性的权重。

结合第一方面的第二种实现方式,在本申请的第一方面的第三种实现方式中,任一个子元素的权重包括:

此子元素的value值。

结合第一方面的第三种实现方式,在本申请的第一方面的第四种实现方式中,如果节点不存在子节点,由所述节点的内部属性值确定所述节点的权重;

如果属性不存在子元素或子属性,则由所述属性的内部属性值确定所述属性的权重。

本申请的第二方面提供了一种基于树结构的数据处理方法,包括:

获取待处理数据,所述待处理数据以树结构存储;

获取所述待处理数据的权重,所述待处理数据的权重由按照预设顺序排列的、所述待处理数据的树结构中的节点的权重确定;

如果在缓冲存储器中命中所述待处理数据的权重,则将命中目标对应的处理结果作为所述待处理数据的处理结果,所述缓冲存储器中预先存储已处理数据的权重与其处理结果间的对应关系,在任意一组对应关系中,已处理数据以树结构存储,已处理数据的权重由按照所述预设顺序排列的、该已处理数据的树结构中的节点的权重确定。

结合第二方面,在本申请的第二方面的第一种实现方式中,还包括:

如果在所述缓冲存储器中没有命中所述待处理数据的权重,则通过对所述待处理数据进行预设类型的处理方式,得到处理结果。

结合第二方面的第一种实现方式,在本申请的第二方面的第二种实现方式中,所述待处理数据包括:

第一级数据、第二级数据、……第n级数据中的任意一个;

其中,第i+1级数据为第i级数据经过预设处理后的结果,具体地,从第一级数据得到第二级数据的第一种处理方式、从第二级数据得到第三级数据的第二种处理方式、……、从第n-1级数据得到第n级数据的第n-1种处理方式、以及从第n级数据得到所述处理结果的第n种处理方式,构成所述预设类型的处理方式,其中,从第i级数据得到第i+1级数据的数据变换过程与第j种处理方式对应,n为大于0的整数;i为整数且i=1、2……n-1,j为整数且i=1、2……n;

所述通过对所述待处理数据进行预设类型的处理,得到处理结果包括:

判断所述待处理数据的类型;

如果所述待处理数据为所述第n级数据,则通过使用所述第n种处理方式将所述第n级数据进行处理得到所述处理结果;

如果所述待处理数据为第i级数据,如果所述待处理数据以下的逐级数据中的任一级数据的权重在所述缓冲存储器中命中,则将命中目标对应的处理结果作为所述待处理数据的处理结果,否则,在得到第n级数据后,通过使用所述第n种处理方式将所述第n级数据进行处理得到所述处理结果,其中,所述待处理数据以下的逐级数据通过查询所述数据变换过程与所述预设类型的处理方式的对应关系获得。

结合第二方面的第二种实现方式,在本申请的第二方面的第三种实现方式中,在通过使用所述第n种处理方式将所述第n级数据进行处理得到所述处理结果之后,还包括:

如果所述待处理数据为所述第n级数据,则将所述第n级数据的树结构的权重与所述处理结果对应存储到所述缓冲存储器中;

如果所述待处理数据为第i级数据,则将所述第i级数据以及其以下逐级数据的权重与所述处理结果的对应关系存储到所述缓冲存储器中。

结合第二方面的第三种实现方式,在本申请的第二方面的第四种实现方式中,还包括:

将每一级数据与处理结果的对应关系均单独存储在所述缓冲存储器中对应的存储区域中,不同层级的数据的存储区域不同。

本申请的第三方面提供了一种基于树结构的数据比较装置,包括:

比较模块,用于比较第一数据和第二数据的权重是否相同,所述第一数据和所述第二数据分别以树结构存储,所述第一数据的权重由按照预设顺序排列的、所述第一数据的树结构中的节点的权重确定,所述第二数据的权重由按照所述预设顺序排列的、所述第二数据的树结构中的节点的权重确定;

确定模块,用于如果所述第一数据和第二数据的权重相同,则确定所述第一数据与所述第二数据相同。

结合第三方面,在本申请的第三方面的第一种实现方式中,还包括:

权重计算模块,用于获取所述第一数据和所述第二数据中任意一个的权重;

所述权重计算模块具体包括:

节点权重计算单元,用于计算数据的树结构中每一个节点的权重,其中,任意一个节点的权重为此节点下的子节点的权重及所述子节点对应的属性的权重的总和;

排序单元,用于通过将所述每一个节点的权重以所述预设顺序排列,得到权重序列,所述预设顺序为预设的对所述树结构中的全部节点的遍历顺序;

数据权重运算单元,用于通过将所述权重序列进行哈希运算,得到所述权重队列权重,所述权重队列权重为所述数据的权重。

结合第三方面的第一种实现方式,在本申请的第三方面的第二种实现方式中,所述节点权重计算单元用于计算数据的树结构中每一个节点的权重,其中,任意一个节点的权重为此节点下的子节点的权重及所述子节点对应的属性的权重的总和包括:

所述节点权重计算单元具体用于,计算数据的树结构中每一个节点的权重,其中,任意一个节点的权重为此节点下的子节点的权重及所述子节点对应的属性的权重的总和,任意一个子节点对应的属性的权重的确定方法具体包括:确定此属性的子元素及子属性;分别计算每一个子元素的权重及每一个子属性的权重,所有子元素的权重及每一个子属性的权重的总和,为此属性的权重。

结合第三方面的第二种实现方式,在本申请的第三方面的第三种实现方式中,所述节点权重计算单元用于分别计算每一个子元素的权重及每一个子属性的权重包括:

所述节点权重计算单元具体用于,分别计算每一个子元素的权重及每一个子属性的权重,任一个子元素的权重包括:此子元素的value值。

结合第三方面的第二种实现方式,在本申请的第三方面的第四种实现方式中,所述节点权重计算单元还用于:

如果节点不存在子节点,由所述节点的内部属性值确定所述节点的权重;

如果属性不存在子元素或子属性,则由所述属性的内部属性值确定所述属性的权重。

本申请的第四方面提供了一种基于树结构的数据处理装置,包括:

第一获取模块,用于获取待处理数据,所述待处理数据以树结构存储;

第二获取模块,用于获取所述待处理数据的权重,所述待处理数据的权重由按照预设顺序排列的、所述待处理数据的树结构中的节点的权重确定;

处理结果查找模块,用于如果在缓冲存储器中命中所述待处理数据的权重,则将命中目标对应的处理结果作为所述待处理数据的处理结果,所述缓冲存储器中预先存储已处理数据的权重与其处理结果间的对应关系,在任意一组对应关系中,已处理数据以树结构存储,已处理数据的权重由按照所述预设顺序排列的、该已处理数据的树结构中的节点的权重确定。

结合第四方面,在本申请的第四方面的第一种实现方式中,还包括:

处理结果计算模块,用于如果在所述缓冲存储器中没有命中所述待处理数据的权重,则通过对所述待处理数据进行预设类型的处理方式,得到处理结果。

结合第四方面的第一种实现方式,在本申请的第四方面的第二种实现方式中,所述处理结果计算模块包括:

判断单元,用于判断所述待处理数据的类型;

第一计算单元,用于如果所述待处理数据为第n级数据,则通过使用所述第n种处理方式将所述第n级数据进行处理得到所述处理结果;

第二计算单元,用于如果所述待处理数据为第i级数据,如果所述待处理数据以下的逐级数据中的任一级数据的权重在所述缓冲存储器中命中,则将命中目标对应的处理结果作为所述待处理数据的处理结果,否则,在得到第n级数据后,通过使用所述第n种处理方式将所述第n级数据进行处理得到所述处理结果,其中,所述待处理数据以下的逐级数据通过查询所述数据变换过程与所述预设类型的处理方式的对应关系获得;

其中,所述待处理数据包括:

第一级数据、第二级数据、……第n级数据中的任意一个,第i+1级数据为第i级数据经过预设处理后的结果,具体地,从第一级数据得到第二级数据的第一种处理方式、从第二级数据得到第三级数据的第二种处理方式、……、从第n-1级数据得到第n级数据的第n-1种处理方式、以及从第n级数据得到所述处理结果的第n种处理方式,构成所述预设类型的处理方式,其中,从第i级数据得到第i+1级数据的数据变换过程与第j种处理方式对应,n为大于0的整数;i为整数且i=1、2……n-1,j为整数且i=1、2……n。

结合第四方面的第二种实现方式,在本申请的第四方面的第三种实现方式中,还包括:

存储模块,用于在通过使用所述第n种处理方式将所述第n级数据进行处理得到所述处理结果之后,如果所述待处理数据为所述第n级数据,则将所述第n级数据的树结构的权重与所述处理结果对应存储到所述缓冲存储器中;如果所述待处理数据为第i级数据,则将所述第i级数据以及其以下逐级数据的权重与所述处理结果的对应关系存储到所述缓冲存储器中。

结合第四方面的第三种实现方式,在本申请的第四方面的第四种实现方式中,所述存储模块还用于:

将每一级数据与处理结果的对应关系均单独存储在所述缓冲存储器中对应的存储区域中,不同层级的数据的存储区域不同。

本申请所述的基于树结构的数据比较方法及装置,对于以树结构存储的第一数据和第二数据,如果第一数据和第二数据的权重相同,则确定第一数据和第二数据相同,其中,第一数据的权重由按照预设顺序排列的、第一数据的树结构中的节点的权重确定,第二数据的权重由按照预设顺序排列的、第二数据的树结构中的节点的权重确定,可见,本申请提供的基于树结构的数据比较方法及装置,为比较以树结构存储的数据是否相同提供了可能。

基于上述基于树结构的数据比较方法及装置,本申请还提供了一种基于树结构的数据处理方法及装置,获取以树结构存储的待处理数据,并获取待处理数据的权重,其中,待处理数据的权重由按照预设顺序排列的待处理数据的树结构中的节点的权重确定,如果在缓冲存储器中命中待处理数据的权重,则将命中目标对应的处理结果作为待处理数据的处理结果,其中,缓冲存储器用于存储已处理数据的权重与其处理结果间的对应关系,在任意一组对应关系中,已处理数据以树结构存储,已处理数据的权重由按照预设顺序排列的该已处理数据的树结构中的节点的权重确定,可见,通过上述数据比较方式,可以利用缓冲存储器得到待处理数据的处理结果,又因为html页面的解析和渲染过程中的待处理数据均为树结构存储的数据,所以,本申请提供的方法及装置,可以将缓冲存储技术引入html页面的解析和渲染过程中,从而节省服务器的计算资源。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例公开的一种基于树结构的数据比较方法的流程图;

图2为数据以树结构进行存储的示意图;

图3为图2所示的树结构进行抽象后的示意图;

图4为本申请实施例公开的以树结构存储的数据的权重的具体获取方法的流程图;

图5为又一种树结构的示意图;

图6为又一种树结构的示意图;

图7为本申请实施例公开的一种基于树结构的数据处理方法的流程图;

图8为浏览器对html页面的解析和渲染的过程的示意图;

图9为本申请实施例公开的又一种基于树结构的数据处理方法的流程图;

图10为不同层级的数据存储在不同的索引队列中的示意图;

图11为本申请实施例公开的一种基于树结构的数据比较装置的结构示意图;

图12为本申请实施例公开的一种基于树结构的数据处理装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例公开了一种基于树结构的数据比较方法,如图1所述,包括以下步骤:

s101:比较第一数据与第二数据的权重是否相同,如果相同,执行s102,如果不相同,执行s103;

具体地,第一数据和第二数据均以树结构进行存储,例如,数据以如图2所示的树结构进行存储,将图2所示的树结构进行抽象后,形成图3所示的结构,其中,domnode表示树结构中的节点,根据节点类型和定义的不同,可以包含不同的属性和方法。

对于上述树结构,权重的具体获取方式如图4所示,包括以下步骤:

s401:计算数据的树结构中每一个节点的权重;

定义树结构中的节点为n,节点的权重为w(n),其中,对于任意一个节点,其权重为此节点下的子节点的权重及所述子节点对应的属性的权重的总和,进一步地,任意一个子元素的权重为此子元素的元素值value。因此,任意一个节点的权重为:w(n)=sum(w(nj))+sum(w(ai)),其中j从0到n中子节点的个数,0<=i<=n中属性的个数。如果节点不存在子节点,所述节点的权重由所述节点的内部属性值确定,如果属性不存在子元素或子属性,则所述属性的权重由所述属性的内部属性值确定。

例如,对于如图5所示的树结构,假设对应的原始代码如下:

那么我们计算其中一个子节点比如button元素的权重为:

w(b)=value(b)=hashvalue(width,height)。

具体地,可以依据预设的遍历顺序依次计算每一个节点的权重。

s402:通过将所述每一个节点的权重以预设顺序排列,得到权重序列;

具体地,本实施例中,所述预设顺序可以为预设的对所述树结构中的全部节点的遍历顺序。

s403:通过将所述权重序列进行哈希运算,得到所述权重队列权重,所述权重队列权重为所述数据的权重。

需要说明的是,本实施例中,创造性地提出了一种树结构存储的数据之间的比较方法,理由如下:如图5所示的树结构与如图6所示的树结构,所含的子节点的数目相同,类型也相同,假设相同类型的子节点的权重值相同,则可以得出两棵树的权重相同,但是,从图中可以看出,这两棵树并不相同。

因此,本实施例中,将节点权重以预设顺序排列,得到队列q(t),树的权重由w(q(t))=hash(q(t)),hash表示哈希运算。如果两棵树的w(q(t))相同,即w(q(t0))=w(q(t1)),则确定两棵树相等。

可见,本实施例中,从树结构的原理入手,采用对节点队列进行哈希运算这一方式,能够避开树结构不同但权重相同的特例,从而提高树结构存储的数据的相同性确认的准确性。

s102:确定第一数据与第二数据相同;

s103:确定第一数据与第二数据不相同。

本实施例所述的方法,提供了比较树结构存储数据是否相同的方法,为树结构存储数据过程中引入缓冲存储器(cache)技术奠定了技术基础。

本申请实施例公开的一种基于树结构的数据处理方法,如图7所示,包括以下步骤:

s701:获取以树结构存储的待处理数据;

s702:获取待处理数据的权重;

本实施例中,权重的获取方法可以参见上述实施例所述,这里不再赘述。

s703:在cache中查询待处理数据的权重是否被命中,如果是,执行s704,如果否,执行s705;

具体地,在cache中预先存储已处理数据的权重与其处理结果间的对应关系,在任意一组对应关系中,已处理数据以树结构存储,已处理数据的权重均按照上述实施例所述方法获得。

s704:将命中目标对应的处理结果作为待处理数据的处理结果;

s705:通过对待处理数据进行预设类型的处理方式,得到处理结果。

本实施例中所述的方法,因为cache中预先存储有已处理数据的权重与其处理结果之间的对应关系,所以,对于以树结构存储的数据而言,如果已处理过,则可以直接cache命中返回处理结果,而不必再进行预设类型的处理,从而可以节省计算资源。

需要强调的是,虽然利用cache技术节省计算资源为现有技术,但是,因为树结构存储数据的复杂性,在树结构的数据处理过程中引入cache,需要对比树结构的数据是否相同,如果使用现有技术中逐一对比树结构的节点的方式相比,计算量非常巨大,所以,即使引入cache技术,也无法实现节省计算资源的初衷。而本实施例所述的方法,基于上述实施例所述的树结构数据的比较方法,每一个树结构数据得到一个权重值,通过权重值得到比较结果,因此,使得在树结构的数据处理过程中引入cache真正能够实现计算量的缩减。

本申请实施例公开的基于树结构的数据处理方法,可以针对多级待处理数据应用,即待处理数据包括:第一级数据、第二级数据、……第n级数据中的任意一个,其中,第i+1级数据为第i级数据经过预设处理后的结果,具体地,从第一级数据得到第二级数据的第一种处理方式、从第二级数据得到第三级数据的第二种处理方式、……、从第n-1级数据得到第n级数据的第n-1种处理方式、以及从第n级数据得到所述处理结果的第n种处理方式,构成预设类型的处理方式,其中,从第i级数据得到第i+1级数据的数据变换过程与第j种处理方式对应,

n为大于0的整数,第i+1级数据为第i级数据经过预设处理后的结果,i为整数且i=1、2……n-1,j为整数且i=1、2……n。

以图8所示的应用场景为例:在浏览器对html页面的解析和渲染的过程中,domtree解析模块将原始输入html原始文档解析为documenttree数据,rendertree解析模块将documenttree数据解析为供后续渲染使用的rendertree数据,renderlayertree解析模块将domcumenttree数据或rendertree数据解析为renderlayertree数据,paint-render模块将rendertree数据或renderlayertree数据渲染为最终图层的业务逻辑。

也就是说,在浏览器对html页面的解析和渲染的过程中,浏览器文档documenttree数据、浏览器渲染层rendertree数据以及具有多层树结构的浏览器渲染renderlayertree数据均可以为待处理数据,最终图层的业务逻辑为处理结果。

其中,documenttree数据为第一级数据,对于documenttree数据而言,rendertree数据或renderlayertree数据为第二级数据,对于rendertree数据而言,renderlayertree数据为第二级数据。每一个模块可执行的处理方式与此模块的输入数据转换为输出数据的过程相对应,从renderlayertree数据经过第n种(paint-render模块可执行的)处理方式得到处理结果。每一个模块的处理方式构成预设类型的处理方式。

也就是说,在渲染过程可以包括以下数据变换的过程:documenttree数据(第一级)--rendertree数据(第二级)--renderlayertree数据(第三级)—处理结果,或者,documenttree数据(第一级)--rendertree数据(第二级)--处理结果,或者,documenttree数据(第一级)--renderlayertree数据(第二级)—处理结果。

其中,每一条数据变换的过程均可以使用本申请实施例所述的方法,为了便于说明,本实施例中,以documenttree数据--rendertree数据--renderlayertree数据—处理结果为例进行说明。

基于图8所示的场景,本申请实施例公开的又一种基于树结构的数据处理方法,如图9所示,包括以下步骤:

s901:获取待处理数据,其中,待处理数据可以为documenttree数据、rendertree数据以及renderlayertree数据中的任意一种;

s902:获取待处理数据的权重;

因为待处理数据以树结构存储,所以,可以使用上述实施例所述的方法得到待处理数据的权重。

s903:判断在cache中是否命中权重,如果是,执行s904,如果否,执行s905;

需要说明的是,在图8所示的场景中,无论是哪一级数据,处理结果只有一个,即最终渲染结果。在cache中预先存储的是已处理数据(可能是上述的任一级数据)与处理结果间的对应关系。

s904:将命中目标对应的处理结果作为所述待处理数据的处理结果;

s905:判断待处理数据的类型;

s906:如果待处理数据为第n级数据(即本例中的renderlayertree数据),则通过使用paint-render模块可执行的处理方式(第n种处理方式)将renderlayertree数据进行处理得到渲染结果;

s907:如果待处理数据为第i级数据,(即本例中的documenttree数据或rendertree数据),则通过查询数据变换过程与预设类型的处理方式的对应关系,将待处理数据转换为其下一级数据;

也就是说,本例中,如果待处理数据为documenttree数据,则将其转换为rendertree数据,如果待处理数据为rendertree数据,则将其转换为renderlayertree数据。

s908:判断待处理数据的下一级数据的权重在cache中是否命中,如果是,执行s909,如果否,执行s910;

s909:将命中目标对应的处理结果作为待处理数据的处理结果返回;

s910:将待处理数据的下一级数据作为待处理数据,返回执行s905。

也就是说,如果待处理数据为documenttree数据,则将其转换为rendertree数据后,如果rendertree数据的权重在cache中命中,则返回处理结果,如果没有命中,则继续计算renderlayertree数据,继续通过paint-render模块计算处理结果。

如果待处理数据为rendertree数据,将其转换为renderlayertree数据,如果renderlayertree数据的权重在cache中命中,则返回处理结果,如果没有命中,则继续通过paint-render模块计算处理结果。

需要说明的是,以上过程仅以documenttree数据--rendertree数据--renderlayertree数据—处理结果这一数据转换过程为例进行说明,对于其它的数据转换过程,同样适用。而对于具有多种转换可能的数据而言,例如documenttree数据数据,既可以按照:documenttree数据(第一级)--rendertree数据(第二级)--renderlayertree数据(第三级)—处理结果的过程,转换为rendertree数据,也可以按照documenttree数据(第一级)--renderlayertree数据(第二级)—处理结果的过程,转换为renderlayertree数据,在s907中可以依据实际应用的需求,设定转换为哪个下一级数据。

可选地,本实施例中,在s906之后还可以包括以下步骤:

s911:将第n级数据的树结构的权重与所述处理结果对应存储到所述缓冲存储器中;

可选地,本实施例中,在在s909之后,还可以包括以下步骤

s912:将所述第i级数据以及其以下逐级数据的权重与所述处理结果的对应关系存储到所述缓冲存储器中。

进一步地,在存储对应关系时,可以将每一级数据与处理结果的对应关系均单独存储在所述缓冲存储器中对应的存储区域中,不同层级的数据的存储区域不同,如图10所示,不同层级的数据存储在不同的索引队列中。

存储对应关系的目的在于,提高后续处理过程中cache的命中率。进一步地,不同层级的数据存储在不同的存储区域中,可以提高cache检索的效率。

从本实施例中所述的步骤可以看出,在现有的html页面的渲染过程中,引入cache技术,并且,在一级数据没有命中的情况下,在使用按照现有的处理流程得出下一级数据后,再进行cache命中查询,从而可以最大程度地节省计算资源。

与上述方法实施例相对应地,本申请实施例还公开了一种基于树结构的数据比较装置,如图11所示,包括:

比较模块1101,用于比较第一数据和第二数据的权重是否相同,所述第一数据和所述第二数据分别以树结构存储,所述第一数据的权重由按照预设顺序排列的、所述第一数据的树结构中的节点的权重确定,所述第二数据的权重由按照所述预设顺序排列的、所述第二数据的树结构中的节点的权重确定;

确定模块1102,用于如果所述第一数据和第二数据的权重相同,则确定所述第一数据与所述第二数据相同。

可选地,还可以包括:

权重计算模块1103,用于获取所述第一数据和所述第二数据中任意一个的权重;

具体地,权重计算模块1103可以具体包括:

节点权重计算单元11031,用于计算数据的树结构中每一个节点的权重,其中,任意一个节点的权重为此节点下的子节点的权重及所述子节点对应的属性的权重的总和;

排序单元11032,用于通过将所述每一个节点的权重以所述预设顺序排列,得到权重序列,所述预设顺序为预设的对所述树结构中的全部节点的遍历顺序;

数据权重运算单元11033,用于通过将所述权重序列进行哈希运算,得到所述权重队列权重,所述权重队列权重为所述数据的权重。

进一步地,节点权重计算单元计算数据的树结构中每一个节点的权重,其中,任意一个节点的权重为此节点下的子节点的权重及所述子节点对应的属性的权重的总和的具体实现方式可以为:计算数据的树结构中每一个节点的权重,其中,任意一个节点的权重为此节点下的子节点的权重及所述子节点对应的属性的权重的总和,任意一个子节点对应的属性的权重的确定方法具体包括:确定此属性的子元素及子属性;分别计算每一个子元素的权重及每一个子属性的权重,所有子元素的权重及每一个子属性的权重的总和,为此属性的权重。

再进一步地,节点权重计算单元分别计算每一个子元素的权重及每一个子属性的权重的具体实现方式可以为:分别计算每一个子元素的权重及每一个子属性的权重,任一个子元素的权重包括:此子元素的value值。

再进一步地,节点权重计算单元还可以用于:如果节点不存在子节点,由所述节点的内部属性值确定所述节点的权重;如果属性不存在子元素或子属性,则由所述属性的内部属性值确定所述属性的权重。

本实施例所述的装置,用于比较以树结构存储的数据间是否相同,为树结构数据的cache奠定基础。

本申请实施例还公开了一种基于树结构的数据处理装置,如图12所示,包括:

第一获取模块1201,用于获取待处理数据,所述待处理数据以树结构存储;

第二获取模块1202,用于获取所述待处理数据的权重,所述待处理数据的权重由按照预设顺序排列的、所述待处理数据的树结构中的节点的权重确定;

处理结果查找模块1203,用于如果在缓冲存储器中命中所述待处理数据的权重,则将命中目标对应的处理结果作为所述待处理数据的处理结果,所述缓冲存储器中预先存储已处理数据的权重与其处理结果间的对应关系,在任意一组对应关系中,已处理数据以树结构存储,已处理数据的权重由按照所述预设顺序排列的、该已处理数据的树结构中的节点的权重确定。

可选地,本实施例中还可以包括:

处理结果计算模块1204,用于如果在所述缓冲存储器中没有命中所述待处理数据的权重,则通过对所述待处理数据进行预设类型的处理方式,得到处理结果。

具体地,处理结果计算模块1204可以具体包括:

判断单元12041,用于判断所述待处理数据的类型;

第一计算单元12042,用于如果所述待处理数据为第n级数据,则通过使用所述第n种处理方式将所述第n级数据进行处理得到所述处理结果;

第二计算单元12043,用于如果所述待处理数据为第i级数据,如果所述待处理数据以下的逐级数据中的任一级数据的权重在所述缓冲存储器中命中,则将命中目标对应的处理结果作为所述待处理数据的处理结果,否则,在得到第n级数据后,通过使用所述第n种处理方式将所述第n级数据进行处理得到所述处理结果,其中,所述待处理数据以下的逐级数据通过查询所述数据变换过程与所述预设类型的处理方式的对应关系获得;

其中,所述待处理数据包括:

第一级数据、第二级数据、……第n级数据中的任意一个,第i+1级数据为第i级数据经过预设处理后的结果,具体地,从第一级数据得到第二级数据的第一种处理方式、从第二级数据得到第三级数据的第二种处理方式、……、从第n-1级数据得到第n级数据的第n-1种处理方式、以及从第n级数据得到所述处理结果的第n种处理方式,构成所述预设类型的处理方式,其中,从第i级数据得到第i+1级数据的数据变换过程与第j种处理方式对应,n为大于0的整数;i为整数且i=1、2……n-1,j为整数且i=1、2……n。

可选地,本实施例中还可以包括:

存储模块1205,用于在通过使用所述第n种处理方式将所述第n级数据进行处理得到所述处理结果之后,如果所述待处理数据为所述第n级数据,则将所述第n级数据的树结构的权重与所述处理结果对应存储到所述缓冲存储器中;如果所述待处理数据为第i级数据,则将所述第i级数据以及其以下逐级数据的权重与所述处理结果的对应关系存储到所述缓冲存储器中。

进一步地,存储模块1205还可以用于:将每一级数据与处理结果的对应关系均单独存储在所述缓冲存储器中对应的存储区域中,不同层级的数据的存储区域不同。

本实施例所述的装置,每一个树结构数据得到一个权重值,通过权重值得到比较结果,因此,使得在树结构的数据处理过程中引入cache真正能够实现计算量的缩减。

本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1