APP下载

一种基于异构资源集成的算法实验平台研究及其实现

2014-04-01杜镇盛羽彭悦陈天赐

关键词:异构客户端组件

杜镇,盛羽,彭悦,陈天赐

(中南大学 信息科学与工程学院,湖南 长沙,410083)

在信息类课程中存在很多算法设计类课程,如数字信号处理和数字图像处理,学生通过实验不同方法学习掌握相应算法的设计思想和实现方法,其中,实验是这些课程学习的一个重要环节。学生通过实验对所学的算法进行实现、改进和重新设计,并对算法的处理效果进行分析和比较,从而有效地加强学生的学习效果。目前,信息类课程中的算法设计型实验主要通过2 种方式进行:(1) 学生使用一种编程语言,如C,C++,Java 和汇编语言等,对在课程中所学习到的算法予以实现、改进和设计。这种方法使用灵活,与所学知识结合紧密,但是,学生使用这种方法进行实验前往往需要首先搭建复杂的软件开发环境,特别是当需要对第三方软件(如Matlab)进行调用时,这种设置过程将变得更加复杂,而这将导致学生在学习过程中难以将精力集中于算法设计。同时,在这种实验模式下,学生往往难以对其设计的算法的正确性和效果进行测试和分析。(2) 使用Multisim 和LabVIEW 等软件进行模拟仿真[1]。借助这些软件,学生可以在一定程度上摆脱繁琐的工程计算,将更多精力投入到基本概念的理解中。但是,这种方式只局限于在实验室中的计算机上使用,而且这种方法对学生的编程语言有很大限制。虚拟实验室是指借助于计算机软件和网络技术所建立的一个可辅助、部分替代甚至全部替代传统实验各操作环节的相关软硬件操作环境,目前,国内外众多学者对虚拟实验室进行了大量研究,如:Yaron等[2]建立了一个在线的普通化学虚拟实验室,学生可以自由选取虚拟实验室中的化学仪器和试剂进行组合配置以进行化学实验;Bal 等[3]使用LabView 作为用户操作界面,通过Matlab&Simulink 实现对Matlab 的调用,建立了一个开关磁阻电机的虚拟实验室;Olabarriaga 等[4]基于荷兰的网格计算平台并利用MOTEUR 数据流管理系统实现实验数据传送,建立了医学图像分析虚拟实验室;Schaffer 等[5]基于HP 集群服务器建立了虚拟计算实验室,用户可以通过RDP协议或SSH 协议获取所需的虚拟机资源完成计算工作;Gustavsson 等[6]利用网格技术建立了一个连接多台硬件实验设备的电子与机械震动虚拟实验室,使多个学生可以同时使用后台硬件设备进行实验;Kumar等[7]建立了一个基于Internet 的心电图设备及数据虚拟实验室,使学生可以远程使用心电图设备或者数据以辅助学习;Araiza-Esquivel 等[8]建立的数字化全息照相技术虚拟实验室应用于课堂及远程教学,学生可以在系统中对二进制全息图进行创建、删减和放大等操作。Li[9]建立了一种基于虚拟机的分布式入侵检测系统,并对不同虚拟机环境下的实验效果进行了比较分析。 Li 等[10]从虚拟实验室的理论基础、框架和特点几个方面介绍了中学物理虚拟实验系统,其理论基础是受行为主义、认知主义和建构主义的启发,其框架面向于群组实验和指导性实验,包括提供了电子、光学和滑轮组几个实验类型。本文作者所在课题组[11-14]也基于Java Applet 技术建立了计算机组成原理、数字图像处理和汇编语言等课程的虚拟实验室系统。这些虚拟实验室有着各自的特点和优势,但也普遍存在一些不足,如:它们大部分采用基于组件的软件开发技术,利用一种编程语言实现,普遍缺乏对异构资源的支持,不熟悉该语言则无法开发组件,并且很多成熟的异构资源也不能集成到平台之中,无法重用这些软件资源;利用CORBA 和DOM 技术虽然能够实现异构对象的通信,但是,它们基于特定的协议和标准,而且不能跨越防火墙,具有很大的局限性。针对这些问题,本文提出一种面向异构资源集成的虚拟实验平台。该平台利用Web 服务技术,将异构组件发布为Web 服务组件。Web 服务组件是一种分布式组件,它具有语言独立性、高度可集成性、松散耦合和使用协议普遍等特点[15],因此,平台可以集成异构组件,实现组件的重用;并且平台支持用户利用自己熟悉的语言自主开发组件,平台会将它们自动注册为Web 服务组件,集成到平台中,提高用户的动手实践能力和创新能力。利用Web 服务技术通过重用异构组件和用户自主设计组件,可以迅速组装具有高度可重用性、可维护性和个性化的虚拟实验平台。

