索引结构操作方法、装置和系统与流程

文档序号:17000026发布日期:2019-03-02 01:42阅读:145来源:国知局
索引结构操作方法、装置和系统与流程

本发明涉及互联网领域,尤其涉及一种索引结构操作方法、装置和系统。



背景技术:

在搜索系统中,需要命中读取某些分类或关键词的文章(关键词对应文章列表简称倒排),并获取这些文章的属性进行个性化排序(从文档id获取文档属性内容简称正排)。

由于每个关键词对应的文档数量一直处于动态变化,因此倒排表和正排表需要实时更新。在搜索系统中,通常有专门的索引服务器用于索引列表的建立和维护。但业务服务器在执行相应的搜索相关业务时,如果直接从索引服务器远程进行索引读取,会导致搜索延时较高,不利于提供高质量的检索服务。在需要进行多次倒排和正排索引的信息流推荐系统中,远程索引读取所引起的延迟问题更为严重。

由此,需要一种能够解决上述延迟问题的索引读取方案。



技术实现要素:

为了解决如上至少一个问题,本发明提出了一种动态内存索引结构,其通过远程动态更新本机内存索引来实现索引读取的本地化,从而很好地解决了索引更新和索引读取的延时问题。

根据本发明的一个方面,提出了一种索引结构操作方法,包括:将持续获取的索引结构的更新写入内存;以及复制写入的索引结构,以确保针对所述索引结构的读取和写入针对两份当前有效的索引结构各自同时进行。由此,通过动态更新和读写分开,实现了本地的高效索引。

索引结构可以包括倒排表和正排表,倒排表由包括关键词id和指向文档指针向量的倒排指针的倒排项构成,正排表由包括文档id和指向文档内容的正排指针的正排项构成。优选地,倒排指针和正排指针是智能指针。由此,能够实现对索引内容的可靠获取。

优选地,针对索引结构的复制可以仅包括对id和指针的复制,换句话说,两份当前有效的索引结构可以共用文档属性内容,由此避免用于实现读写分开的双缓存机制导致内存使用的大幅增加。

优选地,将持续获取的索引结构的更新写入内存可以包括:将所述两份当前有效的索引结构中的一份当前有效的索引结构分成多个并行写入区域;以及针对多个并行写入区域,执行并行的索引结构更新写入操作。由此,通过分区实现互不干扰的并行写入,提升索引结构更新效率。

优选地,本发明的索引结构操作还可以包括针对所述两份当前有效的索引结构中的另一份当前有效的索引结构进行高并发的读取操作。

具体地,针对所述两份当前有效的索引结构中的另一份当前有效的索引结构进行高并发的读取操作可以包括如下至少一项:基于输入的关键词id,返回所述倒排表中与所述关键词id相对应的倒排项中的指向文档指针向量的倒排指针;基于输入的文档id,返回所述正排表中与所述文档id相对应的正排项中指向文档内容的正排指针;以及基于输入的文档id集合,返回指向包括多个对应正排指针的文档向量的指针。

优选地,本发明的索引结构操作还可以包括针对索引结构本身的操作,例如获取倒排表和正排表以构造初始索引结构。而将持续获取的索引结构的更新写入内存可以包括:收集预定时间段内被读取的倒排项和正排项;获取针对所述倒排项和正排项的更新以写入内存,例如,在所述倒排项和正排项到达写入可用时间的情况下获取针对所述倒排项和正排项的更新以写入内存。优选地,本发明的索引结构操作还可以包括删除所述索引结构中超过预定删除时间的项目。

根据本发明的另一个方面,提出了一种索引结构操作系统,包括:索引服务器,所述索引服务器维护、持续更新并下发用于进行检索的索引结构;以及多个业务服务器,每个所述业务服务器用于:将持续获取的索引结构的更新写入内存;以及复制写入的索引结构,以确保针对所述索引结构的读取和写入针对两份当前有效的索引结构各自同时进行。

由此,通过一个索引服务器维护并持续下发索引结构更新,实现整个系统的高效索引。

优选地,业务服务器的索引结构更新可以包括将所述两份当前有效的索引结构中的一份当前有效的索引结构分成多个并行写入区域;以及针对多个并行写入区域,执行并行的索引结构更新写入操作。

