<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Xiaonai</title><description>Xiaonai&apos;s blog</description><link>https://blog.xiaonai.top/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>6.8.10</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>2026年6月14日 22:47:22</lastBuildDate><item><title>关于某位神奇的女生</title><link>https://blog.xiaonai.top/posts/guanyu_shengnv/</link><guid isPermaLink="true">https://blog.xiaonai.top/posts/guanyu_shengnv/</guid><description>记录一位令人印象深刻的&quot;神奇&quot;女生在学习和团队合作中的种种表现</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;由于最近在弄周报网站，基本上没怎么关心博客。本篇内容主要讲述在&lt;a href=&quot;https://weekly.xiaonai.top/posts/1&quot; target=&quot;_blank&quot;&gt;我的周报&lt;/a&gt;上周三记录的真实故事。网站已做英文版国际化，不用担心语言问题。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;一、大数据比赛的”神奇”经历&lt;a href=&quot;#一大数据比赛的神奇经历&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1.1 初遇&lt;a href=&quot;#11-初遇&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;大数据比赛从150人中选出了4人，有幸我也在其中。最让我震惊的是，比赛队伍中居然有一个女生——毕竟我很少见到对计算机感兴趣的女生。&lt;/p&gt;&lt;p&gt;随后我们被拉去提前学习 Python、MySQL、Scala 等大数据相关知识，并且需要定时提交学习内容。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;1.2 “复制粘贴式”学习&lt;a href=&quot;#12-复制粘贴式学习&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;结果她，把教学网站上的代码直接复制粘贴了一遍交上去，声称是自己学的。当时我还没太在意，但心中不禁疑惑：如果不想学，为什么不一开始就退出呢？&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;1.3 神奇的思维模式&lt;a href=&quot;#13-神奇的思维模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;她学代码的逻辑非常奇特，可以说是一种”过拟合”行为：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;老师&lt;/strong&gt;（看见有木镐）：同学们，木镐可以挖掉石头&lt;br /&gt;
&lt;strong&gt;正常人&lt;/strong&gt;：镐子能挖掉石头&lt;br /&gt;
&lt;strong&gt;她&lt;/strong&gt;：&lt;strong&gt;只有&lt;/strong&gt;木镐能挖掉石头&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;考试时&lt;/strong&gt;：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;正常人&lt;/strong&gt;：我看看，有石镐，挖掉十个石头，好了。&lt;br /&gt;
&lt;strong&gt;她&lt;/strong&gt;：老师，没有木镐啊&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;她的思维模式带有强烈的”只有”属性，非常死板，就像机器学习中的过拟合——只认一种东西，无法举一反三。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;1.4 令人无语的提问&lt;a href=&quot;#14-令人无语的提问&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;她能问出很多让人匪夷所思的问题，例如：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;“为什么 &lt;code&gt;int(&quot;aa=55&quot;)&lt;/code&gt; 不行？“（老师明明教过，这是基础，她却不能正确理解，也不知道错在哪）&lt;/li&gt;
&lt;li&gt;“为什么虚拟机装系统装到一半强制关机后无法启动？”&lt;/li&gt;
&lt;li&gt;要求 AI 用最难的方法解决问题（主动限制 AI 能力）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;即便我向老师反映这些问题也没用，她的逻辑似乎带有一种固定缺陷——死板、健忘。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;1.5 结局&lt;a href=&quot;#15-结局&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;不出意外，她最终没能被选上。而我尽力学习搭建大数据环境，虽然效果并不理想。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;二、更逆天的后续&lt;a href=&quot;#二更逆天的后续&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;事情结束后，发生了更令人无语的事情——&lt;strong&gt;“我”被解决了&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;因为我反映了她的问题，结果给提出问题的人(也就是我)“解决”了。毕竟，解决她这种死板的学习思维可能需要两年，但把我解决只需要2分钟……&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;三、工作室的”迷惑”行为&lt;a href=&quot;#三工作室的迷惑行为&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;3.1 值班风波&lt;a href=&quot;#31-值班风波&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;工作室要求值班，她却不去。&lt;/p&gt;&lt;p&gt;有一次三人一起值班（终于轮到她了），她居然叫另外两人别去，这样她就能连续两周不用值班，让别人替她去。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.2 “手机学习”大法&lt;a href=&quot;#32-手机学习大法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;去工作室学习，她不带电脑，只带手机，声称在手机上学习。先不论她大部分时间在刷视频，就算她真的学了3小时，事后问她学了什么，她一问三不知。&lt;/p&gt;&lt;p&gt;这件事我本来不知道，因为那天我的笔记本因为输入法问题卡死，重启也修不好，叫她用电脑帮我，我才发现她不带电脑学习。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.3 队长的”副业”&lt;a href=&quot;#33-队长的副业&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;工作室分了两队带领不同的计算机比赛，她身为队长，却不来工作室和队员一起学习，反而热衷于参加各种活动：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;党支部&lt;/li&gt;
&lt;li&gt;班长组&lt;/li&gt;
&lt;li&gt;大数据社团&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;总之，除了正事，你几乎能在所有地方看到她。问她就说”在宿舍学习”，但既然宁可在宿舍学习，为何不来工作室和队员一起讨论项目？&lt;/p&gt;&lt;p&gt;据她的队员反映，她基本不和队友交流，到底学了什么，无人知晓。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.4 PPT 事件&lt;a href=&quot;#34-ppt-事件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;她声称自己没技术，只负责 PPT。我们暂且不提她用 AI 生成 PPT 需要多大功夫，结果她&lt;strong&gt;连 AI 生成 PPT 都不会&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;最离谱的是，项目快要提交时，就差她的 PPT。她居然打电话给正在游乐园玩的队友，让队友帮她做 PPT。队友为了团队荣誉，不得不中途返回学校帮忙，原本愉快的游玩泡汤了。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;四、“混奖”心理分析&lt;a href=&quot;#四混奖心理分析&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;从这些事情可以看出，她的行为模式非常清晰：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;只要她踏的船多，翻一个就翻呗，换一个&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;只要她加的比赛多，这个没拿奖就换一个继续混呗&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;总有一个比赛会遇到几个”通天代”，让她拖不下去。抱着这种心理，大数据比赛中的行为也就一目了然了——她只是在混奖，而不是在学习。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;最后的”压垮骆驼”&lt;a href=&quot;#最后的压垮骆驼&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;后来她接手大数据环境搭建任务，两个月了连三台 Linux 虚拟机集群都没搭建出来。我把所有教程都给了她，能教的都教了，但她不问不学。&lt;/p&gt;&lt;p&gt;最后几个月过去了，她居然问我”是不是还是我帮她搭建”。&lt;/p&gt;&lt;p&gt;如果这样的话，我一个人承担自己的模块，还要负责她那部分任务，她什么都不用干，只需要在一边纯看——那比赛放个花瓶上去有什么意义？&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;结语&lt;a href=&quot;#结语&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;或许在现实中，我们都遇到过类似的人。欢迎在评论区留言讨论。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>在Rocky Linux上安装Docker</title><link>https://blog.xiaonai.top/posts/install_docker/</link><guid isPermaLink="true">https://blog.xiaonai.top/posts/install_docker/</guid><description>教学如何在Rocky Linux上安装Docker</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Rocky Linux 是一个企业级的开源 Linux 发行版，由 Gregory Kurtzer 于 2021 年创立。它诞生于 CentOS 项目转向 CentOS Stream 之后，旨在成为 CentOS 的完全兼容替代品，提供与 Red Hat Enterprise Linux (RHEL) 二进制兼容的稳定服务器环境。Rocky Linux 由 Rocky Enterprise Software Foundation (RESF) 维护，采用社区驱动的方式开发，完全免费且开源，继承了 RHEL 的稳定性和可靠性，非常适合生产环境使用。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;主要是，这个相当于免费红帽，所以我一直在用这个&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;话不多说，教学开始！&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;目录&lt;a href=&quot;#目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;#1-%E5%AE%89%E8%A3%85-epel-%E4%BB%93%E5%BA%93&quot;&gt;安装 EPEL 仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-%E5%AE%89%E8%A3%85-docker-%E8%BF%90%E8%A1%8C%E6%89%80%E9%9C%80%E5%B7%A5%E5%85%B7&quot;&gt;安装 Docker 运行所需工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-%E6%B7%BB%E5%8A%A0-docker-%E5%AE%98%E6%96%B9%E4%BB%93%E5%BA%93&quot;&gt;添加 Docker 官方仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#4-%E5%AE%89%E8%A3%85-docker&quot;&gt;安装 Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5-%E5%90%AF%E5%8A%A8-docker-%E6%9C%8D%E5%8A%A1&quot;&gt;启动 Docker 服务&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#6-%E9%85%8D%E7%BD%AE-docker-%E4%BB%A3%E7%90%86&quot;&gt;配置 Docker 代理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#7-%E6%B5%8B%E8%AF%95-docker-%E9%95%9C%E5%83%8F%E6%8B%89%E5%8F%96&quot;&gt;测试 Docker 镜像拉取&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#8-%E5%88%9B%E5%BB%BA%E4%B8%8E%E7%AE%A1%E7%90%86%E5%AE%B9%E5%99%A8&quot;&gt;创建与管理容器&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#9-ubuntu-%E5%AE%B9%E5%99%A8%E5%86%85%E9%83%A8%E5%AE%89%E8%A3%85%E7%BD%91%E7%BB%9C%E5%B7%A5%E5%85%B7&quot;&gt;Ubuntu 容器内部安装网络工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#10-%E9%AA%8C%E8%AF%81-docker&quot;&gt;验证 Docker&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;1. 安装 EPEL 仓库&lt;a href=&quot;#1-安装-epel-仓库&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;dnf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;epel-release&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-y&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;2. 安装 Docker 运行所需工具&lt;a href=&quot;#2-安装-docker-运行所需工具&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;启用 CRB 仓库：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;dnf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config-manager&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--set-enabled&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;crb&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;安装 Docker 运行所需依赖：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;dnf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-y&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;yum-utils&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;device-mapper-persistent-data&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lvm2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;依赖包&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;yum-utils&lt;/code&gt;&lt;/td&gt;&lt;td&gt;提供 yum/dnf 扩展工具&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;device-mapper-persistent-data&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Docker 存储相关依赖&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;lvm2&lt;/code&gt;&lt;/td&gt;&lt;td&gt;逻辑卷管理支持&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;3. 添加 Docker 官方仓库&lt;a href=&quot;#3-添加-docker-官方仓库&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;添加 Docker CE 软件源：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;dnf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config-manager&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--add-repo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://download.docker.com/linux/centos/docker-ce.repo&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;验证仓库是否添加成功：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;dnf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;repolist&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;4. 安装 Docker&lt;a href=&quot;#4-安装-docker&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;安装 Docker CE 及相关组件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;dnf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker-ce&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker-ce-cli&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;containerd.io&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-y&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;组件&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;docker-ce&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Docker 服务端&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;docker-ce-cli&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Docker 命令行工具&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;containerd.io&lt;/code&gt;&lt;/td&gt;&lt;td&gt;容器运行时&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;5. 启动 Docker 服务&lt;a href=&quot;#5-启动-docker-服务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;启动 Docker：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;start&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;查看 Docker 运行状态：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;status&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;6. 配置 Docker 代理&lt;a href=&quot;#6-配置-docker-代理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;由于拉取 Docker Hub 镜像可能速度较慢，因此需要配置代理。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;这里只做教程，不提供代理工具&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;创建 Docker 服务配置目录：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;mkdir&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/systemd/system/docker.service.d&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;创建代理配置文件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tee&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/systemd/system/docker.service.d/proxy.conf&lt;/span&gt;&lt;span&gt; &amp;lt;&amp;lt;-&lt;/span&gt;&lt;span&gt;&apos;EOF&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[Service]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Environment=&quot;HTTP_PROXY=http://127.0.0.1:7890&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Environment=&quot;HTTPS_PROXY=http://127.0.0.1:7890&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Environment=&quot;NO_PROXY=localhost,127.0.0.1&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;EOF&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;重新加载 systemd 配置并重启 Docker：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;daemon-reexec&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;restart&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;7. 测试 Docker 镜像拉取&lt;a href=&quot;#7-测试-docker-镜像拉取&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;搜索 Ubuntu 镜像：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;search&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ubuntu&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;拉取 Ubuntu 最新版本：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pull&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ubuntu:latest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;查看本地镜像：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;images&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;输出示例：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;REPOSITORY   TAG       IMAGE ID       SIZE&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ubuntu       latest    xxxxxxxxxxxx   xxMB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;8. 创建与管理容器&lt;a href=&quot;#8-创建与管理容器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;8.1 创建容器&lt;a href=&quot;#81-创建容器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;创建第一个 Ubuntu 容器：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-it&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--name&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ubuntu1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ubuntu:latest&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;创建多个测试节点：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-it&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--name&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ubuntu2&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ubuntu:latest&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-it&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--name&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ubuntu3&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ubuntu:latest&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;参数说明：&lt;/p&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;-i&lt;/code&gt;&lt;/td&gt;&lt;td&gt;保持交互输入&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;-t&lt;/code&gt;&lt;/td&gt;&lt;td&gt;分配终端&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;--name&lt;/code&gt;&lt;/td&gt;&lt;td&gt;指定容器名称&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;bash&lt;/code&gt;&lt;/td&gt;&lt;td&gt;进入容器终端&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;8.2 管理容器&lt;a href=&quot;#82-管理容器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;查看已有容器：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ps&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;停止容器：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;stop&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;容器名&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;删除容器：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;rm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;容器名&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;启动已存在的容器：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;start&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ubuntu1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;进入已启动的容器：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;exec&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-it&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ubuntu1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;9. Ubuntu 容器内部安装网络工具&lt;a href=&quot;#9-ubuntu-容器内部安装网络工具&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;进入容器后，更新软件源并安装网络工具：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-y&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;iproute2&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;net-tools&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;安装后可使用以下命令：&lt;/p&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;命令&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ip addr&lt;/code&gt;&lt;/td&gt;&lt;td&gt;查看 IP 地址&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ifconfig&lt;/code&gt;&lt;/td&gt;&lt;td&gt;查看网络配置&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;10. 验证 Docker&lt;a href=&quot;#10-验证-docker&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;查看运行中的容器：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ps&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;查看全部容器（含已停止）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ps&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;查看 Docker 系统信息：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;info&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;至此，Docker 环境部署完成！ 🎉&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>译站 - 一款轻量好用的 AI 翻译工具</title><link>https://blog.xiaonai.top/posts/a_good_tool/</link><guid isPermaLink="true">https://blog.xiaonai.top/posts/a_good_tool/</guid><description>推荐一款开源免费的 AI 翻译应用「译站」</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;工具简介&lt;a href=&quot;#工具简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;今天给大家推荐一款轻量好用的翻译工具——&lt;strong&gt;&lt;a href=&quot;https://www.funnysaltyfish.fun/trans-new/&quot; target=&quot;_blank&quot;&gt;译站&lt;/a&gt;&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;译站是一款集合了多种 AI 翻译引擎的开源应用，体积小巧、专注翻译，支持多模型结果对比。其源代码已在 GitHub 开源，欢迎前往 &lt;a href=&quot;https://github.com/FunnySaltyFish/Transtation-KMP&quot; target=&quot;_blank&quot;&gt;Transtation-KMP 仓库&lt;/a&gt; 查看。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;本地部署腾讯 Hy-MT1.5-1.8B-1.25bit 模型&lt;a href=&quot;#本地部署腾讯-hy-mt15-18b-125bit-模型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近腾讯开源了 &lt;strong&gt;Hy-MT1.5-1.8B-1.25bit&lt;/strong&gt; 翻译模型，仅需 &lt;strong&gt;400MB+&lt;/strong&gt; 存储空间，翻译效果却非常出色。由于是本地模型，&lt;strong&gt;无需联网、完全免费&lt;/strong&gt;。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;步骤一：下载应用&lt;a href=&quot;#步骤一下载应用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;前往 &lt;a href=&quot;https://www.funnysaltyfish.fun/trans-new/&quot; target=&quot;_blank&quot;&gt;译站官网&lt;/a&gt; 下载 Android 安装包。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;步骤二：下载模型文件&lt;a href=&quot;#步骤二下载模型文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在 &lt;a href=&quot;https://www.modelscope.cn/models/AngelSlim/Hy-MT1.5-1.8B-1.25bit-GGUF/files&quot; target=&quot;_blank&quot;&gt;魔搭社区模型页面&lt;/a&gt; 下载 &lt;code&gt;Hy-MT1.5-1.8B-1.25bit.gguf&lt;/code&gt; 文件：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;要下载的模型文件&quot; loading=&quot;lazy&quot; width=&quot;1910&quot; height=&quot;915&quot; src=&quot;/_astro/yz_model_name1.ZU7DxD8D_Z3gr8L.webp&quot; srcset=&quot;/_astro/yz_model_name1.ZU7DxD8D_2mkj0E.webp 640w, /_astro/yz_model_name1.ZU7DxD8D_e0R6N.webp 750w, /_astro/yz_model_name1.ZU7DxD8D_Z1EXl70.webp 828w, /_astro/yz_model_name1.ZU7DxD8D_NdpkW.webp 1080w, /_astro/yz_model_name1.ZU7DxD8D_u3VEa.webp 1280w, /_astro/yz_model_name1.ZU7DxD8D_2v9ids.webp 1668w, /_astro/yz_model_name1.ZU7DxD8D_Z3gr8L.webp 1910w&quot; /&gt;&lt;figcaption&gt;要下载的模型文件&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;💡 &lt;strong&gt;提示&lt;/strong&gt;：下载完成后，建议将模型文件移动到易于查找的目录。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;步骤三：配置模型&lt;a href=&quot;#步骤三配置模型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;打开译站应用，点击 &lt;strong&gt;「设置引擎」&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;设置引擎&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;811&quot; src=&quot;/_astro/yz_szyq.W7YENET6_iOVG4.webp&quot; srcset=&quot;/_astro/yz_szyq.W7YENET6_ZRhW7E.webp 640w, /_astro/yz_szyq.W7YENET6_Z1PbheY.webp 750w, /_astro/yz_szyq.W7YENET6_1kwFqq.webp 828w, /_astro/yz_szyq.W7YENET6_iOVG4.webp 1080w&quot; /&gt;&lt;figcaption&gt;设置引擎&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进入 &lt;strong&gt;「模型设置」&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;模型设置&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;693&quot; src=&quot;/_astro/yz_djmxsz.BKU2KhkU_Z2vtipr.webp&quot; srcset=&quot;/_astro/yz_djmxsz.BKU2KhkU_Z1z7B4B.webp 640w, /_astro/yz_djmxsz.BKU2KhkU_2jt8lp.webp 750w, /_astro/yz_djmxsz.BKU2KhkU_1mjYlz.webp 828w, /_astro/yz_djmxsz.BKU2KhkU_Z2vtipr.webp 1080w&quot; /&gt;&lt;figcaption&gt;模型设置&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击右上角 &lt;strong&gt;「+」&lt;/strong&gt; 添加本地模型&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;点击加号&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1468&quot; src=&quot;/_astro/yz_djjh.BM-cVeCW_Z1rzGuG.webp&quot; srcset=&quot;/_astro/yz_djjh.BM-cVeCW_Z1kzyx5.webp 640w, /_astro/yz_djjh.BM-cVeCW_OWCA.webp 750w, /_astro/yz_djjh.BM-cVeCW_Z1rkIXz.webp 828w, /_astro/yz_djjh.BM-cVeCW_Z1rzGuG.webp 1080w&quot; /&gt;&lt;figcaption&gt;点击加号&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在文件选择器中找到并选中下载的 &lt;code&gt;.gguf&lt;/code&gt; 模型文件&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;选择文件&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1298&quot; src=&quot;/_astro/yz_zhyb.DPByq3eZ_Z2kRH3z.webp&quot; srcset=&quot;/_astro/yz_zhyb.DPByq3eZ_1JtTb8.webp 640w, /_astro/yz_zhyb.DPByq3eZ_1H89Ik.webp 750w, /_astro/yz_zhyb.DPByq3eZ_Z1RRvKm.webp 828w, /_astro/yz_zhyb.DPByq3eZ_Z2kRH3z.webp 1080w&quot; /&gt;&lt;figcaption&gt;选择文件&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;确认并&lt;strong&gt;启用该模型&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;blockquote&gt;&lt;p&gt;✅ &lt;strong&gt;更新提示&lt;/strong&gt;：新版本已支持在「模型管理」界面直接下载 &lt;code&gt;Hy-MT1.5-1.8B-1.25bit&lt;/code&gt; 模型。如需使用其他 GGUF 格式模型，仍可按上述步骤手动加载。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;效果展示&lt;a href=&quot;#效果展示&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;输入测试文本：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;We are attempting to survive our time so we may live into yours&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;翻译结果：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;翻译结果&quot; loading=&quot;lazy&quot; width=&quot;870&quot; height=&quot;1620&quot; src=&quot;/_astro/yz_fyjg.Ba8tfJW1_1BSHpY.webp&quot; srcset=&quot;/_astro/yz_fyjg.Ba8tfJW1_7tkGt.webp 640w, /_astro/yz_fyjg.Ba8tfJW1_1pqcRt.webp 750w, /_astro/yz_fyjg.Ba8tfJW1_ZEtGAF.webp 828w, /_astro/yz_fyjg.Ba8tfJW1_1BSHpY.webp 870w&quot; /&gt;&lt;figcaption&gt;翻译结果&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;译站让高质量的本地 AI 翻译变得简单可及，推荐有翻译需求的朋友尝试！&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>初次认识MongoDB</title><link>https://blog.xiaonai.top/posts/learning_mongodb/</link><guid isPermaLink="true">https://blog.xiaonai.top/posts/learning_mongodb/</guid><description>学习MongoDB的基本概念和操作</description><pubDate>Sun, 26 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;🚀 为什么要学习 MongoDB？&lt;a href=&quot;#-为什么要学习-mongodb&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;自了解了MySQL之后，知道了关系型数据库和非关系型数据库，由于近几天知道了MongoDB，也是非关系型数据库，所以想了解学习一下。其实也因为老师说后面会教非关系型数据库，最近不教，还在学MySQL，所以打算自学了解一下&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;第一步：下载与安装&lt;a href=&quot;#第一步下载与安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;首先，我们需要下载 MongoDB 的安装包：&lt;/p&gt;&lt;p&gt;📥 &lt;a href=&quot;https://www.mongodb.com/try/download/community&quot; target=&quot;_blank&quot;&gt;MongoDB Community 下载地址&lt;/a&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;小提醒&lt;a href=&quot;#小提醒&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;选择与你的操作系统匹配的版本&lt;/li&gt;
&lt;li&gt;安装过程中记得勾选 &lt;strong&gt;MongoDB Compass&lt;/strong&gt;（图形化管理工具）&lt;/li&gt;
&lt;li&gt;安装完成后，MongoDB 服务会自动启动&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;安装完成后，启动 &lt;strong&gt;MongoDB Compass&lt;/strong&gt;，连接到本地的 MongoDB 数据库。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;Compass 连接 MongoDB&quot; loading=&quot;lazy&quot; width=&quot;1185&quot; height=&quot;648&quot; src=&quot;/_astro/mg1.VRTU5r_4_1BRz6X.webp&quot; srcset=&quot;/_astro/mg1.VRTU5r_4_2qqUNn.webp 640w, /_astro/mg1.VRTU5r_4_Z1NE9rP.webp 750w, /_astro/mg1.VRTU5r_4_2muAhH.webp 828w, /_astro/mg1.VRTU5r_4_ZsQmWO.webp 1080w, /_astro/mg1.VRTU5r_4_1BRz6X.webp 1185w&quot; /&gt;&lt;figcaption&gt;Compass 连接 MongoDB&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;💡 &lt;strong&gt;小技巧&lt;/strong&gt;：如果连接失败，检查一下 MongoDB 服务是否正在运行哦！&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;第二步：创建数据库&lt;a href=&quot;#第二步创建数据库&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;连接成功后，界面如下图所示。点击按钮开始创建新数据库：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;Compass 创建数据库&quot; loading=&quot;lazy&quot; width=&quot;1767&quot; height=&quot;880&quot; src=&quot;/_astro/mg2.D_52K20T_1MBrmV.webp&quot; srcset=&quot;/_astro/mg2.D_52K20T_Z2aH96A.webp 640w, /_astro/mg2.D_52K20T_ZaRcOw.webp 750w, /_astro/mg2.D_52K20T_1nLV3h.webp 828w, /_astro/mg2.D_52K20T_bhfFa.webp 1080w, /_astro/mg2.D_52K20T_hlu0g.webp 1280w, /_astro/mg2.D_52K20T_Z2mcS8c.webp 1668w, /_astro/mg2.D_52K20T_1MBrmV.webp 1767w&quot; /&gt;&lt;figcaption&gt;Compass 创建数据库&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;在弹出的对话框中填写：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Database Name&lt;/strong&gt;：输入数据库名称，例如 &lt;code&gt;test1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collection Name&lt;/strong&gt;：输入集合名称，例如 &lt;code&gt;user&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;Compass 创建集合&quot; loading=&quot;lazy&quot; width=&quot;733&quot; height=&quot;571&quot; src=&quot;/_astro/mg3.BXhUZJjK_ZKMFiH.webp&quot; srcset=&quot;/_astro/mg3.BXhUZJjK_Z2c0Jdq.webp 640w, /_astro/mg3.BXhUZJjK_ZKMFiH.webp 733w&quot; /&gt;&lt;figcaption&gt;Compass 创建集合&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;概念小课堂&lt;a href=&quot;#概念小课堂&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;数据库（Database）&lt;/strong&gt;：相当于一个容器，用来存放多个集合&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;集合（Collection）&lt;/strong&gt;：相当于MySQL中的&lt;code&gt;表&lt;/code&gt;，用来存放文档&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文档（Document）&lt;/strong&gt;：相当于MySQL中的&lt;code&gt;行&lt;/code&gt;当然理解成&lt;code&gt;值&lt;/code&gt;也行&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;第三步：插入数据&lt;a href=&quot;#第三步插入数据&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;创建完成后，点击 &lt;strong&gt;“Insert Document”&lt;/strong&gt; 按钮，开始插入单条数据：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;Compass 插入数据&quot; loading=&quot;lazy&quot; width=&quot;1771&quot; height=&quot;941&quot; src=&quot;/_astro/mg4.VyM5HUuT_Z24IS0u.webp&quot; srcset=&quot;/_astro/mg4.VyM5HUuT_1Y7BeU.webp 640w, /_astro/mg4.VyM5HUuT_1v3vG7.webp 750w, /_astro/mg4.VyM5HUuT_1txQhk.webp 828w, /_astro/mg4.VyM5HUuT_1I0I6a.webp 1080w, /_astro/mg4.VyM5HUuT_YYliQ.webp 1280w, /_astro/mg4.VyM5HUuT_1CweGS.webp 1668w, /_astro/mg4.VyM5HUuT_Z24IS0u.webp 1771w&quot; /&gt;&lt;figcaption&gt;Compass 插入数据&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;数据示例&lt;a href=&quot;#数据示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在 JSON 编辑器中输入如下内容：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;Compass 插入示例&quot; loading=&quot;lazy&quot; width=&quot;734&quot; height=&quot;640&quot; src=&quot;/_astro/mg5.RmQnLLIf_1DEYkJ.webp&quot; srcset=&quot;/_astro/mg5.RmQnLLIf_4vnpG.webp 640w, /_astro/mg5.RmQnLLIf_1DEYkJ.webp 734w&quot; /&gt;&lt;figcaption&gt;Compass 插入示例&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;张三&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;age&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;email&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;zhangsan@example.com&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;hobbies&quot;&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;&quot;篮球&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;游泳&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;编程&quot;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;address&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;city&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;北京&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;district&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;朝阳区&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;⚠️ &lt;strong&gt;警告&lt;/strong&gt;：如上图所示，把文本粘贴到正确的位置的时候，记得干掉上边例子两边最边缘的&lt;code&gt;{}&lt;/code&gt;干掉，否则会报错。因为正确写值的地方在下面一点，总之不会的话，参考上面的图即可。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;最后，点击 &lt;strong&gt;“Insert”&lt;/strong&gt; 按钮完成插入：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;Compass 最终结果&quot; loading=&quot;lazy&quot; width=&quot;1335&quot; height=&quot;685&quot; src=&quot;/_astro/mg6.DiMW4aoN_1JX1s0.webp&quot; srcset=&quot;/_astro/mg6.DiMW4aoN_Z1lDGbu.webp 640w, /_astro/mg6.DiMW4aoN_UVbHQ.webp 750w, /_astro/mg6.DiMW4aoN_Z2hPQA0.webp 828w, /_astro/mg6.DiMW4aoN_ZC2S1R.webp 1080w, /_astro/mg6.DiMW4aoN_2g7tJH.webp 1280w, /_astro/mg6.DiMW4aoN_1JX1s0.webp 1335w&quot; /&gt;&lt;figcaption&gt;Compass 最终结果&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;数据结构特点&lt;a href=&quot;#数据结构特点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;嵌套结构&lt;/strong&gt;：可以直接存储嵌套的 JSON 对象&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数组支持&lt;/strong&gt;：可以直接存储数组类型的数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;动态字段&lt;/strong&gt;：同一集合中的文档可以有不同的字段&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;✅ 后面的学习打算&lt;a href=&quot;#-后面的学习打算&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt; 会持续性的学习MongoDB，了解更多的功能和场景。&lt;/li&gt;
&lt;li&gt; 分享更多心得&lt;/li&gt;
&lt;li&gt; 学好C/C++&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt;如果你在操作过程中遇到任何问题，或者有任何疑问，欢迎在评论区留言交流。祝你学习愉快！&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>编译FTXUI库</title><link>https://blog.xiaonai.top/posts/bian_yi_lib/</link><guid isPermaLink="true">https://blog.xiaonai.top/posts/bian_yi_lib/</guid><description>教学如何在Windows中编译FTXUI库</description><pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;最近发现了一个很有意思的 C++ 库——&lt;a href=&quot;https://github.com/ArthurSonzogni/FTXUI&quot; target=&quot;_blank&quot;&gt;FTXUI&lt;/a&gt;，它能让控制台程序变得不再单调，可以做出漂亮的 TUI（终端用户界面）。&lt;/p&gt;
&lt;p&gt;折腾了一整天终于成功编译，踩了不少坑，记录一下完整过程，希望能帮到有需要的人。&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;环境准备&lt;a href=&quot;#环境准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在开始之前，请确保你的电脑已经安装了以下工具：&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;工具&lt;/th&gt;&lt;th&gt;版本要求&lt;/th&gt;&lt;th&gt;下载链接&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Windows 系统&lt;/td&gt;&lt;td&gt;任意版本&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Visual Studio&lt;/td&gt;&lt;td&gt;2019 / 2022 / 2026&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://visualstudio.microsoft.com/&quot; target=&quot;_blank&quot;&gt;官网下载&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Git&lt;/td&gt;&lt;td&gt;最新版&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://git-scm.com/install/&quot; target=&quot;_blank&quot;&gt;官网下载&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;一个正常的脑子&lt;/td&gt;&lt;td&gt;必备&lt;/td&gt;&lt;td&gt;自备&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;blockquote&gt;&lt;p&gt;💡 我使用的是 VS2026，但 VS2019 或 VS2022 也完全适用，步骤是一样的。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;拉取项目源码&lt;a href=&quot;#拉取项目源码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;首先，我们需要从 GitHub 拉取 FTXUI 的源代码。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;⚠️ 重要提示：一定要拉取指定版本的分支，不要拉 main 分支！&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;main 分支是开发分支，直接用cmake编译会报些奇奇怪怪的错误。(别问我咋知道的，问就是一天)&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;clone&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--branch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;v6.1.9&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://github.com/ArthurSonzogni/FTXUI.git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;创建编译目录&lt;a href=&quot;#创建编译目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;进入项目目录，并创建用于存放编译结果的文件夹：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;FTXUI&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 创建 64 位编译目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mkdir&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;build_x64&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 创建 32 位编译目录（可选）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mkdir&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;build_x32&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;打开 VS 开发者命令行&lt;a href=&quot;#打开-vs-开发者命令行&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这是关键步骤！&lt;strong&gt;不要用普通的 CMD 或 PowerShell&lt;/strong&gt;。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;按 &lt;code&gt;Win + S&lt;/code&gt; 打开 Windows 搜索&lt;/li&gt;
&lt;li&gt;搜索 &lt;strong&gt;“x64 Native Tools Command Prompt for VS”&lt;/strong&gt;（编译 64 位）&lt;/li&gt;
&lt;li&gt;或搜索 &lt;strong&gt;“x86 Native Tools Command Prompt for VS”&lt;/strong&gt;（编译 32 位）&lt;/li&gt;
&lt;li&gt;右键选择 &lt;strong&gt;“以管理员身份运行”&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;开始编译&lt;a href=&quot;#开始编译&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;编译 64 位版本&lt;a href=&quot;#编译-64-位版本&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在打开的 VS 开发者命令行中执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 进入 64 位编译目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;your_path&lt;/span&gt;&lt;span&gt;\F&lt;/span&gt;&lt;span&gt;TXUI&lt;/span&gt;&lt;span&gt;\b&lt;/span&gt;&lt;span&gt;uild_x64&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 生成项目文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;..&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-A&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;x64&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 编译 Debug 版本&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--build&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Debug&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 编译 Release 版本&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--build&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Release&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;编译 32 位版本&lt;a href=&quot;#编译-32-位版本&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;如果需要 32 位版本，打开 &lt;strong&gt;x86 Native Tools Command Prompt&lt;/strong&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 进入 32 位编译目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;your_path&lt;/span&gt;&lt;span&gt;\F&lt;/span&gt;&lt;span&gt;TXUI&lt;/span&gt;&lt;span&gt;\b&lt;/span&gt;&lt;span&gt;uild_x32&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 生成项目文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;..&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-A&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Win32&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 编译 Debug 版本&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--build&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Debug&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 编译 Release 版本&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--build&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Release&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;获取编译结果&lt;a href=&quot;#获取编译结果&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;编译完成后，你可以在以下目录找到生成的库文件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;FTXUI/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── build_x64/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── Debug/          # Debug 版本的库文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── Release/        # Release 版本的库文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;└── build_x32/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;├── Debug/          # Debug 版本的库文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;└── Release/        # Release 版本的库文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;在你的项目中使用&lt;a href=&quot;#在你的项目中使用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;编译完成后，在你的 C++ 项目中使用 FTXUI：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;包含头文件&lt;/strong&gt;：将 FTXUI 的 &lt;code&gt;include&lt;/code&gt; 目录添加到你的项目包含路径&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接库文件&lt;/strong&gt;：将编译好的 &lt;code&gt;.lib&lt;/code&gt; 文件添加到链接器输入中&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;复制 DLL&lt;/strong&gt;：如果使用动态库，将 &lt;code&gt;.dll&lt;/code&gt; 文件放到可执行文件同级目录&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;常见问题&lt;a href=&quot;#常见问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Q: 提示 “cmake 不是内部或外部命令”？&lt;/strong&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;A: 确保你打开的是 &lt;strong&gt;VS 开发者命令行&lt;/strong&gt;，不是普通 CMD。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;Q: 编译报错，提示找不到某些头文件？&lt;/strong&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;A: 检查是否拉取的不是 main 分支。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;Q: 编译成功但运行时报错？&lt;/strong&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;A: 检查 Debug/Release 版本是否匹配，以及运行时库设置是否一致。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;FTXUI 是一个非常棒的 TUI 库，虽然编译过程有点折腾，但效果真的很棒的诶。如果你也想让控制台程序变得高大上，强烈推荐试试&lt;/p&gt;&lt;p&gt;有任何问题欢迎在评论区留言交流&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>开启评论系统</title><link>https://blog.xiaonai.top/posts/pinglun/</link><guid isPermaLink="true">https://blog.xiaonai.top/posts/pinglun/</guid><description>为博客添加 Twikoo 评论系统，实现读者互动功能</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;为什么要开启评论系统？&lt;a href=&quot;#为什么要开启评论系统&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;博客不仅是个人记录和分享的平台，也是与读者交流的桥梁。开启评论系统可以：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;与读者建立互动，了解大家的想法和反馈&lt;/li&gt;
&lt;li&gt;收集建议和意见，不断改进博客内容&lt;/li&gt;
&lt;li&gt;形成良好的社区氛围，让博客更有生命力&lt;/li&gt;
&lt;li&gt;记录下每一次有价值的讨论&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;部署过程&lt;a href=&quot;#部署过程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;部署 Twikoo 的过程大致如下：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;申请 MongoDB Atlas 账号&lt;/strong&gt;：创建免费集群，获取数据库连接字符串&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fork Twikoo Netlify 仓库&lt;/strong&gt;：在 GitHub 上 fork &lt;code&gt;twikoojs/twikoo-netlify&lt;/code&gt; 项目&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;部署到 Netlify&lt;/strong&gt;：导入项目，添加环境变量（MONGODB_URI）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;配置博客&lt;/strong&gt;：在 &lt;code&gt;commentConfig.ts&lt;/code&gt; 中设置 Twikoo 相关参数&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;详细的部署文档可以参考：&lt;a href=&quot;https://twikoo.js.org/backend.html#netlify-%E9%83%A8%E7%BD%B2&quot; target=&quot;_blank&quot;&gt;Twikoo 官方文档 - Netlify 部署&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;使用方法&lt;a href=&quot;#使用方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;现在你可以在每篇文章下方看到评论区，使用方法很简单：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;在评论框中输入你的想法或问题&lt;/li&gt;
&lt;li&gt;填写昵称和邮箱（邮箱不会公开）&lt;/li&gt;
&lt;li&gt;点击发布按钮，即可完成评论&lt;/li&gt;
&lt;li&gt;你也可以对其他评论进行回复或点赞&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;期待你的反馈&lt;a href=&quot;#期待你的反馈&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;评论系统已经正式启用，我非常期待听到你的声音：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;对博客内容有什么建议&lt;/li&gt;
&lt;li&gt;有什么技术问题想讨论&lt;/li&gt;
&lt;li&gt;或者只是打个招呼，交个朋友&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;无论是什么，都欢迎在评论区留言。你的每一条评论都是对我最大的鼓励和支持&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>第一篇博客文章</title><link>https://blog.xiaonai.top/posts/my-first-blog/</link><guid isPermaLink="true">https://blog.xiaonai.top/posts/my-first-blog/</guid><description>我的第一篇博客文章，跟大家打个招呼，记录下博客搭建的过程和心得</description><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;你好呀&lt;a href=&quot;#你好呀&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;欢迎来到我的博客，这是我的第一篇博客文章，终于把属于自己的博客搭建好了（虽然挺麻烦的）&lt;/p&gt;&lt;section&gt;&lt;h3&gt;为什么想建博客&lt;a href=&quot;#为什么想建博客&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;其实想做个人博客很久了，主要有这些原因：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;想有一个地方记录自己的学习和生活&lt;/li&gt;
&lt;li&gt;分享一些技术心得和踩过的坑&lt;/li&gt;
&lt;li&gt;认识更多志同道合的朋友&lt;/li&gt;
&lt;li&gt;折腾有意思的新东西&lt;/li&gt;
&lt;li&gt;看见别人搭建过个人博客，想自己也试一试&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;未来计划&lt;a href=&quot;#未来计划&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这里以后会更新这些内容：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;技术学习笔记和教程&lt;/li&gt;
&lt;li&gt;生活日常和感悟&lt;/li&gt;
&lt;li&gt;一些有意思的项目分享&lt;/li&gt;
&lt;/ol&gt;&lt;blockquote&gt;&lt;p&gt;悟已往之不谏，知来者之可追。
过去的已经无法挽回，未来的还可以努力追求。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;试一下 Markdown 功能&lt;a href=&quot;#试一下-markdown-功能&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;代码块&lt;a href=&quot;#代码块&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 打个招呼&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;std::cout &lt;/span&gt;&lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;欢迎来到我的博客！&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span&gt; std::endl;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;表格(列出我的打算)&lt;a href=&quot;#表格列出我的打算&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;项目&lt;/th&gt;&lt;th&gt;进度&lt;/th&gt;&lt;th&gt;备注&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;博客搭建&lt;/td&gt;&lt;td&gt;✅ 完成&lt;/td&gt;&lt;td&gt;Firefly主题真好看&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;文章更新&lt;/td&gt;&lt;td&gt;⏳ 进行中&lt;/td&gt;&lt;td&gt;努力产出中…&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;功能优化&lt;/td&gt;&lt;td&gt;📝 规划中&lt;/td&gt;&lt;td&gt;慢慢折腾&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;💬 最后&lt;a href=&quot;#-最后&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;希望以后能坚持更新，在这里留下自己成长的足迹。如果你也喜欢我的内容，欢迎常来逛逛。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;em&gt;本文写于 2026年4月3日，一个普通但有纪念意义的日子&lt;/em&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item></channel></rss>