项目简介
本项目实现了一个在线的编程语言判题系统,应用形式分为单体应用和SpringCloud微服务。系统单独实现了编译代码的代码沙箱功能,能确保代码在安全的环境中执行。
项目的主要特性和功能
代码沙箱
- 支持Java、C++、Golang和JavaScript等多种编程语言的代码执行。
- 通过词法树对代码进行安全性检查,防止执行危险操作。
- 利用Docker容器执行代码,保证环境隔离和安全性。
判题服务
- 依据不同的编程语言,采用不同的判题策略进行代码评判。
- 通过消息队列实现异步判题,提升系统响应速度。
用户管理
- 支持用户注册、登录和注销功能。
- 区分普通用户和管理员角色,管理员可管理题目和用户。
题目管理
- 管理员能够创建、编辑和删除题目。
- 用户可提交代码进行评判,系统返回评判结果。
文件管理
- 支持用户上传和下载文件,如头像、代码文件等。
- 使用腾讯云对象存储(COS)存储文件,保障文件的安全性和可靠性。
安装使用步骤
环境准备
- 安装JDK 1.8或更高版本的Java环境。
- 安装Docker并启动Docker服务。
- 安装MySQL数据库,创建相应的数据库和用户。
- 安装并启动RabbitMQ消息队列服务。
复制项目
bash
cd yueoj
配置文件
修改application.yml
文件,配置数据库连接、RabbitMQ连接、COS存储等相关信息。
启动项目
- 启动单体应用:
bash mvn spring-boot:run
- 启动微服务:分别启动各个微服务模块,如
yoj-backend-code-sandbox
、yoj-backend-judge-service
等。
访问系统
打开浏览器,访问http://localhost:8080
,进入在线编程判题系统。
用户登录
使用默认管理员账号登录: - 用户名: Admin - 密码: 12345678
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】