Windows平台

2024-08-02

Windows平台(精选10篇)

Windows平台 篇1

1 Larbin概述

Larbin是用C++写的一种开源的网络爬虫[1]。一个简单的Larbin效率是非常高的,每天可以获取500万的网页。但是,由于Larbin的结构问题,随着抓取的深入,使得Larbin抓取网页的效率明显下降。

Larbin的具体设计中用到了一些主要的类,如:URL需要一个单独的类class url进行处理,包括显示,分析URL,得到主机,端口,文件数据等。然后需要对url进行排重,需要一个比较大的url Hash表,这里用到类class hashTable。如果要对网页的内容进行排重,还需要一个Document Hash表,Larbin用了类class hashDup。爬行下来的URL量比较大,需要存到磁盘上,所以用到一个FIFO队列,程序中用类class PersistentFifo实现的。爬虫一般是对多个网站进行爬取,但在同时站点内DNS的请求可以只做一次,这就需要将主机名独立于url,Larbin有一个类class NamedSite进行处理。主机名解析完成后需要有一个解析完成的IP类class IPSite与之应用,用于connect的时候使用。对于抓取回来的HTML文档,需要进行解析,需要一个用于HTML解析的类,Larbin的解析类为class html。再加上connexion、text文件中的字符串处理函数,用于连接队列的class ConstantSizedFifo类,Larbin的主要部分就算完成了。

2 Larbin关键技术分析

基于TCP/IP协议的通信编程一般有下面三种方法:第一种是单线程阻塞,由于是阻塞方式读取,DNS解析,建立连接,写入请求,读取结果这些步骤上都会产生时间的延迟;第二种方式是多线程阻塞,建立多个阻塞的线程,分别请求不同的URL。可以更有效的利用机器的资源,特别是网络资源,因为无数线程在同时工作,所以网络会比较充分的利用。第三种是单线程非阻塞。是目前使用的比较多的一种做法。在一个线程内打开多个非阻塞的socket套接字连接,通过poll/epoll/select对连接状态进行判断,在第一时间响应请求,不但充分利用了网络资源,同时也将本机CPU资源的消耗降至最低。此方法需要对DNS请求,连接,读写操作都采用异步非阻塞操作。Larbin采用的是第三种方法实现的高效性,采用批量创建非阻塞套接字socket进行连接,根据poll函数判读套接字上的事件异步读写socket上的内容,从而充分利用了网路资源,也将CPU资源的消耗降到了最低。Larbin的队列分析如图1所示。

从图1中可以清晰的看到Larbin的URL处理思想:四个优先级不同的URL存储队列URLsDisk、URLsDiskWait、URLsPriority、URLsPriorityWait用来存储URL,由于大量的URL不可能都存储在内存单元中,所以分析得到的URL会根据其优先级放入URLsDisk或URLsPriority中。disk和priority的队列都是成对出现的,是因为可以认为每个站点在namedSiteList当中都有一个小的队列来保存自己的URL,这个URL的个数是有限制的,当超过这个限制的时候就不能再把此站点下的URL放入,而是放入wait队列,Larbin会控制一段时间在disk(priority)中取,一段时间在diskWait(priorityWait)中取数据。NamedSiteList数组实现了DNS缓存,每个站点DNS解析后会在NamedSiteList中存放此站点的IP地址,下次抓取该站点的网页时,先判断缓存中是否进行了DNS,并且没有超过缓存有效时间dnsTimeout。dnsSite队列主要用来存储没有进行DNS解析的站点,为fetchDns()函数提供数据。IPSiteList数组用来存储已近取得DNS解析并且获得了robots.txt文件的站点中的URL,并且控制对同一站点两次访问的时间差不小于waitDuration。okSite队列主要用来存放待抓取的URL,为fetchOpen()函数提高数据。

Larbin用Bloom Filter算法排重,对于每一个URL,Larbin只用如下一个哈希函数得到这个URL的哈希码:

其中,port为URL的端口号,a[n-1]为URL的host和file相连后字符串中第n-1个字符的ASCII码,这里要注意的是相连后的字符串中,host在前,file在后。hashSize是哈希表比特位的数目,Larbin中默认的是6400万。%代表取余数。

在Bloom Filter中,哈希表中的每一个比特位被当作独立的可寻址单位,所以对于每一个URL的哈希码,映射到哈希表中的相应比特位时,会将这个比特位置为1,Larbin中的具体代码实现方法如下:

由于Bloom Filter算法的思想就是不处理冲突,所以可以看到,Larbin中仅仅用了8M的内存就可以下载6400万张网页,而且排重效率极高。Larbin的排重算法特点可以归纳为[3]:(1)使用hash;(2)将每个URL映射到一个比特位;(3)排重时间是固定常数;(4)不处理冲突。

3 Larbin的系统平台移植

这里向windows系统平台下移植时采用VC2003.net作为编译器。并主要需要修改Larbin中的下面几个部分:一是库函数的替换;二是套接字编程方式;三是线程函数问题;四是错误码的获取。Linux下的源文件是.cc格式的,在windows下的VC中应改为.cpp格式。将源代码以文件的形式分别加载到VC的一个解决方案中,把头文件和源文件分别放入头文件夹和源文件夹下,去掉源代码中诸如#include″utils/url.h″中的文件路径名utils部分。

在移植的过程中需要对系统平台的库函数进行替换。如unistd.h可以用io.h和process.h替换,sys/socket.h、netinet/in.h、netinet/tcp.h、netdb.h和arpa/inet.h可以用winsock.h或winsock2.h替换等等,还要用到windows API函数,需要包含windows.h文件。这里对库函数的修改,需要对源代码中具体用到库的函数进行判断,有的函数在linux下的系统库函数中存在,也在修改后的windows下系统库函数中存在,而且功能用法一样,这时不用修改这个函数,但有的却不一定存在,需要用同样功能的函数来代替。

套接字编程是Larbin的核心部分,如套接字的创建、设置模式、读取数据等。但是linux和windows下所用到的套接字函数:(1)是修改头文件定义,用winsock.h或winsock2.h替代。(2)是需要对socket用WSAStartup()函数初始化。(3)是将套接字socket类型由int型改为SOCKET(unsigned int)型。(4)是用ioctlsocket()函数代替fcntl()函数设置套接字为非阻塞模式,用inet_addr()函数代替inet_aton()函数把点分十进制IP地址字符串转换成网路字节顺序。(5)是WSAGetLastError()函数取得错误码,而不是用linux下的全局变量errno,用WSAEWOULDBLOCK宏代替EIN-PROGRESS宏表示套接字状态为可能阻塞。(6)是windows下用send()和recv()函数在套接字上发送接收数据。(7)是用select()函数代替Larbin中的poll()函数,这里定义两个结构指针fd_set觹readset和fd_set觹writeset来分别保存有读写事件的套接字,用宏FD_ISSET、FD_ZERO等宏对两个结构指针进行处理。(8)是用closesocket()函数代替close()函数关闭套接字。

在Larbin中除了主线程外,还有开辟了一个输出线程和一个websever查询线程,而且用到了互斥锁和条件变量。VC编译器中不包含pthread.h库函数,因此这里用windows API函数进行更改。用CreateThread()函数代替pthread_-create()函数创建线程,用windows下的互斥变量和事件代替互斥锁和条件变量,既CreateMutex()、CreateEvent()、WaitForSingleObject()、ReleaseMutex()、SetEvent()、CloseHandle()一套函数的调用。

在linux下,errno是一个全局变量,直接保存了程序的错误码,但移植到windows下后,需要用GetLastError()或WSAGetLastError()函数获取错误码。

以上的一些改动是Larbin移植到windows下VC编译器的主要部分,再对一些细节的地方加以维护和检查,。这样Larbin基本上就可以再windows下运行了。

4 结束语

互联网是一个庞大的非结构化的数据库[3],尤其是类似RSS的以XML为基础的结构化的数据越来越多,内容的组织方式越来越灵活,检索组织并呈现有着越来越广泛的应用范围,同时在时效性和可读性上也会有越来越高的要求。这一切的基础是爬虫,信息的来源入口。Larbin作为一款C++的开源爬虫,有着其独特的亮点和作用,其高效性和高度可配置性为想用C++研究爬虫的人们提供了很好的平台。

参考文献

[1]http://elanso.com/Article Module/IYIsT3P0J2UAGJG9S4VcV-wIi.html.

[2]王凡毓.网络蜘蛛Larbin的设计与优化[J].武汉:科技创业月刊,2008,21(2):145-146.

[3]http://hi.baidu.com/changfeng01200/blog/item/36d30f54e831bdc3b-dc3b645ae77.html.

Windows平台 篇2

这是一个双赢的决定,完全切合了双方的利益。微软在十年前就提出了Tablet PC的概念,但是硬件软件以及习惯的问题,这是一个早产且发育不良的概念,很快就在人们视野中消失了——也许是思路太提前了。沉寂了数年之后,随着IPAD的突起,平板电脑如雨后春笋般此起彼伏的占领市场,而曾经钟情于平板的微软却一直无法真正搭上平板的前进列车。Windows 7虽然对多点触摸和笔式有了很好的支持,但受限于X86的硬件成本和高功耗,给予它的平板电脑曲高和寡,少有人问津。(京东上有一款win7的爱国者平板电脑,一购买用户评价后,招来一堆人冷嘲热讽“丫,就你有钱,6000多就为了偷菜用?”,汗)。

