一种LFS系统中AP层与SP层的通信方法及LFS系统与流程

文档序号:12363213阅读:667来源:国知局
一种LFS系统中AP层与SP层的通信方法及LFS系统与流程

本发明涉及金融技术领域,特别涉及一种LFS系统中AP层与SP层的通信方法及LFS系统。



背景技术:

目前,绝大部分金融终端设备,如ATM机等,均遵循基于Windows操作系统的CEN/XFS(ComitéEuropéen de Normalisation/eXtensions for Financial Services)规范,CEN/XFS规范为欧洲标准化委员会制定的金融服务扩展规范,与Windows系统密切相关,具有较强的操作系统绑定特性,无法直接迁移至其他系统,而Windows系统对银行业务而言安全性较低。

随着Linux系统逐渐应用于越来越多的领域,现已出现了以Linux系统为基础的XFS实现系统,简称为LFS(Linux Financial Services)系统,但就此类系统中AP层与SP层之间的通信方式而言,与Window系统下的XFS实现方法中基于共享内存的方式完全不一致,会带来额外的系统迁移问题。而且锁机制含糊不清,如果不采用锁机制,则会造成数据并发访问错误,如果采用锁机制,由于锁粒度较大,系统性能会下降,且进程间不可靠的锁机制可能会带来死锁,导致整个系统工作出现异常现象。



技术实现要素:

为此,本发明提供一种LFS系统中AP层与SP层的通信方案,以力图解决或者至少缓解上面存在的问题。

根据本发明的一个方面,提供一种LFS系统中AP层与SP层的通信方法,适于在金融终端设备中执行,金融终端设备中驻留有LFS系统,包括AP层、LFS管理器、SP层和设备驱动层,该方法包括如下步骤:首先,AP层向dbus守护进程注册当前AP进程的dbus总线,通过API接口调用LFS管理器连接SP层;LFS管理器根据AP层的调用指令,通过SPI接口在SP层中定位与当前AP进程相关的SP进程;SP层访问设备驱动层以获取与SP进程对应的设备信息;SP层依次获取共享内存的线程锁和进程锁,调用LFS管理器向共享内存中写入设备信息,依次释放进程锁与线程锁;SP层通过dbus总线连接上dbus守护进程,通过dbus守护进程将根据设备信息生成的dbus消息传递给AP层;AP层从接收到的dbus消息中获取设备信息后,依次获取共享内存的线程锁和进程锁,调用LFS管理器释放共享内存,依次释放进程锁与线程锁。

可选地,在根据本发明的LFS系统中AP层与SP层的通信方法中,还包括:SP进程创建向共享内存写入设备信息的写入线程。

可选地,在根据本发明的LFS系统中AP层与SP层的通信方法中,还包括:SP层将共享内存的线程锁授予写入线程;SP层将共享内存的进程锁授予SP进程。

可选地,在根据本发明的LFS系统中AP层与SP层的通信方法中,SP层调用LFS管理器获取共享内存并向其写入设备信息包括:调用LFS管理器的共享内存分配接口,从共享内存中获取一块指定大小的共享内存块;通过写入线程向共享内存块中写入设备信息。

可选地,在根据本发明的LFS系统中AP层与SP层的通信方法中,共享内存块的头部空间中存储有固定大小的内存块信息,内存块信息包括共享内存块的存储地址和容量大小。

可选地,在根据本发明的LFS系统中AP层与SP层的通信方法中,还包括:当前AP进程创建释放共享内存的释放线程。

可选地,在根据本发明的LFS系统中AP层与SP层的通信方法中,还包括:AP层将共享内存的线程锁授予释放线程;AP层将共享内存的进程锁授予当前AP进程。

可选地,在根据本发明的LFS系统中AP层与SP层的通信方法中,AP层调用LFS管理器释放共享内存包括:调用LFS管理器的共享内存释放接口,释放共享内存中存储设备信息的共享内存块。

根据本发明的又一个方面,提供一种LFS系统,适于驻留在金融终端设备中,该系统包括:AP层,适于向dbus守护进程注册当前AP进程的dbus总线,通过API接口调用LFS管理器连接SP层,从接收到的dbus消息中获取与当前AP进程相关的SP进程对应的设备信息后,依次获取共享内存的线程锁和进程锁,调用LFS管理器释放共享内存,依次释放进程锁与线程锁。LFS管理器,提供API接口,适于根据AP层的调用指令,通过SPI接口在SP层中定位与当前AP进程相关的SP进程;SP层,提供SPI接口,适于访问设备驱动层以获取与SP进程对应的设备信息,依次获取共享内存的线程锁和进程锁,调用LFS管理器向共享内存中写入设备信息,依次释放进程锁与线程锁,通过dbus总线连接上dbus守护进程,通过dbus守护进程将根据设备信息生成的dbus消息传递给AP层;设备驱动层,适于向SP层提供与当前AP进程相关的SP进程对应的设备信息。

