<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/scripts/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:h="http://www.w3.org/TR/html4/"><channel><title>西贝的代码宇宙 · 笔记</title><description>记录计算机基础、软件开发、工程实践与人工智能的学习笔记。</description><link>https://mrsibe.top</link><language>zh-CN</language><item><title>Attention</title><link>https://mrsibe.top/notes/ai/llm/attention</link><guid isPermaLink="true">https://mrsibe.top/notes/ai/llm/attention</guid><description>Attention 机制的学习笔记（待补充）。</description><content:encoded/></item><item><title>Transformer</title><link>https://mrsibe.top/notes/ai/llm/transformer</link><guid isPermaLink="true">https://mrsibe.top/notes/ai/llm/transformer</guid><description>Transformer 架构的学习笔记（待补充）。</description><content:encoded/></item><item><title>API 设计</title><link>https://mrsibe.top/notes/development/backend/api-design</link><guid isPermaLink="true">https://mrsibe.top/notes/development/backend/api-design</guid><description>API 设计的学习笔记（待补充）。</description><content:encoded/></item><item><title>缓存</title><link>https://mrsibe.top/notes/development/backend/cache</link><guid isPermaLink="true">https://mrsibe.top/notes/development/backend/cache</guid><description>缓存的学习笔记（待补充）。</description><content:encoded/></item><item><title>消息队列</title><link>https://mrsibe.top/notes/development/backend/message-queue</link><guid isPermaLink="true">https://mrsibe.top/notes/development/backend/message-queue</guid><description>消息队列的学习笔记（待补充）。</description><content:encoded/></item><item><title>RPC</title><link>https://mrsibe.top/notes/development/backend/rpc</link><guid isPermaLink="true">https://mrsibe.top/notes/development/backend/rpc</guid><description>RPC 的学习笔记（待补充）。</description><content:encoded/></item><item><title>HTML 简介</title><link>https://mrsibe.top/notes/development/frontend/html</link><guid isPermaLink="true">https://mrsibe.top/notes/development/frontend/html</guid><description>HTML 的基本概念、元素与常见标签。</description><content:encoded>&lt;h2&gt;HTML 是什么&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;HTML&lt;/strong&gt;（HyperText Markup Language，超文本标记语言）是一种&lt;strong&gt;标记语言&lt;/strong&gt;，一般编写在后缀名为 &lt;code&gt;.html&lt;/code&gt; 的 &lt;strong&gt;HTML 文档&lt;/strong&gt;之中。&lt;/p&gt;
&lt;p&gt;它和 Markdown 类似，通过各种标记描述网页内容的结构和语义。至于具体的颜色、字体、大小、布局等样式，一般交给 CSS 处理。&lt;/p&gt;
&lt;h2&gt;HTML 元素是什么&lt;/h2&gt;
&lt;p&gt;HTML 的基本单位是&lt;strong&gt;元素（Element）&lt;/strong&gt;，普通元素由开始标签、内容和结束标签构成：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x3C;p&gt;这是一段文字&amp;#x3C;/p&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中 &lt;code&gt;&amp;#x3C;p&gt;&lt;/code&gt; 是开始标签，&lt;code&gt;&amp;#x3C;/p&gt;&lt;/code&gt; 是结束标签，整个 &lt;code&gt;&amp;#x3C;p&gt;这是一段文字&amp;#x3C;/p&gt;&lt;/code&gt; 才叫元素。标签不区分大小写，不过为了规范一般都使用小写。&lt;/p&gt;
&lt;p&gt;元素可以放置在其他元素内部，被称为&lt;strong&gt;嵌套&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;有些元素只有一个标签，被称为&lt;strong&gt;空元素（Void Element）&lt;/strong&gt;：&lt;code&gt;&amp;#x3C;img src=&quot;firefox.png&quot; alt=&quot;Firefox 图标&quot; /&gt;&lt;/code&gt;。常见的空元素还有 &lt;code&gt;&amp;#x3C;br&gt;&lt;/code&gt;、&lt;code&gt;&amp;#x3C;hr&gt;&lt;/code&gt;、&lt;code&gt;&amp;#x3C;meta&gt;&lt;/code&gt;、&lt;code&gt;&amp;#x3C;link&gt;&lt;/code&gt;、&lt;code&gt;&amp;#x3C;input&gt;&lt;/code&gt; 等。&lt;/p&gt;
&lt;p&gt;元素可以拥有&lt;strong&gt;属性（Attribute）&lt;/strong&gt;，用于提供额外的信息或配置，可以简单理解为键值对：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x3C;a href=&quot;https://example.com&quot;&gt;Example&amp;#x3C;/a&gt;
&amp;#x3C;img src=&quot;cat.png&quot; alt=&quot;一只猫&quot; width=&quot;300&quot; /&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一个元素可以有多个属性，属性之间使用空格分隔。属性值一般使用双引号或单引号包起来。&lt;/p&gt;
&lt;p&gt;有些属性是&lt;strong&gt;布尔属性&lt;/strong&gt;，只要存在就表示 true：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x3C;!-- 这是一段注释 --&gt;
&amp;#x3C;!-- 即使写成 `disabled=&quot;false&quot;`，`disabled` 仍然会生效。 --&gt;
&amp;#x3C;input type=&quot;text&quot; disabled /&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;HTML 中连续的普通空格和换行通常会被折叠成一个空格，所以不要通过堆空格或者换行控制页面布局。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;#x3C;&lt;/code&gt;、&lt;code&gt;&gt;&lt;/code&gt;、&lt;code&gt;&amp;#x26;&lt;/code&gt; 等字符具有 HTML 语法含义，如果想作为普通文本显示，可以使用&lt;strong&gt;字符引用（Character Reference）&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x26;lt;    &amp;#x3C;!-- &amp;#x3C; --&gt;
&amp;#x26;gt;    &amp;#x3C;!-- &gt; --&gt;
&amp;#x26;amp;   &amp;#x3C;!-- &amp;#x26; --&gt;
&amp;#x26;quot;  &amp;#x3C;!-- &quot; --&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;常用 HTML 元素&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;HTML 提供了 &lt;code&gt;&amp;#x3C;h1&gt;&lt;/code&gt; 到 &lt;code&gt;&amp;#x3C;h6&gt;&lt;/code&gt; 六级标题，主要用于表示文档的层级关系，而不是控制字体大小。普通段落使用 &lt;code&gt;&amp;#x3C;p&gt;&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;em&gt;&lt;/code&gt; 和 &lt;code&gt;&amp;#x3C;strong&gt;&lt;/code&gt; 都表示强调：&lt;code&gt;&amp;#x3C;em&gt;&lt;/code&gt; 表示强调，浏览器默认一般显示为斜体；&lt;code&gt;&amp;#x3C;strong&gt;&lt;/code&gt; 表示内容具有较高的重要性，默认一般显示为粗体。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;ul&gt;&lt;/code&gt; 表示无序列表，&lt;code&gt;&amp;#x3C;ol&gt;&lt;/code&gt; 表示有序列表，列表项都使用 &lt;code&gt;&amp;#x3C;li&gt;&lt;/code&gt;，列表内部还可以继续嵌套列表。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;dl&gt;&lt;/code&gt; 表示描述列表，其中 &lt;code&gt;&amp;#x3C;dt&gt;&lt;/code&gt; 表示术语，&lt;code&gt;&amp;#x3C;dd&gt;&lt;/code&gt; 表示对应的描述，适合术语和定义、问题和答案、名称和描述等内容。&lt;/li&gt;
&lt;li&gt;超链接使用 &lt;code&gt;&amp;#x3C;a&gt;&lt;/code&gt;，比如 &lt;code&gt;&amp;#x3C;a href=&quot;https://developer.mozilla.org/&quot;&gt;MDN&amp;#x3C;/a&gt;&lt;/code&gt;。&lt;code&gt;&amp;#x3C;a&gt;&lt;/code&gt; 不只能包文字，也可以包图片等其他内容。&lt;/li&gt;
&lt;li&gt;内部链接可以通过元素的 &lt;code&gt;id&lt;/code&gt; 跳转到当前页面中的某个位置：&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x3C;h2 id=&quot;html-element&quot;&gt;HTML 元素&amp;#x3C;/h2&gt;

&amp;#x3C;a href=&quot;#html-element&quot;&gt;跳转到 HTML 元素&amp;#x3C;/a&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;图片使用 &lt;code&gt;&amp;#x3C;img&gt;&lt;/code&gt;，其中 &lt;code&gt;src&lt;/code&gt; 表示图片地址，&lt;code&gt;alt&lt;/code&gt; 表示图片的文本描述：&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x3C;img src=&quot;cat.jpg&quot; alt=&quot;一只趴在桌子上的橘猫&quot; /&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;图片无法加载或者用户使用屏幕阅读器时，会使用 &lt;code&gt;alt&lt;/code&gt; 描述图片内容。如果图片只是装饰，没有实际语义，可以设置 &lt;code&gt;alt=&quot;&quot;&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;一些其他文本语义元素&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;blockquote&gt;&lt;/code&gt; 用于较长的块级引用，&lt;code&gt;&amp;#x3C;q&gt;&lt;/code&gt; 用于较短的行内引用。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;abbr&gt;&lt;/code&gt; 用于表示缩写，比如 &lt;code&gt;&amp;#x3C;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&amp;#x3C;/abbr&gt;&lt;/code&gt;，可以通过 &lt;code&gt;title&lt;/code&gt; 属性标记缩写的完整含义。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;sup&gt;&lt;/code&gt; 表示上标，比如 &lt;code&gt;x&amp;#x3C;sup&gt;2&amp;#x3C;/sup&gt;&lt;/code&gt;；&lt;code&gt;&amp;#x3C;sub&gt;&lt;/code&gt; 表示下标，比如 &lt;code&gt;H&amp;#x3C;sub&gt;2&amp;#x3C;/sub&gt;O&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;code&gt;&lt;/code&gt; 用于表示代码，比如 &lt;code&gt;&amp;#x3C;code&gt;System.out.println()&amp;#x3C;/code&gt;&lt;/code&gt;。多行代码一般配合 &lt;code&gt;&amp;#x3C;pre&gt;&lt;/code&gt; 使用，&lt;code&gt;&amp;#x3C;pre&gt;&lt;/code&gt; 会保留内容中的空格和换行。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;time&gt;&lt;/code&gt; 用于表示时间和日期，比如 &lt;code&gt;&amp;#x3C;time datetime=&quot;2026-10-06&quot;&gt;2026 年 10 月 6 日&amp;#x3C;/time&gt;&lt;/code&gt;，&lt;code&gt;datetime&lt;/code&gt; 属性用于提供机器可识别的时间信息。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;HTML 文档结构&lt;/h2&gt;
&lt;p&gt;一个最基础的 HTML 文档：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x3C;!doctype html&gt;
&amp;#x3C;html lang=&quot;zh-CN&quot;&gt;
  &amp;#x3C;head&gt;
    &amp;#x3C;meta charset=&quot;utf-8&quot; /&gt;
    &amp;#x3C;title&gt;我的测试页面&amp;#x3C;/title&gt;
  &amp;#x3C;/head&gt;
  &amp;#x3C;body&gt;
    &amp;#x3C;p&gt;这是我的页面&amp;#x3C;/p&gt;
  &amp;#x3C;/body&gt;
