一种SQL语句执行方法、系统、终端及介质与流程

文档序号:24501330发布日期:2021-03-30 21:30阅读:108来源:国知局
一种SQL语句执行方法、系统、终端及介质与流程

本发明涉及计算机技术领域,特别是涉及一种sql语句执行方法、系统、终端及介质。



背景技术:

mpp分布式数据库通常基于成熟的单体数据库实现,如mysql。由于目前的单体数据库提供的客户端库都为阻塞的同步api。常规的并发执行方案是使用多线程来实现,每个线程执行一个sql,最后再对结果进行汇集。

对于多线程的方案,开销较大,每个执行的sql都需要开启一个线程,效率较低。



技术实现要素:

本发明的主要目的在于提供一种sql语句执行方法、系统、终端及介质,旨在解决由于相关技术中对于分布式数据库多线程的方案,开销较大,每个执行的sql都需要开启一个线程,效率较低的技术问题。

为了解决上述技术问题,提供了一种sql语句执行方法,包括:

获取待下发sql语句,及若干个目标连接对象;

将所述待下发sql语句通过所述目标连接对象发送到各目标节点,并生成sql发送结果;

获取目标消息,并生成最终执行结果,所述目标消息包括取消任务消息或各所述目标节点的节点执行结果。

可选的,所述获取目标消息,并生成最终执行结果包括以下任意之一:

若所述目标消息包括各所述目标节点的节点执行结果,根据各所述节点执行结果生成结果集,所述最终执行结果包括所述结果集;

若所述目标消息包括取消任务消息,所述最终执行结果包括任务取消。

可选的,各所述节点执行结果的获取方式如下:

获取一个所述目标节点的节点执行结果;

若当前未获取到所述目标消息,继续获取下一个所述目标节点的节点执行结果,直至各目标节点的节点执行结果均被获取到。

可选的,还包括:

若当前获取到所述目标消息,且所述目标消息包括取消任务消息,停止获取下一个所述目标节点的节点执行结果,所述最终执行结果包括任务取消。

可选的,各所述节点执行结果的获取方式如下:

分别初始化poll对象及管道,并通过所述poll对象监听所述管道的可读事件,所述管道的可读事件包括写入所述取消任务消息;

通过所述poll对象监听各所述目标连接对象的可读事件,并通过poll_wait等待各所述目标连接对象的可读事件,所述目标连接对象的可读事件包括所述目标节点的节点执行结果;

获取一个所述目标连接对象的可读事件;

若所述管道不可读,获取下一个所述目标连接对象的可读事件,直至所有的所述目标对象的可读事件均被获取。

可选的若所述管道可读,所述最终执行结果包括任务取消。

可选的,若所述最终执行结果包括任务取消,还包括以下任意之一:

将所述目标连接对象加入任务取消队列;

将所述目标连接对象加入任务取消队列,并结束所述任务取消队列中的各所述目标连接对象的任务。

本发明还提供了一种sql语句执行系统,包括:

获取模块,用于获取待下发sql语句,及若干个目标连接对象;

发送模块,用于将所述待下发sql语句通过所述目标连接对象发送到各目标节点,并生成sql发送结果;

生成模块,用于获取目标消息,并生成最终执行结果,所述目标消息包括取消任务消息或各所述目标节点的节点执行结果。

本发明还提供了一种终端,包括处理器、存储器和通信总线;

所述通信总线用于将所述处理器和存储器连接;

所述处理器用于执行所述存储器中存储的计算机程序,以实现如上述实施例中任一个所述的sql语句执行方法。

本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,

所述计算机程序用于使所述计算机执行如上述实施例中任一项所述的sql语句执行方法。

如上所述,本发明提供的一种sql语句执行方法、系统、终端及介质,具有以下有益效果:

通过获取待下发sql语句及若干个目标连接对象,将该待下发sql语句通过目标连接对象发送到目标节点,生成sql发送结果,获取目标消息,并生成最终执行结果,将执行sql分成两阶段的方式,避免了多线程的开销,也避免了异步编程的复杂性,可以解决相关技术中mpp分布式数据库每个节点执行的任务往往都比较重,需要花费较长的执行时间,因此若使用同步阻塞的api去串行的执行,性能会很低,对于分布式数据库多线程的方案,开销较大,每个执行的sql都需要开启一个线程,效率较低,实现了了提升了性能,降低并发多线程的开销,简单方便。

