CN109542443A - 应用程序的编译方法及装置、计算机终端、数据处理方法 - Google Patents
应用程序的编译方法及装置、计算机终端、数据处理方法 Download PDFInfo
- Publication number
- CN109542443A CN109542443A CN201710624817.XA CN201710624817A CN109542443A CN 109542443 A CN109542443 A CN 109542443A CN 201710624817 A CN201710624817 A CN 201710624817A CN 109542443 A CN109542443 A CN 109542443A
- Authority
- CN
- China
- Prior art keywords
- program
- code
- description information
- source code
- application program
- 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.)
- Pending
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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请公开了一种应用程序的编译方法及装置、计算机终端、数据处理方法。其中,该方法包括:启动应用程序;采用预先获取的第一描述信息对应用程序的源代码进行编译,得到第一程序代码,并运行第一程序代码;在第一程序代码的运行时间到达预设时间时,将第一程序代码转换为编译前的代码,得到源代码;对源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对源代码进行重新编译;其中,第一描述信息和第二描述信息为应用程序运行过程中所使用的反映运行性能的信息。
Description
技术领域
本申请涉及程序编译领域,具体而言,涉及一种应用程序的编译方法及装置、计算机终端、数据处理方法。
背景技术
即时(Just-In-Time,简称为JIT)编译是虚拟机语言常采用的提高程序性能的方式,先使用解释器执行,收集足够多的数据之后,再进行编译。解释器运行速度较慢,而且一边解释运行,一边后台编译,会消耗大量的CPU资源,导致请求超时,操作系统负载过高。为解决上述技术问题,相关技术中通过给定的应用程序接口(Application ProgrammingInterface,简称为API)积极加载类,并积极初始化,然后编译方法,即在流量接入之前完成JIT编译,但是,该种方案仅是利用上次收集到的描述信息对这次启动的类进行编译,由于Java等虚拟机语言的动态性,无法精准定位运行时的类,导致激进优化失败,影响编译出来的代码质量。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
根据本申请实施例的一个方面,提供了一种应用程序的编译方法,包括:启动应用程序;采用预先获取的第一描述信息对应用程序的源代码进行编译,得到第一程序代码,并运行第一程序代码;在第一程序代码的运行时间到达预设时间时,将第一程序代码转换为编译前的代码,得到源代码;对源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对源代码进行重新编译,其中,第一描述信息和第二描述信息为应用程序运行过程中所使用的反映运行性能的信息。
根据本申请实施例的另一方面,还提供了一种计算机终端,其特征在于,该计算机终端上运行有虚拟机,该虚拟机包括:运行时RNT模块,用于启动应用程序;第一编译模块,用于采用预先获取的第一描述信息对应用程序的源代码进行编译,得到第一程序代码,并运行第一程序代码;退优化模块,在第一程序代码的运行时间到达预设时间时,将第一程序代码转换为编译前的代码,得到源代码;第二编译模块,用于对源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对源代码进行重新编译;其中,第一描述信息和第二描述信息为应用程序运行过程中所使用的反映运行性能的信息。
根据本申请实施例的另一方面,还提供了一种编译器,该编译器运行于服务器中,编译器包括:启动模块,用于启动应用程序;第一编译模块,用于采用预先获取的第一描述信息对应用程序的源代码进行编译,得到第一程序代码,并运行第一程序代码;转换模块,用于在第一程序代码的运行时间到达预设时间时,将第一程序代码转换为编译前的代码,得到源代码;第二编译模块,用于对源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对源代码进行重新编译,其中,第一描述信息和第二描述信息为应用程序运行过程中所使用的反映运行性能的信息。
根据本申请实施例的另一方面,还提供了一种应用程序的编译装置,包括:启动模块,用于启动应用程序;第一编译模块,用于采用预先获取的第一描述信息对应用程序的源代码进行编译,得到第一程序代码,并运行第一程序代码,第一描述信息为应用程序运行过程中所使用的反映运行性能的信息;退优化模块,在第一程序代码的运行时间到达预设时间时,将第一程序代码转换为编译前的代码,得到源代码;第二编译模块,用于对源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对源代码进行重新编译,第二描述信息为应用程序运行过程中所使用的反映运行性能的信息。
根据本申请实施例的另一方面,还提供了一种计算设备,包括处理器和存储器,其特征在于,存储器用于存储计算机程序,当计算机程序被执行时,使处理器执行下述步骤:启动应用程序;采用预先获取的第一描述信息对应用程序的源代码进行编译,得到第一程序代码,并运行第一程序代码;在第一程序代码的运行时间到达预设时间时,将第一程序代码转换为编译前的代码,得到源代码;对源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对源代码进行重新编译;其中,第一描述信息和第二描述信息为应用程序运行过程中所使用的反映运行性能的信息。
根据本申请实施例的另一方面,还提供了一种数据处理方法,包括:以第一方式编译并执行应用程序;获取应用程序的性能描述信息;确定性能描述信息与预设条件相匹配,并以第二方式编译并执行应用程序。
根据本申请实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行以上的应用程序的编译方法,或者执行以上的数据处理方法。
根据本申请实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行以上的应用程序的编译方法,或者执行以上的数据处理方法。
在本申请实施例中,采用上次收集的描述信息启动应用程序,然后对应用程序进行编译运行,在运行稳定后对应用程序进行退优化重新编译,利用退优化过程中采集的描述信息进行重编译的方式,由于退优化后再次解释运行时收集的描述信息相对于上次收集的描述信息更加全面,且实时性高,因此,可以实现编译结果的优化,进而解决了现有的程序编译方案不能达到应用正常启动时的性能峰值的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a是根据本申请实施例的一种虚拟机的结构示意图;
图1b是根据本申请实施例的一种可选的应用程序第一次启动时的流程示意图;
图2是根据本申请实施例的一种可选的Profile信息的收集流程示意图;
图3为根据本申请实施例的一种可选的使用Profile信息启动应用的流程示意图;
图4为根据本申请实施例的一种应用场景的网络架构示意图;
图5为根据本申请实施例的用于实现应用程序的编译方法的计算机终端的结构示意图;
图6为根据本申请实施例的一种应用程序的编译方法的流程图;
图7为根据本申请实施例的一种应用程序的编译装置的结构框图;
图8为根据本申请实施例的一种计算机终端的结构示意图;
图9为根据本申请实施例的一种应用程序的编译器的结构框图;
图10为根据本申请实施例的一种数据处理方法的流程图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
程序中的方法(method):在面向对象的程序设计中,方法是指与类型或对象对应的一种子程序。一个方法通常由一系列语句组成,以完成一个动作或特定功能。
退优化(deoptimization):将优化过的方法栈转变为未优化版本的一个过程。对于被编译的方法,退优化可以把代码从不正确的积极优化中替换为未被优化的版本。一个方法原则上可以被退优化多次。即将已经编译好的方法的机器码抛弃,这样便可以重新解释执行源代码,并继续收集profile信息,然后重新编译。
Profile信息:用于反映程序运行时所使用的反映运行性能的信息。包括但不限于:方法执行次数,异常次数,代码块跳转,参数类型等。
实施例1
在一些语言编译环境中,即时编译可以通过即时编译器(JIT compiler)来实现,即时编译器是一个将java的字节码(包括需要被解释的指令的程序)转换成可以直接发送给处理器的指令的程序。当一个java程序被编译完成后,源语言的语句由java前端编译器编译成字节码,而不是编译成与某个特定的处理器硬件平台对应的本地指令代码。字节码是可以发送给任何平台并且能够在该平台上运行的独立于平台的代码,即即时编译是将源代码递归到可移植和可优化的中间表示。目前的即时编译通常先使用解释器执行,在收集到足够多的数据之后,再进行编译。其中,由于解释器运行速度较慢,并且,在即时编译是是一边解释执行,一边进行编译,会消耗大量资源。
针对上述问题,发明人发现,相关技术中在进行即时编译时,主要根据上次记录的profile信息积极编译类优化失败的时候,会退化到低质量代码版本,并且无法再度优化。本申请实施例则可以在程序完成启动之后,针对积极编译的方法,在程序运行稳定后,分批次进行退优化。回退到解释器中,收集运行时信息,重新编译出最高质量的代码,从而解决峰值性能问题。
基于上述考虑,本申请实施例提供了一种计算机终端,该计算机终端上运行有虚拟机,如图1a所示,该虚拟机包括:
运行时RNT模块10,用于启动应用程序;该应用程序为待测试的应用。
第一编译模块12,用于采用预先获取的第一描述信息对上述应用程序的源代码进行编译,得到第一程序代码,并运行上述第一程序代码;
可选地,上述第一描述信息可以包括但不限于Profile信息.其中,上述profile信息可以通过性能分析(performance analysis)工具(例如profiler)采集,其在进行性能分析时,可以采用但不限于以下手段来采集profile信息:硬件中断、代码指令、hook等。
在一个可选实施例中,可以根据上次生成的profile信息,开启应用,并根据上次生成的profile信息在启动时编译相关的方法。其中,上述profile信息可以以文件的形式存储至磁盘中。上述profile信息包括但不限于被编译的方法符号及顺序,执行次数等JIT编译需要的运行时信息。
退优化模块14,在上述第一程序代码的运行时间到达预设时间时,将上述第一程序代码转换为编译前的代码,得到源代码;其中,“将上述第一程序代码转换为编译前的代码”是指将上述第一程序代码进行退优化处理;上述第一程序代码的运行时间到达预设时间的含义为使上述第一程序代码平稳运行的时间。即在上述应用稳定运行后,再进行退优化处理。
在一个可选实施例中,为了提高效率,在进行退优化时可以分批次依次对程序中的方法进行退优化处理,即每次退优化时,可以仅处理程序中的部分方法,而并非全部方法。
例如:应用1内部有1个类ClassA,ClassA有三个方法,method1,method2,method3,在启动时,根据第一次收集到的Profile信息,将method1、2、3的字节码编译为机器码,字节码仍然保留,然后运行机器码。运行平稳后,退优化,将刚刚的机器码抛弃,通过第二编译模块16重新解释执行字节码,重新收集Profile信息,再一次编译为机器码。在实际应用时,在进行退优化处理时,可以只执行程序中部分类的方法,也可以执行一个类中的部分方法,对于后者,例如可以先执行method1和method2的退优化,然后再对method3执行退优化处理。
第二编译模块16,用于对上述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对上述源代码进行重新编译;即上述第二描述信息是在解释执行过程中收集的信息,这样,可以对重新编译出高质量的代码。
可选地,上述第一编译模块12和第二编译模块16的功能可以由一个模块来实现,此时,该模块可以表现为在不同的阶段执行不同的功能;当然也可以由两个独立的模块来实现。
其中,上述第一描述信息和上述第二描述信息为上述应用程序运行过程中所使用的反映运行性能的信息。例如,上述第一描述信息和第二描述信息可以包括但不限于:profile信息,该profile信息包括但不限于热点方法的符号,执行次数等通用运行时信息。
图1b是根据本申请实施例的一种可选的应用程序第一次启动时的流程示意图。如图1b所示,首次启动应用时的流程包括以下处理步骤:
步骤S102,确定当前应用为第一次启动;
步骤S104,运行时生成编译相关的Profile信息,并存储;
步骤S106,根据上次启动生成的信息启动,其中,上次启动生成的信息包括:profile信息;
步骤S108,在运行预设时间段之后,上述应用开始平稳运行。其中,上述预设时间段可以通过实验确定,也可以通过用户定义。
图2是根据本申请实施例的一种可选的Profile信息的收集流程示意图。如图2所示,收集Profile信息的主要流程包括以下处理步骤:
S202,线上选择一台有流量访问的机器,(可以为人工选择,但不限于此)称为收集服务器。
S204,应用开启对应选项,开启收集模式。
S206,对接流量,引导收集服务器上的应用程序进行编译,生成并收集Profile信息到磁盘文件中。
其中收集的Profile信息包括被编译的方法符号及顺序,执行次数等JIT编译需要的运行时信息。收集并写入文件后,传输到其他部署了该应用的机器上。
利用Profile信息启动的主要流程如图3所示,包括以下处理步骤:
S302,利用上次生成的Profile信息,开启相关选项,启动应用。
S304,应用根据Profile信息在启动时编译相关的方法,流量进来后稳定运行。
S306,应用运行平稳(即运行指定时间)后,分批次挨个进行方法退优化,重新根据运行时信息进行编译,慢慢达到峰值性能。
根据上述方法,本申请构造了一个完整的方案,对一个应用进行了测试,如图4所示:
步骤S402,接收业务请求;
步骤S404,收集服务器上运行的应用1内部有1个类ClassA,ClassA有三个方法,method1,method2,method3,在启动时,根据第一次收集到的Profile信息,将method1、2、3的字节码编译为机器码,字节码仍然保留,然后运行机器码。运行平稳后,退优化,将刚刚的机器码抛弃,重新解释执行字节码,重新收集Profile信息,再一次编译为机器码。其中,重新收集的Profile信息将会被传输到其他服务器,以供其他服务器启动时使用。
本申请解决积极编译(Active compilation)类导致的性能损失问题。现有技术根据上次记录的profile信息积极编译类优化失败的时候,会退化到低质量代码版本,并且无法再度优化。本申请可以在程序完成启动之后,针对积极编译的方法,在程序运行稳定后,分批次进行退优化。回退到解释器中,收集运行时信息,重新编译出最高质量的代码,从而解决峰值性能问题。
实施例2
根据本申请实施例,还提供了一种应用程序的编译方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图5示出了一种用于实现应用程序的编译方法的计算机终端(或移动设备)的硬件结构框图。如图5所示,计算机终端50(或移动设备50)可以包括一个或多个(图中采用502a、502b,……,502n来示出)处理器502(处理器502可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器504、以及用于通信功能的传输模块506。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图5所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端50还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。
应当注意到的是上述一个或多个处理器502和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端50(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器504可用于存储应用软件的软件程序以及模块,如本申请实施例中的应用程序的编译方法对应的程序指令/数据存储装置,处理器502通过运行存储在存储器504内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的漏洞检测方法。存储器504可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器504可进一步包括相对于处理器502远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端50。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置506用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端50的通信供应商提供的无线网络。在一个实例中,传输装置506包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置506可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端50(或移动设备)的用户界面进行交互。
在上述运行环境下,本申请提供了如图6所示的应用程序的编译方法。图6是根据本申请实施例2的应用程序的编译方法的流程图。
步骤S602,启动应用程序。该应用程序为待测试的应用。
步骤S604,采用预先获取的第一描述信息对上述应用程序的源代码进行编译,得到第一程序代码,并运行上述第一程序代码;可选地,上述第一描述信息可以包括但不限于Profile信息.其中,上述profile信息可以通过性能分析(performance analysis)工具(例如profiler)采集,其在进行性能分析时,可以采用但不限于以下手段来采集profile信息:硬件中断、代码指令、hook等。
在一个可选实施例中,上述profile信息可以以文件的形式存储至磁盘中。上述profile信息包括但不限于被编译的方法符号及顺序,执行次数等JIT编译需要的运行时信息。
步骤S606,在上述第一程序代码的运行时间到达预设时间时,对上述第一程序代码进行退优化处理,得到源代码;其中,“将上述第一程序代码转换为编译前的代码”是指将上述第一程序代码进行退优化处理;上述第一程序代码的运行时间到达预设时间的含义为使上述第一程序代码平稳运行的时间。即在上述应用稳定运行后,再进行退优化处理。
步骤S608,对上述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对上述源代码进行重新编译。
该步骤中涉及到的解释执行动作,可以通过解释程序(或称为解释器)实现,其中,解释程序是高级语言翻译程序的一种,它将源语言书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。例如,在终端中输入一条指令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行,且将执行结果反映到终端,从终端输入命令后,就能立即得到计算结果。由于解释程序执行速度较慢,因此,在本申请的一个可选实施例中,步骤S606中的退优化过程可以分批次进行,例如,在进行退优化时可以分批次依次对程序中的方法进行退优化处理,即每次退优化时,可以仅处理程序中的部分方法,而并非全部方法。
第一次收集到的描述信息是上次信息序列化后的结果,不能保证与第二次运行时一一对应起来。退优化后解释执行的描述信息与当时的runtime是一一对应的,比第一次收集到的更加全面。比如第一次运行有3个ClassA,第二次运行有4个ClassA,无法对应起来。
可选地,采用预先获取的第一描述信息对上述应用程序的源代码进行编译,包括:采用预先获取的第一描述信息对上述源代码中的方法进行编译;
对上述第一程序代码进行退优化处理,得到源代码,包括:对上述第一程序代码分批进行上述退优化处理。
可选地,采用预先获取的第一描述信息对上述源代码中的方法进行编译之前,对上述第一描述信息中指示的上述源代码中的方法进行编译。
第一次收集到的描述信息中存有编译了哪些方法,第二次运行直接编译这些方法。需要注意的是,需要编译的方法也记录在了描述信息中。
在本申请的一个可选实施例中,上述第一描述信息可以从本地获取,可以从其它设备获取,对于后者,可以通过以下方式实现,但不限于此:采用预先获取的第一描述信息对上述应用程序的源代码进行编译之前,接收来自其他设备的磁盘文件,其中,上述其他设备为除上述应用程序当前所在设备之外的设备;从上述磁盘文件中获取上述第一描述信息。由于将描述信息以磁盘文件的形式进行存储,因此,信息的存储更加稳定。
可选地,第一描述信息和/或第二描述信息包括以下至少之一:被编译的源代码中的方法符号和编译顺序、被编译的方法执行次数、类初始化信息。
在一个可选实施例中,上述第一描述信息和第二描述信息均包括:Profile信息,Profile信息包括:在程序或应用运行时反映程序的运行性能的信息;可选地,上述profile信息包括但不限于热点方法的符号,执行次数等通用运行时信息。
需要说明的是,本实施例中的优选实施方式可以参见实施例1中的相关描述,此处不再赘述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
实施例3
根据本申请实施例,还提供了一种用于实施上述应用程序的编译方法的装置,如图7所示,该装置包括:
启动模块70,用于启动应用程序;
第一编译模块72,用于采用预先获取的第一描述信息对上述应用程序的源代码进行编译,得到第一程序代码,并运行上述第一程序代码;
退优化模块74,在上述第一程序代码的运行时间到达预设时间时,对上述第一程序代码进行退优化处理,得到源代码;
第二编译模块76,用于对上述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对上述源代码进行重新编译。
需要说明的是,本实施例中的优选实施方式可以参见实施例1-2中的相关描述,此处不再赘述。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式来实现:上述各个模块位于同一处理器中;或者上述各个模块以任意组合的方式位于不同的处理器中。
实施例4
本申请的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机终端可以执行应用程序的编译方法中以下步骤的程序代码:启动应用程序;采用预先获取的第一Profile信息对应用程序的源代码进行编译,得到第一程序代码,并运行第一程序代码;在第一程序代码的运行时间到达预设时间时,对第一程序代码进行退优化处理,得到源代码;对源代码进行解释执行,并依据解释执行过程中获取的第二Profile信息对源代码进行重新编译。
可选地,本实施例中的计算机终端的结构可以参见图5所示结构,但不限于此。图5其并不对上述电子装置的结构造成限定。例如,计算机终端还可包括比图5中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图5所示不同的配置.
其中,存储器可用于存储软件程序以及模块,如本申请实施例中的应用程序的编译方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的系统漏洞攻击的检测方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:启动应用程序;采用预先获取的第一描述信息对上述应用程序的源代码进行编译,得到第一程序代码,并运行上述第一程序代码;在上述第一程序代码的运行时间到达预设时间时,对上述第一程序代码进行退优化处理,得到上述源代码;对上述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对上述源代码进行重新编译。
可选地,上述处理器还可以执行如下步骤的程序代码:采用预先获取的第一描述信息对源代码中的方法进行编译;对第一程序代码分批进行退优化处理。
可选地,上述处理器还可以执行如下步骤的程序代码:对第一描述信息中指示的源代码中的方法进行编译。
可选地,上述处理器还可以执行如下步骤的程序代码:接收来自其他设备的磁盘文件,其中,其他设备为除应用程序当前所在设备之外的设备;从磁盘文件中获取第一描述信息。
采用本申请实施例,解决了现有的程序编译方案不能达到应用正常启动时的性能峰值的技术问题。
本领域普通技术人员可以理解,本实施例中的计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例5
本申请的实施例还提供了另外一种计算机终端。用于提供与用户交互的交互界面80,如图8所示,该交互界面80包括:
第一控件800,用于启动应用程序;
第二控件802,用于采用预先获取的第一描述信息对上述应用程序的源代码进行编译,得到第一程序代码,并运行上述第一程序代码;在上述第一程序代码的运行时间到达预设时间时,对上述第一程序代码进行退优化处理,得到源代码;
第三控件804,用于对上述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对上述源代码进行重新编译。
实施例6
图9为根据本申请实施例的一种应用程序的编译器的结构框图。该编译器运行于服务器中,如图9所示,上述编译器包括:
启动模块90,用于启动应用程序;
第一编译模块92,用于采用预先获取的第一描述信息对上述应用程序的源代码进行编译,得到第一程序代码,并运行上述第一程序代码;
转换模块94,用于在上述第一程序代码的运行时间到达预设时间时,将上述第一程序代码转换为编译前的代码,得到上述源代码;
第二编译模块96,用于对上述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对上述源代码进行重新编译,其中,上述第一描述信息和上述第二描述信息为上述应用程序运行过程中所使用的反映运行性能的信息。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式来实现:上述各个模块位于同一处理器中;或者上述各个模块以任意组合的方式位于不同的处理器中。
实施例7
本实施例还提供一种计算设备,该计算设备包括:处理器和存储器,存储器用于存储计算机程序,当上述计算机程序被执行时,使上述处理器执行下述步骤:启动应用程序;采用预先获取的第一描述信息对上述应用程序的源代码进行编译,得到第一程序代码,并运行上述第一程序代码;在上述第一程序代码的运行时间到达预设时间时,将上述第一程序代码转换为编译前的代码,得到上述源代码;对上述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对上述源代码进行重新编译;其中,上述第一描述信息和上述第二描述信息为上述应用程序运行过程中所使用的反映运行性能的信息。
实施例8
本申请实施例提供一种数据处理方法,如图10所示,该方法包括:
步骤S1002,以第一方式编译并执行应用程序;
步骤S1004,获取上述应用程序的性能描述信息;
步骤S1006,确定上述性能描述信息与预设条件相匹配,并以第二方式编译并执行应用程序。
可选地,本实施例中提供的数据处理方法还可以包括以下步骤:显示提示信息,其中,上述提示信息用于提示上述应用程序已经以第二方式进行编译。
在一个可选实施例中,以第二方式编译并执行应用程序之前,还可以停止上述应用程序的执行。
在一个可选实施例中,以第一方式编译并执行应用程序包括:采用上述性能描述信息中的第一描述信息对上述应用程序的源代码进行编译,得到第一程序代码,并运行上述第一程序代码;以第二方式编译并执行应用程序之前,上述方法还包括:在上述第一程序代码的运行时间到达预设时间时,将上述第一程序代码转换为编译前的代码,得到上述源代码;以第二方式编译并执行应用程序,包括:对上述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对上述源代码进行重新编译。
本实施例的优选实施方式可以参见实施例1至7中的相关描述,此处不再赘述。
实施例9
本申请实施例还提供了一种存储介质,上述存储介质包括存储的程序,其中,在上述程序运行时控制上述存储介质所在设备执行实施例1或2中的应用程序的编译方法。
上述存储介质还用于存储执行以下功能的程序:启动应用程序;采用预先获取的第一描述信息对上述应用程序的源代码进行编译,得到第一程序代码,并运行上述第一程序代码;在上述第一程序代码的运行时间到达预设时间时,对上述第一程序代码进行退优化处理,得到源代码;对上述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对上述源代码进行重新编译。
可选地,上述存储介质还用于存储执行以下功能的程序:采用预先获取的第一描述信息对源代码中的方法进行编译,其中,源代码中的方法包括实现指定功能的子程序;对第一程序代码分批进行退优化处理。
可选地,上述存储介质还用于存储执行以下功能的程序:接收来自其他设备的磁盘文件,其中,其他设备为除应用程序当前所在设备之外的设备;从磁盘文件中获取第一描述信息。
实施例10
根据本申请实施例的另一方面,还提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行应用程序的编译方法。
上述处理器用于执行实现以下功能的程序:启动应用程序;采用预先获取的第一描述信息对上述应用程序的源代码进行编译,得到第一程序代码,并运行上述第一程序代码;在上述第一程序代码的运行时间到达预设时间时,对上述第一程序代码进行退优化处理,得到源代码;对上述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对上述源代码进行重新编译。
可选地,上述处理器还可以执行如下步骤的程序代码:采用预先获取的第一描述信息对源代码中的方法进行编译;对第一程序代码分批进行退优化处理。
可选地,上述处理器还可以执行如下步骤的程序代码:对第一描述信息中指示的源代码中的方法进行编译。
可选地,上述处理器还可以执行如下步骤的程序代码:接收来自其他设备的磁盘文件,其中,其他设备为除应用程序当前所在设备之外的设备;从磁盘文件中获取第一描述信息。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (16)
1.一种应用程序的编译方法,其特征在于,包括:
启动应用程序;
采用预先获取的第一描述信息对所述应用程序的源代码进行编译,得到第一程序代码,并运行所述第一程序代码;
在所述第一程序代码的运行时间到达预设时间时,将所述第一程序代码转换为编译前的代码,得到所述源代码;
对所述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对所述源代码进行重新编译;
其中,所述第一描述信息和所述第二描述信息为所述应用程序运行过程中所使用的反映运行性能的信息。
2.根据权利要求1所述的方法,其特征在于,
采用预先获取的第一描述信息对所述应用程序的源代码进行编译,包括:采用预先获取的第一描述信息对所述源代码中的方法进行编译,其中,所述源代码中的方法包括实现指定功能的子程序;
对所述第一程序代码进行退优化处理,得到源代码,包括:对所述第一程序代码分批进行所述退优化处理。
3.根据权利要求1所述的方法,其特征在于,采用预先获取的第一描述信息对所述源代码中的方法进行编译包括:
对所述第一描述信息中指示的所述源代码中的方法进行编译。
4.根据权利要求1所述的方法,其特征在于,采用预先获取的第一描述信息对所述应用程序的源代码进行编译之前,所述方法还包括:
接收来自其他设备的磁盘文件,其中,所述其他设备为除所述应用程序当前所在设备之外的设备;
从所述磁盘文件中获取所述第一描述信息。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述第一描述信息和/或所述第二描述信息包括以下至少之一:被编译的所述源代码中的方法符号和编译顺序、被编译的方法执行次数、类初始化信息。
6.根据权利要求1至4中任一项所述的方法,其特征在于,所述第一描述信息和所述第二描述信息均包括:Profile信息,所述Profile信息包括:在程序或应用运行时反映程序的运行性能的信息。
7.一种计算机终端,其特征在于,该计算机终端上运行有虚拟机,该虚拟机包括:
运行时RNT模块,用于启动应用程序;
第一编译模块,用于采用预先获取的第一描述信息对所述应用程序的源代码进行编译,得到第一程序代码,并运行所述第一程序代码;
退优化模块,在所述第一程序代码的运行时间到达预设时间时,将所述第一程序代码转换为编译前的代码,得到源代码;
第二编译模块,用于对所述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对所述源代码进行重新编译;
其中,所述第一描述信息和所述第二描述信息为所述应用程序运行过程中所使用的反映运行性能的信息。
8.一种编译器,其特征在于,该编译器运行于服务器中,所述编译器包括:
启动模块,用于启动应用程序;
第一编译模块,用于采用预先获取的第一描述信息对所述应用程序的源代码进行编译,得到第一程序代码,并运行所述第一程序代码;
转换模块,用于在所述第一程序代码的运行时间到达预设时间时,将所述第一程序代码转换为编译前的代码,得到所述源代码;
第二编译模块,用于对所述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对所述源代码进行重新编译,其中,所述第一描述信息和所述第二描述信息为所述应用程序运行过程中所使用的反映运行性能的信息。
9.一种应用程序的编译装置,其特征在于,包括:
启动模块,用于启动应用程序;
第一编译模块,用于采用预先获取的第一描述信息对所述应用程序的源代码进行编译,得到第一程序代码,并运行所述第一程序代码,所述第一描述信息为所述应用程序运行过程中所使用的反映运行性能的信息;
退优化模块,在所述第一程序代码的运行时间到达预设时间时,将所述第一程序代码转换为编译前的代码,得到源代码;
第二编译模块,用于对所述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对所述源代码进行重新编译,所述第二描述信息为所述应用程序运行过程中所使用的反映运行性能的信息。
10.一种计算设备,包括处理器和存储器,其特征在于,所述存储器用于存储计算机程序,当所述计算机程序被执行时,使所述处理器执行下述步骤:
启动应用程序;
采用预先获取的第一描述信息对所述应用程序的源代码进行编译,得到第一程序代码,并运行所述第一程序代码;
在所述第一程序代码的运行时间到达预设时间时,将所述第一程序代码转换为编译前的代码,得到所述源代码;
对所述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对所述源代码进行重新编译;
其中,所述第一描述信息和所述第二描述信息为所述应用程序运行过程中所使用的反映运行性能的信息。
11.一种数据处理方法,其特征在于,包括:
以第一方式编译并执行应用程序;
获取所述应用程序的性能描述信息;
确定所述性能描述信息与预设条件相匹配,并以第二方式编译并执行应用程序。
12.根据权利要求11所述的方法,其特征在于,还包括:
显示提示信息,其中,所述提示信息用于提示所述应用程序已经以第二方式进行编译。
13.根据权利要求11所述的方法,其特征在于,以第二方式编译并执行应用程序之前,所述方法还包括:
停止所述应用程序的执行。
14.根据权利要求11所述的方法,其特征在于,
以第一方式编译并执行应用程序包括:采用所述性能描述信息中的第一描述信息对所述应用程序的源代码进行编译,得到第一程序代码,并运行所述第一程序代码;
以第二方式编译并执行应用程序之前,所述方法还包括:在所述第一程序代码的运行时间到达预设时间时,将所述第一程序代码转换为编译前的代码,得到所述源代码;
以第二方式编译并执行应用程序,包括:对所述源代码进行解释执行,并依据解释执行过程中获取的第二描述信息对所述源代码进行重新编译。
15.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至6中任意一项所述的应用程序的编译方法;或者在所述程序运行时控制所述存储介质所在设备执行权利要求11至14中任意一项所述的数据处理方法。
16.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至6中任意一项所述的应用程序的编译方法,或者在所述程序运行时执行权利要求11至14中任意一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710624817.XA CN109542443A (zh) | 2017-07-27 | 2017-07-27 | 应用程序的编译方法及装置、计算机终端、数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710624817.XA CN109542443A (zh) | 2017-07-27 | 2017-07-27 | 应用程序的编译方法及装置、计算机终端、数据处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109542443A true CN109542443A (zh) | 2019-03-29 |
Family
ID=65820980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710624817.XA Pending CN109542443A (zh) | 2017-07-27 | 2017-07-27 | 应用程序的编译方法及装置、计算机终端、数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542443A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110147236A (zh) * | 2019-04-30 | 2019-08-20 | 阿里巴巴集团控股有限公司 | 代码编译方法及装置 |
CN110704042A (zh) * | 2019-10-15 | 2020-01-17 | 恩亿科(北京)数据科技有限公司 | 程序代码处理方法和装置、服务器及存储介质 |
CN110716715A (zh) * | 2019-10-18 | 2020-01-21 | 恒生电子股份有限公司 | 一种应用程序开发方法、装置、设备及介质 |
CN112445483A (zh) * | 2019-08-27 | 2021-03-05 | 龙芯中科技术股份有限公司 | 一种指令生成方法、装置、电子设备及存储介质 |
CN112748914A (zh) * | 2020-03-18 | 2021-05-04 | 腾讯科技(深圳)有限公司 | 一种应用程序开发方法、装置、电子设备和存储介质 |
CN113126957A (zh) * | 2019-12-30 | 2021-07-16 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、电子设备及计算机存储介质 |
CN113326046A (zh) * | 2021-05-26 | 2021-08-31 | 网易(杭州)网络有限公司 | 获取编译时长的方法和装置 |
CN113535180A (zh) * | 2021-06-15 | 2021-10-22 | 杭州电魂网络科技股份有限公司 | 一种跨平台的游戏发布方法、系统和计算机可读存储介质 |
CN113867734A (zh) * | 2021-10-20 | 2021-12-31 | 北京思明启创科技有限公司 | 代码块解释执行方法、装置、电子设备及存储介质 |
WO2023185842A1 (zh) * | 2022-03-28 | 2023-10-05 | 中兴通讯股份有限公司 | 确定编译优化选项的方法、电子设备、可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739280A (zh) * | 2008-11-11 | 2010-06-16 | 爱思开电讯投资(中国)有限公司 | 用于java卡的字节码优化系统和方法 |
CN103064720A (zh) * | 2011-09-09 | 2013-04-24 | 微软公司 | 简档导向的jit代码生成 |
CN103136029A (zh) * | 2013-03-12 | 2013-06-05 | 无锡江南计算技术研究所 | 即时编译系统自适应调优方法 |
CN103729235A (zh) * | 2013-12-24 | 2014-04-16 | 华为技术有限公司 | Java虚拟机的编译方法和Java虚拟机 |
-
2017
- 2017-07-27 CN CN201710624817.XA patent/CN109542443A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739280A (zh) * | 2008-11-11 | 2010-06-16 | 爱思开电讯投资(中国)有限公司 | 用于java卡的字节码优化系统和方法 |
CN103064720A (zh) * | 2011-09-09 | 2013-04-24 | 微软公司 | 简档导向的jit代码生成 |
CN103136029A (zh) * | 2013-03-12 | 2013-06-05 | 无锡江南计算技术研究所 | 即时编译系统自适应调优方法 |
CN103729235A (zh) * | 2013-12-24 | 2014-04-16 | 华为技术有限公司 | Java虚拟机的编译方法和Java虚拟机 |
Non-Patent Citations (1)
Title |
---|
CHARLIE HUNT,BINU JOHN著,柳飞,陆明刚译: ""HotSpot VM JIT编译器;Java应用的基准测试"", 《JAVA性能优化权威指南》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110147236A (zh) * | 2019-04-30 | 2019-08-20 | 阿里巴巴集团控股有限公司 | 代码编译方法及装置 |
CN110147236B (zh) * | 2019-04-30 | 2023-01-31 | 创新先进技术有限公司 | 代码编译方法及装置 |
CN112445483A (zh) * | 2019-08-27 | 2021-03-05 | 龙芯中科技术股份有限公司 | 一种指令生成方法、装置、电子设备及存储介质 |
CN112445483B (zh) * | 2019-08-27 | 2023-11-24 | 龙芯中科技术股份有限公司 | 一种指令生成方法、装置、电子设备及存储介质 |
CN110704042A (zh) * | 2019-10-15 | 2020-01-17 | 恩亿科(北京)数据科技有限公司 | 程序代码处理方法和装置、服务器及存储介质 |
CN110716715B (zh) * | 2019-10-18 | 2024-01-19 | 恒生电子股份有限公司 | 一种应用程序开发方法、装置、设备及介质 |
CN110716715A (zh) * | 2019-10-18 | 2020-01-21 | 恒生电子股份有限公司 | 一种应用程序开发方法、装置、设备及介质 |
CN113126957A (zh) * | 2019-12-30 | 2021-07-16 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、电子设备及计算机存储介质 |
CN113126957B (zh) * | 2019-12-30 | 2024-05-24 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、电子设备及计算机存储介质 |
CN112748914A (zh) * | 2020-03-18 | 2021-05-04 | 腾讯科技(深圳)有限公司 | 一种应用程序开发方法、装置、电子设备和存储介质 |
CN112748914B (zh) * | 2020-03-18 | 2023-09-19 | 腾讯科技(深圳)有限公司 | 一种应用程序开发方法、装置、电子设备和存储介质 |
CN113326046A (zh) * | 2021-05-26 | 2021-08-31 | 网易(杭州)网络有限公司 | 获取编译时长的方法和装置 |
CN113326046B (zh) * | 2021-05-26 | 2023-09-26 | 网易(杭州)网络有限公司 | 获取编译时长的方法和装置 |
CN113535180A (zh) * | 2021-06-15 | 2021-10-22 | 杭州电魂网络科技股份有限公司 | 一种跨平台的游戏发布方法、系统和计算机可读存储介质 |
CN113867734A (zh) * | 2021-10-20 | 2021-12-31 | 北京思明启创科技有限公司 | 代码块解释执行方法、装置、电子设备及存储介质 |
WO2023185842A1 (zh) * | 2022-03-28 | 2023-10-05 | 中兴通讯股份有限公司 | 确定编译优化选项的方法、电子设备、可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542443A (zh) | 应用程序的编译方法及装置、计算机终端、数据处理方法 | |
CN109034814B (zh) | 基于以太坊虚拟机的智能合约处理方法和装置 | |
CN111245898B (zh) | 一种网络设备上线方法、装置、服务器及存储介质 | |
CN110531962B (zh) | 小程序的开发处理方法、设备及计算机可读存储介质 | |
De Farias et al. | COMFIT: A development environment for the Internet of Things | |
CN107491329A (zh) | Docker镜像构建方法、设备、存储介质以及电子装置 | |
CN105516154B (zh) | 应用于SEAndroid系统的安全策略配置方法及装置 | |
CN105117233A (zh) | Api调用方法及装置 | |
CN105164644A (zh) | 钩子框架 | |
CN103812948A (zh) | 智能手机操作系统云端交互定制系统与方法 | |
CN110716510A (zh) | 用于自动化应用的抽象层 | |
CN108509333A (zh) | 调试方法及装置 | |
CN110531985A (zh) | Sdk初始化方法及系统、电子设备、存储介质 | |
CN105450463A (zh) | 硬件设备的调试方法、装置和系统 | |
CN105252533A (zh) | 机器人交互系统、云计算平台、用户终端和机器人 | |
CN110300082A (zh) | 一种接口生成方法、装置及存储介质 | |
CN105745621A (zh) | 在服务器上仿真测试分布式应用 | |
CN108241496A (zh) | 应用程序的平滑升级方法及装置 | |
CN107807545A (zh) | 一种远程控制端的调试方法和装置 | |
CN105912341A (zh) | 一种传感器的校准参数的配置方法及电子设备 | |
CN105739481B (zh) | 工控软件的测试方法、装置及系统 | |
CN110119282A (zh) | 一种基于通用嵌入式计算机的物联网终端及系统 | |
CN111123737A (zh) | 一种数字硬件虚拟仿真系统 | |
CN108919608A (zh) | 曝光流程控制方法、装置、设备及介质 | |
CN104699489A (zh) | 基于多操作系统的嵌入式软件平台 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190329 |
|
RJ01 | Rejection of invention patent application after publication |