CN110569108A - 小游戏虚拟机执行环境的创建方法及相关产品 - Google Patents
小游戏虚拟机执行环境的创建方法及相关产品 Download PDFInfo
- Publication number
- CN110569108A CN110569108A CN201910834149.2A CN201910834149A CN110569108A CN 110569108 A CN110569108 A CN 110569108A CN 201910834149 A CN201910834149 A CN 201910834149A CN 110569108 A CN110569108 A CN 110569108A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- mini
- heap memory
- game
- memory object
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- 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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- 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/45575—Starting, stopping, suspending or resuming virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种小游戏虚拟机执行环境的创建的方法及相关产品,包括:分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象;对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象进行处理以得到快照文件;当检测到启动小游戏时,调用所述快照文件以得到所述小游戏虚拟机执行环境。采用上述手段,通过快照文件快速恢复小游戏虚拟机环境,以替代现有技术中每次启动时均需要重新创建的弊端,提高了小游戏虚拟机执行环境的创建效率,用户体验好。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种小游戏虚拟机执行环境的创建的方法及相关产品。
背景技术
V8:一个由Google开发的开源JavaScript引擎,用于执行JavaScript代码。
小游戏:一种点开即玩,无需下载安装的小程序,基于JavaScript引擎,提供Canvas/WebGL相关接口。
JavaScript虚拟机:一种使用虚拟指令集,用于执行JavaScript语言的运行环境。
小游戏公共库:为小游戏开发者提供一套友善的JavaScript API,连接开发者代码和底层渲染实现代码。
现有技术的小游戏是基于JavaScript引擎的,比如在安卓上,使用的是Google的V8引擎。小游戏启动时,需要创建好JavaScript虚拟机环境,以及小游戏代码执行所需的相关环境。由于上述整个创建过程效率不高,每次打开小游戏时都需要重新创建流程,从而增加了每次打开小游戏的等待时间。
发明内容
本申请实施例提供一种小游戏虚拟机执行环境的创建的方法及相关产品,能够达到快速启动小游戏的目的。
本申请实施例的第一方面提供了一种小游戏虚拟机执行环境的创建方法,包括:
分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象;
对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象进行处理以得到快照文件;
当检测到启动小游戏时,调用所述快照文件以得到所述小游戏虚拟机执行环境。
本申请实施例的第二方面提供了一种小游戏虚拟机执行环境的创建系统,包括:
获取模块,用于分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象;
处理模块,用于对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象进行处理以得到快照文件;
创建模块,用于当检测到启动小游戏时,调用所述快照文件以得到所述小游戏虚拟机执行环境。
本申请实施例的第三方面提供了一种服务器,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行所述的方法。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现所述的方法。
实施本申请实施例,至少具有如下有益效果:
通过本申请实施例,通过分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象,然后对虚拟机内置函数的堆内存对象、虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象进行处理以得到快照文件;当检测到启动小游戏时,调用该快照文件以得到小游戏虚拟机执行环境。采用上述手段,通过快照文件快速恢复小游戏虚拟机环境,以替代现有技术中每次启动时均需要重新创建的弊端,提高了小游戏虚拟机执行环境的创建效率,用户体验好。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1为本发明实施例提供的一种网络架构示意图;
图2是本发明实施例提供的一种小游戏虚拟机执行环境的创建方法的交互示意图;
图3是本发明实施例提供的一种小游戏虚拟机执行环境的创建方法的流程示意图;
图4是本发明实施例提供的一种对象序列化的示意图;
图5是本发明实施例提供的一种小游戏虚拟机执行环境的创建方法的流程示意图;
图6是本发明实施例提供的一种服务器的结构示意图;
图7是本发明实施例提供的一种小游戏虚拟机执行环境的创建系统的结构示意图;
图8是本发明实施例提供的分布式系统应用于区块链系统的一个可选的结构示意图;
图9是本发明实施例提供的区块结构一个可选的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
现有技术中小游戏JavaScript虚拟机环境准备过程,主要包括:1,加载内置函数/对象,如:Math、Date等内置函数;2,加载Canvas/WebGL等原生绑定函数;3,加载小游戏公共库JavaScript代码。即每次打开一个新的小游戏,都需要经过上面三个步骤,小游戏才能正常的运行起来。上述三个步骤每次执行的内容都是固定的,而且效率非常低。为了解决上述问题,本方案提供了一种小游戏虚拟机执行环境的创建方法及相关产品,以达到跳过上述三个步骤,达到小游戏虚拟机环境快速创建的目的。
参照图1,图1为本发明实施例提供的一种网络架构示意图。该网络架构可以包括多个服务器以及多个终端设备,如图1所示,具体包括终端设备100a、终端设备100b、终端设备100c、服务器200a,服务器200a可以通过网络与每个终端设备进行数据传输。服务器200a可分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象;然后服务器200a对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象进行处理以得到快照文件;当检测到启动小游戏时,所述服务器200a调用所述快照文件以得到所述小游戏虚拟机执行环境。可选的,如图2所示,是本发明实施例提供的一种小游戏虚拟机执行环境的创建方法的交互示意图。其包括虚拟机和服务器,其中,服务器分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象。服务器对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象进行处理以得到快照文件。当检测到启动小游戏时,服务器调用所述快照文件以得到所述小游戏虚拟机执行环境。通过本申请实施例,通过分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象,然后对虚拟机内置函数的堆内存对象、虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象进行处理以得到快照文件;当检测到启动小游戏时,调用该快照文件以得到小游戏虚拟机执行环境。采用上述手段,通过快照文件快速恢复小游戏虚拟机环境,以替代现有技术中每次启动时均需要重新创建的弊端,提高了小游戏虚拟机执行环境的创建效率,用户体验好。
请参阅图3,图3为本申请实施例提供了一种小游戏虚拟机执行环境的创建方法的流程示意图。如图3所示,其可包括步骤301-303,具体如下:
301、分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象;
其中,内置函数或内置对象,相当于JavaScript引擎提供的基于ECMAScript标准的基础库函数。这些函数/对象通过JavaScript或者原生的builtin方式来实现。在这些模块被加载后会保存在全局的堆对象(Global Object)上。
上述获取所述虚拟机内原生绑定函数的堆内存对象,包括:
获取所述虚拟机内原生绑定函数分别对应的外部内存对象;
其中,上述外部内存对象如可以是外部C++内存对象等。
根据所述虚拟机内原生绑定函数分别对应的外部内存对象,获取所述原生绑定函数与所述原生绑定函数分别对应的外部内存对象之间的映射关系;
上述映射关系可以是一个映射表,以便在进行加载快照文件进行环境还原时获取真实的内存环境。
加载所述虚拟机内原生绑定函数分别对应的外部内存对象以得到所述虚拟机内原生绑定函数的堆内存对象。
通过加载虚拟机内原生绑定函数分别对应的外部内存对象进而得到原生绑定函数的堆内存对象。
其中,小游戏提供绘图功能的支持,是通过底层实现了标准的Canvas/WebGL绘图接口来实现的。通过原生绑定函数提供的此类绘图接口数量约200个,每次启动时加载均需要耗费一定的时间。此类原生绑定函数,由于需要大量引用外部C++内存对象,无法直接将堆内存序列化后使用。因此,需要将外部C++内存对象的引用进行转换。
其中,小游戏公共库JavaScript代码为开发者提供了一套友好的JavaScript API用于游戏开发。公共库代码由纯JavaScript代码组成,需要在每次启动时先于开发者代码注入执行。随着业务发展,公共库代码逻辑日益复杂,功能也越来越多,代码提交日益膨胀。注入执行公共库代码也需要花费不少的时间。公共库代码的注入执行,主要分为两个步骤:编译和执行。编译包括读入公共库代码,分析抽象语法树,并生成字节码。执行包括解释执行字节码以及必要时通过JIT对代码进行优化生成高效机器码,整个过程冗长耗时,如果能跳过该过程,直接恢复最后结果,将对启动速度有很大的优化。
其中,获取所述小游戏公共库函数的堆内存对象,包括:
将所述小游戏公共库函数进行编译,并执行所述编译所得的结果;
获取预设脚本,以将所述小游戏公共库函数均调用一次并得到所述小游戏公共库函数的堆内存对象。
上述对小游戏公共库的执行环境进行保存前,需要执行两个步骤:冷注入和暖启动。其中,冷注入是指将小游戏公共库代码编译和初始执行。由于小游戏公共库提供的基础函数,在初次执行时,几乎不会被执行到,这些函数不会在冷注入时编译和执行,因此需要有一个暖启动的过程,通过再注入一个暖脚本,相当于热身的作用,将小游戏公共库的函数逐一调用一遍,以触发整个小游戏公共库函数的编译和执行,并生成相应的堆内存对象。
302、对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象进行处理以得到快照文件;
具体地,所述对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象进行处理以得到快照文件,包括:
对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象均执行垃圾收集程序,以得到虚拟机的堆内存对象;
其中,当上述虚拟机内置函数、虚拟机内原生绑定函数和小游戏公共库函数均加载完毕后,即已经准备好了一个可以直接运行开发者JavaScript的小游戏环境(Context)。这时,先执行一次完整GC(垃圾收集),将所有不被引用的对象从堆内存对象中移除掉,以得到处理后的虚拟机的堆内存对象。
将所述虚拟机的堆内存对象进行序列化处理以得到所述虚拟机的二进制序列化数据;
将所述虚拟机的二进制序列化数据进行保存以得到所述快照文件。
将进行垃圾处理后的当前虚拟机的堆内存对象序列化,以二进制的方式保存起来,即生成快照文件。
其中,对象序列化是指将内存中保存的是对象以二进制数据流的形式进行处理,可以实现对象的保存或者是网络传输。如java中的每一个对象都是存放在堆内存中,即用户电脑的堆内存中,当用户觉得堆内存中的对象很重要,需要另外保存,可能需要把该对象保存到文件中,也可能通过网络上传到服务器,也可能是保存到数据库中等等。堆内存中的对象如果要实现上面的保存等操作,需要先把该对象转换成二进制数据流,对象序列化就是把对象向二进制数据流转换的核心操作,如图4所示。
其中,上述快照文件中还可包括上述原生绑定函数与原生绑定函数分别对应的外部内存对象之间的映射关系。由于快照中包含了原生绑定函数,因此快照中的对象还可能引用外部的C++内存对象,而外部引用是无法直接写入快照的。因此,可以将所有的外部引用写入一个外部引用表,需要写入快照时,直接写入该引用在该表的序号即可。在加载快照时,同时提供一份顺序一致的外部引用表,即可将快照中的引用序号对应回实际的外部内存引用。
303、当检测到启动小游戏时,调用所述快照文件以得到所述小游戏虚拟机执行环境。
其中,当检测到启动小游戏时,加载所述快照文件以得到所述虚拟机的堆内存对象;
根据所述虚拟机的堆内存对象生成所述小游戏虚拟机执行环境。
当所述小游戏虚拟机执行环境创建完成后,则可执行开发者代码,以运行小游戏。
其中,快照是一份完全可用的副本,它可以被当做源数据。当小游戏启动时,可以根据上述快照文件还原堆内存对象。由于堆内存对象中保存有全局的对象和函数,这样小游戏的虚拟机执行环境就快速的恢复了。
其中,一个虚拟机可以包含多个执行环境,因此快照文件本身还支持同时序列化多个执行环境的堆内存。在加载时,可以指定恢复某一个执行环境。
上述快照文件可以预先生成好,内置在APK安装包里,或者通过网络动态下发,从而避免快照文件在用户的手机上生成造成不必要的耗时。
通过本申请实施例,通过分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象,然后对虚拟机内置函数的堆内存对象、虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象进行处理以得到快照文件;当检测到启动小游戏时,调用该快照文件以得到小游戏虚拟机执行环境。采用上述手段,通过快照文件快速恢复小游戏虚拟机环境,以替代现有技术中每次启动时均需要重新创建的弊端,提高了小游戏虚拟机执行环境的创建效率,该方案能极大加快小游戏的启动速度。实验发现,在移动端的小游戏虚拟机环境的创建平均时间可以从200毫秒减少到10毫秒左右,有效提高了用户体验。
请参阅图5,图5为本申请实施例提供了一种小游戏虚拟机执行环境的创建方法的流程示意图。如图5所示,其可包括步骤501-511,具体如下:
501、获取虚拟机内置函数的堆内存对象;
其中,内置函数被加载后会保存在全局的堆对象(Global Object)上。上述对象大多是无状态的,因此可直接将加载完毕后的堆对象内容通过二进制序列化保存起来。
502、获取所述虚拟机内原生绑定函数分别对应的外部内存对象;
503、根据虚拟机内原生绑定函数分别对应的外部内存对象,获取所述原生绑定函数与引用的对应的外部内存对象之间的映射关系;
此类原生绑定函数,由于需要大量引用外部C++内存对象,无法直接将堆内存序列化后使用。因此,需要引入外部引用表(External References Table),通过获取原生绑定函数与外部内存对象之间的映射关系,如可将外部C++内存对象的引用转换为引用表中的对应ID序号等,即一个ID序号对应一个外部内存对象,通过将引用的ID序号写入序列化后的快照中,当加载快照时,再根据ID序号和同一份外部引用表,还原真实的引用内存,达到环境还原的目的。
504、加载所述虚拟机内原生绑定函数分别对应的外部内存对象以得到所述虚拟机内原生绑定函数的堆内存对象;
505、将所述小游戏公共库函数进行编译,并执行所述编译所得的结果;
506、获取预设脚本,以将所述小游戏公共库函数均调用一次并得到所述小游戏公共库函数的堆内存对象;
对公共库的执行环境进行保存前,需要执行两个步骤:冷注入和暖启动。冷注入是指将公共库代码编译和初始执行。由于公共库提供的基础函数,在初次执行时,几乎不会被执行到,这些函数不会在冷注入时编译和执行,因此需要有一个暖启动的过程,通过再注入一个暖脚本,相当于热身的作用,将公共库的函数逐一调用一遍,触发整个公共库函数的编译和执行,生成相应的堆内存对象;最后再对堆内存对象进行序列化保存即可。
507、对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象均执行垃圾收集程序,以得到虚拟机的堆内存对象;
通过执行一次完整GC垃圾收集程序,将所有不被引用的对象从堆内存对象中移除掉,以得到处理后的虚拟机的堆内存对象。
508、将所述虚拟机的堆内存对象进行序列化处理以得到所述虚拟机的二进制序列化数据;
509、将所述虚拟机的二进制序列化数据进行保存以得到所述快照文件;
510、当检测到启动小游戏时,加载所述快照文件以及所述映射关系以得到所述虚拟机的堆内存对象;
其中,对于原生绑定函数,通过获取与外部内存对象的映射关系,进而在还原内存环境时根据快照文件以及上述所得的映射关系以获取原生绑定函数真实的引用内存。
511、根据所述虚拟机的堆内存对象生成所述小游戏虚拟机执行环境。
通过本申请实施例,通过分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象,然后对虚拟机内置函数的堆内存对象、虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象进行处理以得到快照文件;当检测到启动小游戏时,调用该快照文件以得到小游戏虚拟机执行环境。其中,对于原生绑定函数获取堆内存对象时,通过获取与外部内存对象的映射关系,进而在还原内存环境时根据上述映射关系以获取原生绑定函数真实的引用内存。采用上述手段,通过快照文件快速恢复小游戏虚拟机环境,以替代现有技术中每次启动时均需要重新创建的弊端,提高了小游戏虚拟机执行环境的创建效率,用户体验好。
与上述实施例一致的,请参阅图6,图6为本申请实施例提供的一种服务器的结构示意图,如图所示,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,上述程序包括用于执行以下步骤的指令;
分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象;
对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象进行处理以得到快照文件;
当检测到启动小游戏时,调用所述快照文件以得到所述小游戏虚拟机执行环境。
通过本申请实施例,通过分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象,然后对虚拟机内置函数的堆内存对象、虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象进行处理以得到快照文件;当检测到启动小游戏时,调用该快照文件以得到小游戏虚拟机执行环境。采用上述手段,通过快照文件快速恢复小游戏虚拟机环境,以替代现有技术中每次启动时均需要重新创建的弊端,提高了小游戏虚拟机执行环境的创建效率,该方案能极大加快小游戏的启动速度。实验发现,在移动端的小游戏虚拟机环境的创建平均时间可以从200毫秒减少到10毫秒左右,有效提高了用户体验。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,终端为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对终端进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
与上述一致的,请参阅图7,图7为本申请实施例提供了一种小游戏虚拟机执行环境的创建系统的结构示意图。其包括获取模块701,处理模块702,创建模块703,具体如下:
获取模块701,用于分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象;
处理模块702,用于对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象进行处理以得到快照文件;
创建模块703,用于当检测到启动小游戏时,调用所述快照文件以得到所述小游戏虚拟机执行环境。
可以看出,通过本申请实施例,通过分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象,然后对虚拟机内置函数的堆内存对象、虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象进行处理以得到快照文件;当检测到启动小游戏时,调用该快照文件以得到小游戏虚拟机执行环境。采用上述手段,通过快照文件快速恢复小游戏虚拟机环境,以替代现有技术中每次启动时均需要重新创建的弊端,提高了小游戏虚拟机执行环境的创建效率,该方案能极大加快小游戏的启动速度。实验发现,在移动端的小游戏虚拟机环境的创建平均时间可以从200毫秒减少到10毫秒左右,有效提高了用户体验。
其中,所述获取模块701,用于:获取所述虚拟机内原生绑定函数分别对应的外部内存对象;加载所述虚拟机内原生绑定函数分别对应的外部内存对象以得到所述虚拟机内原生绑定函数的堆内存对象。
所述获取模块701,还用于:将所述小游戏公共库函数进行编译,并执行所述编译所得的结果;获取预设脚本,以将所述小游戏公共库函数均调用一次并得到所述小游戏公共库函数的堆内存对象。
所述处理模块702,用于:对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象均执行垃圾收集程序,以得到虚拟机的堆内存对象;将所述虚拟机的堆内存对象进行序列化处理以得到所述虚拟机的二进制序列化数据;将所述虚拟机的二进制序列化数据进行保存以得到所述快照文件。
所述创建模块703,用于:当检测到启动小游戏时,加载所述快照文件以得到所述虚拟机的堆内存对象;根据所述虚拟机的堆内存对象生成所述小游戏虚拟机执行环境。
其中,本发明实施例涉及的系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。
以分布式系统为区块链系统为例,参见图8,图8是本发明实施例提供的分布式系统100应用于区块链系统的一个可选的结构示意图,由多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端形成,节点之间形成组成的点对点(P2P,Peer ToPeer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
参见图8示出的区块链系统中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币;
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
参见图9,图9是本发明实施例提供的区块结构(Block Structure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
采用上述区块链,可使得本申请实施例中获取的虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象均存储在区块链结构中,同时将生成的快照文件也存在上述区块链结构中;其中可分别存储在不同的节点,此处并不限制具体的存储形式。当需要获取相关数据时,通过对请求者的身份进行验证,当具备获取权限时则可获取区块链中对应的数据。通过该手段,可以提高本申请实施例中数据的安全性和可靠性。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种小游戏虚拟机执行环境的创建方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种小游戏虚拟机执行环境的创建方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在申请明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器、随机存取器、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种小游戏虚拟机执行环境的创建方法,其特征在于,包括:
分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象;
对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象进行处理以得到快照文件;
当检测到启动小游戏时,调用所述快照文件以得到所述小游戏虚拟机执行环境。
2.根据权利要求1所述的方法,其特征在于,所述获取所述虚拟机内原生绑定函数的堆内存对象,包括:
获取所述虚拟机内原生绑定函数分别对应的外部内存对象;
加载所述虚拟机内原生绑定函数分别对应的外部内存对象以得到所述虚拟机内原生绑定函数的堆内存对象。
3.根据权利要求2所述的方法,其特征在于,获取所述小游戏公共库函数的堆内存对象,包括:
将所述小游戏公共库函数进行编译,并执行所述编译所得的结果;
获取预设脚本,以将所述小游戏公共库函数均调用一次并得到所述小游戏公共库函数的堆内存对象。
4.根据权利要求3所述的方法,其特征在于,所述对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象进行处理以得到快照文件,包括:
对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象均执行垃圾收集程序,以得到虚拟机的堆内存对象;
将所述虚拟机的堆内存对象进行序列化处理以得到所述虚拟机的二进制序列化数据;
将所述虚拟机的二进制序列化数据进行保存以得到所述快照文件。
5.根据权利要求4所述的方法,其特征在于,所述当检测到启动小游戏时,调用所述快照文件以得到所述小游戏虚拟机执行环境,包括:
当检测到启动小游戏时,加载所述快照文件以得到所述虚拟机的堆内存对象;
根据所述虚拟机的堆内存对象生成所述小游戏虚拟机执行环境。
6.一种小游戏虚拟机执行环境的创建系统,其特征在于,包括:
获取模块,用于分别获取虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及小游戏公共库函数的堆内存对象;
处理模块,用于对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象进行处理以得到快照文件;
创建模块,用于当检测到启动小游戏时,调用所述快照文件以得到所述小游戏虚拟机执行环境。
7.根据权利要求6所述的系统,其特征在于,所述处理模块,用于:
对所述虚拟机内置函数的堆内存对象、所述虚拟机内原生绑定函数的堆内存对象,以及所述小游戏公共库函数的堆内存对象均执行垃圾收集程序,以得到虚拟机的堆内存对象;将所述虚拟机的堆内存对象进行序列化处理以得到所述虚拟机的二进制序列化数据;将所述虚拟机的二进制序列化数据进行保存以得到所述快照文件。
8.根据权利要求7所述的系统,其特征在于,所述创建模块,用于:
当检测到启动小游戏时,加载所述快照文件以得到所述虚拟机的堆内存对象;根据所述虚拟机的堆内存对象生成所述小游戏虚拟机执行环境。
9.一种服务器,其特征在于,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1至5任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1至5任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910834149.2A CN110569108B (zh) | 2019-09-04 | 2019-09-04 | 小游戏虚拟机执行环境的创建方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910834149.2A CN110569108B (zh) | 2019-09-04 | 2019-09-04 | 小游戏虚拟机执行环境的创建方法及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110569108A true CN110569108A (zh) | 2019-12-13 |
CN110569108B CN110569108B (zh) | 2021-04-30 |
Family
ID=68777759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910834149.2A Active CN110569108B (zh) | 2019-09-04 | 2019-09-04 | 小游戏虚拟机执行环境的创建方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110569108B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111768184A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法及区块链节点 |
CN111815310A (zh) * | 2020-08-31 | 2020-10-23 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
CN114035885A (zh) * | 2021-12-22 | 2022-02-11 | 北京百度网讯科技有限公司 | 一种小程序页面渲染方法、装置及电子设备 |
US11301222B2 (en) | 2020-08-31 | 2022-04-12 | Alipay (Hangzhou) Information Technology Co., Ltd. | Method for executing smart contract, blockchain node, and storage medium |
US11327732B2 (en) | 2020-08-31 | 2022-05-10 | Alipay (Hangzhou) Information Technology Co., Ltd. | Method for executing smart contract, blockchain node, and storage medium |
US11379830B2 (en) | 2020-08-31 | 2022-07-05 | Alipay (Hangzhou) Information Technology Co., Ltd. | Method for executing smart contract, blockchain node, and storage medium |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557355A (zh) * | 2016-12-01 | 2017-04-05 | 北京奇虎科技有限公司 | 虚拟机镜像的生成方法及生成装置 |
CN107992429A (zh) * | 2016-10-27 | 2018-05-04 | 腾讯科技(深圳)有限公司 | 一种内存对象引用关系确定方法及装置 |
CN108073441A (zh) * | 2016-11-14 | 2018-05-25 | 阿里巴巴集团控股有限公司 | 一种虚拟机内存监管方法与设备 |
CN109189546A (zh) * | 2018-07-11 | 2019-01-11 | 新华三云计算技术有限公司 | 一种虚拟机在线快照的制作方法及装置 |
CN109558213A (zh) * | 2018-11-30 | 2019-04-02 | 郑州云海信息技术有限公司 | 管理OpenStack平台的虚拟机快照的方法和装置 |
CN109634713A (zh) * | 2018-11-02 | 2019-04-16 | 新华三云计算技术有限公司 | 一种虚拟机启动方法以及装置 |
US20190235899A1 (en) * | 2018-01-30 | 2019-08-01 | Nutanix, Inc. | Tracking virtual machine data |
CN110083399A (zh) * | 2019-03-04 | 2019-08-02 | 上海连尚网络科技有限公司 | 小程序运行方法、计算机设备及存储介质 |
CN110187913A (zh) * | 2019-05-17 | 2019-08-30 | 北京百度网讯科技有限公司 | 小程序的发布、运行方法和装置 |
CN110196755A (zh) * | 2019-05-07 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种虚拟机快照管理方法、装置、服务器及存储介质 |
-
2019
- 2019-09-04 CN CN201910834149.2A patent/CN110569108B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107992429A (zh) * | 2016-10-27 | 2018-05-04 | 腾讯科技(深圳)有限公司 | 一种内存对象引用关系确定方法及装置 |
CN108073441A (zh) * | 2016-11-14 | 2018-05-25 | 阿里巴巴集团控股有限公司 | 一种虚拟机内存监管方法与设备 |
CN106557355A (zh) * | 2016-12-01 | 2017-04-05 | 北京奇虎科技有限公司 | 虚拟机镜像的生成方法及生成装置 |
US20190235899A1 (en) * | 2018-01-30 | 2019-08-01 | Nutanix, Inc. | Tracking virtual machine data |
CN109189546A (zh) * | 2018-07-11 | 2019-01-11 | 新华三云计算技术有限公司 | 一种虚拟机在线快照的制作方法及装置 |
CN109634713A (zh) * | 2018-11-02 | 2019-04-16 | 新华三云计算技术有限公司 | 一种虚拟机启动方法以及装置 |
CN109558213A (zh) * | 2018-11-30 | 2019-04-02 | 郑州云海信息技术有限公司 | 管理OpenStack平台的虚拟机快照的方法和装置 |
CN110083399A (zh) * | 2019-03-04 | 2019-08-02 | 上海连尚网络科技有限公司 | 小程序运行方法、计算机设备及存储介质 |
CN110196755A (zh) * | 2019-05-07 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种虚拟机快照管理方法、装置、服务器及存储介质 |
CN110187913A (zh) * | 2019-05-17 | 2019-08-30 | 北京百度网讯科技有限公司 | 小程序的发布、运行方法和装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111768184A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法及区块链节点 |
CN111815310A (zh) * | 2020-08-31 | 2020-10-23 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
US11301222B2 (en) | 2020-08-31 | 2022-04-12 | Alipay (Hangzhou) Information Technology Co., Ltd. | Method for executing smart contract, blockchain node, and storage medium |
US11327732B2 (en) | 2020-08-31 | 2022-05-10 | Alipay (Hangzhou) Information Technology Co., Ltd. | Method for executing smart contract, blockchain node, and storage medium |
US11379830B2 (en) | 2020-08-31 | 2022-07-05 | Alipay (Hangzhou) Information Technology Co., Ltd. | Method for executing smart contract, blockchain node, and storage medium |
US11385917B2 (en) | 2020-08-31 | 2022-07-12 | Alipay (Hangzhou) Information Technology Co., Ltd. | Method for executing smart contract and blockchain node |
US11544044B2 (en) | 2020-08-31 | 2023-01-03 | Alipay (Hangzhou) Information Technology Co., Ltd. | Methods, blockchain nodes, and storage media for executing smart contract |
CN114035885A (zh) * | 2021-12-22 | 2022-02-11 | 北京百度网讯科技有限公司 | 一种小程序页面渲染方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110569108B (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110569108B (zh) | 小游戏虚拟机执行环境的创建方法及相关产品 | |
CN110995473B (zh) | 一种业务节点的控制方法及相关设备 | |
CN108572986B (zh) | 一种数据更新的方法及节点设备 | |
CN107967139B (zh) | 游戏的热更新方法及装置 | |
CN112256286B (zh) | 一种应用运行的方法、装置及计算机存储介质 | |
CN111176791B (zh) | 一种基于多虚拟机区块链平台跨虚拟机调用方法 | |
CN109669692B (zh) | 源码共享方法、服务器、计算机可读存储介质及系统 | |
CN106569856A (zh) | 一种应用视图资源文件的加载方法和装置 | |
CN104423948B (zh) | 自动化脚本运行方法及装置 | |
CN110244990A (zh) | 应用组件调用方法、装置、电子设备及存储介质 | |
CN112835975A (zh) | 一种在区块链中部署、更新、调用智能合约的方法 | |
CN112308716A (zh) | 区块链智能合约执行方法、装置、设备及计算机存储介质 | |
CN113888173B (zh) | 基于区块链的智能合约调用方法、装置及设备 | |
CN113157345A (zh) | 前端工程自动启动方法及装置 | |
CN115375310A (zh) | 基于区块链的订单处理方法、装置和服务器 | |
CN112214250A (zh) | 一种应用程序组件的加载方法和装置 | |
CN112328241B (zh) | 一种应用程序开发中创建Android库模块依赖关系的方法及装置 | |
CN110018831B (zh) | 程序处理方法、装置及计算机可读存储介质 | |
CN113360215A (zh) | 程序运行方法、装置及计算机可读存储介质 | |
CN113127005B (zh) | 一种可执行文件生成的方法、装置以及计算机存储介质 | |
CN111443906B (zh) | 一种应用的访问方法和装置 | |
CN114020278B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN114356768A (zh) | 通过占位符减少交易读写冲突的方法与装置 | |
CN113407366A (zh) | 一种远程调用方法及装置以及系统 | |
CN111949296A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |