很早就想自己写一个 OJ,趁着毕设的机会,手刃了一个垃圾版 OJ,判题部分代码见 JudgeClient
- 判题部分基于 Docker 和 linux C++
- Web 端前后端分离,采用 Springboot 微服务和 Vue
- 图表生成用的 eCharts
- 前端 UI 用的 iview
- axios 代替 jquery 的轻量级 ajax 插件
- Simditor 富文本编辑器
- codemirror 代码编辑器
- echarts 生成图表插件
- tar-simditor-markdown
遇到的坑
Simditor
插件是模块化的,npm 装好了一直无法使用,后来找到替代品tar-simditor
,如果需要支持 markdown,再装一个tar-simditor-markdown
就行
- 前后端分离
公告页面
公告详情
题目列表
题目详情
竞赛列表
错误详细
竞赛详情
判题结果列表
排名
login
register
- 公告
- 题目
- 用户代码
- 排名浏览
- 竞赛
- 用户
- 权限鉴定 采用 JWT(Json Web Token) 验证,以 AOP 的方式执行验证
- 主从数据库 双 MySQL 可以减小单个数据库的压力
- 权限分类
Topic_adder
题目管理Contest_organizer
竞赛组织Contest_participant
竞赛参与者Code_viewer
代码查看Manual_judger
远程判题Announcement_manager
公告管理User_manager
用户管理
- 判题结果
OJ_WT0
Pending:等待判题OJ_WT1
Waiting:排队中OJ_CI
compiling:编译中OJ_JI
Judging:运行中OJ_AC
Accepted:答案正确OJ_PE
Presentation Error:格式错误OJ_WA
Wrong Answer:答案不对OJ_TL
Time Limit Exceeded:运行超出时间限制OJ_ML
Merrory Limit Exceeded:超出内存限制OJ_OL
Output Limit Exceeded:输出超过限制OJ_RE
Runtime Error:运行时错误OJ_CE
Compile Error:编译错误OJ_CO
Competition Over:竞赛结束OJ_PA
Partial Accepted:部分正确OJ_SE
System Error:系统错误