而传统的X86架构外,针对移动和平板领域的RISC处理器的出货量一直保持高速增长——智能手机,MID和平板是其最大的推动力。IOS,Android,等等迅速占领了其中大部分的增量。这如火如荼的场景,让微软口水不已,弄出了WP,但是尚待时日,况且那么大的平板市场,还没有去切蛋糕。

在这种情况下,微软拿出了杀手锏,那就是Windows平台,这个拥有上亿应用软件的黄金武器——它需要移动处理器的低功耗和长续航能力,而它也知道所有的移动处理器厂家都会欢迎的,,

确实,对于移动处理器厂家来说,当然出货量越多越好,在通用处理器领域被Intel和AMD蚕食之后,很多厂家不得不在夹缝中生存,如今有了平板和移动这个高速增长契机,自然希望越快越好,而这个增长速度其实是取决于智能系统的发展,IOS是封闭的系统,苹果的“精品路线”速度应该是固定的,Android的快速扩张是个好机会,但是还不够,如果Windows能加进来,那就爽歪歪了,在Windows的上亿应用软件支撑下(Ios大约有30万,Android20多万,和windows比差距太大),ARM架构可以无所不能,甚至可以抢占桌面市场。

从短期看,Windows的跨平台支持暂时对Intel和AMD没有什么影响,原因是:上亿应用软件不能直接迁移,需要重新编译在新平台上,这需要一个过程,但这是一个指数增加过程;移动处理器性能仍然距离低端桌面系统差距较大,以至于很多桌面工作无法完成迁移;Intel和AMD的低功耗处理会抵消一部分转移压力;下一代Windows的触摸体验尚需时日完善。

但是从长期来看,这恐怕是一个相当严峻的考验:软件迁移从来都是利益的过程,只要用户够多,这个过程就会成指数速度进行;移动处理器主频越来越高,在性能提升和融合GPU后,一旦达到日常生活的计算能力需求——往往这个需求不是直线上升的,例如我们现在不需要买最贵的电脑就可以完成日常计算,那么迁移速度就会加快。移动处理器的低功耗配合Windows的通用平台堪称杀手锏,也堪称目前最理想的平板合作模式——只要下一代windows的用户体验达到一定的水平。

Windows平台 篇3

关键词:WINDOWS;GHOST;备份;还原

中图分类号:TP311.52 文献标识码:A 文章编号:1674-7712 (2012) 14-0036-03

目前,计算机技术日新月异,促使计算机硬件与软件飞速发展,而以MicroSoft公司为代表的Windows操作系统从Windows95一直演变到现在的Win7,系统操作性与安全性能也逐步得到提高,但计算机在使用一段时间后,系统中便会留下一大堆垃圾文件,电脑频繁出错甚至蓝屏、死机,新型网络病毒也经常会造成系统瘫痪。气象信息网络业务系统因其自身特点,需要长时间稳定运行,系统崩溃等电脑故障将直接造成资料收集与处理出现中断,严重影响气象业务工作。GHOST克隆软件的诞生为我们提供了较安全、快速的系统与文件的备份和恢复解决方案,然而,如何在最短时间内快速准确的利用GHOST软件进行系统备份与还原仍然是较难解决的问题。

一、气象信息网络业务系统概述

气象信息网络系统是现代气象业务体系的重要基础支撑,是现代气象业务的中枢和纽带,是国家信息基础设施的重要组成部分。气象信息网络系统主要承担气象资料和产品的收集与分发、高性能计算、资料质量控制与产品加工、数据管理与服务等业务。

气象信息网络系统是中国气象事业最重要的基本业务系统之一,伴随着中国气象事业的发展和信息技术的发展,现在全国气象信息网络已经初具规模,基本形成了覆盖全国的以地面宽带网和空间卫星通信网相结合的主干网络,各省气象部门的广域网络或局域网络也已建成,以上网络在快速发展的气象业务中发挥了显著的效益和作用。

计算机技术的飞速发展,为气象现代化建设带来了前所未有的机遇。以计算机应用为基础的气象现代化建设,使我国气象事业实现了飞速跨越式发展,计算机应用使气象信息传输、气象资料处理、卫星气象资料处理等实现了自动化,推动了天气预报制作的智能化与自动化,高性能计算机系统的应用和不断升级、换代,为我国数值预报业务系统的不断发展创造了条件。现在,计算机已广泛应用于气象领域的各个方面,成为广大气象工作者不可缺少的有效工具,计算机的应用水平也在逐步提高,已经实现了从单机应用向网络应用的转变,从传统计算到并行计算得开发和应用,依赖于互联网、广域网、专线网、无线网等基础网络完成自动站、新一代天气雷达、大气成分、土壤水分等新型观测(探测)资料的自动数据采集、数据加工处理与数据上传等工作。计算机与网络技术已经并继续在气象业务中发挥越来越大的作用,同时针对各种不同用户的个性化需求,也需要对快速增长的气象信息的传输、处理更加科学、有效,要求获取的气象资料及产品更加具有针对性、实时性,更加快捷方便,业务发展对信息网络的传输、收集、处理、存储和共享等提出了更高的要求。

二、气象信息网络业务系统的特点

(一)稳定性:气象业务系统一旦投入业务运行,便不再对其进行改动,而是倾全力维持其正常运行,以维护的手段(而不是靠系统自身的能力)排除运行中所出现的系统自身无法解决的问题,因此,为保证实时气象数据的不间断传输与处理,提供高质量的气象服务,对气象业务系统也提出了更高的要求,保证各业务系统必须要在稳定可靠的环境下运行。

(二)时效性:气象信息网络系统具有非常突出的高时效性特点,通常需要技术人员在几分钟或十几分钟内迅速排除故障,并恢复系统的正常运行,因此对系统维护与保障人员发现问题与解决问题的能力提出了较高的要求。

(三)安全性:气象信息网络属于内部私有网络,必须保证其保密性与安全性,防止病毒侵入、黑客攻击等情况的发生,采用网络服务器安装专业网络防火墙,局域网内业务用机安装杀毒软件来保证其安全性。

(四)可操作性:气象信息网络系统相关业务软件需要有很强的灵活性,必须结合气象业务进行设计与编写,并可方便快捷的安装在各种操作系统平台上,要求软件自动化、智能化处理各类气象信息并进行加工处理,因此具有很高的灵活操作性的特点。

三、气象资料传输流程

气象资料由人工观测或者自动观测(探测)设备进行资料采集,并通过台站将数据上传到各市州局或省局,省局信息中心负责收集全省气象数据,并按照不同资料类型进行分别处理或加工,形成标准规定的省级气象数据后上传中国气象局,中国气象局收到全国各省的气象资料后,将通过卫星广播系统实时下发给各省气象局和市州气象局进行资料应用。气象资料传输流程如图1所示。

省级气象信息传输业务系统属于整体流程中间的重要环节,负责收集、处理省内所有气象资料,并实时上传中国气象局,同时开展省级气象信息共享服务等工作,如这一环节出现问题,将直接造成整个气象信息数据流的中断,气象数据将无法正常上传中国气象局,对气象预警、气象预报服务等造成重要影响。

四、备份与还原软件的选取

到目前为止,计算机操作系统的备份手段基本分为两种,一种是Windows系统自带的系统备份工具,不需要安装其它软件即可实现;一种是GHOST备份工具或基于该工具衍生出来的其他第三方备份工具。

(一)Windows系统自带的系统还原功能:WindowsXP操作系统自带系统备份功能,但 “系统还原”功能占用磁盘空间大,需要定时进行系统备份,恢复操作也较为麻烦,仅支持WindowsXP操作系统;Win7系统的“备份与还原”功能相对XP自带的要较为实用,但也仅限于Win7操作系统,局限性很强。

(二)GHOST克隆软件:Ghost软件(俗称克隆软件)是美国赛门铁克公司推出的一款出色的硬盘备份还原工具,可以实现FAT16、FAT32、NTFS、OS2等多种硬盘分区格式的分区及硬盘的备份还原,可支持Win98/NT/2000/XP/2003/VISTA/Win7等目前为止的所有Windows操作系统。

(三)一键还原精灵:此类软件内核程序仍然为GHOST软件,根据软件需求进行了外部包装,添加了部分附加功能,如一键清理、自动备份与恢复等较为实用的小功能。但软件可能会因为电脑系统环境等问题导致安装失败或者无法运行,兼容性较差。

综合以上对比结果,并结合气象业务系统的特点,我们优先选择在DOS模式下运行的GHOST软件来进行系统备份与还原。

五、GHOST软件在实际业务中的应用

默认情况下,人们一般都将电脑的操作系统与重要应用软件基本安装到系统盘(C盘)下,因此首先需要对C盘进行完整的备份,将来恢复时仅需要安装其它软件即可;对于气象业务软件来说,软件的安装目录、配置文件与操作目录等是在正常业务运行后基本不变的,因此磁盘式备份是必不可少的,这些都需要借助GHOST软件来完成。

为了快速在系统崩溃的情况下恢复正常,及时解决问题,需要计算机系统管理或维护人员定期进行系统备份(包括操作系统与重要程序等),以下详细讲解在实际业务工作中如何使用GHOST软件。

系统备份与还原流程如图2所示

图2 GHOST备份与还原流程图

(一)前期准备工作。计算机在操作系统安装好以后,需要对系统进行及时备份,以防不测,将来只需要三五分钟的时间,即可快速方便的恢复到安装时的原始状态。以下详细讲解具体的操作步骤:

1.准备GHOST程序(最为经典的版本为Symantec Ghost 8.3,目前最新版本为Symantec Ghost 11.2,用户可通过互联网下载任意一个版本),把GHOST程序和备份文件放到同一文件夹下面,以便将来寻找和操作。