1 平台架构设计

通过分析,本文采用Java 语言开发和实现平台功能,采用JavaBean 技术开发同构的JavaBean 组件,采用Web 服务技术对异构组件进行封装,开发Web服务组件。其架构设计如图1 所示。

图1 虚拟实验平台的架构设计图Fig.1 Architecture design of virtual laboratory platform

JavaBean 组件在客户端运行,具有较高的运行效率,主要用于实现获取用户及系统的输入以及在客户端显示实验运行结果等功能;Web 服务组件主要用于封装异构资源,实现异构资源的重用。在此基础上,虚拟实验平台采用B/S 架构模式,由Applet 客户端、Web 服务器端和分布式Web 服务资源3 部分组成。

Java Applet 客户端为用户提供图形化的操作界面,用户通过它与平台进行实时交互。用户可以通过浏览器直接访问客户端,从而屏蔽了不同操作系统之间的差异,具有良好的跨平台性。客户端开始运行后,通过网络向服务注册中心请求所有虚拟实验仪器的描述信息,并利用获取的描述信息动态地更新平台的组件信息列表。在平台中,用户可以通过鼠标拖拽创建虚拟仪器,并添加虚拟仪器之间的连接线,定制个性化的实验流程。当用户选中虚拟仪器时,可以在组件参数配置面板中设置或修改其参数内容,并且可以在组件说明面板中查看虚拟仪器所对应组件的描述说明信息,以增强对组件的理解。在搭建实验流程、设置虚拟仪器的参数内容之后,用户就可以开始执行实验并查看实验结果。平台还为用户提供了保存实验、装载实验、新建实验和运行经典实验等功能。更为重要的是,平台为用户提供了多种Web 服务发布接口,用户可以提交自己设计的算法的源代码,平台会自动将其发布为Web 服务,并与当前平台集成,供用户使用。客户端直接关系到用户的操作体验,是平台中非常重要的内容。

Web 服务器端为用户提供Java Applet 应用程序、配置文件以及其他一些资源,其中还包括服务注册中心和服务发布引擎。当用户通过浏览器登录客户端时,就会从服务器端获取Applet 应用程序和平台支持文件,从而实现对平台的访问。服务器端的服务注册中心保存了JavaBean 组件和Web 服务组件的描述信息,其中主要包括组件的分类信息、访问地址信息、调用接口信息和组件说明信息等。客户端启动时,将向服务注册中心查询组件信息,从而更新自己的组件信息列表。服务发布引擎为用户提供Web 服务发布的功能,当用户通过客户端提交算法实现的源码时,服务发布引擎根据用户提交源代码的程序设计语言的类型,自动将其发布为Web 服务,并将该Web 服务的描述信息注册到服务注册中心,同时返回给客户端,以便客户端更新组件信息列表,实现组件的即时发布。

