CN107657172A - 代码处理方法、装置及系统 - Google Patents

代码处理方法、装置及系统 Download PDF

Info

Publication number
CN107657172A
CN107657172A CN201610589921.5A CN201610589921A CN107657172A CN 107657172 A CN107657172 A CN 107657172A CN 201610589921 A CN201610589921 A CN 201610589921A CN 107657172 A CN107657172 A CN 107657172A
Authority
CN
China
Prior art keywords
code
virtual machine
terminal
file
identification information
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
Application number
CN201610589921.5A
Other languages
English (en)
Inventor
郑振波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610589921.5A priority Critical patent/CN107657172A/zh
Publication of CN107657172A publication Critical patent/CN107657172A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种代码处理方法、装置及系统。其中,该方法包括:接收第一终端发送的代码处理请求,其中,所述代码处理请求用于请求执行代码,所述代码处理请求中携带有所述第一终端的标识信息;获取与所述标识信息对应的虚拟机;利用所述虚拟机执行所述代码,得到执行结果;将所述执行结果反馈至所述第一终端。本发明至少解决编程学习的环境安全性差的技术问题。

Description

代码处理方法、装置及系统
技术领域
本发明涉及信息处理领域,具体而言,涉及一种代码处理方法和装置、及系统。
背景技术
现有技术中,有些信息应用程序(如在线教育应用程序)可以提供多媒体信息,这些多媒体信息可以供用户观看,用户(如学生)通过观看这些多媒体信息进行学习,例如,通过观看多媒体信息学习英语、数学等课程。但是用户在学习计算机语言编程时,最简单最直接的方法就是快速练习和实践,然而编程软件和编程环境配置复杂、繁琐。
为了给客户提供编程环境,现有技术中可以通过沙箱机制实现。但是沙箱机制通常会有功能限制,比如禁止对文件和网络的操作等,虽然可以通过代理接口的方式给沙箱提供这些功能,但是用户的危险操作还是难以得到信任,比如删除系统文件、上传病毒文件等,会给宿主环境带来严重影响。
针对上述编程学习的环境安全性差的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种代码处理方法、装置及系统,以至少解决编程学习的环境安全性差的技术问题。
根据本发明实施例的一个方面,提供了一种代码处理方法,该方法包括:接收第一终端发送的代码处理请求,其中,所述代码处理请求用于请求执行代码,所述代码处理请求中携带有所述第一终端的标识信息;获取与所述标识信息对应的虚拟机;利用所述虚拟机执行所述代码,得到执行结果;将所述执行结果反馈至所述第一终端。
根据本发明实施例的一个方面,提供了一种代码处理方法,该方法包括:在第一终端的屏幕上显示代码输入界面,其中,所述代码输入界面用于输入代码;接收通过所述代码输入界面输入的代码;基于所述代码生成代码处理请求,并将所述代码处理请求发送至第二终端,其中,所述第二终端用于基于所述代码处理请求获取对应的虚拟机,并利用所述虚拟机执行所述代码,得到执行结果;接收所述第二终端返回的执行结果。
根据本发明实施例的一个方面,提供了一种代码处理系统,该系统包括:第一终端,用于在屏幕上显示代码输入界面,接收通过所述代码输入界面输入的代码,并在基于所述代码生成代码处理请求,将所述代码处理请求发送至第二终端;第二终端,用于在接收到所述代码处理请求之后,获取与所述代码处理请求中携带的标识信息对应的虚拟机,利用所述虚拟机执行所述代码,得到执行结果,并将所述执行结果反馈至所述第一终端。
根据本发明实施例的一个方面,提供了一种代码处理装置,该装置包括:接收单元,用于接收第一终端发送的代码处理请求,其中,所述代码处理请求用于请求执行代码,所述代码处理请求中携带有所述第一终端的标识信息;第一获取单元,用于获取与所述标识信息对应的虚拟机;执行单元,用于利用所述虚拟机执行所述代码,得到执行结果;反馈单元,用于将所述执行结果反馈至所述第一终端。
通过上述实施例,第一终端可以通过显示在屏幕上的代码输入界面输入代码,在基于代码生成代码处理请求之后,将该代码处理请求发送至第二终端,第二终端获取与该代码处理请求对应的虚拟机,利用虚拟机执行代码,得到执行结果。在上述实施例中,在第一终端(如客户端)学习编程的过程中,将编辑的代码发送至第二终端之后,第二终端通过对应的虚拟机执行该代码,并将执行结果返回,由于虚拟机具有安全隔离的功能,在编程学习的过程中,虚拟机可以提供安全隔离的编程环境,通过虚拟机安全完成代码的执行,可以隔离第一终端和第二终端的系统环境,保证第一终端和第二终端的系统安全,也不会影响其他用户终端的安全,解决了现有技术中编程学习的环境安全性差的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种硬件环境的示意图;
图2是根据本发明实施例的一种可选的代码处理方法的时序流程图;
图3是根据本发明实施例的另一种可选的代码输入界面的示意图;
图4是根据本发明实施例的一种可选的执行结果的界面显示图;
图5是根据本发明实施例的一种可选的代码处理方法的流程图;
图6是根据本发明实施例的一种可选的虚拟机文件系统架构图;
图7是根据本发明实施例的另一种可选的代码处理方法的流程图;
图8是根据本发明实施例的再一种可选的代码处理方法的流程图;
图9是根据本发明实施例的一种可选的代码处理系统的示意图;
图10是根据图9所示实施例的一种可选的代码处理方法的流程图;
图11是根据本发明实施例的一种可选的代码处理装置的示意图;
图12是根据本发明实施例的一种可选的终端的内部结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,对本申请涉及的术语,解释如下:
在线编程:是指不需要经过安装编程的环境,直接在互联网浏览器上编写程序,并且可以运行出结果的编程方式。
文件隔离:对被电脑查出或者是怀疑有病毒的文件,但因为种种原因,如病毒库未升级等,没法进行有效杀毒,将其进行隔离的操作,这种操作可以避免用户随意使用该文件,从而引发病毒。
代码编译:利用编译程序从源语言编写的源程序产生目标程序的过程。
沙箱环境:即网络编程虚拟执行环境,是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程序,因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。
根据本发明实施例,提供了一种代码处理系统。可选地,在本实施例中,上述代码处理系统可以应用于如图1所示的硬件环境中,其中,硬件环境包括网络环境。如图1所示,该硬件环境可以包括第一终端101和第二终端102。
如图1所示,第一终端和第二终端通过网络进行连接上述网络包括但不限于:广域网、城域网或局域网。
其中,图1中的第一终端可以为个人计算机和智能终端,如智能手机、平板电脑等,该第一终端上可以安装代码处理应用,第二终端为与代码处理应用对应的服务器,例如,第一终端上安装的学习代码应用,第二终端为学习应用服务器。可选地,第一终端可以为具有屏幕的智能终端,该第一终端可以用来展示代码处理应用的交互界面,第一终端在启动代码处理应用之后,在屏幕上显示代码学习交互界面,利用该学习交互界面可以输入代码及其相关信息,第一终端将该代码及其相关信息发送至第二终端,第二终端利用虚拟机执行该代码,得到执行结果,并将执行结果返回至第一终端,第一终端可以基于执行结果判定这次的学习结果,或者第二终端在获取执行结果之后,利用执行结果评价第一终端的学习成果。
根据本发明的代码处理系统的实施例,该系统实施例可以包括:如图1所示的第一终端和第二终端,其中,
第一终端,用于在屏幕上显示代码输入界面,接收通过所述代码输入界面输入的代码,并在基于所述代码生成代码处理请求,将所述代码处理请求发送至第二终端;
第二终端,用于在接收到所述代码处理请求之后,获取与所述代码处理请求中携带的标识信息对应的虚拟机,利用所述虚拟机执行所述代码,得到执行结果,并将所述执行结果反馈至所述第一终端。
通过上述实施例,第一终端可以通过显示在屏幕上的代码输入界面输入代码,在基于代码生成代码处理请求之后,将该代码处理请求发送至第二终端,第二终端获取与该代码处理请求对应的虚拟机,利用虚拟机执行代码,得到执行结果。在上述实施例中,在第一终端(如客户端)学习编程的过程中,将编辑的代码发送至第二终端之后,第二终端通过对应的虚拟机执行该代码,并将执行结果返回,由于虚拟机具有安全隔离的功能,在编程学习的过程中,虚拟机可以提供安全隔离的编程环境,通过虚拟机安全完成代码的执行,可以隔离第一终端和第二终端的系统环境,保证第一终端和第二终端的系统安全,同时也不会影响其他用户终端的安全,解决了现有技术中编程学习的环境安全性差的问题。
上述实施例中的虚拟机类似于一个计算机模拟器,虚拟机实质上是在真实的计算机系统中通过软件手段虚拟出了一台实际上并不存在的计算机,这台虚拟的计算机有完善的硬件体系:CPU、有内存、有硬盘、有显卡、有声卡等等,在虚拟机中有只读层和读写层,若用户对只读层的文件进行修改时,将文件放到读写层中进行操作,并记录操作记录,而只读层的文件不会受到影响,从而实现了文件系统上的隔离,从而可以提供一个安全的代码运行环境。
上述实施例中的第一终端可以登录代码处理应用,在进入代码处理应用之后,可以在选中代码输入的选项之后,进入代码输入界面,用户可以在代码输入界面上输入代码,第一终端的处理器接收用户通过代码输入界面输入的代码,并基于代码生成代码处理请求,并将该代码处理请求发送至第二终端。
该第二终端可以为服务器端,该服务器端为代码处理应用的服务器,用于处理代码处理请求。
具体地,第二终端在接收到代码处理请求之后,从代码处理请求中获取第一终端的标识信息,并基于标识信息获取与该第一终端对应的虚拟机,利用虚拟机执行代码,得到执行结果,并将执行结果反馈至第一终端。
下面结合图2对上述实施例进行详细描述,如图2所示,该实施例可以通过如下步骤实现:
步骤S201:在屏幕上显示代码输入界面。
可选地,用户可以在第一终端的代码处理应用中进入代码输入界面,在用户选择进入代码输入界面之后,在第一终端的屏幕上显示代码输入界面。如图3所示,该代码输入界面可以包含代码输入框301和代码类型选择项303,其中代码输入框用于输入代码,代码类型选择项用于选择输入代码的类型。用户可以在代码输入框编辑代码,以输入代码。可选地,用户可以在进入代码输入界面之后、在输入代码的过程中或在输入代码完成之后,选择输入代码的类型,输入代码的类型包括但不限于:PHP类型、Java、C++等。
其中,PHP是Hypertext Preprocessor的缩写,表示超文本处理器,是一种通用开源脚本语言。Java是面向对象编程语言。C++是在C语言基础上开发的一种面向对象编程语言。
具体地,用于可以在代码类型选择项303对应的输入框中直接输入代码类型,也可以点击代码类型选择项的选择按钮305生成类型选择请求,第一终端的处理器接收到该类型选择请求之后,在用户选择的位置或者预定的位置展示代码处理应用支持的类型信息,用户可以从展示的类型信息中选择代码类型。在确定代码类型之后,代码类型选择项对应的输入框中显示确定的代码类型。
上述的第一终端可以包含屏幕,第一终端还可以与第一屏幕建立连接关系。
步骤S202:接收通过代码输入界面输入的代码。
用户可以在代码输入界面输入代码,可选地,如图3所示,确定的代码类型为PHP,用户输入的代码如下:
1<?PHP
2ECHO’HELLO WORLD’;
3?>
步骤S203:在基于代码生成代码处理请求之后,将代码处理请求发送至第二终端。
可选地,用户输入上述代码之后,生成发送指令,处理器接收到发送指令,基于确定的代码类型和用户输入的代码,生成代码处理请求,具体地,至少将输入的代码和代码类型封装,生成该代码处理请求,并将该代码处理请求发送至服务器。
进一步地,处理器生成代码处理请求的过程中,还包括:将第一终端的标识信息封装在代码处理请求中。
如图3所示的示例中,用户可以点击发送按键生成发送指令,图3中的“Run”按键具有发送按键的功能。
步骤S204:获取与代码处理请求中携带的标识信息对应的虚拟机。
服务器接收到用户终端(即第一终端)的代码处理请求之后,对代码处理请求进行解析,得到该代码处理请求中携带的标识信息,以获取与该第一终端对应的虚拟机。
步骤S205:利用虚拟机执行代码,得到执行结果。
服务器启动该获取到的虚拟机,利用该虚拟机执行代码,得到代码的执行结果。
步骤S206:将执行结果反馈至第一终端。
服务器将执行代码的执行结果返回至第一终端,第一终端在屏幕上跳转显示接收到的执行结果。如图4所示,上述代码的执行结果为显示“HELLO WORLD”。
根据本发明实施例,提供了一种代码处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明的代码处理方法,该方法应用在服务器侧(即上述实施例的第二终端),具体地,该方法可以包括图5所示的步骤:
步骤S501:接收第一终端发送的代码处理请求,其中,代码处理请求用于请求执行代码,代码处理请求中携带有第一终端的标识信息;
步骤S503:获取与标识信息对应的虚拟机;
步骤S505:利用虚拟机执行代码,得到执行结果;
步骤S507:将执行结果反馈至第一终端。
通过上述实施例,客户端(即上述的第一终端)可以通过显示在屏幕上的代码输入界面输入代码,在基于代码生成代码处理请求之后,将该代码处理请求发送至服务器,服务器获取与该代码处理请求对应的虚拟机,利用虚拟机执行代码,得到执行结果。在上述实施例中,在第一终端(如客户端)学习编程的过程中,将编辑的代码发送至第二终端之后,第二终端通过对应的虚拟机执行该代码,并将执行结果返回,由于虚拟机具有安全隔离的功能,在编程学习的过程中,虚拟机可以提供安全隔离的编程环境,通过虚拟机安全完成代码的执行,可以隔离第一终端和第二终端的系统环境,保证第一终端和第二终端的系统安全,同时也不会影响其他用户终端的安全,解决了现有技术中编程学习的环境安全性差的问题。
在上述实施例中,第一终端发送代码处理请求中携带有第一终端的标识信息,在服务器侧获取与该第一终端对应的虚拟机,并在第一终端对应的虚拟机上执行代码,这样可以将每个用户的信息保留在对应的虚拟机中,可以做到用户与虚拟机、数据的绑定,在数据丢失时可以随时还原用户的数据,并可以基于用户的历史代码执行记录进行统计,以准确分析用户代码编辑的水平。
其中,上述的标识信息可以包括第一终端的物理标识、安装的代码处理应用的标识、登录在代码处理应用上的账户标识、第一终端与第二终端进行通讯的会话ID(sessionID),本申请对此不做限定。
上述实施例中的步骤S503:获取与标识信息对应的虚拟机。
具体地,获取与标识信息对应的虚拟机可以通过如下步骤实现:
步骤S5011:检测是否存在已创建的与标识信息对应的虚拟机。
步骤S5013:若检测出存在已创建的与标识信息对应的虚拟机,则启动虚拟机;
步骤S5015:若检测出不存在已创建的与标识信息对应的虚拟机,则创建虚拟机,并启动虚拟机。
在创建虚拟机的过程中,获取配置文件,其中,配置文件中记录有虚拟机的容器参数,生成配置文件的镜像文件;利用镜像文件生成虚拟机,其中,虚拟机被禁止修改镜像文件。
可选地,可以使用docker实现虚拟机,docker是一个开源的应用容器引擎,是使用客户端-服务器架构模式使用远程API(应用接口)来管理和创建虚拟容器的方式。利用docker可以在一秒内启动虚拟机,速度相对于其他工具要快,而且资源利用率高,在一台普通的PC可以跑上千个docker虚拟机。
具体地,通过配置好的配置文件Dockerfile来生成镜像文件,供服务器的系统生成虚拟机,其中,主要使用ubuntu作为虚拟机的基础操作系统,并且安装需要使用到的语言包(例如,PHP,Java,C++等)。
其中,配置文件可以为包含一系列命令和参数的脚本,这些参数可以包括上述的基础操作系统的参数和需要使用到的语言包的参数。
可选地,虚拟机调用可读写资源执行代码,可读写资源与镜像文件对应的资源不同。
其中,ubuntu是一个以桌面应用为主的Linux操作系统。
可选地,在配置好配置文件Dockerfile之后,通过执行安装命令来预先部署系统和语言包。
例如,通过执行如下的安装命令来预先部署系统:Docker build-t‘virtual_machine’-<Dockerfile.
具体地,镜像文件可以用于创建虚拟机容器。镜像可以非常疾驰,仅包含操作系统,在该实施例中镜像文件中还可以包括需要使用到的语言包。当使用镜像文件的时候,每一个命令都可以在起那一个命令的基础上形成一个新层,利用镜像文件生成的虚拟机的文件系统,如图6所示,该文件系统呈现层级结构,每层镜像包含:镜像文件以及镜像元数据信息。
其中的,FROM ubuntu:14.04用于设置基础镜像;ADD run.sh/用于将配置文件所在目录的文件的run.sh加至镜像的根目录;VOLUME/data用于设定镜像的VOLUME(即文件集),此文件集VOLUME在容器(即虚拟机)内部的路径为/data;CMD["./run.sh"]用于设置镜像的默认执行入口。图6中最上面的两层,不属于镜像文件的范畴,这两层分别为容器的初始层(Init Layer)与可读写层(Read-Write Layer),初始层中大多是初始化容器环境时,与容器相关的环境信息,如容器主机名,主机host信息以及域名服务文件等。虚拟机容器内的进程只对可读写层拥有写权限,其他层对进程而言都是只读的。
由于Docker的文件系统层是只读的,每个处理单元container都会提供一个可读写的层,如果处理单元要修改只读层的文件,那么该文件就会从只读层提取到读写层。通过该实施例,只读层的文件不会受到影响,实现了文件系统上的隔离,从而可以利用虚拟机打造一个安全的环境供用户使用。
根据本发明的上述实施例,在创建虚拟机的过程中,方法还包括:创建文件夹,其中,文件夹与标识信息相对应,文件夹用于挂载虚拟机,检测是否存在已创建的与标识信息对应的虚拟机包括:检测是否存在与标识信息对应的文件夹。
具体地,在创建虚拟机的过程中,创建一个与标识信息对应的文件夹,与标识信息对应的文件夹可以为名称为标识信息的文件夹,如,使用用户的session id命名文件夹。该创建的文件夹用于挂载docker虚拟机。
其中,挂载为在操作系统中给磁盘分区,将一个设备(如本申请的虚拟机)挂接到一个已存在的目录上,在访问该设备的时候,通过这个目录访问该设备。具体到本申请实施例中,可以将docker虚拟机挂载到创建的文件夹中,利用该文件夹的目录访问该虚拟机。
在服务器接收到第一终端的代码处理请求的情况下,从数据库中判断是否已创建对应的docker虚拟机,如,检测是否存在与标识信息对应的文件夹,若数据库中存在与该标识信息对应的文件夹,则确定已经存在与该标识信息对应的虚拟机;若数据库中不存在与该标识信息对应的文件夹,则确定不存在于该标识信息对应的虚拟机,则创建该虚拟机,虚拟的创建方式与上述实施例中示出的创建方式一致,在此不再赘述。
根据本发明的实施例,利用虚拟机执行代码,得到执行结果可以通过如下步骤实现:
步骤S10:从代码处理请求中获取代码的代码类型。
步骤S20:在虚拟机挂载的文件夹中,获取已创建的程序文件。
可以按照文件夹的目录查找该虚拟机的程序文件。
步骤S30:将代码写入程序文件,并将代码类型标记在程序文件中。
在一个可选的实施例中,可以直接将代码写入虚拟机的程序文件。
在另一个可选的实施例中,可以构建代码对应的指令;将代码对应的指令写入虚拟机的程序文件。
在该可选的实施例中,可以通过服务器的处理器进行指令构建,可以提高虚拟机的处理速度;也可以通过虚拟机的处理单元进行指令构建,减小服务器的负载。
步骤S40:通过虚拟机执行程序文件,得到执行结果。
由于程序文件中记录了代码和代码类型,从而在执行程序文件时,可以代码类型执行代码对应的指令,并得到执行结果。
本申请还提供了一种代码处理方法,该代码处理方法可以应用在第一终端侧,从第一终端侧解释本申请的上述实施例,该代码处理方法包括如图7所示的步骤:
步骤S701:在第一终端的屏幕上显示代码输入界面,其中,代码输入界面用于输入代码;
步骤S703:接收通过代码输入界面输入的代码;
步骤S705:基于代码生成代码处理请求,并将代码处理请求发送至第二终端,其中,第二终端用于基于代码处理请求获取对应的虚拟机,并利用虚拟机执行代码,得到执行结果;
步骤S707:接收第二终端返回的执行结果。
其中,上述的第一终端可以为客户端,第二终端可以为服务器。
通过上述实施例,第一终端可以通过显示在屏幕上的代码输入界面输入代码,在基于代码生成代码处理请求之后,将该代码处理请求发送至第二终端,第二终端获取与该代码处理请求对应的虚拟机,利用虚拟机执行代码,得到执行结果。在上述实施例中,在第一终端(如客户端)学习编程的过程中,将编辑的代码发送至第二终端之后,第二终端通过对应的虚拟机执行该代码,并将执行结果返回,由于虚拟机具有安全隔离的功能,在编程学习的过程中,虚拟机可以提供安全隔离的编程环境,通过虚拟机安全完成代码的执行,可以隔离第一终端和第二终端的系统环境,保证第一终端和第二终端的系统安全,同时也不会影响其他用户终端的安全,解决了现有技术中编程学习的环境安全性差的问题。
其中,基于代码生成代码处理请求包括:在接收到代码输入界面上显示的运行按键被操作生成的运行指令之后,响应运行指令,将接收到的代码进行压缩,生成代码处理请求。
具体地,上述实施例中产品侧的处理流程可以通过图8中示出的步骤实现:
步骤S801:用户在网页端选择要学习的编程课程。
例如,用于可以在网页端选择要学习的Java编程课程。
步骤S802:用户可以在打开的页面上输入要执行的Java代码。
步骤S803:用户点击运行按钮后,代码会发送到后端虚拟机中运行。
步骤S804:接收服务器返回的代码的运行结果。
下面结合图9和图10对本申请的上述实施例进行详细描述。
如图9所示,该处理系统可以包括3个模块:前端模块、服务层模块和虚拟机模块,其中,前端模块可以位于第一终端(即客户端)上,该前端模块可以包括网页前端模块和应用程序模块。前端模块用于提供用户输入代码的界面,可语法高亮。服务层模块和虚拟机模块均位于服务器侧(即上述实施例中的第二终端上)接收用户提交的代码,根据基础镜像创建虚拟机,并且构建用户提交的代码的指令,待虚拟机创建或启动之后,向虚拟机发送构建好的指令,等待执行结果,并返回给学生。虚拟机模块主要是利用docker实现虚拟机的功能。
在该系统架构中,网页前端模块功能主要是给用户提供一个可视化的代码输入环境,界面主要包括代码输入框(如图3所示),选择运行的代码类型,代码运行结果(如图4所示)。
具体地,当学生点击“运行”按钮之后,页面的交互会把学生填写的代码进行压缩,并且以post的方式提交到后端接口。代码处理请求中主要带有表1所示的两个字段:
表1
字段名 字段类型 说明
lang String 指定的代码类型(Java,PHP等)
code String 编写的代码
上述实施例中的服务层模块使用了node.js来实现,如图10所示,服务层模块接收到用户代码之后,可以执行如下步骤:
步骤S1001:调用对应的虚拟机。
在不存在对应的虚拟机的情况下,创建虚拟机并调用该虚拟机;在不存在对应的虚拟机的情况下,直接调用虚拟机。
步骤S1002:根据lang字段确定代码类型。
步骤S1003:匹配该代码类型的文件,并将代码放到该文件中。
具体地,当服务层接收到前端页面发送过来的数据,首先根据用户的session id(即会话ID,如上述的标识信息)从数据库中判断是否已创建docker虚拟机,如果没有则创建docker虚拟机,并且创建一个以session id命名的文件夹,该文件夹用于挂载到docker虚拟机。然后把代码(code)内容写到一个新文本,复制到已创建好的文件夹中。根据lang字段,可以在列表中匹配出相应的扩展名,用于上述的新文本。
步骤S1004:利用虚拟机执行该文件。
步骤S1005:返回执行结果。
在文件准备完毕之后,node.js server通过exec方法来执行docker命令:dockerrun-d 5s-i-t-v“path/filename”:/usercode/usercode/script.sh lang。
执行结束,把执行完的结果(即执行结果)返回至客户端(即上述的第一终端)。
通过上述实施例,由于虚拟机具有安全隔离的功能,在用户向服务器提交代码之后,服务器利用该虚拟机执行用户提交的代码,利用虚拟机执行该代码的过程中,可以隔离用户的环境,保证环境的安全,大大提高了用户编程学习过程中使用的系统环境的安全。进一步地,利用虚拟机执行代码,可以保留用户在虚拟机中的数据,可以做到用户与数据绑定,可以随时还原用户的数据。
具体地,上述实施例服务器后台根据原始镜像初始化一个虚拟机环境,从而可以提供一个在线的、可以高亮语法的程序输入环境。服务器接收到用户提交的代码之后,根据用户选择的编程语言的种类(如C、JAVA、Python、PHP等),选择指定语言运行工具,执行用户提交的代码,并且把运行的结果返回给用户。由于上述的虚拟环境是完全隔离的,该环境并会对其他用户造成安全或环境影响。
需要说明的是,用户离线后可以销毁虚拟机,释放资源。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
根据本发明的上述实施例,还提供了一种代码处理装置,该代码处理装置应用于第二终端,该装置可以包括如图11所示的:接收单元1101,用于接收第一终端发送的代码处理请求,其中,代码处理请求用于请求执行代码,代码处理请求中携带有第一终端的标识信息;第一获取单元1103,用于获取与标识信息对应的虚拟机;执行单元1105,用于利用虚拟机执行代码,得到执行结果;反馈单元1107,用于将执行结果反馈至第一终端。
通过上述实施例,第一终端可以通过显示在屏幕上的代码输入界面输入代码,在基于代码生成代码处理请求之后,将该代码处理请求发送至第二终端,第二终端获取与该代码处理请求对应的虚拟机,利用虚拟机执行代码,得到执行结果。在上述实施例中,在第一终端(如客户端)学习编程的过程中,将编辑的代码发送至第二终端之后,第二终端通过对应的虚拟机执行该代码,并将执行结果返回,由于虚拟机具有安全隔离的功能,利用虚拟机执行代码,可以安全完成代码的执行,可以隔离第一终端和第二终端的系统环境,保证第一终端和第二终端的系统安全,同时也不会影响其他用户终端的安全,解决了现有技术中编程学习的环境安全性差的问题。
进一步地,获取单元包括:检测模块,用于检测是否存在已创建的与标识信息对应的虚拟机;启动模块,用于若检测出存在已创建的与标识信息对应的虚拟机,则启动虚拟机;创建启动模块,用于若检测出不存在已创建的与标识信息对应的虚拟机,则创建虚拟机,并启动虚拟机。
进一步地,装置还包括:第二获取单元,用于在创建虚拟机的过程中,获取配置文件,其中,配置文件中记录有虚拟机的容器参数;第一生成单元,用于生成配置文件的镜像文件;第二生成单元,用于利用镜像文件生成虚拟机,其中,虚拟机被禁止修改镜像文件。
上述实施例中的装置还包括:创建单元,用于在创建虚拟机的过程中,创建文件夹,其中,文件夹与标识信息相对应,文件夹用于挂载虚拟机,检测模块具体用于:检测是否存在与标识信息对应的文件夹。
根据本发明的上述实施例,执行单元包括:第一获取模块,用于从代码处理请求中获取代码的代码类型;第二获取模块,用于在虚拟机挂载的文件夹中,获取已创建的程序文件;处理模块,用于将代码写入程序文件,并将代码类型标记在程序文件中;执行模块,用于通过虚拟机执行程序文件,得到执行结果。
在另一个可选的实施例中,执行单元包括:构建模块,用于构建代码对应的指令;发送模块,用于将代码对应的指令发送至虚拟机;执行模块,用于通过虚拟机执行指令得到执行结果。
本发明还提供了一种应用在第一终端上的代码处理装置,包括:显示单元,用于在第一终端的屏幕上显示代码输入界面,其中,代码输入界面用于输入代码;第一接收单元,用于接收通过代码输入界面输入的代码;生成单元,用于基于代码生成代码处理请求,并将代码处理请求发送至第二终端,其中,第二终端用于基于代码处理请求获取对应的虚拟机,并利用虚拟机执行代码,得到执行结果;第二接收单元,用于接收第二终端返回的执行结果。
进一步地,生成单元包括:生成模块,用于在接收到代码输入界面上显示的运行按键被操作生成的运行指令之后,响应运行指令,将接收到的代码进行压缩,生成代码处理请求。
本实施例中所提供的各个模块与方法实施例对应步骤所提供的使用方法相同、应用场景也可以相同。当然,需要注意的是,上述模块涉及的方案可以不限于上述实施例中的内容和场景,且上述模块可以运行在计算机终端或移动终端,可以通过软件或硬件实现。
根据本发明实施例,还提供了一种用于实施上述代码处理方法的终端,如图12所示,该终端包括:
如图12所示,该终端包括:一个或多个(图中仅示出一个)处理器1201、存储器1203、以及传输装置,还可以包括如图12所示的输入输出装置。
其中,存储器1203可用于存储软件程序以及模块,如本发明实施例中的代码处理方法和装置对应的程序指令/模块,处理器1201通过运行存储在存储器1203内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的代码处理方法。存储器1203可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1203可进一步包括相对于处理器1201远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器1203用于存储应用程序。
处理器1201可以通过传输装置1205调用存储器1203存储的应用程序,以执行下述步骤:
接收第一终端发送的代码处理请求,其中,代码处理请求用于请求执行代码,代码处理请求中携带有第一终端的标识信息;获取与标识信息对应的虚拟机;利用虚拟机执行代码,得到执行结果;将执行结果反馈至第一终端。
处理器1201可以通过传输装置1205调用存储器1203存储的应用程序,以执行下述步骤:检测是否存在已创建的与标识信息对应的虚拟机;若检测出存在已创建的与标识信息对应的虚拟机,则启动虚拟机;若检测出不存在已创建的与标识信息对应的虚拟机,则创建虚拟机,并启动虚拟机。
处理器1201可以通过传输装置1205调用存储器1203存储的应用程序,以执行下述步骤:在创建虚拟机的过程中,获取配置文件,其中,配置文件中记录有虚拟机的容器参数;生成配置文件的镜像文件;利用镜像文件生成虚拟机,其中,虚拟机被禁止修改镜像文件。
处理器1201可以通过传输装置1205调用存储器1203存储的应用程序,以执行下述步骤:在创建虚拟机的过程中,创建文件夹,其中,文件夹与标识信息相对应,文件夹用于挂载虚拟机。检测是否存在已创建的与标识信息对应的虚拟机包括:检测是否存在与标识信息对应的文件夹。
处理器1201可以通过传输装置1205调用存储器1203存储的应用程序,以执行下述步骤:从代码处理请求中获取代码的代码类型;在虚拟机挂载的文件夹中,获取已创建的程序文件;将代码写入程序文件,并将代码类型标记在程序文件中;通过虚拟机执行程序文件,得到执行结果。
处理器1201可以通过传输装置1205调用存储器1203存储的应用程序,以执行下述步骤:构建代码对应的指令;将代码对应的指令发送至虚拟机;通过虚拟机执行指令得到执行结果。
处理器1201可以通过传输装置1205调用存储器1203存储的应用程序,以执行下述步骤:在第一终端的屏幕上显示代码输入界面,其中,代码输入界面用于输入代码;接收通过代码输入界面输入的代码;基于代码生成代码处理请求,并将代码处理请求发送至第二终端,其中,第二终端用于基于代码处理请求获取对应的虚拟机,并利用虚拟机执行代码,得到执行结果;接收第二终端返回的执行结果。
需要进一步说明的是,寄存区域为系统的内存和系统处理器中的寄存器。
本领域普通技术人员可以理解,图12所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图12其并不对上述电子装置的结构造成限定。例如,终端还可包括比图12中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图12所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行上述代码处理方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:接收第一终端发送的代码处理请求,其中,代码处理请求用于请求执行代码,代码处理请求中携带有第一终端的标识信息;获取与标识信息对应的虚拟机;利用虚拟机执行代码,得到执行结果;将执行结果反馈至第一终端。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:检测是否存在已创建的与标识信息对应的虚拟机;若检测出存在已创建的与标识信息对应的虚拟机,则启动虚拟机;若检测出不存在已创建的与标识信息对应的虚拟机,则创建虚拟机,并启动虚拟机。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在创建虚拟机的过程中,获取配置文件,其中,配置文件中记录有虚拟机的容器参数;生成配置文件的镜像文件;利用镜像文件生成虚拟机,其中,虚拟机被禁止修改镜像文件。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在创建虚拟机的过程中,创建文件夹,其中,文件夹与标识信息相对应,文件夹用于挂载虚拟机。检测是否存在已创建的与标识信息对应的虚拟机包括:检测是否存在与标识信息对应的文件夹。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:从代码处理请求中获取代码的代码类型;在虚拟机挂载的文件夹中,获取已创建的程序文件;将代码写入程序文件,并将代码类型标记在程序文件中;通过虚拟机执行程序文件,得到执行结果。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:构建代码对应的指令;将代码对应的指令发送至虚拟机;通过虚拟机执行指令得到执行结果。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在第一终端的屏幕上显示代码输入界面,其中,代码输入界面用于输入代码;接收通过代码输入界面输入的代码;基于代码生成代码处理请求,并将代码处理请求发送至第二终端,其中,第二终端用于基于代码处理请求获取对应的虚拟机,并利用虚拟机执行代码,得到执行结果;接收第二终端返回的执行结果。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (14)

