<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[柚子云博客]]></title> 
<atom:link href="https://yoozc.cn/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[柚子云/poetize/yooz]]></description>
<link>https://yoozc.cn/</link>
<language>zh-cn</language>

<item>
    <title>nvm进行node版本管理</title>
    <link>https://yoozc.cn/?post=4</link>
    <description><![CDATA[<p>*<em>查看已经安装的node版本(带</em>号的是当前使用版本)**</p>
<pre><code>nvm list</code></pre>
<p><strong>安装最新的长期支持版 (LTS):</strong></p>
<pre><code>nvm install lts</code></pre>
<p><strong>安装指定版本 (例如 18.20.2):</strong></p>
<pre><code>nvm install 18.20.2</code></pre>
<p><strong>切换到已安装的版本:</strong></p>
<pre><code>nvm use 18.20.2</code></pre>
<p><strong>删除不需要的版本 </strong></p>
<pre><code>nvm uninstall 16.20.2</code></pre>
<p><strong>设置默认版本</strong></p>
<pre><code>nvm alias default 18.20.2</code></pre>
<p><strong>如果安装失败，就刷新nvm缓存再进行安装</strong></p>
<pre><code>nvm list available</code></pre>]]></description>
    <pubDate>Fri, 10 Jul 2026 15:02:24 +0800</pubDate>
    <dc:creator>poetize</dc:creator>
    <guid>https://yoozc.cn/?post=4</guid>