Web 服务资源层主要包括Web 服务组件库、JavaBean 组件库和经典实验库等。Web 服务组件库是大量Web 服务的集合,它可以位于不同的服务器上,减轻单一服务器的负载压力。Web 服务组件是各种异构组件的服务化封装,JavaBean 组件是Java 类的组件化封装。为了方便用户的使用,本文采用一种可视化机制,对Web 服务组件和JavaBean 组件进行处理,将它们映射为可视化的虚拟仪器,如图2 所示。经典实验库为用户提供了课程中所包含的经典实验集合,方便用户进行学习,提高学习效率。

虚拟实验平台采用J2EE 体系结构实现,具有良好的稳定性、可移植性和跨平台性。利用Web 服务技术,提高了平台的可重用性、可维护性、可扩展性以及个性化。

图2 服务及组件的可视化机制Fig.2 Visualization mechanism of services and components

2 平台关键技术

2.1 异构资源的Web 服务化封装

Web 服务技术通过Internet 和SOAP 协议进行通信,具有很强的可移植性和互操作性。它向外界提供服务和资源的接口,而不涉及其内部的实现方式,屏蔽了异构系统之间的区别,从而实现了对异构资源的封装和调用。

学生在进行算法类课程实验时,经常会用到多种开发语言和开发工具,如OpenCV,C/C++,Java 和MATLAB 等。为了实现这些异构组件之间的通信,平台利用Web 服务技术将它们统一封装为Web 服务,组成Web 服务组件库。Web 服务技术作为Web 服务发布和调用的规范,有效地解决了异构组件之间的互操作问题。为了进一步了解异构组件的服务化封装机制,本文以MATLAB 组件为例说明系统对异构资源自动封装发布的过程。

MATLAB 是一套科学计算软件,具有强大的计算机数据处理能力,很强的图形绘制与处理能力,并且拥有应用广泛的模块集合工具箱。但是,它局限于自己的运行环境,而不便于集成到其他应用程序中。将MATLAB 组件封装为Web 服务,有效地解决了这一问题。MATLAB 作为后台服务器和服务提供者,可向服务请求者提供强大的功能支持,实现了对MATLAB功能组件的软件重用。由于目前还没有直接将MATLAB 组件发布为Web 服务的方法,所以,需要利用MATLAB 与高级编程语言的接口,以高级编程语言作为桥梁,帮助实现这种转化。比较通用的就是利用C/C++作为中间桥梁来实现这种转化,本文也采用这种方式。

MATLAB 与C/C++的接口有3 种形式:MEX 文件、MAT 文件应用程序和引擎应用程序。为方便对MATLAB 组件封装,本文采用引擎应用程序模式,实现C/C++与MATLAB 的混合编程。引擎应用程序实质上是把MATLAB 作为一个后台引擎,并允许C/C++程序通过引擎接口,从后台启动这个引擎,并利用引擎库函数实现对MATLAB 的调用。常用的引擎库函数有:engOpen,用于开启MATLAB 引擎;engClose,用于关闭MATLAB 引擎;engPutVariable,用于给MATLAB 引擎传输数据;engGetVariable,用于从MATLAB 引擎获取数据;engEvalString,用于对MATLAB 语句的调用执行。MATLAB 和C/C++数据类型不同,为实现二者之间的数据传递,MATLAB 提供了一个数据类型mxArray,用以在C/C++程序中表示 MATLAB 数据,并提供了 mxCreateXXX 和mxDestroyArray 函数,在C/C++程序中实现mxArray类型数据的创建和删除。通过MATLAB 与C/C++的编程接口,将MATLAB 组件封装为一个C/C++组件,然后,利用C/C++组件的服务发布方法,将MATLAB组件发布为Web 服务。