&amp;#x3C;/html&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;!doctype html&gt;&lt;/code&gt;：文档类型声明，让浏览器按照现代 HTML 标准解析页面。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;html&gt;&lt;/code&gt;：HTML 文档的根元素，&lt;code&gt;lang&lt;/code&gt; 属性表示页面的主要语言。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt;：存放 HTML 文档的元信息和配置，一般不会直接展示给用户。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;body&gt;&lt;/code&gt;：存放网页展示给用户的主要内容。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;头元素&lt;/h3&gt;
&lt;p&gt;常见的 &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; 内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x3C;head&gt;
  &amp;#x3C;meta charset=&quot;utf-8&quot; /&gt;
  &amp;#x3C;title&gt;我的测试页面&amp;#x3C;/title&gt;
  &amp;#x3C;meta name=&quot;author&quot; content=&quot;MrSibe&quot; /&gt;
  &amp;#x3C;meta name=&quot;description&quot; content=&quot;这里是描述页面的内容&quot; /&gt;
  &amp;#x3C;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot; /&gt;
  &amp;#x3C;script src=&quot;main.js&quot; defer&gt;&amp;#x3C;/script&gt;
&amp;#x3C;/head&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;title&gt;&lt;/code&gt;：HTML 文档的标题，一般显示在浏览器标签页上。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;meta&gt;&lt;/code&gt;：描述文档的元信息，比如字符编码、作者、页面描述等。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;link&gt;&lt;/code&gt;：描述当前文档和其他资源的关系，最常见的是引入 CSS，也可以配置 favicon。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;script&gt;&lt;/code&gt;：加载或编写 JavaScript，&lt;code&gt;src&lt;/code&gt; 指定文件地址，&lt;code&gt;defer&lt;/code&gt; 表示等 HTML 解析完成后再执行。注意，&lt;code&gt;&amp;#x3C;script&gt; &lt;/code&gt;不是空元素，需要写结束标签。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;语义化 HTML&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;&amp;#x3C;body&gt;&lt;/code&gt; 中除了标题、段落、列表等内容元素之外，还有一些用于组织页面结构的&lt;strong&gt;语义化元素&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;header&gt;&lt;/code&gt;：页面或者某个区块的页眉。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;nav&gt;&lt;/code&gt;：主要的导航区域。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;main&gt;&lt;/code&gt;：当前页面最主要的内容，一个页面通常只有一个。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt;：相对独立、完整的一块内容，比如博客文章、新闻、论坛帖子等。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;section&gt;&lt;/code&gt;：按照主题划分出来的一个内容区段，一般会有自己的标题。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;aside&gt;&lt;/code&gt;：和主要内容相关但不属于主要内容本身的信息，比如侧边栏、相关阅读等。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;footer&gt;&lt;/code&gt;：页面或者某个区块的页脚。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;&amp;#x3C;header&gt;&lt;/code&gt; 和 &lt;code&gt;&amp;#x3C;footer&gt;&lt;/code&gt; 不一定只能出现一次，&lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt; 等元素也可以拥有自己的 &lt;code&gt;&amp;#x3C;header&gt;&lt;/code&gt; 和 &lt;code&gt;&amp;#x3C;footer&gt;&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt; 和 &lt;code&gt;&amp;#x3C;section&gt;&lt;/code&gt; 比较容易混淆：&lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt; 更强调内容可以相对独立存在，&lt;code&gt;&amp;#x3C;section&gt;&lt;/code&gt; 更强调一段内容内部按照主题进行划分。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x3C;main&gt;
  &amp;#x3C;article&gt;
    &amp;#x3C;header&gt;
      &amp;#x3C;h1&gt;HTML 学习笔记&amp;#x3C;/h1&gt;
    &amp;#x3C;/header&gt;

    &amp;#x3C;section&gt;
      &amp;#x3C;h2&gt;HTML 是什么&amp;#x3C;/h2&gt;
      &amp;#x3C;p&gt;...&amp;#x3C;/p&gt;
    &amp;#x3C;/section&gt;

    &amp;#x3C;section&gt;
      &amp;#x3C;h2&gt;HTML 元素&amp;#x3C;/h2&gt;
      &amp;#x3C;p&gt;...&amp;#x3C;/p&gt;
    &amp;#x3C;/section&gt;
  &amp;#x3C;/article&gt;

  &amp;#x3C;aside&gt;
    &amp;#x3C;h2&gt;相关阅读&amp;#x3C;/h2&gt;
  &amp;#x3C;/aside&gt;
