基于Java(SpringBoot)+Vue+MySQL 實現(Web)的網絡課程平臺

基于 SpringBoot 的網絡課程平臺

1 緒論

1.1 引言

本科題研究并實現了一個面向網絡學習的平臺,為需要學習的人提供了一個學習的平臺。任何人都課在本平臺進行注冊登錄,學習觀看視頻。

本平臺是一個關于網絡課程學習平臺,學員科自主選擇視頻學習,可以根據視頻的內容,視頻講師,視頻是否需要付費選擇適合自己的課程。實現學員通過網絡課程平臺學習的目的。

1.2 網絡課程平臺

網絡課程平臺是用計算機網絡將教學內容傳遞到有需求的人手里,使用學習者從知識的被動接受者轉為了知識的主動構建者。它改變了傳統教師課程授課的線性教學模式,轉而讓學習者突破時間和空間限制的非線性自主學習模式,網絡課程平臺具有以下基本特點:

1、高度仿真的虛擬教室,實時交互與錄制點播相結合;即播即錄,實施培訓開始同步進行錄制、結束后可立即進行點播、方便適應多重培訓場景。Gensee 虛擬教室系統。

2、以培訓內容為中心,便于客戶根據自己的需要進行選擇,并有利于整合優質的課程資源,形成課程資源中心。

3、提供培訓教師與學員之間實時或非實時的、多種方式的互動,最大限度的保證培訓效果。

4、強大的內容管理系統,批量的課程授權,對學員學習次數的控制,時間的監控,學習行為的跟蹤,為管理提供很大的方便。

5、良好的擴展性能,能與公司網站、其它的培訓、教學產品進行無縫銜接;管理者可以設置管理平臺的顏色、字體大小、版面布局。

6、基于 Web 的訪問方式,通過瀏覽器可以直接訪問,無需下載任何客戶端軟件,簡單易用。

1.3 網絡課程平臺的提出

基于對已有的網絡課程平臺分析可知,通過網絡教學是目前最好的做法。而網絡教學必須要建立在平臺之上,為此我的畢業設計選擇了網絡課程平臺的這樣一個課題。平臺主要是管理員通過網絡,管理員將課程內容上傳到平臺。學員在平臺選擇需要的,適合自己的課程進行學習。網絡課程平臺能為教師在網上實施教學提供全面的工具支持,并且能屏蔽復雜的技術實現過程,使得教師能夠集中精力制作教學視頻,學員通過它可以自主的進行學習交流,而不受時間與空間的限制。網絡課程平臺的以互聯網技術和數據庫技術為基礎,它具有以下特點:

(1)以基于 Web 的課程信息為核心,具有實時交互、信息獲取方便等優勢;

(2)其核心技術為數據存儲,數據的檢索、查詢,便于課程資源流通和共享;

1.4 網絡課程平臺的研究狀況

近年來,網絡技術的發展日新月異,通過網絡教學已經成為了一個全球的大趨勢。國內外很多大學會邀請一些信息技術公司為自己的學校建立一個網課平臺,來管理教學,也方便學員們課后更好的復習。一些我們熟悉的網課平臺,例如:MOOC 中國大學員慕課平臺,超新學習通等。

由于網絡中的教學可以實現對信息資源的共享,在網上可以找尋到最優秀的教材和教法,使學習者在網上可以輕松的學到最新的知識,因此是網絡教學必定是改革發展的方向。網絡課程更能為學習者提供一個建構主義的學習環境,充分體現學員的首創精神,學員有更多的機會在不同環境下去運用他們所學的知識,而且學員可以根據反饋來形成對客觀事物的認識和解決實際問題的方案,從根本上提高教學質量。網絡教學的迅速發展及普及,促進了教學設計理論的發展和完善。

目前,網絡教學在國內外受到密切的關注,對網絡課程、網上學習工具和環境的建構進行了深入的研究。從不同的學術會議、刊物等等來看,網絡教學的設計研究主要是關于建構主義學習環境的設計和協作學習的設計等方面。網絡課件的設計依據建構主義學習理論的思想,就是以學習者為中心的設計。網絡教學在很大程度上依賴于學員的自主學習,所以網絡課件的基本功能結構也應按學員自主學習的要求來設計的。

本課題針對近年來國內外網絡教學的發展情況,研究并實現了一個面向網絡學習的課件系統,本系統實現了以“網絡”為中心的設計思想。

1.5 網絡課程平臺的建設目標

在對國內外眾多優秀網絡課程平臺的研究與經驗總結經驗上,擬定本系統平臺的設計目標為:

  1. 滿足教師在本平臺上傳視頻。
  2. 提供給學員選擇課程的頁面,能進行視頻的觀看,能在課程下對本課程進行評論,交流。
  3. 可以統計學員登錄人數,學員注冊人數,學員學習人數,夠買課程人數的數據,并形成圖表展現出來。

1.6 本文結構

本文的章節安排如下:

第一章緒論部分,說明本文的研究背景和設計目標。為接下來的系統后臺的分析和設計基礎做準備。

第二章系統開環境與技術,簡單介紹系統實現過程中用到的技術。如 MyEclipse,Maven,SrpingBoot,Vue,Node,MyBatisPlus 等。

第三章系統分析與設計,對網絡課程平臺中的后臺進行需求分析,根據需求分析設計相應的功能與表結構。

第四章系統實現,給出系統后臺的具有實現,包括實現效果的核心代碼說明。

第五章總結余展望,本文所做的工作進行總結,并針對目前工作中的不足對未來工作的展望。

2 系統開發環境與技術

2.1 系統開發環境

網絡課程平臺的后臺以 IntelliJ IDEA 為開發工具,Maven 工具來管理項目 jar 包。用 Visual Studio Code 實現前端效果。

2.1.1 IntelliJ IDEA 開發工具介紹

IntelliJ IDEA,是 Java 編程語言開發的集成環境。IntelliJ 在業界被公認為最好的 Java 開發工具,尤其在智能代碼助手、代碼自動提示、重構、JavaEE 支持、各類版本工具(git、SVN 等)、JUnit、CVS 整合、代碼分析、 創新的 GUI 設計等方面的功能可以說是超常的。IDEA 是 JetBrains 公司的產品,這家公司總部位于捷克共和國的首都布拉格,開發人員以嚴謹著稱的東歐程序員為主。

選擇 IDEA 主要的原因是 IIDEA 有更加智能的協助開發、代碼提示、參數提示、快速完成語句和 Lombok 插件用注釋大大的減少我的代碼量,能夠幫助我更快的編寫代碼。

2.1.2 Maven 工具介紹

Maven 對項目進行模型抽象,充分運用的面向對象的思想,Maven 可以通過一小段描述信息來管理項目的構建,報告和文檔的軟件項目管理工具。Maven 除了以程序構建能力為特色之外,還提供高級項目管理工具。簡單的來說 Maven 是一個項目管理工具。使用 Maven 具有以下好處:

(1)依賴管理:對第三方方 jar 包進行統一管理,通過 Maven 定義 jar 包的坐標,自動從 Maven 倉庫中下載到工程

(2)生命周期:生命周期的一鍵構建,提供了一套對項目生命周期管理的標準,開發人員,測試人員統一使用 maven 進行項目的構建.項目的生命周期管理:編譯,測試,打包,部署,運行。

2.1.3 Visual Studio Code 工具介紹