本文采用gSoap 作为C/C++组件的SOAP 运行环境,将C/C++与MATLAB 混合编程的组件发布为Web服务。其服务发布过程如下:首先,创建一个C/C++的H 头文件,在其中设置服务名称、服务调用方式、服务编码方式以及服务命名空间等信息;然后,提取C/C++组件中方法的函数声明,并将其按照gSoap 要求的格式,保存在该头文件中,假设头文件的名称为ws.h;利用gSoap 提供的工具soapcpp2,并以ws.h 文件作为参数,生成服务发布需要的支持文件,主要有soapC.cpp,soapH.h,soapServer.cpp,soapStub.h,soapObject.h 和ws.nsmap,还需要对C/C++组件按照gSoap 的要求进行改装;最后,将C/C++组件和服务发布支持文件利用C/C++编译器进行编译,生成CGI文件,再将该CGI 文件配置到Tomcat 服务器,即完成了服务的发布工作。服务请求者便可以通过CGI 方式访问该Web 服务,调用MATLAB 提供的强大功能。为实现MATLAB 组件的自动化发布,需要用户提供MATLAB 组件中方法的C/C++类型的声明,平台可以利用此声明,自动化地生成ws.h 文件和对MATLAB组件进行封装的C/C++组件文件。然后,调用soapcpp2工具,生成服务发布需要的支持文件。平台采用Makefile 技术,将支持文件与C/C++组件文件组成一个编译项目,并对该项目进行自动化编译,生成CGI文件,实现MATLAB 组件的自动化服务发布。例如,对于用户提交的函数Complex[] fft(double sig[], int size),经过包装后形成的代码部分为:

由于MATLAB 语言是一种解释性语言,对于变量的类型是没有明确定义的,例如函数fft_sig(sig)中的变量sig 既可以是复数,也可以是实数,它是根据用户输入的数据来判断类型的。由于C/C++是强制类型语言,因此,在M 文件 (MATLAB 语言编写的脚本文件)注册时,必须指定M 函数中各种变量的具体类型,客户端向服务端传递了4 种不同功能的参数类型:输入参数类型、输出参数类型、返回参数类型和执行类型。根据面向对象编程的思想,设计了一个抽象的Type 类,该类记录了名字、类型类别和输出缓冲空间等信息,利用Java 的List 构成链表数据结构。拥有一个抽象的方法write( ),子类通过实现该方法来实现不同类型代码的自动生成。

最终代码自动生成的关键代码如下:

通过解析M 文件注册的XML 配置文档,利用基于反射的简单工厂模式生成不同的Type 实例,在其初始化的过程便调用write 方法完成了相应代码的生成。

2.2 实验运行的调度机制

在虚拟实验平台客户端中,用户可以根据实验需要,选择虚拟实验仪器组件通过连线的方式建立组建之间的数据通路。在一个实验流程中,各种虚拟一起组件之间通过连线形成了一个有机整体。由于组件之间的连接关系非常复杂,为了保证实验有序、顺利、高效地执行,需要设计一个合理的实验运行调度机制。

实验流程在视觉上给用户的展示就是多个虚拟实验设备之间通过连线连接起来,宏观上就是1 个图。每个虚拟实验设备可以抽象为图结构中的1 个节点,2 个引脚之间的连线可以抽象为1 条有向边。在这个有向图中,对于每个节点,只有其所有的父节点执行完毕,并将数据传递给它,才能执行。因此,实验的执行顺序就是按照图的拓扑排序后的顺序来执行的。

第1 种实验调度流程就是按照拓扑图的结构从上级到下级依次执行每个实验组件,这个调度流程简单明了,但存在一定缺陷。Web 服务组件在调用时需要进行网络数据传输,假设A 和B 是2 个Web 服务组件,且A 是B 的父节点,C 和D 分别为A 和B 这2个节点对应的服务端的Web 服务。按照这种调度流程,执行过程如下:A 根据服务的接口信息和参数内容向C 发送SOAP 请求数据,C 处理完毕后向A 回发SOAP 响应数据;A 将数据传递给B,B 同样根据服务的接口信息和参数内容向D 发送SOAP 请求数据,D 处理完毕后向B 回发SOAP 响应数据。在整个过程中,客户端与服务器存在4 次数据传输,但经过仔细分析后,4 次数据传输可以减少为2 次数据传输。可以将A 和B 看作为1 个Web 服务组合组件,客户端请求执行Web 服务组合组件,将执行信息发送给服务端,服务端接收到请求后,依次执行A 和B 这2 个Web 服务组件,然后,将结果返回给客户端,这样,可以将原有的4 次数据交换减少为2 次数据交换。显然,若相互关联的Web 服务组件越多,则节省的网络数据传送次数就越多。为此,本文提出了一种基于Web 服务组件组合优化的实验调度流程,它可以在存在多个相互关联的Web 服务组件的情况下,减少网络间的数据交换次数,提升实验的执行效率。

