Online Judge Web端设计

目录

Online Judge Web端

Online Judge Linux端还没写

很早就想自己写一个OJ,趁着毕设的机会,手刃了一个垃圾版OJ

简介

判题部分基于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就行

跨域问题

流程

前后端分离的话基本都差不多吧,我也不知道企业里是啥样的,没上过班。。后端提供接口,然后用axios ajax访问。

截图

公告页面

Online Judge Web端设计

公告详情

Online Judge Web端设计

题目列表

Online Judge Web端设计

题目详情

Online Judge Web端设计
Online Judge Web端设计

竞赛列表

Online Judge Web端设计

错误详细

Online Judge Web端设计

竞赛详情

Online Judge Web端设计

判题结果列表

Online Judge Web端设计

排名

Online Judge Web端设计

login

Online Judge Web端设计

register

Online Judge Web端设计

后端

模块

前台

公告浏览
题目浏览
提交代码
排名浏览
竞赛的浏览和参与
登陆注册和个人信息编辑

后台

公告管理
用户管理
竞赛管理
题目管理
系统管理(特别想做但是还没做的模块)

使用的库

com.alibaba.fastjson
io.jsonwebtoken.jjwt
com.alibaba.druid
ch.qos.logback.logback-classic
org.projectlombok.lombok

编码过程中踩的坑

fastJson不建立新对象可能会引起的循环引用

IDEA 创建多模块的maven项目时的打包问题

IDEA 创建多模块的maven项目子模块根目录问题

特点

权限鉴定

采用JWT(Json Web Token)验证,以AOP的方式执行验证

主从数据库

双MySQL可以减小单个数据库的鸭梨

权限分类

  • Topic_adder 题目管理
  • Contest_organizer 竞赛组织
  • Contest_participant 竞赛参与者(编码过程中没用到。。不知道设计的时候怎么想的)
  • Code_viewer 代码查看
  • Manual_judger 远程判题(没用到+1)
  • Announcement_manager 公告管理
  • User_manager 用户管理

判题结果

设计的时候基本感觉都想到了,但是没全部用,还不健全。仍需努力。。

名称 描述 是否使用
OJ_WT0 Pending:等待判题
OJ_WT1 Waiting:排队中 x
OJ_CI compiling:编译中 x
OJ_JI Judging:运行中 x
OJ_AC Accepted:答案正确
OJ_PE Presentation Error:格式错误 x
OJ_WA Wrong Answer:答案不对
OJ_TL Time Limit Exceeded:运行超出时间限制
OJ_ML Merrory Limit Exceeded:超出内存限制
OJ_OL Output Limit Exceeded:输出超过限制 x
OJ_RE Runtime Error:运行时错误
OJ_CE Compile Error:编译错误
OJ_CO Competition Over:竞赛结束 x
OJ_PA Partial Accepted:部分正确 x
OJ_SE System Error:系统错误 x

数据库设计(待写)

表名

字段名 描述
- -

待实现

分布式文件系统FastDFS

Docker-Compose搭建多容器

添加更多的语言支持 JAVA等

MySQL读写分离

好像想写的暂时就这么多,想到了再改吧。。

上一篇:C - Online Judge,java半实现


下一篇:Leetcode-5019 Video Stitching(视频拼接)