VSCode 是一種簡化且高效的代碼編輯器,同時支持諸如調試,任務執行和版本管理之類的開發操作。它的目標是提供一種快速的編碼編譯調試工具。VisualStudioCode 支持多種編程語言,集成的終端,您可以在編輯器中運行腳本,編譯軟件,調試腳本,設置斷點以及進行版本管理。

2.2 系統開發技術

網絡課程平臺是基于 SpringBoot+Vue 的模式開發出來的。后端實現用的是 SpringBoot 實現,前端頁面使用的 Vue+ElementUi。操作數據庫用的技術是 MybatisPlus。

2.2.1 SpringBoot 介紹

Spring Boot 并不是用來替代 Spring 的解決方案,而是和 Spring 框架緊密結合用于提升 Spring 開發者體驗的工具。同時它集成了大量常用的第三方庫配置,Spring Boot 應用中這些第三方庫幾乎可以是零配置的開箱即用(out-of-the-box),大部分的 Spring Boot 應用都只需要非常少量的配置代碼(基于 Java 的配置),開發者能夠更加專注于業務邏輯。

2.2.2 Vue 介紹

設 Vue (讀音 /vju/,類似于 view) 是一套用于構建用戶界面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關注視圖層,不僅易于上手,還便于與第三方庫或既有項目整合。另一方面,當與現代化的工具鏈以及各種支持類庫結合使用時,Vue 也完全能夠為復雜的單頁應用提供驅動。Vue 具有輕量級框架,簡單易學雙向數據綁定,組件化,視圖、數據結構分離,虛擬 DOM,運行速度快的特點。

2.2.3 MyBatisPlus 簡介

MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。具有無侵入,損耗小,強大的 CRUD 操作,支持 Lambda 形式調用,支持多種數據庫,支持主鍵自動生成,支持 XML 熱加載,支持 ActiveRecord 模式,支持自定義全局通用操作,支持關鍵詞自動轉義,內置代碼生成器,內置分頁插件,內置性能分析插件,內置全局攔截插件,內置 SQL 注入剝離器等特性。

2.3 系統數據存儲技術

系統數據存我主要用來 MySQL 來存儲用戶信息,課程信息。用 Redis 存儲用戶訪問量,用戶手機驗證碼。用阿里的云對象存儲 OOS 來存儲圖片信息。用阿里的視頻點播服務 vod 來存儲課程視頻信息。

2.3.1 MySQL 介紹

MySQL 是一款關系型數據庫,關系型數據庫最關鍵的結構式表,由二維表及其之間的聯系所組成的一個數據組織,關系型數據庫具有以下優點:

1、易于維護:都是使用表結構,格式一致;

2、使用方便:SQL 語言通用,可用于復雜查詢;

3、復雜操作:支持 SQL,可用于一個表以及多個表之間非常復雜的查詢。

2.3.2 Redis 介紹

Redis 是一種非關系型數據庫,嚴格的來說不是算是一種數據庫,應該是一種數據結構化存儲方法的集合。使用 Redis 主要是因為關系型數據庫讀寫性能差,固定表 構,靈活度稍欠,高并發讀寫需求,對關系型數據庫來說,硬盤 I/O 是一個很大的瓶頸。Redis 具有格式靈活,速度快,高擴展性,低成本的優點。

而在眾多非關系型數據庫中選擇 Redis,主要是因為它支持復數據類型,有 String,list,set,zset,hash 類型。

2.3.3 云對象存儲 OOS 簡介

對象存儲服務(Object Storage Service,OSS)是一種海量、安全、低成本、高可靠的云存儲服務,適合存放任意類型的文件。容量和處理能力彈性擴展,多種存儲類型供選擇,全面優化存儲成本。

2.3.4 視頻點播服務 vod 簡介

阿里云視頻點播(ApsaraVideo VoD)是集音視頻采集、編輯、上傳、自動化轉碼處理、媒體資源管理、高效云剪輯處理、分發加速、視頻播放于一體的一站式音視頻點播解決方案。用戶課將視頻上傳到阿里平臺,平臺會返回一個視頻 ID,根據視頻 id,可以獲取到視頻在網絡中的地址,根據地址播放。也可以獲取到視頻播放憑證,根據視頻播放憑證播放視頻。

3 系統設計

3.1 功能模塊設計概要

整個網絡課程平臺主要包括:后臺管理模塊,能夠進行網絡課程的管理,課程講師的管理,課程分類的管理,記錄每天登陸人數、注冊人數等信息,并生成圖表。前臺用戶模塊,主要實現賬號注冊,用戶登錄,課程信息的展示,講師的展示,個人訂單中心,個人收藏的管理。未注冊的學員可以訪問課程信息,老師信息。當學員需要通過平臺學習課程視頻時,必須登錄,未登錄的學員會強制跳轉到登錄頁面。登錄后的學員可以查看自己購買的課程和未支付的訂單,未支付的訂單可以進行撤銷,已支付的訂單不可以撤銷。學員進入收藏頁面可以看自己收藏的課程,收藏的課程可以取消。學員不可以進入后臺管理系統,后臺管理系統只能允許管理員和老師登錄。

3.2 系統架構

系統架構是系統設計的基礎

3.2.1 基于 B/S 體系

整個網絡課程平臺采用了 Browser/Web/DataBase 的 3 層體系結構,Browser/Server 的體系中,用戶可以通過瀏覽器向分布在網絡上的服務器發出請求,服務器對瀏覽器的進行處理,將用戶所需信息返回到瀏覽器。在客戶機端僅通過瀏覽器軟件實現同用戶輸入/輸出,而應用程序在服務器端進行安裝和運行,服務器將完成對數據庫的訪問和應用程序的執行。瀏覽器發出請求,而其余數據請求,加工,結果返回以及動態網絡生成等工作全部由 Web Server 完成。

在 Browser/Server 三層體系結構下,表示層(presentation)、功能層(business)、數據層(data service)被分割成 3 個相對獨立的單元。其中表示層使用的是 Vue+ElementUI 實現,功能層使用的是 SpringBoot 實現,數據層主要用來 MybatisPlus 實現。

3.2.2 詳細介紹

在本網絡課程平臺的表示層中我不僅使用了 Vue+ElementUi,還使用了 Nginx 的正向代理。所謂的正向代理就是就是用戶訪問指定的接口,通過對 Nginx 配置監聽端口,并設置監聽路徑。實現用戶訪問通過指定的接口可以訪問到其他其他接口。

在本網絡課程平臺的表示層中我不僅使用了 SpringBoot 還使用了 Nacos,Nacos 是阿里巴巴推出來的一個新開源項目,是一個更易于構建云原生應用的動態服務發現、配置管理和服務管理平臺。Nacos 致力于幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平臺。 Nacos 是構建以“服務”為中心的現代應用架構 (例如微服務范式、云原生范式) 的服務基礎設施。

3.3 系統功能模塊設計

本平臺的軟件設計分為管理后臺和網站前臺。

管理后臺要分為登錄模塊,課程模塊,課程分類模塊,教師模塊,統計中心,如圖 3.1 所示。

圖 3.1 網絡課程平臺管理后臺

網站前臺主要分為學員登錄模塊,網站首頁,課程信息,教師信息,訂單信息,個人收藏,具體如圖 3.2 所示。

圖 3.2 網絡課程平臺用戶模塊

系統主要功能介紹如下:

后臺登錄模塊:完成管理員和老師的登錄。