基于Web 服务组件组合优化的实验调度流程的执行步骤如下。

步骤1 检查实验拓扑图是否为空,若为空,则实验执行流程结束。

步骤2 按照拓扑顺序,从实验拓扑图中取出实验组件,判断实验组件的类型。若组件类型为Web 服务组件,则继续执行步骤1;若组件类型为本地组件,则转入步骤3。

步骤3 判断本地组件是否有前驱,若存在前驱,则转入步骤4;否则,执行本地组件,从实验拓扑图中删除该节点,转入步骤1。

步骤4 将本地组件的所有前驱节点取出来,行成1 个待执行的Web 服务组件列表,并从实验拓扑图中删除这些前驱节点。

步骤5 根据步骤4 中的Web 服务组件列表构建发往服务器的节点列表,将列表发往服务器;

步骤6 根据服务器执行的返回结果获取本地组件需要的参数执行本地组件,并将该节点从实验拓扑图中删除,转入步骤1。

通过步骤2 和3 可以保证实验流程图中连续的Web 服务组件一起打包发往服务器上执行,原先的2N次数据传输(N 是连续Web 服务组件的个数)降为2 次数据传输。图3 所示为试验运行调度流程图。

本实验调度流程的正确执行程度主要取决于步骤4 中的构建的发往服务器的节点列表。该列表不仅需记录组件的执行顺序,而且携带组件执行所需的参数。本文采用XML 文档构造此节点列表。构造XML 文档时,用1 对描述1 个Web 服务组件的执行信息。method 元素包括4 个属性:serviceurl,nameSpace,methodName 和id。其中:serviceurl 记录Web 服务的地址;nameSpace 记录Web 服务模式名字空间;methodName 记录Web 服务的接口名;id 是按升序生成的序列值,用来唯一标识每个Web 服务组件。method 元素下面有2 种类型子元素:param 和ret。param 用于表示参数方面的信息,它有一个固定的属性type,用于表示参数的类型。若这个参数的内容是依赖于其他Web 服务组件执行的返回值,则会有另外一个属性pid,用来表示所依赖的组件的id。否则,元素param 的内容就是参数内容字符形式。ret 用于表示Web 服务组件的返回类型。该文档中所有method标签对都是按照Web 服务组件的执行顺序排列的。服务器为了保证这些Web 服务组件的执行,需要建立一个Hash 表,其键值是Web 服务组件的id,映射的值就是Web 服务组件执行的结果。服务器根据接收到的节点列表,依次解析出其中的每个method 元素,若其参数值是依赖于其他组件,就根据其依赖的pid 值到Hash 表找到对应的内容,然后执行组件,执行完后将结果写入到Hash 表中。所有的Web 服务组件执行完后,将执行结果以XML 格式返回给客户端,这样就完成多个Web 服务组件的执行。另外,为了减少执行过程中的流量,本文对调度中传递的XML 文档采用7Z 技术进行压缩。

图3 实验运行调度流程图Fig.3 Flow chart of experimental running

3 平台应用实例

