一种数据库语句优化方法、装置及设备与流程

文档序号:27449061发布日期:2021-11-18 00:33阅读:113来源:国知局
一种数据库语句优化方法、装置及设备与流程

1.本说明书实施例涉及人工智能技术领域,特别涉及一种数据库语句优化方法、装置及设备。


背景技术:

2.随着计算机和大数据技术的发展,人们可以利用数据库实现大批量数据的存储和管理,对于数据的调用也越来越频繁。相应的,通过编写相应的数据库语句,可以有效针对数据实现查询、关联、统计等需要,从而便于数据或相应信息的获取,利于相应业务的执行,进一步地也提高了用户的使用体验。
3.但是,一些数据分析师在针对数据库编写数据库语句执行数据提取和分析时,并不注重语句的编写规范,导致语句性能运行较差,对数据库也产生了大量的低效运载负荷,进而阻塞其他进程的运行,甚至可能造成数据库宕机等严重问题。而在数据库语句数量庞大的情况下,也难以逐一对数据库语句进行监察。因此,目前亟需一种能够自动实现数据库语句优化以改善执行效果的方法。


技术实现要素:

4.本说明书实施例的目的是提供一种数据库语句优化方法、装置及设备,以解决如何优化数据库语句的执行效果的问题。
5.为解决上述技术问题,本说明书实施例提供一种数据库语句优化方法,所述数据库语句用于基于数据库实现对应的程序指令;所述方法包括:接收目标数据库语句;对所述目标数据库语句进行语义解析得到语义信息;所述语义信息用于表示目标数据库语句的含义和关联关系;根据所述语义信息确定所述目标数据库语句的分析特征;所述分析特征用于表示语句优化所针对的特征;基于所述分析特征,利用预设优化规则确定所述目标数据库语句的优化策略;结合数据库语句的执行状态,通过所述优化策略对目标数据库语句进行优化。
6.本说明书实施例还提出一种数据库语句优化装置,所述数据库语句用于基于数据库实现对应的程序指令;所述装置包括:目标数据库语句接收模块,用于接收目标数据库语句;语义解析模块,用于对所述目标数据库语句进行语义解析得到语义信息;所述语义信息用于表示目标数据库语句的含义和关联关系;分析特征确定模块,用于根据所述语义信息确定所述目标数据库语句的分析特征;所述分析特征用于表示语句优化所针对的特征;优化策略确定模块,用于基于所述分析特征,利用预设优化规则确定所述目标数据库语句的优化策略;目标数据库语句优化模块,用于结合数据库语句的执行状态,通过所述优化策略对目标数据库语句进行优化。
7.本说明书实施例还提出一种数据库语句优化设备,包括存储器和处理器;所述存储器,用于存储计算机程序指令;所述处理器,用于执行所述计算机程序指令以实现以下步骤:接收目标数据库语句;对所述目标数据库语句进行语义解析得到语义信息;所述语义信
息用于表示目标数据库语句的含义和关联关系;根据所述语义信息确定所述目标数据库语句的分析特征;所述分析特征用于表示语句优化所针对的特征;基于所述分析特征,利用预设优化规则确定所述目标数据库语句的优化策略;结合数据库语句的执行状态,通过所述优化策略对目标数据库语句进行优化。
8.由以上本说明书实施例提供的技术方案可见,本说明书实施例在获取到数据库语句后,首先对数据库语句进行语义解析以得到语义信息,从而对该语句的含义以及关联关系进行确定,再结合语义信息获取到对应的分析特征,以确定需要进行优化的特征,使得能够基于分析特征利用预设优化规则来确定对应的优化策略,最终能够结合数据库语句的执行状态,利用优化策略来对数据库语句进行优化。通过上述方法,实现对数据库语句的分析以确定需要优化的特征,并通过设置相应的策略实现了数据库语句的优化,保障了数据库语句的执行效果,减少了相应问题出现的可能,在后续应用过程中有利于相应业务的执行。
附图说明
9.为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
10.图1为本说明书实施例一种数据库语句优化方法的流程图;
11.图2为本说明书实施例一种数据库语句语义解析的流程示意图;
12.图3为本说明书实施例一种性能分析模型的结构示意图;
13.图4为本说明书实施例一种基于模型的性能分析的流程示意图;
14.图5为本说明书实施例一种损失函数的构造示意图;
15.图6为本说明书实施例一种执行队列优化的流程示意图;
16.图7为本说明书实施例一种数据库语句优化的流程示意图;
17.图8为本说明书实施例一种数据库语句优化装置的模块图;
18.图9为本说明书实施例一种数据库语句优化设备的结构图。
具体实施方式
19.下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
20.为了解决上述技术问题,介绍本说明书实施例一种数据库语句优化方法。所述数据库语句优化方法的执行主体为数据库语句优化设备,所述数据库语句优化设备包括但不限于服务器、工控机、pc机等。如图1所示,所述数据库语句优化方法可以包括以下具体实施步骤。
21.s110:接收目标数据库语句。
22.目标数据库语句即为需要进行优化的数据库语句,用于基于数据库实现对应的程序指令,例如基于所述目标数据库语句实现对于相应数据的查询、统计、关联等。
23.具体的,所述目标数据库语句可以是sql(structured query language)语句,即为一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。实际应用中所述目标数据库语句也可以是其他类型的语句,对此不做限制。
24.所述目标数据库语句可以是由用户手动输入的需要进行突出优化的语句,也可以是针对大量数据库语句进行语句时大批量获取的数据,对此不做限制。
25.s120:对所述目标数据库语句进行语义解析得到语义信息;所述语义信息用于表示目标数据库语句的含义和关联关系。
26.语义信息用于表示目标数据库语句的含义以及关联关系。通过获取语义信息,能够对目标数据库语句的具体含义进行更好的理解,从而能够在保证目标数据库语句实现原有功能的基础上实现语句的优化。
27.在一些实施方式中,进行语义解析时,可以是对目标数据库语句进行语义解析得到语义树;所述语义树包括表对象、筛选条件、关联层级中的至少一种信息,再基于语义树构建表关联信息和索引信息。
28.具体的,可以是采用python库的sqlparse方法对sql语句进行语义解析,形成一颗sql语义树,获取表对象,筛选条件,关联层级等,再提取sql语义树中的涉及的表对象,按关联顺序生成表清单并打上编号,通过查询数据库统计信息表,获取该表目前语句的数据量,同时对该表的表结构和索引情况进行获取,形成该表的索引情况,以及每个索引字段的数据density指标(区分度)。
29.在一些实施方式中,为了便于语义解析的进行,可以先对目标数据库语句进行切分得到至少一个子语句,在针对各个子语句分别进行格式规范化处理,以将各个子语句调整为较为标准的格式。所述格式规范化处理,包括:关键词大写转换、注释删除和缩进处理中的至少一种。
30.利用一个具体的示例进行说明,可以使用python库的sqlparse.split方法,对sql语句完成语句级切割,按序切割为sql context1、sql context2,以此类推。针对切分得到的语句,可以使用sqlparse.format函数的keyword_case、identifier_case方法,对sql中的关键字转换成大写,和/或,使用sqlparse.format函数的strip_comments=true方法,对sql中的注释进行删除,和/或,使用sqlparse.format函数的reindent=ture配置,优化sql语句形成标准化的缩进。
31.在一些实施方式中,在获取到语义信息后,还可以获取所述目标数据库语句的执行计划和历史运行记录。执行计划可以用于表示当前利用到所述目标数据库语句的相应执行计划,历史运行记录用于表示之前运行所述目标数据库语句的相应记录。
32.具体的,可以对sql进行解析后生成的执行计划进行提取,获取基于数据库的统计信息生成的语句的预计的执行计划,再分析该sql是否是历史已运行过,例如获取该sql的解析后的sql_id,查找历史数据库中的v$sql或者大数据平台相关系统表获取,获取历史sql的执行耗时统计等相关信息。
33.结合附图2中针对sql语句进行前置解析的示例,对上述过程进行进一步总结说明,首先,基于步骤s210,在接收到客户在查询前置输入的sql后,执行步骤s220对sql语句进行切割,再执行步骤s230对sql语句进行格式化。针对格式化后的sql语句,采取步骤s240提取表及索引对象和分析报告,再执行步骤s250执行计划预解析和提取,最终执行步骤
s260对历史执行耗时进行统计完成对于sql语句的前置处理。
34.s130:根据所述语义信息确定所述目标数据库语句的分析特征;所述分析特征用于表示语句优化所针对的特征。
35.在获取到语义信息后,可以结合所述语义信息来确定分析特征。分析特征可以是预先设置的可以针对语句进行优化的特征。通过与语义信息进行比对,可以确定可以针对所述目标数据库语句进行优化的分析特征。
36.在一些实施方式中,所述分析特征包括语句特征、统计信息特征、关联特征、执行计划代价特征和历史语句运行特征中的至少一种。
37.具体的,语句特征,通过分析sql_context的语句级别的关键字,形成相应的特征变量;统计信息特征,通过查询到所涉及表的统计信息或者记录数,获取表和字段级别的特征变量;关联特征,通过查询到的执行计划,获取表与表之间的关联特征,以及单表扫描的特征;执行计划代价特征,通过查询到的执行计划,获取执行计划的代价数据,返回行,区分度等特征;历史语句运行特征,通过系统部获取语句历史运行耗时、等待事件等指标。对于上述各项分析特征的具体介绍可以参照下表1中的描述。
[0038][0039]
[0040]
表1
[0041]
通过获取所述分析特征,能够在后续步骤中有效地针对分析特征设置相应的优化策略,保证对于目标数据库语句的有效优化。
[0042]
s140:基于所述分析特征,利用预设优化规则确定所述目标数据库语句的优化策略。
[0043]
预设优化规则可以是预先设定的对语句进行优化的规则,可以对分析特征进行分析,来确定应用至目标数据库语句的实际优化方式。
[0044]
在一些实施方式中,所述预设优化规则可以对应于语句性能分析模型,相应的,在确定优化策略时,可以是将所述分析特征输入预先训练的语句性能分析模型,获取所述目标数据库语句的性能参数,再根据所述性能参数确定对应于所述目标数据库的优化策略。
[0045]
在利用语句性能分析模型进行优化策略确定时,可以采用强化学习a3c模型框架,使用随机模型替代传统的dqn(确定模型)来构建神经网络,并使用并行异步训练框架、网络结构优化、actor