附图说明

图1为本发明实施例一提供的sql语句执行方法的一种流程示意图;

图2为本发明实施例一提供的sql语句执行方法的一种具体的流程示意图;

图3为本发明实施例一提供的sql语句执行方法的另一种具体的流程示意图;

图4为本发明实施例一提供的sql语句执行方法的另一种具体的流程示意图;

图5为本发明实施例二提供的sql语句执行系统的一种结构示意图;

图6为本发明一实施例提供的终端的一种结构示意图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

实施例一

请参阅图1,本发明实施例提供了一种sql语句执行方法,包括:

s101:获取待下发sql语句,及若干个目标连接对象。

可选的,获取待下发sql(structuredquerylanguage,结构化查询语言)语句,及若干个目标连接对象的方式可以采用现有的相关技术手段实现,在此不做限定。

可选的,目标连接对象的获取方式可以是根据待下发sql语句所需要执行的节点数量,从连接池中获取相应数量的连接对象。

s102:将待下发sql语句通过目标连接对象发送到各目标节点,并生成sql发送结果。

可选的,在将待下发sql语句通过目标连接对象发送到各目标节点后,即生成sql发送结果。换句话说,完成了对各个目标节点的待下发sql语句的正常下发,即可生成sql发送结果,不需要等待个目标节点返回节点执行结果。

可选的,将待下发sql语句下发到目标节点,待下发sql语句通过tcp(transmissioncontrolprotocol)网络发送成功后即返回,不等待节点响应。

可选的,可以通过根据目标连接对象生成连接对象列表,遍历是否通过该连接对象列表中的各个目标连接对象完成了待下发sql语句的下发来确定是否生成sql发送结果。若遍历完成,也即完成了通过各个目标连接对象分发待下发sql语句的工作,则生成sql发送结果,否则,继续讲该待下发sql语句通过尚未完成分发工作的目标连接对象发送给对应的目标节点。

s103:获取目标消息,并生成最终执行结果。

可选的,目标消息包括取消任务消息或各目标节点的节点执行结果。

可选的,在返回sql发送结果之后或同时,获取目标消息,根据目标消息生成最终执行结果,其中,目标消息包括取消任务消息或各目标节点的节点执行结果。这样可以实现将sql的执行过程分成两个阶段:第一阶段是将要执行的待下发sql语句下发到目标节点,待下发sql语句通过tcp网络发送成功后即返回,不等待节点响应;第二阶段是调用获取结果接口,等待目标节点返回节点执行结果。通过本实施提供的sql语句执行方法,可以实现先批量的下发待下发sql语句到所有目标节点,目标节点先并发的执行该待下发sql语句,之后再批量的等待各个目标节点的节点执行结果可读。可以解决相关技术中mpp分布式数据库每个节点执行的任务往往都比较重,需要花费较长的执行时间,因此若使用同步阻塞的api去串行的执行,性能会很低的技术问题,提升了性能,降低并发多线程的开销,简单方便。

在一些实施例中,在获取目标消息之前,将待下发sql语句通过目标连接对象发送到各目标节点之后,该方法还包括:

控制各目标节点并发执行待下发sql语句。

可选的,各目标节点并发执行待下发sql语句的方式可以采用相关技术的技术手段实现,在此不做限定。

可选的,获取目标消息的过程是对于两个消息来源进行监控,一方面,监控是否存在取消任务消息,一方面监控是否存在各目标节点的节点执行结果。其中各目标节点的节点执行结果也即全部目标节点均完成执行待下发sql语句,并且返回了各自的节点执行结果。

可选的,目标消息的获取是“先来先得”,也即,取消任务消息与各目标节点的节点执行结果之间,哪一个先被获取到,哪一个就是当前的目标消息。因此,目标消息仅会包括取消任务消息与各目标节点的节点执行结果中任意一个,并不会存在两种情况并存的情形。

在一些实施例中,获取目标消息,并生成最终执行结果包括以下任意之一:

若目标消息包括各目标节点的节点执行结果,根据各节点执行结果生成结果集,最终执行结果包括结果集;

若目标消息包括取消任务消息,最终执行结果包括任务取消。

