# Coder-oj 算法练习平台-毕业设计 **Repository Path**: bosen-once/coder-oj ## Basic Information - **Project Name**: Coder-oj 算法练习平台-毕业设计 - **Description**: 算法对于程序员来说无论是用于面试还是工作都尤为重要,但算法知识特别丰富繁杂,程序员往往无法在这庞大的算法海洋中精准挑选自己所需的知识,系统性的学习算法。由此一个能够用于帮助程序员系统学习并带有判题功能的算法练习OJ系统就显得格外重要 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 0 - **Created**: 2022-11-24 - **Last Updated**: 2024-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README > **Gitee地址**:[https://gitee.com/bosen-once/coder-oj](https://gitee.com/bosen-once/coder-oj) ### 开发工具 | 工具名称 | 版本 | 说明 | | ------------- | -------- | --------------- | | IntelliJ IDEA | 2022.3.3 | Java 代码编辑器 | | DataGrip | 2022.3.3 | 数据库管理工具 | | Sublime | 3 | 文本编辑器 | | NxShell | 1.9.2 | 终端连接工具 | | Another Redis | 1.5.9 | Redis 管理工具 | | Postman | 10.10.8 | 接口调用工具 | | Sourcetree | 3.4.10 | Git 管理工具 | ### 开发环境 | 环境名称 | 版本 | | -------------- | ------- | | JDK | 1.8 | | SpringBoot | 2.3.7 | | MybatisPlus | 3.3.2 | | MySQL | 5.7.18 | | Redis | 4.0.1 | | Node.js | 18.12.1 | | Npm | 6.14.10 | | Nginx | 1.13.0 | | Cargo | 1.65 | | CentOS | 7 | | Docker | 23.0.0 | | Docker Compose | 2.2.2 | ### 第三方技术 - 代码在线编译器:[noxue-code](https://gitee.com/dot2-com/noxue-code) - 用户端前端框架:[夕颜博客](https://gitee.com/bright-boy/xiyan-blog/tree/master/vue-xiyan-frontend) - 平台端前端框架:[Naive Ui Admin](https://gitee.com/Ahjung/naive-ui-admin) ### 项目截图 ###### 1.用户页面-题目详情 ![](img/0aae432043024d64854b0060674bf9b7.png) ![](img/a54fe7ef668f450791486d30bdadebc8.png) ###### 2.后台页面-登录 ![](img/a5dc9606b87d44399b644f69645362a7.png) ###### 3.后台页面-权限管理 ![](img/2a5c5fa78c3e4959b704b29ec972c9c1.png) ###### 4.后台页面-用户管理 ![](img/58719e7ef9094c95a0d66c175252b542.png) ### 如何部署 ###### 1.下载压缩包 - 点击侧边发行版,选择`coder-oj-zip`即可下载笔者打包好的各个项目模块运行文件(包括docker-compose.yml、数据库初始化sql、后端服务jar包、前端运行服务dist包、代码运行服务Linux二进制文件) ![](img/373f1caff3604f4bac9c828648fc37e6.png) ![](img/b1917b95f9984d469660a06d38a16320.png) ###### 2.目录结构 - 将下载的压缩包解压,目录结构如下图 ![](img/b67d405be5564301808c3726ffd6d70b.png) ###### 3.修改ip地址 - 若读者只想部署运行该项目,不对代码进行修改,则只需要修改前后端配置文件的服务器`ip`地址即可(若需要对代码进行修改,需要对代码重新打包,具体流程已在下方说明) ![](img/0fdf4abf59234702b2e4c25fd1f0e6c2.png) ![](img/d9367b8606cc4464aa2f8b2a7641d045.png) ![](img/4890229bedf34613b8c32989bc2063a3.png) ###### 4.上传服务器 - 将配置文件中的服务器`ip`修改成自己的值后,即可将整个项目打包上传到服务器中 ###### 5.拉取镜像 - 执行如下命令拉取项目所需的`docker`镜像 ```shell docker pull php:7 docker pull adityai/jdk13 docker pull hub.c.163.com/library/centos docker pull hub.c.163.com/library/redis docker pull hub.c.163.com/library/nginx docker pull hub.c.163.com/library/mysql docker pull hub.c.163.com/cloudndp/library/openjdk ``` ###### 6.文件赋权 - 上传到服务器的`coder-oj-run-service`文件是默认没有执行权限的,我们需要进入到`docker-compose.yml`所在的目录,执行如下命令,赋予该文件执行权限 ```shell chmod 777 ./co-run-service/coder-oj-run-service ``` ###### 7.构建、启动服务 - 进入到`docker-compose.yml`所在的目录,执行如下命令即可启动项目 ```shell // 构建启动服务 docker-compose up -d // 停止服务 docker-compose stop // 启动服务 docker-compose start // 重启服务 docker-compose restart ``` ###### 8.启动成功 - 执行`docker-compose up -d`成功后,将启动与服务相关的`6`个docker容器,如下图 ![](img/d7bc1c2d40034461a8ce04aaf7ebae4a.png) ### 自定义打包 > **若有修改代码的需求,在修改代码后按照下方提示打包,将打包好的包替换`coder-oj-lib`中对应的文件即可** ###### 1.后端代码打包 - 因为使用Idea,所以对于jar的打包十分方便,只需执行右侧的`maven`命令即可生成jar包,使用生成好的jar包替换`coder-oj-lib`压缩包中的文件即可 ![](img/ad57e0af1d4e4f7ca3ac5cdbad7fc4f0.png) ###### 2.前端代码打包 - 前端代码需要通过`npm`进行打包,如下图,运行命令`npm install && npm run build`命令即可生成dist包,将生成好的dist替换`coder-oj-lib`压缩包中的文件即可。 ![](img/12733b20e8d14ab3a55eb970dcbb4303.png) ###### 3.代码运行模块打包 - 代码运行模块生成的包为二进制文件,因此在本地编译的二进制包无法成功在服务器上运行。需要在服务器中打包该模块;进入到模块根目录,运行`cargo build --release`,生成的二进制文件保存在`根目录/target/release`中,将生成好的`coder-run-service`文件替换`coder-oj-lib`压缩包的文件即可 ![](img/35b8f818533e4a4c87631ca0a2f0af8e.png)