HelloJudge2开发笔记

总得写点东西吧。

实际上这篇是为了防止半年后我再看自己代码看不懂的情况发生。

 

整个项目分为Web端和评测机端,分别是gitee上的两个项目。

https://gitee.com/yutong_java/HelloJudge2

https://gitee.com/yutong_java/HelloJudge2-Judger

主体开发语言为Python3.7+ES7+HTML5+CSS3+Cpp11。

Web后端采取Flask作为框架,前端采取Vue+jQuery作为框架(其中Vue负责页面渲染,jQuery负责AJAX),整体开发采取前后端分离。

后端路由/api/xxxx为前端调用的API接口,/ws/xxx为后端与前端实时通信的WebSocket的namespace(主要用来实时推送评测状态,私信,通知)。

后端所有模板页面继承自base.html,模板变量仅限APP_NAME(应用名)和DEBUG(调试模式)两个,其他所有数据都应该在前端渲染。

后端收到新的提交后,会存到数据库里,然后调用Celery增加一个新的Task,评测端收到新的Task后开始同步评测。

评测端使用Docker作为评测容器,每一次评测创建一个新的容器,评测完毕之后销毁,根文件系统挂载为只读。

在评测的的docker容器启动后一直阻塞,直到容器进程不存在,阻塞期间死循环读取容器的内存占用,此部分用C++实现。

 

评论

《 “HelloJudge2开发笔记” 》 有 2 条评论

  1. yutong.site 的头像
    yutong.site

    yutong.site Hy there, Look what we possess for you! a greatoffer
    To moderate click on the unite below
    https://drive.google.com/file/d/1q7tOv1831mDBw7iqLJ41Lv_G6Y2auudw/preview

  2. LNF_297 的头像

    其实我甚至想要用PHP改写前端

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理