深圳幻海软件技术有限公司 欢迎您!

来练手吧,一个类似力扣的在线测评项目

2023-02-27

程序员对力扣应该都熟悉的,在上面可以使用任意一门熟悉的编程语言写代码,在线执行代码,提交,看到击败超过90%,你会不会心跳一下?用的同时,你是否想过力扣背后的设计和实现,假如让你自己设计一个类似力扣的系统呢?你可以把这个当作系统设计的面试题,思考如何回答。最好的回答,就是自己真正动手设计一个,当然这

程序员对力扣应该都熟悉的,在上面可以使用任意一门熟悉的编程语言写代码,在线执行代码,提交,看到击败超过 90%,你会不会心跳一下?用的同时,你是否想过力扣背后的设计和实现,假如让你自己设计一个类似力扣的系统呢?你可以把这个当作系统设计的面试题,思考如何回答。

最好的回答,就是自己真正动手设计一个,当然这太难了,不过 GitHub 上有现成的,你只需要自己部署下,然后用一用,对照着功能,阅读源码,最后觉得不爽的话,自己改一改源码。这个过程,一定能学到很多知识。我的 Web 技能就是从别人的项目那里学到的。

先来个截图:

通过这个项目,你可以学习到 Docker、Django、Django REST Framework、Vue、Redis、PostgreSQL 技术栈,前后端分离,模块化编程,微服务等设计实践。

功能点

1、ACM/OI 两种比赛模式、实时/非实时评判 任意选择

2、丰富的可视化图表,一图胜千言

3、支持 Template Problem,可以添加函数题甚至填空题

4、更细致的权限划分,超级管理员和普通管理员各司其职

5、多语言支持:C, C++, Java, Python2, Python3,题目可以选择使用的语言

6、Markdown & MathJax 支持

7、比赛用户IP限制 (CIDR ranges)

安装部署

无论你是 Linux、MacOS 还是 Windows,请先安装 Docker、Python、pip、git、docker-compose 工具,确保在命令行可以执行 docker、python、pip、git、docker-compose 命令,安装方法自行搜索。

请选择磁盘空间富余的位置,克隆项目,并进入目录:

git clone -b 2.0 https://github.com/QingdaoU/OnlineJudgeDeploy.git && cd OnlineJudgeDeploy 
  • 1.

Docker 一键部署:

docker-compose up -d 
  • 1.

想知道到底启动了那些服务,可以看文件 docker-compose.yml 的内容,看不懂就去 Doker 官方文档看每一个命令的解释。

根据网速情况,大约 5 到 20 分钟就可以自动搭建完成,全程无需人工干预。

等命令执行完成,然后运行 docker ps -a,当看到所有的容器的状态没有 unhealthy 或 Exited (x) xxx 就代表已经启动成功。

浏览器打卡 http://localhost/ 就可以看到:

注册后,可以在个人设置页面设置系统为中文语言。

截图

源代码

在线测评项目源代码:

后端(Django): https://github.com/QingdaoU/OnlineJudge

前端(Vue): https://github.com/QingdaoU/OnlineJudgeFE

判题沙箱(Seccomp): https://github.com/QingdaoU/Judger 

判题服务器(对Judger的封装): https://github.com/QingdaoU/JudgeServer