项目简介
此项目是基于Spring Boot框架开发的OJ在线判题系统,提供功能齐全的在线判题平台。系统整合主流框架与业务示例代码,支持用户在线提交代码并自动判题,还具备用户管理、帖子管理、题目管理等丰富扩展功能。
项目的主要特性和功能
主流框架与特性
- Spring Boot 2.7.x:快速开发框架,简化Spring应用初始化与开发。
- Spring MVC:构建Web应用的MVC框架。
- MyBatis + MyBatis Plus:数据访问框架,支持数据库操作与分页查询。
- Spring Boot调试工具和项目处理器:提供调试与项目管理工具。
- Spring AOP切面编程:支持面向切面编程,用于日志记录、权限控制等。
- Spring Scheduler定时任务:支持定时任务调度。
- Spring事务注解:简化事务管理。
数据存储
- MySQL数据库:存储用户、题目、帖子等数据。
- Redis内存数据库:缓存数据和实现分布式登录。
- Elasticsearch搜索引擎:全文搜索和灵活检索。
- 腾讯云COS对象存储:文件上传和存储。
工具类
- Easy Excel表格处理:Excel文件读写。
- Hutool工具库:提供丰富工具方法。
- Gson解析库:JSON数据解析和生成。
- Apache Commons Lang3工具类:常用工具方法。
- Lombok注解:简化Java代码,自动生成getter、setter等方法。
业务特性
- Spring Session Redis分布式登录:支持分布式环境用户登录。
- 全局请求响应拦截器(记录日志):记录请求和响应日志。
- 全局异常处理器:统一处理系统异常。
- 自定义错误码:提供详细错误码和信息。
- 封装通用响应类:统一API响应格式。
- Swagger + Knife4j接口文档:自动生成API文档。
- 自定义权限注解 + 全局校验:支持权限控制和参数校验。
- 全局跨域处理:支持跨域请求。
- 长整数丢失精度解决:解决JSON序列化长整数精度问题。
- 多环境配置:支持不同环境配置管理。
业务功能
- 用户管理:包含登录、注册、注销、更新、检索、权限管理等。
- 帖子管理:涵盖创建、删除、编辑、更新、数据库检索、ES灵活检索等。
- 题目管理:包括添加、删除、更新、获取、分页获取列表、编辑、提交题目及获取提交列表等。
- 文件上传:支持分业务文件上传。
- 微信开放平台登录:支持通过微信开放平台登录。
- 微信公众号订阅:支持订阅、收发消息、设置菜单。
安装使用步骤
MySQL数据库
- 修改
application.yml
中的数据库配置,指向自己的数据库:yml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/my_db username: root password: 123456
- 执行
sql/create_table.sql
中的数据库语句,自动创建库表。 - 启动项目,访问
http://localhost:8101/api/doc.html
打开接口文档,在线调试接口。
Redis分布式登录
- 修改
application.yml
中的Redis配置,指向自己的Redis服务器:yml spring: redis: database: 1 host: localhost port: 6379 timeout: 5000 password: 123456
- 修改
application.yml
中的session存储方式:yml spring: session: store-type: redis
- 移除
MainApplication
类开头@SpringBootApplication
注解内的exclude参数:java @SpringBootApplication
Elasticsearch搜索引擎
- 修改
application.yml
中的Elasticsearch配置,指向自己的Elasticsearch服务器:yml spring: elasticsearch: uris: http://localhost:9200 username: root password: 123456
- 复制
sql/post_es_mapping.json
文件中的内容,通过调用Elasticsearch的接口或者Kibana Dev Tools创建索引:PUT post_v1 { 参数见 sql/post_es_mapping.json 文件 }
- 开启同步任务,将数据库的帖子同步到Elasticsearch:
- 找到job目录下的
FullSyncPostToEs
和IncSyncPostToEs
文件,取消掉@Component
注解的注释,再次执行程序触发同步。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】