詳談MongoDB的那些事

在這里插入圖片描述

概念區分

什么是關系型數據庫

關系型數據庫(Relational Database)是一種基于關系模型的數據庫管理系統(DBMS)。在關系型數據庫中,數據以表格的形式存儲,表格由行和列組成,行表示數據記錄,列表示數據字段。每個表格都有一個唯一的標識符,稱為主鍵,用于唯一標識表中的每一行。

關系型數據庫的核心概念包括:

  1. 表格(Table):數據以表格的形式組織,每個表格具有名稱和一組定義了數據類型的列。表格表示實體(如人、物、事件等)以及實體之間的關系。

  2. 行(Row):表格中的每一行代表一個數據記錄,包含了不同字段的數據值。

  3. 列(Column):表格中的每一列代表一個數據字段,定義了數據的類型和格式。

  4. 主鍵(Primary Key):每個表格都有一個主鍵,用于唯一標識表中的每一行。主鍵確保數據的唯一性和完整性。

  5. 外鍵(Foreign Key):外鍵用于在不同表格之間建立關聯,表示表格之間的關系。外鍵通常引用其他表格的主鍵。

  6. SQL(Structured Query Language):關系型數據庫使用SQL來進行數據查詢、插入、更新和刪除操作。SQL是一種標準化的查詢語言,用于與關系型數據庫交互。

關系型數據庫的一些常見示例包括:

  • MySQL
  • PostgreSQL
  • Oracle Database
  • Microsoft SQL Server
  • SQLite

關系型數據庫以其結構化的數據模型和廣泛的應用領域而聞名。它們適用于需要復雜數據關系和豐富查詢的應用,如企業應用、金融系統、人力資源管理等。然而,隨著數據的不斷增長和應用場景的多樣化,出現了許多其他類型的數據庫,如NoSQL數據庫,用于處理非結構化和半結構化數據,而且本文講到的MongoDB就屬于非關系型數據庫,也是改文章的主角。

什么是非關系型數據庫

非關系型數據庫(NoSQL,Not Only SQL)是一類數據庫管理系統(DBMS),與傳統的關系型數據庫相比,它們采用不同的數據模型和存儲機制。非關系型數據庫適用于處理大規模、高度分布式、非結構化或半結構化數據,以及需要更高的可擴展性和靈活性的應用場景。

非關系型數據庫的主要特點包括:

  1. 數據模型多樣性:非關系型數據庫支持多種數據模型,例如鍵值對、文檔、列族、圖形等,以適應不同類型的數據。

  2. 分布式架構:許多非關系型數據庫具有分布式架構,可以水平擴展,將數據分布在多臺服務器上,以實現高可用性和更好的性能。

  3. 靈活的模式:非關系型數據庫通常不需要嚴格的表結構定義,允許在數據存儲過程中動態添加、修改字段,從而適應數據模式的變化。

  4. 高可擴展性:由于其分布式性質,非關系型數據庫能夠輕松地擴展以處理大量數據和高并發請求。

  5. 適應大數據:非關系型數據庫通常用于存儲和處理大規模的數據,如社交媒體數據、日志文件、傳感器數據等。

常見的非關系型數據庫類型包括:

  1. 鍵值存儲(Key-Value Stores):數據以鍵值對的形式存儲,適用于高速讀寫操作,如Redis、Amazon DynamoDB。

  2. 文檔數據庫(Document Stores):數據以類似JSON或XML格式的文檔存儲,適用于半結構化數據,如MongoDB、Couchbase。

  3. 列族數據庫(Column Family Stores):數據以列族的形式存儲,適用于大規模分布式數據,如Apache Cassandra、HBase。

  4. 圖形數據庫(Graph Databases):用于存儲和查詢圖形數據,適用于復雜的數據關系,如Neo4j、Amazon Neptune。

  5. 時間序列數據庫(Time Series Databases):專門用于存儲時間序列數據,如傳感器數據、日志數據等,如InfluxDB、OpenTSDB。

  6. 搜索引擎(Search Engines):用于全文搜索和數據分析,如Elasticsearch、Solr。