2.GHOST需要在DOS模式下进行操作,简便的办法是安装虚拟软盘启动或者MAXDOS、矮人DOS工具箱等第三方工具,构成双启动系统。

3.进行Windows系统优化。可以选择使用Windows优化大师、金山卫士等系统工具对系统进行优化提速与设置。

4.对系统进行必要的清理与维护,删除系统垃圾,控制备份文件的大小在一个合适的范围内(一般为3.0~5.0G左右)。

5.使用杀毒软件对系统进行全盘扫描,避免系统中残留有流氓软件、木马或者异常病毒,对将来造成不必要的麻烦。

6.重新启动电脑,确定系统运行在稳定状态下,准备进行系统备份。

(二)系统分区备份

1.重启电脑,开机过程中选择进入DOS系统,转到GHOST程序所在的目录,运行GHOST程序(输入命令 “GHOST”打回车)即可启动GHOST程序,按上下光标键,按照从上往下数的顺序是1-2-2,依次选择“Local(本地)→Partition(分区)→To Image(生成映像文件)”项,如图3所示。

图3 Ghost软件选择备份界面

2.屏幕显示出硬盘选择画面,选择分区所在的硬盘“1”,如果只有一块硬盘,可以直接按回车。

3.选择要制作镜像文件的分区(即源分区),默认选择分区“1”(即C分区),再按Tab键切换到“OK”按钮,再按回车。

4.选择镜像文件保存的位置,此时按下“Shift+Tab”键可以切回到选择分区的下拉菜单,按上下键选择分区,例如“1:2”的意思就是第一块硬盘的第二个分区,也就是“D”盘,选好分区后,再按Tab键切到文件选择区域,用上下键选择文件夹,可以再按Tab键,切到“Filename”文本框键入镜像文件名称,如“winxp”或“C_BAK.GHO”,然后按回车键即可。

建议:在进行系统备份前,首先在某一分区(非系统分区)建好Ghost的文件夹,把GHOST程序和备份文件放在一起,从GHOST目录启动GHOST程序,这样就直接回到镜像备份GHOST目录,直接填上备份文件名然后按回车确认操作。

5.以上操作完成后,将会询问是否需要压缩镜像文件,“No”表示不做任何压缩;“Fast”的意思是进行小比例压缩但是备份工作的执行速度较快;“High”是采用较高的压缩比但是备份速度相对较慢。一般用户选择“High”,虽然速度稍慢,但镜像文件所占用的硬盘空间会大大降低,恢复时速度很快。

6.最后,会提示是否确认本次操作过程,选择“yes”,如图3所示,按回车后,会出现系统备份进度条画面,开始制作镜像文件(备份速度与CPU主频和内存容量有很大的关系,一般来说10分钟以内都可以完成),等进度条走到100%,就表示备份制作完毕,软件会提示重新启动系统,也可以直接重启电脑或ctrl+alt+del,而不用退出ghost或dos系统,如图4所示。通过上面的工作,我们已经制作了一个C盘的备份,在系统出现不能解决的问题时,我们就可以轻轻松松的恢复系统了。

图4 镜像文件生成确认界面

(三)系统还原。进行系统还原时操作相对简单,保证硬盘分区内至少有一份备份GHOTS镜像文件即可,之后按照如下步骤进行操作:

1.重启电脑,选择进入DOS系统,选择程序所在的盘符,进入目录,运行GHOST程序,按照从上往下数的选择顺序是1-2-3,选择Local→Partition→From Image(注意这次是“From Image”项)。

2.选择镜像文件保存的位置,选好文件所在的分区后,再按Tab键切到文件选择区域,用上下键选择文件夹,用回车进入相应文件夹并选择备份镜像文件(后缀名为.gho的文件),并选择到“open”后按回车,如图5所示。

图5 选择镜像文件窗口

3.选择需要恢复系统的目标硬盘,默认情况下电脑只有一块硬盘,直接按回车。

4.选择将镜像文件恢复到哪个分区,我们一盘只对C盘操作,所以选择Primary,也就是主分区C盘的意思。

5.所有选择完毕后,确认是否进行操作,选择“yes”并回车,将弹出系统恢复进度条界面,等进度条完成100%,表示系统恢复操作已完成,此时重启电脑,就可还您一个完整的操作系统。

六、总结

虽然现在计算机硬件更新速度频繁,日新月异,但人们使用的操作系统却越来越脆弱,网络病毒、恶意软件等很容易造成系统死机甚至崩溃,严重影响我们的日常工作与生活,熟练掌握系统的备份与恢复可以从根本上解决用户的问题,同时提高工作效率。2011年5月,网络病毒在局域网内频繁爆发,屏蔽杀毒软件防毒功能,并感染系统内部所有exe可执行文件,几次造成气象信息网络业务系统用机系统崩溃等情况,系统维护人员均通过GHOST软件及时恢复系统,对业务工作未造成影响,取得了很好的实际业务效果。

参考文献:

[1]王辉.浅述windows服务器操作系统备份问题[J].科技资讯,2006,12.

[2]刘延岭,郑阳平.Ghost软件在网络中的应用[J].福建电脑,2006,4.

Windows平台 篇4

关键词:辅助实验平台,实验效率,技术性手段

●引言

Windows程序设计是高等院校计算机科学与技术专业中的一门必修课。该课程在计算机专业的课程体系中起着承上启下的作用, 它将学生在低年级掌握的基础课知识, 如C/C++、数据结构等与平台无关的编程语言和方法与Windows操作系统相结合, 使学生能在Windows上开发可视化应用程序, 从而顺利进行高年级专业课的学习, 如数字图像处理、计算机图形学、数据库原理等 (这些课一般都在主流的Windows上进行实验) 。[1]

Windows程序设计课程的应用性极强, 旨在提高学生的编程能力, 实验环节尤其重要。但该课程的学时数一般较少, 因此, 如何在有限的实验环节中, 提高学生的实验效率, 使学生尽可能多地积累Windows编程经验值得进行教学研究和探索。

●实验环节现状分析

Windows程序设计课程的实验环节效率不高、有待优化主要体现在以下几个方面。

1.题目设计缺乏个性化

实验题目设计是本课程实验环节中的一个重要方面。[2]以往同一个班的实验题目是一样的, 但由于学生间对知识的掌握程度和编程能力客观上存在一定差异, 这就会让一部分学习情况较好的学生觉得实验收获不够, 而另一部分学习情况相对较差的学生却觉得实验太难, 从而导致实验效果不能让所有学生都满意。

2.题目要求的表达不够直观

与C、C++、数据结构等基础编程课程不同, Windows程序设计的实验最终结果是可视化应用程序, 实验效果带窗体界面, 有些甚至还有动画效果、用户交互等功能。[3]因此, 传统的实验指导书用文字说明实验题目要求的形式不利于学生快速、直观地理解实验题目的要求, 有时学生实现的功能甚至与题目要求不符, 从而降低了实验的效率。

3.存在重复性编码

计算机专业的多数基础编程课程, 如C、C++、数据结构等课程, 如C、C++、数据结构等课程的实验, 学生可以直接在空白的main ( ) 函数中编写功能代码。[4]而Windows应用程序开发则不同, 想要实现功能, 必须先实现基本Windows窗体。一个基本的Windows窗体中, 涉及了窗体的定义、注册、创建、显示, 以及Windows消息循环、消息响应函数编码等环节, 需要近100行代码来实现。因此, 在以往的实验环节中, 不少学生尤其是学习情况相对较差的学生在实现Windows基本窗体的过程中就花费了大量宝贵时间, 导致实验效率低下。

●基于辅助实验平台的实验模式

针对以上在实验教学过程中发现的问题, 结合Windows程序设计课程实验的特点和浙江农林大学计算机科学与技术专业学生的实际情况, 笔者尝试以技术性手段来提高Windows程序设计课程实验环节的效率, 设计并开发了一个Windows程序设计的辅助实验平台软件, 它具备实验题目自选模块、实验效果演示模块、辅助程序模块、编程资源模块, 能有效提高学生的实验效率, 改善实验教学效果。

1.实验题目自选

为了实现个性化实验, 使不同学习程度的学生都能够有适合自己的实验题目, 笔者根据学生情况制定了难度不一的实验题目和详细程度不一的实验指导教程。浙江农林大学的Windows程序设计课程共48学时, 其中理论教学32学时, 实验教学16学时, 针对这8次实验, 分别设计了难、中、易三套实验题目。

同时, 将这三套实验题目集成于本辅助实验平台软件中, 这样, 学生们就能方便地选择适合自己类型的实验方案, 各取所需。此外, 对实验指导教师、实验室人员来说, 实验管理也比以往更方便了, 只需在每台电脑预装本辅助实验平台软件, 无需网络和纸质的实验指导手册, 学生就能查看实验题目和实验指导教程。

2.实验效果演示

为了更直观表达实验题目的要求和预期效果, 减少学生在理解题意上花费的时间, 从而提高实验效率, 本辅助实验平台软件实现了实验效果演示模块, 不再使用实验指导书这种不适合本课程的传统实验模式。

实验效果演示模块集成了每次实验的所有实验题目, 能调用每个实验题目相对应的Windows应用程序可执行文件, 从而形象地表达实验要求。学生可通过本模块方便地预览预期的实验效果, 在实验完成后能与之比较实验效果, 验证编程环节是否正确。如图1所示, 当点击“效果演示”后, 预期的动画实验效果能直观展示。

3.辅助程序开发

