发布于 1970-01-01 08:00
  • 3 个回答
    • online-judge的后端其实是分为两块的,一快是web,还有一块是judge。

      web部分就是负责输入输出,界面显示,和平常做网站没什么区别,不管是php还是python都很快。

      judge部分至少需要以下几个功能:
      1.沙盒,执行代码的时候要保证系统的安全,必须把代码限制在沙盒里。
      2.监控调用,由于在线执行代码很有可能会调用系统的资源(包括对文件进行请求,对网络/系统命令的请求),这些应该以安全优先,禁止某些调用的执行。
      3.统计,大多数judge是带内存统计、执行时间统计的,从而算出排名或者分数,所以这个功能也很重要。

      所以judge部分这些特点导致它需要一个能够精密控制系统的语言,这也是为什么大多数judge都是用C++/C写的,然后用socket/IPC来和web部分进行相互通信。

      此时php/python才是前端,它把代码执行部分请求到后端的judge,然后返回对应的结果。

      如果想用php/python来做judge,虽然理论上是可行的,但实际上貌似没人做,你需要实现太多东西,没有上面那个方案靠谱。

      记住:没有严格的执行沙盒的语言是做不成judge的!有沙盒但是简陋/性能差的也是难以承担重任的(那些虚拟机们)

      2022-12-01 22:14 回答
    • 之前大学acm社团使用的是开源的系统,使用java开发的。

      2022-12-01 22:14 回答
    • 写这个系统的话,我觉得就是一个一个跑程序检测结果就行了啊,不同的语言调用不同的脚本运行环境就好了。最后比对结果,然后打分。easy!

      2022-12-01 22:14 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有