优选地,业务服务器可以用于:针对所述两份当前有效的索引结构中的另一份当前有效的索引结构进行高并发的读取操作,所述读取操作包括如下至少一项:基于输入的关键词id,返回所述倒排表中与所述关键词id相对应的倒排项中的指向文档指针向量的倒排指针;基于输入的文档id,返回所述正排表中与所述文档id相对应的正排项中指向文档内容的正排指针;以及基于输入的文档id集合,返回指向包括多个对应正排指针的文档向量的指针。

优选地,业务服务器还用于如下的至少一项:从所述索引服务器拉取倒排表和正排表以构造初始索引结构;收集预定时间段内被读取的倒排项和正排项,并获取针对所述倒排项和正排项的更新以写入内存;以及删除所述索引结构中超过预定删除时间的项目。

该索引结构操作系统可以是推荐系统,或作为推荐系统的一部分,并且业务服务器可以基于索引结构读取的搜索结果生成推荐结果。

根据本发明的一个方面,提出了一种索引结构操作装置,包括:写入单元,用于将持续获取的索引结构的更新写入内存;以及复制单元,用于复制写入的索引结构,以确保针对所述索引结构的读取和写入针对两份当前有效的索引结构各自同时进行,其中,所述索引结构包括倒排表和正排表,所述倒排表由包括关键词id和指向文档指针向量的倒排指针的倒排项构成,所述正排表由包括文档id和指向文档内容的正排指针的正排项构成。

优选地,写入单元可以进一步用于:将所述两份当前有效的索引结构中的一份当前有效的索引结构分成多个并行写入区域;以及针对多个并行写入区域,执行并行的索引结构更新写入操作。

优选地,索引结构操作装置还可以包括:读取单元,用于针对所述两份当前有效的索引结构中的另一份当前有效的索引结构进行高并发的读取操作。读取操作可以包括如下至少一项:基于输入的关键词id,返回所述倒排表中与所述关键词id相对应的倒排项中的指向文档指针向量的倒排指针;基于输入的文档id,返回所述正排表中与所述文档id相对应的正排项中指向文档内容的正排指针;以及基于输入的文档id集合,返回指向包括多个对应正排指针的文档向量的指针。

优选地,索引结构操作装置还可以包括如下的至少一项:构造单元,用于从所述索引服务器拉取倒排表和正排表以构造初始索引结构;更新单元,用于收集预定时间段内被读取的倒排项和正排项,并获取针对所述倒排项和正排项的更新以写入内存;以及删除单元,删除所述索引结构中超过预定删除时间的项目。

根据本发明的再一个方面,提出了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上任一项所述的索引结构操作方法。

根据本发明的又一个方面,提出了一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上任一项所述的索引结构操作方法。

本发明的索引结构操作方案通过动态索引的自动更新保持索引数据的时效性和实时性;通过引入双缓存实现读取无锁和高并发读取性能,在这其中,针对写缓存通过多分块减少写入冲突,提升写入性能,并且由于复制仅涉及指针和id,使得双缓存方案的开销较小。

附图说明

通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。

图1示出了根据本发明一个实施例的索引结构操作方法的流程示意图。

图2示出了根据本发明另一个实施例的索引结构操作方法的流程示意图。

图3示出了能够实施本发明的索引结构操作方法的系统的示意图。

图4示出了根据本发明一个实施例的索引结构操作装置的结构示意图。

图5示出了根据本发明一个实施例可用于实现上述索引结构操作方法的计算设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

在搜索系统中,需要命中读取某些分类或关键词的文章(关键词对应文章列表简称倒排),并获取这些文章的属性进行个性化排序(从文档id获取文档属性内容简称正排)。在信息流推荐系统中,推荐模块更是需要多次执行上述操作,因此,倒排和正排表是推荐系统中最核心的数据。在现有技术中,由于倒排和正排表都存在于独立的索引服务中,推荐模块多次读取导致推荐的延时较高。为此,本发明提出了一种新的动态索引操作方案,其通过远程动态更新索引结构本身,并使用存储在本机的索引结构进行本地索引而很好地解决了索引读取的延时问题。

图1示出了根据本发明一个实施例的索引结构操作方法的流程示意图。如图1所示,在步骤s110,将持续获取的索引结构的更新写入内存。在步骤s120,复制写入的索引结构,以确保针对所述索引结构的读取和写入针对两份当前有效的索引结构各自同时进行。换句话说,通过及时复制,确保当前有效的索引结构具有相同的两份,其中一份用来进行读取,另一份用来进行写入,由此使得读写分开互不干扰。

