CN110389768A - 一种二次构建镜像的方法和装置 - Google Patents
一种二次构建镜像的方法和装置 Download PDFInfo
- Publication number
- CN110389768A CN110389768A CN201910578614.0A CN201910578614A CN110389768A CN 110389768 A CN110389768 A CN 110389768A CN 201910578614 A CN201910578614 A CN 201910578614A CN 110389768 A CN110389768 A CN 110389768A
- Authority
- CN
- China
- Prior art keywords
- mirror image
- image planes
- image
- secondary building
- planes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明实施例公开了一种二次构建镜像的方法和装置,该方法包括:在二次构建镜像时,在对每一层镜像层进行编译之前,从预设的存储介质中查找是否存储有与当前镜像层对应的参数;当查找到存储介质中存储有与当前镜像层对应的参数时,获取当前镜像层的执行命令;根据执行命令获取与当前镜像层对应的镜像身份标识ID,并将获取的镜像ID返回二次构建镜像的主进程,以使主进程根据所述镜像ID继续构建镜像。通过该实施例方案,能够更友好的利用缓存,避免了在更改小部分内容二次构建镜像时需要较长时间,提高了镜像二次构建的效率。
Description
技术领域
本发明实施例涉及镜像构建技术,尤指一种二次构建镜像的方法和装置。
背景技术
在更改代码、文本文件或环境变量后,考虑到镜像所需要的文件并非全部更改,现有的技术是全部层使用缓存,但是目前技术中使用缓存时会产生一定的计算量,比对文件是否有更改,比对过程非常浪费时间,从而降低了较大文件二次构建镜像的速度。
发明内容
本发明实施例提供了一种二次构建镜像的方法和装置,能够更友好的利用缓存,避免在更改小部分内容二次构建镜像时需要较长时间,提高镜像二次构建的效率。
为了达到本发明实施例目的,本发明实施例提供了一种二次构建镜像的方法,所述方法可以包括:
在二次构建镜像时,在对每一层镜像层进行编译之前,从预设的存储介质中查找是否存储有与当前镜像层对应的参数;
当查找到所述存储介质中存储有与当前镜像层对应的参数时,获取所述当前镜像层的执行命令;
根据所述执行命令获取与所述当前镜像层对应的镜像身份标识ID,并将获取的镜像ID返回二次构建镜像的主进程,以使所述主进程根据所述镜像ID继续构建镜像。
在本发明的示例性实施例中,所述方法还可以包括:在通过应用容器引擎脚本Dockerfile首次制作镜像时,对需要使用缓存的所有镜像层进行标识,并将用于标识的参数存储到所述预设的存储介质中。
在本发明的示例性实施例中,所述参数可以包括:数字数组;
所述对需要使用缓存的所有镜像层进行标识包括:针对使用缓存的每一个镜像层,在该镜像层的构建镜像的命令行中输入所述数字数组,用以标识该镜像层。
在本发明的示例性实施例中,所述方法还可以包括:对与所述需要使用缓存的所有镜像层一一对应的所有数字数组进行排序后存入所述预设的存储介质中。
在本发明的示例性实施例中,所述方法还可以包括:当查找到所述存储介质中存储有与当前镜像层对应的参数时,返回第一信息,并根据所述第一信息获取所述当前镜像层的执行命令;当查找到所述存储介质中未存储有与当前镜像层对应的参数时,返回第二信息,并根据所述第二信息进入下一层镜像层的参数查找操作。
为了达到本发明实施例目的,本发明实施例还提供了一种二次构建镜像的装置,所述装置可以包括:查找模块、第一处理模块和第二处理模块;
所述查找模块,可以用于在二次构建镜像时,在通过二次构建镜像的主进程对每一层镜像层进行编译之前,从预设的存储介质中查找是否存储有与当前镜像层对应的参数;
所述第一处理模块,可以用于当所述查找模块查找到所述存储介质中存储有与当前镜像层对应的参数时,获取所述当前镜像层的执行命令;
所述第二处理模块,可以用于根据所述执行命令获取与所述当前镜像层对应的镜像身份标识ID,并将获取的镜像ID返回二次构建镜像的主进程,以使所述主进程根据所述镜像ID继续构建镜像。
在本发明的示例性实施例中,所述装置还可以包括:存储模块;
所述存储模块,可以用于在通过应用容器引擎脚本Dockerfile首次制作镜像时,对需要使用缓存的所有镜像层进行标识,并将用于标识的参数存储到所述预设的存储介质中。
在本发明的示例性实施例中,所述参数可以包括:数字数组;
所述存储模块对需要使用缓存的所有镜像层进行标识可以包括:针对使用缓存的每一个镜像层,在该镜像层的构建镜像的命令行中输入所述数字数组,用以标识该镜像层。
在本发明的示例性实施例中,所述存储模块还可以用于:对与所述需要使用缓存的所有镜像层一一对应的所有数字数组进行排序后存入所述预设的存储介质中。
在本发明的示例性实施例中,所述查找模块还可以用于:当查找到所述存储介质中存储有与当前镜像层对应的参数时,返回第一信息,以使所述第一处理模块根据所述第一信息获取所述当前镜像层的执行命令;当查找到所述存储介质中未存储有与当前镜像层对应的参数时,返回第二信息,并根据所述第二信息进入下一层镜像层的参数查找操作。
本发明实施例的有益效果可以包括:
本发明实施例的二次构建镜像的方法可以包括:在二次构建镜像时,在对每一层镜像层进行编译之前,从预设的存储介质中查找是否存储有与当前镜像层对应的参数;当查找到所述存储介质中存储有与当前镜像层对应的参数时,获取所述当前镜像层的执行命令;根据所述执行命令获取与所述当前镜像层对应的镜像身份标识ID,并将获取的镜像ID返回二次构建镜像的主进程,以使所述主进程根据所述镜像ID继续构建镜像。通过该实施例方案,能够更友好的利用缓存,避免了在更改小部分内容二次构建镜像时需要较长时间,提高了镜像二次构建的效率。
本发明实施例的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明实施例的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明实施例技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明实施例的技术方案,并不构成对本发明实施例技术方案的限制。
图1为本发明实施例的二次构建镜像的方法流程图;
图2为本发明实施例的二次构建镜像的装置组成框图;
图3为本发明实施例的二次构建镜像的装置工作示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
为了达到本发明实施例目的,本发明实施例提供了一种二次构建镜像的方法,如图1所示,所述方法可以包括S101-S103:
S101、在二次构建镜像时,在对每一层镜像层进行编译之前,从预设的存储介质中查找是否存储有与当前镜像层对应的参数。
在本发明的示例性实施例中,该参数可以为镜像层的编号,在二次构建镜像时,每一层镜像层在编译之前,可以在存储介质中查找是否有该镜像层的编号,如果有则说明该镜像层是需要使用缓存的镜像层或者是不需要使用缓存的镜像层。
在本发明的示例性实施例中,所述方法还可以包括:在通过应用容器引擎脚本Dockerfile首次制作镜像时,对需要使用缓存的所有镜像层进行标识,并将用于标识的参数存储到所述预设的存储介质中。
在本发明的示例性实施例中,在通过Dockerfile第一次构建镜像时,可以对需要使用缓存的所有镜像层进行标识,或者对不需要使用缓存的所有镜像层进行标识,具体可以根据操作效率和需求来确定。如果对不需要使用缓存的所有镜像层进行了标识,则未标识的镜像层可以看作是需要使用缓存的镜像层。
在本发明的示例性实施例中,所述参数可以包括:数字数组;
所述对需要使用缓存的所有镜像层进行标识可以包括:针对使用缓存的每一个镜像层,在该镜像层的构建镜像的命令行中输入所述数字数组,用以标识该镜像层。
在本发明的示例性实施例中,在通过Dockerfile制作镜像时可以输入数字数组,用来标识使用缓存的(或不使用缓存的)镜像层,镜像层的存储介质可以存储这些数字。
在本发明的示例性实施例中,可以从构建镜像的命令行中获得需要使用缓存(或不使用缓存)的所有镜像层数字,然后将这些数字存储介质中。
在本发明的示例性实施例中,所述方法还可以包括:对与所述需要使用缓存的所有镜像层一一对应的所有数字数组进行排序后存入所述预设的存储介质中。
在本发明的示例性实施例中,例如,存储镜像层的参数的步骤可以包括:
A、获得命令行输入的参数;例如:docker build-t[5,3,1,12]。
B、然后将数字进行排序;例如:[5,3,1,12]—[1,3,5,12]。
C、将数字放入存储介质。例如:将[1,3,5,12]放入文本文档。
S102、当查找到所述存储介质中存储有与当前镜像层对应的参数时,获取所述当前镜像层的执行命令。
在本发明的示例性实施例中,在每构建一层镜像之前,可以会从存储镜像层参数的存储介质中查找该镜像层的参数在存储介质中是否存在,如果存在则获得该层的要执行的命令。例如,每一层在编译之前在存储介质中查找是否有该层的编号,如果有则可以获得该层镜像的执行命令。
在本发明的示例性实施例中,所述方法还可以包括:当查找到所述存储介质中存储有与当前镜像层对应的参数时,返回第一信息,并根据所述第一信息获取所述当前镜像层的执行命令;当查找到所述存储介质中未存储有与当前镜像层对应的参数时,返回第二信息,并根据所述第二信息进入下一层镜像层的参数查找操作。
在本发明的示例性实施例中,例如,上述方案的具体实施步骤可以包括:
A、从存储介质中查找该层镜像的编号时,可以返回true(第一信息);或false(第二信息),例如:当从存储介质中查找该层镜像的编号时,可以返回true,当未从存储介质中查找该层镜像的编号时,可以返回false。
B、当收到返回true时,可以将获得该镜像层的执行命令,例如:打散为COPYtest.txt/opt/test.txt。
S103、根据所述执行命令获取与所述当前镜像层对应的镜像身份标识ID,并将获取的镜像ID返回二次构建镜像的主进程,以使所述主进程根据所述镜像ID继续构建镜像。
在本发明的示例性实施例中,获得镜像层的执行命令后,可以根据该执行命令获得镜像ID,例如:获得ID为:60b8c5253b50。
在本发明的示例性实施例中,根据获得的执行命令搜索到已有镜像层ID后,可以返回到主进程构建镜像。
在本发明的示例性实施例中,本实施例方案对需要缓存的镜像层通过参数进行标识,接收镜像层参数并存储,根据存储介质中的参数值获得镜像层的执行命令,根据镜像层的执行命令获得镜像ID,将镜像ID返回给Docker程序继续构建镜像。该实施例方案通过指定镜像层,更友好的利用缓存,避免了在更改小部分内容重新构建镜像时需要较长的时间,提高了镜像二次构建的效率,保障了解决问题验证问题时的可靠性。
为了达到本发明实施例目的,本发明实施例还提供了一种二次构建镜像的装置1,如图2、图3所示,需要说明的是,前述的方法实施例中的任何实施例均是用于该装置实施例中,在此不再一一赘述。所述装置可以包括:查找模块11、第一处理模块12和第二处理模块13;
所述查找模块11,可以用于在二次构建镜像时,在通过二次构建镜像的主进程对每一层镜像层进行编译之前,从预设的存储介质中查找是否存储有与当前镜像层对应的参数;
所述第一处理模块12,可以用于当所述查找模块查找到所述存储介质中存储有与当前镜像层对应的参数时,获取所述当前镜像层的执行命令;
所述第二处理模块13,可以用于根据所述执行命令获取与所述当前镜像层对应的镜像身份标识ID,并将获取的镜像ID返回二次构建镜像的主进程,以使所述主进程根据所述镜像ID继续构建镜像。
在本发明的示例性实施例中,所述装置还可以包括:存储模块14;
所述存储模块14,可以用于在通过应用容器引擎脚本Dockerfile首次制作镜像时,对需要使用缓存的所有镜像层进行标识,并将用于标识的参数存储到所述预设的存储介质中。
在本发明的示例性实施例中,所述参数可以包括:数字数组;
所述存储模块14对需要使用缓存的所有镜像层进行标识可以包括:针对使用缓存的每一个镜像层,在该镜像层的构建镜像的命令行中输入所述数字数组,用以标识该镜像层。
在本发明的示例性实施例中,所述存储模块14还可以用于:对与所述需要使用缓存的所有镜像层一一对应的所有数字数组进行排序后存入所述预设的存储介质中。
在本发明的示例性实施例中,所述查找模块11还可以用于:当查找到所述存储介质中存储有与当前镜像层对应的参数时,返回第一信息,以使所述第一处理模块根据所述第一信息获取所述当前镜像层的执行命令;当查找到所述存储介质中未存储有与当前镜像层对应的参数时,返回第二信息,并根据所述第二信息进入下一层镜像层的参数查找操作。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (10)
1.一种二次构建镜像的方法,其特征在于,所述方法包括:
在二次构建镜像时,在对每一层镜像层进行编译之前,从预设的存储介质中查找是否存储有与当前镜像层对应的参数;
当查找到所述存储介质中存储有与当前镜像层对应的参数时,获取所述当前镜像层的执行命令;
根据所述执行命令获取与所述当前镜像层对应的镜像身份标识ID,并将获取的镜像ID返回二次构建镜像的主进程,以使所述主进程根据所述镜像ID继续构建镜像。
2.根据权利要求1所述的二次构建镜像的方法,其特征在于,所述方法还包括:在通过应用容器引擎脚本Dockerfile首次制作镜像时,对需要使用缓存的所有镜像层进行标识,并将用于标识的参数存储到所述预设的存储介质中。
3.根据权利要求2所述的二次构建镜像的方法,其特征在于,所述参数包括:数字数组;
所述对需要使用缓存的所有镜像层进行标识包括:针对使用缓存的每一个镜像层,在该镜像层的构建镜像的命令行中输入所述数字数组,用以标识该镜像层。
4.根据权利要求3所述的二次构建镜像的方法,其特征在于,所述方法还包括:对与所述需要使用缓存的所有镜像层一一对应的所有数字数组进行排序后存入所述预设的存储介质中。
5.根据权利要求1所述的二次构建镜像的方法,其特征在于,所述方法还包括:当查找到所述存储介质中存储有与当前镜像层对应的参数时,返回第一信息,并根据所述第一信息获取所述当前镜像层的执行命令;当查找到所述存储介质中未存储有与当前镜像层对应的参数时,返回第二信息,并根据所述第二信息进入下一层镜像层的参数查找操作。
6.一种二次构建镜像的装置,其特征在于,所述装置包括:查找模块、第一处理模块和第二处理模块;
所述查找模块,用于在二次构建镜像时,在通过二次构建镜像的主进程对每一层镜像层进行编译之前,从预设的存储介质中查找是否存储有与当前镜像层对应的参数;
所述第一处理模块,用于当所述查找模块查找到所述存储介质中存储有与当前镜像层对应的参数时,获取所述当前镜像层的执行命令;
所述第二处理模块,用于根据所述执行命令获取与所述当前镜像层对应的镜像身份标识ID,并将获取的镜像ID返回二次构建镜像的主进程,以使所述主进程根据所述镜像ID继续构建镜像。
7.根据权利要求6所述的二次构建镜像的装置,其特征在于,所述装置还包括:存储模块;
所述存储模块,用于在通过应用容器引擎脚本Dockerfile首次制作镜像时,对需要使用缓存的所有镜像层进行标识,并将用于标识的参数存储到所述预设的存储介质中。
8.根据权利要求7所述的二次构建镜像的装置,其特征在于,所述参数包括:数字数组;
所述存储模块对需要使用缓存的所有镜像层进行标识包括:针对使用缓存的每一个镜像层,在该镜像层的构建镜像的命令行中输入所述数字数组,用以标识该镜像层。
9.根据权利要求8所述的二次构建镜像的装置,其特征在于,所述存储模块还用于:对与所述需要使用缓存的所有镜像层一一对应的所有数字数组进行排序后存入所述预设的存储介质中。
10.根据权利要求6所述的二次构建镜像的装置,其特征在于,所述查找模块还用于:当查找到所述存储介质中存储有与当前镜像层对应的参数时,返回第一信息,以使所述第一处理模块根据所述第一信息获取所述当前镜像层的执行命令;当查找到所述存储介质中未存储有与当前镜像层对应的参数时,返回第二信息,并根据所述第二信息进入下一层镜像层的参数查找操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910578614.0A CN110389768A (zh) | 2019-06-28 | 2019-06-28 | 一种二次构建镜像的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910578614.0A CN110389768A (zh) | 2019-06-28 | 2019-06-28 | 一种二次构建镜像的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110389768A true CN110389768A (zh) | 2019-10-29 |
Family
ID=68285981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910578614.0A Withdrawn CN110389768A (zh) | 2019-06-28 | 2019-06-28 | 一种二次构建镜像的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110389768A (zh) |
-
2019
- 2019-06-28 CN CN201910578614.0A patent/CN110389768A/zh not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10223416B2 (en) | Partition access method for query optimization | |
US7512595B1 (en) | Methods and systems for utilizing configuration information | |
US11093461B2 (en) | Method for computing distinct values in analytical databases | |
US9465685B2 (en) | Identifying solutions to application execution problems in distributed computing environments | |
EP3260993A1 (en) | File operation method and device | |
JP2021518021A (ja) | データ処理方法、装置及びコンピュータ読み取り可能な記憶媒体 | |
CN110427364A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN105550306A (zh) | 多副本数据的读写方法及系统 | |
CN110471657A (zh) | 网站页面的生成方法及装置 | |
CN111722847A (zh) | 一种基于规则引擎的数据校验方法及装置 | |
US10331670B2 (en) | Value range synopsis in column-organized analytical databases | |
US9390131B1 (en) | Executing queries subject to different consistency requirements | |
US11150993B2 (en) | Method, apparatus and computer program product for improving inline pattern detection | |
CN109614411B (zh) | 数据存储方法、设备和存储介质 | |
CN106648839A (zh) | 数据处理的方法和装置 | |
CN108897858A (zh) | 分布式集群索引分片的评估方法及装置、电子设备 | |
CN107688624B (zh) | 一种日志索引构建方法及装置 | |
CN110706108B (zh) | 在区块链中并发执行交易的方法和装置 | |
CN110389768A (zh) | 一种二次构建镜像的方法和装置 | |
CN112631648A (zh) | 一种服务配置方法、装置、电子设备及存储介质 | |
WO2014191719A1 (en) | Datasets profiling tools, methods, and systems | |
CN116842244A (zh) | 搜索引擎数据同步方法、系统、设备和存储介质 | |
US20200174760A1 (en) | Automatic code generation | |
CN110019448A (zh) | 一种数据交互方法及装置 | |
EP4134802A1 (en) | Method and apparatus for data access of nand flash file, and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20191029 |
|
WW01 | Invention patent application withdrawn after publication |