基于信号处理的在线云评测+社区系统( 1)

2017年5月-6月,本小组做山东大学软件工程专业项目实训。我们做的项目是“基于信号处理的在线云评测+社区系统”,我和另一位组员zhan010g负责数据库后台方面。

首先我根据项目报告做了E-R图。


实训项目背景(明确的应用领域和实际背景)

业务背景:

 

OJ(Online Judge)是一个在线的程序评测系统,学生通过该系统可以充分锻炼自身的编程水平。以往的评测系统往往存在资源分配不均等多种问题,我们团队希望在过去的基础上,在服务器底层进行优化,通过对服务器处理资源的合理使用,以及使用轮询队列对大量并发请求的处理,再通过系统信号同步进行精确的判断,创建一个更为优质的在线云评测系统。

技术背景:

技术上,使用DjangoBootstrapAJAX框架。使用PythonHTMLJavaScript语言进行系统的编写,形成一个B/S架构的在线程序评测系统。

·  二、实训目标

通过小组团队合作完成本次“基于信号处理的在线云评测系统“实训,熟练掌握PythonHTMLJavaScript语言,了解并会使用当前流行的架构搭建Web应用,最终实现一个B/S架构的在线程序评测系统。通过不断的迭代优化,创建一个效率表现优异的在线云评测平台,能够处理大规模的程序处理请求并准确返回结果,并具备一定的安全性。

·  三、系统功能

系统主要划分为以下四个功能,具体业务需求描述如下:

1.评判内核

处理客户端传送来的程序运行请求,基于服务器使用的Linux系统,通过信号同步来获取每一个线程的运行结果,调用Linux内核的API来操作,监视每一个线程直到其运行结束,对于返回状态进行逻辑判断,获得该线程的真实终止信号。对于用户提交的程序返回合适的结果,并对程序正确性进行判断。

2.保证系统安全性

安全性是OJ最大的问题,因为需要用户在我们的系统上编译程序并运行,这时要防范恶意代码对系统造成影响。我们将会对用户提交的代码进行安全性检测,要用低权限运行程序、有可能的话使用沙箱限制更多的权限;保证网站安全,防sql注入等;防范编译器修改:去掉不安全的.hobj;进行源代码分析,定义一些危险关键字,实现关键词过滤。

3.建立队列保证系统在大流量下正常使用

 

为应对未来系统投入使用之后,用户量增大,或者一桶作为做大型比赛的载体,需要在服务器要做队列,并实现多服务器评判。

4.前端建设

建立一个美观简洁的前端界面,保证系统有一定美感的同时,清晰的向用户提供我们的题目列表,以及提供给用户直观方便的做题界面。

 

·  四、技术方案

该项目可以分为两个部分来实现:


第一部分是针对服务器设计的内核程序,也是整个项目的核心,该程序负责处理客户端传送来的程序运行请求,初步设计是使用轮询队列存储所有的待处理请求,内核程序逐一从中取出,平均分配给服务器的每一个运算核心,运行结束后放回返回队列并继续下一个处理。

基于服务器使用的Linux系统,我们可以通过信号同步来获取每一个线程的运行结果,具体的实现就是调用Linux内核的API来操作,监视每一个线程直到其运行结束,对于返回状态进行逻辑判断,获得该线程的真实终止信号


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值