CN103559132A - 一种java应用程序健壮性的检测方法和装置 - Google Patents
一种java应用程序健壮性的检测方法和装置 Download PDFInfo
- Publication number
- CN103559132A CN103559132A CN201310552552.9A CN201310552552A CN103559132A CN 103559132 A CN103559132 A CN 103559132A CN 201310552552 A CN201310552552 A CN 201310552552A CN 103559132 A CN103559132 A CN 103559132A
- Authority
- CN
- China
- Prior art keywords
- java class
- jar
- sum
- compared
- class file
- 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.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种JAVA应用程序健壮性的检测方法和装置。该方法包括:扫描待检测的JAVA应用程序依赖的每个jar包所包含的java class文件属性信息,记录每个jar包的java class文件列表;将每个jar包的java class文件列表分别与其他jar包的java class文件列表进行比较,确定出被比较的两个jar包中均包含的属性信息相同的java class文件;根据所述属性信息相同的java class文件输出健壮性检测结果。应用本发明能够在实际运行之前就检测出JAVA应用程序的健壮性,从而有利于提高JAVA应用程序的健壮性和基于JAVA应用程序的系统的稳定性。
Description
技术领域
本申请涉及信息处理技术领域,尤其涉及一种JAVA应用程序健壮性的检测方法和装置。
背景技术
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言。JAVA应用程序常常依赖于多个JAR包,JAR包中通常包括java class文件,所述java class文件主要用于在平台无关性和网络移动性方面使Java应用程序更适合网络,它在平台无关性方面的任务是:为Java应用程序提供独立于底层主机平台的二进制形式的服务。
JAVA虚拟机(Java Virtual Machine,JVM)在加载JAVA应用程序时,JVM根据java class文件的属性信息判断java class文件是否已经被加载过了,如果JVM发现一个java class文件已经加载过了,则后面如果出现相同的java class文件,JVM就不会再被加载了。其中,所述属性信息通常包括java class文件的文件名、签名和路径信息。
有时,JAVA应用程序依赖于多个属性信息相同但是内在逻辑不同的java class文件,由于JVM在加载JAVA应用程序时根据java class文件的属性信息判断该java class文件是否已经被加载过了,如果已经被加载过了,就不再加载,因此,将导致JAVA应用程序在运行时出现诸如“没有找到这样的类(java.lang.NoClassDefFoundError)”或“没有这样的方法(java.lang.NoSuchMethodException)”的错误,并且,由于JAVA应用程序中各个java class文件的加载顺序只有在实际运行JAVA应用程序时才能够确定,因此,这类错误只有在JAVA应用程序运行时才能够被发现。
可见,在现有的JVM类加载机制下,JAVA应用程序的健壮性较差,并且,JAVA应用程序的健壮性如何只有在实际运行时才能够被发现,不利于提高JAVA应用程序的健壮性,导致基于JAVA应用程序的系统的稳定性较差。
发明内容
有鉴于此,本发明提供了一种JAVA应用程序健壮性的检测方法和装置,能够在实际运行之前就检测出JAVA应用程序的健壮性,从而有利于提高JAVA应用程序的健壮性和基于JAVA应用程序的系统的稳定性。
一种JAVA应用程序健壮性的检测方法,该方法包括:
扫描待检测的JAVA应用程序依赖的每个jar包所包含的java class文件属性信息,根据扫描结果记录每个jar包所包含的java class文件列表;
将每个jar包所包含的java class文件列表分别与其他jar包所包含的java class文件列表进行比较,根据每次比较的结果,确定出被比较的两个jar包中均包含的属性信息相同的java class文件;
根据所述被比较的两个jar包中均包含的属性信息相同的java class文件,输出所述JAVA应用程序健壮性的检测结果。
一种JAVA应用程序健壮性的检测装置,该装置包括扫描模块、检测模块和输出模块;
所述扫描模块,用于扫描待检测的JAVA应用程序依赖的每个jar包所包含的javaclass文件属性信息,根据扫描结果记录每个jar包所包含的java class文件列表;
所述检测模块,用于将每个jar包所包含的java class文件列表分别与其他jar包所包含的java class文件列表进行比较,根据每次比较的结果,确定出被比较的两个jar包中均包含的属性信息相同的java class文件;
所述输出模块,用于根据所述被比较的两个jar包中均包含的属性信息相同的javaclass文件,输出所述JAVA应用程序健壮性的检测结果。
由上述技术方案可见,由于本发明实施例中,通过扫描待检测的JAVA应用程序依赖的每个jar包所包含的java class文件属性信息,根据扫描结果记录每个jar包所包含的java class文件列表,将每个jar包所包含的java class文件列表分别与其他jar包所包含的java class文件列表进行比较,根据每次比较的结果,确定出被比较的两个jar包中均包含的属性信息相同的java class文件,根据所述被比较的两个jar包中均包含的属性信息相同的java class文件,输出所述JAVA应用程序健壮性的检测结果。由于上述扫描的步骤、记录的步骤、比较的步骤、以及根据所述被比较的两个jar包中均包含的属性信息相同的java class文件输出所述JAVA应用程序健壮性的检测结果的步骤,均不依赖于JAVA应用程序的运行,因此,本发明实施例能够在JAVA应用程序实际运行之前就检测出JAVA应用程序中各个jar包之间的java class文件冲突问题,各个jar包之间的java class文件冲突问题反映了JAVA应用程序的健壮性,因而,通过本发明实施例,能够在JAVA应用程序实际运行之前就检测出其健壮性,从而有利于提高JAVA应用程序的健壮性和基于JAVA应用程序的系统的稳定性。
附图说明
图1是本发明实施例提供的JAVA应用程序健壮性的检测方法流程图。
图2是本发明实施例提供的JAVA应用程序健壮性的检测装置结构图。
具体实施方式
图1是本发明实施例提供的JAVA应用程序健壮性的检测方法流程图。
如图1所示,该流程包括:
步骤101,扫描待检测的JAVA应用程序依赖的每个jar包所包含的java class文件属性信息,根据扫描结果记录每个jar包所包含的java class文件列表。
所述java class文件属性信息是JVM在加载JAVA应用程序中的java class文件时用于区分不同的java class文件所依据的信息,由于目前JVM依据java class文件的文件名、签名和路径信息区分不同的java class文件,因此,为了适应目前的JVM,本发明实施例中,所述java class文件属性信息通常包括:所述java class文件的文件名、签名和路径信息。
步骤102,将每个jar包所包含的java class文件列表分别与其他jar包所包含的java class文件列表进行比较,根据每次比较的结果,确定出被比较的两个jar包中均包含的属性信息相同的java class文件。
例如,JAVA应用程序包括3个jar包,分别为jar包1、jar包2、jar包3,将jar包1的java class文件列表分别与jar包2的java class文件列表和jar包3的javaclass文件列表进行比较,当将jar包1的java class文件列表与jar包2的java class文件列表进行比较时,确定出jar包1的java class文件列表与jar包2的java class文件列表均包含的属性信息相同的java class文件,当将jar包1的java class文件列表与jar包3的java class文件列表进行比较时,确定出jar包1的java class文件列表与jar包3的java class文件列表均包含的属性信息相同的java class文件,以此类推,可以将JAVA应用程序的每两个jar包的java class文件列表都进行比较并确定出其java class文件列表均包含的属性信息相同的java class文件。
步骤103,根据所述被比较的两个jar包中均包含的属性信息相同的java class文件,输出所述JAVA应用程序健壮性的检测结果。
由图1可见,本发明实施例提供的JAVA应用程序健壮性的检测方法中所涉及的各个步骤均不依赖于JAVA应用程序的运行,因此,本发明实施例能够在JAVA应用程序实际运行之前就检测出JAVA应用程序的健壮性,从而便于开发人员或维护人员根据健壮性检测结果对JAVA应用程序进行优化,进而有利于提高JAVA应用程序的健壮性和基于JAVA应用程序的系统的稳定性。
其中,输出所述JAVA应用程序健壮性的检测结果具体可以包括:输出被比较的两个jar包的java class文件冲突列表,和/或输出被比较的两个jar包之间的java class文件冲突率。
其中,当输出被比较的两个jar包的java class文件冲突列表时,具体可以输出所述被比较的两个jar包中均包含的属性信息相同的java class文件的个数和/或属性信息,或者,输出所述被比较的两个jar包中均包含的属性信息相同的java class文件的个数和/或属性信息,以及所述被比较的两个jar包的信息。
当输出被比较的两个jar包之间的java class文件冲突率时,具体可以包括如下步骤:
根据被比较的两个jar包中第一被比较jar包的java class文件列表的java class文件的第一总数、第二被比较jar包的java class文件列表的java class文件的第二总数、以及所述被比较的两个jar包中均包含的属性信息相同的java class文件的第三总数,确定所述被比较的两个jar包中所包含的属性信息不同的java class文件的第四总数;根据所述第一总数、第二总数和第四总数,输出所述被比较的两个jar包之间的javaclass文件冲突率。
其中,所述确定所述被比较的两个jar包中所包含的属性信息不同的java class文件的第四总数具体可以包括:
将所述第一总数与所述第二总数之和,减去所述第三总数的2倍所得的差,确定为所述第四总数。
根据所述第一总数、第二总数和第四总数,输出所述被比较的两个jar包之间的javaclass文件冲突率具体可以包括:
将所述第一总数与所述第二总数之和减去所述第四总数所得的差,除以所述第一总数,将所得的商确定为所述第一被比较jar包的java class文件冲突率;和/或,将所述第一总数与所述第二总数之和减去所述第四总数所得的差,除以所述第二总数,将所得的商确定为所述第二被比较jar包的java class文件冲突率。
根据本发明实施例提供的JAVA应用程序健壮性的检测方法,本发明实施例还提供了一种JAVA应用程序健壮性的检测装置,具体请参见图2。
图2是本发明实施例提供的JAVA应用程序健壮性的检测装置结构图,如图2所示,该装置包括扫描模块201、检测模块202和输出模块203。
扫描模块201,用于扫描待检测的JAVA应用程序依赖的每个jar包所包含的javaclass文件属性信息,根据扫描结果记录每个jar包所包含的java class文件列表。
检测模块202,用于将每个jar包所包含的java class文件列表分别与其他jar包所包含的java class文件列表进行比较,根据每次比较的结果,确定出被比较的两个jar包中均包含的属性信息相同的java class文件。
输出模块203,用于根据所述被比较的两个jar包中均包含的属性信息相同的javaclass文件,输出所述JAVA应用程序健壮性的检测结果。
其中,输出模块203,具体可以用于输出所述被比较的两个jar包中均包含的属性信息相同的java class文件的个数和/或属性信息;或者,输出所述被比较的两个jar包中均包含的属性信息相同的java class文件的个数和/或属性信息,以及所述被比较的两个jar包的信息。
输出模块203,具体可以用于根据被比较的两个jar包中第一被比较jar包的javaclass文件列表的java class文件的第一总数、第二被比较jar包的java class文件列表的java class文件的第二总数、以及所述被比较的两个jar包中均包含的属性信息相同的java class文件的第三总数,确定所述被比较的两个jar包中所包含的属性信息不同的java class文件的第四总数,根据所述第一总数、第二总数和第四总数,输出所述被比较的两个jar包之间的java class文件冲突率。
输出模块203,具体可以用于将所述第一总数与所述第二总数之和,减去所述第三总数的2倍所得的差,确定为所述第四总数,将所述第一总数与所述第二总数之和减去所述第四总数所得的差,除以所述第一总数,将所得的商确定为所述第一被比较jar包的java class文件冲突率,和/或,将所述第一总数与所述第二总数之和减去所述第四总数所得的差,除以所述第二总数,将所得的商确定为所述第二被比较jar包的java class文件冲突率,输出所述第一被比较jar包的java class文件冲突率和/或所述第二被比较jar包的java class文件冲突率。
其中,所述java class文件属性信息包括:所述java class文件的文件名、签名和路径信息。
由上述实施例可见,本发明实施例能够基于分析java字节码文件,通过快速检测java应用程序中存在的jar包版本冲突问题(即不同版本的jar包中包含属性信息相同但是内在逻辑不同的java class文件的问题),给出java应用程序的健壮性信息,从而可以帮助应用程序提高稳定性与健壮性,减少错误与事故发生的概率。在一些集成开发环境(Integrated Development Environment,IDE)等工具中集成本发明实施例提供的方法或装置,可以提高所开发的JAVA应用程序的健壮性。
本发明实施例提供的方法和装置具体可以以独立的检测工具的形态存在,或者以插件等方式集成到其他工具中。
本发明实施例提供的方法和装置可应用于以java语言开发应用程序或管理java应用的系统中,例如,java容器、基于java语言的自动部署系统、自动编译系统、持续集成系统等,用于帮助java应用程序及时发现自身存在的代码冲突问题、提高java应用程序健壮性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种JAVA应用程序健壮性的检测方法,其特征在于,该方法包括:
扫描待检测的JAVA应用程序依赖的每个jar包所包含的java class文件属性信息,根据扫描结果记录每个jar包所包含的java class文件列表;
将每个jar包所包含的java class文件列表分别与其他jar包所包含的java class文件列表进行比较,根据每次比较的结果,确定出被比较的两个jar包中均包含的属性信息相同的java class文件;
根据所述被比较的两个jar包中均包含的属性信息相同的java class文件,输出所述JAVA应用程序健壮性的检测结果。
2.根据权利要求1所述的方法,其特征在于,输出所述JAVA应用程序健壮性的检测结果包括:
输出所述被比较的两个jar包中均包含的属性信息相同的java class文件的个数和/或属性信息;
或者,输出所述被比较的两个jar包中均包含的属性信息相同的java class文件的个数和/或属性信息,以及所述被比较的两个jar包的信息。
3.根据权利要求1或2所述的方法,其特征在于,根据所述被比较的两个jar包中均包含的属性信息相同的java class文件,输出所述JAVA应用程序健壮性的检测结果包括:
根据被比较的两个jar包中第一被比较jar包的java class文件列表的java class文件的第一总数、第二被比较jar包的java class文件列表的java class文件的第二总数、以及所述被比较的两个jar包中均包含的属性信息相同的java class文件的第三总数,确定所述被比较的两个jar包中所包含的属性信息不同的java class文件的第四总数;
根据所述第一总数、第二总数和第四总数,输出所述被比较的两个jar包之间的javaclass文件冲突率。
4.根据权利要求3所述的方法,其特征在于,所述确定所述被比较的两个jar包中所包含的属性信息不同的java class文件的第四总数包括:
将所述第一总数与所述第二总数之和,减去所述第三总数的2倍所得的差,确定为所述第四总数;
根据所述第一总数、第二总数和第四总数,输出所述被比较的两个jar包之间的javaclass文件冲突率包括:
将所述第一总数与所述第二总数之和减去所述第四总数所得的差,除以所述第一总数,将所得的商确定为所述第一被比较jar包的java class文件冲突率;
和/或,将所述第一总数与所述第二总数之和减去所述第四总数所得的差,除以所述第二总数,将所得的商确定为所述第二被比较jar包的java class文件冲突率。
5.根据权利要求3所述的方法,其特征在于,所述java class文件属性信息包括:所述java class文件的文件名、签名和路径信息。
6.一种JAVA应用程序健壮性的检测装置,其特征在于,该装置包括扫描模块、检测模块和输出模块;
所述扫描模块,用于扫描待检测的JAVA应用程序依赖的每个jar包所包含的javaclass文件属性信息,根据扫描结果记录每个jar包所包含的java class文件列表;
所述检测模块,用于将每个jar包所包含的java class文件列表分别与其他jar包所包含的java class文件列表进行比较,根据每次比较的结果,确定出被比较的两个jar包中均包含的属性信息相同的java class文件;
所述输出模块,用于根据所述被比较的两个jar包中均包含的属性信息相同的javaclass文件,输出所述JAVA应用程序健壮性的检测结果。
7.根据权利要求6所述的装置,其特征在于,
所述输出模块,用于输出所述被比较的两个jar包中均包含的属性信息相同的javaclass文件的个数和/或属性信息;或者,输出所述被比较的两个jar包中均包含的属性信息相同的java class文件的个数和/或属性信息,以及所述被比较的两个jar包的信息。
8.根据权利要求6或7所述的装置,其特征在于,
所述输出模块,用于根据被比较的两个jar包中第一被比较jar包的java class文件列表的java class文件的第一总数、第二被比较jar包的java class文件列表的java class文件的第二总数、以及所述被比较的两个jar包中均包含的属性信息相同的java class文件的第三总数,确定所述被比较的两个jar包中所包含的属性信息不同的java class文件的第四总数,根据所述第一总数、第二总数和第四总数,输出所述被比较的两个jar包之间的java class文件冲突率。
9.根据权利要求8所述的装置,其特征在于,
所述输出模块,用于将所述第一总数与所述第二总数之和,减去所述第三总数的2倍所得的差,确定为所述第四总数,将所述第一总数与所述第二总数之和减去所述第四总数所得的差,除以所述第一总数,将所得的商确定为所述第一被比较jar包的java class文件冲突率,和/或,将所述第一总数与所述第二总数之和减去所述第四总数所得的差,除以所述第二总数,将所得的商确定为所述第二被比较jar包的java class文件冲突率,输出所述第一被比较jar包的java class文件冲突率和/或所述第二被比较jar包的java class文件冲突率。
10.根据权利要求6所述的装置,其特征在于,所述java class文件属性信息包括:所述java class文件的文件名、签名和路径信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310552552.9A CN103559132B (zh) | 2013-11-08 | 2013-11-08 | 一种java应用程序健壮性的检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310552552.9A CN103559132B (zh) | 2013-11-08 | 2013-11-08 | 一种java应用程序健壮性的检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103559132A true CN103559132A (zh) | 2014-02-05 |
CN103559132B CN103559132B (zh) | 2016-03-16 |
Family
ID=50013383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310552552.9A Active CN103559132B (zh) | 2013-11-08 | 2013-11-08 | 一种java应用程序健壮性的检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103559132B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630463A (zh) * | 2014-10-28 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 用于检测jar包冲突的方法及装置 |
CN105653458A (zh) * | 2016-01-06 | 2016-06-08 | 北京京东尚科信息技术有限公司 | 检测目标Java项目中的高耗时Java方法的方法和装置 |
CN106874184A (zh) * | 2016-12-21 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 一种Java代码检测方法及装置 |
CN108628751A (zh) * | 2018-05-17 | 2018-10-09 | 北京三快在线科技有限公司 | 一种无用依赖项检测方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008123259A (ja) * | 2006-11-13 | 2008-05-29 | Nippon Shoken Technology Kk | Java言語プログラムを用いた大規模業務系の影響分析ツール |
CN101719074A (zh) * | 2009-12-17 | 2010-06-02 | 金蝶软件(中国)有限公司 | 补丁实现方法及装置 |
CN102779093A (zh) * | 2012-07-04 | 2012-11-14 | 复旦大学 | 对象粒度收集的Java不变式检测系统 |
CN103198011A (zh) * | 2012-01-09 | 2013-07-10 | 阿里巴巴集团控股有限公司 | 一种探测java 程序文件扰动的方法及装置 |
-
2013
- 2013-11-08 CN CN201310552552.9A patent/CN103559132B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008123259A (ja) * | 2006-11-13 | 2008-05-29 | Nippon Shoken Technology Kk | Java言語プログラムを用いた大規模業務系の影響分析ツール |
CN101719074A (zh) * | 2009-12-17 | 2010-06-02 | 金蝶软件(中国)有限公司 | 补丁实现方法及装置 |
CN103198011A (zh) * | 2012-01-09 | 2013-07-10 | 阿里巴巴集团控股有限公司 | 一种探测java 程序文件扰动的方法及装置 |
CN102779093A (zh) * | 2012-07-04 | 2012-11-14 | 复旦大学 | 对象粒度收集的Java不变式检测系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630463A (zh) * | 2014-10-28 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 用于检测jar包冲突的方法及装置 |
CN105630463B (zh) * | 2014-10-28 | 2019-07-09 | 阿里巴巴集团控股有限公司 | 用于检测jar包冲突的方法及装置 |
CN105653458A (zh) * | 2016-01-06 | 2016-06-08 | 北京京东尚科信息技术有限公司 | 检测目标Java项目中的高耗时Java方法的方法和装置 |
CN105653458B (zh) * | 2016-01-06 | 2018-12-18 | 北京京东尚科信息技术有限公司 | 检测目标Java项目中的高耗时Java方法的方法和装置 |
CN106874184A (zh) * | 2016-12-21 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 一种Java代码检测方法及装置 |
CN106874184B (zh) * | 2016-12-21 | 2020-07-14 | 阿里巴巴集团控股有限公司 | 一种Java代码检测方法及装置 |
CN108628751A (zh) * | 2018-05-17 | 2018-10-09 | 北京三快在线科技有限公司 | 一种无用依赖项检测方法及装置 |
CN108628751B (zh) * | 2018-05-17 | 2021-06-11 | 北京三快在线科技有限公司 | 一种无用依赖项检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103559132B (zh) | 2016-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106294134B (zh) | 代码的崩溃定位方法及装置 | |
CN106951364A (zh) | 测试方法及装置 | |
CN105468797B (zh) | 一种信息处理方法及装置 | |
CN103559132A (zh) | 一种java应用程序健壮性的检测方法和装置 | |
CN106055478A (zh) | 检测内存泄漏的方法和装置 | |
CN111767226B (zh) | 一种云计算平台资源的测试方法、系统及设备 | |
CN111158741A (zh) | 监控业务模块对第三方类库依赖关系变化的方法及装置 | |
CN105988921A (zh) | 一种内存越界的检测方法及装置 | |
CN110516090A (zh) | 一种物体检测方法、装置、设备及计算机可读存储介质 | |
CN105183789A (zh) | 基于git源代码冲突的文件合并方法及系统 | |
CN111027054A (zh) | 基于安卓系统判断应用程序在多开环境中运行方法、系统 | |
CN112579146A (zh) | 接口变化的检测方法及装置 | |
CN111913878B (zh) | 基于程序分析结果的字节码插桩方法、装置及存储介质 | |
CN102486938A (zh) | 一种快速检测存储器的方法及装置 | |
US9606815B2 (en) | API prioritization and detection | |
CN106933611A (zh) | 类加载方法及类加载器 | |
CN107368330A (zh) | 客户端补丁修复方法、装置和系统 | |
CN114253587A (zh) | 应用程序更新方法、装置、电子设备及可读存储介质 | |
CN110688147A (zh) | 一种进行元数据打包与解析的方法 | |
CN112181830B (zh) | 内存泄露的检测方法、装置、终端及介质 | |
CN111352631B (zh) | 一种接口兼容性检测方法及装置 | |
US20230350655A1 (en) | Deterministic memory allocation for real-time applications | |
CN104484211A (zh) | 共享镜像文件的方法及装置 | |
CN106155880A (zh) | 一种基于策略的自动化程序分析系统和方法 | |
CN102193556A (zh) | 汽车电子器件中断安全隐患检测系统及其检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |