随着将JOJ的footer版本号改为Version3.01,终于可以长出一口气。持续一个多月的JOJ网站升级已经基本完成。综合来看,作为一个Online Judge系统,基本目的是为了测试用户提交程序的正确性。为此,在设计和实现过程中需要满足以下目标:
• 准确。能够正确评测出用户程序的结果。特别是以下几个小的方面:
1. 给出正确的CE信息
2. PE和WA的区分
3. 如何准确测量用户程序的执行时间,得出TLE
4. 如何限制用户程序的内存占用。
• 稳定。一方面体现在网站页面的设计上,要求访问页面快速;另外体现在判题的速度上。
1. 同样程序多次重复提交结论相同,参数(运行时间和内存)基本一致
2. 对于大量并发访问具有很强的伸缩性。
• 安全。由于Online Judge系统的特殊性,在通常网站安全设置的基础上,由于可以执行用户程序,还要在安全上作更多的考虑。如:
1. 防止用户将题目测试数据外传。如通过网络将输入数据传走。
2. 防止用户通过程序获取服务器内部信息。如passwd文件。
3. 防止由于用户有意破坏系统。如用户程序执行system(”reboot”),或者最经典的while(1) fork(); 代码。
4. 防止无意的系统破坏。如由于缓冲区溢出造成的错误。
经过这段时间的工作,可以自豪地说 ,JOJ目前系统基本达到了以上的设计目标。Judge系统使用Linux的C语言编写;网站使用php完成。所使用的关键技术有:
• 系统环境使用 CentOS4.0(与Redhat AS4.0一致,但是Free的);Apache版本2.0;Mysql 4.1;php4.3.9;gcc3.4.6。上述平台的版本都不是最新的,但是稳定的。这也是AS的策略。
• 系统架构采用分离可缩放结构。前端服务器负责WEB访问,后端Judge服务器负责测试程序。双方通过数据库耦合;并且支持多Judge服务器并行判题。Judge服务器与Internet没有连接,彻底保证测试数据不被外泄。
• WEB服务器的数据库设计和SQL使用经过充分优化和测试,保证没有长时间的查询。为提高效率,部分统计信息直接存在在专门表中,采用动态刷新和定时全面同步的方式保证一致性。
• WEB页面设计优化,部分页面采用php缓存技术,并和Ajax相结合,达到提高效率并能够显示动态信息的目的。
• Judge服务器采用串行方式,每次只测试一个程序,保证测试结果的一致性。(效率问题可以通过增加Judge服务器解决)
• Judge过程中,被测试的程序运行在最低权限,不能访问测试目录以外的其他目录;不能打开其他文件(包括socket);不能执行危险的系统调用。
• 采用资源限制的方式,严格限制被测试程序的执行时间和内存。不管是静态还是动态申请的内存,一旦超界就无法申请成功。(由于程序一般不检查内存申请是否成功,所以不一定会得出MLE错误,也可能是RE)
• 严格跟踪用户的每一次系统调用,确保得到正确的状态和避免危险调用。(即使用户使用缓冲区溢出方式也无法执行不允许的系统调用)
分享到:
相关推荐
浙江大学acm,吉林大学acm模板浙江大学acm,吉林大学acm模板浙江大学acm,吉林大学acm模板浙江大学acm,吉林大学acm模板浙江大学acm,吉林大学acm模板浙江大学acm,吉林大学acm模板浙江大学acm,吉林大学acm模板浙江...
ACM在线评判系统是ACM/ICPC国际大学生程序设计竞赛的评判事务处理平台,是一个基于B/S结构的多用户在线系统。该系统的主要功能是允许用户在线提交自己的解题代码,系统自动编译运行给出裁判结果,并根据用户解题数和...
吉林大学ACM模板,ACM模板
吉林大学ACM代码库 吉林大学ACM代码库是一个非常有价值的资源,收录了许多经典的算法和数据结构的实现代码。从代码库的目录中可以看出,这个库涵盖了图论、动态规划、搜索算法等多个领域。 第一部分:图论 图论是...
综上所述,这份吉林大学ACM题集不仅为学生提供了一个全面而有挑战性的训练资源,而且还通过吉林大学在线裁判系统提供了便捷的提交和评测机制。对于准备参加ACM竞赛的学生来说,这份题集是非常有价值的参考资料。
目录 目录 .............................................. 1 Graph 图论 ........................................ 3 | DAG的深度优先搜索标记 ................................................
北京大学ACM在线测评系统(包含class文件和java文件),供建站参考学习使用。
ACM在线评判系统是一个基于B/S架构的平台,主要用于ACM/ICPC(国际大学生程序设计竞赛)的在线自动评判。该系统利用Linux操作系统进行开发,旨在为程序设计竞赛提供高效、安全的评判与管理环境,同时也为编程爱好者...
【吉林大学ACM模板】是面向参加ACM(国际大学生程序设计竞赛)的选手们提供的一套经典模板,其中包含了丰富的算法和问题解决策略。这个模板主要覆盖了以下几个核心领域: 1. **图论**:在ACM竞赛中,图论问题常常...
这个教程教你在自己的电脑上安装评测系统。可以观察OnlineJudge是怎么工作的。
北大ACM在线评测系统,适合搭建自己的评测系统,也可以在此基础上进行修改 ACM在线评测系统的网名为acm.zjut.edu.cn,它是集程序设计竞赛、竞赛训练、课程实验、平时练习于一身的网上实时提交系统,非常好用,需要的...
【VC实现的ACM评判系统模型】是一种基于Visual C++(VC)开发的程序,用于自动评判ACM(国际大学生程序设计竞赛)参赛队伍提交的C语言代码。这个系统是计算机科学教育领域的一个实用工具,它能快速评估参赛者的代码...
2013年大学毕业设计 - ACM在线评测系统,可以支持C、C++和Java,当时用到的技术是SSH(Struts2 + Spring + Hibernate).zip2013年大学毕业设计 - ACM在线评测系统,可以支持C、C++和Java,当时用到的技术是SSH...
【标题】:“杭州电子科技大学ACM评判系统离线题库”是针对计算机程序设计竞赛的一份资源,主要供参赛者进行训练和学习使用。这个离线题库包含了从1000题到2223题的大量题目,涵盖了算法、数据结构、数学逻辑等多个...
- **简介**: 浙江大学ACM在线评测系统是浙江大学计算机学院为培养学生的编程能力和逻辑思维能力而设立的一个在线评测平台。该系统收录了大量的算法题目,并且定期更新,涵盖各种难度级别,非常适合初学者入门以及...
数论在算法竞赛中扮演着关键角色,吉林大学ACM代码库中收录了丰富的数论知识点,如: - **欧拉函数**:递推与单独求解两种方式计算φ(i)与φ(x)。 - **最大公约数GCD**:包括常规算法、快速算法与扩展算法。 - **模...
【acm在线测评系统源码】是一个专门为ACM(国际大学生程序设计竞赛)设计的在线评测平台。这个系统的核心目标是提供一个环境,使得参赛者能够提交他们的代码,并且系统会自动进行编译、运行和测试,从而评估代码的...
标题中的“ACM算法模板(吉林大学).pdf”指的是吉林大学为ACM国际大学生程序设计竞赛(ICPC)准备的一份算法参考资料。这份文档通常会包含各种基础和高级算法的详细解析,旨在帮助参赛学生提升算法理解与实现能力。...