由此,通过针对索引结构的持续更新写入,使得本机存储的索引结构能够应对倒排和正排表不断变化的特性。进一步地,通过对索引结构的复制来将进行读写的内存分开,从而无需在数据写入时对数据读取进行上锁,从而提升了数据读取和写入的效率。

在此,索引结构可以包括倒排表和正排表。倒排表和正排表各自包括多个项,这些项会由于互联网上各类文章的发布和删除而持续变动。因此,为了及时获取更新,在步骤s110中需要持续获取更新来写入本机内存。在此,持续获取可以指代本机(例如,下述的业务服务器)持续不断的从远程(例如,下述的索引服务器)获取关于倒排和正排表各个项的更新,也可以指代本机以一定的时间间隔团块式地从远程获取更新。这些获取的更新项可以是在前已有但内容有更新的项,例如,能够链接至更多文档的倒排项,也可以是新建的项,例如,表示新抓取文档的新的正排项。另外,应该理解的是,获取的这些项可以被称为更新的索引结构,也可以被称为索引结构的更新,或是索引结构本身,本发明在此不做限制。

在一个实施例中,倒排表由包括关键词id和指向文档指针向量的倒排指针的倒排项构成。换句话说,每个倒排项都包括一个关键词id,以及指向一个文档指针向量的倒排指针。具体地,该文档指针向量可以包括多个元素,每个元素都是指向一个文档(即,包括该关键词的文档)的指针,例如智能指针。该倒排指针则可以是指向该向量的智能指针,例如shared_ptr。在此,由于智能指针具有被引用时无法被更改,在没有外部引用时会自行删除的特性,因此可以防止索引结构外部获取数据后,索引结构内部数据销毁而引起的访问异常。

作为替换或者补充,正排表可以由包括文档id和指向该文档内容的正排指针的正排项构成。文档id可以是例如爬虫抓取时为某一具体文档所分配的唯一标识符,例如可以是一个64位的无符号整数。正排指针则可以是指向该文章内容的智能指针。

通过在步骤s120对写入结构的复制,可以确保从远程获取更新的索引结构到本机(即,写入内容)与本机执行搜索任务而读取索引内容的操作彼此分开,互不干扰(即,读写分开),从而提升写入和读取操作两者的效率和准确性。换句话说,通过在步骤s120对更新内容的不断复制,可以确保后续更新步骤s110的顺利进行(不与读取操作相互干扰)。

步骤s110可以包括针对复制得到的两份当前有效的索引结构中的一份当前有效的索引结构进行写入操作,更具体地,可以包括:将所述一份当前有效的索引结构分成多个并行写入区域;以及针对多个并行写入区域,执行并行的索引结构更新写入操作。在此,获取的索引结构可以是包括正排和倒排的哈希表。用于写入的哈希表可以被分成多个区域,每个区域有独立的锁和淘汰机制。为此,可以同时针对索引结构的多个区域进行写操作而互不影响。

作为替换或者补充,本发明的索引结构操作方法还可以包括索引结构读取步骤,即,针对所述两份当前有效的索引结构中的另一份当前有效的索引结构进行高并发的读取操作。

图2示出了根据本发明另一个实施例的索引结构操作方法的流程示意图。如图2所示,索引结构更新步骤s210和复制步骤s220是一个持续进行的过程,而更新后的一份索引结构则以相对独立地用于读取操作s230。在此,用于读取的索引结构例如可以是一个完整的哈希表(例如,可以是unordered_map),由此实现读无锁和高并发的读取机制。

在此,需要明确的是,本发明中所复制的索引结构可以是仅涉及id和指针的正排和倒排表,而不包括会占据大量存储空间的文档属性内容。换句话说,分别用于读取和写入的两份当前有效的索引结构可以共用文档属性内容。由此,使得本发明的双缓存机制仅涉及id和指针的复制,内存开销依然较小。

在一个实施例中,针对另一份当前有效的索引结构进行高并发的读取操作的步骤s230可以包括如下至少一项:基于输入的关键词id,返回所述倒排表中与所述关键词id相对应的倒排项中的指向文档指针向量的倒排指针;基于输入的文档id,返回所述正排表中与所述文档id相对应的正排项中指向文档内容的正排指针;以及基于输入的文档id集合,返回指向包括多个对应正排指针的文档向量的指针。

在本发明中,可以提供索引读取接口,索引读取接口可以包括倒排读取接口、单个正排读取接口和批量正排读取接口。

