为了账号安全,请及时绑定邮箱和手机立即绑定

要开发一个Online Judge,后端选择什么样的技术比较好?

要开发一个Online Judge,后端选择什么样的技术比较好?

临摹微笑 2019-03-30 11:35:32
服务器后端用PHP还是Python?两者有什么优劣呢?
查看完整描述

2 回答

?
狐的传说

TA贡献1804条经验 获得超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的!有沙盒但是简陋/性能差的也是难以承担重任的(那些虚拟机们)
                            
查看完整回答
反对 回复 2019-03-30
?
冉冉说

TA贡献1877条经验 获得超1个赞

之前大学acm社团使用的是开源的系统,使用java开发的。
                            
查看完整回答
反对 回复 2019-03-30
  • 2 回答
  • 0 关注
  • 870 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信