【MySQL】腳本化快速搭建跨平臺、可定制的MySQL數據庫

冗長的廢話就省略了,大家看到這篇博客,效果如標題所示,我將提供完整的腳本,并用 「保姆級」的詳細步驟,給你提供一個快速搭建跨平臺、可定制的 MySQL環境的解決方案。保證無論你是 Linux 服務器管理員、macOS 開發者,還是剛入門的新手,都能輕松上手!


一、環境準備:確認你的系統符合要求

1. 支持的系統列表

腳本兼容以下主流系統:

系統類型具體版本/發行版
LinuxUbuntu 20.04+Debian 11+CentOS 7+Rocky Linux 9+AlmaLinux 9+Fedora 36+
macOSmacOS 12+(Intel 芯片或 Apple Silicon 芯片均可)

2. 檢查系統類型

在終端執行以下命令,確認你的系統類型:

uname -a  # Linux 輸出示例:Linux ubuntu 5.15.0-78-generic #85-Ubuntu SMP Fri Jul 7 15:25:09 UTC 2023 x86_64# macOS 輸出示例:Darwin macOS 14.0.0 #1 SMP PREEMPT_DYNAMIC Thu Jun 20 19:45:00 PDT 2024 x86_64

3. 安裝必要依賴(Linux 專用)

Linux 系統需提前安裝基礎工具(macOS 已內置,無需操作):

Ubuntu/Debian
sudo apt update && sudo apt install -y curl gnupg2 software-properties-common
CentOS/RHEL/Rocky Linux/AlmaLinux
sudo yum install -y curl gnupg2 yum-utils device-mapper-persistent-data lvm2
Fedora
sudo dnf install -y curl gnupg2 dnf-plugins-core

二、復制腳本:一鍵自動化安裝的核心

1. 復制完整腳本

將以下 完整腳本 復制到文本編輯器(如 nano、VS Code),保存為 install_mysql_docker.sh(注意后綴為 .sh)。

