本文作者:程序员鱼皮
⭐️ 加入项目系列学习:加入编程导航
这次带做的是一个让很多同学 “望而生畏” 的硬项目, 基于 Vue 3 + Spring Boot + Spring Cloud 微服务 + Docker 的 编程题目在线评测系统 (简称 OJ)。
在系统前台,管理员可以创建、管理题目;用户可以自由搜索题目、阅读题目、编写并提交代码。
在系统后端,能够根据管理员设定的题目测试用例在 代码沙箱 中对代码进行编译、运行、判断输出是否正确。
其中,代码沙箱可以作为独立服务,提供给其他开发者使用。
题目搜索页面:
在线做题页面,支持代码编辑器、代码高亮:
题目提交列表页面:
创建题目页面,包含 Markdown 富文本编辑器、动态增删测试用例:
项目业务流程图:
感兴趣的同学可以 免费试看 第一期项目回放:项目实战 - 鱼皮原创项目教程系列
- 资料少:OJ 系统网上几乎找不到教程
- 比较新颖,有亮点、有区分度(人家写外卖,你写 OJ)
- 能学到东西:能够学到很多传统 CRUD 开发外的知识点和编程思想
- 复杂度 “高”:很多同学觉得 OJ 是个很复杂的项目,一起攻克它
- 可扩展性强,有很多区别于 CRUD 的功能可做
该项目选题非常 新颖 ,不同于泛滥的管理系统、博客、商城,不同于只有增删改查的业务系统,本项目会基于 Docker 虚拟化技术 + 多种设计模式 ,从 0 开始手把手带大家实现一个安全的、可复用的 代码沙箱 ,并通过 微服务架构 实现一个可扩展的在线判题系统。
鱼皮 从 0 到 1 全程直播无剪辑 地带大家开发完成项目,总课程时长超 30 小时 !从需求分析、技术选型、系统设计、项目初始化、前后端开发,每个环节我都 从理论到实践 给大家讲的明明白白、每个细节都不放过!
鱼皮给大家讲的都是通用的项目开发方法和架构设计套路,从这个项目中你可以学到:
- 如何从设计到开发一套完整系统?
- 如何在应用中使用 Docker 隔离程序?
- 如何从 0 打造前端项目模板?
- 单体项目如何改造为微服务?
- 如何保证用户执行代码的安全?
- 如何使用消息队列解耦程序?
- 如何巧妙利用设计模式来优化代码?
此外,还能学会很多作图、思考问题、对比方案的方法,提升排查问题、自主解决 Bug 的能力。
值得一提的是,我带大家做这个项目的过程是先做完单体项目、再改造为微服务,所以哪怕你还没接触过微服务、或者时间紧急,也可以分阶段来学习~ 而且学完这个操作后,你的任何单机项目都可以升级成微服务了,不用再单独做一个微服务新项目,大幅节省时间。
本项目同时适合前端和后端,是一套完整的全栈项目。
如果你是后端,已经学习过 Java Web 开发技术,希望做一个新颖的、有亮点的、写在简历上加分的项目,学习 OJ 系统的设计实现、微服务项目的设计实现、Docker 技术的实战运用、设计模式的实战运用、提升自己的编程和架构设计能力,那么非常欢迎来学习!
如果你是前端,最好已经学习过 Vue 或 React 框架,可以通过本项目学习到快速开发前端项目的技巧、自主编写一套前端通用模板的方法。
- Vue 3
- Vue-CLI 脚手架
- Vuex 状态管理
- Arco Design 组件库
- 前端工程化:ESLint + Prettier + TypeScript
- ⭐️ 手写前端项目模板(通用布局、权限管理、状态管理、菜单生成)
- ⭐️ Markdown 富文本编辑器
- ⭐️ Monaco Editor 代码编辑器
- ⭐️ OpenAPI 前端代码生成
- ⭐️ Java Spring Cloud + Spring Cloud Alibaba 微服务
- Nacos 注册中心
- OpenFeign 客户端调用
- GateWay 网关
- 聚合接口文档
- Java Spring Boot(万用后端模板)
- Java 进程控制
- ⭐️ Java 安全管理器
- ⭐️ Docker 代码沙箱实现
- ⭐️ 虚拟机 + 远程开发
- MySQL 数据库
- MyBatis-Plus 及 MyBatis X 自动生成
- Redis 分布式 Session
- ⭐️ RabbitMQ 消息队列
- ⭐️ 多种设计模式
- 策略模式
- 工厂模式
- 代理模式
- 模板方法模式
- 其他:部分并发编程、JVM 小知识
再列举下项目的大纲,只是部分关键环节。此外,直播过程中还讲了很多平时大家自己看视频根本学不到的做项目经验和编码技巧,比如:如何自定义代码模板、规范的前后端开发流程、代码抽象复用的小技巧等。
这个项目内容非常多,大家可以看看有没有自己想学的知识点。
- 项目介绍 | OJ 系统常用概念
- 项目介绍 | 企业项目开发流程
- 项目介绍 | 主流 OJ 系统调研
- 项目介绍 | 核心实现模块介绍
- 项目介绍 | 核心业务流程(2 种作图)
- 项目介绍 | 系统功能梳理
- 项目介绍 | 技术选型
- 项目介绍 | 系统架构设计(架构设计图)
- OJ 系统实现方案(5 种方案讲解)
- 前端项目初始化 | Vue-CLI 初始项目搭建
- 前端项目初始化 | 组件库引入
- 前端项目初始化 | 项目通用布局开发及优化
- 前端项目初始化 | 全局状态管理
- 前端项目初始化 | 全局权限管理
- 前端项目初始化 | 通用菜单组件开发
- 前端项目初始化 | 全局项目入口
- 前端项目初始化 | 多套布局支持
- 后端项目初始化(Spring Boot 万用模板讲解)
- 前后端联调 | 用户登录页面开发
- 前后端联调 | 前端请求代码生成
- 前后端联调 | 用户自动登录
- 后端接口开发 | 库表设计
- 后端接口开发 | 数据库索引知识
- 后端接口开发 | 后端开发流程讲解
- 后端接口开发 | 代码自动生成
- 后端接口开发 | 开发题目相关接口
- 前端页面开发 | 整合 Markdown 编辑器
- 前端页面开发 | 整合 Monaco Editor 代码编辑器
- 前端页面开发 | 题目页面开发(自定义代码模板)
- 前端页面开发 | 题目管理页面开发
- 前端页面开发 | 题目更新页面开发
- 前端页面开发 | 题目列表搜索页面开发
- 前端页面开发 | 在线做题页面开发
- 判题机架构 | 判题机模块划分
- 判题机架构 | 判题服务开发
- 判题机架构 | 工厂模式优化
- 判题机架构 | 代理模式优化
- 判题机架构 | 策略模式优化
- 代码沙箱 Java 原生实现 | 执行原理
- 代码沙箱 Java 原生实现 | 核心流程开发
- 代码沙箱 Java 原生实现 | Java 程序漏洞讲解(6 种)
- Java 程序安全控制 | 超时控制
- Java 程序安全控制 | 资源控制
- Java 程序安全控制 | 权限控制
- Java 程序安全控制 | 安全管理器
- Java 程序安全控制 | 环境隔离
- Docker 从入门到实战 | Docker 入门讲解
- Docker 从入门到实战 | 虚拟机 + 远程开发环境搭建
- Docker 从入门到实战 | Docker 命令实操
- Docker 从入门到实战 | Java 操作 Docker
- 代码沙箱 Docker 实现 | 核心流程实现
- 代码沙箱 Docker 实现 | Docker 容器安全性
- 代码沙箱优化 | 模板方法模式
- 代码沙箱开放 API(API 安全性)
- 微服务入门 | 基本概念
- 微服务入门 | 微服务实现技术
- 微服务入门 | Spring Cloud Alibaba 入门
- 微服务改造 | Redis Session 分布式登录
- 微服务改造 | 服务划分
- 微服务改造 | 路由划分
- 微服务改造 | Nacos 注册中心
- 微服务改造 | Maven 子父工程生成
- 微服务改造 | 代码依赖同步
- 微服务改造 | Open Feign 服务内部调用
- Gateway 微服务网关 | 接口路由
- Gateway 微服务网关 | 聚合文档
- Gateway 微服务网关 | 跨域解决
- Gateway 微服务网关 | 权限校验
- 消息队列解耦 | RabbitMQ 项目异步化改造
编程导航学员笔记:
- https://www.codefather.cn/note/1805902778551808001 By 程序员cq(C++ 项目扩展)
- https://www.codefather.cn/note/1805902819832147969 By 程序员cq(第四期项目拓展)
- https://www.codefather.cn/note/1805902828325613570 By 程序员cq(第三期项目拓展)
- https://www.codefather.cn/note/1805902862253338625 By 程序员cq(第一期项目拓展)
- https://www.codefather.cn/note/1811340782370095106 By 林寻
- https://www.codefather.cn/post/1829531285412552706 By 鱼友8588(上线部署笔记)
- https://www.codefather.cn/post/1835646432472547330 By hello(上线部署笔记)
项目问答专区(请在 PC 端访问编程导航链接):https://www.codefather.cn/course/1790980707917017089?tabKey=qa
可以在编程导航中更好地解决项目中遇到的问题:编程导航 1 对 1 免费答疑服务
项目问题答疑汇总:https://www.codefather.cn/course/1790980707917017089/section/1790992084224225282?tabKey=qa&type=
加群方式请见编程导航帖子:https://www.codefather.cn/course/1790980707917017089?current=1&tabKey=qunCode(加入编程导航 后可见)
展示部分学员的真实反馈,也欢迎编程导航鱼友私信编程导航管理或鱼皮反馈,认真完成项目会有小奖励哦 🧧!
- https://www.codefather.cn/note/1810751001442844674 By 程序员雪儿
- https://www.codefather.cn/note/1806522941518364673 By 新之助
点击 加入编程导航 ,鱼皮原创项目均可学习。