一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种SQLite数据库远程实时增量同步方法及系统与流程

2022-06-05 08:09:41 来源:中国专利 TAG:

一种sqlite数据库远程实时增量同步方法及系统
技术领域
1.本发明涉及一种数据库增量同步方法及系统,特别是一种sqlite数据库远程实时增量同步方法及系统。


背景技术:

2.随着移动互联网、物联网的发展,基于sqlite数据库的应用越来越多,sqlite为独立应用和设备提供本地化存储,它强调资源节约、高性能、可靠性、独立性和易用性。sqlite数据库由于其简单、自包含、零配置等特点方便了应用的开发,用户只需要在设备或应用所在的服务器简单配置一下就能使用一个功能丰富的关系型数据库,尤其适用于嵌入式应用。随着业务的扩大,面临着每套设备自带一个sqlite数据库,运营人员很难拥有一个集所有设备数据于一体的全集数据库,这就产生了sqlite数据库实时同步到远程数据库的需求。对于这个场景,实现多源线上数据库到远程中心数据库的实时增量同步存在以下实现难点:1、应用多且分散,面临的现场环境各不相同,不能直接将各个应用库与中心数据库进行连接;2、生产环境中的应用或设备改造麻烦,数据的同步工作不能影响生产运行,同步程序需要采用旁路部署;3、需要具备良好的扩展性,源端的数据库会不断增加,对整个数据同步架构的扩展性和性能有很高的要求。
3.业界已经有很多的数据实时同步方案,如基于binlog的mysql数据库实时增量同步(参考:苏子权.基于mysql binlog的数据增量同步系统的设计与实现[d].南京大学,2018.)、基于goldengate的oracle数据库实时增量同步(参考:卓凤艳,崔巍,姜娜娜,王凡.基于oracle goldengate的异构数据库实时同步研究与应用[j].信息技术与信息化,2019(06):147-148 151.),但是对于sqlite数据库的远程实时增量同步的解决方案很少。目前,基于sqlite数据库远程实时增量同步的研究中,实时增量同步的解决方案主要有两种:1、sqlite数据库应用开发时预先设计好同步架构;2、通过定时任务。这两种方法都有局限性,首先对于第一种方案只适用于sqlite数据库应用与数据远程增量同步的需求同时设计、同时开发并同时投入使用,或者修改生产环境中正在运行的程序。第二种方案虽然可以做到不用修改生产环境的应用程序,实时同步的实现方式一般都是缩短定时同步任务的时间间隔来达到伪实时,这种方式通过定时任务去查询数据并进行比对查看是否有增量数据,然后取出增量数据并发送给服务器。这种方式不是增量数据触发式,而是定时试错,没有增量数据的情况下,程序都在无效运行,给应用所在服务器带来了很多不必要的开销(参考:陈广明,.基于sqlite的分布式数据同步技术研究与实现[j]2013,和黄东,.基于sqlite的移动嵌入式数据库同步系统的研究和开发[j]2009,(11))。


技术实现要素:

[0004]
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种sqlite数据库远程实时增量同步方法及系统。
[0005]
为了解决上述技术问题,本发明公开了一种sqlite数据库远程实时增量同步方法
及系统。
[0006]
一种sqlite数据库远程实时增量同步系统,包括:客户端、消息队列和服务端;
[0007]
其中,客户端实现系统中sqlite数据库文件创建和修改的监听以及增量数据的获取和发送增量数据到消息队列;
[0008]
消息队列实现客户端与服务端的解耦,sqlite数据库所在的客户端与中心数据库所在的服务端通过消息队列进行交互;
[0009]
服务端实现对消息队列的监控,并从消息队列中取出增量数据,根据约定的数据格式解析入库。
[0010]
所述客户端与基于sqlite数据库的应用程序部署在同一台设备上;所述客户端包括:文件监听模块、触发器配置模块、增量数据获取模块和增量数据发送模块;四个模块通过数据流推动相互之间的调用,四个模块之间为松耦合关系;
[0011]
其中,触发器配置模块自动创建触发器,触发器自动将增量数据写入临时表中,根据触发器的特性,源表数据的改变和临时表数据的改变做为一个事务,整个事务执行完毕之后引发sqlite数据文件的改变,触发文件监听模块的执行;
[0012]
文件监听模块通知增量数据获取模块从临时表中获取增量数据;
[0013]
增量数据获取模块获取到增量数据后调用增量数据发送模块将数据进行加密并推送到消息队列中;
[0014]
当应用程序执行业务操作时,触发器配置模块创建的触发器在临时表中插入增量数据,文件监听模块捕获sqlite数据库文件的改变;文件监听模块推动增量数据获取模块获取增量数据,增量数据获取模块推动增量数据发送模块向消息队列中发送增量数据。
[0015]
所述客户端中的文件监听模块,包括:
[0016]
通过监听sqlite数据库的文件,捕获数据库文件发生改变的时间点;文件系统上的sqlite数据库文件发生改变时,监听程序获取到该事件;通过该事件触发增量数据的获取和增量的数据的发送,推动最终的数据解析入库;通过数据库文件的监听触发整个数据实时同步的过程。
[0017]
所述客户端中的触发器配置模块,包括:
[0018]
基于sqlite数据库的jdbc驱动,程序读取配置文件获取需要进行数据同步的源数据表,根据配置触发器的语法,配置此数据库表的数据新增、修改以及删除触发器,同时创建此数据库表对应的临时数据表,该临时数据表存放增量数据,采集程序从该临时表中查询增量数据;临时表相较于源表,增加operate_type和operate_time字段,分别表示操作类型以及数据操作时间,触发器自动填充这两个字段;当此数据库表的数据发生数据的新增、修改和删除时,对应的触发器将增量数据存放到对应的临时表中;根据触发器的特性,源表数据的改变和引发触发器往临时表写入增量数据的动作封装在一个事务中完成,若数据发生改变,则引发sqlite文件的改变,并触发文件监听模块,从而捕获数据发生改变的时间点。
[0019]
所述客户端中的增量数据获取模块,包括:
[0020]
该模块在文件监听模块监听到文件改变事件后会触发执行;增量数据获取模块只操作源数据表对应的临时表,每个临时表均匹配一个操作时间戳,增量数据获取模块从临时表中读取时间戳之后的数据,即最新的增量数据,读取成功之后更新此时间戳为当前时
间。
[0021]
所述客户端中的增量数据发送模块,包括:
[0022]
该模块读取配置信息,连接消息队列,将获取到的增量数据转换成约定的格式,调用消队列的发送接口,将增量数据加密并推送到消息队列。
[0023]
所述消息队列包括:
[0024]
消息队列连接客户端与服务端,提供数据传输的通道,数据到达消息队列后触发服务端的数据解析入库程序执行数据的处理程序;消息队列部署在公网中;消息队列上传输的数据经过客户端中的增量数据发送模块加密,在服务端增量数据获取模块中,采用约定解密方法进行解密。
[0025]
所述服务端包括:
[0026]
服务端部署在内网中,只能访问消息队列;服务端从消息队列中取得数据并解密之后,按照约定的数据格式进行数据解析入库;服务端对于数据库的类型无限定。
[0027]
一种sqlite数据库远程实时增量同步方法,包括以下步骤:
[0028]
步骤一,客户端从sqlite数据库中读取增量数据,加密推送到消息队列中;
[0029]
步骤二,消息队列通知服务端从消息队列中拉取数据,解密并根据约定的格式解析入库;
[0030]
其中,在客户端、消息队列和服务端中传输的数据为json结构的数据消息,传输的数据是key-value结构的数据,在key-value结构中,key是对应目标数据库中的字段,value对应目标数据库中字段的值,数据消息中还包括数据库表名、客户端编号和数据采集时间。
[0031]
步骤一中包括:触发器配置模块、文件监听模块、增量数据获取模块和增量数据发送模块;
[0032]
步骤一中所述触发器配置模块包括以下步骤:创建临时表和触发器;触发器配置模块读取配置文件获取sqlite数据库中需要远程同步的数据库表,依据创建数据库表的语法,调用jdbc驱动连接sqlite数据库,为每个需要同步的数据库表创建对应的临时表;临时表的字段来源于对应的源表,并增加操作类型和操作时间两个字段;依据创建触发器的语法,调用jdbc驱动连接sqlite数据库依次为需要同步的数据库表创建新建数据、修改数据和删除数据的触发器,每个触发器的执行任务都是将源表改变的数据插入到临时表中,并填充操作类型字段和操作时间字段,新建数据的触发器操作类型字段填入新建,修改数据的触发器操作类型字段填入修改,删除数据的触发器操作类型字段填入删除;操作时间字段填入执行此动作时的系统时间;临时表与触发器创建完毕后,触发器配置模块的工作结束;源表新增、修改和删除数据创造的增量数据被触发器同步到临时表中;源表新增、修改和删除数据与触发器将增量数据写入临时表作为一个事务打包执行;sqlite数据改变引发操作系统上的sqlite文件的改变,并被步骤一中的文件监听模块获取;
[0033]
步骤一中所述文件监听模块包括以下步骤:通过apache commons io实现sqlite数据库文件的监听,通过一个线程按照固定频率扫描目录,监听到sqlite数据库文件发生改变后,调用步骤一中所述的增量数据获取模块进行增量数据的读取;
[0034]
步骤一中所述增量数据获取模块包括以下步骤:增量数据获取模块从临时表对应的时间戳文件中获取最新的时间戳,与临时表中的操作时间字段进行比较,从临时表读取操作时间大于等于这个时间戳的所有记录,即当前的增量数据;获取完成之后调用步骤一
中所述的增量数据发送模块,并更新时间戳为当前的系统时间;
[0035]
步骤一中所述增量数据发送模块包括以下步骤:增量数据发送模块通过读取配置文件获取消息队列的配置信息,包括队列的地址、端口和队列名称,增量数据发送模块连接消息队列之后,将增量数据进行加密,并推送到消息队列;
[0036]
步骤二中包括增量数据提取模块以及数据解析入库模块;其中,增量数据提取模块监听消息队列,消息队列有新的数据时通知增量数据提取模块去处理,增量数据提取模块从消息队列中取出增量数据,按照约定解密方式进行解密即获取到约定的json格式的数据,继而调用数据解析入库模块进行数据的解析入库;
[0037]
步骤二中所述增量数据提取模块包括以下步骤:增量数据提取模块通过读取配置文件获取消息队列的配置信息,包括队列的地址、端口和队列名称,增量数据提取模块连接消息队列之后,监听消息队列;当消息队列中有新的数据时通知此模块去消费;获取到增量数据之后,按照约定的解密方式进行解密,解密完之后得到的消息即按照约定格式封装的json格式的数据,包括客户端的编号、采集时间、数据库表名、各字段名和各个字段对应的数据值;继而调用步骤二中的数据解析入库模块执行数据最终的入库操作;
[0038]
步骤二中所述数据解析入库模块包括以下步骤:得到按照约定格式封装的json格式的数据之后,从中解析出需要同步的数据库表名和各个字段以及对应的字段值;根据操作类型字段调用对应的数据库处理程序,即完成数据的同步操作。
[0039]
有益效果:
[0040]
1、相比现有的通过定时任务的伪实时数据同步方式,本发明实现了数据远程同步的高效实时性。整个数据同步的过程是通过事件进行触发,通过监听sqlite数据库文件的改变触发客户端增量数据的获取、将增量数据发送到消息队列、消息队列触发服务端的数据解析入库程序将数据解析入库,整个过程的时间延迟主要是客户端、消息队列与服务端之间通信的网络延迟,达到了数据实时性同步的要求。
[0041]
2、本发明客户端采用旁路的部署方式,通过数据库自带的触发器获取增量数据,客户端能够自动为相应的数据库表创建触发器,客户端程序的运行不会影响原有的应用。
[0042]
3、本发明整个架构是多数据源通过消息队列汇聚到中心数据库,瓶颈在消息队列与中心数据库的性能,客户端的数据采集程序面临的性能要求不会随时间有明显的增长。而对于消息队列以及中心数据库的性能扩容,通过部署高可用的集群就能轻易实现。同时本发明的架构不限制中心数据库的类型,可以是sqlite数据库,也可以是其他关系型数据库,或者文件型数据库,整个技术方案的架构具有良好的扩展性。
附图说明
[0043]
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0044]
图1为本发明系统功能架构图。
[0045]
图2为本发明网络拓扑示意图。
[0046]
图3为本发明流程示意图。
具体实施方式
[0047]
本发明基于文件探测的思路提出了以客户端、消息队列、服务端为核心的sqlite数据远程实时增量同步的解决方案。本发明基于sqlite数据库是单文件,数据的改变会反映到sqlite数据库单文件的改变,只要监控sqlite数据库文件是否改变即知道数据发生改变的时间点的原理实现了数据同步的实时性,即本发明通过监控sqlite数据库文件的改变,从而触发增量数据的获取、传输、解析与入库,整个过程通过数据库文件改变这一事件进行驱动,实现了sqlite数据同步的实时性。
[0048]
本发明通过监控sqlite数据库文件的改变,从而触发增量数据的获取、传输、解析与入库,整个过程通过数据库文件改变这一事件进行驱动,实现了sqlite数据同步的实时性,通过消息队列实现客户端数据库与中心数据库的解耦,通过约定的json数据格式实现数据的一致理解。
[0049]
如图1所示,一种sqlite数据库远程实时增量同步系统包括:客户端、消息队列和服务端;
[0050]
其中,客户端实现系统中sqlite数据库文件创建和修改的监听以及增量数据的获取和发送增量数据到消息队列;
[0051]
消息队列实现客户端与服务端的解耦,sqlite数据库所在的客户端与中心数据库所在的服务端通过消息队列进行交互;
[0052]
服务端实现对消息队列的监控,并从消息队列中取出增量数据,根据约定的数据格式解析入库。
[0053]
所述客户端与基于sqlite数据库的应用程序部署在同一台设备上;所述客户端包括:文件监听模块、触发器配置模块、增量数据获取模块和增量数据发送模块;四个模块通过数据流推动相互之间的调用,四个模块之间为松耦合关系;
[0054]
其中,触发器配置模块自动创建触发器,触发器自动将增量数据写入临时表中,根据触发器的特性,源表数据的改变和临时表数据的改变做为一个事务,整个事务执行完毕之后引发sqlite数据文件的改变,触发文件监听模块的执行;
[0055]
文件监听模块通知增量数据获取模块从临时表中获取增量数据;
[0056]
增量数据获取模块获取到增量数据后调用增量数据发送模块将数据进行加密并推送到消息队列中;
[0057]
当应用程序执行业务操作时,触发器配置模块创建的触发器在临时表中插入增量数据,文件监听模块捕获sqlite数据库文件的改变;文件监听模块推动增量数据获取模块获取增量数据,增量数据获取模块推动增量数据发送模块向消息队列中发送增量数据。
[0058]
所述客户端中的文件监听模块,包括:
[0059]
通过监听sqlite数据库的文件,捕获数据库文件发生改变的时间点;文件系统上的sqlite数据库文件发生改变时,监听程序获取到该事件;通过该事件触发增量数据的获取和增量的数据的发送,推动最终的数据解析入库;通过数据库文件的监听触发整个数据实时同步的过程。
[0060]
所述客户端中的触发器配置模块,包括:
[0061]
基于sqlite数据库的jdbc驱动,程序读取配置文件获取需要进行数据同步的源数据表,根据配置触发器的语法,配置此数据库表的数据新增、修改以及删除触发器,同时创
建此数据库表对应的临时数据表,该临时数据表存放增量数据,采集程序从该临时表中查询增量数据;临时表相较于源表,增加operate_type和operate_time字段,分别表示操作类型以及数据操作时间,触发器自动填充这两个字段;当此数据库表的数据发生数据的新增、修改和删除时,对应的触发器将增量数据存放到对应的临时表中;根据触发器的特性,源表数据的改变和引发触发器往临时表写入增量数据的动作封装在一个事务中完成,若数据发生改变,则引发sqlite文件的改变,并触发文件监听模块,从而捕获数据发生改变的时间点。
[0062]
所述客户端中的增量数据获取模块,包括:
[0063]
该模块在文件监听模块监听到文件改变事件后会触发执行;增量数据获取模块只操作源数据表对应的临时表,每个临时表均匹配一个操作时间戳,增量数据获取模块从临时表中读取时间戳之后的数据,即最新的增量数据,读取成功之后更新此时间戳为当前时间。
[0064]
所述客户端中的增量数据发送模块,包括:
[0065]
该模块读取配置信息,连接消息队列,将获取到的增量数据转换成约定的格式,调用消队列的发送接口,将增量数据加密并推送到消息队列。
[0066]
所述消息队列包括:
[0067]
消息队列连接客户端与服务端,提供数据传输的通道,数据到达消息队列后触发服务端的数据解析入库程序执行数据的处理程序;消息队列部署在公网中;消息队列上传输的数据经过客户端中的增量数据发送模块加密,在服务端增量数据获取模块中,采用约定解密方法进行解密。
[0068]
所述服务端包括:
[0069]
服务端部署在内网中,只能访问消息队列;服务端从消息队列中取得数据并解密之后,按照约定的数据格式进行数据解析入库;服务端对于数据库的类型无限定。
[0070]
如图2所示,本发明的网络架构包括客户端、消息队列和服务端。客户端即需要被同步的基于sqlite数据库应用的服务器,在上面部署了增量数据采集程序。对于本发明,客户端只需要能够访问消息队列服务器指定的端口,不作其他的网络权限要求,因此出于安全考虑,只需按需放开网络权限,尽最大的程度保护本地网络。客户端通常有很多平等的服务器,它们都是正在运行的生产环境的应用,需要上传数据给服务端。客户端的数量上限取决于决策者需要同步的数据资源数量、消息队列服务器的吞吐能力以及服务端的消费能力。随着客户端数量的增加,可以通过集群部署等方式方便的提高消息队列服务器以及服务端程序的处理能力,因此此架构具有良好的可扩展性。
[0071]
消息队列服务器部署在公网上,如阿里云、腾讯云等云服务器,对外只开放其业务端口,如kafka消息队列,只需开放其默认的9092端口。消息队列以集群的方式进行部署,以提供稳定、高可用的消息传输通道。消息队列服务器接受下游多个客户端程序推送过来的数据,并推送给上游的服务端程序。消息队列上传输的数据需要经过加密处理。
[0072]
服务端即中心数据库所在的服务器,在上面部署了服务端数据解析入库程序。服务端部署在内网环境中,与客户端程序隔离不发生直接的联系。服务端数据解析入库程序只访问消息队列的业务端口,不需要其他的网络权限。
[0073]
如图3所示,一种sqlite数据库远程实时增量同步方法,根据数据流向,具体包括
以下步骤:
[0074]
步骤一:客户端从sqlite库中读取增量数据加密推送到消息队列中。
[0075]
步骤二:消息队列通知服务端从消息队列中拉取数据解密之后根据约定的格式解析入库。
[0076]
其中,在客户端、消息队列、服务端中传输的数据为json结构的数据消息,传输的数据是key-value结构的数据,在key-value结构中,key是对应目标数据库中的字段,而value则对应目标数据库中字段的值,另外数据消息中还包括数据库表名、客户端编号、数据采集时间等描述性信息。
[0077]
接着,继续对本发明的sqlite数据库远程实时增量数据同步方法的具体流程进行进一步的说明。
[0078]
步骤一中包括触发器配置模块、文件监听模块、增量数据获取模块和增量数据发送模块。这四个模块的关系是:触发器配置模块自动创建触发器,触发器自动将增量数据写入临时表中,根据触发器的特性,源表数据的改变、临时表数据的改变是一个事务,整个事务执行完毕之后引发了sqlite数据文件的改变从而触发了文件监听模块,文件监听模块通知增量数据获取模块从临时表中获取增量数据,然后调用增量数据发送模块将数据进行加密并推送到消息队列中。即触发器配置模块创建的触发器会推动文件监听模块、文件监听模块推动增量数据获取模块,增量数据获取模块推动增量数据发送模块。这四个模块通过数据流推动相互之间的调用,之间是解耦的。
[0079]
具体的,步骤一中的触发器配置模块工作过程如下:触发器配置模块的主要工作是创建临时表和触发器。触发器配置模块读取配置文件获取sqlite数据库中需要远程同步的数据库表,然后依据创建数据库表的语法,调用jdbc驱动连接sqlite数据库为每个需要同步的数据库表创建对应的临时表。临时表的字段都来源于对应的源表,另外再加上操作类型、操作时间两个字段。然后依据创建触发器的语法,调用jdbc驱动连接sqlite数据库依次为这些表创建新建数据、修改数据、删除数据的触发器,每个触发器的执行任务都是将源表改变的数据原封不动的插入到临时表中,并填充操作类型字段和操作时间字段,新建数据的触发器操作类型字段填入新建,修改数据的触发器操作类型字段填入修改,删除数据的触发器操作类型字段填入删除。操作时间字段填入执行此动作时的系统时间。临时表与触发器都创建完毕之后,触发器配置模块的工作就结束了。源表新增、修改、删除数据创造的增量数据都会被触发器同步到临时表中。这一过程是由sqlite数据库自动完成的,不需要程序进行干预,并且源表新增、修改、删除数据与触发器将增量数据写入临时表是作为一个事务打包执行的,保证了源表新增、修改、删除成功的同时,临时表必然会成功写入增量数据,源表数据操作异常,则临时表中必定不会出现此增量数据。sqlite数据改变会引发操作系统上的sqlite文件的改变,这一改变会被步骤一中的文件监听模块获取。
[0080]
具体的,步骤一中的文件监听模块工作过程如下:首先数据的改变,即sqlite数据库文件的改变,而sqlite数据库是单文件存储,从而只需要监听这一个sqlite单文件,只要此文件发生了改变,则sqlite数据库必然发生了改变,在这个时间点上查询临时表就能获取到实时的增量数据,这就是本发明sqlite实时同步的理论基础。本方案通过apache commons io实现文件的监听,其原理是通过一个线程按照固定频率扫描目录,此线程能够实现秒级的高效的文件监听,且系统开销很小。监听到sqlite文件发生改变后,调用步骤一
中的增量数据获取模块进行增量数据的读取。
[0081]
具体的,步骤一中的增量数据获取模块的工作过程如下:增量数据获取模块的工作对象是临时表,每个临时表配了一个时间戳,这个时间戳保存在一个单独的文件中。增量数据获取模块从这个文件中获取最新的时间戳,与临时表中的操作时间字段进行比较,从临时表读取操作时间大于等于这个时间戳的所有记录,即当前的增量数据。获取完成之后调用步骤一中的增量数据发送模块,并更新时间戳为当前的系统时间。
[0082]
具体的,步骤一中的增量数据发送模块的工作过程如下:增量数据发送模块的工作对象是消息队列,通过读取配置文件获取消息队列的配置信息,如队列的地址、端口、队列名称等,增量数据发送模块连接消息队列之后,将增量数据进行加密,然后推送到消息队列。
[0083]
步骤二中包括增量数据提取模块以及数据解析入库模块。增量数据提取模块监听消息队列,消息队列有新的数据会通知增量数据提取模块去消费,增量数据提取模块从消息队列中取出增量数据,按照约定解密方式进行解密即获取到了约定的json格式的数据,继而调用数据解析入库模块进行数据的解析入库。
[0084]
具体的,步骤二中的增量数据提取模块的工作过程如下:增量数据提取模块的工作对象是消息队列,通过读取配置文件获取消息队列的配置信息,如队列的地址、端口、队列名称等,增量数据提取模块连接消息队列之后,监听消息队列。当消息队列中有新的数据时会通知此模块去消费。获取到增量数据之后,需要按照约定的解密方式进行解密,解密完之后得到的消息即按照约定格式封装的json格式的数据,包括客户端的编号、采集时间、数据库表名、各字段名、各个字段对应的数据值等信息。继而调用步骤二中的数据解析入库模块执行数据最终的入库操作。
[0085]
具体的,步骤二中的数据解析入库模块的工作过程如下:得到按照约定格式封装的json格式的数据之后,能够从中解析出需要同步的数据库表名、各个字段以及对应的字段值。每条数据还有一个操作类型的字段,此字段表明此增量数据是新增、修改还是删除,根据此字段调用对应的数据库处理程序,即完成了数据的同步操作。需要说明的是步骤二中数据解析入库模块对中心数据库不做具体要求,可以是sqlite数据库、mysql、oracle或者大数据类型的数据库。
[0086]
本发明提供了一种sqlite数据库远程实时增量同步方法及系统的思路及方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献