可选的,结果集也即由全部的目标节点所对应的节点执行结果所生成的集合。

可选的,相关技术中,在mpp分布式数据库中还会面临一个问题,由于每个节点执行的sql任务都比较重。在下发取消任务的请求后,节点往往需要等待很长的时间才能真正的取消任务,并将错误信息返回。而本发明实施例提供的方法中,在尚未获取到各目标节点的节点执行结果之前,一旦获取到了取消任务消息,最终执行结果包括任务取消,不需要等待目标节点真正的取消认为,就可以返回任务取消。可以实现快速的取消任务,让应用层得以更加快速的处理其他事务,提升了资源利用率,提升了系统效率。

本发明实施例提供的方法,在批量下发待下发sql语句到目标节点,目标节点并发执行后,不立即去阻塞的读取结果集,而是进入一个批量等待结果集可读或任务被取消的流程,也即进入到获取目标消息的过程中,当获取到取消任务消息或各目标节点的节点执行结果中任意之一,也即等待所有目标节点的节点执行结果可读,或者接收到了任务取消事件才返回。这样,可以实现io多路复用,提升系统效率。

在一些实施例中,若最终执行结果包括任务取消,该方法还包括:

将目标连接对象加入任务取消队列。

在一些实施例中,参见图2,该sql语句执行方法包括:

s201:根据需要执行的目标节点数量从连接池中获取对应数量的目标连接对象。

例如,需要执行的目标节点的数量为n个,则从连接池中获取n各目标连接对象。

s202:获取待下发sql语句。

需要说明的是,步骤s201与步骤s202的执行顺序在此不做限定。

s203:遍历由目标连接对象组成的连接对象列表。

s204:判断遍历是否完成,若是,执行步骤s206,若否,执行步骤s205。

s205:将待下发sql语句通过目标连接对象发送到目标节点执行。

可选的,在完成步骤s205后,继续执行步骤s203。

s206:批量等待结果集可读或任务被取消。

可选的,也即获取目标消息。其中,批量等待结果集也即获取各目标节点的节点执行结果,任务被取消也即获取到了取消任务消息。

s207:判断任务是否被取消,若否执行步骤s208,若是执行步骤s209。

也即,判断是否获取到了取消任务消息。

s208:读取并合并各节点执行结果,生成结果集。

也即,读取各个目标节点的节点执行结果,并生成结果集。

s209:将各个目标连接对象加入任务取消队列。

在一些实施例中,各节点执行结果的获取方式如下:

获取一个目标节点的节点执行结果;

若当前未获取到目标消息,继续获取下一个目标节点的节点执行结果,直至各目标节点的节点执行结果均被获取到。

可选的,可以通过获取目标连接对象的可读事件,进而获取到其所对应的目标节点的节点执行结果。

可选的,可以预先对各个目标节点的节点执行结果的获取顺序进行排序,根据该排序逐一获取节点执行结果。

例如,获取一个目标节点的节点执行结果,若此时还没有获取到取消任务消息,将目标数量减1,获取下一个目标节点的节点执行结果,重复上述步骤,直到将各个目标节点的节点执行结果全部都获取到,此时,目标消息包括各目标节点的节点执行结果。此时最终执行结果包括根据各节点执行结果所生成的结果集。

在一些实施例中,若当前获取到了目标消息,且目标消息包括取消任务消息,停止获取下一个目标节点的节点执行结果,最终执行结果包括任务取消。

可选的,此时需要取消各个目标节点执行该待下发sql语句,故对于尚未获取到的目标节点的节点执行结果已经不再需要了,因此,停止获取其余目标节点的节点执行结果,可以有效的节约资源,提升系统效率。

在一些实施例中,若在获取到第一个目标节点的节点执行结果之前,获取到目标消息,也即获取到取消任务消息,此时与上述实施例类似,取消对于全部目标节点的节点执行结果的获取,返回任务取消。

在一些实施例中,各节点执行结果的获取方式如下:

分别初始化poll对象及管道,并通过poll对象监听管道的可读事件,管道的可读事件包括写入取消任务消息;

通过poll对象监听各目标连接对象的可读事件,并通过poll_wait等待各目标连接对象可读事件,目标连接对象的可读事件包括目标节点的节点执行结果;

获取一个目标连接对象的可读事件;