</item>
<item>
    <title>windows中安装虚拟机跑AI大模型</title>
    <link>https://yoozc.cn/?post=3</link>
    <description><![CDATA[<h1>WSL2 + vLLM 本地大模型推理服务部署指南</h1>
<blockquote>
<p><strong>适用环境</strong>：Windows 11 / Windows 10 21H2+，NVIDIA GPU（显存 ≥ 8 GB），Ubuntu 22.04 / 24.04 (WSL2)<br />
<strong>最终目标</strong>：在本地通过 vLLM 启动 OpenAI 兼容 API 服务，运行 Qwen 系列大模型</p>
</blockquote>
<hr />
<h2>前置条件检查</h2>
<p>在开始之前，请确认你的机器满足以下全部条件：</p>
<table>
<thead>
<tr>
<th>检查项</th>
<th>要求</th>
<th>验证方式</th>
</tr>
</thead>
<tbody>
<tr>
<td>Windows 版本</td>
<td>Win11 或 Win10 ≥ 21H2</td>
<td><code>winver</code></td>
</tr>
<tr>
<td>CPU 虚拟化</td>
<td>BIOS 中已开启 VT-x / AMD-V</td>
<td>任务管理器 → 性能 → CPU → &quot;虚拟化：已启用&quot;</td>
</tr>
<tr>
<td>NVIDIA 驱动</td>
<td>≥ 535（支持 WSL CUDA）</td>
<td><code>nvidia-smi</code>（在 <strong>Windows PowerShell</strong> 中执行）</td>
</tr>
<tr>
<td>可用磁盘空间</td>
<td>≥ 60 GB（模型 + 环境）</td>
<td>资源管理器</td>
</tr>
<tr>
<td>内存</td>
<td>≥ 16 GB（推荐 32 GB）</td>
<td>任务管理器</td>
</tr>
</tbody>
</table>
<blockquote>
<p><strong>重要</strong>：WSL2 的 GPU 直通依赖 <strong>Windows 侧</strong> 的 NVIDIA 驱动，<strong>不要</strong>在 WSL 内部单独安装 CUDA Toolkit 或 GPU 驱动，否则可能冲突。</p>
</blockquote>
<hr />
<h2>第一步：安装 WSL2 并初始化</h2>
<h3>1.1 安装 WSL</h3>
<p>以 <strong>管理员身份</strong> 打开 PowerShell，执行：</p>
<pre><code class="language-powershell">wsl --install</code></pre>
<p>该命令默认安装 Ubuntu（最新 LTS）。如需指定发行版：</p>
<pre><code class="language-powershell"># 查看可用发行版列表
wsl --list --online

# 指定安装 Ubuntu 22.04（推荐，兼容性最好）
wsl --install -d Ubuntu-22.04</code></pre>
<h3>1.2 重启电脑</h3>
<p>安装完成后 <strong>必须重启</strong>，否则内核组件不会生效。</p>
<h3>1.3 设置 Linux 用户</h3>
<p>重启后会自动弹出 Ubuntu 终端，按提示设置：</p>
<pre><code>Enter new UNIX username: xxxx
New password: xxxx
Retype new password: xxxx</code></pre>
<blockquote>
<p>此账号与 Windows 账号无关，是 Linux 子系统的独立用户，请牢记。</p>
</blockquote>
<h3>1.4 确认 WSL2 与 GPU 可用</h3>
<pre><code class="language-bash"># 确认 WSL 版本为 2（在 PowerShell 中执行）
wsl -l -v
# 输出示例：  NAME            STATE     VERSION
#           Ubuntu-22.04    Running   2

# 在 WSL 终端中确认 GPU 可见
nvidia-smi</code></pre>
<p>若 <code>nvidia-smi</code> 正常输出 GPU 型号、显存、驱动版本，说明 GPU 直通成功。若报错，请回到 Windows 侧更新/重装 NVIDIA 驱动（≥ 535）。</p>
<hr />
<h2>第二步：更新系统并配置国内镜像源</h2>
<h3>2.1 替换 APT 源</h3>
<blockquote>
<p><strong>Ubuntu 24.04 注意</strong>：24.04 已将源配置迁移至 <code>/etc/apt/sources.list.d/ubuntu.sources</code>（DEB822 格式），下方命令仅适用于 <strong>22.04 及更早版本</strong>。24.04 用户请跳到 2.1b。</p>
</blockquote>
<p><strong>Ubuntu 22.04：</strong></p>
<pre><code class="language-bash"># 备份原始源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 替换为阿里云镜像
sudo sed -i 's|http://archive.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list
sudo sed -i 's|http://security.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list</code></pre>
<p><strong>Ubuntu 24.04（2.1b）：</strong></p>
<pre><code class="language-bash">sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak

sudo sed -i 's|http://archive.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list.d/ubuntu.sources
sudo sed -i 's|http://security.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list.d/ubuntu.sources</code></pre>
<h3>2.2 更新系统</h3>
<pre><code class="language-bash">sudo apt update &amp;&amp; sudo apt upgrade -y</code></pre>
<blockquote>
<p>若升级过程中提示重启，执行 <code>sudo reboot</code> 后重新进入 WSL 即可。</p>
</blockquote>
<hr />
<h2>第三步：安装基础开发工具</h2>
<pre><code class="language-bash">sudo apt install -y \
    python3-pip \
    python3-venv \
    python3-dev \
    build-essential \
    git \
    curl \
    wget \
    htop</code></pre>
<p>验证 Python 版本（vLLM 要求 ≥ 3.9，推荐 3.10 / 3.11）：</p>
<pre><code class="language-bash">python3 --version</code></pre>
<hr />
<h2>第四步：创建并激活 Python 虚拟环境</h2>
<pre><code class="language-bash"># 创建虚拟环境（放在用户主目录下）
python3 -m venv ~/vllm-env

# 激活虚拟环境
source ~/vllm-env/bin/activate

# 激活成功后，命令行前缀变为 (vllm-env)
# 升级 pip 与基础打包工具
pip install --upgrade pip setuptools wheel</code></pre>
<blockquote>
<p>每次打开新终端都需要重新执行 <code>source ~/vllm-env/bin/activate</code>。<br />
可将该行追加到 <code>~/.bashrc</code> 末尾实现自动激活（可选，不推荐全局自动激活）。</p>
</blockquote>
<hr />
<h2>第五步：配置 pip 国内镜像并安装 vLLM</h2>
<h3>5.1 配置阿里云 PyPI 镜像</h3>
<pre><code class="language-bash">pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip config set global.trusted-host mirrors.aliyun.com</code></pre>
<h3>5.2 安装 vLLM</h3>
<p><strong>方式 A：使用 uv（推荐，速度快 5-10 倍）</strong></p>
<pre><code class="language-bash">pip install uv
uv pip install vllm</code></pre>
<p><strong>方式 B：直接使用 pip</strong></p>
<pre><code class="language-bash">pip install vllm</code></pre>
<h3>5.3 验证安装</h3>
<pre><code class="language-bash">python -c "import vllm; print('vLLM version:', vllm.__version__)"</code></pre>
<p>正常输出版本号即安装成功。若报 CUDA 相关错误，请确认第一步中 <code>nvidia-smi</code> 正常。</p>
<hr />
<h2>第六步：下载大模型文件</h2>
<h3>6.1 安装 ModelScope CLI</h3>
<pre><code class="language-bash">pip install modelscope</code></pre>
<h3>6.2 选择存储位置</h3>
<table>
<thead>
<tr>
<th>路径</th>
<th>优点</th>
<th>缺点</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>/mnt/d/LLM_Models/</code></td>
<td>与 Windows 共享，方便管理，不占 C 盘</td>
<td><strong>跨文件系统 IO 较慢</strong>，模型加载时间增加</td>
</tr>
<tr>
<td><code>~/ai-models/</code>（WSL 内部）</td>
<td>原生 ext4 文件系统，<strong>加载速度快</strong></td>
<td>占用 WSL 虚拟磁盘（默认在 C 盘）</td>
</tr>
</tbody>
</table>
<blockquote>
<p><strong>性能提示</strong>：如果显存和磁盘允许，<strong>强烈建议将模型放在 WSL 内部路径</strong>（如 <code>~/ai-models/</code>），跨 <code>/mnt/</code> 读取大文件会显著拖慢模型加载速度（可能慢 3-5 倍）。若必须放 D 盘，可在 WSL 配置中扩大虚拟磁盘或挂载物理磁盘。</p>
</blockquote>
<h3>6.3 下载模型</h3>
<pre><code class="language-bash"># ---------- 模型 1：Qwen2.5-7B-Instruct（约 15 GB，适合 8-12 GB 显存） ----------
mkdir -p /mnt/d/LLM_Models
modelscope download \
    --model Qwen/Qwen2.5-7B-Instruct \
    --local_dir /mnt/d/LLM_Models/Qwen2.5-7B-Instruct

# ---------- 模型 2：Qwen3.6-35B-A3B-FP8（MoE 模型，约 35 GB，适合 16 GB+ 显存） ----------
mkdir -p ~/ai-models
modelscope download \
    --model Qwen/Qwen3.6-35B-A3B-FP8 \
    --local_dir ~/ai-models/Qwen3.6-35B-A3B-FP8</code></pre>
<h3>6.4 验证模型完整性</h3>
<pre><code class="language-bash"># 检查文件是否齐全（应包含 config.json、tokenizer、*.safetensors 等）
ls -lh /mnt/d/LLM_Models/Qwen2.5-7B-Instruct/
ls -lh ~/ai-models/Qwen3.6-35B-A3B-FP8/</code></pre>
<p>确保没有 0 字节文件或缺失的 <code>.safetensors</code> 分片。</p>
<hr />
<h2>第七步：启动 vLLM 推理服务</h2>
<h3>7.1 启动 Qwen2.5-7B（示例）</h3>
<pre><code class="language-bash">python -m vllm.entrypoints.openai.api_server \
    --model /mnt/d/LLM_Models/Qwen2.5-7B-Instruct \
    --served-model-name qwen2.5-7b \
    --host 0.0.0.0 \
    --port 8000 \
    --gpu-memory-utilization 0.85 \
    --dtype float16 \
    --max-model-len 8192</code></pre>
<h3>7.2 参数说明</h3>
<table>
<thead>
<tr>
<th>参数</th>
<th>含义</th>
<th>调优建议</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>--model</code></td>
<td>模型本地路径</td>
<td>使用绝对路径</td>
</tr>
<tr>
<td><code>--served-model-name</code></td>
<td>API 中暴露的模型名</td>
<td>自定义，客户端调用时需一致</td>
</tr>
<tr>
<td><code>--host 0.0.0.0</code></td>
<td>监听所有网卡</td>
<td>允许局域网/Windows 宿主机访问</td>
</tr>
<tr>
<td><code>--port 8000</code></td>
<td>服务端口</td>
<td>避免与已有服务冲突</td>
</tr>
<tr>
<td><code>--gpu-memory-utilization</code></td>
<td>GPU 显存占用比例</td>
<td>0.80~0.90；多任务时调低</td>
</tr>
<tr>
<td><code>--dtype</code></td>
<td>计算精度</td>
<td><code>float16</code> / <code>bfloat16</code>；FP8 模型用 <code>auto</code></td>
</tr>
<tr>
<td><code>--max-model-len</code></td>
<td>最大上下文长度</td>
<td>按显存调整，过大易 OOM</td>
</tr>
</tbody>
</table>
<h3>7.3 后台运行（可选）</h3>
<p>直接运行会占用终端，关闭即停止。推荐以下方式：</p>
<p><strong>方式 A：nohup</strong></p>
<pre><code class="language-bash">nohup python -m vllm.entrypoints.openai.api_server \
    --model /mnt/d/LLM_Models/Qwen2.5-7B-Instruct \
    --served-model-name qwen2.5-7b \
    --host 0.0.0.0 --port 8000 \
    --gpu-memory-utilization 0.85 \
    --dtype float16 \
    --max-model-len 8192 \
    &gt; ~/vllm-server.log 2&gt;&amp;1 &amp;

# 查看日志
tail -f ~/vllm-server.log</code></pre>
<p><strong>方式 B：systemd 服务（WSL2 需启用 systemd）</strong></p>
<pre><code class="language-bash"># 1. 启用 systemd（/etc/wsl.conf）
sudo tee /etc/wsl.conf &gt; /dev/null &lt;&lt;EOF
[boot]
systemd=true
EOF
# 在 PowerShell 中重启 WSL：wsl --shutdown，再重新打开

# 2. 创建服务文件
sudo tee /etc/systemd/system/vllm.service &gt; /dev/null &lt;&lt;EOF
[Unit]
Description=vLLM OpenAI API Server
After=network.target

[Service]
Type=simple
User=$USER
Environment="PATH=/home/$USER/vllm-env/bin:/usr/bin"
ExecStart=/home/$USER/vllm-env/bin/python -m vllm.entrypoints.openai.api_server \
    --model /mnt/d/LLM_Models/Qwen2.5-7B-Instruct \
    --served-model-name qwen2.5-7b \
    --host 0.0.0.0 --port 8000 \
    --gpu-memory-utilization 0.85 \
    --dtype float16 \
    --max-model-len 8192
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

# 3. 启动并设为开机自启
sudo systemctl daemon-reload
sudo systemctl enable --now vllm
sudo systemctl status vllm</code></pre>
<hr />
<h2>第八步：验证服务</h2>
<h3>8.1 确认服务启动</h3>
<p>终端/日志中出现以下字样即表示就绪：</p>
<pre><code>INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO:     Application startup complete.</code></pre>
<h3>8.2 测试 API（在 WSL 或 Windows 终端均可）</h3>
<pre><code class="language-bash">curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5-7b",
    "messages": [
      {"role": "user", "content": "你好，请简单介绍一下你自己"}
    ],
    "max_tokens": 256,
    "temperature": 0.7
  }'</code></pre>
<h3>8.3 查看可用模型列表</h3>
<pre><code class="language-bash">curl http://localhost:8000/v1/models</code></pre>
<h3>8.4 Python 客户端测试</h3>
<pre><code class="language-python">from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="EMPTY",  # vLLM 默认无需鉴权
)

