一种内存资源控制方法及装置转让专利

申请号 : CN201910390847.8

文献号 : CN110109760B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王正魁柯洁贾志强

申请人 : 达闼机器人有限公司

摘要 :

本发明实施例涉及计算机技术领域,公开了一种内存资源控制方法,包括:为M个任务启动N个服务、并在N个服务中加载M个任务中部分任务的任务模型,其中,N小于M,N大于1;判断待处理任务的任务模型是否已在N个服务中被加载;若未被加载,则在N个服务中选择一个服务作为目标服务,并将目标服务加载的任务模型替换为待处理任务的任务模型。本发明实施方式中提供的一种内存资源控制方法及装置,有利于节约系统内存资源。

权利要求 :

1.一种内存资源控制方法,其特征在于,包括:为M个任务启动N个服务、并在所述N个服务中加载所述M个任务中部分任务的任务模型,其中,所述N小于所述M,所述N大于1;

判断待处理任务的任务模型是否已在所述N个服务中被加载;

若未被加载,则在所述N个服务中选择一个服务作为目标服务,并将所述目标服务加载的任务模型替换为所述待处理任务的任务模型;

所述在所述N个服务中加载所述M个任务中部分任务的任务模型之后,还包括:为所述N个服务上加载的任务模型对应的任务建立任务链表;

所述在所述N个服务中选择一个服务作为目标服务,具体包括:将所述任务链表中链表尾的任务所对应的任务模型确定为选中任务模型;

将加载有所述选中任务模型的服务作为所述目标服务。

2.根据权利要求1所述的内存资源控制方法,其特征在于,所述将所述目标服务加载的任务模型替换为所述待处理任务的任务模型之后,还包括:将所述待处理任务添加至所述任务链表的链表头,并删除所述任务链表中链表尾的任务。

3.根据权利要求1所述的内存资源控制方法,其特征在于,所述判断待处理任务的任务模型是否已在所述N个服务中被加载之前,还包括:判断所述待处理任务是否为非常用任务;

若判定所述待处理任务为非常用任务,则再执行所述判断待处理任务的任务模型是否已在所述N个服务中被加载。

4.根据权利要求3所述的内存资源控制方法,其特征在于,在所述判断所述待处理任务是否为非常用任务之后,还包括:若判定所述待处理任务为常用任务时,则为所述待处理任务启动固定服务,其中,每个所述常用任务对应一个所述固定服务。

5.根据权利要求1所述的内存资源控制方法,其特征在于,所述判断待处理任务的任务模型是否已在所述N个服务中被加载之前,还包括:判断所述N是否小于预设阈值;

若小于所述预设阈值,则计算系统的平均时间延迟;

判断所述平均时间延迟是否大于预设延迟上限;

若是,则启动新的服务。

6.根据权利要求1所述的内存资源控制方法,其特征在于,所述判断待处理任务的任务模型是否已在所述N个服务中被加载之前,还包括:判断所述N是否小于预设阈值;

若小于所述预设阈值,则启动新的服务。

7.根据权利要求1所述的内存资源控制方法,其特征在于,所述为M个任务启动N个服务之后,还包括:

定时计算系统的平均时间延迟;

判断所述平均时间延迟是否小于预设延迟下限;

若所述平均时间延迟小于所述预设延迟下限,则停止所述N个服务中至少一个服务。

8.一种内存资源控制装置,其特征在于,包括:至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任一所述的内存资源控制方法。

9.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一所述的内存资源控制方法。

说明书 :

一种内存资源控制方法及装置

技术领域

[0001] 本发明实施例涉及计算机技术领域,特别涉及一种内存资源控制方法及装置。

背景技术

[0002] 由于任务型对话往往与某一个领域紧密相关,为了提高应答模型的处理能力以及处理不同任务的任务模型之间相互解耦,每个任务需要一个对应的服务来加载处理该任务
的任务模型。为了及时响应各个任务的会话请求,通常需要启动多个服务。
[0003] 然而,发明人发现现有技术中至少存在如下问题:在未收到某个任务的会话请求时,加载该任务的任务模型的服务处于空闲状态,但是仍然需要占用一定的内存资源。因
此,当要处理的任务很多,但调用不频繁时,会浪费非常多的内存资源,不利于内存资源的
节约。

发明内容

