一种基于语法树的日志解析方法、系统和计算机可读介质转让专利

申请号 : CN201811629058.7

文献号 : CN109726185B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 施展范渊刘博龙文洁

申请人 : 杭州安恒信息技术股份有限公司

摘要 :

本发明提供了一种基于语法树的日志解析方法、系统和计算机可读介质,涉及日志解析技术领域,包括:获取至少一个待解析的原始日志;将原始日志与词法分析器进行匹配,得到第一匹配结果;如果第一匹配结果为匹配失败,则对原始日志进行语法分析,并基于语法分析结果生成语法树,其中,语法树中包括多个节点,每个节点用于表征原始日志中的一个字段信息或表征原始日志中的一个运算符信息;遍历语法树,并利用正则表达式获取语法树中各个节点中的字段信息。本发明所提供的方法,针对每种待解析的原始日志,均通过相同的正则表达式解析不同结构的原始日志的方式,降低了正则表达式内容的冗余,减少了编写规则人员的重复劳动过程。

权利要求 :

1.一种基于语法树的日志解析方法,其特征在于,包括:获取至少一个待解析的原始日志;

将各个所述原始日志与词法分析器进行匹配,得到多个第一匹配结果,其中,所述第一匹配结果为以下任一项:匹配成功,匹配失败;

如果每个所述第一匹配结果为匹配失败,则对所述原始日志进行语法分析,并基于语法分析结果生成语法树,其中,所述语法树中包括多个节点,每个节点用于表征所述原始日志中的一个字段信息或表征所述原始日志中的一个运算符信息;

遍历所述语法树,并利用正则表达式获取所述语法树中各个节点中的字段信息;

对所述原始日志进行语法分析,并基于语法分析结果生成语法树包括:利用语法分析器对所述原始日志进行运算符匹配,得到第一运算符标识;

基于所述第一运算符标识对所述原始日志进行分割,得到至少一个日志段;

将所述第一运算符标识作为根节点,以及将所述至少一个日志段为子节点;

对所述日志段进行运算符匹配,得到第二匹配结果,并根据所述第二匹配结果生成所述语法树。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:如果所述第一匹配结果为匹配成功,则利用正则表达式获取所述原始日志中的字段信息。

3.根据权利要求1所述的方法,其特征在于,对所述日志段进行运算符匹配,得到第二匹配结果,并根据所述第二匹配结果生成所述语法树包括:如果基于所述第二匹配结果确定出匹配成功,则得到第二运算符标识,基于所述第二运算符标识对所述日志段进行分割,并基于分割结果生成新的子节点;

如果匹配失败,则对所述至少一个日志段进行元素表达式匹配,得到第三匹配结果,并基于第三匹配结果生成叶子结点,得到语法树。

4.根据权利要求3所述的方法,其特征在于,对所述至少一个日志段进行元素表达式匹配,得到第三匹配结果,并基于第三匹配结果生成叶子结点包括:将所述至少一个日志段与语法分析器中的元素表达式进行匹配,得到第三匹配结果,其中,所述第三匹配结果为以下任一项:匹配成功,匹配失败;

如果所述第三匹配结果为匹配成功,则将所述至少一个日志段作为语法树的叶子结点。

5.根据权利要求3所述的方法,其特征在于,遍历所述语法树包括:将所述语法树中各个节点所对应的运算符标识,按照预设优先顺序进行分级,得到每个运算符标识的优先级;

将所述运算符标识的优先级从高到低的顺序作为语法树的遍历顺序;

根据所述遍历顺序遍历所述语法树。

6.根据权利要求1所述的方法,其特征在于,在获取至少一个待解析的原始日志之前,所述方法还包括:构建词法分析器库和语法分析器库。

7.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行所述权利要求1-6中任一所述的方法。

说明书 :

一种基于语法树的日志解析方法、系统和计算机可读介质

技术领域

[0001] 本发明涉及日志解析技术领域,尤其是涉及一种基于语法树的日志解析方法、系统和计算机可读介质。

背景技术

