Skip to content

Latest commit

 

History

History
117 lines (67 loc) · 2.9 KB

README.md

File metadata and controls

117 lines (67 loc) · 2.9 KB

OOAD presentation

0.判题机刷新

在服务器上执行可以启动目前的判题测试库: docker run -p 12002:5432 -e POSTGRES_PASSWORD=abc123 -d --rm judgedb:1.0 -p为端口映射,12002为服务器主机端口(也就是JDBC要连接的端口,-e POSTGRES_PASSWORD=abc123 为设置容器的密码,账户默认为postgres,-d为不开命令行,后台运行服务,--rm为停止容器后自动删除,judgedb:1.0为目前的镜像) 然后如果测试数据库被污染,可以docker stop [容器ID] 关闭容器并删除,然后重新运行上述命令

1.需求

Online Judge的作用?(

这里可以用表情包,

原来:手动判作业、很多同学argue分数、交题两个星期才能看到自己对不对

现在:OJ 自动化,体验良好

  • 减轻老师和SA判题的工作量
  • 保证判作业的公正性
  • 能给学生及时的做题反馈

2.项目功能&特色

一个学生做题的故事:

​ 登录OJ→修改个人信息→看题→交题→查看结果反馈→查看自己的得分

  • 交题的结果反馈需要及时(阐述提高性能的设计)
  • 防止删库跑路$盗号?(OJ安全沙箱的设计&Spring security)
  • 结果:可以智能提示结果错误的原因(可选)(少结果|多结果|结果错误|语法错误)、耗时和内存

SA和老师出题&判题过程:

  • 需要上传:一份正确的sql文件、一份返回结果集(比如.csv格式)、自定义判题脚本文件(可选)
  • 做题过程中,查看题目准确率和同学们的交题情况(能够针对性的统计错误信息)
  • 老师可以自定义一次Assignment的分数权重、数据库类型、时间内存要求等等
  • 老师可以给学生创建账号、赋予权限
  • 查重?
  • 作业定时开始,定时结束

其它特色功能:

  • 防误交(避免不小心连续多次提交同一份错误代码导致扣分)
  • 数据灾备
  • 比赛分组系统

3.项目系统架构&技术栈

系统架构0.5

设计模式:

  • WEB开发经典的MVC 框架

    优点:各个模块耦合度低,方便分工合作开发

  • 判题的过程是一个生产消费模型

WEB 前端UI:

  • 效果图

  • v使用到的技术:

    • vue.js

    • vuetify

    • vue-router

    vuex

    axios

    ESL int

    Typescript

    scss

控制层:

Springboot中的SpringMVC,负责处理前端请求并调用相关服务返回结果

技术:spring security,springMVC

服务层:

  • 用户信息管理

  • 作业&问题管理

  • 判题

  • 信息统计

    技术:docker,docker java,线程池

数据持久层:

处理OJ本身产生的数据

  • kafka实现多种数据库支持

  • nosql缓存数据库(redis)来处理某时间段大量请求的问题

  • Druid连接池(扩展性、日志、注入加载、restful API)

    4.时间线

待定