[0004] 本发明实施方式的目的在于提供一种内存资源控制方法及装置,有利于节约系统内存资源。
[0005] 为解决上述技术问题,本发明的实施方式提供了一种内存资源控制方法,包括:为M个任务启动N个服务、并在N个服务中加载M个任务中部分任务的任务模型,其中,N小于M,N
大于1;判断待处理任务的任务模型是否已在N个服务中被加载;若未被加载,则在N个服务
中选择一个服务作为目标服务,并将目标服务加载的任务模型替换为待处理任务的任务模
型。
[0006] 本发明的实施方式还提供了一种内存资源控制装置,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的
指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述内存资源控制方法。
[0007] 本发明实施方式相对于现有技术而言,提供了一种内存资源控制方法,通过为M个任务启动小于M的N个服务,判断待处理任务的任务模型是否已在N个服务中被加载,若未加
载,则将N个服务中的目标服务上加载的任务模型替换为待处理任务的任务模型,保证服务
数目保持不变,且避免为所有的任务开启相应数目的服务,而导致未使用的服务过多从而
占用内存资源,有利于节约系统内存资源。
[0008] 另外,在N个服务中加载M个任务中部分任务的任务模型之后,还包括:为N个服务上加载的任务模型对应的任务建立任务链表;在N个服务中选择一个服务作为目标服务,具
体包括:将任务链表中链表尾的任务所对应的任务模型确定为选中任务模型;将加载有选
中任务模型的服务作为目标服务。
[0009] 另外,将目标服务加载的任务模型替换为待处理任务的任务模型之后,还包括:将待处理任务添加至任务链表的链表头,并删除任务链表中链表尾的任务。该方案中将待处
理任务添加至任务链表的链表头,并删除任务链表中链表尾的任务,从而确保任务链表中
的任务对应的任务模型均是被加载在服务中的。
[0010] 另外,判断待处理任务的任务模型是否已在N个服务中被加载之前,还包括:判断待处理任务是否为非常用任务;若判定待处理任务为非常用任务,则再执行判断待处理任
务的任务模型是否已在N个服务中被加载。该方案中为非常用任务提供小于其数目的服务,
通过替换服务上的任务模型从而实现对所有非常用任务的处理。
[0011] 另外,在判断待处理任务是否为非常用任务之后,还包括:若判定待处理任务为常用任务时,则为待处理任务启动固定服务,其中,每个常用任务对应一个固定服务。该方案
中为每个常用任务提供一固定服务,从而避免由于常用任务被经常调用而出现服务上的任
务模型被频繁替换的情况出现,节约了系统的任务处理时间。
[0012] 另外,判断待处理任务的任务模型是否已在N个服务中被加载之前,还包括:判断N是否小于预设阈值;若小于预设阈值,则计算系统的平均时间延迟;判断平均时间延迟是否
大于预设延迟上限;若是,则启动新的服务。该方案中通过判断系统的平均时间延迟是否大
于预设延迟上限,当大于预设延迟上限时,启动新的服务,进一步确保服务数目更加符合系
统的并发量需求,使得系统的平均时间延迟控制在合理范围内。
[0013] 另外,判断待处理任务的任务模型是否已在N个服务中被加载之前,还包括:判断N是否小于预设阈值;若小于预设阈值,则启动新的服务。该方案中当服务数目N小于预设阈
值时,启动新的服务,从而避免服务数目过少而导致服务上的任务模型被频繁替换的情况
出现,节约了系统处理时间。
[0014] 另外,为M个任务启动N个服务之后,还包括:定时计算系统的平均时间延迟;判断平均时间延迟是否小于预设延迟下限;若平均时间延迟小于预设延迟下限,则停止N个服务
中至少一个服务。该方案中通过在平均时间延迟小于预设延迟下限时,停止N个服务中至少
一个服务,以进一步降低未使用的服务对内存资源的占用,节约系统内存资源。

附图说明

[0015] 一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除
非有特别申明,附图中的图不构成比例限制。
[0016] 图1是根据本发明第一实施方式的内存资源控制方法的流程示意图;
[0017] 图2是根据本发明第二实施方式的内存资源控制方法的流程示意图;
[0018] 图3是根据本发明第三实施方式的内存资源控制方法的流程示意图;
[0019] 图4是根据本发明第四实施方式的内存资源控制装置的结构示意图。

具体实施方式

