精选

【在线判题系统】By 流火

2025/05/19更新 Vue3 + Arco Deisgn新版本

该项目是基于Docker代码沙箱的算法题在线评测系统(Online Judge,OJ),分为网关用户判题代码沙箱4个微服务。在系统前端,管理员可以创建、管理题目,用户可以查看题目,编写代码并进行在线自测和提交;在系统后端,自主实现了代码沙箱,能够对代码进行编译,在用户设置的测试用例上运行并输出结果信息(输出流、运行耗时、内存占用等),且代码沙箱作为独立服务,可以提供给其他开发者使用。

GitHub仓库:

新版本在老版本的基础上重点优化了Docker代码沙箱功能(一行配置开启Docker代码沙箱,支持运行时间和内存占用统计),前端方面大幅轻量化(在Vue3官方脚手架的基础上从0开发)、美观化(参考LeetCode的最新前端设计)

1. 项目预览

1.1 用户界面

image.png image.png image.png image.png image.png

1.2 管理员界面

image.png image.png image.png

2. 项目结构

bash
复制代码
├── antares-api # 各个微服务提供的接口,供Dubbo远程调用 │ └── antares-user-api ├── antares-code-sandbox # 代码沙箱服务 ├── antares-code-sandbox-sdk # 调用代码沙箱的sdk ├── antares-common # 各服务的公共依赖 │ ├── antares-common-auth │ ├── antares-common-core │ ├── antares-common-mybatis │ └── antares-common-redis ├── antares-gateway # 网关服务 ├── antares-judge # 判题服务 ├── antares-user # 用户服务 ├── script # 内存监控脚本 └── sql # 数据库脚本

3. 运行教程

未完待续...

4. 下一步计划

  • ⭐完成今日一题签到功能(+积分功能)
  • ⭐完成用户的提交统计
  • ⭐做运行与提交接口的限流
  • ⭐完善项目文档
  • ⭐项目的部署上线
  • 提供项目的Dockerfile方便一键部署
  • 接入第三方的代码沙箱实现
  • 做运行时间与内存占用的统计功能(打败了xx%用户)
  • 完善用户中心

2023/09/04 React + Ant Design Pro老版本

用React + Ant Design Pro那一套重写了前端,后端实现了ACM模式的本地代码沙箱和Args模式的Docker沙箱(线上使用的是本地代码沙箱),拓展点是做了提交统计,支持在线测试,使用了API签名认证(只用了AK/SK),最后,为了方便开发者用户调用我实现的代码沙箱,写了一个SDK。

在线访问:http://oj.zqk.asia(测试账号:oj@qq.com,密码:12345678)

GitHub仓库:

前端:https://github.com/qk-antares/antares-oj-frontend

后端:https://github.com/qk-antares/antares-oj-backend

项目的部署使用的是自己搭建的服务器,使用IPv6 DDNS实现公网访问。如果你无法访问,可能是由于你的网络环境不支持IPv6(通常是公司内网和校园网),你可以到ipv6测试这个网站测试你是否支持IPv6,如果不支持可以连接手机热点后访问,手机网络一般支持IPv6。

项目目前可能还有一些BUG,后续会不断优化。

image.png image.png image.png image.png image.png image.png image.png image.png image.png
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
流火
作者分享
这种手写画风格的框架图/流程图是用什么工具画的呀?感觉挺好看的
1
面试鸭中,关于Spring IOC容器初始化过程的"初始化阶段"描述有误,应该Aware接口回调早于BeanPostProcessor.postProcessBeforeInitialization https://www.mianshiya.com/bank/1790683494127804418/question/1797567625069461506#heading-1
2
MySQL的可重复读会发生幻读吗?面试鸭和小林Coding都说会发生幻读,比如面试鸭举的例子如下 但问了ChatGPT,大模型始终坚持这个“不是真正意义上的幻读”😂,部分回复如下 所以这个(快照读-其他事务插入并提交-当前读)到底算幻读吗?
3
面试鸭、小林Coding在描述MySQL B+树查询数据的过程时,都特别强调了【叶子节点】中的数据以组的形式划分,页目录(Page Directory)二分定位到组,组内是单向链表需要顺序遍历才能定位到数据行 对于【非叶子节点】,是否也有分组的概念呢?根据我问ChatGPT,非叶子节点的Page Directory也只能定位到一个分组,分组内是(owner record, key, 子页指针)的单向链表,也需要顺序遍历才能定位到具体的下一层子节点
3
小林Coding中关于MySQL索引失效的情况提到: ”在 WHERE 子句中,如果在 OR 前的条件列是索引列,而在 OR 后的条件列不是索引列,那么索引会失效。“ 这个OR前和OR后有必要强调吗?A OR B不是等价于B OR A吗? 难道OR前不是索引列,OR后是索引列,索引就能生效了?
3
下载 APP