critic评估点优化等方式,使用actor基于策略函数,负责生成action并和环境不断交互试错获得用于训练的样本,并采用critic基于价值函数,负责评估actor的表现,并结合实际运行的反馈情况,并指导actor进行下一步的动作,及时适应sql性能识别的准确率,此模型可以更加接近于人类对sql性能优化的评估方式。
[0046]
在实施时,需要将这个多分类决策问题,转换为一个强化学习的场景。首先定义强化学习四原组(s,a,p,r),其中,分别为状态(state)、动作(action)、奖励(reward)和策略(policy)。其中,状态(state)包括所采集的分析特征;动作(action)包括构建一个基于特征工程的随机神经网络sql性能评估模型,利用高斯分布生成初始的平均值和差分的向量,采用a3c多并行模拟的形式,完成蒙特卡洛模拟。在此状态下,识别哪些sql有效率问题,进行优化分析调整指令操作,无效率问题,进行实际执行操作。奖励(reward)包括当前sql效率评价模型计算的运行代价和实际提交后运行的代价差额,即确定sql性能准确评估后获得的奖励。策略(policy)包括预测得出对每一个sql调优动作产生后产生的优化时间作为奖励值,最高的奖励值对应的sql性能问题动作,对应的sql性能分析模型参数即是本次sql性能分析模型使用的估计参数。
[0047]
对所述语句性能分析模型进行进一步说明,所述语句性能分析模型通过以下方式获取:将样本特征输入预先设置的公共神经网络模型;所述公共神经网络模型包括至少两个执行线程;所述执行线程分别利用各自的样本特征进行交互得到经验数据;利用所述执行线程根据经验数据分别计算对应的损失函数梯度;基于所述损失函数梯度对所述语句性能分析模型进行优化。
[0048]
具体的,结合附图3对于模型实现的结构示意图,对模型的获取过程进行示例性说明。将这些特征输入到一个公共的神经网络模型,这个神经网络模型包括actor网络和critic网络两部分的功能,下面有n个worker工作队列,每个线程里有和公共的神经网络一样的网络结构,每个线程会独立的和环境进行交互得到经验数据,这些线程之间互不干扰,独立运行。
[0049]
每个线程和环境交互到一定量的数据后,就计算在自己线程里的神经网络损失函数的梯度,但是这些梯度却并不更新自己线程里的神经网络,而是去更新公共的神经网络。也就是n个线程会独立的使用累积的梯度分别更新公共部分的神经网络模型参数。每隔一
段时间,线程会将自己的神经网络的参数更新为公共神经网络的参数,进而指导后面的环境交互。由此可以计算得到当前网络参数下的奖励值。
[0050]
选取公共部分的a3c神经网络参数预测出来的奖励值最高的那个估值结果作为当前sql性能优化的策略(policy)执行,待执行以后可以根据历史sql运行情况记录(s,a,p,r)中奖励(reward)的定义来计算得到实际奖励值
[0051]
每次预测后,都将当前状态state,计算得出的action(queuename),预估奖励值(reward)存到回放记忆单元中。并初始化状态state,基于策略选出动作,执行动作得到奖励和新的状态。
[0052]
损失函数的结构见图4所示,其中,损失函数=策略梯度损失+值残差+策略熵,即图中所示出的td