非關系型數據庫在現代應用開發中變得越來越重要,特別是在大數據、云計算和分布式系統領域,此次之所以介紹MongoDB數據庫,也是由于系統開發需求中要求對于聊天記錄做到保存,鑒于數據量較大,所以考慮到了MongoDB架構。

主角MongoDB介紹

MongoDB是一種開源、面向文檔的非關系型數據庫管理系統(NoSQL DBMS),它以其靈活性、可擴展性和強大的查詢能力而聞名。MongoDB的設計理念是為了滿足現代應用中海量數據、高可用性和復雜數據模型的需求。以下是MongoDB的一些重要特點和概念:

  1. 文檔數據庫:MongoDB使用文檔(Document)來表示數據,文檔類似于JSON格式的數據結構,可以包含各種類型的數據,如字符串、數字、日期、數組和嵌套文檔等。

  2. 面向文檔:MongoDB是一種面向文檔的數據庫,每個文檔都有一個唯一的標識符(通常稱為_id),用于唯一標識文檔。

  3. 高可擴展性:MongoDB支持水平擴展,可以通過分片(Sharding)將數據分布到多臺服務器上,以實現更高的存儲容量和性能。

  4. 動態模式:MongoDB不需要嚴格的表結構定義,文檔可以自由添加和修改字段,適應數據模式的變化。

  5. 強大的查詢語言:MongoDB支持豐富的查詢語言,可以進行復雜的查詢操作,包括過濾、排序、投影、聚合等。

  6. 索引支持:MongoDB支持各種類型的索引,包括單字段索引、復合索引、文本索引、地理空間索引等,以加速查詢操作。

  7. 復制和高可用性:MongoDB支持數據的復制和自動故障轉移,確保數據的高可用性和冗余。

  8. 數據存儲:MongoDB將數據存儲在集合(Collection)中,每個集合包含一組文檔。集合類似于關系型數據庫中的表格。

  9. 適用場景:MongoDB適用于需要存儲和處理半結構化或非結構化數據的場景,如大數據、實時數據分析、內容管理系統、日志記錄和用戶個性化推薦等。

MongoDB安裝介紹

Centos安裝MongoDB

以下是在CentOS上安裝MongoDB的詳細步驟:

  1. 更新系統:
    打開終端,并以root或具有sudo權限的用戶身份登錄,首先更新系統軟件包以確保系統處于最新狀態:
sudo yum update
  1. 添加MongoDB倉庫:
    MongoDB提供了官方的YUM倉庫,可以使用以下步驟將其添加到您的系統中:
sudo vi /etc/yum.repos.d/mongodb-org.repo

在編輯器中,添加以下內容(保存并退出編輯器):