后臺首頁:能夠實時統計今天登錄人數,觀看視頻人數,購買課程人數。

后臺課程管理模塊:完成對課程的修改課程基本信息,如課程的簡介,課程的章節,小節內容。,視頻的上傳,講授課程的講師,課程價格修改。刪除課程視頻,課程章節,課程。新增課程視頻,課程章節,查詢課程。

后臺老師管理模塊:完成對講師的個人信息修改,新增講師,按條件查詢。

后臺課程分類管理:上傳 Execl 文件,并解析生成數據庫數據。生成后課查看課程分類的樹狀圖。

后臺統計中心模塊:每天晚上 1 點,自動生成前一天的登錄人數,觀看視頻人數,購買課程人數等數據保存到數據庫中。可在統計中心中看到可視化圖形數據。管理人員可手動生成前七天的數據,保存到數據庫中。

前臺登錄模塊:完成學員登錄,注冊。

前臺首頁:未登錄的學員也可訪問本頁,本頁熱門課程是根據課程的瀏覽量排序顯示前八條。本頁的熱門老師則是根據老師所講授的所有課程的瀏覽量選擇出前八條數據顯示。本頁的輪播圖則是今日推薦課程,推薦課程則需要講授交付費用,管理員設置。

4 數據庫的分析與設計

4.1 系統數據庫建模及其創建

使用數據庫系統的好處就是由數據庫管理系統的的特點或優點決定的。使用數據庫系統的好處很多,列如,可以大大提高應用開發的效率,方便用戶使用,減輕數據庫系統管理人員維護負擔,等等。使用數據庫系統可以大大提高應用開發效率。用為在數據庫系統中應用程序必考慮數據的定義,存儲和數據的存取的具體路徑,這些工作都由 DBMS 來完成。用一個通俗的比喻,使用了 DBMS 就如有了一個好參謀,好助手,許多工具的技術工作都由這個助手來完成。開發人員就可以專注于應用邏輯設計,而不必為了數據庫管理的許許多多復雜的細節操心。還有,當用戶邏輯改變,數據的邏輯結構也需要改變時,由于數據庫系統提供了數據語序之間的獨立性,數據結構的改變就是 DBA 的責任,開發人員不必修改應用程序,或者只需要修改很少的應用程序,從而簡化了應用程序的編制,又大大減少了應用程序的維護和修改。使用數據庫管理系統可以減輕數據庫系統管理人員維護系統的負擔。因為 DBMS 在數據庫建立,運用和維護時對數據庫進行統一的管理和控制,包括數據的完整性,安全性,多用戶并發控制,故障恢復等,都由 DBMS 執行。總之,使用數據庫的優點很多,既便于數據的集中管理,控制冗余,提高數據的利用率和一致性,又利于應用程序的開發和維護。

4.2 數據表及其功能設計的分析與設計

本次開發的網課課程平臺中的數據庫包含以下幾個方面:

課程信息:包括課程名,課程講師,課程圖片,課時,課程價格等。

課程章節信息:課程章節與課程信息的主鍵關聯,主要包含的信息有章節名。

課程小節信息:課程小節與課程章節的主鍵關聯,主要包含的信息有小節名,視頻在阿里云點播的 id,視頻名,是否可以免費試看。

課程分類:課程分類是一個自關聯表。主要信息課程分類名。

講師信息:包括講師的姓名,講師的介紹,講師的頭銜,講師的頭像。

學員信息:包括登錄的用戶名,登錄的密碼,昵稱,性別,手機號,用戶頭像。

課程評論信息:主要與課程,講師,學員關聯,包含了學員頭像,學員評論內容。

課程訂單信息:課程訂單信息與課程和學員關聯,包含訂單號,訂單金額,支付類型,訂單狀態。

課程支付信息:課程支付信息與課程訂單關聯,主要交易成功的訂單信息。

統計信息:將每日生成的統計信息存放到此表,主要包括用戶登錄人次,視頻觀看人次,課程購買人次,注冊人次。

本平臺使用 MySQL 作為數據庫管理系統,數據庫命名為 ljh_edu,該數據庫中包含的數據表及其功能如表 4.1 所示。

表 4.1 數據庫包含的數據表及其功能

數據表

功能

edu_course

課程基本信息

edu_course_description

課程詳細介紹

edu_chapter

課程章節信息

edu_video

課程小節信息

edu_comment

課程評論信息

crm_banner

首頁的輪播圖信息

edu_subject

課程分類信息

edu_teacher

講師基本信息

t_order

訂單信息

t_pay_log

訂單支付信息

ucenter_member

學員基本信息

statistics_daily

統計信息

edu_course_collect

學員收藏的課程

4.3 數據庫詳細設計設計

在平臺數據庫的設計中我并未用到外鍵,主要原因是外鍵會產生級聯問題,每次級聯 deleted 或 update 的時候,都要級聯操作相關的外鍵表,不論有沒有這個表要,尤其是在高并發的場景下,這會導致性能的瓶頸。在有外鍵時,開發和維護都及其的不方便,為此我將所有的外鍵關聯概念都移到了應用層解決,數據庫中沒有任何的外鍵關聯。

我為每張表都設計了版本(version)字段,是為了實現樂觀鎖,主要目的是為了解決事務并發帶來的問題。刪除(is_deleted)字段,是為了實現邏輯刪除,用戶在選擇刪除數據后數據不再顯示,數據庫的數據并未被刪除。創建時間(gmt_create)字段,修改時間(gmt_modified)字段。

(1)課程基本信息表 (edu_course)

課程基本信息表主要用于存放課程基本信息,主要包括課程的 id,講師 id,課程分類 id,課程父級分類 id,課程名 title,課程價格 price,課時數 lesson_num,課程圖片 cover,課程購買數 buy_count,課程瀏覽數 view_count,課程狀態 status。其中課程 id 作為關鍵字。課程基本信息表結構如表 4.2 所示。

表 4.2 課程信息表(edu_course)

字段名

數據類型

注釋

備注

id

char

課程 ID

主鍵

teacher_id

char

課程講師 ID

不是 null

subject_id

char

課程專業 ID

不是 null

subject_parent_id

char

課程專業父級 ID

不是 null

title

varchar

課程標題

不是 null

price

decimal

課程銷售價格,設置為 0 則可免費觀看

不是 null

lesson_num

int

總課時

不是 null

cover

varchar

課程封面圖片路徑

不是 null

buy_count

bigint

銷售數量

不是 null

view_count

bigint

瀏覽數量

不是 null

version

bigint

樂觀鎖

不是 null

status

varchar

課程狀態 Draft 未發布 ?Normal 已發布

不是 null

is_deleted

tinyint

邏輯刪除 1(true)已刪除, 0(false)未刪除

不是 null

gmt_create

datetime

創建時間

不是 null

gmt_modified

datetime

更新時間

不是 null

(2)課程詳細介紹表(edu_course_description)

課程詳細介紹表基本字段有,課程 id,課程詳細介紹 description,其中課程 id 為主鍵,且與課程基本信息表中的課程 id 相同。課程詳細介紹表的表結構如表 4.3 所示。

表 4.3 課程詳細介紹表(edu_course_description)

字段名

數據類型

注釋

備注

id

char

課程 ID

主鍵

description

text

課程簡介

不是 null

gmt_create

datetime

創建時間

不是 null

gmt_modified

datetime

更新時間

不是 null

(3)課程章節信息表(edu_chapter)