resp = client.chat.completions.create(
    model="qwen2.5-7b",
    messages=[{"role": "user", "content": "用一句话解释什么是 Transformer"}],
)
print(resp.choices[0].message.content)</code></pre>
<hr />
<h2>第九步：常见问题排查</h2>
<table>
<thead>
<tr>
<th>现象</th>
<th>可能原因</th>
<th>解决方案</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>nvidia-smi</code> 在 WSL 中报错</td>
<td>Windows 侧驱动过旧或未安装 WSL 版驱动</td>
<td>更新 NVIDIA 驱动 ≥ 535；<strong>不要</strong>在 WSL 内装 CUDA</td>
</tr>
<tr>
<td><code>torch.cuda.is_available()</code> 返回 False</td>
<td>PyTorch 未识别 GPU</td>
<td><code>pip install torch --index-url https://download.pytorch.org/whl/cu121</code></td>
</tr>
<tr>
<td>模型加载极慢（&gt; 10 min）</td>
<td>模型放在 <code>/mnt/d/</code> 跨文件系统</td>
<td>迁移到 WSL 内部路径 <code>~/ai-models/</code></td>
</tr>
<tr>
<td><code>CUDA out of memory</code></td>
<td>显存不足</td>
<td>降低 <code>--gpu-memory-utilization</code>、减小 <code>--max-model-len</code>、换更小模型或使用量化版</td>
</tr>
<tr>
<td>端口 8000 被占用</td>
<td>其他服务冲突</td>
<td><code>lsof -i :8000</code> 查找进程，或更换 <code>--port</code></td>
</tr>
<tr>
<td>Windows 浏览器无法访问 <code>localhost:8000</code></td>
<td>WSL 网络模式问题</td>
<td>Win11 默认 mirrored 模式可直通；Win10 需用 <code>wsl hostname -I</code> 获取 IP 访问</td>
</tr>
<tr>
<td><code>modelscope download</code> 中断</td>
<td>网络波动</td>
<td>重新执行相同命令，ModelScope 支持断点续传</td>
</tr>
<tr>
<td>WSL 内存占用过高</td>
<td>默认无上限</td>
<td>编辑 <code>C:\Users\&lt;你&gt;\.wslconfig</code>，添加 <code>[wsl2] memory=16GB</code></td>
</tr>
</tbody>
</table>
<hr />
<h2>附录：常用运维命令速查</h2>
<pre><code class="language-bash"># 激活环境
source ~/vllm-env/bin/activate

