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

Python七号

共 1683字,需浏览 4分钟

 ·

2021-08-30 09:08

阅读大约需要 2 分钟

程序员对力扣应该都熟悉的,在上面可以使用任意一门熟悉的编程语言写代码,在线执行代码,提交,看到击败超过 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

Docker 一键部署:

docker-compose up -d

想知道到底启动了那些服务,可以看文件 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

公众号回复「在线测评」也可以获取,这样当某天你需要项目地址的时候不需要翻页找文章。

另外,公众号回复「GitHub」告诉你如何找到有趣的开源项目。

最后的话

这个项目是青岛大学开源的,目前 GitHub 上有 4.1k 个星,挺热门也挺有技术含量的,接下来我会好好研究一下,有问题入群讨论啊,加我好友备注「入群」即可。



浏览 41
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报