課程章節信息表基本字段有,章節 id,課程 id,章節名稱 title,章節排序 sort,且與課程基本信息表中的課程 id 相同。課程章節信息表的表結構如表 4.4 所示。

表 4.4 課程章節信息表(edu_chapter)

字段名

數據類型

注釋

備注

id

char

章節 ID

主鍵

course_id

char

課程 ID

不是 null

title

varchar

章節名稱

不是 null

sort

int

顯示排序

不是 null

gmt_create

datetime

創建時間

不是 null

gmt_modified

datetime

更新時間

不是 null

(4)課程小結信息表(edu_video)

課程小節信息表基本字段有,小節 id,課程 id,章節 id,小節的名稱 title,小節視頻在云端的 id,小節視頻在云端的名字,小節的排序 sort,小節視頻的播放次數 play_count,小節視頻是否免費 is_free。其中小節 id 為主鍵。課程小結信息表的表結構如表 4.5 所示。

表 4.5 課程小結信息表(edu_video)

字段名

數據類型

注釋

備注

id

char

視頻 ID

主鍵

course_id

char

課程 ID

不是 null

chapter_id

char

章節 ID

不是 null

title

varchar

節點名稱

不是 null

video_source_id

varchar

云端視頻資源

不是 null

video_original_name

varchar

原始文件名稱

不是 null

sort

int

排序字段

不是 null

play_count

bigint

播放次數

不是 null

is_free

tinyint

是否可以試聽:0 收費 1 免費

不是 null

status

varchar

Empty 未上傳 Transcoding 轉碼中 ?Normal 正常

不是 null

version

bigint

樂觀鎖

不是 null

gmt_create

datetime

創建時間

不是 null

gmt_modified

datetime

更新時間

不是 null

(5)課程評論信息表(edu_comment)

課程評論信息表基本字段有,課程評論 id,課程 id,講師 id,學員 id,學員昵稱 nickname,學員頭像 avatar,評論內容 content。其中課程評論 id 為主鍵。課程評論信息表的表結構如表 4.6 所示。

表 4.6 課程評論信息表(edu_comment)

字段名

數據類型

注釋

備注

id

char

課程評論 id

主鍵

course_id

varchar

課程 id

不是 null

teacher_id

char

講師 id

不是 null

member_id

varchar

學員 id

不是 null

nickname

varchar

學員昵稱

不是 null

avatar

varchar

學員頭像

content

varchar

評論內容

is_deleted

tinyint

邏輯刪除 1(true)已刪除, 0(false)未刪除

gmt_create

datetime

創建時間

不是 null

gmt_modified

datetime

更新時間

不是 null

(6)首頁的輪播圖信息信息表(crm_banner)

首頁的輪播圖信息信息表基本字段有,輪播圖 id,輪播圖名稱 title,輪播圖圖片路徑 image_url,輪播圖連接地址 link_url,輪播圖排序 sort。其中課輪播圖 id 為主鍵。首頁的輪播圖信息信息表的表結構如表 4.7 所示。

表 4.7 首頁的輪播圖信息信息表(crm_banner)

字段名

數據類型

注釋

備注

id

char

輪播圖 ID

主鍵

title

varchar

輪播圖標題

image_url

varchar

輪播圖圖片地址

不是 null

link_url

varchar

輪播圖鏈接地址

sort

int

輪播圖排序

不是 null

is_deleted

tinyint

邏輯刪除 1(true)已刪除, 0(false)未刪除

不是 null

gmt_create

datetime

創建時間

不是 null

gmt_modified

datetime

更新時間

不是 null

gmt_modified

char

ID

不是 null

(7)課程分類信息表(edu_subject)

課程分類信息表基本字段有,課程類別 id,類別名稱 title,父類別 id,排序 sort。其中課程類別 id 為主鍵。課程分類信息表的表結構如表 4.8 所示。

表 4.8 課程分類信息表(edu_subject)

字段名

數據類型

注釋

備注

id

char

課程類別 ID

主鍵

title

varchar

類別名稱

不是 null

parent_id

char

父類別 ID

不是 null

sort

int

排序字段

不是 null

gmt_create

datetime

創建時間

不是 null

gmt_modified

datetime

更新時間

不是 null

(8)講師基本信息表(edu_teacher)

講師基本信息表基本字段有,講師 id,講師姓名 name,講師簡介 intro,講師資歷 career,講師頭銜 level,講師頭銜 avatar,講師排序 sort。其中講師 id 為主鍵。講師基本信息表的表結構如表 4.9 所示。

表 4.9 講師基本信息表(edu_teacher)

字段名

數據類型

注釋

備注

id

char

講師 ID

主鍵

name

varchar

講師姓名

不是 null

intro

varchar

講師簡介

不是 null

career

varchar

講師資歷,一句話說明講師

不是 null

level

int

頭銜 1 高級講師 2 首席講師

avatar

varchar

講師頭像

不是 null

sort

int

排序

is_deleted

tinyint

邏輯刪除 1(true)已刪除, 0(false)未刪除

不是 null

gmt_create

datetime

創建時間

不是 null

gmt_modified

datetime

更新時間

不是 null

(9)訂單信息表(t_order)

訂單信息表基本字段有,訂單 id,訂單號 order_no,課程 id,課程名稱 course_title,課程封面 course_cover,講師名稱 teacher_name,學員 ids,學員昵稱 nikename,學員手機號 mobile,訂單金額 total_fee,訂單支付類型 pay_type,訂單支付狀態 status。其中訂單 id 為主鍵。訂單信息表的表結構如表 4.10 所示。

表 4.10 訂單信息表(t_order)

字段名

數據類型

注釋

備注

id

char

訂單 id

主鍵

order_no

varchar

訂單號

不是 null

course_id

varchar

課程 id

不是 null

course_title

varchar

課程名稱

course_cover

varchar

課程封面

teacher_name

varchar

講師名稱

member_id

varchar

學員 id

不是 null

nickname

varchar

學員昵稱

mobile

varchar

學員手機

total_fee

decimal

訂單金額(分)

pay_type

tinyint

支付類型(1:微信 2:支付寶)

status

tinyint

訂單狀態(0:未支付 1:已支付)

is_deleted

tinyint

邏輯刪除 1(true)已刪除, 0(false)未刪除

不是 null

gmt_create

datetime

創建時間

不是 null

gmt_modified

datetime

更新時間

不是 null

(10)訂單支付信息表(t_pay_log)

訂單支付信息表基本字段有,訂單支付 id,訂單號 order_no,支付完成時間 pay_time,支付金額 total_fee,交易流水號 transaction_id,交易狀態 trade_state,支付類型 pay_type。其中訂單支付 id 為主鍵。訂單支付信息表的表結構如表 4.11 所示。

表 4.11 訂單支付信息表(t_pay_log)

字段名

數據類型

注釋

備注

id

char

訂單支付 id

主鍵

order_no

varchar

訂單號

不是 null

pay_time

datetime

支付完成時間

total_fee

decimal

支付金額(分)

transaction_id

varchar

交易流水號

trade_state

char

交易狀態

pay_type

tinyint

支付類型(1:微信 2:支付寶)

不是 null

attr

text

其他屬性

is_deleted

tinyint

邏輯刪除 1(true)已刪除, 0(false)未刪除

不是 null

gmt_create

datetime

創建時間

不是 null

gmt_modified

datetime

更新時間

不是 null