error=policy_loss+value_loss+entropy_regularization,然后再通过神经网络反向传播使用梯度下降法来更新神经网络的参数,以达到最小化损失函数的目的。
[0053]
下面结合附图5对基于分析特征确定优化策略的过程进行具体的示例性说明,首先,基于步骤s510完成特征工程的建立,获取对应的分析特征,之后,执行步骤s520通过并行异步的方式对神经网络进行训练,再执行步骤s530通过多线程更新神经网络参数。在完成参数训练后,执行步骤s540预估奖励值,并选取最优策略,之后,执行步骤s550最小化损失函数,最终执行步骤s560完成优化分析结果的输出。
[0054]
优化策略即为所确定的用于实施于目标数据库语句,以改善目标数据库语句运行状态,减轻冗余程度的策略。其中,所述优化策略,包括基于语句的优化策略和基于执行计划的优化策略。
[0055]
所述基于语句的优化策略,包括子查询的外连接改写策略、多表重复访问改写策略、驱动表调整策略、表关系改写策略、表数据改写策略、索引改写策略和多表关联关系改写策略中的至少一种;所述基于执行计划的优化策略,包括基于历史执行时间的执行计划改写策略、基于统计信息与物理存储对应关系的表访问策略中的至少一种。
[0056]
具体的对于上述优化策略的实现形式,针对基于语句的优化策略,可以是子查询的改写成外连接;多表重复访问的改写成within;驱动表的选择和调整;in、not in改成exists、not exists;表数据映射和裁剪;对索引键及分区键加函数导致索引和分区实现的改写;多表关联的临时表缓存改写。针对基于执行计划的优化规则,可以是基于历史执行时间的最优执行计划,生成hints,绑定最优的执行计划;统计信息与物理存储不一致时,改写表的访问策略。
[0057]
实际应用中根据具体需求也可以调整相应的优化策略的实施方式,使其更为符合应用的需求,并不限于上述示例,在此不再赘述。
[0058]
s150:结合数据库语句的执行状态,通过所述优化策略对目标数据库语句进行优化。
[0059]
在获取到优化策略后,即可结合数据库语句的执行状态,利用所述优化策略对目标数据库语句进行优化。
[0060]
所述执行状态,用于描述针对当前针对目标数据库语句的应用情况,从而能够结合具体的应用方式,实现语句的优化,保证优化的效果。
[0061]
在一些实施方式中,所述执行状态,包括数据量相关特征、执行计划相关特征、系
统资源特征、作业运行特征、作业等待特征和历史特征中的至少一种。
[0062]
具体的优化过程可以图6所示,基于图中所示的执行顺序依次执行各个步骤。首先,基于步骤s610,获取sql的数据量相关特征,其中,包括依赖表的统计信息及记录数、io预估情况、索引的区分度、数据分布是否均衡等。
[0063]
执行步骤s620,获取sql执行计划相关特征,表的访问方式(全表、还是索引)、表的join方式是hash join还是nestloops,表的关联有几层嵌套。
[0064]
执行步骤s630,获取系统资源特征,当前预测时间点,有多少作业运行在该系统上,总共使用的内存和cpu,剩余多少内容和cpu。
[0065]
执行步骤s640,查看其他作业的已运行时间、剩余运行时间特征。
[0066]
执行步骤s650,查看其他等待作业的已等待时间、预估运行时间特征。
[0067]
执行步骤s660,获取sql历史运行特征,即历史运行的平均耗时、方差,等待事件等。
[0068]
执行步骤s670,将这些特征输入到双层全连接带relu激活函数的神经网络,其中隐藏层的神经元个数等于50,由此可以计算得到当前网络参数下,优先执行该sql预估会产生的奖励值。这个奖励值就是当前值网络,预估出来的奖励值。选取当前神经网络预测出来的奖励值最高的那个sql作为当前sql语句的策略(policy)执行,待执行以后并且当天该作业组批量结束后,可以根据前面一节定义强化学习四原组(s,a,p,r)中奖励(reward)的定义来计算得到实际奖励值。
[0069]
执行步骤s680,实现每次预测反馈执行,在每次预测后,将当前状态state,计算得出的action(queuename),预估奖励值(reward)存到回放记忆单元中。待每日批量完成以后,再从回放记忆单元中随机选取一定批次的训练样本用于学习,用于训练神经网络,这里之所以选择随机选取30%的而不是全部的原因是,基于极大似然发的机器学习都有一个假设条件:训练样本必须是独立同分布的,如果假设不成立,那么模型的训练效果将会大打折扣,而我们这里回放记忆单元中的训练样本是和state交互得到的序列,是存在一定相关性的,因为一个语句的结果很可能就是另外一个语句的输入。因此本发明的解决方案,就是设置一个回放记忆单元,来存放一定量的数据,数据包括特征,动作,和奖励,在使用数据的时候,我们在这个回放记忆单元中随机抽取30%的hql语句进行学习,这样其实就打破了state交互得到的序列的相关性,即解决了数据相关性的问题。
[0070]
最终执行步骤s690,实现队列顺序排定。定义损失函数loss=(实际奖励值—预估奖励值)^2,然后再通过神经网络反向传播使用梯度下降法来更新神经网络的参数,以达到最小化损失函数的目的,即让神经网络训练出来的最优队列安排越来越贴近实际的队列布置规则。
[0071]
下面结合附图7利用一个具体的场景示例对上述数据库语句优化方法进行说明,如图7所示,首先基于步骤s710将sql语句解析前置,同时执行步骤s720调用历史运行信息库中的信息,与前置后的sql语句解析融合,执行步骤s730,构建特征工程,即包含有相应的分析特征。之后,执行步骤s740,基于上述特征工程,通过强化学习模型构建以及sql性能自动分析,完成模型的训练。利用训练得到的模型,执行步骤s750,通过性能分析和语句自助调优来对语句本身进行优化,最终执行步骤s760,通过sql执行队列优化管理对sql语句的执行过程进行进一步优化,从而保证优化后的数据库语句的执行效果。
[0072]
基于上述实施例和场景示例的介绍,可以看出,上述方法在获取到数据库语句后,首先对数据库语句进行语义解析以得到语义信息,从而对该语句的含义以及关联关系进行确定,再结合语义信息获取到对应的分析特征,以确定需要进行优化的特征,使得能够基于分析特征利用预设优化规则来确定对应的优化策略,最终能够结合数据库语句的执行状态,利用优化策略来对数据库语句进行优化。通过上述方法,实现对数据库语句的分析以确定需要优化的特征,并通过设置相应的策略实现了数据库语句的优化,保障了数据库语句的执行效果,在后续应用过程中有利于相应业务的执行。
[0073]
基于图1所对应的数据库语句优化方法,介绍本说明书实施例一种数据库语句优化装置。所述数据库语句优化装置设置于数据库语句优化设备。如图8所示,所述数据库语句优化装置包括以下模块。
[0074]
目标数据库语句接收模块810,用于接收目标数据库语句。
[0075]
语义解析模块820,用于对所述目标数据库语句进行语义解析得到语义信息;所述语义信息用于表示目标数据库语句的含义和关联关系。
[0076]
分析特征确定模块830,用于根据所述语义信息确定所述目标数据库语句的分析特征;所述分析特征用于表示语句优化所针对的特征。
[0077]
优化策略确定模块840,用于基于所述分析特征,利用预设优化规则确定所述目标数据库语句的优化策略。
[0078]
目标数据库语句优化模块850,用于结合数据库语句的执行状态,通过所述优化策略对目标数据库语句进行优化。
[0079]
基于图1所对应的数据库语句优化方法,本说明书实施例提供一种数据库语句优化设备。如图9所示,所述数据库语句优化设备可以包括存储器和处理器。
[0080]
在本实施例中,所述存储器可以按任何适当的方式实现。例如,所述存储器可以为只读存储器、机械硬盘、固态硬盘、或u盘等。所述存储器可以用于存储计算机程序指令。
[0081]
在本实施例中,所述处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编程逻辑控制器和嵌入微控制器的形式等等。所述处理器可以执行所述计算机程序指令实现以下步骤:接收目标数据库语句;对所述目标数据库语句进行语义解析得到语义信息;所述语义信息用于表示目标数据库语句的含义和关联关系;根据所述语义信息确定所述目标数据库语句的分析特征;所述分析特征用于表示语句优化所针对的特征;基于所述分析特征,利用预设优化规则确定所述目标数据库语句的优化策略;结合数据库语句的执行状态,通过所述优化策略对目标数据库语句进行优化。
[0082]
需要说明的是,上述数据库语句优化方法、装置及设备可以应用于人工智能技术领域,也可以应用至除人工智能技术领域外的其他技术领域,对此不做限制。
[0083]
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件
(programmable logic device,pld)(例如现场可编程门阵列(field programmable gate array,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardware description language,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advanced boolean expression language)、ahdl(altera hardware description language)、confluence、cupl(cornell university programming language)、hdcal、jhdl(java hardware description language)、lava、lola、myhdl、palasm、rhdl(ruby hardware description language)等,目前最普遍使用的是vhdl(very

high

speed integrated circuit hardware description language)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
[0084]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0085]
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的第一硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
[0086]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0087]
本说明书可用于众多第一或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
[0088]
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0089]
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变
形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1