CN102567033B - 基于嵌入式实时Java虚拟机的预先类加载方法及装置 - Google Patents
基于嵌入式实时Java虚拟机的预先类加载方法及装置 Download PDFInfo
- Publication number
- CN102567033B CN102567033B CN201010588216.6A CN201010588216A CN102567033B CN 102567033 B CN102567033 B CN 102567033B CN 201010588216 A CN201010588216 A CN 201010588216A CN 102567033 B CN102567033 B CN 102567033B
- Authority
- CN
- China
- Prior art keywords
- class
- loading method
- advance
- list
- virtual machine
- 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.)
- Expired - Fee Related
Links
- 238000011068 loading method Methods 0.000 title claims abstract description 85
- 238000000034 method Methods 0.000 abstract description 24
- 230000007547 defect Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 4
- 239000010754 BS 2869 Class F Substances 0.000 description 2
- 239000010755 BS 2869 Class G Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Classifications
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供基于嵌入式实时Java虚拟机的预先类加载方法及装置。该方法包括:修改类加载器的java类文件,设置用于根据类的列表进行类加载的加载方法;修改虚拟机内核的jni类,设置用于调用所述加载方法以预先加载应用程序所需的全部类的预先类加载方法;获取包含应用程序所需的全部类的类列表;根据所述预先类加载方法,依照所述类列表预先加载所述应用程序所需的全部类。本发明提供的基于嵌入式实时Java虚拟机的预先类加载方法及装置能够避免时间抖动及嵌入式系统资源有限的缺陷,实现了在嵌入式实时Java虚拟机中的预先类加载。
Description
技术领域
本发明涉及类加载技术,尤其涉及基于嵌入式实时Java虚拟机的预先类加载方法及装置。
背景技术
Java平台到现在为止已经拥有广大的开发者的基础,其应用领域从最初的服务器和桌面领域扩展到了实时和嵌入式领域。然而与传统计算环境不同的是,嵌入式实时计算是一种计算资源受限的计算,同时又要求虚拟机运行有较高的确定性。
目前类加载有预先加载与依需求加载两种机制。Java运行环境为了优化系统,提高程序的执行速度,在JRE(Java Runtime Enviroment,Java运行环境)运行的开始会将Java运行所需要的基本类采用预先加载的方法全部加载到内存当中,因为这些基本类是在Java程序运行的过程当中经常要使用的,主要包括JRE的rt.jar文件里面所有的.clas文件。当Java虚拟机开始运行以后,它会找到安装在机器上的JRE环境,然后把控制权交给JRE,JRE的类加载器会将lib目录下的rt.jar基础类别文件库加载进内存,这些文件是Java程序执行所必须的,包括java.lang.Object和java.lang.ClassLoader等。系统在开始就将这些文件加载,能够避免在以后使用过程中的多次I/O操作,从而提高程序执行效率。相对于预先加载,在程序中还需要使用一些自定义的类,当使用这些自定义类的时候就要使用依需求加载方法,即在Java程序需要用到的时候再加载,以减少内存的消耗。
对于实时嵌入式计算环境,若能够进行类加载,也可大幅提高程序的运行效率。但现有的类加载方法,一方面,由于对于除基本类以外的其他类需在程序执行过程中进行加载,导致了加载时间的不确定性,不能够满足实时的要求;另一方面,类加载器和核心库类的资源极为庞大,嵌入式系统的资源有限,不能够承载现有的类加载器和核心库类。因此,现有技术中,不能将类加载方法应用于实时嵌入式计算环境。
发明内容
针对上述缺陷,本发明提供一种基于嵌入式实时Java虚拟机的预先类加载方法,包括:
修改类加载器的java类文件,设置用于根据类的列表进行类加载的加载方法;
修改虚拟机内核的jni类,设置用于调用所述加载方法以预先加载应用程序所需的全部类的预先类加载方法;
获取包含应用程序所需的全部类的类列表;
根据所述预先类加载方法,依照所述类列表预先加载所述应用程序所需的全部类。
根据本发明的另一方面,还提供一种基于嵌入式实时Java虚拟机的预先类加载装置,包括:
第一设置模块,用于在类加载器的java类文件中设置用于根据类的列表进行类加载的加载方法;
第二设置模块,用于在虚拟机内核的jni类中设置用于调用所述加载方法以预先加载应用程序所需的全部类的预先类加载方法;
获取模块,用于获取包含应用程序所需的全部类的类列表;
预加载模块,用于根据所述预先类加载方法,依照所述类列表预先加载所述应用程序所需的全部类。
根据本发明的基于嵌入式实时Java虚拟机的预先类加载方法及装置,由于预先获取了应用程序所需的全部类,并通过设置预先类加载方法,实现了在嵌入式实时Java虚拟机中,预先加载所需的全部类,从而避免了在程序执行过程中按需加载类的时间抖动所带来不确定性;而且,由于该预先加载的内容仅为应用程序所需的全部类,不包括类加载器和核心类库中的应用程序不需要的大量类资源,因此能够适应嵌入式系统的有限资源;从而,实现了在嵌入式实时Java虚拟机中的预先类加载。
附图说明
图1为本发明基于嵌入式实时Java虚拟机的预先类加载方法。
图2为本发明基于嵌入式实时Java虚拟机的预先类加载装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图,对本发明的技术方案进行清楚、完整地描述。
图1为本发明基于嵌入式实时Java虚拟机的预先类加载方法。如图1所示,该预先类加载方法包括以下步骤:
步骤S100,修改类加载器的java类文件,设置用于根据类的列表进行类加载的加载方法。
步骤S200,修改虚拟机内核的jni类,设置用于调用加载方法以预先加载应用程序所需的全部类的预先类加载方法;
步骤S300,获取包含应用程序所需的全部类的类列表;
步骤S400,根据预先类加载方法,依照类列表预先加载所述应用程序所需的全部类。
具体地,该基于嵌入式实时Java虚拟机的预先类加载方法包括两个部分:一部分获取应用程序所需的所有类的依赖类闭包;另一部分是对Harmony虚拟机内核层有关类加载部分的修改。
下面结合步骤S300对第一部分进行说明。
在步骤S300中,需获取应用程序依赖的所有类的集合(依赖类闭包),以使JVM(Java虚拟机)启动后,只需一次性地将该依赖类闭包中的内容全部加载进来,从而在之后的运行程序过程中不需要再对所需的类进行加载。这个依赖类闭包,可通过实现小工具MyDependencyFinder来获得。实现小工具MyDependencyFinder例如采用如下方式实现:
第一步,分析应用程序的jar包,获取其中的第一个类文件及其依赖的类的集合,这些类文件及其依赖的类的集合构成了一个HashMap(基于哈希表的Map接口的实现)。
第二步,对HashMap进行处理。该HashMap的初始内容为一些类以及这些类依赖的其他类的集合。在此集合中查找未曾在HashMap的键值中出现的类,并将其加入到HashMap的键值中,于是将导致HashMap的键值增多。若检测到HashMap的键值增多,则对新增加的键值所代表的类再查找一次依赖,循环以上过程,直到HashMap的键值不再增多,则说明没有新的依赖关系生成,循环结束。得到了在应用程序的jar包中的依赖类闭包。
第三步,在系统类集合的jar包中对上述得到的HashMap按照第二步的方式进行依赖查找,以得到在系统类集合的jar包中的依赖类闭包。以上的过程使HashMap逐渐增大,直到其不再增大时,则获得了所有依赖类关系,构造出了包括所有需要加载的类的依赖类闭包(即包含应用程序所需的全部类的类列表)。
下面结合步骤S100、步骤S200及步骤S400对第二部分进行说明。
当JVM启动时,会形成由三个类加载器组成的初始类加载器层次结构,从上到下分别是引导类加载器Bootstrap ClassLoader,其负责加载Java的核心类;扩展类加载器Extension ClassLoader,其负责加载JRE的扩展目录(JAVA_HOME/jre/lib/ext或者由java.ext.dirs系统属性指定的)中JAR的类包;系统类加载器System ClassLoader,其负责在JVM被启动时,加载来自在java命令中的-classpath或者java.class.path系统属性或者CLASSPATH*系统属性所指定的JAR类包和类路径。Java虚拟机的加载采类用的是全盘负责委托机制。所谓全盘负责,即是当一个类加载器加载一个类的时候,这个类所依赖的和引用的所有类也由这个类加载器负责载入,除非明显指示使用另外一个类加载器载入。委托机制则是先让父类加载器(parent)寻找,只有在parent找不到的时候才从自己的类路径中去寻找。此外类加载还采用了缓存(cache)机制,也就是如果cache中保存了这个类就直接返回它,如果没有才从文件中读取和转换成类,并将其存入cache。
利用MyDependencyFinder获得的依赖类闭包中的类,一部分是应用程序的类,另一部分是系统类。对于应用程序的类,加载到SystemClassLoader加载类时使用的类路径(classpath)中。对于系统类可以分两种,一种是核心类,虚拟机启动时由Bootstrap ClassLoader加载;另一种是非核心类,由Extension ClassLoader或System ClassLoader加载。于是对于应用程序所需的全部的类中的系统类,将采取不同的策略,如果是核心类则直接使用Bootstrap ClassLoader加载,如果是非核心类,则使用System ClassLoader加载。
在步骤S100中,修改ClassLoader.java,添加preloadAllClasses()方法,该方法用于按照所接收的文件中加载该文件中列出的所有类。
在步骤S200中,修改虚拟机内核里的jni类,添加一个预先加载所有类的方法,该方法使用JNI(Java Native Interface,Java本地编程接口)编码风格。该方法用于调用添加在java层的方法preloadAllClasses()。
在步骤S400中,在创建虚拟机成功返回之前,通过根据步骤S200中添加的预先加载所有类的方法,调用preloadAllClasses(),根据依赖类闭包加载该依赖类闭包中所有的类,即应用程序所需的全部的类。
至此,实现了在嵌入式实时Java虚拟机中对所需全部类的预加载。
根据上述实施例的基于嵌入式实时Java虚拟机的预先类加载方法,由于预先获取了应用程序所需的全部类,并通过设置预先类加载方法,实现了在嵌入式实时Java虚拟机中,预先加载所需的全部类,从而避免了在程序执行过程中按需加载类的时间抖动所带来不确定性;而且,由于该预先加载的内容仅为应用程序所需的全部类,不包括类加载器和核心类库中的应用程序不需要的大量类资源,因此能够适应嵌入式系统的有限资源;从而,实现了在嵌入式实时Java虚拟机中的预先类加载。
进一步地,在上述实施例的基于嵌入式实时Java虚拟机的预先类加载方法中,获取包含应用程序所需的全部类的类列表的步骤例如包括:
步骤1:获取初始类和所述初始类的依赖类,将所述初始类及所述依赖类的键值加入到所述类列表中;
步骤2:获取与所述加入到所述类列表中的键值对应的依赖类具有依赖关系的类,若判断获知所述类的键值未包括在所述类列表中,则将所述类的键值加入到所述类表中,并重复执行步骤2。
例如,主类A依赖于类B、类C和类D,类A作为初始值加入到HashMap的键集合中,类B、类C、类D是A对应的依赖类。若类B、类C、类D未包含在HashMap的键集合中,则将类B、类C、类D加入键集合。类B、类C、类D又依赖于类E、类F、类G、类H、类I、类J、类K和类B,其中类B已包含在HashMap的键集合中,故仅将类E、类F、类G、类H、类I、类J、类K加入到HashMap的键集合中,并将其作为下一层依赖关系分析时键的扩张。依此方法类推,直到键集合不再增长为止。
进一步地,在上述实施例的基于嵌入式实时Java虚拟机的预先类加载方法中,获取初始类和所述初始类的依赖类之前,还包括:获取所述应用程序的jar文件中的.class类文件,并获取所述.class类文件的依赖类。
进一步地,在上述实施例的基于嵌入式实时Java虚拟机的预先类加载方法中,修改类加载器的java类文件的步骤之前还包括:删除类加载器中的扩展类加载器,以使类加载器中的系统类加载器的双亲为引导类加载器。
具体地,将System ClassLoader的parent设为null,即默认SystemClassLoader的parent是Bootstrap ClassLoader。去掉该扩展类加载器能够简化设计。
可采用如下方法对上述实施例的基于嵌入式实时Java虚拟机的预先类加载方法的效果进行验证。
步骤S10,修改虚拟机内核里的类加载类以实现以下操作:在加载类的方法的实现中打印当时加载的类并且在加载前后分别设置时间戳,通过加载前时间戳与加载后时间戳的时间差获得加载某个类的时间,将类名和对应的加载时间信息输出到临时文件中;
步骤S20,修改虚拟机内核里的jni类,以在创建虚拟机成功返回之前,预先加载所有需要的类的过程中根据步骤S10中的设置添加时间戳(即加载前的时间戳);
步骤S30,修改虚拟机内核里的jni类,以在销毁虚拟机一开始再次得到时间戳(即加载后的时间戳)。通过步骤S20中添加的时间戳与步骤S30中添加的时间戳即可获得对应的主函数执行的时间。
步骤S40,获取预加载结束后的类,进行去重、去除数组类得到类的集合,根据上述得到的对应各类的加载时间,将加载时间小于9微秒的类过滤掉,留下的就是程序从主函数开始后加载花的时间较长的类,即没有预先加载的类;以此可以获知利用该方法已成功预加载应用程序所需的类;
步骤S50,不启用上述实施例的基于嵌入式实时Java虚拟机的预先类加载方法进行预先类加载(在jni.cpp中注释掉PreloadAllClasses()),运行应用程序;能够看出该运行过程由于加载的时间具有不可预测性,在时间轴上抖动非常强烈。而启用利用本发法的预先类加载,则程序运行中需要再次加载非常短,通常在10微秒以下,在时间轴上很平稳。
通过上述验证,可以获知上述实施例的基于嵌入式实时Java虚拟机的预先类加载方法能够成功预先加载应用程序所需的全部类,避免在程序执行过程中按需加载类的时间抖动所带来不确定性。
图2为本发明基于嵌入式实时Java虚拟机的预先类加载装置的结构示意图,如图2所示,该基于嵌入式实时Java虚拟机的预先类加载装置,包括:
第一设置模块10,用于在类加载器的java类文件中设置用于根据类的列表进行类加载的加载方法;
第二设置模块20,用于在虚拟机内核的jni类中设置用于调用加载方法以预先加载应用程序所需的全部类的预先类加载方法;
获取模块30,用于获取包含应用程序所需的全部类的类列表;
预加载模块40,用于根据预先类加载方法,依照类列表预先加载应用程序所需的全部类。
进一步地,在上述实施例的基于嵌入式实时Java虚拟机的预先类加载装置中,获取模块包括:
第一获取单元,用于获取初始类和初始类的依赖类,将初始类及所述依赖类的键值加入到类列表中;
第二获取单元,与第一获取单元连接,用于获取与加入类列表中的键值对应的依赖类的具有依赖关系的类;
判断单元,与第二获取单元连接,用于若判断获知类的键值未包括在类列表中,则将类的键值加入到所述类表中,并向第二获取单元发送查询指令,以使第二获取单元再次获取与加入类列表中的键值对应的依赖类的具有依赖关系的类。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (4)
1.一种基于嵌入式实时Java虚拟机的预先类加载方法,其特征在于,包括:
修改类加载器的java类文件,设置用于根据类的列表进行类加载的加载方法;
修改虚拟机内核的jni类,设置预先类加载方法,所述预先类加载方法用于调用所述加载方法以预先加载应用程序所需的全部类;
获取包含应用程序所需的全部类的类列表;
根据所述预先类加载方法,依照所述类列表预先加载所述应用程序所需的全部类;
所述获取包含应用程序所需的全部类的类列表的步骤包括:
步骤1:获取初始类和所述初始类的依赖类,将所述初始类及所述依赖类的键值加入到所述类列表中;
步骤2:获取与所述加入到所述类列表中的键值对应的依赖类具有依赖关系的类,若判断获知所述类的键值未包括在所述类列表中,则将所述类的键值加入到所述类列表中,并重复执行步骤2。
2.根据权利要求1所述的基于嵌入式实时Java虚拟机的预先类加载方法,其特征在于,在所述步骤1之前还包括:
获取所述应用程序的jar文件中的.class类文件,并获取所述.class类文件的依赖类。
3.根据权利要求1所述的基于嵌入式实时Java虚拟机的预先类加载方法,其特征在于,所述修改类加载器的java类文件的步骤之前还包括:
删除所述类加载器中的扩展类加载器,以使所述类加载器中的系统类加载器的双亲为引导类加载器。
4.一种基于嵌入式实时Java虚拟机的预先类加载装置,其特征在于,包括:
第一设置模块,用于在类加载器的java类文件中设置用于根据类的列表进行类加载的加载方法;
第二设置模块,用于在虚拟机内核的jni类中设置预先类加载方法,所述预先类加载方法用于调用所述加载方法以预先加载应用程序所需的全部类;
获取模块,用于获取包含应用程序所需的全部类的类列表;
预加载模块,用于根据所述预先类加载方法,依照所述类列表预先加载所述应用程序所需的全部类;
所述获取模块包括:
第一获取单元,用于获取初始类和所述初始类的依赖类,将所述初始类及所述依赖类的键值加入到所述类列表中;
第二获取单元,与所述第一获取单元连接,用于获取与加入所述类列表中的键值对应的依赖类的具有依赖关系的类;
判断单元,与所述第二获取单元连接,用于若判断获知所述类的键值未包括在所述类列表中,则将所述类的键值加入到所述类列表中,并向所述第二获取单元发送查询指令,以使所述第二获取单元再次获取与加入所述类列表中的键值对应的依赖类的具有依赖关系的类。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010588216.6A CN102567033B (zh) | 2010-12-14 | 2010-12-14 | 基于嵌入式实时Java虚拟机的预先类加载方法及装置 |
PCT/CN2011/073997 WO2012079335A1 (zh) | 2010-12-14 | 2011-05-12 | 基于嵌入式实时java虚拟机的预先类加载方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010588216.6A CN102567033B (zh) | 2010-12-14 | 2010-12-14 | 基于嵌入式实时Java虚拟机的预先类加载方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102567033A CN102567033A (zh) | 2012-07-11 |
CN102567033B true CN102567033B (zh) | 2015-09-16 |
Family
ID=46244031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010588216.6A Expired - Fee Related CN102567033B (zh) | 2010-12-14 | 2010-12-14 | 基于嵌入式实时Java虚拟机的预先类加载方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102567033B (zh) |
WO (1) | WO2012079335A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473096A (zh) * | 2013-09-10 | 2013-12-25 | 浙江大学城市学院 | 一种在android系统的虚拟机上加载java类的方法及系统 |
CN105630463B (zh) * | 2014-10-28 | 2019-07-09 | 阿里巴巴集团控股有限公司 | 用于检测jar包冲突的方法及装置 |
CN105045642B (zh) * | 2015-08-31 | 2018-09-25 | 北京金山安全软件有限公司 | 一种自定义类的加载方法及装置 |
CN107656775A (zh) * | 2017-10-18 | 2018-02-02 | 国云科技股份有限公司 | 一种基于ClassLoader的自定义类查找方法 |
CN108717374B (zh) * | 2018-04-24 | 2021-08-17 | 创新先进技术有限公司 | Java虚拟机启动时预热的方法、装置、及计算机设备 |
CN108984223B (zh) * | 2018-05-31 | 2021-04-02 | 北京三快在线科技有限公司 | 一种程序调用解耦方法、装置、电子设备及存储介质 |
CN114153521A (zh) | 2019-03-25 | 2022-03-08 | 华为技术有限公司 | 类加载方法和装置 |
CN112559073B (zh) * | 2020-12-16 | 2024-08-13 | 北京百度网讯科技有限公司 | 程序启动方法、类间关系构建方法及装置、移动终端 |
CN114519582B (zh) * | 2022-02-21 | 2024-08-09 | 中国邮政储蓄银行股份有限公司 | 服务的预热方法、预热装置和服务系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6272674B1 (en) * | 1998-12-14 | 2001-08-07 | Nortel Networks Limited | Method and apparatus for loading a Java application program |
US6754890B1 (en) * | 1997-12-12 | 2004-06-22 | International Business Machines Corporation | Method and system for using process identifier in output file names for associating profiling data with multiple sources of profiling data |
CN1801093A (zh) * | 2006-01-17 | 2006-07-12 | 浙江大学 | Java操作系统中类装载的实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101576824B (zh) * | 2009-06-19 | 2011-11-30 | 深圳市科陆电子科技股份有限公司 | 基于jsf开发框架的内存优化系统及方法 |
-
2010
- 2010-12-14 CN CN201010588216.6A patent/CN102567033B/zh not_active Expired - Fee Related
-
2011
- 2011-05-12 WO PCT/CN2011/073997 patent/WO2012079335A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6754890B1 (en) * | 1997-12-12 | 2004-06-22 | International Business Machines Corporation | Method and system for using process identifier in output file names for associating profiling data with multiple sources of profiling data |
US6272674B1 (en) * | 1998-12-14 | 2001-08-07 | Nortel Networks Limited | Method and apparatus for loading a Java application program |
CN1801093A (zh) * | 2006-01-17 | 2006-07-12 | 浙江大学 | Java操作系统中类装载的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102567033A (zh) | 2012-07-11 |
WO2012079335A1 (zh) | 2012-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102567033B (zh) | 基于嵌入式实时Java虚拟机的预先类加载方法及装置 | |
Fouladi et al. | From laptop to lambda: Outsourcing everyday jobs to thousands of transient functional containers | |
CN106843869B (zh) | 一种前端开发工程化系统和方法 | |
CN101699405B (zh) | 一种宿主程序和插件及插件间进行交互的方法及装置 | |
EP2791850B1 (en) | Identifying application resources through implicit application models | |
CN103399734A (zh) | 生成rest服务和rest实现的方法及对应的设备 | |
US8607203B1 (en) | Test automation framework using dependency injection | |
CN109299172B (zh) | 一种基于Spring Boot在不同环境的数据源接入方法和装置 | |
CN113885967B (zh) | 一种小程序的启动方法、装置、设备及介质 | |
US20130205300A1 (en) | Method and system for managing resource | |
CN110362301B (zh) | 一种终端应用行为反射的处理方法 | |
US10467027B1 (en) | Dynamic script loading resource files | |
CN104035938A (zh) | 一种性能持续集成数据处理的方法及装置 | |
Aceto et al. | Decision support for mobile cloud computing applications via model checking | |
CN111104304A (zh) | 多任务场景性能测试方法、存储介质、电子设备及系统 | |
CN113742623A (zh) | 页面加载方法、组件、系统、装置及计算机可读存储介质 | |
Dastgeer et al. | The PEPPHER composition tool: Performance-aware dynamic composition of applications for GPU-based systems | |
RU2616164C9 (ru) | Способы и устройство для работы браузерного движка | |
CN113360156B (zh) | 一种ios编译方法及相关设备 | |
CN110347448B (zh) | 一种构造终端应用行为的运行时模型的方法 | |
CN108647087B (zh) | 实现php内核可重入的方法、装置、服务器和存储介质 | |
KR20040071831A (ko) | 자바 프로그램에서 클래스 로딩 과정을 단축시키는 시스템및 방법 | |
CN116483643A (zh) | 一种gpu调试方法、装置、设备及存储介质 | |
CN100549958C (zh) | 一种类文件装载方法和系统 | |
CN117170634A (zh) | 代码编译方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150916 |