1.一种代码处理方法,其特征在于,包括:
接收第一终端发送的代码处理请求,其中,所述代码处理请求用于请求执行代码,所述代码处理请求中携带有所述第一终端的标识信息;
获取与所述标识信息对应的虚拟机;
利用所述虚拟机执行所述代码,得到执行结果;
将所述执行结果反馈至所述第一终端。
2.根据权利要求1所述的方法,其特征在于,获取与所述标识信息对应的虚拟机包括:
检测是否存在已创建的与所述标识信息对应的虚拟机;
若检测出存在已创建的与所述标识信息对应的虚拟机,则启动所述虚拟机;
若检测出不存在已创建的与所述标识信息对应的虚拟机,则创建所述虚拟机,并启动所述虚拟机。
3.根据权利要求2所述的方法,其特征在于,在创建所述虚拟机的过程中,所述方法还包括:
获取配置文件,其中,所述配置文件中记录有虚拟机的容器参数;
生成所述配置文件的镜像文件;
利用所述镜像文件生成所述虚拟机,其中,所述虚拟机被禁止修改所述镜像文件,所述虚拟机调用可读写资源执行所述代码,所述可读写资源与所述镜像文件对应的资源不同。
4.根据权利要求2所述的方法,其特征在于,
在创建所述虚拟机的过程中,所述方法还包括:创建文件夹,其中,所述文件夹与所述标识信息相对应,所述文件夹用于挂载所述虚拟机,
检测是否存在已创建的与所述标识信息对应的虚拟机包括:检测是否存在与所述标识信息对应的文件夹。
5.根据权利要求1所述的方法,其特征在于,利用所述虚拟机执行所述代码,得到执行结果包括:
从所述代码处理请求中获取所述代码的代码类型;
在所述虚拟机挂载的文件夹中,获取已创建的程序文件;
将所述代码写入所述程序文件,并将所述代码类型标记在所述程序文件中;
通过所述虚拟机执行所述程序文件,得到所述执行结果。
6.根据权利要求1所述的方法,其特征在于,利用所述虚拟机执行所述代码,得到执行结果包括:
构建所述代码对应的指令;
将所述代码对应的指令发送至所述虚拟机;
通过所述虚拟机执行所述指令得到所述执行结果。
7.一种代码处理方法,其特征在于,包括:
在第一终端的屏幕上显示代码输入界面,其中,所述代码输入界面用于输入代码;
接收通过所述代码输入界面输入的代码;
基于所述代码生成代码处理请求,并将所述代码处理请求发送至第二终端,其中,所述第二终端用于基于所述代码处理请求获取对应的虚拟机,并利用所述虚拟机执行所述代码,得到执行结果;
接收所述第二终端返回的执行结果。
8.根据权利要求7所述的方法,其特征在于,基于所述代码生成代码处理请求包括:
在接收到所述代码输入界面上显示的运行按键被操作生成的运行指令之后,响应所述运行指令,将接收到的代码进行压缩,生成所述代码处理请求。
9.一种代码处理系统,其特征在于,包括:
第一终端,用于在屏幕上显示代码输入界面,接收通过所述代码输入界面输入的代码,并在基于所述代码生成代码处理请求,将所述代码处理请求发送至第二终端;
第二终端,用于在接收到所述代码处理请求之后,获取与所述代码处理请求中携带的标识信息对应的虚拟机,利用所述虚拟机执行所述代码,得到执行结果,并将所述执行结果反馈至所述第一终端。
10.一种代码处理装置,其特征在于,包括:
接收单元,用于接收第一终端发送的代码处理请求,其中,所述代码处理请求用于请求执行代码,所述代码处理请求中携带有所述第一终端的标识信息;
第一获取单元,用于获取与所述标识信息对应的虚拟机;
执行单元,用于利用所述虚拟机执行所述代码,得到执行结果;
反馈单元,用于将所述执行结果反馈至所述第一终端。
11.根据权利要求10所述的装置,其特征在于,所述获取单元包括:
检测模块,用于检测是否存在已创建的与所述标识信息对应的虚拟机;
启动模块,用于若检测出存在已创建的与所述标识信息对应的虚拟机,则启动所述虚拟机;
创建启动模块,用于若检测出不存在已创建的与所述标识信息对应的虚拟机,则创建所述虚拟机,并启动所述虚拟机。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第二获取单元,用于在创建所述虚拟机的过程中,获取配置文件,其中,所述配置文件中记录有虚拟机的容器参数;
第一生成单元,用于生成所述配置文件的镜像文件;
第二生成单元,用于利用所述镜像文件生成所述虚拟机,其中,所述虚拟机被禁止修改所述镜像文件,所述虚拟机调用可读写资源执行所述代码,所述可读写资源与所述镜像文件对应的资源不同。
13.根据权利要求10所述的装置,其特征在于,所述执行单元包括:
第一获取模块,用于从所述代码处理请求中获取所述代码的代码类型;
第二获取模块,用于在所述虚拟机挂载的文件夹中,获取已创建的程序文件;
处理模块,用于将所述代码写入所述程序文件,并将所述代码类型标记在所述程序文件中;
执行模块,用于通过所述虚拟机执行所述程序文件,得到所述执行结果。
14.一种代码处理装置,其特征在于,包括:
显示单元,用于在第一终端的屏幕上显示代码输入界面,其中,所述代码输入界面用于输入代码;
第一接收单元,用于接收通过所述代码输入界面输入的代码;
生成单元,用于基于所述代码生成代码处理请求,并将所述代码处理请求发送至第二终端,其中,所述第二终端用于基于所述代码处理请求获取对应的虚拟机,并利用所述虚拟机执行所述代码,得到执行结果;
第二接收单元,用于接收所述第二终端返回的执行结果。
CN201610589921.5A 2016-07-25 2016-07-25 代码处理方法、装置及系统 Pending CN107657172A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610589921.5A CN107657172A (zh) 2016-07-25 2016-07-25 代码处理方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610589921.5A CN107657172A (zh) 2016-07-25 2016-07-25 代码处理方法、装置及系统

