<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog</title><link>https://www.iam041.com/</link><description>Recent content on Blog</description><generator>Hugo</generator><language>zh_CN</language><lastBuildDate>Tue, 15 Sep 2026 17:20:00 +0800</lastBuildDate><atom:link href="https://www.iam041.com/index.xml" rel="self" type="application/rss+xml"/><item><title>CI/CD 与 GitHub Actions 自动化部署实战</title><link>https://www.iam041.com/posts/cicd%E4%B8%8Egithub-actions%E8%87%AA%E5%8A%A8%E5%8C%96%E9%83%A8%E7%BD%B2%E5%AE%9E%E6%88%98/</link><pubDate>Tue, 15 Sep 2026 17:20:00 +0800</pubDate><guid>https://www.iam041.com/posts/cicd%E4%B8%8Egithub-actions%E8%87%AA%E5%8A%A8%E5%8C%96%E9%83%A8%E7%BD%B2%E5%AE%9E%E6%88%98/</guid><description>&lt;p&gt;CI/CD（持续集成与持续交付/部署）是一种现代软件工程方法论，通过在代码仓库中自动化执行构建、测试与部署流水线，实现从代码提交到线上生产环境的无人值守闭环。&lt;/p&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="1-cicd-简介"&gt;1. CI/CD 简介&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;在传统的网站与前后端项目运维中，最普遍的人工操作流程往往是：本地编写代码 → 本地执行编译构建打包 → 打开 FTP/SFTP 传输软件（如 FileZilla、WinSCP 或服务器文件管理器） → 拖拽上传并覆盖服务器目标目录。&lt;/p&gt;&#10;&lt;p&gt;这一原始模式存在三个显著工程痛点：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;操作机械繁琐&lt;/strong&gt;：每次细微的代码更新都要手动重复“构建-传输-覆盖”流程，严重打断研发心流。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;环境配置耦合&lt;/strong&gt;：本地开发环境的私有配置（如本地调试域名或测试环境变量）容易在打包时误带入生产，污染线上运行环境。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;残留冗余废弃文件&lt;/strong&gt;：手动文件覆盖仅处理“新增”和“替换”，一旦在本地删除了旧文件或重构了路由目录，服务器目录中残存的废弃历史文件无法自动清理。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;CI/CD 正是为了将这一繁琐、易出错的人工运维流程彻底解脱为无人值守的自动化闭环。&lt;/p&gt;&#10;&lt;h3 id="11-什么是-ci-与-cd"&gt;1.1 什么是 CI 与 CD&lt;/h3&gt;&#10;&lt;p&gt;CI/CD 并非单一软件，而是一种敏捷软件工程实践方法，通常由两个紧密衔接的阶段组成：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;阶段&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;英文全称&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;核心职责&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;项目映射举例&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;CI&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Continuous Integration&lt;br&gt;（持续集成）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;代码频繁合并至主干，并在云端隔离环境自动执行语法检查、依赖安装、单元测试与编译打包，尽早暴露冲突与语法缺陷。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;代码推送到主分支后，云端自动拉取代码并运行构建命令进行编译与产物完整性验证。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;CD&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Continuous Delivery&lt;br&gt;（持续交付）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;产物构建测试通过后，自动打包为可随时发布的标准交付包（Release/Artifact），等待人工确认后上线。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;编译产物打包存入云端交付物仓库待命，由运维或负责人点击确认发布。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;CD&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Continuous Deployment&lt;br&gt;（持续部署）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;无任何人工干预&lt;/strong&gt;，只要前面的集成验证通过，新版本立即自动推向真实的生产服务器，实时生效。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;编译产物无需人工点击，直接由云端通过 SSH/rsync 增量覆盖生产服务器的部署目录。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="2-github-actions-核心概念"&gt;2. GitHub Actions 核心概念&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;GitHub Actions 是 GitHub 官方集成的 CI/CD 自动化平台。它免去了自建 Jenkins 调度节点的高昂维护成本，直接在代码托管仓库内以 YAML 声明式语法编排流水线。&lt;/p&gt;&#10;&lt;h3 id="21-核心组成要素"&gt;2.1 核心组成要素&lt;/h3&gt;&#10;&lt;p&gt;GitHub Actions 的运行逻辑基于五个核心抽象概念：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;概念/组件&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;对应配置语法&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;描述与核心职责&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Workflow&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;name / 文件名&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;工作流，存放在 .github/workflows 目录下，定义一次完整的自动化任务集合。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Event&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;on&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;触发器，定义何时激活工作流（如 push、pull_request 或手动 workflow_dispatch）。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Jobs&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;jobs&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;任务单元，由一个或多个 Job 组成。不同 Job 默认并行执行，也可声明依赖串行运行。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Runner&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;runs-on&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;运行容器/虚拟机，平台动态分配的纯净环境（如 ubuntu-latest），任务完成后自动销毁。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Steps / Action&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;steps / uses&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;步骤与动作，Job 内部由多个 Step 顺序执行，可直接复用开源社区沉淀的 Action 模块。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt; &lt;/p&gt;</description></item><item><title>足迹</title><link>https://www.iam041.com/journeys/</link><pubDate>Sun, 06 Sep 2026 21:30:00 +0800</pubDate><guid>https://www.iam041.com/journeys/</guid><description>&lt;p&gt;步履所及，皆为生活与记忆的印记。&lt;/p&gt;</description></item><item><title>Nginx配置防盗链</title><link>https://www.iam041.com/posts/nginx%E9%85%8D%E7%BD%AE%E9%98%B2%E7%9B%97%E9%93%BE/</link><pubDate>Fri, 14 Aug 2026 00:00:00 +0800</pubDate><guid>https://www.iam041.com/posts/nginx%E9%85%8D%E7%BD%AE%E9%98%B2%E7%9B%97%E9%93%BE/</guid><description>&lt;p&gt;我们在日常浏览网页时，偶尔会遇到图片裂开的情况；若试着在新标签页中单独打开该图片的链接，浏览器可能会弹出一个 &lt;strong&gt;403 Forbidden（禁止访问）&lt;/strong&gt; 的错误提示。这通常意味着：当前网页并未在自己的服务器上托管这张图片，而是直接在外链中引用了其他站点的资源。被引用的源站为了保护自身的服务器资源与出口带宽，通过 Nginx 识别出了此类未经授权的外部请求，并主动返回了 403 拒绝访问。&lt;/p&gt;&#10;&lt;p&gt;这种用来防范外部网站直接引用本站静态资源的保护机制，就是我们常说的 &lt;strong&gt;Nginx 防盗链（Anti-Hotlinking）&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="1-原理浅析http-referer"&gt;1. 原理浅析：HTTP Referer&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;浏览器在加载网页内的图片、音视频等资源时，遵循 HTTP 协议规范，通常会在请求头中自动附带一个 Referer 字段，用于告知服务端“这个资源请求是从哪个网页发起的”。&lt;/p&gt;&#10;&lt;p&gt;例如，当用户在第三方网站 &lt;a href="https://other-site.com"&gt;https://other-site.com&lt;/a&gt; 浏览时，页面加载了本站的图片，浏览器向本站发出的请求大致如下：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-http" data-lang="http"&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;GET&lt;/span&gt; /logo.png &lt;span style="color:#66d9ef"&gt;HTTP&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1.1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2&lt;/span&gt;&lt;span&gt;Host&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;your-domain.com&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3&lt;/span&gt;&lt;span&gt;Referer&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;https://other-site.com/page.html&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nginx 正是通过内置的 ngx_http_referer_module 模块，提取请求头中的 Referer 并与我们设定的白名单进行比对，从而判断请求来源是否合规。&lt;/p&gt;&#10;&lt;p&gt;不过，Referer 可能因为浏览器隐私策略、Referrer-Policy、代理或浏览器扩展而缺失，也可以被客户端伪造。因此，Referer 防盗链适合做粗粒度限制，不应作为身份认证或强安全边界。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;注意事项&lt;/strong&gt;：不要把 Referer 白名单当成搜索引擎认证。因为搜索引擎抓取图片时不一定会携带 Referer。本例保留 none，已经允许无来源头的正常请求；如果确实遇到特定爬虫无法访问，应先结合实际请求日志排查，再按业务需要增加白名单。仅凭 Referer 域名无法可靠证明请求来自搜索引擎，也不能单独保证 SEO 效果。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="2-解决方案"&gt;2. 解决方案&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;为了兼顾系统安全与业务体验，针对未经许可的外部引用，Nginx 通常有两种主流的配置策略：&lt;/p&gt;&#10;&lt;h3 id="21-直接返回-403-状态码更轻量最省带宽"&gt;2.1 直接返回 403 状态码（更轻量、最省带宽）&lt;/h3&gt;&#10;&lt;p&gt;发现请求来源不合规时立即切断响应，不给对方传输多余数据，这是大多数生产环境的首选方案。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nginx" data-lang="nginx"&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 图片与多媒体资源防盗链配置&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;location&lt;/span&gt; ~&lt;span style="color:#e6db74"&gt;*&lt;/span&gt; &lt;span style="color:#e6db74"&gt;\.(gif|jpg|jpeg|png|bmp|webp|avif|svg|mp4|mov)&lt;/span&gt;$ {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 3&lt;/span&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 仅对 URL 带版本指纹的静态资源使用 immutable&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 4&lt;/span&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 使用单个 Cache-Control 头，避免与 expires 重复设置缓存策略&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 5&lt;/span&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;expires&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;off&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 6&lt;/span&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;add_header&lt;/span&gt; &lt;span style="color:#e6db74"&gt;Cache-Control&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;public,&lt;/span&gt; &lt;span style="color:#e6db74"&gt;max-age=2592000,&lt;/span&gt; &lt;span style="color:#e6db74"&gt;immutable&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 7&lt;/span&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 8&lt;/span&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 流量很大时可关闭；如需审计或排查盗链，请保留日志或改用条件日志&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 9&lt;/span&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;access_log&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;off&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;10&lt;/span&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;11&lt;/span&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 合法 Referer 白名单配置：&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;12&lt;/span&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# - none: 允许直接在浏览器地址栏打开或从书签访问（无 Referer）&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;13&lt;/span&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# - server_names: 自动匹配本 server 声明的所有合法域名&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;14&lt;/span&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# - *.example.com: 放行 example.com 下的子域名&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;15&lt;/span&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;valid_referers&lt;/span&gt; &lt;span style="color:#e6db74"&gt;none&lt;/span&gt; &lt;span style="color:#e6db74"&gt;server_names&lt;/span&gt; &lt;span style="color:#e6db74"&gt;*.example.com&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;16&lt;/span&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;17&lt;/span&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 非法来源直接返回 403 阻断&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;18&lt;/span&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;if&lt;/span&gt; &lt;span style="color:#e6db74"&gt;(&lt;/span&gt;$invalid_referer&lt;span style="color:#e6db74"&gt;)&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;19&lt;/span&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;403&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;20&lt;/span&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;21&lt;/span&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;核心参数说明&lt;/strong&gt;：&lt;/p&gt;</description></item><item><title>Nginx 快速入门</title><link>https://www.iam041.com/posts/nginx%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8/</link><pubDate>Thu, 13 Aug 2026 22:00:00 +0800</pubDate><guid>https://www.iam041.com/posts/nginx%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8/</guid><description>&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="1-nginx-简介"&gt;1. Nginx 简介&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;在现代 Web 架构中，Nginx 往往是流量到达服务器的第一道门面。它兼具极高的吞吐能力与轻量资源消耗，常用于静态站点分发与后端服务网关接入。&lt;/p&gt;&#10;&lt;h3 id="11-什么是-nginx"&gt;1.1 什么是 Nginx&lt;/h3&gt;&#10;&lt;p&gt;Nginx 是一款开源、高性能的 HTTP 服务器与反向代理服务器，核心架构基于单 Master 多 Worker 的&lt;strong&gt;异步非阻塞事件驱动模型&lt;/strong&gt;（Linux 环境下使用 epoll）。&lt;/p&gt;&#10;&lt;p&gt;其核心能力：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;静态资源直出&lt;/strong&gt;：高效托管 HTML、CSS、JS 及各类多媒体文件，直接经由内核零拷贝响应，释放后端算力。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;反向代理与流量分发&lt;/strong&gt;：作为内部集群的前置入口，对外暴露统一端口，无感转发后端请求。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;虚拟主机路由&lt;/strong&gt;：支持基于单个端口配置多个域名（Server Name），实现单机多站点的精细隔离。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;平滑热升级&lt;/strong&gt;：内置优秀的信号处理机制，修改配置与更新二进制无需停机，实现零感知运维。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="2-nginx-安装与启动"&gt;2. Nginx 安装与启动&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;h3 id="21-包管理器安装"&gt;2.1 包管理器安装&lt;/h3&gt;&#10;&lt;p&gt;(1) &lt;strong&gt;系统包管理器（推荐日常使用）&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Ubuntu / Debian&lt;/strong&gt;：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1&lt;/span&gt;&lt;span&gt;sudo apt update&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2&lt;/span&gt;&lt;span&gt;sudo apt install -y nginx&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;CentOS / RHEL&lt;/strong&gt;：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1&lt;/span&gt;&lt;span&gt;sudo yum install -y epel-release&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2&lt;/span&gt;&lt;span&gt;sudo yum install -y nginx&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;macOS&lt;/strong&gt;：&lt;/p&gt;</description></item><item><title>Git 常用命令速查与协作工作流全指南</title><link>https://www.iam041.com/posts/git/</link><pubDate>Fri, 17 Jul 2026 17:35:00 +0800</pubDate><guid>https://www.iam041.com/posts/git/</guid><description>&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="1-仓库初始化getting-a-git-repository"&gt;1. 仓库初始化（Getting a Git Repository）&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;h3 id="11-工作区--暂存区--仓库"&gt;1.1 工作区 / 暂存区 / 仓库&lt;/h3&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;区域&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;时机&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;存储位置&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;工作区（Working Directory）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;add 前&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;磁盘文件系统&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;暂存区（Staging Area / Index）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;add 后、commit 前&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;.git/index&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;本地仓库（Local Repository）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;commit 后&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;.git/objects&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;远程仓库（Remote Repository）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;push 后&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;远端服务器&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="12-初始化与远端配置"&gt;1.2 初始化与远端配置&lt;/h3&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;命令&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;说明&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;示例&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;git init&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;将当前目录初始化为 Git 仓库&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;git init&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;git clone&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;克隆远端仓库到本地&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;git clone &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;:user/repo.git&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;git remote add origin&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;为本地仓库绑定远端地址&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;git remote add origin &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;:user/repo.git&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;git remote add upstream&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;关联上游原始仓库&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;git remote add upstream &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;:original/repo.git&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;git remote set-url&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;修改已有远端地址&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;git remote set-url origin &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;:user/repo-v2.git&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;git remote -v&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;查看所有已配置的远端&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;git remote -v&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt; &lt;/p&gt;</description></item><item><title>Archives</title><link>https://www.iam041.com/archives/</link><pubDate>Sat, 20 Jun 2026 00:00:00 +0800</pubDate><guid>https://www.iam041.com/archives/</guid><description>&lt;h1 id="文章归档"&gt;文章归档&lt;/h1&gt;</description></item><item><title>About</title><link>https://www.iam041.com/about/</link><pubDate>Fri, 19 Jun 2026 23:19:26 +0800</pubDate><guid>https://www.iam041.com/about/</guid><description>&lt;h3 id="关于我"&gt;关于我&lt;/h3&gt;&#10;&lt;p&gt;现处广州,大三在读,全栈开发者&lt;/p&gt;&#10;&lt;h3 id="关于博客"&gt;关于博客&lt;/h3&gt;&#10;&lt;p&gt;  本站是由我个人建立的博客，在这里，我会分享一些学习心得，技术，所见和所闻。在互联网盛行和 AI 高速发展的今天，记录成为了一种难能可贵的坚持。许多声音来得太快，太满，还未来得及分辨内心真正的回响，新的浪潮就已经覆盖了旧的痕迹。&#10;所以我想留下这样一个地方。不为喧哗，不为匆忙，只是安静地把走过的路、想过的事、学到的东西，一点一点写下来。&#10;也许它们并不宏大，却都是某一段时间里，我认真生活、认真思考过的证明。&lt;/p&gt;</description></item><item><title>Docker知识点详解</title><link>https://www.iam041.com/posts/docker%E7%9F%A5%E8%AF%86%E7%82%B9%E8%AF%A6%E8%A7%A3/</link><pubDate>Thu, 18 Jun 2026 21:30:00 +0800</pubDate><guid>https://www.iam041.com/posts/docker%E7%9F%A5%E8%AF%86%E7%82%B9%E8%AF%A6%E8%A7%A3/</guid><description>&lt;p&gt;Docker 是一个基于 Linux 内核能力实现的开源应用容器引擎，依托 &lt;strong&gt;命名空间（Namespaces）&lt;/strong&gt; 与 &lt;strong&gt;控制组（cgroups）&lt;/strong&gt; 实现轻量级进程隔离，支持将应用程序及其依赖项统一打包为标准化容器镜像，实现跨环境的敏捷交付与一致性运行。&lt;/p&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="1-概述与核心机制"&gt;1. 概述与核心机制&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;h3 id="11-核心特性与虚拟化差异"&gt;1.1 核心特性与虚拟化差异&lt;/h3&gt;&#10;&lt;p&gt;容器技术与传统虚拟机（VM）在底层实现上有本质区别：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;进程级轻量隔离&lt;/strong&gt;：容器共享宿主机的操作系统内核，不需要像虚拟机那样虚拟化完整的 Guest OS 与虚拟硬件，秒级启动且系统资源开销极小。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;独立的文件系统视图&lt;/strong&gt;：容器内部拥有独立的用户态文件系统环境（例如 /bin、/etc、/usr、/app），能够独立执行 Linux 用户态程序与服务进程。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;环境交付一致性&lt;/strong&gt;：通过将代码、运行依赖与环境变量整体封装，实现“一次构建，随处运行”，消除开发、测试与生产环境不一致的痛点。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="12-windows-与-wsl2-协同运行模式"&gt;1.2 Windows 与 WSL2 协同运行模式&lt;/h3&gt;&#10;&lt;p&gt;在 Windows 环境下，Docker Desktop 并非直接运行于 Windows 原生内核之上，而是深度集成并依赖 WSL2（Windows Subsystem for Linux 2）提供的真实 Linux 内核环境：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;架构协同关系&lt;/strong&gt;：Windows 充当宿主操作系统；WSL2 虚拟机实例提供 Linux 内核调用支持；Docker Desktop 统一管理 Docker 守护进程引擎与图形化控制台。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;最佳工程实践&lt;/strong&gt;：建议将项目代码与挂载文件直接存放在 WSL 的 Linux 本地文件系统内（如 /home/user/&amp;hellip;），避免跨跨系统 9P 文件协议读写带来的显著性能损耗。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="2-架构与核心概念"&gt;2. 架构与核心概念&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;Docker 采用标准的 C/S（客户端/服务端）架构，客户端工具与后端守护进程通过 REST API、UNIX 套接字或网络接口进行交互。&lt;/p&gt;&#10;&lt;h3 id="21-架构角色与核心概念"&gt;2.1 架构角色与核心概念&lt;/h3&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;角色/组件&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;描述与核心职责&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Docker Client&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;命令行交互工具（docker CLI），负责向服务端分发构建、运行与管理指令。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Docker Daemon (dockerd)&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;常驻后台的守护进程，负责管理镜像、容器、存储卷与虚拟网络等核心对象。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;镜像（Image）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;包含了应用程序及其完整运行依赖的只读层叠模板，用于生成容器运行时实例。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;容器（Container）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;镜像的可运行实例，在镜像只读层之上附加读写层，具备隔离的网络与运行时环境。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;镜像仓库（Registry）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;集中存储与分发容器镜像的中心服务，分为公有仓库（如 Docker Hub）与私有仓库（如 Harbor）。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Dockerfile&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;声明镜像构建流程的文本配置文件，逐层定义基础环境、依赖安装与启动参数。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;Docker Compose&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;用于定义和编排多容器协同运行的工具，通过声明式 YAML 文件管理全栈服务。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="22-dockerfile-与-compose-的职责划分"&gt;2.2 Dockerfile 与 Compose 的职责划分&lt;/h3&gt;&#10;&lt;p&gt;两者处于不同层级的交付链路中，职责边界清晰：&lt;/p&gt;</description></item><item><title>Harness 工程架构深度解析</title><link>https://www.iam041.com/posts/harness%E5%B7%A5%E7%A8%8B%E6%9E%B6%E6%9E%84%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90/</link><pubDate>Tue, 09 Jun 2026 20:30:00 +0800</pubDate><guid>https://www.iam041.com/posts/harness%E5%B7%A5%E7%A8%8B%E6%9E%B6%E6%9E%84%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90/</guid><description>&lt;p&gt;从架构视角深入解读 Harness 的设计哲学，帮助工程师建立对现代 CI/CD 平台的认知框架&lt;/p&gt;&#10;&lt;h2 id="一harness-到底是什么"&gt;一、Harness 到底是什么&lt;/h2&gt;&#10;&lt;p&gt;一句话：&lt;strong&gt;Harness 是一个构建在 Kubernetes 之上的、以 Delegate 为核心执行引擎的、SaaS 化的软件交付平台。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;这句话里有三个关键词，每一个都值得展开。&lt;/p&gt;&#10;&lt;h3 id="1-构建在-kubernetes-之上"&gt;1. 构建在 Kubernetes 之上&lt;/h3&gt;&#10;&lt;p&gt;Harness 的控制平面（Control Plane）是一组微服务，运行在 Kubernetes 集群中。这意味着：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;弹性伸缩&lt;/strong&gt;是天然能力，不是事后补丁&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;多租户隔离&lt;/strong&gt;通过 K8s 的 namespace 和资源配额实现&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;服务治理&lt;/strong&gt;依赖 K8s 原生的服务发现和负载均衡&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这不是什么了不起的事——几乎所有现代 SaaS 产品都跑在 K8s 上。但关键在于，Harness 把 K8s 的能力&lt;strong&gt;向下暴露给了用户&lt;/strong&gt;：你的 Pipeline 可以直接操作 K8s 集群进行部署，而不是通过一层中间转换。&lt;/p&gt;&#10;&lt;h3 id="2-delegate-是核心执行引擎重点"&gt;2. Delegate 是核心执行引擎（重点）&lt;/h3&gt;&#10;&lt;p&gt;这是理解 Harness 最关键的一个概念。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Delegate 是一个运行在你基础设施中的进程&lt;/strong&gt;，负责执行 Pipeline 中的所有任务。它不是 Harness 帮你跑的——它跑在&lt;strong&gt;你的环境&lt;/strong&gt;里。&lt;/p&gt;&#10;&lt;p&gt;为什么要这样设计？因为软件交付涉及的操作，绝大多数都需要访问内网资源：代码仓库、制品库、K8s 集群、数据库、云账号。如果这些操作全部由 Harness 的 SaaS 控制平面来执行，就意味着你的内网资源必须对 Harness 开放——这在安全合规层面几乎不可接受。&lt;/p&gt;&#10;&lt;p&gt;Delegate 的架构解决了这个问题：&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────┐&#10;│ Harness SaaS控制平面 │&#10;│ (Pipeline 编排、状态管理、UI、API) │&#10;└──────────────────────┬──────────────────────────────┘&#10; │ 出站连接（Delegate 主动拉取任务）&#10; │ ← 不需要入站端口暴露&#10;┌──────────────────────▼──────────────────────────────┐&#10;│ 你的基础设施 │&#10;│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │&#10;│ │ Delegate │ │ Delegate │ │ Delegate │←可部署多个 │&#10;│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │&#10;│ │ │ │ │&#10;│ ┌───▼───┐ ┌────▼───┐ ┌────▼───┐ │&#10;│ │K8s集群 │ │代码仓库 │ │云账号 │ │&#10;│ └───────┘ └────────┘ └────────┘ │&#10;└─────────────────────────────────────────────────────┘&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;核心设计要点：&lt;/p&gt;</description></item><item><title>Superpowers 使用指南</title><link>https://www.iam041.com/posts/superpowers%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</link><pubDate>Sat, 30 May 2026 20:30:00 +0800</pubDate><guid>https://www.iam041.com/posts/superpowers%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</guid><description>&lt;p&gt;如果只先记住一个结论，那么可以记这句：&lt;/p&gt;&#10;&lt;blockquote&gt;&#10; &lt;p&gt;Superpowers 不是单纯的“代码增强插件”，而是一套把软件开发最佳实践内化为可执行工作流的方法论插件。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&lt;p&gt;它的价值不在于“帮你多补几行代码”，而在于通过一组技能系统，把设计、计划、执行、测试、审查、调试和收尾这些环节串成一个更稳定的开发闭环。&lt;/p&gt;&#10;&lt;p&gt;本文会系统回答几个问题：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Superpowers 到底是什么&lt;/li&gt;&#10;&lt;li&gt;它和普通代码辅助工具有什么本质区别&lt;/li&gt;&#10;&lt;li&gt;它的完整工作流怎么跑&lt;/li&gt;&#10;&lt;li&gt;什么时候该自动触发，什么时候适合手动调用&lt;/li&gt;&#10;&lt;li&gt;使用中最容易踩的坑是什么&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="1-superpowers-到底是什么"&gt;1. Superpowers 到底是什么&lt;/h2&gt;&#10;&lt;p&gt;Superpowers 是一个面向 Claude Code 的开发流程插件。它不是把一堆零散命令简单打包，而是把软件工程中的一整套高质量实践，组织成可自动触发、可组合、可审查的工作流。&lt;/p&gt;&#10;&lt;p&gt;和常见“你提需求，我给代码”的工具相比，它有几个明显不同点：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;它会优先帮助你澄清需求，而不是立刻开写&lt;/li&gt;&#10;&lt;li&gt;它强调计划拆解，而不是一次性生成大段实现&lt;/li&gt;&#10;&lt;li&gt;它默认引入 TDD、代码审查和系统化调试&lt;/li&gt;&#10;&lt;li&gt;它允许通过子代理并行处理任务&lt;/li&gt;&#10;&lt;li&gt;它把“验证是否真的完成”看得和“写出代码”同样重要&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;换句话说，Superpowers 关注的不只是产出代码，而是产出一个更可控、更可验证的开发过程。&lt;/p&gt;&#10;&lt;h2 id="2-核心理念是什么"&gt;2. 核心理念是什么&lt;/h2&gt;&#10;&lt;p&gt;Superpowers 背后最重要的不是某个命令，而是它坚持的几条工程原则。&lt;/p&gt;&#10;&lt;h3 id="21-测试驱动开发优先"&gt;2.1 测试驱动开发优先&lt;/h3&gt;&#10;&lt;p&gt;它默认推崇 TDD，也就是经典的 &lt;code&gt;RED -&amp;gt; GREEN -&amp;gt; REFACTOR&lt;/code&gt; 循环：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;先写一个失败的测试&lt;/li&gt;&#10;&lt;li&gt;再写最少的代码让测试通过&lt;/li&gt;&#10;&lt;li&gt;最后在测试保护下重构&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;这会强迫开发从“想当然实现”切换到“先定义预期行为，再补实现”。&lt;/p&gt;&#10;&lt;h3 id="22-系统化优于临时应对"&gt;2.2 系统化优于临时应对&lt;/h3&gt;&#10;&lt;p&gt;遇到问题时，它更倾向于：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;明确定位问题&lt;/li&gt;&#10;&lt;li&gt;收集证据&lt;/li&gt;&#10;&lt;li&gt;找根因&lt;/li&gt;&#10;&lt;li&gt;用流程和验证收束结果&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;而不是简单地“试一下这个改法能不能过”。&lt;/p&gt;&#10;&lt;h3 id="23-简单性优先于复杂炫技"&gt;2.3 简单性优先于复杂炫技&lt;/h3&gt;&#10;&lt;p&gt;Superpowers 的方法论倾向非常明确：复杂度不是能力的证明，能把问题拆到足够小、足够清楚，才是真正可维护的工程能力。&lt;/p&gt;&#10;&lt;h3 id="24-验证优先于宣称"&gt;2.4 验证优先于宣称&lt;/h3&gt;&#10;&lt;p&gt;“已经修好了”“应该可以了”“理论上没问题”这类表述，在它的工作流里都不算真正完成。必须通过测试、审查、验证或复现消除，结果才算站得住。&lt;/p&gt;&#10;&lt;h2 id="3-它和普通代码辅助工具有什么不同"&gt;3. 它和普通代码辅助工具有什么不同&lt;/h2&gt;&#10;&lt;p&gt;可以用下面这张表快速理解它的定位：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;维度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;普通代码辅助工具&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Superpowers&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;主要目标&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;更快生成代码&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;更稳地完成完整开发流程&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;默认行为&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;直接根据需求写实现&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;先设计、再计划、再执行&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;测试态度&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;可有可无&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;默认强制引入 TDD&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;代码审查&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;往往依赖人工补充&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;工作流内建审查机制&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;调试方式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;偏经验式试错&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;强调系统化根因分析&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;适用对象&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;单次编码任务&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;需要流程质量保证的开发任务&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;所以，Superpowers 更像是“开发过程的组织者”，而不只是“生成代码的助手”。&lt;/p&gt;</description></item><item><title>Java核心面试题与八股知识点速记</title><link>https://www.iam041.com/posts/java%E6%A0%B8%E5%BF%83%E9%9D%A2%E8%AF%95%E9%A2%98%E4%B8%8E%E5%85%AB%E8%82%A1%E7%9F%A5%E8%AF%86%E7%82%B9%E9%80%9F%E8%AE%B0/</link><pubDate>Sun, 03 May 2026 11:00:00 +0800</pubDate><guid>https://www.iam041.com/posts/java%E6%A0%B8%E5%BF%83%E9%9D%A2%E8%AF%95%E9%A2%98%E4%B8%8E%E5%85%AB%E8%82%A1%E7%9F%A5%E8%AF%86%E7%82%B9%E9%80%9F%E8%AE%B0/</guid><description>&lt;p&gt;Java 作为现代企业级分布式系统与微服务架构的基石语言，其核心底层机制、集合实现、JVM 运行时原理以及 JUC 并发编程是技术面试与工程实践中最关键的核心基线。本文对高频核心考点进行系统化模块解构与深度剖析，剔除表层快餐记忆，直击底层源码设计与设计权衡。&lt;/p&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="1-java-基础语法与核心机制"&gt;1. Java 基础语法与核心机制&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;h3 id="11-面向对象思想与对象创建"&gt;1.1 面向对象思想与对象创建&lt;/h3&gt;&#10;&lt;p&gt;面向对象与面向过程是两种截然不同的程序设计范式，在系统建模与工程演进中承担不同职责：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;面向过程（POP）&lt;/strong&gt;：核心以算法步骤为中心，将业务需求拆解为按顺序调用的函数序列。其主要优势在于调用开销低、性能高，常用于底层操作系统开发或单片机固件；缺点在于业务逻辑高度耦合，维护与扩展成本高。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;面向对象（OOP）&lt;/strong&gt;：核心以现实世界或业务概念的模型实体为中心，通过类与对象将数据（属性）与行为（方法）高度聚合，具备三大核心特征：&#10;(1) &lt;strong&gt;封装&lt;/strong&gt;：隐藏对象内部实现细节，仅对外暴露安全受控的访问接口，保护内部数据一致性。&#10;(2) &lt;strong&gt;继承&lt;/strong&gt;：子类复用并扩展父类的属性与方法，建立代码复用机制，同时构建类型多态体系。&#10;(3) &lt;strong&gt;多态&lt;/strong&gt;：父类引用指向子类具体实现，在程序运行时动态绑定（动态分派）具体调用的实例方法，是实现低耦合与设计模式的基础。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Java 中创建对象实例的底层途径主要包含四种方式：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;new 关键字&lt;/strong&gt;：最基础的方式，编译器生成 new 字节码指令分配内存，并调用对应的构造函数完成初始化。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;反射机制&lt;/strong&gt;：通过 Class.newInstance() 或 Constructor.newInstance() 动态获取构造器并创建对象，常用于框架依赖注入与动态代理。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;对象克隆&lt;/strong&gt;：目标类实现 Cloneable 接口并重写 clone() 方法，通过 JVM 底层内存拷贝直接生成新对象，不调用任何构造函数。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;反序列化机制&lt;/strong&gt;：借助 ObjectInputStream 将字节流反序列化为内存对象实例，同样不依赖构造函数执行。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;在对象拷贝场景中，浅拷贝与深拷贝存在本质区别：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;浅拷贝（Shallow Copy）&lt;/strong&gt;：仅克隆基本数据类型的字段值；对于引用类型字段，仅复制对象引用的内存地址，新旧对象依然共享同一个底层堆对象实例。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;深拷贝（Deep Copy）&lt;/strong&gt;：不仅复制基本数据类型，还会递归克隆所有引用对象，在堆内存中完整重建整棵对象关系树，新旧对象完全隔离独立。深拷贝通常通过手动重写 clone()、序列化反序列化（如 Jackson/Kryo）或拷贝构造器实现。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="12-核心关键字底层剖析"&gt;1.2 核心关键字底层剖析&lt;/h3&gt;&#10;&lt;p&gt;Java 语言关键字直接影响类的继承结构、内存分配以及字段行为：&lt;/p&gt;&#10;&lt;p&gt;(1) final 关键字的作用边界：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;修饰类&lt;/strong&gt;：表明该类为最终类，不可被任何类继承，其所有成员方法隐式声明为 final（例如 String、Integer 等不可变类，确保安全性与不可篡改性）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;修饰方法&lt;/strong&gt;：锁定方法逻辑，禁止任何子类重写（Override），但子类依然可以继承使用；JIT 编译器可据此进行内联展开优化。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;修饰变量&lt;/strong&gt;：作为常量使用，必须在声明时或构造器执行完毕前完成显式赋值，赋值后引用地址不可变。若修饰的是引用类型，仅保证指针指向不变，所指向对象内部的状态与属性仍然可变。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;(2) static 关键字的加载行为：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;修饰变量与方法&lt;/strong&gt;：归属于类元信息本身而非特定对象实例。在 JVM 类加载的准备阶段完成空间分配并赋零值，在初始化阶段执行显式赋值，全局仅存在一份内存，可直接通过类名访问。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;修饰代码块&lt;/strong&gt;：静态代码块在类初次被主动使用、执行类构造器方法（clinit）时按书写顺序触发，生命周期内仅执行一次，常用于初始化重量级系统资源。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;静态导包&lt;/strong&gt;：通过 import static 语法直接导入指定类的公共静态成员，调用时无需携带类名前缀。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;(3) instanceof 关键字与类型模式匹配：&lt;/p&gt;</description></item><item><title>Kafka集成与Spring Boot实战详解</title><link>https://www.iam041.com/posts/kafka%E9%9B%86%E6%88%90%E4%B8%8Espring-boot%E5%AE%9E%E6%88%98%E8%AF%A6%E8%A7%A3/</link><pubDate>Sun, 26 Apr 2026 16:45:00 +0800</pubDate><guid>https://www.iam041.com/posts/kafka%E9%9B%86%E6%88%90%E4%B8%8Espring-boot%E5%AE%9E%E6%88%98%E8%AF%A6%E8%A7%A3/</guid><description>&lt;p&gt;Apache Kafka 是一个高吞吐、分布式的流处理平台与开源消息引擎，依托 &lt;strong&gt;追加日志（Commit Log）&lt;/strong&gt;、&lt;strong&gt;零拷贝（Zero-Copy）&lt;/strong&gt; 与 &lt;strong&gt;分区并发模型&lt;/strong&gt; 实现海量事件的持久化存储与低延迟流转。&lt;/p&gt;&#10;&lt;p&gt;本文深入介绍 Spring Boot 与 Kafka 的工程集成方案，涵盖本地环境准备、核心依赖配置、生产者与消费者开发、JSON 对象序列化以及分布式事务消息等实践。&lt;/p&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="1-什么是-kafka"&gt;1. 什么是 Kafka&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;Apache Kafka 是一个分布式事件流平台，核心基于发布与订阅（Pub/Sub）模式构建，具备高并发、高吞吐、可水平扩展与高容错等企业级特征。&lt;/p&gt;&#10;&lt;h3 id="11-核心特性"&gt;1.1 核心特性&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;发布订阅与消息持久化&lt;/strong&gt;：基于追加日志（Commit Log）组织数据，所有写入均为磁盘顺序 I/O，支持消息长期持久化与多组独立消费。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;实时流式数据处理&lt;/strong&gt;：支持毫秒级流式数据接入与处理，可与 Flink、Spark Streaming 等大数据计算框架深度协同。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;高吞吐与水平扩展&lt;/strong&gt;：通过分区（Partition）将主题数据分散在多个 Broker 节点，支持集群无损横向伸缩与并行高并发读写。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;高可用与多副本机制&lt;/strong&gt;：提供 Leader 与 Follower 多副本冗余，配合 ISR（In-Sync Replicas）机制保障节点故障时数据不丢失。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="12-核心应用场景"&gt;1.2 核心应用场景&lt;/h3&gt;&#10;&lt;p&gt;在分布式与微服务架构中，Kafka 通常充当事件中枢或数据传输管道，广泛应用于以下业务场景：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;微服务间异步解耦&lt;/strong&gt;：将非核心链路业务（如短信通知、权益发放、统计分析）解耦为异步事件驱动，降低服务间调用耦合与故障扩散风险。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;海量日志收集与监控&lt;/strong&gt;：作为 ELK（Elasticsearch + Logstash + Kibana）或 ClickHouse 的前置缓冲区，汇聚全链路访问日志与系统监控指标。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;流数据管道与同步&lt;/strong&gt;：捕获关系型数据库变更数据（CDC），实时同步并分发至搜索引擎、数据仓库或缓存集群。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;流量削峰填谷&lt;/strong&gt;：在秒杀或大促等突发流量高峰期暂存高并发请求，下游根据自身承载能力匀速拉取消费，保护核心数据库。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="2-环境准备"&gt;2. 环境准备&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;在开始集成开发之前，请确保本地或服务器已完成基础运行环境与服务的安装部署。&lt;/p&gt;&#10;&lt;h3 id="21-依赖环境要求"&gt;2.1 依赖环境要求&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;JDK&lt;/strong&gt;：JDK 1.8 或更高版本（推荐 JDK 17 / 21）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Spring Boot&lt;/strong&gt;：Spring Boot 2.7.x 或 3.x。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;构建工具&lt;/strong&gt;：Maven 3.6+ 或 Gradle 7+。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Kafka 服务端&lt;/strong&gt;：Kafka 2.8+（含内置 Zookeeper 或 KRaft 模式）。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="22-启动本地-kafka-与-zookeeper"&gt;2.2 启动本地 Kafka 与 Zookeeper&lt;/h3&gt;&#10;&lt;p&gt;(1) 访问 &lt;a href="https://kafka.apache.org/downloads"&gt;&lt;strong&gt;Kafka 官方下载页面&lt;/strong&gt;&lt;/a&gt; 获取二进制解压包，解压后进入程序根目录。&lt;/p&gt;</description></item><item><title>RabbitMQ集成与Spring Boot实战详解</title><link>https://www.iam041.com/posts/rabbitmq%E9%9B%86%E6%88%90%E4%B8%8Espring-boot%E5%AE%9E%E6%88%98%E8%AF%A6%E8%A7%A3/</link><pubDate>Thu, 23 Apr 2026 15:20:00 +0800</pubDate><guid>https://www.iam041.com/posts/rabbitmq%E9%9B%86%E6%88%90%E4%B8%8Espring-boot%E5%AE%9E%E6%88%98%E8%AF%A6%E8%A7%A3/</guid><description>&lt;p&gt;RabbitMQ 是一个基于 &lt;strong&gt;AMQP（Advanced Message Queuing Protocol）&lt;/strong&gt; 协议构建、由 Erlang 语言编写的高性能企业级消息中间件，依托 &lt;strong&gt;交换机（Exchange）&lt;/strong&gt;、&lt;strong&gt;绑定键（Routing Key）&lt;/strong&gt; 与 &lt;strong&gt;灵活的路由分发机制&lt;/strong&gt; 实现分布式架构下高并发、高解耦与高可靠的消息流转。&lt;/p&gt;&#10;&lt;p&gt;本文深入介绍 Spring Boot 与 RabbitMQ 的工程集成方案，涵盖本地环境准备、核心依赖配置、拓扑结构集中声明、生产者与消费者开发、手动确认与限流以及死信延时队列等实践。&lt;/p&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="1-什么是-rabbitmq"&gt;1. 什么是 RabbitMQ&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;RabbitMQ 是一个支持多协议、功能完备的企业级分布式消息引擎，基于 Erlang 语言的高并发 Actor 模型与轻量级进程机制构建，具备低延迟、高可靠性保障、灵活的路由策略与完善的可视化管理能力。&lt;/p&gt;&#10;&lt;h3 id="11-核心特性"&gt;1.1 核心特性&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;灵活的路由模型与消息持久化&lt;/strong&gt;：基于交换机（Exchange）与绑定（Binding）解耦生产与消费端，支持 Direct、Topic、Fanout 等多种路由策略，并提供交换机、队列与消息三层持久化机制。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;完善的可靠性投递与确认机制&lt;/strong&gt;：提供生产者发布确认（Publisher Confirm）、返回监听（Return Callback）与消费者手动应答（Manual Ack），保障消息在全链路传输过程中不丢失。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;流量削峰与服务限流（QoS Prefetch）&lt;/strong&gt;：支持在 Channel 通道级别与消费者级别配置 prefetchCount 预取阈值，下游根据自身承载能力拉取并处理消息，防止突发流量压垮消费者。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;丰富的死信机制与延迟任务支持&lt;/strong&gt;：通过死信交换机（DLX / Dead Letter Exchange）与队列/消息 TTL 组合，优雅解决消费异常兜底、重试收容与延时任务调度需求。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="12-核心应用场景"&gt;1.2 核心应用场景&lt;/h3&gt;&#10;&lt;p&gt;在分布式与微服务架构中，RabbitMQ 通常充当解耦中枢与缓冲管道，广泛应用于以下业务场景：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;微服务间异步解耦&lt;/strong&gt;：将核心业务与非核心流程（如注册成功后的邮件发送、短信通知、优惠券发放）解耦为异步事件驱动，降低服务间调用时延与系统雪崩风险。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;流量削峰填谷&lt;/strong&gt;：在秒杀大促、抢购活动等短时瞬时流量冲击下充当缓冲区，将瞬时高并发请求暂存至队列中，后端服务按照既定消费速率匀速处理，保护底层数据库。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;延时任务与超时订单取消&lt;/strong&gt;：利用队列的 x-message-ttl 配合死信交换机（DLX），或集成延时交换机插件（rabbitmq_delayed_message_exchange），实现未支付订单 30 分钟超时自动关单、定时状态同步等延迟处理场景。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;异常重试与死信收容&lt;/strong&gt;：对于消费端业务异常、重试耗尽或非法报文，自动转发至死信队列（DLQ）进行隔离归档，配合告警通知并提供人工排查补偿机制。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="2-环境准备"&gt;2. 环境准备&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;在开始集成开发之前，请确保本地或服务器已完成基础运行环境与服务的安装部署。&lt;/p&gt;&#10;&lt;h3 id="21-依赖环境要求"&gt;2.1 依赖环境要求&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;JDK&lt;/strong&gt;：JDK 1.8 或更高版本（推荐 JDK 17 / 21）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Spring Boot&lt;/strong&gt;：Spring Boot 2.7.x 或 3.x。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;构建工具&lt;/strong&gt;：Maven 3.6+ 或 Gradle 7+。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;RabbitMQ 服务端&lt;/strong&gt;：RabbitMQ 3.8+（需匹配 Erlang/OTP 对应运行时版本）。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="22-启动本地-rabbitmq-与服务管理"&gt;2.2 启动本地 RabbitMQ 与服务管理&lt;/h3&gt;&#10;&lt;p&gt;(1) Windows 服务运维命令（需以管理员权限打开 PowerShell）：&lt;/p&gt;</description></item><item><title>LLM Wiki：面向 Agent 工程的知识编译层</title><link>https://www.iam041.com/posts/llm-wiki-%E9%9D%A2%E5%90%91agent%E5%B7%A5%E7%A8%8B%E7%9A%84%E7%9F%A5%E8%AF%86%E7%BC%96%E8%AF%91%E5%B1%82/</link><pubDate>Sat, 04 Apr 2026 10:54:03 +0800</pubDate><guid>https://www.iam041.com/posts/llm-wiki-%E9%9D%A2%E5%90%91agent%E5%B7%A5%E7%A8%8B%E7%9A%84%E7%9F%A5%E8%AF%86%E7%BC%96%E8%AF%91%E5%B1%82/</guid><description>&lt;p&gt;如果只先记住一个结论，那么可以记这句：&lt;/p&gt;&#10;&lt;blockquote&gt;&#10; &lt;p&gt;&lt;code&gt;LLM wiki&lt;/code&gt; 不是“让 AI 帮你整理笔记”，而是把项目知识从原始资料提升为 Agent 可消费、可引用、可演化的知识中间层。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&lt;p&gt;这个判断的关键在于，问题并不只是“资料有没有被存下来”，而是“资料是否已经被整理成 Agent 可以稳定工作的形状”。在这件事上，&lt;code&gt;RAG&lt;/code&gt; 和 &lt;code&gt;LLM wiki&lt;/code&gt; 处理的根本不是同一层问题。&lt;a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f"&gt;Andrej Karpathy 提出的 &lt;code&gt;llm-wiki.md&lt;/code&gt; 范式&lt;/a&gt; 给出的也不是一个笔记软件教程，而是一种把知识从原始材料编译成可维护工作上下文的思路。&lt;/p&gt;&#10;&lt;p&gt;本文想讨论的是三个问题：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;LLM wiki&lt;/code&gt; 到底是什么&lt;/li&gt;&#10;&lt;li&gt;它和 &lt;code&gt;RAG&lt;/code&gt; 的边界到底在哪里&lt;/li&gt;&#10;&lt;li&gt;如果要把它落到工程实践里，最小实现应该长什么样&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="1-agent-真正缺的不是更多文档而是知识编译层"&gt;1. Agent 真正缺的不是“更多文档”，而是知识编译层&lt;/h2&gt;&#10;&lt;p&gt;很多仓库并不缺文档。&lt;/p&gt;&#10;&lt;p&gt;README、ADR、issue、PR、聊天记录、代码注释、发布记录，甚至临时会议纪要，往往已经足够多。问题在于，这些材料大多是围绕“人怎么理解系统”自然长出来的，而不是围绕“Agent 应该如何进入系统、命名概念、定位事实、拼装上下文”组织出来的。&lt;/p&gt;&#10;&lt;p&gt;这会带来几个很典型的摩擦：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;资料很多，但没有稳定入口&lt;/li&gt;&#10;&lt;li&gt;术语存在，但定义分散甚至漂移&lt;/li&gt;&#10;&lt;li&gt;同一个问题需要每次重新检索和重新拼接上下文&lt;/li&gt;&#10;&lt;li&gt;原始资料适合追溯事实，不适合直接充当工作层&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;所以 &lt;code&gt;LLM wiki&lt;/code&gt; 试图解决的，不是“把一堆东西再存一遍”，而是另一件更具体的事：&lt;/p&gt;&#10;&lt;blockquote&gt;&#10; &lt;p&gt;它的价值不在存储，而在预编译；不在收集，而在把知识变成可持续复用的中间表示。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&lt;p&gt;Karpathy 在原始 gist 里把这件事描述得很清楚：系统并不直接依赖原始材料回答问题，而是先把原始材料经过整理，沉淀成持续更新的 &lt;code&gt;wiki&lt;/code&gt; 层，并由 &lt;code&gt;schema&lt;/code&gt; 约束其结构与工作流，再把它作为后续查询和工作的主上下文层。&lt;a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f"&gt;来源&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="2-与-rag-的绝对区分一个是运行时召回一个是离线知识编译"&gt;2. 与 RAG 的绝对区分：一个是运行时召回，一个是离线知识编译&lt;/h2&gt;&#10;&lt;p&gt;很多讨论会把 &lt;code&gt;LLM wiki&lt;/code&gt; 和 &lt;code&gt;RAG&lt;/code&gt; 混在一起，但这两者并不是同义替换。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;RAG&lt;/code&gt; 的经典定义来自 Lewis 等人的论文 &lt;em&gt;Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks&lt;/em&gt;：模型在生成前，先从外部知识源检索相关内容，再把检索结果并入生成过程。&lt;a href="https://arxiv.org/abs/2005.11401"&gt;论文链接&lt;/a&gt;&lt;/p&gt;</description></item><item><title>LeetCode Hot 100 题解合集</title><link>https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/</link><pubDate>Mon, 16 Mar 2026 14:30:00 +0800</pubDate><guid>https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/</guid><description>&lt;h2 id="索引"&gt;索引&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e5%93%88%e5%b8%8c"&gt;哈希&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e5%8f%8c%e6%8c%87%e9%92%88"&gt;双指针&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e6%bb%91%e5%8a%a8%e7%aa%97%e5%8f%a3"&gt;滑动窗口&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e5%ad%90%e4%b8%b2"&gt;子串&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e6%99%ae%e9%80%9a%e6%95%b0%e7%bb%84"&gt;普通数组&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e7%9f%a9%e9%98%b5"&gt;矩阵&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e9%93%be%e8%a1%a8"&gt;链表&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e4%ba%8c%e5%8f%89%e6%a0%91"&gt;二叉树&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e5%9b%be%e8%ae%ba"&gt;图论&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e5%9b%9e%e6%ba%af%e6%b3%95"&gt;回溯法&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e4%ba%8c%e5%88%86%e6%9f%a5%e6%89%be"&gt;二分查找&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e6%a0%88"&gt;栈&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e5%a0%86"&gt;堆&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e8%b4%aa%e5%bf%83%e7%ae%97%e6%b3%95"&gt;贪心算法&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e5%8a%a8%e6%80%81%e8%a7%84%e5%88%92"&gt;动态规划&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e5%a4%9a%e7%bb%b4%e5%8a%a8%e6%80%81%e8%a7%84%e5%88%92"&gt;多维动态规划&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#%e6%8a%80%e5%b7%a7"&gt;技巧&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="哈希"&gt;哈希&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/two-sum/"&gt;两数之和&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#1-%e4%b8%a4%e6%95%b0%e4%b9%8b%e5%92%8c"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;49&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/group-anagrams/"&gt;字母异位词分组&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#49-%e5%ad%97%e6%af%8d%e5%bc%82%e4%bd%8d%e8%af%8d%e5%88%86%e7%bb%84"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;128&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/longest-consecutive-sequence/"&gt;最长连续序列&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#128-%e6%9c%80%e9%95%bf%e8%bf%9e%e7%bb%ad%e5%ba%8f%e5%88%97"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="双指针"&gt;双指针&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;283&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/move-zeroes/"&gt;移动零&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#283-%e7%a7%bb%e5%8a%a8%e9%9b%b6"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;11&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/container-with-most-water/"&gt;盛最多水的容器&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#11-%e7%9b%9b%e6%9c%80%e5%a4%9a%e6%b0%b4%e7%9a%84%e5%ae%b9%e5%99%a8"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;15&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/3sum/"&gt;三数之和&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#15-%e4%b8%89%e6%95%b0%e4%b9%8b%e5%92%8c"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="滑动窗口"&gt;滑动窗口&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/longest-substring-without-repeating-characters/"&gt;无重复字符的最长子串&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#3-%e6%97%a0%e9%87%8d%e5%a4%8d%e5%ad%97%e7%ac%a6%e7%9a%84%e6%9c%80%e9%95%bf%e5%ad%90%e4%b8%b2"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;438&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/find-all-anagrams-in-a-string/"&gt;找到字符串中所有字母异位词&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#438-%e6%89%be%e5%88%b0%e5%ad%97%e7%ac%a6%e4%b8%b2%e4%b8%ad%e6%89%80%e6%9c%89%e5%ad%97%e6%af%8d%e5%bc%82%e4%bd%8d%e8%af%8d"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="子串"&gt;子串&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;560&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/subarray-sum-equals-k/"&gt;和为 K 的子数组&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#560-%e5%92%8c%e4%b8%ba-k-%e7%9a%84%e5%ad%90%e6%95%b0%e7%bb%84"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="普通数组"&gt;普通数组&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;53&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/maximum-subarray/"&gt;最大子数组和&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#53-%e6%9c%80%e5%a4%a7%e5%ad%90%e6%95%b0%e7%bb%84%e5%92%8c"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;56&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/merge-intervals/"&gt;合并区间&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#56-%e5%90%88%e5%b9%b6%e5%8c%ba%e9%97%b4"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;189&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/rotate-array/"&gt;轮转数组&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#189-%e8%bd%ae%e8%bd%ac%e6%95%b0%e7%bb%84"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;238&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/product-of-array-except-self/"&gt;除自身以外数组的乘积&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#238-%e9%99%a4%e8%87%aa%e8%ba%ab%e4%bb%a5%e5%a4%96%e6%95%b0%e7%bb%84%e7%9a%84%e4%b9%98%e7%a7%af"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="矩阵"&gt;矩阵&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;73&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/set-matrix-zeroes/"&gt;矩阵置零&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#73-%e7%9f%a9%e9%98%b5%e7%bd%ae%e9%9b%b6"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;54&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/spiral-matrix/"&gt;螺旋矩阵&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#54-%e8%9e%ba%e6%97%8b%e7%9f%a9%e9%98%b5"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;48&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/rotate-image/"&gt;旋转图像&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#48-%e6%97%8b%e8%bd%ac%e5%9b%be%e5%83%8f"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;240&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/search-a-2d-matrix-ii/"&gt;搜索二维矩阵 II&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#240-%e6%90%9c%e7%b4%a2%e4%ba%8c%e7%bb%b4%e7%9f%a9%e9%98%b5-ii"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="链表"&gt;链表&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;160&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/intersection-of-two-linked-lists/"&gt;相交链表&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#160-%e7%9b%b8%e4%ba%a4%e9%93%be%e8%a1%a8"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;206&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/reverse-linked-list/"&gt;反转链表&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#206-%e5%8f%8d%e8%bd%ac%e9%93%be%e8%a1%a8"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;234&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/palindrome-linked-list/"&gt;回文链表&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#234-%e5%9b%9e%e6%96%87%e9%93%be%e8%a1%a8"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;141&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/linked-list-cycle/"&gt;环形链表&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#141-%e7%8e%af%e5%bd%a2%e9%93%be%e8%a1%a8"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;21&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/merge-two-sorted-lists/"&gt;合并两个有序链表&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#21-%e5%90%88%e5%b9%b6%e4%b8%a4%e4%b8%aa%e6%9c%89%e5%ba%8f%e9%93%be%e8%a1%a8"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;142&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/linked-list-cycle-ii/"&gt;环形链表 II&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#142-%e7%8e%af%e5%bd%a2%e9%93%be%e8%a1%a8-ii"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/add-two-numbers/"&gt;两数相加&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#2-%e4%b8%a4%e6%95%b0%e7%9b%b8%e5%8a%a0"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;19&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/remove-nth-node-from-end-of-list/"&gt;删除链表的倒数第 N 个结点&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#19-%e5%88%a0%e9%99%a4%e9%93%be%e8%a1%a8%e7%9a%84%e5%80%92%e6%95%b0%e7%ac%ac-n-%e4%b8%aa%e7%bb%93%e7%82%b9"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;24&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/swap-nodes-in-pairs/"&gt;两两交换链表中的节点&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#24-%e4%b8%a4%e4%b8%a4%e4%ba%a4%e6%8d%a2%e9%93%be%e8%a1%a8%e4%b8%ad%e7%9a%84%e8%8a%82%e7%82%b9"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;148&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/sort-list/"&gt;排序链表&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#148-%e6%8e%92%e5%ba%8f%e9%93%be%e8%a1%a8"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;146&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/lru-cache/"&gt;LRU 缓存&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#146-lru-%e7%bc%93%e5%ad%98"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;138&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/copy-list-with-random-pointer/"&gt;随机链表的复制&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#138-%e9%9a%8f%e6%9c%ba%e9%93%be%e8%a1%a8%e7%9a%84%e5%a4%8d%e5%88%b6"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="二叉树"&gt;二叉树&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;94&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/binary-tree-inorder-traversal/"&gt;二叉树的中序遍历&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#94-%e4%ba%8c%e5%8f%89%e6%a0%91%e7%9a%84%e4%b8%ad%e5%ba%8f%e9%81%8d%e5%8e%86"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;104&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/maximum-depth-of-binary-tree/"&gt;二叉树的最大深度&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#104-%e4%ba%8c%e5%8f%89%e6%a0%91%e7%9a%84%e6%9c%80%e5%a4%a7%e6%b7%b1%e5%ba%a6"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;226&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/invert-binary-tree/"&gt;翻转二叉树&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#226-%e7%bf%bb%e8%bd%ac%e4%ba%8c%e5%8f%89%e6%a0%91"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;543&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/diameter-of-binary-tree/"&gt;二叉树的直径&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#543-%e4%ba%8c%e5%8f%89%e6%a0%91%e7%9a%84%e7%9b%b4%e5%be%84"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;108&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/"&gt;将有序数组转换为二叉搜索树&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#108-%e5%b0%86%e6%9c%89%e5%ba%8f%e6%95%b0%e7%bb%84%e8%bd%ac%e6%8d%a2%e4%b8%ba%e4%ba%8c%e5%8f%89%e6%90%9c%e7%b4%a2%e6%a0%91"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;102&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/binary-tree-level-order-traversal/"&gt;二叉树的层序遍历&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#102-%e4%ba%8c%e5%8f%89%e6%a0%91%e7%9a%84%e5%b1%82%e5%ba%8f%e9%81%8d%e5%8e%86"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;98&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/validate-binary-search-tree/"&gt;验证二叉搜索树&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#98-%e9%aa%8c%e8%af%81%e4%ba%8c%e5%8f%89%e6%90%9c%e7%b4%a2%e6%a0%91"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;230&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/kth-smallest-element-in-a-bst/"&gt;二叉搜索树中第 K 小的元素&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#230-%e4%ba%8c%e5%8f%89%e6%90%9c%e7%b4%a2%e6%a0%91%e4%b8%ad%e7%ac%ac-k-%e5%b0%8f%e7%9a%84%e5%85%83%e7%b4%a0"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;199&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/binary-tree-right-side-view/"&gt;二叉树的右视图&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#199-%e4%ba%8c%e5%8f%89%e6%a0%91%e7%9a%84%e5%8f%b3%e8%a7%86%e5%9b%be"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;114&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/"&gt;二叉树展开为链表&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#114-%e4%ba%8c%e5%8f%89%e6%a0%91%e5%b1%95%e5%bc%80%e4%b8%ba%e9%93%be%e8%a1%a8"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;105&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/"&gt;从前序与中序遍历序列构造二叉树&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#105-%e4%bb%8e%e5%89%8d%e5%ba%8f%e4%b8%8e%e4%b8%ad%e5%ba%8f%e9%81%8d%e5%8e%86%e5%ba%8f%e5%88%97%e6%9e%84%e9%80%a0%e4%ba%8c%e5%8f%89%e6%a0%91"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;437&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/path-sum-iii/"&gt;路径总和 III&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#437-%e8%b7%af%e5%be%84%e6%80%bb%e5%92%8c-iii"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;236&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/"&gt;二叉树的最近公共祖先&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#236-%e4%ba%8c%e5%8f%89%e6%a0%91%e7%9a%84%e6%9c%80%e8%bf%91%e5%85%ac%e5%85%b1%e7%a5%96%e5%85%88"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="图论"&gt;图论&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;200&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/number-of-islands/"&gt;岛屿数量&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#200-%e5%b2%9b%e5%b1%bf%e6%95%b0%e9%87%8f"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;994&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/rotting-oranges/"&gt;腐烂的橘子&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#994-%e8%85%90%e7%83%82%e7%9a%84%e6%a9%98%e5%ad%90"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;207&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/course-schedule/"&gt;课程表&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#207-%e8%af%be%e7%a8%8b%e8%a1%a8"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;208&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/implement-trie-prefix-tree/"&gt;实现 Trie (前缀树)&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#208-%e5%ae%9e%e7%8e%b0-trie-%e5%89%8d%e7%bc%80%e6%a0%91"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="回溯法"&gt;回溯法&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;46&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/permutations/"&gt;全排列&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#46-%e5%85%a8%e6%8e%92%e5%88%97"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;78&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/subsets/"&gt;子集&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#78-%e5%ad%90%e9%9b%86"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;17&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/letter-combinations-of-a-phone-number/"&gt;电话号码的字母组合&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#17-%e7%94%b5%e8%af%9d%e5%8f%b7%e7%a0%81%e7%9a%84%e5%ad%97%e6%af%8d%e7%bb%84%e5%90%88"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;39&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/combination-sum/"&gt;组合总和&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#39-%e7%bb%84%e5%90%88%e6%80%bb%e5%92%8c"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;22&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/generate-parentheses/"&gt;括号生成&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#22-%e6%8b%ac%e5%8f%b7%e7%94%9f%e6%88%90"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;79&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/word-search/"&gt;单词搜索&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#79-%e5%8d%95%e8%af%8d%e6%90%9c%e7%b4%a2"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;131&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/palindrome-partitioning/"&gt;分割回文串&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#131-%e5%88%86%e5%89%b2%e5%9b%9e%e6%96%87%e4%b8%b2"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="二分查找"&gt;二分查找&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;35&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/search-insert-position/"&gt;搜索插入位置&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#35-%e6%90%9c%e7%b4%a2%e6%8f%92%e5%85%a5%e4%bd%8d%e7%bd%ae"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;74&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/search-a-2d-matrix/"&gt;搜索二维矩阵&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#74-%e6%90%9c%e7%b4%a2%e4%ba%8c%e7%bb%b4%e7%9f%a9%e9%98%b5"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;34&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/"&gt;在排序数组中查找元素的第一个和最后一个位置&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#34-%e5%9c%a8%e6%8e%92%e5%ba%8f%e6%95%b0%e7%bb%84%e4%b8%ad%e6%9f%a5%e6%89%be%e5%85%83%e7%b4%a0%e7%9a%84%e7%ac%ac%e4%b8%80%e4%b8%aa%e5%92%8c%e6%9c%80%e5%90%8e%e4%b8%80%e4%b8%aa%e4%bd%8d%e7%bd%ae"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;33&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/search-in-rotated-sorted-array/"&gt;搜索旋转排序数组&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#33-%e6%90%9c%e7%b4%a2%e6%97%8b%e8%bd%ac%e6%8e%92%e5%ba%8f%e6%95%b0%e7%bb%84"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;153&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/"&gt;寻找旋转排序数组中的最小值&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#153-%e5%af%bb%e6%89%be%e6%97%8b%e8%bd%ac%e6%8e%92%e5%ba%8f%e6%95%b0%e7%bb%84%e4%b8%ad%e7%9a%84%e6%9c%80%e5%b0%8f%e5%80%bc"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="栈"&gt;栈&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;20&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/valid-parentheses/"&gt;有效的括号&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#20-%e6%9c%89%e6%95%88%e7%9a%84%e6%8b%ac%e5%8f%b7"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;155&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/min-stack/"&gt;最小栈&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#155-%e6%9c%80%e5%b0%8f%e6%a0%88"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;394&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/decode-string/"&gt;字符串解码&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#394-%e5%ad%97%e7%ac%a6%e4%b8%b2%e8%a7%a3%e7%a0%81"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="堆"&gt;堆&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;215&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/kth-largest-element-in-an-array/"&gt;数组中的第K个最大元素&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#215-%e6%95%b0%e7%bb%84%e4%b8%ad%e7%9a%84%e7%ac%ack%e4%b8%aa%e6%9c%80%e5%a4%a7%e5%85%83%e7%b4%a0"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;347&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/top-k-frequent-elements/"&gt;前 K 个高频元素&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#347-%e5%89%8d-k-%e4%b8%aa%e9%ab%98%e9%a2%91%e5%85%83%e7%b4%a0"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="贪心算法"&gt;贪心算法&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;121&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/"&gt;买卖股票的最佳时机&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#121-%e4%b9%b0%e5%8d%96%e8%82%a1%e7%a5%a8%e7%9a%84%e6%9c%80%e4%bd%b3%e6%97%b6%e6%9c%ba"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;55&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/jump-game/"&gt;跳跃游戏&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#55-%e8%b7%b3%e8%b7%83%e6%b8%b8%e6%88%8f"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;45&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/jump-game-ii/"&gt;跳跃游戏 II&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#45-%e8%b7%b3%e8%b7%83%e6%b8%b8%e6%88%8f-ii"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;763&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/partition-labels/"&gt;划分字母区间&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#763-%e5%88%92%e5%88%86%e5%ad%97%e6%af%8d%e5%8c%ba%e9%97%b4"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="动态规划"&gt;动态规划&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;70&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/climbing-stairs/"&gt;爬楼梯&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#70-%e7%88%ac%e6%a5%bc%e6%a2%af"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;118&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/pascals-triangle/"&gt;杨辉三角&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#118-%e6%9d%a8%e8%be%89%e4%b8%89%e8%a7%92"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;198&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/house-robber/"&gt;打家劫舍&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#198-%e6%89%93%e5%ae%b6%e5%8a%ab%e8%88%8d"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;279&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/perfect-squares/"&gt;完全平方数&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#279-%e5%ae%8c%e5%85%a8%e5%b9%b3%e6%96%b9%e6%95%b0"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;322&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/coin-change/"&gt;零钱兑换&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#322-%e9%9b%b6%e9%92%b1%e5%85%91%e6%8d%a2"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;139&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/word-break/"&gt;单词拆分&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#139-%e5%8d%95%e8%af%8d%e6%8b%86%e5%88%86"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;300&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/longest-increasing-subsequence/"&gt;最长递增子序列&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#300-%e6%9c%80%e9%95%bf%e9%80%92%e5%a2%9e%e5%ad%90%e5%ba%8f%e5%88%97"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;152&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/maximum-product-subarray/"&gt;乘积最大子数组&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#152-%e4%b9%98%e7%a7%af%e6%9c%80%e5%a4%a7%e5%ad%90%e6%95%b0%e7%bb%84"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;416&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/partition-equal-subset-sum/"&gt;分割等和子集&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#416-%e5%88%86%e5%89%b2%e7%ad%89%e5%92%8c%e5%ad%90%e9%9b%86"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="多维动态规划"&gt;多维动态规划&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;62&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/unique-paths/"&gt;不同路径&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#62-%e4%b8%8d%e5%90%8c%e8%b7%af%e5%be%84"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;64&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/minimum-path-sum/"&gt;最小路径和&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#64-%e6%9c%80%e5%b0%8f%e8%b7%af%e5%be%84%e5%92%8c"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/longest-palindromic-substring/"&gt;最长回文子串&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#5-%e6%9c%80%e9%95%bf%e5%9b%9e%e6%96%87%e5%ad%90%e4%b8%b2"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1143&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/longest-common-subsequence/"&gt;最长公共子序列&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#1143-%e6%9c%80%e9%95%bf%e5%85%ac%e5%85%b1%e5%ad%90%e5%ba%8f%e5%88%97"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;72&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/edit-distance/"&gt;编辑距离&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#72-%e7%bc%96%e8%be%91%e8%b7%9d%e7%a6%bb"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="技巧"&gt;技巧&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;难度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题号&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;题解&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;136&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/single-number/"&gt;只出现一次的数字&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#136-%e5%8f%aa%e5%87%ba%e7%8e%b0%e4%b8%80%e6%ac%a1%e7%9a%84%e6%95%b0%e5%ad%97"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;简单&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;169&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/majority-element/"&gt;多数元素&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#169-%e5%a4%9a%e6%95%b0%e5%85%83%e7%b4%a0"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;75&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/sort-colors/"&gt;颜色分类&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#75-%e9%a2%9c%e8%89%b2%e5%88%86%e7%b1%bb"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;31&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/next-permutation/"&gt;下一个排列&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#31-%e4%b8%8b%e4%b8%80%e4%b8%aa%e6%8e%92%e5%88%97"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;287&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://leetcode.cn/problems/find-the-duplicate-number/"&gt;寻找重复数&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://www.iam041.com/posts/leetcode-hot-100-%E9%A2%98%E8%A7%A3%E5%90%88%E9%9B%86/#287-%e5%af%bb%e6%89%be%e9%87%8d%e5%a4%8d%e6%95%b0"&gt;题解&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="哈希-1"&gt;哈希&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;方法代码&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;核心作用&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;代码示例 / 返回值&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;hashmap.keys()&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;获取字典中所有的&lt;strong&gt;键&lt;/strong&gt; (Key)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;[&amp;lsquo;aet&amp;rsquo;, &amp;lsquo;ant&amp;rsquo;]&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;hashmap.values()&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;获取字典中所有的&lt;strong&gt;值&lt;/strong&gt; (Value)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;[[&amp;rsquo;eat&amp;rsquo;, &amp;rsquo;tea&amp;rsquo;], [&amp;rsquo;tan&amp;rsquo;]]&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;hashmap.items()&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;同时获取所有的&lt;strong&gt;键和值&lt;/strong&gt;，常用于循环&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;for key, val in hashmap.items():&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;hashmap.get(key, default)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;安全获取值，若键不存在则返回设定的默认值&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;hashmap.get(&amp;ldquo;aet&amp;rdquo;, [])&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;hashmap[key] = value&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;新增&lt;/strong&gt;或&lt;strong&gt;修改&lt;/strong&gt;指定的键值对&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;hashmap[&amp;ldquo;aet&amp;rdquo;] = [&amp;ldquo;eat&amp;rdquo;]&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;hashmap.pop(key)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;删除&lt;/strong&gt;指定的键，并返回它对应的值&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;words = hashmap.pop(&amp;ldquo;aet&amp;rdquo;)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;hashmap.clear()&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;清空&lt;/strong&gt;字典里的所有内容&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;hashmap.clear()&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;hashmap.update(dict2)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;将另一个字典的数据&lt;strong&gt;合并&lt;/strong&gt;到当前字典中&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;hashmap.update(other_dict)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;key in hashmap&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;strong&gt;判断&lt;/strong&gt;某个键是否在字典中 (返回布尔值)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;if &amp;ldquo;aet&amp;rdquo; in hashmap:&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;len(hashmap)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;统计并返回字典中键值对的&lt;strong&gt;总数量&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;count = len(hashmap)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="1-两数之和"&gt;&lt;a href="https://leetcode.cn/problems/two-sum/description/?envType=study-plan-v2&amp;amp;envId=top-100-liked"&gt;1. 两数之和&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h4 id="题目描述"&gt;题目描述&lt;/h4&gt;&#10;&lt;p&gt;给定一个整数数组&lt;code&gt;nums&lt;/code&gt;和一个整数目标值&lt;code&gt;target&lt;/code&gt;，请你在该数组中找出&lt;strong&gt;和为目标值&lt;/strong&gt;&lt;code&gt;target&lt;/code&gt;的那&lt;strong&gt;两个&lt;/strong&gt;整数，并返回它们的数组下标。&#10;你可以假设每种输入只会对应一个答案，并且你不能使用两次相同的元素。&#10;你可以按任意顺序返回答案。&lt;/p&gt;</description></item><item><title>Home Links</title><link>https://www.iam041.com/links/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.iam041.com/links/</guid><description/></item></channel></rss>