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

WBOY
Freigeben: 2016-06-06 20:38:14
Original
1308 Leute haben es durchsucht

服务器后端用PHP还是Python?两者有什么优劣呢?

回复内容:

服务器后端用PHP还是Python?两者有什么优劣呢?

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的!有沙盒但是简陋/性能差的也是难以承担重任的(那些虚拟机们)

之前大学acm社团使用的是开源的系统,使用java开发的。

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!