#!/bin/bash# ==================== 全局變量 ====================
MYSQL_VERSION="8.0"          # MySQL 版本(支持5.7/8.0/8.1,修改此值即可)
MYSQL_ROOT_PASSWORD="YourStrongPassword123!"  # root 密碼(建議復雜)
MYSQL_PORT=3306              # 宿主機映射端口(避免與本地沖突)
DATA_DIR="/docker/mysql/data"       # 數據持久化目錄(宿主機)
CONF_DIR="/docker/mysql/conf"       # 配置文件目錄(宿主機)
LOG_DIR="/docker/mysql/logs"        # 日志目錄(宿主機)
CONTAINER_NAME="mysql-auto"         # 容器名稱
MYSQL_USER="app_user"             # 自定義普通用戶
MYSQL_PASSWORD="AppPass456"         # 自定義普通用戶密碼# ==================== 函數定義 ====================
log() {echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
}error_exit() {log "? 錯誤:$1"exit 1
}check_system() {log "🔍 檢測當前系統..."if [[ "$OSTYPE" == "linux-gnu"* ]]; then# Linux 系統(細分發行版)if command -v apt &> /dev/null; thenDISTRO="ubuntu"elif command -v yum &> /dev/null; then# 兼容 CentOS/RHEL/Rocky Linux/AlmaLinuxDISTRO="centos"elif command -v dnf &> /dev/null; then# Fedora 或 RHEL 8+DISTRO="fedora"elseerror_exit "不支持的 Linux 發行版(僅支持 Ubuntu/Debian/CentOS/RHEL/Rocky Linux/AlmaLinux/Fedora)"filog "? 檢測到 Linux 發行版:$DISTRO"elif [[ "$OSTYPE" == "darwin"* ]]; then# macOS 系統DISTRO="macos"log "? 檢測到 macOS 系統"elseerror_exit "不支持的操作系統(僅支持 Linux/macOS)"fi
}install_docker() {log "🔧 正在安裝 Docker..."case "$DISTRO" in"ubuntu"|"debian")# Ubuntu/Debian 安裝 Dockersudo apt update && sudo apt install -y apt-transport-https ca-certificates curl software-properties-commoncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io;;"centos"|"fedora")# CentOS/RHEL/Rocky Linux/AlmaLinux/Fedora 安裝 Dockerif command -v yum &> /dev/null; thensudo yum install -y yum-utils device-mapper-persistent-data lvm2sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install -y docker-ce docker-ce-cli containerd.ioelsesudo dnf install -y dnf-plugins-coresudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.reposudo dnf install -y docker-ce docker-ce-cli containerd.iofi;;esac# 啟動 Docker 并加入用戶組(避免 sudo)sudo systemctl enable --now dockersudo usermod -aG docker "$USER"log "? Docker 安裝完成,請重新登錄或執行:newgrp docker"
}pull_mysql_image() {log "🔍 正在拉取 MySQL ${MYSQL_VERSION} 鏡像..."local mysql_image="mysql:${MYSQL_VERSION}"docker pull "$mysql_image" || error_exit "鏡像拉取失敗(標簽可能不存在),請檢查 MySQL 版本是否正確"log "? 鏡像拉取完成($mysql_image)"
}create_directories() {log "📂 正在創建目錄結構..."mkdir -p "$DATA_DIR" "$CONF_DIR" "$LOG_DIR" || error_exit "目錄創建失敗"# 修復 Linux 下目錄權限(容器內 MySQL 用戶為 999:999)if [[ "$DISTRO" != "macos" ]]; thensudo chown -R 999:999 "$DATA_DIR" "$CONF_DIR" "$LOG_DIR"filog "? 目錄創建完成:$DATA_DIR, $CONF_DIR, $LOG_DIR"
}generate_my_cnf() {local conf_file="${CONF_DIR}/my.cnf"log "📝 正在生成配置文件:$conf_file"cat <<EOF > "$conf_file"
[client]
default-character-set=utf8mb4[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-time-zone='+08:00'  # 北京時間
bind-address=0.0.0.0        # 允許遠程連接
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock# 性能優化參數(根據宿主機內存調整)
innodb_buffer_pool_size=${INNODB_BUFFER_POOL_SIZE:-1G}  # 默認1G,可環境變量覆蓋
max_connections=${MAX_CONNECTIONS:-500}                 # 默認500,可環境變量覆蓋
innodb_flush_method=O_DIRECT                              # 直接IO(提升寫入性能)
innodb_io_capacity=${INNODB_IO_CAPACITY:-2000}            # 默認2000,SSD建議4000+# 日志配置
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow.log
long_query_time=${LONG_QUERY_TIME:-2}                     # 默認2秒,可環境變量覆蓋
EOFlog "? 配置文件生成完成"
}start_mysql_container() {log "🚀 正在啟動 MySQL 容器..."docker run -d \--name "$CONTAINER_NAME" \-p "${MYSQL_PORT}:3306" \-v "$DATA_DIR:/var/lib/mysql" \-v "$CONF_DIR/my.cnf:/etc/mysql/conf.d/my.cnf" \-v "$LOG_DIR:/var/log/mysql" \-e MYSQL_ROOT_PASSWORD="$MYSQL_ROOT_PASSWORD" \-e MYSQL_DATABASE="test_db" \-e MYSQL_USER="$MYSQL_USER" \-e MYSQL_PASSWORD="$MYSQL_PASSWORD" \--restart unless-stopped \mysql:"${MYSQL_VERSION}" || error_exit "容器啟動失敗"log "? 容器啟動完成(名稱:$CONTAINER_NAME,端口:$MYSQL_PORT)"
}verify_service() {log "🔍 正在驗證服務狀態..."local container_status=$(docker ps -f name="$CONTAINER_NAME" --format "{{.Status}}")if [[ "$container_status" != "Up" ]]; thenerror_exit "容器狀態異常(當前狀態:$container_status),請查看日志:docker logs $CONTAINER_NAME"filog "? 容器狀態正常(Running)"
}test_connection() {log "🔗 正在測試數據庫連接..."local test_result=$(mysql -h 127.0.0.1 -P "$MYSQL_PORT" -u root -p"$MYSQL_ROOT_PASSWORD" -e "SELECT VERSION();" 2>&1)if [[ "$test_result" == *"ERROR"* ]]; thenerror_exit "連接失敗:$test_result"filog "? 連接成功!MySQL 版本:$(echo "$test_result" | awk '{print $2}')"
}# ==================== 主流程 ====================
main() {log "===== MySQL Docker 自動安裝腳本 ====="check_systeminstall_dockerpull_mysql_imagecreate_directoriesgenerate_my_cnfstart_mysql_containerverify_servicetest_connectionlog "🎉 安裝完成!以下是關鍵信息:"log "  - 容器名稱:$CONTAINER_NAME"log "  - 宿主機端口:$MYSQL_PORT"log "  - root 密碼:$MYSQL_ROOT_PASSWORD"log "  - 數據目錄:$DATA_DIR"log "  - 連接命令:mysql -h 127.0.0.1 -P $MYSQL_PORT -u root -p"
}# 執行主流程
main

2. 腳本功能說明

這個腳本能幫你 一鍵完成 以下所有操作:

  • 自動檢測系統類型(Linux/macOS)并安裝對應版本的 Docker;
  • 拉取指定版本的 MySQL 官方鏡像(支持 5.7/8.0/8.1);
  • 創建數據、配置、日志目錄,并修復 Linux 下的權限問題;
  • 生成優化的 my.cnf 配置文件(含字符集、時區、慢查詢日志等);
  • 啟動 MySQL 容器并綁定宿主機端口;
  • 驗證容器狀態和數據庫連接;
  • 輸出關鍵信息(容器名稱、端口、密碼等)。

三、安裝步驟

步驟1:保存并賦予腳本權限

將上面的腳本復制到本地后,執行以下命令賦予執行權限:

chmod +x install_mysql_docker.sh

步驟2:運行腳本

在終端輸入以下命令,啟動自動化安裝流程:

./install_mysql_docker.sh

步驟3:等待安裝完成

腳本運行時會輸出詳細日志,無需手動操作,但需注意以下可能出現的提示:

場景1:Docker 未安裝

腳本會自動安裝 Docker,過程中可能提示:

🔧 正在安裝 Docker...
正在處理時可能會詢問是否繼續(輸入 'y' 確認)。

操作:按 Enter 鍵確認默認選項即可。

場景2:數據目錄權限問題(Linux)

若腳本檢測到 Linux 數據目錄權限異常,會提示:

?? 檢測到 Linux 數據目錄權限異常,嘗試手動修復...

操作:按提示執行 sudo chown -R 999:999 /docker/mysql/data 后重新運行腳本。

場景3:端口沖突(所有系統)

若 3306 端口被占用,腳本會提示:

? 錯誤:端口 3306 被占用(進程 PID=1234)

操作

  1. 查看占用端口的進程:lsof -i :3306
  2. 終止進程:sudo kill -9 1234(替換 1234 為實際 PID);
  3. 重新運行腳本。

四、驗證安裝:確認環境可用

1. 檢查容器狀態

運行以下命令,確認 MySQL 容器處于「運行中」狀態:

docker ps -f name=mysql-auto

預期輸出

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                    NAMES
a1b2c3d4e5f6   mysql:8.0      "docker-entrypoint.s…"   2 minutes ago    Up 2 minutes    0.0.0.0:3306->3306/tcp   mysql-auto

2. 連接 MySQL 數據庫

使用以下命令連接(輸入腳本設置的 MYSQL_ROOT_PASSWORD):

mysql -h 127.0.0.1 -P 3306 -u root -pYourStrongPassword123!

3. 執行基礎 SQL 驗證

連接成功后,執行以下命令確認數據庫可用:

-- 查看 MySQL 版本(應顯示你設置的版本,如 8.0.36)
SELECT VERSION();-- 創建測試庫(無報錯即成功)
CREATE DATABASE test_db;-- 切換到測試庫
USE test_db;-- 創建測試表并插入數據
CREATE TABLE demo (id INT, name VARCHAR(20));
INSERT INTO demo VALUES (1, 'Hello MySQL');-- 查詢數據(應返回剛插入的記錄)
SELECT * FROM demo;

4. 驗證數據持久化

即使刪除容器,數據也不會丟失。測試步驟:

# 停止并刪除容器
docker stop mysql-auto && docker rm mysql-auto# 重新啟動容器(數據會自動加載)
docker run -d --name mysql-auto -p 3306:3306 -v /docker/mysql/data:/var/lib/mysql ...(其他參數同上)# 連接后查詢數據(應仍存在)
mysql -h 127.0.0.1 -P 3306 -u root -pYourStrongPassword123 -e "SELECT * FROM test_db.demo;"

五、自定義配置:按需調整環境

1. 修改 MySQL 版本

若需切換 MySQL 版本(如 5.7),只需修改腳本中的 MYSQL_VERSION 變量:

sed -i 's/MYSQL_VERSION="8.0"/MYSQL_VERSION="5.7"/' install_mysql_docker.sh
./install_mysql_docker.sh

2. 調整容器端口

若 3306 端口被占用,可修改 MYSQL_PORT 變量(如改為 3307):

sed -i 's/MYSQL_PORT=3306/MYSQL_PORT=3307/' install_mysql_docker.sh
./install_mysql_docker.sh

3. 自定義數據目錄

若需將數據存儲到其他路徑(如 /data/mysql),修改 DATA_DIR 變量:

sed -i 's/DATA_DIR="\/docker\/mysql\/data"/DATA_DIR="\/data\/mysql"/' install_mysql_docker.sh
./install_mysql_docker.sh

4. 調整性能參數(高級)

通過環境變量覆蓋默認配置(無需修改腳本):

# 示例:調整緩沖池大小為2G,最大連接數為1000,慢查詢閾值為3秒
export INNODB_BUFFER_POOL_SIZE=2G
export MAX_CONNECTIONS=1000
export LONG_QUERY_TIME=3
./install_mysql_docker.sh

六、常見問題與解決方案

問題1:Docker 安裝失敗(Linux)

現象:運行 install_docker 時提示「無法找到包」或「權限不足」。
解決方案

  • 確保已更新包索引(sudo apt updatesudo dnf check-update);
  • 檢查網絡連接,或手動下載 Docker 安裝包(參考 https://docs.docker.com/get-docker/)。

問題2:容器啟動失敗(所有系統)

現象:腳本提示「容器啟動失敗」,日志顯示「Error starting daemon」。
解決方案

  • 查看 Docker 日志:journalctl -u docker.service(Linux);
  • 重啟 Docker 服務:sudo systemctl restart docker(Linux);
  • 檢查磁盤空間(df -h),確保 /var/lib/docker 目錄有足夠空間。

問題3:遠程連接失敗(所有系統)

現象:其他設備連接 MySQL 提示「Connection refused」。
解決方案

  • 檢查容器是否運行(docker ps);
  • 確認 bind-address=0.0.0.0 已在 my.cnf 中配置(腳本已自動添加);
  • 開放宿主機防火墻端口(如 sudo ufw allow 3306(Ubuntu)或 sudo firewall-cmd --add-port=3306/tcp --permanent(CentOS))。

總結

這篇博客從環境準備到驗證,覆蓋了 MySQL Docker 環境搭建的全流程,腳本支持主流 Linux 發行版和 macOS,兼容 MySQL 5.7/8.0/8.1 版本。無論你是新手還是運維人員,都能通腳本快速完成MySQL搭建,無需手動調整復雜配置。
現在就復制腳本,運行起來吧~ 遇到問題歡迎在評論區留言,我會幫你解決!

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

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

相關文章

MAC包頭、IP包頭 、UDP包頭中的長度含義是啥?三者之間有啥區別?

以太網幀、IP包及TCP與UDP的報文格式 下面用通俗技術的方式詳細解釋&#xff1a; 1. MAC包頭&#xff08;以太網幀頭&#xff09;中的長度 字段名稱&#xff1a;EtherType/Length位置&#xff1a;以太網幀頭的第13、14字節含義&#xff1a; 如果值小于等于1500&#xff08;0x0…

Multiscale Structure Guided Diffusion for Image Deblurring 論文閱讀

基于多尺度結構引導擴散模型的圖像去模糊 摘要 擴散概率模型&#xff08;Diffusion Probabilistic Models, DPMs&#xff09;最近被用于圖像去模糊&#xff0c;其被表述為一個以模糊輸入為條件的圖像條件生成過程&#xff0c;將高斯噪聲映射到高質量圖像。當在成對的域內數據上…

git 提交時排除一個或多個文件

前言 在提交文件時&#xff0c;總是有一些文件是不需要提交的&#xff0c;比如機器上的配置文件&#xff0c;日志文件等等&#xff0c;所以在提交時就需要排除這些文件&#xff1b; 第一種方案 git add file1 file2 比如我新添加了3個文件&#xff1a; file1.txt file2.txt fil…

OpenCV 入門:基礎圖像操作

在計算機視覺領域&#xff0c;OpenCV 無疑是最受歡迎的開源庫之一。它由 Intel 公司俄羅斯團隊發起&#xff0c;如今已成為處理圖像和視頻的強大工具。本文我會介紹OpenCV 的基礎知識&#xff0c;從圖像的讀寫顯示到實時視頻流處理&#xff0c;邁出計算機視覺的第一步。 目錄 …

大語言模型 LLM 通過 Excel 知識庫 增強日志分析,根因分析能力的技術方案(3):使用云平臺最小外部依賴方案

文章大綱 1 方案總覽(與官方文檔映射) 2 環境準備(一步完成) 3 數據層(零代碼遷移 Excel → BigQuery 或 SQLite) 4 函數聲明(JSON Schema 與官方示例一致) 5 Cloud Function(**最小外部依賴**) 6 客戶端調用(對齊官方 Python 示例) 7 Token 與性能對比(官方計費口…

C++高效實現軌跡規劃、自動泊車、RTS游戲、戰術迂回包抄、空中軌跡、手術機器人、KD樹

C++ 算法匯總 基于C++的城市道路場景 以下是基于C++的城市道路場景中車輛緊急變道軌跡生成的實現方法和示例代碼。內容涵蓋軌跡規劃算法、數學建模及代碼實現,適用于自動駕駛或駕駛輔助系統開發。 基于多項式曲線的軌跡生成 采用五次多項式(Quintic Polynomial)生成平滑…

電動汽車轉向系統及其工作原理

電動汽車的轉向系統作為電動汽車的一個關鍵系統&#xff0c;與燃油車的轉向系統有著較大差異。電動汽車的轉向系統主要分為 電動助力轉向&#xff08;EPS, Electric Power Steering&#xff09; 、電動液壓助力轉向系統&#xff08;EHPS, Electro-Hydraulic Power Steering&…

TCP/IP 體系結構網絡接口層的原理

TCP/IP 網絡接口層詳解 網絡接口層&#xff08;Network Interface Layer&#xff09;是 TCP/IP 模型的最底層&#xff08;對應 OSI 模型的物理層 數據鏈路層&#xff09;&#xff0c;負責在物理網絡中傳輸原始比特流&#xff0c;實現相鄰設備之間的可靠數據傳輸。核心功能物理…

筆記本鍵盤的啟用和禁用

管理員 打開 CMD&#xff1a;這一步要求以管理員權限打開命令提示符&#xff08;Command Prompt&#xff09;。在Windows系統中&#xff0c;可以通過搜索“cmd”&#xff0c;然后右鍵選擇“以管理員身份運行”來實現。sc config i8042prt start disabled (關閉筆記本鍵盤)&…

vue3的一些淺顯用法

1/ 父頁面調用子頁面相關需要在父頁面引用 <FieldUserForm ref"userFormRef" success"handleUserFormSuccess" />其中 FieldUserForm 是子頁面 success"handleUserFormSuccess" 是子頁面成功后回調方法 父頁面 實現 handleUserFormSucces…

C語言習題講解-第五講-循環編程練習等

C語言習題講解-第五講-循環編程練習等1. 關于一維數組描述不正確的是&#xff1a;( )2. 關于一維數組初始化&#xff0c;下面哪個定義是錯誤的&#xff1f;&#xff08; &#xff09;3. 定義了一維 int 型數組 a[10] 后&#xff0c;下面錯誤的引用是&#xff1a;&#xff08; &…

MongoDB索引及其原理

目錄 索引原理 索引類型 單鍵索引 組合索引 特性索引 唯一索引 稀疏索引 部分索引 TTL索引 多鍵索引 文本索引 地理空間索引 哈希索引 總結 MongoDB 索引執行計劃 索引原理 MongoDB索引的背后的原理和MySQL中的索引原理是差不多的,都是使用B數來對數據進行管理…

學習嵌入式的第三十三天-數據結構-(2025.7.25)服務器/多客戶端模型

服務器/多客戶端模型循環服務器 while(1){ accept(); recv(); } 適用于簡單任務&#xff0c;如基礎Web服務器&#xff0c;但無法處理并發請求。并發服務器 通過thread或fork實現多任務處理。需注意子進程/線程的資源回收&#xff0c;避免內存泄漏。多路IO模型服務器 使用select…

【Canvas與標牌】優質資產六角星標牌

【成圖】【代碼】<!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>優質資產六角星標記 Draft1</title><style type"text/cs…

掃雷游戲開發教程:從零打造精美像素掃雷

完整源碼在本文結尾處一、游戲概述 掃雷是一款經典的益智游戲&#xff0c;玩家需要在不觸發地雷的情況下揭開所有安全格子。本教程將帶你從零開始開發一個具有精美界面和動畫效果的掃雷游戲&#xff0c;包含難度選擇、棋盤大小調整等高級功能。 二、游戲核心功能 三種難度級別&…

Linux驅動開發筆記(五)——設備樹(上)

內容詳見《【正點原子】I.MX6U嵌入式Linux驅動開發指南》四十三章 開發板&#xff1a;imx6ull mini 虛擬機&#xff1a;VMware17 ubuntu&#xff1a;ubuntu20.04 一、什么是設備樹 視頻&#xff1a;第6.1講 Linux設備樹詳解-什么是設備樹&#xff1f;_嗶哩嗶哩_bilibili 對…

【QT入門到晉級】window opencv安裝及引入qtcreator(包含兩種qt編譯器:MSVC和MinGW)

前言 本文主要分享QT的兩種編譯器環境&#xff08;MSVC和MinGW&#xff09;下&#xff0c;安裝及引入opencv的方法。 編譯器區別 特性????MSVC????MinGW????編譯器類型??微軟專有編譯器&#xff08;cl.exe&#xff09;基于GCC的開源工具鏈??平臺支持??僅Wi…

字節跳動Coze Studio開源了!架構解析

Coze Studio 是字節跳動推出的一款 AI 應用開發平臺&#xff0c;專注于幫助開發者快速構建、測試和部署基于大語言模型的智能應用。其整體架構圍繞“低代碼開發 AI 應用”的核心目標設計&#xff0c;融合了模型能力、工具集成、流程編排和多端部署等功能。以下是其整體架構的詳…

Claude 4.0 終極編程指南:模型對比、API配置與IDE集成實戰

Claude 4.0 終極編程指南&#xff1a;模型對比、API配置與IDE集成實戰 基于官方文檔及可驗證數據源&#xff08;2025年7月更新&#xff09; 1 Claude 4.0 技術解析&#xff1a;對比競品的核心優勢與局限 1.1 官方性能數據&#xff08;來源&#xff1a;Anthropic技術白皮書&…

優化:Toc小程序猜你喜歡功能

引言&#xff1a;來自自創的小程序中熱點接口&#xff0c;本小程序專為在校學生自提點餐使用 一、功能描述 該功能作為一個推薦的職責&#xff0c;根據用戶最近行為給用戶推薦用戶可能喜歡去吃的店鋪&#xff0c;可能比較簡潔&#xff0c;但是需要設計的方面挺多的&#xff0c…