(11)學員基本信息表(ucenter_member)

學員基本信息表基本字段有,學員 id,手機號 mobile,密碼 password,昵稱 nickname,性別 sex,年齡 age,學員頭像 avatar,學員簽名 sign。其中學員 id 為主鍵。學員基本信息表的表結構如表 4.12 所示。

表 4.12 學員基本信息表(ucenter_member)

字段名

數據類型

注釋

備注

id

char

學員 id

主鍵

mobile

varchar

手機號

password

varchar

密碼

nickname

varchar

昵稱

sex

tinyint

性別 1 女,2 男

age

tinyint

年齡

avatar

varchar

學員頭像

sign

varchar

學員簽名

is_disabled

tinyint

是否禁用 1(true)已禁用, ?0(false)未禁用

不是 null

is_deleted

tinyint

邏輯刪除 1(true)已刪除, 0(false)未刪除

不是 null

gmt_create

datetime

創建時間

不是 null

gmt_modified

datetime

更新時間

不是 null

(12)統計信息表(statistics_daily)

統計信息表基本字段有,統計 id,統計日期 date_calculated,注冊人數 register_num,登錄人數 login_num,video_view_num 每日播放視頻人數 video_view_num,每日課程購買人數 course_num。其中統計 id 為主鍵。統計信息表的表結構如表 4.13 所示。

表 4.13 統計信息表(statistics_daily)

字段名

數據類型

注釋

備注

id

char

統計 ID

主鍵

date_calculated

varchar

統計日期

不是 null

register_num

int

注冊人數

不是 null

login_num

int

登錄人數

不是 null

video_view_num

int

每日播放視頻人數

不是 null

course_num

int

每日購買課程人數

不是 null

gmt_create

datetime

創建時間

不是 null

gmt_modified

datetime

更新時間

不是 null

(13)學員收藏的課程表(edu_course_collect)

學員收藏的課程表基本字段有,收藏 id,課程 id,學員 id。其中收藏 id 為主鍵。學員收藏的課程表的表結構如表 4.14 所示。

表 4.14 學員收藏的課程表(edu_course_collect)

字段名

數據類型

注釋

備注

id

char

收藏 ID

主鍵

course_id

char

課程講師 ID

不是 null

member_id

char

學員 ID

不是 null

is_deleted

tinyint

邏輯刪除 1(true)已刪除, 0(false)未刪除

不是 null

gmt_create

datetime

創建時間

不是 null

gmt_modified

datetime

更新時間

不是 null

5 系統實現

5.1 系統頁面結構設計

5.1.1 后臺管理頁面設計

網絡課程平臺的后臺管理頁面主要分成了三個部分,分別為頂部的導航欄,左部的信息頁面,右部的主頁面。

為了減少代碼量和頁面的美觀,所以我使用了 vue 官方提供的模板,在此模板的基礎上進行自己頁面的開發,大大的提高了我的開發效率和頁面的美觀。整個頁面通過 Vue 的 components 模板組合到一起。通過模板的繼承實現。后臺管理頁面實現效果如圖 5.1 所示。

圖 5.1 后臺管理頁面

頂部導航欄:面包屑導航欄顯示條,管理員頭像。

左部頁面:講師管理,課程分類管理,課程管理,統計分析。

右部頁面:為主體,根據選擇的頁面不同,顯示不同的效果。

5.1.2 前臺頁面設計

網絡課程平臺的前臺頁面主要分成了三個部分,分別為頂部信息航欄,中部的主體頁面,底部的網站信息。前臺頁面實現效果如圖 5.2 所示。

圖 5.2 前臺頁面實現效果

5.2 系統功能模塊實現

5.2.1 后臺管理員模塊

后臺管理也面一共分為 6 個大的模塊。后臺管理員登錄模塊,后臺管理首頁模塊,講師管理模塊,課程類別管理模塊,課程管理模塊,統計中心模塊

(1)后臺管理員模塊登錄

后臺管理員是系統默認角色,其他用戶無法注冊,所有我將管理的賬號密碼放在了代碼中,管理員輸入賬號和密碼后,前端發送一個 get 請求,后臺將接收到的賬號和密碼,與代碼中默認的賬號密碼做校驗沒如果校驗成功,就返回用戶名,角色,token 給前端。前端接收到返回的數據表示登錄成功并將返回的數據設置到 cokie 中,在訪問后面的頁面時,會先去檢查 cokie 中是否存在 token。如果不存在就返回登錄頁面。管理員登錄界面如圖 5.3 所示:

圖 5.3 管理員登錄界面

(2)后臺管理首頁模塊

在管理人員登錄后可以看到后臺管理首頁主要顯示的內容為管理頭像,功能選擇條,各類數據統計結果。管理頭像是管理員登錄后,前端將后臺的數據保存在 cokie 中,在需要顯示管理員信息時就可以直接從 cokie 中獲取。功能選折條可以通過 vue 的靜態路由設置。各類數據統計中的今日登錄人次與今日視頻播放次數,是在學員登錄本網絡課程平臺的前臺時與播放視頻時,會去查詢 Redis 中是否有今日登錄人次的鍵,如果未查詢到就設置一個并且設置值為 1,如果查詢到就將原有值加 1。

為了避免高并發引起的數據錯誤,為此我使用了 Redis 分布式鎖。在每個線程去操作 Redis 數據時,先去查看操作此數據特定的 Redis 鍵,如果線程可以設置該鍵或該鍵已經過期,就代表線程取到了操作 Redis 數據的權限,將此鍵的值設置為系統時間往回 1s,在這段時間內該線程可以操作 Redis 數據,在該線程操作完數據后需要將該鎖刪除。如果線程不可以設置該鍵或該鍵還未過期,代表此數據其他線程正在操作,本線程需要等待。

今日統計數據中的今日注冊人數和今日下單總量的數據設置與其他兩個不同,這兩個數據我是通過統計數據庫中的記錄條數得出的。管理后臺首頁效果圖,如圖 5.4 所示。

圖 5.4 管理后臺首頁

(3)講師管理模塊

講師管理模塊分為兩個部分。

一個是講師列表,展示所示講師的基本信息,對講師的基本信息修改,刪除。可以根據講師的名字,講師的頭銜,添加講師的時間區間查詢講師。講師列表如圖 5.5 所示。

圖 5.5 講師列表

另外一個部分就是講師詳情頁的,可在頁面進行添加,修改講師的個人詳情操作。首先先判斷 URL 中是否含有 id,當 url 路徑中沒有 id 就是新增操作,當 url 路徑中有講師的 id 就為修改操作。運用了動態路由匹配,一個“路徑參數”使用冒號 : 標記,當匹配到一個路由是,參數值會被設置到 this.$route.params,可以每個組建中使用。講師頭像上傳需要先將講師的上傳到阿里的對象 OSS,上傳成功后阿里云會給我們返回一個 response,從 response 中取出我們需要到圖片地址,拿到的地址可以直接用瀏覽器打開。將這個返回的地址存放到講師頭像字段,保存到數據庫即可。講師信息編輯頁面如圖 5.6 所示:

圖 5.6 講師信息編輯頁面

(4)課程類別管理模塊

課程類別管理模塊分為兩個部分。

一個是課程類別展示,前端向后端發起數據請求,后端接收收到請求后,將數據保存為一個 List 集合,再在前端中使用 element-UI,使其邊成一個樹形結構。在頁面上也可以通過搜索欄進行搜索特定的課程類別。課程類別展示列表如圖 5.7 所示。