若管道不可读,获取下一个目标连接对象的可读事件,直至所有的目标对象的可读事件均被获取。

可选的,在获取下一个目标连接对象的可读事件之前,还包括:

poll对象移除对已经获取到可读事件的目标连接对象的监听,也即,poll对象仅针对于尚未获取到可读事件的目标连接对象进行监听,对于已经完成可读事件获取的目标连接对象不再进行监听。

可选的,在获取下一个目标连接对象的可读事件之前,还包括以下至少之一:

遍历poll_wait等待的各所述目标连接对象的可读事件是否均被获取;

当前获取到的目标连接对象的可读事件的数量。

可选的,若poll_wait等待的各所述目标连接对象的可读事件均被获取,和/或,当前获取到可读事件的数量等于待下发sql语句所对应目标连接对象的数量,则表示所有连接对象均已完成sql的执行,返回包含各目标节点的节点执行结果的目标消息。

可选的,若获取下一个目标连接对象的可读事件之前,poll_wait等待的各所述目标连接对象的可读事件均被获取,但前获取到可读事件的数量小于待下发sql语句所对应目标连接对象的数量,该方法还包括:

poll_wait等待尚未被获取的目标连接对象的可读事件。

可选的,若获取下一个目标连接对象的可读事件之前,获取到了目标信息,该目标信息包括取消任务消息,则取消任务,不再执行获取下一个目标连接对象的可读事件的步骤。

在一些实施例中,若管道可读,最终执行结果包括任务取消。

可选的,管道可读,也即该管道中写入了取消任务消息,此时,目标消息已经被获取到,而对于目标节点的节点执行结果尚未获取完成,也即,还存在部分目标节点的节点执行结果尚未被获取到,因此,此时最终执行结果包括任务取消。可选的,结束对于目标节点的节点执行结果的获取,也即,结束通过poll对象监听一个目标连接对象的可读事件以及相关步骤。

可选的,参见图3,对于目标消息的获取以及最终执行结果的生成给出了一个更加具体的实施例示意,该具体的方法包括:

s301:初始化poll对象。

s302:初始化管道,并通过poll对象监听管道的可读性。

s303:初始化finished节点数量。

需要说明的是,步骤s301-步骤s303之间的步序不做限定,可以同时执行或按照任意顺序执行。

可选的,管道用于写入取消任务消息,当管道写入了取消任务消息,该管道可读,否则管道不可读。

可选的,初始化finished节点数量时,此时初始化finished节点数量等于目标节点的数量,也等于目标连接对象的数量。

s304:遍历目标连接对象列表。

s305:遍历是否完成,若是,则执行步骤s307,若否执行步骤s306。

s306:通过poll对象监听目标连接对象的可读事件。

也即,需要通过poll对象监听全部的目标连接对象的可读事件。

s307:调用poll_wait等待可读事件。

可选的,通过poll_wait返回多个目标连接对象可读,此时,可能全部的目标连接对象均可读;也可能只存在部分目标连接对象可读,其他目标连接对象不可读。

s308:遍历发生的可读事件。

可选的,对各目标连接对象的可读事件进行遍历。

s309:判断是否遍历完成,若否,执行步骤s310,若是,执行步骤s307。

s310:判断管道是否可读,若是执行步骤s311,若否执行步骤s315。

s311:finished节点数量减1。

可选的,获取poll_wait返回的一个目标连接对象a的可读事件,针对该目标连接对象a的可读事件遍历完成,若当前管道不可读,则finished节点数量减1,若此时finished节点数量不为零,且poll_wait返回的多个目标连接对象b的可读事件中存在尚未被读取的,也即遍历尚未完成,继续获取poll_wait返回的下一个目标连接对象b的可读事件,针对该目标连接对象b的可读事件遍历完成……直到遍历完成。

s312:判断finished节点数量是否等于0,若是执行步骤s313,若否执行步骤s314。

可选的,当步骤s312判断了finished是否等于0,若等于0时表示所有目标连接对象已经检查完毕,或者检查到任务取消时,该进程会自动退出循环。

s313:将各目标节点的节点执行结果作为目标消息。

s314:从poll对象中移除对该目标连接对象的监听。

可选的,步骤s314执行完成后,继续执行步骤s308。

s315:将取消任务消息作为目标消息。