SDK编程是通过C/C++语言, 以消息处理的编程方式, 直接调用Windows提供的API函数进行程序开发。它是底层的Windows程序设计方法, 能让学生加深对Windows编程的理解。一般在Windows程序设计的教学中, 都先介绍SDK编程, 然后介绍基于MFC、ATL类库的编程方法。然而, 与基于MFC、ATL类库的编程模式中, VC++会自动提供应用程序基础框架不同, SDK编程模式中, VC++不提供基础框架代码, 要实现实验题目, 必须先实现窗体基础框架。这是学生在初学Windows编程时的障碍之一, 如何让学生只关注功能本身, 尽快实现实验题目, 从而培养编程兴趣、提高编程信心并提高实验效率, 值得探讨。

笔者尝试利用辅助实验平台软件提供辅助程序开发模块, 该模块集成Windows应用程序的基本框架, 能显示基本的窗体, 并且学生可以在本软件上可视化添加每个实验的功能代码, 最终再由本软件导出最终的源程序。这样, 学生在实验过程中, 只需要专注于实验相关的功能, 进行事件响应部分的处理代码即可, 从而大大减少了重复性代码的编写量, 切实提高了实验课时的利用率。如图2所示, 当点击“开始编程”后, 空白的输入框内自动生成了基本框架代码, 在输入框内添加窗口处理代码完成功能代码编写后, 再点击“生成.cpp文件” (如图3) , 即可导出最终的源程序。

4.编程资源

Windows程序设计的实验环节中需要用到一些编程资源, 如位图、图标、第三方控件、类库等。本辅助实验平台软件除了实现以上3个主要功能模块之外, 还将集成所有实验题目需要用到的Windows编程资源, 这样学生就不必花大量时间去搜索编程资源, 从而能进一步提高学生的实验效率, 同时也能方便实验指导教师、实验室人员的管理。

5.基于辅助实验平台的实验流程

本辅助实验平台软件通过软件的形式覆盖学生实验时的各个环节。通过本实验平台, 改变了传统编程类课程的实验模式, 学生可自行选择不同难度的题目和详细程度不一的实验指导, 实验要求也更直观、明确, 实验环节中编程的效率也得到相应提高。学生基于本辅助实验平台软件进行实验时的流程如图4所示。

●建设效果

笔者以浙江农林大学计算机科学与技术专业101、102、111、112共四个班级为试点, 对计算机101、102班采用传统的实验教学模式, 而对计算机111、112班则采用辅助实验平台软件的实验教学模式。为了验证本辅助实验平台软件这种技术性手段是否能提高学生的实验效 率, 本文统计了每次实验学生能完成实验题目的平均数量。此外, 为了更进一步分析本辅助实验平台软件对不同学习状况的学生在实验环节的受益程度影响, 将学生分为学习状况相对落后、学习状况一般、学习状况较好三类 (按C、C++、数据结构课程的考试得分) 分别进行了统计, 统计结果如下表所示。

从上表可以发现, 采用了本辅助实验平台软件覆盖整个实验环节后, 学生能完成实验题目的平均个数上升明显, 就整体而言, 由原来每次实验平均只能完成2~3个题目, 上升到每次实验平均能完成3~4个题目, 实验效率提高了29.2%, 说明本文提出的以技术性手段提高学生实验效率的教学方法是有效的。

此外, 学习情况相对落后和一般的学生通过本平台实验效率分别提高了60%和30.4%, 说明辅助实验平台对这两部分学生影响较大, 能帮助他们更快、更好地完成实验, 积累更多的Windows编程经验, 这与本平台的设计初衷一致;学习情况较好的学生通过本平台实验效率提高了8.6%, 说明辅助实验平台对这部分学生影响不大, 即使没有平台, 这部分学生也能较好地完成实验任务。

除了以上的数字结果, 从学生在实验过程中的表现及课后的反馈情况来看, 本平台能让学生更快看到自己的实验成果, 从而能更快地入门Windows编程, 在适应了Windows程序设计基本方法和技巧后, 对本平台的辅助程序开发模块依赖会慢慢降低, 在后半学期绝大多数学生已经能熟练地从头开始SDK编程;另外, 本平台不但让学生完成的实验题目数量增加了, 更重要的是让学生在初学时就树立了学好Windows程序设计的信心、激发了兴趣和热情, 这种影响是潜移默化的。

●结语

本文尝试以技术性手段设计并实现了一个辅助实验平台软件用于Windows程序设计课程的实验环节, 取得了良好的实践效果。下一步的工作是继续探索实验环节能改进或优化的环节, 进一步完善辅助实验平台软件;同时, 将技术性手段改进教学或实验的思路推广、应用到其他的计算机专业课程。

参考文献

[1]方敏, 张胜.Windows程序设计 (第5版) [M].北京:清华大学出版社, 2010:12-15.

[2]方昱春, 陈讯雷, 张景峤.Windows编程课实践教学探讨[J].计算机教育, 2010 (18) :153-155.

[3]杨程, 陈念年, 李郁峰.游戏开发驱动的Windows程序设计课程教改探析[J].教学研究, 2012 (2) :92-95.

Windows平台 篇5

我一直在寻觅一套工作于WINDOWS平台的磁盘整理软件,虽然我很无奈服务器操作系统竟然需要另外装一个软件来做日常维护,

UNIX和LINUX的磁盘系统不会出现类似碎片的问题.他们都是越用越快,而WINDOWS却是这么的尴尬与愚蠢。不过,我们还得继续,就好象生活一样,

安装程序: OO_Defrag_8.5.1788 + Chs Patch

需要下载的可以问GOOGLE.或者 .我就不提供了。

安装很简单一路NEXT,启动后界面如下图:

很直观的看到每个逻辑盘,界面漂亮,友好。左边任务区域有几个选择,单键整理,启动后如下图:

然后是分析磁盘,建议第一次安装以后点选分析,可以获得磁盘的详细信息:

整理磁盘会有详细的整理模式,这跟WINDOWS自带的模式差不多,不过更为详细点:

Windows平台 篇6

电子证据也可以叫计算机证据、数据电文证据或者网络证据等,是随着计算机及互联网络的发展在计算机或计算机系统运行过程中因电子数据交换等产生的以其记录的内容来证明案件事实的电磁记录物。计算机证据的收集方法是计算机取证方法中的核心内容。

随着计算机网络的发展,浏览器成为网络信息获取与发布的重要工具,浏览过的网页的URL、表单信息、cookie等有关用户隐私数据都会存储在浏览器中。研究浏览器痕迹的存储和提取技术是电子取证中重要部分。

1 浏览器痕迹

根据内核的不同,当前windows平台下比较主流浏览器有基于Trident内核的IE浏览器、基于Gecko内核的火狐(Firefox)浏览器和基于webkit内核的谷歌(Chrome)浏览器。从技术角度,不管使用哪一款浏览器上网都会留下上网痕迹,如地址栏、历史记录、Cookies、临时文件、日志文件等都会有所记录。虽各浏览器因为内核和结构设计的不同,存储上网痕迹的方式会有差别,但都会以Cookies、缓存、地址栏等一些固定方式留下记录。

Cookies,小型文字档案,是指某些网站将用户浏览网站的相关信息发送至用户本地终端用以辨别用户身份的数据信息(通常经过加密)。Cookies信息中包含了用户名、曾经访问过的网站、访问时间、更新时间以及过期时间。浏览历史痕迹及时用户使用浏览器打开的网页历史,包含曾经页面、访问时间、更新时间以及过期时间。

2 浏览器痕迹提取技术研究

2.1 IE 痕迹提取技术

IE10之前版本浏览器用户浏览网页后生成的痕迹,如URL、Cookies等都是通过Index.dat缓存文件进行保存。Win7系统中至少存在三个Index.dat文件,分别用来保存浏览网页的访问历史、Cookies以及临时文件的索引信息,默认位置如表1所示:

Index.dat文件包含文件头、HASH表和条目部分。文件头即文件的开始部分,保存着该文件的标识字符串、文件大小、HASH偏移等信息。HASH表中包含一些条目的偏移地址快速定位条目的偏移地址。条目部分包含了访问地址、最近访问时间、最近更新时间以及过期时间等信息。HASH表和条目部分由不同的标识符区分。一般来说,标识符用两个DWORD表示,占8个字节。一种标识符表示一种数据结构类型。如:48 41 5348是HASH标识符;55 52 4C 20是URL标识符。通过对Index.dat文件格式进行解析提取痕迹信息。

IE 7-9将用户名密码信息单独存储在Software\Microsoft\Internet Explorer\Intelli Forms\Storage2注册表路径下,采用了URL HASH的方式进行格式化,保护方式使用了Crypt32.lib的CryptP rotect Data API进行加密保护。提取时只需遍历Software\Microsoft\Internet Explorer\Intelli Forms\Storage2注册表项,通过Windows API Crypt Unprotect Data解密用户名密码信息。

2.2 Chrome 痕迹提取技术

这里对于Chrome近几年来的大版本进行分析,其浏览历史默认保存在C:User<username >App DataLocalGoogleChromeUser DataDefault目录下,以文件名History开始的一系列文件中。Chrome浏览器将搜索历史、URL访问历史(urls)等信息分别保存在SQLite数据库中。Urls保存了URL地址、URL标题信息、访问次数、最后访问时间等信息。Sqlite属于轻量型数据库,可以通过基本的SQL语句进行查询。

Chrome浏览器本地保存的用户名密码信息都存储到一个没有后缀名的sqlite3数据库Login Data之中。通过获取Chrome默认安装路径获取sqlite3数据库存放位置,利用sqlite3 API读取各个敏感字段内容,Chrome只对密码进行了加密,用户名字段为明文,利用CryptU nprotect Data解密密码获取隐私信息。

