《支持面向对象编程语言环境中对对象的延迟引用的系统和方法.pdf》由会员分享,可在线阅读,更多相关《支持面向对象编程语言环境中对对象的延迟引用的系统和方法.pdf(15页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104137067A43申请公布日20141105CN104137067A21申请号201380011370922申请日2013050261/643,82620120507US13/783,02420130301USG06F9/4420060171申请人甲骨文国际公司地址美国加利福尼亚72发明人B奥利弗74专利代理机构中国国际贸易促进委员会专利商标事务所11038代理人袁玥54发明名称支持面向对象编程语言环境中对对象的延迟引用的系统和方法57摘要一种能够支持面向对象编程语言环境中的延迟引用的系统和方法。所述面向对象编程语言环境能够包括能够提供对将在未来时间可用的对象的延迟引用。
2、的接口。此外,在收到来自调用器基于延迟引用的获取对象的请求之后,所述接口能够在所述对象可用时,将所述对象返回给调用器,或者在所述对象目前不可用和/或当所述对象将永不可用时,能够向调用器说明。30优先权数据85PCT国际申请进入国家阶段日2014082886PCT国际申请的申请数据PCT/US2013/0392562013050287PCT国际申请的公布数据WO2013/169554EN2013111451INTCL权利要求书2页说明书7页附图5页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书7页附图5页10申请公布号CN104137067ACN104137067A1/2页。
3、21一种用于支持在一个或多个微处理器上运行的面向对象编程语言环境中的延迟引用的方法,包括提供对将在未来时间可用的对象的延迟引用;和在收到来自调用器基于延迟引用的获取所述对象的请求之后,进行下述之一当所述对象可用时,将所述对象返回给调用器,和在当所述对象目前不可用时和当所述对象将永不可用时中至少一种情况下,向调用器说明。2根据权利要求1所述的方法,还包括在等待所述对象变得可用时,避免阻塞调用器所使用的基于延迟引用请求所述对象的调用线程。3根据权利要求1或2所述的方法,还包括在所述对象变得可用之前,告知调用器所述对象与哪个类关联。4根据任意前述权利要求所述的方法,还包括当所述对象目前不可用时,抛出。
4、运行时异常或者返回NULL值。5根据任意前述权利要求所述的方法,还包括如果所述对象将永不可用,抛出对象不可用异常。6根据任意前述权利要求所述的方法,还包括确保调用器为所述对象变得可用而等待最大一段时间。7根据任意前述权利要求所述的方法,还包括根据与所述对象相关联的类定义,创建对对象的延迟引用。8根据任意前述权利要求所述的方法,还包括将延迟引用嵌套在另一个延迟引用中。9根据任意前述权利要求所述的方法,还包括获得所述对象的记录动态代理,和由所述对象的所述记录动态代理提供最后记录的调用的延迟表示。10根据任意前述权利要求所述的方法,还包括提供用于当延迟对象变得可用时,使应用程序被通知的机制。11一种。
5、计算机程序,所述计算机程序包含在一个或多个微处理器上运行以执行任意前述权利要求所述的方法的所有步骤的程序指令。12一种计算机程序产品,所述计算机程序产品包含在机器可读介质上提供的按照权利要求11所述的计算机程序。13一种用于支持面向对象编程语言环境中的延迟引用的系统,包括一个或多个微处理器;在一个或多个微处理器上运行的接口,其中所述接口运行以执行以下步骤提供对将在未来时间可用的对象的延迟引用;和在收到来自调用器基于延迟引用的获取所述对象的请求之后,进行下述之一当所述对象可用时,把所述对象返回给调用器,和在当所述对象目前不可用时和当所述对象将永不可用时中至少一种情况下,向调用器说明。权利要求书C。
6、N104137067A2/2页314根据权利要求13所述的系统,其中在等待所述对象变得可用时,所述接口能够避免阻塞调用器所使用的基于延迟引用请求对象的调用线程。15根据权利要求13或14所述的系统,其中在所述对象变得可用之前,所述接口能够告知调用器所述对象与哪个类关联。16根据权利要求1315中任意之一所述的系统,其中在所述对象目前不可用时,所述接口能够抛出运行时异常或者返回NULL值。17根据权利要求1316中任意之一所述的系统,其中如果所述对象将永不可用,所述接口能够抛出对象不可用异常。18根据权利要求1317中任意之一所述的系统,还包括能够确保调用器为所述对象变得可用而等待最大一段时间的。
7、帮助器。19根据权利要求1318中任意之一所述的系统,还包括能够根据与所述对象相关的类定义,创建对对象的延迟引用的帮助器。20根据权利要求1319中任意之一所述的系统,其中所述接口允许把延迟引用嵌套在另一个延迟引用中。21根据权利要求1320中任意之一所述的系统,还包括帮助器,能够获得所述对象的记录动态代理,以及由所述对象的所述记录动态代理,提供最后记录的调用的延迟表示。22一种在其上保存有指令的非临时性机器可读存储介质,当所述指令被执行时,引起系统执行以下步骤,包括提供对将在未来时间可用的对象的延迟引用;和在收到来自调用器基于延迟引用的获取所述对象的请求之后,进行下述之一当所述对象可用时,把。
8、所述对象返回给调用器,和在当所述对象目前不可用时和当所述对象将永不可用时中至少一种情况下,向调用器说明。23一种用于引起计算机实现在权利要求110中任意之一描述的方法的计算机程序。权利要求书CN104137067A1/7页4支持面向对象编程语言环境中对对象的延迟引用的系统和方法0001版权声明0002本专利文献中的一部分公开内容包含受版权保护的素材。版权所有人不反对任何人影印再现专利文献或专利公开,因为专利文献或专利公开出现在可公开获得的美国专利商标局文件或档案中,不过保留其它方面的所有版权。技术领域0003本发明主要涉及计算机系统和软件,更具体地,涉及支持面向对象编程语言环境。背景技术000。
9、4面向对象编程OOP可用于设计基于对象的应用程序和计算机程序,所述对象通常是类的实例。OOP技术可包括诸如数据抽象、封装、消息收发、模块化、多态性和继承之类的特征。可具有截然不同的任务或职责的各个对象能够接收消息、处理数据,和把消息发送给其它对象。另外,这些对象可紧密地与各种动作或方法关联。这是本发明的实施例意图致力于的大致范围。发明内容0005这里描述的是一种能够支持面向对象编程语言环境中的延迟引用的系统和方法。面向对象编程语言环境可包括能够提供对将在未来某个时间可用的对象的延迟引用的接口。此外,在收到来自调用器基于延迟引用的获取对象的请求之后,所述接口可在所述对象可用时,将所述对象返回给调。
10、用器,或者在所述对象目前不可用和/或当所述对象将永不可用时,能够向调用器说明。0006另外,这里描述的是一种用于支持在一个或多个微处理器上运行的面向对象编程语言环境中的延迟引用的系统。所述系统包括用于提供对将在未来某个时间可用的对象的延迟引用的装置,和用于在收到来自调用器基于延迟引用的获取对象的请求之后,进行下述之一的装置当所述对象可用时,将所述对象返回给调用器,和当所述对象目前不可用和/或当所述对象将永不可用时,向调用器说明。0007此外,这里描述的是一种支持面向对象编程语言环境中的延迟引用的系统。所述系统包括接口,所述接口被配置成提供对将在未来某个时间可用的对象的延迟引用,和调用器,所述调。
11、用器被配置成基于延迟引用向所述接口发送请求,以获取对象。在收到来自调用器的请求之后,所述接口还被配置成进行下述之一当所述对象可用时,把所述对象返回给调用器,和当所述对象目前不可用和/或当所述对象永不可用时,向调用器说明。附图说明0008图1表示按照本发明的多个实施例,支持面向对象编程OOP环境中的延迟引用的示例。说明书CN104137067A2/7页50009图2表示按照本发明的实施例,用于定义OOP环境中的延迟类型的示例性接口的示例。0010图3表示按照本发明的一个实施例,用于从服务器获得管理豆BEAN信息的示例性软件伪代码的示例。0011图4图解说明按照本发明的实施例,用于支持OOP环境中。
12、的延迟引用的示例性流程图。0012图5图解说明按照本发明的实施例,用于支持OOP环境中的延迟引用的示例性系统。0013图6图解说明表示按照本发明的实施例的特征的功能方框图。具体实施方式0014这里描述的是能够支持面向对象编程OOP环境中的延迟引用的系统和方法。0015引用对象可封装对另一个对象的引用,或者说所指对象,以致引用本身能够如所指对象一样被检查和操作。延迟引用表示可以还不存在,可以不可用,或者将只在未来某个时刻变得可用的所指对象。0016图1表示按照本发明的多个实施例,支持OOP环境中的延迟引用的示例。如图1中所示,OOP环境100,例如JAVA编程环境,能够提供对未来对象103的延迟。
13、引用101。延迟引用101能够基于接口110,接口110可定义OOP环境100中的延迟类型。未来对象103可以是将在未来某个时间可用的对象,例如,服务器、成员、连接、MBEAN、值和条件。0017在OOP环境100中,调用器102可发送请求,例如GET方法,以基于延迟引用101获得未来对象103。在GET方法被调用之前,可不开始解析所指对象,或者未来对象102的计算。另一方面,立即发生延迟引用101向调用器102的返回。0018按照本发明的多个实施例,调用器102可在包括公知的硬件元件,比如处理器、存储器和通信接口的通用计算机上实现。当处理器执行软件程序的指令时,实现调用器102。0019在收。
14、到来自调用器102的请求之后,OOP环境100可向调用器102提供未来对象103目前不可用的指示。作为替代地,一旦未来对象103变得可用,OOP环境就可把未来对象103返回给调用器102。0020按照本发明的多个实施例,在等待未来对象102变得可用的期间,OOP环境可避免阻塞调用器102用于请求未来对象102的调用线程104。这种异步模型是有益的,因为调用线程104能够负责其它重要的任务。0021此外,OOP环境100可利用一个或多个帮助器120来扩展延迟引用101的功能。另外,OOP环境100允许把另一个延迟引用嵌套在延迟引用101中。0022按照本发明的多个实施例,OOP环境可提供能够表示。
15、已被请求的异步操作的结果的未来类定义,例如,JAVAFUTURE类。0023通过利用未来对象102的延迟引用101,OOP环境能够避免与JAVAFUTURE类相关的各种问题。例如,对值进行解析的计算可在未来类被创建时开始。此外,未来类可能迫使调用线程等待。例如,JAVAFUTURE类可以提供在值被产生之前必须阻塞调用线程以始终等待的FUTUREGET方法,或者阻塞调用线程规定时间量的FUTUREGETTIME方法。这两种方法都迫使开发者编写非异步的阻塞算法。说明书CN104137067A3/7页60024按照本发明的各个实施例,延迟引用102可作为软件包的一部分,比如作为甲骨文一致孵化器ORA。
16、CLECOHERENCEINCUBATORCOMMON中的COMORACLETOOLSDEFERRED包的一部分被启动,或者在用于更广阔用途的独立JAR中被启动。0025另外,OOP环境100可提供当延迟对象变得可用时,通知应用的机制。这允许开发者定义一个或多个延迟引用,以及当底层对象变得可用时要被通知的回调。从而,当对象不再“延迟”时,底层的面向对象编程语言可通知应用开发者。0026图2表示按照本发明的实施例,用于定义OOP环境中的延迟类型的示例性接口的示例。如图2中所示,可以使用或实现接口DEFERRED,以提供对将在未来某个时间可用的对象的延迟引用第1行。接口DEFERRED包括可返回延。
17、迟引用的GET方法第3行,和能够在所指对象并未实际存在的情况下,确定所指对象的类的GETDEFERREDCLASS方法第5行。0027当调用器调用GET方法时,面向对象编程语言环境可以在等待未来对象变得可用的期间,避免阻塞调用线程。不同于等待产生结果值的JAVAFUTURE类,接口DEFERRED中的GET方法立即返回对未来对象的引用。0028此外,如果对象目前不可用,那么OOP环境可以返回NULL值或抛出运行时异常。另外,如果对象可以永不可用,那么面向对象编程语言环境可以抛出对象不可用异常例如,OBJECTNOTAVAILABLEEXCEPTION。0029按照本发明的多个实施例,OOP环境。
18、可以提供不同类型的延迟帮助器,以用于扩展延迟引用的功能。0030例如,下面所示的延迟帮助器可以确保调用器为对象变得可用而等待一段时间,或者在一段时间之后重试。0031DEFERREDDEFERRED0032DEFERREDENSUREDNEWENSUREDDEFERRED,TIMEOUT;0033在OOP环境中,确保的DEFERRED类型可利用为DEFERRED类型中的对象变得可用而等待一段时间的延迟实现包装。这里,可以确保任何DEFERRED类型。确保的DEFERRED类型允许嵌套的DEFERRED类型,而不需要嵌套的超时。0034此外,DEFERRED类型不实现阻塞语义,而只有ENSURE。
19、D类型才实现阻塞语义。确保的DEFERRED允许具有可定制语义的“等待”,而DEFERRED类型可以决不阻塞调用线程。例如,当认为所指对象永不可用时,DEFERRED类型可抛出运行时OBJECTNOTAVAILABLEEXCEPTIONS。0035如下所示,OOP环境可通过等待最大默认时间期,解析延迟值,或者在默认时间期之后重试。0036PUBLICTENSUREDEFERREDDEFERRED;0037另外,面向对象编程语言环境允许调用器指定明确的最大超时。0038PUBLICTENSUREDEFERREDDEFERRED,LONGDURATION,TIMEUNITUNIT;0039按照本发。
20、明的实施例,OOP环境可支持基于延迟帮助器的概念的延迟方法调用。0040例如,如下所示,可以创建接口和/或对象的记录动态代理。0041PUBLICTINVOKINGTT;0042从而,OOP环境可获得DEFERRED类型的“记录”动态代理DEFERRED。说明书CN104137067A4/7页70043PUBLICTINVOKINGDEFERREDDEFERRED;0044另外,OOP环境可以获得如下所示的表示最后记录的调用的DEFERRED类型。0045PUBLICDEFERREDEVENTUALLYTT;0046最后,OOP环境可获得表示最后记录的对LISTSIZE的调用的延迟类型DEFE。
21、RRED。0047DEFERREDDEFSIZEEVENTUALLYINVOKINGLISTSIZE;0048从而,涉及对象的最后记录的动态代理的值可作为延迟值被返回给调用器,例如,延迟整数可代表在未来某个时间的列表的大小。另外,延迟引用可被嵌套在另一个延迟引用中。0049另外,如下所示,OOP环境可支持方法链接。0050DEFERREDDEFHASELEMENTSEVENTUALLYINVOKINGLISTGETENUMERATIONHASELEMENTS;0051另外,面向对象编程语言环境可支持调用延迟类型的延迟方法。0052DEFERREDDEFSIZEEVENTUALLYINVOKIN。
22、GDEFCLUSTERMBEANGETSIZE;0053在分布式数据环境中,延迟引用能够是有益的。例如,代替利用多个尝试块,通过简单地调用以下语句,以确保分布式数据环境中的虚拟机和MBEAN服务器可用,简单的试验就可确保群集达到一定大小。0054ASSERTTHATEVENTUALLYINVOKINGDEFCLUSTERMBEANGETSIZE,IS40055此外,OOP环境可提供各种其它延迟帮助器。例如,可以存在能够高速缓存成功的GET请求的结果的延迟帮助器。0056PUBLICDEFERREDCACHEDDEFERREDDEFERRED;0057并且,延迟帮助器可把值T转换成DEFERRE。
23、D。0058PUBLICDEFERREDDEFERREDTT;0059另外,OOP环境可获得延迟类型的JAVAFUTURE表示。0060PUBLICFUTUREFUTUREDEFERREDDEFERRED;0061例子0062图3表示按照本发明的实施例,从服务器获得管理豆信息的示例性软件伪代码的示例。如图3中所示,在根据对象的名称OBJECTNAME取回相关的管理豆BEAN信息,例如,MBEANINFO实例第6行之前,调用器可建立与服务器,例如,JMXMBEANSERVER实例的连接第5行。0063在从服务器获得管理豆BEAN信息之前,OOP环境可能需要确保各种条件被满足。例如,在能够创建JM。
24、XMBEANSERVER之前,可能需要启动JMXMBEANSERVER实例运行于其上的虚拟机,例如,JAVA虚拟机JVM。此外,例如MBEANSERVERCONNECTION的服务器连接可能需要对于已登记的MBEAN可用。另外,面向对象编程语言环境还可能需要处理各种其它异常,比如IOEXCEPTION、INSTANCENOTFOUNDEXCEPTION、CLASSCASTEXCEPTION。0064按照本发明的多个实施例,面向对象编程语言环境可利用如下所示的尝试块来确保这些条件可被满足。0065说明书CN104137067A5/7页80066利用尝试块的以上方法可能导致不同的问题,例如,线程应。
25、休眠多长时间,和如何允许尝试块更早地失败或成功。另外,当存在过多的重试循环时,代码会变得过于复杂和难以理解。0067利用如在图2中定义的确保延迟类型,可如下创建DEFERREDJMXCONNECTOR实例。0068DEFERREDDEFJMXCONNECTORNEWDEFERREDJMXCONNECTORJMXCONNECTIONURL,ENV0069从而,可以创建延迟MBEANINFO。0070DEFERREDDEFMBEANINFONEWDEFERREDMBEANINFODEFJMXCONNECTOR,OBJECTNAME0071从而,用于从服务器获得管理豆信息的代码可被简单地实现成007。
26、2MBEANINFOINFOENSUREDEFMBEANINFO;0073或者0074MBEANINFOINFOENSUREDEFMBEANINFO,2,TIMEUNITMINUTES。0075如上所示,利用确保延迟类型,确保延迟类型可把“等待”逻辑隔离成把延迟类型作为参数的确保方法。此外,确保延迟类型允许嵌套的延迟类型,而没有嵌套的超时。0076在如下所示的例子中,OOP环境可以声明服务正在进行中。0077ASSERTTHATEVENTUALLYINVOKINGCACHEFACTORYGETSERVICE“SOMESERVICE”ISRUNNING,ISTRUE;0078另外,OOP环境可声。
27、明两个命名的高速缓冲存储器,CACHEA和CACHEB相等。0079NAMEDCACHECACHEA;0080NAMEDCACHECACHEB;0081ASSERTTHATEVENTUALLYCACHEA,ISEQUALTOCACHEB;0082图4图解说明按照本发明的实施例,用于支持OOP环境中的延迟引用的示例性流程图。如图4中所示,在步骤401,OOP环境可提供对将在未来某个时间可用的对象的延迟引用。此外,在步骤402,在收到来自调用器基于延迟引用的获取对象的请求之后,当所述对象可用时,OOP环境可把所述对象返回给调用器,或者当所述对象目前不可用和/或当所述对象永不可用时,可向调用器说明相。
28、应情况。0083图5图解说明按照本发明的实施例,用于支持OOP环境中的延迟引用的示例性系统。如图5中所示,系统500被表示成包含接口510和调用器502。调用器502可基于延迟引用向接口510发送获取对象的请求。接口510可提供对将在未来某个时间可用的对象的延迟引用,并且在收到来自调用器的请求之后,所述接口可进行下述之一当所述对象可用时,把所述对象返回给调用器,和当所述对象目前不可用和/或当所述对象将永不可用时,说明书CN104137067A6/7页9向调用器说明。0084在等待对象变得可用的期间,接口510能够避免阻塞调用器502基于延迟引用的用于请求对象的调用线程。接口510还能够在对象变。
29、得可用之前,向调用器502告知对象与哪个类关联。接口510还能够在对象目前不可用时,抛出运行时异常或者返回NULL值。如果对象将永不可用,接口510还能够抛出对象不可用异常。接口510可允许把延迟引用嵌套在另一个延迟引用中。0085系统510还可包括帮助器520。帮助器520能够确保调用器502为对象变得可用而等待最大一段时间。帮助器520还能够根据与对象相关的类定义,创建对对象的延迟引用。帮助器520还能够获得对象的记录动态代理,并利用对象的记录动态代理,提供最后记录的调用的延迟表示。0086按照一个实施例,公开了一种用于支持在一个或多个微处理器上运行的面向对象编程语言环境中的延迟引用的系统。
30、。所述系统包括用于提供对将在未来某个时间可用的对象的延迟引用的装置,和用于在收到来自调用器基于延迟引用的获取对象的请求之后,进行下述之一的装置当所述对象可用时,把所述对象返回给调用器,和当所述对象目前不可用和/或当所述对象将永不可用时,向调用器说明。0087优选地,所述系统还包括用于在等待对象变得可用的期间,用于避免阻塞调用器基于延迟引用用于请求对象的调用线程的装置。0088优选地,所述系统还包括用于在对象变得可用之前,向调用器告知对象与哪个类关联的装置。0089优选地,所述系统还包括用于当对象目前不可用时,抛出运行时异常或者返回NULL值的装置。0090优选地,所述系统还包括用于如果对象将永。
31、不可用,抛出对象不可用异常的装置。0091优选地,所述系统还包括用于确保调用器为对象变得可用而等待最大一段时间期的装置。0092优选地,所述系统还包括用于根据与对象相关的类定义,创建对对象的延迟引用的装置。0093优选地,所述系统还包括用于将延迟引用嵌套在另一个延迟引用中的装置。0094优选地,所述系统还包括用于获得对象的记录动态代理的装置,和用于利用对象的记录动态代理来提供最后记录的调用的延迟表示的装置。0095优选地,所述系统还包括用于提供当延迟对象变得可用时,通知应用的机制的装置。0096按照一个实施例,公开了一种用于支持面向对象编程语言环境中的延迟引用的系统。所述系统包括接口,所述接口。
32、被配置成提供对将在未来某个时间可用的对象的延迟引用,和调用器,所述调用器被配置成基于延迟引用向所述接口发送获取对象的请求。在收到来自调用器的请求之后,所述接口还被配置成进行下述之一当所述对象可用时,把所述对象返回给调用器,和在当所述对象目前不可用和当所述对象将永不可用时中至少一种情况下,向调用器说明。0097优选地,所述接口能够在等待对象变得可用的期间,避免阻塞调用器基于延迟引用用于请求对象的调用线程。说明书CN104137067A7/7页100098优选地,所述接口能够在对象变得可用之前,向调用器告知对象与哪个类关联。0099优选地,在对象目前不可用时,所述接口能够抛出运行时异常或者返回NU。
33、LL值。0100优选地,如果对象将永不可用,所述接口能够抛出对象不可用异常。0101优选地,所述系统还包括能够确保调用器为对象变得可用而等待最大一段时间的帮助器。0102优选地,所述系统还包括能够根据与对象相关的类定义,创建对对象的延迟引用的帮助器。0103优选地,所述接口允许把延迟引用嵌套在另一个延迟引用中。0104优选地,所述系统还包括能够获得对象的记录动态代理,并利用对象的记录动态代理,提供最后记录的调用的延迟表示的帮助器。0105图6图解说明表示本发明的特征的功能方框图。本发明的特征可被实现成用于支持面向对象编程语言环境中的延迟引用的系统600。系统600包括一个或多个微处理器610,。
34、和运行于所述一个或多个微处理器610上的接口110。所述一个或多个微处理器610包括提供单元620,所述提供单元620被配置成提供对将在未来某个时间可用的对象的延迟引用;和执行单元630,所述执行单元630被配置成在收到来自调用器基于所述延迟引用的获取对象的请求之后,执行下述之一当所述对象可用时,把所述对象返回给调用器,和当所述对象目前不可用和/或当所述对象将永不可用时,向调用器说明。执行单元630包括返回单元631和说明单元632。返回单元631被配置成当所述对象可用时,把所述对象返回给调用器。说明单元632被配置成在当所述对象目前不可用时和当所述对象将永不可用时中至少一种情况下,向调用器说。
35、明。0106通过利用按照本公开的教导编程的一个或多个常规的通用或专用数字计算机、计算装置、机器、或微处理器,包括一个或多个微处理器、存储器和/或计算机可读存储介质,可以便利地实现本发明。有经验的程序员能够根据本公开的教导容易地编写适当的软件编码,这对软件领域的技术人员来说是显而易见的。0107在一些实施例中,本发明包括计算机程序产品,所述计算机程序产品是其上/其中保存有可用于对计算机编程,以执行本发明的任意处理的指令的存储介质或者计算机可读介质。所述存储介质可包括但不限于任意种类的盘包括软盘、光盘、DVD、CDROM、微驱动器和磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRA。
36、M、闪存装置、磁卡或光卡、纳米系统包括分子存储器IC、或者任何种类的适合于保存指令和/或数据的介质或装置。0108出于举例和说明的目的,提供了本发明的上述说明。上述说明并不是详尽的,也不旨在将本发明局限于公开的具体形式。对本领域的技术人员来说,许多修改和变化是明显的。选择和说明实施例是为了最好地解释本发明的原理及其实际应用,从而使本领域的其他技术人员能够理解本发明的多个实施例和适合于预期的特定应用的各种修改。本发明的范围由以下权利要求及其等同物限定。说明书CN104137067A101/5页11图1说明书附图CN104137067A112/5页12图2图3说明书附图CN104137067A123/5页13图4说明书附图CN104137067A134/5页14图5说明书附图CN104137067A145/5页15图6说明书附图CN104137067A15。