SISE-OJ System介绍
一、什么是SISE-OJ?
Sise-OJ,全称 Software Engineering Institute of Guangzhou Online Judge,是基于(springcloud+vue)前后端分离,分布式架构的在线测评系统。
二、为什么要开发SISE-OJ?
因为这是牢唐的毕业设计,同时也是个人志趣所在。
三、SISE-OJ的特点
-
适应:支持手机端,响应式布局
-
设计:界面简约大方
-
安全:判题使用 cgroup 隔离用户程序,杜绝SISE-卡评测;网站权限控制完善
-
扩展:支持分布式判题
-
简单:高度集中网站配置
-
功能:
- 支持ACM、OI题目及比赛,比赛拥有外榜、打星队伍、关注队伍、滚榜等功能
- 拥有讨论区、题目讨论、比赛讨论、同时拥有站内消息系统
- 支持私有训练、公开训练(题单)
- 支持私有团队、公开团队、保护团队
- 支持testlib的特殊评测、交互评测、子任务评测
- 支持在线自测调试
四、技术选型
本系统的项目后端基于 Spring Boot、Spring Cloud Alibaba 框架,数据库使用 MySQL,缓存中间件使用 Redis,数据操作框架使用 Mybatis-Plus,前端基于 Vue3进行开发,使用 Ajax 与后端进行交互,做到真正的前后端分离开发,程序评测运行使用开源的Go-Judge 安全沙盒保证程序的高性能判题和系统的 安全防护。使用Docker 和 Docker-Compose 进行服务编排与部署,做到真正的一键化极易部署。
前端技术:
Tips
- 技术以Vue2为主,element-ui为主要的UI框架
- 支持手机端,响应式布局
- 以CodeMirror作为在线代码编辑器
- 以Mavon-Editor作为富文本编辑器
- 以Vxe-Table作为表格组件
后端技术:
Tips
hoj-backend(数据服务)
- 主体Web框架技术以SpringBoot为主
- 以Nacos为分布式注册中心及分布式配置中心,支持配置文件动态刷新。
- 以Mybatis-Plus为数据库中间件,负责数据实体类与数据库数据的转化与获取。
- 以Shiro为安全框架,支持用户角色权限管理,支持token刷新
- 以Redis作为数据缓存和使用list作为等待评测队列
评测端技术:
Tips
sise-judgeserver(评测服务)
-
主体Web框架技术以SpringBoot为主
-
以Mybatis-Plus为数据库中间件,负责数据实体类与数据库数据的转化与获取。
-
将服务注册到Nacos,以供hoj-backend进行调度,同时获取到Nacos上的配置
-
本地评测:
- 主流程:调用SandBox(Go-Judge)进行评测,将对应结果写回数据库
- 功能:支持普通评测、特殊评测、交互评测、在线调试
-
远程评测:
- 提交流程:通过爬虫技术将代码提交到HDU、Codeforces、POJ等平台,获取提交id
- 获取结果:根据提交id多次轮询获取最终的评测结果,将对应结果写回数据库

浙公网安备 33010602011771号