一种任务处理方法及装置
技术领域
本说明书涉及计算机软件技术领域,尤其涉及一种任务处理方法及装置。
背景技术
在互联网大数据时代,为了能够提升批量运算大数据的能力,通常会采用运行离线任务的方式对业务进行处理,例如,在网上银行向用户提供的存贷款业务场景中,为了能够提升批量运算用户在存贷款业务中所产生的利息的能力,通常会采用运行离线任务的方式来计算用户在网上银行上的存贷款的利息。
目前,随着网上银行业务的不断增长,用户在存贷款业务中的业务数据(业务数据包括:存贷款合约的利率数据以及存贷款合约对应的账户余额数据)也在不断增长,这样就增加了计算用户在网上银行上的存贷款的利息的运行时间,进而会影响到各种以用户存贷款的利息为基础的查出时间。
基于此,为了减少通过离线任务的方式计算用户在网上银行上的存贷款的利息的运行时间,需要提供一种更高效的任务处理方法。
发明内容
本说明书实施例提供一种任务处理方法及装置,用以解决如下技术问题:为了减少通过离线任务的方式计算用户在网上银行上的存贷款的利息的运行时间,需要提供一种更高效的任务处理方法。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种任务处理方法,包括:
获取合约信息表和账户信息表;
将所述合约信息表和所述账户信息表拆分成至少两个信息分表组,其中,每个信息分表组包括合约信息分表及其相匹配的账户信息分表;
并行处理每个信息分表组,得到每个信息分表组对应的计提结果;
合并每个信息分表组对应的计提结果。
本说明书实施例提供的一种任务处理装置,包括:
获取模块,用于获取合约信息表和账户信息表;
拆分模块,用于将所述合约信息表和所述账户信息表拆分成至少两个信息分表组,其中,每个信息分表组包括合约信息分表及其相匹配的账户信息分表;
处理模块,用于并行处理每个信息分表组,得到每个信息分表组对应的计提结果;
合并模块,用于合并每个信息分表组对应的计提结果。
本说明书实施例提供的一种任务处理设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取合约信息表和账户信息表;
将所述合约信息表和所述账户信息表拆分成至少两个信息分表组,其中,每个信息分表组包括合约信息分表及其相匹配的账户信息分表;
并行处理每个信息分表组,得到每个信息分表组对应的计提结果;
合并每个信息分表组对应的计提结果。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:在中央处理器(Central Processing Unit,CPU)资源一定的情况下,通过将合约信息表和账户信息表拆分成至少两个信息分表组,再将所有信息分表组分配给CPU内的多个线程(一个线程最多分配到一个信息分表组),线程之间并行处理每个信息分表组,不再通过CPU内的一个线程单一串行处理合约信息表和账户信息表中每个用户对应的业务数据,有效的减少通过离线任务的方式计算用户在网上银行上的存贷款的利息的运行时间,更为高效,与此同时,也充分的使用了CPU的资源,提高了CPU资源的利用率。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例提供的一种任务处理方法的流程示意图;
图2为本说明书实施例提供的对应于图1的一种任务处理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本说明书实施例提供的一种任务处理方法的流程示意图,从程序角度而言,流程的执行主体可以为搭载于用户所使用的终端的应用用户端,比如,商品租赁应用的用户端、支付应用的用户端、即时通信应用的用户端等,终端比如是手机、平板电脑、智能手表、或者车机等,另外,也可以为第三方应用平台,如,第三方提供的一站式大数据智能平台,所述一站式大数据智能平台可使得大数据设计和开发、运维监控、数据集成、数据管理、数据安全和数据质量等将会成为一个整体,同时与算法平台链接,更完善了整个大数据平台的能力。
图1中的流程可以包括以下步骤:
S101:获取合约信息表和账户信息表。
目前,在网上银行向用户提供的存贷款业务场景中,为了能够提升批量运算用户在存贷款业务中所产生的利息的能力,通常会采用运行离线任务的方式来计算用户在网上银行上的存贷款的利息。
由于在实际应用中,计算用户在网上银行上的存贷款的利息通常需要知道用户存贷款的金额以及利率,因此,在本说明书实施了中,计算用户在网上银行上的存贷款的利息,首先需要获取合约信息表和账户信息表。
在此需要说明的是,每个用户在网上银行办理存贷款业务时都需要签订合约,所签订的合约内则记录了用户的存贷款的金额、利率以及用于存储用户存贷款的账号(如,银行卡账号),其中,每个合约的账号均不相同,一个用户可以签订一个合约,也可以签订多个合约,每个合约对应一笔存贷款业务,因此,在本说明书实施例中,可将线上数据库中所存储的合约信息和账号信息同步到一站式大数据平台内,并由一站式大数据平台提取用户在网上银行办理存贷款业务时所签订的合约和账号中所需信息,填写在合约信息表和账户信息表内,其中,合约信息表内包括多位不同用户的合约号和利率,如表1所示:
表1
账户信息表内包括多位不同用户的账号和账号内的余额,如表2所示:
表2
在此需要说明的是,合约信息表和账户信息表内可存在一个用户的多笔存贷款(即,该用户签订了多份合约),也可以存在多个用户的存贷款(即,不同的用户均签订了各自的合约),但是在利息计提时需要分别计算利息每笔存贷款业务,也就是说,即使一个用户的多笔存贷款也不可以合并计算利息。
S102:将所述合约信息表和所述账户信息表拆分成至少两个信息分表组。
由于本发明是通过CPU内多个线程并行处理合约信息表和账户信息表内用户的业务数据来减少通过离线任务的方式计算用户在网上银行上的存贷款的利息的运行时间,因此,在本说明书实施例中,在获取到合约信息表和账户信息表后,需要将所获取的合约信息表和账户信息表拆分成至少两个信息分表组,每个信息分表组包括合约信息分表及其相匹配的账户信息分表。
在此需要说明的是,所拆分的信息分表组的数量可以根据CPU内线程的数量来确定,拆分的数量最小为2,最大为所有CPU内的线程的总数量,假设有两个CPU,每个CPU存在十个线程,那么最大的拆分数量为20,当然,所拆分的信息分表组的数量也可以不超过所有CPU内线程的总数量,最终在分配信息分表组时会出现有的线程没有分到信息分表组。
另外,每个信息分表组包括的合约信息分表是合约信息表中的一部分,也就是说,从合约信息表中选取一部分用户的业务数据,每个信息分表组包括的账户信息分表是账户信息表中的一部分,也就是说,从账户信息表中选取一部分用户的业务数据。另外,合约信息分表及其相匹配的账户信息分表指的是合约信息分表包括的用户与账户信息分表包括的用户是一致的,如,合约信息分表包括用户A、用户B和用户C的业务数据,与合约信息分表相匹配的账户信息分表也包括用户A、用户B和用户C的业务数据。
进一步的,由于合约信息表内的分表字段和账户信息表内的分表字段能够反映出用户的信息,进而区分出不同的用户,因此,在本说明书实施例中,可根据所述合约信息表的第一分表字段和所述账户信息表的第二分表字段,将所述合约信息表和所述账户信息表拆分成至少两个信息分表组。
在此需要说明的是,第一分表字段和第二分表字段可能是相同的字段,也可能是不同的字段,第一分表字段和第二分表字段的选取要保证根据第一分表字段和第二分表字段能够将同一用户在合约信息表中的业务数据和在账户信息表中的业务数据分在同一信息分表组内即可。
由于在实际应用中,合约信息表中的合约号字段和账户信息表中的账号字段能够唯一标识同一个用户,因此,在本说明书实施例中,所述第一分表字段为合约号字段,所述第二分表字段为账号字段。
在此需要说明的是,合约号为用户在网上银行办理存贷款业务时所签订的合约的标识,唯一标识了合约,账号为用户所签订的合约中记录的用于存储用户存贷款的账号。
综上所述,本说明书实施例基于合约号字段和账号字段,提供了一种根据所述合约信息表的第一分表字段和所述账户信息表的第二分表字段,将所述合约信息表和所述账户信息表拆分成至少两个信息分表组的实施方式,具体如下:
分别在所述第一分表字段的每个字段值内和所述第二分表字段的每个字段值内选取预设位置的字符,将所选取的字符转换成运算数字,对所述运算数字做取余运算,根据余数和预先设定的分组规则,将所述合约信息表和所述账户信息表拆分成至少两个信息分表组。
在此需要说明的是,预先设定的分组规则需要根据实际需求(如,需要拆分信息分表组的数量)来设定,如,假设需要拆分信息分表组的数量为10个,则余数是0-9的归为一个信息分表组,余数是10-19的归为一个信息分表组,余数是20-29的归为一个信息分表组,余数是30-39的归为一个信息分表组,余数是40-49的归为一个信息分表组,余数是50-59的归为一个信息分表组,余数是60-69的归为一个信息分表组,余数是70-79的归为一个信息分表组,余数是80-89的归为一个信息分表组,余数是90-99的归为一个信息分表组,又如,假设需要拆分信息分表组的数量为5个,则余数是0-19的归为一个信息分表组,余数是20-39的归为一个信息分表组,余数是40-59的归为一个信息分表组,余数是60-79的归为一个信息分表组,余数是80-99的归为一个信息分表组。
在此需要说明的是,通过本说明书实施例所提供的一种根据所述合约信息表的第一分表字段和所述账户信息表的第二分表字段,将所述合约信息表和所述账户信息表拆分成至少两个信息分表组的实施方式,可以使用用户自定义函数“Integer.valueof(accountNo.substring(accountNo.len-N,accountNo.len-n)_%10”来实现,其中,accountNo.len-N为分表字段的倒数第N位,accountNo.len-n为分表字段的倒数第n位,accountNo.substring(accountNo.len-N,accountNo.len-n)为取分表字段的倒数第N位到倒数第n位的字符,Integer.valueof(accountNo.substring(accountNo.len-N,accountNo.len-n)为将所选取的分表字段的字符转换成运算数字,Integer.valueof(accountNo.substring(accountNo.len-N,accountNo.len-n)_%10为对转换后的运算数字做除以10的取余运算得到分表字段的余数。
由于在实际应用中,为了提高处理每个信息分表组内数据的效率,使得合约信息表和账户信息表中的每个用户的每个业务数据只被处理一次,因此,在本说明书实施例中,通常将所述合约信息表和所述账户信息表拆分成的至少两个信息分表组,不同信息分表组所包括的合约信息分表的数据互不相同;不同信息分表组所包括的账户信息分表的数据互不相同,也就是说,信息分表组A所包括的合约信息分表内的每个用户及其业务数据不会出现在其他信息表组内,全部信息分表组所包括的合约信息分表内的用户及其业务数据之和为合约信息表,同理,信息分表组A所包括的账户信息分表内的每个用户及其业务数据不会出现在其他信息表组内,全部信息分表组所包括的账户信息分表内的用户及其业务数据之和为账户信息表。
S103:并行处理每个信息分表组,得到每个信息分表组对应的计提结果。
S104:合并每个信息分表组对应的计提结果。
在本说明书实施例中,在执行步骤S102拆分完成至少两个信息分表组后,需要并行处理每个信息分表组,也就是说,将拆分完成后的所有信息分表组分配给CPU内的多个线程,一个线程分配到一个信息分表组或者没有分配到信息分表组,线程之间并行处理每个信息分表组,具体的,针对每个信息分表组,对该信息分表组所包括的合约信息分表及其相匹配的账户信息分表进行清洗,根据清洗后的合约信息分表及其相匹配的账户信息分表,确定该信息分表组对应的计提结果。
在此需要说明的是,对该信息分表组所包括的合约信息分表及其相匹配的账户信息分表进行清洗指的是将该信息分表组所包括的合约信息分表及其相匹配的账户信息分表内预设的字段及其对应的业务数据提取出来,并合并所提取的预设的字段,从而形成一个待处理的信息表,并对待处理的信息表内的每个用户进行利息计提处理,从而得到每个信息分表组对应的计提结果,也就是,每个信息分表组内每个用户均对应一个利息计提结果。
进一步的,说明书实施例在确定出每个信息分表组对应的计提结果后,需要将每个信息分表分组对应的计提结果进行合并,得到最终全量账户合约的计提结果。
通过上述方法,在中央处理器(Central Processing Unit,CPU)资源一定的情况下,通过将合约信息表和账户信息表拆分成至少两个信息分表组,再将所有信息分表组分配给CPU内不同的线程(一个线程最多分配到一个信息分表组),线程之间并行处理每个信息分表组,不再通过CPU内的一个线程单一串行处理合约信息表和账户信息表中每个用户对应的业务数据,有效的减少通过离线任务的方式计算用户在网上银行上的存贷款的利息的运行时间,更为高效,与此同时,也充分的使用了CPU的资源,提高了CPU资源的利用率。
基于同样的思路,本说明书实施例还提供了上述方法对应的装置,如图2所示。
图2为本说明书实施例提供的对应于图1的一种任务处理装置的结构示意图,所述装置包括:
获取模块201,用于获取合约信息表和账户信息表;
拆分模块202,用于将所述合约信息表和所述账户信息表拆分成至少两个信息分表组,其中,每个信息分表组包括合约信息分表及其相匹配的账户信息分表;
处理模块203,用于并行处理每个信息分表组,得到每个信息分表组对应的计提结果;
合并模块204,用于合并每个信息分表组对应的计提结果。
所述拆分模块202具体用于,根据所述合约信息表的第一分表字段和所述账户信息表的第二分表字段,将所述合约信息表和所述账户信息表拆分成至少两个信息分表组。
所述第一分表字段为合约号字段,所述第二分表字段为账号字段。
所述拆分模块202还用于,分别在所述第一分表字段的每个字段值内和所述第二分表字段的每个字段值内选取预设位置的字符,将所选取的字符转换成运算数字,对所述运算数字做取余运算,根据余数和预先设定的分组规则,将所述合约信息表和所述账户信息表拆分成至少两个信息分表组。
不同信息分表组所包括的合约信息分表的数据互不相同,不同信息分表组所包括的账户信息分表的数据互不相同。
所述处理模块203具体用于,针对每个信息分表组,对该信息分表组所包括的合约信息分表及其相匹配的账户信息分表进行清洗,根据清洗后的合约信息分表及其相匹配的账户信息分表,确定该信息分表组对应的计提结果。
所述处理模块203还用于,在该信息分表组所包括的合约信息分表及其相匹配的账户信息分表内提取预设的字段,合并所提取的预设的字段。
基于同样的思路,本说明书实施例还提供了上述方法对应的设备和非易失性计算机存储介质。
本说明书实施例提供的对应于图1的一种任务处理设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取合约信息表和账户信息表;
将所述合约信息表和所述账户信息表拆分成至少两个信息分表组,其中,每个信息分表组包括合约信息分表及其相匹配的账户信息分表;
并行处理每个信息分表组,得到每个信息分表组对应的计提结果;
合并每个信息分表组对应的计提结果。
本说明书实施例提供的对应于图1的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
获取合约信息表和账户信息表;
将所述合约信息表和所述账户信息表拆分成至少两个信息分表组,其中,每个信息分表组包括合约信息分表及其相匹配的账户信息分表;
并行处理每个信息分表组,得到每个信息分表组对应的计提结果;
合并每个信息分表组对应的计提结果。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供的装置、设备、非易失性计算机存储介质与方法是对应的,因此,装置、设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、设备、非易失性计算机存储介质的有益技术效果。
在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),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。