[0002] 当前的日志解析规则,首先对整个日志使用正则表达式进行分割,然后将分割后得内容再次使用正则表达式进行详细的解析和分割,针对不同的日志需要重新编写解析规则所需的的正则表达式来匹配。但是不同的日志之间,存在有部分内容是可以被之前所写过的正则表达式匹配上的情况,这样如果在编写新的规则时仍然重新再编写一遍,就增加了解析规则的冗余,和编写解析规则人员的重复劳动。

发明内容

[0003] 有鉴于此,本发明的目的在于提供一种基于语法树的日志解析方法、系统和计算机可读介质,针对每种待解析的原始日志,均通过相同的正则表达式解析不同结构的原始日志的方式,降低了正则表达式内容的冗余,减少了编写规则人员的重复劳动过程。
[0004] 第一方面,本发明实施例提供了一种基于语法树的日志解析方法,包括:获取至少一个待解析的原始日志;将各个所述原始日志与词法分析器进行匹配,得到多个第一匹配结果,其中,所述第一匹配结果为以下任一项:匹配成功,匹配失败;如果每个所述第一匹配结果为匹配失败,则对所述原始日志进行语法分析,并基于语法分析结果生成语法树,其中,所述语法树中包括多个节点,每个节点用于表征所述原始日志中的一个字段信息或表征所述原始日志中的一个运算符信息;遍历所述语法树,并利用正则表达式获取所述语法树中各个节点中的字段信息。
[0005] 进一步地,所述方法还包括:如果所述第一匹配结果为匹配成功,则利用正则表达式获取所述原始日志中的字段信息。
[0006] 进一步地,对所述原始日志进行语法分析,并基于语法分析结果生成语法树包括:利用语法分析器对所述原始日志进行运算符匹配,得到第一运算符标识;基于所述第一运算符标识对所述原始日志进行分割,得到至少一个日志段;将所述第一运算符标识作为根节点,以及将所述至少一个日志段为子节点;对所述日志段进行运算符匹配,得到第二匹配结果,并根据所述第二匹配结果生成所述语法树。
[0007] 进一步地,对所述日志段进行运算符匹配,得到第二匹配结果,并根据所述第二匹配结果生成所述语法树包括:如果基于所述第二匹配结果确定出匹配成功,则得到第二运算符标识,基于所述第二运算符标识对所述日志段进行分割,并基于分割结果生成新的子节点;如果匹配失败,则对所述至少一个日志段进行元素表达式匹配,得到第三匹配结果,并基于第三匹配结果生成叶子结点,得到语法树。
[0008] 进一步地,对所述至少一个日志段进行元素表达式匹配,得到第三匹配结果,并基于第三匹配结果生成叶子结点包括:将所述至少一个日志段与语法分析器中的元素表达式进行匹配,得到第三匹配结果,其中,所述第三匹配结果为以下任一项:匹配成功,匹配失败;如果所述第三匹配结果为匹配成功,则将所述至少一个日志段作为语法树的叶子结点。
[0009] 进一步地,遍历所述语法树包括:将所述语法树中各个节点所对应的运算符标识,按照预设优先顺序进行分级,得到每个运算符标识的优先级;将所述运算符标识的优先级从高到低的顺序作为语法树的遍历顺序;根据所述遍历顺序遍历所述语法树。
[0010] 进一步地,在获取至少一个待解析的原始日志之前,所述方法还包括:构建词法分析器库和语法分析器库。
[0011] 第二方面,本发明实施例还提供一种基于语法树的日志解析系统,包括:获取模块,词法分析模块,语法分析模块和字段信息获取模块,其中,所述获取模块,用于获取至少一个待解析的原始日志;所述词法分析模块,用于将各个所述原始日志与词法分析器进行匹配,得到多个第一匹配结果,其中,所述第一匹配结果为以下任一项:匹配成功,匹配失败;所述语法分析模块,用于如果每个所述第一匹配结果为匹配失败,则对所述原始日志进行语法分析,并基于语法分析结果生成语法树,其中,所述语法树中包括多个节点,每个节点用于表征所述原始日志中的一个字段信息或表征所述原始日志中的一个运算符信息;所述字段信息获取模块,用于遍历所述语法树,并利用正则表达式获取所述语法树中各个节点中的字段信息。
[0012] 进一步地,所述字段信息获取模块还用于:如果所述第一匹配结果为匹配成功,则利用正则表达式获取所述原始日志中的字段信息。
[0013] 第三方面,本发明实施例还提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行上述第一方面所述方法。
[0014] 在本发明实施例中,通过获取至少一个待解析的原始日志,将每个原始日志与词法分析器进行匹配,得到匹配结果,如果匹配结果为匹配失败,则对原始日志进行语法分析,并基于语法分析结果生成语法树,遍历语法树,并利用正则表达式获取语法树中各个节点中的字段信息,针对每种待解析的原始日志,均通过相同的正则表达式解析不同结构的原始日志的方式,降低了正则表达式内容的冗余,减少了编写规则人员的重复劳动过程。
[0015] 本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
[0016] 为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

