<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>迷失的天际</title><description>个人博客</description><link>https://umami.eu.cc/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>6.8.11</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>2026年5月4日 22:50:19</lastBuildDate><item><title>Firefly 快速开始</title><link>https://umami.eu.cc/posts/firefly-quick-start/</link><guid isPermaLink="true">https://umami.eu.cc/posts/firefly-quick-start/</guid><description>快速配置且部署 Firefly</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;前置环境准备&lt;a href=&quot;#前置环境准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Firefly 主题依赖 Node.js 和包管理工具，先完成环境搭建，避免后续部署报错。&lt;/p&gt;&lt;p&gt;下载安装 &lt;a href=&quot;https://nodejs.org/zh-cn&quot; target=&quot;_blank&quot;&gt;Node.js&lt;/a&gt;，完成后通过终端安装 pnpm，运行如下命令：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pnpm&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;主题下载与本地启动&lt;a href=&quot;#主题下载与本地启动&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/CuteLeaf/Firefly&quot; target=&quot;_blank&quot;&gt;Firefly&lt;/a&gt; 主题博客文件需要在 &lt;code&gt;Github&lt;/code&gt; 中下载，但打开或下载都要&lt;code&gt;等很久&lt;/code&gt;，原因在于：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DNS污染&lt;/strong&gt;：就像快递员&lt;code&gt;找不到&lt;/code&gt;你家地址&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;服务器物理距离&lt;/strong&gt;：GitHub 服务器主要在美国，&lt;code&gt;物理延迟&lt;/code&gt;200ms起步&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;带宽限制&lt;/strong&gt;：高峰期就像早高峰地铁，百万开发者&lt;code&gt;挤一条线路&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特殊网络环境&lt;/strong&gt;：某些地区需要特别处理（&lt;code&gt;魔法&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这里最简单快速的方法是将 &lt;code&gt;Gitee&lt;/code&gt; 作为中转站，在 &lt;a href=&quot;https://gitee.com/projects/import/url&quot; target=&quot;_blank&quot;&gt;这里&lt;/a&gt;  导入你 Github 仓库链接（&lt;code&gt;Fork Firefly生成&lt;/code&gt;），之后就可以将文件通过 &lt;code&gt;Gitee&lt;/code&gt; 下载到本地。&lt;/p&gt;&lt;p&gt;下载进本地的博客仓库是不能上传到 &lt;code&gt;Github&lt;/code&gt; 中的，原因在于你的上传地址被改成 &lt;code&gt;Gitee&lt;/code&gt; 的了。&lt;/p&gt;&lt;p&gt;打开终端或命令提示符，运行以下命令&lt;code&gt;修改上传地址&lt;/code&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;remote&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;set-url&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://github.com/AmongRuins/Firefly&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;安装项目依赖，执行如下命令：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pnpm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;启动开发服务器，执行如下命令：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pnpm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;dev&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;启动成功后，浏览器访问 &lt;code&gt;http://localhost:4321&lt;/code&gt; 即可查看默认博客界面，Ctrl+C 可关闭服务器。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;博客部署上线&lt;a href=&quot;#博客部署上线&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://vercel.com/&quot; target=&quot;_blank&quot;&gt;Vercel&lt;/a&gt; 是部署 Astro 项目最简单的平台之一。具体部署步骤如下：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;将 Firefly 项目上传至自己的 GitHub 仓库&lt;/li&gt;
&lt;li&gt;登录 Vercel，点击 &lt;code&gt;New Project&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;导入 GitHub 仓库，无需修改配置，直接 &lt;code&gt;Deploy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;部署成功后，Vercel 会自动分配&lt;code&gt;域名&lt;/code&gt;，但国内需要魔法才能访问&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;当然也可绑定自定义域名，这边可以在 &lt;a href=&quot;https://gname.vip/user#/domain_info/ym=amongruins.eu.cc&quot; target=&quot;_blank&quot;&gt;GNAME&lt;/a&gt; 中仅通过邮箱&lt;code&gt;白嫖三年&lt;/code&gt;的&lt;code&gt;未备案&lt;/code&gt;的 &lt;code&gt;.eu.cc&lt;/code&gt; 域名。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>接口和接口测试的概念</title><link>https://umami.eu.cc/posts/an-Interface-Concept/</link><guid isPermaLink="true">https://umami.eu.cc/posts/an-Interface-Concept/</guid><description>接口与接口测试一些理论知识</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;接口的作用和组成&lt;a href=&quot;#接口的作用和组成&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;接口，是不同模块或系统间预先约定的标准化&lt;code&gt;交互规范&lt;/code&gt;与通信契约。调用方&lt;code&gt;无需关注其内部的实现逻辑与底层细节&lt;/code&gt;，只需明确接口的核心能力、调用规则与返回约定，即可完成对接调用。&lt;/p&gt;&lt;p&gt;接口的作用：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;解耦隔离，屏蔽实现细节&lt;/strong&gt;：接口将能力实现与业务调用完全解耦，严格隔离底层实现逻辑与核心细节。&lt;code&gt;只要接口的交互规范与契约保持不变&lt;/code&gt;，底层实现的迭代、优化、重构均不会影响上游业务，无需对业务调用侧代码做任何修改，大幅降低系统耦合度与维护成本。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;能力复用，提升研发效率&lt;/strong&gt;：标准化的接口可实现&lt;code&gt;一次开发、多场景复用&lt;/code&gt;，能够被多个业务模块、终端、系统无差别调用，避免同一段业务逻辑的重复开发，大幅缩减研发周期，提升全项目的协作与开发效率。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;安全管控，筑牢访问防线&lt;/strong&gt;：接口作为系统对外暴露的核心访问入口，可在接口层统一实现&lt;code&gt;鉴权认证&lt;/code&gt;、权限管控、参数校验、流量限流等安全能力，精准拦截非法请求，有效规避恶意操作、核心数据泄露等安全风险，是系统安全防护的第一道核心防线。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;接口测试的目的和应用&lt;a href=&quot;#接口测试的目的和应用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;接口测试是软件质量保障体系的核心环节，聚集于&lt;code&gt;服务端接口&lt;/code&gt;的规范、业务逻辑正确性、数据流转准确性、系统安全性与性能稳定性，是前后端分离的测试手段。&lt;/p&gt;&lt;p&gt;接口测试的核心目的：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;以接口文档约定的规范为唯一依据，通过模拟客户端向服务端发送请求，校验接口返回的实际结果与预期结果是否完全一致，确保接口完全符合设计要求，&lt;code&gt;实现既定业务功能&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;接口测试可在项目研发早期介入，无需等待前端页面开发完成，在后端接口开发完成、前后端联调阶段即可开展测试，能&lt;code&gt;提前暴露缺陷，大幅降低问题修复成本&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;可直接绕过前端无法覆盖大量异常场景、边界场景与底层逻辑场景，精准定位问题根因，&lt;code&gt;明确区分前端渲染问题与后端服务逻辑问题&lt;/code&gt;，大幅提升问题排查效率。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;可专项验证接口的鉴权认证，&lt;code&gt;保障系统的接口安全&lt;/code&gt;，并通过接口进行性能测试，&lt;code&gt;保障系统长期稳定运行&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;接口变更频率远低于前端 UI 页面，基于接口开发的&lt;code&gt;自动化测试脚本&lt;/code&gt;，具备执行速度快、稳定性高、维护成本低的核心优势，是自动化测试体系的首选方案，还同时&lt;code&gt;适配敏捷迭代&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;接口测试的流程设计&lt;a href=&quot;#接口测试的流程设计&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;接口测试的流程设计与软件测试基础的功能测试类似，通过开发所提供的&lt;code&gt;接口文档&lt;/code&gt;提取测试点来设计测试用例，在按「&lt;code&gt;冒烟测试 → 核心接口功能测试 → 主业务场景测试&lt;/code&gt;」执行，同步提交缺陷与快速回归，最后输出测试报告。&lt;/p&gt;&lt;p&gt;不同公司的 &lt;a href=&quot;https://wwbri.lanzoub.com/ir02k3nl2f3i&quot; target=&quot;_blank&quot;&gt;接口文档&lt;/a&gt; 模板、承载格式各有差异，但一份规范的接口文档，通常包含以下核心信息：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;基础信息：请求路径、请求方法&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;请求参数：请求头、请求体（请求数据）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;返回数据：操作成功的状态码、自定义的错误码&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;接口测试的测试用例设计&lt;a href=&quot;#接口测试的测试用例设计&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;827&quot; height=&quot;536&quot; src=&quot;/_astro/Snipaste_2026-04-18_23-40-30.uxWLDjey_ZsELj3.webp&quot; srcset=&quot;/_astro/Snipaste_2026-04-18_23-40-30.uxWLDjey_2mBsDM.webp 640w, /_astro/Snipaste_2026-04-18_23-40-30.uxWLDjey_Z1RWmnN.webp 750w, /_astro/Snipaste_2026-04-18_23-40-30.uxWLDjey_ZsELj3.webp 827w&quot; /&gt;&lt;/p&gt;&lt;p&gt;单接口功能测试用例设计，底层逻辑与基础软件测试用例设计完全一致，核心均为围绕需求规范验证单个功能点的正确性；核心差异为&lt;code&gt;接口测试需针对请求参数&lt;/code&gt;开展校验。&lt;/p&gt;&lt;p&gt;业务场景化的功能测试，核心要锚定用户的真实使用场景来设计，同时要把握一个核心原则：&lt;code&gt;用最少的测试用例，覆盖最多的业务场景&lt;/code&gt;，既保证测试覆盖度，又能提升测试效率。&lt;/p&gt;&lt;p&gt;因接口测试参数的出现，用例模板也有所不同：
&lt;img loading=&quot;lazy&quot; width=&quot;1355&quot; height=&quot;48&quot; src=&quot;/_astro/Snipaste_2026-04-18_23-34-15.D8UoghZ3_1uzuzK.webp&quot; srcset=&quot;/_astro/Snipaste_2026-04-18_23-34-15.D8UoghZ3_ZLLWu4.webp 640w, /_astro/Snipaste_2026-04-18_23-34-15.D8UoghZ3_18jyTB.webp 750w, /_astro/Snipaste_2026-04-18_23-34-15.D8UoghZ3_2vdrq5.webp 828w, /_astro/Snipaste_2026-04-18_23-34-15.D8UoghZ3_1dFy6a.webp 1080w, /_astro/Snipaste_2026-04-18_23-34-15.D8UoghZ3_1sLOPa.webp 1280w, /_astro/Snipaste_2026-04-18_23-34-15.D8UoghZ3_1uzuzK.webp 1355w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Postman 基本使用</title><link>https://umami.eu.cc/posts/postman-basic-use/</link><guid isPermaLink="true">https://umami.eu.cc/posts/postman-basic-use/</guid><description>关于接口测试常用工具 Postman 的使用</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;Postman 安装&lt;a href=&quot;#postman-安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Postman 的安装很简单，在 &lt;a href=&quot;https://www.postman.com/downloads/&quot; target=&quot;_blank&quot;&gt;官网&lt;/a&gt; 下载。由于&lt;code&gt;默认自动安装到 C 盘&lt;/code&gt;，但可以直接将整个文件夹给剪切到你想要存放的文件夹中。&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1292&quot; height=&quot;805&quot; src=&quot;/_astro/Snipaste_2026-04-19_21-19-05.DIgJNJFU_Z12qE95.webp&quot; srcset=&quot;/_astro/Snipaste_2026-04-19_21-19-05.DIgJNJFU_1HVLjA.webp 640w, /_astro/Snipaste_2026-04-19_21-19-05.DIgJNJFU_Z1uO1o5.webp 750w, /_astro/Snipaste_2026-04-19_21-19-05.DIgJNJFU_25jnfc.webp 828w, /_astro/Snipaste_2026-04-19_21-19-05.DIgJNJFU_1lkmD8.webp 1080w, /_astro/Snipaste_2026-04-19_21-19-05.DIgJNJFU_ZF0KkM.webp 1280w, /_astro/Snipaste_2026-04-19_21-19-05.DIgJNJFU_Z12qE95.webp 1292w&quot; /&gt;&lt;/p&gt;&lt;p&gt;在安装 Xmind 时也出现了这种情况，不过可以&lt;code&gt;在应用程序所在文件夹启动命令行&lt;/code&gt;，输入如下命令：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# &quot;安装包名称&quot; /D=&quot;D:\Xmind&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&quot;Xmind-25.04.03033-202505120645.exe&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/D=&quot;D:\Xmind&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Postman 断言&lt;a href=&quot;#postman-断言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在 &lt;code&gt;Scripts -&amp;gt; Post-response&lt;/code&gt; 中可以进行断言，即在请求后执行 &lt;code&gt;Postman 自带的 JavaScript 脚本&lt;/code&gt;。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;断言响应状态码：选择 &lt;code&gt;Status code：Code is 200&lt;/code&gt; 即可出现如下代码&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// pm：代表 Postman 的一个实例&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// test()：实例方法，有两个参数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;//    参数一：断言成功后，给出的文字提示&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;//    参数二：匿名函数，表示 Postman 响应结果中应该包含该状态码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Status code is 200&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; () {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;response&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;to&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;have&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;status&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;断言响应体是否包含某个字符串：选择 &lt;code&gt;Response body：Contains string&lt;/code&gt; 即可出现如下代码&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// string_you_want_to_search：可修改，修改为需要查找的字符串&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Body matches string&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; () {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;expect&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;response&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;text&lt;/span&gt;&lt;span&gt;()).&lt;/span&gt;&lt;span&gt;to&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;include&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;string_you_want_to_search&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;断言响应体是否等于某个字符串：选择 &lt;code&gt;Response body：Is equal to a string&lt;/code&gt; 即可出现如下代码&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// response_body_string：可修改，修改为响应体中该有的字符串&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Body is correct&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; () {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;response&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;to&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;have&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;response_body_string&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;断言 JSON 数据：选择 &lt;code&gt;Response body：JSON value check&lt;/code&gt; 即可出现如下代码&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// jsonData.value 中的 value 对应响应体的键，100 则对应其所等于的值&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Your test name&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; () {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;jsonData&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;response&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;json&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;expect&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;jsonData&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;to&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;eql&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;断言响应头：选择 &lt;code&gt;Response headers：Content-Type header check&lt;/code&gt; 即可出现如下代码&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// Content-Type：响应头包含的键&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Content-Type is present&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; () {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;response&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;to&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;have&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;header&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Content-Type&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 也可以键值对&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Content-Type is present&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; () {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;response&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;to&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;have&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;header&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Content-Type&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&quot;application/json;charset=UTF-8&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Postman 环境配置&lt;a href=&quot;#postman-环境配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;全局变量：在 Postman 全局生效的唯一变量&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 变量设置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;globals&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;variable_key&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;variable_value&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 变量获取&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;globals&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;variable_key&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 请求参数获取&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;{{&lt;/span&gt;&lt;span&gt;variable_key&lt;/span&gt;&lt;span&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;环境变量：在特定环境（&lt;code&gt;开发环境、测试环境、生产环境&lt;/code&gt;）下生效的唯一变量&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 变量设置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;environment&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;variable_key&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;variable_value&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 变量获取&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;environment&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;variable_key&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 请求参数获取&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;{{&lt;/span&gt;&lt;span&gt;variable_key&lt;/span&gt;&lt;span&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;通过获取&lt;code&gt;变量&lt;/code&gt;，可以&lt;code&gt;关联&lt;/code&gt;不同请求接口，例如如下例子：&lt;code&gt;获取天气接口中的城市，以此作为百度搜索接口使用&lt;/code&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;通过天气接口：&lt;code&gt;http://www.weather.com.cn/data/sk/101010100.html&lt;/code&gt; 获取城市名&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1292&quot; height=&quot;805&quot; src=&quot;/_astro/Snipaste_2026-04-19_21-32-14.D6_YFffM_Z1mwPI0.webp&quot; srcset=&quot;/_astro/Snipaste_2026-04-19_21-32-14.D6_YFffM_2mjM5e.webp 640w, /_astro/Snipaste_2026-04-19_21-32-14.D6_YFffM_ZQr0Cr.webp 750w, /_astro/Snipaste_2026-04-19_21-32-14.D6_YFffM_Z2luJN6.webp 828w, /_astro/Snipaste_2026-04-19_21-32-14.D6_YFffM_11eb4d.webp 1080w, /_astro/Snipaste_2026-04-19_21-32-14.D6_YFffM_Z106VTH.webp 1280w, /_astro/Snipaste_2026-04-19_21-32-14.D6_YFffM_Z1mwPI0.webp 1292w&quot; /&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;将全局变量作为百度搜索接口使用&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1292&quot; height=&quot;805&quot; src=&quot;/_astro/Snipaste_2026-04-19_21-37-31.ZijahBqy_Zg6z3H.webp&quot; srcset=&quot;/_astro/Snipaste_2026-04-19_21-37-31.ZijahBqy_2eu52W.webp 640w, /_astro/Snipaste_2026-04-19_21-37-31.ZijahBqy_ZYgHEI.webp 750w, /_astro/Snipaste_2026-04-19_21-37-31.ZijahBqy_Z2tkrPn.webp 828w, /_astro/Snipaste_2026-04-19_21-37-31.ZijahBqy_27ErIv.webp 1080w, /_astro/Snipaste_2026-04-19_21-37-31.ZijahBqy_6jjJA.webp 1280w, /_astro/Snipaste_2026-04-19_21-37-31.ZijahBqy_Zg6z3H.webp 1292w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Postman 参数化&lt;a href=&quot;#postman-参数化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Postman 批量自动化的核心能力，&lt;code&gt;通过外部数据文件批量传入多组测试用例&lt;/code&gt;，实现一个接口跑几十 / 几百组测试数据，无需重复创建请求。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;方法一：CSV 文件参数化&lt;a href=&quot;#方法一csv-文件参数化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;第一行是变量名（和请求中引用的变量名完全一致），后续每行是一组测试用例&lt;/li&gt;
&lt;li&gt;编码必须为 &lt;code&gt;UTF-8&lt;/code&gt;，分隔符用英文逗号，避免中文乱码&lt;/li&gt;
&lt;li&gt;示例：&lt;code&gt;login_test_data.csv&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;username,&lt;/span&gt;&lt;span&gt;password,&lt;/span&gt;&lt;span&gt;expect_code,&lt;/span&gt;&lt;span&gt;expect_msg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;test01,&lt;/span&gt;&lt;span&gt;123456,&lt;/span&gt;&lt;span&gt;200,&lt;/span&gt;&lt;span&gt;登录成功&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;test02,&lt;/span&gt;&lt;span&gt;wrongpwd,&lt;/span&gt;&lt;span&gt;400,&lt;/span&gt;&lt;span&gt;密码错误&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;test03,&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;400,&lt;/span&gt;&lt;span&gt;用户名不能为空&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;123456,&lt;/span&gt;&lt;span&gt;400,&lt;/span&gt;&lt;span&gt;密码不能为空&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;请求体 JSON：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;username&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;{{username}}&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;password&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;{{password}}&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Tests 断言脚本（批量验证结果）：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 验证响应状态码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;`响应状态码为{{expect_code}}`&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; () {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;response&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;to&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;have&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;status&lt;/span&gt;&lt;span&gt;&lt;span&gt;({{&lt;/span&gt;&lt;span&gt;expect_code&lt;/span&gt;&lt;span&gt;}});&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 验证响应消息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;`响应消息为{{expect_msg}}`&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; () {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;expect&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;pm&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;response&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;json&lt;/span&gt;&lt;span&gt;().&lt;/span&gt;&lt;span&gt;msg&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;to&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;eql&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;{{expect_msg}}&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;在用例集中右键选择 &lt;code&gt;Run&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1292&quot; height=&quot;803&quot; src=&quot;/_astro/Snipaste_2026-04-19_22-44-20.Tv74p0SY_1f843u.webp&quot; srcset=&quot;/_astro/Snipaste_2026-04-19_22-44-20.Tv74p0SY_1cWDMs.webp 640w, /_astro/Snipaste_2026-04-19_22-44-20.Tv74p0SY_Z20N8Ud.webp 750w, /_astro/Snipaste_2026-04-19_22-44-20.Tv74p0SY_1zkfI4.webp 828w, /_astro/Snipaste_2026-04-19_22-44-20.Tv74p0SY_Z1ri2Xe.webp 1080w, /_astro/Snipaste_2026-04-19_22-44-20.Tv74p0SY_1BxWQM.webp 1280w, /_astro/Snipaste_2026-04-19_22-44-20.Tv74p0SY_1f843u.webp 1292w&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;点击 &lt;code&gt;Preview&lt;/code&gt;，可以看到其数据格式。适用于&lt;code&gt;简单纯文本数据&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;841&quot; height=&quot;690&quot; src=&quot;/_astro/Snipaste_2026-04-19_22-46-22.DPiiZ_xa_SjOSP.webp&quot; srcset=&quot;/_astro/Snipaste_2026-04-19_22-46-22.DPiiZ_xa_Z20Eq1D.webp 640w, /_astro/Snipaste_2026-04-19_22-46-22.DPiiZ_xa_ZpaCF.webp 750w, /_astro/Snipaste_2026-04-19_22-46-22.DPiiZ_xa_Z3TfvQ.webp 828w, /_astro/Snipaste_2026-04-19_22-46-22.DPiiZ_xa_SjOSP.webp 841w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;方法二：JSON 文件参数化&lt;a href=&quot;#方法二json-文件参数化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;JSON 数据文件：外层为数组，每个元素是一组测试用例的键值对，支持嵌套结构，示例：&lt;code&gt;login_test_data.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;&quot;username&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;test01&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&quot;password&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;123456&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&quot;expect&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;span&gt;&quot;code&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&quot;msg&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;登录成功&quot;&lt;/span&gt;&lt;span&gt;}},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;&quot;username&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;test02&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&quot;password&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;wrongpwd&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&quot;expect&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;span&gt;&quot;code&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;400&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&quot;msg&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;密码错误&quot;&lt;/span&gt;&lt;span&gt;}}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;引用&lt;code&gt;基础字段：{{username}}&lt;/code&gt;，&lt;code&gt;嵌套字段：{{expect.code}}、{{expect.msg}}&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;后续操作与 csv 文件一样，其中非数字也会以字符串表示，布尔值也适合（&lt;code&gt;csv不适用布尔值&lt;/code&gt;）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;生成测试报告&lt;a href=&quot;#生成测试报告&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;需要&lt;code&gt;先安装好 Node.js，才会有 npm&lt;/code&gt;。安装 &lt;code&gt;newman&lt;/code&gt; 依赖&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;newman&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;再安装 &lt;code&gt;newman-reporter-html&lt;/code&gt; ，用来生成测试报告&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;newman-reporter-html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;指定数据文件执行生成 html 测试报告&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;newman&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;接口集合.json&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-e&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;环境变量.json&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;测试数据.csv/json&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--reporter-html-export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;测试报告.html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;导出用例集 &lt;code&gt;变量.postman_collection.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1292&quot; height=&quot;803&quot; src=&quot;/_astro/Snipaste_2026-04-19_23-02-26.BNC96g5T_1BIXbB.webp&quot; srcset=&quot;/_astro/Snipaste_2026-04-19_23-02-26.BNC96g5T_ZpmLQ0.webp 640w, /_astro/Snipaste_2026-04-19_23-02-26.BNC96g5T_1r3yfg.webp 750w, /_astro/Snipaste_2026-04-19_23-02-26.BNC96g5T_Z30aUo.webp 828w, /_astro/Snipaste_2026-04-19_23-02-26.BNC96g5T_Z14G8P7.webp 1080w, /_astro/Snipaste_2026-04-19_23-02-26.BNC96g5T_1Y9QYT.webp 1280w, /_astro/Snipaste_2026-04-19_23-02-26.BNC96g5T_1BIXbB.webp 1292w&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;执行如下命令会生成 &lt;code&gt;测试报告.html&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;newman&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;变量.postman_collection.json&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--reporter-html-export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;测试报告.html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1292&quot; height=&quot;939&quot; src=&quot;/_astro/Snipaste_2026-04-19_23-06-32.CkoEQ6Sp_yLz6S.webp&quot; srcset=&quot;/_astro/Snipaste_2026-04-19_23-06-32.CkoEQ6Sp_Z2jNTmT.webp 640w, /_astro/Snipaste_2026-04-19_23-06-32.CkoEQ6Sp_ZsIMub.webp 750w, /_astro/Snipaste_2026-04-19_23-06-32.CkoEQ6Sp_Z2qinM2.webp 828w, /_astro/Snipaste_2026-04-19_23-06-32.CkoEQ6Sp_Z2eUau2.webp 1080w, /_astro/Snipaste_2026-04-19_23-06-32.CkoEQ6Sp_7jCp1.webp 1280w, /_astro/Snipaste_2026-04-19_23-06-32.CkoEQ6Sp_yLz6S.webp 1292w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;项目实战&lt;a href=&quot;#项目实战&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;由于黑马已经把接口给关闭了（&lt;code&gt;不在内网中&lt;/code&gt;），故做不了接口测试，可以观看 &lt;a href=&quot;https://blog.csdn.net/2301_81080769/article/details/149140478&quot; target=&quot;_blank&quot;&gt;iHRM 人力资源管理系统接口测试&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Charles抓包工具（一）</title><link>https://umami.eu.cc/posts/charlesone/</link><guid isPermaLink="true">https://umami.eu.cc/posts/charlesone/</guid><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;抓包的目的（了解）&lt;a href=&quot;#抓包的目的了解&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;软件测试中抓包，核心是&lt;code&gt;捕获客户端与服务端之间的网络传输数据包&lt;/code&gt;，破解&lt;code&gt;黑盒测试的信息盲区&lt;/code&gt;，实现问题精准定位、业务逻辑校验、安全风险排查、性能瓶颈分析，同时支撑测试场景构造与责任边界划分，是功能、接口、安全、性能测试的核心必备技能。&lt;/p&gt;&lt;p&gt;以下是抓包在软件测试中的核心价值与具体应用场景：&lt;/p&gt;&lt;section&gt;&lt;h3&gt;精准定位前后端问题，划分责任边界（最高频核心用途）&lt;a href=&quot;#精准定位前后端问题划分责任边界最高频核心用途&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;黑盒测试&lt;code&gt;只能看到页面最终表现，无法判断故障根因在前端还是后端&lt;/code&gt;，抓包可直接拆解交互全链路，快速定责，避免团队推诿。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;功能异常根因定位&lt;/strong&gt;：针对登录失败、数据不展示、提交不生效等问题，通过抓包可直接&lt;code&gt;核对&lt;/code&gt;：前端是否发送了请求、请求参数 / 格式 / 协议是否符合接口文档、服务端返回的状态码 / 响应体是否正确。比如页面提示 “提交失败”，若抓包发现前端传参格式错误，即为前端问题；若参数正确但后端返回 500 / 业务错误码，即为后端问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;全链路问题排查&lt;/strong&gt;：针对页面加载慢、请求超时、白屏等问题，抓包可&lt;code&gt;定位&lt;/code&gt;是 DNS 解析异常、TCP 握手失败、网络丢包重传，还是接口服务处理耗时过长，精准锁定性能 / 网络瓶颈。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;第三方交互问题定位&lt;/strong&gt;：涉及支付、地图、推送等第三方 SDK / 接口时，抓包可快速&lt;code&gt;验证&lt;/code&gt;是我方系统传参错误，还是第三方接口返回异常，缩小排查范围。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;校验接口业务逻辑，覆盖黑盒测试盲区&lt;a href=&quot;#校验接口业务逻辑覆盖黑盒测试盲区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;页面端的测试只能覆盖表层操作，&lt;code&gt;无法验证后端接口的底层逻辑校验&lt;/code&gt;，抓包可以突破前端限制，验证业务规则的完整性和严谨性。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;后端参数校验验证&lt;/strong&gt;：前端页面通常会做输入限制（比如金额≤100、手机号格式校验），但恶意用户可通过抓包篡改请求参数，绕过前端限制。测试&lt;code&gt;通过抓包改参，可验证后端是否做了二次校验&lt;/code&gt;，避免出现 “0 元下单”“越权修改他人信息” 等致命业务漏洞。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;接口文档一致性校验&lt;/strong&gt;：抓包可核对请求入参、响应出参、状态码、字段含义&lt;code&gt;是否与接口文档一致&lt;/code&gt;，避免出现文档与实际实现脱节、多余敏感字段返回等问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;权限与越权漏洞验证&lt;/strong&gt;：通过抓包获取高权限接口的请求信息，用普通用户的身份重放请求，可验证是否存在水平&lt;code&gt;越权&lt;/code&gt;（操作同级别其他用户数据）、垂直越权（普通用户操作管理员功能）等高危问题，这些是页面操作完全无法覆盖的测试点。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;开展安全测试，挖掘数据与传输安全风险&lt;a href=&quot;#开展安全测试挖掘数据与传输安全风险&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;抓包是 Web/APP &lt;code&gt;安全测试&lt;/code&gt;的基础手段，核心用于验证数据传输安全、挖掘潜在安全漏洞，满足合规要求。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;敏感数据泄露排查&lt;/strong&gt;：抓包可查看账号密码、身份证号、银行卡信息、支付密钥等敏感数据是否明文传输，是否做了合规加密处理，是否符合《个人信息保护法》、等保 2.0 等合规要求，&lt;code&gt;避免敏感数据被窃听泄露&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;常见安全漏洞挖掘&lt;/strong&gt;：通过抓包篡改请求参数、重放数据包，可测试 SQL 注入、XSS 跨站脚本、CSRF 跨站请求伪造、重放攻击（比如重复支付、重复领券）等常见安全漏洞，&lt;code&gt;验证服务端的防护策略是否生效&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;加密与签名校验验证&lt;/strong&gt;：抓包可验证请求是否做了签名防篡改、加密算法是否安全，&lt;code&gt;避免数据包被中间人篡改&lt;/code&gt;，保障传输链路的完整性。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;支撑性能与弱网测试，验证系统稳定性&lt;a href=&quot;#支撑性能与弱网测试验证系统稳定性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;性能瓶颈定位&lt;/strong&gt;：抓包可统计接口的响应时长、吞吐量、并发下的丢包率、TCP 重传情况，定位是网络链路问题，还是服务端处理性能不足；同时可验证长连接、连接复用等优化策略是否生效，为性能优化提供数据支撑。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;弱网与异常网络场景测试&lt;/strong&gt;：通过 Charles、Fiddler 等抓包工具，可模拟弱网、高延迟、丢包、网络抖动、断网重连等极端场景，测试 APP / 网页在异常网络下的表现：是否会出现数据重复提交、订单重复创建、页面崩溃、数据错乱等问题，验证系统的容错能力和稳定性。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Mock 数据与场景构造，提升测试效率与覆盖度&lt;a href=&quot;#mock-数据与场景构造提升测试效率与覆盖度&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;抓包工具自带的 Mock 功能，可解决测试环境依赖、极端场景难构造的痛点。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;无依赖前置测试&lt;/strong&gt;：后端接口尚未开发完成时，测试可通过抓包工具 Mock 接口的返回数据（正常 / 异常 / 边界值），提前对前端页面进行测试，不用等待后端联调完成，大幅缩短测试周期。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;极端场景快速构造&lt;/strong&gt;：无需修改数据库、无需后端配合，即可通过 Mock 模拟接口超时、500 错误、空数据、超大列表、异常状态码等极端场景，测试前端的容错处理、异常提示是否符合预期，提升测试覆盖度。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Charles 安装（了解）&lt;a href=&quot;#charles-安装了解&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Charles 全称 Charles Proxy，俗称 “花瓶”，是一款跨平台的 HTTP/HTTPS/HTTP2/WebSocket 协议&lt;code&gt;抓包代理工具&lt;/code&gt;，也是软件测试、移动端 / 前端开发领域最主流的抓包工具之一。&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;659&quot; height=&quot;217&quot; src=&quot;/_astro/PixPin_2026-04-13_22-53-53.C8U6udNu_Zl7Ldd.webp&quot; srcset=&quot;/_astro/PixPin_2026-04-13_22-53-53.C8U6udNu_5upKr.webp 640w, /_astro/PixPin_2026-04-13_22-53-53.C8U6udNu_Zl7Ldd.webp 659w&quot; /&gt;&lt;/p&gt;&lt;p&gt;基于 “中间人代理” 原理，&lt;code&gt;捕获客户端与服务端之间的全量网络流量&lt;/code&gt;，支持请求篡改、响应 Mock、弱网模拟、接口重放等一站式能力，完美匹配软件测试全流程的抓包需求。&lt;/p&gt;&lt;p&gt;由 Java 编写的软件，故安装运行 Charles 的时候要安装好 &lt;a href=&quot;https://www.oracle.com/cn/java/technologies/downloads/#jdk21-windows&quot; target=&quot;_blank&quot;&gt;Java&lt;/a&gt; 环境。安装完成后的 &lt;a href=&quot;https://www.charlesproxy.com/&quot; target=&quot;_blank&quot;&gt;Charles&lt;/a&gt; 需要付费授权，不过提供了 30 天免费试用，试用版单次启动最长使用 30 分钟，到期重启即可继续使用。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;HTTP&lt;a href=&quot;#http&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;HTTP：全称 HyperText Transfer Protocol（超文本传输协议），是互联网应用层最基础的通信协议，基于 TCP/IP 协议栈，负责客户端（浏览器 / APP）与服务端之间的超文本数据传输，&lt;code&gt;默认端口 80，全程明文传输&lt;/code&gt;。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;核心特性&lt;a href=&quot;#核心特性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;简单通用&lt;/strong&gt;：基于请求 - 响应模型，语法简洁，跨平台、跨终端兼容，是 Web 通信的基石；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无状态&lt;/strong&gt;：协议本身不记录客户端的身份和请求历史，需通过 Cookie/Session/Token 维持用户会话；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;灵活可扩展&lt;/strong&gt;：支持自定义请求方法、头部字段，适配图片、视频、JSON 等各类数据格式传输。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;致命短板&lt;a href=&quot;#致命短板&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;明文传输，无保密性&lt;/strong&gt;：所有数据在网络中完全裸奔，中间节点（公共 WiFi、路由器、运营商、网关）均可无门槛窃听、截取完整数据，包括账号密码、身份证号、支付信息等敏感内容；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无身份校验，易伪造&lt;/strong&gt;：无法验证通信双方的真实身份，极易遭遇中间人攻击、钓鱼网站伪装，用户无法确认自己访问的是目标网站还是恶意站点；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无完整性校验，易篡改&lt;/strong&gt;：传输过程中数据被篡改（如运营商插入广告、恶意代码、修改业务参数），通信双方完全无法察觉。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;HTTPS&lt;a href=&quot;#https&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;HTTPS：全称 HyperText Transfer Protocol Secure（超文本传输安全协议），是 HTTP 的安全增强版，核心是在 HTTP 与 TCP 传输层之间新增了 &lt;code&gt;SSL/TLS 加密隧道，默认端口 443&lt;/code&gt;，解决了 HTTP 明文传输的三大致命安全隐患，是当前互联网的主流标准协议。&lt;/p&gt;&lt;p&gt;HTTPS 通过&lt;code&gt;混合加密体系&lt;/code&gt;、&lt;code&gt;数字证书身份认证&lt;/code&gt;、&lt;code&gt;哈希摘要完整性校验&lt;/code&gt;三大核心机制，完整解决 HTTP 的原生安全问题，同时兼顾传输性能。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;核心一句话总结：&lt;code&gt;HTTPS = HTTP + SSL/TLS&lt;/code&gt;，本质是给 HTTP 通信加了加密、身份认证、完整性校验三重安全防护。&lt;/p&gt;&lt;/blockquote&gt;&lt;section&gt;&lt;h3&gt;混合加密体系（解决明文窃听问题）&lt;a href=&quot;#混合加密体系解决明文窃听问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTTPS 结合了&lt;code&gt;非对称加密&lt;/code&gt;和&lt;code&gt;对称加密&lt;/code&gt;的优势，规避两者的短板：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;对称加密&lt;/strong&gt;：加解密使用同一个密钥，速度极快，适合加密大量业务数据；但密钥传输过程中容易泄露。常用算法：AES、ChaCha20。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;非对称加密&lt;/strong&gt;：分为公钥（公开分发）和私钥（仅服务端持有），公钥加密的内容只有私钥能解密，反之亦然；安全性极高，但加解密速度慢，不适合大量数据传输。常用算法：RSA、ECC。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;加密流程核心逻辑&lt;/strong&gt;：通信前，通过非对称加密安全协商出一个&lt;code&gt;仅客户端和服务端知晓的会话对称密钥&lt;/code&gt;；后续所有 HTTP 业务数据，全程用这个会话对称密钥加密传输，兼顾安全与性能。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;数字证书与 CA 机构（解决身份伪造问题）&lt;a href=&quot;#数字证书与-ca-机构解决身份伪造问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;为了防止公钥被中间人伪造替换，HTTPS 引入了 &lt;code&gt;CA（证书颁发机构）&lt;/code&gt; 体系：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;服务端提前向权威 CA 机构申请数字证书，证书包含服务端域名、公钥、有效期、CA 数字签名等信息；&lt;/li&gt;
&lt;li&gt;TLS 握手时，服务端将证书发送给客户端，客户端通过系统预置的 CA 根证书，校验证书的合法性、域名匹配度、有效期，确认服务端是真实可信的，而非中间人伪造；&lt;/li&gt;
&lt;li&gt;证书校验不通过，客户端会直接中断通信，弹出 “不安全连接” 警告。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;哈希摘要与数字签名（解决数据篡改问题）&lt;a href=&quot;#哈希摘要与数字签名解决数据篡改问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;传输数据时，通过 SHA256 等哈希算法生成数据的唯一摘要，再用私钥对摘要进行数字签名；接收方收到数据后，用公钥验签，重新计算数据摘要并比对，一旦数据被篡改，摘要会完全不一致，立即识别异常，拒绝处理。&lt;/p&gt;&lt;p&gt;（简单理解）主流 TLS 1.2 握手 4 步完成，TLS 1.3 已优化至 1-RTT，大幅降低握手延迟：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;客户端 Hello：发送支持的 TLS 版本、加密套件、随机数 1；&lt;/li&gt;
&lt;li&gt;服务端 Hello：返回确认的 TLS 版本、加密套件、随机数 2、服务端数字证书；&lt;/li&gt;
&lt;li&gt;客户端校验证书合法后，生成预主密钥，用服务端公钥加密发送给服务端；&lt;/li&gt;
&lt;li&gt;双方通过预主密钥 + 两个随机数，生成相同的会话对称密钥，后续所有 HTTP 数据均用该密钥加密传输。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;HTTP 和 HTTP 差异&lt;a href=&quot;#http-和-http-差异&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;






















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;对比维度&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;HTTP&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;HTTPS&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;默认端口&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;80&lt;/td&gt;&lt;td&gt;443&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;传输特性&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;明文传输，无加密&lt;/td&gt;&lt;td&gt;全程 TLS 加密传输，密文传输&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;安全性&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;无保密性、无身份校验、无完整性保护，极易被窃听 / 篡改 / 伪造&lt;/td&gt;&lt;td&gt;三重安全防护，防窃听、防篡改、防伪造，安全性极高&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;证书要求&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;无需证书&lt;/td&gt;&lt;td&gt;必须向权威 CA 机构申请数字证书（自签名证书仅可用于测试环境）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;性能开销&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;无加密解密开销，TCP 三次握手后直接传输数据&lt;/td&gt;&lt;td&gt;额外的 TLS 握手开销，加解密有轻微性能损耗；TLS 1.3 + 会话复用优化后，损耗可忽略&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;抓包难度&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;无门槛，直接抓取即可看到完整明文请求 / 响应&lt;/td&gt;&lt;td&gt;必须安装并信任中间人根证书、开启 SSL 代理，否则只能看到乱码密文；开启 SSL Pinning 后无法常规抓包&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SEO 权重&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;浏览器标记 “不安全”，搜索引擎降权&lt;/td&gt;&lt;td&gt;浏览器标记安全锁，搜索引擎优先收录，权重更高&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;合规性&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;传输敏感个人信息违反《个人信息保护法》《网络安全法》等保要求&lt;/td&gt;&lt;td&gt;满足数据传输加密的合规要求，是线上业务的强制标准&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;仅内部测试环境、无敏感信息的静态资源站点&lt;/td&gt;&lt;td&gt;所有线上 Web 站点、APP 接口、支付、金融、政务等涉及用户数据的业务场景&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;section&gt;&lt;h3&gt;软测相关&lt;a href=&quot;#软测相关&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;为什么 HTTPS 抓包必须安装证书、开启 SSL 代理？&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;Charles 抓包的本质是合法的中间人攻击。HTTPS 的设计初衷就是防止中间人窃听，正常通信中，只有客户端和真实服务端能拿到会话对称密钥，中间人只能拿到无法解密的密文。&lt;/li&gt;
&lt;li&gt;要实现 HTTPS 抓包解密，必须满足两个核心条件：
&lt;ul&gt;
&lt;li&gt;让客户端信任 Charles 的根证书，把 Charles 当成合法的服务端，完成 TLS 握手并协商出客户端 - Charles 的会话密钥；&lt;/li&gt;
&lt;li&gt;Charles 同时作为客户端，和真实服务端完成 TLS 握手，协商出 Charles - 服务端的会话密钥；&lt;/li&gt;
&lt;li&gt;Charles 用两套密钥分别解密、加密双向流量，实现明文查看和篡改，这也是 Charles 中 SSL Proxying 配置、证书信任的核心原理。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;为什么高版本系统 / APP 抓不到 HTTPS 包？&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;系统级证书限制&lt;/strong&gt;：Android 7.0 及以上系统，默认不信任用户手动安装的根证书，仅信任系统预置的权威 CA 根证书；iOS 10.3 + 安装证书后，必须手动在「证书信任设置」中开启完全信任，否则证书不生效。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSL Pinning（证书固定）&lt;/strong&gt;：正规线上 APP 会在代码中固定服务端证书的公钥 / 哈希值，即使客户端信任了 Charles 证书，APP 发现证书与固定值不一致，会直接中断通信，拒绝传输数据，这也是第三方 APP 无法常规抓包的核心原因。
&lt;blockquote&gt;&lt;p&gt;合规提示：仅可对企业自有、授权测试的 APP 关闭 SSL Pinning，禁止未经授权破解第三方 APP。&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;软件测试中 HTTP/HTTPS 的核心测试关注点&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;HTTP 测试：核心关注合规风险，线上业务禁止用 HTTP 传输账号密码、身份证、支付信息等敏感数据，否则违反《个人信息保护法》等合规要求；仅可用于内部测试环境，需确认是否有强制跳转 HTTPS 的配置。&lt;/li&gt;
&lt;li&gt;HTTPS 测试：
&lt;ul&gt;
&lt;li&gt;证书有效性：校验证书有效期、域名匹配度、CA 机构合法性，避免证书过期、域名不匹配导致线上故障；&lt;/li&gt;
&lt;li&gt;安全配置：禁用 TLS 1.0/1.1 等不安全版本、弱加密套件，开启 HSTS，防止 SSL 剥离攻击；&lt;/li&gt;
&lt;li&gt;传输安全：校验敏感数据是否在 HTTPS 基础上做了二次加密，是否有明文泄露敏感字段；&lt;/li&gt;
&lt;li&gt;防护有效性：验证 SSL Pinning 是否生效，是否能抵御中间人抓包篡改。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;常见误区&lt;a href=&quot;#常见误区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;HTTPS 不是绝对安全&lt;/strong&gt;：HTTPS 只解决传输层的安全问题，无法防护应用层漏洞。SQL 注入、XSS 跨站脚本、越权操作、业务逻辑漏洞等，依然需要通过接口测试、安全测试来防护；如果设备被 ROOT / 越狱、用户手动信任了恶意证书，HTTPS 通信依然可能被窃听。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;HTTPS 一定比 HTTP 慢很多&lt;/strong&gt;：早期 TLS 协议握手开销较大，现在 TLS 1.3 优化了握手流程，配合会话复用、OCSP 装订、CDN 加速等技术，HTTPS 的性能损耗已经极小，远低于其带来的安全收益，已无性能层面的接入障碍。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;用了 HTTPS 就不用再做数据加密&lt;/strong&gt;：核心敏感数据（如支付密码、银行卡号），建议在应用层做二次加密。双重防护可以避免即使传输层被解密，核心数据依然无法被窃取，进一步提升安全水位。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Fiddler的使用</title><link>https://umami.eu.cc/posts/fiddler/</link><guid isPermaLink="true">https://umami.eu.cc/posts/fiddler/</guid><description>关于抓包工具Fiddler的使用</description><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;Fiddler 简介&lt;a href=&quot;#fiddler-简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Fiddler 作为&lt;code&gt;代理服务器&lt;/code&gt;的方式存在客服端和服务器之间，所有的网络数据都要经过 Fiddler，以此截取数据信息，实现网络数据抓包。&lt;/p&gt;&lt;p&gt;Fiddler 是位于客户端和服务器端的 &lt;code&gt;HTTP 代理&lt;/code&gt;，监听两者发出的请求响应信息，是目前最常用的 HTTP 抓包工具之一。&lt;/p&gt;&lt;p&gt;功能非常强大，是 web 调试的利器：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;监控浏览器所有的 HTTP/HTTPS 流量&lt;/li&gt;
&lt;li&gt;查看、分析请求内容细节&lt;/li&gt;
&lt;li&gt;伪造客户端请求和服务器响应&lt;/li&gt;
&lt;li&gt;测试网站的性能&lt;/li&gt;
&lt;li&gt;解密 HTTPS 的 web 会话&lt;/li&gt;
&lt;li&gt;全局、局部断点功能&lt;/li&gt;
&lt;li&gt;可以安装第三方插件扩展额外功能&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;适合场景：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;接口调试、接口测试、线上环境调试、web 性能分析&lt;/li&gt;
&lt;li&gt;判断前后端 bug、开发环境 hosts 配置、mock、弱网断网测试&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;HTTP 简介&lt;a href=&quot;#http-简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Hyper Text Transfer Protocol（超文本传输协议），用于从万维网服务器传输超文本到本地浏览器的传送协议。&lt;/p&gt;&lt;p&gt;HTTP 协议是基于 TCP 的应用层协议，它不关心数据传输的细节，主要是用来&lt;code&gt;规定客户端和服务端的数据传输格式&lt;/code&gt;，最初是用来向客户端传输 HTML 页面的内容。默认端口是 80。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;HTTP 是基于请求与响应模式的、无状态的、应用层的协议&lt;/p&gt;&lt;/blockquote&gt;&lt;section&gt;&lt;h3&gt;请求报文&lt;a href=&quot;#请求报文&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTTP 请求报文（Request Message）是&lt;code&gt;客户端（浏览器、APP、爬虫等）向服务器发起 HTTP 请求时，按照 HTTP 协议规范发送的结构化数据&lt;/code&gt;，用于告知服务器「&lt;code&gt;要做什么、要什么资源、带什么参数 / 数据&lt;/code&gt;」。&lt;/p&gt;&lt;p&gt;一个完整的 HTTP 请求报文，顺序固定不可调换，分为4 个核心部分：&lt;code&gt;请求行 → 请求头 → 空行 → 请求体&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;请求行（Request Line）&lt;/strong&gt;：请求报文的第一行（唯一一行），是整个请求的核心摘要，固定格式如下：&lt;code&gt;&amp;lt;请求方法&amp;gt; &amp;lt;请求URI/URL&amp;gt; &amp;lt;HTTP版本&amp;gt;&lt;/code&gt;，例如：&lt;code&gt;GET /api/user/info?user_id=10086 HTTP/1.1&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;请求方法&lt;/strong&gt;：HTTP 标准动词，明确告知服务器要执行的操作，高频常用项如下：&lt;/p&gt;












































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;请求方法&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心含义&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;典型使用场景&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;GET&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;资源获取（只读操作）&lt;/td&gt;&lt;td&gt;打开网页、查询接口、获取图片 / 静态资源，&lt;code&gt;默认无请求体&lt;/code&gt;，参数放在 URL 的 Query 查询串中&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;POST&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;资源提交 / 创建&lt;/td&gt;&lt;td&gt;登录、表单提交、新增数据接口，&lt;code&gt;核心参数放在请求体中&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;PUT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;资源全量更新&lt;/td&gt;&lt;td&gt;修改用户全量信息、覆盖整条数据&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DELETE&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;资源删除&lt;/td&gt;&lt;td&gt;删除数据接口&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;HEAD&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;仅获取响应头&lt;/td&gt;&lt;td&gt;检查资源是否存在、校验缓存有效性，无响应体&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;OPTIONS&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;跨域预检请求&lt;/td&gt;&lt;td&gt;跨域请求前浏览器自动发起，询问服务器允许的请求源 / 方法&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;PATCH&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;资源部分更新&lt;/td&gt;&lt;td&gt;仅修改资源的单个字段，无需全量提交&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;请求 URI/URL&lt;/strong&gt;：统一资源标识符，明确告知服务器要访问的目标资源位置&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;绝对路径形式（最常用，配合 Host 头）：/api/user/info&lt;code&gt;?user_id=10086&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;完整 URL 形式（代理请求专用，Fiddler 抓包可直接看到）：&lt;a href=&quot;https://www.example.com/api/user/info?user_id=10086&quot; target=&quot;_blank&quot;&gt;https://www.example.com/api/user/info?user_id=10086&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;补充：&lt;code&gt;?&lt;/code&gt;后为 Query 查询参数，多组参数用&amp;amp;分隔，是 GET 请求传参的核心方式&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;HTTP 版本&lt;/strong&gt;：客户端使用的协议版本，常见为HTTP/1.1（最通用，强制要求携带 Host 头）、HTTP/2、HTTP/3&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;strong&gt;请求头（Request Headers）&lt;/strong&gt;：请求行下方，多行&lt;code&gt;字段名: 字段值&lt;/code&gt;格式的键值对（每行一个字段，大小写不敏感），用于传递请求的元数据，告知服务器「&lt;code&gt;客户端是谁、能接受什么内容、带了什么凭证&lt;/code&gt;」。&lt;/p&gt;&lt;p&gt;高频核心请求头按功能分类如下：&lt;/p&gt;












































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;分类&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;关键字段&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心作用&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;典型示例&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;强制必填 &amp;amp; 基础定位&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Host&lt;/td&gt;&lt;td&gt;目标服务器的域名 + 端口，HTTP/1.1 协议强制必填，用于服务器区分同 IP 下的多个站点&lt;/td&gt;&lt;td&gt;&lt;code&gt;Host: www.example.com&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;****&lt;/td&gt;&lt;td&gt;Connection&lt;/td&gt;&lt;td&gt;连接管理，控制 TCP 连接是否保持长连接&lt;/td&gt;&lt;td&gt;&lt;code&gt;Connection: keep-alive&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;客户端标识&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;User-Agent&lt;/td&gt;&lt;td&gt;客户端信息（浏览器、系统、设备、APP 标识），俗称 UA，常被用于反爬校验&lt;/td&gt;&lt;td&gt;&lt;code&gt;User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;内容协商 &amp;amp; 解析&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Accept&lt;/td&gt;&lt;td&gt;客户端能接受的响应体媒体类型&lt;/td&gt;&lt;td&gt;&lt;code&gt;Accept: application/json, text/html, */*&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;****&lt;/td&gt;&lt;td&gt;Accept-Encoding&lt;/td&gt;&lt;td&gt;客户端支持的响应体压缩格式&lt;/td&gt;&lt;td&gt;&lt;code&gt;Accept-Encoding: gzip, deflate, br&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;****&lt;/td&gt;&lt;td&gt;Content-Type&lt;/td&gt;&lt;td&gt;请求体的媒体类型 / 格式，服务器必须按此解析请求体，POST 请求必填&lt;/td&gt;&lt;td&gt;&lt;code&gt;application/json; charset=utf-8&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;****&lt;/td&gt;&lt;td&gt;Content-Length&lt;/td&gt;&lt;td&gt;请求体的字节长度，服务器据此读取完整的请求体&lt;/td&gt;&lt;td&gt;&lt;code&gt;Content-Length: 58&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;鉴权 &amp;amp; 会话凭证&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Cookie&lt;/td&gt;&lt;td&gt;客户端自动携带的 Cookie，用于会话保持、登录状态校验&lt;/td&gt;&lt;td&gt;&lt;code&gt;Cookie: token=abc123; uid=10086&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;****&lt;/td&gt;&lt;td&gt;Authorization&lt;/td&gt;&lt;td&gt;接口鉴权凭证，常用 Bearer Token、Basic Auth&lt;/td&gt;&lt;td&gt;&lt;code&gt;Authorization: Bearer abc123xyz456&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;缓存 &amp;amp; 溯源&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Referer&lt;/td&gt;&lt;td&gt;发起当前请求的来源页面 URL，用于防盗链、请求溯源&lt;/td&gt;&lt;td&gt;&lt;code&gt;Referer: https://www.example.com/login.htm&lt;/code&gt;l&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;跨域相关&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Origin&lt;/td&gt;&lt;td&gt;跨域请求的源域名，浏览器自动携带，不可手动篡改&lt;/td&gt;&lt;td&gt;&lt;code&gt;Origin: https://www.example.com&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;p&gt;&lt;strong&gt;空行&lt;/strong&gt;：请求头和请求体之间，&lt;code&gt;必须有一个单独的空行&lt;/code&gt;（&lt;strong&gt;连续两个回车换行符\r\n\r\n&lt;/strong&gt;），是 HTTP 协议的强制规范，用以&lt;code&gt;明确标识请求头结束，请求体开始&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;哪怕没有请求体，请求头结束后也必须携带这个空行，否则服务器会直接解析失败，返回 400 错误。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;strong&gt;请求体（Request Body）&lt;/strong&gt;：也叫请求正文，是客户端发送给服务器的&lt;code&gt;实际业务数据&lt;/code&gt;，是 POST/PUT/PATCH 等请求的核心，GET/HEAD 请求默认无请求体。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;格式完全由请求头的 Content-Type 决定，二者必须严格匹配，否则服务器会解析失败、无法接收参数。&lt;/li&gt;
&lt;li&gt;为可选内容，仅在需要提交数据时携带&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;抓包最常见的 3 种请求体格式：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;application/json&lt;/code&gt;：目前接口开发最主流的格式，请求体为标准 JSON 字符串。例如：&lt;code&gt;{&quot;username&quot;:&quot;test_user&quot;,&quot;password&quot;:&quot;123456&quot;,&quot;remember&quot;:true}&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;application/x-www-form-urlencoded&lt;/code&gt;：表单默认提交格式，和 URL 查询串格式一致，键值对用&amp;amp;分隔。例如：&lt;code&gt;username=test&amp;amp;password=123456&amp;amp;remember=1&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multipart/form-data&lt;/code&gt;：文件上传专用格式，支持二进制文件和普通参数混合提交，通过 boundary 分隔符区分每个字段&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;响应报文&lt;a href=&quot;#响应报文&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTTP 响应报文（Response Message）是服务器收到客户端 HTTP 请求后，按照 HTTP 协议规范返回的结构化数据，用于告知客户端请求的&lt;code&gt;处理结果&lt;/code&gt;、携带&lt;code&gt;返回的资源内容&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;一个完整的 HTTP 响应报文，严格遵循 RFC 7230 协议规范，分为 4 个核心部分，顺序固定：&lt;code&gt;状态行 → 响应头 → 空行 → 响应体&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;状态行（Status Line）&lt;/strong&gt;：响应报文的第一行，是整个响应的核心摘要，直接告诉客户端请求的&lt;code&gt;最终处理结果&lt;/code&gt;，固定格式：&lt;code&gt;&amp;lt;HTTP版本&amp;gt; &amp;lt;3位状态码&amp;gt; &amp;lt;状态描述短语&amp;gt;&lt;/code&gt;，例如 &lt;code&gt;HTTP/1.1 200 OK&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;HTTP 版本&lt;/strong&gt;：与请求报文的版本对应，常见为 &lt;code&gt;HTTP/1.1、HTTP/2、HTTP/3&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;状态码&lt;/strong&gt;：3 位数字，是请求结果的核心标识，分为 5 大固定类别：&lt;/p&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;分类&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心含义&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;高频常用值&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;1xx&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;信息性响应，协议中间状态&lt;/td&gt;&lt;td&gt;101（协议切换，如 WebSocket）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;2xx&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;请求成功处理&lt;/td&gt;&lt;td&gt;200 OK（成功）、201 Created（资源创建成功）、204 No Content（无返回体）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;3xx&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;重定向，需客户端进一步操作&lt;/td&gt;&lt;td&gt;301（永久重定向）、302（临时重定向）、304（缓存生效，无响应体）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;4xx&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;客户端错误，请求有问题&lt;/td&gt;&lt;td&gt;400（参数错误）、401（未授权 / 未登录）、403（权限不足，服务器拒绝）、404（资源不存在）、405（请求方法不允许）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;5xx&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;服务器错误，服务端处理失败&lt;/td&gt;&lt;td&gt;500（服务器内部错误）、502（网关错误，上游服务异常）、503（服务不可用）、504（网关超时）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;状态描述&lt;/strong&gt;：对状态码的简短文本说明，仅用于人类阅读，不影响程序处理。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;strong&gt;响应头（Response Headers）&lt;/strong&gt;：状态行下方，多行&lt;code&gt;字段名: 字段值&lt;/code&gt;格式的键值对，每行一个字段，用于传递响应的元数据，告诉客户端如何处理返回的内容。&lt;/p&gt;&lt;p&gt;常用核心响应头按功能分类如下：&lt;/p&gt;










































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;分类&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;关键字段&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心作用&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;基础通用类&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Server&lt;/td&gt;&lt;td&gt;服务器软件信息（如 nginx、Apache）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;****&lt;/td&gt;&lt;td&gt;Date&lt;/td&gt;&lt;td&gt;响应生成的标准 GMT 时间&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;****&lt;/td&gt;&lt;td&gt;Connection&lt;/td&gt;&lt;td&gt;连接管理（keep-alive 长连接 /close 关闭连接）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;内容解析类（最核心）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Content-Type&lt;/td&gt;&lt;td&gt;响应体的媒体类型 + 字符集，决定客户端如何解析内容例：application/json; charset=utf-8（JSON 接口）、text/html; charset=utf-8（网页）、image/png（图片）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;****&lt;/td&gt;&lt;td&gt;Content-Length&lt;/td&gt;&lt;td&gt;响应体的字节长度&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;****&lt;/td&gt;&lt;td&gt;Content-Encoding&lt;/td&gt;&lt;td&gt;响应体压缩格式（gzip/br/deflate），客户端需对应解压&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;缓存控制类&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Cache-Control&lt;/td&gt;&lt;td&gt;缓存策略（max-age=3600 缓存 1 小时 /no-cache 协商缓存 /no-store 不缓存）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;****&lt;/td&gt;&lt;td&gt;ETag&lt;/td&gt;&lt;td&gt;资源唯一标识，用于协商缓存&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;****&lt;/td&gt;&lt;td&gt;Last-Modified&lt;/td&gt;&lt;td&gt;资源最后修改时间，用于协商缓存&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;安全 &amp;amp; 跨域类&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Access-Control-Allow-Origin&lt;/td&gt;&lt;td&gt;跨域允许的请求源（* 代表所有，或指定域名）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;****&lt;/td&gt;&lt;td&gt;Set-Cookie&lt;/td&gt;&lt;td&gt;服务器给客户端写入 Cookie，后续请求会自动携带&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;****&lt;/td&gt;&lt;td&gt;X-Frame-Options&lt;/td&gt;&lt;td&gt;控制是否允许被 iframe 嵌入，防点击劫持&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;重定向类&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Location&lt;/td&gt;&lt;td&gt;重定向的目标 URL，3xx 状态码必须携带&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;p&gt;&lt;strong&gt;空行&lt;/strong&gt;：响应头和响应体之间，&lt;code&gt;必须有一个单独的空行&lt;/code&gt;（&lt;strong&gt;连续两个回车换行符\r\n\r\n&lt;/strong&gt;），是 HTTP 协议的强制规范，作用是&lt;code&gt;标识响应头结束，响应体开始&lt;/code&gt;。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;strong&gt;响应体（Response Body）&lt;/strong&gt;：也叫响应正文，是服务器返回的&lt;code&gt;实际业务数据&lt;/code&gt;，也是抓包时最关注的核心内容。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;格式完全由响应头的 &lt;code&gt;Content-Type&lt;/code&gt; 决定，常见类型：HTML 网页、JSON 接口数据、JavaScript/CSS 文本、图片 / 视频 / 文件等二进制数据&lt;/li&gt;
&lt;li&gt;响应体为&lt;code&gt;可选&lt;/code&gt;内容：204 No Content、304 Not Modified、HEAD 请求的响应，均无响应体&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Fiddler&lt;a href=&quot;#fiddler&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;下载 Fiddler 经典版，最新版强制登录且有试用期。&lt;/p&gt;&lt;p&gt;可以抓到请求的网站：&lt;a href=&quot;http://www.cjzzc.com/http_code.html&quot; target=&quot;_blank&quot;&gt;超级蜘蛛池&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://blog.csdn.net/weixin_33218697/article/details/158732659&quot; target=&quot;_blank&quot;&gt;测试-抓包工具-Fildder&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>MySQL索引</title><link>https://umami.eu.cc/posts/mysql-index/</link><guid isPermaLink="true">https://umami.eu.cc/posts/mysql-index/</guid><description>关于MySQL索引的大概解析</description><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;索引是 MySQL 高效查询数据的核心数据结构，本质是数据表的 “目录”，通过预先排序、组织数据的 key 值（&lt;code&gt;创建二叉树&lt;/code&gt;），&lt;code&gt;避免全表扫描&lt;/code&gt;，将随机磁盘 IO 转为顺序 IO，从而指数级&lt;strong&gt;提升&lt;code&gt;查询&lt;/code&gt;性能&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;在我们为表的字段添加 &lt;code&gt;主键(PRIMARY KEY) / UNIQUE&lt;/code&gt; 时，MySQL就&lt;code&gt;自动&lt;/code&gt;为该字段添加了一个索引，称为主键索引 / 唯一索引。&lt;/p&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;索引类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心特点&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;创建语法&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;主键索引&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;唯一 + 非空，聚簇索引，一个表仅一个&lt;/td&gt;&lt;td&gt;&lt;code&gt;建表时&lt;/code&gt;：PRIMARY KEY (id)新增：ALTER TABLE user ADD PRIMARY KEY (id);&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;唯一索引&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;索引列值必须唯一，允许 NULL 值（多个 NULL 不算重复）&lt;/td&gt;&lt;td&gt;&lt;code&gt;CREATE UNIQUE INDEX idx_user_phone ON user(phone);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;普通索引&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;无约束，仅用于加速查询，最基础的索引&lt;/td&gt;&lt;td&gt;&lt;code&gt;CREATE INDEX idx_user_age ON user(age);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;联合索引&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;多个列组合而成的索引，需遵循最左前缀原则&lt;/td&gt;&lt;td&gt;&lt;code&gt;CREATE INDEX idx_user_name_age ON user(name,age);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;前缀索引&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;针对长字符串，仅对字段前 N 个字符建索引，减小索引体积&lt;/td&gt;&lt;td&gt;&lt;code&gt;CREATE INDEX idx_url ON article(url(15));&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;全文索引&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;针对大文本的分词检索，支持模糊匹配&lt;/td&gt;&lt;td&gt;&lt;code&gt;CREATE FULLTEXT INDEX idx_article_content ON article(content);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;MySQL的全文索引效果不是很好，一般高级语言都会有框架解决全文搜索的问题。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;查看表的所有索引&lt;/strong&gt;：&lt;code&gt;SHOW INDEX FROM 表名;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;删除索引&lt;/strong&gt;：&lt;code&gt;DROP INDEX 索引名 ON 表名;&lt;/code&gt; 或 &lt;code&gt;ALTER TABLE 表名 DROP INDEX 索引名;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;关于索引需要注意以下几点&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;核心字段优先建索引&lt;/strong&gt;：只为 WHERE、JOIN ON、ORDER BY、GROUP BY 涉及的列建索引，不要为 SELECT 中的非查询列单独建索引。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;避免过度索引与冗余索引&lt;/strong&gt;：索引不是越多越好，&lt;code&gt;过多的索引会占用磁盘空间&lt;/code&gt;，大幅降低 INSERT/UPDATE/DELETE 的写性能。已有idx(a,b)，无需再建idx(a)，属于冗余索引。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;列尽量设置为 NOT NULL&lt;/strong&gt;：NULL 值会占用索引空间，导致优化器的索引选择、统计计算更复杂，建议给列设置默认值，避免 NULL。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;禁止在索引列上做任何计算 / 函数操作&lt;/strong&gt;：把计算放到业务层，不要放到 SQL 中，避免索引失效。&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title>MySQL事务</title><link>https://umami.eu.cc/posts/mysql-transaction/</link><guid isPermaLink="true">https://umami.eu.cc/posts/mysql-transaction/</guid><description>关于MySQL事务</description><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;MySQL 事务是一组&lt;code&gt;原子性的 SQL 操作（DML）集合&lt;/code&gt;，它将多个 SQL 操作绑定为一个不可拆分的逻辑执行单元，核心规则是：&lt;code&gt;所有操作要么全部执行成功，要么全部失败回滚&lt;/code&gt;，是数据库保障&lt;code&gt;数据一致性&lt;/code&gt;、并发操作安全性的核心机制。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;MySQL 中只有 InnoDB 存储引擎原生支持完整的事务特性&lt;/p&gt;&lt;/blockquote&gt;
&lt;section&gt;&lt;h2&gt;事务的核心基石：ACID 四大特性&lt;a href=&quot;#事务的核心基石acid-四大特性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;ACID 是事务的灵魂，&lt;code&gt;四个特性相辅相成，最终目标是保障数据的一致性&lt;/code&gt;，每个特性都有明确的业务含义和底层实现支撑。&lt;/p&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;特性&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心定义&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;业务示例&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;底层实现保障&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;原子性（Atomicity）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;事务是最小不可分割的执行单元，不存在 “部分成功”，所有操作要么全提交生效，要么全失败回滚&lt;/td&gt;&lt;td&gt;转账场景中，“扣款” 和 “收款” 必须同时成功，绝不能出现扣了钱没到账的情况&lt;/td&gt;&lt;td&gt;&lt;code&gt;undo log（回滚日志）&lt;/code&gt;：记录操作的反向 SQL，事务失败时通过 undo log 还原数据到初始状态&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;一致性（Consistency）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;事务执行前后，数据库的完整性约束（主键、外键、非空、业务规则）不被破坏，数据从一个合法状态转换为另一个合法状态&lt;/td&gt;&lt;td&gt;转账前后两个账户的总余额必须相等，账户余额不能为负数，不能凭空产生或消失金额&lt;/td&gt;&lt;td&gt;是事务的&lt;code&gt;最终目标&lt;/code&gt;，由原子性、隔离性、持久性共同保障，同时需要业务代码配合约束&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;隔离性（Isolation）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;多个并发执行的事务之间相互隔离，一个事务的执行不能被其他事务干扰，避免并发操作导致的数据错乱&lt;/td&gt;&lt;td&gt;A、B 同时给同一个账户转账，两个事务不能互相覆盖修改，最终余额必须是两次转账的累加结果&lt;/td&gt;&lt;td&gt;&lt;code&gt;锁机制 + MVCC（多版本并发控制）&lt;/code&gt;：不同隔离级别通过不同的锁策略和多版本机制，平衡并发性能与数据安全性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;持久性（Durability）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;事务一旦提交成功，对数据的修改就是永久的，后续任何操作、系统故障（宕机、断电）都不会丢失已提交的数据&lt;/td&gt;&lt;td&gt;转账成功收到银行通知后，哪怕银行机房断电，转账记录和余额变化也不会消失&lt;/td&gt;&lt;td&gt;&lt;code&gt;redo log（重做日志）&lt;/code&gt;：基于 WAL 预写日志机制，修改数据前先写日志，宕机后可通过 redo log 恢复已提交的数据&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;事务的基础语法&lt;a href=&quot;#事务的基础语法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;MySQL 默认开启 &lt;code&gt;autocommit = 1&lt;/code&gt;，即每一条单独的 SQL 语句都会被当成一个独立事务，执行完成后自动提交，无法回滚。&lt;/p&gt;&lt;p&gt;若要手动控制事务，必须&lt;code&gt;显式开启事务&lt;/code&gt;，或关闭自动提交 &lt;code&gt;SET autocommit = 0;&lt;/code&gt;。&lt;/p&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;语句&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心作用&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;BEGIN; / START TRANSACTION;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;显式开启一个新的手动事务&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;COMMIT;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;提交事务，永久保存所有修改，释放占用的锁资源&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;ROLLBACK;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;回滚事务，撤销所有未提交的修改，释放占用的锁资源&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SAVEPOINT 保存点名称;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;事务内设置保存点，支持部分回滚，不影响保存点之前的操作&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;ROLLBACK TO SAVEPOINT 保存点名称;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;回滚到指定保存点，仅撤销保存点之后的操作&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;以下操作会触发 &lt;code&gt;MySQL隐式提交事务&lt;/code&gt;（等同于自动执行 COMMIT），哪怕你未手动提交，也无法回滚之前的操作：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;执行 DDL 语句：&lt;code&gt;CREATE/ALTER/DROP/TRUNCATE&lt;/code&gt; 等表结构操作&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;执行管理类语句：&lt;code&gt;LOCK TABLES&lt;/code&gt;、&lt;code&gt;UNLOCK TABLES&lt;/code&gt;、&lt;code&gt;SET AUTOCOMMIT=1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;事务嵌套时，开启新事务会隐式提交上一个未完成的事务&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;数据导入语句：&lt;code&gt;LOAD DATA INFILE&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 开启事务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;BEGIN&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 步骤1：张三账户扣款1000元&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;UPDATE&lt;/span&gt;&lt;span&gt; account &lt;/span&gt;&lt;span&gt;SET&lt;/span&gt;&lt;span&gt;&lt;span&gt; balance &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; balance - &lt;/span&gt;&lt;/span&gt;&lt;span&gt;1000&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; id &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SAVEPOINT sp1; &lt;/span&gt;&lt;span&gt;-- 设置保存点&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 步骤2：李四账户加款1000元&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;UPDATE&lt;/span&gt;&lt;span&gt; account &lt;/span&gt;&lt;span&gt;SET&lt;/span&gt;&lt;span&gt;&lt;span&gt; balance &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; balance + &lt;/span&gt;&lt;/span&gt;&lt;span&gt;1000&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; id &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 若步骤2执行异常，仅回滚步骤2，保留步骤1的操作&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ROLLBACK&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; sp1;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 最终提交事务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;COMMIT&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;隔离级别&lt;a href=&quot;#隔离级别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;隔离级别是事务隔离性的具体落地，核心解决「&lt;code&gt;并发性能&lt;/code&gt;」和「&lt;code&gt;数据安全&lt;/code&gt;」的平衡问题：&lt;code&gt;隔离级别越高，数据异常越少，并发性能越差&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;在完全无隔离的情况下，&lt;code&gt;多个事务&lt;/code&gt;同时操作同一份数据，会出现 3 种核心数据异常：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;脏读&lt;/strong&gt;：一个事务读取到了另一个事务&lt;code&gt;未提交&lt;/code&gt;的数据。
示例：事务 A 修改了账户余额但未提交，事务 B 读取到了这个未提交的数据，随后事务 A 回滚，事务 B 读到的就是无效的脏数据。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;不可重复读&lt;/strong&gt;：同一个事务内，多次读取同一条数据，由于其他提交事务所做的&lt;code&gt;修改&lt;/code&gt;，使得返回的&lt;code&gt;结果不一致&lt;/code&gt;。
示例：事务 A 第一次读取账户余额为 1000 元，期间事务 B 修改了该余额并提交，事务 A 第二次读取时余额变为 2000 元，无法重复读取到一致的结果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;幻读&lt;/strong&gt;：同一个事务内，用相同的条件多次范围查询，由于其他事务所做的&lt;code&gt;插入或删除&lt;/code&gt;操作，使得得到的&lt;code&gt;行数不一致&lt;/code&gt;。
示例：事务 A 查询 id BETWEEN 1 AND 10 得到 5 条数据，期间事务 B 插入了一条 id=3 的数据并提交，事务 A 再次查询得到 6 条数据，如同出现了幻觉。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;核心区分：不可重复读针&lt;code&gt;对单条数据的修改&lt;/code&gt;，幻读针对&lt;code&gt;新增 / 删除导致的行数变化&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;综上，SQL 标准定义了 4 个隔离级别，从低到高如下，&lt;code&gt;MySQL InnoDB默认隔离级别为可重复读（RR）&lt;/code&gt;。&lt;/p&gt;







































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;隔离级别&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;脏读&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;不可重复读&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;幻读&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心特点与适用场景&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;读未提交（READ UNCOMMITTED）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;最低隔离级别，几乎无隔离，仅保障持久性，生产环境严禁使用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;读已提交（READ COMMITTED）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;仅能读取已提交的数据，Oracle、PostgreSQL 默认级别，适合读多写少、对实时性要求高的场景&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;可重复读（REPEATABLE READ）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;标准 SQL 中可能，MySQL 中已解决&lt;/td&gt;&lt;td&gt;MySQL 默认级别，同一事务内多次读取结果完全一致，通过 &lt;code&gt;Next-Key Lock&lt;/code&gt; 临键锁解决了幻读问题，平衡了性能与安全性，适合绝大多数业务场景&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;串行化（SERIALIZABLE）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;最高隔离级别，强制所有事务串行执行，完全消除并发冲突，但并发性能极差，仅适用于对数据一致性要求极高、并发量极低的金融核心场景&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;隔离级别常用操作：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看当前会话隔离级别（MySQL 8.0+）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; @@&lt;/span&gt;&lt;span&gt;session&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;transaction_isolation&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看全局隔离级别&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; @@&lt;/span&gt;&lt;span&gt;global&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;transaction_isolation&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- MySQL 5.7及之前版本用 tx_isolation&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; @@tx_isolation;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 修改当前会话隔离级别为读已提交&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SET&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SESSION&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TRANSACTION&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ISOLATION&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;LEVEL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;READ&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;COMMITTED&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 修改全局隔离级别（重启后失效，永久修改需修改my.cnf配置文件）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SET&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;GLOBAL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TRANSACTION&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ISOLATION&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;LEVEL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;REPEATABLE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;READ&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;事务底层实现&lt;a href=&quot;#事务底层实现&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;MySQL 事务的原子性、持久性，核心靠 &lt;code&gt;redo log&lt;/code&gt; 与 &lt;code&gt;undo log&lt;/code&gt; 两个日志实现，两者相辅相成，缺一不可。&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;特性&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;redo log（重做日志）&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;undo log（回滚日志）&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;核心作用&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;保障事务持久性，实现崩溃恢复&lt;/td&gt;&lt;td&gt;保障事务原子性，支撑 MVCC 多版本控制&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;记录内容&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;物理级日志，记录「某个数据页做了什么修改」&lt;/td&gt;&lt;td&gt;逻辑级日志，记录「如何撤销本次修改的反向操作」&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;写入方式&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;固定大小循环写入，写满后会将脏数据刷入磁盘&lt;/td&gt;&lt;td&gt;追加式写入，事务提交后不会立即删除，用于 MVCC 快照读&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;生命周期&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;事务执行时写入，提交后落盘，崩溃恢复完成后失效&lt;/td&gt;&lt;td&gt;事务执行时写入，事务提交后，等对应快照读全部结束后，由 purge 线程清理&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;</content:encoded></item><item><title>MySQL存储引擎和视图</title><link>https://umami.eu.cc/posts/storage-engine-view/</link><guid isPermaLink="true">https://umami.eu.cc/posts/storage-engine-view/</guid><description>关于MySQL数据库的存储引擎和视图</description><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;存储引擎&lt;a href=&quot;#存储引擎&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;查看 MySQL 实例支持的所有存储引擎&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 结果中Support列标注DEFAULT的，就是实例的默认存储引擎。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SHOW ENGINES;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;section&gt;&lt;h3&gt;InnoDB（MySQL 5.5+ 默认引擎，绝对主流）&lt;a href=&quot;#innodbmysql-55-默认引擎绝对主流&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;InnoDB 是 MySQL 官方&lt;code&gt;主推的事务型引擎&lt;/code&gt;，覆盖了 99% 的生产业务场景（&lt;code&gt;需要数据可靠性、高并发读写、事务支持的业务场景&lt;/code&gt;）。&lt;/p&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;优点&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;缺点&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;数据可靠性拉满，支持事务和崩溃恢复&lt;/td&gt;&lt;td&gt;相比 MyISAM，有事务开销，占用存储空间更大&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;高并发读写性能优异，行级锁冲突少&lt;/td&gt;&lt;td&gt;维护复杂度更高，需要合理配置缓冲池、日志等参数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;支持外键、MVCC，功能最全面&lt;/td&gt;&lt;td&gt;批量写入的纯读场景，性能略低于优化后的 MyISAM&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;MyISAM（MySQL 5.5 之前默认引擎，已基本淘汰）&lt;a href=&quot;#myisammysql-55-之前默认引擎已基本淘汰&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;MyISAM 是 MySQL &lt;code&gt;早期&lt;/code&gt;的默认引擎，设计简单，无事务支持，现在已被 InnoDB 全面替代。&lt;/p&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;优点&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;缺点&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;设计简单，维护成本低&lt;/td&gt;&lt;td&gt;不支持事务，数据可靠性极差&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;纯读场景（无写入）性能优异，占用空间小&lt;/td&gt;&lt;td&gt;表级锁，写并发性能几乎为零&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;支持全文索引、压缩表&lt;/td&gt;&lt;td&gt;宕机后数据易损坏，无法自动恢复&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;MySQL 8.0 已逐步移除对 MyISAM 的支持，且 InnoDB 现已原生支持全文索引，MyISAM 已无不可替代的优势。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;相关存储引擎对比&lt;a href=&quot;#相关存储引擎对比&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;



































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;对比维度&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;InnoDB&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;MyISAM&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;Archive&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;事务支持&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;✅ 完整 ACID&lt;/td&gt;&lt;td&gt;❌ 不支持&lt;/td&gt;&lt;td&gt;❌ 不支持&lt;/td&gt;&lt;td&gt;❌ 不支持&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;锁粒度&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;行级锁 + 间隙锁&lt;/td&gt;&lt;td&gt;表级锁&lt;/td&gt;&lt;td&gt;表级锁&lt;/td&gt;&lt;td&gt;行级锁&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;崩溃恢复&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;✅ 原生支持&lt;/td&gt;&lt;td&gt;❌ 不支持&lt;/td&gt;&lt;td&gt;❌ 数据全丢&lt;/td&gt;&lt;td&gt;❌ 不支持&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;外键约束&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;✅ 支持&lt;/td&gt;&lt;td&gt;❌ 不支持&lt;/td&gt;&lt;td&gt;❌ 不支持&lt;/td&gt;&lt;td&gt;❌ 不支持&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;索引能力&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;聚簇索引 + 二级索引，支持全文索引&lt;/td&gt;&lt;td&gt;非聚簇索引，支持全文索引&lt;/td&gt;&lt;td&gt;哈希 / B 树索引&lt;/td&gt;&lt;td&gt;仅自增主键索引&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;数据持久化&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;✅ 磁盘持久化&lt;/td&gt;&lt;td&gt;✅ 磁盘持久化&lt;/td&gt;&lt;td&gt;❌ 内存存储，重启丢失&lt;/td&gt;&lt;td&gt;✅ 磁盘压缩持久化&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;存储占用&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;中等&lt;/td&gt;&lt;td&gt;偏小&lt;/td&gt;&lt;td&gt;内存占用高&lt;/td&gt;&lt;td&gt;极小&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;核心优势&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;高可靠、高并发、功能全&lt;/td&gt;&lt;td&gt;纯读性能好、占用小&lt;/td&gt;&lt;td&gt;极致读写速度&lt;/td&gt;&lt;td&gt;高压缩、高写入性能&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;视图&lt;a href=&quot;#视图&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;视图（View） 是一种&lt;code&gt;虚拟表&lt;/code&gt;，其内容&lt;code&gt;由查询定义&lt;/code&gt;。它本身&lt;code&gt;不存储数据&lt;/code&gt;，数据来自底层的基表（Base Table），使用时动态从基表查询生成。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;视图的核心作用&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;简化复杂查询&lt;/strong&gt;：将多表关联、子查询等复杂逻辑封装成视图，直接查询视图即可。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据安全&lt;/strong&gt;：限制用户只能访问视图中的字段 / 行，隐藏基表的敏感数据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;逻辑独立性&lt;/strong&gt;：基表结构变化时，只需修改视图定义，无需修改应用代码。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;创建视图&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;VIEW&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;视图名&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; 字段1, 字段2 &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; 基表 &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt; 条件;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;修改视图&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 方式1：覆盖创建（推荐）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE OR REPLACE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;VIEW&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;视图名&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; ...;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 方式2：ALTER修改&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ALTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;VIEW&lt;/span&gt;&lt;span&gt; 视图名 &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; ...;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;删除视图&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DROP&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;VIEW&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;IF&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;EXISTS&lt;/span&gt;&lt;span&gt; 视图名;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;使用视图：&lt;code&gt;像普通表一样查询&lt;/code&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; 视图名;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;注意事项：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;更新限制&lt;/strong&gt;：若视图包含 &lt;code&gt;GROUP BY&lt;/code&gt;、聚合函数（&lt;code&gt;SUM/COUNT&lt;/code&gt;）、&lt;code&gt;DISTINCT&lt;/code&gt; 等，则无法通过视图更新基表数据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能影响&lt;/strong&gt;：视图是 “&lt;code&gt;实时查询&lt;/code&gt;”，复杂视图（视图套视图）可能影响性能，需合理设计。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;视图不存储数据&lt;/strong&gt;：视图是虚拟表，数据全部来自底层基表。基表数据更新，视图的查询结果会同步变化。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;权限控制最佳实践&lt;/strong&gt;：给业务用户仅开放视图的查询权限，不开放基表的访问权限，实现数据隔离和敏感信息保护。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;MySQL用户管理&lt;a href=&quot;#mysql用户管理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;针对 root 外的用户，可以通过如下命令：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 创建一个用户&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;USER&lt;/span&gt;&lt;span&gt; &apos;&lt;/span&gt;&lt;span&gt;用户名&lt;/span&gt;&lt;span&gt;&apos;@&lt;/span&gt;&lt;span&gt;&apos;IP位置&apos;&lt;/span&gt;&lt;span&gt; IDENTIFIED &lt;/span&gt;&lt;span&gt;BY&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;密码&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 删除一个用户&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DROP&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;USER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;用户名&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;IP位置&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 修改自已密码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SET&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;PASSWORD&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PASSWORD&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;密码&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;MySQL权限&lt;a href=&quot;#mysql权限&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;MySQL 权限的本质是：&lt;code&gt;谁（用户）能从哪台机器（主机），对什么数据库对象，执行什么操作&lt;/code&gt;。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;核心规则：MySQL 的用户唯一标识是 &lt;code&gt;用户名@主机地址&lt;/code&gt;，而非单纯的用户名。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;MySQL 验证权限时，&lt;code&gt;先匹配最精确的主机地址，再按「全局→库→表→列」的范围从大到小匹配&lt;/code&gt;，只要任意一个级别有权限，即可生效。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;root@localhost&lt;/code&gt;：仅允许本地登录的 root 用户&lt;/li&gt;
&lt;li&gt;&lt;code&gt;root@192.168.1.%&lt;/code&gt;：仅允许从 192.168.1.0/24 内网网段登录的 root 用户&lt;/li&gt;
&lt;li&gt;&lt;code&gt;root@%&lt;/code&gt;：允许从任意地址远程登录的 root 用户&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;所有权限都存储在 &lt;code&gt;mysql&lt;/code&gt; 系统库的权限表中，无需手动修改，通过标准命令操作即可：&lt;/p&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;权限表&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;存储内容&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;权限级别&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;mysql.user&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;用户基础信息、全局权限&lt;/td&gt;&lt;td&gt;全局级别（.）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;mysql.db&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;单库全表权限&lt;/td&gt;&lt;td&gt;数据库级别（db.*）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;mysql.tables_priv&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;单表权限&lt;/td&gt;&lt;td&gt;表级别（db.tbl）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;mysql.columns_priv&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;单列权限&lt;/td&gt;&lt;td&gt;列级别&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;mysql.procs_priv&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;存储过程 / 函数 / 视图权限&lt;/td&gt;&lt;td&gt;子程序级别&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;section&gt;&lt;h3&gt;权限级别&lt;a href=&quot;#权限级别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;权限级别&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;范围写法&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;全局级别&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;.&lt;/em&gt;&lt;/td&gt;&lt;td&gt;DBA 管理员账号，对整个 MySQL 实例生效，禁止给业务账号使用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;数据库级别&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;db_name.*&lt;/td&gt;&lt;td&gt;线上业务核心场景，给应用账号仅开放对应业务库的权限&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;表级别&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;db_name.table_name&lt;/td&gt;&lt;td&gt;精细化控制，比如仅允许操作订单表，禁止访问用户敏感表&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;列级别&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;单独指定字段&lt;/td&gt;&lt;td&gt;敏感数据管控，比如仅允许查看员工姓名 / 部门，禁止查看薪资 / 身份证号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;子程序级别&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;存储过程 / 函数名&lt;/td&gt;&lt;td&gt;控制存储过程的执行、修改权限&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;常用权限&lt;a href=&quot;#常用权限&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;数据操作类（DML，业务账号核心权限）&lt;/li&gt;
&lt;/ol&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;权限&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;用途&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SELECT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;查询数据，只读账号必备&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;INSERT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;插入数据&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;更新数据&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DELETE&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;删除数据（线上业务谨慎授予）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ol&gt;
&lt;li&gt;结构操作类（DDL，仅给开发 / 管理员，禁止给线上业务账号）&lt;/li&gt;
&lt;/ol&gt;




































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;权限&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;用途&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CREATE&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;创建数据库、表、索引&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DROP&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;删除数据库、表、视图（高危，禁止给业务账号）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;ALTER&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;修改表结构、索引（高危，禁止给线上业务账号）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;INDEX&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;创建 / 删除索引&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CREATE VIEW / SHOW VIEW&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;创建 / 查看视图定义&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CREATE ROUTINE / ALTER ROUTINE&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;创建 / 修改 / 删除存储过程 / 函数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;EXECUTE&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;执行存储过程 / 函数&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ol&gt;
&lt;li&gt;管理类权限（仅给 DBA，绝对禁止给普通业务账号）&lt;/li&gt;
&lt;/ol&gt;












































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;权限&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;用途&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;风险等级&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;ALL PRIVILEGES&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;除GRANT OPTION外的所有权限，简写ALL&lt;/td&gt;&lt;td&gt;高&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CREATE USER&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;创建、删除、修改用户的权限&lt;/td&gt;&lt;td&gt;高&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;GRANT OPTION&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;将自身权限授予其他用户的权限，可导致权限失控&lt;/td&gt;&lt;td&gt;极高&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SUPER&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;超级管理员权限，可终止线程、修改全局变量、配置主从&lt;/td&gt;&lt;td&gt;极高&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;REPLICATION SLAVE / REPLICATION CLIENT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;主从复制专用权限&lt;/td&gt;&lt;td&gt;中&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SHOW DATABASES&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;查看所有数据库名的权限&lt;/td&gt;&lt;td&gt;中&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;FILE&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;读取 / 写入服务器本地文件，可直接获取系统权限&lt;/td&gt;&lt;td&gt;极高，生产环境严禁授予&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;命令操作&lt;a href=&quot;#命令操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;执行以下命令，必须使用拥有 &lt;code&gt;CREATE USER&lt;/code&gt; 和 &lt;code&gt;GRANT OPTION&lt;/code&gt; 权限的账号（默认 root 账号）。&lt;/p&gt;&lt;p&gt;创建用户：MySQL 8.0+ 必须先创建用户，再授权，不支持 &lt;code&gt;GRANT&lt;/code&gt; 隐式创建用户，否则会直接报错。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 标准语法&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;USER&lt;/span&gt;&lt;span&gt; &apos;&lt;/span&gt;&lt;span&gt;用户名&lt;/span&gt;&lt;span&gt;&apos;@&lt;/span&gt;&lt;span&gt;&apos;主机地址&apos;&lt;/span&gt;&lt;span&gt; IDENTIFIED &lt;/span&gt;&lt;span&gt;BY&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;强密码&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 示例1：创建仅本地登录的业务账号&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;USER&lt;/span&gt;&lt;span&gt; &apos;&lt;/span&gt;&lt;span&gt;app_user&lt;/span&gt;&lt;span&gt;&apos;@&lt;/span&gt;&lt;span&gt;&apos;localhost&apos;&lt;/span&gt;&lt;span&gt; IDENTIFIED &lt;/span&gt;&lt;span&gt;BY&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;App@Pass2026&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 示例2：创建仅内网网段登录的只读账号&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;USER&lt;/span&gt;&lt;span&gt; &apos;&lt;/span&gt;&lt;span&gt;read_user&lt;/span&gt;&lt;span&gt;&apos;@&lt;/span&gt;&lt;span&gt;&apos;192.168.1.%&apos;&lt;/span&gt;&lt;span&gt; IDENTIFIED &lt;/span&gt;&lt;span&gt;BY&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;Read@Only2026&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 示例3：创建开发环境测试账号（生产环境禁止使用@%）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;USER&lt;/span&gt;&lt;span&gt; &apos;&lt;/span&gt;&lt;span&gt;test_user&lt;/span&gt;&lt;span&gt;&apos;@&lt;/span&gt;&lt;span&gt;&apos;%&apos;&lt;/span&gt;&lt;span&gt; IDENTIFIED &lt;/span&gt;&lt;span&gt;BY&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;Test@Pass2026&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;授权操作（GRANT）：&lt;code&gt;WITH GRANT OPTION&lt;/code&gt; 会让该用户可将自身权限授予他人，仅管理员使用，绝对禁止给业务账号。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 标准语法&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GRANT&lt;/span&gt;&lt;span&gt; 权限1,权限2 &lt;/span&gt;&lt;span&gt;ON&lt;/span&gt;&lt;span&gt; 权限范围 &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;用户名&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;主机地址&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 示例1：线上业务标准配置：给应用账号授予业务库读写权限（最常用）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GRANT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;INSERT&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;UPDATE&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;DELETE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ON&lt;/span&gt;&lt;span&gt; shop_db.* &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;app_user&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;192.168.1.%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 示例2：给只读账号授予全库查询权限（报表/数据分析用）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GRANT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ON&lt;/span&gt;&lt;span&gt; *.* &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;read_user&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;192.168.1.%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 示例3：给开发账号授予测试库全权限（仅开发环境用）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GRANT&lt;/span&gt;&lt;span&gt; ALL &lt;/span&gt;&lt;span&gt;ON&lt;/span&gt;&lt;span&gt; test_db.* &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;dev_user&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;192.168.1.%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 示例4：列级精细化授权：仅允许查看员工表的非敏感字段&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GRANT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt;(emp_id,emp_name,dept_name) &lt;/span&gt;&lt;span&gt;ON&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;company_db&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;employee&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;hr_read&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;192.168.1.%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 示例5：视图专用授权&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GRANT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; VIEW,SHOW VIEW,&lt;/span&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ON&lt;/span&gt;&lt;span&gt; shop_db.* &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;app_user&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;192.168.1.%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;查看当前用户权限&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看当前登录用户的权限&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SHOW GRANTS;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看指定用户的完整权限（最常用）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SHOW GRANTS &lt;/span&gt;&lt;span&gt;FOR&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;app_user&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;192.168.1.%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看实例所有用户的基础信息（用户名+允许登录的主机）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; user,host &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;mysql&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;user&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;撤销权限（REVOKE）：撤销的&lt;code&gt;权限范围、权限列表必须和授权时完全一致&lt;/code&gt;，否则无法正确撤销。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 标准语法&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;REVOKE&lt;/span&gt;&lt;span&gt; 权限1,权限2 &lt;/span&gt;&lt;span&gt;ON&lt;/span&gt;&lt;span&gt; 权限范围 &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;用户名&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;主机地址&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 示例1：撤销业务账号的DELETE权限，防止误删数据&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;REVOKE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DELETE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ON&lt;/span&gt;&lt;span&gt; shop_db.* &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;app_user&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;192.168.1.%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 示例2：撤销用户的所有权限&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;REVOKE&lt;/span&gt;&lt;span&gt; ALL PRIVILEGES, &lt;/span&gt;&lt;span&gt;GRANT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;OPTION&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;test_user&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;删除用户：不要直接用 DELETE 删除 mysql.user 表的数据，会导致权限残留、数据库异常。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 标准语法（全版本推荐，无权限残留）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DROP&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;USER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;用户名&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;主机地址&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 示例&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DROP&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;USER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;test_user&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;变化注意&lt;a href=&quot;#变化注意&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;MySQL 8.0 权限核心发生变化：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;移除 GRANT 隐式创建用户功能&lt;/strong&gt;：5.7 支持 &lt;code&gt;GRANT ... ON ... TO &apos;user&apos;@&apos;%&apos; IDENTIFIED BY &apos;xxx&apos;&lt;/code&gt; 同时创建用户和授权，8.0 该写法会直接报错，必须先 CREATE USER 再授权。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;新增角色（Role）功能&lt;/strong&gt;：可将一组权限打包成角色，批量给用户授权，修改权限时仅需修改角色，无需逐个调整用户，适合多账号统一管理。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 角色示例：创建只读角色，批量授权给多个用户&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ROLE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;shop_read_role&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GRANT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ON&lt;/span&gt;&lt;span&gt; shop_db.* &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;shop_read_role&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GRANT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;shop_read_role&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;read_user1&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;192.168.1.%&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;read_user2&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;192.168.1.%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 设置用户登录后自动激活角色&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SET&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DEFAULT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ROLE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;shop_read_role&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;read_user1&apos;&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;&apos;192.168.1.%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;密码策略默认开启&lt;/strong&gt;：默认启用密码复杂度校验，强制使用强密码，禁止弱密码。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;移除PASSWORD()函数&lt;/strong&gt;：修改密码必须使用 &lt;code&gt;ALTER USER &apos;user&apos;@&apos;%&apos; IDENTIFIED BY &apos;新密码&apos;;&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;细粒度权限拆分：拆分了原 &lt;code&gt;SUPER&lt;/code&gt; 权限，新增 &lt;code&gt;SESSION_VARIABLES_ADMIN&lt;/code&gt;、&lt;code&gt;SYSTEM_USER&lt;/code&gt; 等细分权限，安全性更高。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>多表查询</title><link>https://umami.eu.cc/posts/multi-table-query/</link><guid isPermaLink="true">https://umami.eu.cc/posts/multi-table-query/</guid><description>关于MySQL多表查询的相关语句</description><pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;笛卡尔集（Cartesian Product），又称笛卡尔积，是数学中集合论的概念，在数据库中特指两个表中所有行的无条件组合。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;假设有两个集合 A 和 B，A 中的每个元素与 B 中的每个元素配对，所有可能的组合结果就是笛卡尔积。&lt;/li&gt;
&lt;li&gt;在数据库中，若对两个表执行查询时&lt;code&gt;未指定关联条件&lt;/code&gt;，就会产生笛卡尔积，结果&lt;code&gt;行数 = 表 1 行数 × 表 2 行数&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;创建 emp表、dept表和 salgrade表&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 创建数据库&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DATABASE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;learn_mysql&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 使用数据库&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;USE&lt;/span&gt;&lt;span&gt; learn_mysql;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 创建雇员表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; `&lt;/span&gt;&lt;span&gt;emp&lt;/span&gt;&lt;span&gt;` (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;`empno`&lt;/span&gt;&lt;span&gt; mediumint(&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;) unsigned &lt;/span&gt;&lt;span&gt;NOT NULL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DEFAULT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;0&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;`ename`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;varchar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;COLLATE&lt;/span&gt;&lt;span&gt; utf8_bin &lt;/span&gt;&lt;span&gt;NOT NULL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DEFAULT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;&quot;&quot;&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;`job`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;varchar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;COLLATE&lt;/span&gt;&lt;span&gt; utf8_bin &lt;/span&gt;&lt;span&gt;NOT NULL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DEFAULT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;&quot;&quot;&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;`mgr`&lt;/span&gt;&lt;span&gt; mediumint(&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;) unsigned &lt;/span&gt;&lt;span&gt;DEFAULT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;`hiredate`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;date&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NOT NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;`sal`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;decimal&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;NOT NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;`comm`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;decimal&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;DEFAULT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;`deptno`&lt;/span&gt;&lt;span&gt; mediumint(&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;) unsigned &lt;/span&gt;&lt;span&gt;NOT NULL&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;) ENGINE&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;MyISAM &lt;/span&gt;&lt;/span&gt;&lt;span&gt;DEFAULT&lt;/span&gt;&lt;span&gt;&lt;span&gt; CHARSET&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;utf8 &lt;/span&gt;&lt;/span&gt;&lt;span&gt;COLLATE&lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;utf8_bin;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 为雇员表插入数据&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; emp &lt;/span&gt;&lt;span&gt;VALUES&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7369&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;SMITH&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;CLERK&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;7902&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;1990-12-17&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;800&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7499&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;ALLEN&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;SALESMAN&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;7698&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;1991-2-20&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1600&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;300&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7521&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;WARD&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;SALESMAN&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;7968&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;1991-2-22&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1250&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;500&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7566&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;JONES&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;MANAGER&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;7839&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;1991-4-2&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;2975&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7654&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;MARTIN&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;SALESMAN&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;7968&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;1991-9-28&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1250&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1400&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7698&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;BLAKE&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;MANAGER&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;7839&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;1991-5-1&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;2850&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7782&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;CLARK&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;MANAGER&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;7839&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;1991-6-9&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;2450&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7788&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;SCOTT&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;ANALYST&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;7566&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;1991-4-19&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;3000&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7839&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;KING&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;PRESIDENT&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;1991-11-17&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;5000&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7844&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;TURNER&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;SALESMAN&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;7698&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;1991-9-8&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1500&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7900&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;JAMES&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;CLERK&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;7698&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;1991-12-3&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;950&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7902&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;FORD&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;ANALYST&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;7566&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;1991-12-3&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;3000&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;7934&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;MILLER&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;CLERK&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;7782&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&apos;1991-1-23&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1300&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 创建工资级别表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;salgrade&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;grade MEDIUMINT UNSIGNED &lt;/span&gt;&lt;span&gt;NOT NULL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DEFAULT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;losal &lt;/span&gt;&lt;span&gt;DECIMAL&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;NOT NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;hisal &lt;/span&gt;&lt;span&gt;DECIMAL&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;NOT NULL&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 为工资级别表插入数据&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; salgrade &lt;/span&gt;&lt;span&gt;VALUES&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;700&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1200&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1201&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1400&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1401&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;2000&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;2001&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;3000&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;3001&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;9999&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 创建部门表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;dept&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;deptno MEDIUMINT UNSIGNED &lt;/span&gt;&lt;span&gt;NOT NULL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DEFAULT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dname &lt;/span&gt;&lt;span&gt;VARCHAR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;NOT NULL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DEFAULT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;loc &lt;/span&gt;&lt;span&gt;VARCHAR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;NOT NULL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DEFAULT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 为部门表插入数据&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; dept &lt;/span&gt;&lt;span&gt;VALUES&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;ACCOUNTING&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;BEIJING&apos;&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;RESEARCH&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;SHANGHAI&apos;&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;SALES&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;NANJING&apos;&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;OPERATIONS&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;CHENGDU&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;查询雇员的工资和所在部门&lt;/code&gt;，该问题涉及两张表（emp 和 dept）&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询雇员的工资和所在部门&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 雇员、工资在empty表、所在部门在dept表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 如果简单查询两张表，会出现笛卡尔集&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; emp,dept;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 通过多表的内连接可以解决笛卡尔集&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; ename,sal,dname &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; emp,dept &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;emp&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;deptno&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;dept&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;deptno&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;自连接：表与自身连接，&lt;code&gt;需用别名区分&lt;/code&gt;&lt;/strong&gt;：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 自连接：查询雇员的上级&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;worker&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;ename&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;雇员&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;boss&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;ename&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;所属上级&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; emp worker,emp boss &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;worker&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;mgr&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;boss&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;empno&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;将查询出来的记录当做一张&lt;code&gt;临时表&lt;/code&gt;：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询每个部门大于对应部门的平均工资的员工&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 1. 查询每个部门的平均工资&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;select&lt;/span&gt;&lt;span&gt; deptno,&lt;/span&gt;&lt;span&gt;AVG&lt;/span&gt;&lt;span&gt;(sal) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; avg_sal &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; emp &lt;/span&gt;&lt;span&gt;GROUP BY&lt;/span&gt;&lt;span&gt; deptno;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 将上述所查询的记录当做一张临时表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;ename,sal,&lt;/span&gt;&lt;span&gt;emp&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;deptno&lt;/span&gt;&lt;span&gt;,avg_sal&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;emp,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; deptno, &lt;/span&gt;&lt;span&gt;AVG&lt;/span&gt;&lt;span&gt;(sal) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; avg_sal &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; emp &lt;/span&gt;&lt;span&gt;GROUP BY&lt;/span&gt;&lt;span&gt; deptno) temp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;emp&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;deptno&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;temp&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;deptno&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;AND&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;emp&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;sal&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;temp&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;avg_sal&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;section&gt;&lt;h3&gt;子查询&lt;a href=&quot;#子查询&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;行子查询：返回&lt;code&gt;一列单行或多行&lt;/code&gt;&lt;/strong&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--  子查询:查询与smith相同部门的员工&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; deptno &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; emp &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; ename &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&apos;SMITH&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 通过上面查询到smith所在部门作为子条件来查询该部门员工&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; emp &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; deptno &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; deptno &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; emp &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; ename &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&apos;SMITH&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;列子查询：返回&lt;code&gt;单行多列&lt;/code&gt;&lt;/strong&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 列子查询:查询与allen部门和岗位相同的员工（不包含allen）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;select&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; emp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询allen的部门和岗位&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; deptno,job &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; emp &lt;/span&gt;&lt;span&gt;where&lt;/span&gt;&lt;span&gt;&lt;span&gt; ename &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&apos;ALLEN&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 根据上面的查询不包含allen的员工&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; emp &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; (deptno,job) &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; deptno,job &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; emp &lt;/span&gt;&lt;span&gt;where&lt;/span&gt;&lt;span&gt;&lt;span&gt; ename &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&apos;ALLEN&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;AND&lt;/span&gt;&lt;span&gt;&lt;span&gt; ename &lt;/span&gt;&lt;span&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&apos;ALLEN&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;关键字&lt;a href=&quot;#关键字&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在 MySQL 中，ALL 和 ANY 是用于子查询比较的关键字，需配合比较运算符（&lt;code&gt;&amp;gt;、&amp;lt;、=、&amp;gt;=、&amp;lt;=、&amp;lt;&amp;gt;&lt;/code&gt;）使用，用于将&lt;code&gt;主查询的值与子查询返回的结果集&lt;/code&gt;进行比对。&lt;/p&gt;&lt;p&gt;示例：假设有成绩表 &lt;code&gt;score&lt;/code&gt;：&lt;/p&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;student_id&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;score&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;75&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;85&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;90&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ol&gt;
&lt;li&gt;ANY（任意一个）：主查询的值只需满足子查询结果集中的任意一个，条件即成立。&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;gt; ANY&lt;/code&gt;：大于子查询结果的&lt;strong&gt;最小值&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt; ANY&lt;/code&gt;：小于子查询结果的&lt;strong&gt;最大值&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;= ANY&lt;/code&gt;：等价于 IN（等于任意一个）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;查询 “成绩大于任意一个 80 分以上学生” 的记录（&lt;code&gt;即只要大于 80 分即可&lt;/code&gt;）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 返回 90 分的记录（子查询中返回 85,90两条记录）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; score&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; score &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; ANY (&lt;/span&gt;&lt;/span&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; score &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; score &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; score &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;在 MySQL 中，&lt;strong&gt;&lt;code&gt;SOME&lt;/code&gt; 和 &lt;code&gt;ANY&lt;/code&gt; 完全等价&lt;/strong&gt;，可互换使用。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;ALL（所有）：含义：主查询的值必须满足子查询结果集中的所有值，条件才成立。&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;gt; ALL&lt;/code&gt;：大于子查询结果的&lt;strong&gt;最大值&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt; ALL&lt;/code&gt;：小于子查询结果的&lt;strong&gt;最小值&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;&amp;gt; ALL&lt;/code&gt;：等价于 NOT IN（不等于所有）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;查询 “成绩大于所有 80 分以上学生” 的记录（&lt;code&gt;即需大于最大值 90&lt;/code&gt;）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 无记录（因为没有成绩大于 90）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; score&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; score &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; ALL (&lt;/span&gt;&lt;/span&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; score &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; score &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; score &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;自我复制：&lt;code&gt;insert into 表1 select * from 表1;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;全字段重复（无主键且所有字段完全一样）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 1. 创建临时表，存入去重后的数据&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;临时表名&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;LIKE&lt;/span&gt;&lt;span&gt; 原表名;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; 临时表名 &lt;/span&gt;&lt;span&gt;SELECT DISTINCT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; 原表名;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 2. 清空原表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;TRUNCATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; 原表名;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 3. 将数据插回原表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; 原表名 &lt;/span&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; 临时表名;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 4. 删除临时表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DROP&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; 临时表名;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;合并查询&lt;a href=&quot;#合并查询&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;MySQL 中的合并查询通常指使用 &lt;code&gt;UNION&lt;/code&gt; 或 &lt;code&gt;UNION ALL&lt;/code&gt; 关键字，将多个 SELECT 语句的结果&lt;code&gt;纵向&lt;/code&gt;合并为一个结果集（区别于 JOIN 的横向关联）。&lt;/p&gt;






















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;关键字&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;作用&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;去重&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;性能&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;UNION&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;合并结果集&lt;/td&gt;&lt;td&gt;&lt;strong&gt;自动去除重复行&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;较慢（需去重排序）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;UNION ALL&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;合并结果集&lt;/td&gt;&lt;td&gt;&lt;strong&gt;保留所有行（包括重复）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;较快（无需去重）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;
&lt;li&gt;多个 SELECT 语句的&lt;strong&gt;列数&lt;code&gt;必须&lt;/code&gt;相同&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;对应列的&lt;code&gt;数据类型必须兼容&lt;/code&gt;（如 INT 和 VARCHAR 需可隐式转换）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;列的顺序&lt;code&gt;必须&lt;/code&gt;一致&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;多表连接&lt;a href=&quot;#多表连接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;MySQL 多表查询中的外连接（Outer Join） 是一种关联查询方式，它会&lt;code&gt;返回至少一个表中的所有行，即使另一个表中没有匹配的记录（未匹配部分显示为 NULL）&lt;/code&gt;。&lt;/p&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;关键字&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;作用说明&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;左外连接&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;LEFT JOIN 或 LEFT OUTER JOIN&lt;/td&gt;&lt;td&gt;返回左表的所有行，右表未匹配的列显示为 NULL。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;右外连接&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;RIGHT JOIN 或 RIGHT OUTER JOIN&lt;/td&gt;&lt;td&gt;返回右表的所有行，左表未匹配的列显示为 NULL。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;全外连接&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;FULL JOIN&lt;/td&gt;&lt;td&gt;MySQL 不直接支持，需通过 LEFT JOIN + UNION + RIGHT JOIN 模拟实现。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;</content:encoded></item><item><title>MySQL约束</title><link>https://umami.eu.cc/posts/mysql-constraints/</link><guid isPermaLink="true">https://umami.eu.cc/posts/mysql-constraints/</guid><description>关于MySQL约束</description><pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;约束（Constraint）是作用于&lt;code&gt;数据表列 / 表级别&lt;/code&gt;的强制规则，用于限制写入表中的数据格式、范围、关联关系，从数据库底层保障数据的&lt;code&gt;准确性、完整性、一致性&lt;/code&gt;，是关系型数据库数据治理的核心能力。&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;NOT NULL 非空约束&lt;a href=&quot;#not-null-非空约束&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;强制字段&lt;code&gt;不能存储 NULL 值&lt;/code&gt;，插入 / 更新数据时，该字段必须填写有效值，否则 SQL 执行报错。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NULL ≠ 空字符串 ”、0&lt;/strong&gt;：MySQL 中，NULL 代表 “未知值”，和空字符串、数字 0 是完全不同的概念，非空约束仅禁止 NULL，允许空字符串、0 写入。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NOT NULL 常和 DEFAULT 配合使用&lt;/strong&gt;：如果字段设置了 NOT NULL 但无 DEFAULT，插入时不赋值会直接报错；搭配 DEFAULT 后，未赋值时自动填充默认值，避免报错。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主键字段默认自带 NOT NULL&lt;/strong&gt;：无需额外声明，主键字段强制非空。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;仅支持列级约束&lt;/strong&gt;：不能在表级声明 NOT NULL 约束。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;DEFAULT 默认值约束&lt;a href=&quot;#default-默认值约束&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;给字段设置默认值，当插入新记录时，若&lt;code&gt;未给该字段赋值，自动使用默认值填充&lt;/code&gt;，避免出现 NULL 值，简化 SQL 编写。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;版本兼容问题&lt;/strong&gt;：MySQL 5.6 及之前，只有 TIMESTAMP 类型支持 DEFAULT CURRENT_TIMESTAMP；MySQL 5.6+ 开始，DATETIME 类型也支持默认值为当前时间。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;默认值仅在 “未赋值” 时生效&lt;/strong&gt;：如果插入时显式给字段赋值为 NULL，即使有 DEFAULT，也会写入 NULL（若字段无 NOT NULL 约束）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;默认值必须匹配字段类型&lt;/strong&gt;：比如 INT 类型字段不能设置字符串默认值，否则会报错。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;UNIQUE 唯一约束&lt;a href=&quot;#unique-唯一约束&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;保证字段（或字段组合）中的&lt;code&gt;所有值都是唯一的&lt;/code&gt;，不允许出现重复值，用于避免业务上的重复数据。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;UNIQUE 允许 NULL 值&lt;/strong&gt;：MySQL 中，NULL 不等于任何值（包括自己），所以唯一约束的字段允许多个 NULL 值写入，不会触发重复报错，这是和主键的核心区别之一。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一个表可以有多个 UNIQUE 约束&lt;/strong&gt;：而主键一个表只能有一个。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;复合唯一约束&lt;/strong&gt;：多个字段的组合值唯一，单个字段可以重复，只要组合不重复即可，比如用户表中 “用户名 + 租户 ID” 复合唯一，不同租户可以有相同用户名。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;唯一约束会自动创建唯一索引&lt;/strong&gt;：数据库会给 UNIQUE 字段自动创建唯一索引，提升查询效率，同时通过索引保证唯一性。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;PRIMARY KEY 主键约束&lt;a href=&quot;#primary-key-主键约束&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;主键约束是 &lt;code&gt;NOT NULL + UNIQUE&lt;/code&gt; 的组合，&lt;code&gt;唯一标识表中的每一行记录&lt;/code&gt;，是表中记录的 “身份证号”，一个表只能有一个主键（可以是单个字段，也可以是多个字段组成的复合主键）。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;主键强制非空 + 唯一&lt;/strong&gt;：主键字段不允许 NULL 值，不允许重复值，无需额外声明 NOT NULL。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一个表只能有一个主键&lt;/strong&gt;：即使是复合主键，也是一个主键，由多个字段组成。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主键推荐使用无业务含义的自增 ID&lt;/strong&gt;：比如 INT/BIGINT 类型的 AUTO_INCREMENT 字段，避免使用业务字段（如身份证号、学号）作为主键，业务字段一旦变更，会引发外键、索引的连锁问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主键会自动创建聚簇索引&lt;/strong&gt;：InnoDB 存储引擎中，表的数据是按主键的聚簇索引组织的，主键查询性能是最高的。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AUTO_INCREMENT 只能用于主键 / 唯一键字段&lt;/strong&gt;：普通字段无法设置自增属性。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;主键 vs 唯一约束&lt;/code&gt;核心区别：&lt;/p&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;特性&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;PRIMARY KEY&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;UNIQUE&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;非空限制&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;强制非空，不允许 NULL&lt;/td&gt;&lt;td&gt;允许 NULL 值，且可多个 NULL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;数量限制&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;一个表只能有 1 个&lt;/td&gt;&lt;td&gt;一个表可以有多个&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;索引类型&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;自动创建聚簇索引&lt;/td&gt;&lt;td&gt;自动创建唯一二级索引&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;自增属性&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;可搭配 AUTO_INCREMENT&lt;/td&gt;&lt;td&gt;仅唯一键字段可搭配，极少用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;核心用途&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;唯一标识一行记录&lt;/td&gt;&lt;td&gt;避免业务字段重复&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;CHECK 检查约束&lt;a href=&quot;#check-检查约束&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;限制字段的值必须满足指定的&lt;code&gt;布尔条件&lt;/code&gt;，只有条件为 TRUE 的数据才能写入，否则 SQL 执行报错，用于实现业务自定义的规则校验。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;版本重大差异&lt;/strong&gt;：MySQL 8.0.16 版本之前，虽然语法上支持 CHECK 约束，但数据库会忽略该约束，不会生效；8.0.16 及以上版本才真正实现了 CHECK 约束的完整功能，5.7 及以下版本无法使用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检查条件必须返回布尔值&lt;/strong&gt;：可以使用比较运算符、逻辑运算符、IN、BETWEEN、LIKE 等，条件为 FALSE 时拒绝写入，UNKNOWN（比如 NULL 值参与运算）时不拒绝。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多字段关联校验&lt;/strong&gt;：表级 CHECK 约束可以实现多个字段的关联校验，比如 “订单结束时间必须晚于开始时间”、“折扣价必须低于原价”。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;FOREIGN KEY 外键约束&lt;a href=&quot;#foreign-key-外键约束&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;外键约束用于&lt;code&gt;建立和强制两个表之间的关联关系&lt;/code&gt;，外键字段在从表（子表）中，关联主表（父表）的主键 / 唯一键字段，保证从表的外键值必须在主表的关联字段中存在，避免 “脏数据”，保障参照完整性。&lt;/p&gt;&lt;p&gt;级联动作详解（&lt;code&gt;ON DELETE / ON UPDATE&lt;/code&gt;）：级联动作定义了&lt;code&gt;主表的记录被删除 / 更新时，从表关联数据的处理规则&lt;/code&gt;，是外键约束的核心配置，常用选项如下：&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;级联选项&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心作用&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;使用场景&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;RESTRICT（默认值）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;主表删除 / 更新时，若从表有关联数据，直接拒绝操作&lt;/td&gt;&lt;td&gt;核心基础数据，不允许随意删除，比如班级、商品分类&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CASCADE&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;主表删除 / 更新时，从表关联数据同步删除 / 更新&lt;/td&gt;&lt;td&gt;父子强关联数据，比如用户删除，对应的收货地址、订单也删除&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SET NULL&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;主表删除 / 更新时，从表关联的外键字段设置为 NULL（要求外键字段允许 NULL）&lt;/td&gt;&lt;td&gt;可选关联数据，比如员工所属部门删除，员工的部门 ID 置空&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;NO ACTION&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;和 RESTRICT 完全一致，MySQL 中无区别，是 SQL 标准的语法&lt;/td&gt;&lt;td&gt;无特殊场景，兼容 SQL 标准&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;存储引擎限制&lt;/strong&gt;：只有 InnoDB 存储引擎支持外键约束，MyISAM 引擎不支持，这是最常见的新手踩坑点。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关联字段要求&lt;/strong&gt;：主表的关联字段必须是主键或唯一键；从表的外键字段和主表的关联字段，数据类型、长度、字符集必须完全一致，否则无法创建外键。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;外键字段可以重复、可以为 NULL&lt;/strong&gt;：除非额外设置了 NOT NULL、UNIQUE 约束，外键本身不限制重复和 NULL。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据写入顺序&lt;/strong&gt;：必须先写主表，再写从表（从表的外键值必须在主表中存在）；删除顺序相反，必须先删从表，再删主表（除非设置了 ON DELETE CASCADE）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;外键的性能问题&lt;/strong&gt;：高并发写入场景，外键会触发数据库的关联校验，增加数据库开销，可能导致死锁；&lt;code&gt;互联网高并发场景，很多业务会放弃外键&lt;/code&gt;，在业务代码层实现数据一致性。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>数据库的增删改查</title><link>https://umami.eu.cc/posts/create-read-update/</link><guid isPermaLink="true">https://umami.eu.cc/posts/create-read-update/</guid><description>关于MySQL数据库的增删改查语句</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;INSERT 语句&lt;a href=&quot;#insert-语句&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;INSERT 是 SQL 标准中数据操作语言（DML） 的核心语句，唯一核心作用是&lt;code&gt;向数据库表中新增一行或多行数据&lt;/code&gt;，是数据库&lt;code&gt;写入操作&lt;/code&gt;的基础语句，MySQL、PostgreSQL、SQL Server、Oracle 等所有主流关系型数据库均兼容其标准语法。&lt;/p&gt;&lt;p&gt;统一基于以下用户表 users 来展开说明&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 用户表 users&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;users&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;id &lt;/span&gt;&lt;span&gt;INT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;PRIMARY KEY&lt;/span&gt;&lt;span&gt; AUTO_INCREMENT COMMENT &lt;/span&gt;&lt;span&gt;&apos;用户ID（自增主键）&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;user_name &lt;/span&gt;&lt;span&gt;VARCHAR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;NOT NULL&lt;/span&gt;&lt;span&gt; COMMENT &lt;/span&gt;&lt;span&gt;&apos;用户名（非空约束）&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;age &lt;/span&gt;&lt;span&gt;INT&lt;/span&gt;&lt;span&gt; COMMENT &lt;/span&gt;&lt;span&gt;&apos;年龄&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;email &lt;/span&gt;&lt;span&gt;VARCHAR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;UNIQUE&lt;/span&gt;&lt;span&gt; COMMENT &lt;/span&gt;&lt;span&gt;&apos;邮箱（唯一约束）&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;create_time &lt;/span&gt;&lt;span&gt;DATETIME&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DEFAULT&lt;/span&gt;&lt;span&gt; CURRENT_TIMESTAMP COMMENT &lt;/span&gt;&lt;span&gt;&apos;创建时间（默认当前时间）&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;section&gt;&lt;h3&gt;基础语法&lt;a href=&quot;#基础语法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;单行插入（&lt;code&gt;指定列&lt;/code&gt;）&lt;/strong&gt;，这是&lt;code&gt;最规范、兼容性最好、可维护性最强&lt;/code&gt;的写法，生产环境优先使用。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; 表名 (列名1, 列名2, 列名3, ...)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;VALUES&lt;/span&gt;&lt;span&gt; (值1, 值2, 值3, ...);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;核心规则：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;列名顺序可自定义&lt;/code&gt;，无需和表定义的字段顺序一致&lt;/li&gt;
&lt;li&gt;VALUES 中的值，必须和前面的&lt;code&gt;列名数量一致、数据类型匹配&lt;/code&gt;(会进行隐式转换)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;非空且无默认值的字段&lt;/code&gt;，必须出现在列名列表中并赋值&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 仅插入必填字段，其余字段用默认值/NULL&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; users (user_name, age)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;VALUES&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;&apos;张三&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 插入指定多个字段，顺序可自定义&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; users (email, user_name, age)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;VALUES&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;&apos;zhangsan@example.com&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;张三&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;&lt;strong&gt;单行全列插入&lt;/strong&gt;，即&lt;code&gt;省略列名列表&lt;/code&gt;，直接给全表所有字段赋值。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; 表名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;VALUES&lt;/span&gt;&lt;span&gt; (值1, 值2, 值3, ...);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这种必须&lt;code&gt;严格按照表定义的字段顺序&lt;/code&gt;，为所有字段完整赋值，包括自增主键、有默认值的字段，一个都不能少。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 必须按 id, user_name, age, email, create_time 的顺序完整传值&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; users&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;VALUES&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;李四&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;lisi@example.com&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;2026-04-09 12:00:00&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;⚠️ 致命缺陷：&lt;code&gt;表结构一旦变更&lt;/code&gt;（新增 / 删除字段、调整字段顺序），语句会直接报错，可维护性极差，生产环境严禁使用。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;strong&gt;多行批量插入&lt;/strong&gt;，标准 SQL 支持单条 INSERT 插入多行数据，相比循环执行单行 INSERT，能大幅减少数据库 IO、网络交互和事务开销，批量写入性能提升可达数十倍。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; 表名 (列名1, 列名2, ...)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;VALUES&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(值1-&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;, 值1-&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;, ...),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(值2-&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;, 值2-&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;, ...),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(值3-&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;, 值3-&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;, ...);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;⚠️ 性能提示：单条 INSERT 的 VALUES 行数建议控制在 &lt;code&gt;1000-5000&lt;/code&gt; 行，总数据量不超过 &lt;code&gt;16MB&lt;/code&gt;（MySQL 默认限制），避免触发数据库包大小限制，反而导致性能下降。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 一次性插入3条用户数据&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; users (user_name, age, email)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;VALUES&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;王五&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;wangwu@example.com&apos;&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;赵六&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;zhaoliu@example.com&apos;&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;孙七&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;sunqi@example.com&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;无需手动写 VALUES，直接&lt;code&gt;将另一个表 / 查询的结果集插入到目标表&lt;/code&gt;，常用于数据迁移、数据备份、表数据同步。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; 目标表名 (列名1, 列名2, ...)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; 列1, 列2, ...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; 源表名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt; 筛选条件;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;需要谨记，SELECT &lt;code&gt;查询的列数、数据类型&lt;/code&gt;，必须和目标表的列名列表完全匹配。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 新建用户备份表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;users_bak&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;LIKE&lt;/span&gt;&lt;span&gt; users;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 将users表中年龄大于25的用户数据，批量插入到备份表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSERT INTO&lt;/span&gt;&lt;span&gt; users_bak (user_name, age, email, create_time)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; user_name, age, email, create_time&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; users&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;UPDATE 语句&lt;a href=&quot;#update-语句&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;UPDATE 是 SQL 标准中DML 数据操作语言的核心语句，核心功能是&lt;code&gt;修改数据库表中已存在的行数据&lt;/code&gt;，是业务开发中数据更新的唯一标准语句，MySQL、PostgreSQL 等所有主流数据库均兼容。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 生产环境唯一推荐的标准写法&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;UPDATE&lt;/span&gt;&lt;span&gt; 表名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SET&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;字段1 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 新值1,  &lt;/span&gt;&lt;span&gt;-- 多个字段用英文逗号分隔，最后一个字段不加逗号&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;字段2 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 新值2,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;字段N &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 新值N&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt; 精准筛选条件; &lt;/span&gt;&lt;span&gt;-- 【生死线】必须加！无WHERE=全表数据被修改&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;✅ 核心执行逻辑：先通过 WHERE 筛选出要修改的行，再按 SET 给指定字段赋新值，&lt;code&gt;仅修改符合条件的行&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;执行更新语句前必须遵守如下规则：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;UPDATE 必须加 WHERE 子句&lt;/strong&gt;，除非你 100% 明确需要修改全表所有行，否则省略 WHERE 会直接修改整张表的所有数据，造成不可逆的数据损坏。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更新前必须先用 SELECT 校验条件&lt;/strong&gt;，执行 UPDATE 前，先用完全相同的 WHERE 条件执行 SELECT，确认筛选出来的行就是你要修改的目标行，避免条件写错导致误改。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;必须用事务包裹，可回滚兜底&lt;/strong&gt;，UPDATE 属于 DML 语句，非自动提交模式下，执行后不会永久生效，用事务包裹，出错可以直接回滚，是误操作后的救命稻草。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;禁止用非索引字段做大批量更新的筛选条件&lt;/strong&gt;，大批量更新时，WHERE 条件优先用主键、唯一索引字段，避免全表扫描，同时 InnoDB 只会给符合条件的行加行锁，不会锁全表，避免业务系统阻塞。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;DELETE 语句&lt;a href=&quot;#delete-语句&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;DELETE 是 SQL 标准中DML 数据操作语言的核心语句，核心作用是&lt;code&gt;删除数据库表中符合筛选条件的行数据&lt;/code&gt;，MySQL、PostgreSQL、SQL Server、Oracle 等所有主流关系型数据库均完全兼容标准语法。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DELETE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; 表名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;[WHERE 筛选条件]&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;-- 【生死线·必加】仅删除符合条件的行，无WHERE=全表删除&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;[ORDER BY 排序规则]&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;-- 部分数据库支持，控制删除顺序&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;[LIMIT 行数限制]&lt;/span&gt;&lt;span&gt;;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;-- 部分数据库支持，限制单次删除的最大行数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;⚠️ 【最高优先级安全红线】：DELETE 语句&lt;code&gt;必须搭配 WHERE 子句使用&lt;/code&gt;！除非你明确需要清空整张表的所有数据，否则省略 WHERE 会直接删除表中全部数据，造成不可逆的生产事故，风险远高于 UPDATE！&lt;/p&gt;&lt;p&gt;核心执行逻辑&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;先通过 WHERE 子句精准筛选出需要删除的行（无 WHERE 则选中全表所有行）&lt;/li&gt;
&lt;li&gt;逐行删除符合条件的数据，同时记录事务日志（支持回滚）&lt;/li&gt;
&lt;li&gt;不会修改表结构、索引、字段约束，也不会重置自增主键的序列&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;⚠️ 风险提示：全表 DELETE 会&lt;code&gt;逐行记录日志，大表删除速度极慢，会锁表导致业务阻塞&lt;/code&gt;，且非事务模式下数据无法恢复，生产环境非极端场景严禁使用。&lt;/p&gt;&lt;p&gt;执行更新语句前必须遵守如下规则：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;DELETE 必须加 WHERE 子句&lt;/strong&gt;，除非你 100% 明确需要清空全表，否则永远不要省略 WHERE，这是避免 99% 删除事故的核心准则。
2.&lt;strong&gt;删除前必须先用 SELECT 校验条件&lt;/strong&gt;，执行 DELETE 前，先用&lt;code&gt;完全相同的 WHERE 条件执行 SELECT 语句&lt;/code&gt;，确认筛选出来的行就是你要删除的目标行，避免条件写错导致误删。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;永远用事务包裹删除操作&lt;/strong&gt;，无论删除单行还是多行，必须先开启事务，执行后核对结果，确认无误再提交，发现问题立即回滚，这是误删后的唯一救命稻草。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;禁止用非索引字段做删除筛选条件&lt;/strong&gt;，大批量删除时，WHERE 条件优先使用主键、唯一索引字段，避免全表扫描，同时 InnoDB 只会给符合条件的行加行锁，不会锁全表，避免业务系统阻塞。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;大表删除严禁直接用 DELETE 全表操作&lt;/strong&gt;，百万级以上大表全表删除，用 DELETE 会导致锁表、数据库停住，正确方案是分批删除，或用 TRUNCATE（提前备份数据）。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;SELECT 语句&lt;a href=&quot;#select-语句&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;虽然 SELECT 常被单独称为 DQL（数据查询语言），但它是数据库操作中&lt;code&gt;使用频率最高&lt;/code&gt;的语句，核心作用是&lt;code&gt;从表中检索所需数据&lt;/code&gt;。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;基础查询&lt;a href=&quot;#基础查询&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;查询全表所有数据&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询user表的所有行和所有列&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;⚠️ 注意：&lt;code&gt;SELECT *&lt;/code&gt; 虽然方便，但生产环境&lt;code&gt;不建议&lt;/code&gt;用（会查询不需要的字段，浪费资源），建议&lt;code&gt;明确指定&lt;/code&gt;要查询的列。&lt;/p&gt;&lt;p&gt;查询指定列（推荐写法）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 只查询用户名、年龄、邮箱这3列&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; user_name, age, email &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;去重查询（DISTINCT）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询所有不重复的年龄（去掉重复值）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT DISTINCT&lt;/span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;条件查询（WHERE）：精准筛选数据&lt;a href=&quot;#条件查询where精准筛选数据&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;最常用&lt;/code&gt;的查询场景，通过 &lt;code&gt;WHERE&lt;/code&gt; 子句筛选出符合条件的行。&lt;/p&gt;&lt;p&gt;基础比较条件&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询id=1的用户&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; id &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询年龄大于20岁的用户&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询年龄不等于25岁的用户&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;逻辑条件（AND/OR）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询年龄在20到30岁之间的用户（AND：同时满足）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;&amp;gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;AND&lt;/span&gt;&lt;span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;&amp;lt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询年龄小于18岁或大于60岁的用户（OR：满足其一即可）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;OR&lt;/span&gt;&lt;span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;范围查询（IN/BETWEEN）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询id是1、3、5的用户（IN：指定多个值）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt; id &lt;/span&gt;&lt;span&gt;IN&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询年龄在20到30岁之间的用户（BETWEEN：闭区间）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;BETWEEN&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;AND&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;模糊查询（LIKE）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询用户名以&quot;张&quot;开头的用户（%：匹配任意多个字符）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt; user_name &lt;/span&gt;&lt;span&gt;LIKE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;张%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询用户名包含&quot;三&quot;的用户&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt; user_name &lt;/span&gt;&lt;span&gt;LIKE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;%三%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询用户名第二个字是&quot;三&quot;的用户（_：匹配单个字符）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt; user_name &lt;/span&gt;&lt;span&gt;LIKE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;_三%&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;空值查询（IS NULL/IS NOT NULL）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询邮箱为空的用户&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt; email &lt;/span&gt;&lt;span&gt;IS&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询邮箱不为空的用户&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt; email &lt;/span&gt;&lt;span&gt;IS NOT NULL&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;❌ 错误写法：&lt;code&gt;email = NULL&lt;/code&gt;（永远不会匹配到任何行，必须用 &lt;code&gt;IS NULL&lt;/code&gt;）。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;排序查询（ORDER BY）&lt;a href=&quot;#排序查询order-by&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 按年龄从小到大排序（ASC：升序，默认值，可省略）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ORDER BY&lt;/span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;ASC&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 按年龄从大到小排序（DESC：降序）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ORDER BY&lt;/span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;DESC&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 多字段排序：先按年龄降序，年龄相同再按id升序&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ORDER BY&lt;/span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;DESC&lt;/span&gt;&lt;span&gt;, id &lt;/span&gt;&lt;span&gt;ASC&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;分页查询（LIMIT）：MySQL 专属&lt;a href=&quot;#分页查询limitmysql-专属&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;业务中最常用的功能，比如 “每页显示 10 条，查看第 2 页”。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 基础语法：LIMIT 偏移量, 每页条数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询前5条数据（第1页）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;LIMIT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询第6到10条数据（第2页，偏移量=5）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;LIMIT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 简化写法：LIMIT 条数（等价于 LIMIT 0, 条数）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; * &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;LIMIT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;聚合查询：统计数据（COUNT/SUM/AVG/MAX/MIN）&lt;a href=&quot;#聚合查询统计数据countsumavgmaxmin&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;对数据进行统计计算，比如 “总共有多少用户”、“平均年龄是多少”。&lt;/p&gt;&lt;p&gt;COUNT：统计行数&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 统计user表的总用户数（COUNT(*)：统计所有行，包括NULL值）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;COUNT&lt;/span&gt;&lt;span&gt;(*) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; 总用户数 &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 统计邮箱不为空的用户数（COUNT(字段)：忽略NULL值）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;COUNT&lt;/span&gt;&lt;span&gt;(email) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; 有邮箱的用户数 &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;✅ 技巧：&lt;code&gt;AS&lt;/code&gt; 用于给查询结果起别名，让结果更易读。&lt;/p&gt;&lt;p&gt;其他聚合函数&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 计算所有用户的年龄总和&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SUM&lt;/span&gt;&lt;span&gt;(age) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; 年龄总和 &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 计算所有用户的平均年龄&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;AVG&lt;/span&gt;&lt;span&gt;(age) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; 平均年龄 &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询最大年龄&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MAX&lt;/span&gt;&lt;span&gt;(age) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; 最大年龄 &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查询最小年龄&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MIN&lt;/span&gt;&lt;span&gt;(age) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; 最小年龄 &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;分组查询（GROUP BY + HAVING）&lt;a href=&quot;#分组查询group-by--having&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;对数据进行分组统计，比如 “统计每个年龄段的用户数”。&lt;/p&gt;&lt;p&gt;基础分组&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 按年龄分组，统计每个年龄的用户数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; age, &lt;/span&gt;&lt;span&gt;COUNT&lt;/span&gt;&lt;span&gt;(*) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; 用户数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GROUP BY&lt;/span&gt;&lt;span&gt; age;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;分组后筛选（HAVING）&lt;/p&gt;&lt;p&gt;&lt;code&gt;HAVING&lt;/code&gt; 用于对&lt;code&gt;分组后&lt;/code&gt;的结果进行筛选（&lt;code&gt;WHERE&lt;/code&gt; 是&lt;code&gt;分组前&lt;/code&gt;筛选）。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 按年龄分组，统计用户数大于2的年龄&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; age, &lt;/span&gt;&lt;span&gt;COUNT&lt;/span&gt;&lt;span&gt;(*) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; 用户数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`user`&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GROUP BY&lt;/span&gt;&lt;span&gt; age&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;HAVING&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;COUNT&lt;/span&gt;&lt;span&gt;&lt;span&gt;(*) &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>数据库函数</title><link>https://umami.eu.cc/posts/database-function-other/</link><guid isPermaLink="true">https://umami.eu.cc/posts/database-function-other/</guid><description>数据库常用函数</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;函数&lt;a href=&quot;#函数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;字符串函数&lt;a href=&quot;#字符串函数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;字符串拼接（最常用）：&lt;/p&gt;




































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;函数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;标准语法&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例 SQL&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;执行结果&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;关键提示&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CONCAT()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;CONCAT(s1,s2,…sn)&lt;/td&gt;&lt;td&gt;拼接多个字符串 / 字段&lt;/td&gt;&lt;td&gt;SELECT CONCAT(‘MySQL’,’ ’,‘8.0’);&lt;/td&gt;&lt;td&gt;MySQL 8.0&lt;/td&gt;&lt;td&gt;任意一个参数为 NULL，整体返回 NULL，拼接字段需用IFNULL(字段,”)预处理&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CONCAT_WS()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;CONCAT_WS(分隔符,s1,s2,…sn)&lt;/td&gt;&lt;td&gt;带分隔符安全拼接（With Separator）&lt;/td&gt;&lt;td&gt;SELECT CONCAT_WS(’-’,‘2026’,‘04’,‘09’);&lt;/td&gt;&lt;td&gt;2026-04-09&lt;/td&gt;&lt;td&gt;自动跳过 NULL 值，分隔符必填，是多字段拼接的首选&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;GROUP_CONCAT()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;GROUP_CONCAT([DISTINCT] 字段 [ORDER BY 排序字段] [SEPARATOR 分隔符])&lt;/td&gt;&lt;td&gt;分组行转列，将多行值拼接为单个字符串&lt;/td&gt;&lt;td&gt;SELECT dept,GROUP_CONCAT(user_name SEPARATOR ’、’) FROM user GROUP BY dept;&lt;/td&gt;&lt;td&gt;研发部、张三、李四、王五&lt;/td&gt;&lt;td&gt;MySQL 特有高频函数，默认最大拼接长度 1024 字节，超长会静默截断&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;长度计算：&lt;/p&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;函数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;标准语法&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例 SQL&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;执行结果&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;关键提示&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CHAR_LENGTH()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;CHAR_LENGTH(s)&lt;/td&gt;&lt;td&gt;返回字符串的字符个数&lt;/td&gt;&lt;td&gt;SELECT CHAR_LENGTH(‘你好MySQL’);&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;中文、英文、数字、emoji 均计为 1 个字符，统计文本字数首选&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LENGTH()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;LENGTH(s)&lt;/td&gt;&lt;td&gt;返回字符串的字节长度&lt;/td&gt;&lt;td&gt;SELECT LENGTH(‘你好MySQL’);&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;UTF-8 下中文占 3 字节、emoji 占 4 字节，常用于校验字段存储上限&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;子串截取&lt;/p&gt;




































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;函数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;标准语法&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例 SQL&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;执行结果&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;关键提示&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SUBSTRING()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;SUBSTRING(s, start[, length])&lt;/td&gt;&lt;td&gt;从指定位置截取子串，别名SUBSTR()/MID()&lt;/td&gt;&lt;td&gt;SELECT SUBSTRING(‘HelloMySQL’,6,5);&lt;/td&gt;&lt;td&gt;MySQL&lt;/td&gt;&lt;td&gt;1. 索引从 1 开始，start=0 返回空；2. start 为负数时从字符串末尾倒数；3. 省略 length 则截取到末尾&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LEFT()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;LEFT(s, length)&lt;/td&gt;&lt;td&gt;从左侧截取指定长度的子串&lt;/td&gt;&lt;td&gt;SELECT LEFT(‘HelloMySQL’,5);&lt;/td&gt;&lt;td&gt;Hello&lt;/td&gt;&lt;td&gt;简化版 SUBSTRING，length 为 0 / 负数返回空&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;RIGHT()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;RIGHT(s, length)&lt;/td&gt;&lt;td&gt;从右侧截取指定长度的子串&lt;/td&gt;&lt;td&gt;SELECT RIGHT(‘HelloMySQL’,5);&lt;/td&gt;&lt;td&gt;MySQL&lt;/td&gt;&lt;td&gt;常用于取固定后缀，如手机号后 4 位&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;子串查找定位&lt;/p&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;函数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;标准语法&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例 SQL&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;执行结果&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;关键提示&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;INSTR()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;INSTR(母串s, 子串sub)&lt;/td&gt;&lt;td&gt;返回子串在母串中首次出现的位置&lt;/td&gt;&lt;td&gt;SELECT INSTR(‘HelloMySQL’,‘MySQL’);&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;找不到子串返回 0，大小写敏感受字段排序规则影响&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LOCATE()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;LOCATE(sub, s[, start_pos])&lt;/td&gt;&lt;td&gt;从指定位置开始查找子串位置&lt;/td&gt;&lt;td&gt;SELECT LOCATE(‘l’,‘HelloMySQL’,4);&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;比 INSTR 多了自定义起始查找位置的能力，参数顺序与 INSTR 相反&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;字符串替换&lt;/p&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;函数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;标准语法&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例 SQL&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;执行结果&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;关键提示&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;REPLACE()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;REPLACE(s, old_sub, new_sub)&lt;/td&gt;&lt;td&gt;全局替换字符串中所有匹配的子串&lt;/td&gt;&lt;td&gt;SELECT REPLACE(‘HelloMySQL’,‘Hello’,‘Hi’);&lt;/td&gt;&lt;td&gt;HiMySQL&lt;/td&gt;&lt;td&gt;大小写敏感受排序规则影响，old_sub 为空时返回原串&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;INSERT()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;INSERT(s, start, length, new_sub)&lt;/td&gt;&lt;td&gt;从指定位置开始，替换指定长度的字符&lt;/td&gt;&lt;td&gt;SELECT INSERT(‘HelloMySQL’,1,5,‘Hi’);&lt;/td&gt;&lt;td&gt;HiMySQL&lt;/td&gt;&lt;td&gt;start 为 0 / 超出字符串长度返回原串；length 为负数时替换到字符串末尾&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;空格 / 指定字符修剪&lt;/p&gt;




































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;函数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;标准语法&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例 SQL&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;执行结果&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;关键提示&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TRIM()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;TRIM([[BOTH/LEADING/TRAILING] [rem_str] FROM] s)&lt;/td&gt;&lt;td&gt;去除字符串首尾 / 左侧 / 右侧的指定字符（默认空格）&lt;/td&gt;&lt;td&gt;SELECT TRIM(’  HelloMySQL  ’);&lt;/td&gt;&lt;td&gt;HelloMySQL&lt;/td&gt;&lt;td&gt;BOTH = 首尾（默认）、LEADING = 左、TRAILING = 右；支持去除自定义字符，如TRIM(‘x’ FROM ‘xxTestxx’)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LTRIM()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;LTRIM(s)&lt;/td&gt;&lt;td&gt;仅去除字符串左侧的空格&lt;/td&gt;&lt;td&gt;SELECT LTRIM(’  HelloMySQL’);&lt;/td&gt;&lt;td&gt;HelloMySQL&lt;/td&gt;&lt;td&gt;仅能去空格，去自定义字符用TRIM(LEADING)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;RTRIM()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;RTRIM(s)&lt;/td&gt;&lt;td&gt;仅去除字符串右侧的空格&lt;/td&gt;&lt;td&gt;SELECT RTRIM(‘HelloMySQL  ’);&lt;/td&gt;&lt;td&gt;HelloMySQL&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;大小写转换 &amp;amp; 固定长度填充&lt;/p&gt;












































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;函数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;标准语法&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例 SQL&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;执行结果&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;关键提示&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;UPPER()/UCASE()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;UPPER(s)&lt;/td&gt;&lt;td&gt;字符串全部转大写&lt;/td&gt;&lt;td&gt;SELECT UPPER(‘HelloMySQL’);&lt;/td&gt;&lt;td&gt;HELLOMYSQL&lt;/td&gt;&lt;td&gt;对中文无效果&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LOWER()/LCASE()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;LOWER(s)&lt;/td&gt;&lt;td&gt;字符串全部转小写&lt;/td&gt;&lt;td&gt;SELECT LOWER(‘HelloMySQL’);&lt;/td&gt;&lt;td&gt;hellomysql&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LPAD()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;LPAD(s, target_len, pad_str)&lt;/td&gt;&lt;td&gt;左侧用指定字符填充至目标长度&lt;/td&gt;&lt;td&gt;SELECT LPAD(‘123’,6,‘0’);&lt;/td&gt;&lt;td&gt;000123&lt;/td&gt;&lt;td&gt;若原串长度 &amp;gt; target_len，会从右侧截断原串，而非填充&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;RPAD()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;RPAD(s, target_len, pad_str)&lt;/td&gt;&lt;td&gt;右侧用指定字符填充至目标长度&lt;/td&gt;&lt;td&gt;SELECT RPAD(‘123’,6,‘0’);&lt;/td&gt;&lt;td&gt;123000&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;进阶函数&lt;/p&gt;






































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;函数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例 SQL&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;执行结果&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;REVERSE(s)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;反转字符串&lt;/td&gt;&lt;td&gt;SELECT REVERSE(‘MySQL’);&lt;/td&gt;&lt;td&gt;LQSyM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;STRCMP(s1,s2)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;字符串比较：s1&amp;lt;s2 返回 - 1，相等返回 0，s1&amp;gt;s2 返回 1&lt;/td&gt;&lt;td&gt;SELECT STRCMP(‘a’,‘b’);&lt;/td&gt;&lt;td&gt;-1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;ELT(n, s1,s2,…sn)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;返回第 n 个字符串，n 从 1 开始&lt;/td&gt;&lt;td&gt;SELECT ELT(2,‘Java’,‘MySQL’,‘Python’);&lt;/td&gt;&lt;td&gt;MySQL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;FIELD(sub, s1,s2,…sn)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;返回 sub 在列表中首次出现的位置，找不到返回 0&lt;/td&gt;&lt;td&gt;SELECT FIELD(‘MySQL’,‘Java’,‘MySQL’,‘Python’);&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;FIND_IN_SET(sub, str_set)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;返回 sub 在逗号分隔的字符串集合中的位置&lt;/td&gt;&lt;td&gt;SELECT FIND_IN_SET(‘MySQL’,‘Java,MySQL,Python’);&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;FORMAT(num, d)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;格式化数字为千分位格式，保留 d 位小数&lt;/td&gt;&lt;td&gt;SELECT FORMAT(1234567.89,2);&lt;/td&gt;&lt;td&gt;1,234,567.89&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SPACE(n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;生成 n 个空格的字符串&lt;/td&gt;&lt;td&gt;SELECT CONCAT(‘Hello’,SPACE(2),‘MySQL’);&lt;/td&gt;&lt;td&gt;Hello  MySQL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;ASCII(s)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;返回字符串第一个字符的 ASCII 码&lt;/td&gt;&lt;td&gt;SELECT ASCII(‘A’);&lt;/td&gt;&lt;td&gt;65&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CHAR(n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;将 ASCII 码转换为对应的字符&lt;/td&gt;&lt;td&gt;SELECT CHAR(65);&lt;/td&gt;&lt;td&gt;A&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;REPEAT(s, n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;将字符串 s 重复 n 次&lt;/td&gt;&lt;td&gt;SELECT REPEAT(’*‘,3);&lt;/td&gt;&lt;td&gt;***&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;正则专用字符串函数&lt;/p&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;函数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例 SQL&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;执行结果&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;REGEXP_LIKE(s, 正则表达式)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;判断字符串是否匹配正则，返回 1/0&lt;/td&gt;&lt;td&gt;SELECT REGEXP_LIKE(‘13812345678’,‘^1[3-9]\d{9}$’);&lt;/td&gt;&lt;td&gt;1（验证手机号合规）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;REGEXP_SUBSTR(s, 正则表达式)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;提取字符串中匹配正则的子串&lt;/td&gt;&lt;td&gt;SELECT REGEXP_SUBSTR(‘订单号123456’,‘\d+’);&lt;/td&gt;&lt;td&gt;123456&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;REGEXP_REPLACE(s, 正则, new_str)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;正则替换匹配的内容&lt;/td&gt;&lt;td&gt;SELECT REGEXP_REPLACE(‘13812345678’,’(\d{3})\d{4}(\d{4})’,‘&lt;span&gt;&lt;span&gt;1∗∗∗∗1****&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;∗&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;∗&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;∗&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;∗&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;2’);&lt;/td&gt;&lt;td&gt;138****5678&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;REGEXP_INSTR(s, 正则)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;返回正则匹配内容的首次出现位置&lt;/td&gt;&lt;td&gt;SELECT REGEXP_INSTR(‘MySQL8.0’,‘\d’);&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;关键避坑指南（新手必看）&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;索引起始规则：MySQL 所有字符串函数的位置索引&lt;code&gt;从 1 开始&lt;/code&gt;，不是编程常用的 0，start=0 会直接返回空字符串，是最常见的新手错误。&lt;/li&gt;
&lt;li&gt;NULL 值陷阱：CONCAT()只要有一个参数是 NULL，整体返回 NULL，拼接字段时必须用IFNULL(字段, ”)预处理；CONCAT_WS()会自动跳过 NULL 值，是多字段拼接的首选。&lt;/li&gt;
&lt;li&gt;长度函数区分：统计文本字数用CHAR_LENGTH()，校验存储字节用LENGTH()，中文场景混用会导致结果完全错误。&lt;/li&gt;
&lt;li&gt;填充截断问题：LPAD()/RPAD()的核心是「最终长度固定为 target_len」，如果原串长度超过目标长度，会直接截断，而非保留原串。&lt;/li&gt;
&lt;li&gt;GROUP_CONCAT 长度限制：默认最大拼接长度为 1024 字节，超长会静默截断，生产环境需提前修改配置：SET GLOBAL group_concat_max_len = 1024000;&lt;/li&gt;
&lt;li&gt;大小写敏感规则：默认使用_ci结尾的排序规则（不区分大小写），如需区分大小写，可使用_bin二进制排序规则，或加BINARY关键字，如SELECT REPLACE(BINARY ‘Hello’,‘h’,‘H’);&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;关键注意点：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MySQL&lt;/strong&gt;：&lt;code&gt;LENGTH()&lt;/code&gt; 返回字节数（UTF-8 下中文占 3 字节），&lt;code&gt;CHAR_LENGTH()&lt;/code&gt; 返回字符数。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server&lt;/strong&gt;：&lt;code&gt;SUBSTRING(start, len)&lt;/code&gt; 中 start 从 &lt;code&gt;1&lt;/code&gt; 开始，无 &lt;code&gt;LPAD/RPAD&lt;/code&gt;，需用 &lt;code&gt;REPLICATE(pad, len) + s&lt;/code&gt; 实现。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oracle&lt;/strong&gt;：&lt;code&gt;SUBSTR(start, len)&lt;/code&gt; 支持负数 &lt;code&gt;start（从尾部倒数）&lt;/code&gt;，&lt;code&gt;LENGTHB()&lt;/code&gt; 返回字节数。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;数学函数&lt;a href=&quot;#数学函数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;MySQL 数学函数覆盖基础运算、取整、随机数、幂指对、三角函数等场景，以下是核心函数的结构化整理：&lt;/p&gt;&lt;p&gt;基础运算函数：&lt;/p&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;函数名&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;功能说明&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例 SQL&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例结果&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;ABS(n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;返回绝对值&lt;/td&gt;&lt;td&gt;SELECT ABS(-123);&lt;/td&gt;&lt;td&gt;123&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SIGN(n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;返回符号：-1 (负)/0 (零)/1 (正)&lt;/td&gt;&lt;td&gt;SELECT SIGN(-45);&lt;/td&gt;&lt;td&gt;-1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;MOD(n, m)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;取模（求余），同 n % m&lt;/td&gt;&lt;td&gt;SELECT MOD(10, 3);&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;GREATEST(v1, v2, …)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;返回多个值中的最大值&lt;/td&gt;&lt;td&gt;SELECT GREATEST(5, 9, 3);&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LEAST(v1, v2, …)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;返回多个值中的最小值&lt;/td&gt;&lt;td&gt;SELECT LEAST(5, 9, 3);&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;取整与截断函数：&lt;/p&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;函数名&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;功能说明&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例 SQL&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例结果&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CEIL(n) / CEILING(n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;向上取整（不小于 n 的最小整数）&lt;/td&gt;&lt;td&gt;SELECT CEIL(4.1);&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;FLOOR(n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;向下取整（不大于 n 的最大整数）&lt;/td&gt;&lt;td&gt;SELECT FLOOR(4.9);&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;ROUND(n, d)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;四舍五入，d 为保留小数位数（d 可为负）&lt;/td&gt;&lt;td&gt;SELECT ROUND(123.456, 2);&lt;/td&gt;&lt;td&gt;123.46&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TRUNCATE(n, d)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;截断小数，直接舍去指定位数（不四舍五入）&lt;/td&gt;&lt;td&gt;SELECT TRUNCATE(123.456, 2);&lt;/td&gt;&lt;td&gt;123.45&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;幂指对与三角函数：&lt;/p&gt;












































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;函数名&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;功能说明&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例 SQL&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例结果&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;POWER(n, exp)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;幂运算（n 的 exp 次方）&lt;/td&gt;&lt;td&gt;SELECT POWER(2, 3);&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SQRT(n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;平方根&lt;/td&gt;&lt;td&gt;SELECT SQRT(16);&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;EXP(n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;e 的 n 次方（自然指数）&lt;/td&gt;&lt;td&gt;SELECT EXP(1);&lt;/td&gt;&lt;td&gt;2.718…&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LOG(n) / LN(n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;自然对数（以 e 为底）&lt;/td&gt;&lt;td&gt;SELECT LOG(2.718);&lt;/td&gt;&lt;td&gt;~1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LOG10(n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;常用对数（以 10 为底）&lt;/td&gt;&lt;td&gt;SELECT LOG10(100);&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LOG2(n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;二进制对数（以 2 为底）&lt;/td&gt;&lt;td&gt;SELECT LOG2(8);&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SIN(n) / COS(n) / TAN(n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;三角函数（n 为弧度）&lt;/td&gt;&lt;td&gt;SELECT SIN(PI()/2);&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;ASIN(n) / ACOS(n) / ATAN(n)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;反三角函数（返回弧度）&lt;/td&gt;&lt;td&gt;SELECT ASIN(1);&lt;/td&gt;&lt;td&gt;PI()/2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;RADIANS(deg)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;角度转弧度&lt;/td&gt;&lt;td&gt;SELECT RADIANS(180);&lt;/td&gt;&lt;td&gt;PI()&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DEGREES(rad)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;弧度转角度&lt;/td&gt;&lt;td&gt;SELECT DEGREES(PI());&lt;/td&gt;&lt;td&gt;180&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;PI()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;返回圆周率 π&lt;/td&gt;&lt;td&gt;SELECT PI();&lt;/td&gt;&lt;td&gt;3.14159…&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;随机数函数：&lt;/p&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;函数名&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;功能说明&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例 SQL&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例结果&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;RAND()&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;生成 0 到 1 之间的随机浮点数&lt;/td&gt;&lt;td&gt;SELECT RAND();&lt;/td&gt;&lt;td&gt;~0.567&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;RAND(seed)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;生成固定序列的随机数（seed 为整数种子）&lt;/td&gt;&lt;td&gt;SELECT RAND(123);&lt;/td&gt;&lt;td&gt;固定值&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;FLOOR(RAND()*(max-min+1))+min&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;生成 [min, max] 之间的随机整数&lt;/td&gt;&lt;td&gt;SELECT FLOOR(RAND()*10+1);&lt;/td&gt;&lt;td&gt;1-10 随机数&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;关键注意点&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ROUND 的负数精度&lt;/strong&gt;：&lt;code&gt;ROUND(1234, -2)&lt;/code&gt; 会将十位及以下四舍五入，结果为 1200。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TRUNCATE 与 ROUND 的区别&lt;/strong&gt;：&lt;code&gt;TRUNCATE(4.9, 0)&lt;/code&gt; 结果为 4（直接截），&lt;code&gt;ROUND(4.9, 0)&lt;/code&gt; 结果为 5（四舍五入）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAND 的种子用法&lt;/strong&gt;：若需重复测试，可给 &lt;code&gt;RAND()&lt;/code&gt; 加固定种子（如 &lt;code&gt;RAND(123)&lt;/code&gt;），每次执行会生成相同的随机序列。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NULL 值处理&lt;/strong&gt;：&lt;code&gt;GREATEST()/LEAST()&lt;/code&gt; 若参数中包含NULL，结果直接返回NULL，需注意判空。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;三角函数的单位&lt;/strong&gt;：MySQL 三角函数默认使用弧度，若输入角度需先用 RADIANS() 转换。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;时间日期函数&lt;a href=&quot;#时间日期函数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;获取当前日期和时间&lt;a href=&quot;#获取当前日期和时间&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NOW() / CURRENT_TIMESTAMP()&lt;/strong&gt;：返回当前日期和时间（格式：&lt;code&gt;YYYY-MM-DD HH:MM:SS&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CURDATE() / CURRENT_DATE()&lt;/strong&gt;：返回当前日期（格式：&lt;code&gt;YYYY-MM-DD&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CURTIME() / CURRENT_TIME()&lt;/strong&gt;：返回当前时间（格式：&lt;code&gt;HH:MM:SS&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;NOW() 记录过后就不会在改变，而 CURRENT_TIMESTAMP() 会发生改变。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;日期时间格式化&lt;a href=&quot;#日期时间格式化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DATE_FORMAT(date, format)&lt;/strong&gt;：将日期按指定格式显示，常用格式符：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;%Y&lt;/code&gt;：4 位年份（如 2026），&lt;code&gt;%y&lt;/code&gt;：2 位年份（如 26）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%m&lt;/code&gt;：月份（01 - 12），&lt;code&gt;%c&lt;/code&gt;：月份（1 - 12）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%d&lt;/code&gt;：日期（01 - 31），&lt;code&gt;%e&lt;/code&gt;：日期（1 - 31）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%H&lt;/code&gt;：小时（00 - 23），&lt;code&gt;%h&lt;/code&gt;：小时（01 - 12）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%i&lt;/code&gt;：分钟（00 - 59），&lt;code&gt;%s&lt;/code&gt;：秒（00 - 59）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--  2026年4月10日 15：49：31&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DATE_FORMAT&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;span&gt;&apos;%Y年%c月%e日 %H：%i：%s&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;日期时间计算&lt;a href=&quot;#日期时间计算&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DATE_ADD(date, INTERVAL expr unit)&lt;/strong&gt;：日期加上指定时间间隔，&lt;code&gt;unit 可选：DAY、MONTH、YEAR、HOUR&lt;/code&gt;等。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DATE_SUB(date, INTERVAL expr unit)&lt;/strong&gt;：日期减去指定时间间隔。
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 需要 INTERVAL&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; DATE_ADD(&lt;/span&gt;&lt;span&gt;NOW&lt;/span&gt;&lt;span&gt;(), INTERVAL &lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DAY&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; DUAL;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DATEDIFF(date1, date2)&lt;/strong&gt;：计算两个日期相差的&lt;code&gt;天数&lt;/code&gt;（date1 - date2）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TIMESTAMPDIFF(unit, datetime1, datetime2)&lt;/strong&gt;：计算两个日期&lt;code&gt;时间的差值&lt;/code&gt;datetime2 - datetime1），&lt;code&gt;unit 可选：SECOND、MINUTE、HOUR、DAY、MONTH、YEAR&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;日期时间提取&lt;a href=&quot;#日期时间提取&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;YEAR(date) / MONTH(date) / DAY(date)&lt;/strong&gt;：提取年、月、日。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HOUR(time) / MINUTE(time) / SECOND(time)&lt;/strong&gt;：提取时、分、秒&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DAYOFWEEK(date)&lt;/strong&gt;：返回星期几（1 = 周日，2 = 周一，…，7 = 周六）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DAYOFMONTH(date)&lt;/strong&gt;：返回当月第几天（1-31）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DAYOFYEAR(date)&lt;/strong&gt;：返回当年第几天（1-366）。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;其他函数&lt;a href=&quot;#其他函数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;STR_TO_DATE(str, format)&lt;/strong&gt;：将字符串按指定格式转换为日期。
&lt;ul&gt;
&lt;li&gt;示例：&lt;code&gt;STR_TO_DATE(&apos;2026-04-10&apos;, &apos;%Y-%m-%d&apos;)&lt;/code&gt; → 日期类型&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LAST_DAY(date)&lt;/strong&gt;：返回当月最后一天的日期。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UNIX_TIMESTAMP()&lt;/strong&gt;：返回当前时间的 Unix 时间戳（&lt;code&gt;1970-1-1 到如今的秒数&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FROM_UNIXTIME(timestamp)&lt;/strong&gt;：将 Unix 时间戳转换为日期时间格式。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;加密和系统函数&lt;a href=&quot;#加密和系统函数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;user()&lt;/strong&gt;：返回当前用户及所在IP。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DATABASE()&lt;/strong&gt;：返回当前使用的数据库。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MD5(str)&lt;/strong&gt;：返回一个 MD5 32位的字符串，常用于（用户密码）加密&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PASSWORD(str)&lt;/strong&gt;：MySQL默认加密函数&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;流程控制函数&lt;a href=&quot;#流程控制函数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这类函数可直接用于 &lt;code&gt;SELECT、WHERE、UPDATE、INSERT、ORDER BY 等普通 SQL 语句&lt;/code&gt;，无需存储过程 / 函数，用于单行数据的条件判断、空值处理，是日常开发&lt;code&gt;最常用&lt;/code&gt;的能力。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;IF () 函数：二选一基础判断&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;语法：&lt;code&gt;IF(condition, value_if_true, value_if_false)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;核心逻辑：条件 &lt;code&gt;condition&lt;/code&gt; 为 TRUE（非 0、非 NULL），返回第二个参数；否则返回第三个参数。&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 基础二值判断&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;IF&lt;/span&gt;&lt;span&gt;&lt;span&gt;(amount &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;1000&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;大额订单&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;普通订单&apos;&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; order_type &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; orders;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 嵌套IF实现多分支（超过3层建议用CASE WHEN，可读性更好）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;IF&lt;/span&gt;&lt;span&gt;&lt;span&gt;(score &lt;/span&gt;&lt;span&gt;&amp;gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;优秀&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;IF&lt;/span&gt;&lt;span&gt;&lt;span&gt;(score &lt;/span&gt;&lt;span&gt;&amp;gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;及格&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;不及格&apos;&lt;/span&gt;&lt;span&gt;)) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; grade &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; student;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;条件为 NULL 时，会被视为 FALSE，例如 IF(NULL, 1, 0) 返回 0&lt;/li&gt;
&lt;li&gt;两个返回值的&lt;code&gt;数据类型需一致&lt;/code&gt;，否则会触发&lt;code&gt;隐式转换&lt;/code&gt;，可能导致索引失效&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;IFNULL () 函数：空值兜底专用&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;语法：&lt;code&gt;IFNULL(expr1, expr2)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;核心逻辑：如果 expr1 不为 NULL，返回原值；否则返回兜底值 expr2，是 MySQL 处理 NULL 值最高频的函数。&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 字段空值兜底&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;IFNULL&lt;/span&gt;&lt;span&gt;(phone, &lt;/span&gt;&lt;span&gt;&apos;未预留手机号&apos;&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; contact &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; user;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 计算场景兜底，避免 NULL 导致结果为 NULL&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;IFNULL&lt;/span&gt;&lt;span&gt;(price * num, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; total_amount &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; order_item;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;仅判断 NULL，&lt;code&gt;空字符串&apos;&apos;、数字 0、布尔值 false&lt;/code&gt; 都会被视为「非 NULL」，不会触发兜底。&lt;/li&gt;
&lt;li&gt;是 MySQL 专属函数，跨库兼容性不如 &lt;code&gt;COALESCE()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;NULLIF () 函数：等值判空，规避异常&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;语法：&lt;code&gt;NULLIF(expr1, expr2)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;核心逻辑：如果 &lt;code&gt;expr1 = expr2&lt;/code&gt; 成立，返回 NULL；否则返回 expr1。最核心的用途是&lt;code&gt;规避除零错误&lt;/code&gt;、避免无意义的数据更新&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 经典除零防护，分母为0时返回NULL，不会报Division by 0错误&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; total / &lt;/span&gt;&lt;span&gt;NULLIF&lt;/span&gt;&lt;span&gt;(quantity, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; unit_price &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; sales;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 规避重复更新：新旧值一致时设为NULL，避免无意义的行锁和日志写入&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;UPDATE&lt;/span&gt;&lt;span&gt; user &lt;/span&gt;&lt;span&gt;SET&lt;/span&gt;&lt;span&gt;&lt;span&gt; username &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;NULLIF&lt;/span&gt;&lt;span&gt;(new_username, old_username) &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; id &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;本质等价于 &lt;code&gt;CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;两个参数数据类型不同时，会触发隐式类型转换&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;COALESCE () 函数：多参数空值兜底&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;语法：&lt;code&gt;COALESCE(expr1, expr2, expr3, ..., exprN)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;核心逻辑：返回参数列表中第一个非 NULL 的值，支持无限个参数，是IFNULL()的超集，也是 SQL 标准函数，跨数据库兼容性最好。&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 多字段优先级兜底，按手机号&amp;gt;邮箱&amp;gt;微信的优先级取联系方式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;COALESCE&lt;/span&gt;&lt;span&gt;(mobile, email, wechat_id, &lt;/span&gt;&lt;span&gt;&apos;暂无联系方式&apos;&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; contact &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; user;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 金额计算兜底，多字段都为NULL时最终返回0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;COALESCE&lt;/span&gt;&lt;span&gt;(settle_amount, pay_amount, order_amount, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;AS&lt;/span&gt;&lt;span&gt; final_amount &lt;/span&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; orders;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;所有参数都为 NULL 时，最终返回 NULL&lt;/li&gt;
&lt;li&gt;比嵌套 &lt;code&gt;IFNULL()&lt;/code&gt; 更简洁，可读性更强，优先推荐使用&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;CASE 表达式：最强大的多分支控制&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;语法：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CASE&lt;/span&gt;&lt;span&gt; 匹配表达式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;WHEN&lt;/span&gt;&lt;span&gt; 匹配值1 / 条件1 &lt;/span&gt;&lt;span&gt;THEN&lt;/span&gt;&lt;span&gt; 结果1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;WHEN&lt;/span&gt;&lt;span&gt; 匹配值2 / 条件2 &lt;/span&gt;&lt;span&gt;THEN&lt;/span&gt;&lt;span&gt; 结果2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;ELSE&lt;/span&gt;&lt;span&gt; 默认结果&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;ELSE 子句可选，不写时所有 WHEN 都不匹配会返回 NULL&lt;/li&gt;
&lt;li&gt;所有 THEN 和 ELSE 的返回值类型需一致，否则会触发隐式转换&lt;/li&gt;
&lt;li&gt;搜索 CASE 支持任意复杂条件（AND/OR、函数、子查询），优先推荐使用&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>数据库数据类型</title><link>https://umami.eu.cc/posts/database-datatype/</link><guid isPermaLink="true">https://umami.eu.cc/posts/database-datatype/</guid><description>创建表时字段所设置的数据类型</description><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;数值类型&lt;a href=&quot;#数值类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;分为&lt;code&gt;整数类型&lt;/code&gt;、&lt;code&gt;定点数类型&lt;/code&gt;、&lt;code&gt;浮点数类型&lt;/code&gt;、&lt;code&gt;位类型&lt;/code&gt;，核心用于&lt;code&gt;存储数字&lt;/code&gt;数据。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;整数类型（最常用，主键 / 状态 / 数量首选）&lt;a href=&quot;#整数类型最常用主键--状态--数量首选&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;














































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;字节数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;有符号取值范围&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;无符号 (unsigned) 取值范围&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;典型适用场景&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TINYINT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;-128 ~ 127&lt;/td&gt;&lt;td&gt;0 ~ 255&lt;/td&gt;&lt;td&gt;状态码、性别、布尔值、年龄&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SMALLINT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;-32768 ~ 32767&lt;/td&gt;&lt;td&gt;0 ~ 65535&lt;/td&gt;&lt;td&gt;小范围数量、分类 ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;MEDIUMINT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;-8388608 ~ 8388607&lt;/td&gt;&lt;td&gt;0 ~ 16777215&lt;/td&gt;&lt;td&gt;中等规模数据 ID、访问量统计&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;INT/INTEGER&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;-2147483648 ~ 2147483647&lt;/td&gt;&lt;td&gt;0 ~ 4294967295&lt;/td&gt;&lt;td&gt;表主键、常规业务 ID、数量统计&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;BIGINT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;-9223372036854775808 ~ 9223372036854775807&lt;/td&gt;&lt;td&gt;0 ~ 18446744073709551615&lt;/td&gt;&lt;td&gt;超大主键、雪花 ID、分布式业务 ID&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;关键避坑：MySQL 8.0 已废弃INT(11)这类显示宽度设置，它不影响数值的存储范围，仅为旧版本兼容语法。BOOLEAN/BOOL是TINYINT(1)的别名，0 代表 false，非 0 代表 true，无原生布尔类型。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;定点数类型（精准数值，金额首选）&lt;a href=&quot;#定点数类型精准数值金额首选&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;字节数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心特性&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DECIMAL(M,D) / NUMERIC(M,D)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;动态（M+2 字节左右）&lt;/td&gt;&lt;td&gt;精准十进制存储，无精度丢失；M = 总有效位数 (1-65)，D = 小数位数 (0-30，≤M)&lt;/td&gt;&lt;td&gt;金额、汇率、精准计量数据&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;示例：DECIMAL(10,2) 表示总位数 10 位，小数 2 位，取值范围-99999999.99 ~ 99999999.99，是电商订单金额的标准选型。&lt;/p&gt;&lt;p&gt;强制规范：所有金融 / 金额类字段必须用 DECIMAL，绝对禁止用浮点数。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;浮点数类型（近似数值，非精准场景用）&lt;a href=&quot;#浮点数类型近似数值非精准场景用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;






















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;字节数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;精度特性&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;FLOAT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;单精度，约 6-7 位有效数字&lt;/td&gt;&lt;td&gt;科学计算、非精准的浮点数据&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DOUBLE&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;双精度，约 15-17 位有效数字&lt;/td&gt;&lt;td&gt;非精准的大数据量浮点统计、地理坐标&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;避坑：浮点数是二进制近似存储，会出现0.1 + 0.2 ≠ 0.3的精度丢失问题，严禁用于金额、对账等精准校验场景。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;位类型&lt;a href=&quot;#位类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;字节数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;特性&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;BIT(M)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;1-8 字节（M 为 1-64）&lt;/td&gt;&lt;td&gt;存储位字段，M 为位数，默认 1 位，取值 0/1&lt;/td&gt;&lt;td&gt;多状态位掩码、布尔开关&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;字符串类型&lt;a href=&quot;#字符串类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最常用的类型之一，分为常规文本字符串、二进制字符串、枚举 / 集合三大类，核心用于存储文本、二进制数据。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;常规文本字符串（核心高频）&lt;a href=&quot;#常规文本字符串核心高频&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;














































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;最大长度（字符）&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;存储特性&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CHAR(M)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;0-255&lt;/td&gt;&lt;td&gt;定长字符串，不足 M 位自动补空格，查询效率高&lt;/td&gt;&lt;td&gt;固定长度内容：手机号、身份证号、性别编码、UUID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;VARCHAR(M)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;0-65535（受行大小限制）&lt;/td&gt;&lt;td&gt;变长字符串，存储实际内容 + 1/2 字节长度前缀，节省空间&lt;/td&gt;&lt;td&gt;非固定长度内容：用户名、地址、商品名称、短备注&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TINYTEXT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;255&lt;/td&gt;&lt;td&gt;短文本，无默认值，不支持普通索引前缀&lt;/td&gt;&lt;td&gt;极短的扩展字段、临时备注&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TEXT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;65535&lt;/td&gt;&lt;td&gt;中等文本，无默认值，行溢出存储&lt;/td&gt;&lt;td&gt;文章摘要、评论内容、长备注&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;MEDIUMTEXT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;16777215&lt;/td&gt;&lt;td&gt;长文本，无默认值&lt;/td&gt;&lt;td&gt;文章正文、协议内容、长文本日志&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LONGTEXT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;4294967295&lt;/td&gt;&lt;td&gt;超长文本，无默认值&lt;/td&gt;&lt;td&gt;超大文本、JSON 大对象、备份内容&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ol&gt;
&lt;li&gt;字符集强制使用utf8mb4，支持完整 UTF-8 字符（含 emoji），避免utf8（别名utf8mb3，仅支持 3 字节，无法存储 emoji）。&lt;/li&gt;
&lt;li&gt;VARCHAR(M)的 M 是字符数，不是字节数：utf8mb4 下 1 个字符最多占 4 字节，MySQL 单行最大容量为 65535 字节，因此 VARCHAR 实际最大可用字符数约 16000 左右。&lt;/li&gt;
&lt;li&gt;优先用VARCHAR，仅当内容长度固定时用CHAR，查询速度 char 大于 varchar；短文本优先 VARCHAR，避免滥用 TEXT 类型（TEXT 会触发行溢出，查询性能远低于 VARCHAR）。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;3个字节用以记录字段大小。不区分是否为中文还是字母。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;二进制字符串类型&lt;a href=&quot;#二进制字符串类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;存储二进制字节流，无字符集概念，大小写敏感，适合存储非文本数据。&lt;/p&gt;














































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;最大长度&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;对应文本类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;BINARY(M)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;0-255 字节&lt;/td&gt;&lt;td&gt;CHAR(M)&lt;/td&gt;&lt;td&gt;固定长度二进制：哈希值、加密串、校验码&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;VARBINARY(M)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;0-65535 字节&lt;/td&gt;&lt;td&gt;VARCHAR(M)&lt;/td&gt;&lt;td&gt;变长二进制：动态加密数据、二进制令牌&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TINYBLOB&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;255 字节&lt;/td&gt;&lt;td&gt;TINYTEXT&lt;/td&gt;&lt;td&gt;极短二进制文件片段&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;BLOB&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;65535 字节&lt;/td&gt;&lt;td&gt;TEXT&lt;/td&gt;&lt;td&gt;中等二进制数据：小图片、小文件&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;MEDIUMBLOB&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;16777215 字节&lt;/td&gt;&lt;td&gt;MEDIUMTEXT&lt;/td&gt;&lt;td&gt;较大二进制文件：图片、音频片段&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;LONGBLOB&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;4294967295 字节&lt;/td&gt;&lt;td&gt;LONGTEXT&lt;/td&gt;&lt;td&gt;超大二进制文件：视频、备份包&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;不推荐在数据库中直接存储大文件（图片 / 视频），建议存文件路径 / 对象存储 URL，仅特殊涉密场景用 BLOB。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;枚举与集合类型&lt;a href=&quot;#枚举与集合类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;






















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心特性&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;最大选项数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;ENUM&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;单选枚举，只能选预定义的一个值，底层用数字存储，节省空间&lt;/td&gt;&lt;td&gt;65535&lt;/td&gt;&lt;td&gt;固定单选选项：性别、订单状态、审核状态&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SET&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;多选集合，可选择预定义的多个值，底层用位掩码存储&lt;/td&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;固定多选选项：用户标签、爱好、权限标识&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;
&lt;li&gt;ENUM：ENUM(‘待付款’,‘待发货’,‘已发货’,‘已完成’)&lt;/li&gt;
&lt;li&gt;SET：SET(‘篮球’,‘足球’,‘羽毛球’,‘游泳’)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;避坑：ENUM/SET 的选项修改需要执行ALTER TABLE，高并发场景慎用；ENUM 的数值索引容易混淆（如ENUM(‘a’,‘b’)中，where status=1匹配 ‘a’，where status=‘1’匹配值为 ‘1’ 的选项）。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;日期与时间类型&lt;a href=&quot;#日期与时间类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;MySQL 8.0 优化了日期类型的存储，核心用于存储时间数据，优先推荐DATETIME。&lt;/p&gt;




















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;字节数&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;格式&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;取值范围&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心特性&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DATE&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;YYYY-MM-DD&lt;/td&gt;&lt;td&gt;1000-01-01 ~ 9999-12-31&lt;/td&gt;&lt;td&gt;仅存日期，无时间&lt;/td&gt;&lt;td&gt;生日、入职日期、业务日期&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TIME&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;HH:MM.fraction&lt;/td&gt;&lt;td&gt;-838:59:59 ~ 838:59:59&lt;/td&gt;&lt;td&gt;仅存时间 / 时长，支持微秒精度（0-6 位）&lt;/td&gt;&lt;td&gt;营业时间、时长统计、时分秒数据&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DATETIME(M)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;YYYY-MM-DD HH:MM.fraction&lt;/td&gt;&lt;td&gt;1000-01-01 00:00:00 ~ 9999-12-31 23:59:59&lt;/td&gt;&lt;td&gt;不受时区影响，支持微秒精度，支持默认值 / 自动更新&lt;/td&gt;&lt;td&gt;【首选】创建时间、更新时间、业务发生时间&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TIMESTAMP(M)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;YYYY-MM-DD HH:MM.fraction&lt;/td&gt;&lt;td&gt;1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC&lt;/td&gt;&lt;td&gt;受会话时区影响，自动转换时区，有 2038 年上限问题&lt;/td&gt;&lt;td&gt;跨时区业务、需要自动时区转换的场景&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;YEAR&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;YYYY&lt;/td&gt;&lt;td&gt;1901 ~ 2155&lt;/td&gt;&lt;td&gt;仅存年份，占用空间极小&lt;/td&gt;&lt;td&gt;出生年份、发行年份、统计年份&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ol&gt;
&lt;li&gt;90% 以上场景优先使用DATETIME(3)（毫秒精度），无 2038 问题，不受时区干扰，MySQL 8.0 支持DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP，完全覆盖 TIMESTAMP 的功能。&lt;/li&gt;
&lt;li&gt;禁止用字符串类型存储日期时间，会丧失日期函数、索引优化能力，且占用更多空间。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;原生特殊类型&lt;a href=&quot;#原生特殊类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;JSON 类型（MySQL 5.7+ 支持，8.0 大幅优化）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;核心特性：原生 JSON 格式存储，自动校验 JSON 格式合法性，支持 JSON 专属函数、索引（通过生成列创建），比 TEXT 存 JSON 性能提升显著。&lt;/li&gt;
&lt;li&gt;最大容量：等同于 LONGTEXT，最大约 4GB。&lt;/li&gt;
&lt;li&gt;适用场景：动态扩展字段、不固定结构的配置数据、前端透传的结构化数据、多维度标签，避免频繁 ALTER TABLE 加字段。&lt;/li&gt;
&lt;li&gt;示例：JSON类型字段，存储{“id”:1,“name”:“张三”,“tags”:[“VIP”,“新用户”]}&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;空间数据类型&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用于存储地理空间数据，支持空间索引，适配 LBS、地图类业务，核心类型：&lt;/li&gt;
&lt;li&gt;POINT：点坐标（经纬度）&lt;/li&gt;
&lt;li&gt;LINESTRING：线、路径&lt;/li&gt;
&lt;li&gt;POLYGON：多边形、区域&lt;/li&gt;
&lt;li&gt;GEOMETRY：通用空间类型，可存储上述任意类型&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;关于数据类型选择的指南&lt;a href=&quot;#关于数据类型选择的指南&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;主键选型：单表自增主键用INT UNSIGNED，超大规模 / 分布式表用BIGINT UNSIGNED，禁止用 VARCHAR 作为主键。&lt;/li&gt;
&lt;li&gt;金额存储：强制用DECIMAL(M,D)，绝对禁止 FLOAT/DOUBLE。&lt;/li&gt;
&lt;li&gt;字符串选型：优先VARCHAR，固定长度用CHAR，字符集统一utf8mb4，短文本禁用 TEXT。&lt;/li&gt;
&lt;li&gt;时间选型：优先DATETIME(3)，非必要不用 TIMESTAMP，避免 2038 问题。&lt;/li&gt;
&lt;li&gt;状态枚举：少量固定选项用TINYINT（代码映射枚举），固定不变的单选可用 ENUM，高并发场景优先 TINYINT。&lt;/li&gt;
&lt;li&gt;动态字段：非结构化 / 动态扩展字段用JSON类型，替代传统的键值对表或多冗余字段。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;</content:encoded></item><item><title>数据库表操作</title><link>https://umami.eu.cc/posts/database-table-operations/</link><guid isPermaLink="true">https://umami.eu.cc/posts/database-table-operations/</guid><description>针对数据库与表的操作，即数据定义语言</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;SQL 结构化查询语言&lt;a href=&quot;#sql-结构化查询语言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;SQL（Structured Query Language，结构化查询语言）是&lt;code&gt;关系型数据库（RDBMS）的国际标准编程语言&lt;/code&gt;，1986 年成为 ANSI 标准，1987 年纳入 ISO 国际标准，核心用于数据库的数据增删改查（CRUD）、结构定义、权限管控、事务管理等全生命周期操作。&lt;/p&gt;&lt;p&gt;它是声明式非过程化语言，用户只需描述「要什么数据」，无需编写底层执行逻辑，由数据库引擎自动优化执行路径，是&lt;code&gt;所有主流关系型数据库的通用操作语言，不同数据库仅存在少量方言语法差异&lt;/code&gt;，核心标准 SQL 完全通用。&lt;/p&gt;&lt;p&gt;按功能边界，SQL 可分为 5 大核心模块，覆盖数据库全场景操作：&lt;/p&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;分类&lt;/th&gt;&lt;th&gt;全称&lt;/th&gt;&lt;th&gt;核心作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;DDL&lt;/td&gt;&lt;td&gt;数据定义语言（Data Definition Language）&lt;/td&gt;&lt;td&gt;定义 / 修改数据库的结构（库、表、索引、视图等）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DQL&lt;/td&gt;&lt;td&gt;数据查询语言（Data Query Language）&lt;/td&gt;&lt;td&gt;数据检索与分析，SQL 最核心、最常用的模块&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DML&lt;/td&gt;&lt;td&gt;数据操纵语言（Data Manipulation Language）&lt;/td&gt;&lt;td&gt;对表中数据进行增、删、改操作&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DCL&lt;/td&gt;&lt;td&gt;数据控制语言（Data Control Language）&lt;/td&gt;&lt;td&gt;管理数据库用户权限与安全&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TCL&lt;/td&gt;&lt;td&gt;事务控制语言（Transaction Control Language）&lt;/td&gt;&lt;td&gt;保障数据操作的原子性与一致性&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;数据库连接与基础配置&lt;a href=&quot;#数据库连接与基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;连接数据库&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 本地连接（默认端口3306）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mysql&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-u&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 远程连接（指定主机、端口）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mysql&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-h&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.1.100&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-P&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3306&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-u&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 免安装时使用，启动MySQL服务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;net&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;start&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;mysql&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;基础配置查看&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看数据库版本&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;VERSION&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看当前数据库&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DATABASE&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看所有数据库&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SHOW DATABASES;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看当前用户&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SELECT&lt;/span&gt;&lt;span&gt; USER();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;MySQL 查看命令&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看实例级全局默认字符集&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SHOW VARIABLES &lt;/span&gt;&lt;span&gt;LIKE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;character_set_server&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看实例级全局默认校验规则&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SHOW VARIABLES &lt;/span&gt;&lt;span&gt;LIKE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;collation_server&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看指定数据库的字符集和校验规则&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SHOW &lt;/span&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DATABASE&lt;/span&gt;&lt;span&gt; 你的数据库名;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看当前数据库支持的所有字符集&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SHOW &lt;/span&gt;&lt;span&gt;CHARACTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SET&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 查看指定字符集支持的所有校验规则&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SHOW COLLATION &lt;/span&gt;&lt;span&gt;WHERE&lt;/span&gt;&lt;span&gt;&lt;span&gt; Charset &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&apos;utf8mb4&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;库操作&lt;a href=&quot;#库操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 创建数据库（指定字符集）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DATABASE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;IF&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NOT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;EXISTS&lt;/span&gt;&lt;span&gt; test_db &lt;/span&gt;&lt;span&gt;DEFAULT&lt;/span&gt;&lt;span&gt; CHARSET utf8mb4 &lt;/span&gt;&lt;span&gt;COLLATE&lt;/span&gt;&lt;span&gt; utf8mb4_unicode_ci;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 使用数据库&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;USE&lt;/span&gt;&lt;span&gt; test_db;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 删除数据库&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DROP&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DATABASE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;IF&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;EXISTS&lt;/span&gt;&lt;span&gt; test_db;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;创建数据库时，&lt;code&gt;显式指定的字符集 / 校验规则 &amp;gt; 实例级配置的默认值&lt;/code&gt;；若不手动指定，完全继承 &lt;code&gt;my.cnf/my.ini&lt;/code&gt; 中配置的 &lt;code&gt;character_set_server&lt;/code&gt; 和 &lt;code&gt;collation_server&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;MySQL 中的 utf8 是 utf8mb3 的别名，仅支持最多 3 字节的 UTF-8 字符，无法存储 emoji、生僻字，生产环境严禁使用，必须用 &lt;code&gt;utf8mb4&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;校验规则命名规则：字符集_排序算法_特性，&lt;code&gt;ci = 大小写不敏感&lt;/code&gt;，&lt;code&gt;cs = 大小写敏感&lt;/code&gt;，&lt;code&gt;bin = 二进制比较（严格区分大小写、口音、特殊字符）&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;在&lt;code&gt;命令行&lt;/code&gt;中运行如下指令可&lt;code&gt;备份数据库&lt;/code&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 备份整个数据库&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mysqldump&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-u&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-B&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test_db&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;E:&lt;/span&gt;&lt;span&gt;\t&lt;/span&gt;&lt;span&gt;est_db_backup.sql&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 备份指定表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mysqldump&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-u&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test_db&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;user&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;orders&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;test_db_tables_backup.sql&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 备份所有数据库&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mysqldump&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-u&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--all-databases&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;all_db_backup.sql&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;在&lt;code&gt;MySQL命令行&lt;/code&gt;中运行如下指令可&lt;code&gt;恢复数据库&lt;/code&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 恢复数据库&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mysql&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-u&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test_db&lt;/span&gt;&lt;span&gt; &amp;lt; &lt;/span&gt;&lt;span&gt;test_db_backup.sql&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 登录后恢复&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SOURCE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/path/to/test_db_backup.sql&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;使用 Navicat 执行数据库恢复却提示语法错误，但在在命令行中进入 MySQL 后输入恢复指令却能正常执行。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;表操作&lt;a href=&quot;#表操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;操作表前必须&lt;code&gt;先指定数据库&lt;/code&gt;，执行 &lt;code&gt;USE 数据库名;&lt;/code&gt;，或通过 &lt;code&gt;库名.表名&lt;/code&gt; 方式指定归属库。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;表的创建（CREATE TABLE）&lt;a href=&quot;#表的创建create-table&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;核心作用：定义表结构、字段类型、约束规则、存储属性，是表操作的基础。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;[IF NOT EXISTS]&lt;/span&gt;&lt;span&gt; 表名 (&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;字段名1 数据类型 &lt;/span&gt;&lt;span&gt;[字段约束]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;[COMMENT &apos;字段注释&apos;]&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;字段名2 数据类型 &lt;/span&gt;&lt;span&gt;[字段约束]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;[COMMENT &apos;字段注释&apos;]&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[表级约束]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;[ENGINE=存储引擎]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;[DEFAULT CHARSET=字符集]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;[COLLATE=校验规则]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;[COMMENT=&apos;表注释&apos;]&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;修改表&lt;a href=&quot;#修改表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;核心作用：修改表的字段、约束、属性，大表修改需在业务低峰期执行，避免锁表影响业务。&lt;/p&gt;







































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;操作场景&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;SQL 语句&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;注意事项&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;新增字段&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;ALTER TABLE user ADD COLUMN address VARCHAR(200) NOT NULL DEFAULT ” COMMENT ‘地址’ AFTER email;&lt;/td&gt;&lt;td&gt;AFTER 指定字段位置，FIRST 放在首位；不指定默认追加到表末尾&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;批量新增字段&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;ALTER TABLE user ADD COLUMN province VARCHAR(50) COMMENT ‘省份’ AFTER address, ADD COLUMN city VARCHAR(50) COMMENT ‘城市’ AFTER province;&lt;/td&gt;&lt;td&gt;一次修改完成，避免多次 ALTER 大表&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;修改字段类型 / 约束&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;ALTER TABLE user MODIFY COLUMN address VARCHAR(300) DEFAULT ” COMMENT ‘详细地址’;&lt;/td&gt;&lt;td&gt;仅修改属性，不能重命名字段；修改类型需兼容原有数据，避免数据截断&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;重命名字段&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;ALTER TABLE user RENAME COLUMN address TO full_address;&lt;/td&gt;&lt;td&gt;MySQL 8.0+ 支持；5.7 版本需用 CHANGE 语法&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;5.7 兼容重命名字段&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;ALTER TABLE user CHANGE COLUMN address full_address VARCHAR(300) DEFAULT ” COMMENT ‘详细地址’;&lt;/td&gt;&lt;td&gt;CHANGE 必须重写完整的字段类型和属性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;删除字段&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;ALTER TABLE user DROP COLUMN full_address;&lt;/td&gt;&lt;td&gt;高危操作，删除后数据不可恢复，执行前必须备份&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;表属性全局修改&lt;a href=&quot;#表属性全局修改&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 1. 重命名表（两种写法）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 写法1：推荐，原子操作&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ALTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; user RENAME &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; user_info;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 写法2：兼容旧版本&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;RENAME &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; user &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; user_info;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 2. 修改表的存储引擎（大表慎用，会锁表全表重建）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ALTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt;&lt;span&gt; user ENGINE&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;InnoDB;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 3. 修改表的字符集与校验规则（同步修改字段字符集）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ALTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; user CONVERT &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;CHARACTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SET&lt;/span&gt;&lt;span&gt; utf8mb4 &lt;/span&gt;&lt;span&gt;COLLATE&lt;/span&gt;&lt;span&gt; utf8mb4_0900_ai_ci;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 4. 修改表注释&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ALTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt;&lt;span&gt; user COMMENT&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&apos;用户基础信息表&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 5. 修改自增主键的起始值（只能往大调，不能小于当前最大id）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ALTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt;&lt;span&gt; user AUTO_INCREMENT&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;1000&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 1. 重命名表（两种写法）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 写法1：推荐，原子操作&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ALTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; user RENAME &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; user_info;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 写法2：兼容旧版本&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;RENAME &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; user &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; user_info;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 2. 修改表的存储引擎（大表慎用，会锁表全表重建）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ALTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt;&lt;span&gt; user ENGINE&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;InnoDB;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 3. 修改表的字符集与校验规则（同步修改字段字符集）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ALTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt; user CONVERT &lt;/span&gt;&lt;span&gt;TO&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;CHARACTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SET&lt;/span&gt;&lt;span&gt; utf8mb4 &lt;/span&gt;&lt;span&gt;COLLATE&lt;/span&gt;&lt;span&gt; utf8mb4_0900_ai_ci;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 4. 修改表注释&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ALTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt;&lt;span&gt; user COMMENT&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&apos;用户基础信息表&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-- 5. 修改自增主键的起始值（只能往大调，不能小于当前最大id）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ALTER&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TABLE&lt;/span&gt;&lt;span&gt;&lt;span&gt; user AUTO_INCREMENT&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;1000&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;表的删除与清空&lt;a href=&quot;#表的删除与清空&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;














































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;特性&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;DROP TABLE&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;TRUNCATE TABLE&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;DELETE FROM 表名&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;操作类型&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;DDL（数据定义语言）&lt;/td&gt;&lt;td&gt;DDL&lt;/td&gt;&lt;td&gt;DML（数据操纵语言）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;执行效果&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;删除整个表（结构 + 数据 + 索引）&lt;/td&gt;&lt;td&gt;清空全表数据，保留结构&lt;/td&gt;&lt;td&gt;按条件删除数据，无 WHERE 则清空全表&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;事务回滚&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;不可回滚&lt;/td&gt;&lt;td&gt;不可回滚&lt;/td&gt;&lt;td&gt;可回滚（需开启事务）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;自增主键&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;彻底删除&lt;/td&gt;&lt;td&gt;重置为初始值&lt;/td&gt;&lt;td&gt;不重置，继续递增&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;执行速度&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;极快&lt;/td&gt;&lt;td&gt;极快（大数据量远优于 DELETE）&lt;/td&gt;&lt;td&gt;逐行删除，大数据量极慢&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;锁机制&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;元数据锁&lt;/td&gt;&lt;td&gt;元数据锁&lt;/td&gt;&lt;td&gt;行锁（InnoDB），无 WHERE 会触发表锁&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>数据库的安装和配置</title><link>https://umami.eu.cc/posts/database-function/</link><guid isPermaLink="true">https://umami.eu.cc/posts/database-function/</guid><description>主要介绍数据库的作用以及MySQL的选择安装和配置</description><pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;原生的文件系统在当前&lt;code&gt;互联网高并发&lt;/code&gt;场景下，&lt;code&gt;检索效率极低&lt;/code&gt;，&lt;code&gt;无法避免的数据一致性&lt;/code&gt;，&lt;code&gt;发生故障很容易丢失数据&lt;/code&gt;，导致研发成本变得极高。数据库则是&lt;code&gt;基于文件系统&lt;/code&gt;来存储数据文件，并很好的解决文件系统的弊端。&lt;/p&gt;
&lt;p&gt;当然对于比如图片、视频、音频等&lt;code&gt;大体积非结构化数据&lt;/code&gt;依然适合用文件系统 / 对象存储存放，而这些文件的元数据（归属用户、上传时间、访问权限等），依然会存放在数据库中，二者配合使用，才是企业级系统的最优方案。&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;安装 MySQL&lt;a href=&quot;#安装-mysql&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;以 &lt;code&gt;8.0.45&lt;/code&gt; 版本为例（其他版本的安装过程是类似的），下载 &lt;a href=&quot;https://dev.mysql.com/downloads/installer/&quot; target=&quot;_blank&quot;&gt;MySQL 安装包（.msi）&lt;/a&gt;，双击开始安装。
&lt;img loading=&quot;lazy&quot; width=&quot;1120&quot; height=&quot;771&quot; src=&quot;/_astro/dbdowndold.CJ87R7xX_Zqeo9S.webp&quot; srcset=&quot;/_astro/dbdowndold.CJ87R7xX_Z1T3uxN.webp 640w, /_astro/dbdowndold.CJ87R7xX_Zhig4F.webp 750w, /_astro/dbdowndold.CJ87R7xX_1VcseI.webp 828w, /_astro/dbdowndold.CJ87R7xX_Z2g7avH.webp 1080w, /_astro/dbdowndold.CJ87R7xX_Zqeo9S.webp 1120w&quot; /&gt;&lt;/p&gt;&lt;p&gt;勾选自定义 &lt;code&gt;custom&lt;/code&gt;，然后点击 Next：
&lt;img loading=&quot;lazy&quot; width=&quot;784&quot; height=&quot;591&quot; src=&quot;/_astro/dbpeiz1.DAHd2JcH_Z28LqC9.webp&quot; srcset=&quot;/_astro/dbpeiz1.DAHd2JcH_23MDHR.webp 640w, /_astro/dbpeiz1.DAHd2JcH_1jqTqT.webp 750w, /_astro/dbpeiz1.DAHd2JcH_Z28LqC9.webp 784w&quot; /&gt;&lt;/p&gt;&lt;p&gt;在组件列表里逐层展开，勾选 &lt;code&gt;MySQL Server 8.0.45 - X64&lt;/code&gt;，点击中的箭头，将他添加到右侧的窗口里：
&lt;img loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;593&quot; src=&quot;/_astro/dbpeiz2.CAGTCieS_Z2q7I12.webp&quot; srcset=&quot;/_astro/dbpeiz2.CAGTCieS_14rvQ8.webp 640w, /_astro/dbpeiz2.CAGTCieS_k5Lza.webp 750w, /_astro/dbpeiz2.CAGTCieS_Z2q7I12.webp 786w&quot; /&gt;&lt;/p&gt;&lt;p&gt;鼠标选中 &lt;code&gt;MySQL Server 8.0.41=5 - x64&lt;/code&gt;，点击 &lt;code&gt;Advanced Options&lt;/code&gt; ，将 MySQL 的安装路径改为其他盘（非系统盘）：
&lt;img loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;281&quot; src=&quot;/_astro/dbpeiz3.MFeQfMW4_2nvVGg.webp&quot; srcset=&quot;/_astro/dbpeiz3.MFeQfMW4_2nvVGg.webp 504w&quot; /&gt;&lt;/p&gt;&lt;p&gt;最简单的路径修改方法，可以直接&lt;code&gt;将 C 改成 D&lt;/code&gt;，然后点击 OK，在点击上图里的 Next。&lt;/p&gt;&lt;p&gt;点击 &lt;code&gt;Execute&lt;/code&gt; 按钮，系统开始安装 &lt;code&gt;MySQL 8.0.45&lt;/code&gt;，安装过程中会显示进度条，耐心等待安装完成：
&lt;img loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;593&quot; src=&quot;/_astro/dbpeiz4.Wi40rFdR_EUw0d.webp&quot; srcset=&quot;/_astro/dbpeiz4.Wi40rFdR_ZTGmVy.webp 640w, /_astro/dbpeiz4.Wi40rFdR_Z1E37dw.webp 750w, /_astro/dbpeiz4.Wi40rFdR_EUw0d.webp 786w&quot; /&gt;&lt;/p&gt;&lt;p&gt;安装完成后(✅)，连续点击&lt;code&gt;两次&lt;/code&gt; Next，进入到下面的界面(&lt;code&gt;默认即可&lt;/code&gt;)，不要动它，点击 Next：
&lt;img loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;593&quot; src=&quot;/_astro/dbpeiz5.48fwUD-L_Z1dBFLq.webp&quot; srcset=&quot;/_astro/dbpeiz5.48fwUD-L_2gWy5J.webp 640w, /_astro/dbpeiz5.48fwUD-L_1wANNL.webp 750w, /_astro/dbpeiz5.48fwUD-L_Z1dBFLq.webp 786w&quot; /&gt;&lt;/p&gt;&lt;p&gt;官方推荐第一种，我们就用第一种，直接点击 Next：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;注意，如果后面用到数据库图形化工具的话，例如 &lt;code&gt;navicat&lt;/code&gt;，如果 navicat 版本太老，会产生数据库连接错误，这里建议选择第二个密码选项。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;593&quot; src=&quot;/_astro/dbpeiz6.D9RK4umb_2jmmlJ.webp&quot; srcset=&quot;/_astro/dbpeiz6.D9RK4umb_IJsoX.webp 640w, /_astro/dbpeiz6.D9RK4umb_ZBgR0.webp 750w, /_astro/dbpeiz6.D9RK4umb_2jmmlJ.webp 786w&quot; /&gt;&lt;/p&gt;&lt;p&gt;在 &lt;code&gt;Password&lt;/code&gt; 和 &lt;code&gt;Repeat Password&lt;/code&gt; 输入框中，输入自定义的数据库密码，密码需为&lt;code&gt;字母、数字和特殊字符&lt;/code&gt;，长度不少于 8 位，输入完成后，点击 Next：
&lt;img loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;593&quot; src=&quot;/_astro/dbpeiz7.BdBqW2hK_Z6BoFr.webp&quot; srcset=&quot;/_astro/dbpeiz7.BdBqW2hK_Z1GeiCd.webp 640w, /_astro/dbpeiz7.BdBqW2hK_Z2qA2Tb.webp 750w, /_astro/dbpeiz7.BdBqW2hK_Z6BoFr.webp 786w&quot; /&gt;&lt;/p&gt;&lt;p&gt;之后一直点击 &lt;code&gt;Next&lt;/code&gt; 或 &lt;code&gt;Execute&lt;/code&gt; 即可，都是默认安装配置，当看到该界面时，证明已安装完毕：
&lt;img loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;593&quot; src=&quot;/_astro/dbpeiz8.BASAnyJc_1altS7.webp&quot; srcset=&quot;/_astro/dbpeiz8.BASAnyJc_Zpgp3E.webp 640w, /_astro/dbpeiz8.BASAnyJc_Z19C9kC.webp 750w, /_astro/dbpeiz8.BASAnyJc_1altS7.webp 786w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;配置 MySQL 的环境变量&lt;a href=&quot;#配置-mysql-的环境变量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;右键点击&lt;code&gt;此电脑&lt;/code&gt;，选择&lt;code&gt;属性&lt;/code&gt;：
&lt;img loading=&quot;lazy&quot; width=&quot;327&quot; height=&quot;307&quot; src=&quot;/_astro/huanjbianl1.U4aXT6rg_2c7DzU.webp&quot; srcset=&quot;/_astro/huanjbianl1.U4aXT6rg_2c7DzU.webp 327w&quot; /&gt;&lt;/p&gt;&lt;p&gt;在弹出的窗口中点击&lt;code&gt;高级系统设置&lt;/code&gt;：
&lt;img loading=&quot;lazy&quot; width=&quot;753&quot; height=&quot;427&quot; src=&quot;/_astro/huanjbianl2.DbljmYG3_12gfMx.webp&quot; srcset=&quot;/_astro/huanjbianl2.DbljmYG3_Z2o4d4Q.webp 640w, /_astro/huanjbianl2.DbljmYG3_Z21TsQI.webp 750w, /_astro/huanjbianl2.DbljmYG3_12gfMx.webp 753w&quot; /&gt;&lt;/p&gt;&lt;p&gt;在系统属性窗口中，点击&lt;code&gt;环境变量&lt;/code&gt;按钮：
&lt;img loading=&quot;lazy&quot; width=&quot;477&quot; height=&quot;597&quot; src=&quot;/_astro/huanjbianl3.BuIYbLGS_Z2pBwty.webp&quot; srcset=&quot;/_astro/huanjbianl3.BuIYbLGS_Z2pBwty.webp 477w&quot; /&gt;&lt;/p&gt;&lt;p&gt;在&lt;code&gt;系统变量&lt;/code&gt;列表中，找到 &lt;code&gt;Path&lt;/code&gt; 变量，点击&lt;code&gt;编辑&lt;/code&gt;：
&lt;img loading=&quot;lazy&quot; width=&quot;618&quot; height=&quot;659&quot; src=&quot;/_astro/huanjbianl4.qWf8id7-_13VvTH.webp&quot; srcset=&quot;/_astro/huanjbianl4.qWf8id7-_13VvTH.webp 618w&quot; /&gt;&lt;/p&gt;&lt;p&gt;点击&lt;code&gt;新建&lt;/code&gt;，将 MySQL 的安装路径下的 &lt;code&gt;bin&lt;/code&gt; 目录（例如：&lt;code&gt;D:\MySQL\MySQL Server 8.0\bin&lt;/code&gt;）粘贴进去，点击&lt;code&gt;确定&lt;/code&gt;保存设置：
&lt;img loading=&quot;lazy&quot; width=&quot;527&quot; height=&quot;562&quot; src=&quot;/_astro/huanjbianl5.D7CuiVzc_ZfqzfI.webp&quot; srcset=&quot;/_astro/huanjbianl5.D7CuiVzc_ZfqzfI.webp 527w&quot; /&gt;&lt;/p&gt;&lt;p&gt;依次点击确定，&lt;code&gt;环境变量&lt;/code&gt;就配置好了。&lt;/p&gt;&lt;p&gt;最后验证一下 MySQL 是否安装成功。按下键盘上的 &lt;code&gt;Win+R&lt;/code&gt; 组合键（Windows 系统）或打开终端（Linux 系统），输入 &lt;code&gt;mysql -u root -p&lt;/code&gt; 并回车。此时会提示&lt;code&gt;输入密码&lt;/code&gt;，输入之前设置的数据库密码，然后回车：
&lt;img loading=&quot;lazy&quot; width=&quot;1113&quot; height=&quot;626&quot; src=&quot;/_astro/huanjbianl6.CZkakc32_Z6ioUj.webp&quot; srcset=&quot;/_astro/huanjbianl6.CZkakc32_1PsPYR.webp 640w, /_astro/huanjbianl6.CZkakc32_Tdrtb.webp 750w, /_astro/huanjbianl6.CZkakc32_1eAij3.webp 828w, /_astro/huanjbianl6.CZkakc32_Z2216q8.webp 1080w, /_astro/huanjbianl6.CZkakc32_Z6ioUj.webp 1113w&quot; /&gt;&lt;/p&gt;&lt;p&gt;如果成功进入 MySQL 命令行界面，并显示 &lt;code&gt;Welcome to the MySQL monitor&lt;/code&gt; 字样，说明 MySQL 8.0.45 安装成功。你可以开始使用 &lt;code&gt;CREATE DATABASE&lt;/code&gt; 等命令创建数据库，进行&lt;code&gt;数据管理操作&lt;/code&gt;了。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;参考：&lt;a href=&quot;https://developer.aliyun.com/article/1705141&quot; target=&quot;_blank&quot;&gt;【2026最新】MySQL8下载安装全流程教程（附安装包+图文步骤）&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;图形化界面下载&lt;a href=&quot;#图形化界面下载&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;参考 &lt;a href=&quot;https://www.bilibili.com/video/BV1fSwvzXE1H/?spm_id_from=333.337.search-card.all.click&amp;amp;vd_source=8abceb502969e7de8c2eb9bc66a1d6e3&quot; target=&quot;_blank&quot;&gt;Navicat17安装教程（免费）,无需一键三连获取，评论区置顶免费获取&lt;/a&gt;即可破解安装。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;除了 Navicat，也推荐使用 &lt;code&gt;SQLyog&lt;/code&gt; 作为工具使用。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;</content:encoded></item><item><title>常见控件与功能点测试要点</title><link>https://umami.eu.cc/posts/control-function-test/</link><guid isPermaLink="true">https://umami.eu.cc/posts/control-function-test/</guid><description>软件测试基本理论金融项目实战</description><pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;控件测试核心原则：验证控件显示符合设计要求、功能正常可用、交互逻辑合理、异常场景可正常响应，同时兼顾兼容性（不同设备、浏览器）和易用性。以下梳理各类常见控件及对应功能点的核心测试要点。&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;一、基础输入类控件&lt;a href=&quot;#一基础输入类控件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 单行输入框（Text Input）&lt;a href=&quot;#1-单行输入框text-input&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;显示测试：默认提示文本（placeholder）清晰、位置正确，输入后提示文本正常消失；输入框尺寸、样式、边框、颜色符合设计，禁用/只读状态显示正常（灰化、无法输入）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;功能测试：正常输入（数字、字母、符号、中文）可正确显示，光标位置正常；输入长度验证（达到最大/最小长度时，是否禁止输入、提示正确）；输入限制验证（如仅允许数字，输入字母/符号是否拦截、提示）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互测试：聚焦/失焦状态切换正常（光标显示/隐藏、边框样式变化）；快捷键支持（Ctrl+C/V、Backspace、Delete）正常；输入内容可正常删除、修改。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;异常测试：输入特殊字符（空格、换行、特殊符号如@#$）、超长文本（超过数据库存储长度），观察是否有合理提示；复制粘贴特殊内容（如富文本、空白字符），验证显示和存储是否正常。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 多行输入框（Textarea）&lt;a href=&quot;#2-多行输入框textarea&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;显示测试：默认提示文本正常，可自动换行/强制不换行（符合设计）；输入框高度、宽度符合要求，滚动条（当内容超出时）显示正常、可正常拖动。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;功能测试：支持多行输入、换行（Enter键生效），输入长度（最大/最小）验证；禁止输入的内容（如特殊符号）拦截正常；输入内容保留换行格式，提交后后端存储与前端显示一致。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互测试：聚焦时光标定位正确，失焦后内容保留；拖动滚动条可查看全部内容，缩放输入框（若支持）后显示正常；快捷键（Ctrl+Enter提交、Ctrl+A全选）正常生效。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 密码输入框（Password Input）&lt;a href=&quot;#3-密码输入框password-input&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;显示测试：输入内容默认隐藏（以星号/圆点显示），显示/隐藏密码按钮（若有）样式正常，点击后可切换显示状态。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;功能测试：输入内容长度、复杂度（如要求字母+数字+符号）验证，不符合时提示正确；密码复制、粘贴功能（若禁止，需拦截并提示）；输入错误密码（如登录场景）时，提示信息准确。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互测试：聚焦/失焦状态正常，光标显示正常；输入过程中无明文泄露，切换显示/隐藏按钮后，内容显示切换正常。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;二、选择类控件&lt;a href=&quot;#二选择类控件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 复选框（Checkbox）&lt;a href=&quot;#1-复选框checkbox&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;显示测试：未选中、选中、半选中（如父级复选框）、禁用状态的样式符合设计；复选框与文本对齐（垂直/水平居中），多选项排列整齐。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;功能测试：单个复选框点击可切换选中/未选中状态，状态同步显示；全选/反选功能（若有）正常，父级复选框与子级复选框联动正确（父选则子全选，子有未选则父半选）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互测试：点击复选框本身或关联文本，均可触发状态切换；禁用状态下无法点击，样式灰化；多选后提交，选中结果可正确传递给后端。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;异常测试：快速多次点击复选框，状态无错乱；选中后刷新页面，验证状态是否保留（根据需求）；子级复选框全部删除后，父级状态是否重置。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 单选框（Radio）&lt;a href=&quot;#2-单选框radio&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;显示测试：未选中、选中、禁用状态样式符合设计；同组单选框排列整齐，文本对齐正确；默认选中项（若有）显示正常。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;功能测试：同组内只能选中一个选项，选中后其他选项自动取消；无默认选中时，初始状态均为未选中；提交后，选中的选项值可正确传递。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互测试：点击单选框本身或关联文本，均可触发选中状态；禁用状态下无法点击，样式灰化；切换选中项时，状态切换流畅，无卡顿。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;异常测试：快速切换选中项，状态无错乱；刷新页面后，选中状态是否保留（根据需求）；同组单选框无关联（可多选），需排查异常。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 下拉选择框（Select）&lt;a href=&quot;#3-下拉选择框select&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;显示测试：默认显示文本（如“请选择”）清晰，下拉箭头样式正常；下拉菜单的尺寸、样式、位置（不超出屏幕、不遮挡其他控件）符合设计；禁用状态样式灰化，无法点击。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;功能测试：点击下拉箭头可展开/收起菜单，展开后可正常滚动查看全部选项；选中选项后，下拉框显示对应文本，选项值正确传递；支持搜索（若有），搜索关键词可匹配对应选项，无匹配时提示正确。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互测试：展开菜单后，点击菜单外区域可收起；键盘上下键可切换选项，Enter键选中；多选下拉（若有），选中多个选项后，显示格式（如逗号分隔）符合设计，可删除单个选中项。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;异常测试：下拉选项为空时，提示文本正确；快速点击展开/收起，无卡顿、无菜单异常（如无法收起）；搜索时输入特殊字符，无报错，提示合理。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. 日期选择器（Date Picker）&lt;a href=&quot;#4-日期选择器date-picker&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;显示测试：默认显示格式（如YYYY-MM-DD）符合设计；日历弹窗样式、尺寸、位置正常，年月切换按钮、今天/清除按钮样式清晰；禁用日期（如过去日期、未来日期）灰化显示，不可选中。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;功能测试：点击输入框可弹出日历，选中日期后，输入框显示正确格式的日期；年月切换（上一月/下一月、直接选择年月）正常；今天按钮可快速选中当前日期，清除按钮可清空输入框；日期范围选择（若有），开始日期≤结束日期，超出范围提示正确。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互测试：日历弹窗可正常关闭（点击外部、关闭按钮）；输入框可手动输入日期（格式正确则生效，格式错误则提示）；键盘操作（如Enter确认、Esc关闭）正常。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;异常测试：手动输入非法日期（如2024-02-30），提示错误；选中禁用日期，无法确认；日期选择后，刷新页面，状态是否保留（根据需求）；跨年月选择时，无卡顿、无日期错乱。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;三、操作类控件&lt;a href=&quot;#三操作类控件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 按钮（Button）&lt;a href=&quot;#1-按钮button&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;显示测试：按钮尺寸、样式、颜色、文本（字体、大小、对齐）符合设计；默认状态、 hover状态、点击状态、禁用状态的样式区分明显；按钮上的图标（若有）与文本对齐正确。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;功能测试：点击按钮可触发对应操作（如提交、重置、跳转），操作执行正确；禁用状态下，点击无响应，样式灰化；按钮点击后有加载状态（若有），加载完成后恢复正常，操作结果正确。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互测试：点击按钮无卡顿、无重复触发（如多次快速点击，仅执行一次操作）；支持快捷键（如Enter、Space）触发按钮操作；按钮不可点击区域（如边缘空白），点击无响应。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;异常测试：按钮点击后，后端接口异常时，有合理提示（如“操作失败，请重试”）；按钮长期点击（长按），无异常报错；不同屏幕尺寸下，按钮样式、点击区域正常。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 开关控件（Switch）&lt;a href=&quot;#2-开关控件switch&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;显示测试：开启、关闭状态的样式（颜色、滑块位置）符合设计；开关上的文本（如“开启/关闭”）清晰、对齐正确；禁用状态样式灰化，无法操作。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;功能测试：点击开关可切换开启/关闭状态，状态同步显示；开启/关闭后，对应功能（如权限控制、功能启停）正常生效；默认状态（开启/关闭）符合需求。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互测试：点击开关任意位置均可切换状态，无卡顿；禁用状态下，点击无响应；切换状态后，有状态变化提示（如Toast）（若有），提示准确。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;异常测试：快速切换开关状态，无状态错乱；刷新页面后，状态是否保留（根据需求）；开关切换后，后端数据同步正确，无数据不一致。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 滑块（Slider）&lt;a href=&quot;#3-滑块slider&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;显示测试：滑块轨道、滑块按钮样式符合设计；滑块的最小值、最大值、当前值显示（若有）清晰、位置正确；禁用状态下，轨道和滑块灰化，无法操作。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;功能测试：拖动滑块可调整数值，数值在最小值和最大值之间，无超出；拖动过程中，当前值实时更新（若有）；点击轨道任意位置，滑块可跳至对应位置，数值正确。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互测试：拖动滑块无卡顿、无偏移；滑块拖动到边界时，无法继续拖动；支持精确调整（如键盘左右键微调）（若有），微调步长符合需求。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;异常测试：快速拖动滑块，数值无错乱；刷新页面后，滑块位置和数值是否保留（根据需求）；滑块禁用时，拖动无响应，数值不变化。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;四、展示类控件&lt;a href=&quot;#四展示类控件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 列表（List）&lt;a href=&quot;#1-列表list&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;显示测试：列表样式（边框、间距、字体、颜色）符合设计；列表项排列整齐，内容（文本、图标、按钮）对齐正确；空列表时，提示文本（如“暂无数据”）清晰、位置居中。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;功能测试：列表数据加载正常（分页加载、滚动加载），数据与后端一致；列表项点击可触发对应操作（如跳转、详情）；列表排序（如按时间、按名称）、筛选（如按条件过滤）功能正常，结果准确。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互测试：列表滚动流畅，无卡顿、无数据错乱；列表项hover状态样式正常；分页列表（若有），页码切换、首页/尾页/上一页/下一页按钮功能正常，页码显示正确。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;异常测试：数据量过大时，列表加载无报错、滚动流畅；筛选条件输入非法字符，提示正确；列表项删除后，列表数据实时更新，无残留。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 表格（Table）&lt;a href=&quot;#2-表格table&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;显示测试：表格边框、表头样式、行高、列宽符合设计；表头文本居中、清晰，表格内容（文本、数字、按钮）对齐正确；奇偶行样式区分（若有）明显；空表格时，提示文本正常。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;功能测试：表格数据加载正常，与后端一致；表头排序（点击表头切换升序/降序）正常，排序图标显示正确；表格筛选（如表头筛选、搜索框筛选）功能正常，结果准确；分页（若有）功能正常，页码切换、数据加载正确。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互测试：表格横向/纵向滚动流畅，无卡顿；表格行hover状态样式正常；表格单元格点击（若有交互）可触发对应操作；表头固定（若有），滚动时表头不跟随滚动，显示正常。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;异常测试：数据量过大、列数过多时，表格显示无错乱、滚动流畅；筛选条件为空/非法，提示正确；表格单元格编辑（若有），编辑后数据可正确提交、显示。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 弹窗（Modal）&lt;a href=&quot;#3-弹窗modal&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;显示测试：弹窗尺寸、样式、边框、标题符合设计；弹窗遮罩（若有）样式正常，遮罩层级高于背景、低于弹窗；弹窗内容（文本、控件、按钮）对齐正确，显示清晰；弹窗居中显示（不同屏幕尺寸下）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;功能测试：触发弹窗（如点击按钮）后，弹窗正常弹出；弹窗关闭（点击关闭按钮、遮罩、Esc键）后，弹窗消失，遮罩移除；弹窗内控件（如输入框、按钮）功能正常，与弹窗外控件无冲突。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交互测试：弹窗弹出后，背景不可操作（若有需求）；弹窗可拖动（若有），拖动后位置正常；弹窗内滚动条（若有）滚动流畅；多次触发/关闭弹窗，无异常（如弹窗重叠、无法关闭）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;异常测试：弹窗弹出时，页面滚动（若禁止），无滚动效果；弹窗内容过多时，显示正常、无溢出；弹窗关闭后，弹窗内输入的内容（若有）是否保留（根据需求）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;五、通用功能点补充测试要点&lt;a href=&quot;#五通用功能点补充测试要点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;兼容性测试：所有控件在不同浏览器（Chrome、Firefox、Edge等）、不同设备（PC、手机、平板）、不同屏幕尺寸下，显示和功能均正常。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;易用性测试：控件交互逻辑符合用户习惯（如按钮点击反馈明显、输入框提示清晰）；控件操作便捷，无繁琐步骤；错误提示清晰、易懂，引导用户修正。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;性能测试：控件加载速度快（无卡顿）；多次操作（如点击、输入、切换）后，无内存泄漏、无报错；大数据量下（如列表、表格），加载和操作流畅。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;accessibility测试：控件支持键盘操作（如Tab切换焦点）；屏幕阅读器可正常识别控件内容（如按钮文本、输入框提示）；控件颜色对比度符合标准，便于识别。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>金融项目实战(一)</title><link>https://umami.eu.cc/posts/financial-project-practice-1/</link><guid isPermaLink="true">https://umami.eu.cc/posts/financial-project-practice-1/</guid><description>软件测试基本理论金融项目实战</description><pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;一个完整的测试有哪些阶段组成？&lt;/p&gt;
&lt;p&gt;从测试计划开始，经历需求分析、测试设计、测试执行，到最后的测试评估。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Alpha 测试 和 Beta 测试的区别？&lt;/p&gt;
&lt;p&gt;两者都是验收测试，但 Alpha 测试一般会先于 Beta 测试，可以认为 Alpha 测试是内测，Beta 测试是公测。其中 Alpha 测试是自已搭建好环境，由自已邀请客户或第三方来到公司进行封闭式测试；而 Beta 测试则是将产品投入生产环境中，由市场海量终端用户进行公开验收测试。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;测试计划主要是什么内容？测试报告主要是什么内容？&lt;/p&gt;
&lt;p&gt;测试计划主要是明确测试范围与目标，人员职责与测试排期，测试资源环境以及风险评估，提前规划好，保证测试有序进行。测试报告则是汇总整体的测试进度执行情况，用例的通过率以及缺陷明细，所遗留的问题，最终得出整体测试质量评估以及上线的建议。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;测试用例包含哪些内容，平时你编写用例都有哪些方法？&lt;/p&gt;
&lt;p&gt;用例一般包含用例的ID，测试的模块，用例的标题，前置条件，测试的步骤、优先级以及输入的数据，最终能得出的预期结果。平时常用的用例设计方法是等价类、边界值、场景法，也有去用过因果图判定表。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一条软件缺陷（Bug）包含了哪些内容？（越全越好）&lt;/p&gt;
&lt;p&gt;主要是清晰的标题，前置的例如环境优先级严重程度等基础信息，复现的步骤，所能得出的预期结果与实际得出的结果，再配上相应的附件、问题截图。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;请简单描述 Bug 的管理流程？&lt;/p&gt;
&lt;p&gt;由测试人员确认好后提交这个 Bug，经负责人审核后分配到对应的模块开发负责人手中，将其修复后合入测试版本中，由测试人员对其以及关联的功能进行回归测试。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;缺陷的严重等级一般分为几级，请分别举例描述。&lt;/p&gt;
&lt;p&gt;一般由四个级别，致命是核心主业务出现问题，导致系统瘫痪，数据丢失。致命则是核心功能受损，关键的数据展示异常。一般是最常见的，都是些不影响主业务运行的次要功能，一些文案错误，UI布局错位。而轻微与功能使用关系不大，主要是一些体验上的优化，细节规范问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;测试结束的标准是什么？&lt;/p&gt;
&lt;p&gt;测试的覆盖率、执行率以及 Bug 的遗留率都达到质量标准。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;简述回归测试和冒烟测试？&lt;/p&gt;
&lt;p&gt;回归测试是测试对被修复的缺陷是否能完美解决，冒烟测试则是进行测试前对主业务进行一次测试，这次测试并不用保证完美通过，针对一些文案错误，UI布局等不影响业务的可以报告上去。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如何做好测试这份工作，简述一下你的看法？（根据测试各阶段来讲）&lt;/p&gt;
&lt;p&gt;分析好需求文档中的需求，确保编写测试用例时结合设计方法能覆盖全测试点，尽可能将用户的输入数据和对应的场景进行覆盖。对于测试时出现的 Bug 也要做好实时的跟踪，最终去编写对应的测试报告去评估测试的质量以及是否上线。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;进入项目后获得需求文档，首先要知道项目的目的以及主业务流程。&lt;/p&gt;</content:encoded></item><item><title>Linux相关命令</title><link>https://umami.eu.cc/posts/linux-mingling/</link><guid isPermaLink="true">https://umami.eu.cc/posts/linux-mingling/</guid><description>一些Linux常见命令</description><pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;系统基础与信息查询&lt;a href=&quot;#系统基础与信息查询&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;用于查看系统状态、内核信息、运行时间等基础信息。&lt;/p&gt;












































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;命令&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心作用&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;高频用法与示例&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;uname&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;查看系统内核信息&lt;/td&gt;&lt;td&gt;&lt;code&gt;uname -a&lt;/code&gt; 查看全部系统信息；&lt;code&gt;uname -r&lt;/code&gt; 查看内核版本&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;hostname&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;查看 / 设置主机名&lt;/td&gt;&lt;td&gt;&lt;code&gt;hostname&lt;/code&gt; 查看当前主机名；&lt;code&gt;hostnamectl set-hostname new-name&lt;/code&gt; 永久修改主机名（systemd 系统）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;date&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;查看 / 设置系统时间&lt;/td&gt;&lt;td&gt;&lt;code&gt;date&lt;/code&gt; 查看当前时间；&lt;code&gt;date -s &quot;&quot;2026-04-04 12:00:00&quot;&quot;&lt;/code&gt; 设置系统时间&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;uptime&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;查看系统运行时长与负载&lt;/td&gt;&lt;td&gt;&lt;code&gt;uptime&lt;/code&gt;显示开机时长、登录用户数、1/5/15 分钟系统平均负载&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;who/w&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;查看当前登录用户&lt;/td&gt;&lt;td&gt;&lt;code&gt;who&lt;/code&gt; 简单显示登录用户；&lt;code&gt;w&lt;/code&gt; 详细显示用户及正在执行的操作&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;dmesg&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;查看系统内核开机日志&lt;/td&gt;&lt;td&gt;&lt;code&gt;grep error&lt;/code&gt; 排查开机硬件 / 系统错误&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;history&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;查看命令执行历史&lt;/td&gt;&lt;td&gt;&lt;code&gt;history&lt;/code&gt; 查看全部历史；&lt;code&gt;!!&lt;/code&gt; 执行上一条命令；&lt;code&gt;!n&lt;/code&gt; 执行第 n 条历史命令；&lt;code&gt;history -c&lt;/code&gt; 清空历史&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;文件与目录操作（最高频核心）&lt;a href=&quot;#文件与目录操作最高频核心&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Linux 一切皆文件，该类命令是日常操作的基础。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;路径与目录导航&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pwd&lt;/span&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;# 显示当前工作目录的绝对路径&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;               &lt;/span&gt;&lt;span&gt;# 切换到根目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~&lt;/span&gt;&lt;span&gt;               &lt;/span&gt;&lt;span&gt;# 切换到当前用户家目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;..&lt;/span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt;# 切换到上一级目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;               &lt;/span&gt;&lt;span&gt;# 切换到上一次所在的目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/usr/local&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;# 切换到指定绝对路径&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;目录与文件创建 / 删除&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mkdir&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;# 创建单级目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mkdir&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;a/b/c&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 递归创建多级目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;touch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 创建空文件，或修改文件时间戳&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;touch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;a.txt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;b.txt&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;# 批量创建空文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rmdir&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;# 删除空目录（仅能删空目录）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;# 删除文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-rf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test_dir&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 强制递归删除目录及所有内容（高危！严禁执行 rm -rf /）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;目录内容查看&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ls&lt;/span&gt;&lt;span&gt;                 &lt;/span&gt;&lt;span&gt;# 列出当前目录内容&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ls&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt;# 长格式显示（权限、所有者、大小、时间等，别名ll默认支持）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ls&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-lha&lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;# 显示所有文件（含隐藏文件）+ 人性化大小单位&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ls&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-lht&lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;# 按修改时间倒序排列&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;文件 / 目录复制与移动&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;# 复制文件到指定目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test_dir&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;# 递归复制目录（必须加-r）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mv&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new.txt&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;# 重命名文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mv&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp/&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;# 移动文件到指定目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;文件查找&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 语法：find [路径] [条件] [动作]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;find&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-name&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;test.txt&quot;&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 全局按文件名精确查找&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;find&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-name&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;*.log&quot;&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;# 当前目录查找所有.log结尾的文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;find&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-type&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;f&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-size&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+100M&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 查找当前目录大于100M的文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;find&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-mtime&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-7&lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;# 查找7天内修改过的文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;find&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-name&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;*.tmp&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-delete&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 查找并删除.tmp文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;链接创建&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ln&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-s&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/target/path&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/link/path&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;# 创建软链接（符号链接，类似Windows快捷方式）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ln&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/target/file&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/link/file&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;# 创建硬链接（仅限文件，不能跨分区）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;文件内容查看与编辑&lt;a href=&quot;#文件内容查看与编辑&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;用于查看日志、修改配置、文本过滤等核心场景。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;文件内容查看&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;# 查看小文件全部内容，-n 显示行号&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;more&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.log&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;# 分页查看大文件，向下翻页，q退出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;less&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.log&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;# 分页神器，支持上下翻页、/关键词搜索，q退出（大日志首选）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-20&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 查看文件前20行（默认10行）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tail&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-50&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 查看文件最后50行（默认10行）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tail&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-f&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.log&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 实时追踪文件新增内容（看日志必备）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;文本过滤与统计&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# grep 正则搜索过滤，高频核心&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;error&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.log&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;# 查找包含error的行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-i&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;error&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.log&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 忽略大小写匹配&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-v&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;info&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.log&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;# 反向匹配，排除含info的行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-n&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;root&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/passwd&lt;/span&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;# 显示匹配行的行号&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-rn&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;keyword&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 递归搜索目录下所有文件的关键词&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# wc 统计&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;wc&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;# 统计文件行数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;wc&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-w&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;# 统计单词数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ls&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;wc&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt;                    &lt;/span&gt;&lt;span&gt;# 统计当前目录文件数量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;vim/vi 文本编辑器&lt;/p&gt;
&lt;p&gt;Linux 系统标配编辑器，核心分为 3 种模式，高频操作如下：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;vim&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 打开/创建文件，默认进入【命令模式】&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;命令模式 → 插入模式：按 &lt;code&gt;i(光标前插入)、a(光标后插入)、o(下一行新建)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;插入模式 → 命令模式：按 &lt;code&gt;ESC&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;命令模式 → 底行模式：按 &lt;code&gt;:&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;底行模式高频操作：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:w&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;# 保存文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:q&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;# 退出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:wq&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;# 保存并退出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:q!&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;# 强制退出不保存&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;%s/old/new/g&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;# 全局替换old为new&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;命令模式高频操作：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dd&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 删除当前行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;yy&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 复制当前行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 粘贴&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;u&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 撤销上一步&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/关键词&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 向下搜索&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;?关键词 &lt;/span&gt;&lt;span&gt;# 向上搜索&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;权限管理&lt;a href=&quot;#权限管理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Linux 多用户权限核心，文件权限分为&lt;code&gt;所有者 (u)&lt;/code&gt;、&lt;code&gt;所属组 (g)&lt;/code&gt;、&lt;code&gt;其他人 (o)&lt;/code&gt;，权限对应：读 (r=4)、写 (w=2)、执行 (x=1)。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# chmod 修改文件/目录权限&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;chmod&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;755&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;# 数字法：所有者rwx(7)，组/其他人rx(5)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;chmod&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;644&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;# 常用文件权限：所有者rw，其他只读&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;chmod&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-R&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;755&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test_dir&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 递归修改目录下所有文件权限&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;chmod&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;u+x&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.sh&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;# 符号法：给所有者添加执行权限&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;chmod&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;o-w&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;# 给其他人移除写权限&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# chown 修改所有者和所属组&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;chown&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;user:group&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;# 修改文件所有者为user，所属组为group&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;chown&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-R&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx:nginx&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/data&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 递归修改目录所有者&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# chgrp 修改所属组&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;chgrp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;group&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# umask 查看/设置默认权限掩码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;umask&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;022&lt;/span&gt;&lt;span&gt;                  &lt;/span&gt;&lt;span&gt;# 新建文件默认644，目录默认755&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;进程管理&lt;a href=&quot;#进程管理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;用于排查服务状态、资源占用、进程启停。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 进程查看&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ps&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-ef&lt;/span&gt;&lt;span&gt;                     &lt;/span&gt;&lt;span&gt;# 查看全格式所有进程&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ps&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;aux&lt;/span&gt;&lt;span&gt;                     &lt;/span&gt;&lt;span&gt;# 查看所有进程，含CPU/内存占用&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ps&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;aux&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;# 过滤指定进程&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;top&lt;/span&gt;&lt;span&gt;                        &lt;/span&gt;&lt;span&gt;# 实时动态查看进程资源（任务管理器），P按CPU排序，M按内存排序，q退出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;htop&lt;/span&gt;&lt;span&gt;                       &lt;/span&gt;&lt;span&gt;# top增强版，界面更友好（需额外安装）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pstree&lt;/span&gt;&lt;span&gt;                     &lt;/span&gt;&lt;span&gt;# 树状显示进程父子关系&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 进程终止&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;kill&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1234&lt;/span&gt;&lt;span&gt;                  &lt;/span&gt;&lt;span&gt;# 正常终止PID为1234的进程（信号15）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;kill&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-9&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1234&lt;/span&gt;&lt;span&gt;               &lt;/span&gt;&lt;span&gt;# 强制杀死进程（信号9，慎用）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;killall&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt;# 按进程名终止所有相关进程&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 进程后台运行与优先级&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nohup&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;./test.sh&lt;/span&gt;&lt;span&gt; &amp;amp;          &lt;/span&gt;&lt;span&gt;# 后台运行脚本，关闭终端不终止，输出到nohup.out&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;jobs&lt;/span&gt;&lt;span&gt;                       &lt;/span&gt;&lt;span&gt;# 查看当前终端后台任务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;%1&lt;/span&gt;&lt;span&gt;                      &lt;/span&gt;&lt;span&gt;# 把1号后台任务调到前台&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;bg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;%1&lt;/span&gt;&lt;span&gt;                      &lt;/span&gt;&lt;span&gt;# 把暂停的任务放到后台继续运行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nice&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-n&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;./test.sh&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;# 启动时指定进程优先级（-20最高，19最低）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;renice&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-5&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1234&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;# 修改已运行进程的优先级&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;网络管理&lt;a href=&quot;#网络管理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;用于网络连通性排查、端口监听、接口测试、防火墙配置。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 网卡与IP配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;addr&lt;/span&gt;&lt;span&gt;                    &lt;/span&gt;&lt;span&gt;# 查看所有网卡IP地址（替代ifconfig）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;link&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;eth0&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;up/down&lt;/span&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;# 启用/禁用网卡&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;route&lt;/span&gt;&lt;span&gt;                   &lt;/span&gt;&lt;span&gt;# 查看系统路由表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ifconfig&lt;/span&gt;&lt;span&gt;                   &lt;/span&gt;&lt;span&gt;# 老版本网卡配置命令（需安装net-tools）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 连通性与链路排查&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ping&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;baidu.com&lt;/span&gt;&lt;span&gt;             &lt;/span&gt;&lt;span&gt;# 测试网络连通性&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ping&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-c&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.1.1&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 指定ping4次&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;traceroute&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;baidu.com&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;# 路由追踪，排查网络链路&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mtr&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;baidu.com&lt;/span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt;# 增强版路由追踪（结合ping+traceroute）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;telnet&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.1.1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 测试TCP端口连通性&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 端口与网络连接查看&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ss&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-tulnp&lt;/span&gt;&lt;span&gt;                  &lt;/span&gt;&lt;span&gt;# 查看所有监听的TCP/UDP端口，显示PID/进程名（netstat替代）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ss&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-tulnp&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;# 过滤指定端口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;netstat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-tulnp&lt;/span&gt;&lt;span&gt;             &lt;/span&gt;&lt;span&gt;# 传统端口查看命令（需net-tools）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 域名解析&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;host&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;baidu.com&lt;/span&gt;&lt;span&gt;             &lt;/span&gt;&lt;span&gt;# 域名解析查询&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nslookup&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;baidu.com&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;# 域名解析详细信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 网页/接口请求与文件下载&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://baidu.com&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 命令行访问URL，测试接口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-I&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://baidu.com&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;# 查看响应头&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-O&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://example.com/file.zip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 下载文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-X&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;POST&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;name=test&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://api.example.com&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 发送POST请求&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://example.com/file.zip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 命令行下载文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-c&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://example.com/file.zip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 断点续传下载&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 防火墙管理&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;## firewalld（CentOS/RHEL/Rocky 7+）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;firewall-cmd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--state&lt;/span&gt;&lt;span&gt;               &lt;/span&gt;&lt;span&gt;# 查看防火墙状态&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;firewall-cmd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--list-ports&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;# 查看已开放端口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;firewall-cmd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--add-port=80/tcp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--permanent&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 永久开放80端口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;firewall-cmd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--reload&lt;/span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt;# 重载防火墙规则使配置生效&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;firewall-cmd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--remove-port=80/tcp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--permanent&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 关闭端口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;## ufw（Ubuntu/Debian）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ufw&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;status&lt;/span&gt;&lt;span&gt;                  &lt;/span&gt;&lt;span&gt;# 查看防火墙状态&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ufw&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;allow&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;80/tcp&lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;# 开放80端口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ufw&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;deny&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;80/tcp&lt;/span&gt;&lt;span&gt;             &lt;/span&gt;&lt;span&gt;# 关闭80端口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ufw&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;enable/disable&lt;/span&gt;&lt;span&gt;           &lt;/span&gt;&lt;span&gt;# 启用/禁用防火墙&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;压缩与解压&lt;a href=&quot;#压缩与解压&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Linux 主流压缩格式全支持，跨 Windows 兼容。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# tar 打包压缩（最常用，支持gzip/xz/bzip2）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;## 核心选项：-c创建 -x解压 -z(gzip) -J(xz) -j(bzip2) -v显示过程 -f指定文件 -C指定解压目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tar&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-zcvf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.tar.gz&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/test&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 打包并gzip压缩test目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tar&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-zxvf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.tar.gz&lt;/span&gt;&lt;span&gt;           &lt;/span&gt;&lt;span&gt;# 解压.tar.gz/.tgz包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tar&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-zxvf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.tar.gz&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-C&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp&lt;/span&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;# 解压到指定/tmp目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tar&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-Jcvf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.tar.xz&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/test&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 打包并xz压缩（压缩率最高，大文件首选）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tar&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-Jxvf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.tar.xz&lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;# 解压.tar.xz包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# zip/unzip 跨Windows通用格式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;zip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.zip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test_dir&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;# 递归压缩目录为zip包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;unzip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.zip&lt;/span&gt;&lt;span&gt;                    &lt;/span&gt;&lt;span&gt;# 解压zip包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;unzip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.zip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/tmp&lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;# 解压到指定目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;unzip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.zip&lt;/span&gt;&lt;span&gt;                 &lt;/span&gt;&lt;span&gt;# 查看zip包内容&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 单文件压缩&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;gzip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;                     &lt;/span&gt;&lt;span&gt;# 压缩为test.txt.gz&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;gunzip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt.gz&lt;/span&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;# 解压gzip文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;xz&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;                       &lt;/span&gt;&lt;span&gt;# 压缩为test.txt.xz&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;unxz&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt.xz&lt;/span&gt;&lt;span&gt;                  &lt;/span&gt;&lt;span&gt;# 解压xz文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;磁盘与存储管理&lt;a href=&quot;#磁盘与存储管理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;用于磁盘分区、挂载、空间占用排查。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 磁盘空间查看&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;df&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-h&lt;/span&gt;&lt;span&gt;                  &lt;/span&gt;&lt;span&gt;# 查看磁盘分区使用情况，人性化显示大小&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;df&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-hT&lt;/span&gt;&lt;span&gt;                 &lt;/span&gt;&lt;span&gt;# 额外显示文件系统类型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;du&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test_dir&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;# 查看目录总占用大小&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;du&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-h&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--max-depth=1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/usr&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 查看/usr下一级目录占用大小&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 磁盘分区与格式化&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fdisk&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt;               &lt;/span&gt;&lt;span&gt;# 查看所有磁盘分区信息（MBR分区）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;parted&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt;# 查看分区信息（支持GPT大磁盘）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mkfs.ext4&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/sda1&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 格式化分区为ext4文件系统&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mkfs.xfs&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/sda2&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 格式化分区为xfs文件系统&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 磁盘挂载与卸载&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mount&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/sda1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/data&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;# 把sda1分区挂载到/data目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mount&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-o&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;remount,rw&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;# 重新挂载根目录为读写模式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;umount&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/sda1&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;# 按分区卸载&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;umount&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/data&lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;# 按挂载点卸载&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;blkid&lt;/span&gt;&lt;span&gt;                   &lt;/span&gt;&lt;span&gt;# 查看分区UUID（用于/etc/fstab永久挂载）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 内存与swap查看&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;free&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-h&lt;/span&gt;&lt;span&gt;                 &lt;/span&gt;&lt;span&gt;# 查看内存与swap分区使用情况&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;用户与用户组管理&lt;a href=&quot;#用户与用户组管理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;多用户系统账号管理核心命令。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 用户管理&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;useradd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-m&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-s&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/bin/bash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;testuser&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 创建用户，自动创建家目录，指定默认shell为bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;passwd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;testuser&lt;/span&gt;&lt;span&gt;                   &lt;/span&gt;&lt;span&gt;# 设置/修改用户密码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;passwd&lt;/span&gt;&lt;span&gt;                            &lt;/span&gt;&lt;span&gt;# 修改当前用户密码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;userdel&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;testuser&lt;/span&gt;&lt;span&gt;               &lt;/span&gt;&lt;span&gt;# 删除用户，同时删除家目录与邮箱&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;usermod&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-aG&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;testuser&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;# 把用户添加到sudo组（赋予管理员权限）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;usermod&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-s&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/bin/bash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;testuser&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 修改用户默认shell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;testuser&lt;/span&gt;&lt;span&gt;                       &lt;/span&gt;&lt;span&gt;# 查看用户UID、GID、所属组&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;                                &lt;/span&gt;&lt;span&gt;# 查看当前用户信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 用户组管理&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;groupadd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;testgroup&lt;/span&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;# 创建用户组&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;groupdel&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;testgroup&lt;/span&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;# 删除用户组&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;gpasswd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-a&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;testuser&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;testgroup&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 把用户加入指定组&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;gpasswd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;testuser&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;testgroup&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 把用户从组中移除&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 用户切换&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;su&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;testuser&lt;/span&gt;&lt;span&gt;                       &lt;/span&gt;&lt;span&gt;# 切换到指定用户&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;su&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;span&gt;                         &lt;/span&gt;&lt;span&gt;# 切换到root用户，同时加载root环境变量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;command&lt;/span&gt;&lt;span&gt;                      &lt;/span&gt;&lt;span&gt;# 以root权限执行单条命令&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;软件包管理&lt;a href=&quot;#软件包管理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;不同发行版分为 RPM 系和 DEB 系，命令不通用，对应如下。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;RPM 系（CentOS、RHEL、Rocky、AlmaLinux、Fedora）&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# yum（CentOS7及之前）/ dnf（CentOS8+/RHEL8+，兼容yum语法）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;yum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-y&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;# 安装软件，-y自动确认&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;yum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;remove&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;           &lt;/span&gt;&lt;span&gt;# 卸载软件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;yum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;           &lt;/span&gt;&lt;span&gt;# 更新软件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;yum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt;                 &lt;/span&gt;&lt;span&gt;# 全系统更新&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;yum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;search&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;           &lt;/span&gt;&lt;span&gt;# 搜索软件包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;yum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;installed&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;# 查看所有已安装软件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;yum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;clean&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt;# 清理软件缓存&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# rpm 底层包管理（直接操作.rpm包）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rpm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-ivh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;xxx.rpm&lt;/span&gt;&lt;span&gt;           &lt;/span&gt;&lt;span&gt;# 安装rpm包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rpm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-e&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;# 卸载软件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rpm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-qa&lt;/span&gt;&lt;span&gt;                     &lt;/span&gt;&lt;span&gt;# 查看所有已安装rpm包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rpm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-ql&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;               &lt;/span&gt;&lt;span&gt;# 查看软件安装的文件路径&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rpm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-qf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/usr/bin/nginx&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;# 查看文件属于哪个rpm包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;DEB 系（Ubuntu、Debian、Linux Mint）&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# apt 高级包管理器（首选）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt;                 &lt;/span&gt;&lt;span&gt;# 更新软件源缓存&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-y&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;# 安装软件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;remove&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;           &lt;/span&gt;&lt;span&gt;# 卸载软件（保留配置）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;purge&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;# 彻底卸载（删除配置）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;upgrade&lt;/span&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;# 全系统更新已安装软件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;search&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;           &lt;/span&gt;&lt;span&gt;# 搜索软件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--installed&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;# 查看已安装软件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;clean&lt;/span&gt;&lt;span&gt;                  &lt;/span&gt;&lt;span&gt;# 清理缓存&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# dpkg 底层包管理（直接操作.deb包）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dpkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-i&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;xxx.deb&lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;# 安装deb包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dpkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt;# 卸载软件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dpkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-P&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt;# 彻底卸载&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dpkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;span&gt;                    &lt;/span&gt;&lt;span&gt;# 查看所有已安装软件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dpkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-L&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt;# 查看软件安装路径&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dpkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-S&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/usr/bin/nginx&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;# 查看文件所属包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;系统服务管理（systemd）&lt;a href=&quot;#系统服务管理systemd&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;主流 Linux 发行版（CentOS7+、Ubuntu16.04+）均采用 systemd 管理系统服务，核心命令 &lt;code&gt;systemctl&lt;/code&gt;。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;start&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;# 启动服务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;stop&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;# 停止服务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;restart&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;# 重启服务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;reload&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;# 平滑重载配置（不重启进程）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;status&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;# 查看服务运行状态、日志&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;enable&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;# 设置服务开机自启&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;disable&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;# 关闭开机自启&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;enable&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--now&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nginx&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 开启自启并立即启动服务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;list-unit-files&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--type=service&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 查看所有服务开机自启状态&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 系统电源管理&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;reboot&lt;/span&gt;&lt;span&gt;             &lt;/span&gt;&lt;span&gt;# 重启系统&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;poweroff&lt;/span&gt;&lt;span&gt;           &lt;/span&gt;&lt;span&gt;# 关机&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;高级文本处理神器&lt;a href=&quot;#高级文本处理神器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;awk 按列处理文本&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;awk&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;{print $1}&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;# 打印文件第一列&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;df&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-h&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;awk&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;{print $1,$5}&apos;&lt;/span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt;# 打印磁盘设备名与使用率&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;awk&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-F:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;{print $1,$3}&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/passwd&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;# 以:为分隔符，打印用户名与UID&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;awk&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;$3&amp;gt;1000&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/passwd&lt;/span&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;# 过滤UID大于1000的行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;sed 流编辑器（文本替换、增删）&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sed&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;s/old/new/g&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;               &lt;/span&gt;&lt;span&gt;# 全局替换old为new（不修改原文件）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sed&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-i&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;s/old/new/g&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;# 直接修改原文件内容&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sed&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;2d&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;                         &lt;/span&gt;&lt;span&gt;# 删除第二行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sed&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;2i hello&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;                   &lt;/span&gt;&lt;span&gt;# 在第二行前插入hello&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sed&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;2a world&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.txt&lt;/span&gt;&lt;span&gt;                   &lt;/span&gt;&lt;span&gt;# 在第二行后追加world&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;高频实用符号与快捷键&lt;a href=&quot;#高频实用符号与快捷键&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;核心符号：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;`&lt;/strong&gt;：管道符，前一个命令的输出作为后一个命令的输入&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;：覆盖重定向：清空文件原有内容写入&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;：追加重定向：在文件末尾追加内容&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;amp;&lt;/code&gt;：后台运行符：命令在后台执行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xargs&lt;/code&gt;：标准输入转命令行参数&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;效率快捷键：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ctrl + C&lt;/code&gt;：终止当前正在运行的命令&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + L&lt;/code&gt;：清屏，等效于 clear&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + R&lt;/code&gt;：搜索历史命令&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + A&lt;/code&gt;：光标跳到行首&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + E&lt;/code&gt;：光标跳到行尾&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Tab&lt;/code&gt;：命令 / 路径自动补全，按两次显示所有匹配项&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;注意事项&lt;a href=&quot;#注意事项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;执行高危命令（&lt;code&gt;rm -rf、mkfs、fdisk&lt;/code&gt;等）前，务必确认路径与参数，避免误操作导致数据丢失。&lt;/li&gt;
&lt;li&gt;普通用户权限不足时，需加 &lt;code&gt;sudo&lt;/code&gt; 或以 &lt;code&gt;root&lt;/code&gt; 用户执行。&lt;/li&gt;
&lt;li&gt;所有命令的完整官方用法，均可通过 &lt;code&gt;man 命令名&lt;/code&gt; 查看帮助手册。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;</content:encoded></item><item><title>Dos命令及网络体系</title><link>https://umami.eu.cc/posts/dos/</link><guid isPermaLink="true">https://umami.eu.cc/posts/dos/</guid><description>常见命令以及网络的一些知识</description><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;Dos命令&lt;a href=&quot;#dos命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;DOS（Disk Operating System，磁盘操作系统）是早期个人电脑的主流命令行操作系统，如今 Windows 系统中的&lt;code&gt;命令提示符（CMD）&lt;/code&gt; 完整继承了 MS-DOS 的核心命令体系，是 Windows 系统运维、批量操作、故障排查、自动化脚本的核心工具。&lt;/p&gt;&lt;p&gt;DOS 命令分为两类：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;内部命令：随 CMD 启动&lt;code&gt;加载到内存&lt;/code&gt;，可直接执行&lt;/li&gt;
&lt;li&gt;外部命令：以&lt;code&gt;独立可执行文件&lt;/code&gt;（.exe/.com）存放在系统目录中，需要对应文件存在才能执行&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;section&gt;&lt;h3&gt;基础命令&lt;a href=&quot;#基础命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;

















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;命令&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;语法与高频示例&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;cd/chdir&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;切换工作目录&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;cd [/d] [路径]&lt;/code&gt;&lt;br /&gt;示例：&lt;code&gt;cd ..&lt;/code&gt;  返回上一级目录&lt;br /&gt;&lt;code&gt;cd \&lt;/code&gt;  切换到当前磁盘根目录&lt;br /&gt;&lt;code&gt;cd /d d:\test&lt;/code&gt;  直接跨盘切换到 D 盘 test 文件夹（/d 参数实现盘符 + 目录一键切换）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;dir&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;列出目录下的文件 / 文件夹&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;dir [路径] [参数]&lt;/code&gt;&lt;br /&gt;示例：&lt;code&gt;dir&lt;/code&gt;  列出当前目录所有内容&lt;br /&gt;&lt;code&gt;dir /a&lt;/code&gt;  显示所有文件（含隐藏 / 系统文件）&lt;br /&gt;&lt;code&gt;dir *.txt /s&lt;/code&gt;  递归查找当前盘所有 txt 文件&lt;br /&gt;&lt;code&gt;dir /p&lt;/code&gt;  分页显示内容&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;cls&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;清空命令行窗口内容&lt;/td&gt;&lt;td&gt;直接输入&lt;code&gt;cls&lt;/code&gt;回车，一键清屏&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;exit&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;关闭命令提示符窗口&lt;/td&gt;&lt;td&gt;直接输入&lt;code&gt;exit&lt;/code&gt;回车，退出 CMD&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;strong&gt;help&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;查看命令帮助文档&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;help [命令名] / [命令名] /?&lt;/code&gt;&lt;br /&gt;示例：&lt;code&gt;help cd&lt;/code&gt;  查看 cd 命令完整用法&lt;br /&gt;&lt;code&gt;ipconfig /?&lt;/code&gt;  查看 ipconfig 的参数说明&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;echo&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;输出文本 / 控制命令回显&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;echo [内容] [on/off]&lt;/code&gt;&lt;br /&gt;示例：&lt;code&gt;echo hello world&lt;/code&gt;  输出指定文本&lt;br /&gt;&lt;code&gt;echo off&lt;/code&gt;  关闭后续命令的回显（批处理核心）&lt;br /&gt;&lt;code&gt;echo.&lt;/code&gt;  输出空行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;ver&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;查看系统版本&lt;/td&gt;&lt;td&gt;直接输入&lt;code&gt;ver&lt;/code&gt;回车，显示当前 Windows 内核版本&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;date/time&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;查看 / 修改系统日期 / 时间&lt;/td&gt;&lt;td&gt;直接输入&lt;code&gt;date/time&lt;/code&gt;可查看并修改对应值，无参数仅查看&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;目录 / 文件夹操作命令&lt;a href=&quot;#目录--文件夹操作命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;命令&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;语法与高频示例&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;strong&gt;md/mkdir&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;创建文件夹&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;md [文件夹路径]&lt;/code&gt;&lt;br /&gt;示例：&lt;code&gt;md test&lt;/code&gt;  当前目录创建 test 文件夹&lt;br /&gt;&lt;code&gt;md d:\a\b\c&lt;/code&gt;  一键递归创建多级目录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;rd/rmdir&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;删除文件夹&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;rd [路径] [参数]&lt;/code&gt;&lt;br /&gt;核心参数：&lt;code&gt;/s&lt;/code&gt; 递归删除文件夹及所有子内容&lt;br /&gt;&lt;code&gt;/q&lt;/code&gt; 安静模式，删除时不弹出确认提示&lt;br /&gt;示例：&lt;code&gt;rd test /s /q&lt;/code&gt;  无提示彻底删除 test 文件夹及所有内容&lt;br /&gt;⚠️ 高危警告：删除后无法从回收站恢复，务必确认路径无误&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;文件操作核心命令&lt;a href=&quot;#文件操作核心命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;












































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;命令&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;语法与高频示例&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;copy&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;复制文件&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;copy [源文件] [目标路径]&lt;/code&gt;&lt;br /&gt;示例：&lt;code&gt;copy d:\1.txt e:\&lt;/code&gt;  把 1.txt 复制到 E 盘根目录&lt;br /&gt;&lt;code&gt;copy *.txt d:\backup&lt;/code&gt;  批量复制当前目录所有 txt 文件&lt;br /&gt;&lt;code&gt;copy 1.txt+2.txt 3.txt&lt;/code&gt;  合并 1、2.txt 为 3.txt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;xcopy&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;增强型复制（支持目录递归）&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;xcopy [源] [目标] [参数]&lt;/code&gt;&lt;br /&gt;核心参数：&lt;code&gt;/e&lt;/code&gt; 复制所有子目录（含空目录）&lt;br /&gt;&lt;code&gt;/h&lt;/code&gt; 复制隐藏 / 系统文件&lt;br /&gt;&lt;code&gt;/y&lt;/code&gt; 覆盖时不提示&lt;br /&gt;确认示例：&lt;code&gt;xcopy d:\test e:\backup /e /h /y&lt;/code&gt;  完整克隆 test 文件夹到 backup&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;del/erase&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;删除文件&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;del [文件路径] [参数]&lt;/code&gt;&lt;br /&gt;核心参数：&lt;code&gt;/s&lt;/code&gt; 递归删除子目录中匹配的文件&lt;br /&gt;&lt;code&gt;/q&lt;/code&gt; 安静模式，无确认提示&lt;br /&gt;示例：&lt;code&gt;del *.log&lt;/code&gt;  删除当前目录所有 log 文件&lt;br /&gt;&lt;code&gt;del d:\temp\*.* /s /q&lt;/code&gt;  无提示清空 temp 目录所有文件&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;strong&gt;ren/rename&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;重命名文件 / 文件夹&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;ren [原名称] [新名称]&lt;/code&gt;&lt;br /&gt;示例：&lt;code&gt;ren 1.txt 2.txt&lt;/code&gt;  单个文件重命名&lt;br /&gt;&lt;code&gt;ren *.txt *.doc&lt;/code&gt;  批量修改所有 txt 文件后缀为 doc&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;strong&gt;move&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;移动文件 / 文件夹&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;move [源] [目标路径]&lt;/code&gt;&lt;br /&gt;示例：&lt;code&gt;move 1.txt d:\test&lt;/code&gt;  把 1.txt 移动到 test 文件夹&lt;br /&gt;&lt;code&gt;move test d:\new&lt;/code&gt;  移动 test 文件夹并重命名为 new&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;strong&gt;type&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;查看文本文件内容&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;type [文件路径]&lt;/code&gt;&lt;br /&gt;示例：&lt;code&gt;type d:\1.txt&lt;/code&gt;  查看 1.txt 内容&lt;code&gt;type 1.txt&lt;/code&gt;&lt;br /&gt;&lt;code&gt;more&lt;/code&gt;  分页查看长文本&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;attrib&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;查看 / 修改文件属性&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;attrib [±属性] [文件路径]&lt;/code&gt;&lt;br /&gt;属性说明：&lt;code&gt;r&lt;/code&gt;只读、&lt;code&gt;h&lt;/code&gt;隐藏、&lt;code&gt;s&lt;/code&gt;系统、&lt;code&gt;a&lt;/code&gt;存档&lt;br /&gt;示例：&lt;code&gt;attrib +h +s 1.txt&lt;/code&gt;  把 1.txt 设为隐藏 + 系统文件&lt;br /&gt;&lt;code&gt;attrib -h 1.txt&lt;/code&gt;  取消文件的隐藏属性&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;磁盘与系统管理命令&lt;a href=&quot;#磁盘与系统管理命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;

















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;命令&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;语法与高频示例&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;shutdown&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;系统关机 / 重启 / 注销&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;shutdown [参数]&lt;/code&gt;&lt;br /&gt;核心参数：&lt;code&gt;/s&lt;/code&gt; 关机、&lt;code&gt;/r&lt;/code&gt; 重启、&lt;code&gt;/l&lt;/code&gt; 注销&lt;br /&gt;&lt;code&gt;/t&lt;/code&gt; 秒数 设置倒计时&lt;br /&gt;&lt;code&gt;/a&lt;/code&gt; 取消已设置的关机计划&lt;br /&gt;示例：&lt;code&gt;shutdown /s /t 60&lt;/code&gt;  60 秒后关机&lt;br /&gt;&lt;code&gt;shutdown /r /t 0&lt;/code&gt;  立即重启&lt;br /&gt;&lt;code&gt;shutdown /a&lt;/code&gt;  取消关机&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;format&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;磁盘格式化&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;format [盘符:] [参数]&lt;/code&gt;&lt;br /&gt;核心参数：&lt;code&gt;/fs:ntfs&lt;/code&gt; 指定文件系统为 NTFS&lt;br /&gt;&lt;code&gt;/q&lt;/code&gt; 快速格式化&lt;br /&gt;示例：&lt;code&gt;format d: /q /fs:ntfs&lt;/code&gt;  快速格式化 D 盘为 NTFS&lt;br /&gt;⚠️ 极高危命令！格式化会清空磁盘全部数据，严禁对系统盘操作&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;chkdsk&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;磁盘检查与错误修复&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;chkdsk [盘符:] [参数]&lt;/code&gt;&lt;br /&gt;核心参数：&lt;code&gt;/f&lt;/code&gt; 修复磁盘错误&lt;br /&gt;&lt;code&gt;/r&lt;/code&gt; 查找坏扇区并恢复可读数据&lt;br /&gt;示例：&lt;code&gt;chkdsk d: /f&lt;/code&gt;  检查 D 盘并修复文件系统错误&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;diskpart&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;磁盘分区管理&lt;/td&gt;&lt;td&gt;输入&lt;code&gt;diskpart&lt;/code&gt;进入交互模式，核心子命令：&lt;code&gt;list disk&lt;/code&gt; 列出所有磁盘&lt;br /&gt;&lt;code&gt;list volume&lt;/code&gt; 列出所有分区&lt;br /&gt;&lt;code&gt;select disk 0&lt;/code&gt; 选中磁盘 0&lt;br /&gt;⚠️ 专业分区工具，误操作会导致全盘数据丢失，非专业人员慎用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;strong&gt;tasklist&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;查看系统运行进程&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;tasklist [参数]&lt;/code&gt;&lt;br /&gt;示例：&lt;code&gt;tasklist&lt;/code&gt;  列出所有运行进程tasklist&lt;br /&gt; &lt;code&gt;findstr &quot;chrome&quot;&lt;/code&gt; 筛选 chrome 相关进程&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;taskkill&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;强制结束进程&lt;/td&gt;&lt;td&gt;语法：taskkill [参数]&lt;br /&gt;核心参数：&lt;code&gt;/f&lt;/code&gt; 强制结束&lt;br /&gt;&lt;code&gt;/im&lt;/code&gt; 进程名 指定进程映像名&lt;br /&gt;&lt;code&gt;/pid&lt;/code&gt; 进程ID 指定 PID 结束&lt;br /&gt;示例：&lt;code&gt;taskkill /f /im chrome.exe&lt;/code&gt;  强制结束所有 chrome 进程&lt;br /&gt;&lt;code&gt;taskkill /f /pid&lt;/code&gt; 1234  结束 PID 为 1234 的进程&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;systeminfo&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;查看系统完整信息&lt;/td&gt;&lt;td&gt;直接输入&lt;code&gt;systeminfo&lt;/code&gt;回车，输出系统版本、硬件配置、补丁、网卡信息等完整系统数据&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;strong&gt;sfc&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;系统文件检查与修复&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;sfc /scannow&lt;/code&gt;&lt;br /&gt;核心功能：扫描并修复受损的 Windows 系统文件，需管理员权限运行&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;网络诊断与管理命令&lt;a href=&quot;#网络诊断与管理命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;命令&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;语法与高频示例&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ipconfig&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;查看 / 管理网络配置&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;ipconfig [参数]&lt;/code&gt;&lt;br /&gt;核心参数：&lt;code&gt;/all&lt;/code&gt; 查看完整网卡配置（MAC 地址、DNS、DHCP 等）&lt;br /&gt;&lt;code&gt;/flushdns&lt;/code&gt; 刷新 DNS 解析缓存&lt;br /&gt;&lt;code&gt;/release&lt;/code&gt; 释放 IP 地址/renew 重新获取 IP 地址&lt;br /&gt;示例：&lt;code&gt;ipconfig /all&lt;/code&gt;  查看所有网卡详细信息&lt;br /&gt;&lt;code&gt;ipconfig /flushdns&lt;/code&gt;  清空本地 DNS 缓存&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ping&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;测试网络连通性&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;ping [目标地址/域名] [参数]&lt;/code&gt;&lt;br /&gt;核心参数：&lt;code&gt;-t&lt;/code&gt; 持续 ping 目标，按 Ctrl+C 停止&lt;br /&gt;&lt;code&gt;-n&lt;/code&gt; 次数 指定 ping 包数量&lt;br /&gt;示例：&lt;code&gt;ping www.baidu.com&lt;/code&gt;  测试到百度的网络连通性&lt;br /&gt;&lt;code&gt;ping 192.168.1.1 -t&lt;/code&gt;  持续 ping 网关地址&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;strong&gt;tracert&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;路由追踪&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;tracert [目标地址/域名]&lt;/code&gt;&lt;br /&gt;示例：&lt;code&gt;tracert www.baidu.com&lt;/code&gt;  追踪到百度的网络节点，定位网络故障点&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;strong&gt;netstat&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;查看网络连接 / 端口占用&lt;/td&gt;&lt;td&gt;语法：&lt;code&gt;netstat [参数]&lt;/code&gt;&lt;br /&gt;核心参数：&lt;code&gt;-ano&lt;/code&gt; 查看所有连接、监听端口及对应进程 PID&lt;br /&gt;示例：&lt;code&gt;netstat -ano&lt;/code&gt;  查看全量端口占用情况&lt;br /&gt;&lt;code&gt;findstr &quot;8080&quot;&lt;/code&gt; 查找 8080 端口的占用进程&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;net&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;网络综合命令集&lt;/td&gt;&lt;td&gt;高频子命令：&lt;code&gt;net user&lt;/code&gt;  查看系统所有用户账户&lt;br /&gt;&lt;code&gt;net user 用户名 密码 /add&lt;/code&gt;  新建本地用户&lt;br /&gt;&lt;code&gt;net localgroup administrators&lt;/code&gt; 用户名&lt;br /&gt; &lt;code&gt;/add&lt;/code&gt;  将用户加入管理员组&lt;br /&gt;&lt;code&gt;net share&lt;/code&gt;  查看系统所有共享文件夹&lt;br /&gt;&lt;code&gt;net use Z: \\192.168.1.100\share&lt;/code&gt;  将网络共享映射为 Z 盘&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;批处理进阶常用命令&lt;a href=&quot;#批处理进阶常用命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;批处理（.bat/.cmd）是 DOS 命令的&lt;code&gt;批量执行脚本&lt;/code&gt;，以下是批处理核心命令：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;@&lt;/code&gt;：行首添加，关闭当前行的命令回显，批处理开头常用&lt;code&gt;@echo off&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pause&lt;/code&gt;：暂停脚本执行，弹出「按任意键继续…」提示&lt;/li&gt;
&lt;li&gt;&lt;code&gt;set&lt;/code&gt;：定义 / 读取变量，示例：&lt;code&gt;set a=123&lt;/code&gt; 定义变量，&lt;code&gt;echo %a%&lt;/code&gt; 输出变量值&lt;/li&gt;
&lt;li&gt;&lt;code&gt;if&lt;/code&gt;：条件判断，示例：&lt;code&gt;if exist d:\1.txt (echo 存在) else (echo 不存在)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;for&lt;/code&gt;：循环命令，示例：&lt;code&gt;for %%i in (*.txt) do echo %%i&lt;/code&gt; 遍历当前目录所有 txt 文件（CMD 直接执行用&lt;code&gt;%i&lt;/code&gt;，批处理用&lt;code&gt;%%i&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;goto&lt;/code&gt;：跳转到指定标签，示例：&lt;code&gt;goto :start&lt;/code&gt; 跳转到&lt;code&gt;:start&lt;/code&gt;标签位置&lt;/li&gt;
&lt;li&gt;&lt;code&gt;call&lt;/code&gt;：调用另一个批处理脚本或子程序，示例：&lt;code&gt;call 2.bat&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;常用特殊符号与高级语法&lt;a href=&quot;#常用特殊符号与高级语法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;符号&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;输出重定向，覆盖写入文件&lt;/td&gt;&lt;td&gt;&lt;code&gt;echo hello &amp;gt; 1.txt&lt;/code&gt; 把 hello 写入 1.txt，覆盖原有内容&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;&amp;gt;&amp;gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;输出重定向，追加写入文件&lt;/td&gt;&lt;td&gt;&lt;code&gt;echo hello &amp;gt;&amp;gt; 1.txt&lt;/code&gt; 把 hello 追加到 1.txt 末尾&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;&amp;amp;&amp;amp;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;逻辑与，前一个命令执行成功，才执行后一个&lt;/td&gt;&lt;td&gt;&lt;code&gt;md test &amp;amp;&amp;amp; cd test&lt;/code&gt; 创建 test 成功后，进入该目录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;*&lt;strong&gt;/?&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;通配符，*匹配任意字符，?匹配单个字符&lt;/td&gt;&lt;td&gt;&lt;code&gt;del *.tmp&lt;/code&gt; 删除所有 tmp 后缀文件&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;&quot;&quot;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;路径包裹符，路径含空格时必须用英文双引号包裹&lt;/td&gt;&lt;td&gt;&lt;code&gt;cd &quot;&quot;C:\Program Files&quot;&quot;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;常用快捷键&lt;a href=&quot;#常用快捷键&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ctrl+C&lt;/code&gt;：强制终止正在执行的命令&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Tab&lt;/code&gt;：自动补全文件名 / 目录名&lt;/li&gt;
&lt;li&gt;&lt;code&gt;↑/↓&lt;/code&gt;：快速调出历史执行命令&lt;/li&gt;
&lt;li&gt;&lt;code&gt;F7&lt;/code&gt;：打开历史命令列表，可直接选择执行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Esc&lt;/code&gt;：清空当前输入的命令行&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;注意事项&lt;a href=&quot;#注意事项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;DOS 命令&lt;code&gt;不区分大小写&lt;/code&gt;，cd 和 CD 执行效果完全一致&lt;/li&gt;
&lt;li&gt;涉及系统 / 磁盘管理的命令，&lt;code&gt;必须以管理员身份运行 CMD &lt;/code&gt;才能正常执行&lt;/li&gt;
&lt;li&gt;高危命令（&lt;code&gt;rd /s/q&lt;/code&gt;、&lt;code&gt;format、del /s/q&lt;/code&gt;、&lt;code&gt;diskpart&lt;/code&gt;）执行前务必反复确认路径，避免数据丢失&lt;/li&gt;
&lt;li&gt;路径中包含空格、特殊字符时，必须用&lt;code&gt;英文双引号&lt;/code&gt;包裹完整路径&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;网络体系&lt;a href=&quot;#网络体系&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;计算机网络体系：计算机网络是用&lt;code&gt;通信设备和线路&lt;/code&gt;将分散在不同地点的有独立功能的&lt;code&gt;多个计算机系统互相连接&lt;/code&gt;起来，并&lt;code&gt;按照网络协议&lt;/code&gt;进行数据通信，实现资源共享的计算机集合。&lt;/p&gt;&lt;p&gt;网络体系最基础、最通用的分类标准，按网络覆盖的物理距离、规模从小到大排序：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;局域网（LAN）：范围在 &lt;code&gt;1km 以内，最大不超 10km&lt;/code&gt;，其高带宽、低延迟、低误码率、组网灵活、由单一机构全权管理，是网络的基础单元。例如家庭 WiFi 网络、企业办公内网、学校机房、网吧网络；&lt;code&gt;无线局域网&lt;/code&gt; WLAN是 LAN 的无线实现，核心技术 WiFi，是当前最主流的 LAN 形态&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;城域网（MAN）：范围在 &lt;code&gt;几十公里～上百公里&lt;/code&gt;，其覆盖一个城市 / 都市圈，连接市内多个 LAN/CAN，作为城市级骨干网络，高带宽、统一规划，通常由运营商 / 政府主导建设。例如城市政务专网、运营商城市 IP 骨干网、智慧交通专网、广电有线电视网络&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;广域网（WAN）：范围在 &lt;code&gt;数百公里～数万公里&lt;/code&gt;，其跨城市、跨省、跨国家 / 洲际，低带宽、高延迟（相对 LAN）、多运营商联合组网，采用复杂路由协议，是互联网的核心骨架。例如运营商国家级骨干网、跨地域企业总部 - 分公司专线、国际海缆网络；&lt;strong&gt;互联网（Internet）是全球最大的开放式广域网&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;协议：为进行数据交换而建立的规则、标准或约定。协议庞大且复杂但&lt;code&gt;协议不是绝对可靠&lt;/code&gt;。
&lt;img loading=&quot;lazy&quot; width=&quot;768&quot; height=&quot;422&quot; src=&quot;/_astro/xieyi.Bh0YCGmY_ZBNiNn.webp&quot; srcset=&quot;/_astro/xieyi.Bh0YCGmY_22RJXA.webp 640w, /_astro/xieyi.Bh0YCGmY_Z29PQq0.webp 750w, /_astro/xieyi.Bh0YCGmY_ZBNiNn.webp 768w&quot; /&gt;&lt;/p&gt;&lt;p&gt;拓扑结构划分为&lt;code&gt;星型&lt;/code&gt;、&lt;code&gt;总线型&lt;/code&gt;、&lt;code&gt;环型&lt;/code&gt;、&lt;code&gt;树型&lt;/code&gt;、&lt;code&gt;网状&lt;/code&gt;。&lt;/p&gt;&lt;hr /&gt;&lt;section&gt;&lt;h3&gt;网络分层&lt;a href=&quot;#网络分层&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;计算机网络体系结构，核心是为&lt;code&gt;实现异构设备跨网络互联互通，而设计的分层式通信协议规范集合&lt;/code&gt;。它将复杂的网络通信过程拆解为有明确功能边界的层级，定义了每层的通信规则、相邻层的服务接口，核心设计思想是&lt;code&gt;分层解耦&lt;/code&gt;：下层为上层提供透明的服务，上层无需关心下层的具体实现细节，仅需调用下层接口。&lt;/p&gt;&lt;p&gt;业界有两大核心体系模型：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OSI 七层参考模型&lt;/strong&gt;：国际标准化组织制定的理论标准，是网络学习的核心框架&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TCP/IP 模型&lt;/strong&gt;：互联网的工业事实标准，是当前全球网络通信的实际落地规范&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;864&quot; height=&quot;547&quot; src=&quot;/_astro/interfenceng.KXCAQnl9_MVLcA.webp&quot; srcset=&quot;/_astro/interfenceng.KXCAQnl9_zVN5n.webp 640w, /_astro/interfenceng.KXCAQnl9_Z1rpxSW.webp 750w, /_astro/interfenceng.KXCAQnl9_ZKm9e2.webp 828w, /_astro/interfenceng.KXCAQnl9_MVLcA.webp 864w&quot; /&gt;&lt;/p&gt;&lt;p&gt;分层是网络体系的灵魂，核心优势如下：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;独立性与解耦&lt;/strong&gt;：每层仅实现固定功能，技术升级仅影响本层，不干扰其他层级（如以太网从千兆升级到万兆，上层的 HTTP 协议无需任何修改）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标准化与互通性&lt;/strong&gt;：各层功能、协议标准化，不同厂商的设备、不同架构的系统可实现跨网络互联互通&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;易维护与排障&lt;/strong&gt;：可逐层定位故障，比如网络不通时，可从物理层（网线 / 信号）→链路层→网络层→传输层→应用层逐级排查，大幅降低问题定位难度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可复用性&lt;/strong&gt;：通用功能可被多层复用，避免重复开发&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;OSI 七层参考模型（理论标准）&lt;a href=&quot;#osi-七层参考模型理论标准&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;OSI（Open System Interconnection，开放系统互连）七层模型是 ISO（国际标准化组织）1984 年发布的通用网络通信框架，是网络知识体系的核心参考，层级&lt;strong&gt;从下到上&lt;/strong&gt;依次为 1-7 层，每层的核心功能、协议数据单元（PDU，本层传输的数据格式）、典型设备 / 协议如下：&lt;/p&gt;




























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;层级&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;层级名称&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;协议数据单元 (PDU)&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;典型设备 / 核心协议&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;第 1 层&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;物理层&lt;/td&gt;&lt;td&gt;负责在物理介质上传输&lt;code&gt;原始比特流&lt;/code&gt;，定义硬件电气特性、接口标准、传输速率、信号编码方式，只关心 0 和 1 的传输，不关心数据含义&lt;/td&gt;&lt;td&gt;比特（Bit）&lt;/td&gt;&lt;td&gt;设备：网线、光纤、集线器、中继器、网卡物理接口标准：RJ45、光纤接口、10BASE-T 等以太网物理标准&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;第 2 层&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;数据链路层&lt;/td&gt;&lt;td&gt;将物理层的比特流封装成&lt;code&gt;帧&lt;/code&gt;，实现相邻节点（同一局域网内）的可靠传输；负责 MAC 地址寻址、差错校验、帧同步、流量控制&lt;/td&gt;&lt;td&gt;帧（Frame）&lt;/td&gt;&lt;td&gt;设备：二层交换机、网卡、网桥协议：以太网协议、PPP、ARP/RARP、VLAN 协议&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;第 3 层&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;网络层&lt;/td&gt;&lt;td&gt;实现跨局域网的端到端通信，核心是&lt;code&gt;路由选择与寻址&lt;/code&gt;；定义 IP 地址格式，通过路由协议生成路由表，将分组从源主机转发到目标主机&lt;/td&gt;&lt;td&gt;分组 / 包（Packet）&lt;/td&gt;&lt;td&gt;设备：路由器、三层交换机协议：IP（IPv4/IPv6）、ARP、ICMP、IGMP、OSPF、BGP 等路由协议&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;第 4 层&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;传输层&lt;/td&gt;&lt;td&gt;负责两台主机&lt;code&gt;进程到进程&lt;/code&gt;的端到端通信，为上层应用提供数据传输服务；实现端口寻址、流量控制、拥塞控制、差错恢复、传输可靠性保障&lt;/td&gt;&lt;td&gt;段（Segment，TCP）/ 数据报（Datagram，UDP）&lt;/td&gt;&lt;td&gt;设备：四层防火墙、负载均衡器协议：TCP（传输控制协议，可靠）、UDP（用户数据报协议，不可靠）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;第 5 层&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;会话层&lt;/td&gt;&lt;td&gt;负责建立、管理、终止两个应用进程之间的通信会话，提供会话同步、断点续传、全双工 / 半双工管理&lt;/td&gt;&lt;td&gt;会话协议数据单元（SPDU）&lt;/td&gt;&lt;td&gt;协议：RPC、SDP、NetBIOS，实际应用中极少单独实现&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;第 6 层&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;表示层&lt;/td&gt;&lt;td&gt;负责处理通信双方的数据格式转换、加密解密、压缩解压缩，确保应用层能识别对方发送的数据&lt;/td&gt;&lt;td&gt;表示协议数据单元（PPDU）&lt;/td&gt;&lt;td&gt;功能实现：TLS/SSL 加密、JPEG/ASCII 格式转换、数据压缩，现已合并到 TCP/IP 应用层&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;第 7 层&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;应用层&lt;/td&gt;&lt;td&gt;直接为用户 / 应用程序提供网络服务，定义应用层的通信规则与业务逻辑，是用户与网络的接口&lt;/td&gt;&lt;td&gt;报文（Message）&lt;/td&gt;&lt;td&gt;协议：HTTP/HTTPS、DNS、FTP、SMTP/POP3/IMAP、SSH、WebSocket、RTSP&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;关键说明：OSI 模型是&lt;code&gt;理论参考框架&lt;/code&gt;，其 5、6 层的功能在实际应用中，均被整合到了 TCP/IP 模型的应用层中，并未单独分层实现。&lt;/p&gt;&lt;p&gt;IP 是连接到网上的所有计算机网络实现相互通信的一套规则，只要遵守IP协议就可以与因特网互连互通。其具有&lt;code&gt;唯一性&lt;/code&gt;。范围在 0~255。
&lt;img loading=&quot;lazy&quot; width=&quot;851&quot; height=&quot;279&quot; src=&quot;/_astro/ip.DDn4d43R_Z1FE8xS.webp&quot; srcset=&quot;/_astro/ip.DDn4d43R_Z1FIDJk.webp 640w, /_astro/ip.DDn4d43R_Z1rn9xO.webp 750w, /_astro/ip.DDn4d43R_28MjgI.webp 828w, /_astro/ip.DDn4d43R_Z1FE8xS.webp 851w&quot; /&gt;&lt;/p&gt;&lt;p&gt;网关：从一个网络跨到另外一个网络经过的关卡，比如局域网跨广域网。&lt;/p&gt;&lt;p&gt;DNS：&lt;code&gt;域名解析器&lt;/code&gt;将域名解析为ip地址，这样才能访问对应网址的服务器。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;TCP/IP 体系模型（工业事实标准）&lt;a href=&quot;#tcpip-体系模型工业事实标准&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;TCP/IP（传输控制协议 / 网际协议）模型，是伴随互联网诞生的落地标准，是当前全球所有网络通信的核心架构，它简化了 OSI 的分层设计，更贴合实际工程实现。&lt;/p&gt;







































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;层级&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;层级名称&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;对应 OSI 层级&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心功能&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心协议&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;第 1 层&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;网络接口层（链路层）&lt;/td&gt;&lt;td&gt;物理层 + 数据链路层&lt;/td&gt;&lt;td&gt;负责比特流的物理传输、帧的封装与解封装、局域网内的 MAC 寻址，对接底层硬件介质&lt;/td&gt;&lt;td&gt;以太网协议、PPP、ARP、VLAN、驱动程序&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;第 2 层&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;网际层（互联网层）&lt;/td&gt;&lt;td&gt;网络层&lt;/td&gt;&lt;td&gt;核心是 IP 寻址与路由转发，实现跨网络的端到端数据包传输，是整个 TCP/IP 体系的枢纽&lt;/td&gt;&lt;td&gt;IPv4/IPv6、ARP、ICMP、IGMP、OSPF、BGP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;第 3 层&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;传输层&lt;/td&gt;&lt;td&gt;传输层&lt;/td&gt;&lt;td&gt;负责进程到进程的通信，提供端到端的传输控制，为应用层提供可靠 / 不可靠的传输服务&lt;/td&gt;&lt;td&gt;TCP、UDP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;第 4 层&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;应用层&lt;/td&gt;&lt;td&gt;会话层 + 表示层 + 应用层&lt;/td&gt;&lt;td&gt;整合了 OSI 上三层的全部功能，直接为应用程序提供网络服务，定义业务层面的通信规则&lt;/td&gt;&lt;td&gt;HTTP/HTTPS、DNS、FTP、SMTP、SSH、WebSocket、TLS/SSL&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;为了更清晰地对应 OSI 模型、方便学习理解，业界教学中普遍&lt;code&gt;采用五层网络模型&lt;/code&gt;，将 TCP/IP 的网络接口层拆分为&lt;code&gt;物理层 + 数据链路层&lt;/code&gt;，其余层级不变，既保留了理论框架的完整性，又贴合实际工程实现，是目前最主流的教学体系。&lt;/p&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;对比维度&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;OSI 七层模型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;TCP/IP 四层模型&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;定位&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;理论参考标准，通用框架&lt;/td&gt;&lt;td&gt;互联网工业事实标准，落地实现&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;分层设计&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;分层精细，上三层（会话 / 表示 / 应用）拆分明确&lt;/td&gt;&lt;td&gt;分层简化，上三层合并为应用层，更贴合工程实践&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;协议耦合&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;模型与协议解耦，不绑定特定协议&lt;/td&gt;&lt;td&gt;模型基于 TCP/IP 协议栈设计，与协议深度绑定&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;可靠性设计&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;从链路层到应用层均强调可靠传输&lt;/td&gt;&lt;td&gt;可靠性保障仅在传输层 TCP 协议实现，UDP 和 IP 均为不可靠传输&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;实际应用&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;仅用于网络学习、故障排查的理论参考&lt;/td&gt;&lt;td&gt;全球互联网、局域网、所有网络设备均基于此模型运行&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;关于TCP和UDP&lt;a href=&quot;#关于tcp和udp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;TCP（Transmission Control Protocol）是&lt;code&gt;面向连接、可靠交付、基于字节流&lt;/code&gt;的传输层协议，核心设计目标是&lt;code&gt;保证数据传输的完整性和正确性&lt;/code&gt;。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;面向连接&lt;/strong&gt;：传输数据前&lt;code&gt;必须通过三次握手&lt;/code&gt;建立端到端的全双工连接，传输结束后通过&lt;code&gt;四次挥手断开连接&lt;/code&gt;，仅支持&lt;code&gt;单播通信&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可靠传输&lt;/strong&gt;：通过序列号、&lt;code&gt;确认应答（ACK）&lt;/code&gt;、超时重传、校验和机制，保证&lt;code&gt;数据无丢失、无重复、按序到达&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;流量与拥塞控制&lt;/strong&gt;：通过滑动窗口实现流量控制，避免发送方速率超过接收方处理能力；通过慢启动、拥塞避免、快重传、快恢复算法实现拥塞控制，避免网络过载。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;面向字节流&lt;/strong&gt;：将数据视为无边界的字节流，应用层需自行处理数据边界与粘包问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;首部开销&lt;/strong&gt;：固定 20 字节，可选字段最大可扩展至 60 字节。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;对数据完整性、可靠性要求高，可容忍一定延迟的场景：&lt;code&gt;网页浏览（HTTP/HTTPS、HTTP/2）&lt;/code&gt;、&lt;code&gt;文件传输（FTP、SFTP）&lt;/code&gt;、&lt;code&gt;邮件收发（SMTP、POP3、IMAP）&lt;/code&gt;、&lt;code&gt;远程登录（SSH、Telnet）&lt;/code&gt;、&lt;code&gt;数据库访问&lt;/code&gt;、&lt;code&gt;金融交易数据传输&lt;/code&gt;等。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;UDP（User Datagram Protocol）是&lt;code&gt;无连接、不可靠、面向数据报&lt;/code&gt;的传输层协议，核心设计目标是极致的传输效率和低延迟。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;无连接&lt;/strong&gt;：无需提前建立 / 断开连接，发送方直接封装报文发送，无握手、挥手环节，启动延迟极低。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不可靠交付&lt;/strong&gt;：协议层无确认应答、重传机制，不保证数据一定到达，也不保证按序交付，丢包、乱序的处理完全交给应用层。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无流量 / 拥塞控制&lt;/strong&gt;：不受网络拥塞影响，始终以固定速率发送数据，适合对实时性要求高于完整性的场景。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;面向数据报&lt;/strong&gt;：有明确的报文边界，发送方一次发送一个完整报文，接收方一次接收完整报文，天然无粘包问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;通信模式丰富&lt;/strong&gt;：支持单播、多播、广播，可实现一对多、多对多通信。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;首部开销&lt;/strong&gt;：固定 8 字节，开销极低。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;对实时性要求极高，可容忍少量丢包的场景：&lt;code&gt;实时音视频（直播、视频会议、VoIP 网络电话）&lt;/code&gt;、&lt;code&gt;实时竞技网络游戏&lt;/code&gt;、&lt;code&gt;DNS 域名解析&lt;/code&gt;、&lt;code&gt;NTP 网络时间同步&lt;/code&gt;、&lt;code&gt;物联网传感器数据上报&lt;/code&gt;、&lt;code&gt;SNMP 网络管理&lt;/code&gt;、&lt;code&gt;流媒体传输&lt;/code&gt;、&lt;code&gt;HTTP/3（基于 QUIC 协议，底层为 UDP）&lt;/code&gt;等。&lt;/p&gt;&lt;p&gt;UDP 的 “不可靠” 是&lt;code&gt;协议层不做可靠性保证，而非完全无法实现可靠传输&lt;/code&gt;。应用层可基于 UDP 自行实现确认、重传、拥塞控制等机制，在保留低延迟优势的同时，实现定制化的可靠传输，典型代表就是 HTTP/3 使用的 QUIC 协议。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Bug相关概念</title><link>https://umami.eu.cc/posts/bug-related-concept/</link><guid isPermaLink="true">https://umami.eu.cc/posts/bug-related-concept/</guid><description>软件开始所遗留的Bug，通过测试发现</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;用例评审&lt;a href=&quot;#用例评审&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;测试用例评审是软件研发流程中核心的&lt;code&gt;质量前置管控环节&lt;/code&gt;，由测试、产品、开发等多角色共同参与，对测试用例的需求覆盖度、逻辑严谨性、可执行性、风险防控能力进行系统性审核与校准，提前发现用例缺陷，对齐团队需求认知，最终保障测试活动有效性，大幅降低线上故障风险。&lt;/p&gt;&lt;p&gt;由测试组发起评审，对编写的用例进行考核，如果评审未通过，则进行修改，反之则发起项目组评审，当通过这两次评审后，将用例归档，作为后续执行阶段的用例。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;笔试面试题&lt;a href=&quot;#笔试面试题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;用例需要评审吗？紧急情况用例也要评审吗？&lt;/p&gt;
&lt;p&gt;答：需要评审。紧急情况将用例通过邮件的方式发送给负责人即可。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果项目很紧急，来不急写用例，怎么办？&lt;/p&gt;
&lt;p&gt;答：可以先用 checklist 检查列表，即 Xmind 来把测试点给覆盖。事后有时间可以补充完善用例，用以回归测试。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;遇到隐性需求该如何写用例？（&lt;code&gt;需求不明确&lt;/code&gt;）&lt;/p&gt;
&lt;p&gt;答：先熟悉功能，并类比同类成熟产品，站在用户角度上去挖掘需求，也要询问产品负责人相关细节。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用例有没有优先级？如果一定有优先级，依据什么来确定？&lt;/p&gt;
&lt;p&gt;答：用例是有优先级之分的，根据该功能是否为主业务逻辑以及高频使用场景。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如何编写用例？（根据测试思维来判断什么时候用那种测试设计方法）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;编写测试用例会用到什么方法？接着会问，你觉得你在写用例时会遇到吗？（结合项目来答）&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;关于 Bug&lt;a href=&quot;#关于-bug&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;软件 Bug（缺陷），是软件在研发、测试、运行全流程中，&lt;code&gt;不符合需求规格说明书&lt;/code&gt;、&lt;code&gt;不满足用户合理预期&lt;/code&gt;、&lt;code&gt;影响软件正常使用的各类问题&lt;/code&gt;，涵盖功能错误、逻辑异常、性能不达标、兼容性故障、安全漏洞、UI/UX 体验问题、数据异常等全维度。&lt;/p&gt;&lt;p&gt;上诉定义可获取到 Bug 的判定标准：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;不符合需求规格&lt;/strong&gt;：与产品需求文档（PRD）、设计文档、接口文档明确约定的功能、规则、逻辑不一致，是最核心的判定依据。（&lt;code&gt;不符合需求&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不符合用户合理预期&lt;/strong&gt;：即使需求未明确标注，但不符合行业通用规范、用户正常使用习惯，比如必填项无校验提示、按钮点击无反馈。（&lt;code&gt;改进建议&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;影响正常使用与安全&lt;/strong&gt;：导致程序崩溃、数据丢失 / 泄露、核心业务阻断、高危安全风险、性能严重劣化等问题。（&lt;code&gt;功能缺陷&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;以禅道为准，常见的 Bug 由代码（功能）错误、界面优化、设计缺陷&lt;/p&gt;&lt;section&gt;&lt;h3&gt;Bug 的生命周期&lt;a href=&quot;#bug-的生命周期&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Bug 从发现到闭环的全链路：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;新建（New）&lt;/strong&gt;：测试人员发现问题，校验复现后提交 Bug 单，初始状态为新建。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分配（Assigned）&lt;/strong&gt;：测试负责人 / 项目经理审核 Bug 有效性后，分配给对应开发模块负责人。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;处理中（In Progress）&lt;/strong&gt;：开发确认 Bug 属实，接受分配，启动代码修复工作。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;已修复（Fixed/Resolved）&lt;/strong&gt;：开发完成代码修复，合入对应测试版本，标记为已修复。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回归测试（Retest）&lt;/strong&gt;：测试人员在新版本中，严格按照复现步骤对 Bug 进行验证。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关闭（Closed）&lt;/strong&gt;：回归验证通过，Bug 彻底解决，无衍生问题，关闭该 Bug 单。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重开（Reopened）&lt;/strong&gt;：回归不通过，Bug 复现 / 修复不彻底 / 衍生新问题，状态打回重开，重新进入分配修复流程。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;延期 / 拒绝（Deferred/Rejected）&lt;/strong&gt;：特殊场景需项目组评审确认，比如非核心问题当前版本不修复、需求理解偏差、无法复现且无有效日志、属于需求变更而非 Bug 等，必须标注明确原因。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;893&quot; height=&quot;456&quot; src=&quot;/_astro/bugrelated.uM3Z5L78_2oobow.webp&quot; srcset=&quot;/_astro/bugrelated.uM3Z5L78_1RbLie.webp 640w, /_astro/bugrelated.uM3Z5L78_8KsKu.webp 750w, /_astro/bugrelated.uM3Z5L78_Z1gcpmn.webp 828w, /_astro/bugrelated.uM3Z5L78_2oobow.webp 893w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Bug 的等级&lt;a href=&quot;#bug-的等级&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;根据 Bug 的严重等级来确定修复的优先度，一些公司会以提多少 Bug 来作为你的绩效。&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;严重等级&lt;/th&gt;&lt;th&gt;核心定义&lt;/th&gt;&lt;th&gt;典型场景&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;致命（Blocker/Critical）&lt;/td&gt;&lt;td&gt;阻断核心业务流程，导致系统瘫痪、数据不可逆丢失 / 泄露，影响全量 / 大面积用户&lt;/td&gt;&lt;td&gt;程序崩溃闪退、主功能完全不可用、数据库损坏、支付资金异常、高危远程代码执行漏洞&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;严重（Major）&lt;/td&gt;&lt;td&gt;核心功能严重错误，主业务流程受阻，无替代解决方案&lt;/td&gt;&lt;td&gt;核心功能逻辑计算错误、关键数据展示异常、接口大面积报错、性能不达标导致业务无法正常执行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;一般（Normal/Minor，&lt;code&gt;最多&lt;/code&gt;）&lt;/td&gt;&lt;td&gt;次要功能异常、非核心流程问题，有替代方案，不影响主业务运行&lt;/td&gt;&lt;td&gt;非必填项校验异常、次要页面 UI 错位、提示文案错误、非核心接口偶发报错&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;轻微（Trivial/Enhancement）&lt;/td&gt;&lt;td&gt;不影响功能使用，仅为体验优化、细节规范问题&lt;/td&gt;&lt;td&gt;界面字体 / 颜色不统一、冗余提示文案、操作体验优化建议、不影响理解的拼写错误&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;优先级 ≠ 严重等级：严重等级代表问题的危害程度，优先级代表修复的紧急程度。比如致命 Bug 默认最高优先级，而部分 UI 体验问题虽等级轻微，但涉及品牌宣传，可设为高优先级。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Bug 必填要素&lt;a href=&quot;#bug-必填要素&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;一份规范的 Bug 单，能让开发快速复现、定位、修复问题，避免无效沟通，核心必填项如下：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;精准标题：一句话概括核心问题，推荐格式：【所属模块】+ 操作场景 + 异常结果。示例：【登录模块】手机号输入 12 位数字，点击登录无报错提示且无法提交。&lt;/li&gt;
&lt;li&gt;前置条件：复现 Bug 所需的环境、版本、账号、前置操作等基础信息。&lt;/li&gt;
&lt;li&gt;复现步骤：按 1/2/3 序号清晰罗列操作步骤，无遗漏、无歧义，确保开发按步骤可稳定复现。&lt;/li&gt;
&lt;li&gt;实际结果：执行操作步骤后，软件实际出现的异常现象，客观描述，不添加主观判断。&lt;/li&gt;
&lt;li&gt;预期结果：按照需求文档 / 行业规范，软件应该呈现的正确结果。&lt;/li&gt;
&lt;li&gt;辅助附件：问题截图、录屏、服务端 / 客户端日志、抓包数据、测试账号密码、环境信息（APP 版本号、设备型号、系统版本、浏览器版本、接口地址等）。&lt;/li&gt;
&lt;li&gt;基础属性：严重等级、优先级、所属模块、提交人、提交时间、关联需求 ID / 测试用例 ID。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;主流 Bug 管理工具&lt;a href=&quot;#主流-bug-管理工具&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;企业级商用：Jira、TAPD（腾讯）、阿里云效、飞书项目、ONES&lt;/li&gt;
&lt;li&gt;开源 / 免费：禅道（&lt;code&gt;常用&lt;/code&gt;）、Mantis、Bugzilla&lt;/li&gt;
&lt;li&gt;轻量协作：Notion、飞书多维表格、Trello&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;不管是开源还是商业的缺陷管理工具，它们&lt;code&gt;本质都是一样&lt;/code&gt;的，用来管理bug的生命周期。掌握其中一款工具，自然就会用其他的，稍微有一点点区别的，别人加以指点，就可以明白了。&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1397&quot; height=&quot;844&quot; src=&quot;/_astro/zaotao.IwfVx05l_nveoc.webp&quot; srcset=&quot;/_astro/zaotao.IwfVx05l_GGDhG.webp 640w, /_astro/zaotao.IwfVx05l_Z1Rn2py.webp 750w, /_astro/zaotao.IwfVx05l_1avri.webp 828w, /_astro/zaotao.IwfVx05l_2b586O.webp 1080w, /_astro/zaotao.IwfVx05l_Z1wWtoY.webp 1280w, /_astro/zaotao.IwfVx05l_nveoc.webp 1397w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Bug 跟踪&lt;a href=&quot;#bug-跟踪&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;发现bug后，接下来你提交到bug管理平台，提交一个bug包含哪些内容？&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;bug标题——标题要&lt;code&gt;清晰简洁&lt;/code&gt;，写明bug描述；如果没有选择功能模块，最好在标题中标注功能模块。让查看bug的人员清楚知道你所表达的意思。bug的功能模块 + &lt;code&gt;bug的操作 + bug的结果&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;重现步骤——&lt;code&gt;详细&lt;/code&gt;写下发现bug的测试过程。能指导开发重现这个bug。附上测试数据。&lt;/li&gt;
&lt;li&gt;实际结果：出现bug的结果，粘贴bug截图、日志截图&lt;/li&gt;
&lt;li&gt;预期结果 — 记得写清楚&lt;code&gt;预期&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;bug类型和严重程度 —— 便于后续测试结果分析，bug的统计&lt;/li&gt;
&lt;li&gt;bug测试环境——例如：什么系统，哪个版本等。兼容性问题、难以重现问题&lt;/li&gt;
&lt;li&gt;附件—日志文件，文件测试数据。图片、崩溃日志文件等&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;截止日期一般由开发人员填写，测试人员没必要去选择日期。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;注意点&lt;a href=&quot;#注意点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;一个 Bug 单只记录一个问题，禁止多个问题合并提交，避免修复遗漏、无法跟踪闭环。&lt;/li&gt;
&lt;li&gt;客观描述事实，拒绝主观判断。比如不能写 “这个页面好丑”，应写 “【个人中心】头像边框与设计稿不符，设计稿圆角 8px，实际为 0px”。&lt;/li&gt;
&lt;li&gt;严禁无复现步骤提交 Bug，必须确保步骤完整，开发可复现；偶现 Bug 需标注复现概率、出现场景、留存日志，不可直接忽略。&lt;/li&gt;
&lt;li&gt;提交前先核对需求文档，确认需求理解无误，避免把需求变更、产品设计逻辑当成 Bug 提交。&lt;/li&gt;
&lt;li&gt;回归测试不局限于 Bug 本身，需同步校验关联功能，避免修复一个 Bug 衍生出新的问题。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>测试计划与测试报告编写</title><link>https://umami.eu.cc/posts/plan-report-write/</link><guid isPermaLink="true">https://umami.eu.cc/posts/plan-report-write/</guid><description>关于软件计划跟测试报告的相关概念</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;测试计划&lt;a href=&quot;#测试计划&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;测试计划一般由测试负责人来主导，输出测试全流程的&lt;code&gt;纲领性核心文档&lt;/code&gt;，明确测试&lt;code&gt;全流程的目标、范围、策略、资源、进度、风险与规则&lt;/code&gt;，保障测试活动可控、可追溯、可落地。&lt;/p&gt;&lt;p&gt;测试计划一般包含几个内容，大致可以称为 &lt;code&gt;&quot;5W+1H&quot;&lt;/code&gt;，其包含的内容：&lt;code&gt;测试目的（why）&lt;/code&gt;、&lt;code&gt;测试范围（what）&lt;/code&gt;、&lt;code&gt;测试进度安排（when）&lt;/code&gt;、&lt;code&gt;测试环境（where）&lt;/code&gt;、&lt;code&gt;测试方法+测试工具（how）&lt;/code&gt;，&lt;code&gt;风险评估(需求变更 / 人员变动)&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;一个项目大约 &lt;code&gt;60% ~ 70%&lt;/code&gt; 的时间都在进行开发，留给测试的有 &lt;code&gt;30% ~ 40%&lt;/code&gt; 的时间。&lt;/p&gt;&lt;p&gt;一般测试计划会在一天内完成；需求分析和测试用例编写所需时间大致成 &lt;code&gt;3:4&lt;/code&gt;；测试执行会分多轮，但与编写测试用例所需时间大约成 &lt;code&gt;1:1&lt;/code&gt;；测试报告则在1天到半天左右时间；这些时间是大致上所需时间分配，具体以测试计划排期为主。&lt;/p&gt;&lt;p&gt;在进行测试执行前，会对项目主流程进行一次冒烟测试，通过且已搭建好测试环境后，才正式开始执行测试用例。而在缺陷遗留率达到预定质量目标时会结束测试。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;测试报告&lt;a href=&quot;#测试报告&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;一份评估软件质量的测试文档。一般指定某个测试人员去其他测试人员那里收集测试数据，编写该项目&lt;code&gt;仅此一份&lt;/code&gt;的测试报告。&lt;/p&gt;&lt;p&gt;每个公司都会有自已的测试报告模板，根据其所需照写即可。而一般测试报告会包含：&lt;code&gt;测试范围&lt;/code&gt;、&lt;code&gt;测试环境&lt;/code&gt;、&lt;code&gt;遗留的bug有哪些&lt;/code&gt;、&lt;code&gt;测试用例覆盖率有多少&lt;/code&gt;、&lt;code&gt;bug的统计与分析&lt;/code&gt;、&lt;code&gt;风险有哪些&lt;/code&gt;、&lt;code&gt;版本测试评估&lt;/code&gt;、&lt;code&gt;发布的建议&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1041&quot; height=&quot;520&quot; src=&quot;/_astro/cehibaogao.D3amkd6G_1oE1PB.webp&quot; srcset=&quot;/_astro/cehibaogao.D3amkd6G_GAVzS.webp 640w, /_astro/cehibaogao.D3amkd6G_Z2aTSC9.webp 750w, /_astro/cehibaogao.D3amkd6G_8Lasp.webp 828w, /_astro/cehibaogao.D3amkd6G_1oE1PB.webp 1041w&quot; /&gt;&lt;/p&gt;&lt;p&gt;关于测试报告一些重要地方：
&lt;img loading=&quot;lazy&quot; width=&quot;885&quot; height=&quot;198&quot; src=&quot;/_astro/cehibaogao1.sGRKoPwU_Z1tuhsX.webp&quot; srcset=&quot;/_astro/cehibaogao1.sGRKoPwU_enLNU.webp 640w, /_astro/cehibaogao1.sGRKoPwU_2igaRP.webp 750w, /_astro/cehibaogao1.sGRKoPwU_28SM0X.webp 828w, /_astro/cehibaogao1.sGRKoPwU_Z1tuhsX.webp 885w&quot; /&gt;&lt;/p&gt;&lt;p&gt;通过率是&lt;code&gt;已通过的用例数跟已执行的用例数相除&lt;/code&gt;可得，而执行率则是&lt;code&gt;已执行用例数跟总用例数相除&lt;/code&gt;可得。&lt;/p&gt;&lt;p&gt;通过缺陷管理工具提供的报表进行 Bug 数据统计：
&lt;img loading=&quot;lazy&quot; width=&quot;931&quot; height=&quot;580&quot; src=&quot;/_astro/cehibaogao2.B4rTvVId_Zud0Wp.webp&quot; srcset=&quot;/_astro/cehibaogao2.B4rTvVId_sj69R.webp 640w, /_astro/cehibaogao2.B4rTvVId_1w3htb.webp 750w, /_astro/cehibaogao2.B4rTvVId_uRycr.webp 828w, /_astro/cehibaogao2.B4rTvVId_Zud0Wp.webp 931w&quot; /&gt;&lt;/p&gt;&lt;p&gt;Bug 最好在测试执行第一轮就发现，而不是等第二轮或者之后，这关乎到测试人员是否厉害。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>测试用例设计方法之因果图判定表法</title><link>https://umami.eu.cc/posts/error-guess-graph/</link><guid isPermaLink="true">https://umami.eu.cc/posts/error-guess-graph/</guid><description>除了常用的等价类、边界值、场景法、正交实验法外的其余几种方法</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;因果图&lt;a href=&quot;#因果图&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;因果图法（Cause-Effect Graphing） 是一种经典的黑盒测试用例设计方法，核心是通过&lt;code&gt;图形化方式&lt;/code&gt;梳理输入条件（因）与输出结果（果）之间的逻辑组合与约束关系，最终转化为判定表来生成测试用例，特别适合&lt;code&gt;多条件组合、业务逻辑复杂&lt;/code&gt;的功能模块。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;基本概念&lt;a href=&quot;#基本概念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;因 (Cause)&lt;/strong&gt;：输入条件、操作、状态（如：输入内容、按钮点击、选项勾选）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;果 (Effect)&lt;/strong&gt;：输出结果、系统状态变化（如：提示信息、页面跳转、数据保存）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心价值&lt;/strong&gt;：解决等价类、边界值无法覆盖的&lt;code&gt;多条件组合&lt;/code&gt;问题，确保&lt;code&gt;逻辑全覆盖&lt;/code&gt;，发现隐藏缺陷。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;基本逻辑关系&lt;a href=&quot;#基本逻辑关系&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;恒等（Identity）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;因 = 1 → 果 = 1&lt;/li&gt;
&lt;li&gt;因 = 0 → 果 = 0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;非（Not）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;因 = 1 → 果 = 0&lt;/li&gt;
&lt;li&gt;因 = 0 → 果 = 1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;或（Or）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多个因任意一个为 1 → 果 = 1&lt;/li&gt;
&lt;li&gt;全 0 → 果 = 0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;与（And）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多个因全部为 1 → 果 = 1&lt;/li&gt;
&lt;li&gt;有一个 0 → 果 = 0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;约束条件&lt;a href=&quot;#约束条件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;约束只限制因之间或果之间，不画逻辑关系。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;互斥约束 E（Exclusive）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多个因&lt;code&gt;最多只能&lt;/code&gt;有一个为 1&lt;/li&gt;
&lt;li&gt;可以全 0，不能同时≥2 个 1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;包含约束 I（Inclusive）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多个因&lt;code&gt;至少一个&lt;/code&gt;为 1&lt;/li&gt;
&lt;li&gt;不能全 0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;唯一约束 O（Only）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多个因&lt;code&gt;有且仅有&lt;/code&gt;一个为 1&lt;/li&gt;
&lt;li&gt;不能全 0，也不能≥2 个 1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要求约束 R（Requires）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;若因 A=1，则因 B 必须 = 1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;A=1，B=0 不合法&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;屏蔽约束 M（Masking）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只作用在结果之间&lt;/li&gt;
&lt;li&gt;&lt;code&gt;若果 E1=1，则果 E2 必须 = 0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;E1、E2 不能同时为 1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1040&quot; height=&quot;569&quot; src=&quot;/_astro/Snipaste_2026-03-20_20-51-03.CPT5tzv3_Zlnmj8.webp&quot; srcset=&quot;/_astro/Snipaste_2026-03-20_20-51-03.CPT5tzv3_1l8OYq.webp 640w, /_astro/Snipaste_2026-03-20_20-51-03.CPT5tzv3_Z26eyD0.webp 750w, /_astro/Snipaste_2026-03-20_20-51-03.CPT5tzv3_Z7CqGl.webp 828w, /_astro/Snipaste_2026-03-20_20-51-03.CPT5tzv3_Zlnmj8.webp 1040w&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;设计步骤&lt;a href=&quot;#设计步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;分析需求，&lt;code&gt;拆分因 / 果&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提取所有输入条件（C1, C2, C3…）&lt;/li&gt;
&lt;li&gt;提取所有输出 / 结果（E1, E2, E3…）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;绘制因果图&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用逻辑符号（与 / 或 / 非）连接因 → 果&lt;/li&gt;
&lt;li&gt;标注约束（E/I/O/R/M），排除非法组合&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;转换为判定表（决策表）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;行：因（输入）、果（输出）&lt;/li&gt;
&lt;li&gt;列：所有有效条件组合&lt;/li&gt;
&lt;li&gt;单元格：0/1 表示&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;简化判定表（可选）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;合并相似列、剔除无效列&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;生成测试用例&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每一列 → 一条用例（输入 + 预期输出）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;案例&lt;a href=&quot;#案例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;经典案例：自动售货机&lt;/p&gt;&lt;p&gt;需求：
- 饮料单价 1.5 元
- 投入 1.5 元 → 按按钮 → 出饮料
- 投入 2 元 → 按按钮 → 出饮料 + 找零 0.5 元&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;拆分因 / 果&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;因 (C)：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;C1：投入 1.5 元&lt;/li&gt;
&lt;li&gt;C2：投入 2 元&lt;/li&gt;
&lt;li&gt;C3：按 “可乐”&lt;/li&gt;
&lt;li&gt;C4：按 “雪碧”&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;果 (E)：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;E1：出可乐&lt;/li&gt;
&lt;li&gt;E2：出雪碧&lt;/li&gt;
&lt;li&gt;E3：找零 0.5 元&lt;/li&gt;
&lt;li&gt;E4：无任何出货 / 提示（金额不足 / 操作无效）&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;约束&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;E（互斥）：C1 与 C2 不能同时为 1&lt;/li&gt;
&lt;li&gt;E（互斥）：C3 与 C4 不能同时为 1&lt;/li&gt;
&lt;li&gt;不投币、只按键：无效操作&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;判定表&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;总原始组合 16 种，过滤非法后保留有效场景：&lt;/p&gt;




























































































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;序号&lt;/th&gt;&lt;th&gt;C1 (投 1.5)&lt;/th&gt;&lt;th&gt;C2 (投 2)&lt;/th&gt;&lt;th&gt;C3 (按可乐)&lt;/th&gt;&lt;th&gt;C4 (按雪碧)&lt;/th&gt;&lt;th&gt;E1 (出可乐)&lt;/th&gt;&lt;th&gt;E2 (出雪碧)&lt;/th&gt;&lt;th&gt;E3 (找 0.5)&lt;/th&gt;&lt;th&gt;E4 (无效)&lt;/th&gt;&lt;th&gt;场景说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;不投币、不按键&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;只按可乐，不投币&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;只按雪碧，不投币&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;投 1.5 元 + 按可乐&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;投 1.5 元 + 按雪碧&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;投 2 元 + 按可乐，找零&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;投 2 元 + 按雪碧，找零&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;只投 1.5 元，不按键&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;只投 2 元，不按键&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;1 = 满足，0 = 不满足；已删掉 &lt;code&gt;C1=1 且 C2=1、C3=1 且 C4=1&lt;/code&gt; 这类矛盾行，实际业务不可能出现。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;简化判定表（可选）&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;剔除无效场景，仅保留6条核心有效用例：&lt;/p&gt;




























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;用例编号&lt;/th&gt;&lt;th&gt;输入条件（投币+按键）&lt;/th&gt;&lt;th&gt;预期出可乐&lt;/th&gt;&lt;th&gt;预期出雪碧&lt;/th&gt;&lt;th&gt;预期找零0.5元&lt;/th&gt;&lt;th&gt;预期结果说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;TC-VM-001&lt;/td&gt;&lt;td&gt;投1.5元+按可乐&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;正常吐出可乐，无找零&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC-VM-002&lt;/td&gt;&lt;td&gt;投1.5元+按雪碧&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;正常吐出雪碧，无找零&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC-VM-003&lt;/td&gt;&lt;td&gt;投2元+按可乐&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;吐出可乐+找零0.5元&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC-VM-004&lt;/td&gt;&lt;td&gt;投2元+按雪碧&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;吐出雪碧+找零0.5元&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC-VM-005&lt;/td&gt;&lt;td&gt;只按键不投币（可乐/雪碧）&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;无任何动作，操作无效&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC-VM-006&lt;/td&gt;&lt;td&gt;只投币不按键（1.5元/2元）&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;待机无动作，操作无效&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;section&gt;&lt;h4&gt;其他案例&lt;a href=&quot;#其他案例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;E/I/O/R&lt;/strong&gt;：管&lt;strong&gt;输入条件之间&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;M&lt;/strong&gt;：管&lt;strong&gt;输出结果之间&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;因果图 = 逻辑关系 + 约束 → 判定表 → 测试用例&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;找出因和果&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;某个软件规格说明书中规定：第一列字符必须是*或#，第二列字符必须是一个数字，在此情况下进行文件的修改，但如果第一列字符不正确，则给出信息M；如果第二列字符不正确，则给出N&lt;/p&gt;&lt;p&gt;因：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;C1：第一列字符为*&lt;/li&gt;
&lt;li&gt;C2：第一列字符为#&lt;/li&gt;
&lt;li&gt;C3：第二列字符为数字&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;果：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;E1：修改文件&lt;/li&gt;
&lt;li&gt;E2：给出信息M&lt;/li&gt;
&lt;li&gt;E3：给出信息N&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;理清它们之间的关系&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根据对应的关系画出因果图
&lt;img loading=&quot;lazy&quot; width=&quot;1740&quot; height=&quot;1340&quot; src=&quot;/_astro/exported_image.CUHRj4mU_ZYX4rE.webp&quot; srcset=&quot;/_astro/exported_image.CUHRj4mU_ZHEzW.webp 640w, /_astro/exported_image.CUHRj4mU_1Geshi.webp 750w, /_astro/exported_image.CUHRj4mU_1CS5aV.webp 828w, /_astro/exported_image.CUHRj4mU_2sFtrT.webp 1080w, /_astro/exported_image.CUHRj4mU_ppp7u.webp 1280w, /_astro/exported_image.CUHRj4mU_1xt1aJ.webp 1668w, /_astro/exported_image.CUHRj4mU_ZYX4rE.webp 1740w&quot; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根据因果图转成判定表/决策表
&lt;img loading=&quot;lazy&quot; width=&quot;831&quot; height=&quot;233&quot; src=&quot;/_astro/Snipaste_2026-03-20_21-33-40.D1tZ4VNe_jSesL.webp&quot; srcset=&quot;/_astro/Snipaste_2026-03-20_21-33-40.D1tZ4VNe_1cric9.webp 640w, /_astro/Snipaste_2026-03-20_21-33-40.D1tZ4VNe_iHv7W.webp 750w, /_astro/Snipaste_2026-03-20_21-33-40.D1tZ4VNe_ZswgYn.webp 828w, /_astro/Snipaste_2026-03-20_21-33-40.D1tZ4VNe_jSesL.webp 831w&quot; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根据决策表变成测试用例&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;判定表&lt;a href=&quot;#判定表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;判定表（Decision Table），也叫决策表，是黑盒测试用例设计中逻辑最严谨、覆盖最完备的结构化方法，核心是将&lt;code&gt;多输入条件的所有组合、对应的业务规则与输出动作，以表格形式完整呈现&lt;/code&gt;，从根本上避免逻辑分支遗漏，尤其擅长处理&lt;code&gt;多条件联动、多规则约束&lt;/code&gt;的复杂业务场景，是功能测试中处理逻辑判断类需求的核心方法之一。&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;417&quot; height=&quot;313&quot; src=&quot;/_astro/panding.DOZ2Wlsl_ZciPfo.webp&quot; srcset=&quot;/_astro/panding.DOZ2Wlsl_ZciPfo.webp 417w&quot; /&gt;&lt;/p&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;组成部分&lt;/th&gt;&lt;th&gt;定义说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;条件桩（Condition Stub）&lt;/td&gt;&lt;td&gt;列出所有影响系统输出的独立输入条件 / 判断因子，建议按业务优先级排序，每个条件桩仅对应一个布尔判断（是 / 否、真 / 假）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;动作桩（Action Stub）&lt;/td&gt;&lt;td&gt;列出条件组合触发后，系统所有可能执行的操作、输出结果或业务处理动作&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;条件项（Condition Entry）&lt;/td&gt;&lt;td&gt;针对条件桩，列出所有可能的取值组合（常用 Y/N、1/0 表示，也支持多枚举值），确保无重复、无遗漏&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;动作项（Action Entry）&lt;/td&gt;&lt;td&gt;对应每一组条件项组合，明确该规则下需要触发的动作桩结果（常用√标记执行动作）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;规则（Rule）&lt;/td&gt;&lt;td&gt;一组条件项 + 对应的动作项，构成一条完整的业务规则，&lt;code&gt;一条规则对应至少一条测试用例&lt;/code&gt;，是判定表的核心执行单元&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;section&gt;&lt;h3&gt;数学基础与规则计算&lt;a href=&quot;#数学基础与规则计算&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;判定表的完备性，核心来自对条件组合的全量枚举：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;若 n 个条件均为布尔型（2 个取值：是 / 否），则总规则数 = 2ⁿ&lt;/li&gt;
&lt;li&gt;若条件有多个枚举值（如会员等级分普通 / 银卡 / 金卡），则总规则数 = 每个条件的取值数的乘积（m₁×m₂×…×mₙ）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;示例：3 个布尔型条件，总规则数 = 2³=8 条，可覆盖所有条件组合。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;设计步骤（附实战案例）&lt;a href=&quot;#设计步骤附实战案例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;分析需求，确定条件桩与动作桩&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;业务需求&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录需校验 3 项内容：用户名、密码、图形验证码&lt;/li&gt;
&lt;li&gt;仅当用户名正确、密码正确、验证码匹配时，登录成功&lt;/li&gt;
&lt;li&gt;用户名错误，直接提示「用户名不存在」，无需校验后续项&lt;/li&gt;
&lt;li&gt;用户名正确、密码错误，提示「密码错误」&lt;/li&gt;
&lt;li&gt;用户名和密码正确、验证码错误，提示「验证码错误」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;拆解业务规则，拆分独立的输入条件和所有可能的输出动作，&lt;code&gt;严禁一个条件桩包含多个判断&lt;/code&gt;，避免逻辑遗漏。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;条件桩：C1. 用户名正确；C2. 密码正确；C3. 验证码匹配（均为布尔型：Y/N）&lt;/li&gt;
&lt;li&gt;动作桩：A1. 登录成功；A2. 提示用户名不存在；A3. 提示密码错误；A4. 提示验证码错误&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;计算规则总数，确定表格规模&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;根据条件桩的数量和每个条件的取值数，计算理论最大规则数，搭建表格框架。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;3 个布尔条件，总规则数 = 2³= 8 条&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;填充全量条件项组合&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;按&lt;code&gt;二进制枚举&lt;/code&gt;的方式，逐列填充所有条件的取值组合，确保无遗漏、无重复。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;匹配业务规则，填充动作项&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;对照需求文档，为每一组条件项组合，明确对应的动作结果，完成初始判定表。&lt;/p&gt;




























































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;条件桩 / 动作桩&lt;/th&gt;&lt;th&gt;规则 1&lt;/th&gt;&lt;th&gt;规则 2&lt;/th&gt;&lt;th&gt;规则 3&lt;/th&gt;&lt;th&gt;规则 4&lt;/th&gt;&lt;th&gt;规则 5&lt;/th&gt;&lt;th&gt;规则 6&lt;/th&gt;&lt;th&gt;规则 7&lt;/th&gt;&lt;th&gt;规则 8&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;C1. 用户名正确&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C2. 密码正确&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C3. 验证码匹配&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;A1. 登录成功&lt;/td&gt;&lt;td&gt;√&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;A2. 提示用户名不存在&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;√&lt;/td&gt;&lt;td&gt;√&lt;/td&gt;&lt;td&gt;√&lt;/td&gt;&lt;td&gt;√&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;A3. 提示密码错误&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;√&lt;/td&gt;&lt;td&gt;√&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;A4. 提示验证码错误&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;√&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ol&gt;
&lt;li&gt;简化合并等价规则&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;合并核心原则：多条规则中，只有一个条件取值不同，其余条件完全一致，且触发的动作完全相同，可合并为一条规则，该不同条件用 &lt;code&gt;-&lt;/code&gt; 标记为「无关项 / 不影响结果」。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;严禁为减少规则数强行合并动作不同、或条件存在业务关联的规则，避免覆盖遗漏。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;663&quot; height=&quot;342&quot; src=&quot;/_astro/Snipaste_2026-03-20_21-57-06.DwVQ9Psk_1DxEH9.webp&quot; srcset=&quot;/_astro/Snipaste_2026-03-20_21-57-06.DwVQ9Psk_1FejRv.webp 640w, /_astro/Snipaste_2026-03-20_21-57-06.DwVQ9Psk_1DxEH9.webp 663w&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;规则 5-8：仅 C1=N，其余条件无论取值如何，动作均为 A2，可合并。&lt;/li&gt;
&lt;li&gt;规则 3-4：C1=Y、C2=N，C3 取值不影响动作，可合并。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;最终简化表：&lt;/p&gt;




























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;条件桩 / 动作桩&lt;/th&gt;&lt;th&gt;规则 1&lt;/th&gt;&lt;th&gt;规则 2&lt;/th&gt;&lt;th&gt;规则 3&lt;/th&gt;&lt;th&gt;规则 4&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;C1. 用户名正确&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C2. 密码正确&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C3. 验证码匹配&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;A1. 登录成功&lt;/td&gt;&lt;td&gt;√&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;A2. 提示用户名不存在&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;√&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;A3. 提示密码错误&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;√&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;A4. 提示验证码错误&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;√&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ol&gt;
&lt;li&gt;基于规则生成测试用例&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;将简化后的每一条规则，转换为一条可执行的测试用例，明确测试输入、执行步骤与预期结果。&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;用例编号&lt;/th&gt;&lt;th&gt;测试输入&lt;/th&gt;&lt;th&gt;预期结果&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;TC01&lt;/td&gt;&lt;td&gt;正确用户名、正确密码、匹配验证码&lt;/td&gt;&lt;td&gt;登录成功&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC02&lt;/td&gt;&lt;td&gt;正确用户名、正确密码、错误验证码&lt;/td&gt;&lt;td&gt;提示「验证码错误」&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC03&lt;/td&gt;&lt;td&gt;正确用户名、错误密码、任意验证码&lt;/td&gt;&lt;td&gt;提示「密码错误」&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC04&lt;/td&gt;&lt;td&gt;错误用户名、任意密码、任意验证码&lt;/td&gt;&lt;td&gt;提示「用户名不存在」&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;场景&lt;a href=&quot;#场景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;多条件联动、多分支逻辑判断的业务（如登录、权限校验、表单校验、营销规则、金融风控）&lt;/li&gt;
&lt;li&gt;业务规则有明确的「条件 - 结果」对应关系，需求对逻辑分支有清晰定义&lt;/li&gt;
&lt;li&gt;需要确保测试覆盖无遗漏，避免边界逻辑漏洞的核心功能&lt;/li&gt;
&lt;li&gt;跨角色需求 / 用例评审，需要可视化呈现所有业务规则，对齐认知&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;不适用场景&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;条件桩数量过多（如超过 10 个布尔条件，规则数超 1024 条），出现规则爆炸，维护成本极高&lt;/li&gt;
&lt;li&gt;业务逻辑以循环、时序流程、状态流转为主，而非条件判断分支&lt;/li&gt;
&lt;li&gt;输入条件的取值无法明确枚举，边界模糊的场景&lt;/li&gt;
&lt;li&gt;条件之间无逻辑关联、相互独立的简单场景&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;优缺点&lt;a href=&quot;#优缺点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;优点&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;逻辑严谨，覆盖完备&lt;/strong&gt;：枚举所有条件组合，从根本上避免遗漏业务规则和测试分支，是黑盒方法中逻辑完整性最强的方法之一&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可视化强，便于对齐&lt;/strong&gt;：表格形式清晰呈现所有「条件 - 动作」规则，便于测试人员梳理需求，也能快速发现需求中的逻辑漏洞&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可维护性强&lt;/strong&gt;：需求变更时，只需调整对应条件桩、动作桩和规则，无需重构整体用例框架&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用例设计高效&lt;/strong&gt;：一条规则对应一条用例，避免重复设计，且能精准定位缺陷对应的业务规则&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;缺点&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;规则数指数级增长&lt;/strong&gt;：条件数量增加时，规则数呈指数级爆炸，维护成本急剧上升&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;需求梳理要求高&lt;/strong&gt;：若条件桩、动作桩拆分错误，会导致整个判定表失效，需要测试人员对业务规则有深度理解&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;场景适配有限&lt;/strong&gt;：无法很好地处理循环、顺序执行、状态流转类的业务场景，需配合状态迁移图等方法使用&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;使用技巧与避坑&lt;a href=&quot;#使用技巧与避坑&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;条件桩拆分原则&lt;/strong&gt;：每个条件桩仅对应一个布尔判断，避免一个条件桩包含多个判断（如不要把「用户名和密码正确」做成一个条件桩），否则会出现逻辑遗漏&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;合并规则的边界&lt;/strong&gt;：合并仅适用于不影响动作结果的无关项，严禁强行合并动作不同的规则，避免覆盖遗漏&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多取值条件处理&lt;/strong&gt;：若一个条件有多个枚举值（如会员等级），按实际取值数计算规则数，不要强行转为布尔值，避免逻辑失真&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;大规模条件优化&lt;/strong&gt;：当条件数过多时，可配合&lt;strong&gt;正交试验法&lt;/strong&gt;减少规则数，或按业务模块拆分多个子判定表，分别处理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;与其他方法配合&lt;/strong&gt;：等价类划分确定条件的取值范围，边界值确定临界输入，判定表覆盖组合场景，三者配合使用可实现最高效的测试覆盖&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;错误推断法&lt;a href=&quot;#错误推断法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;错误推断法是黑盒测试中典型的&lt;code&gt;经验驱动型&lt;/code&gt;测试用例设计方法，核心是基于&lt;code&gt;测试人员的行业经验&lt;/code&gt;、项目历史缺陷数据、业务认知与直觉，预判软件中可能存在的错误、缺陷、异常场景与边界风险，针对性设计测试用例，直击高风险模块，而&lt;code&gt;非依赖标准化的逻辑拆分规则&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;它无法替代等价类划分、边界值分析等标准化测试方法，核心定位是补充测试手段，用于覆盖规范方法难以触达的隐性缺陷。&lt;/p&gt;&lt;hr /&gt;&lt;section&gt;&lt;h3&gt;推断依据&lt;a href=&quot;#推断依据&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;错误推断法不是无依据的随机测试，所有用例设计均需&lt;code&gt;基于可沉淀的经验依据&lt;/code&gt;，核心来源如下：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;项目历史缺陷库&lt;/strong&gt;：过往版本、同类型功能反复出现的高频 bug（如表单重复提交、接口超时无兜底、大数据量分页崩溃），是最高优先级的推断依据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;行业通用易错场景&lt;/strong&gt;：全行业软件的共性缺陷点，包括空值 / Null / 特殊字符输入、数值边界溢出、权限越权操作、并发场景数据不一致、弱网 / 断网异常、浏览器 / 设备兼容性问题、敏感信息泄露等。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;业务核心风险点&lt;/strong&gt;：产品核心流程的高风险分支，如支付退款、库存扣减、用户账号注销、数据备份与恢复、合规校验等场景。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;研发团队特性&lt;/strong&gt;：开发人员的编码习惯（如部分开发易忽略异常处理、边界校验）、重构 / 迭代频繁的模块、历史债务重的老系统、第三方依赖接口等。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;合规与安全通用漏洞&lt;/strong&gt;：如 SQL 注入、XSS 跨站脚本、CSRF 跨站请求伪造、未授权访问等常见安全风险。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;实施步骤&lt;a href=&quot;#实施步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;沉淀与维护错误知识库&lt;/strong&gt;：搭建团队级缺陷台账，分类归档历史 bug、行业通用错误、业务风险点，形成可复用的错误推断清单。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;拆解模块与风险预判&lt;/strong&gt;：针对待测功能模块，结合错误知识库，梳理该模块可能出现的所有错误类型、触发场景与诱因。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;针对性设计测试用例&lt;/strong&gt;：为每一个预判的错误点设计专属用例，明确前置条件、操作步骤、输入数据、预期结果，重点覆盖异常分支与极端场景。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;执行测试与闭环迭代&lt;/strong&gt;：执行用例验证缺陷，同时将本次新发现的 bug 补充至错误知识库，持续优化推断清单，形成经验闭环。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;典型示例&lt;a href=&quot;#典型示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;针对用户登录模块，通过错误推断法可快速设计以下高优先级测试用例：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;账号 / 密码输入空值、超长字符串、特殊字符、SQL 注入语句，校验是否有合规拦截与异常兜底&lt;/li&gt;
&lt;li&gt;连续多次输错密码，校验账号锁定机制是否生效，是否存在锁定绕过漏洞&lt;/li&gt;
&lt;li&gt;弱网 / 断网环境下提交登录请求，网络恢复后是否出现重复提交、多 token 生成问题&lt;/li&gt;
&lt;li&gt;登录成功后点击浏览器回退按钮，是否可重复登录、是否能未授权访问受限页面&lt;/li&gt;
&lt;li&gt;第三方登录授权失败 / 取消授权时，是否出现页面白屏、流程卡死无兜底的问题&lt;/li&gt;
&lt;li&gt;记住密码功能在无痕模式、多浏览器切换场景下，是否存在账号信息泄露风险&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;优缺点&lt;a href=&quot;#优缺点-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;维度&lt;/th&gt;&lt;th&gt;核心说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;优点&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;1.高效直击高风险点，项目周期紧张时，可快速发现核心严重缺陷&lt;br /&gt;2.灵活性强，可覆盖等价类、边界值等规范方法无法触达的隐性场景&lt;br /&gt;3.落地成本低，无需复杂的逻辑建模与用例拆分，可快速产出测试用例&lt;br /&gt;4.补充性极强，与标准化方法搭配使用，可大幅提升测试覆盖率与缺陷检出率&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;缺点&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;1.效果高度依赖测试人员的经验、业务理解与技术能力，新人难以落地，效果不稳定&lt;br /&gt;2.无标准化执行流程，用例覆盖度不可控，易出现主观漏测&lt;br /&gt;3.测试过程与成果难以量化，无法精准评估风险覆盖程度&lt;br /&gt;4.不可作为核心测试方法，仅能作为补充手段，无法替代规范的用例设计方法&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;注意事项&lt;a href=&quot;#注意事项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;严禁单独使用&lt;/strong&gt;：&lt;code&gt;高风险核心模块&lt;/code&gt;（支付、交易、用户数据等），必须以等价类划分、边界值分析、场景法等标准化方法为核心，错误推断法仅用于补充测试。&lt;/li&gt;
&lt;li&gt;降低个人依赖：必须搭建团队共享的缺陷知识库与错误推断清单，将个人经验转化为组织资产，避免人员流动导致测试能力断层。&lt;/li&gt;
&lt;li&gt;持续迭代优化：每次版本迭代、上线复盘后，必须将新发现的缺陷补充至知识库，持续更新高频风险点，提升推断精准度。&lt;/li&gt;
&lt;li&gt;区分随机测试：错误推断法是目标明确的针对性测试，而非无目的的随机点击、随意测试，所有用例必须有明确的风险预判依据。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;正交实验法&lt;a href=&quot;#正交实验法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;正交实验法（又称正交试验设计法）是一种基于统计学正交表的&lt;strong&gt;黑盒测试用例设计方法&lt;/strong&gt;，其核心价值在于解决多因素多水平场景下的“用例组合爆炸”问题——从海量输入组合中，筛选出少量具有高度代表性的测试点，以最少的测试用例实现最大化的场景覆盖，同时保证测试结果的可分析性和可靠性，是平衡测试效率与测试质量的核心方法之一。&lt;/p&gt;&lt;p&gt;掌握正交实验法，需先明确四个核心概念，这是后续用例设计的基础：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;因素（Factor/因子）&lt;/strong&gt;：对被测功能、系统输出结果产生直接影响的输入条件、参数、配置项或操作变量。简单来说，就是测试中需要控制的“变量”。例如：登录功能中的用户名、密码、验证码；兼容性测试中的浏览器类型、操作系统版本、屏幕分辨率。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;水平（Level/水平数）&lt;/strong&gt;：每个因素的可取值、可选状态或范围。水平的选取需结合等价类划分法、边界值分析法，优先覆盖有效、无效、边界等关键场景，避免无意义的重复取值。例如：用户名的水平可设置为「正确用户名、错误用户名、空值」3个水平；浏览器的水平可设置为「Chrome、Edge、Firefox」3个水平。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;正交表&lt;/strong&gt;：正交实验法的核心工具，是基于数学正交性原理预制的标准化表格，通用格式为  &lt;span&gt;&lt;span&gt;Ln(mk)L_n(m^k)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;m&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; ，各字母含义如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;LL&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;L&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; ：正交表的固定标识；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;nn&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; ：正交表的行数，即最终生成的测试用例数量；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;mm&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;m&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; ：每个因素的水平数（要求各因素水平数一致，混合水平需选用专用正交表）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;kk&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; ：正交表的列数，即该表格最多可容纳的因素数量。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;核心正交特性&lt;/strong&gt;：正交表的价值源于“均匀分散、整齐可比”两大特性，也是其区别于普通随机抽样的关键：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;均匀分散：每个因素的每个水平，在所有测试用例中出现的次数完全相等，确保用例在整个组合空间中均匀分布，代表性极强，避免局部场景覆盖不足；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;整齐可比：任意两列的水平组合出现次数完全相等，可通过测试结果精准定位“哪个因素、哪个水平”对功能结果影响最大，便于缺陷定位和根因分析。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;section&gt;&lt;h3&gt;场景&lt;a href=&quot;#场景-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;正交实验法是多因素组合场景的最优解，尤其适合以下情况：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;多输入参数、多条件联动的功能测试（如复杂表单提交、接口多参数校验、系统配置项联动测试）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;全量组合数量过大，无法实现穷举测试的场景（例如4因素3水平，全量组合有81个，正交法仅需9个用例即可覆盖核心场景）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;兼容性测试（浏览器、操作系统、分辨率、设备型号等多维度组合场景）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;性能测试的参数调优、接口压力测试的多变量组合场景；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;回归测试的用例精简，在有限时间内完成核心场景覆盖，提升回归效率。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;正交实验法并非万能，以下场景不建议使用：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;单因素单水平的简单功能校验（如单一按钮点击、单个输入框校验），无需复杂组合；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因素间存在强互斥、强依赖关系，且无法通过人工调整规避无效组合的场景（如“支付方式=现金”与“支付渠道=线上支付”无法同时出现，会导致大量无效用例）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;连续型变量无法离散化的场景（如温度、压力等连续值，无法拆分为明确的水平，需先进行离散化处理）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;设计步骤&lt;a href=&quot;#设计步骤-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;正交实验法的用例设计流程固定，核心分为6步，结合实战案例可快速掌握：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;明确测试目标，提取核心因素&lt;/strong&gt;：分析需求规格说明书，梳理所有影响被测功能输出的输入条件/参数，优先筛选对功能影响大、风险高的核心因素，剔除弱影响、无关因素（避免因素过多导致用例数冗余）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;确定每个因素的水平&lt;/strong&gt;：为每个核心因素设定有业务代表性的水平，结合等价类、边界值法，覆盖有效、无效、边界场景；尽量让各因素的水平数保持一致，简化正交表的选择（水平数不一致可选用混合水平正交表）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;选择适配的正交表&lt;/strong&gt;：选表核心原则：① 正交表的列数 &lt;span&gt;&lt;span&gt;kk&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; ≥实际因素数；② 正交表的水平数 &lt;span&gt;&lt;span&gt;mm&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;m&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; =实际因素的水平数；③ 在满足前两个条件的正交表中，选择行数 &lt;span&gt;&lt;span&gt;nn&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 最小的表（用例数最少，效率最高）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;因素水平映射到正交表&lt;/strong&gt;：将确定的因素一一对应到正交表的列，每个因素的水平按顺序替换正交表中的数字（如因素A的3个水平，替换正交表中“1、2、3”三个数字）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;生成基础测试用例&lt;/strong&gt;：正交表的每一行，对应一个可执行的测试用例，补充用例的前置条件、操作步骤、预期结果，形成完整的基础用例集。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;补充优化用例&lt;/strong&gt;：正交表生成的是核心覆盖用例，无法覆盖所有极端场景、全异常组合，需人工补充强业务相关、极端边界、全异常的特殊用例，降低漏测风险。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;实战案例（电商订单查询功能）&lt;a href=&quot;#实战案例电商订单查询功能&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;被测功能：电商后台订单查询功能，用户可通过“订单状态”“时间范围”“排序方式”三个条件组合查询订单，需设计高效的测试用例覆盖核心场景。&lt;/p&gt;&lt;section&gt;&lt;h4&gt;步骤1-2：确定因素与水平&lt;a href=&quot;#步骤1-2确定因素与水平&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;经需求分析，提取3个核心因素，每个因素设置3个有代表性的水平，具体如下：&lt;/p&gt;







































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;因素编号&lt;/th&gt;&lt;th&gt;因素名称&lt;/th&gt;&lt;th&gt;水平1&lt;/th&gt;&lt;th&gt;水平2&lt;/th&gt;&lt;th&gt;水平3&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;A&lt;/td&gt;&lt;td&gt;订单状态&lt;/td&gt;&lt;td&gt;待付款&lt;/td&gt;&lt;td&gt;待发货&lt;/td&gt;&lt;td&gt;已完成&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;B&lt;/td&gt;&lt;td&gt;时间范围&lt;/td&gt;&lt;td&gt;近7天&lt;/td&gt;&lt;td&gt;近30天&lt;/td&gt;&lt;td&gt;自定义&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C&lt;/td&gt;&lt;td&gt;排序方式&lt;/td&gt;&lt;td&gt;按时间降序&lt;/td&gt;&lt;td&gt;按金额升序&lt;/td&gt;&lt;td&gt;按订单号升序&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;说明：全量组合数为3×3×3=27个，使用正交法可精简至9个用例，大幅提升测试效率。&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;步骤3：选择正交表&lt;a href=&quot;#步骤3选择正交表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;3因素3水平，满足条件的最小正交表为  &lt;span&gt;&lt;span&gt;L9(34)L_9(3^4)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; （9行、3水平、最多4列），多余的1列直接弃用，不影响测试覆盖。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;步骤4-5：映射并生成基础测试用例&lt;a href=&quot;#步骤4-5映射并生成基础测试用例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;将3个因素（A、B、C）对应到 &lt;span&gt;&lt;span&gt;L9(34)L_9(3^4)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 的前3列，水平替换正交表中的数字，生成9条基础测试用例：&lt;/p&gt;










































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;用例编号&lt;/th&gt;&lt;th&gt;订单状态(A)&lt;/th&gt;&lt;th&gt;时间范围(B)&lt;/th&gt;&lt;th&gt;排序方式(C)&lt;/th&gt;&lt;th&gt;预期结果&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;待付款(1)&lt;/td&gt;&lt;td&gt;近7天(1)&lt;/td&gt;&lt;td&gt;按时间降序(1)&lt;/td&gt;&lt;td&gt;查询出近7天待付款订单，按时间降序排列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;待付款(1)&lt;/td&gt;&lt;td&gt;近30天(2)&lt;/td&gt;&lt;td&gt;按金额升序(2)&lt;/td&gt;&lt;td&gt;查询出近30天待付款订单，按金额升序排列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;待付款(1)&lt;/td&gt;&lt;td&gt;自定义(3)&lt;/td&gt;&lt;td&gt;按订单号升序(3)&lt;/td&gt;&lt;td&gt;查询出自定义时间内待付款订单，按订单号升序排列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;待发货(2)&lt;/td&gt;&lt;td&gt;近7天(1)&lt;/td&gt;&lt;td&gt;按金额升序(2)&lt;/td&gt;&lt;td&gt;查询出近7天待发货订单，按金额升序排列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;待发货(2)&lt;/td&gt;&lt;td&gt;近30天(2)&lt;/td&gt;&lt;td&gt;按订单号升序(3)&lt;/td&gt;&lt;td&gt;查询出近30天待发货订单，按订单号升序排列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;待发货(2)&lt;/td&gt;&lt;td&gt;自定义(3)&lt;/td&gt;&lt;td&gt;按时间降序(1)&lt;/td&gt;&lt;td&gt;查询出自定义时间内待发货订单，按时间降序排列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;已完成(3)&lt;/td&gt;&lt;td&gt;近7天(1)&lt;/td&gt;&lt;td&gt;按订单号升序(3)&lt;/td&gt;&lt;td&gt;查询出近7天已完成订单，按订单号升序排列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;已完成(3)&lt;/td&gt;&lt;td&gt;近30天(2)&lt;/td&gt;&lt;td&gt;按时间降序(1)&lt;/td&gt;&lt;td&gt;查询出近30天已完成订单，按时间降序排列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;已完成(3)&lt;/td&gt;&lt;td&gt;自定义(3)&lt;/td&gt;&lt;td&gt;按金额升序(2)&lt;/td&gt;&lt;td&gt;查询出自定义时间内已完成订单，按金额升序排列&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;步骤6：补充优化用例&lt;a href=&quot;#步骤6补充优化用例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;结合电商订单查询的业务场景，补充3条关键异常/边界用例，完善覆盖：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;用例10：订单状态=已取消，时间范围=近7天，排序方式=按时间降序 → 验证已取消订单的查询逻辑是否正常；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用例11：订单状态=待付款，时间范围=自定义（起止时间相同），排序方式=按时间降序 → 验证边界时间查询的准确性；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用例12：订单状态=空，时间范围=空，排序方式=空 → 验证必填项空值校验的提示信息是否正确。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;常用正交表参考&lt;a href=&quot;#常用正交表参考&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;实际测试中，无需手动绘制正交表，可直接选用预制的标准化正交表，以下是常用正交表分类及参数：&lt;/p&gt;&lt;section&gt;&lt;h4&gt;单一水平正交表（各因素水平数相同）&lt;a href=&quot;#单一水平正交表各因素水平数相同&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;














































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;正交表&lt;/th&gt;&lt;th&gt;水平数&lt;/th&gt;&lt;th&gt;最大因素数&lt;/th&gt;&lt;th&gt;用例数&lt;/th&gt;&lt;th&gt;全量组合数参考（以最大因素数为例）&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span&gt;&lt;span&gt;L4(23)L_4(2^3)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;2³=8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span&gt;&lt;span&gt;L8(27)L_8(2^7)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;2⁷=128&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span&gt;&lt;span&gt;L9(34)L_9(3^4)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;3⁴=81&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span&gt;&lt;span&gt;L16(45)L_{16}(4^5)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;16&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;4⁵=1024&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span&gt;&lt;span&gt;L27(313)L_{27}(3^{13})&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;27&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;27&lt;/td&gt;&lt;td&gt;3¹³=1594323&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;混合水平正交表（各因素水平数不同）&lt;a href=&quot;#混合水平正交表各因素水平数不同&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;适用于各因素水平数不一致的场景，无需强行统一水平数，常用类型如下：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;L8(41×24)L_8(4^1×2^4)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; ：1个4水平因素 + 4个2水平因素，共8条用例；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;L18(21×37)L_{18}(2^1×3^7)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;18&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; ：1个2水平因素 + 7个3水平因素，共18条用例；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;L16(41×212)L_{16}(4^1×2^{12})&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;16&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;12&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; ：1个4水平因素 + 12个2水平因素，共16条用例。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;优缺点分析&lt;a href=&quot;#优缺点分析&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;（一）优点&lt;a href=&quot;#一优点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;效率极高&lt;/strong&gt;：相比全量穷举，可将测试用例数量减少50%-90%，大幅降低测试人力、时间成本，尤其适合多因素组合场景；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;覆盖度高&lt;/strong&gt;：依托“均匀分散”特性，每个因素的每个水平都能被完整覆盖，且能有效覆盖80%以上缺陷所在的“因素两两交互”场景，漏测风险低；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;结果可分析&lt;/strong&gt;：借助“整齐可比”特性，可量化分析不同因素、不同水平对功能结果的影响程度，快速定位缺陷根因，辅助开发人员修复问题；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;标准化可复用&lt;/strong&gt;：设计流程固定，可通过工具自动化生成用例，适合自动化测试脚本批量构建，测试过程与结果可追溯。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;（二）缺点&lt;a href=&quot;#二缺点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;依赖测试经验&lt;/strong&gt;：因素与水平的选取直接决定测试效果，若遗漏核心因素、水平取值无代表性，会导致测试失效；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;场景适配有限&lt;/strong&gt;：仅支持离散型因素，连续型变量需先离散化；对因素间强互斥、强依赖的场景，无法直接适配，需人工大量调整；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;无法覆盖全量极端场景&lt;/strong&gt;：正交法生成的是代表性用例，无法覆盖所有极端组合、全异常组合，必须人工补充关键用例；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;混合水平复杂度高&lt;/strong&gt;：当各因素水平数差异较大时，正交表选择与适配难度提升，用例精简效果会下降。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;使用关键注意事项&lt;a href=&quot;#使用关键注意事项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;因素筛选优先级：优先选择对功能影响大、风险高的核心因素，剔除无影响、弱影响的次要因素，控制因素数量（建议不超过5个，否则用例数会显著增加）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;水平选取原则：每个水平必须有业务代表性，覆盖有效等价类、无效等价类、边界值，避免重复、无意义的取值（如用户名“正确”与“合法”属于重复水平，需合并）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;互斥/依赖因素处理：若因素间存在互斥、依赖关系，需人工删除正交表中的无效用例，补充符合业务逻辑的有效组合，避免无效测试；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不可替代基础方法：正交法是组合场景的优化方法，不能替代等价类、边界值、错误推测法，需结合多种用例设计方法使用，才能保障测试完整性；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;工具辅助提效：复杂场景（多因素、混合水平）可借助正交表生成工具（如正交设计助手、SPSS、Minitab）自动生成正交表，避免人工制表出错，提升设计效率。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>测试用例设计方法之场景法</title><link>https://umami.eu.cc/posts/scenario-method/</link><guid isPermaLink="true">https://umami.eu.cc/posts/scenario-method/</guid><description>有关于用户的业务流程通常使用场景法来设计测试用例</description><pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;场景法（也叫用例场景法、业务场景分析法），是&lt;code&gt;基于用户真实业务流程&lt;/code&gt;，通过模拟用户端到端的操作行为，覆盖&lt;code&gt;完整业务路径&lt;/code&gt;的黑盒测试方法。&lt;/p&gt;
&lt;p&gt;核心思想是用 “流”（&lt;code&gt;流程路径&lt;/code&gt;）描述用户与系统的交互，以业务场景为单位设计测试用例，是系统测试、集成测试、验收测试中最核心的测试方法之一，尤其适用于业务流程复杂的软件系统。&lt;/p&gt;
&lt;hr /&gt;
&lt;section&gt;&lt;h2&gt;基础概念&lt;a href=&quot;#基础概念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;基本流（主流程 / 阳光流 / 有效流）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;指用户&lt;code&gt;操作最顺利&lt;/code&gt;、&lt;code&gt;无任何异常和分支&lt;/code&gt;，&lt;code&gt;完整走完业务核心目标的最短路径&lt;/code&gt;。它是业务最核心、最高频的流程，也是测试优先级最高的场景，&lt;code&gt;所有分支流都基于基本流延伸&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;例：电商下单的基本流：登录成功→商品加购成功→提交订单成功→支付成功→订单完成。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;备选流（正常分支流）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从基本流的某个节点分支出来，属于&lt;code&gt;用户合法、合规&lt;/code&gt;的&lt;code&gt;正常操作分支&lt;/code&gt;，最终可回到基本流，或终止流程。&lt;/li&gt;
&lt;li&gt;例：提交订单前修改商品数量、下单后未支付前取消订单、申请售后退款等。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;异常流（错误流 / 无效流）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从基本流 / 备选流的节点分支出来，因&lt;code&gt;用户非法操作、系统异常、外部依赖故障&lt;/code&gt;导致的&lt;code&gt;错误路径&lt;/code&gt;，用于验证系统的容错能力和异常处理机制。&lt;/li&gt;
&lt;li&gt;例：登录密码错误锁定账号、支付时余额不足、下单时商品库存为 0、支付过程网络中断等。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;应用场景&lt;a href=&quot;#应用场景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;业务流程复杂、多环节联动的系统（电商、金融、银行、OA 审批、出行等）。&lt;/li&gt;
&lt;li&gt;端到端的系统测试、集成测试、用户验收测试（UAT）。&lt;/li&gt;
&lt;li&gt;核心业务流程的回归测试，保障版本迭代不破坏主流程。&lt;/li&gt;
&lt;li&gt;自动化测试用例设计，是 UI 自动化、接口自动化流程用例的核心设计思路。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;对于&lt;code&gt;单元测试&lt;/code&gt;、单个功能控件的细节测试（如&lt;code&gt;输入框的格式校验&lt;/code&gt;）、&lt;code&gt;无明确业务流程&lt;/code&gt;、纯工具类的单点功能测试均不适合场景法。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;设计步骤&lt;a href=&quot;#设计步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;梳理业务需求，绘制业务流程图&lt;/p&gt;
&lt;p&gt;深度对齐产品需求与业务规则，明确业务的参与角色、功能节点、流转规则、上下游依赖，用流程图 / 泳道图&lt;code&gt;完整呈现全链路业务，避免遗漏关键节点&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;确定核心基本流&lt;/p&gt;
&lt;p&gt;提取业务中&lt;code&gt;最核心、无任何异常&lt;/code&gt;的主流程，明确&lt;code&gt;每个节点的操作和预期结果&lt;/code&gt;，作为所有场景的主干。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;全量识别备选流与异常流&lt;/p&gt;
&lt;p&gt;基于基本流的每个节点，梳理所有&lt;code&gt;合法的分支操作&lt;/code&gt;（备选流）、所有&lt;code&gt;可能的错误操作与系统异常&lt;/code&gt;（异常流），明确每个分支的触发条件、流转规则和系统预期处理逻辑。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;组合流，生成独立业务场景&lt;/p&gt;
&lt;p&gt;将基本流与备选流、异常流进行组合，生成&lt;code&gt;互不重复、覆盖全路径&lt;/code&gt;的独立场景。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;优先级规则：纯基本流场景（P0）&amp;gt; 高频备选流场景（P1）&amp;gt; 核心异常流场景（P1）&amp;gt; 低频分支 / 异常场景（P2/P3）。&lt;/li&gt;
&lt;li&gt;避坑原则：&lt;code&gt;避免无限制组合&lt;/code&gt;导致的 “路径爆炸”，复杂业务优先保障高优先级场景全覆盖，低频场景可按需裁剪。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;为每个场景设计测试用例&lt;/p&gt;
&lt;p&gt;每个场景对应 1 个或多个测试用例，完整填写用例核心要素：用例 ID、用例名称、优先级、前置条件、测试数据、操作步骤、预期结果。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;实战案例&lt;a href=&quot;#实战案例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;关于 ATM 取款的场景：&lt;img loading=&quot;lazy&quot; width=&quot;655&quot; height=&quot;662&quot; src=&quot;/_astro/amt.DYDOXb37_1UpPAQ.webp&quot; srcset=&quot;/_astro/amt.DYDOXb37_ZXX3gV.webp 640w, /_astro/amt.DYDOXb37_1UpPAQ.webp 655w&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;选取基本流（主流程 / 阳光流，P0 最高优先级）&lt;a href=&quot;#选取基本流主流程--阳光流p0-最高优先级&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;用户&lt;code&gt;无异常操作&lt;/code&gt;、&lt;code&gt;系统无故障&lt;/code&gt;，&lt;code&gt;完整完成取款&lt;/code&gt;的&lt;strong&gt;核心路径&lt;/strong&gt;，也是业务最高频、最核心的流程：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;用户发起取款，插入银行卡&lt;/li&gt;
&lt;li&gt;系统校验银行卡合法，校验通过&lt;/li&gt;
&lt;li&gt;系统弹出密码输入提示&lt;/li&gt;
&lt;li&gt;用户输入正确密码，不选择取消操作&lt;/li&gt;
&lt;li&gt;系统校验密码正确，校验通过&lt;/li&gt;
&lt;li&gt;系统弹出取款金额输入提示&lt;/li&gt;
&lt;li&gt;用户输入合法的取款金额&lt;/li&gt;
&lt;li&gt;系统校验金额合规，校验通过&lt;/li&gt;
&lt;li&gt;系统校验用户账户余额充足，校验通过&lt;/li&gt;
&lt;li&gt;系统校验 ATM 机内现金充足，校验通过&lt;/li&gt;
&lt;li&gt;系统出钞，取款成功，流程结束&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;插入银行卡 → 卡合法 → 提示输入密码 → 用户输入密码（不执行取消操作） → 密码正确 → 提示输入金额 → 用户输入取款金额 → 金额合法 → 账户余额充足 → ATM 现金充足 → 取款成功&lt;/p&gt;&lt;p&gt;也可以通过路径的方式来描述基本流，但在复杂的业务逻辑中，选择这个感觉会很乱，用序号的方式来将整个核心路径给写出来清晰明了。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;备选流（用户正常操作分支）&lt;a href=&quot;#备选流用户正常操作分支&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;只有一条 &lt;code&gt;用户主动取消取款&lt;/code&gt; 为用户正常操作分支下的备选流：插入银行卡 → 卡合法 → 提示输入密码 → 用户选择取消 → 退卡，流程结束。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;异常流（错误 / 故障场景）&lt;a href=&quot;#异常流错误--故障场景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;覆盖流程图中&lt;code&gt;所有校验不通过&lt;/code&gt;、&lt;code&gt;系统异常&lt;/code&gt;的分支：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;银行卡合法性校验不通过（挂失 / 过期 / 非法卡）&lt;/p&gt;
&lt;p&gt;路径：插入银行卡 → 卡不合法 → 提示 error1，退卡，流程结束&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;密码输入错误，累计错误次数＜3 次&lt;/p&gt;
&lt;p&gt;路径：插入银行卡 → 卡合法 → 输入错误密码（不取消） → 密码校验失败 → 错误次数＜3 次 → 提示重新输入 → 回到密码输入环节&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;密码连续错误 3 次，触发吞卡&lt;/p&gt;
&lt;p&gt;路径：插入银行卡 → 卡合法 → 连续 3 次输入错误密码 → 密码校验失败 → 错误次数达 3 次 → 系统吞卡，流程结束&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;取款金额不合法（非 100 倍数 / 超单笔限额 / 低于最低取款额）&lt;/p&gt;
&lt;p&gt;路径：插入银行卡 → 卡合法 → 提示输入密码 → 用户输入密码（不执行取消操作） → 密码正确 → 提示输入金额 → 用户输入取款金额 → 金额不合法 → 回到金额输入环节，提示重新输入&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;取款金额合法，但用户账户余额不足&lt;/p&gt;
&lt;p&gt;路径：插入银行卡 → 卡合法 → 提示输入密码 → 用户输入密码（不执行取消操作） → 密码正确 → 提示输入金额 → 用户输入取款金额 → 金额合法 → 余额不足 → 回到金额输入环节，提示重新输入 → 回到金额输入环节，提示重新输入&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;金额合法、余额充足，但 ATM 机内现金不足&lt;/p&gt;
&lt;p&gt;路径：插入银行卡 → 卡合法 → 提示输入密码 → 用户输入密码（不执行取消操作） → 密码正确 → 提示输入金额 → 用户输入取款金额 → 金额合法 → 账户余额充足 → ATM 余额不充足 → 回到金额输入环节，提示重新输入&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;我的路径写法&lt;a href=&quot;#我的路径写法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;基本流：插入合法银行卡 -&amp;gt; 输入正确密码 -&amp;gt; 输入合法金额 -&amp;gt; 账号余额充足，ATM现金充足 -&amp;gt; 取款成功&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;备选流：插入合法银行卡 -&amp;gt; 取消输入密码 -&amp;gt; 退卡&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;插入合法银行卡 -&amp;gt; 输入密码错误 -&amp;gt; 重新输入密码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;插入合法银行卡 -&amp;gt; 输入正确密码 -&amp;gt; 输入金额非法 -&amp;gt; 重新输入金额&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;插入合法银行卡 -&amp;gt; 输入正确密码 -&amp;gt; 输入金额合法 -&amp;gt; 账户余额不充足 -&amp;gt; 重新输入金额&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;插入合法银行卡 -&amp;gt; 输入正确密码 -&amp;gt; 输入金额合法 -&amp;gt; 账户余额充足 -&amp;gt; ATM现金余额不充足 -&amp;gt; 重新输入金额&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;异常流：插入非法银行卡 -&amp;gt; 提示error1，退卡&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;插入合法银行卡 -&amp;gt; 输入密码出错3次 -&amp;gt; 吞卡&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;可以看出，备选流和异常流理解错误；并非一定要按照&lt;code&gt;→&lt;/code&gt;来表示路径，也可以通过&lt;code&gt;序号&lt;/code&gt;来解释。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;用例设计&lt;a href=&quot;#用例设计&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;803&quot; src=&quot;/_astro/amtyongli.BfYGqIiH_1FyicK.webp&quot; srcset=&quot;/_astro/amtyongli.BfYGqIiH_1EdGqN.webp 640w, /_astro/amtyongli.BfYGqIiH_4lLPq.webp 750w, /_astro/amtyongli.BfYGqIiH_1s707F.webp 828w, /_astro/amtyongli.BfYGqIiH_27rmiL.webp 1080w, /_astro/amtyongli.BfYGqIiH_Z1DANsg.webp 1280w, /_astro/amtyongli.BfYGqIiH_ocSG7.webp 1668w, /_astro/amtyongli.BfYGqIiH_1FyicK.webp 1920w&quot; /&gt;&lt;/p&gt;&lt;p&gt;所写文件：&lt;a href=&quot;https://wwbri.lanzoub.com/i9iQW3m3fhgh&quot; target=&quot;_blank&quot;&gt;场景法&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>测试用例设计方法之等价类</title><link>https://umami.eu.cc/posts/equivalence-class/</link><guid isPermaLink="true">https://umami.eu.cc/posts/equivalence-class/</guid><description>处理无穷数据时，使用等价类来划分测试用例；在处理取值范围时，可以用边界值进行补充</description><pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;测试用例设计方法，是为了高效、&lt;code&gt;全面覆盖&lt;/code&gt;测试场景、精准发现软件缺陷，基于需求规格、代码逻辑、业务场景制定的标准化设计思路。&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;等价类&lt;a href=&quot;#等价类&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;等价类划分法是黑盒测试（功能测试）最基础、最核心的用例设计方法，&lt;strong&gt;核心逻辑&lt;/strong&gt;是：将无法&lt;code&gt;穷举的输入数据&lt;/code&gt;，按需求规则划分为若干个互不相交的「等价类」，从每个等价类中&lt;code&gt;选取少量具有代表性的数据&lt;/code&gt;设计测试用例，用最少的用例覆盖最多的场景，解决穷举测试不可行的问题。&lt;/p&gt;&lt;hr /&gt;&lt;section&gt;&lt;h3&gt;核心概念&lt;a href=&quot;#核心概念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;等价类分为&lt;code&gt;有效等价类&lt;/code&gt;和&lt;code&gt;无效等价类&lt;/code&gt;两类，二者缺一不可，分别覆盖功能的&lt;code&gt;正常场景&lt;/code&gt;和&lt;code&gt;异常容错场景&lt;/code&gt;。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;有效等价类：&lt;code&gt;符合需求&lt;/code&gt;规格说明、合理的、有意义的输入数据集合，目的是为了程序是否正确实现了需求规定的功能&lt;/li&gt;
&lt;li&gt;无效等价类：与有效等价类相反，其目的是为了验证程序的异常处理能力（容错性），是否能&lt;code&gt;对非法输入做正确拦截和提示&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;核心规则&lt;a href=&quot;#核心规则&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;针对不同的输入规则，有标准化的划分方法，确保划分&lt;code&gt;无遗漏、无冗余&lt;/code&gt;：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;输入规定了&lt;code&gt;取值范围&lt;/code&gt; / 个数&lt;/strong&gt;：划分 1 个有效等价类，2 个无效等价类。&lt;/p&gt;
&lt;p&gt;例：需求要求输入 1-100 的整数，有效等价类：&lt;code&gt;1≤x≤100&lt;/code&gt; 的整数；无效等价类：&lt;code&gt;x&amp;lt;1&lt;/code&gt;、&lt;code&gt;x&amp;gt;100&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;输入规定了「&lt;code&gt;必须遵守的规则&lt;/code&gt;」&lt;/strong&gt;：划分 1 个有效等价类，N 个违反规则的无效等价类。&lt;/p&gt;
&lt;p&gt;例：用户名必须同时包含中文、英文与数字，有效等价类：&lt;code&gt;用户名必须同时包含：中文 + 英文 + 数字&lt;/code&gt;；无效等价类：&lt;code&gt;缺少中文&lt;/code&gt;、&lt;code&gt;缺少英文&lt;/code&gt;、&lt;code&gt;缺少数字&lt;/code&gt;、&lt;code&gt;只有中文&lt;/code&gt;、&lt;code&gt; 只有英文&lt;/code&gt;、&lt;code&gt;只有数字&lt;/code&gt;、&lt;code&gt;包含特殊符号&lt;/code&gt;、&lt;code&gt;空格&lt;/code&gt;、&lt;code&gt;不可见字符 / 乱码&lt;/code&gt;等。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;输入是枚举值 / 固定集合&lt;/strong&gt;：每个合法枚举值为 1 个有效等价类，所有非枚举值为 1 个无效等价类。&lt;/p&gt;
&lt;p&gt;例：需求要求性别只能选「男 / 女」，有效等价类：男、女；无效等价类：其他任意值。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;输入是布尔值&lt;/strong&gt;：划分 1 个有效等价类，1 个无效等价类。&lt;/p&gt;
&lt;p&gt;例：需求要求必须勾选用户协议，有效等价类：已勾选；无效等价类：未勾选。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;输入有多个规则叠加&lt;/strong&gt;：先为每个规则单独划分等价类，再&lt;code&gt;对有效等价类做组合，无效等价类单独拆分&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;标准步骤&lt;a href=&quot;#标准步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;拆分输入条件&lt;/strong&gt;：基于需求规格，拆解所有可输入的项（如输入框、单选框、接口参数、表单字段等）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;划分等价类并编号&lt;/strong&gt;：为每个输入条件，分别划分有效、无效等价类，给每个等价类分配唯一编号，便于后续追溯覆盖。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;设计有效等价类用例&lt;/strong&gt;：1 条用例尽可能覆盖&lt;strong&gt;最多的未覆盖有效等价类&lt;/strong&gt;，直到所有有效等价类全部被覆盖。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;设计无效等价类用例&lt;/strong&gt;：严格遵循&lt;strong&gt;单缺陷原则&lt;/strong&gt;，1 条用例仅覆盖 1 个未覆盖的无效等价类，直到所有无效等价类全部被覆盖。&lt;/p&gt;
&lt;p&gt;关键说明：单缺陷原则可避免&lt;code&gt;多个无效规则叠加&lt;/code&gt;导致的「缺陷屏蔽」—— 若 1 条用例覆盖多个无效规则，程序可能只拦截了第一个错误，后续的缺陷就无法被测出。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;实战案例&lt;a href=&quot;#实战案例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;需求背景：&lt;strong&gt;用户名必须同时包含中文、英文与数字，长度大于等于6且小于等于12&lt;/strong&gt;。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;有效等价类：同时包含：中文 + 英文 + 数字，长度在 6～12 位之间【没有包含其他的】&lt;/li&gt;
&lt;li&gt;无效等价类
&lt;ul&gt;
&lt;li&gt;长度不符合：&lt;code&gt;长度 &amp;lt; 6（其他条件满足）&lt;/code&gt;、&lt;code&gt;长度 &amp;gt; 12（其他条件满足）&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;缺少某一类字符（长度合法）：&lt;code&gt;只有 中文 + 英文，无数字&lt;/code&gt;、&lt;code&gt;只有 中文 + 数字，无英文&lt;/code&gt;、&lt;code&gt;只有 英文 + 数字，无中文&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;只有单一类型（长度合法）：&lt;code&gt;只有中文&lt;/code&gt;、&lt;code&gt;只有英文&lt;/code&gt;、&lt;code&gt;只有数字&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;包含非法内容（长度合法、三类都有）：&lt;code&gt;包含 特殊符号（!@#$%^&amp;amp;*_+- 等）&lt;/code&gt;、&lt;code&gt;包含 空格&lt;/code&gt;、&lt;code&gt;包含 换行 / 不可见字符&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;空值：&lt;code&gt;空输入&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;根据等价类划分成测试用例：&lt;a href=&quot;https://wwbri.lanzoub.com/iPqim3lxnr4h&quot; target=&quot;_blank&quot;&gt;文件&lt;/a&gt;
&lt;img loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;803&quot; src=&quot;/_astro/equivalenceclass.DB3nWXj__Z1XC8iM.webp&quot; srcset=&quot;/_astro/equivalenceclass.DB3nWXj__ZxDSTS.webp 640w, /_astro/equivalenceclass.DB3nWXj__Z1gsYwE.webp 750w, /_astro/equivalenceclass.DB3nWXj__22yTAT.webp 828w, /_astro/equivalenceclass.DB3nWXj__2lVrYk.webp 1080w, /_astro/equivalenceclass.DB3nWXj__ekvt5.webp 1280w, /_astro/equivalenceclass.DB3nWXj__Z1tqYYV.webp 1668w, /_astro/equivalenceclass.DB3nWXj__Z1XC8iM.webp 1920w&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;边界值&lt;a href=&quot;#边界值&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;边界值分析法（Boundary Value Analysis，&lt;code&gt;BVA&lt;/code&gt;）是黑盒测试最核心、性价比最高的测试方法之一，是&lt;code&gt;等价类划分法的重要补充&lt;/code&gt;，核心逻辑是：软件绝大多数缺陷都出现在&lt;code&gt;输入 / 输出范围的边界临界点&lt;/code&gt;，而非范围内部，因此专门针对边界值设计测试用例，能高效发现程序的逻辑错误。&lt;/p&gt;&lt;hr /&gt;&lt;section&gt;&lt;h3&gt;核心概念&lt;a href=&quot;#核心概念-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;程序员在处理边界条件时极易出现&lt;code&gt;逻辑错误&lt;/code&gt;（如&amp;gt;=与&amp;gt;混淆、循环终止条件错误、数组下标越界、数值溢出等），边界值法就是精准命中这类高频出错场景，通过测试边界的临界值，验证程序对边界的处理是否符合需求。&lt;/p&gt;&lt;p&gt;边界值设计的核心是精准识别 3 类点，这是用例设计的基础：&lt;/p&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;概念&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;定义&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;取值规则&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;上点&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;边界上的点，无论区间是开 / 闭，上点固定为边界本身&lt;/td&gt;&lt;td&gt;闭区间[1,100]：上点为 1、100&lt;br /&gt;开区间(1,100)：上点仍为 1、100&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;内点&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;边界范围内的任意一个有效值，用于校验正常业务场景&lt;/td&gt;&lt;td&gt;区间[1,100]内的 50，仅需 1 个即可&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;离点&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;离上点最近、刚好超出边界的点，开闭区间决定离点的取值方向&lt;/td&gt;&lt;td&gt;闭区间[1,100]：离点为 0、101&lt;br /&gt;开区间(1,100)：离点为 2、99&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;关键记忆点：&lt;strong&gt;闭区间离点往外走，开区间离点往里走&lt;/strong&gt;。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;设计方法&lt;a href=&quot;#设计方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;基础边界值法（单缺陷假设）&lt;/p&gt;
&lt;p&gt;行业最常用的设计方法，基于&lt;code&gt;单缺陷假设&lt;/code&gt;（故障大多由单个变量的临界值导致），每个输入变量独立覆盖边界，其他变量取正常值。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;取值规则：每个变量取 5 个值：&lt;code&gt;最小值&lt;/code&gt;、&lt;code&gt;略高于最小值&lt;/code&gt;、&lt;code&gt;正常值&lt;/code&gt;、&lt;code&gt;略低于最大值&lt;/code&gt;、&lt;code&gt;最大值&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;用例数量：n 个输入变量，生成 &lt;code&gt;4n+1&lt;/code&gt; 个测试用例&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;健壮性边界值法&lt;/p&gt;
&lt;p&gt;在基础边界值的基础上，增加对异常边界的测试，验证程序的容错能力和异常处理逻辑。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;取值规则：每个变量取 7 个值：&lt;code&gt;略低于最小值&lt;/code&gt;、&lt;code&gt;最小值&lt;/code&gt;、&lt;code&gt;略高于最小值&lt;/code&gt;、&lt;code&gt;正常值&lt;/code&gt;、&lt;code&gt;略低于最大值&lt;/code&gt;、&lt;code&gt;最大值&lt;/code&gt;、&lt;code&gt;略高于最大值&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;用例数量：n 个输入变量，生成 &lt;code&gt;6n+1&lt;/code&gt; 个测试用例&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最坏情况边界值法&lt;/p&gt;
&lt;p&gt;基于多缺陷假设，测试多个变量边界值的组合场景，覆盖更全面，但用例数量会指数级增长，仅用于核心高风险模块。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;取值规则：所有变量的边界值进行全组合&lt;/li&gt;
&lt;li&gt;用例数量：n 个输入变量，基础版生成 &lt;code&gt;5^n&lt;/code&gt; 个用例，健壮性版生成 &lt;code&gt;7^n&lt;/code&gt; 个用例&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;设计步骤&lt;a href=&quot;#设计步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;明确边界条件&lt;/strong&gt;：从需求文档中提取所有&lt;code&gt;带范围&lt;/code&gt;的输入 / 输出项，包括数值、长度、时间、数量、文件大小等。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;划分等价类&lt;/strong&gt;：先完成有效 / 无效等价类划分，锁定边界范围。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;确定上点、离点、内点&lt;/strong&gt;：根据&lt;code&gt;区间开闭&lt;/code&gt;，精准确定 3 类点的取值。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;设计测试用例&lt;/strong&gt;：&lt;code&gt;优先覆盖所有上点，再覆盖离点，最后用内点做正常场景校验&lt;/code&gt;；多变量场景优先用单缺陷假设，核心模块补充组合场景。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;补充输出域边界&lt;/strong&gt;：不仅测输入边界，还要构造输入，验证输出结果的边界是否符合需求（如输出金额上限、分页最大条数等）。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;案例解析&lt;a href=&quot;#案例解析&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;闭区间&lt;/code&gt;数值输入&lt;/p&gt;
&lt;p&gt;输入一个整数，有效范围为 1~100（&lt;code&gt;闭区间&lt;/code&gt;，包含 1 和 100），有效提示 “成功”，无效提示 “失败”。&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;用例类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;输入值&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;预期结果&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;上点（有效）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;成功&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;上点（有效）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;100&lt;/td&gt;&lt;td&gt;成功&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;离点（无效）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;失败&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;离点（无效）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;101&lt;/td&gt;&lt;td&gt;失败&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;内点（有效）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;成功&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;开区间&lt;/code&gt;数值输入&lt;/p&gt;
&lt;p&gt;输入一个整数，必须大于 1 且小于 100（&lt;code&gt;开区间&lt;/code&gt;，不包含 1 和 100），有效提示 “成功”，无效提示 “失败”。&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;用例类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;输入值&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;预期结果&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;上点（无效）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;失败&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;上点（无效）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;100&lt;/td&gt;&lt;td&gt;失败&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;离点（有效）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;成功&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;离点（有效）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;99&lt;/td&gt;&lt;td&gt;成功&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;内点（有效）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;成功&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;开闭区间&lt;/code&gt;数值输入&lt;/p&gt;
&lt;p&gt;输入一个整数，必须大于 1 且小于 100（&lt;code&gt;开闭区间&lt;/code&gt;，包含 1 且 不包含 100），有效提示 “成功”，无效提示 “失败”。&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;要素类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;取值&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;有效性&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;预期结果&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;上点（左闭）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;有效&lt;/td&gt;&lt;td&gt;成功&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;上点（右开）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;100&lt;/td&gt;&lt;td&gt;无效&lt;/td&gt;&lt;td&gt;失败&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;离点（左闭外）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;无效&lt;/td&gt;&lt;td&gt;失败&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;离点（右开内）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;99&lt;/td&gt;&lt;td&gt;有效&lt;/td&gt;&lt;td&gt;成功&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;内点&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;有效&lt;/td&gt;&lt;td&gt;成功&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;边界值不止适用于整数，所有&lt;code&gt;带范围约束&lt;/code&gt;的场景都适用，常见场景包括：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;数值类&lt;/strong&gt;：整数 / 小数的取值范围、精度限制（如金额保留 2 位小数）、数值类型上下限（如 int32 最大值 2147483647）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长度类&lt;/strong&gt;：字符串、数组、集合的元素个数、文本输入框的最大 / 最小长度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;时间类&lt;/strong&gt;：活动起止时间、有效期、循环执行次数、超时时间&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;空间 / 文件类&lt;/strong&gt;：上传文件大小限制、内存占用上限、磁盘空间阈值&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结构类&lt;/strong&gt;：数组下标（0 和最后一位下标）、分页的首页 / 末页、循环的 0 次 / 1 次 / 最大次数&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;经典案例&lt;a href=&quot;#经典案例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;需求&lt;/strong&gt;：输入边长A、B、C 3个值，判断是否能&lt;code&gt;构成三角形&lt;/code&gt;，输出对应的信息。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;前置：输入合法性校验&lt;/p&gt;
&lt;p&gt;输入的 3 个边长 A、B、C，必须同时满足以下条件，否则判定为非法输入：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;均为&lt;code&gt;有效数值&lt;/code&gt;（整数 / 浮点数，不接受空值、非数字字符、布尔值等）&lt;/li&gt;
&lt;li&gt;每个数值&lt;code&gt;严格大于 0&lt;/code&gt;（边长为 0 / 负数无几何意义）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;非法输入固定输出：输入不合法，请输入3个大于 0 的有效数字&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;三角形构成资格判定：&lt;/p&gt;
&lt;p&gt;满足合法输入后，必须符合&lt;strong&gt;三角形充要条件：任意两边之和严格大于第三边&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;优化技巧：将三边从小到大排序为 &lt;code&gt;a ≤ b ≤ c&lt;/code&gt;，&lt;code&gt;仅需判断 a + b &amp;gt; c 即可&lt;/code&gt;（最大边 c 已确定，a+c&amp;gt;b、b+c&amp;gt;a必然成立）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不满足条件输出：无法构成三角形，原因：任意两边之和必须严格大于第三边&lt;/li&gt;
&lt;li&gt;满足条件，进入三角形类型细分判定&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;三角形类型细分（优先级从高到低）&lt;/p&gt;
&lt;p&gt;优先级说明：等边是特殊的等腰三角形，&lt;code&gt;业务中优先判定等边&lt;/code&gt;，避免逻辑冲突&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;等边三角形&lt;/strong&gt;：三边完全相等 &lt;code&gt;A == B == C&lt;/code&gt;。输出示例：可构成三角形，类型为&lt;code&gt;【等边三角形】（特殊的等腰/锐角三角形&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;等腰三角形&lt;/strong&gt;：恰好只有两边相等（排除等边），即 &lt;code&gt;(A==B &amp;amp;&amp;amp; A≠C) || (A==C &amp;amp;&amp;amp; A≠B) || (B==C &amp;amp;&amp;amp; B≠A)&lt;/code&gt;。输出示例：可构成三角形，类型为&lt;code&gt;【等腰三角形】&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不等边普通三角形&lt;/strong&gt;：三边均不相等。输出示例：可构成三角形，类型为&lt;code&gt;【不等边普通三角形】&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;补充：按角分类（完善输出信息），基于排序后的 a ≤ b ≤ c，通过勾股定理延伸判定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直角三角形：&lt;code&gt;a² + b² == c²&lt;/code&gt;，输出补充：同时为&lt;code&gt;【直角三角形】&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;锐角三角形：&lt;code&gt;a² + b² &amp;gt; c²&lt;/code&gt;，输出补充：同时为&lt;code&gt;【锐角三角形】&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;钝角三角形：&lt;code&gt;a² + b² &amp;lt; c²&lt;/code&gt;，输出补充：同时为&lt;code&gt;【钝角三角形】&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根据等价类和边界值写出测试用例&lt;/p&gt;





































































































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;用例 ID&lt;/th&gt;&lt;th&gt;输入 A&lt;/th&gt;&lt;th&gt;输入 B&lt;/th&gt;&lt;th&gt;输入 C&lt;/th&gt;&lt;th&gt;用例类型&lt;/th&gt;&lt;th&gt;预期输出&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;TC001&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;有效等价类 - 等边三角形&lt;/td&gt;&lt;td&gt;可构成三角形，类型为【等边三角形】，同时为【锐角三角形】&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC002&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;有效等价类 - 等腰锐角三角形&lt;/td&gt;&lt;td&gt;可构成三角形，类型为【等腰三角形】，同时为【锐角三角形】&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC003&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;有效等价类 - 等腰钝角三角形&lt;/td&gt;&lt;td&gt;可构成三角形，类型为【等腰三角形】，同时为【钝角三角形】&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC004&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;有效等价类 - 直角三角形&lt;/td&gt;&lt;td&gt;可构成三角形，类型为【不等边普通三角形】，同时为【直角三角形】&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC005&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;有效等价类 - 普通锐角三角形&lt;/td&gt;&lt;td&gt;可构成三角形，类型为【不等边普通三角形】，同时为【锐角三角形】&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC006&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;有效等价类 - 普通钝角三角形&lt;/td&gt;&lt;td&gt;可构成三角形，类型为【不等边普通三角形】，同时为【钝角三角形】&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC007&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;无效等价类 - 含 0 值&lt;/td&gt;&lt;td&gt;输入不合法，边长必须为大于 0 的正数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC008&lt;/td&gt;&lt;td&gt;-2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;无效等价类 - 含负数&lt;/td&gt;&lt;td&gt;输入不合法，边长必须为大于 0 的正数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC009&lt;/td&gt;&lt;td&gt;空&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;无效等价类 - 空值输入&lt;/td&gt;&lt;td&gt;输入不合法，请输入 3 个大于 0 的有效数字&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC010&lt;/td&gt;&lt;td&gt;abc&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;无效等价类 - 非数字输入&lt;/td&gt;&lt;td&gt;输入不合法，请输入 3 个大于 0 的有效数字&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC011&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;边界值 - 两边之和等于第三边（临界无效）&lt;/td&gt;&lt;td&gt;无法构成三角形，原因：任意两边之和必须严格大于第三边&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC012&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3.1&lt;/td&gt;&lt;td&gt;边界值 - 两边之和小于第三边（无效）&lt;/td&gt;&lt;td&gt;无法构成三角形，原因：任意两边之和必须严格大于第三边&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC013&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;2.9&lt;/td&gt;&lt;td&gt;边界值 - 两边之和刚好大于第三边（临界有效）&lt;/td&gt;&lt;td&gt;可构成三角形，类型为【不等边普通三角形】，同时为【钝角三角形】&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC014&lt;/td&gt;&lt;td&gt;0.1&lt;/td&gt;&lt;td&gt;0.1&lt;/td&gt;&lt;td&gt;0.1&lt;/td&gt;&lt;td&gt;边界值 - 极小正数（有效）&lt;/td&gt;&lt;td&gt;可构成三角形，类型为【等边三角形】，同时为【锐角三角形】&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TC015&lt;/td&gt;&lt;td&gt;99999&lt;/td&gt;&lt;td&gt;99999&lt;/td&gt;&lt;td&gt;99999&lt;/td&gt;&lt;td&gt;边界值 - 极大数值（有效）&lt;/td&gt;&lt;td&gt;可构成三角形，类型为【等边三角形】，同时为【锐角三角形】&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;严格区分「大于」和「大于等于」&lt;/strong&gt;：三角形定义是&lt;code&gt;严格大于&lt;/code&gt;，两边之和等于第三边是共线线段，不能构成三角形，这是边界值测试的核心易错点。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;浮点数精度处理&lt;/strong&gt;：代码中加入了 1e-10 的容差，避免因浮点运算误差导致直角三角形、边界值判断错误。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;判定优先级&lt;/strong&gt;：必须先判定等边，再判定等腰，否则等边三角形会被误判为等腰三角形。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;乱序输入兼容&lt;/strong&gt;：先对三边排序，无需用户按大小顺序输入，提升程序鲁棒性。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;注意事项&lt;a href=&quot;#注意事项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;必须和等价类划分结合使用&lt;/strong&gt;：边界值是&lt;code&gt;等价类的补充，不能替代等价类&lt;/code&gt;，二者结合才能实现完整的输入覆盖。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;严格区分开闭区间&lt;/strong&gt;：&lt;code&gt;离点的取值错误&lt;/code&gt;是最常见的用例设计失误，闭区间离点向外，开区间离点向内。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不要忽略&lt;code&gt;隐性边界&lt;/code&gt;&lt;/strong&gt;：需求未明确写明，但技术层面存在的边界（如数据类型溢出、数据库字段长度限制、接口参数最大长度）必须补充测试。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输入 + 输出边界双覆盖&lt;/strong&gt;：绝大多数测试人员只测输入边界，忽略输出边界，很多业务逻辑的缺陷仅能通过输出边界测试发现。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优先单缺陷，谨慎全组合&lt;/strong&gt;：全组合边界用例数量会指数级增长，非核心模块无需使用，避免测试成本过高。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;与等价类的区别&lt;a href=&quot;#与等价类的区别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;维度&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;等价类划分法&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;边界值分析法&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;测试核心&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;覆盖有效 / 无效等价类的代表值，验证 “类” 的整体正确性&lt;/td&gt;&lt;td&gt;精准命中边界临界点，验证 “边界” 的处理正确性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;用例设计&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;从等价类中任选一个代表值即可&lt;/td&gt;&lt;td&gt;必须覆盖上点、离点，取值有严格的规则&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;缺陷发现能力&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;覆盖范围广，但对边界类缺陷敏感度低&lt;/td&gt;&lt;td&gt;对边界逻辑缺陷的检出率极高，是等价类的强力补充&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;利用等价类、边界值：
&lt;img loading=&quot;lazy&quot; width=&quot;704&quot; height=&quot;538&quot; src=&quot;/_astro/163zhuce.TygFVAal_1xl2x0.webp&quot; srcset=&quot;/_astro/163zhuce.TygFVAal_Z16ne40.webp 640w, /_astro/163zhuce.TygFVAal_1xl2x0.webp 704w&quot; /&gt;&lt;/p&gt;&lt;p&gt;自已所做的作业：&lt;a href=&quot;https://wwbri.lanzoub.com/ieRNT3mc6n1i&quot; target=&quot;_blank&quot;&gt;作业&lt;/a&gt;。通过这次作业得知，要&lt;code&gt;站在用户的角度&lt;/code&gt;上去思考多个测试点，同时关于手机号的验证，可以&lt;code&gt;手机位数、手机号段（13 ~ 19）&lt;/code&gt;来验证。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>测试用例概念</title><link>https://umami.eu.cc/posts/test-case-concept/</link><guid isPermaLink="true">https://umami.eu.cc/posts/test-case-concept/</guid><description>介绍测试用例的定义以及模板构成</description><pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在进行需求分析过后，就是测试计划阶段，这里有些公司可能会先进行测试计划阶段。&lt;/p&gt;
&lt;p&gt;测试计划阶段由测试项目负责人和组长去规范大概这个项目需要多少时间，每个阶段需要完成什么，每个人需要完成哪些模块，需要用到什么工具等关于时间人力的安排。&lt;/p&gt;
&lt;hr /&gt;
&lt;section&gt;&lt;h2&gt;测试用例是什么&lt;a href=&quot;#测试用例是什么&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;测试用例&lt;/strong&gt;是软件测试活动的最小执行单元，是为验证软件某一特定功能、性能、安全性等需求是否符合预期，预先设计的一套包含&lt;code&gt;测试场景、输入数据、执行条件、操作步骤、预期结果&lt;/code&gt;的标准化文档。它是测试执行的核心依据，也是保障测试覆盖度、可追溯性、缺陷可复现性的关键载体。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;标准测试用例核心构成要素&lt;a href=&quot;#标准测试用例核心构成要素&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;





































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;要素名称&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心说明&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;是否必填&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;用例 ID&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;唯一标识，便于管理追溯，通用格式：模块 - 功能 - 序号（如 LOGIN-P0-001）&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;用例标题&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;一句话清晰描述测试目标，无歧义（如 “验证正确账号密码可正常登录系统”）&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;所属模块&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;归属的产品功能模块（如 “用户登录模块”）&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;前置条件&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;执行用例前必须满足的环境 / 数据要求（如 “系统可正常访问、测试账号已注册”）&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;测试步骤&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;分步执行的操作，必须清晰、可复现，无模糊表述&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;输入数据&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;执行步骤中需要输入的参数（如账号、密码、数值），无输入则填 “无”&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;预期结果&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;每一步操作对应的系统预期表现，是判断用例是否通过的唯一标准&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;用例优先级&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;划分执行优先级，通用规则 P0（核心）- P3（边缘），P0 为冒烟测试必测项&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;测试类型&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;标注用例归属类型（如功能测试、性能测试、安全测试、兼容性测试）&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;实际结果&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;执行后系统的真实表现，测试执行阶段补充&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;测试结论&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;用例执行结果：通过 / 不通过 / 阻塞 / 未执行，测试执行阶段补充&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;备注&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;特殊说明、缺陷关联、环境依赖、异常场景补充&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;一般核心主流程或者用作冒烟用例的其优先级为 P0，其余一般流程，异常流程的为P1，最低的则是界面、兼容这方面的测试。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;核心原则&lt;a href=&quot;#核心原则&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;原子性&lt;/strong&gt;：&lt;code&gt;一条用例仅验证一个核心测试点&lt;/code&gt;，避免多功能耦合，便于缺陷定位。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可复现性&lt;/strong&gt;：任何人拿到用例，都能按步骤&lt;code&gt;复现&lt;/code&gt;完全一致的测试过程与结果，无歧义。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;覆盖全面&lt;/strong&gt;：覆盖正常场景、异常场景、边界场景、合规场景，不遗漏需求点。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优先级清晰&lt;/strong&gt;：核心功能、高频用户场景优先保障，适配冒烟、回归、全量测试不同场景。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可维护性&lt;/strong&gt;：结构规范、命名统一，需求变更时可快速迭代调整。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>软件测试工作流程</title><link>https://umami.eu.cc/posts/test-requirements-analysis/</link><guid isPermaLink="true">https://umami.eu.cc/posts/test-requirements-analysis/</guid><description>介绍软件测试工作流程各个阶段，并对需求分析与评审和测试计划阶段进行了说明</description><pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;软件测试流程&lt;a href=&quot;#软件测试流程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;软件测试流程核心目标并非单一的 “发现缺陷”，而是&lt;code&gt;验证软件产品是否完全匹配用户需求&lt;/code&gt;、设计规格与行业合规要求，&lt;code&gt;最大限度降低软件上线后的质量风险、业务损失与运维成本&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;行业通用的全流程分为 7 个核心阶段，&lt;code&gt;各阶段环环相扣&lt;/code&gt;，形成完整的测试执行链路：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;需求分析与评审阶段&lt;/strong&gt;：测试人员前置介入需求评审，识别需求的&lt;code&gt;可测性、歧义点、业务风险与合规要求&lt;/code&gt;，明确测试范围、质量目标与验收标准，核心交付物为测试需求追溯矩阵。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试计划阶段&lt;/strong&gt;：基于项目范围与需求，制定完整测试计划，&lt;code&gt;明确测试策略、测试范围、资源配置、进度排期、风险应对方案、准入 / 准出标准&lt;/code&gt;，核心交付物为《测试计划》文档。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试设计与用例开发阶段&lt;/strong&gt;：基于需求规格与设计文档，&lt;code&gt;拆解测试场景、设计测试用例、准备测试数据，完成用例的同行评审，确保用例对需求的全覆盖&lt;/code&gt;，核心交付物为《测试用例集》《测试数据清单》。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试环境搭建与准备阶段&lt;/strong&gt;：&lt;code&gt;搭建与生产环境高度一致的测试环境&lt;/code&gt;，部署被测版本、配置测试工具、初始化测试数据，完成环境冒烟验证，确保测试执行的前置条件全部达标。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试执行与缺陷管理阶段&lt;/strong&gt;：按照测试计划与用例执行多轮测试，记录测试结果，&lt;code&gt;对发现的缺陷进行标准化提交、分级、跟踪、闭环管理，针对修复后的缺陷执行回归测试&lt;/code&gt;，核心交付物为《测试执行日志》《缺陷管理报告》。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试收尾与验收阶段&lt;/strong&gt;：&lt;code&gt;完成版本验收测试，核对测试准出标准，评估版本上线风险&lt;/code&gt;，输出完整的《测试总结报告》，为版本发布决策提供核心依据，同时沉淀测试过程资产，完成项目复盘与流程优化。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上线后运维与持续验证阶段&lt;/strong&gt;：版本上线后，配合完成线上灰度验证、生产监控、用户反馈跟进，&lt;code&gt;针对线上突发缺陷执行紧急修复与回归测试&lt;/code&gt;，完成线上问题复盘，形成全流程的质量闭环。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;需求分析与评审阶段&lt;a href=&quot;#需求分析与评审阶段&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;该阶段本质是针对业务需求、产品需求规格说明书（SRS/PRD）、用户故事、原型图等核心资产，判断&lt;code&gt;需求能不能测、怎么测、验证标准是什么、有哪些质量风险&lt;/code&gt;，其直接决定了后续测试工作的有效性、返工成本，以及整个项目的质量下限。&lt;/p&gt;&lt;p&gt;评审会前 1-2 个工作日，完整通读所有需求资料，&lt;code&gt;梳理核心业务链路、模块划分、上下游依赖&lt;/code&gt;，这里必须标记以下 4 类核心问题：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;SRS/PRD 与原型图不一致的内容&lt;/li&gt;
&lt;li&gt;表述模糊、歧义、前后矛盾的需求&lt;/li&gt;
&lt;li&gt;无明确验收标准、无法通过测试手段验证的需求&lt;/li&gt;
&lt;li&gt;遗漏的业务场景、异常处理规则、边界条件&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;需要注意的是，&lt;code&gt;提前和产品经理一对一沟通核心歧义点&lt;/code&gt;，避免评审会变成需求答疑会，浪费全员时间；初步预判测试复杂度、资源需求。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;正式评审会时，&lt;code&gt;不要只旁听，而是应该要主动参与评审&lt;/code&gt;：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;针对会前分析发现的问题，逐条提出，重点聚焦&lt;code&gt;可测性、完整性、边界场景、异常处理&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;逐条确认&lt;code&gt;需求的验收标准&lt;/code&gt;，确保所有相关方达成共识，&lt;code&gt;无歧义&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;针对需求中的技术&lt;code&gt;风险&lt;/code&gt;、质量风险、合规风险，提出测试视角的专业建议&lt;/li&gt;
&lt;li&gt;完整记录所有待闭环的问题、对应责任人、闭环时限&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;评审会后 1-2 个工作日内，产品经理会针对所有问题给出明确答复，同步更新需求文档与原型图，此时要&lt;code&gt;针对更新后的需求，复核所有问题是否全部闭环&lt;/code&gt;，判断有无新增歧义。&lt;/p&gt;&lt;p&gt;当所有问题闭环后，形成正式需求基线，即可进入后续的测试点提取与用例设计环节。&lt;/p&gt;&lt;hr /&gt;&lt;section&gt;&lt;h3&gt;案例&lt;a href=&quot;#案例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;原始模糊需求（产品 PRD）：“用户可以通过手机号注册账号，注册需要验证码，密码要安全，注册成功后跳转到首页，要保证用户体验好。”&lt;/p&gt;&lt;p&gt;测试视角的&lt;code&gt;评审提问&lt;/code&gt;与&lt;code&gt;闭环结果&lt;/code&gt;：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;模糊需求：“密码要安全” → 提问：密码的具体规则是什么？长度、字符类型、校验规则？
&lt;strong&gt;闭环结果&lt;/strong&gt;：密码为 8-20 位，必须包含字母 + 数字 + 特殊字符，不允许连续 3 位以上相同字符，不允许包含手机号后 6 位。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不可测需求：“要保证用户体验好” → 提问：用户体验的具体验收标准是什么？
&lt;strong&gt;闭环结果&lt;/strong&gt;：用户完成注册的操作路径不超过 3 步，页面加载时间 ≤ 2s，验证码发送倒计时 60s，报错提示在输入框下方实时展示。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;完整性缺失：仅写了注册成功流程 → 提问：手机号已注册、验证码错误 / 过期、网络中断、连续发验证码的限制规则是什么？
&lt;strong&gt;闭环结果&lt;/strong&gt;：补充所有异常场景的处理规则，明确验证码 1 分钟内仅可发送 1 次，1 小时内最多发送 5 次。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;合规性缺失：无用户协议相关要求 → 提问：是否需要用户勾选同意用户协议与隐私政策？是否符合《个人信息保护法》？
&lt;strong&gt;闭环结果&lt;/strong&gt;：注册页面必须设置默认不勾选的协议勾选框，用户必须勾选后才可点击注册，协议文本可点击查看。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;关于提取注册界面的测试点：
&lt;img loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;507&quot; src=&quot;/_astro/analysishomework2.BJi2mo8E_fDRiA.webp&quot; srcset=&quot;/_astro/analysishomework2.BJi2mo8E_1Nrd9z.webp 640w, /_astro/analysishomework2.BJi2mo8E_rCcSm.webp 750w, /_astro/analysishomework2.BJi2mo8E_1F5A8P.webp 828w, /_astro/analysishomework2.BJi2mo8E_fDRiA.webp 866w&quot; /&gt;
&lt;img loading=&quot;lazy&quot; width=&quot;845&quot; height=&quot;410&quot; src=&quot;/_astro/analysishomework2.1.Eks-owIg_Z1Cwhgi.webp&quot; srcset=&quot;/_astro/analysishomework2.1.Eks-owIg_ZHifxs.webp 640w, /_astro/analysishomework2.1.Eks-owIg_17HFjq.webp 750w, /_astro/analysishomework2.1.Eks-owIg_Z27xvcz.webp 828w, /_astro/analysishomework2.1.Eks-owIg_Z1Cwhgi.webp 845w&quot; /&gt;&lt;/p&gt;&lt;p&gt;通过 Xmind 编写需求分析得出：&lt;a href=&quot;https://wwbri.lanzoub.com/ioSn33m058xc&quot; target=&quot;_blank&quot;&gt;测试需求&lt;/a&gt;
&lt;img loading=&quot;lazy&quot; width=&quot;1123&quot; height=&quot;944&quot; src=&quot;/_astro/analysishomework2answer.CLJXB-UW_Z1gTvPH.webp&quot; srcset=&quot;/_astro/analysishomework2answer.CLJXB-UW_I5P7g.webp 640w, /_astro/analysishomework2answer.CLJXB-UW_Z2iU8kc.webp 750w, /_astro/analysishomework2answer.CLJXB-UW_Z1446Ob.webp 828w, /_astro/analysishomework2answer.CLJXB-UW_ZEQmHq.webp 1080w, /_astro/analysishomework2answer.CLJXB-UW_Z1gTvPH.webp 1123w&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;测试计划阶段&lt;a href=&quot;#测试计划阶段&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;该阶段本质是将测试方针与测试策略转化为结构化、可落地、可管控的&lt;code&gt;测试执行方案&lt;/code&gt;，明确测试目标、范围、策略、资源、进度、风险与规则，为测试全流程活动提供可追溯的执行基准与决策依据。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;对齐各方预期&lt;/strong&gt;：拉通产品、研发、测试、项目管理、业务方，对测试目标、质量标准、交付节奏达成共识，避免后期认知偏差与扯皮。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;锁定测试边界&lt;/strong&gt;：明确测试范围与不测试范围，从源头管控范围蔓延，避免无效测试与资源浪费。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;制定可落地的执行策略&lt;/strong&gt;：明确「怎么测、测什么、谁来测、什么时候测、测到什么程度」，让所有测试活动有章可循。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;前置风险管控&lt;/strong&gt;：识别全流程潜在风险，制定可落地的应对方案，最大限度降低项目延期、质量失控的概率。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;量化质量与验收标准&lt;/strong&gt;：明确可量化的测试准入 / 准出规则，为版本上线决策提供客观、可验证的依据。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;section&gt;&lt;h3&gt;明确测试目标与可量化质量指标&lt;a href=&quot;#明确测试目标与可量化质量指标&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;明确本次&lt;code&gt;测试的核心定位&lt;/code&gt;，杜绝 “提升产品质量” 这类模糊表述，所有指标必须可量化、可验证。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;可量化质量指标&lt;/strong&gt;（行业通用基准，可按需调整）：&lt;/p&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;指标类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;通用可量化标准&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;需求覆盖指标&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;测试用例对基线需求的覆盖率 100%，无遗漏需求&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;用例执行指标&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;P0 级核心用例执行率 100%、通过率 100%；P1 级用例执行率 100%、通过率≥98%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;缺陷管控指标&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;上线前 P0/P1 级缺陷清零；P2 级缺陷遗留率≤5%，且无核心业务影响；P3 级缺陷遗留需三方签字确认；线上缺陷逃逸率≤0.2 个 / 千行代码&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;专项质量指标&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;性能指标：95% 核心业务请求响应时间≤200ms，峰值并发无超时；安全指标：通过等保三级合规扫描，无高危 / 中危安全漏洞；兼容性指标：覆盖目标环境 100%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;锁定测试范围与边界&lt;a href=&quot;#锁定测试范围与边界&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;承接需求分析的输出，&lt;code&gt;明确「测什么」和「不测什么」&lt;/code&gt;，是管控范围蔓延的核心手段。&lt;/p&gt;&lt;p&gt;通过书面明确&lt;code&gt;纳入测试&lt;/code&gt;以及&lt;code&gt;不纳入测试&lt;/code&gt;的范围（需要各方确认），基于&lt;code&gt;业务核心度、用户使用频率、风险等级，划分 P0-P3 优先级&lt;/code&gt;，明确测试资源与执行顺序的倾斜规则。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;制定核心测试策略&lt;a href=&quot;#制定核心测试策略&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;测试策略是测试计划的灵魂，核心回答&lt;code&gt;「怎么测」&lt;/code&gt;的问题，是后续测试设计与执行的核心方法论。&lt;/p&gt;
































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;策略模块&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心制定内容&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;测试级别与类型&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;明确单元测试、集成测试、系统测试、UAT 验收测试 4 个级别的负责方、准入准出标准、执行范围；明确本次需执行的测试类型（功能、性能、安全、兼容、易用性、可靠性等）及各自的覆盖范围&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;测试方法选型&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;明确黑盒 / 白盒 / 灰盒测试的适用场景；手工测试与自动化测试的分工（如核心流程用例自动化覆盖，复杂场景手工测试）；自动化测试的工具选型、覆盖范围、执行时机&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;环境与数据策略&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;明确测试环境、预发环境、灰度环境的规划，要求与生产环境的配置一致性标准；明确测试数据的准备规则、造数方式、脱敏要求、数据隔离规则&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;缺陷管理策略&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;明确缺陷分级标准（P0 阻断 - P3 轻微）、提报流程、闭环规则、修复时效要求、缺陷复盘机制、遗留缺陷的审批流程&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;专项测试策略&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;针对性能、安全、兼容性、接口、国际化等专项测试，明确测试范围、指标要求、执行时机、工具选型、负责人员&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;回归测试策略&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;明确回归测试的触发条件、覆盖范围、执行方式、用例筛选规则，以及全量回归 / 增量回归的适用场景&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;测试进度与里程碑规划&lt;a href=&quot;#测试进度与里程碑规划&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;匹配项目整体研发排期，&lt;code&gt;拆解测试全流程的时间节点&lt;/code&gt;，明确每个阶段的交付物，同时预留风险缓冲。&lt;/p&gt;












































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;里程碑节点&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心交付物&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;完成时限&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;测试计划评审完成&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;正式锁定版《测试计划》&lt;/td&gt;&lt;td&gt;T1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;测试用例设计与评审完成&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;评审通过的《测试用例集》《测试数据清单》&lt;/td&gt;&lt;td&gt;T2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;测试环境搭建与冒烟验证完成&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;可用的测试环境、环境验收报告&lt;/td&gt;&lt;td&gt;T3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;第一轮集成测试完成&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;测试执行日志、缺陷报告&lt;/td&gt;&lt;td&gt;T4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;系统测试与多轮回归完成&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;全量测试执行报告、缺陷闭环记录&lt;/td&gt;&lt;td&gt;T5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;UAT 验收测试支持完成&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;UAT 测试报告、验收确认单&lt;/td&gt;&lt;td&gt;T6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;测试总结与上线评审完成&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;《测试总结报告》、上线决策依据&lt;/td&gt;&lt;td&gt;T7&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;缓冲预留规则&lt;/strong&gt;：根据项目风险等级，预留总测试工期 10%-20% 的缓冲时间，用于应对需求变更、研发提测延期、缺陷修复滞后、突发风险等情况。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;进度管控规则&lt;/strong&gt;：明确进度跟踪方式、偏差预警阈值、延期应对方案，确保测试进度可控。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;资源配置与职责划分&lt;a href=&quot;#资源配置与职责划分&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;明确「&lt;code&gt;谁来做、做什么、有什么支撑&lt;/code&gt;」，杜绝职责模糊导致的扯皮与执行缺位。&lt;/p&gt;&lt;p&gt;测试团队&lt;code&gt;各个角色进行分工&lt;/code&gt;，明确每个角色的负责模块、工作内容、投入工时、权责边界。也要明确产品、研发、运维、业务方的测试相关职责。同时规划好工具与环境资源。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;风险识别与应对方案&lt;a href=&quot;#风险识别与应对方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这是测试计划的核心价值之一，前置识别风险，而非事后救火。&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;风险类型&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;风险描述&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;应对方案&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;需求风险&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;需求频繁变更，导致测试返工、工期压缩&lt;/td&gt;&lt;td&gt;建立严格的需求变更管控流程，变更需走申请 - 影响评估 - 三方评审流程；单次变更超过 20%，重新评估排期与资源&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;进度风险&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;研发提测延期，压缩测试工期&lt;/td&gt;&lt;td&gt;明确提测准入标准，不满足准入的版本拒绝提测；预留缓冲工期；提测延期超 3 个工作日，同步项目组重新评审里程碑&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;质量风险&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;研发交付版本质量差，阻断性缺陷多，无法正常执行测试&lt;/td&gt;&lt;td&gt;前置研发单元测试门禁，单元测试通过率≥95% 才可提测；提测前必须完成研发自验与冒烟测试，冒烟不通过直接打回&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;资源风险&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;测试人员不足、核心人员离职，导致工作停滞&lt;/td&gt;&lt;td&gt;提前规划人员备份，核心工作多人交叉覆盖；提前培养人员技能，避免单点依赖&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;明确测试准入与准出硬规则&lt;a href=&quot;#明确测试准入与准出硬规则&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这是测试环节的 “红线规则”，避免测试失控、版本带病上线，必须书面明确、各方确认、严格执行。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（1）测试准入标准（满足所有条件，才可启动正式测试）&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;需求基线已锁定，需求变更已全部闭环，相关文档齐全且评审通过；&lt;/li&gt;
&lt;li&gt;提测版本的单元测试通过率≥95%，代码门禁、静态扫描通过，无编译阻断问题；&lt;/li&gt;
&lt;li&gt;研发已完成自验与冒烟测试，核心主流程 100% 跑通，无 P0/P1 级阻断性缺陷；&lt;/li&gt;
&lt;li&gt;正式提测单已提交，附带版本变更内容、部署手册、数据库脚本、接口文档；&lt;/li&gt;
&lt;li&gt;测试环境已搭建完成，与生产环境配置一致，服务运行稳定；&lt;/li&gt;
&lt;li&gt;测试用例已评审通过，测试数据已准备完成。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;（2）测试准出标准（满足所有条件，测试才可结束，版本可申请上线）&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;计划内所有测试用例 100% 执行完成，需求覆盖率 100%；&lt;/li&gt;
&lt;li&gt;P0/P1 级缺陷 100% 清零，无遗留；&lt;/li&gt;
&lt;li&gt;P2 级缺陷遗留率≤5%，且无核心业务影响，已通过产品、研发、测试三方签字确认；&lt;/li&gt;
&lt;li&gt;所有已修复的缺陷，全部完成回归验证，无复现；&lt;/li&gt;
&lt;li&gt;性能、安全、兼容性等专项测试结果，满足预设的质量指标要求；&lt;/li&gt;
&lt;li&gt;UAT 验收测试通过，业务方已签字确认；&lt;/li&gt;
&lt;li&gt;测试过程文档、交付物齐全，《测试总结报告》已评审通过。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;变更管理与沟通机制&lt;a href=&quot;#变更管理与沟通机制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;变更&lt;/code&gt;管控流程&lt;/strong&gt;：明确需求变更、计划变更的申请、评估、评审、执行、同步全流程，杜绝口头变更、私下变更，所有变更必须同步更新《测试计划》，并重新评审；&lt;/p&gt;&lt;p&gt;&lt;strong&gt;沟通机制&lt;/strong&gt;：明确&lt;code&gt;日常沟通方式&lt;/code&gt;，例如每日测试站会、每周测试周报、缺陷同步例会、里程碑评审会；同时明确紧急问题（如线上故障、阻断性缺陷）的上报路径与响应时效。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>软件的生命周期与质量特性</title><link>https://umami.eu.cc/posts/software-life-cycle/</link><guid isPermaLink="true">https://umami.eu.cc/posts/software-life-cycle/</guid><description>软件的生命周期及相应的开发模型，还有软件的质量特性</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;软件生命周期&lt;a href=&quot;#软件生命周期&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;软件生命周期（也叫软件生存周期，Software Life Cycle，SLC；狭义常称软件开发生命周期，SDLC），是软件工程领域的核心基础概念，指软件产品&lt;strong&gt;从初始的概念构思与需求立项开始，历经设计、开发、测试、部署上线、运行维护，直至最终退役停用&lt;/strong&gt;的全流程时间跨度，覆盖了&lt;code&gt;软件从诞生到消亡的完整闭环&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;其核心目标是通过&lt;code&gt;标准化的阶段划分与流程管控&lt;/code&gt;，实现对软件研发成本、进度、质量、风险的全周期管理，确保软件持续满足用户需求、合规要求与业务目标，最大化软件全生命周期的价值。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;标准阶段&lt;a href=&quot;#标准阶段&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;软件生命周期的核心框架分为 8 个标准阶段，不同开发模型仅会调整阶段的迭代方式，不会改变全流程的核心逻辑：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;规划与可行性分析阶段&lt;/strong&gt;：项目立项启动，完成技术、经济、合规、市场可行性评估，&lt;code&gt;制定项目整体计划与风险预案&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;需求分析阶段&lt;/strong&gt;：全面收集、梳理、评审用户与业务需求，&lt;code&gt;输出标准化的《软件需求规格说明书（SRS）》&lt;/code&gt;，作为后续全流程的核心依据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;软件设计阶段&lt;/strong&gt;：分为概要设计（顶层架构、模块划分、接口规范、技术选型）和详细设计（模块内部逻辑、算法、数据结构、数据库设计），输出&lt;code&gt;完整的设计文档&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;编码实现阶段&lt;/strong&gt;：开发人员&lt;code&gt;依据设计文档&lt;/code&gt;完成代码编写、代码走查与单元测试，验证单个功能模块的正确性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试阶段&lt;/strong&gt;：通过集成测试、系统测试、性能 / 安全专项测试、用户验收测试（UAT），&lt;code&gt;全面验证软件是否符合需求标准，修复缺陷，确保上线质量&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;部署与上线阶段&lt;/strong&gt;：&lt;code&gt;完成生产环境配置、版本发布、数据初始化、用户培训&lt;/code&gt;，软件正式投入商用 / 使用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;运行与维护阶段&lt;/strong&gt;：软件生命周期中&lt;code&gt;耗时最长&lt;/code&gt;的阶段，包含日常运维、故障修复、版本迭代、功能优化、兼容性适配、安全加固等工作，&lt;code&gt;保障软件稳定运行&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;退役与下线阶段&lt;/strong&gt;：当软件&lt;code&gt;无法满足业务需求、技术迭代淘汰或无维护价值&lt;/code&gt;时，停止服务，完成数据迁移、归档与销毁，关闭全生命周期。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;狭义的软件开发生命周期（SDLC），常聚焦于&lt;code&gt;从需求到上线&lt;/code&gt;的开发环节，而完整的软件生命周期必须包含运行维护直至退役的全流程。&lt;/p&gt;&lt;p&gt;瀑布模型、敏捷模型、迭代模型、螺旋模型、DevOps 模型等常见开发模式，本质是软件生命周期阶段的不同落地与迭代方式，核心框架均遵循生命周期的全流程逻辑。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;常用软件开发模型&lt;a href=&quot;#常用软件开发模型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;软件开发模型（也叫软件过程模型），是软件生命周期的结构化落地框架，定义了研发全流程的&lt;code&gt;阶段划分、执行顺序、协作方式与交付标准&lt;/code&gt;，核心目标是&lt;code&gt;管控项目风险、保障交付质量与效率&lt;/code&gt;，适配不同的项目需求、团队规模与业务场景。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;经典传统开发模型&lt;a href=&quot;#经典传统开发模型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这类模型是软件工程的基础框架，核心特点是&lt;code&gt;流程规范、文档驱动、阶段边界清晰&lt;/code&gt;，至今仍在合规要求高、需求稳定的场景广泛使用。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;瀑布模型（Waterfall Model）&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：最经典的&lt;code&gt;线性串行模型&lt;/code&gt;，严格遵循软件生命周期的阶段顺序，&lt;code&gt;前一阶段 100% 完成并通过评审，才能进入下一阶段&lt;/code&gt;，全程单向推进，不可回退，每个阶段都有&lt;code&gt;明确的交付物与评审标准&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心特点&lt;/strong&gt;：文档驱动、结构简单、流程可控、管理成本低，全流程可追溯。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：&lt;code&gt;需求完全明确、极少变更&lt;/code&gt;、合规与安全要求极高的项目，如军工、医疗设备、金融核心系统、嵌入式硬件配套软件、政府类项目。&lt;/li&gt;
&lt;li&gt;优缺点：
&lt;ul&gt;
&lt;li&gt;优点：阶段清晰、权责明确，便于进度与成本管控，文档体系完善，适合新人上手。&lt;/li&gt;
&lt;li&gt;缺点：灵活性极差，需求变更成本极高；后期才能看到可运行产品，早期无法暴露风险，&lt;code&gt;缺陷修复代价随阶段推进指数级上升&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;V 模型（V-Model，验证与确认模型）&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：瀑布模型的核心变种，核心是&lt;code&gt;开发与测试深度绑定&lt;/code&gt;、一一对应，整体呈 V 字形结构：
&lt;ul&gt;
&lt;li&gt;左半边（开发侧）：需求分析 → 概要设计 → 详细设计 → 编码&lt;/li&gt;
&lt;li&gt;右半边（测试侧）：验收测试 → 系统测试 → 集成测试 → 单元测试&lt;/li&gt;
&lt;li&gt;每个开发阶段同步启动对应测试阶段的方案设计，&lt;code&gt;测试提前介入&lt;/code&gt;，而非等到编码完成后才开始。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心特点&lt;/strong&gt;：质量管控前置，全程双轨验证，缺陷早发现、早修复。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：对质量、稳定性、合规性有极致要求的领域，如汽车电子、航空航天、医疗器械、工业控制软件。&lt;/li&gt;
&lt;li&gt;优缺点：
&lt;ul&gt;
&lt;li&gt;优点：相比瀑布模型，大幅提升了质量管控能力，&lt;code&gt;降低了后期返工成本&lt;/code&gt;，流程规范可追溯。&lt;/li&gt;
&lt;li&gt;缺点：依然是线性模型，灵活性不足，需求变更成本高，不适合需求快速变化的项目。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;原型模型（Prototype Model）&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：先&lt;code&gt;快速搭建&lt;/code&gt;一个可运行、可交互的软件原型，交付给用户试用、反馈，基于反馈快速迭代完善需求，再进入正式的规模化开发，核心是&lt;code&gt;先对齐需求，再落地开发&lt;/code&gt;。分为两类核心形态：
&lt;ul&gt;
&lt;li&gt;抛弃式原型：仅用于需求确认，验证完成后&lt;code&gt;直接废弃&lt;/code&gt;，不用于后续开发。&lt;/li&gt;
&lt;li&gt;进化式原型：原型作为产品基础框架，&lt;code&gt;持续迭代优化&lt;/code&gt;，最终演进为正式产品。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心特点&lt;/strong&gt;：需求驱动，快速对齐用户预期，大幅&lt;code&gt;减少后期需求变更&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：&lt;code&gt;需求模糊、用户无法清晰描述业务诉求&lt;/code&gt;、UI/UX 体验要求高的项目，如 To C 创新产品、定制化企业应用、互联网新产品立项。&lt;/li&gt;
&lt;li&gt;优缺点：
&lt;ul&gt;
&lt;li&gt;优点：&lt;code&gt;快速验证需求&lt;/code&gt;，降低产品方向错误的风险，提升用户满意度，减少后期返工。&lt;/li&gt;
&lt;li&gt;劣势：若原型管控不当，&lt;code&gt;容易陷入无限修改的循环&lt;/code&gt;；快速原型可能&lt;code&gt;牺牲架构合理性&lt;/code&gt;，为后续开发埋下技术债务。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;增量模型（Incremental Model）&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：瀑布模型的柔性改进版，将软件产品&lt;code&gt;拆分为多个独立、可运行、有业务价值的功能模块（增量包）&lt;/code&gt;，分批次串行 / 并行开发、测试、交付，&lt;code&gt;首个增量通常是核心功能，后续增量持续叠加辅助能力&lt;/code&gt;，每交付一个增量，产品就新增完整的可用能力。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心特点&lt;/strong&gt;：分块交付，快速上线核心价值，逐步完善产品。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：&lt;code&gt;需求整体清晰但可分优先级、需要快速抢占市场、不要求一次性交付全量功能的项目&lt;/code&gt;，如 SaaS 产品、企业管理系统、电商平台。&lt;/li&gt;
&lt;li&gt;优缺点：
&lt;ul&gt;
&lt;li&gt;优点：早期即可交付核心价值，快速获取用户反馈；风险分散，单个增量出问题不影响整体产品；降低了一次性开发的资金与时间压力。&lt;/li&gt;
&lt;li&gt;劣势：对模块拆分的&lt;code&gt;架构设计要求极高&lt;/code&gt;，拆分不当会导致后续增量难以集成；容易出现模块冗余、架构臃肿的问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;迭代模型（Iterative Model，进化式模型）&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：将整个开发过程拆分为多个固定的小周期（迭代），&lt;code&gt;每个迭代都走完完整的软件生命周期&lt;/code&gt;（需求 - 设计 - 开发 - 测试 - 交付），每次迭代都会输出一个可运行的产品版本，通过多次迭代持续优化、补充功能，逐步逼近最终的产品目标。
&lt;ul&gt;
&lt;li&gt;核心区别：增量模型是 “&lt;code&gt;分模块叠加，逐步做全&lt;/code&gt;”；迭代模型是 “&lt;code&gt;全流程循环，逐步做好&lt;/code&gt;”。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心特点&lt;/strong&gt;：小步快跑，持续优化，早期暴露风险，快速响应需求变化。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：&lt;code&gt;需求不明确、复杂度高、创新属性强、需要持续优化的项目&lt;/code&gt;，如 AI 产品、研发类工具、创新型业务系统。&lt;/li&gt;
&lt;li&gt;优缺点：
&lt;ul&gt;
&lt;li&gt;优点：风险前置，早期即可发现架构、需求、技术的核心问题；&lt;code&gt;极强的需求适配能力&lt;/code&gt;，迭代中可灵活调整方向；&lt;code&gt;用户全程参与，产品贴合业务需求&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;劣势：对&lt;code&gt;团队的项目管理、技术能力要求高&lt;/code&gt;；无明确的终版里程碑，容易出现进度失控、迭代范围无限蔓延的问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;螺旋模型（Spiral Model）&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：以&lt;code&gt;风险驱动&lt;/code&gt;为核心的迭代模型，将开发过程拆分为多个循环的螺旋周期，每个螺旋周期都固定包含 4 个核心象限：制定计划 → 风险评估 → 工程实现 → 客户评审。每一轮循环都先做全面的风险识别与管控，高风险项优先解决，风险可控后再进入开发环节，每轮螺旋结束都会输出一个可运行的版本。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心特点&lt;/strong&gt;：风险全流程管控，每一步都先评估风险再推进。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：&lt;code&gt;高复杂度、高风险、大规模、研发成本极高的项目&lt;/code&gt;，如航天航空系统、金融核心风控系统、大型基建配套软件、前沿技术研发项目。&lt;/li&gt;
&lt;li&gt;优缺点：
&lt;ul&gt;
&lt;li&gt;优点：极致的风险管控能力，大幅降低项目失败概率；灵活度高，可在任意阶段响应需求变更。&lt;/li&gt;
&lt;li&gt;劣势：对&lt;code&gt;团队的风险评估能力要求极高&lt;/code&gt;，评估失误会直接导致项目失败；流程复杂，管理与时间成本极高，中小项目完全不适用。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;现代主流开发模型（敏捷及衍生体系）&lt;a href=&quot;#现代主流开发模型敏捷及衍生体系&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这类模型是&lt;code&gt;当前互联网&lt;/code&gt;、云原生、企业数字化领域的绝对主流，核心特点是以人为本、&lt;code&gt;快速响应变化&lt;/code&gt;、客户深度协作、聚焦可运行的产品交付，而非文档与流程。&lt;/p&gt;&lt;p&gt;敏捷开发（Agile Development）并不是指&lt;code&gt;单一的开发模型&lt;/code&gt;，而是一套基于《敏捷宣言》的软件开发价值观与方法论合集，核心四大价值观为：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;个体和互动 高于 流程和工具&lt;/li&gt;
&lt;li&gt;可工作的软件 高于 详尽的文档&lt;/li&gt;
&lt;li&gt;客户协作 高于 合同谈判&lt;/li&gt;
&lt;li&gt;响应变化 高于 遵循计划&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;其核心原则是小步快跑、&lt;code&gt;持续迭代、用户反馈&lt;/code&gt;、团队自组织，以下是最常用的敏捷落地框架。&lt;/p&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;Scrum 模型（最主流的敏捷落地框架）&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：基于固定周期的迭代式增量开发，&lt;code&gt;固定迭代周期（Sprint）通常为 2-4 周&lt;/code&gt;，每个 Sprint 都必须交付一个可上线、可运行的产品增量，全程通过标准化的角色、会议与工件管控流程。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心三角色&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;产品负责人（PO）&lt;/strong&gt;：负责维护产品待办列表（Product Backlog），&lt;code&gt;定义需求优先级，对齐业务价值&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scrum Master&lt;/strong&gt;：负责&lt;code&gt;移除团队障碍，保障 Scrum 流程落地&lt;/code&gt;，引导团队自组织，而非传统项目经理。&lt;/li&gt;
&lt;li&gt;研发团队：5-9 人的跨职能全栈团队，自主完成 Sprint 内的需求开发、测试、交付。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心标准会议&lt;/strong&gt;：Sprint 计划会 → 每日会议 → Sprint 评审会 → Sprint 回顾会。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：互联网产品、SaaS 服务、&lt;code&gt;需求快速变化&lt;/code&gt;的企业数字化项目，是当前行业应用最广的敏捷框架。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;看板模型（Kanban）&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：源于丰田精益生产方式，核心是&lt;code&gt;可视化全流程、限制在制品（WIP）、拉动式开发、持续优化交付流&lt;/code&gt;。通过看板将研发全流程（待办 → 开发 → 测试 → 验收 → 上线）可视化，严格限制每个环节的并行任务数量，只有前序环节完成，才能拉动后续环节的任务，核心目标是消除瓶颈、提升交付效率、缩短交付周期。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心特点&lt;/strong&gt;：无固定迭代周期，柔性适配需求，聚焦交付效率与流程优化。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：运维保障、缺陷修复、需求持续涌入的支持类项目、产品维护阶段，也可与 Scrum 结合形成 Scrumban，适配高频交付场景。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;极限编程（XP, Extreme Programming）&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：聚焦于软件工程技术实践的敏捷框架，核心目标是&lt;code&gt;极致的代码质量、极致的需求响应速度&lt;/code&gt;，针对需求变化极快的中小型团队设计。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心核心实践&lt;/strong&gt;：测试驱动开发（TDD）、结对编程、持续集成（CI）、小版本高频发布、代码集体所有制、简单设计、持续重构、客户现场驻场。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：需求变化极快、&lt;code&gt;对代码质量与安全性要求高&lt;/code&gt;的中小型创业团队、互联网产品研发。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;DevOps 模型&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心逻辑&lt;/strong&gt;：不是单纯的开发模型，而是覆盖软件全生命周期的&lt;code&gt;文化 + 工程实践 + 工具链&lt;/code&gt;的完整体系，核心是打破开发（Dev）、测试、运维（Ops）、运营的部门壁垒，通过自动化工具链打通 “代码提交 → 构建 → 测试 → 部署 → 监控 → 反馈” 的全流程，实现持续集成（CI）、持续交付（CD）、持续部署，达成软件的高频、稳定、低风险交付。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心特点&lt;/strong&gt;：&lt;code&gt;全流程自动化&lt;/code&gt;、研发运维一体化、数据驱动持续优化。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：云原生应用、互联网产品、需要高频迭代上线的业务系统，当前行业内通常与 Scrum/Kanban 配套使用，是现代研发体系的标配。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;软件质量特性&lt;a href=&quot;#软件质量特性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;软件质量特性，用于全面刻画&lt;code&gt;软件质量&lt;/code&gt;维度的固有属性集合，是&lt;code&gt;对软件满足明确规定的、隐含&lt;/code&gt;的或强制的需求与业务目标能力的结构化拆分，是软件需求定义、设计评审、测试验证、质量评估、运维优化全流程的&lt;code&gt;核心基准与度量框架&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;当前全球软件工程领域通用的权威质量规范，将软件质量划分为两大核心维度：&lt;code&gt;产品质量模型&lt;/code&gt;（8 大顶层特性）、&lt;code&gt;使用质量模型&lt;/code&gt;（5 大顶层特性）。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;产品质量模型（8 大核心特性）&lt;a href=&quot;#产品质量模型8-大核心特性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;该模型聚焦软件产品本身的固有属性，覆盖软件内部设计与外部表现的全维度质量要求，每个顶层特性均配套可量化、可测试的子特性，是研发与测试环节的核心质量管控依据。&lt;/p&gt;

















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;顶层质量特性&lt;/th&gt;&lt;th&gt;标准定义&lt;/th&gt;&lt;th&gt;核心子特性&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;功能性（Functional Suitability）&lt;/td&gt;&lt;td&gt;软件在指定条件下使用时，提供的&lt;code&gt;功能满足明确和隐含需求&lt;/code&gt;的程度，核心是「&lt;code&gt;功能对不对、全不全、准不准&lt;/code&gt;」&lt;/td&gt;&lt;td&gt;功能完备性、功能正确性、功能恰当性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;性能效率（Performance Efficiency）&lt;/td&gt;&lt;td&gt;软件在指定条件下使用时，对&lt;code&gt;响应时间、吞吐量、资源消耗的适配与管控&lt;/code&gt;能力，核心是「&lt;code&gt;快不快、省不省&lt;/code&gt;」&lt;/td&gt;&lt;td&gt;时间特性、资源利用率、容量特性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;兼容性（Compatibility）&lt;/td&gt;&lt;td&gt;软件&lt;code&gt;与其他系统、环境、组件共存，以及与其他软硬件交换信息&lt;/code&gt;的能力，核心是「&lt;code&gt;能不能一起用、能不能互通&lt;/code&gt;」&lt;/td&gt;&lt;td&gt;共存性、互操作性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;易用性（Usability）&lt;/td&gt;&lt;td&gt;软件在指定使用场景下，&lt;code&gt;被目标用户理解、学习、使用和吸引用户&lt;/code&gt;的程度，核心是「&lt;code&gt;好不好用、容不容易上手&lt;/code&gt;」&lt;/td&gt;&lt;td&gt;可辨识性、易学性、易操作性、用户差错防御性、UI 舒适性、可访问性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;可靠性（Reliability）&lt;/td&gt;&lt;td&gt;软件在指定条件、指定时长内，&lt;code&gt;维持规定性能级别的能力&lt;/code&gt;，核心是「&lt;code&gt;稳不稳、容不容易崩&lt;/code&gt;」&lt;/td&gt;&lt;td&gt;成熟度、可用性、容错性、易恢复性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;信息安全性（Security）&lt;/td&gt;&lt;td&gt;软件保护信息、数据与系统，&lt;code&gt;防止未授权的访问、篡改、泄露、破坏的能力&lt;/code&gt;，核心是「&lt;code&gt;安不安全、防不防得住&lt;/code&gt;」&lt;/td&gt;&lt;td&gt;机密性、完整性、抗抵赖性、可核查性、真实性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;可维护性（Maintainability）&lt;/td&gt;&lt;td&gt;软件被&lt;code&gt;修改、优化、缺陷修复、环境适配&lt;/code&gt;的难易程度，核心是「&lt;code&gt;好不好改、容不容易维护&lt;/code&gt;」&lt;/td&gt;&lt;td&gt;模块化、可复用性、易分析性、易修改性、易测试性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;可移植性（Portability）&lt;/td&gt;&lt;td&gt;软件从一种硬件、软件、运行环境&lt;code&gt;迁移到另一种环境&lt;/code&gt;的难易程度，核心是「&lt;code&gt;能不能换环境用、适配性强不强&lt;/code&gt;」&lt;/td&gt;&lt;td&gt;适应性、易安装性、可替换性&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;使用质量模型（5 大核心特性）&lt;a href=&quot;#使用质量模型5-大核心特性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;该模型从&lt;code&gt;用户实际使用视角&lt;/code&gt;出发，定义软件在真实业务场景中，给用户带来的价值与体验，是产品质量特性在实际使用中的综合体现，核心关注「&lt;code&gt;用户用起来能不能达成目标、体验好不好&lt;/code&gt;」。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;有效性（Effectiveness）&lt;/strong&gt;：用户使用&lt;code&gt;软件准确、完整地达成指定业务目标&lt;/code&gt;的程度，核心是「&lt;code&gt;能不能把事办成&lt;/code&gt;」。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;效率（Efficiency）&lt;/strong&gt;：用户达成目标过程中，消耗的时间、精力、资源的程度，核心是「&lt;code&gt;办事省不省力、省不省时&lt;/code&gt;」。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;满意度（Satisfaction）&lt;/strong&gt;：用户使用软件过程中的&lt;code&gt;主观满意程度&lt;/code&gt;，涵盖使用体验、信任度、接受度，核心是「&lt;code&gt;用户用得爽不爽&lt;/code&gt;」。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无风险影响（Freedom from Risk）&lt;/strong&gt;：软件避免给用户、业务、数据、环境带来人身、经济、信息安全、运营等潜在&lt;code&gt;风险&lt;/code&gt;的程度，核心是「&lt;code&gt;用起来有没有隐患、会不会出事&lt;/code&gt;」。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;情境覆盖度（Context Coverage）&lt;/strong&gt;：软件在不同使用场景、用户群体、设备环境、约束条件下，都能&lt;code&gt;满足使用需求&lt;/code&gt;的程度，核心是「&lt;code&gt;不同场景、不同人群能不能都用好&lt;/code&gt;」。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;一些说明：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;量化落地逻辑&lt;/strong&gt;：每个顶层质量特性，均可向下拆解为子特性、再到可落地的量化度量指标。例如可靠性的「可用性」，可拆解为 MTBF（平均无故障时间）、MTTR（平均修复时间）等可统计、可验证的指标。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特性权衡原则&lt;/strong&gt;：不同质量特性之间可能存在冲突（如极致的信息安全性可能牺牲易用性，极致的性能效率可能牺牲可维护性），实际项目中需&lt;code&gt;基于业务目标与优先级做平衡取舍&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;全周期应用&lt;/strong&gt;：软件质量特性是需求规格说明书中质量需求的核心依据，也是&lt;code&gt;测试用例设计&lt;/code&gt;、版本验收、运维优化、用户反馈闭环的核心框架，贯穿软件完整生命周期。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>软件与软件测试的定义与分类</title><link>https://umami.eu.cc/posts/software-testing-basics/</link><guid isPermaLink="true">https://umami.eu.cc/posts/software-testing-basics/</guid><description>讲解软件的定义及软件测试分类</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;软件的定义&lt;a href=&quot;#软件的定义&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;软件是计算机系统中与硬件相互依存的无形逻辑产品，是&lt;code&gt;程序、数据及其相关文档&lt;/code&gt;的完整集合，它通过&lt;code&gt;在计算机硬件上运行&lt;/code&gt;来实现特定的功能、任务或服务。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;核心组成三要素&lt;a href=&quot;#核心组成三要素&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;程序&lt;/strong&gt;：软件的核心执行体，是按预先设计的逻辑和规则编写的、可&lt;code&gt;被计算机执行的指令序列&lt;/code&gt;，直接完成计算、处理、交互等具体操作。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;数据&lt;/strong&gt;：程序运行所&lt;code&gt;依赖、处理和产生的信息&lt;/code&gt;，包括用户输入、业务数据、配置参数、数据库内容等，是软件实现价值的载体。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;文档&lt;/strong&gt;：描述软件的&lt;code&gt;需求、设计、开发、使用和维护的图文资料&lt;/code&gt;，如需求说明书、设计文档、用户手册、测试报告等，是软件可协作、可维护、可复用的关键保障。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;关键特性&lt;a href=&quot;#关键特性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;与硬件本质不同&lt;/strong&gt;：硬件是有形的物理实体，软件是抽象的逻辑产品，无物理磨损，但会因&lt;code&gt;需求变更、环境变化&lt;/code&gt;出现 “逻辑老化”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可无限复制&lt;/strong&gt;：软件的&lt;code&gt;复制成本极低&lt;/code&gt;，核心价值在于其设计和开发的智力劳动。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;强依赖性&lt;/strong&gt;：必须&lt;code&gt;依赖特定的硬件和系统环境&lt;/code&gt;才能运行。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;软件的分类&lt;a href=&quot;#软件的分类&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;软件分类没有唯一标准，最核心、最通用的是&lt;code&gt;按功能与服务对象&lt;/code&gt;划分，同时可结合运行方式、授权模式、部署形态等维度交叉分类。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;系统软件&lt;a href=&quot;#系统软件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;为计算机本身提供运行环境、管理资源、支撑其他软件运行的基础软件&lt;/code&gt;，用户一般不直接用它完成具体业务任务。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;操作系统（OS）&lt;/strong&gt;：最核心的系统软件，管理硬件资源、调度程序运行、提供用户交互接口。例如 Windows、macOS、Linux、Android、iOS、鸿蒙 OS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;语言处理程序&lt;/strong&gt;：将高级语言（C、Java、Python）转换为计算机可执行的机器码。例如 GCC 编译器、Python 解释器、JVM（Java 虚拟机）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据库管理系统（DBMS）&lt;/strong&gt;：统一管理和维护数据的系统软件。例如 MySQL、Oracle、SQL Server、Redis、MongoDB&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;系统工具与实用程序&lt;/strong&gt;：辅助系统运行、维护、诊断的工具。例如 硬件驱动程序、磁盘分区工具、杀毒软件、备份还原工具、任务管理器等&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;应用软件&lt;a href=&quot;#应用软件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;为满足用户特定业务、娱乐、办公等需求开发的软件&lt;/code&gt;，是用户直接使用的软件类型。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;通用应用软件&lt;/strong&gt;：面向大众，适用于多个行业和场景。例如 Office/WPS（办公）、Chrome/Edge（浏览器）、微信 / QQ（社交）、Photoshop（图像处理）、网易云音乐（多媒体）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;专用 / 行业应用软件&lt;/strong&gt;：针对特定行业、特定业务流程定制开发。例如 医院 HIS 系统、银行核心业务系统、工业 PLC 控制软件、AutoCAD（工程设计）、用友 / 金蝶（财务软件）、ERP 系统&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;两种架构风格&lt;a href=&quot;#两种架构风格&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;C/S 架构&lt;a href=&quot;#cs-架构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;系统分为&lt;code&gt;客户端&lt;/code&gt;和&lt;code&gt;服务器&lt;/code&gt;两个独立部分：客户端安装在用户本地设备上，负责用户交互和部分业务处理；服务器负责核心业务逻辑、数据存储和管理，两者通过网络通信。&lt;/li&gt;
&lt;li&gt;✅ 优点：性能高（客户端可分担计算任务）、界面交互丰富、安全性可控、支持离线使用&lt;/li&gt;
&lt;li&gt;❌ 缺点：部署更新麻烦（需逐台升级客户端）、跨平台性差、维护成本高&lt;/li&gt;
&lt;li&gt;📌 典型例子：QQ / 微信客户端、企业 ERP 客户端、大型游戏、Photoshop 联网版、银行柜台系统&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;B/S 架构&lt;a href=&quot;#bs-架构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;客户端统一为标准浏览器&lt;/code&gt;，无需安装任何专用软件；所有业务逻辑、数据处理都集中在服务器端，浏览器仅负责展示页面和接收用户输入。&lt;/li&gt;
&lt;li&gt;✅ 优点：零安装、零维护（更新仅需改服务器）、跨平台性极强、访问不受地点限制&lt;/li&gt;
&lt;li&gt;❌ 缺点：性能弱于 C/S、复杂交互体验差、对网络依赖高、安全性相对较弱&lt;/li&gt;
&lt;li&gt;📌 典型例子：网页版邮箱、在线文档（腾讯文档）、电商网站、企业 OA 系统、百度搜索&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;软件测试的定义&lt;a href=&quot;#软件测试的定义&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;软件测试是在规定的条件下，对软件产品（程序、数据、文档）进行系统性的检查与验证，&lt;code&gt;以发现缺陷、评估质量、验证需求符合性，并最终降低产品上线风险的过程&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;软件测试的目标不是单纯 “找 bug”，而是三位一体：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;发现缺陷&lt;/strong&gt;：找出&lt;code&gt;软件中存在的功能、性能、安全、兼容性等问题&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证需求&lt;/strong&gt;：确认软件&lt;code&gt;是否真正实现了用户的真实需求和设计要求&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估质量&lt;/strong&gt;：量化软件的质量水平，为&lt;code&gt;产品是否可以上线&lt;/code&gt;提供决策依据&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;软件测试本质上是&lt;code&gt;风险管控活动&lt;/code&gt;：它&lt;code&gt;无法消除所有风险&lt;/code&gt;，但能在成本和时间的约束下，尽可能&lt;code&gt;发现并修复高优先级缺陷&lt;/code&gt;，将产品上线后的故障风险控制在企业和用户可接受的范围内。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;关键要点&lt;a href=&quot;#关键要点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;测试对象是完整的软件&lt;/strong&gt;：不只是可执行的程序，还包括软件的另外两个核心组成 —— 数据（如测试用例数据、配置文件）和文档（如需求说明书、设计文档、用户手册）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试贯穿全生命周期&lt;/strong&gt;：不是 “开发完才测试”，而是从需求分析阶段就开始介入（测试左移），一直持续到上线后的运维阶段（测试右移）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试的基本公理&lt;/strong&gt;：测试只能证明软件存在缺陷，不能证明软件没有缺陷。穷尽所有可能的测试用例在工程上是不可能的。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试是标准化的专业活动&lt;/strong&gt;：不是随意 “点来点去”，而是需要遵循 “计划→设计→执行→缺陷管理→报告” 的完整流程。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;软件测试的分类&lt;a href=&quot;#软件测试的分类&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;软件测试分类维度众多，最核心、最通用的是按「&lt;code&gt;测试阶段&lt;/code&gt;」划分（对应软件全生命周期），其次是「测试方法」和「测试对象 / 特性」，其他维度可交叉使用。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;按测试阶段划分（最核心，面试必问）&lt;a href=&quot;#按测试阶段划分最核心面试必问&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这是&lt;code&gt;测试工作的标准流程&lt;/code&gt;，从代码编写到产品上线逐步推进，层层把关。&lt;/p&gt;







































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;测试阶段&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;测试主体&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心测试内容&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;测试依据&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;典型例子&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;单元测试&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;开发人员为主&lt;/td&gt;&lt;td&gt;测试最小可执行单元（函数、方法、类）的逻辑正确性&lt;/td&gt;&lt;td&gt;详细设计文档、代码&lt;/td&gt;&lt;td&gt;测试登录接口的参数校验逻辑&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;集成测试&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;测试人员 + 开发人员&lt;/td&gt;&lt;td&gt;测试模块之间的接口调用、数据传递的正确性&lt;/td&gt;&lt;td&gt;概要设计文档、接口文档&lt;/td&gt;&lt;td&gt;测试用户服务与订单服务的调用是否正常&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;系统测试&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;测试人员为主&lt;/td&gt;&lt;td&gt;测试整个完整系统的功能、性能、安全、兼容性等所有特性&lt;/td&gt;&lt;td&gt;需求规格说明书&lt;/td&gt;&lt;td&gt;测试电商网站的下单、支付、退款全流程&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;验收测试&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;客户 / 产品方为主&lt;/td&gt;&lt;td&gt;验证产品是否满足业务需求和用户使用习惯，决定是否上线&lt;/td&gt;&lt;td&gt;用户需求文档、验收标准&lt;/td&gt;&lt;td&gt;企业客户验收 ERP 系统是否符合自身业务流程&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;验收测试的细分&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;α 测试&lt;/strong&gt;：开发方&lt;code&gt;内部模拟用户&lt;/code&gt;进行的验收测试&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;β 测试&lt;/strong&gt;：面向真实用户的&lt;code&gt;公开测试&lt;/code&gt;（如 APP 的公测版）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UAT 测试&lt;/strong&gt;：用户验收测试，&lt;code&gt;最正式的验收环节&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;回归测试&lt;/strong&gt;不是一个独立的测试阶段，而是&lt;code&gt;贯穿全生命周期的活动&lt;/code&gt;。指&lt;code&gt;修改代码或修复缺陷&lt;/code&gt;后，重新执行相关测试用例，&lt;code&gt;确保修改没有引入新的缺陷或影响其他功能&lt;/code&gt;。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;按测试方法划分（基础方法论）&lt;a href=&quot;#按测试方法划分基础方法论&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;根据&lt;code&gt;是否查看软件内部代码和逻辑结构&lt;/code&gt;划分，所有测试类型都基于这三种方法。&lt;/p&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;strong&gt;测试方法&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;核心思想&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;常用技术&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;黑盒测试&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;不看内部代码，只关注输入输出是否符合需求&lt;/td&gt;&lt;td&gt;等价类划分、边界值分析、因果图、场景法&lt;/td&gt;&lt;td&gt;绝大多数功能测试、系统测试、验收测试&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;白盒测试&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;查看内部代码，测试代码逻辑的覆盖度和正确性&lt;/td&gt;&lt;td&gt;语句覆盖、分支覆盖、条件覆盖、循环覆盖&lt;/td&gt;&lt;td&gt;单元测试、部分集成测试&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;灰盒测试&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;结合黑盒和白盒，既关注输入输出，也关注部分内部逻辑&lt;/td&gt;&lt;td&gt;接口测试、数据库测试&lt;/td&gt;&lt;td&gt;集成测试、接口测试&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;黑盒测试 ≠ 功能测试&lt;/strong&gt;。黑盒是一种测试方法，功能测试是一种测试内容，功能测试大多采用黑盒方法，但黑盒也可用于性能、安全等测试。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;按测试对象 / 特性划分（测试什么内容）&lt;a href=&quot;#按测试对象--特性划分测试什么内容&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;分为&lt;code&gt;功能测试&lt;/code&gt;和&lt;code&gt;非功能测试&lt;/code&gt;两大类，是测试的核心工作内容。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;功能测试（最基础、占比最大）：验证软件的功能是否按照需求规格说明书正确实现，是&lt;code&gt;所有测试的基础&lt;/code&gt;。例如 测试登录功能是否能正常登录、注册功能是否能成功注册、搜索功能是否能返回正确结果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;非功能测试（决定产品上限）：验证软件除功能外的其他质量特性，直接影响用户体验和系统稳定性。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;性能测试&lt;/strong&gt;：测试系统在不同压力下的表现
&lt;ul&gt;
&lt;li&gt;负载测试：正常压力下的性能指标（响应时间、吞吐量）&lt;/li&gt;
&lt;li&gt;压力测试：极限压力下的系统稳定性和崩溃点&lt;/li&gt;
&lt;li&gt;并发测试：多用户同时操作时的系统表现&lt;/li&gt;
&lt;li&gt;稳定性测试：长时间运行下的系统可靠性&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全测试&lt;/strong&gt;：测试系统抵御攻击和数据泄露的能力。例如 SQL 注入、XSS 攻击、权限越权、敏感数据加密&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;兼容性测试&lt;/strong&gt;：测试软件在不同环境下的运行情况
&lt;ul&gt;
&lt;li&gt;浏览器兼容（Chrome、Edge、Firefox）&lt;/li&gt;
&lt;li&gt;操作系统兼容（Windows、macOS、Android、iOS）&lt;/li&gt;
&lt;li&gt;设备兼容（不同型号的手机、电脑）&lt;/li&gt;
&lt;li&gt;版本兼容（新旧版本数据互通）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;易用性测试&lt;/strong&gt;：测试软件是否容易学习、使用和理解&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可靠性测试&lt;/strong&gt;：测试系统在规定时间和条件下完成规定功能的能力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;其他&lt;/strong&gt;：安装测试、卸载测试、文档测试、本地化测试等&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;其他常用分类维度&lt;a href=&quot;#其他常用分类维度&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;按执行方式&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;手动测试&lt;/strong&gt;：测试人员手动执行测试用例。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动化测试&lt;/strong&gt;：通过脚本或工具自动执行测试用例（如 Selenium、Appium、Postman）。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;&lt;p&gt;自动化测试不是一种独立的测试类型，而是一种测试执行方式，可用于功能、性能、回归等多种测试。&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;按测试目的&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;冒烟测试&lt;/strong&gt;：版本构建后，先&lt;code&gt;执行核心功能的少量用例&lt;/code&gt;，验证版本是否可测&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回归测试&lt;/strong&gt;：修改后验证是否引入新缺陷（见上文）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;探索性测试&lt;/strong&gt;：&lt;code&gt;不依赖测试用例&lt;/code&gt;，基于测试人员经验自由探索发现缺陷&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;随机测试&lt;/strong&gt;：&lt;code&gt;随机输入数据进行测试&lt;/code&gt;，作为其他测试的补充&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>JavaScript和CSS相关描述</title><link>https://umami.eu.cc/posts/javascript-css-conceptmd/</link><guid isPermaLink="true">https://umami.eu.cc/posts/javascript-css-conceptmd/</guid><description>HTML用于页面的显示，那么JavaScript则在于页面动作的处理与校验，CSS则用于美化页面</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;CSS的简单概述&lt;a href=&quot;#css的简单概述&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;CSS（Cascading Style Sheets，层叠样式表）是用来&lt;strong&gt;控制网页外观和布局&lt;/strong&gt;的核心技术，和 HTML（负责网页结构）、JavaScript（负责网页交互）并称前端三大基石。&lt;/p&gt;&lt;p&gt;CSS 有三种常见的使用方式：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;行内样式（直接写在 HTML 标签里）&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!-- 直接在标签的style属性中写样式，仅作用于当前标签 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;width: 200px; height: 100px; background: #f0f0f0;&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;这是行内样式的盒子&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;缺点：&lt;strong&gt;样式和结构耦合&lt;/strong&gt;，不利于维护，仅临时调试时使用。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;内部样式表（写在 HTML 的 style 标签里）&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;内部样式表&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 内部样式表：样式写在head的style标签中，作用于当前页面 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/* 选择器：选中页面中所有class为box的元素 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;.box&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;width: &lt;/span&gt;&lt;span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;height: &lt;/span&gt;&lt;span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;background: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;42b983&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 绿色背景 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: &lt;/span&gt;&lt;span&gt;white&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 文字白色 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;text-align: &lt;/span&gt;&lt;span&gt;center&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 文字居中 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;line-height: &lt;/span&gt;&lt;span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 行高等于高度，实现文字垂直居中 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;box&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;内部样式表的盒子&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;优点&lt;/strong&gt;：样式集中管理，作用于当前页面；&lt;strong&gt;缺点&lt;/strong&gt;：无法复用到其他页面。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;外部样式表（单独的 &lt;code&gt;.css&lt;/code&gt; 文件，&lt;strong&gt;推荐&lt;/strong&gt;）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创建 &lt;code&gt;style.css&lt;/code&gt; 文件：&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/* style.css - 外部样式表文件 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/* 选择器：选中class为box的元素 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.box&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;width: &lt;/span&gt;&lt;span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;height: &lt;/span&gt;&lt;span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;background: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;3498db&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 蓝色背景 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;color: &lt;/span&gt;&lt;span&gt;white&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;border-radius: &lt;/span&gt;&lt;span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 圆角 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;padding: &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 内边距 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;在 HTML 中引入该文件：&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;外部样式表&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!-- 引入外部CSS文件，rel=&quot;stylesheet&quot;表示这是样式表，href是文件路径 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;link&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;rel&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;stylesheet&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;style.css&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;box&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;外部样式表的盒子&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;优点：样式和结构完全分离，可复用到多个页面，维护成本低。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;section&gt;&lt;h3&gt;CSS 核心概念&lt;a href=&quot;#css-核心概念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;常见选择器（选中要样式化的元素）&lt;/li&gt;
&lt;/ol&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;选择器类型&lt;/th&gt;&lt;th&gt;语法&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;类选择器&lt;/td&gt;&lt;td&gt;&lt;code&gt;.类名&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;.box&lt;/code&gt;&lt;/td&gt;&lt;td&gt;选中所有 &lt;code&gt;class=&quot;&quot;box&quot;&quot;&lt;/code&gt; 的元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ID 选择器&lt;/td&gt;&lt;td&gt;&lt;code&gt;#ID名&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;#header&lt;/code&gt;&lt;/td&gt;&lt;td&gt;选中唯一的 &lt;code&gt;id=&quot;&quot;header&quot;&quot;&lt;/code&gt; 的元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;标签选择器&lt;/td&gt;&lt;td&gt;&lt;code&gt;标签名&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;div&lt;/code&gt;&lt;/td&gt;&lt;td&gt;选中所有 &lt;code&gt;div&lt;/code&gt; 元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;通配符&lt;/td&gt;&lt;td&gt;&lt;code&gt;*&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;*&lt;/code&gt;&lt;/td&gt;&lt;td&gt;选中所有元素（慎用）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;常用样式属性（控制元素外观）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;尺寸&lt;/strong&gt;：&lt;code&gt;width&lt;/code&gt;（宽度）、&lt;code&gt;height&lt;/code&gt;（高度）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;背景&lt;/strong&gt;：&lt;code&gt;background&lt;/code&gt;（背景色 / 图片）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文字&lt;/strong&gt;：&lt;code&gt;color&lt;/code&gt;（文字颜色）、&lt;code&gt;font-size&lt;/code&gt;（字号）、&lt;code&gt;text-align&lt;/code&gt;（文字对齐）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;边距&lt;/strong&gt;：&lt;code&gt;margin&lt;/code&gt;（外边距，元素和其他元素的间距）、&lt;code&gt;padding&lt;/code&gt;（内边距，元素内容和边框的间距）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;边框&lt;/strong&gt;：&lt;code&gt;border&lt;/code&gt;（边框，如 &lt;code&gt;border: 1px solid #ccc;&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当多个样式作用于同一个元素时，优先级规则（从高到低）：&lt;strong&gt;行内样式 &amp;gt; ID 选择器 &amp;gt; 类选择器 &amp;gt; 标签选择器 &amp;gt; 通配符&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;示例，一个居中的浅灰色盒子，里面有红色居中的标题，和两行 16px 的文字：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lang&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;zh-CN&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;CSS入门示例&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/* 标签选择器：所有p标签 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-size: &lt;/span&gt;&lt;span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;line-height: &lt;/span&gt;&lt;span&gt;1.5&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/* 类选择器：class=&quot;title&quot;的元素 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;.title&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;e74c3c&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 红色 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-size: &lt;/span&gt;&lt;span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;text-align: &lt;/span&gt;&lt;span&gt;center&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/* ID选择器：id=&quot;container&quot;的元素 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;#container&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;width: &lt;/span&gt;&lt;span&gt;&lt;span&gt;800&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;auto&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/* 水平居中 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: &lt;/span&gt;&lt;span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;background: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;f9f9f9&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border: &lt;/span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;solid&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;eee&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;container&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;title&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;CSS入门学习&amp;lt;/&lt;/span&gt;&lt;span&gt;h1&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;CSS用来控制网页的样式和布局。&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;核心是「选择器 + 样式属性」。&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;CSS 的核心作用是&lt;strong&gt;分离网页结构和样式&lt;/strong&gt;，推荐使用&lt;strong&gt;外部样式表&lt;/strong&gt;管理样式；&lt;/li&gt;
&lt;li&gt;CSS 语法核心是&lt;code&gt;「选择器 {样式属性：值；}」&lt;/code&gt;，新手先掌握类选择器、标签选择器；&lt;/li&gt;
&lt;li&gt;优先级规则：&lt;code&gt;行内样式 &amp;gt; ID 选择器 &amp;gt; 类选择器 &amp;gt; 标签选择器&lt;/code&gt;，层叠特性让样式可以叠加生效。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;JavaScript 简单概述&lt;a href=&quot;#javascript-简单概述&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;JavaScript（简称 JS）是一门&lt;strong&gt;跨平台、面向对象&lt;/strong&gt;的脚本语言，核心作用是为网页添加&lt;strong&gt;交互功能&lt;/strong&gt;（比如点击按钮、表单验证、数据动态展示等），和 HTML（结构）、CSS（样式）共同构成前端三大核心技术。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;核心使用方式&lt;a href=&quot;#核心使用方式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;内部脚本（写在 HTML 的 script 标签里）&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;JS内部脚本&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;button&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;onclick&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;alert&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;你点击了按钮！&apos;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;点我&amp;lt;/&lt;/span&gt;&lt;span&gt;button&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!-- JS代码写在script标签中，建议放在body末尾（避免DOM未加载完成） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 单行注释：这是JS的入门代码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/* 多行注释：&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;/span&gt;&lt;span&gt;控制台打印（调试常用）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.log() 是JS最基础的输出方式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;log&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Hello JavaScript!&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 弹出提示框&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;alert&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;欢迎学习JS！&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;外部脚本（单独的 &lt;code&gt;.js&lt;/code&gt; 文件，&lt;strong&gt;推荐&lt;/strong&gt;）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创建 main.js 文件：&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// main.js - 外部JS文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 向控制台输出内容&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(&quot;这是外部JS文件的代码&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 获取页面中的按钮元素，并添加点击事件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const btn = document.getElementById(&quot;myBtn&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;btn.addEventListener(&quot;click&quot;, function() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;alert(&quot;你点击了外部脚本的按钮！&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;在 HTML 中引入：&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;JS外部脚本&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;button&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;myBtn&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;点我（外部脚本）&amp;lt;/&lt;/span&gt;&lt;span&gt;button&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!-- 引入外部JS文件，src指定文件路径 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;main.js&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;核心原则：&lt;code&gt;script&lt;/code&gt; 标签要么写内部代码（无 &lt;code&gt;src&lt;/code&gt;），要么引入外部文件（有 &lt;code&gt;src&lt;/code&gt;），不能同时做两件事。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;JS 核心基础&lt;a href=&quot;#js-核心基础&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;变量与数据类型&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;变量是存储数据的容器，JS 是弱类型语言，用 &lt;code&gt;let/const&lt;/code&gt; 声明（替代老旧的var）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 变量声明：&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;let name = &quot;张三&quot;; // 字符串类型（用单/双引号包裹）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;let age = 20;      // 数字类型（整数/小数）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;let isStudent = true; // 布尔类型（true/false）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const PI = 3.14159;   // 常量（值不可修改）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 控制台打印变量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(&quot;姓名：&quot;, name);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(&quot;年龄：&quot;, age);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;核心区别：&lt;strong&gt;let&lt;/strong&gt;：变量可重新赋值（如 &lt;code&gt;age = 21;&lt;/code&gt;）；&lt;strong&gt;const&lt;/strong&gt;：常量不可修改（声明时必须赋值）。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;运算符与流程控制&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;常用运算符&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 算术运算符：+ - * / %（加减乘除取余）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;let sum = 10 + 5; // 15&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;let remainder = 10 % 3; // 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 比较运算符：==（值相等） ===（值+类型都相等） &amp;gt; &amp;lt; &amp;gt;= &amp;lt;=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(10 == &quot;10&quot;); // true（仅值相等）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(10 === &quot;10&quot;); // false（类型不同）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 逻辑运算符：&amp;amp;&amp;amp;（且） ||（或） !（非）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;let a = true, b = false;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(a &amp;amp;&amp;amp; b); // false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(a || b); // true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;流程控制（条件 / 循环）&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 1. if-else 条件判断&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;let score = 85;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if (score &amp;gt;= 90) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(&quot;优秀&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;} else if (score &amp;gt;= 70) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(&quot;良好&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;} else {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(&quot;及格&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 2. for 循环（重复执行代码）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;for (let i = 0; i &amp;lt; 5; i++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(&quot;循环次数：&quot;, i); // 输出 0-4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 3. 数组遍历（常用）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;let fruits = [&quot;苹果&quot;, &quot;香蕉&quot;, &quot;橙子&quot;];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fruits.forEach(function(fruit, index) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(`第${index+1}个水果：${fruit}`);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;函数（封装可复用的代码）&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;函数是 JS 的核心，用于封装重复逻辑：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 定义函数：计算两个数的和&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;function add(num1, num2) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;return num1 + num2; // 返回结果&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 调用函数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;let result = add(5, 3);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(&quot;5+3=&quot;, result); // 输出 8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 箭头函数（简化写法，ES6+）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const multiply = (a, b) =&amp;gt; a * b;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;console.log(&quot;2*4=&quot;, multiply(2, 4)); // 输出 8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;DOM 操作（核心：操作网页元素）&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;DOM（文档对象模型）是 JS 操作 HTML 元素的接口：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;DOM操作示例&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;title&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;初始标题&amp;lt;/&lt;/span&gt;&lt;span&gt;h1&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;content&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;初始内容&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;button&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;changeBtn&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;修改内容&amp;lt;/&lt;/span&gt;&lt;span&gt;button&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 1. 获取元素（三种常用方式）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;document&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;getElementById&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;title&quot;&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;// 通过ID获取&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;content&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;document&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;getElementsByClassName&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;content&quot;&lt;/span&gt;&lt;span&gt;)[&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;]; &lt;/span&gt;&lt;span&gt;// 通过类名获取（返回数组）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;btn&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;document&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;querySelector&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;#changeBtn&quot;&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;// 通过选择器获取（CSS语法）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 2. 修改元素内容/样式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;btn&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;addEventListener&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;click&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;innerText&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;修改后的标题&quot;&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;// 修改文本内容&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;content&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;color&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;red&quot;&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;// 修改样式（CSS属性用驼峰命名，如backgroundColor）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;content&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;innerHTML&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&amp;lt;b&amp;gt;加粗的内容&amp;lt;/b&amp;gt;&quot;&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;// 可解析HTML标签&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;核心方法：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;获取元素&lt;/strong&gt;：&lt;code&gt;getElementById()&lt;/code&gt;、&lt;code&gt;querySelector()&lt;/code&gt;（最灵活）；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改内容&lt;/strong&gt;：&lt;code&gt;innerText&lt;/code&gt;（纯文本）、&lt;code&gt;innerHTML&lt;/code&gt;（可解析 HTML）；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改样式&lt;/strong&gt;：元素.style.样式属性（如 &lt;code&gt;style.fontSize = &quot;20px&quot;&lt;/code&gt;）；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;绑定事件&lt;/strong&gt;：&lt;code&gt;addEventListener(&quot;事件名&quot;, 回调函数)&lt;/code&gt;（如 click 点击事件）。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;示例：输入两个数字，点击按钮后显示求和结果；若输入非数字，提示错误&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lang&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;zh-CN&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;JS完整示例&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;#result&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin-top: &lt;/span&gt;&lt;span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-size: &lt;/span&gt;&lt;span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;3498db&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h2&lt;/span&gt;&lt;span&gt;&amp;gt;简易计算器&amp;lt;/&lt;/span&gt;&lt;span&gt;h2&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;number&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;num1&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;placeholder&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;输入第一个数&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;number&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;num2&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;placeholder&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;输入第二个数&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;button&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;calcBtn&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;计算求和&amp;lt;/&lt;/span&gt;&lt;span&gt;button&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;result&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 获取元素&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;num1Input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;document&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;getElementById&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;num1&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;num2Input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;document&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;getElementById&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;num2&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;calcBtn&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;document&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;getElementById&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;calcBtn&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;resultDiv&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;document&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;getElementById&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;result&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 绑定点击事件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;calcBtn&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;addEventListener&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;click&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;// 获取输入值并转换为数字&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;num1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Number&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;num1Input&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;num2&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Number&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;num2Input&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;// 验证输入&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;isNaN&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;num1&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span&gt;||&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;isNaN&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;num2&lt;/span&gt;&lt;span&gt;)) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;resultDiv&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;innerText&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;请输入有效的数字！&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;resultDiv&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;color&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;red&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;// 计算并展示结果&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;num1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;num2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;resultDiv&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;innerText&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;`求和结果：&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;num1&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt; + &lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;num2&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;sum&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;`&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;resultDiv&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;color&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;#3498db&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;总结&lt;a href=&quot;#总结-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;JS 核心作用是&lt;strong&gt;实现网页交互&lt;/strong&gt;，推荐将代码写在外部 &lt;code&gt;.js&lt;/code&gt; 文件中，且 &lt;code&gt;script标签&lt;/code&gt; 放在 &lt;code&gt;body&lt;/code&gt; 末尾；&lt;/li&gt;
&lt;li&gt;变量优先用 &lt;code&gt;let/const&lt;/code&gt; 声明，流程控制（&lt;code&gt;if/for&lt;/code&gt;）实现逻辑分支，函数封装复用代码；&lt;/li&gt;
&lt;li&gt;DOM 操作是 JS 操作网页的核心，核心步骤：获取元素 → 修改内容 / 样式 → 绑定事件。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>文章简述</title><link>https://umami.eu.cc/posts/firefly-article-summary/</link><guid isPermaLink="true">https://umami.eu.cc/posts/firefly-article-summary/</guid><description>关于文章的一些说明</description><pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;创建一篇文章&lt;a href=&quot;#创建一篇文章&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pnpm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new-post&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;import-to-zentao&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;文章的 Front-matter&lt;a href=&quot;#文章的-front-matter&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;我的第一篇博客文章&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;published&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2023-09-09&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;这是我新 Astro 博客的第一篇文章。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;image&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;./cover.jpg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tags&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;前端&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;开发&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;category&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;前端开发&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;draft&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
















































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;属性&lt;/th&gt;&lt;th&gt;描述&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章标题。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;published&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章发布日期。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;updated&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章更新日期。如果未设置，将默认使用发布日期。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;pinned&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是否将此文章置顶在文章列表顶部。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章的简短描述。显示在首页上。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;image&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章封面图片路径。&lt;br /&gt;1. 以 &lt;code&gt;http://&lt;/code&gt; 或 &lt;code&gt;https://&lt;/code&gt; 开头：使用网络图片&lt;br /&gt;2. 以 &lt;code&gt;/&lt;/code&gt; 开头：&lt;code&gt;public&lt;/code&gt; 目录中的图片&lt;br /&gt;3. 不带任何前缀：相对于 markdown 文件的路径&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;tags&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章标签。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;category&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章分类。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;lang&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章语言代码（如 &lt;code&gt;zh-CN&lt;/code&gt;）。仅当文章语言与站点默认语言不同时设置。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;licenseName&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章内容的许可证名称。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;licenseUrl&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章内容的许可证链接。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;author&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章作者。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;sourceLink&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章内容的来源链接或参考。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;draft&lt;/code&gt;&lt;/td&gt;&lt;td&gt;如果这篇文章仍是草稿，则不会显示。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;comment&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是否启用此文章的评论功能。默认为 &lt;code&gt;true&lt;/code&gt;。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;slug&lt;/code&gt;&lt;/td&gt;&lt;td&gt;自定义文章 URL 路径。如果不设置，将使用文件名作为 URL。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;password&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章密码。设置后文章内容将被 AES-256-GCM 加密，访客需输入密码才能查看。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;passwordHint&lt;/code&gt;&lt;/td&gt;&lt;td&gt;密码提示。显示在密码输入框上方，帮助访客回忆密码，也可以不加。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;文章文件的放置位置&lt;a href=&quot;#文章文件的放置位置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;您的文章文件应放置在 &lt;code&gt;src/content/posts/&lt;/code&gt; 目录中。您也可以创建子目录来更好地组织您的文章和资源。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;src/content/posts/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── post-1.md&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;└── post-2/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;├── cover.png&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;└── index.md&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;自定义文章 URL (Slug)&lt;a href=&quot;#自定义文章-url-slug&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;什么是 Slug？&lt;a href=&quot;#什么是-slug&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Slug 是文章 URL 路径的自定义部分。如果不设置 slug，系统将使用文件名作为 URL。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Slug 使用示例&lt;a href=&quot;#slug-使用示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;示例 1：使用文件名作为 URL&lt;a href=&quot;#示例-1使用文件名作为-url&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;我的第一篇博客文章&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;published&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2023-09-09&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;文件：&lt;code&gt;src/content/posts/my-first-blog-post.md&lt;/code&gt;&lt;/p&gt;&lt;p&gt;URL：&lt;code&gt;/posts/my-first-blog-post&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;示例 2：自定义 Slug&lt;a href=&quot;#示例-2自定义-slug&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;我的第一篇博客文章&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;published&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2023-09-09&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;slug&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;hello-world&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;文件：&lt;code&gt;src/content/posts/my-first-blog-post.md&lt;/code&gt;&lt;/p&gt;&lt;p&gt;URL：&lt;code&gt;/posts/hello-world&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;示例 3：其他语言文件名使用Slug&lt;a href=&quot;#示例-3其他语言文件名使用slug&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;如何使用 Firefly 博客主题&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;published&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2023-09-09&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;slug&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;how-to-use-firefly-blog-theme&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;文件：&lt;code&gt;src/content/posts/如何使用Firefly博客主题.md&lt;/code&gt;&lt;/p&gt;&lt;p&gt;URL：&lt;code&gt;/posts/how-to-use-firefly-blog-theme&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Slug 使用建议&lt;a href=&quot;#slug-使用建议&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;使用英文和连字符&lt;/strong&gt;：&lt;code&gt;my-awesome-post&lt;/code&gt; 而不是 &lt;code&gt;my awesome post&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保持简洁&lt;/strong&gt;：避免过长的 slug&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;具有描述性&lt;/strong&gt;：让 URL 能够反映文章内容&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;避免特殊字符&lt;/strong&gt;：只使用字母、数字和连字符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保持一致性&lt;/strong&gt;：在整个博客中使用相似的命名模式&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;注意事项&lt;a href=&quot;#注意事项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Slug 一旦设置并发布，建议不要随意更改，以免影响 SEO 和已存在的链接&lt;/li&gt;
&lt;li&gt;如果多个文章使用相同的 slug，后面的文章会覆盖前面的&lt;/li&gt;
&lt;li&gt;Slug 会自动转换为小写&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>HTML相关描述</title><link>https://umami.eu.cc/posts/html-concept/</link><guid isPermaLink="true">https://umami.eu.cc/posts/html-concept/</guid><description>页面的描述，web测试中需要理解前端的一些语言</description><pubDate>Sat, 21 Mar 2026 22:04:40 GMT</pubDate><content:encoded>&lt;p&gt;在移动端开发中，使用原生的编程语言(&lt;strong&gt;安卓和 iOS 都是分开的&lt;/strong&gt;)，外加 HTML5 ，则被称为&lt;code&gt;混合开发&lt;/code&gt;，未加则是&lt;code&gt;原生开发&lt;/code&gt;。&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;一、核心定义&lt;a href=&quot;#一核心定义&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;HTML（超文本标记语言）是&lt;strong&gt;用来构建网页结构&lt;/strong&gt;的&lt;code&gt;标记语言&lt;/code&gt;，不是编程语言，通过各种标签描述网页的文字、图片、链接、表单等元素的布局和展示。&lt;/p&gt;&lt;p&gt;基础结构：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 声明文档类型，HTML5简化版 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lang&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;zh-CN&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 根标签，lang指定语言 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 头部：页面元信息，不显示在页面上 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 编码格式，避免乱码（测试必查） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;网页标题&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 浏览器标签页标题 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 主体：页面可见内容都在这里 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;这是页面内容&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;section&gt;&lt;h3&gt;标题标签&lt;a href=&quot;#标题标签&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在 HTML 中，&lt;strong&gt;标题标签（Heading Tags）&lt;/strong&gt; 是用来定义网页中不同层级标题的标签，它们不仅能让文本以不同大小显示，更重要的是赋予文本语义化的含义，帮助搜索引擎和浏览器理解页面结构。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lang&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;zh-CN&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;标题标签示例&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 可选：自定义标题样式，覆盖默认样式 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;h1&lt;/span&gt;&lt;span&gt; { color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;2c3e50&lt;/span&gt;&lt;span&gt;; font-size: &lt;/span&gt;&lt;span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;h2&lt;/span&gt;&lt;span&gt; { color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;3498db&lt;/span&gt;&lt;span&gt;; font-size: &lt;/span&gt;&lt;span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt; { color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;2ecc71&lt;/span&gt;&lt;span&gt;; font-size: &lt;/span&gt;&lt;span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;h4&lt;/span&gt;&lt;span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;h5&lt;/span&gt;&lt;span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;h6&lt;/span&gt;&lt;span&gt; { color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;95a5a6&lt;/span&gt;&lt;span&gt;; font-size: &lt;/span&gt;&lt;span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h1&lt;/span&gt;&lt;span&gt;&amp;gt;一级标题（页面主标题，建议一个页面仅1个）&amp;lt;/&lt;/span&gt;&lt;span&gt;h1&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h2&lt;/span&gt;&lt;span&gt;&amp;gt;二级标题（主要章节标题）&amp;lt;/&lt;/span&gt;&lt;span&gt;h2&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt;&amp;gt;三级标题（章节下的子标题）&amp;lt;/&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h4&lt;/span&gt;&lt;span&gt;&amp;gt;四级标题（更细分的子标题）&amp;lt;/&lt;/span&gt;&lt;span&gt;h4&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h5&lt;/span&gt;&lt;span&gt;&amp;gt;五级标题&amp;lt;/&lt;/span&gt;&lt;span&gt;h5&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h6&lt;/span&gt;&lt;span&gt;&amp;gt;六级标题（层级最低）&amp;lt;/&lt;/span&gt;&lt;span&gt;h6&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;核心使用规则：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;语义优先，而非样式&lt;/strong&gt;：不要为了调整字体大小滥用标题标签（比如用 &lt;code&gt;&amp;lt;h3&amp;gt;&lt;/code&gt; 代替 &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; 加样式），标题标签的核心是表达内容层级，样式可以通过 CSS 自定义。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;层级有序&lt;/strong&gt;：标题应按 &lt;code&gt;&amp;lt;h1&amp;gt; → &amp;lt;h2&amp;gt; → &amp;lt;h3&amp;gt;&lt;/code&gt; 的顺序使用，不要跳过层级（比如直接从 &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; 跳到&lt;code&gt; &amp;lt;h3&amp;gt;&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; 的使用规范&lt;/strong&gt;：一个页面建议只使用 1 个 &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;，作为页面的核心主题（比如网站名称、文章标题），这对 SEO（搜索引擎优化）至关重要。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不可嵌套&lt;/strong&gt;：标题标签不能互相嵌套（比如 &lt;code&gt;&amp;lt;h1&amp;gt;&amp;lt;h2&amp;gt;&lt;/code&gt;错误&lt;code&gt;&amp;lt;/h2&amp;gt;&amp;lt;/h1&amp;gt;&lt;/code&gt; 是无效的）。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;段落标签&lt;a href=&quot;#段落标签&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在 HTML 中，&lt;strong&gt;段落标签&lt;/strong&gt;是用来定义文本段落的核心语义标签，它会自动为文本块添加上下外边距，将内容分隔成独立的段落，让页面结构更清晰、易读。&lt;/p&gt;&lt;p&gt;&lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; 标签是双标签（有开始和结束），内容写在 &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; 和 &lt;code&gt;&amp;lt;/p&amp;gt;&lt;/code&gt; 之间，浏览器会自动在段落前后添加空白（默认的外边距），无需手动加换行符。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lang&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;zh-CN&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;段落标签示例&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 可选：自定义段落样式 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-size: &lt;/span&gt;&lt;span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;    &lt;/span&gt;&lt;span&gt;/* 字体大小 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;line-height: &lt;/span&gt;&lt;span&gt;1.8&lt;/span&gt;&lt;span&gt;;   &lt;/span&gt;&lt;span&gt;/* 行高，提升可读性 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;333&lt;/span&gt;&lt;span&gt;;        &lt;/span&gt;&lt;span&gt;/* 字体颜色 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin: &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;     &lt;/span&gt;&lt;span&gt;/* 上下外边距10px，左右0 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;text-indent: &lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;em&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;   &lt;/span&gt;&lt;span&gt;/* 首行缩进2个字符（中文常用） */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h1&lt;/span&gt;&lt;span&gt;&amp;gt;春天的田野&amp;lt;/&lt;/span&gt;&lt;span&gt;h1&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h2&lt;/span&gt;&lt;span&gt;&amp;gt;田野里的生机&amp;lt;/&lt;/span&gt;&lt;span&gt;h2&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;春风拂过田野，麦苗探出嫩绿的脑袋，在微风中轻轻摇晃。田埂边的野花也悄悄绽放，紫的、黄的、白的，星星点点铺满了地头。&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;不远处的小河解冻了，流水叮咚作响，像是在唱着欢快的歌。几只燕子掠过水面，剪碎了倒映在水里的云影，给寂静的田野添了几分灵动。&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 空段落（无实际意义，不建议使用） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- &amp;lt;p&amp;gt;&amp;lt;/p&amp;gt; --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;语义优先&lt;/strong&gt;：&lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; 标签的核心是标记 “段落文本”，不要用它单纯来添加空白（空白可通过 CSS 的 margin/padding 控制）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;避免空段落&lt;/strong&gt;：不要写 &lt;code&gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;/code&gt; 这种空段落来换行，既不符合语义，也不利于 SEO，换行建议用 &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt;（换行标签）或 CSS。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;嵌套规则&lt;/strong&gt;：&lt;/p&gt;&lt;p&gt; 标签内不能嵌套块级元素（比如 &lt;code&gt;&amp;lt;h1&amp;gt;、&amp;lt;div&amp;gt;、&amp;lt;p&amp;gt;&lt;/code&gt; 本身），只能嵌套行内元素（比如 &lt;code&gt;&amp;lt;span&amp;gt;、&amp;lt;a&amp;gt;、&amp;lt;em&amp;gt;&lt;/code&gt; 等）。&lt;/p&gt;
&lt;p&gt;错误示例：&lt;code&gt;&amp;lt;p&amp;gt;&amp;lt;h3&amp;gt;&lt;/code&gt;错误&lt;code&gt;&amp;lt;/h3&amp;gt;&amp;lt;/p&amp;gt;&lt;/code&gt;（浏览器会自动拆分，导致结构混乱）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;换行 vs 分段&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;同一内容内的换行用 &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt;：&lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;第一行&lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt;第二行&lt;code&gt;&amp;lt;/p&amp;gt;&lt;/code&gt;（仍属于同一个段落）。&lt;/p&gt;
&lt;p&gt;不同内容块用 &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; 分段：&lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;第一段&amp;lt;&lt;code&gt;/p&amp;gt;&amp;lt;p&amp;gt;&lt;/code&gt;第二段&lt;code&gt;&amp;lt;/p&amp;gt;&lt;/code&gt;（两个独立段落，有默认间距）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;超链接标签&lt;a href=&quot;#超链接标签&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在 HTML 中，超链接标签（&lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; 标签，全称 Anchor） 是实现页面跳转、资源链接的核心标签，也是构成网页 “互联” 特性的基础。&lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; 标签通过 href 属性指定链接目标，还能通过其他属性控制链接的行为和样式。&lt;/p&gt;&lt;p&gt;&lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; 是双标签，核心属性是 href（指定链接地址），常用辅助属性包括 target（指定打开方式）、title（鼠标悬浮提示）等。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lang&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;zh-CN&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;超链接标签示例&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;/* 自定义链接样式（覆盖默认蓝色下划线） */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;2c3e50&lt;/span&gt;&lt;span&gt;;       &lt;/span&gt;&lt;span&gt;/* 链接默认颜色 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;text-decoration: &lt;/span&gt;&lt;span&gt;none&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;/* 去掉下划线 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin-right: &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;:hover&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;3498db&lt;/span&gt;&lt;span&gt;;       &lt;/span&gt;&lt;span&gt;/* 鼠标悬浮时颜色 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;text-decoration: &lt;/span&gt;&lt;span&gt;underline&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 悬浮显示下划线 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;:visited&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;9b59b6&lt;/span&gt;&lt;span&gt;;       &lt;/span&gt;&lt;span&gt;/* 已访问链接颜色 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h2&lt;/span&gt;&lt;span&gt;&amp;gt;超链接的常见类型&amp;lt;/&lt;/span&gt;&lt;span&gt;h2&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 1. 跳转到外部网站（绝对路径） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;访问百度：&amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://www.baidu.com&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;_blank&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;打开百度首页&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;百度首页&amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 2. 跳转到本站内的页面（相对路径） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;返回首页：&amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;index.html&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;首页&amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 3. 跳转到页面内的锚点（锚链接） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;#section1&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;跳转到“段落1”&amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 定义锚点（id 与 href 对应） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;section1&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;段落1&amp;lt;/&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;这是锚点对应的内容，滚动页面后点击链接会直接定位到这里。&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 回到顶部的锚链接（# 代表页面顶部） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;#&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;回到顶部&amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 4. 链接到邮箱/电话 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;联系我们：&amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;mailto:contact@example.com&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;发送邮件&amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;拨打电话：&amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;tel:10086&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;10086&amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 5. 下载文件（href 指向文件地址） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;下载文档：&amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;docs/说明文档.pdf&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;download&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;网站使用说明.pdf&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;说明文档&amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;属性&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;href&lt;/td&gt;&lt;td&gt;必选属性，指定链接目标（网址、页面路径、锚点、邮箱 / 电话、文件地址等）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;target&lt;/td&gt;&lt;td&gt;可选，指定链接打开方式：- _blank：新标签页打开（最常用）- _self：当前标签页打开（默认）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;title&lt;/td&gt;&lt;td&gt;可选，鼠标悬浮在链接上时显示的提示文本，提升用户体验&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;download&lt;/td&gt;&lt;td&gt;可选，点击链接时触发文件下载（值为下载后的文件名）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;忘记写 href&lt;/strong&gt;：&lt;code&gt;&amp;lt;a&amp;gt;链接&amp;lt;/a&amp;gt;&lt;/code&gt; 只是普通文本，必须加 href 才是有效链接；若暂时不想跳转，可写 &lt;strong&gt;href=“javascript:;”&lt;/strong&gt; 占位。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;绝对路径 vs 相对路径混淆&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;跳转到外部网站用绝对路径（带 &lt;code&gt;http:///https://&lt;/code&gt;）；&lt;/li&gt;
&lt;li&gt;跳转到本站内页面用相对路径（如 &lt;code&gt;index.html、../about.html&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;锚链接使用错误&lt;/strong&gt;：锚点需定义 &lt;code&gt;id&lt;/code&gt;（如 &lt;code&gt;&amp;lt;h3 id=&quot;section1&quot;&amp;gt;&lt;/code&gt;），链接的 &lt;code&gt;href&lt;/code&gt; 要加 &lt;code&gt;#&lt;/code&gt;（如 &lt;code&gt;href=&quot;#section1&quot;&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;样式覆盖问题&lt;/strong&gt;：浏览器默认给链接加蓝色下划线，可通过 CSS 的 &lt;code&gt;text-decoration: none&lt;/code&gt; 去掉，&lt;code&gt;hover&lt;/code&gt; 伪类可自定义悬浮效果。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;图片标签&lt;a href=&quot;#图片标签&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在 HTML 中，&lt;strong&gt;图片标签&lt;/strong&gt;是用来在网页中嵌入图片的核心标签，它是单标签（没有结束标签），通过核心属性指定图片地址、替代文本等关键信息，是网页可视化呈现的基础。&lt;/p&gt;&lt;p&gt;&lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; 标签的核心属性是 &lt;code&gt;src&lt;/code&gt;（指定图片地址）和 &lt;code&gt;alt&lt;/code&gt;（图片加载失败时的替代文本），还可通过 &lt;code&gt;width / height&lt;/code&gt; 控制尺寸，&lt;code&gt;title&lt;/code&gt; 增加悬浮提示。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lang&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;zh-CN&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;图片标签示例&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;/* 自定义图片样式，避免变形 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;img&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;/* 只设置宽度/高度其中一个，另一个自动等比缩放，防止图片变形 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;max-width: &lt;/span&gt;&lt;span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;height: &lt;/span&gt;&lt;span&gt;auto&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;/* 加边框和间距，提升美观度 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border: &lt;/span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;solid&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;eee&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: &lt;/span&gt;&lt;span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin: &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border-radius: &lt;/span&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 圆角 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;/* 图片容器，限制最大宽度 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;.img-container&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;max-width: &lt;/span&gt;&lt;span&gt;&lt;span&gt;800&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;auto&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;img-container&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h2&lt;/span&gt;&lt;span&gt;&amp;gt;图片标签的常见用法&amp;lt;/&lt;/span&gt;&lt;span&gt;h2&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 1. 基础用法（本地图片，相对路径） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;本地图片：&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;img&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;images/flower.jpg&quot;&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!--&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;图片路径（相对路径）&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;alt=&quot;一朵粉色的花&quot;       &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 替代文本（必写，提升可访问性） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;width=&quot;500&quot;             &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 宽度（单位px，可省略） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;title=&quot;春日盛开的花&quot;     &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 鼠标悬浮提示文本 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 2. 网络图片（绝对路径） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;网络图片：&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;img&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://picsum.photos/500/300&quot;&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!--&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;免费测试图片地址&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;alt=&quot;风景图&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;height=&quot;300&quot;                         &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 高度（仅设高度，宽度自动等比） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 3. 图片作为超链接（嵌套在&amp;lt;a&amp;gt;标签内） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;可点击的图片：&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://www.example.com&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;_blank&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;点击跳转到示例网站&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;img&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://picsum.photos/200/100&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;alt&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;示例网站封面&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;width&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;200&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 4. 图片加载失败的兜底（alt文本生效） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;加载失败的图片（alt文本展示）：&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;img&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;images/不存在的图片.jpg&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;alt&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;图片加载失败，请检查路径&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;属性&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;src&lt;/td&gt;&lt;td&gt;必选属性，指定图片地址：&lt;code&gt;一般本地图片用相对路径，网络图片用绝对路径&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;alt&lt;/td&gt;&lt;td&gt;必选属性（语义化 / SEO 必备），图片加载失败时显示的文本，也供屏幕阅读器读取，提升可访问性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;width/height&lt;/td&gt;&lt;td&gt;可选，设置图片尺寸（单位默认 px）；⚠️ 建议只设置其中一个，另一个自动等比缩放，避免图片变形&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;title&lt;/td&gt;&lt;td&gt;可选，鼠标悬浮在图片上时显示的提示文本&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;loading&lt;/td&gt;&lt;td&gt;可选，现代浏览器支持，loading=“lazy” 表示懒加载（滚动到图片位置才加载），提升页面加载速度&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;忘记写 alt 属性&lt;/strong&gt;：alt 是必选的语义化属性，不仅能在图片加载失败时提示用户，还能帮助搜索引擎理解图片内容，提升 SEO 效果&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;同时设置宽高导致变形&lt;/strong&gt;：如果手动同时设置 &lt;code&gt;width 和 height&lt;/code&gt;，且比例与原图不一致，图片会拉伸 / 压缩变形；建议只设一个，或用 &lt;code&gt;CSS max-width:100%; height:auto;&lt;/code&gt; 自适应&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;路径错误导致图片不显示&lt;/strong&gt;：其中 &lt;code&gt;./&lt;/code&gt; 表示同级目录，&lt;code&gt;../&lt;/code&gt; 表示上一级目录&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;忽略图片格式&lt;/strong&gt;：网页常用图片格式：jpg（色彩丰富，无透明）、png（支持透明）、webp（体积更小，兼容性好）、svg（矢量图，放大不失真）&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;表格标签&lt;a href=&quot;#表格标签&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTML 表格标签用于在网页中&lt;strong&gt;结构化展示二维数据&lt;/strong&gt;（行 + 列），比如成绩表、商品清单、财务数据等，核心是让数据排列整齐、层次清晰。&lt;/p&gt;&lt;p&gt;基础骨架标签：&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;标签&lt;/th&gt;&lt;th&gt;全称 / 含义&lt;/th&gt;&lt;th&gt;核心说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Table（表格）&lt;/td&gt;&lt;td&gt;表格的外层容器，所有表格内容都包裹在里面&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;tr&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Table Row（表格行）&lt;/td&gt;&lt;td&gt;定义表格的一行，只能包含&lt;code&gt;&amp;lt;td&amp;gt;/&amp;lt;th&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;td&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Table Data（表格数据）&lt;/td&gt;&lt;td&gt;普通单元格，存放具体数据（默认左对齐）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;th&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Table Header（表格表头）&lt;/td&gt;&lt;td&gt;表头单元格，默认居中、加粗，描述列 / 行含义&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;纯用基础标签能做表格，但语义化标签能让表格结构更清晰（对搜索引擎、屏幕阅读器更友好）：&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;标签&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;位置 / 使用说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;thead&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;表格头部&lt;/td&gt;&lt;td&gt;包裹表头行（&lt;code&gt;&amp;lt;tr&amp;gt;+&amp;lt;th&amp;gt;&lt;/code&gt;），放在&lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;内最上方&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;tbody&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;表格主体&lt;/td&gt;&lt;td&gt;包裹数据行（&lt;code&gt;&amp;lt;tr&amp;gt;+&amp;lt;td&amp;gt;&lt;/code&gt;），可多个（比如分页数据）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;tfoot&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;表格底部&lt;/td&gt;&lt;td&gt;包裹合计 / 备注行，会优先渲染（即使写在&lt;code&gt;&amp;lt;tbody&amp;gt;&lt;/code&gt;前）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;caption&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;表格标题&lt;/td&gt;&lt;td&gt;放在&lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;内第一个位置，默认居中显示表格名称&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;不是标签，是&lt;code&gt;&amp;lt;td&amp;gt;/&amp;lt;th&amp;gt;&lt;/code&gt;的核心属性，用于合并单元格（高频实用）：&lt;/p&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;属性&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;colspan&lt;/code&gt;&lt;/td&gt;&lt;td&gt;跨列合并（左右合并）&lt;/td&gt;&lt;td&gt;colspan=&quot;&quot;3&quot;&quot; → 跨 3 列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;rowspan&lt;/code&gt;&lt;/td&gt;&lt;td&gt;跨行合并（上下合并）&lt;/td&gt;&lt;td&gt;rowspan=&quot;&quot;2&quot;&quot; → 跨 2 行&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lang&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;zh-CN&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;学生成绩表&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/* 简单美化，让表格更易读 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;width: &lt;/span&gt;&lt;span&gt;&lt;span&gt;500&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border-collapse: &lt;/span&gt;&lt;span&gt;collapse&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 合并边框 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;text-align: &lt;/span&gt;&lt;span&gt;center&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;th&lt;/span&gt;&lt;span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border: &lt;/span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;solid&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;ccc&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: &lt;/span&gt;&lt;span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;thead&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;background-color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;f5f5f5&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;tfoot&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-weight: &lt;/span&gt;&lt;span&gt;bold&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 表格标题 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;caption&lt;/span&gt;&lt;span&gt;&amp;gt;2024级学生期末成绩表&amp;lt;/&lt;/span&gt;&lt;span&gt;caption&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 表头区域 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;thead&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;tr&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;th&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;rowspan&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;2&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;姓名&amp;lt;/&lt;/span&gt;&lt;span&gt;th&lt;/span&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 跨行合并2行 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;th&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;colspan&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;2&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;文化课&amp;lt;/&lt;/span&gt;&lt;span&gt;th&lt;/span&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 跨列合并2列 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;th&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;rowspan&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;2&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;体育&amp;lt;/&lt;/span&gt;&lt;span&gt;th&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;tr&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;tr&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;th&lt;/span&gt;&lt;span&gt;&amp;gt;语文&amp;lt;/&lt;/span&gt;&lt;span&gt;th&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;th&lt;/span&gt;&lt;span&gt;&amp;gt;数学&amp;lt;/&lt;/span&gt;&lt;span&gt;th&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;tr&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;thead&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 数据主体 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;tbody&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;tr&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;小明&amp;lt;/&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;95&amp;lt;/&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;98&amp;lt;/&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;85&amp;lt;/&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;tr&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;tr&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;小红&amp;lt;/&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;92&amp;lt;/&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;90&amp;lt;/&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;90&amp;lt;/&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;tr&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;tbody&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 表格底部（合计） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;tfoot&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;tr&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;平均分&amp;lt;/&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;93.5&amp;lt;/&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;94&amp;lt;/&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;87.5&amp;lt;/&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;tr&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;tfoot&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;新手常见注意事项：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;不要用表格做页面布局！现在主流用 Flex/Grid 布局，表格仅用于展示数据。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;border-collapse: collapse&lt;/code&gt;; 是表格美化的常用 CSS，能让边框不重叠。&lt;/li&gt;
&lt;li&gt;合并单元格后，要删除被合并的多余单元格（比如跨 2 列后，同行要少写 1 个&lt;code&gt;&amp;lt;td&amp;gt;&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;总结：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;表格核心骨架是 &lt;code&gt;&amp;lt;table&amp;gt; + &amp;lt;tr&amp;gt; + &amp;lt;td&amp;gt;/&amp;lt;th&amp;gt;&lt;/code&gt;，&lt;code&gt;&amp;lt;th&amp;gt;&lt;/code&gt; 专做表头、默认加粗居中。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;thead&amp;gt;/&amp;lt;tbody&amp;gt;/&amp;lt;tfoot&amp;gt;&lt;/code&gt; 是语义化标签，能让表格结构更清晰，优先使用。&lt;/li&gt;
&lt;li&gt;单元格合并靠 &lt;code&gt;colspan（跨列）&lt;/code&gt;和 &lt;code&gt;rowspan（跨行）&lt;/code&gt;，是表格的核心实用技巧。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;列表标签&lt;a href=&quot;#列表标签&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTML 列表标签用于&lt;strong&gt;有序 / 无序地展示一组相关内容&lt;/strong&gt;，比如导航菜单、步骤说明、商品卖点等，核心是让内容排列更有规律、可读性更强，是网页开发中高频使用的标签。&lt;/p&gt;&lt;p&gt;HTML 列表主要分 3 类：&lt;code&gt;无序列表&lt;/code&gt;、&lt;code&gt;有序列表&lt;/code&gt;、&lt;code&gt;定义列表&lt;/code&gt;，各自有明确的使用场景和语法。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;无序列表（最常用）&lt;/li&gt;
&lt;/ol&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;标签&lt;/th&gt;&lt;th&gt;全称 / 含义&lt;/th&gt;&lt;th&gt;核心说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Unordered List（无序列表）&lt;/td&gt;&lt;td&gt;列表外层容器，内容是一组无固定顺序的项&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;List Item（列表项）&lt;/td&gt;&lt;td&gt;定义列表中的每一项，必须嵌套在&lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;内&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;特点：默认显示「&lt;code&gt;圆点 (●)&lt;/code&gt;」作为项目符号，可通过 CSS 修改为方块、空心圆或自定义样式。s&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;有序列表&lt;/li&gt;
&lt;/ol&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;标签&lt;/th&gt;&lt;th&gt;全称 / 含义&lt;/th&gt;&lt;th&gt;核心说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Ordered List（有序列表）&lt;/td&gt;&lt;td&gt;列表外层容器，内容是一组有固定顺序的项&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;List Item（列表项）&lt;/td&gt;&lt;td&gt;定义列表中的每一项，必须嵌套在&lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt;内&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;特点：默认显示「数字 (1、2、3)」作为序号，可通过&lt;code&gt;type&lt;/code&gt;属性修改序号类型（字母、罗马数字等），也可通过&lt;code&gt;start&lt;/code&gt;属性指定起始序号。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;定义列表（语义化，用于 “名词 + 解释”）&lt;/li&gt;
&lt;/ol&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;标签&lt;/th&gt;&lt;th&gt;全称 / 含义&lt;/th&gt;&lt;th&gt;核心说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;dl&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Definition List（定义列表）&lt;/td&gt;&lt;td&gt;外层容器，包裹 “名词 + 解释” 组合&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;dt&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Definition Term（定义术语）&lt;/td&gt;&lt;td&gt;要解释的&lt;code&gt;名词 / 标题&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;dd&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Definition Description（定义描述）&lt;/td&gt;&lt;td&gt;对&lt;code&gt;&amp;lt;dt&amp;gt;&lt;/code&gt;的&lt;code&gt;解释 / 说明&lt;/code&gt;，默认缩进显示&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;下面的示例涵盖所有列表类型，附带简单 CSS 美化，方便理解和复用：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lang&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;zh-CN&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;HTML列表标签示例&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/* 简单美化，区分不同列表 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;.list-box&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin: &lt;/span&gt;&lt;span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border: &lt;/span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;solid&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;eee&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;width: &lt;/span&gt;&lt;span&gt;&lt;span&gt;400&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;ul&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;list-style-type: &lt;/span&gt;&lt;span&gt;square&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 无序列表改为方块符号 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;ol&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;A&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;list-style-position: &lt;/span&gt;&lt;span&gt;inside&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 序号和内容同排 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;dd&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;666&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin-left: &lt;/span&gt;&lt;span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 1. 无序列表（导航/卖点示例） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;list-box&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt;&amp;gt;无序列表（商品卖点）&amp;lt;/&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;ul&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;支持快充（66W）&amp;lt;/&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;5000mAh大容量电池&amp;lt;/&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;防水防尘（IP68）&amp;lt;/&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;ul&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 2. 有序列表（步骤/教程示例） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;list-box&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt;&amp;gt;有序列表（泡茶步骤）&amp;lt;/&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;ol&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;A&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;start&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;2&quot;&lt;/span&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 序号类型：大写字母，起始为B --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;温杯：用热水冲洗茶杯&amp;lt;/&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;投茶：放入3-5g茶叶&amp;lt;/&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;注水：倒入80℃热水&amp;lt;/&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;出汤：等待30秒后倒出茶汤&amp;lt;/&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;ol&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 3. 定义列表（名词解释示例） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;list-box&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt;&amp;gt;定义列表（技术术语）&amp;lt;/&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;dl&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;dt&lt;/span&gt;&lt;span&gt;&amp;gt;HTML&amp;lt;/&lt;/span&gt;&lt;span&gt;dt&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;dd&lt;/span&gt;&lt;span&gt;&amp;gt;超文本标记语言，用于构建网页结构的标记语言。&amp;lt;/&lt;/span&gt;&lt;span&gt;dd&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;dt&lt;/span&gt;&lt;span&gt;&amp;gt;CSS&amp;lt;/&lt;/span&gt;&lt;span&gt;dt&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;dd&lt;/span&gt;&lt;span&gt;&amp;gt;层叠样式表，用于美化网页样式的语言。&amp;lt;/&lt;/span&gt;&lt;span&gt;dd&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;dt&lt;/span&gt;&lt;span&gt;&amp;gt;JavaScript&amp;lt;/&lt;/span&gt;&lt;span&gt;dt&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;dd&lt;/span&gt;&lt;span&gt;&amp;gt;脚本语言，用于实现网页交互功能。&amp;lt;/&lt;/span&gt;&lt;span&gt;dd&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;dl&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;新手常见注意事项：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;嵌套规则&lt;/strong&gt;：&lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;必须嵌套在&lt;code&gt;&amp;lt;ul&amp;gt;/&amp;lt;ol&amp;gt;&lt;/code&gt;内，不能单独使用；列表可以嵌套（比如&lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;里的&lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;中再放&lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;，实现多级菜单）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;样式修改&lt;/strong&gt;：尽量用 CSS（list-style-type）修改列表符号，而非 HTML 属性（比如&lt;code&gt;&amp;lt;ul type=&quot;square&quot;&amp;gt;&lt;/code&gt;），符合 “结构与样式分离” 的最佳实践。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;使用场景&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;无序列表：导航栏、商品卖点、标签云等无顺序的内容；&lt;/li&gt;
&lt;li&gt;有序列表：教程步骤、排行榜、考试答案等有顺序的内容；&lt;/li&gt;
&lt;li&gt;定义列表：词典解释、产品参数说明、FAQ 问答等 “名词 + 解释” 的内容。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;总结：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;HTML 列表分 3 类：&lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;（无序列表，无固定顺序）、&lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt;（有序列表，有固定顺序）、&lt;code&gt;&amp;lt;dl&amp;gt;&lt;/code&gt;（定义列表，名词 + 解释），核心列表项都是&lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;（&lt;code&gt;&amp;lt;dl&amp;gt;用&amp;lt;dt&amp;gt;/&amp;lt;dd&amp;gt;&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;无序列表默认圆点符号，有序列表默认数字序号，可通过 CSS 自定义样式。&lt;/li&gt;
&lt;li&gt;列表可嵌套使用（比如多级导航），且需遵循 “结构与样式分离”，用 CSS 控制外观而非 HTML 属性。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;div标签&lt;a href=&quot;#div标签&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; 是 HTML 中的通用块级容器标签（div 是 &lt;code&gt;division&lt;/code&gt; 的缩写，意为 “分割、分区”），本身&lt;strong&gt;没有任何默认样式和语义&lt;/strong&gt;，核心作用是：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;把网页内容&lt;strong&gt;分组、划分区域&lt;/strong&gt;（比如头部、主体、侧边栏）；&lt;/li&gt;
&lt;li&gt;作为 CSS 样式和 JavaScript 操作的&lt;strong&gt;载体&lt;/strong&gt;（给 div 加 class/id，就能精准控制样式 / 交互）。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;简单来说：&lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; 就是一个 &lt;strong&gt;“空盒子”&lt;/strong&gt;，你可以往里面装任何内容（文本、图片、表格、列表、甚至其他 div），并通过样式把它变成你想要的样子。&lt;/p&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;特点&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;块级元素&lt;/td&gt;&lt;td&gt;默认独占一行，宽度默认撑满父容器，可设置宽高、内外边距&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;无默认样式&lt;/td&gt;&lt;td&gt;默认没有边框、背景、间距，纯 “透明盒子”&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;无语义&lt;/td&gt;&lt;td&gt;仅用于布局分组，搜索引擎 / 屏幕阅读器无法识别其内容用途（对比 &lt;code&gt;&amp;lt;header&amp;gt;/&amp;lt;section&amp;gt;&lt;/code&gt; 等语义化标签）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;可嵌套&lt;/td&gt;&lt;td&gt;支持多层嵌套（比如 div 里套 div），是网页布局的核心&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;下面通过 “网页基础布局” 示例，展示 div 如何划分区域、配合 CSS 实现布局：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lang&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;zh-CN&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;div标签示例 - 网页布局&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/* 全局样式重置 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;box-sizing: &lt;/span&gt;&lt;span&gt;border-box&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-family: &lt;/span&gt;&lt;span&gt;&quot;微软雅黑&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/* 用class控制div样式，实现布局分区 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;.container&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;width: &lt;/span&gt;&lt;span&gt;&lt;span&gt;1200&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;auto&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/* 居中 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/* 头部区域 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;.header&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;height: &lt;/span&gt;&lt;span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;background-color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;333&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: &lt;/span&gt;&lt;span&gt;white&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;line-height: &lt;/span&gt;&lt;span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin-bottom: &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/* 主体区域（左侧内容 + 右侧侧边栏） */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;.main&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;display: &lt;/span&gt;&lt;span&gt;flex&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 弹性布局，让两个div并排 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;gap: &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 两个div之间的间距 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;.content&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;flex: &lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 占3份宽度 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;height: &lt;/span&gt;&lt;span&gt;&lt;span&gt;400&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;background-color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;f5f5f5&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: &lt;/span&gt;&lt;span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;.sidebar&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;flex: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;/* 占1份宽度 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;height: &lt;/span&gt;&lt;span&gt;&lt;span&gt;400&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;background-color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;eee&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: &lt;/span&gt;&lt;span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/* 底部区域 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;.footer&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;height: &lt;/span&gt;&lt;span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;background-color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;333&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: &lt;/span&gt;&lt;span&gt;white&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;line-height: &lt;/span&gt;&lt;span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;text-align: &lt;/span&gt;&lt;span&gt;center&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin-top: &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;container&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 头部 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;header&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;网页头部（导航栏）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 主体 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;main&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 左侧内容区 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;content&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;主要内容区域&amp;lt;&lt;/span&gt;&lt;span&gt;br&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;可以放文章、图片、表格等任意内容&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 右侧侧边栏 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;sidebar&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;侧边栏&amp;lt;&lt;/span&gt;&lt;span&gt;br&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;76&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;放推荐内容、广告、导航等&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;77&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;78&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;79&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;80&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 底部 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;81&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;footer&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;82&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;网页底部 - 版权信息 © 2024&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;83&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;84&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;85&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;86&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;section&gt;&lt;h3&gt;div 与 span 的核心区别&lt;a href=&quot;#div-与-span-的核心区别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;很多人会混淆 &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; 和 &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt;，这里用表格清晰区分：&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;特性&lt;/th&gt;&lt;th&gt;&lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;元素类型&lt;/td&gt;&lt;td&gt;块级元素&lt;/td&gt;&lt;td&gt;行内元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;排版方式&lt;/td&gt;&lt;td&gt;默认独占一行&lt;/td&gt;&lt;td&gt;与其他内容同行显示&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;宽高设置&lt;/td&gt;&lt;td&gt;可设置 width/height&lt;/td&gt;&lt;td&gt;无法设置（宽高由内容决定）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;主要用途&lt;/td&gt;&lt;td&gt;划分大区域（布局）&lt;/td&gt;&lt;td&gt;包裹小段文本 / 元素（局部样式）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;示例如下对比：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!-- div：块级，独占一行 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;background: red; width: 200px;&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;我是div，独占一行&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;这是一段文字&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!-- span：行内，和文字同行 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;这是&amp;lt;&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;color: blue; font-weight: bold;&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;span包裹的文字&amp;lt;/&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;，和其他文字同行&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;语义化&lt;a href=&quot;#语义化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;虽然 div 是布局核心，但 HTML5 推出了 &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt; 等语义化标签，它们本质上是 “有含义的 div”：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;语义化标签：既有 div 的布局能力，又能让浏览器 / 搜索引擎理解内容用途（比如 &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt; 表示头部）；&lt;/li&gt;
&lt;li&gt;div：无语义，适合作为 “通用容器”（比如包裹一组无特定语义的内容）。&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!-- 推荐：语义化标签 + div 配合使用 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;header&lt;/span&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 头部（语义化） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;logo&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;LOGO&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 通用容器，装logo --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;nav&lt;/span&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 导航（语义化） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;ul&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;首页&amp;lt;/&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;关于我们&amp;lt;/&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;ul&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;nav&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;header&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; 是&lt;strong&gt;无语义的通用块级容器&lt;/strong&gt;，核心作用是划分网页区域、作为样式 / 交互的载体，默认独占一行、无默认样式。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; 用于&lt;strong&gt;大区域布局&lt;/strong&gt;，&lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; 用于&lt;strong&gt;行内局部样式&lt;/strong&gt;，二者是块级与行内的核心搭配。&lt;/li&gt;
&lt;li&gt;实际开发中优先用 HTML5 语义化标签（&lt;code&gt;&amp;lt;header&amp;gt;/&amp;lt;main&amp;gt;&lt;/code&gt; 等），div 作为补充的通用容器，兼顾布局灵活性和语义化。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;表单标签&lt;a href=&quot;#表单标签&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;HTML 表单（&lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt;）是网页与用户交互的核心，用于收集用户输入的信息（比如登录、注册、提交订单、问卷调查等），并将数据提交到服务器处理。&lt;/p&gt;&lt;p&gt;简单来说：表单就是网页上的 “填写单”，用户填完后点击按钮，数据就能传给后端。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;核心表单标签 / 属性详解(重点)&lt;a href=&quot;#核心表单标签--属性详解重点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;基础容器与核心属性&lt;/li&gt;
&lt;/ol&gt;












































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;标签 / 属性&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;关键说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;表单外层容器&lt;/td&gt;&lt;td&gt;所有表单控件必须嵌套在&lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt;内&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;action&lt;/code&gt;&lt;/td&gt;&lt;td&gt;表单提交地址&lt;/td&gt;&lt;td&gt;数据要发送到的后端接口（比如&lt;code&gt;action=&quot;&quot;/login&quot;&quot;&lt;/code&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;method&lt;/code&gt;&lt;/td&gt;&lt;td&gt;提交方式&lt;/td&gt;&lt;td&gt;常用GET（参数拼 URL，适合简单数据）/ POST（数据隐藏，适合敏感 / 大量数据）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;&lt;td&gt;控件命名&lt;/td&gt;&lt;td&gt;后端通过 name 获取对应值（必须设置，否则数据传不出去）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;placeholder&lt;/code&gt;&lt;/td&gt;&lt;td&gt;提示文本&lt;/td&gt;&lt;td&gt;输入框内的灰色提示文字（比如 “请输入手机号”）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;required&lt;/code&gt;&lt;/td&gt;&lt;td&gt;必填验证&lt;/td&gt;&lt;td&gt;标记控件为必填，提交时为空会提示用户&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;value&lt;/code&gt;&lt;/td&gt;&lt;td&gt;默认值 / 提交值&lt;/td&gt;&lt;td&gt;控件的默认内容，或单选 / 复选框的提交值&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ol&gt;
&lt;li&gt;常用输入控件（核心）&lt;/li&gt;
&lt;/ol&gt;
































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;标签 / 类型&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;示例代码&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;text&quot;&quot;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;单行文本输入（用户名 / 姓名）&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;text&quot;&quot; name=&quot;&quot;username&quot;&quot; placeholder=&quot;&quot;请输入用户名&quot;&quot; required&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;password&quot;&quot;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;密码输入（隐藏显示）&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;password&quot;&quot; name=&quot;&quot;pwd&quot;&quot; placeholder=&quot;&quot;请输入密码&quot;&quot; required&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;radio&quot;&quot;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;单选按钮（互斥选项，比如性别）&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;radio&quot;&quot; name=&quot;&quot;gender&quot;&quot; value=&quot;&quot;male&quot;&quot;&amp;gt; 男&amp;lt;input type=&quot;&quot;radio&quot;&quot; name=&quot;&quot;gender&quot;&quot; value=&quot;&quot;female&quot;&quot;&amp;gt; 女&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;checkbox&quot;&quot;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;复选框（多选选项，比如爱好）&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;checkbox&quot;&quot; name=&quot;&quot;hobby&quot;&quot; value=&quot;&quot;read&quot;&quot;&amp;gt; 阅读&amp;lt;input type=&quot;&quot;checkbox&quot;&quot; name=&quot;&quot;hobby&quot;&quot; value=&quot;&quot;sport&quot;&quot;&amp;gt; 运动&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;email&quot;&quot;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;邮箱输入（自带格式验证）&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;email&quot;&quot; name=&quot;&quot;email&quot;&quot; required&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;tel&quot;&quot;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;手机号输入（移动端调数字键盘）&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;tel&quot;&quot; name=&quot;&quot;phone&quot;&quot; placeholder=&quot;&quot;请输入11位手机号&quot;&quot;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;submit&quot;&quot;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;提交按钮&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;submit&quot;&quot; value=&quot;&quot;登录&quot;&quot;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;reset&quot;&quot;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;重置按钮&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;input type=&quot;&quot;reset&quot;&quot; value=&quot;&quot;清空&quot;&quot;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;textarea&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;多行文本输入（留言 / 简介）&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;textarea name=&quot;&quot;desc&quot;&quot; rows=&quot;&quot;5&quot;&quot; cols=&quot;&quot;30&quot;&quot;&amp;gt;默认留言&amp;lt;/textarea&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;select&amp;gt;/&amp;lt;option&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;下拉选择框（比如城市 / 年级）&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;select name=&quot;&quot;city&quot;&quot;&amp;gt;  &amp;lt;option value=&quot;&quot;beijing&quot;&quot;&amp;gt;北京&amp;lt;/option&amp;gt;  &amp;lt;option value=&quot;&quot;shanghai&quot;&quot;&amp;gt;上海&amp;lt;/option&amp;gt;&amp;lt;/select&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;label&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;绑定控件（点击文字也能选中）&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;label for=&quot;&quot;username&quot;&quot;&amp;gt;用户名：&amp;lt;/label&amp;gt;&amp;lt;input type=&quot;&quot;text&quot;&quot; id=&quot;&quot;username&quot;&quot; name=&quot;&quot;username&quot;&quot;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;示例一个包含大部分常用控件的表单示例，附带 CSS 美化：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lang&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;zh-CN&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;meta&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;charset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;表单标签示例 - 用户注册&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/* 简单美化，让表单更易读 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;.form-box&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;width: &lt;/span&gt;&lt;span&gt;&lt;span&gt;400&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin: &lt;/span&gt;&lt;span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;auto&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: &lt;/span&gt;&lt;span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border: &lt;/span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;solid&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;eee&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border-radius: &lt;/span&gt;&lt;span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;.form-item&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin-bottom: &lt;/span&gt;&lt;span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;display: &lt;/span&gt;&lt;span&gt;inline-block&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;width: &lt;/span&gt;&lt;span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;text-align: &lt;/span&gt;&lt;span&gt;right&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin-right: &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;text&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;password&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;email&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;select&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;width: &lt;/span&gt;&lt;span&gt;&lt;span&gt;250&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: &lt;/span&gt;&lt;span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border: &lt;/span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;solid&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;ccc&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border-radius: &lt;/span&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;textarea&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;width: &lt;/span&gt;&lt;span&gt;&lt;span&gt;250&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;height: &lt;/span&gt;&lt;span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: &lt;/span&gt;&lt;span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border: &lt;/span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;solid&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;ccc&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border-radius: &lt;/span&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;.submit-btn&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;width: &lt;/span&gt;&lt;span&gt;&lt;span&gt;340&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;background-color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;007bff&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: &lt;/span&gt;&lt;span&gt;white&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border: &lt;/span&gt;&lt;span&gt;none&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border-radius: &lt;/span&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cursor: &lt;/span&gt;&lt;span&gt;pointer&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin-left: &lt;/span&gt;&lt;span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&lt;span&gt;.submit-btn&lt;/span&gt;&lt;span&gt;:hover&lt;/span&gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;background-color: &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;0056b3&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;form-box&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;text-align: center; margin-bottom: 20px;&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;用户注册表单&amp;lt;/&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 表单容器：提交方式POST，地址为示例（实际需替换为后端接口） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;form&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;action&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;/register&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;method&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;POST&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 1. 用户名 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;form-item&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;username&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;用户名：&amp;lt;/&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;text&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;username&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;username&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;placeholder&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;请输入用户名&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;required&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 2. 密码 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;form-item&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;pwd&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;密&lt;/span&gt;&lt;span&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;/span&gt;&lt;span&gt;码：&amp;lt;/&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;password&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;pwd&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;pwd&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;placeholder&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;请输入6-16位密码&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;required&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 3. 性别（单选） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;form-item&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;性&lt;/span&gt;&lt;span&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;/span&gt;&lt;span&gt;别：&amp;lt;/&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;radio&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;gender&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;male&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;male&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;76&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;male&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;男&amp;lt;/&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;77&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;radio&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;gender&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;female&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;female&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;78&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;female&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;女&amp;lt;/&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;79&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;80&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;81&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 4. 爱好（复选） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;82&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;form-item&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;83&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;爱&lt;/span&gt;&lt;span&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;/span&gt;&lt;span&gt;好：&amp;lt;/&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;84&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;checkbox&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;hobby&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;read&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;read&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;85&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;read&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;阅读&amp;lt;/&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;86&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;checkbox&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;hobby&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;sport&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;sport&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;87&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;sport&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;运动&amp;lt;/&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;88&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;checkbox&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;hobby&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;music&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;music&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;89&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;music&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;音乐&amp;lt;/&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;90&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;91&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;92&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 5. 所在城市（下拉框） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;93&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;form-item&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;94&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;city&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;城&lt;/span&gt;&lt;span&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;/span&gt;&lt;span&gt;市：&amp;lt;/&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;95&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;select&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;city&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;city&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;96&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;option&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;请选择城市&amp;lt;/&lt;/span&gt;&lt;span&gt;option&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;97&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;option&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;beijing&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;北京&amp;lt;/&lt;/span&gt;&lt;span&gt;option&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;98&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;option&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;shanghai&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;上海&amp;lt;/&lt;/span&gt;&lt;span&gt;option&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;99&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;option&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;guangzhou&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;广州&amp;lt;/&lt;/span&gt;&lt;span&gt;option&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;100&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;select&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;101&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;102&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;103&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 6. 个人简介（多行文本） --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;104&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;form-item&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;105&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;desc&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;简&lt;/span&gt;&lt;span&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;/span&gt;&lt;span&gt;介：&amp;lt;/&lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;106&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;textarea&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;desc&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;desc&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;rows&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;3&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cols&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;30&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;placeholder&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;请输入个人简介（选填）&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;textarea&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;107&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;108&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;109&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 7. 提交/重置按钮 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;110&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;form-item&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;111&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;submit&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;提交注册&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;submit-btn&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;112&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;reset&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;清空表单&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;margin-left: 10px; padding: 10px;&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;113&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;114&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;form&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;115&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;116&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;117&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;常见坑与注意事项&lt;a href=&quot;#常见坑与注意事项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;必须设置name属性&lt;/strong&gt;：所有需要提交的控件（输入框、单选、复选等）都要加 &lt;code&gt;name&lt;/code&gt;，后端靠 &lt;code&gt;name&lt;/code&gt; 取值（比如 &lt;code&gt;username&lt;/code&gt; 对应输入的用户名）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;单选按钮的 name 要相同&lt;/strong&gt;：同一组单选（比如性别）必须用同一个 &lt;code&gt;name&lt;/code&gt;，否则无法互斥。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;label&amp;gt;&lt;/code&gt;的绑定技巧：用 &lt;code&gt;for=&quot;控件id&quot;&lt;/code&gt; 绑定，点击文字也能选中控件（提升用户体验），不要只靠空格分隔。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;POST vs GET&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET&lt;/code&gt;：数据拼在 URL 后（比如 &lt;code&gt;?username=小明&amp;amp;pwd=123&lt;/code&gt;），适合简单、非敏感数据；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST&lt;/code&gt;：数据在请求体中（看不到），适合密码、表单等敏感 / 大量数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;前端验证只是辅助&lt;/strong&gt;：&lt;code&gt;required&lt;/code&gt;、&lt;code&gt;type=&quot;email&quot;&lt;/code&gt; 等前端验证方便用户，但后端必须重新验证（防止恶意绕过）。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;总结&lt;a href=&quot;#总结-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;表单核心是&lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt;容器 + 各类输入控件，&lt;strong&gt;action（提交地址）&lt;/strong&gt;、&lt;strong&gt;method（提交方式）&lt;/strong&gt;、&lt;code&gt;name（控件命名）&lt;/code&gt;是三大关键属性。&lt;/li&gt;
&lt;li&gt;常用控件：文本框（text）、密码框（password）、单选（radio）、复选（checkbox）、下拉框（select）、多行文本（textarea），需根据场景选择。&lt;/li&gt;
&lt;li&gt;开发要点：控件必须加 name，单选按钮 name 要统一，优先用 POST 提交敏感数据，&lt;code&gt;&amp;lt;label&amp;gt;&lt;/code&gt;绑定提升用户体验。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Giscus评论系统</title><link>https://umami.eu.cc/posts/giscus-comment-system/</link><guid isPermaLink="true">https://umami.eu.cc/posts/giscus-comment-system/</guid><description>giscus就是这样一个很好的评论区，它基于Github Discussion，无需自托管，无需你管理账号，仅需引入一个JS即可用！</description><pubDate>Mon, 09 Mar 2026 18:25:28 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;配置 Giscus&lt;a href=&quot;#配置-giscus&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;https://2x.nz/posts/giscus-akismet/#%E9%85%8D%E7%BD%AEgiscus&quot; target=&quot;_blank&quot;&gt;你是否在寻找一个评论系统而又不想自托管？又饱受垃圾评论的叨扰？&lt;/a&gt;、&lt;a href=&quot;https://www.bilibili.com/video/BV1GTtgziEp9/?spm_id_from=333.1391.0.0&amp;amp;vd_source=8abceb502969e7de8c2eb9bc66a1d6e3&quot; target=&quot;_blank&quot;&gt;无需服务器！为任何页面对接评论区！还有反垃圾！&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;在 &lt;a href=&quot;https://github.com/new&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt; 中新建一个 &lt;strong&gt;公开仓库&lt;/strong&gt;，然后在仓库&lt;strong&gt;设置&lt;/strong&gt;中&lt;code&gt;单独&lt;/code&gt;启用 &lt;code&gt;Discussion&lt;/code&gt; 功能，最后看看 &lt;code&gt;Discussions&lt;/code&gt; 可以访问不&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;770&quot; height=&quot;74&quot; src=&quot;/_astro/2025-08-04-12-16-36-image.BpN1b3wQ_edPTX.webp&quot; srcset=&quot;/_astro/2025-08-04-12-16-36-image.BpN1b3wQ_x1g3k.webp 640w, /_astro/2025-08-04-12-16-36-image.BpN1b3wQ_1tG9PI.webp 750w, /_astro/2025-08-04-12-16-36-image.BpN1b3wQ_edPTX.webp 770w&quot; /&gt;&lt;/p&gt;&lt;p&gt;前往 &lt;a href=&quot;https://giscus.app/zh-CN&quot; target=&quot;_blank&quot;&gt;giscus&lt;/a&gt; 中配置你的仓库：&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;407&quot; height=&quot;269&quot; src=&quot;/_astro/2025-08-04-12-17-42-image.CqVm4ii9_Zbbknj.webp&quot; srcset=&quot;/_astro/2025-08-04-12-17-42-image.CqVm4ii9_Zbbknj.webp 407w&quot; /&gt;&lt;/p&gt;&lt;p&gt;分类推荐选择 &lt;strong&gt;公告（announcements）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;733&quot; height=&quot;213&quot; src=&quot;/_astro/2025-08-04-12-22-07-image.CFZrE-Qm_uOsWA.webp&quot; srcset=&quot;/_astro/2025-08-04-12-22-07-image.CFZrE-Qm_YhkS7.webp 640w, /_astro/2025-08-04-12-22-07-image.CFZrE-Qm_uOsWA.webp 733w&quot; /&gt;&lt;/p&gt;&lt;p&gt;特性按需勾选&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;728&quot; height=&quot;302&quot; src=&quot;/_astro/2025-08-04-12-22-25-image.BDEGsN98_234R1u.webp&quot; srcset=&quot;/_astro/2025-08-04-12-22-25-image.BDEGsN98_1MrE4i.webp 640w, /_astro/2025-08-04-12-22-25-image.BDEGsN98_234R1u.webp 728w&quot; /&gt;&lt;/p&gt;&lt;p&gt;主题按喜好选择。更改后主题会立即呈现&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;383&quot; height=&quot;120&quot; src=&quot;/_astro/Snipaste_2026-03-09_18-46-52.D7nxCn0k_Z1kiJp2.webp&quot; srcset=&quot;/_astro/Snipaste_2026-03-09_18-46-52.D7nxCn0k_Z1kiJp2.webp 383w&quot; /&gt;&lt;/p&gt;&lt;p&gt;最后将这段 JS 复制，修改在文件路径 &lt;code&gt;/src/pages/posts/[...slug].astro&lt;/code&gt; 中的 &lt;strong&gt;Giscus 评论区&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;737&quot; height=&quot;411&quot; src=&quot;/_astro/2025-08-04-12-23-41-image.Dj4BL9OG_2jC3Nk.webp&quot; srcset=&quot;/_astro/2025-08-04-12-23-41-image.Dj4BL9OG_4Rfvm.webp 640w, /_astro/2025-08-04-12-23-41-image.Dj4BL9OG_2jC3Nk.webp 737w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;配置 Akismet&lt;a href=&quot;#配置-akismet&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;Akismet (Automattic Kismet) 是应用广泛的一个垃圾留言过滤系统，其作者是大名鼎鼎的 WordPress 创始人 Matt Mullenweg，Akismet 也是 WordPress 默认安装的插件，其使用非常广泛，设计目标便是帮助博客网站来过滤垃圾留言。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;注册 &lt;a href=&quot;akismet.com&quot;&gt;Akismet&lt;/a&gt;，选择 Akismet Personal 订阅，将滑块拉到 &lt;code&gt;0$&lt;/code&gt;，记录得到的 &lt;strong&gt;Akismet API Key&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;540&quot; height=&quot;563&quot; src=&quot;/_astro/2025-08-04-12-27-58-image.sNmB09Z0_ZLrgli.webp&quot; srcset=&quot;/_astro/2025-08-04-12-27-58-image.sNmB09Z0_ZLrgli.webp 540w&quot; /&gt;&lt;/p&gt;&lt;p&gt;在仓库中依次按 &lt;code&gt;.github/workflows/spam.yml&lt;/code&gt; 来新建一个 &lt;code&gt;yml&lt;/code&gt; 文件，其中内容复制该 &lt;a href=&quot;https://github.com/afoim/giscus-fuwari/blob/main/.github/workflows/akismet-comment-check.yml&quot; target=&quot;_blank&quot;&gt;akismet-comment-check.yml&lt;/a&gt; 文件中的文本。&lt;/p&gt;&lt;p&gt;将这个 Github Action 部署到你的启用了 Github 的仓库中：&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1897&quot; height=&quot;940&quot; src=&quot;/_astro/Snipaste_2026-03-09_19-15-56.DJNApEeV_ZIQvBQ.webp&quot; srcset=&quot;/_astro/Snipaste_2026-03-09_19-15-56.DJNApEeV_1UuSK6.webp 640w, /_astro/Snipaste_2026-03-09_19-15-56.DJNApEeV_2fW6V2.webp 750w, /_astro/Snipaste_2026-03-09_19-15-56.DJNApEeV_1wEL78.webp 828w, /_astro/Snipaste_2026-03-09_19-15-56.DJNApEeV_1A0juC.webp 1080w, /_astro/Snipaste_2026-03-09_19-15-56.DJNApEeV_GVqmX.webp 1280w, /_astro/Snipaste_2026-03-09_19-15-56.DJNApEeV_Z1sGLYQ.webp 1668w, /_astro/Snipaste_2026-03-09_19-15-56.DJNApEeV_ZIQvBQ.webp 1897w&quot; /&gt;&lt;/p&gt;&lt;p&gt;配置 Secret：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AKISMET_API_KEY&lt;/strong&gt;：你的 &lt;code&gt;Akismet API Key&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GH_TOKEN&lt;/strong&gt;：前往 &lt;a href=&quot;https://github.com/settings/tokens&quot; target=&quot;_blank&quot;&gt;https://github.com/settings/tokens&lt;/a&gt; 创建一个具有 &lt;strong&gt;repo write user&lt;/strong&gt; 权限的 Github 个人令牌&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;813&quot; height=&quot;180&quot; src=&quot;/_astro/2025-08-04-12-29-06-image.DA6wsvUp_Z21PB7F.webp&quot; srcset=&quot;/_astro/2025-08-04-12-29-06-image.DA6wsvUp_Z2i6lmQ.webp 640w, /_astro/2025-08-04-12-29-06-image.DA6wsvUp_ZehvI5.webp 750w, /_astro/2025-08-04-12-29-06-image.DA6wsvUp_Z21PB7F.webp 813w&quot; /&gt;&lt;/p&gt;&lt;p&gt;测试反垃圾是否有效，发送内容为 &lt;code&gt;viagra-test-123&lt;/code&gt; 的评论。该评论一定会被当作垃圾评论。&lt;/p&gt;&lt;p&gt;查看 Github Action 是否做出删评行为：&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;598&quot; height=&quot;848&quot; src=&quot;/_astro/2025-08-04-12-30-37-image.IzxitEBk_ZNPraa.webp&quot; srcset=&quot;/_astro/2025-08-04-12-30-37-image.IzxitEBk_ZNPraa.webp 598w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item></channel></rss>