数字信号处理是一门内容十分抽象、公式繁多以及理论性很强的课程,单纯的理论教学容易使学生感到枯燥乏味,丧失学习兴趣,不利于学生对后续课程的学习。但是通过实验,学生可以跳出对理论的单一理解;通过观察实验结果,又可以激励学生对理论的进一步学习。这种理论-实验的良性循环有利于学生学习这门课程。而在传统的实验模式中,学生需要安装相应软件开发环境特别是需要安装Matlab 软件才能完成实验,其过程比较复杂,且学生对其所实现的算法也难以进行性能和处理效果的比较分析。依托面向虚拟异构资源集成的虚拟实验平台,所开发的数字信号处理虚拟实验系统则可以为学生提供一个操作简单,能灵活定义实验流程并能对实验结果进行比较分析的开放式实验环境。

本文以数字信号处理课程中的巴特沃斯低通滤波实验为例说明虚拟实验系统中的实验流程的搭建和运行。其具体步骤如下。

首先,选择实验所需的各种实验组件。根据实验的需求,从信号源分类组件库中选取2 个余弦波发生器,从信号处理组件库中选取信号滤波器(FIR)、巴特低通滤波系数产生器和FIR 频率响应器,同时,根据观察实验结果需求,从图形展示组件库中选取若干图形展示组件。其中,巴特低通滤波系数产生器是Web服务组件,其他的是Java 组件。根据实验流程,为组件之间搭线。图4 所示为实验搭建后的流程图。

图4 巴特沃斯低通滤波实验Fig.4 Experiment of Butterworth LPF

然后,设置实验组件参数。完成实验流程的搭建后,还需对组件的参数进行设置。用鼠标左键单击设计面板中的1 个实验组件,右边的参数编辑窗口就会自动装载组件的参数内容,单击相应的参数进行编辑。对1 个余弦波发生器组件的参数进行设置,如表1 所示。由表1 可知:余弦波的频率被设为16,采样频率设为64 次,相位设为0 V。

表1 配置组件参数表Table 1 Parameters of component configuration

最后,执行实验流程。实验执行完毕后,单击结果展示面板组件会弹出实验结果窗口。输出面板是将1 个实数数组用X-Y 坐标系的方式展示出来。它首先遍历收到的数组,获取到最大值和最小值,通过最大值和最小值的差值得到图像展示区的相对高度H,以数组的长度作为图像展示区的相对长度L。根据实际可用于显示的区间,假设其高度为H1,宽度为L1,则映射到数组序列中的单位高度为H1/H,单位长度L1/L,以图像展示区的左下角作为X-Y 坐标系的原点,将数组的每个元素布局在面板上。图5(a)和5(b)所示为2个输入信号的波形,图5(c)所示为2 个输入信号混合叠加后的信号波形,图5(d)所示为经过巴特沃斯低通滤波之后形成的波形。从实验运行结果可知:可以通过实验输出面板很直观地看出实验结果,并可实验效果进行对比。

图5 实验运行结果Fig.5 Experiment results

从搭建实验到完成实验,与传统的虚拟实验平台相比,用户可以通过基于异构资源集成的虚拟实验平台将OpenCV 组件和Matlab 组件等自己熟悉的语言开发的组件集成到当前平台中,更能提高用户的动手实践能力和创新能力;通过异构组件发布的方式能为用户提供丰富的Web 服务组件,为用户实验提供极大方便,提高了组建的重用度;而且平台简单易用,具有良好的互操作性、维护性、扩展性和重用性,为其他虚拟实验平台的建设提供了重要参考。

4 结论

(1) 针对信息类课程中传统实验模式中算法类型实验所存在的问题,提出了一种面向异构资源集成的虚拟实验平台。

(2) 以数字信号处理虚拟实验系统为例说明了该平台的应用方法和使用效果。

(3) 该平台能够为学生提供一个简单易用的算法类课程实验环境,使学生在无需配置复杂开发环境下能够集成异构实验资源对自己所设计算法进行正确性检测和性能分析。

[1] 王秋生, 袁海文. 《数字信号处理》课程的分层实验教学方法[J]. 北京航空航天大学学报(社会科学版), 2011, 24(5):109-112.WANG Qiusheng, YUAN Haiwen. Experimental teaching method based on hierarchy model for digital signal processing[J].Journal of Beijing University of Aeronautics and Astronautics(Social Sciences Edition), 2011, 24(5): 109-112.