倒排读取接口的输入参数可以是倒排key,即,关键词id,并且可以包括读取方式选项,例如是否需要存储到本地内存索引中,是否允许拉链截断和超时设置等选项。返回结果可以是倒排拉链,即,指向文档指针向量的指针,例如指向一个向量(vector)的智能指针shared_ptr。向量的每个元素是指向一个文档的智能指针。

单个正排读取接口的输入参数可以是文档id,例如一个64bit无符号整数。返回结果可以是该文档内容(正排)的智能指针。

批量正排读取接口的输入参数可以是文档id集合,返回结果则可类似于倒排读取接口的返回结果,即,指向一个文档向量的智能指针。文档向量的每一个元素都是指向输入文档id集合中的一个文档的智能指针。

在一个实施例中,还可以在进行本发明针对索引结构的更新、复制和读取操作之前,在本机构造一个初始索引结构,例如,从远程获取倒排表和正排表以构造初始索引结构。即,可以对本机进行预热,预热是指在索引对象构建时,从远程预先取回来一部分倒排和正排。优选地,上述索引读取接口还可以包括用于进行本机预热的索引初始化接口。索引初始化接口可以包含以下参数:远程索引数据源ip和端口列表;读取超时;单次从远程读取拉链数据最大长度;数据更新间隔;更新线程数;失效时间;预热倒排链的倒排key文件;数据分区数目(索引数据分成多个区域,区域数量影响写入的冲突可能性,影响性能);截断索引链长度:需要到远程实时查询的倒排链最大长度。使用上述接口并设置相应参数,可以把需要预热的倒排key写入文件,当索引对象构建成功时,就在能够在本机倒排数据的高效读取了。

本发明为了适应索引数据的不停变化,设计了动态内存索引机制,包括增加、修改和删除。应该理解的是,索引结构的增加和修改可以本认为是例如步骤s110和s210的索引结构更新操作的一部分。

在一个实施例中,将持续获取的索引结构的更新写入内存可以包括:收集预定时间段内被读取的倒排项和正排项;以及获取针对所述倒排项和正排项的更新以写入内存。而获取针对所述倒排项和正排项的更新以写入内存包括:在所述倒排项和正排项到达写入可用时间的情况下获取针对所述倒排项和正排项的更新以写入内存。

作为替换或者附件,本发明的索引结构操作方法还可以包括删除所述索引结构中超过预定删除时间的项目。

具体地,针对数据增加,由于实时索引加载的数据源源不断,可以通过定期起多线程向远程数据源拉取数据,来实现数据更新。首先可以收集近期有访问的倒排key和正排id作为更新对象。拉取的时候会判断一个数据上次加载后有没有超过更新对象的可用时间。如果超过就可拉取更新数据。优选地,更新对象在可用时间超过之后的一段时间内(例如,3倍可用时间内)仍然可以读取,以防止拉取失败导致的不可访问。

在需要数据修改时,为了避免影响读取,也可以将数据修改改为数据更新,即,创建一份新的数据加以更新。而修改前的数据则例如一段时间后得到删除。

对于数据删除,在数据加入到索引时,优选记录修改时间。于是可以在索引内部使用线程周期性检查修改时间。如果修改时间超过数据淘汰时间设置,就删除相应数据,由此避免索引持续膨胀消耗内存而引起宕机。

在搜索系统或是包括搜索功能的系统,例如推荐系统中,会使用单独的索引服务器来生成和维护索引结构。图3示出了能够实施本发明的索引结构操作方法的系统的示意图。应该了解的是,图3所示的索引结构操作系统300可以是推荐系统,换句话说,可以是推荐系统在进行推荐的同时实现了本发明的索引结构操作方案。图中的业务服务器310除了执行本机的索引结构更新和复制操作之后,还可以基于例如索引结构读取的搜索结果生成推荐结果。上述推荐结果可以例如经由分发服务器(图3未示出)分发给相应的客户端。

如图3所示,系统300可以包括索引服务器310和多个业务服务器320。索引服务器310可以维护、持续更新并下发用于进行检索的索引结构。每个业务服务器320则可用于将持续获取的索引结构的更新写入内存;以及复制写入的索引结构,以确保针对所述索引结构的读取和写入针对两份当前有效的索引结构各自同时进行。

类似地,此处的索引结构可以包括倒排表和正排表,倒排表可由包括关键词id和指向文档指针向量的倒排指针的倒排项构成,正排表则可由包括文档id和指向文档内容的正排指针的正排项构成。