2.3 Firefox 痕迹提取技术

从Firefox3.5版本以后更改了存储方式和位置,其数据保存格式同Chrome一样使用了轻型数据库sqlite3,分别保存了浏览历史、下载信息以及Cookies信息。其获取方法在2.1已有讨论,不在赘述。

对于Chrome和IE,Firefox的用户名密码获取要复杂一些,通过读取注册表项获取Firefox安装目录,通过解析profile.ini获取隐私信息的准确路径,读取signons.sqlite和moz_logins表,Firefox的用户名和密码都没有做明文存储,通过分析Firefox源码可知,NSSBase64_Decode Buffer函数用来解密用户名密码数据,解密出的数据为中文时需要进行转码操作。

3 结语

Windows平台 篇7

防火墙、入侵检测系统、漏洞扫描程序和防病毒软件等各种不同类型的安全技术和产品是用户安全和可靠地使用网络所不可或缺的工具[1]。但是,这些技术和产品具有高度的针对性,只能有效地解决网络安全某一方面的问题,所起到的作用是有限的。例如,防火墙只能对数据包包头进行粗粒度的检查;入侵检测系统对数据包深层有检测的能力,但主动响应能力较低;蜜罐通过布置虚拟场景吸引攻击者来跟踪入侵行为,但入侵数据通常只用作实验攻防分析。这些技术单一地使用,是不足以保护网络安全的。所以,为了提高网络安全防护的能力,达到最大程度的安全保证,就必须从整体上考虑,综合应用各种网络安全技术。为此,在安全领域内提出了联动的概念。即让各种网络安全技术联动,紧密协同工作,从全局范围评估安全事件的威胁,并在适当的位置采取行动,从而构筑一个全方位的安全防护体系。本文正是基于这种思想,设计了一种基于Snort的联动系统,并详细阐述了此系统的实现过程。

1 联动相关技术

联动是指通过信息互通实现各种安全产品和技术之间的协同工作,其目标是构筑一个全方位的安全防护体系。它的理论基础是安全事件的意义不是局部的,将安全事件及时通告给相关的安全系统,有助于从全局范围评估安全事件的威胁,并在适当的位置采取动作[2]。

联动的一方多为防火墙,另一方大都是IDS、防病毒系统和审计系统等。前者为静态防御的代表,后者则是动态防御的代表。本文通过windows自带的防火墙IPSec和Snort实现联动系统。

Snort是著名的开放源码的网络入侵检测系统[3]。对每种入侵行为提炼出其特征值,按照Snort的规范写成检测规则,形成一个规则数据库,检测时Snort将捕获的数据包在规则数据库中逐一匹配,若匹配成功,则认为发生入侵。它由4个子系统组成:数据包嗅探器(Sniffer),预处理器,检测引擎,报警日志模块[4]。其中,数据包嗅探器用于捕获网络数据包,进行网络分析和网络故障查找,还可以监听明文传输的敏感数据;预处理器采用插件的形式,主要用于包重组,协议解码和异常检测等;检测引擎是Snort的核心,用于依据规则匹配数据包;报警日志模块用于控制Snort数据以何种形式输出[5]。

IPSec的全称是Internet Protocol Security,实际上是一套协议包而不是单个的协议,IPSec是在IP网络上保证安全通信的开放标准框架,它在IP层提供数据源验证、数据完整性和数据保密性[6]。如图1所示,IPSec有封装安全载荷(ESP)和认证头(AH)两种通信保护机制。按照相应RFC的规定,AH机制提供完整性保护、抗重放攻击和连接的访问控制;而ESP除了提供给AH保护外,还提供机密性和一定程度的流量保护。由此可见,AH对网络流量提供的安全保护是ESP提供的保护的子集[7]。而这两种安全协议根据封装的载荷内容不同,有传输和隧道两种模式。

IP Filter是IPSec的一个小组件,是windows 2000以后加入的技术,工作原理很简单,当接收到一个IP数据包时,IP Filter使用其头部在一个规则表中进行匹配。当找到一个相匹配的规则时,IP Filter就按照规则制定的方法对接收到的IP数据包进行处理。处理工作有三种:阻塞,丢弃,转发[8]。

2 联动系统设计

2.1 整体架构

联动系统的整体架构见图2。该系统基于client/server模型,客户端建立在IDS中,服务器端建立在防火墙中。所有外来数据被Snort系统捕获,然后经过解码,预处理,再交由检测引擎进行检测。检测引擎将当前数据与已初始化的规则链进行匹配,当检测到有匹配数据时,即检测到攻击行为,系统就进行报警。如果检测到的攻击行为需要与防火墙联动进行阻断,Client端立即产生控制信息,然后Client端将控制信息传递给Server端。Server端在接收到Client端传来的控制信息后,便会联动防火墙阻断相应IP,达到实时阻断的目的。

同时为了提高Snort的工作效率,改进了Snort的现有匹配算法,提出了一种全新的BM匹配算法。

2.2 工作流程

防火墙和Snort之间的联动,使防护体系达到由静态到动态,有平面到立体的转变,提升了防火墙的机动性和实时反应能力,增强了入侵检测系统Snort的阻断功能。防火墙可看作是主机安全的一道防线,Snort作为主动发现入侵行为的设备,它们之间的协同工作,能够进一步强化各自的作用,从而提高计算机抵御入侵的能力。

该联动系统具体的工作流程如图3所示。

系统首先通过Winpcap函数库从网卡捕获IP数据包,利用数据包解码器对数据链路层的原始包就行解析,接下来预处理器对解析后的数据包进行一系列的转化,以便数据包更容易被Snort检测和处理。当数据包到达检测引擎后,检测引擎根据检测数据库里所定义的联动规则对每个数据包进行分析,当数据包和某条规则匹配时,即发生了入侵,检测引擎会产生告警记录,输出插件会将告警信息输出到MySQL数据库,并将以界面的形式显示出来。同时联动防火墙,IPSec产生IP Filter,IP Filter会实时阻断入侵。

3 联动系统实现

3.1 联动规则实现

要想达到检测到入侵行为后,能及时的联动IPSec,必须对Snort的入侵检测规则文件进行适量的修改,在需要联动的规则中加上相应关键字。

具体格式为:ifw:who[how],time

解释如下:

ifw:联动关键字,snort见到该关键字,则将调用联动输出插件,发送告警信息;

who:在具体的规则中,可以为src,source,dst,dest,destination等。具体需要阻断哪个地址跟规则的写法相关,比如subnet A->any,如果需要阻断any,则应使用dest;

how:和who一样,可以灵活设置为in,out,src,dest,either,both,this,Conn等。

time:需要阻断的时间,单位可以为seconds,minutes,hours,days,weeks,months,years。如果需要设置永远阻断,可以将值设为0或者设置关键字ALWAYS.

在真实的规则中,举例如下:

alert icmp$EXTERNAL_NET any->$HOME_NETany(msg:"ICMP PING";icode:0;itype:8;detection_filter:track by_src,count 10,seconds 60;classtype:miscactivity;sid:384;rev:5;ipsec:SRC[conn],1 minitues;),

规则针对外部对本地内网进行的ping攻击,发出对源地址的阻断请求。阻断方向为进出双向,阻断时间设定为1分钟。

在设定阻断规则的时候,我们需要先指定被阻断的对象,然后决定是对该对象实行完全阻断还是仅仅阻断某个方向上的流量,最后决定阻断时间的长短。一般来说,不推荐使用永久阻断。

3.2 联动模块实现

Snort提供了对预处理插件和检测插件的扩展机制,并将编写这两种插件的模板放在了Snort源码的templates子目录中,其中以sp开头的是编写检测插件的模板文件,以spp开头的是编写预处理插件的模板文件。由于联动IPSec实际用到的是IP Filter,但IP Filter没有提供给用户直接的编程接口。只能采用命令行的配置工具。配置的命令格式如下:

含义是阻塞从IP地址A.B.C.D/mask连接E.F.G.H/mask的指定协议protocol和端口port的数据包。因此需要针对IP Filter的命令格式扩展Snort的输出插件,修改输出插件部分的源代码,同时添加底层联动IP Filter的代码。

4 系统测试

测试采用同一局域网内的两台主机,主机A和主机B,安装有windows xp sp2系统,其中,在主机A上安装有联动系统,实验的数据都在主机A上获得,本文选用ping命令来进行实验的攻击测试。

实验步骤分析如下:

(1)在主机A上设置Snort联动规则alert icmp$EX-TERNAL_NET any->$HOME_NET any(msg:"ICMP PING";icode:0;itype:8;detection_filter:track by_src,count 10,seconds 60;classtype:misc-activity;sid:384;rev:5;ipsec:SRC[conn],1 minitues;),此规则表示如在一分钟之内其他主机对主机A发起超过十次的ping攻击,Snort便会报警并联动IPSec。

(2)在主机A上启动联动系统,使其处于网络入侵防御模式。

(3)攻击主机B对本地主机A进行ping测试。

(4)主机A上的联动系统发生报警,并会产生IP Filter阻塞掉ping攻击,阻塞ping攻击如图4所示,产生的IP Filter如图5所示。

由实验结果可以看出联动系统在检测到攻击后会及时的阻塞掉攻击。按照测试规则的形式,我们对Snort的近千条规则都做了改动,使其能够联动IPSec。同时利用X-Scan-v3.3扫描软件对主机A进行了扫描测试,得到了目标主机的系统信息和漏洞,同时发现联动系统能够比较好的完成对大部分扫描攻击的检测和防御。表1为入侵测试的结果,表2为入侵防御的结果。