# 查看 GPU 实时状态
watch -n 1 nvidia-smi

# 查看 vLLM 进程
ps aux | grep vllm

# 停止服务（前台直接 Ctrl+C；后台用 kill）
pkill -f "vllm.entrypoints"

# 更新 vLLM
pip install --upgrade vllm

# 清理 pip 缓存（释放磁盘）
pip cache purge

# WSL 关机（PowerShell）
wsl --shutdown</code></pre>
<hr />
<blockquote>
<p><strong>最后提醒</strong>：首次启动 vLLM 时会对模型进行编译/预热，耗时 1~5 分钟属正常现象，请耐心等待 <code>Uvicorn running</code> 出现后再发起请求。生产环境建议配合 Nginx 反向代理、API Key 鉴权（<code>--api-key</code> 参数）及日志轮转使用。</p>
</blockquote>]]></description>
    <pubDate>Fri, 10 Jul 2026 15:00:29 +0800</pubDate>
    <dc:creator>poetize</dc:creator>
    <guid>https://yoozc.cn/?post=3</guid>
</item>
<item>
    <title>记录一下如何使用若依框架之（将若依分离版合并打包到jar包中）</title>
    <link>https://yoozc.cn/?post=2</link>
    <description><![CDATA[<h1>若依前后端分离版改造为单体部署指南</h1>
<h2>前言</h2>
<p>本项目基于若依前后端分离版开发，现需将其改造为不分离版本，即将前端打包产物整合进后端 JAR 包中统一运行。以下是详细的改造步骤。</p>
<hr />
<h2>一、 修改前端项目配置</h2>
<h3>1. 修改生产环境配置</h3>
<p>编辑 <code>ruoyi-ui/.env.production</code> 文件，配置 API 基础路径（二选一）：</p>
<pre><code class="language-properties"># 方式一：本机地址访问（推荐）
VUE_APP_BASE_API = '/'

# 方式二：指定任意地址访问
# VUE_APP_BASE_API = 'http://xxx.xxx.xxx.xxx:8080'</code></pre>
<h3>2. 修改路由模式</h3>
<p>编辑 <code>ruoyi-ui/src/router/index.js</code>，将路由模式设置为 <code>hash</code>：</p>
<pre><code class="language-javascript">export default new Router({
  mode: 'hash', // 必须改为 hash 模式
  scrollBehavior: () =&gt; ({ y: 0 }),
  routes: constantRoutes
})</code></pre>
<h3>3. 修改注销跳转逻辑</h3>
<p>编辑 <code>ruoyi-ui/src/layout/components/Navbar.vue</code> 中的 <code>logout</code> 方法，防止重定向错误：</p>
<pre><code class="language-javascript">async logout() {
  this.$confirm('确定注销并退出系统吗？', '提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
  }).then(() =&gt; {
    this.$store.dispatch('LogOut').then(() =&gt; {
      // 注意：跳转 index 前加 /#/ 防止定向错误
      location.href = '/#/index';
    })
  }).catch(() =&gt; {});
}</code></pre>
<h3>4. 执行前端打包</h3>
<p>在前端项目根目录运行以下命令生成 dist 文件：</p>
<pre><code class="language-bash">npm run build:prod</code></pre>
<hr />
<h2>二、 修改后端项目配置</h2>
<h3>1. 添加 Thymeleaf 模板引擎配置</h3>
<p>编辑 <code>ruoyi-admin/src/main/resources/application.yml</code>：</p>
<pre><code class="language-yaml">spring:
  # 模板引擎配置
  thymeleaf:
    mode: HTML
    encoding: utf-8
    cache: false</code></pre>
<h3>2. 添加 Thymeleaf 依赖</h3>
<p>编辑 <code>ruoyi-admin/pom.xml</code>，引入模板引擎依赖：</p>
<pre><code class="language-xml">&lt;!-- spring-boot-thymeleaf --&gt;
&lt;dependency&gt;
    &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
    &lt;artifactId&gt;spring-boot-starter-thymeleaf&lt;/artifactId&gt;
&lt;/dependency&gt;</code></pre>
<h3>3. 配置静态资源映射</h3>
<p>编辑 <code>ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java</code>，在 <code>addResourceHandlers</code> 方法中添加：</p>
<pre><code class="language-java">/** 前端静态资源配置 */
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");</code></pre>
<h3>4. 放行静态资源访问权限</h3>
<p>编辑 <code>ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java</code>，在 <code>configure</code> 方法中添加匿名访问规则：</p>
<pre><code class="language-java">// 静态资源可匿名访问，主要添加 "/static/**", "/index", "/*.ico"
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**", "/static/**", "/index", "/*.ico").permitAll()</code></pre>
<h3>5. 设置首页访问控制器</h3>
<p>编辑 <code>SysIndexController.java</code>，配置根路径返回页面：</p>
<pre><code class="language-java">@RequestMapping("/")
public ModelAndView index() {
    return new ModelAndView("index.html");
}</code></pre>
<h3>6. 整合前端静态资源</h3>
<p>将前端打包生成的 <code>dist</code> 目录内容复制到后端项目中：</p>
<ul>
<li><strong>HTML 文件</strong>：放入 <code>ruoyi-admin/src/main/resources/templates/</code> 目录</li>
<li><strong>JS/CSS/图片等静态文件</strong>：放入 <code>ruoyi-admin/src/main/resources/static/</code> 目录</li>
</ul>
<blockquote>
<p><strong>注意</strong>：如果 <code>templates</code> 或 <code>static</code> 目录不存在，请手动新建。</p>
</blockquote>
<hr />
<h2>三、 启动验证</h2>
<p>启动后端服务，访问测试地址（例如：<code>http://192.168.164.134:8080/</code>）。</p>
<p>✅ <strong>成功标志</strong>：页面正常显示首页并加载出验证码，即表示改造完成。</p>]]></description>
    <pubDate>Fri, 10 Jul 2026 13:23:43 +0800</pubDate>
    <dc:creator>poetize</dc:creator>
    <guid>https://yoozc.cn/?post=2</guid>
</item>
</channel>
</rss>