本发明涉及监控报警技术领域,特别涉及一种生成报警内容的方法和计算设备。
背景技术:
计算设备中异常事件的发生是无法避免的,例如程序报异常。在异常事件发生时,能够第一时间获得异常事件的关键信息、及时响应解决异常事件对技术人员来说所是至关重要的。由于不同类型的事件所包含的关键信息不同,而且,即便是同一事件,不同技术人员关注的关键信息也不同。因此,如何基于事件日志灵活定制报警内容是非常有必要的。
日志监控系统在监控异常事件时,为避免重复报警,并不会针对每个异常事件都进行报警。故,开发人员会在监控系统中配置相应的报警规则。例如,最近x分钟内,y类事件发生n次,则会触发报警规则而进行报警,一个报警中的内容通常包括一段时间内监控到的所有异常事件日志以及报警规则。
但,如果报警内容只是简单的说明事件触发了报警规则,报警接收人便不能从报警内容里获取关键信息。如果报警内容只是简单的把所有事件日志的内容拼接一起,报警接收人也很难从报警内容里筛选出关键信息。而且,事件日志的内容通常较长,如果将全部事件日志拼接在一起,会造成最终报警内容的长度过长,这样会导致报警内容被限制而无法发送或无法完整的发送。
为此,需要一种生成报警内容的方法,来解决上述报警方法中存在的问题。
技术实现要素:
为此,本发明提供一种新的生成报警内容的方法,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种生成报警内容的方法,在计算设备中执行,所述计算设备中配置有报警规则,包括:接收客户端根据报警内容的类型设置的报警模板;当检测到报警规则被触发时,从所述报警规则被触发之前的所述多个事件日志中选择最终优先级最高的事件日志作为报警日志;以及基于所述报警日志和报警模板生成报警内容。
可选地,在根据本发明的生成报警内容的方法中,所述事件日志包括一种或多种优先级,在从报警规则被触发之前的多个事件日志中选择最终优先级最高的事件日志之前,还包括步骤:对事件日志进行监控,获取在所述报警规则被触发之前的多个事件日志;确定每个事件日志的异常类型,并分别对每个事件日志的异常类型进行统计,生成事件日志列表;根据所述事件日志的异常类型,确定所述事件日志所包括的优先级;根据所述事件日志所包括的优先级确定所述事件日志的最终优先级。
可选地,在根据本发明的生成报警内容的方法中,所述确定事件日志所包括的优先级的步骤包括:基于所述事件日志列表确定所述多个事件日志中出现次数最多的异常类型;遍历所述事件日志列表,判断所述事件日志的异常类型是否是出现次数最多的异常类型;若是,则确定所述事件日志包括第一优先级。
可选地,在根据本发明的生成报警内容的方法中,所述事件日志列表中的多个事件日志按照出现时间顺序排列,所述确定事件日志所包括的优先级的步骤还包括:遍历所述事件日志列表,判断所述事件日志的异常类型是否是预定时间段内第一次出现的异常类型;若是,则确定所述事件日志包括第二优先级。
可选地,在根据本发明的生成报警内容的方法中,所述确定事件日志所包括的优先级的步骤还包括:判断所述事件日志的标记是否是延迟处理;若是,则确定所述事件日志包括第三优先级。
可选地,在根据本发明的生成报警内容的方法中,所述确定事件日志所包括的优先级的步骤还包括:判断所述事件日志的标记是否是无需处理;若是,则确定所述事件日志包括第四优先级。
可选地,在根据本发明的生成报警内容的方法中,所述一种或多种优先级包括第一优先级、第二优先级、第三优先级、第四优先级;所述第一优先级、第二优先级、第三优先级、第四优先级的优先级别依次降低。
可选地,在根据本发明的生成报警内容的方法中,还包括步骤:接收多个先前客户端设置并生成的多个先前报警模板;将多个先前报警模板存储到数据存储装置,生成报警模板列表;所述接收客户端根据报警内容的类型设置的报警模板的步骤包括:向客户端提供所述报警模板列表,以便客户端从所述报警模板列表中选择报警模板;
从数据存储装置中获取客户端选择的报警模板。
可选地,在根据本发明的生成报警内容的方法中,在生成报警内容之后,还包括步骤:将所述报警内容发送至所述客户端;获取所述客户端对其接收到的报警内容所对应的报警日志的反馈标记;以及将所述报警日志以及对应的反馈标记存储到数据存储装置,生成日志标记列表,以便在获取新的事件日志时,基于所述日志标记列表确定该新的事件日志对应的标记。
可选地,在根据本发明的生成报警内容的方法中,所述反馈标记包括需要处理、无需处理以及延迟处理。
可选地,在根据本发明的生成报警内容的方法中,所述报警模板为freemarker模板。
可选地,在根据本发明的生成报警内容的方法中,所述报警内容包括报警日志的关键字段信息。
根据本发明的一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述的生成报警内容的方法的指令。
根据本发明的一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述方法。
根据本发明的技术方案,通过对事件日志进行监控,当检测到报警规则被触发时,获取触发报警规则的多个事件日志,并从触发报警规则的多个事件日志中选择最终优先级最高的一个事件日志作为报警日志,并基于报警日志和报警模板生成报警内容后发送给客户端。最终优先级最高的一个事件日志实际上反应了在触发报警规则的多个事件日志中最能反应本次报警状况的事件,有助于技术人员从获取的报警内容中快速、高效地判断触发报警事件的核心问题,从而更及时有效地处理报警事件。
进一步地,本发明由客户端用户基于报警内容的类型设置报警模板,将报警日志中的内容根据报警模板进行定制,有利于精简报警内容,使报警内容既简短、又能展示报警日志中的关键信息。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的监控报警系统100的示意图;
图2示出了根据本发明一个实施例的计算设备200的示意图;
图3示出了根据本发明一个实施例的生成报警内容的方法300的流程图;
图4示出了根据本发明一个实施例的报警装置400的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的监控报警系统100的示意图。如图1所示,监控报警系统100包括计算设备200以及一个或多个客户端110。计算设备200中驻留有报警装置,报警装置配置有相应的报警规则,通过报警装置对计算设备200中的各个应用程序的异常事件进行监控,并基于报警规则进行报警。
客户端110即用户所使用的终端设备,其具体可以是桌面电脑、笔记本电脑等个人计算机,也可以是手机、平板电脑、多媒体设备、智能可穿戴设备等,但不限于此。计算设备200可以实现为应用服务器、web服务器等;也可以实现为桌面电脑、笔记本电脑、处理器芯片、手机、平板电脑等计算设备,但不限于此。计算设备200与客户端110通过有线或无线的方式网络连接,以便与客户端110进行通信。
在根据本发明的实施例中,计算设备200中驻留有报警装置400,并通过报警装置400对各个应用程序发生异常事件时生成的事件日志进行监控,并检测报警规则是否被触发,在检测到报警规则被触发时进行报警。应当指出,在预定时间段生成的多个事件日志会触发报警规则。这里,本发明不限制触发报警规则的多个事件日志的具体数量,事件日志的具体数量可以由本领域技术人员通过配置报警规则来设置。
在根据本发明的实施例中,用户可根据报警内容的类型在客户端110设置报警模板,并由客户端110将报警模板发送至计算设备200。当检测到报警规则被触发时,报警装置会获取在报警规则被触发之前的多个事件日志,从多个事件日志中选择最终优先级最高的事件日志作为报警日志,并基于报警日志和报警模板生成相应的报警内容。进而,计算设备200将报警内容发送至客户端。应当理解,报警规则被触发之前的多个事件日志也就是本次触发报警规则而进行报警的多个事件日志。
在一个实施例中,计算设备200可以将报警内容通过网络发送至客户端110的社交应用,使用户通过社交应用获取到报警内容。这里,社交应用例如是短信、邮件、钉钉等应用,本发明对社交应用的具体种类不做限制。客户端110获取报警内容后,可以对报警内容作出反馈标记,反馈标记是基于报警内容对应的报警日志作出的标记。
在一个实施例中,监控报警系统100还包括数据存储装置130,数据存储装置130可以是驻留在计算设备200中的本地数据库,也可以作为分布式数据库例如hbase等设置于多个地理位置处,总之,数据存储装置130用于存储数据,本发明对数据存储装置130的具体部署、配置情况不做限制。计算设备200可以与数据存储装置130连接,并获取数据存储装置130中所存储的数据。例如,计算设备200可以直接读取数据存储装置130中的数据(在数据存储装置130为计算设备200的本地数据库时),也可以通过有线或无线的方式接入互联网,并通过数据接口来获取数据存储装置130中的数据。
在一个实施例中,计算设备200通过接收多个先前客户端110根据先前报警内容的类型设置并生成的多个先前报警模板,并将获取的多个先前报警模板存储到数据存储装置,生成分别与每种报警内容的类型相对应的报警模板列表。这里,报警模板列表中的每一项包括一个报警内容的类型以及与该报警内容的类型相对应的报警模板。这样,在技术人员针对本次报警进行相关设置时,计算设备200可以向当前客户端110提供报警模板列表,以便当前客户端110基于当前报警内容的类型直接从报警模板列表中选择相应的报警模板,并反馈给计算设备,计算设备200根据客户端110的选项直接从数据存储装置中获取报警模板。基于上述实施方式,免去了用户在客户端110进行自定义设置的操作步骤,方便快捷,而且能实现基于报警内容的类型来确定报警模板。
图2示出了根据本发明一个实施例的计算设备200的结构图。如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μp)、微控制器(μc)、数字信息处理器(dsp)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(alu)、浮点数单元(fpu)、数字信号处理核心(dsp核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统220、一个或者多个应用222以及程序数据224。应用222实际上是多个程序指令,其用于指示处理器204执行相应的操作。在一些实施方式中,应用222可以布置为在操作系统上使得处理器204利用程序数据224进行操作。
计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个a/v端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个i/o端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(rf)、微波、红外(ir)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在一个实施例中,本发明的计算设备200可以执行本发明的生成报警内容的方法。
在根据本发明的计算设备200中,应用222包括报警装置400,报警装置400包括多个程序指令,这些程序指令可以指示处理器204执行生成报警内容的方法300。报警装置400驻留在计算设备200中,以便计算设备200执行生成报警内容的方法300。
图3示出了根据本发明一个实施例的生成报警内容的方法300的流程图。方法300适于在计算设备(例如前述计算设备200)中执行,该计算设备中预先配置有报警规则。这里,本发明不限制报警规则的具体设置,报警规则可以由本领域技术人员根据实际需求自行设置。
需要说明的是,计算设备中驻留的各个应用程序均可能发生异常事件,在发生异常事件时会生成相应的事件日志。基于配置的报警规则,只有在预定时间内出现多个异常事件日志时才会触发报警规则而进行报警。报警内容需要从触发报警规则之前监控到的多个事件日志中选择确定的一个,并对确定的事件日志进行处理后生成。
如图3所示,生成报警内容的方法300始于步骤s310。在步骤s310中,计算设备接收客户端根据报警内容的类型设置的报警模板。这里,报警模板可以是用户根据实际报警内容在客户端设置后生成。
根据一个实施例,计算设备通过接收多个先前客户端根据先前报警内容的类型设置并生成的多个先前报警模板,并将获取的多个先前报警模板存储到数据存储装置,生成分别与每种报警内容的类型相对应的报警模板列表。这里,报警模板列表中的每一项包括一个报警内容的类型以及与该报警内容的类型相对应的报警模板。这样,在技术人员针对本次报警进行相关设置时,计算设备可以向当前客户端提供报警模板列表,以便当前客户端基于当前报警内容的类型直接从报警模板列表中选择相应的报警模板,并反馈给计算设备,计算设备根据客户端的选项直接从数据存储装置中获取报警模板。基于上述实施方式,免去了用户在客户端进行自定义设置的操作步骤,方便快捷,而且能实现基于报警内容的类型来确定报警模板。
根据一个实施例,本发明通过对事件日志进行监控,并获取每次发生异常事件时生成的事件日志。在预定时间内,多个事件日志的生成会触发报警规则,从而进行报警。
随后,在步骤s320中,当检测到报警规则被触发时,获取在报警规则被触发之前的多个事件日志,并从报警规则被触发之前的多个事件日志中选择最终优先级最高的事件日志作为报警日志。应当理解,报警规则被触发之前的多个事件日志也就是本次触发报警规则而进行报警的多个事件日志。
在一种实施方式中,事件日志中的字段可以采用${字段名}形式的占位语法,例如:
${project}最近${timewindow}分钟内有异常日志${count}条。最需要关注的异常信息异常信息:
服务器ip:${serverip}
异常类型:${exceptiontype}
自定义信息:${custommessage}
异常信息:${exceptionmessage}
最后,在步骤s330中,基于报警日志和报警模板生成相应的报警内容,即是将报警日志的相关数据填充到报警模板中生成相应的报警内容。需要说明的是,通过将报警日志结合用户在客户端自定义设置的报警模板来生成报警内容,也就是将报警日志中的内容根据报警模板进行定制,有利于精简报警内容,使报警内容既简短、又能展示报警日志中的关键信息。具体地,通过在客户端设置相应的报警模板,基于报警日志和报警模板生成的报警内容可以包括监控规则、事件内容、报警日志的异常类型以及报警日志的关键字段信息,关键字段信息便于技术人员更快速、直接地获取到本次报警事件的关键信息。
在一种实施方式中,报警模板例如是freemarker模板,基于freemarker模板和报警日志生成的报警内容,报警内容例如:
atom最近5分钟内有异常日志200条。最需要关注的异常信息。
服务器ip:192.168.1.1.
异常类型:java.lang.nullpointerexception.
自定义信息:errorwhenqueryuserkechangqing.
异常信息:
应当指出,本发明不限于上述报警模板的具体种类,现有技术中所有能实现对日志内容进行定制的模板种类均在本发明的保护范围之内。
根据一个实施例,本发明在获取每个事件日志后,会分析并确定每个事件日志的异常类型,并分别对每个事件日志的异常类型进行统计,生成事件日志列表。这里,事件日志列表中的每一项分别包括一个事件日志以及与该事件日志相对应的异常类型。
根据一个实施例,本发明根据每个事件日志的异常类型,确定每个事件日志所包括的优先级。
需要说明的是,多个事件日志中可以包括多种异常类型。不同时间节点生成的事件日志所对应的异常类型可能相同,也可能不同。本发明在基于事件日志的异常类型确定对应的优先级时,可以基于异常类型所具有的多种性质来分别确定相对应的优先级,例如,可以根据异常类型的具体种类来确定一个优先级,也可以根据异常类型所对应的事件日志出现的频次来确定一个优先级,还可以根据异常类型所对应的事件日志的出现时间来确定一个优先级。应当理解,基于事件日志的异常类型所具有的多种性质来分别确定对应的优先级,这样,每个事件日志均可以包括一个或多个优先级。
进而,根据每个事件日志所包括的优先级确定每个事件日志的最终优先级。例如,每个事件日志的最终优先级可以是其所包括的所有优先级加和得到。通过比较报警规则被触发之前多个事件日志分别对应的最终优先级,选择最终优先级最高的一个事件日志作为报警日志。
应当理解,事件日志所包括的每个优先级是基于该事件日志的异常类型从不同层面评价了该事件日志的异常程度。最终优先级可以从多个层面、综合多种因素来评价对应的事件日志的异常程度,能够反映该事件日志在触发报警规则之前获取的多个事件日志中的代表性。也就是说,最终优先级最高的一个事件日志实际上反应了在触发报警规则的多个事件日志中最能反应本次报警状况的事件。通过将最终优先级最高的一个事件日志作为报警日志,并在根据报警模板生成报警内容后发送给客户端,有助于技术人员从获取的报警内容中快速、高效地判断触发本次报警事件的核心问题,从而更快速、高效地处理本次报警事件。
根据一个实施例,多个事件日志所包括的多个优先级例如包括第一优先级、第二优先级、第三优先级、第四优先级。其中,第一优先级、第二优先级、第三优先级、第四优先级的优先级别依次降。应当指出,本发明不限制多个优先级的具体数量以及各个优先级别的具体设置,各个优先级可以由本领域技术人员根据实际情况具体设置。在其他实施方式中,多个优先级还可以包括除上述列举的优先级之外的其他优先级。
根据一个实施例,事件日志列表中的多个事件日志按照出现时间顺序(即是监控到事件日志的时间顺序)依次排列。
具体地,根据每个事件日志的异常类型确定每个事件日志所包括的优先级包括以下步骤:
基于事件日志列表确定多个事件日志中出现次数最多的异常类型。也就是说,根据事件日志列表中记录的每个事件日志所对应的异常类型,对各个异常类型进行统计,确定每种异常类型所对应的事件日志的数量,从而,选择对应的事件日志数量最多的一种异常类型。进而,遍历事件日志列表,判断每个事件日志的异常类型是否是所确定的出现次数最多的异常类型。如果事件日志的异常类型是出现次数最多的异常类型,则确定该事件日志包括第一优先级。
遍历事件日志列表,判断每个事件日志的异常类型是否是预定时间段内第一次出现的异常类型。基于事件日志列表中的多个事件日志是按照出现的时间顺序依次排列,如果在事件日志之前的每一项中并未出现该事件日志对应的异常类型,则确定该事件日志的异常类型是预定时间段内第一次出现的异常类型,并确定该事件日志包括第二优先级。
判断每个事件日志的标记是否是延迟处理,即是判断事件日志是否被标记为延迟处理。若是,则确定事件日志包括第三优先级。
判断每个事件日志的标记是否是无需处理,即是判断事件日志是否被标记为无需处理。若是,则确定事件日志包括第四优先级。
根据一个实施例,计算设备在基于报警日志和报警模板生成报警内容之后,将报警内容发送至客户端。具体地,计算设备可以将报警内容通过网络发送至客户端的社交应用,使技术人员通过社交应用获取到报警内容。这里,社交应用例如是短信、邮件、钉钉等应用,本发明对社交应用的具体种类不做限制。客户端接收到报警内容后,技术人员会在客户端对报警内容进行反馈标记,反馈标记是基于报警内容对应的报警日志作出的标记。反馈标记例如包括需要处理、无需处理以及延迟处理等,但不限于这几张标记种类。
进而,由客户端将与报警内容对应的报警日志的反馈标记发送至计算设备,计算设备获取反馈标记后,将对应的报警日志和反馈标记一起存储到数据存储装置,并基于获取的多个报警日志及其对应的反馈标记生成日志标记列表。应当理解,这里的报警日志实际上就是事件日志,日志标记列表中的每一项包括一个事件日志及其对应的标记。这样,在获取新的事件日志时,便可基于日志标记列表确定该新的事件日志对应的标记,从而判断事件日志是否被标记为延迟处理、无需处理等。
图4示出了根据本发明一个实施例的报警装置400的示意图。报警装置400驻留在计算设备200中,以使计算设备200执行本发明的生成报警内容的方法300。如图4所示,报警装置400包括接收模块410、检测模块415、处理模块420以及生成模块430。
根据一个实施例,接收模块410接收客户端根据报警内容的类型设置的报警模板。检测模块415对事件日志进行监控,并检测报警规则是否被触发。当检测到报警规则被触发时,处理模块420获取在报警规则被触发之前的多个事件日志,并从报警规则被触发之前的多个事件日志中选择最终优先级最高的事件日志作为报警日志。生成模块430基于报警日志和报警模板生成相应的报警内容。
需要说明的是,接收模块410具体用于执行如前述步骤s310的方法,处理模块420具体用于执行如前述步骤s320的方法,生成模块430具体用于执行如前述步骤s330的方法。
关于接收模块410、处理模块420以及生成模块430的处理逻辑和功能可以参见前述生成报警内容的方法300中对步骤s310~s330的相关描述,此处不再赘述。
a9、如a1-a8任一项所述的生成报警内容的方法,其中在生成报警内容之后,还包括步骤:将所述报警内容发送至所述客户端;获取所述客户端对其接收到的报警内容所对应的报警日志的反馈标记;以及将所述报警日志以及对应的反馈标记存储到数据存储装置,生成日志标记列表,以便在获取新的事件日志时,基于所述日志标记列表确定该新的事件日志对应的标记。a10、如a9所述的生成报警内容的方法,其中,所述反馈标记包括需要处理、无需处理以及延迟处理。a11、如a1-a10任一项所述的生成报警内容的方法,其中,所述报警模板为freemarker模板。a12、如a1-a11任一项所述的生成报警内容的方法,其中,所述报警内容包括报警日志的关键字段信息。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、u盘、软盘、cd-rom或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的多语言垃圾文本的识别方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。