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多次轮询获取最终的评测结果,将对应结果写回数据库
posted @ 2024-04-10 19:42  嘉然今天吃鸡  阅读(93)  评论(0)    收藏  举报