[2] Yaron D, Karabinos M, Lange D, et al. The ChemCollective-virtual labs for introductory chemistry courses[J]. Science, 2010, 328(5978): 584-585.

[3] Bal G, Bayhan S. Internet based virtual electric machine lab:Switched reluctance motor[C]//International Conference on Application of Information and Communication Technologies.Tashkent: IEEE Computer Society, 2010: 1-5.

[4] Olabarriaga S D, Glatard T, de Boer P T. A virtual laboratory for medical image analysis[C]//IEEE Transactions on Information Technology in Biomedicine. Piscataway: IEEE Computer Society, 2010: 979-985.

[5] Schaffer H E, Averitt S F, Hoit M I, et al. NCSU’s virtual computing lab: a cloud computing solution[J]. Computer, 2009,42(7): 94-97.

[6] Gustavsson I, Nilsson J, Håkansson L,et al.A flexible electronics laboratory with local and remote workbenches in a grid[J].International Journal of Online Engineering, 2008, 4(2): 12-16.

[7] Kumar A, Malik J, Kuma V. Virtual lab:real-time acquisition and analysis of ECG signal[J]. International Journal of Online Engineering, 2011, 7(3): 19-23.

[8] Araiza-Esquivel M A, Tajahuerce E, Martínez-León L, et al.Learning digital holography through an interactive virtual lab:the holographic interface[C]//International Conference on Education and New Learning Technologies.Barcelona:International Association of Technology, Education and Development, 2011: 4774-4781.

[9] Li P. Exploring virtual environments in a decentralized lab[J].ACM SIGITE Research in IT, 2009, 6(1): 4-10.

[10] LI Luyi, ZHENG Yanlin, ZHONG Shaochun. IWVL: A web-based virtual lab for physics teaching in junior high schools[J]. Communications in Computer and Information Science, 2011, 233: 192-199.

[11] WANG Yijun, ZHANG Liyuan, SHENG Yu, et al. Design and implementation of principles of computer organization virtual lab based on component//Second Workshop on Blended Learning. Jinhua: Springer Berlin Heidelberg, 2008: 35-45.

[12] 盛羽, 余进, 陈松乔, 等. 基于CPU 仿真器的汇编语言学习系统的设计与实现[J]. 中南大学学报(自然科学版), 2010,41(6): 2224-2230.SHENG Yu, YU Jin, CHEN Songqiao, et al. Design and implementation of assembly language learning system based on CPU simulator[J]. Journal of Central South University (Science and Technology), 2010, 41(6): 2224-2230.

[13] 盛羽, 张青龙, 陈松乔, 等. 面向最终用户编程的图像处理虚拟实验平台[J]. 系统仿真学报, 2011, 23(7): 1381-1386.SHENG Yu, ZHANG Qinglong, CHEN Songqiao, et al.Business-end programming oriented virtual laboratory for digital image processing[J]. Journal of System Simulation, 2011, 23(7):1381-1386.

[14] 盛羽, 王建新, 谢朝辉. 模型机虚拟实验平台的设计与实现[J]. 中南大学学报(自然科学版), 2009, 40(6): 1609-1615.SHENG Yu, WANG Jianxin, XIE Zhaohui. Design and implementation of model computer virtual lab[J]. Journal of Central South University (Science and Technology), 2009, 40(6):1609-1615.

[15] Herrero J L, Lucio F, Carmona P. Web services and web components[C]//International Conference on Next Generation Web Services Practices. Salamanca: IEEE Computer Society,2011: 164-169.

猜你喜欢

异构客户端组件
你的手机安装了多少个客户端
ETC拓展应用场景下的多源异构交易系统
无人机智能巡检在光伏电站组件诊断中的应用
试论同课异构之“同”与“异”
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
如何看待传统媒体新闻客户端的“断舍离”?
吴健:多元异构的数字敦煌
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略