[0017] 为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018] 图1为本发明实施例提供的一种基于语法树的日志解析方法的流程图;
[0019] 图2为本发明实施例提供的另一种基于语法树的日志解析方法的流程图;
[0020] 图3为本发明实施例提供的第一种语法树的结构示意图;
[0021] 图4为本发明实施例提供的第二种语法树的结构示意图;
[0022] 图5为本发明实施例提供的第三种语法树的结构示意图;
[0023] 图6为本发明实施例提供的第四种语法树的结构示意图;
[0024] 图7为本发明实施例提供的第五种语法树的结构示意图;
[0025] 图8为本发明实施例提供的第六种语法树的结构示意图;
[0026] 图9为本发明实施例提供的一种基于语法树的日志解析系统的示意图。

具体实施方式

[0027] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0028] 在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0029] 另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0030] 实施例一:
[0031] 根据本发明实施例,提供了一种基于语法树的日志解析方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0032] 图1是根据本发明实施例的一种基于语法树的日志解析方法的流程图,如图1所示,该方法包括如下步骤:
[0033] 步骤S102,获取至少一个待解析的原始日志;
[0034] 步骤S104,将各个原始日志与词法分析器进行匹配,得到多个第一匹配结果,其中,第一匹配结果为以下任一项:匹配成功,匹配失败;如果第一匹配结果为匹配失败,则执行步骤S106;
[0035] 步骤S106,对原始日志进行语法分析,并基于语法分析结果生成语法树,其中,语法树中包括多个节点,每个节点用于表征原始日志中的一个字段信息或表征原始日志中的一个运算符信息;
[0036] 步骤S108,遍历语法树,并利用正则表达式获取语法树中各个节点中的字段信息,并存储为key-value对,即键-值对,其中,值为字段信息的内容,键为字段信息的内容所对应关键字。
[0037] 例如,利用正则表达式获取语法树中的一个节点中的字段信息为时间信息,例如,23:44:18,则存储的key-value对为:时间-23:44:18。
[0038] 在本发明实施例中,通过获取至少一个待解析的原始日志,将每个原始日志与词法分析器进行匹配,得到匹配结果,如果匹配结果为匹配失败,则对原始日志进行语法分析,并基于语法分析结果生成语法树,遍历语法树,并利用正则表达式获取语法树中各个节点中的字段信息,针对每种待解析的原始日志,均通过相同的正则表达式解析不同结构的原始日志的方式,降低了正则表达式内容的冗余,减少了编写规则人员的重复劳动过程。
[0039] 可选地,如果步骤S104中的第一匹配结果为匹配成功,则:
[0040] 利用正则表达式获取至少一个待解析的原始日志中的字段信息,并存储为key-value对,即键-值对。
[0041] 可选地,如图2所示,步骤S106中,对原始日志进行语法分析,并基于语法分析结果生成语法树具体包括如下步骤:
[0042] 步骤S1061,利用语法分析器对原始日志进行运算符匹配,得到第一运算符标识。
[0043] 具体地,对语法分析器中的运算符标识按照预设优先顺序进行分级,得到每个运算符标识的优先级,对运算符标识按照优先级从高到底的顺序进行匹配,得到优先级最高的运算符标识作为第一运算符标识。
[0044] 步骤S1062,基于第一运算符标识对原始日志进行分割,得到至少一个日志段。具体地,以第一运算符标识在原始日志中的位置为基准,将原始日志进行分割。
[0045] 例如,第一运算符标识在原始日中中间的位置,则将原始日志以第一运算符标识为基准,分割为两个日志段,分别为:原始日志中第一运算符标识之前的部分作为第一日志段和原始日志中第一运算符标识之后的部分作为第二日志段。
[0046] 步骤S1063,将第一运算符标识作为根节点,以及将至少一个日志段为子节点。
[0047] 步骤S1064,对日志段进行运算符匹配,得到第二匹配结果,并根据第二匹配结果生成语法树。
[0048] 具体地,如果基于第二匹配结果确定出匹配成功,则得到第二运算符标识,基于第二运算符标识对日志段进行分割,并基于分割结果生成新的子节点;
[0049] 如果匹配失败,则对至少一个日志段进行元素表达式匹配,得到第三匹配结果,并基于第三匹配结果生成叶子结点,得到语法树。其中,第三匹配结果包括以下至少之一:匹配成功,匹配失败。
[0050] 具体地,如果第三匹配结果为匹配成功,则将至少一个日志段作为语法树的叶子结点;如果第三匹配结果为匹配失败,则将该日志段进行丢弃处理。
[0051] 可选地,本发明实施例提供的方法中,遍历语法树的方法包括:
[0052] 将语法树中各个节点所对应的运算符标识,按照预设优先顺序进行分级,得到每个运算符标识的优先级;例如,可以将运算符标识的优先级分为四个等级;
[0053] 将运算符标识的优先级从高到低的顺序作为语法树的遍历顺序;例如,从运算符标识优先级最高的根节点开始遍历,然后再遍历运算符标识优先级低的运算符节点;
[0054] 根据遍历顺序遍历语法树。
[0055] 下面以如下日志为例,具体说明本发明实施例中对日志解析的过程:
[0056] 获取至少一个待解析的原始日志内容为:
[0057] <190>Sep 19 2018 02:03:45WH-USG9560-1%%01RT/6/CM(l)[978]:Slot=8/2,Vcpu=0;cpuid=2cpu=0totalmemory=492614580curmemory=108399660
[0058] 利用语法分析器对原始日志进行运算符匹配,得到第一运算符标识为“%%01RT/6/CM(l)[978]”,将日志以第一运算符标识作为根节点,并基于第一运算符标识将原始日志拆分成左日志段:Sep 19 2018 02:03:45WH-USG9560-1,和右日志段:Slot=8/2,Vcpu=0;
cpuid=2cpu=0totalmemory=492614580curmemory=108399660,分别将左日志段和右日志段作为根节点的左子节点和右子节点,构成树,此时树的形式如图3所示。
[0059] 利用语法分析器对左日志段进行语法分析,可以将左日志段做进一步拆分,拆分后的左子节点可以继续生成子节点,此时树的结构如图4所示。
[0060] 利用词法分析器中的正则表达式对左子节点生成的新的子节点进行匹配,得到的匹配结果为匹配成功,则获取到新生成的子节点的字段信息为:Sep 19 2018 02:03:45和WH-USG9560-1。
[0061] 利用语法分析器对右日志段进行语法分析,得到第二运算符标识为“;”,并根据第二运算符对右日志段进行分割操作,并生成右子节点的两个新的子节点,子节点所对应的日志段内容分别为:Slot=8/2,Vcpu=0和cpuid=2cpu=0totalmemory=492614580curmemory=108399660,此时树的结构如图5所示。
[0062] 继续利用语法分析器对新生成的子节点进行语法分析,得到第三运算符标识为空格和第四运算符为“,”,并根据空格和“,”对新生成的子节点进行分割,继续生成新的子节点,此时树的结构如图6所示。
[0063] 此时生成的新的子节点还可以继续使用“=”进行分割而达到最小单元,且分割后的最小单元都可以被语法分析器中的元素表达式匹配成功,将分割后的最小单元作为树的叶子结点,得到语法树,其中,语法树的结构如图7所示。
[0064] 可选地,可以将图7所示语法树转化成表达式的形式,转化后的语法树结构如图8所示。
[0065] 其中,对语法分析器中的运算符标识按照预设优先顺序进行分级,得到四个运算符优先级,分别为:
[0066] 一级运算符:“%%\d{1,2}RT/\d+/CM\(l\)\[\d+\]”
[0067] 二级运算符:“{*?}{\S*}”,“;”
[0068] 三级运算符:“,”,“”
[0069] 四级运算符:“=”
[0070] 元素表达式为:\S{3}\d{1,2}\d{4}\d{1,2}:\d{1,2}:\d{1,2}\w{1,2}-\w{3}\d{4}-\d{1}\w+\d+
[0071] 然后遍历语法树,获取语法树中各个子节点的字段信息。
[0072] 具体地,首先通过运算符默认的方式进行赋值,例如语法树中的“=”运算符,表明将该运算符右叶子结点作为值付给键名为左叶子结点的变量,得到键=值对,即为字段信息。而对于运算符没有默认方式的则可以人为在规则中说明比如上述语法树中的的时间和主机名称,可以使用节点号的形式来指明应该赋值给哪个变量。
[0073] 可选地,在步骤S102获取至少一个待解析的原始日志之前,本发明实施例提供的基于语法树的日志解析方法还包括如下步骤:构建词法分析器库和语法分析器库。
[0074] 具体地,构建语法分析器库时,需要专业人员编写相应的语法分析器,其中,语法分析器用于对日志进行语法分析,并基于语法分析结果对日志进行分割操作。
[0075] 可选地,语法分析器包括:运算符、正则表达式、遍历顺序、赋值规则构成。其中,遍历顺序为预设遍历顺序,为语法树遍历顺序。
[0076] 例如,语法分析器库中的一种语法分析器结构为:
[0077] {"op":"(\S*)=(\S*)","order":"center","ass":"RTL"},
[0078] 其中,op表示的是运算符,order表示的是遍历顺序,ass表示的是赋值规则,(\S*)表示正则表达式。
[0079] 具体地,构建词法分析器库时,需要专业人员编写相应的词法分析器,其中,词法分析器用于对被分割之后的日志进行内容提取。
[0080] 可选地,词法分析器包括正则表达式。
[0081] 例如,词法分析器库中的一种词法分析器结构为:
[0082] {"accid":"[\w\d]*"},标明该词法分析器所匹配的结构只能由单词或者数字组成。
[0083] 通过以上描述可知,在本发明实施例中,通过获取至少一个待解析的原始日志,将每个原始日志与词法分析器进行匹配,得到匹配结果,如果匹配结果为匹配失败,则对原始日志进行语法分析,并基于语法分析结果生成语法树,遍历语法树,并利用正则表达式获取语法树中各个节点中的字段信息,针对每种待解析的原始日志,均通过相同的正则表达式解析不同结构的原始日志的方式,降低了正则表达式内容的冗余,减少了编写规则人员的重复劳动过程。
[0084] 实施例二:
[0085] 本发明实施例还提供了一种基于语法树的日志解析系统,该装置主要用于执行本发明实施例上述内容所提供的一种基于语法树的日志解析方法,以下对本发明实施例提供的基于语法树的日志解析系统做具体介绍。
[0086] 图9是根据本发明实施例的一种基于语法树的日志解析系统的示意图,如图9所示,该系统主要包括:获取模块10,词法分析模块20,语法分析模块30和字段信息获取模块40,其中,
[0087] 获取模块10,用于获取至少一个待解析的原始日志;
[0088] 词法分析模块20,用于将各个原始日志与词法分析器进行匹配,得到多个第一匹配结果,其中,第一匹配结果为以下任一项:匹配成功,匹配失败;
[0089] 语法分析模块30,用于如果每个第一匹配结果为匹配失败,则对原始日志进行语法分析,并基于语法分析结果生成语法树,其中,语法树中包括多个节点,每个节点用于表征原始日志中的一个字段信息或表征原始日志中的一个运算符信息;
[0090] 字段信息获取模块40,用于遍历语法树,并利用正则表达式获取语法树中各个节点中的字段信息。
[0091] 可选地,字段信息获取模块40还用于:
[0092] 如果第一匹配结果为匹配成功,则利用正则表达式获取至少一个待解析的原始日志中的字段信息。
[0093] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0094] 本发明实施例还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器执行上述实施例一提供的方法。
[0095] 本发明实施例所提供的进行一种基于语法树的日志解析方法的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
[0096] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0097] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0098] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0099] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0100] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0101] 最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。