圖 5.7 課程類別管理頁面

一個是上傳課程類別,管理將課程類別寫在 execl 表格中,第一列一級類別,第二列為二級類別。在代碼中通過阿里提供的工具類解析 execl 文件得到其中的數據。保存到本地數據庫。效果如圖 5.8 所示。

圖 5.8 上傳課程類別頁面

(5)課程管理模塊

課程管理模塊分為兩個部分。

一個是課程列表,展示所有課程的基本信息,并且可以對課程的基本信息修改,刪除。可以根據課程類別,課程標題,講師名字查詢課程信息。課程列表如圖 5.9 所示。

圖 5.9 課程管理頁面

一個是課程課程發布模塊,這個模塊有三個頁面組成,第一個頁面可以對課程的基本信息進行編輯,主要有課程標題,課程類別,課程講師,課程介紹,課程價格等編輯,其中課程介紹用到了 element-UI 提供的富文本框,富文本能添加圖片,文字樣式。如圖 5.10。

圖 5.10 課程基本信息編輯頁面

第二個頁面時對課程章節的一些操作,可以在此頁面上添加課程章節和課程小結。每個課程小結可以添加一個視頻。存放此視頻我用到了阿里提供的視頻點播技術。視頻點播 VOD 是集音視頻采集、編輯、上傳、自動化轉碼處理、媒體資源管理、分發加速于一體的一站式音視頻點播解決方案。可以方便我們對視頻的管理,還可對視頻加密,用上傳視頻的返回發視頻源 id,獲取播放憑證進行播放。提高我們視頻的安全性.如圖 5.11。

圖 5.11 課程章節編輯頁面

最后一個頁面為課程發布頁面,這個頁面主要顯示一些課程的基本信息,以做確認,如圖 5.12。

圖 5.12 課程發布頁面

(6)統計中心模塊

統計中心模塊分為兩大模塊。

一個是生成指定日期數據的操作頁面,可以生成七日內的數據,我在將登出次數,和視頻觀看次數的數據保存到 Redis 時,設置了 key 值的有效期,有效期為 8 天,一旦超過這個時間,Redis 會自動將 key 刪除。Redis 是一個基于內存的存儲,所以需要將不常用的信息清除。生成指定日期數據的頁面如圖 5.13 所示

圖 5.13 生成指定日期數據的頁面

一個是數據圖形化展示頁面,在此我用來數據可視化中 Echarts,將數據數據中的數據呈折線圖的方式展現出來,并且折線圖可以清晰的看到整體的變化趨勢,管理員可以選擇用生成圖形化數據的類型和日期。如圖 5.14 所示。

圖 5.14 圖形化數據展示的頁面

5.2.2 前臺學員模塊

前臺學員模塊分為 6 大模塊,學員登錄注冊模塊,前臺首頁模塊,前臺課程模塊,前臺講師模塊,個人訂單模塊,個人收藏模塊。

(1)學員登錄注冊模塊

學員登錄注冊主要分為三個部分,注冊部分,登錄部分,個人中心部分。

注冊部分,學員點擊頂部導航欄的注冊后,跳轉到注冊頁面,學員需要在此頁面中輸入昵稱,手機號,手機號驗證碼,登錄密碼。其中手機號驗證碼的發送是使用的阿里提供的三網通信,驗證碼是由 RandomUtil 生成的隨機數。生成驗證碼后,將驗證碼保存在 Redis 中,設置過期時間為 5 分鐘。通過阿里的三網通信將驗證碼作為短信發送到手機。學員將昵稱,手機號,驗證碼,密碼輸入后。后臺會將存放在 Redis 中的數據取出,與用戶輸入的驗證碼比對。通過后,在根據手機號查詢學員信息,如果查詢到了代表學員已經被注冊了,如未查詢到,代表此手機號可以進行注冊。為了保證用戶的信息安全,需要將密碼進行 MD5 加密。學員注冊頁面效果如圖 5.15 所示。

圖 5.15 學員注冊頁面

登錄部分,學員在注冊成功后,頁面會跳轉到登錄頁面,在登錄頁面學員需要輸入手機號和密碼。由于密碼是用 MD5 加密的,MD5 加密后的數據時不可逆的。所以后臺接收到頁面傳的手機號和密碼,根據手機號查詢到學員信息。將學員輸入的密碼進行 MD5 加密后,與學員信息中的密碼做對比如果相同登錄成功。用 JWTUtils 生成 Token 和用戶信息,返回到給前端。學員登錄頁面效果如圖 5.16 所示。

圖 5.16 學員登錄頁面

個人中心部分,學員在登錄成功后,頁面會跳轉到前臺首頁,在首頁的頂部導航欄會顯示用戶頭像和退出按鈕。點擊退出登錄就會退出登錄,并清除 cokie 保存的 token 和學員信息。點擊用戶頭像會跳轉到用戶個人中心頁面,顯示學員的基本信息,并可在此頁面完善,修改自己的基本信息。個人中心頁面效果如圖 5.17 所示。

圖 5.17 個人中心頁面

(2)前臺首頁模塊

前臺首頁模塊,主要顯示分為三個部分,第一部分輪播圖,是廣告位,和平臺宣傳欄。第二部分為熱門課程,第三部分為熱門講師。熱門課程根據的是課程的瀏覽量排序,顯示前 4 的課程,熱門講師,是根據講師講授的所有課程的瀏覽數排序,顯示前 4 位講師。效果如圖 5.18 所示。

圖 5.18 前臺首頁頁面

(3)前臺課程模塊

前臺課程模塊分為三個頁面,所有課程展示頁面,課程詳細信息頁面,視頻播放頁面。

課程展示頁面,顯示所有課程,學員可根據課程類別,課程關注數,課程發布時間,課程價格等,篩選和排序課程。如圖 5.19 所示。

圖 5.19 課程展示頁面

課程詳細信息頁面,主要包含了課程基本信息,課程章節信息,課程講師信息,評論信息等。在此頁面上可以對需要付費的課程進行購買,對自己喜歡的課程可以進行收藏,如果是免費課程,或者已經購買過的視頻就可以直接觀看。如果是付費視頻未購買,或已經購買了但是為未登陸的用戶,則需要登陸后購買該課程,學員可以根據其他學員對視頻的評論選擇是否購買該課程,也可也以發表自己的評論。頁面效果如圖 5.20 所示。

圖 5.20 課程詳細信息頁面

視頻播放頁面,在用戶登錄購買課程后,可以觀看課程視頻。課程視頻是根據視頻源 Id 獲取播放憑證后,使用阿里云提供的 js,進行播放。視頻播放頁面效果如圖 5.21 所示。

圖 5.21 視頻播放頁面

(4)前臺講師模塊

前臺講師模塊,主要有兩個頁面。

講師展示頁面,將所有講師的基本信息展示在頁面上。進行顯示。效果如圖 5.22 所示。

圖 5.22 講師展示頁面

講師詳情頁面,顯示講師的基本信息與講授課程。效果如圖 5.23 所示

圖 5.23 講師詳情頁面

(5)個人訂單模塊

個人訂訂單模塊主要顯示的是所有的訂單,學員可在此也頁面完成訂單訂單的支付,也可以取消訂單,已經完成的訂單不能取消。效果如圖 5.24 所示。

圖 5.24 訂單詳情頁面