可选地,在根据本发明的LFS系统中,SP进程适于创建向共享内存写入设备信息的写入线程。

可选地,在根据本发明的LFS系统中,SP层进一步适于:将共享内存的线程锁授予写入线程;将共享内存的进程锁授予SP进程。

可选地,在根据本发明的LFS系统中,SP层进一步适于:调用LFS管理器的共享内存分配接口,从共享内存中获取一块指定大小的共享内存块;通过写入线程向共享内存块中写入设备信息。

可选地,在根据本发明的LFS系统中,共享内存块的头部空间中存储有固定大小的内存块信息,内存块信息包括共享内存块的存储地址和容量大小。

可选地,在根据本发明的LFS系统中,当前AP进程适于创建释放共享内存的释放线程。

可选地,在根据本发明的LFS系统中,AP层进一步适于:将共享内存的线程锁授予释放线程;将共享内存的进程锁授予当前AP进程。

可选地,在根据本发明的LFS系统中,AP层进一步适于:调用LFS管理器的共享内存释放接口,释放共享内存中存储设备信息的共享内存块。

根据本发明的LFS系统中AP层与SP层的通信技术方案,当AP层与SP层建立连接后,SP层依次获取共享内存的线程锁和进程锁,调用LFS管理器向共享内存写入从设备驱动层获取的设备信息,再依次释放进程锁和线程锁,而AP层获取到该设备信息后,依次获取共享内存的线程锁和进程锁,调用LFS管理器释放存储该设备信息的共享内存,再依次释放进程锁与线程锁。上述技术方案中,通过共享内存在AP层与SP层通信时实现数据的传递,降低了进程间通信的数据复制次数,线程锁和进程锁组成的双级锁对共享内存提供了细粒度的同步访问控制,保证了AP层与SP层之间通信机制的兼容性、高性能与高可靠性。

附图说明

为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。

图1示出了根据本发明的一个实施例的LFS系统中AP层与SP层通信方法100的流程图;以及

图2示出了根据本发明一个实施例的LFS系统200的示意图。

具体实施方式

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

图1示出了根据本发明的一个实施例的LFS系统中AP层与SP层的通信方法100的示意图。LFS系统中AP层与SP层的通信方法100适于在金融终端设备中执行,金融终端设备中驻留有LFS系统,包括AP层、LFS管理器、SP层和设备驱动层。其中,其中AP层即为应用程序层,AP为Application Program的英文缩写,LFS管理器即为Linux系统下的金融服务管理器,SP层即为服务提供层,SP为Service Provider的英文缩写。LFS管理器向AP层提供API(Application Programming Interface)接口,SP层向LFS管理器提供SPI(Service Provider Interface)接口。

如图1所示,方法100始于步骤S110。在步骤S110中,AP层向dbus守护进程注册当前AP进程的dbus总线,通过API接口调用LFS管理器连接SP层。在本实施例中,AP层调用dbus_bus_get函数向dbus守护进程注册当前AP进程的dbus总线,通过API接口启动LFS管理器,指定当前AP进程可以使用的LFS管理器的API接口的版本范围,并将该AP进程注册到LFS管理器中以建立AP层与LFS管理器的连接。当AP层与LFS管理器之间的连接建立完成后,AP层将调用LFS管理器动态载入SP层,该请求使用逻辑名,LFS管理器会将逻辑名映射到SP层以建立AP层和SP层之间的连接。AP层为获取与当前AP进程相关的SP进程的设备信息,向LFS管理器发出调用指令。

随后,进入步骤S120。LFS管理器根据AP层的调用指令,通过SPI接口在SP层中定位与当前AP进程相关的SP进程。在本实施例中,LFS管理器根据AP层的调用指令,获取到与当前AP进程相关的SP进程的编号和当前AP进程的dbus总线信息,根据该编号通过SPI接口定位到SP进程,并向SP层传递当前AP进程的dbus总线信息。