从表中可以看出,联动系统能够检测到绝大多数的攻击行为,并在检测到攻击行为的同时阻断掉攻击行为,且成功率也非常高。说明本文的联动系统在检测和防御攻击两方面都能达到很好的效果,确保了网络的安全。

5 结束语

Snort和IPSec的联动,提高了网络的整体防御能力,但面对IDS系统因误报而产生的大量无用信息,联动系统也会随之产生大量的无用规则而造成网络的阻塞。为了更好地提高系统的可靠性,可以以攻击类别,对网络影响的广泛度,攻击持续时间等因素为依据,采取更优良,更精细的联动判断机制。

参考文献

[1]冯庆煜.防火墙与入侵检测系统的联动[J].计算机应用,2005,25(12):2763-2764.

[2]Roesch M,Green C.Snort Users Manual[Z].http://www.snort.org2008-08-11.。

[3]Li Z,Das A,Zhou J.Theoretical basis for intrusion detection[C]//Proceedings of6th IEEE Information Assurance Workshop(IAW),June15-17,2005.West Point,NY,2005.

[4]李晓芳,姚远.入侵检测工具snort的研究与使用[J].计算机应用与软件,2006,23(3):124-125.

[5]薛严东,韩秀玲,戴尚飞.基于Snort的分布式协作入侵检测系统[J].计算机工程,2010,36(19):165-167.

[6]秦忠林,黄本雄.IPSec研究及实现[J].计算机应用,2006,21(4):28-30.

[7]崔伟,齐竞艳.基于IPSec的分布式防火墙安全体系框架[J].计算机工程,2007,30(16):47-50.

Windows平台 篇8

在Windows平台的流媒体系统中,由于Windows Media Player与Windows操作系统捆绑以及Windows操作系统的普及程度,依赖Windows Media Player作为媒体系统的客户端呈现给用户可以使得用户友好性得到增强,也可以节省开发新媒体播放器的成本,所以很多应用于Windows平台下的流媒体系统都是利用Windows Media Player作为媒体系统的终端。要使得以Windows Media Player作为客户端的ASF流媒体系统能够采用H.264编码视频格式,就必须要有支持ASF容器中H.264视频播放的插件。通过探索,作者寻找到一种利用FFMPEG,对其进行DMO[3]封装实现配合Windows Media Player支持H.264视频播放的插件的方法。

1 H.264简介

H.264是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式,它即保留了以往压缩技术的优点和精华又具有其他压缩技术无法比拟的许多优点。

(1) 低码流(Low Bit Rate):

和MPEG2和MPEG4 ASP等压缩技术相比,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG2的1/8,MPEG4的1/3;显然,H.264压缩技术的采用可以大大节省用户的下载时间和数据流量收费。

(2) 高质量的图像:

H.264能提供连续、流畅的高质量图像(DVD质量);

(3) 容错能力强:

H.264提供了解决在不稳定网络环境下容易发生的丢包等错误的必要工具;

(4) 网络适应性强:

H.264提供了网络适应层(Network Adaptation Layer), 使得H.264的文件能容易地在不同网络上传输(例如互联网,CDMA,GPRS,WCDMA,CDMA2000等);

H.264标准还在不断发展,SVC(scalable video coding)[4]和MVC(multi-view coding)[5]添加作为H.264的修正的标准化工作正在进行中,因此H.264的功能将更加丰富,适用更多应用场景。我们有理由相信,H.264标准将会受到业界的广泛应用,因此实现支持H.264播放的插件对Windows平台流媒体应用非常有意义。

2 DMO介绍及应用

在Windows 媒体应用中,主要包括DirectShow[3]和DMO。DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布,为多媒体流的捕捉和回放提供了强有力的支持。

DirectX媒体对象(DirectX Media Objects,简称DMOs),是微软提供的另一种流数据处理COM组件,与DirectShow filter相比,DMO有以下优点:

(1) DMO比filter实现的功能要少很多,这使得DMO“体积”很小;

(2) DMO使用起来比filter更有灵活性。DMO的使用不需要filter graph,应用程序可以直接与DMO交互。而DMO也可以通过一个DMO wrapper filter工作于 DirectShow环境。

(3) DMO总是同步处理数据,不像filter有独立的数据传送线程,需要考虑多线程编程问题;

(4) 与传统的编解码管理器ACM、VCM相比,用DMO开发的编解码器是基于COM的,更易于扩展。并且DMO支持多个输入和多个输出;

(5) DMO不需要像filter一样分配数据传送的内存,而有DMO的使用者负责;

(6) DMO是一个独立功能模块,不需要像filter一样连接成一条链路;

(7) DMO不需要像filter一样将数据“推”下去,数据的输入输出都是由DMO的使用者完成的;

所有这些优点,使得DMO成为微软对于Encoder和Decoder开发的重点推荐模式。DirectX 9.0 SDK中,微软更是把DMO从DirectShow中分离出来,而对于一些transform filter,微软也推荐用DMO的方式来替换。因此,本文选择用DMO来封装H.264视频解码插件。

3 FFMPEG

FFMPEG是一套完整的录制,转换和流化音频和视频的开放源代码的解决方案,其包括以下几部分组成:

(1) libavcodec,一个包含了所有FFmpeg音视频编解码器的库.为了保证最优性能和高可复用性,大多数编解码器从头开发的。

(2) libavformat,一个包含了所有的普通音视格式的解析器和产生器的库,该库里边包含解码H.264的codec。

(3) ffplay,用 SDL和FFmpeg库开发的一个简单的媒体播放器。

(4) ffserver,基于HTTP用于实时广播的多媒体服务器。

(5) ffmpeg,视频文件转换命令行工具,也支持经过实时电视卡抓取和编码成视频文件。

FFMPEG是基于linux平台上开发的,想要移植到VC平台上需要进行很大的改动,比较困难。幸好在Windows平台下可以利用MinGW 编译FFMPEG代码,生成avformat.dll, avcodec.dll , avutil.dll三个动态连接库,可供应用程序使用。FFMPEG的高性能设计,以及其包含的经过了优化的H.264解码算法,使得FFMPEG解码H.264视频的速度相当快;在H.264开源解码器评测中,FFMPEG的解码速度最快。因此利用FFMPEG实现播放插件,解码速度快,占用内存小。

4 代码实现

代码实现的主要任务是将FFMPEG封装在DMO对象中,由DMO对象与Windows Media Player协商媒体类型、对象连接以及传递媒体数据,而FFMPEG负责将输入到DMO中的未解码的H.264视频帧解码成可以显示的RGB格式的视频帧,然后交由DMO输出端传送予Windows Media Player进行显示。

在微软的DirectX SDK中,为开发DMO提供了一个IMediaObjectImpl模板类,使得开发DMO比较容易。 实现程序定制的DMO,只需派生此模板类,实现17个以Internal开头的函数。

4.1 FFMPEG库的使用

使用FFMPEG库,首先应该将avcodec.dll,avformat.dll,

avutil.dll加入到工程中,并且在文件头中需要包含avcodec.h头文件;

另外使用FFMPEG库的函数之前,需要对FFMPEG库进行初始化,因此本实现中是在DMO对象的构造函数中实现FFMPEG库的初始化。通常的操作是通过avcodec_init()以及avcodec_register_all()初始化并注册FFMPEG所有的编码解码器;然后通过CODEC_ID_H264指示码寻找到本DMO使用的H.264解码器,即:

codec = avcodec_find_decoder(CODEC_ID_H264).

然后做编解码器上下文初始化及申请空间保存解码图像,即:c= avcodec_alloc_context();

picture= avcodec_alloc_frame();

最后是根据得到的H.264 codec以及解码上下文结构去打开H.264解码器,使其能够工作,即:

avcodec_open(c, codec);

具体代码可以参照ffmpeg源代码中的output_example.c中的示例代码。

4.2 InternalCheckInputType函数

该函数的主要目的是检查DMO对象是否适合于此输入的媒体类型的解码,如果检查通过那么该DMO才可以用于此种类型视频的解码。本设计的DMO中实现的是H.264视频解码插件,因此DMO接收的输入媒体主类型是视频,而媒体subtype则是H.264格式;所以只有当媒体类型符合此限制时,函数返回TRUE,检查通过。

4.3 InternalCheckOutputType函数

该函数的目的是检查DMO对象是否能够产生此种媒体类型的视频输出,如果检查通过那么该DMO才可以用于产生此类视频输出。解码器的目的就是将压缩的格式解码,成为无压缩可以直接显示的格式;在这里,我们选择最普通的RGB24格式。

4.4 InternalProcessInput函数

该函数的作用是输入一个未解码的图像帧,需要做的工作就是把帧对象保存,以待应用程序在DMO输出端请求图像输出时,对此输入图像帧执行解码操作,属出解码图像。因为图像帧在图像中是通过C++的COM对象IMediaBuffer来保存的,因此我们只需要IMediaBuffer的接口函数GetBufferAndLength得到输入的图像存放的内存块指针和大小,然后增加COM对象的引用计数,最后设置相关的时间戳即可。

4.5 InternalProcessOutput函数

该函数的作用是将上次输入DMO的未解码的帧调用FFMPEG中的解码 函数进行解码,输入YUV格式的视频,然而我们最终要求输出的视频格式是RGB格式的,因此还必须将YUV格式的视频转换成RGB格式的视频。幸好的是FFMPEG中有高度优化的函数YUV2RGB供我们使用。使用本DMO的应用程序会向本函数请求输出解码图像,因此在这里我们调用FFMPEG中的解码函数对输入图像进行解码,把解码重建后的图像输出,交由应用程序进行播放。具体的代码如下:

