任务并发处理方法、装置及计算设备与流程

文档序号:13512821阅读:153来源:国知局
本说明书涉及计算机
技术领域
:,尤其涉及任务并发处理方法、装置及计算设备。
背景技术
::数据块是数据库管理系统读写数据的最小单位或者最基本的单位。当一个任务需要更新数据块中的数据时,该任务需要占用数据块中的事务槽,并将当前任务的相关信息写到事务槽里。在并发执行多个任务的场景下,数据块可能面临多个并发任务的处理,数据块提供有多个事务槽,针对同一数据块的多个并发任务将会占据该数据块的事务槽,之后按照占据的先后顺序执行该多个并发任务。若数据块中的多个事务槽都被占用,其他需更新数据的任务将被拒绝处理。技术实现要素:为克服相关技术中存在的问题,本说明书提供了任务并发处理方法、装置及计算设备。一种任务并发处理方法,所述方法包括:确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块;将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同;将同一任务集合中的任务进行并发处理。可选的,所述将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同,包括:确定所述任务对应的数据块的数据块标识,利用所述数据块标识将所述多个任务分配至一个或多个任务集合中,其中,对应有相同数据块标识的任务分配至不同的任务集合中。可选的,所述确定所述任务对应的数据块的数据块标识,包括:读取所述数据块中行目录区存储的行地址,以行地址中的数据对象编号、数据文件编号和数据块编号确定所述数据块标识。可选的,所述待并发处理的多个任务的处理状态记录在一状态数据表中;所述方法还包括:在将同一任务集合中的任务进行并发处理后,获取所述任务的处理状态;删除所述状态数据表中所记录的所述任务在进行并发处理前的处理状态;在所述状态数据表中新增所述任务在进行并发处理后的处理状态。可选的,所述数据块包括oracle数据库管理系统中的数据块。一种任务并发处理方法,所述方法包括:捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;将所述一个或多个任务集合提交至线程池中,将同一任务集合中的子任务进行并发处理。一种任务并发处理装置,所述方法包括:任务确定模块,用于:确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块;任务分配模块,用于:将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同;并发处理模块,用于:将同一任务集合中的任务进行并发处理。可选的,所述任务分配模块,还用于:确定所述任务对应的数据块的数据块标识,利用所述数据块标识将所述多个任务分配至一个或多个任务集合中,其中,对应有相同数据块标识的任务分配至不同的任务集合中。可选的,所述任务分配模块,还用于:读取所述数据块中行目录区存储的行地址,以行地址中的数据对象编号、数据文件编号和数据块编号确定所述数据块标识。可选的,所述待并发处理的多个任务的处理状态记录在一状态数据表中;所述装置还包括状态数据表更新模块,用于:在将同一任务集合中的任务进行并发处理后,获取所述任务的处理状态;删除所述状态数据表中所记录的所述任务在进行并发处理前的处理状态;在所述状态数据表中新增所述任务在进行并发处理后的处理状态。可选的,所述数据块包括oracle数据库管理系统中的数据块。一种任务并发处理装置,所述装置包括:任务捞取模块,用于:捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;任务拆分模块,用于:将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;任务分配模块,用于:将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;并发处理模块,用于:将所述一个或多个任务集合提交至线程池中,以将同一任务集合中的子任务进行并发处理。一种计算设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块;将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同;将同一任务集合中的任务进行并发处理。一种计算设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;将所述一个或多个任务集合提交至线程池中,将同一任务集合中的子任务进行并发处理。本说明书的实施例提供的技术方案可以包括以下有益效果:本说明书实施例中,可以将任务以数据块为维度进行区分,将对应不同数据块的任务分配至任务集合中,使同一任务集合中的任务对应不同的数据块,在并发处理时,将同一任务集合中任务进行并发处理,从而在一次并发处理过程中,各个任务都是针对不同的数据块进行处理,因此可以防止事务槽被占满而导致的行锁冲突,减少任务处理失败的情况,提高任务处理效率。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。图1是本说明书根据一示例性实施例示出的一种数据块的示意图。图2a是本说明书根据一示例性实施例示出的一种任务并发处理方法的流程图。图2b是本说明书根据一示例性实施例示出的任务并发处理方法的应用场景图。图3a是本说明书根据一示例性实施例示出的一种任务并发处理方法的流程图。图3b是本说明书根据一示例性实施例示出的另一种任务并发处理方法的流程图。图4是本说明书任务并发处理装置所在计算设备的一种硬件结构图。图5是本说明书根据一示例性实施例示出的一种任务并发处理装置的框图。图6是本说明书根据一示例性实施例示出的一种任务并发处理装置的框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。首先对本说明书实施例中的所涉及的一些术语进行解释。数据块(datablocks),是数据库管理系统(例如,oracle数据库)最小的存储单位,数据存放在“块”中。一个数据块占用一定的磁盘空间。数据块管理系统每次请求数据的时候,都是以数据块为单位。也就是说,数据块管理系统每次请求的数据是块的整数倍。如果数据块管理系统请求的数据量小于一个数据块的数据量,数据块管理系统仍会读取整个块。也即是,“数据块”是数据块管理系统读写数据的最小单位或者最基本的单位。数据块中存放数据表的数据和索引的数据,无论存放哪种类型的数据,数据块的格式(datablockformat)都是相同的,如图1所示,是数据块的一种示意图,数据块包括块头(header/commonandvariable),表目录区(tabledirectory),行目录区(rowdirectory),可用空间区(freespace),行数据区(rowdata)。块头(header/commonandvariable):存放块的基本信息,包括标准内容和可变内容,例如:数据块的物理地址,数据块所属的段的类型(是数据段还是索引段)。表目录区(tabledirectory):存放数据表的信息,即:如果数据表中数据被存放在这个数据块中,则该表的相关信息将被存放在“表目录”中。行目录区(rowdirectory):如果数据块中有行数据存在,则这些行的信息将被记录在行目录中,这些信息包括行的地址等。行数据区(rowdata):是真正存放表数据和索引数据的地方,这部分空间是已被数据行占用的空间。可用空间区(freespace):可用空间是一个数据块中未使用的区域,这片区域用于新行的插入和已经存在的行的更新。其中,数据块头中可以包括一个或多个itl(interestedtransactionlist)事务槽,itl是数据块内部的一个组成部分,用来记录该数据块所有发生的事务,一个itl可以对应一条任务(也可称为事务)记录,如果这个事务已经提交,那么这个itl的位置就可以被反复使用,如果一个任务一直没有提交,那么这个事务将一直占用一个itl槽位。如果数据块内的事务槽都被占用了,数据块还可以使用数据块内的freespace构建itl供任务使用,如果freespace也占用完了,后续的任务请求就会等待。也就是说,假设有一个待处理任务需要涉及对数据块的处理,该待处理事务需要占据数据块的一个itl,只有在该待处理任务完成后,该itl事务槽才会被释放,才可以被其他待处理任务占据。通常,需要占用事务槽的任务包括对数据块中数据的更新,删除数据和新增数据可以不占用事务槽。行锁:oracle等数据库的锁机制是一种轻量级的锁定机制,该机制不是通过构建锁列表来进行数据的锁定管理,而是直接将锁作为数据块的属性,存储在数据块的块头。每当一个事务要更新数据块里的数据时,必须先得到一个itl槽,然后将当前事务id,事务所用的数据块地址、scn号、当前事务是否提交等信息写到itl槽里。itl槽的事务提交或回滚后,才可以被其他事务覆盖,当新事务发现不够itl槽时,会动态创建一个新的itl槽。在并发执行多个任务的场景下,数据块可能面临多个并发任务的处理,数据块提供有多个事务槽,针对同一数据块的多个并发任务将会占据该数据块的事务槽,之后按照占据的先后顺序执行该多个并发任务。若数据块中的多个事务槽都被占用,其他需更新数据、需占据事务槽的任务将会被拒绝处理。另一方面,由于占据事务槽的任务在处理完成后该事务槽才被释放,然后其他新处理任务可以占据该事务槽,当任务并发量巨大时,频繁对数据块加行锁、释放事务槽、占据事务槽等操作,将非常容易导致itl槽满而引起行锁冲突。以处理一包含有多个用户信息的数据表任务为例进行说明,该数据表中的用户信息达到千万级别,某个任务涉及对该表中部分用户的某个属性的修改。由于该修改任务涉及的数据量巨大,可以采用将该任务拆分为多个子任务的方式进行并发处理,以提高数据处理的效率。并发处理的过程可以是:根据并发处理维度(可以用户账号,业务单据号等等)拆分为不同的子任务,这些拆分好的子任务将会导入到线程池中,处理的时候,从线程池中捞取多个子任务并发处理。针对线程池中的任务,还可以生成一任务数据表,该任务数据表记录各个待处理子任务的处理状态。每次并发处理时,可以先以悲观锁方式加锁子任务数据表,然后判断子任务处理状态,如果是未处理,则处理该任务,处理完成以后,更新子任务状态为已完成。当并发强度较大时,多个拆分好的子任务数据针对同一数据块进行处理,并发过大可能导致itl槽占用增多,且itl槽来不及释放,最后引起行锁冲突。实际应用中,可以采用调整itl参数来增加数据块中的事务槽,扩大事务槽容量,同时优化应用,减少事务槽占用时间的方式。而本说明书实施例中,可以将任务以数据块为维度进行区分,将对应不同数据块的任务分配至任务集合中,使同一任务集合中的任务对应不同的数据块,在并发处理时,将同一任务集合中任务进行并发处理,从而在一次并发处理过程中,各个任务都是针对不同的数据块进行处理,因此可以防止itl槽被占满而导致的行锁冲突,减少任务处理失败的情况,提高任务处理效率。如图2a所示,是本说明书根据一示例性实施例示出的任务并发处理方法的流程图,所述方法包括:在步骤202中,确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块。在步骤204中,将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同。在步骤206中,将同一任务集合中的任务进行并发处理。如图2b所示,是本说明书根据一示例性实施例示出的任务并发处理方法的应用场景图,图2b中包括多个任务提供方、包括多个计算设备组成的计算集群以及数据库,本说明书实施例的方案可应用于需要进行任务并发处理的计算集群中。任务提供方向计算集群提交针对数据库中某些数据表进行操作的处理任务,计算集群根据处理任务的处理对象,从数据库中确定处理任务所针对的数据表中数据。在一些例子中,计算设备可能面临海量的处理任务,某些任务可能需要操作一个或多个数据表中巨量的数据,因此计算集群可能将多个处理任务并发执行,也有可能将某些处理量巨大的任务分解成多个子任务,将子任务并发执行。可选择的,计算集群可以配置有专用于获取任务的计算设备、配置管理待并发处理任务的线程池、配置专用于处理任务的计算设备等等,需要并发处理的任务放置在线程池中,计算集群可以根据实际的处理能力,从线程池中批次捞取多个任务进行并发处理。本说明书实施例中对于待进行并发处理的任务,可以获取到任务的相关信息(例如任务标识、产生该任务的对象、任务产生时间或任务的处理对象等等)。由前述描述可知,任务处理的对象涉及数据库中数据,而数据块是数据块管理系统读写数据的基本单位,本实施例可以根据任务的相关信息,确定每个任务所对应要处理的数据块,之后以数据块为维度将任务分配至一个或多个任务集合中,其中,同一个任务集合中任务对应不同的数据块。在并发处理时,可以将同一任务集合中的任务进行并发处理,由于每个并发处理时每个任务对应不同的数据块,因此能防止数据块中itl事务槽被沾满而导致的行锁冲突,防止任务处理失败。其中,所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同,包括:确定所述任务对应的数据块的数据块标识,利用所述数据块标识将所述多个任务分配至一个或多个任务集合中,其中,对应有相同数据块标识的任务分配至不同的任务集合中。本实施例中,可以获取数据块标识,数据块标识的具体获取方式可以根据实际场景中所使用的数据库管理系统而灵活确定。以oralce数据库为例,可以是读取所述数据块中行目录区存储的行地址,以行地址中的数据对象编号、数据文件编号和数据块编号确定所述数据块标识。在oralce数据库中,数据块中行目录区中记录有rowid,rowid是oralce数据库中行的全局唯一地址,对于数据中的每一行,rowid伪列返回行的地址。rowid值主要包括该行数据的对象编号、该行所在的数据文件中的数据块、该行中数据块的位置、数据行所在的数据文件。rowid中通常包括18位,以rowid:oooooofffbbbbbbrrr为例,其中:oooooo:表示数据对象编号(占据6位)fff:表示相关数据文件编号(占据3位)bbbbbb:表示数据块编号(占据6位)rrr:表示数据块中行编号(占据3位)因此,从rowid的格式可以看出每个rowid的前15位可用于区分不同的数据块,因此可以以行地址中的数据对象编号、数据文件编号和数据块编号确定所述数据块标识,从而能精确地对数据块进行区分。实际应用中,计算集群可以配置一状态数据表,用于记录待并发处理的多个任务的处理状态,处理状态包括有未处理、处理完成或处理失败等等。计算集群可以根据状态数据表中记录的各任务的处理状态,若有未处理的任务,则捞取一部分任务出来进行并发处理,在处理过程中,状态数据表将以悲观锁的方式进行加锁,待本次并发处理结束后,根据各任务是否成功完成的处理状态,在状态数据表中对任务的处理状态进行更新。可以理解,在对状态数据表在任务的处理状态进行更新时,也将涉及对状态数据表的处理操作,由于涉及了对数据表中的数据更新,由前述分析可知,对数据块进行更新时需要占据数据块的itl事务槽,本实施例为了减少可能发生的行锁冲突,可以在将同一任务集合中的任务进行并发处理后,获取所述任务的处理状态,删除所述状态数据表中所记录的所述任务在进行并发处理前的处理状态,在所述状态数据表中新增所述任务在进行并发处理后的处理状态。由于在数据表中新增一条数据的方式,不需要占据数据块中itl事务槽,而新增数据将插入至其他的数据块,原有记录任务处理状态的数据块的itl事务槽则可以被清空,以供其他任务使用。接下来结合图3a和图3b对本说明书实施例再次进行说明,图3a和图3b都是本说明书根据一示例性实施例示出的另一种任务并发处理方法。实际应用中,可能存在如下场景:服务方维护了千万级甚至亿级的用户数据,服务方可能在一些时间段需要对部分或全部用户的一些数据进行更新。此种场景中,用户数据存储于一些数据表中,对于本次更新任务,由于涉及的数据量巨大,服务方可以将本次任务拆分为多个子任务,以实现快速地数据更新。其中,服务方可以配置有如图2b所示的计算集群,并应用图3a所示方法,包括:在步骤302中,捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;在步骤304中,将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;在步骤306中,将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;在步骤308中,将所述一个或多个任务集合提交至线程池中,以将同一任务集合中的子任务进行并发处理。本实施例中,对于数据量巨大的处理任务,可以根据实际设备的处理性能、数据量大小或相关应用场景的需要等等因素而将处理任务拆分为多个子任务。举例来说,可以将涉及一万用户的处理任务拆分为一百个子任务,每个子任务涉及一百个用户的数据更新,在拆分后,相对应地可以确定每个子任务所需要处理的数据表中的数据块。对于拆分好的所有子任务,可以遍历各个子任务,获取每个子任务所对应数据块的rowid。以每个rowid的前15位(行地址中的数据对象编号、数据文件编号和数据块编号)作为数据块标识,以数据块为维度对拆分好的子任务进行分组,以将子任务分配至多个任务集合中,为了防止行锁冲突,同一任务集合中的子任务对应的数据块不同,具体的任务集合的个数可以根据实际需要和设备处理能力等等而确定。最后,将任务集合派发到线程池中,由计算集群从线程池中捞取任务集合,对任务集中的子任务进行并发处理。实际应用中,计算集群可以配置一状态数据表,用于记录待并发处理的多个子任务的处理状态,处理状态包括有未处理、处理完成或处理失败等等。在并发处理每个子任务后,若子任务成功处理或处理失败,需要在状态数据表中更新子任务的状态为完成或处理失败。假设在状态数据表中进行数据更新,则更新过程涉及对数据块的itl事务槽的占据。而本实施例可以是先删除状态数据表中该子任务的状态数据,之后再新增一条针对该子任务的状态数据,由于删除与新增都不涉及对数据块的itl事务槽的占据,从而可以减少行锁冲突。由上述实施例可见,本实施例中,并发处理的子任务按照数据块的维度进行分组,保证同一时间并发处理的业务不会针对同一数据块,从而降低itl事务槽占用。另一方面,子任务处理完成以后,没有采用直接更新状态数据表的方式,而是采用删除再新增业务单据的方式,新增数据将写入至新的数据块,而原有数据块的itl槽将空出来供其他业务使用,从而有效地减少了行锁冲突。与前述任务并发处理方法的实施例相对应,本说明书还提供了任务并发处理装置及其所应用的计算设备的实施例。本说明书任务并发处理装置的实施例可以应用在计算设备上,例如服务器或终端设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在文件处理的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本说明书任务并发处理装置所在计算设备的一种硬件结构图,除了图4所示的处理器410、内存430、网络接口420、以及非易失性存储器440之外,实施例中装置431所在的计算设备,通常根据该计算设备的实际功能,还可以包括其他硬件,对此不再赘述。如图5所示,图5是本说明书根据一示例性实施例示出的一种任务并发处理装置的框图,所述装置包括:任务确定模块51,用于:确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块;任务分配模块52,用于:将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同;并发处理模块53,用于:将同一任务集合中的任务进行并发处理。可选的,所述任务分配模块,还用于:确定所述任务对应的数据块的数据块标识,利用所述数据块标识将所述多个任务分配至一个或多个任务集合中,其中,对应有相同数据块标识的任务分配至不同的任务集合中。可选的,所述任务分配模块,还用于:读取所述数据块中行目录区存储的行地址,以行地址中的数据对象编号、数据文件编号和数据块编号确定所述数据块标识。可选的,所述待并发处理的多个任务的处理状态记录在一状态数据表中;所述装置还包括状态数据表更新模块,用于:在将同一任务集合中的任务进行并发处理后,获取所述任务的处理状态;删除所述状态数据表中所记录的所述任务在进行并发处理前的处理状态;在所述状态数据表中新增所述任务在进行并发处理后的处理状态。可选的,所述数据块为oracle数据库管理系统的数据块。如图6所示,图6是本说明书根据一示例性实施例示出的另一种任务并发处理装置的框图,所述装置包括:任务捞取模块61,用于:捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;任务拆分模块62,用于:将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;任务分配模块63,用于:将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;并发处理模块64,用于:将所述一个或多个任务集合提交至线程池中,以将同一任务集合中的子任务进行并发处理。相应的,本说明书还提供一种计算设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块;将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同;将同一任务集合中的任务进行并发处理。相应的,本说明书还提供一种计算设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;将所述一个或多个任务集合提交至线程池中,将同一任务集合中的子任务进行并发处理。上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本
技术领域
:中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1