Spring boot分布式項目實戰項目
B站鏈接:【SpringBoot項目實戰】 2020最新在線教育 spring boot分布式項目實戰_嗶哩嗶哩_bilibili
項目中資源:
源碼+講義+筆記 資料:鏈接:https://pan.baidu.com/s/1JQC99C5sXj2pev94NbOw1w 密碼:nagl 源碼:鏈接:https://pan.baidu.com/s/1OGvCX0rosUFHIxKLiXw-Dw 密碼:umcq 筆記:鏈接:https://pan.baidu.com/s/1LbAjf5bkBCn7MWF4jNYnsA 密碼:u3k5
在線教育項目總結
1、總結在線教育項目功能點
2、總結在線教育項目技術點
3、總結在線教育項目問題
總結在線教育項目功能點
一、准備
1、把后端接口啟動起來
2、啟動前端項目(前台系統和后台系統)
二、項目后台管理系統功能
1、登錄功能(SpringSecurity框架)
2、權限管理模塊
(1)菜單管理:列表、添加、修改、刪除
(2)角色管理
* 列表、添加、修改、刪除、批量刪除
* 為角色分配菜單
(3)用戶管理
* 列表、添加、修改、刪除、批量刪除
* 為用戶分配角色
(4)權限管理表和關系
* 使用五張表
3、講師管理模塊
(1)條件查詢分頁列表、添加、修改、刪除
4、課程分類模塊
(1)添加課程分類
* 讀取Excel里面課程分類數據,添加到數據庫中
(2)課程分類列表
* 使用樹形結構顯示課程分類列表
5、課程管理模塊
(1)課程列表功能
(2)添加課程
* 課程發布流程:第一步填寫課程基本信息,第二步添加課程大綱(章節和小節),第三步課程信息確認,最終課程發布
* 課程如何判斷是否已經被發布了?使用status字段
* 課程添加過程中,中途把課程停止添加,重新去添加新的課程,如何找到之前沒有發布完成課程,繼續進行發布? 到課程列表中根據課程狀態查詢未發布的課程,點擊課程右邊超鏈接把課程繼續發布完成
(3)添加小節上傳課程視頻
6、統計分析模塊
(1)生成統計數據
(2)統計數據圖表顯示
三、項目前台用戶系統功能
1、首頁數據顯示
(1)顯示幻燈片功能
(2)顯示熱門課程
(3)顯示名師
2、注冊功能
(1)獲取手機驗證碼
3、登錄功能
(1)普通登錄和退出
* SSO(單點登錄)
⦁ JWT
⦁ 使用JWT生成token字符串
⦁ JWT有三部分組成:jwt頭信息,有效載荷,哈希簽名(防偽標志)
⦁ 登錄實現流程
⦁ 登錄調用登錄接口返回token字符串,把返回token字符串放到cookie里面,創建前端攔截器進行判斷,如果cookie里面包含token字符串,把token字符串放到header里面。調用接口根據token獲取用戶信息,把用戶信息放到cookie里面,進行顯示
(2)微信掃描登錄
⦁ OAuth2
⦁ 定義:是針對特定問題解決方案
⦁ 主要有兩個問題:開放系統間授權,分布式訪問
⦁ 如何獲取掃描人信息過程?
⦁ 掃描之后微信接口返回code(臨時票據),拿着code值請求微信固定地址,得到兩個值:access_token(訪問憑證)和openid(微信唯一標識),你拿着這兩個值再去請求微信固定的地址,得到微信掃描人信息(比如昵稱,頭像等等)
4、名師列表功能
5、名師詳情功能
6、課程列表功能
(1)條件查詢分頁列表功能
7、課程詳情頁
(1)課程信息顯示(包含課程基本信息,分類,講師,課程大綱)
(2)判斷課程是否需要購買
8、課程視頻在線播放
9、課程支付功能(微信支付)
(1)生成課程訂單
(2)生成微信支付二維碼
(3)微信最終支付
* 微信支付實現流程:
* 如果課程是收費課程,點擊立即購買,生成課程訂單
* 點擊訂單頁面去支付,生成微信支付二維碼
* 使用微信掃描支付二維碼實現支付
* 支付之后,每隔3秒查詢支付狀態(是否支付成功),如果沒有支付成功等待,如果支付成功之后,更新訂單狀態(已經支付狀態),向支付記錄表添加支付成功記錄
總結在線教育項目技術點(前端)
1、在線教育項目采用前后端分離開發
2、項目使用前端技術
(1)vue
* 基本語法
* 常見指令 : v-bind v-model v-if v-for v-html
* 綁定事件: v-on-click @click
* 生命周期:created() 頁面渲染之前 mounted()頁面渲染之后
* ES6規范
(2)Element-ui
(3)nodejs
* 是JavaScript運行環境,不需要瀏覽器直接運行js代碼,模擬服務器效果
(4)NPM
* 包管理工具,類似於Maven
* npm命令: npm init npm install 依賴名稱
(5)Babel
* 轉碼器,可以把ES6代碼轉換成ES5代碼
(6)前端模塊化
* 通過一個頁面或者一個js文件,調用另外一個js文件里面的方法
* 問題:ES6的模塊化無法在Node.js中執行,需要用Babel編輯成ES5后再執行
(6)后台系統使用vue-admin-template
* 基於vue+Element-ui
(7)前台系統使用Nuxt
* 基於vue
* 服務器渲染技術
(8)Echarts
* 圖表工具
總結在線教育項目技術點(后端技術一)
1、項目采用微服務架構
2、SpringBoot
(1)SpringBoot本質是就是Spring,只是快速構建Spring工程腳手架
(2)細節:
* 啟動類包掃描機制
* 設置掃描規則 @ComponentScan("包路徑")
* 配置類
(3)SpringBoot配置文件
* 配置文件類型:properties和yml
* 配置文件加載順序:bootstrap application application-dev
3、SpringCloud
(1)是很多框架總稱,使用這些框架實現微服務架構,基於SpringBoot實現
(2)組成框架有哪些?
(3)項目中,使用阿里巴巴Nacos,替代SpringCloud一些組件
(4)Nacos
* 使用Nacos作為注冊中心
* 使用Nacos作為配置中心
(5)Feign
* 服務調用,一個微服務調用另外一個微服務,實現遠程調用
(6)熔斷器
*容錯處理
(7)Gateway網關
* SpringCloud之前zuul網關,目前Gateway網關
(8)版本
4、MyBatisPlus
(1)MyBatisPlus就是對MyBatis做增強
(2)自動填充
(3)樂觀鎖
(4)邏輯刪除
(5)代碼生成器
5、EasyExcel
(1)阿里巴巴提供操作excel工具,代碼簡潔,效率很高
(2)EasyExcel對poi進行封裝,采用SAX方式解析
(3)項目應用在添加課程分類,讀取excel數據
總結在線教育項目技術點(后端技術二)
1、Spring Security
(1)在項目整合框架實現權限管理功能
(2)SpringSecurity框架組成:認證和授權
(3)SpringSecurity登錄認證過程
(4)SpringSecurity代碼執行過程
2、Redis
(1)首頁數據通過Redis進行緩存
(2)Redis數據類型
(3)使用Redis作為緩存,不太重要或者不經常改變數據適合放到Redis作為緩存
3、Nginx
(1)反向代理服務器
(2)請求轉發,負載均衡,動靜分離
4、OAuth2+JWT
(1)OAuth2針對特定問題解決方案
(2)JWT包含三部分
5、HttpClient
(1)發送請求返回響應的工具,不需要瀏覽器完成請求和響應的過程
(2)應用場景:微信登錄獲取掃描人信息,微信支付查詢支付狀態
6、Cookie
(1)Cookie特點:
* 客戶端技術
* 每次發送請求帶着cookie值進行發送
* cookie有默認會話級別,關閉瀏覽器cookie默認不存在了,
* 但是可以設置cookie有效時長 setMaxAge
7、微信登錄
8、微信支付
9、阿里雲OSS
(1)文件存儲服務器
(2)添加講師時候上傳講師頭像
10、阿里雲視頻點播
(1)視頻上傳、刪除、播放
(2)整合阿里雲視頻播放器進行視頻播放
* 使用視頻播放憑證
11、阿里雲短信服務
(1)注冊時候,發送手機驗證碼
12、Git
(1)代碼提交到遠程Git倉庫
13、Docker+Jenkins
(1)手動打包運行
(2)idea打包
(3)jenkins自動化部署過程
總結在線教育項目問題
1、前端問題-路由切換問題
(1)多次路由跳轉到同一個vue頁面,頁面中created方法只會執行一次
(2)解決方案:使用vue監聽
2、前端問題-ES6模塊化運行問題
(1)Nodejs不能直接運行ES6模塊化代碼,需要使用Babel把ES6模塊化代碼轉換ES5代碼 執行
3、mp生成19位id值
(1)mp生成id值是19位,JavaScript處理數字類型值時候,只會處理到16位
4、跨域問題
(1)訪問協議,ip地址,端口號,這三個如果有任何一個不一樣,產生跨域
(2)跨域解決:
* 在Controller添加注解
* 通過網關解決
5、413問題
(1)上傳視頻時候,因為Nginx有上傳文件大小限制,如果超過Nginx大小,出現413
(2)413錯誤:請求體過大
(3)如何解決?:在Nginx配置客戶端大小
(4)響應狀態碼:413 403 302
6、Maven加載問題
(1)maven加載項目時候,默認不會加載src-java文件夾里面xml類型文件的
(2)解決方案:
* 直接復制xml文件到target目錄
* 通過配置實現
面試問題
1、項目描述(重點)
2、這是一個項目還是一個產品
3、測試要求
4、企業中的項目(產品)開發流程
- 架構、數據庫設計、API文檔、MOCK數據、開發、單元測試
- 前端
- 后端
5、系統中都有那些角色?數據庫是怎么設計的?
6、視頻點播是怎么實現的(流媒體你們是怎么實現的)
7、前后端聯調經常遇到的問題:
8、前后端分離項目中的跨域問題是如何解決的
9、說說你做了哪個部分、遇到了什么問題、怎么解決的
10、分布式系統的id生成策略
11、項目組有多少人,人員如何組成?
太教條化:10幾個人,1個項目經理,1個架構師,3個后端,2個前端,2個運維,1個測試,1個美工,幾個運營
12、分布式系統的CAP原理
13、前端渲染和后端渲染有什么區別