點擊去支付后,頁面跳轉到支付頁面,我使用的的是支付掃碼支付。支付寶發沙箱環境為我們提供了一個接近于真實的測試環境,使用支付寶發沙箱環境首先需要下載支付寶的秘鑰生成工具,生成應用私鑰和應用公鑰,登錄支付寶的研發者平臺獲取根據應用公鑰生成支付寶私鑰,根據支付的開發文檔,下載依賴,后編碼即可使用。支付時需要下載支付寶沙箱版。當學員掃碼之后會提示支付成功,跳轉到課程詳情頁面。如果超時未支付,也會提示二維碼過期請刷新頁面。效果如圖 5.25 所示

圖 5.25 支付頁面

(6)個人收藏模塊

個人收藏模塊,用戶可將自己喜歡的課程收藏,在本頁顯示。也可以在本頁取消收藏。效果如圖 5.26 所示。

圖 5.26 個人收藏頁面

6 系統測試

6.1 系統測試

設計(論文)正文部分字體為小四號宋體,字間距設置為標準,行間距設置為固定值 20 磅。

6.2 (名稱)

設計(論文)正文部分字體為小四號宋體,字間距設置為標準,行間距設置為固定值 20 磅。

6.2.1 (名稱)

設計(論文)正文部分字體為小四號宋體,字間距設置為標準,行間距設置為固定值 20 磅。

6.2.2 (名稱)

設計(論文)正文部分字體為小四號宋體,字間距設置為標準,行間距設置為固定值 20 磅。

6.2.3 (名稱)

設計(論文)正文部分字體為小四號宋體,字間距設置為標準,行間距設置為固定值 20 磅。

總結

經過這幾個月的努力,我終于在老師的指導和幫裝下,順利完成了本次畢業課題網絡課程平臺的設計。

本平臺是嚴格按照軟件工程學的方法來設計和開發的,用來對網絡課程進行管理,幫助那些需要一個學習平臺的同學,并且參考了其他優秀的網站,例如超新學習通,中國大學生慕課 MOOC 等平臺。通過這次的畢業設計,讓我對一個平臺的開發流程有了更深入的理解和認識,特別是增強了我的動手能力,同時將自己所學到的知識運用到實際中。

在這次的畢業設計過程,我也學習到了很多新技術,豐富了自己的技術棧,提高了自己的技術能力。也了解到了自己所學,所掌握的知識不過是滄海一粟,發現了自己的不足,感覺自己還需要學習更多的基礎知識,了解更多的前沿知識。在本次課程設計中我遇到了很多的難題,對 Vue 的學習不夠深入,一旦出現錯誤,就無法解決,只能求助老師,同學。SpringBoot 的分布式服務調用應為細小錯誤配置不正確,服務調用不到。Dubug 運用的不熟悉,代碼邏輯錯誤,無法精準快速定位,影響開發效率。通過這次在畢業設計過程中的積累和學習,我在代碼調試,排錯方面已經有很大的提升。提高了我的思維邏輯能力,提高了技術總結和撰寫論文的能力。

當然,在這短短的幾個月時間中,開發出的網絡課程平臺還有很多的不足,功能不是很完善,還有進一步的提升空間。例如可以將后臺管理系統設計成一個用戶權限系統。不同的角色登錄,顯示的權限不同。在用戶登錄界面可以設計允許第三方系統登錄,例如 QQ 登錄,微信登錄。在用戶忘記密碼后可以通過手機號驗證重新設置密碼。

在本次畢業設計中我了解到了 IT 行業每天都在發生著日新月異的變化,我們必須不斷的學習,才能保證自己不被淘汰。

參考文獻

[1] 陶輝.深入理解 Nginx(第 2 版)[M].北京:機械工業出版社,2016-2,pp

[2] 翟永超.Spring Cloud 微服務實戰.北京:電子工業出版社,2017-5,pp

[3] 劉博文.深入淺出 Vue.js.北京:人民郵電出版社.2019-3,pp

[4] 小馬哥.Spring Boot 編程思想(核心篇).北京:電子工業出版社,2019-4,pp

[5] 胡寶胤.大學生疫情防控期居家網絡課程學習行為調查[J].齊魯理工學院.2020.(7).511-523

[6] 董未末.“網課時代”高校設計類課程革新趨勢的探討[J].武漢傳媒學院.2020.(10).621-627

[7] 呂忠陽.疫情防控期間如何高效學習網課[J].陸軍勤務學院訓練基地軍需物資系.2020.(11).730-739

[8] 尹靈娟.基于互聯網的計算機應用課程教學實踐[J].麗江民族中等專業學校.2021.(1).20-25

[9] 馬艷夕.基于 SpringBoot 與 Vue 技術的企業電商平臺的設計與實現[J].平頂山技師學院.2021.(2).115-150

[10] 劉超慧.基于 SpringBoot 的教學資源平臺設計與實現[J].鄭州航空工業管理學院智能工程學院.2021.(3).311-341

致謝

首先我要感謝我的畢業指導老師周二強教授,他嚴謹細致。從畢業設計的選題,構思,撰寫都給了悉心的指導和熱情的幫忙。并且在整個畢業設計期間督促我,指導我完成畢業設計。如果沒有我的畢業指導老師的督促和指導我的畢業設計可能就不能按時完成了。周老師對工作的認真負責、對學術的鉆研精神和嚴謹的學風,都是值得我終生學習的。

其次,我要感謝計算機學院的全體老師,正是應為有了他們嚴格,無私,高質量的教導,我才能在大學這四年里學到豐富的專業知識,提高自己的能力。感謝我的導員在這四年給我們的關心,和幫助。同時也感謝這四年與我互勉互勵的諸位同學,在同學們的共同努力下,我們擁有了一個像家一樣溫暖的環境,擁有了全像親人一樣溫暖的人。我更應該感謝我的室友,在大學四年里包容我的缺點,帶著我一起學習,一起玩耍。我能在這樣一個大學里度過我的四年,是我極大的榮幸。

最后,感謝我的家人在此期間給予我的包容、關愛和鼓勵,正是由于他們的支持和照顧,我才能安心學習,并順利完成我的學業。

畢業在即,在今后的工作和生活中,我會銘記師長們的教誨,繼續不懈努力和追求,來報答所有支持和幫忙過我的人!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91112.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91112.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91112.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Centos7 | 防火墻(firewalld)使用ipset管理ip地址的集合

文章目錄一、firewalld中ipset的用途1.1 用途1.2 注意與iptables所用的ipset命令的不同,1.3 配置詳解二、firewalld中ipset的操作例子2.1 新建一個set2.2 在set中添加ip2.3 從set中刪除ip2.4 刪除一個set2.5 打印一個set的文件路徑2.6 打印一個set的內容2.8 判斷一個…

Day06_C++編程

01.思維導圖02.將鳥籠放飛所有鳥類的題&#xff0c;改成觀察者模式#include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sstream> #include <vector> #include <memory>//寫一個鳥類:有一個多…

【面試場景題】隨機立減金額計算

文章目錄背景設計思路方案結論高斯分布&#xff08;正態分布&#xff09;背景 某電商公司跟某銀行有合作&#xff0c;推進銀行信用卡辦卡&流水&#xff0c;使用此銀行信用卡用戶&#xff0c;支付可以隨機立減10&#xff5e;30元。其實公司每一筆都可獲得30元支付立減金&…