在步骤S130中,SP层访问设备驱动层以获取与上述SP进程对应的设备信息。在本实施例中,SP层通过设备驱动接口访问设备驱动层,从设备驱动层获取当前AP进程相关的SP进程对应的设备信息。当SP层从驱动设备层获取到当前AP进程相关的SP进程对应的设备信息后,预备向共享内存中写入设备信息。此时,SP进程创建向共享内存写入设备信息的写入线程。

在步骤S140中,SP层依次获取共享内存的线程锁和进程锁,调用LFS管理器向共享内存中写入SP进程对应的设备信息,依次释放进程锁与线程锁。具体地,SP层依次获取共享内存的线程锁和进程锁,将共享内存的线程锁授予写入线程,将共享内存的进程锁授予SP进程,SP层调用LFS管理器的共享内存分配接口,从共享内存中获取一块指定大小的共享内存块,通过该写入线程向共享内存块中写入设备信息,依次释放进程锁与线程锁。其中,共享内存块的头部空间中存储有固定大小的内存块信息,内存块信息包括共享内存块的存储地址和容量大小。共享内存是一块连续的内存地址空间,在对共享内存分配机制上,对其进行不连续的内存分配管理,即当需要从共享内存中获取一块共享内存块时,共享内存会在尚未分配的内存空间中找到一块大小合适的共享内存块,将其进行分配,不要求新分配的共享内存块位于之前已分配的共享内存块的尾部来保证存储的连续性。同时,所有已分配的共享内存块和未分配的共享内存块的内存块信息,均连续存放在预先开辟的一个预设内存空间中,便于通过共享内存索引快速访问共享内存中各共享内存块的内存块信息,而无需遍历操作。这种共享内存的管理方法可称为链块内存管理机制。关于上述内存块信息的管理,可采用哈希表来建立共享内存索引与内存块信息的关联,此处不进行赘述。在本实施例中,共享内存的线程锁表示为pthread_mutex_t,进程锁表示为lockf。其中,进程锁lockf是一种文件锁,当获取到该进程锁lockf的进程崩溃时,进程锁lockf也会同时失效,此时其他进程将释放分配给上述已崩溃进程的共享内存块。此外,还可以通过持久性锁和进程ID管理,保证在进程崩溃的情况下对共享内存块中存储的设备信息与进程锁lockf进行处理,避免共享内存的泄露,进一步保证LFS系统的稳定性。SP层首先获取共享内存的线程锁pthread_mutex_t,再获取共享内存的进程锁lockf,将线程锁pthread_mutex_t授予上述写入线程,将共享内存的进程锁授予SP进程。当该写入线程获取到线程锁pthread_mutex_t后,该SP进程中的其他线程就不能对共享内存进行访问,此时该SP进程获取到进程锁lockf,则SP层中的其他进程也无法再对共享内存进行访问。随后,SP层调用LFS管理器的共享内存分配接口,对共享内存进行访问。共享内存根据设备信息的大小和预设内存空间中存储的内存块信息,获取指定大小的未分配的共享内存块,将该共享内存块的存储地址传递给上述写入线程。当未分配的共享内存块一经分配后,在其头部空间会存储对应的内存块信息。写入线程根据该存储地址将SP进程对应的设备信息写入到新分配到的共享内存块中。上述写入操作完成后,SP进程释放共享内存的进程锁lockf,随后写入线程释放共享内存的线程锁pthread_mutex_t。之后,其他线程或进程可以对共享内存进行访问。

在步骤S150中,SP层通过dbus总线连接上dbus守护进程,通过dbus守护进程将根据设备信息生成的dbus消息传递给AP层。在本实施例中,SP层根据当前AP进程的dbus总线信息获取dbus总线,通过dbus总线连接上dbus守护进程,调用dbus_message_new_method_call函数创建dbus消息,调用dbus_message_iter_append_basic函数向dbus消息中加入共享内存中的设备信息指针,通过dbus守护进程将该dbus消息传递给AP层。而AP层接收到dbus消息后,调用bus_message_get_args函数获取共享内存中的设备信息指针,根据该指针从共享内存里获取当前AP进程相关的SP进程对应的设备信息。当AP层从共享内存中获取上述设备信息后,预备释放共享内存。此时,当前AP进程创建释放共享内存的释放线程。

