数据库间数据的复制方法及装置与流程

文档序号:11590425阅读:146来源:国知局
本发明涉及通信领域,具体而言,涉及一种数据库间数据的复制方法及装置。
背景技术
::在容灾、数据备份、统计等应用中,经常会遇到数据库复制问题,对于千万级以上的大表的复制,由于性能的原因,一般采用增量复制。相关技术中常用的数据库复制方法有oracle数据库的流(stream)复制和goldengate,这两种方法都是基于源数据库日志文件的挖掘来获取同步信息,这种方法的优点是对应用透明,缺点是依赖于具体的数据库,且日志文件的挖掘需要占用较多的机器资源,对源数据的负荷影响较大。另外一种常用的数据库复制方法是oracle的物化视图。物化视图也能提供增量刷新和保证数据一致性,但主要的缺点是不能在异构数据库环境中使用,且实现不同表间数据一致需要用到组刷新,而组刷新需要锁表,不适合于源数据库运行联机事务处理(on-linetransactionprocessing,简称oltp)类型应用且每秒交易量很高的场景。针对相关技术中的增量数据库复制方法依赖于具体数据库的类型的问题,目前尚未提出有效的解决方案。技术实现要素:本发明提供了一种数据库间数据的复制方法及装置,以至少解决相关技术中的增量数据库复制方法依赖于具体数据库的类型的问题。根据本发明的一个方面,提供了一种数据库间数据的复制方法,包括:目标数据库按照预设规则采集源数据库中的日志记录;其中,预设规则包括:日志记录的事务序列号大于已同步至目标数据库中的数据所对应的事务序列号;目标数据库将日志记录复制到目标数据库中的目标表中;其中,目标数据库和源数据库都为异构数据库。进一步地,在目标数据库将日志记录复制到目标数据库中的目标表中之前,方法还包括:目标数据库获取目标数据库本次采集的所有日志记录所对应的事务序列号;按照预定规则从本次采集的所有日志记录所对应的事务序列号中选择一个事务序列号作为本次采集的事务序列号。进一步地,按照预定规则从本次采集的所有日志记录所对应的事务序列号中选择一个事务序列号作为本次采集的事物序列号包括:对于本次采集的每个日志记录所在的日志表,目标数据库获取日志表中所有日志记录对应的事务序列号中的最大事务序列号;目标数据库将所有日志表的最大事务序列号中的最小事务序列号作为本次采集的事务 序列号。进一步地,在目标数据库将日志记录复制到目标数据库中的目标表中之后,方法还包括:目标数据库记录本次采集的事务序列号。进一步地,目标数据库将日志记录复制到目标数据库中的目标表中包括:针对每个日志记录所在的日志表,目标数据库根据日志表对应的主键,获取日志表中事务序列号最大的日志记录;目标数据库将日志表中事务序列号最大的日志记录复制到目标表中。进一步地,目标数据库将日志表中事务序列号最大的日志记录复制到目标表中包括:目标数据库根据日志表的主键,查找主键对应的目标表;目标数据库根据日志表中事务序列号最大的日志记录的操作类型和日志表的主键,对目标表进行操作。进一步地,目标数据库根据日志表中事务序列号最大的日志记录的操作类型和日志表的主键,对目标表进行操作包括以下至少之一:在操作类型为删除操作时,目标数据库根据日志表的主键删除目标表中与日志表的主键对应的记录;在操作类型为新增操作或者修改操作,以及目标表中不存在与日志表的主键对应的记录时,目标数据库将日志记录的内容作为新的记录添加在目标表中;在操作类型为新增操作或者修改操作,以及目标表中已存在与日志表的主键对应的记录时,目标数据库以日志记录的内容更新目标表中与日志表的主键对应的记录。进一步地,目标数据库将日志记录复制到目标数据库中的目标表中包括:目标数据库以目标数据库中已同步至目标数据库中的数据所对应的事务序列号加1为起点事务序列号,以本次采集的事务序列号为终点事务序列号,采用事务序列号递增的方式,将每个日志表中与事务序列号所对应的日志记录依次复制到目标表中。根据本发明的另一方面,提供了一种数据库间数据的复制装置,应用于目标数据库中,包括:采集模块,用于按照预设规则采集源数据库中的日志记录;其中,预设规则包括:日志记录的事务序列号大于已同步至目标数据库中的数据所对应的事务序列号;复制模块,用于将日志记录复制到目标数据库中的目标表中;其中,目标数据库和源数据库都为异构数据库。进一步地,装置还包括:获取模块,用于获取目标数据库本次采集的所有日志记录所对应的事务序列号;选择模块,用于按照预定规则从本次采集的所有日志记录所对应的事务序列号中选择一个事务序列号作为本次采集的事物序列号。进一步地,选择模块包括:第一获取单元,用于对于本次采集的每个日志记录所在的日志表,获取日志表中所有日志记录对应的事务序列号中的最大事务序列号;比较单元,用于将所有日志表的最大事务序列号中的最小事务序列号作为本次采集的事务序列号。进一步地,装置还包括:记录模块,用于记录本次采集的事务序列号。进一步地,复制模块包括:第二获取单元,用于针对每个日志记录所在的日志表,根据日志表对应的主键,获取日志表中事务序列号最大的日志记录;第一复制单元,用于将日志表中事务序列号最大的日志记录复制到目标表中。进一步地,第一复制单元包括:查找子单元,用于根据日志表的主键,查找主键对应的目标表;操作子单元,用于根据日志表中事务序列号最大的日志记录的操作类型和日志表的主键,对目标表进行操作。进一步地,操作子单元包括:删除单元,用于在操作类型为删除操作时,根据日志表的主键删除目标表中与日志表的主键对应的记录;添加单元,用于在操作类型为新增操作或者修改操作,以及目标表中不存在与日志表的主键对应的记录时,将日志记录的内容作为新的记录添加在目标表中;更新单元,用于在操作类型为新增操作或者修改操作,以及目标表中已存在与日志表的主键对应的记录时,以日志记录的内容更新目标表中与日志表的主键对应的记录。进一步地,复制模块包括:第二复制单元,用于以目标数据库中已同步至目标数据库中的数据所对应的事务序列号加1为起点事务序列号,以本次采集的事务序列号为终点事务序列号,采用事务序列号递增的方式,将每个日志表中与事务序列号所对应的日志记录依次复制到目标表中。通过本发明,采用目标数据库将从源数据中采集到的事务序列号大于已同步至目标数据库中的数据所对应的事务序列号的事务序列号对应的日志记录复制到目标数据库中的技术手段,其中,源数据库和目标数据库都为异构数据库,即实现了异构数据库间的增量数据复制方法,进而使得增量复制方式不再需要依赖于数据库的类型,进而解决了相关技术中的增量数据库复制方法依赖于具体数据库的类型的问题。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1是根据本发明实施例的数据库间数据的复制方法的流程图;图2是根据本发明优选实施的源数据库的数据操作标示流程图;图3是根据本发明优选实施例的目标数据库的增量数据复制流程图;图4是根据本发明优选实施例的目标数据库的全量数据复制流程图;图5是根据本发明实施例的数据库间数据的复制装置的结构框图一;图6是根据本发明实施例的数据库间数据的复制装置的结构框图二;图7是根据本发明实施例的复制模块54的结构图一;图8是根据本发明实施例的复制模块54的结构图二。具体实施方式下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。在本实施例中提供了一种数据库间数据的复制方法,图1是根据本发明实施例的数据库间数据的复制方法的流程图,如图1所示,该流程包括如下步骤:步骤s102,目标数据库按照预设规则采集源数据库中的日志记录;其中,预设规则包括:日志记录的事务序列号大于已同步至目标数据库中的数据所对应的事务序列号;步骤s104,目标数据库将日志记录复制到目标数据库中的目标表中;其中,目标数据库和源数据库都为异构数据库。通过上述步骤,采用目标数据库将从源数据中采集到的事务序列号大于已同步至目标数据库中的数据所对应的事务序列号的事务序列号对应的日志记录复制到目标数据库中的技术手段,其中,源数据库和目标数据库都为异构数据库,即实现了异构数据库间的增量数据复制方法,进而使得增量复制方式不再需要依赖于数据库的类型,进而解决了相关技术中的增量数据库复制方法依赖于具体数据库的类型的问题。需要说明的是,源数据库为被复制的日志记录所在的数据库;目标数据库为目标表所在的数据库。一个元数据库可以给多个目标数据库同步数据,不同的目标数据库可以配置有不同的复制策略,比如:对用于容灾备份的目标数据库,可将采集周期设置为分钟级;对用于统计的目标数据库,可将采集周期设置为小时或天一级。在本发明的一个实施例中,在步骤s104之前,上述方法还可以包括:目标数据库获取目标数据库本次采集的所有日志记录所对应的事务序列号;按照预定规则从本次采集的所有日志记录所对应的事务序列号中选择一个事务序列号作为本次采集的事务序列号。具体的,可以通过以下方式确定本次采集的事务序列号:对于本次采集的每个日志记录所在的日志表,目标数据库获取日志表中所有日志记录对应的事务序列号中的最大事务序列号;目标数据库将所有日志表的最大事务序列号中的最小事务序列号作为本次采集的事务序列号。在本发明的一个实施例中,上述步骤s104可以有多种表现形式,例如第一种表现方式:针对每个日志记录所在的日志表,目标数据库根据日志表对应的主键,获取日志表中事务序列号最大的日志记录;目标数据库将日志表中事务序列号最大的日志记录复 制到目标表中;第二种表现方式:目标数据库以目标数据库中已同步至目标数据库中的数据所对应的事务序列号加1为起点事务序列号,以本次采集的事务序列号为终点事务序列号,采用事务序列号递增的方式,将每个日志表中与事务序列号所对应的日志记录依次复制到目标表中。对于第一种表现方式通过将日志表中事务序列号最大的日志记录复制到目标表中,对每一个变更日志记录,由于采用了最大事务序列号复制的方式,即采用只复制最终结果,省略了中间结果的复制,提高了复制效率,第一种表现方式由于省略了中间步骤,需要所有的更新记录一次提交(commit)以保证表间数据的一致性。对于第二种表现方式可以按照事物序列号递增的顺序追个复制,每个事务序列号处理完后都可以单独提交,避免第一种表现方式一次性提交的数据量过多可能引起的rollback段溢出问题。具体地,采用哪种表现方式,可以根据实际需要进行选择,也可以两者方式结合使用,并不限于此。对于第一种表现方式,目标数据库将日志表中事务序列号最大的日志记录复制到目标表中可以通过以下方式实现:目标数据库根据日志表的主键,查找主键对应的目标表;目标数据库根据日志表中事务序列号最大的日志记录的操作类型和日志表的主键,对目标表进行操作。具体地,目标数据库根据日志表中事务序列号最大的日志记录的操作类型和日志表的主键,对目标表进行操作包括以下至少之一方式:在操作类型为删除操作时,目标数据库根据日志表的主键删除目标表中与日志表的主键对应的记录;在操作类型为新增操作或者修改操作,以及目标表中不存在与日志表的主键对应的记录时,目标数据库将日志记录的内容作为新的记录添加在目标表中;在操作类型为新增操作或者修改操作,以及目标表中已存在与日志表的主键对应的记录时,目标数据库以日志记录的内容更新目标表中与日志表的主键对应的记录。上述方法通过记录表的增删改日志记录的方式实现变更数据的增量采集,同时给每个事务分配递增的事务序列号,确保在采集不同表时,保持表间的数据一致性。对于第二种表现方式,可以在每次处理完一个事务序列号后提交,也可以处理一批事务序列号后提交。在所有日志表处理完毕后,将本次采集的事务序列号记录到已采集的事务序列号中。为了更好地理解本申请,以下结合优选的实施例对本申请做进一步解释。本发明提供了一种优选的数据库间数据的复制方法,具体包括:源数据库的数据操作标示算法,目标数据库的增量数据复制算法,目标数据库的全量数据复制算法。(1)源数据库的数据操作标示算法:图2是根据本发明优选实施的源数据库的数据操作标示流程图,如图2所示,包括以下步骤:步骤s202,每一个需要同步的表(称为源表),在源数据库建立一个对应的操作日 志表。操作日志表除了包含源表的所有列,同时包含以下三列:事务(transaction)序列号:用于记录该操作对应的事务序列号;增删改操作标志:记录该日志对应的数据库操作,包括增加、修改、删除三种操作;操作时间:该操作发生的时间;确定源表的主键;被复制的源表必须有唯一的主键;该主键唯一地标识源表中每一条记录,用来查找日志记录或者进行其他操作。所有需要同步的源表必须包含“事务序列号”列,用于记录操作该条记录时所对应的事务序列号;步骤s204,每个事务(transaction)开始前,先申请事务序列号;步骤s206,在对源表中记录进行操作时,将申请的事务序列号填写到源表的“事务序列号”列,在操作完源表后,将已操作记录对应的操作日志写入日志表,写入日志和操作源表在同一个事务中提交(commit),确保日志表和源表的数据一致性;步骤s208,源数据库设置刷新最长时间间隔,超过最长刷新时间间隔的日志将被删除,避免日志表过大影响性能。(2)目标数据库的增量数据复制算法:图3是根据本发明优选实施例的目标数据库的增量数据复制流程图,如图3所示,包括以下步骤:步骤s302,目标数据库读取上次已同步的事务序列号,如果为第一次同步,已同步事务序列号为0。步骤s304,将源数据库中所有事务序列号大于已同步序列号的日志记录采集到目标数据库(相当于上述实施例中步骤s104)。步骤s306,计算本次采集的事务序列号:取已采集的每个日志表最大的事务序列号;取所有日志表最大序列号中最小的事务序列号为本次采集的事务序列号(相当于上述实施例中的本次采集的事务序列号)。步骤s308,判断是否采用一次提交的复制算法,如果是,执行步骤s310;如果否,执行步骤s312。步骤s310,数据复制算法1(相当于上述实施例中步骤s104的第一种表现形式):针对每个已采集到目标数据库的日志表,针对每个主键值,取日志表中事务序列号最大的记录,将其复制到目标表中。对于每个变更记录,由于采用了最大事务序列号复制的方式,省略了该记录中间变更过程的复制,提高了复制效率。本复制算法由于省略了中间步骤,需要所有的更新记录一次提交(commit)以保证表间数据的一致性。具体的复制算法:根据日志表的主键查找目标表,如果日志表的操作类型为删除,则根据主键删除目标表对应记录;如果日志记录的操作类型为新增或修改,且目标表对应的主键记录不存在,则根据日志的内容在目标表新增一条记录;如果日志记录的操作类型为新增或修改,且目标表对应的主键记录已存在,则以日志表的内容更新目标表的对应记录;所有记录更新完毕后一次性提交(commit)。步骤s312,数据复制算法2((相当于上述实施例中步骤s104的第二种表现形式)):本复制算法和数据复制算法1的区别是,按照事务序列号递增的顺序逐个复制,优点是每个事务序列号处理完后都可单独提交(commit),避免算法d)由于一次提交的数据量过多可能引起rollback段溢出问题。具体复制算法为:步骤1,以上次同步的事务序列号+1为起点,搜索所有的日志表,如有命中的记录,进行相应的数据复制操作;步骤2,事务序列号递增,搜索日志表,重复步骤1的操作;步骤3,事务序列号等于第c)步所获取的事务序列号后终止循环;步骤4,可以每次处理完一个事务序列号后提交,也可以处理一批事务序列号后提交(commit)复制任务。步骤s314,所有日志表处理完毕后,将本次采集的事务序列号记录到已采集的事务序列号中;(3)目标数据库的全量数据复制算法:图4是根据本发明优选实施例的目标数据库的全量数据复制流程图,如图4所示,包括以下步骤:步骤s402,将目标表清空后,将所有源表的数据全量复制到目标数据库;对于大业务量的oltp系统,在采集的过程中,可能有数据不断更新,全量采集后的数据不能确保表间的数据一致性;后续的三个步骤用来重新获得目标表间的数据一致性;步骤s404,取目标数据库中目标表的最大事务序列号;步骤s406,定时扫描源数据库的日志表的最大事务序列号;步骤s408,当获取的源数据库日志表最大事务序列号大于全量采集目标表的最大序列号时,启动增量复制;具体过程同“目标数据库的增量数据复制算法”步骤s410,增量采集完成后,目标数据库实现了整库数据一致性;将增量采集的事务序列号写入已采集事务序列号中。下面以两个源表table1和table2为示例,以伪码的方式说明三个算法中的关键部分。假设源数据库中有两个表需要复制,分别为table1和table2表1:table1{pk/*主键*/col1/*列1*/col2/*列2*/transaction_seq/*事务序列号*/}表2:table2{pk/*主键*/col1/*列1*/col2/*列2*/transaction_seq/*事务序列号*/}对应的两个日志表:table1_sync_log{pk/*主键*/col1/*列1*/col2/*列2*/transaction_seq/*事务序列号*/operation_flagoperation_time}table2_sync_log{pk/*主键*/col1/*列1*/col2/*列2*/transaction_seq/*事务序列号*/operation_flagoperation_time}几个主要算法的说明:源数据库的数据操作标示算法示例:update_transaction(i_table1_pk,i_table1_col1,i_table1_col2,i_table2_pk,i_table2_col1,i_table2_col2,)目标数据库获取复制事务序列号算法示例,即步骤s306:目标数据库复制算法1,即步骤s310:目标数据库复制算法2,即步骤s312:本发明实施例通过记录表的增删改日志的方式实现变更数据的增量采集,同时给每个事务分配递增的事务序列号,确保在采集不同表时,保持表间的数据一致性。本发明的特点是源数据库只负责记录数据库操作日志和事务序列号,目标数据库负责采集算法。本发明的另一特点是数据复制时只复制最终结果,省略了记录修改中间结果的复制,提高了复制效率。例如,一条记录在数据同步间隔期间发生了多次变更,在日志表中有多条对应的操作记录,目标数据库复制数据时只根据事务序列号最大的日志做更新操作,忽略了中间的更新过程,提升了同步效率。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。在本实施例中还提供了一种数据库间数据的复制装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图5是根据本发明实施例的数据库间数据的复制装置的结构框图一,如图5所示,该装置包括:采集模块52,用于按照预设规则采集源数据库中的日志记录;其中,预设规则包括:日志记录的事务序列号大于已同步至目标数据库中的数据所对应的事务序列号;复制模块54,与上述采集模块52连接,用于将日志记录复制到目标数据库中的目标表中;其中,目标数据库和源数据库都为异构数据库。通过上述装置,实现了源数据库和目标数据库间的增量复制方法,而源数据库和目标数据库为异构数据库,进而使得增量复制方式不再需要依赖于数据库的类型,实现了异构数据库间的增量数据复制方法,进而解决了相关技术中的增量数据库复制方法依赖于具体数据库的类型的问题。需要说明的是,源数据库为被复制的日志记录所在的数据库;目标数据库为目标表 所在的数据库。一个元数据库可以给多个目标数据库同步数据,不同的目标数据库可以配置有不同的复制策略,比如:对用于容灾备份的目标数据库,可将采集周期设置为分钟级;对用于统计的目标数据库,可将采集周期设置为小时或天一级。图6是根据本发明实施例的数据库间数据的复制装置的结构框图二,如图6所示,上述装置还包括:获取模块62,用于获取目标数据库本次采集的所有日志记录所对应的事务序列号;选择模块64,与上述获取模块62连接,用于按照预定规则从本次采集的所有日志记录所对应的事务序列号中选择一个事务序列号作为本次采集的事物序列号。需要说明的是,上述选择模块64可以包括:第一获取单元642,用于对于本次采集的每个日志记录所在的日志表,获取日志表中所有日志记录对应的事务序列号中的最大事务序列号;比较单元644,用于将所有日志表的最大事务序列号中的最小事务序列号作为本次采集的事务序列号。记录模块66,用于记录本次采集的事务序列号。在本发明的一个实施例中,上述复制模块54可以有多种表现方式,图7是根据本发明实施例的复制模块54的结构图一,如图7所示,上述复制模块54可以包括:第二获取单元542,用于针对每个日志记录所在的日志表,根据日志表对应的主键,获取日志表中事务序列号最大的日志记录;第一复制单元544,用于将日志表中事务序列号最大的日志记录复制到目标表中。第一复制单元544可以包括:查找子单元5442,用于根据日志表的主键,查找主键对应的目标表;操作子单元5444,用于根据日志表中事务序列号最大的日志记录的操作类型和日志表的主键,对目标表进行操作。需要说明的是,上述操作子单元5444可以包括删除单元和/或添加单元和/或更新单元(图中未示出):删除单元,用于在操作类型为删除操作时,根据日志表的主键删除目标表中与日志表的主键对应的记录;添加单元,用于在操作类型为新增操作或者修改操作,以及目标表中不存在与日志表的主键对应的记录时,将日志记录的内容作为新的记录添加在目标表中;更新单元,用于在操作类型为新增操作或者修改操作,以及目标表中已存在与日志表的主键对应的记录时,以日志记录的内容更新目标表中与日志表的主键对应的记录。通过包含图7所示的复制模块54的装置,实现了将日志表中事务序列号最大的日志记录复制到目标表中,对每一个变更日志记录,通过采用最大事务序列号复制的方式,即采用只复制最终结果,省略了中间结果的复制,提高了复制效率,并且需要所有的更新记录一次提交(commit)以保证表间数据的一致性。图8是根据本发明实施例的复制模块54的结构图二,如图8所示,上述复制模块54可以包括:第二复制单元82,用于以目标数据库中已同步至目标数据库中的数据所 对应的事务序列号加1为起点事务序列号,以本次采集的事务序列号为终点事务序列号,采用事务序列号递增的方式,将每个日志表中与事务序列号所对应的日志记录依次复制到目标表中。通过包含图8所示的复制模块54的装置,可以按照事物序列号递增的顺序追个复制,每个事务序列号处理完后都可以单独提交,避免第一种表现方式一次性提交的数据量过多可能引起的rollback段溢出问题具体地,在上述数据库间数据的复制装置中包含哪种结构的复制模块54,可以根据实际需要进行选择,也可以结合使用,并不限于此。需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述各个模块均位于同一处理器中;或者,上述各个模块分别位于多个处理器中。本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:s1,按照预设规则采集源数据库中的日志记录;其中,预设规则包括:日志记录的事务序列号大于已同步至目标数据库中的数据所对应的事务序列号;s2,将日志记录复制到目标数据库中的目标表中;其中,目标数据库和源数据库都为异构数据库。可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何 修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1