len = avcodec_decode_video(c, picture, &got_picture,outbuf_ptr, size);//调用FFMPEG媒体库的解码函数进行解码

YUV2RGB(picture->data[0],picture->data[1],picture->data[2],pOutData,pic_width,pic_height); //调用FFMPEG媒体库的格式转换函数将YUV格式视频转换成RGB格式

4.6 DMO注册函数

Windows Media Player播放视音频时,会根据视音频的格式到系统注册表中寻找到相应的解码器,如果找不到合适的解码器,Windows Media Player则播放不正常甚至无法播放。所以DMO程序需要在系统中进行注册,而DMO本身是一个COM程序,COM程序的注册在DllRegisterServer中进行。因此在DllRegisterServer函数中通过接口函数DMORegister在操作系统注册表中注册本DMO的信息。设置DMO的信息为只有一个输入端,输入的是H.264格式的视频;设置DMO的信息为只有一个输出端,输出的是RGB格式的视频。如此设置以后,当Windows Media Player播放ASF中的H.264视频时可以顺利地寻找到本插件,成功播放ASF容器中H.264格式的视频。

//定义输入媒体格式

DMO_PARTIAL_MEDIATYPE mt_input;

mt_input.type=MEDIATYPE_Video;

mt_input.subtype=MEDIASUBTYPE_H264;

//定义输出媒体格式

DMO_PARTIAL_MEDIATYPE mt_output; mt_output.type=MEDIATYPE_Video;

mt_output.subtype=MEDIASUBTYPE_RGB24;

DMORegister(L“DMO Sample”, //DMO对象名

CLSID_Sample, //DMO对象的序列ID DMOCATEGORY_VIDEO_DECODER, //视频解码器目录

0,

1, //输入媒体类型个数

&mt_input, //输入媒体类型格式

1, //输出媒体类型个数

&mt_output); //输出媒体类型格式

到此,利用FFMPEG封装在DMO对象中构造一个能支持Windows Media Player播放ASF容器中的H.264视频播放插件所需要做的工作已经完成。

5 结束语

鉴于目前缺乏配合Windows Media Player播放ASF媒体容器格式的H.264视频播放的免费插件,本文介绍了一种简单实现此插件的方法,依赖于DMO高效性以及FFMPEG编解码库中性能优化的H.264解码算法,使得插件解码速度快,内存损耗小。利用此插件,Windows平台上的H.264流媒体系统可以利用Windows Media Player作为媒体系统的客户端,节省开发新播放器的成本,大大增强了系统的用户友好性。

参考文献

[1]Draft ITU-T recommendation and final draft international standard of joint video specification(ITU-T Rec.H.264/ISO/IEC14496-10AVC)in Joint Video Team(JVT)of ISO/IEC MPEG and ITU-TVCEG,JVTG050,2003.

[2]Microsoft Corporation.Adranced Sytems Format(ASF)Specifrcation,Revision01.20.03,December2004[5].

[3]陆其明.Drrectshow开发指南.北京:清华大学出版社,2003.

[4]T.Wiegand,G.J.Skuivan,J.Reichel,H.Schwarz ancl M.wien,eds.Jornt Draft7,Joint Video Team.Doc.JVT-T201,Klagenfurt,Austria,July2006.

Windows平台 篇9

Windows操作系统具有强大的图形界面功能和丰富的函数库支持能力,在工业自动化领域得到了广泛的应用,一些自动化测试设备以及数控机床的软件都基于Windows操作系统进行开发。不像一些纯软件产品,设备或机床是一个软硬件结合的系统,软件的发布工作得不到应有的重视。安装软件的制作过程其实就是把应用软件运行时需要的文件进行归类整理、压缩打包,安装时通过用户选择等一定的交互手段有选择地传送到指定的计算机系统中,并对系统自动进行相应配置以满足程序运行的需要[1]。花费较小的代价制作出专业的安装介质,不仅符合广大软件开发人员的需求,而且对自动化设备的商业推广也很有意义。

1 软件发布工具的选择

目前许多应用程序开发系统都提供专用的安装程序制作工具,如Visual Studio 6.0中就附带一个制作安装程序软件InstallShield for Microsoft Visual C++6。使用此类工具软件的优点是可以较容易地制作出本系统所开发软件的安装程序,操作较简单,但它们制作出的安装程序功能单一,不如通用安装制作工具软件制作的安装程序专业[1,2]。一个好的安装软件应该做到:界面友好,操作简单,容错性好,信息提示醒目,能自动进行相关设置(语言选择、注册表修改、数据库设置、技术支持网络访问等),并具有完全卸载功能。

常用的通用Windows安装制作工具有许多,如InstallShield、WiseInstaller、Ghost Installer、SetupFactory等,它们各有优缺点,但简单易用的往往功能不强,功能强大的又需要编写脚本程序[3]。与上述安装制作工具软件相比,EasySetup虽然操作简单,但功能并不比知名的InstallShield等逊色。使用EasySetup不仅可以制作出一般应用程序的安装文件,还可以将Word、PowerPoint、甚至网页包装起来成为一个具备安装功能的应用程序。EasySetup不需要繁琐的安装文件撰写过程,而以可视化的方式来处理所有的安装程序制作事务,只要将所有的元件都加入即可,可以在短短的数分钟之内就制作出具有专业水准的安装程序。此外,EasySetup还提供了反安装程序的设定、多国语言设定、安装过程中使用到的文字说明输入、调用外部程序文件等功能。特别是调用外部程序文件的功能,符合模块化设计思想,使EasySetup的功能得到了很大扩展。程序员可以用自己熟悉的知识完成诸如注册表修改、序列号校验、安装密码设置、ODBC(开放的数据库互连)数据源的配置等的代码实现,然后在EasySetup中设置合适的时间(安装前、安装后、卸载前等)调用相关程序文件即可。

2 编程配置ODBC数据源

由于ODBC能高效地支持多种数据库格式,便于高效地开发应用程序,很多应用程序中都用到了ADO(活动数据对象)以及ODBC。由于应用程序不能直接存取数据库,必须通过管理器和数据库交换信息,所以安装或运行ODBC数据库应用程序时,必须在Windows控制面板中配置ODBC数据源,采用的方法,一种是直接在控制面板中手工配置,另一种是通过修改注册表进行配置[4]。

下面介绍通过Visual C++6.0编程配置ODBC数据源的方法,便于在EasySetup中自动执行。数据库采用微软的Access 2003,数据库文件为testdb.mdb,ODBC数据源管理器中用户数据源名称为equipdb。

在VC++6中新建一个控制台程序Project,名称为SetOdbcUserDb,选择An Application that supports MFC选项,其余选项按默认完成。在SetOdbcUserDb.cpp文件顶部添加#include “odbcinst.h”,点“Project”菜单选择“Add To Project”下的“Files”,从Visual C++6的安装目录VC98lib中选择odbccp32.lib,添加进Project。在SetOdbcUserDb.cpp中的_tmain函数中添加如下代码:

char * dbpathname, * szDriver, * szDsnpara, *pdest;

//定义指针变量

char temppath[100], HomePath[100];

//定义数组变量

int ch =′′, result = 0; //定义整形变量

memset(temppath, 0, 100); memset(HomePath, 0, 100); //初始化变量

GetCurrentDirectory(100, temppath); //获取可执行程序所在的路径

memcpy(HomePath, temppath, strlen(temppath));