&amp;#x3C;/main&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt; 和 &lt;code&gt;&amp;#x3C;span&gt;&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;如果没有合适的语义元素，可以使用 &lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt; 和 &lt;code&gt;&amp;#x3C;span&gt;&lt;/code&gt; 这两个没有特殊语义的通用容器：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x3C;div class=&quot;card&quot;&gt;
  &amp;#x3C;h2&gt;HTML&amp;#x3C;/h2&gt;
  &amp;#x3C;p&gt;...&amp;#x3C;/p&gt;
&amp;#x3C;/div&gt;

&amp;#x3C;p&gt;当前状态：&amp;#x3C;span class=&quot;status&quot;&gt;运行中&amp;#x3C;/span&gt;&amp;#x3C;/p&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt; 一般用于包裹一块内容，&lt;code&gt;&amp;#x3C;span&gt;&lt;/code&gt; 一般用于包裹一小段行内内容。如果有 &lt;code&gt;&amp;#x3C;nav&gt;&lt;/code&gt;、&lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt;、&lt;code&gt;&amp;#x3C;section&gt;&lt;/code&gt; 等更合适的语义元素，优先使用这些元素。&lt;/p&gt;
&lt;h3&gt;&lt;code&gt;&amp;#x3C;br&gt;&lt;/code&gt; 和 &lt;code&gt;&amp;#x3C;hr&gt;&lt;/code&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;br&gt;&lt;/code&gt; 表示换行，不要使用大量 &lt;code&gt;&amp;#x3C;br&gt;&lt;/code&gt; 控制间距，间距应该交给 CSS。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#x3C;hr&gt;&lt;/code&gt; 表示内容在主题上的分隔，浏览器默认一般显示为一条横线。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;一个比较规范的 HTML 页面&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x3C;!doctype html&gt;
&amp;#x3C;html lang=&quot;zh-CN&quot;&gt;
  &amp;#x3C;head&gt;
    &amp;#x3C;meta charset=&quot;utf-8&quot; /&gt;
    &amp;#x3C;title&gt;HTML 学习笔记&amp;#x3C;/title&gt;
    &amp;#x3C;meta name=&quot;description&quot; content=&quot;HTML 基础学习笔记&quot; /&gt;
    &amp;#x3C;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot; /&gt;
    &amp;#x3C;script src=&quot;main.js&quot; defer&gt;&amp;#x3C;/script&gt;
  &amp;#x3C;/head&gt;

  &amp;#x3C;body&gt;
    &amp;#x3C;header&gt;
      &amp;#x3C;h1&gt;MrSibe Notes&amp;#x3C;/h1&gt;
    &amp;#x3C;/header&gt;

    &amp;#x3C;nav&gt;
      &amp;#x3C;a href=&quot;/&quot;&gt;首页&amp;#x3C;/a&gt;
      &amp;#x3C;a href=&quot;/html&quot;&gt;HTML&amp;#x3C;/a&gt;
      &amp;#x3C;a href=&quot;/css&quot;&gt;CSS&amp;#x3C;/a&gt;
    &amp;#x3C;/nav&gt;

    &amp;#x3C;main&gt;
      &amp;#x3C;article&gt;
        &amp;#x3C;h2&gt;HTML 学习笔记&amp;#x3C;/h2&gt;

        &amp;#x3C;section&gt;
          &amp;#x3C;h3&gt;HTML 是什么&amp;#x3C;/h3&gt;
          &amp;#x3C;p&gt;HTML 是一种&amp;#x3C;strong&gt;标记语言&amp;#x3C;/strong&gt;，用于描述网页的结构和语义。&amp;#x3C;/p&gt;
        &amp;#x3C;/section&gt;

        &amp;#x3C;section&gt;
          &amp;#x3C;h3&gt;HTML 元素&amp;#x3C;/h3&gt;
          &amp;#x3C;p&gt;HTML 文档由大量 HTML 元素组成。&amp;#x3C;/p&gt;
        &amp;#x3C;/section&gt;
      &amp;#x3C;/article&gt;

      &amp;#x3C;aside&gt;
        &amp;#x3C;h2&gt;相关阅读&amp;#x3C;/h2&gt;
      &amp;#x3C;/aside&gt;
    &amp;#x3C;/main&gt;

    &amp;#x3C;footer&gt;
      &amp;#x3C;p&gt;Copyright © MrSibe&amp;#x3C;/p&gt;
    &amp;#x3C;/footer&gt;
  &amp;#x3C;/body&gt;
