Glowxq-OJ 是一个专为信息学奥林匹克竞赛(信奥赛)和少儿编程教学设计的在线编程测评系统。本项目提供开源版本和商业版本,开源版本包含核心的在线测评功能,商业版本提供更完整的教学管理功能。
- 商业版体验地址: http://42.192.87.184:7301 (多租户版本记得选择租户)
- 开源版本: 本仓库提供完整的开源实现,前后端已经整合,运行后访问http://localhost:7101访问
系统提供以下测试账号,密码统一为:123456
| 角色 | 账号 | 密码 | 说明 |
|---|---|---|---|
| 管理员 | 13667700000 | 123456 | 系统管理员,拥有所有权限 |
| 学生 | 13667700001 | 123456 | 普通学生账号,可提交代码 |
| 校长 | 13667700002 | 123456 | 校长账号,管理学校事务 |
| 老师 | 13667700003 | 123456 | 教师账号,管理班级和学生 |
| 系统管理员 | 13667700004 | 123456 | 超级管理员,系统维护 |
💡 提示: 生产环境请务必修改默认密码!
无需部署,开箱即用! 我们提供专业的SaaS云服务,类似于 Hydro、洛谷 等知名平台。
- 🚀 即开即用: 无需复杂部署,注册账号即可使用
- 🎯 完整功能: 体验所有商业版功能,包括班级管理、多租户、GlowC、GlowGame等
- 🛠️ 技术支持: 专业技术团队提供全方位支持
- 🔒 数据安全: 企业级数据安全保障
- 📈 弹性扩容: 根据使用量自动扩容,无需担心性能问题
- 💰 成本优化: 按需付费,相比自建节省70%以上成本
想要体验完整的商业版功能?联系我们获取SaaS服务账号:
- 邮箱: glowxq@qq.com
- 微信: 扫描下方二维码添加作者微信
| 功能模块 | 开源版 | 商业版 |
|---|---|---|
| 在线测评 | ✅ | ✅ |
| 题目管理 | ✅ | ✅ |
| 用户系统 | ✅ | ✅ |
| 代码编辑器 | ✅ | ✅ |
| 多语言支持 | ✅ | ✅ |
| 班级管理 | ❌ | ✅ |
| 多租户系统 | ❌ | ✅ |
| GlowC (C++画图) | ❌ | ✅ |
| GlowGame (编程游戏) | ❌ | ✅ |
| 部门管理 | ❌ | ✅ |
| 持续更新 | 社区驱动 | 商业支持 |
- 核心框架: Spring Boot 3.x + Java 21
- 数据库: MySQL 8.0 + Redis
- ORM框架: MyBatis-Flex
- 权限认证: Sa-Token
- API文档: Knife4j (Swagger)
- 消息队列: 内置队列系统
- 文件存储: 本地存储 + OSS支持
- 容器化: Docker + Docker Compose
- 框架: Vue 3.x + TypeScript
- UI组件: Element Plus
- 代码编辑器: Monaco Editor
- 构建工具: Vite
- 状态管理: Pinia
- 沙箱技术: 安全沙箱
- 支持语言: C/C++、Java、Python、JavaScript等
- 判题模式: 普通判题、特殊判题、交互判题
- 性能优化: 虚拟线程 + 异步处理
- 📖 文档中心 - 完整的文档导航和索引
- ⚡ 快速部署 - 5分钟快速部署指南
- 🐳 Docker部署 - Docker一键部署方案
- Java: JDK 21+
- Node.js: 16.x+
- MySQL: 8.0+
- Redis: 6.0+
- Docker: 20.x+ (可选)
- Maven: 3.8+
全自动部署,包含MySQL、Redis、应用服务的完整解决方案!
- 克隆项目
git clone https://github.com/glowxq/glowxq-oj.git
cd glowxq-oj- 一键启动
# 进入脚本目录
cd init
# Linux/macOS
chmod +x start.sh
./start.sh
# Windows (使用Git Bash或WSL)
bash start.sh
# 注意 如果数据库初始化失败则执行下述脚本进行初始化
# 1.赋予执行权限
chmod +x init-db.sh
# 2.执行脚本:
./init-db.sh- 访问系统
- 前端地址: http://localhost:7101
- API文档: http://localhost:7101/doc.html
✨ 特性:
- 🚀 一键部署,自动配置MySQL、Redis
- 📦 自动导入初始化SQL数据
- 🔄 服务健康检查和自动重启
- 💾 数据持久化存储
- 📊 完整的日志和监控
🛠️ 管理命令:
./start.sh # 启动所有服务
./stop.sh # 停止所有服务
./stop.sh --cleanup # 停止并清理资源详细部署说明请参考:Docker部署指南
MySQL 配置
-- 创建数据库
CREATE DATABASE glowxq_oj CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE DATABASE glowxq_system CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 导入初始化数据
source init/初始化SQL.sql;Redis 配置
# 启动 Redis 服务
redis-server# 安装依赖
mvn clean install -DskipTests
# 启动 OJ 服务
cd app/app-oj
mvn spring-boot:run
# 启动系统管理服务(可选)
cd app/app-system
mvn spring-boot:run前端已经集成到springboot中 springboot启动时会自动启动vue项目,所以不需要再启动前端项目。 直接访问 localhost:7101 即可访问前端页面。
# application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/glowxq_oj?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: root
password: your_passwordspring:
redis:
host: localhost
port: 6379
password: your_redis_password
database: 0- CPU: 2核心以上
- 内存: 4GB以上
- 存储: 100GB以上SSD
- 网络: 5Mbps以上带宽
# 1. 准备生产配置
cp init/docker-compose.yml docker-compose.prod.yml
# 2. 修改生产配置
vim docker-compose.prod.yml
# 3. 启动生产服务
docker-compose -f docker-compose.prod.yml up -d
# 4. 配置反向代理(Nginx)
# 参考 docs/nginx.conf# JVM参数优化
export JAVA_OPTS="-Xms2g -Xmx4g -XX:+UseG1GC"
# 数据库连接池优化
# 参考 docs/database-optimization.md# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f glowxq-oj
# 备份数据
# 参考 docs/backup-guide.md推荐使用 IntelliJ IDEA:
# 安装必要插件
- Lombok Plugin
- MyBatis Plugin
- Docker Plugin# 代码格式化
mvn spotless:apply
# 代码检查
mvn spotless:check# application-dev.yml
logging:
level:
com.glowxq: DEBUG
org.springframework.web: DEBUGglowxq-api/
├── app/ # 应用启动模块
│ ├── app-oj/ # OJ服务启动类
│ └── app-system/ # 系统管理服务启动类
├── business/ # 业务逻辑模块
│ ├── business-oj/ # OJ业务逻辑
│ └── business-system/ # 系统管理业务逻辑
├── common/ # 公共模块
│ ├── common-core/ # 核心工具类
│ ├── common-db-mysql/ # MySQL配置
│ ├── common-db-redis/ # Redis配置
│ ├── common-security/ # 安全认证
│ └── ...
├── init/ # 初始化文件
│ ├── docker-compose.yml # Docker配置
│ └── 初始化SQL.sql # 数据库初始化
└── docs/ # 文档目录
@Tag(name = "题目管理")
@RestController
@RequestMapping("/api/problem")
@RequiredArgsConstructor
public class ProblemController {
@Operation(summary = "获取题目列表")
@GetMapping("/list")
public ApiResult<PageResult<Problem>> list(@Valid ProblemQueryDTO dto) {
// 实现逻辑
}
}@Service
@RequiredArgsConstructor
public class ProblemServiceImpl implements ProblemService {
@Override
@Transactional(rollbackFor = Exception.class)
public void create(ProblemCreateDTO dto) {
// 实现逻辑
}
}@SpringBootTest
class ProblemServiceTest {
@Autowired
private ProblemService problemService;
@Test
void testCreateProblem() {
// 测试逻辑
}
}# 运行所有测试
mvn test
# 运行特定测试
mvn test -Dtest=ProblemServiceTest我们欢迎所有形式的贡献!
- Fork 项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
- 🐛 Bug修复
- ✨ 新功能开发
- 📝 文档改进
- 🎨 UI/UX优化
- ⚡ 性能优化
- 🧪 测试用例
- 遵循阿里巴巴Java开发规范
- 使用Spotless进行代码格式化
- 编写完整的单元测试
- 添加必要的注释和文档
A: 参考 docs/language-support.md 文档,需要配置语言编译器和运行环境。
A: 使用沙箱技术,限制程序的系统调用、文件访问和网络访问。
A: 可以编写特殊判题程序(SPJ),支持自定义的输出验证逻辑。
A: 在标准配置下支持1000+并发用户,可通过集群部署进一步扩展。
- ✨ 初始版本发布
- 🎯 支持基础的在线测评功能
- 💻 支持C/C++、Java、Python等主流语言
- 🔐 完整的用户权限管理系统
- ✨ 新增特殊判题支持
- 🚀 性能优化,支持更高并发
- 🐛 修复若干已知问题
- 📝 完善文档和示例
本项目采用 Apache License 2.0 许可证。
感谢以下开源项目的支持:
- MyBatis-Flex - 优雅的MyBatis增强框架
- Sa-Token - 轻量级Java权限认证框架
特别感谢这些优秀的开源OJ项目为我们提供的设计思路和技术参考,让我们能够站在巨人的肩膀上构建更好的系统。
- 项目主页: https://github.com/glowxq/glowxq-oj
- 问题反馈: Issues
- 商业合作: 联系我们
- 技术交流群: 加入我们的QQ群或微信群
如果这个项目对你有帮助,请给我们一个 ⭐ Star!
Made with ❤️ by GlowXQ Team






