strcat(HomePath, "”);dbpathname = new char[120]; szDriver = new char[100]; szDsnpara= new char[256]; //指针变量分配内存

memset(dbpathname, 0, 120); memset(szDriver, 0, 100); memset(szDsnpara, 0, 256); //初始化变量

strcpy(szDriver, "Microsoft Access Driver (*.mdb)�");

//指定Access驱动程序

sprintf(dbpathname, "%stestdb.mdb", HomePath);

sprintf(szDsnpara,"DSN=%s! DESCRIPTION=testdb db source! DBQ=%s! FIL=MicrosoftAccess! DEFAULTDIR=%s!! ","equipdb",dbpathname,HomePath);

if(SQLConfigDataSource(NULL, ODBC_ADD_DSN, (LPCSTR)szDriver, (LPCSTR)szDsnpara) =FALSE)

{

AfxMessageBox("ODBC数据源配置失败!");

}

delete dbpathname; delete szDriver; delete szDsnpara; //指针变量释放内存

编译通过后生成增加ODBC数据源的可执行程序SetOdbcUserDb.exe,编写类似的应用程序,主要是修改函数SQLConfigDataSource()的第2个参数为ODBC_REMOVE_DSN,可生成删除ODBC数据源的可执行程序DeleteOdbcUserDb.exe。

3 安装环境检查

自动化设备软件与一些通用的软件还是有区别的,特别是一些硬件板卡对计算机的性能有一定要求。此类软件的安装程序最好能在安装前就对安装环境进行合格性检查,以免影响整个自动化设备的性能,甚至出现安装后不能正常运行的问题。

例如计算机内存检查,可编写一个检查内存的小程序CheckMemory.exe,在安装程序开始运行前调用CheckMemory.exe即可。CheckMemory.exe的源代码中主要包含以下代码:

long aphymem=0, fphymem=0; //定义存放全部物理内存和剩余物理内存的变量(单位bytes)

long avirmem=0, fvirmem=0; //定义存放全部虚拟内存和剩余虚拟内存的变量(单位bytes)

MEMORYSTATUS memstat; //定义存放内存信息的变量

GlobalMemoryStatus (&memstat); //获取内存信息

aphymem= memstat.dwTotalPhys; //全部物理内存

fphymem= memstat.dwAvailPhys; //剩余物理内存

avirmem= dwTotalVirtual; //全部虚拟内存

fvirmem= dwAvailVirtual; //剩余虚拟内存

在取得了目标计算机当前的剩余内存后,可根据要求判断能否安装自动化设备软件。

4 EasySetup应用实例

EasySetup软件是可视化的安装介质制作工具。下面介绍如何利用该工具制作Equip Software应用软件的安装介质。EasySetup的运行界面如图1所示。该软件具有所见即所得的特点,从Screen1分页到Screen5分页显示安装应用软件时的界面,Uninstall分页显示卸载应用软件时的界面,制作安装文件时只需修改分页中的相关内容(应用程序名称、公司主页、软件安装注意事项、软件许可声明、缺省安装路径、安装过程提示信息等)即可。

如图2所示的Setup分页中可进行程序组、安装介质文件、主文件夹等的命名,还可以进行是否创建文件夹、是否包含卸载快捷方式、是否自动安装、是否显示立刻运行选择框、是否显示同意声明、是否允许选择安装路径、是否自动安装字体文件、是否自动打开开始文件夹、是否需要安装密码等设置。

如图3所示的Files分页中主要进行拷贝文件的设置,把所有需要发布的程序文件、配置文件、动态库文件、资源文件、数据库文件等添加进来即可。

如图4所示的Advanced分页中可设置软件安装开始前、安装完成后、卸载开始前运行的程序等,实例中设置了软件安装开始前调用CheckMemory.exe进行计算机内存检查,软件安装完成后运行SetOdbcUserDb.exe添加ODBC数据源,卸载软件前运行DeleteOdbcUserDb.exe删除ODBC数据源。

所有的操作和设置完成后,从菜单条中选择“File”菜单下的“Make Setup Program”菜单项即可完成安装介质Setup.exe的生成,在装有Windows操作系统、硬件资源满足要求的计算机上运行文件Setup.exe即可完成自动化设备软件的发布工作。

5 结束语

EasySetup软件的一大优点就是提供可视化界面,操作方便,还可以充分利用以往的安装制作成果,软件升级包制作方便,尤其有利于自动化设备软件的发布。软件的制作发布其实也是软件工程的一部分,总是以需求为牵引,不存在哪个工具软件更好的问题,只要以更少的投入更好地满足安装软件的制作要求即可。

参考文献

[1]游燕珍,赵国锋,徐川.应用InstallShield制作安装程序[J].电子工程师,2007,33(10):52-54,57.

[2]燕永吉,曹丽华,孙宇,等.用InstallShield for Microsoft Vis-ual C++6创建主业水准的安装/卸载程序[J].吉林师范大学学报,2004,25(2):62-63,67.

[3]刘兴权,时洪飞,刘雪松,等.软件安装程序的研发[J].微机发展,2005,15(12):90-92.

Windows平台 篇10

关键词:Moodle,APMSERV,移动,批处理

Moodle是由澳大利亚教师Martin Dougiamas开发的一个免费的、基于Web的课程管理系统, 也是一个教学平台, 可用于网络教学及辅助日常教学, 由于其易学易用, 功能强大, 因此得到了越来越广泛的运用, 截止2011年6月, Moodle网站已达53883个, 分布在212个国家, 在国内, 目前已有北京大学教育学院、广西师范大学教育科学学院、安康学院、鞍山一中等多所高校及中小学建立了Moodle教学网站。

不过, Moodle教学平台需要特定的Web服务器支持, 而国内, 虽然绝大多数的各类学校拥有机房, 但是缺少专业的Web服务器。若教师希望在教学活动中引入Moodle系统, 那么, 教师可以选择建立一种可随身携带的、并能方便使用的可移动Moodle教学平台, 来学习及运用Moodle。

1 可移动Moodle平台的建立

1.1 Web服务器的选择及安装

Moodle运行的Web服务器环境为Apache+Php+Mysql, 为了便于移动使用, 应选择免安装绿色版的APM服务器套装。APMSERV 5.2.6是一款由张宴开发, 拥有图形操作界面, 可以方便快速搭建Apache 2.2.9+PHP 5.2.6+MySQL 5.1.28&4.0.26网站服务器平台的绿色软件, 使用简单。首先从官方网站http://blog.s135.com下载APMSERV.rar, 然后将其解压到可移动硬盘的根目录, 可得到一个名为APMServ5.2.6的文件夹, 打开此文件夹, 双击APMServ.exe文件, 启动程序, 在程序窗口中点击按钮“启动APM-serv”, 即可启动Web服务。

1.2 Moodle的安装

Moodle有多个版本, 不同的版本对服务器环境有不同的要求, 根据APMSERV的配置, 我们可选择目前被使用最多的版本1.9.12+。从官方网站http://download.Moodle.org/下载Moodle的压缩包文件, 解压缩到APMServ 5.2.6wwwhtdocs目录下。然后打开浏览器, 在地址栏中输入http://本机IP地址/Moodle/, 回车, 即可按照页面提示, 逐步进行安装。需要注意, 在确认安装Moodle位置的页面中, 数据目录X:APMServ5.2.6www/Moodledata, 宜改为X:APMServ5.2.6wwwMoodledata (X:为移动磁盘盘符) ;在数据库的配置页面中, 用户名为root, 密码为空。

2 平台的配置及优化

2.1 APMSERV的配置及优化

2.1.1 Apache的设置

在APMServ主程序界面中, 点击主菜单“Apache设置”→“修改配置文件”, 自动打开httpd.conf文件, 将“ThreadsPerChild 500”及“MaxRequestsPerChild 10000”分别修改为“ThreadsPerChild 50”和“MaxRequestsPerChild 500”, 然后保存并关闭此文件。

2.1.2 Mysql的设置

在Mysql设置菜单下, 选择“缓存性能优化”, 根据本机内存大小选择合适的优化选项, 并保存设置后退出。

2.2 Moodle的配置及优化

在Moodle网站首页的网站管理版块中, 点击服务器->性能, 显示“性能”设置页面, 在此页面中, “额外的PHP内存限制”可根据本机内存, 设置一个较大的值, 如256MB或512MB;“缓存类型”选择“eAccelerator”;记录缓存选择“是”;记录缓存TTL设置为10秒;缓存最大值设为50秒, 保存。

3 平台的快捷运用

3.1 快捷启动系统

在移动使用的情况下, 移动硬盘的盘符及主机的IP地址都可能发生变化, 此时需要对Moodle配置文件config.php中的网站访问地址及文件位置进行修改。为了便于普通教师使用, 可编辑如下批处理文件, 以自动检测并显示当前计算机的IP地址、自动获取当前路径、自动使用当前IP地址及路径去修改配置文件、及启动APMServ程序。启动记事本程序, 输入以下内容:

输入完成后, 点击“文件”→“保存”命令, 在“另存为”对话框中, “保存在”应选择移动硬盘的APMServ5.2.6文件夹;“文件类型”选择“所有文件”;“文件名”按“文件主名.bat”的格式输入, 文件主名由用户自己决定。此批处理文件建立后, 以后需启动Moodle教学平台, 只需双击此批处理文件, 然后在APMSERV程序界面中“启动APMSERV”即可。

3.2 快速打开网站

在APMServ5.2.6wwwhtdocs文件夹中, 利用记事本建立一个名为index.html的文件, 方法同上, 文件内容为:

以后, 就不用在浏览器地址中输入http://本机IP地址/Moodle/, 而可是直接输入IP地址, 就可以访问Moodle教学网站了。

4 平台使用注意事项

1) 安装一门完整课程后, APMServ5.2.6文件夹里可包含上千个子文件夹, 上万个文件, 大小可达几百兆, 甚至1GB。由于文件数量多, 因此本系统宜安装于移动硬盘上, 不宜装在U盘中。

2) 电脑主机的硬件配置宜高。特别是CPU的性能要高, 内存容量要大。

3) 在Moodle网页 (含试题) 中, 若插入图片或为文件设置超链接时, 则图片网址及文件超链接地址里都包含有IP地址, 一旦改变使用环境后, IP地址发生变化, 则图片及文件的链接地址将会失效, 导致图片不能显示或文件无法找到。解决办法, 在URL地址中采用相对地址, 即将地址中的“http://IP地址/Moodle”改为“..”。如某文件的地址为“http://192.168.0.101/Moodle/file.php/3/jpeg/ram jpg”, 则将其改为“../file.php/3/jpeg/ram.jpg”。

4) 注意防毒。公共机房中, 病毒一般较多, 本系统在感染病毒后, 可能出现无法启动的现象。因此, 在使用中, 主机宜安装查杀病毒防火墙软件。

5) 在APMServ主程序窗口中, 若启动APMServ失败, 可尝试取消SSL的选择。

6) 使用完后, 宜先停止Apmserv服务, 然后退出APMServ程序。

7) APMServ5.2.6文件夹可以改名, 也可复制或移动到其他文件夹中, 系统都可运行。需要注意, 文件夹名不应包含中文字符。

8) 根据笔者测试及实践, 此系统可满足一个班级上课需要。若有更高要求, 则可在移动硬盘里采用CENTOS+LNMP+Moodle的方式搭建平台, 这一种平台具有更好的稳定性, 只是安装及配置较为复杂。

参考文献

[1]Moodle官网.http://Moodle.org.

[2]张宴博客.http://blog.s135.com/apmserv_v526/.

上一篇:山区教学下一篇:新课程的引擎