想學(xué)好編程,就必須多實(shí)踐,而做項(xiàng)目是最直接有效的實(shí)踐方式。本書通過(guò)真實(shí)的企業(yè)項(xiàng)目開(kāi)發(fā)流程,幫助讀者從零開(kāi)始構(gòu)建完整的前后端全棧項(xiàng)目,涵蓋需求分析、技術(shù)選型、方案設(shè)計(jì)、項(xiàng)目搭建、編碼實(shí)現(xiàn)、項(xiàng)目?jī)?yōu)化到部署上線的全過(guò)程。作者魚皮憑借豐富的項(xiàng)目經(jīng)驗(yàn),在教程中融入大量開(kāi)發(fā)技巧,使讀者在實(shí)踐中不僅掌握技術(shù),更提升解決問(wèn)題的能力。無(wú)論您是項(xiàng)目初學(xué)者還是希望提升技術(shù)水平,本書都將為您提供切實(shí)的指導(dǎo)和寶貴的經(jīng)驗(yàn),助您在項(xiàng)目開(kāi)發(fā)中游刃有余,成為獨(dú)立開(kāi)發(fā)的能手。
程序員魚皮,騰訊前全棧工程師,現(xiàn)科技公司魚鳶網(wǎng)絡(luò)創(chuàng)始人,曾帶團(tuán)隊(duì)研發(fā)過(guò)編程導(dǎo)航、老魚簡(jiǎn)歷、面試?guó)喌榷鄠(gè)知名產(chǎn)品。他愛(ài)做項(xiàng)目,大學(xué)便帶領(lǐng)工作室為學(xué)校建設(shè)網(wǎng)站,有幾十個(gè)獨(dú)立項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn),GitHub 中國(guó)區(qū)前 10。他熱愛(ài)分享,善于把 Java 全棧項(xiàng)目講得通俗易懂,累積創(chuàng)作千萬(wàn)字編程干貨、錄制過(guò)數(shù)十套完整項(xiàng)目教程,其個(gè)人 IP 也在全網(wǎng)積累了百萬(wàn)名讀者的關(guān)注。
第1章 從技術(shù)選型開(kāi)始
1.1 項(xiàng)目概覽
1.2 項(xiàng)目背景
1.2.1 學(xué)習(xí)的意義
1.2.2 解決問(wèn)題
1.2.3 實(shí)際應(yīng)用
1.3 需求分析
1.3.1 調(diào)研
1.3.2 功能梳理
1.4 技術(shù)選型
1.4.1 前端技術(shù)選型
1.4.2 后端技術(shù)選型
1.4.3 部署技術(shù)選型
1.4.4 其他開(kāi)發(fā)工具
1.5 方案設(shè)計(jì)
1.5.1 代碼生成器的核心原理
1.5.2 第一階段:制作本地代碼生成器
1.5.3 第二階段:開(kāi)發(fā)代碼生成器制作工具
1.5.4 第三階段:開(kāi)發(fā)在線代碼生成器平臺(tái)
1.6 準(zhǔn)備工作
1.6.1 準(zhǔn)備開(kāi)發(fā)環(huán)境
1.6.2 新建代碼倉(cāng)庫(kù)
1.7 本章小結(jié)
1.8 本章作業(yè)
第2章 本地代碼生成
2.1 項(xiàng)目初始化
2.1.1 初始化根目錄
2.1.2 忽略無(wú)用提交
2.1.3 創(chuàng)建Demo示例代碼工程
2.1.4 創(chuàng)建本地代碼生成器項(xiàng)目
2.2 實(shí)現(xiàn)流程
2.2.1 需求拆解
2.2.2 實(shí)現(xiàn)步驟
2.3 靜態(tài)文件生成
2.3.1 使用現(xiàn)成的工具庫(kù)復(fù)制目錄
2.3.2 遞歸遍歷
2.4 動(dòng)態(tài)文件生成思路
2.4.1 明確動(dòng)態(tài)生成需求
2.4.2 動(dòng)態(tài)生成的核心原理
2.5 FreeMarker模板引擎入門及實(shí)戰(zhàn)
2.5.1 什么是FreeMarker
2.5.2 模板引擎的作用
2.5.3 模板
2.5.4 數(shù)據(jù)模型
2.5.5 Demo 實(shí)戰(zhàn)
2.5.6 常用語(yǔ)法
2.5.7 問(wèn)題解決示例
2.6 動(dòng)態(tài)文件生成實(shí)現(xiàn)
2.6.1 定義數(shù)據(jù)模型
2.6.2 編寫動(dòng)態(tài)模板
2.6.3 組合生成
2.6.4 完善優(yōu)化
2.7 ACM 示例代碼模板生成
2.8 本章小結(jié)
2.9 本章作業(yè)
第3章 命令行開(kāi)發(fā)
3.1 Java 命令行開(kāi)發(fā)方案
3.1.1 命令的結(jié)構(gòu)
3.1.2 為什么要開(kāi)發(fā)命令行
3.1.3 命令行的作用
3.1.4 實(shí)現(xiàn)方案
3.2 Picocli 命令行框架入門
3.2.1 入門Demo
3.2.2 幫助手冊(cè)
3.2.3 命令解析
3.2.4 交互式輸入
3.2.5 子命令
3.2.6 其他功能
3.3 命令模式
3.3.1 命令模式的優(yōu)點(diǎn)和應(yīng)用場(chǎng)景
3.3.2 命令模式的要素和實(shí)現(xiàn)
3.4 Picocli 命令行代碼生成器開(kāi)發(fā)
3.4.1 創(chuàng)建命令執(zhí)行器
3.4.2 子命令實(shí)現(xiàn)
3.4.3 全局調(diào)用入口
3.4.4 jar 包構(gòu)建
3.4.5 測(cè)試使用
3.4.6 封裝腳本
3.4.7 命令模式的巧妙運(yùn)用
3.5 本章小結(jié)
3.6 本章作業(yè)
第4章 制作工具的開(kāi)發(fā)
4.1 制作工具整體規(guī)劃
4.1.1 明確需求和業(yè)務(wù)
4.1.2 實(shí)現(xiàn)思路
4.2 核心設(shè)計(jì)
4.2.1 需求分析
4.2.2 元信息定義
4.3 代碼生成器制作工具開(kāi)發(fā)
4.3.1 maker 項(xiàng)目初始化
4.3.2 讀取元信息
4.3.3 生成數(shù)據(jù)模型文件
4.3.4 生成Picocli 命令類
4.3.5 生成代碼生成文件
4.3.6 程序構(gòu)建jar 包
4.3.7 程序封裝腳本
4.3.8 測(cè)試驗(yàn)證
4.4 本章小結(jié)
4.5 本章作業(yè)
第5章 制作工具的優(yōu)化
5.1 可移植性優(yōu)化
5.2 功能優(yōu)化
5.2.1 增加項(xiàng)目介紹文件
5.2.2 制作精簡(jiǎn)版代碼生成器
5.3 健壯性優(yōu)化
5.3.1 健壯性優(yōu)化策略
5.3.2 元信息校驗(yàn)和默認(rèn)值填充
5.4 可擴(kuò)展性優(yōu)化
5.4.1 定義枚舉值
5.4.2 模板方法模式
5.5 本章小結(jié)
5.6 本章作業(yè)
第6章 配置能力增強(qiáng)
6.1 需求分析
6.1.1 了解Spring Boot模板項(xiàng)目
6.1.2 生成器應(yīng)具備的功能
6.2 實(shí)現(xiàn)思路
6.2.1 依次分析
6.2.2 實(shí)現(xiàn)流程
6.3 開(kāi)發(fā)實(shí)現(xiàn)
6.3.1 參數(shù)控制文件生成
6.3.2 同參數(shù)控制多個(gè)文件生成
6.3.3 同參數(shù)控制代碼和文件生成
6.3.4 定義一組相關(guān)的參數(shù)
6.3.5 定義可選擇開(kāi)啟的參數(shù)組
6.4 本章小結(jié)
6.5 本章作業(yè)
第7章 模板制作工具
7.1 需求分析
7.2 核心方案設(shè)計(jì)
7.3 基礎(chǔ)功能實(shí)現(xiàn)
7.3.1 基本流程實(shí)現(xiàn)
7.3.2 工作空間隔離
7.3.3 分步制作
7.4 更多功能實(shí)現(xiàn)
7.4.1 單次制作多個(gè)模板文件
7.4.2 文件過(guò)濾
7.4.3 文件分組
7.4.4 模型分組
7.5 本章小結(jié)
7.6 本章作業(yè)
第8章 Spring Boot模板項(xiàng)目生成
8.1 Bug 修復(fù)
8.1.1 文件生成不具備冪等性
8.1.2 錯(cuò)誤處理了新生成的模板文件
8.1.3 文件輸入和輸出路徑相反
8.1.4 調(diào)整配置文件生成路徑
8.2 參數(shù)封裝:易用性優(yōu)化
8.3 制作 Spring Boot模板項(xiàng)目生成器
8.3.1 項(xiàng)目基本信息
8.3.2 需求:替換生成的代碼包名
8.3.3 需求:控制是否生成帖子相關(guān)功能的文件
8.3.4 需求:控制是否需要開(kāi)啟跨域功能
8.3.5 需求:自定義 Knife4jConfig 接口文檔配置信息
8.3.6 需求:自定義MySQL 配置信息
8.3.7 需求:控制是否開(kāi)啟Redis
8.3.8 需求:控制是否開(kāi)啟Elasticsearch
8.4 測(cè)試驗(yàn)證
8.4.1 制作生成器
8.4.2 測(cè)試使用
8.5 本章小結(jié)
8.6 本章作業(yè)
第9章 云平臺(tái)開(kāi)發(fā)
9.1 需求分析
9.2 方案設(shè)計(jì)
9.2.1 線上化實(shí)現(xiàn)流程
9.2.2 數(shù)據(jù)庫(kù)表設(shè)計(jì)
9.3 后端開(kāi)發(fā)
9.3.1 后端項(xiàng)目初始化
9.3.2 用戶功能
9.3.3 代碼生成器功能
9.4 前端頁(yè)面開(kāi)發(fā)
9.4.1 前端項(xiàng)目初始化
9.4.2 用戶注冊(cè)頁(yè)面
9.4.3 管理頁(yè)面
9.4.4 主頁(yè)
9.5 本章小結(jié)
9.6 本章作業(yè)
第10章 代碼生成器共享
10.1 需求分析
10.2 通用文件上傳和下載功能
10.2.1 什么是對(duì)象存儲(chǔ)
10.2.2 創(chuàng)建并使用
10.2.3 后端操作對(duì)象存儲(chǔ)
10.2.4 前端文件上傳 / 下載
10.3 創(chuàng)建代碼生成器功能
10.3.1 文件壓縮打包
10.3.2 文件上傳接口
10.3.3 通用文件上傳組件
10.3.4 創(chuàng)建頁(yè)面開(kāi)發(fā)
10.3.5 修改頁(yè)面開(kāi)發(fā)
10.4 代碼生成器詳情頁(yè)
10.4.1 下載生成器文件接口
10.4.2 詳情頁(yè)開(kāi)發(fā)
10.4.3 下載功能實(shí)現(xiàn)
10.5 本章小結(jié)
10.6 本章作業(yè)
第11章 在線使用生成器
11.1 需求分析
11.2 方案設(shè)計(jì)
11.2.1 業(yè)務(wù)流程
11.2.2 問(wèn)題分析
11.3 后端開(kāi)發(fā)
11.3.1 改造單個(gè)代碼生成器
11.3.2 修改制作工具
11.3.3 使用生成器接口
11.3.4 測(cè)試
11.4 前端頁(yè)面開(kāi)發(fā)
11.4.1 創(chuàng)建生成器的模型配置
11.4.2 使用代碼生成器頁(yè)面
11.5 本章小結(jié)
11.6 本章作業(yè)
第12章 在線制作生成器
12.1 需求分析
12.2 方案設(shè)計(jì)
12.2.1 業(yè)務(wù)流程
12.2.2 問(wèn)題分析
12.3 后端開(kāi)發(fā)
12.3.1 制作工具項(xiàng)目支持傳參調(diào)用
12.3.2 在線制作接口
12.3.3 接口測(cè)試
12.4 前端頁(yè)面開(kāi)發(fā)
12.4.1 創(chuàng)建生成器的文件配置
12.4.2 制作生成器功能
12.5 本章小結(jié)
12.6 本章作業(yè)
第13章 性能優(yōu)化
13.1 性能優(yōu)化思路
13.1.1 性能優(yōu)化分類
13.1.2 通用性能優(yōu)化手段
13.2 核心功能性能優(yōu)化
13.2.1 下載生成器接口
13.2.2 使用生成器接口
13.2.3 制作生成器接口
13.3 查詢性能優(yōu)化
13.3.1 精簡(jiǎn)數(shù)據(jù)
13.3.2 SQL 優(yōu)化
13.3.3 壓力測(cè)試
13.3.4 分布式緩存
13.3.5 多級(jí)緩存
13.3.6 計(jì)算優(yōu)化
13.3.7 請(qǐng)求層性能優(yōu)化
13.4 Vert.x 響應(yīng)式編程
13.4.1 Vert.x 入門
13.4.2 Vert.x 為什么速度快
13.4.3 使用Vert.x 改造請(qǐng)求
13.4.4 測(cè)試
13.5 本章小結(jié)
13.6 本章作業(yè)
第14章 存儲(chǔ)優(yōu)化
14.1 存儲(chǔ)優(yōu)化思路
14.1.1 存儲(chǔ)空間優(yōu)化
14.1.2 存儲(chǔ)成本優(yōu)化
14.1.3 存儲(chǔ)安全性優(yōu)化
14.1.4 其他優(yōu)化
14.2 存儲(chǔ)空間優(yōu)化
14.2.1 分析
14.2.2 文件清理機(jī)制設(shè)計(jì)
14.2.3 分布式任務(wù)調(diào)度系統(tǒng)
14.2.4 文件清理機(jī)制開(kāi)發(fā)
14.3 存儲(chǔ)成本優(yōu)化
14.3.1 選擇合適的存儲(chǔ)類型
14.3.2 數(shù)據(jù)沉降
14.3.3 減少訪問(wèn)
14.4 存儲(chǔ)安全性優(yōu)化
14.4.1 官方建議
14.4.2 安全管理
14.4.3 現(xiàn)存權(quán)限風(fēng)險(xiǎn)
14.4.4 權(quán)限管理實(shí)踐
14.5 本章小結(jié)
14.6 本章作業(yè)
第15章 部署上線
15.1 服務(wù)器初始化
15.2 部署規(guī)劃
15.2.1 部署項(xiàng)目的規(guī)劃
15.2.2 部署所需依賴的規(guī)劃
15.3 安裝依賴
15.3.1 數(shù)據(jù)庫(kù)
15.3.2 Redis
15.3.3 Java環(huán)境
15.3.4 Maven環(huán)境
15.3.5 XXL-JOB 任務(wù)調(diào)度平臺(tái)
15.3.6 對(duì)象存儲(chǔ)
15.4 前端部署
15.4.1 修改項(xiàng)目配置
15.4.2 打包部署
15.4.3 Nginx 轉(zhuǎn)發(fā)配置
15.5 后端部署
15.5.1 修改項(xiàng)目配置和代碼
15.5.2 打包部署
15.5.3 Nginx 轉(zhuǎn)發(fā)配置
15.6 測(cè)試驗(yàn)證
15.6.1 驗(yàn)證基本操作
15.6.2 驗(yàn)證生成器在線制作
15.6.3 驗(yàn)證在線使用
15.6.4 驗(yàn)證定時(shí)任務(wù)執(zhí)行
15.7 本章小結(jié)
15.8 本章作業(yè)