G06/F9455 G06/F950
1.一种内存动态管理方法,其特征在于,应用于存储空间管理设备,所述方法包括:
响应内存申请请求,依据所述内存申请请求从多个内存链表中确定出目标内存链表,其中,每一个内存链表由具有相同预设规格的内存块组成;
当所述目标内存链表中不存在空闲状态的内存块时,对所述目标内存链表进行超额计数累加;
当所述目标内存链表的超额计数大于预设阈值时,从其它具有空闲空间的内存链表中确定出待组织内存块,并按照所述目标内存链表的预设规格将所述待组织内存块重新组织后合并至所述目标内存链表以满足所述内存申请请求。
2.如权利要求1所述的内存动态管理方法,其特征在于,所述从其它具有空闲空间的内存链表中确定出待组织内存块的步骤,包括:
从所述其它具有空闲空间的内存链表中确定待组织内存链表;
从所述待组织内存链表中截取待组织内存块,其中,所述待组织内存块的内存空间之和大于或等于所述目标内存链表的预设规格。
3.如权利要求2所述的内存动态管理方法,其特征在于,所述按照所述目标内存链表的预设规格将所述待组织内存块重新组织的步骤,包括:
当待组织内存链表的预设规格大于所述目标内存链表的预设规格时,将待组织内存块按照所述目标内存链表的预设规格进行拆分后重新组织;
当待组织内存链表的预设规格小于所述目标内存链表的预设规格时,将待组织内存块按照所述目标内存链表的预设规格进行合并后重新组织。
4.如权利要求3所述的内存动态管理方法,其特征在于,所述从所述其它具有空闲空间的内存链表中确定待组织内存链表的步骤,包括:
当具有空闲空间的内存链表的预设规格大于所述目标内存链表的预设规格时,将拆分次数最少的具有空闲空间的内存链表作为待组织内存链表;
当具有空闲空间的内存链表的预设规格小于所述目标内存链表的预设规格时,将合并次数最少的具有空闲空间的内存链表作为待组织内存链表。
5.如权利要求1所述的内存动态管理方法,其特征在于,所述存储空间管理设备预留备用内存,所述方法还包括:
当所述目标内存链表的超额计数小于或等于预设阈值时,从所述备用内存中申请满足内存申请请求的内存。
6.如权利要求1所述的内存动态管理方法,其特征在于,所述依据所述内存申请请求从多个内存链表中确定出目标内存链表的步骤,包括:
将多个内存链表中内存链表的预设规格大于待申请内存的内存空间大小,且与待申请内存的内存空间大小之差最小的内存链表确定为目标内存链表。
7.如权利要求1所述的内存动态管理方法,其特征在于,所述方法还包括:
当内存链表中存在空闲状态的内存块时,清除所述内存链表的超额计数。
8.一种内存动态管理装置,其特征在于,应用于存储空间管理设备,所述装置包括:
响应模块,用于响应内存申请请求,依据所述内存申请请求从多个内存链表中确定出目标内存链表,其中,每一个内存链表由具有相同预设规格的内存块组成;
更新模块,用于当所述目标内存链表中不存在空闲状态的内存块时,对所述目标内存链表进行超额计数累加;
合并模块,用于当所述目标内存链表的超额计数大于预设阈值时,从其它具有空闲空间的内存链表中确定出待组织内存块,并按照所述目标内存链表的预设规格将所述待组织内存块重新组织后合并至所述目标内存链表以满足所述内存申请请求。
9.如权利要求8所述的内存动态管理装置,其特征在于,所述合并模块具体用于:
从所述其它具有空闲空间的内存链表中确定待组织内存链表;
从所述待组织内存链表中截取待组织内存块,其中,所述待组织内存块的内存空间之和大于或等于所述目标内存链表的预设规格。
10.如权利要求8所述的内存动态管理装置,其特征在于,所述装置还包括:
清除模块,用于当内存链表中存在空闲状态的内存块时,清除所述内存链表的超额计数。
本发明涉及内存管理技术领域,具体而言,涉及一种内存动态管理方法及装置。
现有技术采取内存池技术有效地解决了内存碎片问题,但是由于内存池技术在初始化时就将内存池分配好,并没有考虑到具体业务中使用内存的业务模型。例如,当业务中都是申请大块内存的情况,小块内存池很少被使用,这就造成了小块内存池处于空闲状态,而大块内存池不够用,造成了资源的浪费,影响系统的整体性能。
本发明实施例的目的在于提供一种内存动态管理方法及装置,根据实际业务场景的需求动态地调整内存池中内存链表,以使内存资源得以充分利用,同时提高内存分配的效率。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种内存动态管理方法,应用于存储空间管理设备,所述方法包括:响应内存申请请求,依据内存申请请求从多个内存链表中确定出目标内存链表,其中,每一个内存链表由具有相同预设规格的内存块组成;当目标内存链表中不存在空闲状态的内存块时,对目标内存链表进行超额计数;当目标内存链表的超额计数大于预设阈值时,从其它具有空闲空间的内存链表中确定出待组织内存块,并按照目标内存链表的预设规格将待组织内存块重新组织后合并至目标内存链表以满足所述内存申请请求。
第二方面,本发明实施例还提供了一种内存动态管理装置,应用于存储空间管理设备,所述装置包括响应模块、更新模块和合并模块。其中,响应模块用于响应内存申请请求,依据内存申请请求从多个内存链表中确定出目标内存链表,其中,每一个内存链表由具有相同预设规格的内存块组成;更新模块用于当目标内存链表中不存在空闲状态的内存块时,对目标内存链表进行超额计数累加;合并模块用于当目标内存链表的超额计数大于预设阈值时,从其它具有空闲空间的内存链表中确定出待组织内存块,并按照目标内存链表的预设规格将待组织内存块重新组织后合并至目标内存链表以满足所述内存申请请求。
相对现有技术,本发明实施例提供的一种内存动态管理方法及装置,首先,接收应用程序发送的内存申请请求,依据该内存申请请求从多个内存链表中确定出目标内存链表,当该目标内存链表中不存在空闲状态的内存块时,对该目标内存链表进行超额计数累加,接下来,再判断目标内存链表的超额计数是否大于预设阈值,当目标内存链表的超额计数大于预设阈值时,从多个内存链表中确定出待组织内存块,并按照目标内存链表的预设规格将待组织内存块重新组织后合并至目标内存链表。与现有技术相比,本发明实施例根据实际业务场景的需求动态地调整内存池中内存链表,以使内存资源得以充分利用,同时提高内存分配的效率。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的存储空间管理设备的方框示意图。
图2示出了本发明实施例提供的内存动态管理方法流程图。
图3示出了本发明实施例提供的内存动态调整实例图。
图4示出了本发明实施例提供的内存动态管理装置的方框示意图。
图标:100-存储空间管理设备;101-存储器;102-通信接口;103-处理器;104-总线;200-内存动态管理装置;201-响应模块;202-更新模块;203-合并模块;204-申请模块;205-清除模块。
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参照图1,图1示出了本发明实施例提供的存储空间管理设备100的方框示意图。存储空间管理设备100可以是,但不限于,PC机、虚拟机、实体服务器、实体服务器上的虚拟机等能提供与所述服务器或者虚拟机有相同功能的实体或者虚拟的服务端。存储空间管理设备100的操作系统可以是,但不限于,Windows系统、Linux系统等。所述存储空间管理设备100包括存储器101、通信接口102、处理器103和总线104,所述存储器101、通信接口102和处理器103通过总线104连接,处理器103用于执行存储器101中存储的可执行模块,例如计算机程序。
其中,存储器101可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口102(可以是有线或者无线)实现该存储空间管理设备100与至少一个其他存储空间管理设备100、以及外部存储设备之间的通信连接。
总线104可以是ISA总线、PCI总线或EISA总线等。图1中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器101用于存储程序,例如图4所示的内存动态管理装置200。该内存动态管理装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器101中或固化在所述存储空间管理设备100的操作系统(operating system,OS)中的软件功能模块。所述处理器103在接收到执行指令后,执行所述程序以实现本发明上述实施例揭示的内存动态管理方法。
第一实施例
请参照图2,图2示出了本发明实施例提供的内存动态管理方法流程图。处理方法包括以下步骤:
步骤S101,响应内存申请请求,依据内存申请请求从多个内存链表中确定出目标内存链表,其中,每一个内存链表由具有相同预设规格的内存块组成。
在本发明实施例中,内存资源是预先申请的,申请到的内存资源会划分出其中的一部分作为备用内存,除备用内存外的其余部分会按照多个预设规格划分成多个内存块,相同预设规格的内存块被组织在同一个内存链表中。需要申请内存的应用程序在发起内存申请请求时,会指明待申请内存的长度,作为一种实施方式,依据内存申请请求从多个内存链表中确定出目标内存链表可以通过以下方式实现:
将多个内存链表中内存链表的预设规格大于待申请内存的长度,且与待申请内存的长度之差最小的内存链表确定为目标内存链表。
在本发明实施例中,每个内存链表的预设规格各不相同,为了合理利用内存资源,使得既满足待申请内存的长度要求,又不浪费内存资源,因此,从多个内存链表中选择目标内存链表时,会将预设规格大于待申请内存的长度、且与待申请内存的长度之差最小的内存链表确定为目标内存链表。例如,内存链表有3条:预设规格为4KB的内存链表1、预设规格为128KB的内存链表2及预设规格为256KB的内存链表3,即,内存链表1上的内存块的大小均是4KB,内存链表2上的内存块的大小均是128KB,链表3上的内存块的大小均是256KB,待申请内存的长度为100KB,则预设规格比待申请内存的长度大的内存链表为内存链表2和内存链表3,内存链表2的规格128KB与待申请内存的长度的差为128KB-100KB=28KB,内存链表3的规格256KB与申请内存的长度的差为256KB-100KB=156KB,因此,内存链表2为目标内存链表。
步骤S102,当目标内存链表中不存在空闲状态的内存块时,对目标内存链表进行超额计数累加。
在本发明实施例中,每个内存块有两种状态:使用状态和空闲状态,当内存块被申请时,其状态被设置为使用状态,当内存块被释放时,其状态被设置为空闲状态。每个内存链表有一个超额计数,在内存链表创建时,其超额计数被设置为0,超额计数是表征在对应的内存链表中不存在空闲状态的内存块的情况下,向对应内存链表申请内存的次数,例如,当前预设规格为4KB的内存链表中一共有3个内存块:内存块1、内存块2及内存块3,其中,内存块1和内存块2的状态均为使用状态,内存块3的状态为空闲状态,当前该内存链表的超额计数为0,在系统时间10:00:00时,收到一个待申请内存长度为3KB的内存申请请求,将内存块3分配出去,并将内存块3的状态设置为使用状态,在系统时间10:00:01时,收到一个待申请内存长度为2KB的内存申请请求,此时,由于内存链表中不存在空闲状态的内存块,因此,将该内存链表的超额计数加1,此时该内存链表的超额计数为1。
步骤S103,当目标内存链表的超额计数大于预设阈值时,从其它具有空闲空间的内存链表中确定出待组织内存块,并按照目标内存链表的预设规格将待组织内存块重新组织后合并至目标内存链表以满足内存申请请求。
在本发明实施例中,预设阈值可以依据具体应用场景对内存的需求进行不同的设置,其作用在于既不会使内存的动态调整过于频繁,又可以使申请内存的需求得以及时满足。
作为一种实施方式,确定待组织内存块的方法可以是:
首先,从其它具有空闲空间的内存链表中确定待组织内存链表。
在本发明实施例中,待组织内存块所在的内存链表为待组织内存链表,从其它具有空闲空间的内存链表中确定待组织内存链表的方法可以是:从其它具有空闲空间的内存链表中选出一个或多个内存链表作为待组织内存链表,为了实现简单,从其它具有空闲空间的内存链表中确定待组织内存链表的方法还可以是:当具有空闲空间的内存链表的预设规格大于目标内存链表的预设规格时,将拆分次数最少的具有空闲空间的内存链表作为待组织内存链表;当具有空闲空间的内存链表的预设规格小于目标内存链表的预设规格时,将合并次数最少的具有空闲空间的内存链表作为待组织内存链表,这样即可以保证充分利用内存资源,又便于待组织内存块的组织,例如,内存链表有3条:内存链表1,其预设规格为4KB,当前的超额计数为0即内存链表1具有空闲空间;内存链表2,其预设规格为128KB,当前的超额计数为5;内存链表3,其预设规格为256KB,当前的超额计数为0即内存链表3具有空闲空间,当目标内存链表为内存链表2时,且其超额计数超出预设阈值,具有空闲空间的链表为内存链表1和内存链表3,内存链表1的预设规格小于目标内存链表的预设规格,需要将内存链表1中32个内存块进行31次合并才能得到1个128KB的内存块,即内存链表1得到1个128KB的内存块的合并次数为31,内存链表3的预设规格大于目标内存链表的预设规格,需要将内存链表3中的一个内存块进行1次拆分得到2个128KB的内存块,即内存链表3得到2个128KB的内存块的拆分次数为1,由于内存链表3的拆分次数小于内存链表2的合并次数,因此,则将内存链表3作为待组织内存链表。
其次,从待组织内存链表中截取待组织内存块,其中,所述待组织内存块的内存空间之和大于或等于目标内存链表的预设规格。
在本发明实施例中,截取待组织内存块时,截取的位置可以从第一个空闲状态内存块开始,从前往后依次截取;也可以从最后一个空闲状态内存块开始,从后往前一次截取;还可以从预先指定的空闲状态的内存块开始,从前往后依次截取。截取待组织内存块时既需要满足待组织内存块的内存空间之和大于或等于目标内存链表的预设规格,又需要满足待组织内存链表中除了截取的待组织内存块之外,还预留有空闲状态的内存块,以便于满足后续内存申请的需要。
在本发明实施例中,当待组织内存链表为多条时,待组织内存块来自于多个待组织内存链表,当待组织内存链表为一条时,待组织内存块来自于一个待组织内存链表。当待组织内存链表为多条时,作为一种实施方式,计算待组织内存块的内存空间之和方法可以是:首先,计算来自于同一个待组织内存链表中待组织内存块的个数与对应的待组织内存链表的预设规格的乘积得到对应的待组织内存链表的待组织内存块的内存空间之和;其次,将所有待组织内存链表的待组织内存块的内存空间之和进行统计,得到所有待组织内存块的内存空间之和,例如,待组织内存链表有2条:内存链表1,其预设规格为4KB;内存链表2,其预设规格为128KB,从内存链表1中截取32个待组织内存块,从内存链表2中截取1个待组织内存块,待组织内存块的内存空间之和为:4KB×32+128KB×1=256KB。当待组织内存链表为一条时,待组织内存块的内存空间之和等于待组织内存链表中待组织内存块的个数与该待组织内存链表的预设规格的乘积。
在本发明实施例中,截取待组织内存块之后,首先对待组织内存块按照目标内存链表的预设规格进行重新组织,然后将重新组织后的待组织内存块合并至目标内存链表中,作为一种实施方式,按照目标内存链表的预设规格将待组织内存块重新组织的方法可以是:
当待组织内存链表的预设规格大于目标内存链表的预设规格时,将待组织内存块按照目标内存链表的预设规格进行拆分后重新组织。
在本发明实施例中,内存链表在创建时,各内存链表的预设规格之间均满足倍数关系,因此,当其中任意一个内存链表为目标内存链表需要动态调整时,除该目标内存链表之外的其他内存链表只要满足待组织内存链表的条件,均可以提供待组织内存块,该待组织内存块可以重新组织被合并至该目标内存链表中。
请参照图3,图3示出了本发明实施例提供的内存动态调整实例图。图3中,目标内存链表为内存链表1,其预设规格为128KB,包括6个状态为使用状态的内存块,分别为1号内存块、2号内存块、3号内存块、4号内存块、5号内存块及6号内存块,待组织内存链表为内存链表2,其预设规格为256KB,包括1个状态为使用状态的内存块:1号内存块;2个状态为空闲状态的内存块:2号内存块和3号内存块。动态调整内存块的过程是:首先从待组织内存链表中取出3号内存块,然后按照目标内存链表的预设规格128KB将3号内存块切分成2个128KB的内存块,最后将切分后的2额128KB的内存块合并至内存链表1中,分别为7号内存块和8号内存块。
当待组织内存链表的预设规格小于目标内存链表的预设规格时,将待组织内存块按照目标内存链表的预设规格进行合并后重新组织。
在本发明实施例中,合并内存块与拆分内存块的方法类似,此处不再赘述。
在本发明实施例中,当目标内存链表中没有空闲状态的内存块且超额计数尚未达到预设阈值时,为了使得内存申请请求得以及时满足,因此,在创建内存链表时,预先预留了一部分内存资源作为备用内存,防止内存链表分配超时导致内存使用程序发生异常,因此,本发明实施例还包括步骤S104。
步骤S104,当目标内存链表的超额计数小于或等于预设阈值时,从备用内存中申请满足内存申请请求的内存。
在本发明实施例中,内存申请请求包括待申请内存的内存空间大小,当目标内存链表的超额计数小于或等于预设阈值时,从备用内存中申请满足待申请内存的内存空间大小的内存,以缓解突发性的内存需求带来的内存资源压力。
在本发明实施例中,当内存链表中状态为使用状态的内存块使用完毕后,会将该内存块进行释放,释放的内存块的状态由使用状态转变为空闲状态,当内存链表中存在空闲状态的内存块时,清除内存链表的超额计数,因此,本发明实施例还包括步骤S105。
步骤S105,当内存链表中存在空闲状态的内存块时,清除内存链表的超额计数。
在本发明实施例中,清除内存链表的超额计数可以是将内存链表的超额计数置为0。
在本发明实施例中,根据实际业务场景的需求动态地调整内存池中内存链表,与现有技术相比,具有以下有益效果:
第一,根据实际业务场景的需求,动态地调整内存池中的内存链表,可以自适应各种业务场景的需求,提高了场景的适应性。
第二,动态调整内存链表时,选择超额计数最小即内存资源压力最小、且最便于重新组织的内存链表中的内存块,即保证了内存资源的充分利用,又将重组组织内存块对系统的影响降到最低。
第三,引入超额计数,可以对应用程序使用内存的特点进行统计,以便于根据实际的内存使用特点对内存链表进行动态调整。
第四,预先预留出备用内存,采用内存链表和备用内存双层内存分配机制,一方面,保证内存分配的效率,防止内存链表分配内存超时导致异常,另一方面,优先从内存链表中分配机制,减少了备用内存出现内存碎片。
第二实施例
请参照图4,图4示出了本发明实施例提供的内存动态管理装置200的方框示意图。内存动态管理装置200应用于存储空间管理设备100,其包括响应模块201;更新模块202;合并模块203;申请模块204;清除模块205。
响应模块201,用于响应内存申请请求,依据内存申请请求从多个内存链表中确定出目标内存链表,其中,每一个内存链表由具有相同预设规格的内存块组成。
在本发明实施例中,响应模块201用于执行步骤S101。
更新模块202,用于当目标内存链表中不存在空闲状态的内存块时,对目标内存链表进行超额计数累加。
在本发明实施例中,更新模块202用于执行步骤S102。
合并模块203,用于当目标内存链表的超额计数大于预设阈值时,从其它具有空闲空间的内存链表中确定出待组织内存块,并按照目标内存链表的预设规格将待组织内存块重新组织后合并至目标内存链表以满足内存申请请求。
在本发明实施例中,合并模块203用于执行步骤S103。
在本发明实施例中,合并模块203具体用于:
从其它具有空闲空间的内存链表中确定待组织内存链表;
当具有空闲空间的内存链表的预设规格大于所述目标内存链表的预设规格时,将拆分次数最少的具有空闲空间的内存链表作为待组织内存链表;
当具有空闲空间的内存链表的预设规格小于所述目标内存链表的预设规格时,将合并次数最少的具有空闲空间的内存链表作为待组织内存链表;
从待组织内存链表中截取待组织内存块,其中,所述待组织内存块的内存空间之和大于或等于目标内存链表的预设规格;
当待组织内存链表的预设规格大于目标内存链表的预设规格时,将待组织内存块按照目标内存链表的预设规格进行拆分后重新组织;
当待组织内存链表的预设规格小于目标内存链表的预设规格时,将待组织内存块按照目标内存链表的预设规格进行合并后重新组织。
申请模块204,用于当目标内存链表的超额计数小于或等于预设阈值时,从备用内存中申请满足内存申请请求的内存。
在本发明实施例中,申请模块204用于执行步骤S104。
清除模块205,用于当内存链表中存在空闲状态的内存块时,清除内存链表的超额计数。
在本发明实施例中,清除模块205用于执行步骤S105。
综上所述,本发明提供的一种内存动态管理方法及装置,所述方法应用于存储空间管理设备,所述方法包括:响应内存申请请求,依据内存申请请求从多个内存链表中确定出目标内存链表,其中,每一个内存链表由具有相同预设规格的内存块组成;当目标内存链表中不存在空闲状态的内存块时,对目标内存链表进行超额计数累加;当目标内存链表的超额计数大于预设阈值时,从其它具有空闲空间的内存链表中确定出待组织内存块,并按照目标内存链表的预设规格将待组织内存块重新组织后合并至目标内存链表以满足所述内存申请请求。与现有技术相比,本发明实施例根据实际业务场景的需求动态地调整内存池中内存链表,以使内存资源得以充分利用,同时提高内存分配的效率。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文发布于:2023-04-14 05:46:01,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/3/86451.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |