HTUOJ 是一个功能完整的在线判题系统,支持用户在线编程、提交代码、自动判题、参加竞赛等功能。系统采用前后端分离架构,后端基于 Spring Boot 微服务架构,前端使用 Vue.js 开发。
- 题目管理 - 支持多种编程语言(C/C++/Java/Python 等)的题目创建与管理
- 在线判题 - 实时提交代码,自动判题并返回结果(AC/WA/TLE/RE 等)
- 竞赛系统 - 创建比赛、报名参赛、实时排名
- 题解社区 - 用户可发布题解、文章,支持点赞、收藏、评论
- 用户注册/登录(JWT 认证)
- 个人主页与做题统计
- 关注系统与消息通知
- 代码提交历史与能力分析
- 多语言代码编译与运行
- 沙箱隔离确保安全
- 测试用例自动比对
- 判题结果实时推送(WebSocket)
- 题目难度分布分析
- 用户能力雷达图
- 竞赛排名与积分系统
- 提交记录可视化展示
| 技术 | 版本 | 说明 |
|---|---|---|
| Spring Boot | 2.7.6 | 核心框架 |
| Spring Cloud | 2021.0.3 | 微服务架构 |
| Spring Cloud Alibaba | 2021.0.4.0 | 微服务生态 |
| MyBatis-Plus | 3.5.3.1 | ORM 框架 |
| ShardingSphere | 5.3.2 | 分库分表 |
| Redis | - | 缓存 |
| Redisson | 3.13.6 | Redis 客户端 |
| RabbitMQ | - | 消息队列 |
| Elasticsearch | 7.12.1 | 全文搜索 |
| JWT | 0.9.1 | 身份认证 |
| Sa-Token | - | 权限认证 |
| WebSocket | - | 实时通信 |
| 阿里云 OSS | - | 文件存储 |
| 技术 | 版本 | 说明 |
|---|---|---|
| Vue | 2.6.14 | 渐进式框架 |
| Vue Router | 3.6.5 | 路由管理 |
| Pinia | 2.2.4 | 状态管理 |
| Element UI | 2.15.14 | PC 端 UI 组件 |
| Vant | 2.13.6 | 移动端 UI 组件 |
| CodeMirror | 5.65.18 | 代码编辑器 |
| ECharts | 5.5.1 | 数据可视化 |
| G2Plot | 2.4.32 | 图表库 |
| Axios | 1.7.7 | HTTP 请求 |
| Mavon Editor | 2.10.4 | Markdown 编辑器 |
htuoj/
├── htuoj-project # 核心业务模块(题目、比赛、用户等)
├── htuoj-dispatch # 判题任务调度模块
├── htuoj-common # 公共模块(工具类、常量等)
├── htuoj-judge # 判题核心模块(代码执行、沙箱)
├── htuoj-gateway # 网关模块
└── htuoj-vue # Vue 前端项目
- JDK 1.8+
- Maven 3.6+
- MySQL 8.0+
- Redis
- RabbitMQ
- Elasticsearch(可选)
- Node.js 14+
- 克隆项目
git clone https://github.com/yourusername/htuoj.git
cd htuoj- 修改配置文件
# 编辑 application-dev.yaml 配置数据库、Redis 等连接信息
# 编辑 shardingsphere-config-dev.yaml 配置分库分表- 导入数据库
# 创建数据库
mysql -u root -p -e "CREATE DATABASE htuoj DEFAULT CHARACTER SET utf8mb4;"
# 导入 SQL 文件
mysql -u root -p htuoj < sql/htuoj.sql- 构建项目
# 编译后端
mvn clean package -DskipTests- 启动服务
# 启动主应用
java -jar htuoj-project/target/htuoj-project-0.0.1-SNAPSHOT.jar- 进入前端目录
cd htuoj-vue- 安装依赖
npm install- 启动开发服务器
npm run serve- 构建生产版本
npm run build| 配置项 | 说明 |
|---|---|
| server.port | 服务端口 |
| spring.datasource | 数据源配置 |
| spring.redis | Redis 配置 |
| aliyun.oss | 阿里云 OSS 配置 |
| jwt | JWT 密钥配置 |
| sa-token | Sa-Token 认证配置 |
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
MIT License
- HTUOJ Team
- Email: support@htuoj.cn
- 官网:https://htuoj.cn
感谢以下开源项目:
如果这个项目对你有帮助,请给一个 ⭐️ Star 支持!