2025年湖北中級注冊安全工程師報考那些事

2025年湖北中級注冊安全工程師報考那些事各位從事建筑安全的人員看過來&#xff0c;注冊安全工程師是你們行業認可度較為高的證書。關于報考無論是安全相關專業跟不相關的專業都是可以報考的。只是年份要求不同。 本科&#xff1a;相關專業3年&#xff0c;不相關專業4年。 專科…

Prometheus + Grafana + Micrometer 監控方案詳解

這套組合是當前Java生態中最流行的監控解決方案之一&#xff0c;特別適合云原生環境下的微服務應用監控。下面我將從技術實現到最佳實踐進行全面解析。 一、技術棧組成與協作 1. 組件分工組件角色關鍵能力Micrometer應用指標門面(Facade)統一指標采集API&#xff0c;對接多種監…

實習小記(個人中心的編輯模塊)

實習小記&#xff08;個人中心的編輯模塊&#xff09; 項目需要加一個個人中心的編輯模塊&#xff0c;也是差不多搞了一天下來&#xff0c;其中遇到了很多問題&#xff0c;也是來記錄、分享一下。 技術棧&#xff1a;React、antd、TypeScript 需求 點擊編輯&#xff0c;彈出編…

【7】串口編程三種模式(查詢/中斷/DMA)韋東山老師學習筆記(課程聽不懂的話試著來看看我的學習筆記吧)

<1>前置概念補充在深入拆解三種模式前&#xff0c;先通過提供的 “函數對比表” 建立整體認知&#xff1a;這張表是串口收發的「武器庫索引」&#xff0c;清晰標注了查詢、中斷、DMA 三種模式下&#xff0c;收發 / 回調函數的對應關系。后續會結合實際代碼&#xff0c;講…

【Kubernetes 指南】基礎入門——Kubernetes 201(二)

二、滾動升級- 滾動升級&#xff08;Rolling Update&#xff09;通過逐個容器替代升級的方式來實現無中斷的服務升級&#xff1a;- 在滾動升級的過程中&#xff0c;如果發現了失敗或者配置錯誤&#xff0c;還可以隨時回滾&#xff1a;- 需要注意的是&#xff0c; kubectl rolli…

網絡資源模板--基于Android Studio 實現的圖書商城App

目錄 一、測試環境說明 二、項目簡介 三、項目演示 四、部設計詳情&#xff08;部分) 登錄注冊頁 首頁 五、項目源碼 一、測試環境說明 電腦環境 Windows 11 編寫語言 JAVA 開發軟件 Android Studio (2020) 開發軟件只要大于等于測試版本即可(近幾年官網直接下載…

JavaWeb 進階:Vue.js 與 Spring Boot 全棧開發實戰(Java 開發者視角)

作為一名 Java 開發工程師&#xff0c;當你掌握了 HTML、CSS 和 JavaScript 的基礎后&#xff0c;是時候接觸現代前端框架了。Vue.js 以其簡潔的 API、漸進式的設計和優秀的中文文檔&#xff0c;成為眾多 Java 開發者入門前端框架的首選。Vue.js 讓你能快速構建響應式、組件化的…

智能體產品化的關鍵突破:企業智能化轉型的“最后一公里”如何邁過?

智能體產品化的關鍵突破&#xff1a;企業智能化轉型的“最后一公里”如何邁過&#xff1f; 在人工智能迅猛發展的當下&#xff0c;智能體&#xff08;Agent&#xff09;成為企業數字化轉型的新引擎。無論是市場分析、客戶服務&#xff0c;還是自動化辦公&#xff0c;智能體都被…

Rust × Elasticsearch官方 `elasticsearch` crate 上手指南

1 為什么選擇官方 Rust 客戶端&#xff1f; 語義化兼容&#xff1a;客戶端 主版本 與 ES 主版本 嚴格對應&#xff0c;8.x 客戶端可對接任何 8.x 服務器&#xff1b;不存在跨主版本兼容承諾 (docs.rs)100% API 覆蓋&#xff1a;穩定 API 全量映射&#xff0c;Beta/實驗特性可按…

怎樣畫流程圖?符號與流程解構教程

在數字化辦公和項目管理日益復雜的當下&#xff0c;流程圖早已不是工程師、項目經理的專屬工具&#xff0c;它正快速成為每一位職場人提升表達效率、理清工作邏輯的利器。無論是軟件開發中的流程規范、產品設計階段的用戶路徑&#xff0c;還是企業內部的審批流程、團隊協作機制…

vue3 + vite || Vue3 + Webpack創建項目

1.vue3 vite搭建項目方法 &#xff08;需要提前裝node,js&#xff09; 1. 使用官方 create-vite 工具&#xff08;推薦&#xff09; 1.使用npm----------------------------- npm create vuelatest2.使用pnpm----------------------------- pnpm create vuelatest3.使用yarn--…

Vue2-封裝一個含所有表單控件且支持動態增減行列的表格組件

效果1. 無編輯權限&#xff1a;顯示普通表格2. 有編輯權限&#xff1a;根據配置顯示編輯控件3. 可以動態新增行&#xff0c;也可以動態新增列 核心代碼無權限情況的核心代碼<!-- 無編輯權限時顯示普通表格 --><el-tablev-if"!hasEditPermission"ref"ta…

網絡原理 - TCP/IP(一)

目錄 1. 應用層&#xff1a;用戶與網絡的 “交互窗口” 1.1 應用層協議&#xff1a;規范交互的 “通用語言” 1.2 自定義協議&#xff1a;適配特殊需求的 “專屬規則” 1.3 應用層數據格式&#xff1a;讓數據 “說得明白” 1.3.1 XML&#xff1a;結構化但繁瑣的 “老…

Orange的運維學習日記--16.Linux時間管理

Orange的運維學習日記–16. Linux時間管理 文章目錄Orange的運維學習日記--16. Linux時間管理系統與硬件時鐘時鐘類型對比查看內核支持的時鐘源本地時間調整使用 date 查看與設置一次性同步&#xff1a;ntpdate同步到硬件時鐘&#xff1a;hwclock基于 systemd 的 timedatectl交…

Git 與 GitHub 的對比與使用指南

Git 與 GitHub 的對比與使用指南 在軟件開發中&#xff0c;Git 和 GitHub 是兩個密切相關但本質不同的工具。下面我將逐步解釋它們的定義、區別、核心概念以及如何協同使用&#xff0c;確保內容真實可靠&#xff0c;基于廣泛的技術實踐。 1. 什么是 Git&#xff1f; Git 是一個…

20250726-4-Kubernetes 網絡-Service DNS名稱解析_筆記

一、Service DNS名稱 ?1. 例題:通信需求 通信場景:項目A中的Pod需要與項目B中的Pod進行通信,直接使用Pod IP不可行,因為Pod IP會隨著Pod生命周期變化。 解決方案:通過Service提供的穩定IP地址進行通信,不受Pod重建、擴容/縮容等操作影響。 2. CoreDNS介紹 ?? 基本功能…

vscode 登錄ssh記住密碼直接登錄設置

第一種情況在系統已經生成密鑰對的情況下&#xff1a;點擊這里的設置第二步&#xff1a;第三步&#xff1a;沒有填寫的給填寫一下第四步驟&#xff1a;保存后進入選擇這個點開第五步&#xff1a;去Linux終端下輸入這個命令就OK了echo "ssh-rsa內容" >> ~/.ssh/…