[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
  1. 安裝MongoDB:
    使用以下命令安裝MongoDB軟件包:
sudo yum install -y mongodb-org
  1. 啟動MongoDB服務:
    安裝完成后,您可以啟動MongoDB服務,并設置其開機自啟動:
sudo systemctl start mongod
sudo systemctl enable mongod
  1. 驗證MongoDB是否已正確啟動:
    運行以下命令來驗證MongoDB是否已成功啟動:
sudo systemctl status mongod

您應該看到MongoDB服務狀態為"active (running)"。

  1. 連接到MongoDB Shell:
    使用MongoDB Shell與數據庫交互,運行以下命令:
mongo

這將連接到本地MongoDB服務器的Shell。

docker安裝MongoDB

大家知道我的習慣,肯定少不了docker的安裝方式啊
安裝MongoDB并在Docker容器中運行它是一個方便的方式,讓我們詳細介紹一下如何在Docker中安裝和運行MongoDB。

  1. 安裝Docker

    如果您尚未安裝Docker,請按照以下步驟在您的操作系統上安裝Docker:

    • 對于Linux用戶,您可以根據您的發行版選擇適當的安裝方式,通常是使用包管理工具(如aptyum)來安裝Docker。
    • 對于Windows用戶,您可以從Docker官方網站下載并運行安裝程序。
    • 對于macOS用戶,您可以從Docker官方網站下載并運行Docker Desktop安裝程序。
  2. 拉取MongoDB鏡像

    打開終端(或命令行界面)并執行以下命令,以從Docker Hub拉取MongoDB官方鏡像:

    docker pull mongo
    
  3. 運行MongoDB容器

    使用以下命令來創建并運行MongoDB容器。這將創建一個名為"my-mongodb"的MongoDB容器,并將其綁定到主機的27017端口。可以根據需要自行調整容器名稱和端口綁定。

    docker run --name my-mongodb -p 27017:27017 -d mongo
    

    此命令將以后臺模式運行MongoDB容器。要停止容器,可以使用docker stop命令:

    docker stop my-mongodb
    

    要刪除容器,可以使用docker rm命令:

    docker rm my-mongodb
    
  4. 連接到MongoDB容器

    要連接到運行中的MongoDB容器的Mongo shell,可以使用以下命令:

    docker exec -it my-mongodb mongo
    

    這將進入Mongo shell,可以在其中執行MongoDB命令。

Win系統安裝MongoDB

要在Windows系統上安裝MongoDB,請按照以下步驟操作:

  1. 下載MongoDB安裝包:
    前往MongoDB官方網站(https://www.mongodb.com/try/download/community-kubernetes-operator)下載最新版本的MongoDB安裝包。確保選擇與您的操作系統相匹配的版本。
    在這里插入圖片描述

  2. 安裝MongoDB:
    雙擊下載的安裝包,按照安裝向導指示完成安裝過程。您可以選擇自定義安裝選項,但對于大多數用戶來說,使用默認選項即可。

  3. 配置MongoDB環境變量:
    將MongoDB的安裝路徑添加到系統的環境變量中,以便在任何目錄下都可以通過命令行訪問MongoDB。將安裝路徑(默認為C:\Program Files\MongoDB\Server<版本號>\bin)添加到您的系統環境變量中的Path變量中。

  4. 創建數據目錄:
    在您選擇的位置上創建一個數據目錄,用于存儲MongoDB的數據文件。例如,您可以在C:\data目錄下創建一個名為db的文件夾。

  5. 配置MongoDB服務:
    打開命令提示符(CMD)或PowerShell,并導航到MongoDB的安裝目錄(例如:C:\Program Files\MongoDB\Server<版本號>\bin)。

    運行以下命令來啟動MongoDB服務器:

    mongod --dbpath <數據目錄路徑>
    

    請將<數據目錄路徑>替換為您在第4步中創建的數據目錄的路徑。

  6. 連接到MongoDB:
    打開另一個命令提示符或PowerShell窗口,導航到MongoDB的安裝目錄(例如:C:\Program Files\MongoDB\Server<版本號>\bin)。

    運行以下命令來連接到MongoDB:

    mongo
    

請注意,如果不按照如上步驟操作,而是直接在安裝目錄執行exe
在這里插入圖片描述

那就需要再D盤根路徑創建一個/data/db目錄,否則會閃退!!!
在這里插入圖片描述

MongoDB是默認沒有寫入環境變量的,大家需要自己配置,不再贅述!!!

MongoDB使用介紹

在MongoDB中,建立集合(類似于關系型數據庫中的表)是動態的,因此無需像關系型數據庫那樣顯式地定義表結構。只需插入文檔(類似于關系型數據庫中的記錄),MongoDB將自動創建集合并根據文檔的結構來定義字段。命令執行我們可以使用Navicat工具進行連接
在這里插入圖片描述

以下是MongoDB中創建集合和插入文檔的語法和示例:

簡單使用

  1. 創建集合并插入文檔:
// 使用insertOne插入文檔并創建集合
db.collectionName.insertOne({ field1: "value1", field2: "value2", ... })

示例:

db.students.insertOne({ name: "李紅", age: 25, major: "Computer Science" })
db.students.insertOne({ name: "張飛", age: 22, major: "Biology" })

在這里插入圖片描述

  1. 查詢集合中的文檔:
// 查詢集合中的所有文檔
db.collectionName.find()// 查詢特定條件的文檔
db.collectionName.find({ field: "value" })

示例:

// 查詢所有學生
db.students.find()// 查詢年齡大于等于 25 歲的學生
db.students.find({ age: { $gte: 25 } })
  1. 更新文檔:
// 使用updateOne更新單個文檔
db.collectionName.updateOne({ condition }, { $set: { field: "new value" } })// 使用updateMany更新多個文檔
db.collectionName.updateMany({ condition }, { $set: { field: "new value" } })

示例:

// 更新學生的專業
db.students.updateOne({ name: "張飛" }, { $set: { major: "Engineering" } })
  1. 刪除文檔:
// 使用deleteOne刪除單個文檔
db.collectionName.deleteOne({ condition })// 使用deleteMany刪除多個文檔
db.collectionName.deleteMany({ condition })

示例:

// 刪除專業為"Biology"的學生
db.students.deleteMany({ major: "Biology" })

我們再舉一個例子,假設正在開發一個簡單的博客平臺,可以使用MongoDB來存儲博客帖子和評論。在這個復雜業務的示例中,我們將涵蓋以下方面:

  1. 創建集合和插入文檔
  2. 查詢和篩選數據
  3. 更新文檔
  4. 使用索引

1. 創建集合和插入文檔:

首先,我們創建一個集合來存儲博客帖子,每個帖子包含標題、內容和發布日期:

// 創建博客集合并插入帖子文檔
db.blogPosts.insertOne({title: "MongoDB的相關介紹   ——IT小輝同學",content: "MongoDB 是一個非關系型數據庫",publishDate: new Date("2023-08-01"),comments: []
})

2. 查詢和篩選數據:

現在,我們查詢博客集合中的帖子并篩選出發布日期在特定范圍內的帖子:

// 查詢發布日期在特定范圍內的帖子
db.blogPosts.find({publishDate: { $gte: new Date("2023-08-01"), $lt: new Date("2023-08-10") }
})

3. 更新文檔:

假設一篇帖子收到了一條新評論,我們可以將評論添加到帖子的評論數組中:

// 更新帖子,添加新評論
db.blogPosts.updateOne({ title: "MongoDB的相關介紹,很有意思奧   ——IT小輝同學" },{$push: {comments: {author: "User123",text: "MongoDB,我們一起學習!",timestamp: new Date()}}}
)

4. 使用索引:

為了提高查詢性能,我們可以創建索引以加速某些查詢操作。例如,為了加速根據標題搜索帖子的查詢,我們可以創建標題字段的索引:

// 創建標題字段的索引
db.blogPosts.createIndex({ title: "text" })

這是一個簡化的示例,展示了如何在MongoDB中處理博客帖子和評論的復雜業務場景。實際業務中可能還需要處理更多情況,如用戶認證、數據驗證、用戶關系等。MongoDB的靈活性和功能可以適應各種復雜的業務需求。

請注意,MongoDB的語法使用了JSON,也就是我們Java常說的對象,因此數據和查詢都是使用JSON的形式。

復雜語法

當您需要進行更復雜的增刪改查操作時,MongoDB提供了豐富的查詢、更新和聚合功能來滿足您的需求。以下是更復雜的示例,涵蓋了多條件查詢、更新和聚合操作:

1. 多條件查詢:

假設您要查詢發布日期在特定范圍內,同時標題包含特定關鍵詞的帖子:

db.blogPosts.find({publishDate: { $gte: new Date("2023-08-01"), $lt: new Date("2023-08-10") },title: { $regex: "MongoDB" }
})

2. 多條件更新:

更新帖子的評論,將指定作者的所有評論中的文本替換為新文本:

db.blogPosts.updateMany({ "comments.author": "User123" },{ $set: { "comments.$[].text": "新文本" } }
)

3. 使用聚合:

聚合操作允許您進行數據處理和轉換。假設您要計算每篇帖子的評論數量并按評論數量降序排序:

db.blogPosts.aggregate([{$project: {title: 1,numberOfComments: { $size: "$comments" }}},{$sort: { numberOfComments: -1 }}
])

以上代碼使用聚合管道,首先通過$project將每篇帖子的標題和評論數量提取出來,然后通過$sort按評論數量降序排序。

4. 刪除多個文檔:

假設您要刪除評論數低于指定值的所有帖子:

db.blogPosts.deleteMany({comments: { $size: { $lt: 5 } }
})

這將刪除所有評論數少于5條的帖子。

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

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

相關文章

神秘的ip地址8.8.8.8,到底是什么類型的DNS服務器?

下午好&#xff0c;我的網工朋友。 DNS&#xff0c;咱們網工配置網絡連接或者路由器時&#xff0c;高低得和這玩意兒打交道吧。 它是互聯網中用于將人類可讀的域名&#xff08;例如http://www.example.com&#xff09;轉換為計算機可理解的IP地址&#xff08;例如192.0.2.1&a…

元宇宙核能發電VR模擬仿真實訓教學為建設新型電力系統提供重要支撐

隨著“碳達峰、碳中和”目標與建設新型能源體系的提出&#xff0c;在元宇宙環境下建設電力系統是未來發展的趨勢。以物聯網、區塊鏈、數字孿生、混合現實等技術為主要代表的元宇宙技術體系及其在電力和能源系統中的應用&#xff0c;將會促進智能電網的發展&#xff0c;為建設新…

Oracle 知識篇+分區表上的索引由global改為local注意事項

★ 知識點 二、知識點 ?Local型索引有如下優點 1.Only one index partition must be rebuilt when a maintenance operation other than SPLIT PARTITION or ADD PARTITION is performed on an underlying table partition. 2.The duration of a partition maintenance opera…

【uniapp】使用Vs Code開發uniapp:

文章目錄 一、使用命令行創建uniapp項目&#xff1a;二、安裝插件與配置&#xff1a;三、編譯和運行:四、修改pinia&#xff1a; 一、使用命令行創建uniapp項目&#xff1a; 二、安裝插件與配置&#xff1a; 三、編譯和運行: 該項目下的dist》dev》mp-weixin文件導入微信開發者…

unity vscode 代碼關聯 跳轉 BUG

一早打開電腦發現代碼關聯失效了&#xff0c;目測可能跟昨天一些插件更新有關 結論 就這貨&#xff0c;開了就沒法提示代碼關聯&#xff0c;估計預覽版全是BUG。 另一個坑 同期有個unity插件也是預覽版&#xff0c;“非常好使”&#xff0c;當場去世。評論點開有好幾個人說用…

替代阿托斯DLKZOR-T/DLHZO-TES直動式伺服閥比例閥

DLKZOR-T/DLKZOR-TES直動式伺服閥比例閥結構&#xff1a; 1&#xff0c;LVDT傳感器 2&#xff0c;比例電磁鐵 3&#xff0c;閥體 4&#xff0c;閥套 5&#xff0c;閥芯 6&#xff0c;復位彈簧 7&#xff0c;集成數字放大器 8&#xff0c;七芯插頭 9&#xff0c;RS232通…

[保研/考研機試] 楊輝三角形 西北工業大學復試上機題 C++實現

題目描述 Time Limit: 1000 ms Memory Limit: 256 mb 輸入n值&#xff0c;使用遞歸函數&#xff0c;求楊輝三角形中各個位置上的值。 輸入描述: 一個大于等于2的整型數n 輸出描述: 題目可能有多組不同的測試數據&#xff0c;對于每組輸入數據&#xff0c; 按題目的要求輸…

15.3.2 【Linux】系統的配置文件:/etc/crontab,/etc/cron.d/*

這個“ crontab -e ”是針對使用者的 cron 來設計的&#xff0c;如果是“系統的例行性任務”時&#xff0c; 該怎么辦呢&#xff1f;是否還是需要以 crontab -e 來管理你的例行性工作調度呢&#xff1f;當然不需要&#xff0c;你只要編輯/etc/crontab 這個文件就可以。有一點需…

arcpy創建基本要素:點和多點

目錄 創建Point點要素步驟一&#xff1a;創建空間參考步驟二&#xff1a;創建要素類步驟三&#xff1a;創建字段步驟四&#xff1a;創建記錄并插入位置信息 創建Multipoint多點要素步驟一&#xff1a;創建空間參考&#xff08;同上&#xff09;步驟二&#xff1a;創建要素類步驟…

機器學習終極指南:特征工程(01/2) — 第 -2 部分

西姆蘭吉特辛格 一、介紹 歡迎來到“機器學習終極指南”的第二部分。在第一部分中&#xff0c;我們討論了探索性數據分析 &#xff08;EDA&#xff09;&#xff0c;這是機器學習管道中的關鍵步驟。在這一部分中&#xff0c;我們將深入研究特征工程&#xff0c;這是機器學習過程…

使用shift關鍵字,寫一個帶二級命令的腳本(如:docker run -a -b -c中的run)

省流&#xff1a;shift關鍵字 探索思路 最近有一個小小的需求&#xff0c;寫一個類似于docker run -a -b -c這樣的腳本&#xff0c;這個腳本名為doline&#xff0c;它本身可以執行&#xff08;doline -a -b -c&#xff09;&#xff0c;同時又帶有幾個如run、init、start這樣的…

Qt 之 QWidget QLabel

文章目錄 前言一、Qt 工程介紹二、窗口組件1. QWidget 組件2. QLabel組件 總結 前言 一、Qt 工程介紹 Qt Creator 以工程項目的方式對源碼進行管理一個Qt Creator工程包含不同類型的文件 。 .pro 項目描述文件.pro.user用戶配置描述文件- .h頭文件.cpp源文件.ui界面描述文件資…

verilog 實現異步fifo

理論知識參考 異步FIFO_Verilog實現_verilog實現異步fifo_Crazzy_M的博客-CSDN博客 代碼 /* 位寬8bit, 位深8 */ module async_fifo#(parameter FIFO_DEPTH 8,parameter FIFO_WIDTH 8 ) (input rst_n,input wr_clk,input wr_en,input [FIFO_WIDTH - 1:0…

Chrome小技巧---多用戶登錄同一網站不串信息

測試中經常需要用到瀏覽器需要登錄多個賬號 但是有一個問題就是會串號 通過添加不同的用戶再用這用戶登錄&#xff0c;就不串號了&#xff1a; 還可以在瀏覽器的偏好設置中添加啟動地址 這樣每次打開&#xff0c;就進到設置的地址中了

el-table自適應縮放大小

安裝依賴 npm install --save vue-draggable-resizable //或 cnpm install --save vue-draggable-resizablemain.js引入依賴 import VueDraggableResizable from vue-draggable-resizable import "vue-draggable-resizable/dist/VueDraggableResizable.css"; Vue.c…

基于Redis實現全局唯一Id

微信公眾號訪問地址&#xff1a;基于Redis實現全局唯一Id 推薦文章&#xff1a; 1、使用原生Redis命令實現分布式鎖 ? 2、為什么引入Redisson分布式鎖&#xff1f; 3、SpringBoot整合多數據源&#xff0c;并支持動態新增與切換&#xff08;詳細教程&#xff09; 4、Sprin…

JVM 查看配置 jinfo 及使用 jstat,查看堆棧jstack及GC

1. Jinfo 查看正在運行的Java應用程序的擴展參數: 包含 JVM 參數與 java 系統參數 命令&#xff1a; jinfo pid 2 jstat 查看堆內存使用情況及 GC 回收頻率等&#xff1a; jstat [-命令選項] [vmid] [間隔時間(毫秒)] [查詢次數] 2.1 jstat -gc pid 最常用&#xff0c;可…

C語言必會題目(2)

W...Y的主頁 &#x1f60a; 代碼倉庫分享&#x1f495; 今天繼續分享C語言必會的題目&#xff0c;上一篇文章主要是一些選擇題&#xff0c;而今天我們主要內容為編程題的推薦與講解 準備好迎接下面的題了嗎&#xff1f;開始發車了&#xff01;&#xff01;&#xff01; 輸入…

OSI參考模型及TCP/IP協議棧

一、網絡概述 1.1、什么是網絡&#xff1f; 1、網絡的本質就是實現資源共享 2、將各個系統聯系到一起&#xff0c;形成信息傳遞、接收、共享的信息交互平臺 1.2、典型的園區網拓撲 1.3、網絡歷史發展&#xff0c;ARPA和ARPANET 1、1969年&#xff0c;美國國防部高級研究計…

前后端分離------后端創建筆記(03)前后端對接(下)

本文章轉載于【SpringBootVue】全網最簡單但實用的前后端分離項目實戰筆記 - 前端_大菜007的博客-CSDN博客 僅用于學習和討論&#xff0c;如有侵權請聯系 源碼&#xff1a;https://gitee.com/green_vegetables/x-admin-project.git 素材&#xff1a;https://pan.baidu.com/s/…