s316:最终执行结果包括任务取消。

可选的,若管道可读,也即写入了取消任务消息,此时,不再获取剩余的目标节点的可读事件,直接将取消任务消息作为目标消息,最终执行结果包括任务取消。

s317:最终执行结果包括结果集。

本发明实施例解决了相关技术中,在mpp分布式数据库中由于每个节点执行的sql任务都比较重,在下发取消任务的请求后,节点往往需要等待很长的时间才能真正的取消任务,并将错误信息返回。通过在批量下发sql到节点执行后,不立即去阻塞的读取结果集,而是进入一个批量等待结果集可读或任务被取消的流程(获取目标消息)。该流程引入io多路复用和管道机制,等待所有结果集可读,或者接收到了任务取消事件才返回,实现了快速的取消任务,让应用层可以去快速的处理其他事情。

当所有目标节点都执行完,结果集可读后(获取到全部的目标节点的节点执行结果)即可从该逻辑中返回,可以开始无阻塞的批量读取结果集。而当用户要取消任务时,只需往管道中写入数据,即会触发管道的可读事件,从poll_wait中返回,可以实现立即结束等待结果集的过程,从而实现快速的取消任务。

在一些实施例中,该方法还包括:

将目标连接对象加入任务取消队列,并结束任务取消队列中的各目标连接对象的任务。

由于仅仅返回任务取消作为最终执行结果,仅是在应用层结束执行该待下发sql语句,实际从各个节点上看任务并没有被取消,他们仍然在运行,只是从mpp分布式数据库层面看任务是被取消了。为了真正的在节点层面取消任务,需要在目标节点层面上也进行任务取消操作。

可选的,可以通过引入一个专门取消任务的线程(kill线程)来实现。通过kill线程负责在节点层面取消任务并回收连接。

可选的,请参见图4,图4提供了一种具体的在节点层面取消任务的示例方法,该方法包括:

s401:启动kill线程。

s402:是否收到退出信号,若否,执行步骤s403:

s403:从任务取消列队中获取目标连接对象。

s404:对正在执行待下发sql语句任务的目标连接对象执行kill线程。

s405:将目标连接对象归还到连接池。

可选的,若收到退出信号,也即,系统退出,则kill线程也将被结束。

可选的,若将全部的目标连接对象都归还到连接池,此时kill线程仍然保持,直至系统退出,该kill线程才结束。

可选的,退出信号还可以是本领域技术人员所设置的其他信号,在此不做限定。

本发明实施例通过获取待下发sql语句及若干个目标连接对象,将该待下发sql语句通过目标连接对象发送到目标节点,生成sql发送结果,获取目标消息,并生成最终执行结果,将执行sql分成两阶段的方式,避免了多线程的开销,也避免了异步编程的复杂性,可以解决相关技术中mpp分布式数据库每个节点执行的任务往往都比较重,需要花费较长的执行时间,因此若使用同步阻塞的api去串行的执行,性能会很低,对于分布式数据库多线程的方案,开销较大,每个执行的sql都需要开启一个线程,效率较低,实现了提升了性能,降低并发多线程的开销,简单方便。

实施例二

参见图5,本发明实施例还提供了一种sql语句执行系统500,包括:

获取模块501,用于获取待下发sql语句,及若干个目标连接对象;

发送模块502,用于将待下发sql语句通过目标连接对象发送到各目标节点,并生成sql发送结果;

生成模块503,用于获取目标消息,并生成最终执行结果,目标消息包括取消任务消息或各目标节点的节点执行结果。

在本实施例中,该sql语句执行系统实质上是设置了多个模块用以执行上述实施例中的sql语句执行方法,具体功能和技术效果参照上述实施例一即可,此处不再赘述。

参见图6,本发明实施例还提供了一种终端1100,包括处理器1101、存储器1102和通信总线1103;

通信总线1103用于将处理器1101和存储器连接1102;

处理器1101用于执行存储器1102中存储的计算机程序,以实现如上述实施例一中的任一项实施例所述的sql语句执行方法。

本发明实施例还提供了一种计算机可读存储介质,其特征在于,其上存储有计算机程序,

计算机程序用于使计算机执行如上述实施例一中的任一项所述的sql语句执行方法。

本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例的实施例一所包含步骤的指令(instructions)。

需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

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

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

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