具体实施方式
本申请实施例提供终端性能监控方法及装置、监控文件处理方法及装置。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本申请实施例提供的一种终端性能监控方法的流程示意图,从程序角度而言,该流程的执行主体可以是位于终端的客户端。从设备角度而言,该流程的执行主体包括但不限于可作为终端的以下设备:手机、平板电脑、智能可穿戴设备、车机、个人计算机、大中型计算机等。
图1中的流程可以包括以下步骤:
S101:所述客户端根据配置的监控参数,对所述终端的性能进行监控,所述监控参数包括性能监控阈值、上报量阈值。
在本申请实施例中,终端的性能具体可以通过终端上的一个或多个程序的性能反映。客户端可以直接属于这些程序,也可以是独立于这些程序的第三方程序。在背景技术中的场景下,所述性能具体指存储性能,比如,执行数据库操作指令的执行耗时等,以下各实施例主要基于该场景进行说明。
当然,本申请的方案也并不限于监控存储性能,还可以监控等其他方面的性能,比如功耗、散热、吞吐量等方面的性能。
在本申请实施例中,监控参数可以是客户端获取自服务端的,也可以是本地用户直接在终端配置的。对于前一种方式,客户端比如可以在启动后从服务端拉取最新的监控参数并在本地配置。
S102:当监控到所述性能监控阈值被超过时,生成相应的监控文件,将生成的监控文件向服务端上报。
在本申请实施例中,性能监控阈值可以有多个。比如,查询性能监控阈值、写入性能监控阈值、事务性能监控阈值等。
“性能监控阈值被超过”可以表明:监控对象对应于该性能监控阈值的性能当前未达到预期水平。比如,查询性能监控阈值具体可以是结构化查询语言(SQL)的SELECT语句的执行耗时阈值,假定设为300毫秒,当监控到终端上的数据库中某条SELECT语句的执行耗时大于300毫秒(也即,性能监控阈值被超过)时,则可以认为当前监控到了异常情况,可以进一步关注或者处理,比如可以生成相应的监控文件,以便于上报服务端。
在本申请实施例中,监控文件在被上报前可以是增量变化的,一个监控文件可以包含多次监控到所述性能监控阈值被超过的记录数据,每次的记录数据可以分别包含在监控文件的一条记录中。
生成相应的监控文件后,未必要立刻上报给服务端。可以预先指定上报条件,在满足上报条件时,再将监控文件上报给服务端。比如,上报条件可以是:已生成但尚未上报的监控文件的总数据量达到指定的数据量阈值;在这种情况下,数据量阈值也可以属于监控参数,则对于步骤S102,所述将生成的监控文件向服务端上报,具体可以包括:当确定已生成但尚未上报的监控文件的总数据量达到指定的数据量阈值时,将所述已生成但尚未上报的监控文件向服务端上报。
在本申请实施例中,出于安全性的考虑,客户端还可以对监控文件进行加密处理或签名处理。
S103:当确定要上报的监控文件会导致所述上报量阈值被超过时,对所述监控参数进行调整。
在本申请实施例中,上报量阈值为:一定时间内(比如,1天内、或一周内等)可向服务端上报监控文件的最大上报次数,或者一定时间内可向服务端上报监控文件的最大上报数据量。一般地,对于客户端而言,上报量越大,给终端带来的压力也越大。
在本申请实施例中,当确定要上报的监控文件会导致所述上报量阈值被超过时,可以认为当前对终端监控过度,给终端带来了过大的压力。因此,可以对当前使用的监控参数进行调整,以减轻终端的压力。所述调整可以自适应地进行,如此有利于适应于不同的终端。
进一步地,“对所述监控参数进行调整”未必要立即执行,具体的调整方式可以有多种。一般地,可以提升当前的性能监控阈值,如此有利于减少客户端上报监控文件的上报量,从而可以减轻终端的压力。
通过图1的方法,可以基于配置的上报量阈值以及对终端的监控文件实际上报情况,对终端对应的性能监控阈值或上报量阈值自适应地进行调整,从而有利于减轻性能监控给终端带来的压力,可以部分或全部地解决现有技术中的问题。
基于图1的方法,本申请实施例还提供了该方法的一些具体实施方案,以及扩展方案,下面进行说明。
在本申请实施例中,如前所述,所述性能可以为存储性能,所述性能监控阈值可以为数据库操作指令(比如,上例中的SELECT语句等)的执行耗时阈值。则对于步骤S101,所述对所述终端的性能进行监控,具体可以包括:对在所述终端上执行的数据库操作指令的执行耗时进行监控。对于步骤S102,所述监控到所述性能监控阈值被超过,具体可以包括:监控到在所述终端上执行的数据库操作指令的执行耗时大于对应的所述性能监控阈值。
为了便于理解,本申请实施例提供了一种实际应用场景下的监控参数列表作为示例,如下表1所示。
表1
在表1中,“查询性能监控阈值”、“写入性能监控阈值”、“事务性能监控阈值”即为步骤S101中所述的性能监控阈值;“上报监控文件大小”即为上述的数据量阈值;“每天的最大上报次数”即为步骤S101中所述的上报量阈值。
进一步地,对于步骤S102,所述生成相应的监控文件,具体可以包括:生成相应的包含以下数据的监控文件:监控到的执行耗时大于对应的所述性能监控阈值的数据库操作指令,以及该执行耗时。在实际应用中,监控文件中还可以包含更多的内容。
例如,本申请实施例提供了一种实际应用场景下的监控文件中的内容表,如下表2、表3所示。
表2
监控文件中每条记录的属性 |
说明 |
SQL原文 |
原始的SQL语句,超过512字节则截断 |
lastTime |
该SQL语句的执行耗时 |
tid |
对应的线程号 |
background |
该SQL语句是在前台执行还是后台执行 |
表2中示出了监控文件中的每条记录的属性及其说明。在表2中,“SQL原文”即为上述的数据库操作指令,“lastTime”即为上述的执行耗时。
表3
监控文件的头部信息 |
版本号 |
用户账号ID |
机器rom/sdcard剩余内存/总内存 |
软件自身数据占用的空间 |
该次上报的监控文件被写满用了多少时间 |
各个数据表的数据量/各个数据库文件大小 |
自适应调整值 |
机型信息 |
表3中示出了监控文件的头部信息,版本号可以是被监控机器(比如,终端等)上的程序的版本号,用户账号ID可以是被监控机器上的登录的用户账号ID。其中,表3中的“自适应调整值”会在下面说明。
在本申请实施例中,对于步骤S103,所述对所述监控参数进行调整,具体可以包括:为所述性能监控阈值生成自适应调整值并保存;根据保存的所述自适应调整值,对所述性能监控阈值进行一次或多次自适应调整。
例如,假定默认的性能监控阈值为300毫秒。在预期一天最多上报3次监控文件的情况下,表1中的参数“每天的最大上报次数”可以设置为3。若监控到某终端上的监控文件达到表1中的参数“上报监控文件大小”的值要超过3次时(也即,上报次数要超过上报量阈值时),可以认为默认的性能监控阈值对于该终端而言过低,则可以为默认的性能监控阈值生成并保存自适应调整值,比如,自适应调整值可以为100毫秒。再根据该自适应调整值,即刻或者第二天开始时可以将性能监控阈值调整为:默认的性能监控阈值+自适应调整值=300毫秒+100毫秒=400毫秒。然后,根据调整后的性能监控阈值进行监控,
进一步地,若第二天还是监控到该终端上的监控文件上报次数超过3次,则可以根据自适应调整值,在第一次调整后的性能监控阈值的基础上再加100毫秒,以此类推,直到该终端上每天监控文件上报次数不会超过3次为止,然后可以将保存的自适应调整值清空。
上一段中的过程即可以体现所述的“根据自适应调整值,对性能监控阈值进行一次或多次自适应调整”。
在实际应用中,可以按照对性能高的终端的预期,设置默认的性能监控阈值。比如,可以将数据库操作指令的默认的执行耗时阈值设置得较低,如此,无论是性能高的终端,还是性能适中或者性能偏低的终端均可以通过自适应调整,自动调整至适合自己的性能监控阈值,从而有利于避免性能监控给终端带来较大压力。
本申请对性能监控阈值默认设置为多少并不做限定,可以取决于实际情况。例如,对于表1中的监控参数:对于由主线程执行的语句,查询性能监控阈值比如可以为300毫秒,写入性能监控阈值比如可以为500毫秒;对于由子线程执行的语句,查询性能监控阈值和写入性能监控阈值比如可以为1500毫秒,事务性能监控阈值比如可以为5000毫秒。
在本申请实施例中,基于上面的分析,客户端每次监控所基于的“配置的监控参数”可以是经过自适应调整过的。比如,对于步骤S102,所述客户端根据配置的监控参数,对所述终端的性能进行监控,具体可以包括:所述客户端获取服务端指定的监控参数;当确定本地保存有性能监控阈值的自适应调整值时,根据所述指定的监控参数,以及本地保存的自适应调整值,配置监控参数;根据配置的监控参数,对所述终端的性能进行监控。
需要说明是,在实际应用中,除了可以对性能监控阈值进行自适应调整以外,也可以对上报量阈值进行自适应调整,同样可以达到减轻终端压力的目的。
为了便于理解,本申请实施例还提供了一种实际应用场景下,在上述监控的过程中,客户端与服务端的交互关系示意图,如图2所示。
在图2中,服务端可以包括统计后台和配置后台,初始的监控参数可以由开发人员在配置后台上进行配置,开发人员可以随时更新监控参数;
客户端可以从配置后台拉取监控参数,并根据监控参数对自身的存储性能进行监控,当满足条件时向统计后台上报监控文件;
统计后台对监控文件进行处理得到终端的性能统计数据,开发人员可以通过浏览器查看统计后台中的性能统计数据;
客户端可以根据监控上报情况自适应地调整监控参数,以避免性能监控带来太大的压力。
图3为本申请实施例提供的一种实际应用场景下,上述终端性能监控方法的一种具体实施方案的流程示意图。
图3中的流程主要包括以下步骤:
当客户端启动时会读取默认参数,在启动后第一次与服务端交互时拉取服务端的监控参数;
判断本地是否保存有自适应调整值;若有,则对服务端的监控参数进行相应的更新;
进而,可以开始监控,当监控到有执行耗时超过性能监控阈值的SQL语句时,在监控文件中进行相应记录;
当尚未上报的监控文件的大小要超过“上报监控文件大小”时,将尚未上报的监控文件上报给服务端;
当当天的上报次数要超过“每天的最大上报次数”时,生成并保存自适应调整值,可以根据自适应调整值立即对性能监控阈值进行调整,也可以在客户端下次启动后再调整。
上面对本申请实施例提供的终端性能监控方法进行了说明,基于同样的发明思路,本申请实施例还提供了监控文件处理方法,用以说明服务端在接收到客户端上报的监控文件后的一些处理动作。结合图4进行说明。
图4为本申请实施例提供的一种监控文件处理方法的流程示意图,从程序角度而言,该流程的执行主体可以是位于图1中的客户端对应的服务端。从设备角度而言,该流程的执行主体可以包括但不限于可作为搭载该服务端的以下设备:个人计算机、大中型计算机、计算机集群、手机、平板电脑、智能可穿戴设备、车机等。
图4中的流程可以包括以下步骤:
S401:服务端获取客户端上报的监控文件。
需要说明的是,图4中的监控文件,以及下面图4对应的各实施例中的监控文件具体指包含以下数据的监控文件:监控到的执行耗时大于对应的所述性能监控阈值的数据库操作指令,以及该执行耗时。
S402:获取所述监控文件中包含的数据库操作指令及其对应的执行耗时。
在本申请实施例中,监控文件中还可以包含数据库操作指令对应的执行线程信息(比如,线程号等)等信息。
S403:对各所述数据库操作指令进行聚合处理,得到一条或多条模板指令。
在本申请实施例中,在进行聚合处理时,可以屏蔽多条数据库操作指令的部分独有特征(比如,某些参数的取值等),然后基于多条数据库操作指令的共同特征,将多条数据库操作指令聚合为一条模板指令。
S404:根据所述执行耗时和所述模板指令,生成所述终端的存储性能统计数据。
在本申请实施例中,由于服务端获得的监控文件一般会随着时间增加,则图4中的方法可以由服务端多次执行。比如,服务端可以定时执行图4中的方法,以处理服务端每个周期新获取的监控文件。
通过图4的方法,在基于图1的方法进行终端进行合理监控的基础上,还可以根据监控文件,生成终端的存储性能统计数据,以便于用户或服务端人员查询和分析,进而有利于改进终端的存储性能。
基于图4的方法,本申请实施例还提供了该方法的一些具体实施方案,以及扩展方案,下面进行说明。
在本申请实施例中,对于步骤S403,所述对各所述数据库操作指令进行聚合处理,具体可以包括:对各所述数据库操作指令进行合法性校验,以确定各所述数据库操作指令中合法的数据库操作指令;对各所述合法的数据库操作指令进行聚合处理。所述合法性校验比如可以包括:完整性校验、参数校验等。可以将不合法的数据库操作指令抛弃不进行后续处理,从而有利于减少处理资源的浪费。
在本申请实施例中,如前所述,在实际应用中,数据库操作指令一般为SQL语句。在这种情况下,对于步骤S403,所述对各所述数据库操作指令进行聚合处理,得到一条或多条模板指令,具体可以包括:将各所述数据库操作指令中包含的键值对的值替换为适配符;根据替换后的各所述数据库操作指令,得到一条或多条模板指令。其中,该适配符可以表示该值对应的键的任意取值。
例如,对于数据库指令1“SELECT COUNT(*)FROM MESSAGE WHERE TALKER=a”,可以将其中的键值对“TALKER=a”中的值“a”替换为适配符“?”;
对于数据库指令2“SELECT COUNT(*)FROM MESSAGE WHERE TALKER=b”,可以将其中的键值对“TALKER=b”中的值“b”替换为适配符“?”;
则上面两条数据库指令1、2可以聚合为以下模板指令3:
“SELECT COUNT(*)FROM MESSAGE WHERE TALKER=?”。
在本申请实施例中,如前所述,监控文件中还可以包含数据库操作指令对应的执行线程信息。在这种情况下,对于步骤S403,所述根据替换后的各所述数据库操作指令,得到一条或多条模板指令,具体可以包括:根据所述执行线程信息,以及替换后的各所述数据库操作指令,得到一条或多条模板指令。
沿用上例进行说明,假定数据库指令1是由某主线程执行的,数据库指令2是由不同于该主线程的某子线程执行的。则也可以不将数据库指令1、2聚合为同一条模板指令。而是,将上述的模板指令3加上该主线程的线程号作为数据库指令1对应的聚合指令,将上述的模板指令3加上该子线程的线程号作为数据库指令2对应的聚合指令。当然,除了线程号,还可以结合数据库指令涉及的表名等特征信息对各数据库指令进行聚合处理。
在本申请实施例中,对于步骤S404,所述根据所述执行耗时和所述模板指令,生成所述终端的存储性能数据,具体可以包括:
分别针对每条所述模板指令执行:
确定所述服务端已有的对应于该条模板指令的各数据库操作指令及其执行耗时;计算该条模板指令对应的各数据库操作指令的平均执行耗时;
根据各条所述模板指令和计算得到的数据,生成所述终端的存储性能统计数据。
存储性能统计数据可以包括平均执行耗时,还可以包括其他的性能统计数据,比如,模板指令对应的数据库操作指令数量,不同线程号对应的数据库操作指令数量等。
在实际应用中,服务端上可能已经基于以前对监控文件的处理,获得了一些模板指令以及存储性能统计数据。在这种情况下,执行步骤S404可以是对这些已有的数据的更新过程。
图5为本申请实施例提供的一种实际应用场景下,上述监控文件处理方法的一种具体实施方案的流程示意图。在图5中,服务端定时地(每隔5分钟)处理监控文件。
图5中的流程主要包括以下步骤:
每隔一段时间(比如,5分钟或10分钟等)触发服务端执行以下步骤:
从客户端新上报的监控文件中提取出SQL语句(比如,可以基于正则表达式提取出SQL语句),对应的执行耗时以及线程号等信息;
对提取出SQL语句进行合法性校验,不合法的SQL语句抛弃,合法的SQL语句继续下面的处理;
将SQL语句中键值对的值替换为适配符“?”,并提取对应的表名;
查找服务端是否已保存有替换后的SQL语句(可以用通过全文匹配查找,也可以通过摘要匹配查找等);若有,则对替换后的SQL语句对应的统计信息进行更新,统计信息可以是替换后的SQL语句对应的原始SQL语句(也即,替换前的SQL语句)数量、平均耗时等;否则,保存替换后的SQL语句,以及对应的执行耗时、线程号等信息,还可以计算并保存替换后的SQL语句的摘要。
建立替换后的SQL语句到对应监控文件的索引及几个排序字段的索引,以便于查询替换后的SQL语句相关的性能统计数据。
进一步地,图6a、图6b为本申请实施例提供的基于图5的方案得到的存储性能统计数据的示意图。在图6a和图6b中,存储性能统计数据可以通过版本号(Version)、语句类型(Type)、表名(table_name),线程号(tid)等索引项进行查询。
查询出的每条记录主要包括以下字段:模板指令“sql”、模板指令对应的各原始SQL语句的平均执行耗时“lasttime”、模板指令对应的各原始SQL语句数量“total_count”、模板指令对应的表名“table_name”等。
图6a为反映读性能的存储性能统计数据示意图。在图6a中,各模板指令对应的原始SQL语句是用于查询的SELECT语句。
图6b为反映写性能的存储性能统计数据示意图。在图6b中,各模板指令对应的原始SQL语句是用于更新的UPDATE语句。
上面为本申请实施例提供的终端性能监控方法、监控文件处理方法,基于同样的发明思路,本申请实施例还提供了对应的装置,如图7、图8所示。
图7为本申请实施例提供的对应于图1的一种终端性能监控装置的结构示意图,该装置可以位于图1中流程的执行主体,包括:
监控模块701,根据配置的监控参数,对所述终端的性能进行监控,所述监控参数包括性能监控阈值、上报量阈值;
上报模块702,当监控到所述性能监控阈值被超过时,生成相应的监控文件,将生成的监控文件向服务端上报;
调整模块703,当确定要上报的监控文件会导致所述上报量阈值被超过时,对所述监控参数进行调整。
可选地,所述上报模块702将生成的监控文件向服务端上报,具体包括:
所述上报模块702当确定已生成但尚未上报的监控文件的总数据量达到指定的数据量阈值时,将所述已生成但尚未上报的监控文件向服务端上报。
可选地,所述上报量阈值为:一定时间内可向服务端上报监控文件的最大上报次数,或者一定时间内可向服务端上报监控文件的最大上报数据量。
可选地,所述性能为存储性能,所述性能监控阈值为数据库操作指令的执行耗时阈值;
所述监控模块701对所述终端的性能进行监控,具体包括:
所述监控模块701对在所述终端上执行的数据库操作指令的执行耗时进行监控;
所述监控模块701监控到所述性能监控阈值被超过,具体包括:
所述监控模块701监控到在所述终端上执行的数据库操作指令的执行耗时大于对应的所述性能监控阈值。
可选地,所述监控模块701生成相应的监控文件,具体包括:
所述监控模块701生成相应的包含以下数据的监控文件:监控到的执行耗时大于对应的所述性能监控阈值的数据库操作指令,以及该执行耗时。
可选地,所述调整模块703对所述监控参数进行调整,具体包括:
所述调整模块703为所述性能监控阈值生成自适应调整值并保存,根据保存的所述自适应调整值,对所述性能监控阈值进行一次或多次自适应调整。
可选地,所述监控模块701根据配置的监控参数,对所述终端的性能进行监控,具体包括:
所述监控模块701获取服务端指定的监控参数,当确定本地保存有性能监控阈值的自适应调整值时,根据所述指定的监控参数,以及本地保存的自适应调整值,配置监控参数,根据配置的监控参数,对所述终端的性能进行监控。
图8为本申请实施例提供的对应于图4的一种监控文件处理装置的结构示意图,该装置可以位于图4中流程的执行主体,包括:
第一获取模块801,获取客户端上报的监控文件;
第二获取模块802,获取所述监控文件中包含的数据库操作指令及其对应的执行耗时;
聚合模块803,对各所述数据库操作指令进行聚合处理,得到一条或多条模板指令;
生成模块804,根据所述执行耗时和所述模板指令,生成所述终端的存储性能统计数据。
可选地,所述聚合模块803对各所述数据库操作指令进行聚合处理,具体包括:
所述聚合模块803对各所述数据库操作指令进行合法性校验,以确定各所述数据库操作指令中合法的数据库操作指令,对各所述合法的数据库操作指令进行聚合处理。
可选地,所述数据库操作指令为结构化查询语言SQL语句;
所述聚合模块803对各所述数据库操作指令进行聚合处理,得到一条或多条模板指令,具体包括:
所述聚合模块803将各所述数据库操作指令中包含的键值对的值替换为适配符,根据替换后的各所述数据库操作指令,得到一条或多条模板指令。
可选地,所述监控文件中还包含数据库操作指令对应的执行线程信息;
所述聚合模块803根据替换后的各所述数据库操作指令,得到一条或多条模板指令,具体包括:
所述聚合模块803根据所述执行线程信息,以及替换后的各所述数据库操作指令,得到一条或多条模板指令。
可选地,所述生成模块804根据所述执行耗时和所述模板指令,生成所述终端的存储性能数据,具体包括:
所述生成模块804分别针对每条所述模板指令执行:
确定所述服务端已有的对应于该条模板指令的各数据库操作指令及其执行耗时;
计算该条模板指令对应的各数据库操作指令的平均执行耗时;
根据各条所述模板指令和计算得到的数据,生成所述终端的存储性能统计数据。
本申请实施例提供的装置与方法是一一对应的,因此,装置也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置的有益技术效果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。