&amp;#x3C;/html&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;HTML 主要负责描述内容的&lt;strong&gt;结构和语义&lt;/strong&gt;，具体的颜色、字体、大小、间距和布局等样式一般交给 CSS。&lt;/p&gt;</content:encoded></item><item><title>Git</title><link>https://mrsibe.top/notes/engineering/dev-environment/git</link><guid isPermaLink="true">https://mrsibe.top/notes/engineering/dev-environment/git</guid><description>Git 解决的问题与基本概念。</description><content:encoded>&lt;p&gt;Git 是目前最流行的版本管理系统。&lt;/p&gt;
&lt;p&gt;Git 解决了两个问题：第一，如何在写错代码的时候可以恢复到原来的状态；第二，如何使得多名程序员可以共同开发一个软件。&lt;/p&gt;
&lt;h2&gt;Git 的基本概念&lt;/h2&gt;</content:encoded></item><item><title>Lazygit</title><link>https://mrsibe.top/notes/engineering/tools/lazygit</link><guid isPermaLink="true">https://mrsibe.top/notes/engineering/tools/lazygit</guid><description>Lazygit 终端 Git 可视化工具与常用按键速查。</description><content:encoded>&lt;p&gt;现在写项目基本上离不开 Git 了。然而 Git 自带的 CLI 命令有些过于琐碎，我们需要不停地敲击命令才能知道项目有哪些分支、有哪些 commit 等信息。因此大家都更习惯用图形化界面的 Git 管理工具，比如说 IDEA、VSCode 自带的 Git 工具。&lt;/p&gt;
&lt;p&gt;不过我在终端写代码时（用 Claude Code、Vim 简单编辑），再专门打开 IDE 使用 Git 工具实在麻烦。&lt;a href=&quot;https://github.com/jesseduffield/lazygit&quot;&gt;Lazygit&lt;/a&gt; 正好填补了这个空缺——一个纯终端的 Git 可视化工具。&lt;/p&gt;
&lt;p&gt;它的界面类似 GitHub Desktop 的布局，左侧是功能面板，右侧是详细信息区。用数字键 1-5 快速切换面板，用空格键执行核心操作。&lt;/p&gt;
&lt;h2&gt;常用按键速查&lt;/h2&gt;
&lt;p&gt;| 操作                | 按键       |
| ------------------- | ---------- |
| 暂存/取消暂存       | &lt;code&gt;空格&lt;/code&gt;     |
| 提交                | &lt;code&gt;c&lt;/code&gt;        |
| 追加提交（Amend）   | &lt;code&gt;A&lt;/code&gt;        |
| 推送 / 拉取         | &lt;code&gt;P&lt;/code&gt; / &lt;code&gt;p&lt;/code&gt;  |
| 切换分支            | &lt;code&gt;空格&lt;/code&gt;     |
| 新建分支            | &lt;code&gt;n&lt;/code&gt;        |
| 交互式 Rebase       | &lt;code&gt;i&lt;/code&gt;        |
| 撤销上一步 Git 操作 | &lt;code&gt;z&lt;/code&gt;        |
| 查看帮助            | &lt;code&gt;x&lt;/code&gt; 或 &lt;code&gt;?&lt;/code&gt; |&lt;/p&gt;</content:encoded></item><item><title>Vim &amp; Neovim</title><link>https://mrsibe.top/notes/engineering/tools/vim</link><guid isPermaLink="true">https://mrsibe.top/notes/engineering/tools/vim</guid><description>通过 vimtutor、实践与帮助文档学习 Vim。</description><content:encoded>&lt;p&gt;很多时候我们需要 ssh 一下 Linux 服务器来完成一些任务，但这些服务器基本上不会预装 IDE，比如说 VSCode、PyCharm。&lt;/p&gt;
&lt;p&gt;最快捷的办法就是使用系统自带的编辑器，其中最出名的必然是 Vim。&lt;/p&gt;
&lt;h2&gt;怎么学 Vim？&lt;/h2&gt;
&lt;p&gt;主要看 vimtutor 就好。在终端输入 &lt;code&gt;vimtutor&lt;/code&gt;，就会用 vim 打开一个文档教程，跟着里面的教学手敲就好了。（如果打开的不是中文，可以试试 &lt;code&gt;vimtutor zh&lt;/code&gt;，不过有些系统没装中文教程文件，没装的话就还是英文版）&lt;/p&gt;
&lt;p&gt;vimtutor 敲完，直接强迫自己用一段时间 Vim，过段时间就会发现自己越用越顺手；如果忘记什么命令直接 &lt;code&gt;:help&lt;/code&gt; 查一下，或者再翻一下 &lt;code&gt;vimtutor&lt;/code&gt; 就好。&lt;/p&gt;
&lt;p&gt;Vim 相关书籍推荐《Practical Vim》。&lt;/p&gt;
&lt;h2&gt;更现代的选择——Neovim&lt;/h2&gt;
&lt;p&gt;Vim 这个编辑器历史已经相当悠久了，默认配置和插件生态相对老旧，而且 Vim 为了兼容很多古早设备，还维护了相当冗余的代码。因此社区 fork 出了 Neovim，删掉冗余代码，配置语言换成 Lua，显得更加现代。因此对于喜欢 Vim 甚至打算直接把 Vim 作为主力的人，我更推荐使用 Neovim。&lt;/p&gt;
&lt;p&gt;Neovim 默认不带太多开箱即用的功能，通常需要自己写配置，或者套用现成的配置。自己从零搭相当不友好，因此社区比较推荐从带注释的基础配置模板开始，最出名的是 &lt;a href=&quot;https://github.com/nvim-lua/kickstart.nvim&quot;&gt;Kickstart.nvim&lt;/a&gt;。如果想开箱即用，那就无脑入 &lt;a href=&quot;https://www.lazyvim.org/&quot;&gt;LazyVim&lt;/a&gt;，它是社区里很流行、口碑不错的一套配置，集成了大量插件，开箱即用程度在 Neovim 配置里算很高的。&lt;/p&gt;</content:encoded></item><item><title>Docker 入门</title><link>https://mrsibe.top/notes/systems/docker/intro</link><guid isPermaLink="true">https://mrsibe.top/notes/systems/docker/intro</guid><description>Docker 的基本概念，以及容器解决的部署与隔离问题。</description><content:encoded>&lt;h2&gt;Docker 是什么？解决了什么问题？&lt;/h2&gt;
&lt;p&gt;每次给电脑安装开发环境的时候都非常折腾，甚至还会遇到多版本管理的问题；软件开发好后部署到服务器，也会遇到类似的问题。程序员们觉得，程序开发好后，如果能直接把程序和运行环境都打包好，发到服务器上运行，就很方便了。&lt;/p&gt;
&lt;p&gt;当然，实现这个思路也有很多种方法。最传统的思路是：把程序和运行环境做成安装包，直接在服务器上安装。不过，这个方法很可能导致多版本环境冲突，因此我们需要让环境与环境之间相互隔离。学过计算机操作系统的同学应该在课堂上摸过 Linux 虚拟机：那能不能把程序和环境打包在一个虚拟机镜像中，服务器上直接运行这个虚拟机镜像？这个方法是可行的，但也出现了一个非常严重的问题：虚拟机镜像中也包含完整的 Linux 操作系统，每一个虚拟机都会占用大量硬件资源去执行进程管理、文件管理，导致资源浪费。&lt;/p&gt;
&lt;p&gt;Docker 也觉得虚拟机太重了，于是他们自己实现了一套虚拟系统：程序和环境（不再包含 Linux 系统内核）可以打包成 Docker image，镜像运行起来的每个实例叫做 Docker container。&lt;/p&gt;
&lt;p&gt;所以可以先用一句话概括：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Docker 是一个轻量级的容器化技术，它把应用程序及其依赖打包成镜像，并在隔离的容器中运行。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;为什么 Docker 现在广泛应用于云原生、Self-Hosted？可以想一想：只要你的电脑安装了 Docker，别人打包好的应用就可以在你的电脑上部署，你自己打包好的应用也可以在各处运行。Build once, run everywhere，确实很美好。&lt;/p&gt;</content:encoded></item></channel></rss>