OJ 在线判题项目教程 笔记

历时2个月完成oj项目前后端的开发,代码沙箱使用docker实现,支持ACM模式、目前支持2种编程语言(java和go)。前端使用 React + AntDesign Pro 实现。

后端扩展点:

  1. 登录采用 JWT + ThreadLocal + Redis 实现分布式登录
  2. 选用 alpine作为基础镜像,在此基础上自定义代码沙箱编程语言,方便扩展
  3. 采用配置化定义docker容器参数(容器内存,容器cpu等)、编程语言执行命令(编译、运行),可达到灵活调整、方便扩展编程语言目的
  4. 定义编程语言模版,将创建文件改为复制模版文件,减少性能消耗
  5. 定义代码沙箱Manager类,根据配置初始化 dockerClient、创建沙箱容器、注册编程语言;还提供创建命令、执行命令、交互式执行命令、获取内存、获取执行时间等常用方法
  6. 支持多组判题用例,和判题信息(待修改性能差,后续调整成一次将所有输入用例传给沙箱,在执行代码层面处理)
  7. 抽象判题模版减少重复代码方便扩展
  8. 采用全量和增量(t+1)定时任务统计题目ac率和提交率
  9. 采用消息队列异步执行代码和判题

首页: image.png

详情

image.png
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
Flance
下载 APP