在一个实施例中,业务服务器320用于将持续获取的索引结构的更新写入内存可以包括:将所述两份当前有效的索引结构中的一份当前有效的索引结构分成多个并行写入区域;以及针对多个并行写入区域,执行并行的索引结构更新写入操作。

在一个实施例中,业务服务器320可以用于针对所述两份当前有效的索引结构中的另一份当前有效的索引结构进行高并发的读取操作,所述读取操作包括如下至少一项:基于输入的关键词id,返回所述倒排表中与所述关键词id相对应的倒排项中的指向文档指针向量的倒排指针;基于输入的文档id,返回所述正排表中与所述文档id相对应的正排项中指向文档内容的正排指针;以及基于输入的文档id集合,返回指向包括多个对应正排指针的文档向量的指针。

进一步地,业务服务器320还可以用于如下的至少一项:从索引服务器310拉取倒排表和正排表以构造初始索引结构;收集预定时间段内被读取的倒排项和正排项,并获取针对所述倒排项和正排项的更新以写入内存;以及删除所述索引结构中超过预定删除时间的项目。

换句话说,业务服务器320可以作为执行如上针对图1-2所述的索引结构操作方法的本机。

在一个实施例中,本发明还能被实现为一种索引结构操作装置。图4示出了根据本发明一个实施例的索引结构操作装置的结构示意图。

如图4所示,索引结构操作装置400可以包括写入单元410和复制单元420。写入单元410可以用于将持续获取的索引结构的更新写入内存。复制单元420则可用于复制写入的索引结构,以确保针对所述索引结构的读取和写入针对两份当前有效的索引结构各自同时进行。

具体地,写入单元410可以用于将所述两份当前有效的索引结构中的一份当前有效的索引结构分成多个并行写入区域;以及针对多个并行写入区域,执行并行的索引结构更新写入操作。

在一个实施例中,索引结构操作装置400可以可选地包括读取单元430,后者可以针对另一份当前有效的索引结构进行高并发的读取操作。读取操作可以包括如下至少一项:基于输入的关键词id,返回所述倒排表中与所述关键词id相对应的倒排项中的指向文档指针向量的倒排指针;基于输入的文档id,返回所述正排表中与所述文档id相对应的正排项中指向文档内容的正排指针;以及基于输入的文档id集合,返回指向包括多个对应正排指针的文档向量的指针。

在其他实施例中,索引结构操作装置400还可以可选地包括其他功能单元:例如,用于从所述索引服务器拉取倒排表和正排表以构造初始索引结构的构造单元;用于收集预定时间段内被读取的倒排项和正排项,并获取针对所述倒排项和正排项的更新以写入内存的更新单元;以及删除所述索引结构中超过预定删除时间的项目的删除单元。在一个实施例中,上述更新单元可以是写入单元410的一部分。在又一个实施例中,写入单元410还可以包括构造单元和删除单元的功能,以用作索引结构的修改单元。

在另一个实施例中,本发明的索引结构操作方案还可由计算设备实现。图5示出了根据本发明一个实施例可用于实现上述索引结构操作方法的计算设备的结构示意图。

参见图5,计算设备500包括存储器510和处理器520。

处理器520可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器520可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(gpu)、数字信号处理器(dsp)等等。在一些实施例中,处理器520可以使用定制的电路实现,例如特定用途集成电路(asic)或者现场可编程逻辑门阵列(fpga)。

存储器510可以包括各种类型的存储单元,例如系统内存、只读存储器(rom),和永久存储装置。其中,rom可以存储处理器520或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器510可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器510可以包括可读和/或写的可移除的存储设备,例如激光唱片(cd)、只读数字多功能光盘(例如dvd-rom,双层dvd-rom)、只读蓝光光盘、超密度光盘、闪存卡(例如sd卡、minsd卡、micro-sd卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。

存储器510上存储有可执行代码,当可执行代码被处理器520处理时,可以使处理器520执行上文述及的索引结构操作方法。

上文中已经参考附图详细描述了根据本发明的索引结构操作方法、系统和装置。本发明的索引结构操作方案通过动态索引的自动更新保持数据的时效性和实时性。由于数据更新可以使用例如lib库自动和远程索引库协调完成,因而大幅降低了数据维护成本。另外,通过引入双缓存实现读取无锁和高并发读取性能。在这其中,可以针对写缓存通过多分块减少写入冲突,提升写入性能,并且由于复制仅涉及指针和id,使得双缓存方案的开销较小。

此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。

或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。

本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。

附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1