[0020] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方
式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节
和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
[0021] 本发明的第一实施方式涉及一种内存资源控制方法,本实施方式的核心在于提供了一种内存资源控制方法,包括:为M个任务启动N个服务、并在N个服务中加载M个任务中部
分任务的任务模型,其中,N小于M,N大于1;判断待处理任务的任务模型是否已在N个服务中
被加载;若未被加载,则在N个服务中选择一个服务作为目标服务,并将目标服务加载的任
务模型替换为待处理任务的任务模型。通过为M个任务启动小于M的N个服务,判断待处理任
务的任务模型是否已在N个服务中被加载,若未加载,则将N个服务中的目标服务上加载的
任务模型替换为待处理任务的任务模型,保证服务数目保持不变,且避免为所有的任务开
启相应数目的服务,而导致未使用的服务过多从而占用内存资源,有利于节约系统内存资
源。
[0022] 下面对本实施方式的内存资源控制方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
[0023] 本实施方式中的内存资源控制方法的流程示意图如图1所示:
[0024] 步骤101:为M个任务启动N个服务、并在N个服务中加载M个任务中部分任务的任务模型。
[0025] 具体地说,本实施方式中通过启动N个服务来满足M个任务的任务处理需求,其中N小于M,且N大于1。N个服务中每个服务用于加载一个任务模型,N个服务用于加载M个任务中
部分任务的任务模型,减少了处理任务的服务数目,从而避免为每个任务启动一个服务来
加载该任务对应的任务模型。
[0026] 步骤102:判断待处理任务的任务模型是否已在N个服务中被加载。若是,则该流程结束;若否,则进入步骤103。
[0027] 具体地说,当出现待处理任务时,先判断该待处理任务的任务模型是否已在N个服务中被加载,若被加载,则该流程结束;若未被加载,则将N个服务上的一个服务上加载的任
务模型替换为该待处理任务的任务模型,从而实现了N个服务对于M个任务的任务模型的替
换处理,保证N个服务能够满足M个任务的任务处理需求。本实施方式中可为已启动的任务
(即任务模型被加载的任务)建立已启动任务集合,并在加载任务模型时,更新该已启动任
务集合,可通过在该已启动任务集合中查找是否有该待处理任务,从而判断该待处理任务
的任务模型是否在N个服务中被加载。
[0028] 步骤103:在N个服务中选择一个服务作为目标服务,并将目标服务加载的任务模型替换为待处理任务的任务模型。
[0029] 具体地说,若待处理任务的任务模型未在N个服务中被加载,则从N个服务中选择一个服务作为目标服务,将目标服务上的任务模型替换为该待处理任务的任务模型,待处
理任务的任务模型在该目标服务上被加载,使得不增加服务数目也能够满足M个任务的处
理需求,从而避免服务数目过多而导致服务未被使用但依旧占用内存资源,从而有利于节
约系统内存资源。
[0030] 较佳地,在N个服务中加载M个任务中部分任务的任务模型之后,还包括:为N个服务上加载的任务模型对应的任务建立任务链表;在N个服务中选择一个服务作为目标服务,
具体包括:将任务链表中链表尾的任务所对应的任务模型确定为选中任务模型;将加载有
选中任务模型的服务作为目标服务。
[0031] 具体地说,为N个服务上加载的任务模型对应的任务建立任务链表,任务链表包括:链表头和链表尾,本实施方式中采取先进先出原则确定被替换的服务,先确定任务链表
中链表尾的任务对应的选中任务模型,并将加载该选中任务模型的服务作为目标服务,并
将目标服务上加载的选中任务模型替换为待处理任务的任务模型,从而实现对待处理任务
的处理。
[0032] 进一步地,将目标服务加载的任务模型替换为待处理任务的任务模型之后,还包括:将待处理任务添加至任务链表的链表头,并删除任务链表中链表尾的任务。
[0033] 具体地说,在将目标服务上的任务模型替换为待处理任务的任务模型之后,将待处理任务添加至任务链表的链表头,并删除任务链表中链表尾的任务,从而确保任务链表
中的任务对应的任务模型均是被加载在服务中的。
[0034] 下面举例说明本实施方式中的内存资源控制方法:假设当前有M=100个任务,N=4个服务分别为:服务A、服务B、服务C和服务D,4个服务上加载的任务模型对应的任务分别
为:服务A上加载航班的任务模型、服务B上加载音乐的任务模型、服务C上加载导航的任务
模型、服务D上加载预订酒店的任务模型。为这四个已启动的任务建立任务链表,根据任务
模型加载的时间顺序进行排序,从链表头至链表尾任务对应的任务模型在服务上加载的时
间越久,依次为:音乐、航班、导航、预订酒店。若待处理任务为“天气”,则根据任务链表可以
确定该任务模型并未启动,此时,确定任务链表中链表尾的任务为“预订酒店”,并确定加载
当前“预订酒店”任务对应的任务模型的目标服务D,将目标服务D上的任务模型替换为待处
理任务“天气”的任务模型,并更新任务链表从链表头至链表尾依次为:天气、音乐、航班、导
航。
[0035] 与现有技术相比,本发明实施方式提供了一种内存资源控制方法,通过为M个任务启动小于M的N个服务,判断待处理任务的任务模型是否已在N个服务中被加载,若未加载,
则将N个服务中的目标服务上加载的任务模型替换为待处理任务的任务模型,保证服务数
目保持不变,且避免为所有的任务开启相应数目的服务,而导致未使用的服务过多从而占
用内存资源,有利于节约系统内存资源。
[0036] 本发明的第二实施方式涉及一种内存资源控制方法。第二实施方式是对第一实施方式的改进,主要改进之处在于,本实施方式中还为每个常用任务启动一个固定服务,并在
判断待处理任务为常用任务时,启动该常用任务对应的固定服务。从而避免了常用任务被
频繁调用或停止,而使得服务上的任务模型被经常替换的情况出现,从而节约系统处理的
时间。
[0037] 本实施方式中的内存资源控制方法的流程示意图如图2所示,具体包括:
[0038] 步骤201:为M个任务启动N个服务、并在N个服务中加载M个任务中部分任务的任务模型。
[0039] 上述步骤201与第一实施方式中的步骤101大致相同,在此不再赘述。
[0040] 步骤202:判断待处理任务是否为非常用任务。若否,则进入步骤203;若是,则进入步骤204。
[0041] 步骤203:为待处理任务启动固定服务。
[0042] 针对上述步骤202和步骤203具体地说,任务可分为:常用任务和非常用任务。由于常用任务经常性的被调用执行,因此本实施方式中为每个常用任务提供一固定服务,从而
避免由于常用任务被经常调用而出现服务上的任务模型被频繁替换的情况出现,节约了系
统的任务处理时间。对于非常用任务而言,由于不会经常性被调用,因此,可以为非常用任
务提供小于其数目的服务,通过替换服务上的任务模型从而实现对所有非常用任务的处
理、且避免为所有的任务开启相应数目的服务而导致未使用的服务过多从而占用内存资
源,有利于节约系统内存资源。
[0043] 步骤204:判断待处理任务的任务模型是否已在N个服务中被加载。若是,则该流程结束;若否,则进入步骤205。
[0044] 步骤205:在N个服务中选择一个服务作为目标服务,并将目标服务加载的任务模型替换为待处理任务的任务模型。
[0045] 上述步骤204和步骤205与第一实施方式中的步骤102和步骤103大致相同,在此不再赘述。
[0046] 与现有技术相比,本发明实施方式中提供了一种内存资源控制方法,判断待处理任务的任务模型是否已在N个服务中被加载之前,还包括:为每个常用任务启动一个固定服
务;判断待处理任务是否为常用任务;若是,则为待处理任务的任务模型启动固定服务。该
方案中为每个常用任务启动一个固定服务,并在判断待处理任务为常用任务时,启动该常
用任务对应的固定服务,从而避免了常用任务被频繁调用或停止,而使得服务上的任务模
型被经常替换的情况出现,从而节约系统处理的时间。
[0047] 本发明的第三实施方式涉及一种内存资源控制方法。第三实施方式是对第二施方式的进一步改进,主要改进之处在于:本实施方中当服务数目N小于预设阈值时,启动新的
服务,从而避免服务数目过少而导致服务上的任务模型被频繁替换的情况出现,进一步节
约了系统处理时间。
[0048] 本实施方式中的内存资源控制方法的流程示意图如图3所示,具体包括:
[0049] 步骤301:为M个任务启动N个服务、并在N个服务中加载M个任务中部分任务的任务模型。
[0050] 步骤302:判断N是否小于预设阈值。若是,则进入步骤303;若否,则进入步骤304。
[0051] 步骤303:启动新的服务。
[0052] 针对上述步骤302和步骤303具体地说,理论上来说,服务数目N的最小值为1,最大值为非常用任务的数目M,但如果N值过小,启动的服务过少,虽然占用较少的内存,但服务
上任务模型的替换频率较高,从而导致系统的并发量降低。因此,本实施方式中对于服务数
目N的调整如下:一种方式为:由管理人员综合考虑内存资源、并发量要求等因素确定一个
合理的N值;另一种方式如本实施方式中示出的:管理人员根据内存资源确定服务数目的预
设阈值,若启动的服务数目N小于该预设阈值,则表明服务数目过少,此时需要启动新的服
务来降低服务上任务模型的替换频率较高,从而提高系统的并发量。
[0053] 进一步地,判断待处理任务的任务模型是否已在N个服务中被加载之前,还包括:判断N是否小于预设阈值;若小于预设阈值,则计算系统的平均时间延迟;判断平均时间延
迟是否大于预设延迟上限;若是,则启动新的服务。
[0054] 具体地说,管理人员还可根据内存资源、并发量要求等因素确定系统的平均时间延迟的预设延迟上限T1。在启动新的服务之前,计算系统的平均时间延迟,通过判断系统的
平均时间延迟是否大于预设延迟上限T1,当大于预设延迟上限T1时,表明系统的并发量较
低,启动的服务数目较少,此时需启动新的服务,进一步确保服务数目更加符合系统的并发
量需求,使得系统的平均时间延迟控制在合理范围内。
[0055] 进一步地,为M个任务启动N个服务之后,还包括:定时计算系统的平均时间延迟;判断平均时间延迟是否小于预设延迟下限;若平均时间延迟小于预设延迟下限,则停止N个
服务中至少一个服务。
[0056] 具体地说,管理人员还可根据内存资源、并发量要求等因素确定系统的平均时间延迟的预设延迟下限T2。通过定时计算系统的平均时间延迟,判断平均时间延迟是否小于
预设延迟下限T2,若平均时间延迟小于预设延迟下限T2,则表明系统并发量较高,当前的处
理任务数目较少,启动的服务数目过多,此时,可停止N个服务中至少一个服务,以进一步降
低未使用的服务对内存资源的占用,节约系统内存资源,进一步确保服务数目更加符合系
统的并发量需求。
[0057] 步骤304:判断待处理任务的任务模型是否已在N个服务中被加载。若是,则该流程结束;若否,则进入步骤305。
[0058] 步骤305:在N个服务中选择一个服务作为目标服务,并将目标服务加载的任务模型替换为待处理任务的任务模型。
[0059] 上述步骤304和步骤305与第一实施方式中的步骤102和步骤103大致相同,在此不再赘述。
[0060] 值得说明的是,本实施方式中的流程图为简化说明而在启动新的服务后,结束流程,但本领域技术人员可以理解,步骤303启动新的服务后,若启动的新的服务数目为1个,
则本实施方式中的N个服务应更新为N+1个服务,当再次出现待处理任务时,应判断该待处
理任务的任务模型是否已在“N+1个服务”中被加载。
[0061] 下面对本实施方式中的内存资源控制方法进行举例说明:假设当前有M=100个非常用任务,且采用自动调整策略来确定模型替换服务数目N,服务数目的最大值为L=10,预
设延迟上限为T1=20ms、预设延迟下限为T2=10ms。
[0062] 假设当前启动的服务数N=4,分别为:服务A、服务B、服务C和服务D,队列链表中从头到尾的4个任务分别为音乐、航班、导航、预订酒店。若收到用户查询天气的请求时,判定
当前服务数目N=4小于最大值L=10,故可以启动新的服务,此时启动新的服务,并在f该新
的服务上加载处理天气任务的模型,之后更新任务链表,此时,任务链表中从头到尾的5个
任务分别为天气、音乐、航班、导航、预订酒店。
[0063] 进一步地,在启动新的服务来加载“天气”的任务模型之前,还计算系统的平均时间延迟,假设系统的平均时间延迟为22ms,大于预设延迟上限为20ms,则表明此时系统需要
启动新的服务来降低时间延迟、满足系统并发量的要求,此时再启动新的服务来加载“天
气”的任务模型。
[0064] 与现有技术相比,本发明实施方式提供了一种内存资源控制方法,判断待处理任务的任务模型是否已在N个服务中被加载之前,还包括:判断N是否小于预设阈值;若小于预
设阈值,则启动新的服务。本实施方中当服务数目N小于预设阈值时,启动新的服务,从而避
免服务数目过少而导致服务上的任务模型被频繁替换的情况出现,进一步节约了系统处理
时间。
[0065] 上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围
内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法
和流程的核心设计都在该专利的保护范围内。
[0066] 本发明第四实施方式涉及一种内存资源控制装置,如图4所示,包括至少一个处理器401;以及,与至少一个处理器401通信连接的存储器402;其中,存储器402存储有可被至
少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能
够执行上述的内存资源控制方法。
[0067] 其中,存储器402和处理器401采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器401和存储器402的各种电路连接在一起。总线还可
以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是
本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供
接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在
传输介质上与各种其他装置通信的单元。经处理器401处理的数据通过天线在无线介质上
进行传输,进一步,天线还接收数据并将数据传送给处理器401。
[0068] 处理器401负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器402可以被用于存储处理器401在执行
操作时所使用的数据。
[0069] 本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述内存资源控制方法。
[0070] 即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使
得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方
法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only 
Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程
序代码的介质。
[0071] 本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。