一种用于网络测试仪的调度方法和系统与流程

文档序号:12182460阅读:317来源:国知局
一种用于网络测试仪的调度方法和系统与流程
本申请涉及互联网
技术领域
,特别涉及一种用于网络测试仪的调度方法及系统。
背景技术
:网络测试仪(以下简称测试仪)是网络中流量的生成器和发包器。测试仪可以完成对网络设备和服务器的网络性能的测试。测试仪包括用于发送数据包(以下简称发包)的发包核。测试仪中调度机制用于控制发包的进行。现有技术中,测试仪的调度机制一般存在以下几种:第一种,全力发包机制,系统发包时,发包核全力发包,发完后就空闲等待,在下一秒到来时再发包;例如10000pps,在1秒钟内可能几毫秒就把10000个包发完了,然后空闲等待到下一秒的到来;这样的发包机制,对于测试仪来说发包不够平缓。第二种,发包与调度结合的机制,系统发包时,每发一个包就比较当前已经发送的发包数,如果没到需要发送的发包总数就继续发包,如果到发包总数就停止发包;这样的发包机制,需要等测试仪发完包才能判断是否需要调度,造成了调度的延迟,不容易控制发包速率,进而导致发包不平缓。综上所述,现有的网络测试仪存在发包不平缓的问题。技术实现要素:本申请实施例的目的是提供一种用于网络测试仪的调度方法及装置,用以解决现有技术中存在的发包不平缓的问题。为解决上述技术问题,本申请一实施例提供的一种用于网络测试仪的调度方法,包括:接收设定的第一预设时间内的第一发包数量;将所述第一发包数量按照第二预设时间间隔划分,得到每一第二预设时间间隔中的第二发包数量;在第二预设时间间隔内,如果存在待发送的数据包,则发送第二发包数量的数据包;其中,所述第二预设时间间隔小于所述第一预设时间。本申请一实施例提供的一种用于网络测试仪的调度方法,包括:接收设定的第一预设时间内的第一发包数量;将所述第一发包数量按照第二预设时间间隔划分,得到每一第二预设时间间隔中的第二发包数量;将所述每一第二预设时间间隔中的第二发包数量按照发包核数划分,得到每一发包核在每一第二预设时间间隔中的第三发包数量;在第二预设时间间隔内,如果每一发包核存在待发送的数据包,则发送第三发包数量的数据包;其中,所述第二预设时间间隔小于所述第一预设时间。本申请一实施例提供的一种用于网络测试仪的调度系统,包括:第一接收单元,用于接收设定的第一预设时间内的第一发包数量;第一划分单元,用于将所述第一发包数量按照第二预设时间间隔划分;第一生成单元,用于得到每一第二预设时间间隔中的第二发包数量;第一发送单元,用于在第二预设时间间隔内,如果存在待发送的数据包,则发送第二发包数量的数据包;其中,所述第二预设时间间隔小于所述第一预设时间。本申请一实施例提供的一种用于网络测试仪的调度系统,包括:第二接收单元,用于接收设定的第一预设时间内的第一发包数量;第二划分单元,用于将所述第一发包数量按照第二预设时间间隔划分;第二生成单元,用于得到每一第二预设时间间隔中的第二发包数量;第三划分单元,用于将所述每一第二预设时间间隔中的第二发包数量按照发包核数划分;第三生成单元,用于得到每一发包核在每一第二预设时间间隔中的第三发包数量;第二发送单元,用于在第二预设时间间隔内,如果每一发包核存在待发送的数据包,则发送第三发包数量的数据包;其中,所述第二预设时间间隔小于所述第一预设时间。由以上本申请实施例提供的技术方案可见,本申请实施例提供的一种用于网络测试仪的调度方法及系统,通过将接收的第一预设时间内的第一发包数量按照第二预设时间间隔划分,得到每一第二预设时间间隔中的第二发包数量,进而可以使得测试仪在第一预设时间内都在发包,最终可以保证测试仪发包的平稳性,解决了现有技术中发包不平稳的问题。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本申请一实施例中提供的用于网络测试仪的调度方法的流程图;图2为图1中S110的具体步骤的流程图;图3为本申请一实施例中提供的用于网络测试仪的调度方法的流程图;图4为图3中S220的具体步骤的流程图;图5为本申请一实施例中提供的用于网络测试仪的调度系统的模块示意图;图6为本申请一实施例中提供的用于网络测试仪的调度系统的模块示意图。具体实施方式为了使本
技术领域
的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。图1为本申请一实施例中提供的用于网络测试仪的调度方法的流程图,包括:S100:接收设定的第一预设时间内的第一发包数量。具体的,测试仪可以接收用户输入的第一预设时间内的第一发包数量。所述第一预设时间可以包括1秒等。S110:将所述第一发包数量按照第二预设时间间隔划分,得到每一第二预设时间间隔中的第二发包数量。所述第二预设时间间隔小于所述第一预设时间。所述第二预设时间可以包括1毫秒等。具体的,S110步骤中所述将所述第一发包数量按照第二预设时间间隔划分,可以包括:将所述第一发包数量按照第二预设时间间隔不完全均匀划分。具体的,如图2所示,S110步骤具体可以包括如下步骤:设定k为第一预设时间除以第二预设时间。S111:将所述第一发包数量除k,得到商factor和余数mod。S112:设置第一序数i为0。S113:判断所述i是否小于所述k;若否,执行S114;若是,执行S115。S115:判断所述i是否小于所述mod;若是,执行S116;若否,执行S117。S116:将第i个第二发包数量赋值为所述factor加1,并将所述i加1。S117:将第i个第二发包数量赋值为所述factor,并将所述i加1。S118:重复执行S113,直到执行S114。S114:得到每一第二预设时间间隔中的第二发包数量。本实施例中,将得到的每一第二预设时间间隔中的第二发包数量的顺序填入第一数组中,所述第一数组的数据类型可以包括64位整数型。举例说明,例如一网络测试仪接收的1秒内的第一发包数量为19998个,那么按照第二预设时间间隔为1毫秒可以将1秒分为1000组。首先,初始化一个有1000个元素的第一数组tokens_arraya;计算19998除1000,得到商factor为19,余数mod为998;设置第一序数i为0;判断i是否小于1000;若是,接着判断i是否小于998;由于0小于1000并且0小于等于998,则tokens_array[0]=20,并且将i加1。重复判断i是否小于1000。直到i=998时,由于i等于mod,所以tokens_array[998]=19;i=999时,由于i大于mod,所以tokens_array[999]=19;在i=1000时,由于i等于k,所以得到第一数组tokens_array,如下表所示:第一数组20202020202020202020…20201919第一序数0123456789…996997998999第一行:第一数组中各元素值,即每一第二预设时间间隔中的第二发包数量。第二行:各元素值对应的第一序数。当然,在其它实施例中,所述将所述第一发包数量按照第二预设时间间隔划分,还可以包括:将所述第一发包数量按照第二预设时间间隔均匀划分。设定k为第一预设时间除以第二预设时间,则可以将第一发包数量均匀分 为k组。举例说明,例如一网络测试仪接收的1秒内的第一发包数量为1000个,那么按照第二预设时间间隔为5毫秒可以将1秒分为200组,每组的第二发包数量则为5个。S120:在第二预设时间间隔内,如果存在待发送的数据包,则发送第二发包数量的数据包。设定第一发包值为所述第二发包数量。具体的,在第二预设时间间隔内,如果存在待发送的数据包;则逐一发送所述待发送的数据包,并在每一数据包发送之后将所述第一发包值减1后更新,直至所述第一发包值更新为0后停止发送数据包。值得一提的是,这里可以将所述第一发包值看作是令牌值,只有拥有令牌才能发包,并且每发一个包相应地将令牌值减1;当令牌值为0时,说明该第二预设时间间隔内发包结束,则停止发包。沿用S110中的例子,如第二预设时间间隔在2ms时,所述第一发包值为20个,测试仪通过执行S120,由于20大于0,所以发送一个数据包并将所述第一发包值减1;重复判断所述第一发包值是否等于0….;一直到所述第一发包值为0时,停止发送数据包。通过本实施例,测试仪可以将接收的第一预设时间内的第一发包数量按照第二预设时间间隔划分,得到每一第二预设时间间隔中的第二发包数量;进而可以使得测试仪在第一预设时间内都在发包,最终可以保证测试仪发包的平稳性,解决了现有技术中发包不平稳的问题。本申请实施例中,在所述S100之前,还可以包括:接收用户输入的参数;相应地,所述S100,包括:接收设定的第一预设时间内的根据所述参数调整的第一发包数量。例如,原来预设1秒内的第一发包数量为1000个,在0.2秒时发了200 个,还剩下800个没有发的情况下,用户将原来第一发包数量修改为2000个;由于原来的0.2秒内已经发了200个,仅仅在后续的0.8秒内将第一发包数量动态调整为1800个即可。这样,用户可以随时调整所述第一预设时间内的第一发包数量,测试仪可以调整所述第一发包数量并重新计算得到新的每一第二预设时间间隔中的第二发包数量即可,保证了测试仪发包的灵活性。本申请的方法及系统适用于多核架构的测试仪,即测试仪有多个CPU核心。本申请通过用一个CPU核心专门用于实现调度线程的调度功能,其它的CPU核心作为发包核用于实现发包线程的发包功能。然而,在多核架构下,由于存在多个发包核同时参与发包。如果不协调它们的发包数,可能会导致发包核间负载不均衡例如有的发包核发包很多,有的发包核甚至不发包,进而降低了系统性能。图3为本申请一实施例中提供的用于网络测试仪的调度方法的流程图,包括:S200:接收设定的第一预设时间内的第一发包数量。本步骤与上述实施例中的S100相同,此处不再赘述。S210:将所述第一发包数量按照第二预设时间间隔划分,得到每一第二预设时间间隔中的第二发包数量。本步骤与上述实施例中的S110相同,此处不再赘述。S220:将所述每一第二预设时间间隔中的第二发包数量按照发包核数划分,得到每一发包核在每一第二预设时间间隔中的第三发包数量。具体的,S220步骤中所述将所述每一第二预设时间间隔中的第二发包数量按照发包核数划分,可以包括:将所述每一第二预设时间间隔中的第二发包数量按照发包核数不完全均匀划分。具体的,如图4所示,具体包括如下步骤:设定所述发包核数为n。S221:设置第二序数j为0。S222:判断所述j是否小于所述k;若是,则执行S223;若否,则执行S224。S223:将第j个第二发包数量除n,得到商factor和余数mod。S225:设置第一序数i为0。S226:判断所述i是否小于所述n;若是,则执行S227a;若否,则执行S227b。S227a:判断所述i是否小于所述mod。若是,则执行S228a;若否,则执行S228b。S228a:将第i个第三发包数量赋值为所述factor加1,并将所述i加1。S228b:将第i个第三发包数量赋值为所述factor,并将所述i加1。S229:重复执行S226,直到执行S227b。S227b:将j加1,重复执行S222,直到执行S224。S224:得到每一发包核在每一第二预设时间间隔中的第三发包数量。本实施例中,将得到的每一发包核在每一第二预设时间间隔中的第三发包数量顺序填入第二数组中,所述第二数组的数据类型可以包括64位整数型。沿用S110中的例子,假设所述网络测试仪含有8个发包核,即n=8。首先,初始化一个8行1000列的第二数组lcore_token_array;设置第二序数j为0;判断j是否小于1000;由于0小于1000,所以计算第一数组tokens_array中第0个元素值除8,得到商factor为2,余数mod为4;设置第一序数i为0;判断i是否小于n;若是接着判断i是否小于4;由于0小于8并且0小于4,所以lcore_token_array[0][0]等于商加1(即3),并且将i加1。重复判断i是否小于n。直到i=4时,由于i等于mod,所以lcore_token_array[4][0]等于商(即2);在i=5,i=6,i=7时类似的。在i=8时, 由于i等于n,所以将j加1,重复判断j是否小于1000。直到j=1000时,由于j等于k,所以得到第二数组lcore_token_array。如下表所示,第一行:第一数组中各元素值,即每一第二预设时间间隔中的第二发包数量;第三至十行:第二数组中各元素值,即每一发包核在每一第二预设时间间隔中的第三发包数量。当然,在其它实施例中,所述将所述每一第二预设时间间隔中的第二发包数量按照发包核数划分,还可以包括:将所述每一第二预设时间间隔中的第二发包数量按照发包核数均匀划分。沿用上一实施例中S111步骤,例如对发包核数为5个,则可以将所述每一第二预设时间间隔中的第二发包数量(5个)按照发包核数(5个)均匀划分,即每个发包核为1个。S230:在第二预设时间间隔内,如果每一发包核存在待发送的数据包,则发送第三发包数量的数据包。设定第二发包值为所述第三发包数量。具体的,在第二预设时间间隔内,如果存在待发送的数据包;逐一发送所述待发送的数据包,并在每一数据包发送之后将所述第二发包值减1后更新,直至所述第二发包值更新为0后停止发送数据包。值得一提的是,这里可以将所述第二发包值看作是令牌值,只有拥有令牌才能发包,并且每发一个包相应地将令牌值减1;当令牌值为0时,说明该第二预设时间间隔内发包结束,则停止发包。沿用S220中的例子,如第二预设时间间隔在2ms时,所述发包核1的第三发包数量为3个,测试仪通过执行S230,由于3大于0,所以发送一个数据包并将所述第二发包值减1;重复判断所述第二发包值是否等于0….;一直到所述第二发包值为0时,停止发送数据包。本实施例相比上一实施例不同之处在于,通过S220步骤,可以将所述第二发包数量分配给各个发包核。这样,各个发包核只需发送自己分配到的第三发包数量,不同发包核之间不会相互影响,从而保证了发包核间负载均衡,提高了系统的性能。本申请实施例中,在所述S200之前,还可以包括:接收用户输入的参数;相应地,所述S200,包括:接收设定的第一预设时间内的根据所述参数调整的第一发包数量。例如,原来预设1秒内的第一发包数量为1000个,在0.2秒时发了200个,还剩下800个没有发的情况下,用户将原来第一发包数量修改为2000个;由于原来的0.2秒内已经发了200个,仅仅在后续的0.8秒内将第一发包数量动态调整为1800个即可。这样,用户可以随时调整所述第一预设时间内的第一发包数量,测试仪可以动态调整所述第一发包数量并重新计算得到新的每一第二预设时间间隔中 的第二发包数量即可,保证了测试仪发包的灵活性。图5为本申请一实施例中提供的用于网络测试仪的调度系统的模块示意图,包括:第一接收单元300,用于接收设定的第一预设时间内的第一发包数量。第一划分单元310,用于将所述第一发包数量按照第二预设时间间隔划分。第一生成单元320,用于得到每一第二预设时间间隔中的第二发包数量。第一发送单元330,用于在第二预设时间间隔内,如果存在待发送的数据包,则发送第二发包数量的数据包。其中,所述第二预设时间间隔小于所述第一预设时间。优选地,在所述第一接收单元300之前,还可以包括:第一接收子单元,用于接收用户输入的参数;相应地,所述第一接收单元300,还用于接收设定的第一预设时间内的根据所述参数调整的第一发包数量。优选地,所述第一划分单元,包括:第一划分子单元,用于将所述第一发包数量按照第二预设时间间隔均匀划分;或者,第二划分子单元,用于将所述第一发包数量按照第二预设时间间隔不完全均匀划分。优选地,所述第一发送单元,具体包括:第一发送子单元,用于在第二预设时间间隔内,如果存在待发送的数据包,则设定第一发包值为第二发包数量,逐一发送所述待发送的数据包。第一更新子单元,用于在每一数据包发送之后将所述第一发包值减1后更新,直至所述第一发包值更新为0后停止发送数据包。图6为本申请一实施例中提供的用于网络测试仪的调度装置的模块示意 图,包括:第二接收单元400,用于接收设定的第一预设时间内的第一发包数量。第二划分单元410,用于将所述第一发包数量按照第二预设时间间隔划分。第二生成单元420,用于得到每一第二预设时间间隔中的第二发包数量。第三划分单元430,用于将所述每一第二预设时间间隔中的第二发包数量按照发包核数划分。第三生成单元440,用于得到每一发包核在每一第二预设时间间隔中的第三发包数量。第二发送单元450,用于在第二预设时间间隔内,如果每一发包核存在待发送的数据包,则发送第三发包数量的数据包。其中,所述第二预设时间间隔小于所述第一预设时间。优选地,在所述第二接收单元400之前,还可以包括:第二接收子单元,用于接收用户输入的参数;相应地,所述第二接收单元400,还用于接收设定的第一预设时间内的根据所述参数调整的第一发包数量。优选地,所述第二划分单元,包括:第三划分子单元,用于将所述第一发包数量按照第二预设时间间隔均匀划分;或者,第四划分子单元,用于将所述第一发包数量按照第二预设时间间隔不完全均匀划分。优选地,所述第三划分单元,包括:第五划分子单元,用于将所述每一第二预设时间间隔中的第二发包数量按照发包核数均匀划分;或者,第六划分子单元,用于将所述每一第二预设时间间隔中的第二发包数量按照发包核数不完全均匀划分。优选地,所述第二发送单元,具体包括:第二发送子单元,用于在第二预设时间间隔内,如果每一发包核存在待发送的数据包,则设定第二发包值为第三发包数量,逐一发送所述待发送的数据包。第二更新子单元,用于在每一数据包发送之后将所述第二发包值减1后更新,直至所述第二发包值更新为0后停止发送数据包。在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(ProgrammableLogicDevice,PLD)(例如现场可编程门阵列(FieldProgrammableGateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(HardwareDescriptionLanguage,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(AdvancedBooleanExpressionLanguage)、AHDL(AlteraHardwareDescriptionLanguage)、Confluence、CUPL(CornellUniversityProgrammingLanguage)、HDCal、JHDL(JavaHardwareDescriptionLanguage)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardwareDescriptionLanguage)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage)与 Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、AtmelAT91SAM、MicrochipPIC18F26K20以及SiliconeLabsC8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产 品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁 磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所 作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1