在步骤S160中,AP层从接收到的dbus消息中获取设备信息后,依次获取共享内存的线程锁和进程锁,调用LFS管理器释放共享内存,依次释放进程锁与线程锁。具体地,AP层依次获取共享内存的线程锁和进程锁,将共享内存的线程锁授予释放线程,将共享内存的进程锁授予当前AP进程,调用LFS管理器的共享内存释放接口,释放共享内存中存储设备信息的共享内存块,再依次释放进程锁与线程锁。在本实施例中,共享内存的线程锁表示为pthread_mutex_t,进程锁表示为lockf。AP层从接收到的dbus消息中获取设备信息后,首先获取共享内存的线程锁pthread_mutex_t,再获取共享内存的进程锁lockf,将线程锁pthread_mutex_t授予上述释放线程,将共享内存的进程锁授予当前AP进程。当该释放线程获取到线程锁pthread_mutex_t后,该当前AP进程中的其他线程就不能对共享内存进行访问,此时该当前AP进程获取到进程锁lockf,则AP层中的其他进程也无法再对共享内存进行访问。随后,AP层调用LFS管理器的共享内存释放接口,对共享内存进行访问。由于已分配的共享内存块的头部空间中均存储有固定大小的内存块信息,而该内存块信息中包括了共享内存块的存储地址和容量大小,则在释放存储当前AP进程相关的SP进程对应的设备信息的共享内存块时,可直接验证其内存块信息。释放线程根据该内存块信息将其对应的共享内存块进行释放后,AP进程释放共享内存的进程锁lockf,释放线程释放共享内存的线程锁pthread_mutex_t。之后,其他线程或进程可以对共享内存进行访问。

图2示出了根据本发明的一个实施例的LFS系统200的示意图。如图2所示,该系统包括AP层210、LFS管理器220、SP层230和设备驱动层240。

AP层210适于向dbus守护进程注册当前AP进程的dbus总线,通过API接口调用LFS管理器连接SP层,从接收到的dbus消息中获取与当前AP进程相关的SP进程对应的设备信息后,依次获取共享内存的线程锁和进程锁,调用LFS管理器释放共享内存,依次释放进程锁与线程锁。AP层210进一步适于将共享内存的线程锁授予释放线程,将共享内存的进程锁授予当前AP进程。AP层210进一步适于调用LFS管理器的共享内存释放接口,释放共享内存中存储设备信息的共享内存块。其中,共享内存块的头部空间中存储有固定大小的内存块信息,内存块信息包括共享内存块的存储地址和容量大小。在本实施例中,AP层210调用dbus_bus_get函数向dbus守护进程注册当前AP进程的dbus总线,通过API接口启动LFS管理器220,将该AP进程注册到LFS管理器220中以建立AP层210与LFS管理器220的连接。当AP层210与LFS管理器220之间的连接建立完成后,AP层210将调用LFS管理器220动态载入SP层230以建立AP层210和SP层230之间的连接。AP层210为获取与当前AP进程相关的SP进程的设备信息,向LFS管理器220发出调用指令。当AP层210接收到SP层230通过dbus守护进程传来的dbus消息后,调用bus_message_get_args函数获取共享内存中的设备信息指针,根据该指针从共享内存里获取当前AP进程相关的SP进程对应的设备信息。随后,AP层210获取共享内存的线程锁pthread_mutex_t,再获取共享内存的进程锁lockf,将线程锁pthread_mutex_t授予当前AP进程创建的释放线程,将共享内存的进程锁授予当前AP进程。当该释放线程获取到线程锁pthread_mutex_t后,该当前AP进程中的其他线程就不能对共享内存进行访问,此时该当前AP进程获取到进程锁lockf,则AP层210中的其他进程也无法再对共享内存进行访问。AP层210调用LFS管理器220的共享内存释放接口,对共享内存进行访问。释放线程验证存储于已分配的共享内存块头部空间的内存块信息,根据验证结果释放对应的共享内存块,之后AP进程释放共享内存的进程锁lockf,释放线程释放共享内存的线程锁pthread_mutex_t。

LFS管理器220提供API接口,适于根据AP层的调用指令,通过SPI接口在SP层中定位与当前AP进程相关的SP进程。在本实施例中,LFS管理器220根据AP层210的调用指令,获取到与当前AP进程相关的SP进程的编号和当前AP进程的dbus总线信息,根据该编号通过SPI接口定位到SP进程,并向SP层230传递当前AP进程的dbus总线信息。

