系统设计:在线评测系统 UniJudge

本文介绍了一个名为UniJudge的在线评测系统,强调其核心是问题库和测试数据。系统采用前后端解耦设计,允许用户提交代码并由Judger进行评测。Judger可以是机器或人工,具有高度可定制性和安全性。此外,文章讨论了系统建模,包括问题集、用户集、裁判集、提交集和题单集,以及权限控制系统的设计。
摘要由CSDN通过智能技术生成

在线评测系统(Online Judge System)想必很多人都有所耳闻,比如上程序设计课程的时候需要在网上做题交代码……更不必说那些做高难度试题的信息竞赛选手了。

通常来说,一个在线评测系统的核心是其积累的题库及测试数据。注册用户在系统里查看问题并提交答案交由评测系统评测,最后反馈给用户,这是一个基本的业务逻辑。

我并不想做一个寻常的Online Judge,而是一个概化可复用的在线评测系统,用函数来描述其内涵即为:

UniJudge:SubmissionSentence

我给这个系统取名为UniJudge,We Judge All !

架构

核心业务逻辑图:

Created with Raphaël 2.1.0 User User Interface
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于 jQuery 的 Web 源代码在线评测系统(Design and Implementation of JudgeOnline System Based on jQuery)是基于软件工程的黑盒测试理论,是以 Java、 Servletj、Query 和数据库技术为基础搭建起来的一套可以对多种语言的源代码进行自 动编译、测试、分析及评判的系统。 该系统最初是为了支持 ACM/ICPC(ACM International Collegiate Programming Contest,国际大学生程序设计竞赛)而开发的系统。在实际应用中取得了非常好的 效果,近年来有很多高校教师将该系统引入到日常教学当中,取得了巨大的成功。 本论文的意义不只在于讨论如何实现一个可用的在线评测系统,并以此为基础思 考如何提升源代码在线评价系统的性能,更是讨论了如何完善系统功能的新方向。其 成果就是实现了一个已经在使用的在线评测系统,并给出了完成这个系统所需要的所 有关键技术和设计步骤。 本论文的创造性不仅在于讨论了在 Linux 系统上实现评判核心单元的关键技术和 具体方法,还在于使用了较大篇幅讨论了在线评测系统的层次结构,而这个结构常常 制约着现今很多在线评测系统的发展。ACM/ICPC 在国内发展得如火如荼,各种在线 比赛也层出不穷。就在这些比赛中间常常出现系统崩溃、反应缓慢等问题。这是因为 竞赛的时候并发请求集中爆发,给系统造成了巨大的压力,如果系统设计有缺陷则会 出现各种问题。而本文不但注重技术的讨论,更是重点论述评测系统的体系结构。 在运行平台和开发工具方面,许多在线评测系统都使用 Windows 操作系统做为 运行平台,使用 Asp.net 做为开发环境,使用微软的 SQLServer 数据库做为数据库服 务器。这样可能会使开发效率有一点提高,但是如果从长期考量这种搭配是不合适的。 首先,Windows 操作系统、SQLServer 数据库系统都需要昂贵的购买费用。其次, Windows 操作系统病毒横行,游戏众多,这些都不利于服务器的管理和安全。再次, 从并发性能、安全性、稳定性及操作系统体系结构成熟度而言,Windows 操作系统都 不是在线评测系统的首选。这一点从世界众多 IT 巨头在部署关键业务时操作系统平 台的选择就可见一斑。 在开发平台方面,Asp.net 平台的成熟度、安全性也需要进一步完善。而 Java 阵 营的 Java EE 企业平台经过多年的发展已经非常安全、稳定,同时 Java EE 拥有众 多结构合理、效率出众的框架可以使用。反观.net 平台的 MVC 框架也是刚刚出现, 这从一个侧面显示出了.net平台的落后。到目前为止.,net平台基本只部署于Windows 平台,号称 Linux 上.net 平台的 Mono 现在还不能完全与微软的.net 平台兼容。C# et 还实质性地掌握在微软这样一个商业公司手中,其前途是不确定的。 数据库方面使用 SQLServer 就更加不可行。体积庞大、费用高昂都是该数据库 的弱点。并且该数据库系统是只能运行在 Windows 操作系统上的商业数据库,源代 码和文档结构不公开。其日志文件结构保密会导致数据恢复困难(有实际教训的)。 在这方面 MySQL 数据库都比 SQLServer 数据库更好。而使用 MySQL 还是 PostgreSQL 则是仁者见仁智者见智的事情,主要还是看对数据库结构设计、数据 库操作的优化上。 AJAX 技术的使用在众多的源代码在线评测系统中是不多见的。主要是很多在线 评测系统在创建之初还没有 AJAX 技术或者还没有如 jQuery 般成熟的 AJAX 框架。 所以几乎所有的在线评测系统都将精力放在后台评测核心的开发和评测指标的扩展 上面。近年来随着 jQuery 等 AJAX 框架的成熟,越来越多的网站采用 AJAX 技术作 表现层的开发。所以现在使用AJAX技术开发源代码在线评测系统的时机已经成熟了。 将 AJAX 技术用于源代码在线评测系统除了界面的漂亮,同时还大量减少了客户端和 服务器端传输的数据量,节约了带宽,提高了相应速度。这样也就提高了在线评测系 统的并发能力。而并发能力的强弱对于在线测试系统,或者任何在线考试系统、甚至 任何网站来说都是至关重要的。从一个狭隘的角度说,可以用更低廉的硬件平台,支 持更多的用户。这不是一件非常有意义的事情吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值