Publications (1)

Publication Number Publication Date
CN107657172A true CN107657172A (zh) 2018-02-02

Family

ID=61126732

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610589921.5A Pending CN107657172A (zh) 2016-07-25 2016-07-25 代码处理方法、装置及系统

Country Status (1)

Country Link
CN (1) CN107657172A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109783197A (zh) * 2019-01-18 2019-05-21 北京百度网讯科技有限公司 用于程序运行时环境的调度方法和装置
CN110795086A (zh) * 2019-11-12 2020-02-14 联想(北京)有限公司 控制方法、装置及电子设备
CN112527417A (zh) * 2020-12-08 2021-03-19 深圳市商汤科技有限公司 编程方法、装置、设备、计算机可读存储介质
CN113050943A (zh) * 2021-04-20 2021-06-29 中国工商银行股份有限公司 基于本地开发环境的代码验证方法及装置
CN113419898A (zh) * 2021-05-25 2021-09-21 北京达佳互联信息技术有限公司 文件的回捞方法、装置、设备、存储介质及程序产品
CN114327748A (zh) * 2021-11-29 2022-04-12 北京志凌海纳科技有限公司 虚拟机交互方法、装置、非易失性存储介质及处理器
WO2023097703A1 (en) * 2021-12-03 2023-06-08 Huawei Cloud Computing Technologies Co., Ltd. A storage server forsecure and performant execution of user code in a data center storage

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101410803A (zh) * 2006-01-24 2009-04-15 思杰系统有限公司 用于提供对计算环境的访问的方法和系统
CN101957770A (zh) * 2010-10-09 2011-01-26 中兴通讯股份有限公司 一种移动设备上应用程序的启动方法及装置
CN102204210A (zh) * 2011-05-18 2011-09-28 华为技术有限公司 启动应用的方法、服务器和系统
CN104753996A (zh) * 2013-12-30 2015-07-01 比亚迪股份有限公司 用于移动终端的远程托管系统、方法及其装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101410803A (zh) * 2006-01-24 2009-04-15 思杰系统有限公司 用于提供对计算环境的访问的方法和系统
CN101957770A (zh) * 2010-10-09 2011-01-26 中兴通讯股份有限公司 一种移动设备上应用程序的启动方法及装置
CN102204210A (zh) * 2011-05-18 2011-09-28 华为技术有限公司 启动应用的方法、服务器和系统
CN104753996A (zh) * 2013-12-30 2015-07-01 比亚迪股份有限公司 用于移动终端的远程托管系统、方法及其装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
夜痕星舞: "生活记事簿: Ideone - 好用的线上编译网站(可编译C++、Java、Ada等)", 《HTTP://HKLIFENOTE.BLOGSPOT.COM/2014/03/IDEONE-CJAVAADA.HTML》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109783197A (zh) * 2019-01-18 2019-05-21 北京百度网讯科技有限公司 用于程序运行时环境的调度方法和装置
CN110795086A (zh) * 2019-11-12 2020-02-14 联想(北京)有限公司 控制方法、装置及电子设备
CN110795086B (zh) * 2019-11-12 2021-08-17 联想(北京)有限公司 控制方法、装置及电子设备
CN112527417A (zh) * 2020-12-08 2021-03-19 深圳市商汤科技有限公司 编程方法、装置、设备、计算机可读存储介质
CN113050943A (zh) * 2021-04-20 2021-06-29 中国工商银行股份有限公司 基于本地开发环境的代码验证方法及装置
CN113419898A (zh) * 2021-05-25 2021-09-21 北京达佳互联信息技术有限公司 文件的回捞方法、装置、设备、存储介质及程序产品
CN114327748A (zh) * 2021-11-29 2022-04-12 北京志凌海纳科技有限公司 虚拟机交互方法、装置、非易失性存储介质及处理器
WO2023097703A1 (en) * 2021-12-03 2023-06-08 Huawei Cloud Computing Technologies Co., Ltd. A storage server forsecure and performant execution of user code in a data center storage