SP层230提供SPI接口,适于访问设备驱动层以获取与SP进程对应的设备信息,依次获取共享内存的线程锁和进程锁,调用LFS管理器向共享内存中写入设备信息,依次释放进程锁与线程锁,通过dbus总线连接上dbus守护进程,通过dbus守护进程将根据设备信息生成的dbus消息传递给AP层。SP层230进一步适于将共享内存的线程锁授予写入线程,将共享内存的进程锁授予SP进程。SP层230进一步适于调用LFS管理器的共享内存分配接口,从共享内存中获取一块指定大小的共享内存块,通过写入线程向共享内存块中写入设备信息。在本实施例中,SP层230通过设备驱动接口访问设备驱动层240,从设备驱动层240获取当前AP进程相关的SP进程对应的设备信息。随后,SP层230获取共享内存的线程锁pthread_mutex_t,再获取共享内存的进程锁lockf,将线程锁pthread_mutex_t授予SP进程创建的写入线程,将共享内存的进程锁授予SP进程。当该写入线程获取到线程锁pthread_mutex_t后,该SP进程中的其他线程就不能对共享内存进行访问,此时该SP进程获取到进程锁lockf,则SP层230中的其他进程也无法再对共享内存进行访问。SP层230调用LFS管理器220的共享内存分配接口,对共享内存进行访问。共享内存根据设备信息的大小和预设内存空间中存储的内存块信息,获取指定大小的未分配的共享内存块,将该共享内存块的存储地址传递给上述写入线程。当未分配的共享内存块一经分配后,在其头部空间会存储对应的内存块信息。写入线程根据该存储地址将SP进程对应的设备信息写入到新分配到的共享内存块中。上述写入操作完成后,SP进程释放共享内存的进程锁lockf,随后写入线程释放共享内存的线程锁pthread_mutex_t。SP层230根据当前AP进程的dbus总线信息获取dbus总线,通过dbus总线连接上dbus守护进程,调用dbus_message_new_method_call函数创建dbus消息,调用dbus_message_iter_append_basic函数向dbus消息中加入共享内存中的设备信息指针,通过dbus守护进程将该dbus消息传递给AP层210。

设备驱动层240适于向SP层提供与当前AP进程相关的SP进程对应的设备信息。

其中,SP进程适于创建向共享内存写入设备信息的写入线程,当前AP进程适于创建释放共享内存的释放线程。

关于LFS系统中AP层与SP层通信的具体步骤以及实施例,在基于图1的描述中已详细公开,此处不予以赘述。

现有的LFS系统中AP层与SP层之间的通信方法中,存在额外的系统迁移和锁机制含糊不清的问题,会降低整个系统的性能。而根据本发明实施例的LFS系统中AP层与SP层的通信方案,当AP层与SP层建立连接后,SP层依次获取共享内存的线程锁和进程锁,调用LFS管理器向共享内存写入从设备驱动层获取的设备信息,再依次释放进程锁和线程锁,而AP层获取到该设备信息后,依次获取共享内存的线程锁和进程锁,调用LFS管理器释放存储该设备信息的共享内存,再依次释放进程锁与线程锁。上述技术方案中,通过共享内存在AP层与SP层通信时实现数据的传递,降低了进程间通信的数据复制次数,线程锁和进程锁组成的双级锁对共享内存提供了细粒度的同步访问控制,使用链块内存管理机制降低内存管理的粒度,避免内存浪费,提高共享内存的访问速度,保证了AP层与SP层之间通信机制的兼容性、高性能与高可靠性。

B11.如B10所述的系统,所述SP层进一步适于:

将所述共享内存的线程锁授予所述写入线程;

将所述共享内存的进程锁授予所述SP进程。

B12.如B11所述的系统,所述SP层进一步适于:

调用LFS管理器的共享内存分配接口,从所述共享内存中获取一块指定大小的共享内存块;

通过所述写入线程向所述共享内存块中写入所述设备信息。

B13.如B12所述的信息,所述共享内存块的头部空间中存储有固定大小的内存块信息,所述内存块信息包括所述共享内存块的存储地址和容量大小。

B14.如B12或13所述的系统,所述当前AP进程适于创建释放所述共享内存的释放线程。

B15.如B14所述的系统,所述AP层进一步适于:

将所述共享内存的线程锁授予所述释放线程;

将所述共享内存的进程锁授予所述当前AP进程。

B16.如B15所述的系统,所述AP层进一步适于:

调用LFS管理器的共享内存释放接口,释放共享内存中存储所述设备信息的共享内存块。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。

如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。

尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

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