Similar Documents

Publication Publication Date Title
CN107657172A (zh) 代码处理方法、装置及系统
WO2021016475A1 (en) Container orchestration framework
CN110490721B (zh) 财务凭证生成方法及相关产品
CN104462478B (zh) 实现移动浏览器客户端与网页交互的方法、装置和客户端
CN108427708A (zh) 数据处理方法、装置、存储介质和电子装置
CN111563220A (zh) 业务网站项目构建方法、装置、计算机设备和存储介质
CN108845930A (zh) 界面操作测试方法和装置、存储介质及电子装置
CN107992458A (zh) 表格规则的生成方法和装置
CN110276406A (zh) 表情分类方法、装置、计算机设备及存储介质
CN107071554B (zh) 语义识别方法和装置
CN110472008B (zh) 智能交互方法以及装置
CN107291759A (zh) 浏览器页面资源的处理方法和装置
CN109101817A (zh) 一种识别恶意文件类别的方法及计算设备
CN104679824B (zh) 网络平台的网页生成方法及系统
CN111142884B (zh) 小程序的版本部署方法、装置、电子设备及存储介质
CN108304426A (zh) 标识的获取方法及装置
CN109194689B (zh) 异常行为识别方法、装置、服务器及存储介质
CN113469358A (zh) 一种神经网络训练方法、装置、计算机设备及存储介质
CN110515514A (zh) 一种数据处理方法、装置及存储介质
CN107729246A (zh) 针对目标应用的辅助测试方法、装置、设备及存储介质
CN107528818A (zh) 媒体文件的数据处理方法和装置
CN108647224A (zh) 页面显示方法、装置、存储介质和电子装置
CN108334895A (zh) 目标数据的分类方法、装置、存储介质及电子装置
CN110955600A (zh) 接口测试方法及装置
CN107370804A (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: 20180202

RJ01 Rejection of invention patent application after publication