<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tau&apos;s Blog</title>
    <link>/</link>
    <description>人生天地间，忽如远行客</description>
    <atom:link href="/rss.xml" rel="self" type="application/rss+xml" />
    <lastBuildDate>Tue, 02 Jun 2026 00:47:33 GMT</lastBuildDate>
    <item>
      <title>CSS Scroll Snap</title>
      <link>/articles/83.html</link>
      <guid isPermaLink="false">article:83</guid>
      <description>当我们滚动页面时，滚动可以停在任意位置。但有些场景下这并不理想：轮播图中，我们不希望卡片一半露在视口里、一半藏在外面；落地页中，我们希望用户一屏一屏地浏览。 以往实现这种「滚动到指定位置」的效果，通常需要用 JavaScript 监听 sc...</description>
      <pubDate>Sun, 31 May 2026 06:32:16 GMT</pubDate>
    </item>
    <item>
      <title>overscroll-behavior 用来控制当滚动到边界之后，滚动链的穿透行...</title>
      <link>/cards/749.html</link>
      <guid isPermaLink="false">card:749</guid>
      <description>overscroll-behavior 用来控制当滚动到边界之后，滚动链的穿透行为和回弹效果。 一个很典型的场景，我们打开了一个弹窗，在弹窗里面滚动，当滚动到底部时，继续滚动会导致弹窗底部的页面内容发生了滚动，以往情况我们要解决这个问题会使...</description>
      <category>CSS/overscroll-behavior</category>
      <pubDate>Tue, 02 Jun 2026 00:23:44 GMT</pubDate>
    </item>
    <item>
      <title>当给一个已有 transform 的元素添加关键帧动画时，动画值会直接覆盖原有样...</title>
      <link>/cards/748.html</link>
      <guid isPermaLink="false">card:748</guid>
      <description>当给一个已有 transform 的元素添加关键帧动画时，动画值会直接覆盖原有样式，原本设置好的位移、旋转等效果在动画运行期间全部丢失。如果希望动画值能在已有样式的基础上叠加而不是替换，就需要用到 animation-composition...</description>
      <category>CSS/动画/animation-composition</category>
      <pubDate>Mon, 01 Jun 2026 15:04:50 GMT</pubDate>
    </item>
    <item>
      <title>在 CSS 中，如果想让元素的某些部分呈现不同程度的透明， opacity 是做...</title>
      <link>/cards/747.html</link>
      <guid isPermaLink="false">card:747</guid>
      <description>在 CSS 中，如果想让元素的某些部分呈现不同程度的透明， opacity 是做不到的，它只能对整个元素统一设置透明度。 mask 就是为了解决这个问题，它可以根据参考图像的亮度或透明度，给元素的不同区域施加不同的透明效果。 mask 的属...</description>
      <category>CSS/mask</category>
      <category>概念对比</category>
      <pubDate>Mon, 01 Jun 2026 10:19:03 GMT</pubDate>
    </item>
    <item>
      <title>基于 SVG 无限画板的拖拽和缩放实现</title>
      <link>/articles/48.html</link>
      <guid isPermaLink="false">article:48</guid>
      <description>SVG 可以看作是一个无限大小的画布，而 viewBox 属性就是决定将画布中的哪一部分展示出来， viewBox 指定的这个范围称之为视口。 viewBox 通过四个属性来定义视口： 左上角坐标 (minX， minY) 视口大小 (wi...</description>
      <pubDate>Mon, 23 Sep 2024 14:28:36 GMT</pubDate>
    </item>
    <item>
      <title>0.47.0</title>
      <link>/docs/document/14/862.html</link>
      <guid isPermaLink="false">doc:862</guid>
      <description>feat: Electron 版本升级到最近稳定版</description>
      <pubDate>Sun, 31 May 2026 03:52:09 GMT</pubDate>
    </item>
    <item>
      <title>当我们想在按钮的四个角实现特殊形状时，比如内凹的圆弧、斜切的直角，会发现 bor...</title>
      <link>/cards/743.html</link>
      <guid isPermaLink="false">card:743</guid>
      <description>当我们想在按钮的四个角实现特殊形状时，比如内凹的圆弧、斜切的直角，会发现 border-radius 只能画出向外凸的圆角。传统做法是用 clip-path 、伪元素或 SVG mask，但这些方案都有个共同问题：它们只是视觉裁剪，不会影响...</description>
      <category>CSS/corner-shape</category>
      <category>CSS/函数/superellipse</category>
      <pubDate>Sun, 31 May 2026 00:11:27 GMT</pubDate>
    </item>
    <item>
      <title>0.46.2</title>
      <link>/docs/document/14/860.html</link>
      <guid isPermaLink="false">doc:860</guid>
      <description>feat: 添加了小组件侧边栏 feat: 点击修改意见时自动滚动并且自动聚焦 feat: AI 生图支持多选参考 feat: 复制微信公众号尾部链接样式优化以及内边距优化 fix: 修复 ask-question 工具调用无限渲染问题 f...</description>
      <pubDate>Thu, 28 May 2026 06:13:05 GMT</pubDate>
    </item>
    <item>
      <title>CSS Anchor Positioning</title>
      <link>/articles/82.html</link>
      <guid isPermaLink="false">article:82</guid>
      <description>页面上总有一些元素需要&quot;跟着&quot;另一个元素出现，tooltip 跟着按钮、下拉菜单跟着触发器、弹出卡片跟着列表项。这类需求看起来简单，实现起来却很繁琐。 过去我们只能依赖 JavaScript 来完成这件事：先用 getBoundingCli...</description>
      <pubDate>Sat, 30 May 2026 07:54:56 GMT</pubDate>
    </item>
    <item>
      <title>不同步的 attribute 和 property</title>
      <link>/articles/81.html</link>
      <guid isPermaLink="false">article:81</guid>
      <description>在前端开发中，你是否遇到过这样的困惑：为什么通过 value 属性设置的值，用 getAttribute 却读不到？ const input = document.querySelector(&apos;input&apos;); input.value = ...</description>
      <pubDate>Fri, 29 May 2026 07:24:36 GMT</pubDate>
    </item>
    <item>
      <title>页面中经常会遇到需要折叠/展开内容的场景，比如 FAQ 列表、配置面板、长文摘要...</title>
      <link>/cards/742.html</link>
      <guid isPermaLink="false">card:742</guid>
      <description>页面中经常会遇到需要折叠/展开内容的场景，比如 FAQ 列表、配置面板、长文摘要等，过去通常需要借助 JavaScript 来实现这类交互。实际上 HTML 原生提供了 details 元素来解决这个问题，它是一个可折叠的小部件，常配合 s...</description>
      <category>HTML/details</category>
      <pubDate>Thu, 28 May 2026 10:47:15 GMT</pubDate>
    </item>
    <item>
      <title>&lt;img&gt; 、 &lt;figure&gt; 和 &lt;picture&gt; 是三个含义相近的 HT...</title>
      <link>/cards/741.html</link>
      <guid isPermaLink="false">card:741</guid>
      <description>&lt;img&gt; 、 &lt;figure&gt; 和 &lt;picture&gt; 是三个含义相近的 HTML 标签，从字面意思上看，三者似乎都和图片有关，所以有必要区分一下它们各自的职责和适用场景。 &lt;img&gt; 是最基础的图片标签，职责很单纯，就是显示一张图片： ...</description>
      <category>HTML</category>
      <category>概念对比</category>
      <pubDate>Thu, 28 May 2026 01:21:27 GMT</pubDate>
    </item>
    <item>
      <title>0.46.1</title>
      <link>/docs/document/14/859.html</link>
      <guid isPermaLink="false">doc:859</guid>
      <description>feat: 支持音频笔记，音频源支持本地文件，url 地址，小宇宙链接，B 站和 Youtube 视频 feat: 手写风格 PPT 风格优化 feat: 微信读书数据使用 skill 中暴露的官方接口获取 fix: 搜索预热修复 fix:...</description>
      <pubDate>Thu, 14 May 2026 08:54:28 GMT</pubDate>
    </item>
    <item>
      <title>突然意识到，AI 带来的高效率就是时间，最近我写需求，正常情况要写三四天，但是老...</title>
      <link>/cards/740.html</link>
      <guid isPermaLink="false">card:740</guid>
      <description>突然意识到，AI 带来的高效率就是时间，最近我写需求，正常情况要写三四天，但是老板愿意给我花 AI 的钱来加快进度，把时间压缩到了一天。这就是钱换时间的写照，企业花钱换到了时间，花钱买时间，这在之前是不可能的，但是 AI 把它变成了现实，一...</description>
      <category>AI</category>
      <category>随笔</category>
      <pubDate>Wed, 27 May 2026 13:53:17 GMT</pubDate>
    </item>
    <item>
      <title>URLPattern 使用介绍</title>
      <link>/articles/80.html</link>
      <guid isPermaLink="false">article:80</guid>
      <description>在前端开发中，URL 匹配是一个极其常见的需求。无论是前端路由（React Router、Vue Router）、Service Worker 中的请求拦截，还是服务端框架的路由分发，我们都需要判断一个 URL 是否符合某种模式，并从中提取...</description>
      <pubDate>Tue, 26 May 2026 14:48:31 GMT</pubDate>
    </item>
    <item>
      <title>在网页排版中，当我们使用浮动让文字环绕图片或元素时，文字总是沿着一个矩形的边界进...</title>
      <link>/cards/739.html</link>
      <guid isPermaLink="false">card:739</guid>
      <description>在网页排版中，当我们使用浮动让文字环绕图片或元素时，文字总是沿着一个矩形的边界进行排列。即便元素本身是圆形头像或者不规则的图形，周围的文字依然呆板地贴着方方正正的盒子流动。 shape-outside 就是为了解决这个问题而生的，它允许我们...</description>
      <category>CSS/浮动</category>
      <category>CSS/shape-outside</category>
      <pubDate>Mon, 25 May 2026 00:18:11 GMT</pubDate>
    </item>
    <item>
      <title>我们通常用 --foo: value 的方式声明 CSS 自定义属性，这种方式简...</title>
      <link>/cards/738.html</link>
      <guid isPermaLink="false">card:738</guid>
      <description>我们通常用 --foo: value 的方式声明 CSS 自定义属性，这种方式简单直接，但浏览器只会将其视为一段没有类型信息的文本。当我们尝试对这样的变量做动画时，浏览器因为不知道它是颜色、长度还是其他类型，只能在两个值之间做突变，无法产生...</description>
      <category>CSS/at-rule/@property</category>
      <pubDate>Fri, 22 May 2026 08:11:58 GMT</pubDate>
    </item>
    <item>
      <title>animation-play-state 用于控制 CSS 动画的播放状态，它只...</title>
      <link>/cards/737.html</link>
      <guid isPermaLink="false">card:737</guid>
      <description>animation-play-state 用于控制 CSS 动画的播放状态，它只接受两个值： animation-play-state: running | paused; 其中 running 是默认值，表示动画正常播放； paused ...</description>
      <category>CSS/动画</category>
      <pubDate>Fri, 22 May 2026 01:06:10 GMT</pubDate>
    </item>
    <item>
      <title>当需要在 CSS 中将多张背景图按比例混合叠加，或者实现图片之间的平滑过渡动画时...</title>
      <link>/cards/736.html</link>
      <guid isPermaLink="false">card:736</guid>
      <description>当需要在 CSS 中将多张背景图按比例混合叠加，或者实现图片之间的平滑过渡动画时， cross-fade() 函数可以派上用场。它将两张或多张图像按照指定的透明度比例融合在一起，生成一张新的合成图像，结果是一个 &lt;image&gt; 类型的值，因...</description>
      <category>CSS/函数/cross-fade</category>
      <pubDate>Fri, 22 May 2026 00:05:23 GMT</pubDate>
    </item>
    <item>
      <title>如今大家对 token 的需求让我想到一个经济学中的概念， 产能周期 。 根据产...</title>
      <link>/cards/735.html</link>
      <guid isPermaLink="false">card:735</guid>
      <description>如今大家对 token 的需求让我想到一个经济学中的概念， 产能周期 。 根据产能周期划分的四个阶段，我认为产能周期目前处在复苏阶段，用户的需求大于产能的供给，所以下一步企业应该会大力的扩大产能，建更多的数据中心以提供更多的算力。 之所以产...</description>
      <category>经济/产能周期</category>
      <category>随笔</category>
      <pubDate>Thu, 21 May 2026 10:29:17 GMT</pubDate>
    </item>
    <item>
      <title>日本经济「失去的二十年」乃至三十年，是许多人耳熟能详的故事。但追溯这场长期停滞的...</title>
      <link>/cards/734.html</link>
      <guid isPermaLink="false">card:734</guid>
      <description>日本经济「失去的二十年」乃至三十年，是许多人耳熟能详的故事。但追溯这场长期停滞的源头，往往会指向 1985 年的一纸协议。当年 9 月 22 日，美国、日本、联邦德国、法国和英国（G5）财政部长及央行行长在纽约广场饭店签署了一项国际货币协议...</description>
      <category>经济/广场协议</category>
      <pubDate>Thu, 21 May 2026 01:19:38 GMT</pubDate>
    </item>
    <item>
      <title>Web 应用有时需要知道用户是否还在电脑前。在线协作工具想在用户离开时将状态切换...</title>
      <link>/cards/733.html</link>
      <guid isPermaLink="false">card:733</guid>
      <description>Web 应用有时需要知道用户是否还在电脑前。在线协作工具想在用户离开时将状态切换为&quot;离开&quot;，游戏想把长时间不操作的玩家踢出房间释放资源，银行页面想在无人操作时自动锁定以保障安全，前端也希望在用户空闲时减少动画和轮询来降低性能开销，甚至可以配...</description>
      <category>浏览器/IdleDetector</category>
      <category>JavaScript</category>
      <pubDate>Wed, 20 May 2026 12:15:44 GMT</pubDate>
    </item>
    <item>
      <title>srcset 是 &lt;img&gt; 元素上用于响应式图片加载的属性。 目前存在很多种设...</title>
      <link>/cards/732.html</link>
      <guid isPermaLink="false">card:732</guid>
      <description>srcset 是 &lt;img&gt; 元素上用于响应式图片加载的属性。 目前存在很多种设备，PC、移动端，不同设备之间的分辨率和屏幕尺寸也各不相同。如果所有场景都使用同一张图片，可能会造成带宽浪费和加载速度下降，比如在低分辨率设备上加载高清大图，或...</description>
      <category>HTML/srcset</category>
      <pubDate>Wed, 20 May 2026 00:23:12 GMT</pubDate>
    </item>
    <item>
      <title>央行要调控宏观经济，核心手段之一就是控制基础货币的投放量。再贷款和再贴现是央行较...</title>
      <link>/cards/731.html</link>
      <guid isPermaLink="false">card:731</guid>
      <description>央行要调控宏观经济，核心手段之一就是控制基础货币的投放量。再贷款和再贴现是央行较早使用的两个货币政策工具，它们的共同点是央行直接向商业银行提供资金，区别在于方式不同。 再贷款，顾名思义是&quot;再一次贷款&quot;。普通贷款是商业银行把钱贷给企业或个人，...</description>
      <category>经济/再贷款</category>
      <category>经济/再贴现</category>
      <category>概念</category>
      <pubDate>Tue, 19 May 2026 22:53:33 GMT</pubDate>
    </item>
    <item>
      <title>&lt;dialog&gt; 标签允许你创建一个模态或者非模态的对话框 模态：对话框打开时，...</title>
      <link>/cards/665.html</link>
      <guid isPermaLink="false">card:665</guid>
      <description>&lt;dialog&gt; 标签允许你创建一个模态或者非模态的对话框 模态：对话框打开时，脱离文档流以及页面的层级体系，位于最上层，页面上的其他部分无法交互 非模态：对话框打开时，仍然在文档流中，用户也可以与页面中的其他元素交互 可以使用 :moda...</description>
      <category>HTML/dialog</category>
      <category>CSS/Top Layer</category>
      <pubDate>Tue, 13 Jan 2026 00:32:43 GMT</pubDate>
    </item>
    <item>
      <title>在页面关闭或跳转时上报数据是前端常见的需求，比如埋点统计、错误日志等。传统的 X...</title>
      <link>/cards/730.html</link>
      <guid isPermaLink="false">card:730</guid>
      <description>在页面关闭或跳转时上报数据是前端常见的需求，比如埋点统计、错误日志等。传统的 XMLHttpRequest 或 fetch 在页面卸载阶段往往来不及发出，或者会阻塞页面跳转，影响用户体验。为了解决这个问题，浏览器提供了 navigator....</description>
      <category>浏览器/sendBeacon</category>
      <category>JavaScript</category>
      <pubDate>Tue, 19 May 2026 09:07:21 GMT</pubDate>
    </item>
    <item>
      <title>在投资中，一个核心问题是：当前经济处于什么阶段，应该配置什么资产？美林证券（现属...</title>
      <link>/cards/729.html</link>
      <guid isPermaLink="false">card:729</guid>
      <description>在投资中，一个核心问题是：当前经济处于什么阶段，应该配置什么资产？美林证券（现属于美国银行）在 2004 年提出了一个经典的资产配置框架来回答这个问题，即美林时钟（Merrill Lynch Investment Clock）。它根据两个宏...</description>
      <category>经济/美林时钟</category>
      <category>概念</category>
      <pubDate>Tue, 19 May 2026 00:00:53 GMT</pubDate>
    </item>
    <item>
      <title>在链式调用 Promise 时，有时会不小心向 .then() 或 .catch...</title>
      <link>/cards/728.html</link>
      <guid isPermaLink="false">card:728</guid>
      <description>在链式调用 Promise 时，有时会不小心向 .then() 或 .catch() 传入一个非函数值（比如 null 、字符串甚至另一个 Promise 对象），这时程序并不会报错，而是出现一种&quot;值穿透&quot;现象：前一个 Promise 的结...</description>
      <category>JavaScript/Promise</category>
      <pubDate>Mon, 18 May 2026 23:48:55 GMT</pubDate>
    </item>
    <item>
      <title>有时候我们希望通过一个自定义按钮来触发浏览器内置的日期选择器、颜色选择器等 UI...</title>
      <link>/cards/727.html</link>
      <guid isPermaLink="false">card:727</guid>
      <description>有时候我们希望通过一个自定义按钮来触发浏览器内置的日期选择器、颜色选择器等 UI，而不是让用户必须点击 input 元素本身。 showPicker 就是为这个场景而生的，它允许通过 JavaScript 直接唤起浏览器原生的选择器面板。 ...</description>
      <category>DOM/showPicker</category>
      <pubDate>Mon, 18 May 2026 13:57:19 GMT</pubDate>
    </item>
    <item>
      <title>浏览器有三个访问文件系统的 API showOpenFilePicker ：打开...</title>
      <link>/cards/679.html</link>
      <guid isPermaLink="false">card:679</guid>
      <description>浏览器有三个访问文件系统的 API showOpenFilePicker ：打开文件选择器，可以选择一个或多个文件 showDirectoryPicker ：打开目录选择器，选择一个文件夹 showSaveFilePicker ：打开保存文...</description>
      <category>JavaScript</category>
      <category>浏览器/文件系统/showOpenFilePicker</category>
      <category>浏览器/文件系统/showDirectoryPicker</category>
      <category>浏览器/文件系统/showSaveFilePicker</category>
      <pubDate>Sat, 24 Jan 2026 07:59:39 GMT</pubDate>
    </item>
    <item>
      <title>政府想要刺激经济时，通常会采取扩张性财政政策，比如扩大政府支出或减税。但一个有趣...</title>
      <link>/cards/726.html</link>
      <guid isPermaLink="false">card:726</guid>
      <description>政府想要刺激经济时，通常会采取扩张性财政政策，比如扩大政府支出或减税。但一个有趣的现象是，这些政策在刺激经济的同时，可能反过来抑制了企业投资和个人消费，使得预期的刺激效果被部分甚至完全抵消。这就是挤出效应，形象地说，就是政府把企业和消费者的...</description>
      <category>经济/挤出效应</category>
      <category>概念</category>
      <pubDate>Mon, 18 May 2026 01:21:03 GMT</pubDate>
    </item>
    <item>
      <title>投资时我们常面临一个问题：收益高的产品风险也大，那怎么判断一项投资的「性价比」？...</title>
      <link>/cards/725.html</link>
      <guid isPermaLink="false">card:725</guid>
      <description>投资时我们常面临一个问题：收益高的产品风险也大，那怎么判断一项投资的「性价比」？夏普比率就是用来回答这个问题的，它衡量的是每多承担一份风险，能换来多少额外收益。 它的计算方式如下： 其中： 表示无风险利率，比如国债的收益率 表示预期的投资收...</description>
      <category>金融/夏普比率</category>
      <category>概念</category>
      <pubDate>Mon, 18 May 2026 00:47:29 GMT</pubDate>
    </item>
    <item>
      <title>经济发展为什么总是呈现出繁荣与萧条的交替？短期来看有 库存周期 、 产能周期 这...</title>
      <link>/cards/703.html</link>
      <guid isPermaLink="false">card:703</guid>
      <description>经济发展为什么总是呈现出繁荣与萧条的交替？短期来看有 库存周期 、 产能周期 这类解释，但如果把时间尺度拉到半个世纪，是否也存在某种规律？20 世纪 20 年代，苏联经济学家康德拉季耶夫通过对英、法、美等国近百年的物价、利率、工资和对外贸易...</description>
      <category>经济/康波周期</category>
      <pubDate>Fri, 08 May 2026 08:24:42 GMT</pubDate>
    </item>
    <item>
      <title>如果说 库存周期 是企业的短期呼吸，那产能周期就是企业的长期心跳。在宏观经济学中...</title>
      <link>/cards/724.html</link>
      <guid isPermaLink="false">card:724</guid>
      <description>如果说 库存周期 是企业的短期呼吸，那产能周期就是企业的长期心跳。在宏观经济学中，产能周期通常被称为朱格拉周期，是一个持续约 7~11 年的中长周期。 它的核心逻辑和库存周期一脉相承：供给对需求的响应存在时间差，只不过波动的对象从库存变成了...</description>
      <category>经济/产能周期</category>
      <category>概念</category>
      <pubDate>Sun, 17 May 2026 10:41:12 GMT</pubDate>
    </item>
    <item>
      <title>我们常说经济有周期，其中有一个和日常商业活动最贴近的短周期，叫库存周期，也被称为...</title>
      <link>/cards/723.html</link>
      <guid isPermaLink="false">card:723</guid>
      <description>我们常说经济有周期，其中有一个和日常商业活动最贴近的短周期，叫库存周期，也被称为基钦周期。它的核心逻辑很简单：供给与需求之间存在时间差，这个时间差导致库存不断波动，形成周期。 举个例子，假设你在卖一个商品，有一天突然爆火了，而你没有足够多的...</description>
      <category>经济/库存周期</category>
      <category>概念</category>
      <pubDate>Sun, 17 May 2026 09:59:09 GMT</pubDate>
    </item>
    <item>
      <title>当一个新兴大国崛起，必然会对现有霸权国家的地位构成挑战，双方之间是否注定走向冲突...</title>
      <link>/cards/722.html</link>
      <guid isPermaLink="false">card:722</guid>
      <description>当一个新兴大国崛起，必然会对现有霸权国家的地位构成挑战，双方之间是否注定走向冲突甚至战争？2012年，哈佛大学政治学者格雷厄姆·艾利森（Graham Allison）将这一结构性困境命名为「修昔底德陷阱」。 该术语源自古希腊历史学家修昔底德...</description>
      <category>国际政治/修昔底德陷阱</category>
      <category>概念</category>
      <pubDate>Sun, 17 May 2026 05:28:16 GMT</pubDate>
    </item>
    <item>
      <title>在日常经济活动中，当我们签署具有法律效力的特定合同（买卖合同、借款合同、股权转让...</title>
      <link>/cards/721.html</link>
      <guid isPermaLink="false">card:721</guid>
      <description>在日常经济活动中，当我们签署具有法律效力的特定合同（买卖合同、借款合同、股权转让合同等）时，需要缴纳一种税，叫做印花税。 这个名字来源于历史上的缴纳方式。过去纳税人交税后，会收到一张类似邮票的「印花税票」，纳税人把税票贴在合同或凭证上，画线...</description>
      <category>经济/印花税</category>
      <pubDate>Sun, 17 May 2026 03:59:43 GMT</pubDate>
    </item>
    <item>
      <title>人类经过了几千年的发展，为什么始终维持在刚好吃饱的水平？技术带来的生产效率提升和...</title>
      <link>/cards/720.html</link>
      <guid isPermaLink="false">card:720</guid>
      <description>人类经过了几千年的发展，为什么始终维持在刚好吃饱的水平？技术带来的生产效率提升和粮食增加，似乎总是被人口增长给消耗掉。英国经济学家、人口学家托马斯·马尔萨斯在 1798 年的《人口论》中提出了这个政治经济学概念，他将 人类生活水平长期停滞 ...</description>
      <category>概念</category>
      <category>经济/马尔萨斯陷阱</category>
      <pubDate>Sun, 17 May 2026 03:33:02 GMT</pubDate>
    </item>
    <item>
      <title>当我们面对资源分配的问题时，第一反应往往是争抢，但经济学告诉我们，在动手抢之前，...</title>
      <link>/cards/719.html</link>
      <guid isPermaLink="false">card:719</guid>
      <description>当我们面对资源分配的问题时，第一反应往往是争抢，但经济学告诉我们，在动手抢之前，先看看有没有把蛋糕做大的空间。这就是 「帕累托改进」 的核心思想：在不损害任何人利益的前提下，让至少一个人的状况变得更好。它提醒我们遇到问题时别急着你死我活，而...</description>
      <category>经济/帕累托改进</category>
      <category>经济/帕累托最优</category>
      <category>概念</category>
      <pubDate>Sun, 17 May 2026 03:11:57 GMT</pubDate>
    </item>
    <item>
      <title>二分搜索树</title>
      <link>/docs/document/1/8.html</link>
      <guid isPermaLink="false">doc:8</guid>
      <description>什么是树结构 当你把上面的图倒过来看，就像是一棵树，所以我们把这种结构称为是树结构。那为什么要使用树结构，因为树结构在生活中很常见，如文件夹的组织方式，又或者如公司职能的组织方式，这些都是树结构的例子。为什么会使用树结构呢？原因就是因为高效...</description>
      <pubDate>Sat, 02 Dec 2023 12:20:37 GMT</pubDate>
    </item>
    <item>
      <title>你有没有过这样的经历：在电商平台看到一件商品，旁边划掉的原价让你觉得当前售价特别...</title>
      <link>/cards/717.html</link>
      <guid isPermaLink="false">card:717</guid>
      <description>你有没有过这样的经历：在电商平台看到一件商品，旁边划掉的原价让你觉得当前售价特别划算，甚至有种「赚到了」的感觉？这背后其实是一种被广泛研究的认知偏差在起作用，叫做锚定效应。 锚定效应是行为经济学中的一个核心概念，由心理学家丹尼尔·卡尼曼（D...</description>
      <category>经济/锚定效应</category>
      <category>心理/锚定效应</category>
      <category>概念</category>
      <pubDate>Sun, 17 May 2026 01:48:42 GMT</pubDate>
    </item>
    <item>
      <title>你有没有过这样的经历：一件闲置物品，放在家里觉得挺值钱的，但如果让你去买同样的东...</title>
      <link>/cards/716.html</link>
      <guid isPermaLink="false">card:716</guid>
      <description>你有没有过这样的经历：一件闲置物品，放在家里觉得挺值钱的，但如果让你去买同样的东西，你可能根本不愿意花那个价钱。这种「拥有即高估」的心理倾向，就是禀赋效应。人们一旦拥有一件物品，对该物品的评价会远高于未拥有时的评价。通俗地说，就是敝帚自珍。...</description>
      <category>经济/禀赋效应</category>
      <category>心理/损失厌恶</category>
      <category>概念</category>
      <pubDate>Sun, 17 May 2026 01:05:39 GMT</pubDate>
    </item>
    <item>
      <title>生活中我们常常会陷入一种困境：明明知道继续下去不划算，却因为「已经付出了这么多」...</title>
      <link>/cards/715.html</link>
      <guid isPermaLink="false">card:715</guid>
      <description>生活中我们常常会陷入一种困境：明明知道继续下去不划算，却因为「已经付出了这么多」而不愿放手。这背后的心理陷阱，就是沉没成本。沉没成本是已经发生，且当下无论做什么都无法挽回的投入，这种投入不仅仅包含金钱，还包括时间、精力和感情等。 举个例子，...</description>
      <category>经济/沉没成本</category>
      <category>概念</category>
      <pubDate>Sat, 16 May 2026 23:21:52 GMT</pubDate>
    </item>
    <item>
      <title>经济学有一条基本定律：价格升高，需求降低，二者反向变动。但有一类特殊的商品恰恰相...</title>
      <link>/cards/714.html</link>
      <guid isPermaLink="false">card:714</guid>
      <description>经济学有一条基本定律：价格升高，需求降低，二者反向变动。但有一类特殊的商品恰恰相反，价格越涨，人们买得越多。这类商品被称为吉芬商品，以 19 世纪英国经济学家罗伯特·吉芬的名字命名。 最经典的案例发生在 19 世纪的爱尔兰。当地农民非常贫困...</description>
      <category>经济/吉芬商品</category>
      <category>概念</category>
      <pubDate>Sat, 16 May 2026 11:15:43 GMT</pubDate>
    </item>
    <item>
      <title>在经济学中，「价格越高，需求越低」是一条基本规律。但现实中存在一种反常现象：某些...</title>
      <link>/cards/713.html</link>
      <guid isPermaLink="false">card:713</guid>
      <description>在经济学中，「价格越高，需求越低」是一条基本规律。但现实中存在一种反常现象：某些商品价格越高，买的人反而越多。 美国经济学家托尔斯坦·凡勃伦在其著作《有闲阶级论》中描述了这一现象。随着工业革命的发展，出现了一批迅速暴富的有闲阶级，他们需要通...</description>
      <category>经济/凡勃伦效应</category>
      <category>概念</category>
      <pubDate>Sat, 16 May 2026 10:57:31 GMT</pubDate>
    </item>
    <item>
      <title>想了解一家企业甚至一个国家的财务健康状况，最直接的方式就是看它的资产负债表。资产...</title>
      <link>/cards/705.html</link>
      <guid isPermaLink="false">card:705</guid>
      <description>想了解一家企业甚至一个国家的财务健康状况，最直接的方式就是看它的资产负债表。资产负债表是反映某一特定时刻拥有多少资源、欠下多少债务、以及所有者净资产有多少的财务报表。 资产负债表包含三个部分： 资产：拥有的、能带来经济利益的资源。企业的资产...</description>
      <category>经济/资产负债表</category>
      <category>概念</category>
      <pubDate>Mon, 11 May 2026 06:53:47 GMT</pubDate>
    </item>
    <item>
      <title>很多人在做决策时只看到了显性的支出，比如房租、水电、材料费，却忽略了一个隐藏的代...</title>
      <link>/cards/712.html</link>
      <guid isPermaLink="false">card:712</guid>
      <description>很多人在做决策时只看到了显性的支出，比如房租、水电、材料费，却忽略了一个隐藏的代价。经济学中把这个隐藏的代价叫做机会成本，它指的是当你面对多个选择时，选了其中一个，所放弃的其他选择中最优的那个能带来的收益。 举个例子，假设你开了一家奶茶店，...</description>
      <category>经济/机会成本</category>
      <category>概念</category>
      <pubDate>Sat, 16 May 2026 10:47:04 GMT</pubDate>
    </item>
    <item>
      <title>「由俭入奢易，由奢入俭难」，生活中我们常常发现，一旦习惯了某种生活水平，就很难再...</title>
      <link>/cards/711.html</link>
      <guid isPermaLink="false">card:711</guid>
      <description>「由俭入奢易，由奢入俭难」，生活中我们常常发现，一旦习惯了某种生活水平，就很难再退回去。这种现象在经济学中有一个精确的类比：棘轮效应。 棘轮是机械工程中的一种齿轮，它的特点是只能单向转动，无法反向倒转。因此，棘轮效应被用来比喻习惯或趋势一旦...</description>
      <category>经济/棘轮效应</category>
      <category>概念</category>
      <pubDate>Sat, 16 May 2026 08:53:59 GMT</pubDate>
    </item>
    <item>
      <title>经济下行的时候，我们总能看到政府大搞基建：修高铁、建机场、扩公路。为什么经济越差...</title>
      <link>/cards/710.html</link>
      <guid isPermaLink="false">card:710</guid>
      <description>经济下行的时候，我们总能看到政府大搞基建：修高铁、建机场、扩公路。为什么经济越差，政府反而越要花钱？这背后的理论支撑就是乘数效应，凯恩斯主义中的一个核心概念。 它的逻辑建立在一个朴素的事实上：一个人的支出就是另一个人的收入。假设政府投资了 ...</description>
      <category>经济/乘数效应</category>
      <category>概念</category>
      <pubDate>Sat, 16 May 2026 08:08:19 GMT</pubDate>
    </item>
    <item>
      <title>当一个企业或个人还不起钱的时候，债权人和债务人坐下来重新商量怎么还钱，这个过程就...</title>
      <link>/cards/709.html</link>
      <guid isPermaLink="false">card:709</guid>
      <description>当一个企业或个人还不起钱的时候，债权人和债务人坐下来重新商量怎么还钱，这个过程就是债务重组。核心目的是避免直接走向破产清算，让双方都能少亏一点。 为什么双方都愿意坐下来谈？对债务人（欠钱的人）来说，不重组可能直接倒闭，重组后可以获得缓冲时间...</description>
      <category>经济/债务重组</category>
      <category>概念</category>
      <pubDate>Fri, 15 May 2026 04:17:46 GMT</pubDate>
    </item>
    <item>
      <title>企业在发行新股（IPO 或增发）时，通常不具备独立完成销售的能力：不懂如何定价、...</title>
      <link>/cards/708.html</link>
      <guid isPermaLink="false">card:708</guid>
      <description>企业在发行新股（IPO 或增发）时，通常不具备独立完成销售的能力：不懂如何定价、没有面向投资者的销售渠道、也缺乏证券发行的专业经验。因此需要聘请投资银行或证券公司，由其将股票销售给广大投资者，这个过程就是股票承销。 承销根据风险承担方式的不...</description>
      <category>金融/股票承销</category>
      <category>概念</category>
      <pubDate>Fri, 15 May 2026 01:11:06 GMT</pubDate>
    </item>
    <item>
      <title>在经济运行中，供给和需求往往难以天然匹配，市场上总会出现商品积压卖不出去，或者需...</title>
      <link>/cards/707.html</link>
      <guid isPermaLink="false">card:707</guid>
      <description>在经济运行中，供给和需求往往难以天然匹配，市场上总会出现商品积压卖不出去，或者需求旺盛却供不应求的情况。出清（Market Clearing）描述的正是市场消化这种失衡、最终重新达到均衡的过程。当某一价格水平下，买方愿意购买的数量恰好等于卖...</description>
      <category>经济/出清</category>
      <category>概念</category>
      <pubDate>Fri, 15 May 2026 00:30:35 GMT</pubDate>
    </item>
    <item>
      <title>0.46.0</title>
      <link>/docs/document/14/858.html</link>
      <guid isPermaLink="false">doc:858</guid>
      <description>feat: Markdown 编辑器支持 terminal feat: Markdown 编辑器侧边支持更多文件类型，支持更多文件类型预览 feat: 插入图片、音视频 UI 优化 fix: Markdown 编辑器右上角置顶气泡出现导致不...</description>
      <pubDate>Thu, 14 May 2026 00:32:04 GMT</pubDate>
    </item>
    <item>
      <title>0.45.2</title>
      <link>/docs/document/14/856.html</link>
      <guid isPermaLink="false">doc:856</guid>
      <description>feat: 文章列表添加右键菜单 feat: 文章卡片去掉右侧打开菜单项 feat: vibe learning 支持生成报告，支持 18 种模板 fix: 图册设置弹窗超出窗口范围，支持粘贴图片</description>
      <pubDate>Thu, 14 May 2026 00:29:41 GMT</pubDate>
    </item>
    <item>
      <title>0.45.1</title>
      <link>/docs/document/14/855.html</link>
      <guid isPermaLink="false">doc:855</guid>
      <description>feat: cli 添加「任务列表」、「问题管理」功能 feat: 优化 PPT 生成模板 feat: 添加新粗野主义 PPT 模板 feat: 项目、知识库和白板新增按钮样式优化，以及打开的弹窗样式优化</description>
      <pubDate>Tue, 12 May 2026 08:44:17 GMT</pubDate>
    </item>
    <item>
      <title>0.45.0</title>
      <link>/docs/document/14/854.html</link>
      <guid isPermaLink="false">doc:854</guid>
      <description>feat: 支持命令行访问数据 tau --help tau card list tau db status tau tui feat: 对话管理弹窗 UI 优化 fix: Claude 缓存修复 fix: 数据索引失败修复</description>
      <pubDate>Tue, 05 May 2026 03:38:33 GMT</pubDate>
    </item>
    <item>
      <title>一家公司要运转起来，首先得有本钱。资本金就是创始人和股东在设立公司时掏出来的钱，...</title>
      <link>/cards/706.html</link>
      <guid isPermaLink="false">card:706</guid>
      <description>一家公司要运转起来，首先得有本钱。资本金就是创始人和股东在设立公司时掏出来的钱，是公司最初的家底。 资本金的大小决定了一家公司能承受多大的亏损，它是承担风险的第一道防线。在有限责任公司中，股东的个人财产和公司是分开的，如果经营亏损超出了资本...</description>
      <category>经济/资本金</category>
      <category>概念</category>
      <pubDate>Mon, 11 May 2026 14:02:25 GMT</pubDate>
    </item>
    <item>
      <title>在布雷顿森林体系下，美元与黄金挂钩（35美元兑1盎司黄金），各国货币再与美元挂钩...</title>
      <link>/cards/704.html</link>
      <guid isPermaLink="false">card:704</guid>
      <description>在布雷顿森林体系下，美元与黄金挂钩（35美元兑1盎司黄金），各国货币再与美元挂钩，美元由此成为国际储备货币。然而美国经济学家罗伯特·特里芬早在1960年就指出，这套体系内含一个不可调和的矛盾：当一国主权货币同时充当国际储备货币时，该国的国内...</description>
      <category>经济/货币</category>
      <category>经济/特里芬难题</category>
      <pubDate>Mon, 11 May 2026 01:22:17 GMT</pubDate>
    </item>
    <item>
      <title>在一个猪圈里，有一头大猪和一头小猪。猪圈的一端装了一个按钮，按下后，另一端的食槽...</title>
      <link>/cards/702.html</link>
      <guid isPermaLink="false">card:702</guid>
      <description>在一个猪圈里，有一头大猪和一头小猪。猪圈的一端装了一个按钮，按下后，另一端的食槽会掉下固定量的食物。但按按钮需要消耗体力，而且按完还得跑过去抢食。大猪体力好、跑得快、吃得快，小猪则相反。 那么问题来了：谁会去按这个按钮？ 答案是大猪。原因在...</description>
      <category>博弈论/智猪博弈</category>
      <pubDate>Thu, 07 May 2026 13:33:15 GMT</pubDate>
    </item>
    <item>
      <title>博弈论中有一个经典问题：草原上有 N 只狮子和一头羊，每只狮子都极度理性，它们的...</title>
      <link>/cards/701.html</link>
      <guid isPermaLink="false">card:701</guid>
      <description>博弈论中有一个经典问题：草原上有 N 只狮子和一头羊，每只狮子都极度理性，它们的偏好排序是&quot;吃饱 &gt; 饿着 &gt; 被吃&quot;。关键设定是，狮子吃完羊后需要消化，这段时间会进入虚弱状态，可以被其它狮子吃掉。那么，会不会有狮子敢去吃羊？ 要分析这个问...</description>
      <category>博弈论/饿狮博弈</category>
      <pubDate>Thu, 07 May 2026 07:30:35 GMT</pubDate>
    </item>
    <item>
      <title>overrides 和 resolutions 的对比。 其二者的功能是一样的，...</title>
      <link>/cards/695.html</link>
      <guid isPermaLink="false">card:695</guid>
      <description>overrides 和 resolutions 的对比。 其二者的功能是一样的，都是用来解决间接依赖版本控制的问题。考虑这么一个场景，当你的直接依赖 A 引入了有 bug 或安全漏洞的间接依赖 B，而你是没有办法去修改 B 的版本的，要么只...</description>
      <category>包管理器/npm</category>
      <category>包管理器/pnpm</category>
      <category>包管理器/package.json</category>
      <pubDate>Wed, 08 Apr 2026 03:01:05 GMT</pubDate>
    </item>
    <item>
      <title>外部性是指，某项活动的参与者对未参与该活动的第三方产生了影响，这种影响可以是正面...</title>
      <link>/cards/699.html</link>
      <guid isPermaLink="false">card:699</guid>
      <description>外部性是指，某项活动的参与者对未参与该活动的第三方产生了影响，这种影响可以是正面的，也可以是负面的。 正外部性，是指某项活动在带来私人收益的同时，也对外部社会产生了积极影响。上大学看似只是个人的事，但一个社会中受高等教育的人越多，高技术人才...</description>
      <category>概念</category>
      <category>经济/外部性</category>
      <pubDate>Wed, 06 May 2026 10:59:02 GMT</pubDate>
    </item>
    <item>
      <title>在赌场里，筹码按颜色区分价值，蓝色筹码往往代表最高面值。这一意象后来被引入了金融...</title>
      <link>/cards/698.html</link>
      <guid isPermaLink="false">card:698</guid>
      <description>在赌场里，筹码按颜色区分价值，蓝色筹码往往代表最高面值。这一意象后来被引入了金融市场，用来形容那些历史悠久、规模庞大、盈利稳定且信誉卓著的上市公司，它们通常穿越了多个经济周期依然屹立，被投资者视为相对安全的长期持仓选择，这便是&quot;蓝筹股&quot;的由...</description>
      <category>金融/股票</category>
      <category>概念</category>
      <pubDate>Wed, 06 May 2026 10:42:38 GMT</pubDate>
    </item>
    <item>
      <title>0.44.2</title>
      <link>/docs/document/14/847.html</link>
      <guid isPermaLink="false">doc:847</guid>
      <description>feat: 创建任务弹窗和任务详情弹窗 UI 样式优化 feat: 发布支持上传 favicon feat: Tabs 标签组件 UI 和交互优化 fix: blog 目录只处理了 1, 2, 3 三级标题 fix: blog 项目和知识库...</description>
      <pubDate>Sat, 02 May 2026 06:15:57 GMT</pubDate>
    </item>
    <item>
      <title>标签页</title>
      <link>/docs/document/14/844.html</link>
      <guid isPermaLink="false">doc:844</guid>
      <description>有的时候需要在文档里面表达一些并列的替代方案，比如不同编程语言的示例，不用操作系统的安装步骤，我们提供 Tabs 容器来实现这个目标 npm install axios</description>
      <pubDate>Sat, 02 May 2026 05:48:06 GMT</pubDate>
    </item>
    <item>
      <title>日历</title>
      <link>/docs/document/14/626.html</link>
      <guid isPermaLink="false">doc:626</guid>
      <description>可以创建多个日历，进行规划或者进行记录，包含日、周、月和时间轴四种视图 番茄钟和任务列表中的包含时间相关的事项（截止任务、计划任务和周期任务）会自动同步到日历中。</description>
      <pubDate>Sun, 28 Dec 2025 09:52:20 GMT</pubDate>
    </item>
    <item>
      <title>任务待办</title>
      <link>/docs/document/14/625.html</link>
      <guid isPermaLink="false">doc:625</guid>
      <description>除了普通的待办外，还支持三种和时间相关的待办： 截止任务，设定一个截止日期，需要在截止日期之前完成 计划任务，打算在某一时间段完成一件任务 周期任务，以某个周期产生一个任务 在创建任务时，点击输入框前面的图标可以切换任务类型</description>
      <pubDate>Sun, 28 Dec 2025 09:51:58 GMT</pubDate>
    </item>
    <item>
      <title>番茄专注</title>
      <link>/docs/document/14/629.html</link>
      <guid isPermaLink="false">doc:629</guid>
      <description>支持创建番茄钟来帮助保持专注 番茄钟有两种模式，一种是倒计时，比如 25 分钟，时间到了番茄钟计时结束，进入休息。另一种是正计时，只负责记录时间，需要手动结束。 我觉得倒计时很容易打断心流，因为做的事情不可能正好就结束了，所以我更喜欢正计时...</description>
      <pubDate>Sun, 28 Dec 2025 09:56:48 GMT</pubDate>
    </item>
    <item>
      <title>聊天管理</title>
      <link>/docs/document/14/646.html</link>
      <guid isPermaLink="false">doc:646</guid>
      <description>配置 在侧边栏有一个与 AI 模型进行聊天的快捷入口，聊天服务需要在大语言模型中进行配置 每次对话完成后，软件会尝试使用配置的标题总结模型来自动生成标题，如果需要此项服务，也需要在大语言模型中进行配置 对话输入框和我们的富文本编辑器输入框一...</description>
      <pubDate>Thu, 01 Jan 2026 09:40:40 GMT</pubDate>
    </item>
    <item>
      <title>内置工具与 MCP</title>
      <link>/docs/document/14/634.html</link>
      <guid isPermaLink="false">doc:634</guid>
      <description>如果模型只能和我们聊天，不能操作我们的数据，那么就没办法进行提效，因此软件提供了大量的内置工具，点击侧边栏聊天下方的 MCP 管理中心就可以看到提供的内置工具 这些内置工具基本包括了对卡片、文章、知识库、项目文档的内容的查询，以及这些文档的...</description>
      <pubDate>Sun, 28 Dec 2025 09:58:20 GMT</pubDate>
    </item>
    <item>
      <title>数据库</title>
      <link>/docs/document/14/649.html</link>
      <guid isPermaLink="false">doc:649</guid>
      <description>这里的数据库是类似于 Notion 的数据库，就是一份数据源，然后有不同的渲染形式。 这个数据库解决不是知识管理的问题，没有自动化关联数据联动更新这样的功能，纯粹是有一些结构化的数据需要统计管理，比如看过的书，读后感关联，而简单的表格无法承...</description>
      <pubDate>Thu, 01 Jan 2026 10:29:27 GMT</pubDate>
    </item>
    <item>
      <title>问题管理</title>
      <link>/docs/document/14/624.html</link>
      <guid isPermaLink="false">doc:624</guid>
      <description>很多时候我读了一些书，看了一些视频，但是却没有输出任何东西，会让人特别焦虑，但是在读书的时候，如果按照书里面的思路做笔记，却发现我自己被限制住了，我的写作风格是要把一件事情写明白（这也是为什么我的卡片有时候会写的和文章一样长），而如果记录读...</description>
      <pubDate>Sun, 28 Dec 2025 09:49:06 GMT</pubDate>
    </item>
    <item>
      <title>Markdown 文件编辑器</title>
      <link>/docs/document/14/644.html</link>
      <guid isPermaLink="false">doc:644</guid>
      <description>基于当前编辑器所见即所得的富文本编辑能力，以及和 Markdown 文件之间的无损转换，支持直接打开已有的 Markdown 文件进行编辑和阅读，编辑体验上对齐 Typora。 因为编辑的是一个文件，相比于软件内的富文本编辑有一些不同之处：...</description>
      <pubDate>Thu, 01 Jan 2026 09:39:12 GMT</pubDate>
    </item>
    <item>
      <title>知识库</title>
      <link>/docs/document/14/623.html</link>
      <guid isPermaLink="false">doc:623</guid>
      <description>我把知识库定位为系统化的知识输出工具。当你系统学习了某个领域，积累了一些散落的笔记，就可以创建一个知识库，按照「如果要写一本书，我会怎么组织内容」的思路去整理知识。一旦能形成一个体系完整的知识库，基本可以说在这个领域已经比较拔尖了。 这个定...</description>
      <pubDate>Sun, 28 Dec 2025 09:48:59 GMT</pubDate>
    </item>
    <item>
      <title>项目</title>
      <link>/docs/document/14/622.html</link>
      <guid isPermaLink="false">doc:622</guid>
      <description>项目这一概念来自《打造第二大脑》，核心思路是把当前正在进行的事情作为项目，主动广泛地搜集资料。我引入这个概念，是因为在实践卡片笔记写作法的过程中，我发现这种方法过于被动，需要等待卡片自然而然地连接、形成主题，这个过程太慢了，而且是不连贯的。...</description>
      <pubDate>Sun, 28 Dec 2025 09:48:54 GMT</pubDate>
    </item>
    <item>
      <title>文章</title>
      <link>/docs/document/14/621.html</link>
      <guid isPermaLink="false">doc:621</guid>
      <description>写作是检验你是否真正弄懂了一件事情的验金石，如果你没有搞懂，你是绝对写不出来的，但这不代表说我不懂就不写了，我觉得写作不仅仅是检验的手段，它还是一种十分高效的学习手段，在写作的过程中，你需要去组织语言，需要回忆知识点，这个过程中你的大脑在高...</description>
      <pubDate>Sun, 28 Dec 2025 09:48:49 GMT</pubDate>
    </item>
    <item>
      <title>人类历史上所有的危机，本质上都是分配的危机</title>
      <link>/articles/78.html</link>
      <guid isPermaLink="false">article:78</guid>
      <description>今天看到新闻，美国的联邦债务总额已超过 39 万亿美元，占 GDP 的比重约为 122% 至 125%。我不禁在想，为什么美国可以借这么多钱？它到底要怎么还？ 为了搞明白这个问题，首先要回答一个更基础的问题：钱到底是什么？它从哪里来，又为什...</description>
      <pubDate>Sun, 26 Apr 2026 14:02:09 GMT</pubDate>
    </item>
    <item>
      <title>TypeScript之类型守卫</title>
      <link>/articles/47.html</link>
      <guid isPermaLink="false">article:47</guid>
      <description>一个值可能同时具有多种可能的类型，在断言为具体的类型之前只能使用公共的属性和方法 const strOrNum: string | number = &quot;a&quot;; // ❎ strOrNum.toLowerCase(); // ✅ (strOr...</description>
      <category>TypeScript</category>
      <pubDate>Thu, 04 Jul 2024 03:21:15 GMT</pubDate>
    </item>
    <item>
      <title>TypeScript 入门指南</title>
      <link>/articles/60.html</link>
      <guid isPermaLink="false">article:60</guid>
      <description>介绍 TypeScript 是什么 TypeScript 是什么? 引用官方的定义 TypeScript is a typed superset of JavaScript that compiles to plain JavaScript...</description>
      <pubDate>Sat, 30 May 2020 10:20:00 GMT</pubDate>
    </item>
    <item>
      <title>小球会停下来吗</title>
      <link>/articles/3.html</link>
      <guid isPermaLink="false">article:3</guid>
      <description>在高中的时候我有这么一个思考，灵感源于一道物理题目 一个小球从高度为 h 的地方下落，落在地面上接着弹起，但是由于与地面碰撞造成能量损失，使得每次弹起的高度只有之前高度的 1/4 。 这道题目看起来是没有什么问题，当时我的想法是每次球的高度...</description>
      <category>世界观</category>
      <pubDate>Sun, 30 Aug 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>白板</title>
      <link>/docs/document/14/612.html</link>
      <guid isPermaLink="false">doc:612</guid>
      <description>支持一个无限大可拖拽可缩放的白板。</description>
      <pubDate>Sun, 28 Dec 2025 09:37:38 GMT</pubDate>
    </item>
    <item>
      <title>SKILL 管理</title>
      <link>/docs/document/14/635.html</link>
      <guid isPermaLink="false">doc:635</guid>
      <description>所谓 SKILL 就是技能包，比如你对做一件事情有自己的工作流或者有特殊要求，但是 AI 不知道，那么就可以形成自己的技能包，把这个技能教给 AI，可以自动化的完成这件事情。 首先在 SKILL 管理页面点击侧边栏右上角的 + 添加技能包 ...</description>
      <pubDate>Sun, 28 Dec 2025 09:58:30 GMT</pubDate>
    </item>
    <item>
      <title>播客生成</title>
      <link>/docs/document/14/637.html</link>
      <guid isPermaLink="false">doc:637</guid>
      <description>支持根据内容自动生成多人播客，需要提前配置两个设置： 生成播客脚本的 AI 模型 配置 TTS，将文字转化为语音 目前仅接入了 Minimax 语音生成，需要在集成中配置 Minimax 的 API key 然后在「文字转语音」Tab 选择...</description>
      <pubDate>Sun, 28 Dec 2025 09:58:46 GMT</pubDate>
    </item>
    <item>
      <title>闪卡</title>
      <link>/docs/document/14/852.html</link>
      <guid isPermaLink="false">doc:852</guid>
      <description>学习分为学和习，古人讲学而时习之，除了学之外我们还要经常复习，这样才能反复且持续的激活神经元，只有激活了正确的神经元，那才是有效的学习。 而闪卡就是一个非常有效的复习手段，它的正面印着问题，反面印着答案，我们需要在不看答案的前提下去主动回忆...</description>
      <pubDate>Sat, 02 May 2026 10:13:24 GMT</pubDate>
    </item>
    <item>
      <title>视频笔记</title>
      <link>/docs/document/14/849.html</link>
      <guid isPermaLink="false">doc:849</guid>
      <description>界面说明 在 项目 中，我们支持添加一条视频笔记，支持的视频来源有 本地视频 网络视频 bilibili 视频 youtube 视频 notion 视频 添加视频后，我们会进入到视频笔记特定的 UI 大致分为三个区域： 左上角是视频，无论来...</description>
      <pubDate>Sat, 02 May 2026 08:03:00 GMT</pubDate>
    </item>
    <item>
      <title>微信读书</title>
      <link>/docs/document/14/628.html</link>
      <guid isPermaLink="false">doc:628</guid>
      <description>软件支持同步微信读书中的书架书籍详情，以及读书划线和笔记，这个功能主要的目的是可以搜集在微信读书上零散的读书想法和笔记，然后统一在软件中整体为卡片，也可以做一些统计，追踪自己的读书进度。 点击书名列右侧的按钮，就可以看到这本书所有的划线和笔...</description>
      <pubDate>Sun, 28 Dec 2025 09:56:24 GMT</pubDate>
    </item>
    <item>
      <title>Vibe Learning</title>
      <link>/docs/document/14/850.html</link>
      <guid isPermaLink="false">doc:850</guid>
      <description>这个功能的灵感来自于 NotebookLM，这个应用支持用户上传资料，然后通过和 AI 聊天来学习资料，并且还可以生成 PPT，视频，测验来帮助用户来进一步的理解内容，学习效率很高，于是我也尝试在本地复现了这个功能，因为这种学习方式和 Vi...</description>
      <pubDate>Sat, 02 May 2026 08:03:10 GMT</pubDate>
    </item>
    <item>
      <title>搜索</title>
      <link>/docs/document/14/641.html</link>
      <guid isPermaLink="false">doc:641</guid>
      <description>支持两种搜索模式：全文搜索和 AI 搜索。 可点击右上角的搜索按钮或者通过 Ctrl/Command + K 打开搜索面板，目前的搜索范围包括「卡片、文章、项目文档、知识库文档和日记」，在进行搜索会同时使用两种搜索。 全文搜索默认启用，并且...</description>
      <pubDate>Thu, 01 Jan 2026 04:17:22 GMT</pubDate>
    </item>
    <item>
      <title>Typst</title>
      <link>/docs/document/14/614.html</link>
      <guid isPermaLink="false">doc:614</guid>
      <description>支持 typst 来绘制图 #import &quot;@preview/cetz:0.4.2&quot; #show math.equation: block.with(fill: white, inset: 1pt) #html.frame(cetz.ca...</description>
      <pubDate>Sun, 28 Dec 2025 09:42:25 GMT</pubDate>
    </item>
    <item>
      <title>编辑器</title>
      <link>/docs/document/14/610.html</link>
      <guid isPermaLink="false">doc:610</guid>
      <description>提供了所见即所得的编辑能力，支持 Markdown 语法 所见即所得的编辑体验 标准 Markdown 语法支持 块编辑器，支持任意块层级嵌套 支持跨任意层级拖拽 丰富的高级块能力支持 自定义 React 组件渲染 Tikz，Typst，M...</description>
      <pubDate>Sun, 28 Dec 2025 09:36:46 GMT</pubDate>
    </item>
    <item>
      <title>Tikz</title>
      <link>/docs/document/14/616.html</link>
      <guid isPermaLink="false">doc:616</guid>
      <description>支持使用 tikz 来绘图，如下是使用示例 \begin{document} \begin{tikzpicture}[domain=0:4] \draw[very thin,color=gray] (-0.1,-1.1) grid (3.9...</description>
      <pubDate>Sun, 28 Dec 2025 09:42:54 GMT</pubDate>
    </item>
    <item>
      <title>音乐标注</title>
      <link>/docs/document/14/839.html</link>
      <guid isPermaLink="false">doc:839</guid>
      <description>支持通过 abc.js 来进行音乐标注，具体语法参考 Abc Music Notation 。</description>
      <pubDate>Sat, 02 May 2026 05:43:50 GMT</pubDate>
    </item>
    <item>
      <title>Callout 块</title>
      <link>/docs/document/14/845.html</link>
      <guid isPermaLink="false">doc:845</guid>
      <description>Callout 块和高亮块非常的类似，都是以特定的样式块来表达某部分内容的与众不同，我们提供了五种不同含义的 Callout 块 可以看到 Callout 块有自己的语义，相比于高亮块，它还存在一个可以自定义的标题。</description>
      <pubDate>Sat, 02 May 2026 05:49:46 GMT</pubDate>
    </item>
    <item>
      <title>详情块</title>
      <link>/docs/document/14/843.html</link>
      <guid isPermaLink="false">doc:843</guid>
      <description>在有的场景下我们需要对于一些信息进行隐藏，不论是为了整洁，还是为了进行练习，我们支持详情块来达到这个目的 珠穆朗玛峰</description>
      <pubDate>Sat, 02 May 2026 05:47:54 GMT</pubDate>
    </item>
    <item>
      <title>高亮块</title>
      <link>/docs/document/14/840.html</link>
      <guid isPermaLink="false">doc:840</guid>
      <description>软件支持一些高亮块容器，通过特殊的样式对内容进行高亮说明，支持六种高亮通过 可以通过点击容器左侧的拖拽把手来修改高亮块的颜色</description>
      <pubDate>Sat, 02 May 2026 05:45:47 GMT</pubDate>
    </item>
    <item>
      <title>引用</title>
      <link>/docs/document/14/851.html</link>
      <guid isPermaLink="false">doc:851</guid>
      <description>在文章有时候需要引用一些别人说的话，这个通过引用块来表示。引用块可以通过 Markdown 语法，即 &gt; + 空格 来创建，也支持通过 slash 面板创建，样式如下： 人生天地间，忽如远行客。</description>
      <pubDate>Sat, 02 May 2026 09:20:49 GMT</pubDate>
    </item>
    <item>
      <title>Slash 面板</title>
      <link>/docs/document/14/653.html</link>
      <guid isPermaLink="false">doc:653</guid>
      <description>大部分块的创建都可以通过 / 呼起 Slash 面板进行选择创建 使用技巧： 输入 / 之后可以继续输入关键字进行搜索 可通过上下方向键进行浏览，按下回车确定，按下 Esc 隐藏面板 对于包含二级菜单的元素，可以使用左右方向键展开或收起二级...</description>
      <pubDate>Thu, 01 Jan 2026 10:44:10 GMT</pubDate>
    </item>
    <item>
      <title>模型设置</title>
      <link>/docs/document/14/838.html</link>
      <guid isPermaLink="false">doc:838</guid>
      <description>为了使用软件提供的 AI 功能，需要现在设置中配置使用的 AI 模型 在「大语言模型」Tab 下添加配置 接着在该配置下添加模型 在模型配置中存在一些选项： 特性，表示模型支持的能力，比如是否支持思考，是否支持上传图片、音视频和文件 消息格...</description>
      <pubDate>Sat, 02 May 2026 04:04:34 GMT</pubDate>
    </item>
    <item>
      <title>图片与图册</title>
      <link>/docs/document/14/841.html</link>
      <guid isPermaLink="false">doc:841</guid>
      <description>图片 在上传图片之前，强烈建议打开设置中压缩图片的开关，可以减小 90% 的图片体积大小而不影响视觉效果 我们支持多种上传图片的方式，包括： AI 生成 支持通过 GPT Image 2 来生成和编辑图片，需要在设置的「图片生成」Tab 下...</description>
      <pubDate>Sat, 02 May 2026 05:46:27 GMT</pubDate>
    </item>
    <item>
      <title>Mermaid</title>
      <link>/docs/document/14/655.html</link>
      <guid isPermaLink="false">doc:655</guid>
      <description>Mermaid 是一种文本绘图语法，支持通过其自定义语法来进行图表表达，包括： 流程图 序列图 甘特图 状态机 时间轴 ... 具体可以参考 官网 。 可以使用 beautiful-mermaid 对默认渲染的图表进行了优化： 样式美化 渲...</description>
      <pubDate>Wed, 25 Feb 2026 15:04:13 GMT</pubDate>
    </item>
    <item>
      <title>文档演示</title>
      <link>/docs/document/14/647.html</link>
      <guid isPermaLink="false">doc:647</guid>
      <description>所有的文档都支持演示模式，演示模式会将字体放大，所有的布局也会等比放大 默认情况下只会有一页幻灯片，我们会通过分隔线来对文档进行拆分，对于需要拆分为多个幻灯片的场景，可以通过手动插入分隔线进行拆分。例如对于下面的场景，在演示模式下会被拆为两...</description>
      <pubDate>Thu, 01 Jan 2026 09:57:25 GMT</pubDate>
    </item>
    <item>
      <title>同步</title>
      <link>/docs/document/14/638.html</link>
      <guid isPermaLink="false">doc:638</guid>
      <description>本软件提供了强大的数据同步功能，支持将你的笔记数据库和资源文件同步到云端，实现多设备数据共享和备份。支持以下云存储服务： 阿里云 OSS S3 兼容存储（如 AWS S3、MinIO 等） WebDAV（如坚果云、Nextcloud 等） ...</description>
      <pubDate>Sun, 28 Dec 2025 09:58:56 GMT</pubDate>
    </item>
    <item>
      <title>资源存储</title>
      <link>/docs/document/14/648.html</link>
      <guid isPermaLink="false">doc:648</guid>
      <description>你粘贴或者上传的图片、音视频等资源放在哪里，分为两类： 本地 对于放在本地的资源会放在 ~/.editor/resources 这个目录下 如果打开的本地的 Markdown 文件，上传的文件会放在该文件所在的同级目录下，通过相对路径引用文...</description>
      <pubDate>Thu, 01 Jan 2026 10:19:02 GMT</pubDate>
    </item>
    <item>
      <title>卡片</title>
      <link>/docs/document/14/620.html</link>
      <guid isPermaLink="false">doc:620</guid>
      <description>理念 最初的理念来自于《笔记卡片写作法》这本书，这本书讲的是如何构建卡片盒来帮助你写作，其中关于如何使用卡片盒这种工具去构建你的知识体系让人备受启发，相比于我们常见的自上而下的组织内容，卡片盒是一种自下而上的组织形式，通过卡片之间的关联，自...</description>
      <pubDate>Sun, 28 Dec 2025 09:48:43 GMT</pubDate>
    </item>
    <item>
      <title>为什么会写一个笔记软件</title>
      <link>/docs/document/14/609.html</link>
      <guid isPermaLink="false">doc:609</guid>
      <description>我是一个非常喜欢记笔记的人，最开始记笔记可能是为了缓解焦虑，给我带来安全感，特别是在上完一节课之后什么都没记住，如果连笔记都没有就更让人焦虑，感觉这节课就白上了，白白浪费了时间。在这个时期，我记笔记的方式在纸质笔记本上手写，要么是课堂笔记，...</description>
      <pubDate>Sun, 14 Dec 2025 15:35:48 GMT</pubDate>
    </item>
    <item>
      <title>导出</title>
      <link>/docs/document/14/643.html</link>
      <guid isPermaLink="false">doc:643</guid>
      <description>所有的内容都支持四种格式的导出： Markdown 因为我们支持的样式超出了 Markdown 表达的范围，比如渐变色，Magic Move 的代码块，为了能导入我们导出的 Markdown，本软件对这些标准 Markdown 不支持的样式...</description>
      <pubDate>Thu, 01 Jan 2026 09:38:17 GMT</pubDate>
    </item>
    <item>
      <title>HTML</title>
      <link>/docs/document/14/842.html</link>
      <guid isPermaLink="false">doc:842</guid>
      <description>可以在文档中直接插入 HTML 代码块来自定义样式，支持两种： 行内 不单独占据一行，比如通过 span 标签来自定义某些文字，比如字体大小和颜色 &lt;span class=&quot;text-3xl text-gray-400 dark:text-...</description>
      <pubDate>Sat, 02 May 2026 05:47:15 GMT</pubDate>
    </item>
    <item>
      <title>列表</title>
      <link>/docs/document/14/651.html</link>
      <guid isPermaLink="false">doc:651</guid>
      <description>支持三种列表： 无序列表 有序列表 任务列表 无序列表 两种创建方式： Markdown 语法 - 列表1 * 列表2 Slash 面板 点击无序列表左侧的子弹头，可以将其替换为 emoji，或者自行上传图片。 微笑 愤怒 爆炸 风景 这种...</description>
      <pubDate>Thu, 01 Jan 2026 10:41:39 GMT</pubDate>
    </item>
    <item>
      <title>代码块</title>
      <link>/docs/document/14/654.html</link>
      <guid isPermaLink="false">doc:654</guid>
      <description>除了支持基本的代码块高亮，还支持两个重要功能： Magic Move：类似于 Keynote 的 Magic 或 PowerPoint 的平滑动画，可以创建多个代码块，系统会对比这些代码块，得到一个动画从一个代码块过度到另一个代码块 con...</description>
      <pubDate>Wed, 25 Feb 2026 15:03:39 GMT</pubDate>
    </item>
    <item>
      <title>PlantUML</title>
      <link>/docs/document/14/615.html</link>
      <guid isPermaLink="false">doc:615</guid>
      <description>支持使用 PlantUML 来绘制图表，其用法及示例可以参考 官网 。 @startuml Alice -&gt; Bob: Authentication Request Bob --&gt; Alice: Authentication Respons...</description>
      <pubDate>Sun, 28 Dec 2025 09:42:37 GMT</pubDate>
    </item>
    <item>
      <title>微信公众号</title>
      <link>/docs/document/14/848.html</link>
      <guid isPermaLink="false">doc:848</guid>
      <description>支持直接将内容复制到微信公众号并且保证样式的不丢失，在各个页面的复制操作中都可以看到这个选项 可以参考一些实际的导出案例： 《Web Locks API》， 编辑器 ， 微信公众号 《学习的本质》， 编辑器 ， 微信公众号 《人类历史上所有...</description>
      <pubDate>Sat, 02 May 2026 07:24:07 GMT</pubDate>
    </item>
    <item>
      <title>发布</title>
      <link>/docs/document/14/639.html</link>
      <guid isPermaLink="false">doc:639</guid>
      <description>项目内置了一套博客模板，支持将卡片、文章、项目和知识库直接按照模板生成网页，生成的网页可以直接发布，可通过 Tau&apos;s Blog 查看发布的博客样式，博客风格是极简风，简单克制。 支持三种发布方式 Github Pages：可以直接将构建参...</description>
      <pubDate>Sun, 28 Dec 2025 09:59:01 GMT</pubDate>
    </item>
    <item>
      <title>HTTP2 之旅</title>
      <link>/articles/37.html</link>
      <guid isPermaLink="false">article:37</guid>
      <description>本篇文章转载至 https://kamranahmed.info/blog/2016/08/13/http-in-depth/ 作者：Kamran Ahmed HTTP 是每个开发者都知道的协议，因为所有的网页都在使用它，了解它绝对可以帮助...</description>
      <pubDate>Fri, 11 Mar 2022 11:12:11 GMT</pubDate>
    </item>
    <item>
      <title>React 自定义组件</title>
      <link>/docs/document/14/611.html</link>
      <guid isPermaLink="false">doc:611</guid>
      <description>支持编写 React 组件来自定义渲染内容，要求定义一个 Component 的组件，该组件将会被自动渲染，内部代码会注入 React 、 ReactDOM 、 components 和 hooks 等全局变量， components 中包...</description>
      <pubDate>Sun, 28 Dec 2025 09:36:55 GMT</pubDate>
    </item>
    <item>
      <title>行内样式</title>
      <link>/docs/document/14/642.html</link>
      <guid isPermaLink="false">doc:642</guid>
      <description>支持丰富的行内样式，包括 加粗 倾斜 删除线 下划线 下划线 下划线 样式文本 行内代码 注解 行内公式 f(x) = ax^2 + bx + c 链接， 点击跳转 bilibili 文字颜色 ， 支持渐变色 背景高亮 快捷键 Ctrl +...</description>
      <pubDate>Thu, 01 Jan 2026 09:34:30 GMT</pubDate>
    </item>
    <item>
      <title>卡片笔记写作法读后感</title>
      <link>/articles/1.html</link>
      <guid isPermaLink="false">article:1</guid>
      <description>这本书不是教大家写作技巧的，它比较强调写作前的准备。 写作的困难是什么，是你对着一张白纸难以下手，不知道写什么，或是写的过程很困难，因为你在绞尽脑汁靠记忆在写作。此时想象如果你有一个素材库，里面包含了文章的观点、论点，你要做的只是对素材的组...</description>
      <category>卡片笔记</category>
      <category>学习方法</category>
      <pubDate>Fri, 25 Aug 2023 16:54:31 GMT</pubDate>
    </item>
    <item>
      <title>工具调用、MCP、Skill……这些 AI 术语到底在说什么？</title>
      <link>/docs/document/14/837.html</link>
      <guid isPermaLink="false">doc:837</guid>
      <description>随着 AI Agent 的快速发展，特别是像 OpenClaw 这样应用的大爆发，许多原本只在开发者圈子里流通的 AI 概念开始涌向普通用户：工具调用、MCP、Skill……用户接收了一堆术语轰炸，却不知道这些东西到底解决了什么问题，它们又...</description>
      <pubDate>Sat, 02 May 2026 04:04:17 GMT</pubDate>
    </item>
    <item>
      <title>0.44.1</title>
      <link>/docs/document/14/836.html</link>
      <guid isPermaLink="false">doc:836</guid>
      <description>feat: 博客样式优化 feat: 主题色重构 feat: 番茄钟页面 UI 优化 feat: 沉浸式窗口 UI 优化 vibe learning 检索优化 fix: 工具超时 fix: 聊天消息无语言代码块错误渲染 fix: 播客生成无...</description>
      <pubDate>Sat, 02 May 2026 03:55:53 GMT</pubDate>
    </item>
    <item>
      <title>0.44.0</title>
      <link>/docs/document/14/835.html</link>
      <guid isPermaLink="false">doc:835</guid>
      <description>feat: 支持 Agent 抽象，聊天流程底层重构 feat: 支持 SubAgent 工具</description>
      <pubDate>Sat, 02 May 2026 03:55:45 GMT</pubDate>
    </item>
    <item>
      <title>0.43.0</title>
      <link>/docs/document/14/833.html</link>
      <guid isPermaLink="false">doc:833</guid>
      <description>feat: 番茄钟弹窗 UI 优化 feat: Markdown 单窗口支持更宽的阅读视口，支持相对地址链路，支持复制和导出 feat: 关系图谱渲染性能优化，点击时不阻塞渲染 feat: 白板中的富文本支持创建为卡片、文章、项目文档和知识...</description>
      <pubDate>Sat, 02 May 2026 03:55:12 GMT</pubDate>
    </item>
    <item>
      <title>0.42.0</title>
      <link>/docs/document/14/831.html</link>
      <guid isPermaLink="false">doc:831</guid>
      <description>feat: 日记和聊天对话接入记忆 feat: blog 模板 UI 和体验优化 feat: vibe learning 项目提示词和索引流程优化，提供新工具 feat: vibe learning 支持生成长文 feat: 编辑器支持直接...</description>
      <pubDate>Sat, 02 May 2026 03:54:29 GMT</pubDate>
    </item>
    <item>
      <title>0.41.0</title>
      <link>/docs/document/14/829.html</link>
      <guid isPermaLink="false">doc:829</guid>
      <description>feat: PDF 支持 AI 聊天能力 feat: PDF 支持搜索 fix: 侧边栏无法拖拽</description>
      <pubDate>Sat, 02 May 2026 03:53:55 GMT</pubDate>
    </item>
    <item>
      <title>0.40.0</title>
      <link>/docs/document/14/827.html</link>
      <guid isPermaLink="false">doc:827</guid>
      <description>feat: 支持行内流式图表生成 feat: 生成式 UI 支持导出 HTML feat: 内容 diff 支持嵌套，支持省略不变的部分 fix: 数据库同步后视图不更新 fix: 模型输出渲染乱序 fix: 聊天工具截断不对导致报错 fi...</description>
      <pubDate>Sat, 02 May 2026 03:53:20 GMT</pubDate>
    </item>
    <item>
      <title>0.39.0</title>
      <link>/docs/document/14/825.html</link>
      <guid isPermaLink="false">doc:825</guid>
      <description>feat: 浏览器扩展对话 UI 和功能和客户端拉齐 feat: 支持任务管理 MCP 工具及自定义渲染 feat: 支持日历 MCP 工具及自定义渲染 feat: 支持问题管理 MCP 工具和自定义管理 feat: 支持搜索工具和引用 s...</description>
      <pubDate>Sat, 02 May 2026 03:52:45 GMT</pubDate>
    </item>
    <item>
      <title>0.38.0</title>
      <link>/docs/document/14/823.html</link>
      <guid isPermaLink="false">doc:823</guid>
      <description>feat: 白板重构 set_node，禁止通过 children 更新 feat: 使用 R 树优化点选和框选性能 feat: 白板菜单添加层级移动功能 feat: 心形路径优化 feat: 工具支持自定义渲染器 feat: 箭头支持添加...</description>
      <pubDate>Sat, 02 May 2026 03:52:01 GMT</pubDate>
    </item>
    <item>
      <title>0.37.0</title>
      <link>/docs/document/14/821.html</link>
      <guid isPermaLink="false">doc:821</guid>
      <description>feat: 支持导出 epub 电子书 feat: 支持导出 PDF feat: 视频支持重写导出为 epub 和 PDF feat: 支持 PPT 的二次编辑</description>
      <pubDate>Sat, 02 May 2026 03:51:32 GMT</pubDate>
    </item>
    <item>
      <title>0.36.2</title>
      <link>/docs/document/14/819.html</link>
      <guid isPermaLink="false">doc:819</guid>
      <description>feat: vb 项目的视频优先使用字幕以加快速度 feat: 视频笔记改版，支持 topic 和 highlight feat: PPT 生成 prompt 优化，美化模板和内容，新增四种模板 feat: 复制到微信公众号的代码块渲染使用...</description>
      <pubDate>Sat, 02 May 2026 03:50:44 GMT</pubDate>
    </item>
    <item>
      <title>0.36.1</title>
      <link>/docs/document/14/818.html</link>
      <guid isPermaLink="false">doc:818</guid>
      <description>feat: 白板点击选中图片可以预览</description>
      <pubDate>Sat, 02 May 2026 03:50:28 GMT</pubDate>
    </item>
    <item>
      <title>0.36.0</title>
      <link>/docs/document/14/817.html</link>
      <guid isPermaLink="false">doc:817</guid>
      <description>feat: 添加修改内容的工具，支持 AI 辅助写作，Vibe Writing feat: 编辑器添加 AI 扩展，可修改选中的文本 feat: 删除 AI 润色功能 feat: Mermaid 块支持选择渲染方式 feat: minima...</description>
      <pubDate>Sat, 02 May 2026 03:50:10 GMT</pubDate>
    </item>
    <item>
      <title>0.35.0</title>
      <link>/docs/document/14/815.html</link>
      <guid isPermaLink="false">doc:815</guid>
      <description>feat: 抽象和增强检索能力，支持 query expand 和 rerank feat: 迁移日记功能到移动端 feat: 支持 asar 打包 feat: GitHub 支持不选择 CDN feat: 思维导图在对话中显示为预览卡片 ...</description>
      <pubDate>Sat, 02 May 2026 03:49:26 GMT</pubDate>
    </item>
    <item>
      <title>0.34.2</title>
      <link>/docs/document/14/813.html</link>
      <guid isPermaLink="false">doc:813</guid>
      <description>feat: 编辑器文字支持 渐变色 feat: PreviewWithEditor 插入优化，自动聚焦，删除优化，转化为段落并自动聚焦 fix: 设置弹窗下部分被截断</description>
      <pubDate>Sat, 02 May 2026 03:48:40 GMT</pubDate>
    </item>
    <item>
      <title>0.34.1</title>
      <link>/docs/document/14/812.html</link>
      <guid isPermaLink="false">doc:812</guid>
      <description>feat: 白板支持导出为图片 feat: 视频笔记支持挂载字幕 feat: 选中图片可直接删除 feat: android 双次返回最小化应用 feat: 代码块重构，支持 magic move feat: 支持代码行高亮 feat: 移...</description>
      <pubDate>Sat, 02 May 2026 03:48:26 GMT</pubDate>
    </item>
    <item>
      <title>0.34.0</title>
      <link>/docs/document/14/811.html</link>
      <guid isPermaLink="false">doc:811</guid>
      <description>feat: 支持移动端 feat: 移动端同步系统支持 feat: 移动端的页面栈架构 feat: 拆分数据库，内容和索引拆分为两个库 feat: 通知桌面端和移动端创建库表的方式 feat: 白板缩小到时显示骨架屏，优化性能 feat: ...</description>
      <pubDate>Sat, 02 May 2026 03:48:07 GMT</pubDate>
    </item>
    <item>
      <title>0.33.0</title>
      <link>/docs/document/14/809.html</link>
      <guid isPermaLink="false">doc:809</guid>
      <description>feat: 支持本地嵌入模型 feat: 支持本地模型自动嵌入 feat: 移除进度管理 feat: 移除 slide feat: Python 服务，ffmpeg，博客模板动态下载，减小包体积 feat: 编辑器支持 kbd 扩展 fea...</description>
      <pubDate>Sat, 02 May 2026 03:47:12 GMT</pubDate>
    </item>
    <item>
      <title>0.32.1</title>
      <link>/docs/document/14/807.html</link>
      <guid isPermaLink="false">doc:807</guid>
      <description>feat: 浏览器扩展支持创建卡片 feat: 浏览器扩展支持查看所有笔记 feat: 浏览器扩展选中文字后出现工具栏 feat: 浏览器选中文字可进行提问 feat: 白板元素无法选中文字使用 inert 属性 optimize: ui ...</description>
      <pubDate>Sat, 02 May 2026 03:46:41 GMT</pubDate>
    </item>
    <item>
      <title>0.32.0</title>
      <link>/docs/document/14/806.html</link>
      <guid isPermaLink="false">doc:806</guid>
      <description>feat: 支持浏览器插件</description>
      <pubDate>Sat, 02 May 2026 03:46:23 GMT</pubDate>
    </item>
    <item>
      <title>0.31.3</title>
      <link>/docs/document/14/804.html</link>
      <guid isPermaLink="false">doc:804</guid>
      <description>feat: vibe learning 优化长文资料 feat: 统一多媒体处理流程 feat: vibe learning 优化系统 prompt feat: 支持在对话下拉列表中删除对话</description>
      <pubDate>Sat, 02 May 2026 03:45:55 GMT</pubDate>
    </item>
    <item>
      <title>0.31.2</title>
      <link>/docs/document/14/803.html</link>
      <guid isPermaLink="false">doc:803</guid>
      <description>feat: 思维导图布局和颜色优化 feat: 优化视频转录的长文索引 feat: 优化网页获取方式，支持 webview 标签获取 SPA 页面内容 feat: 支持更多 PPT 模板 feat: 支持资源下载 feat: 视频笔记字幕支...</description>
      <pubDate>Sat, 02 May 2026 03:45:38 GMT</pubDate>
    </item>
    <item>
      <title>0.31.1</title>
      <link>/docs/document/14/802.html</link>
      <guid isPermaLink="false">doc:802</guid>
      <description>feat: vibe learning 支持测试集生成 feat: vibe learning 支持思维导图生成 feat: vibe learning 支持 PPT 生成 feat: vibe learning 支持播客生成 feat: ...</description>
      <pubDate>Sat, 02 May 2026 03:45:21 GMT</pubDate>
    </item>
    <item>
      <title>0.31.0</title>
      <link>/docs/document/14/801.html</link>
      <guid isPermaLink="false">doc:801</guid>
      <description>feat: 支持 vibe learning 项目 feat: skill 元数据注入到系统 Prompt 中 feat: vibe learning 预览块点击在右侧显示</description>
      <pubDate>Sat, 02 May 2026 03:45:00 GMT</pubDate>
    </item>
    <item>
      <title>0.30.0</title>
      <link>/docs/document/14/799.html</link>
      <guid isPermaLink="false">doc:799</guid>
      <description>feat: Python 进程修改为 WebSocket 通信，统一架构，减少体积 feat: 删除多段转录</description>
      <pubDate>Sat, 02 May 2026 03:43:59 GMT</pubDate>
    </item>
    <item>
      <title>0.29.1</title>
      <link>/docs/document/14/797.html</link>
      <guid isPermaLink="false">doc:797</guid>
      <description>feat: 适配 kimi-k2.5 feat: 关系图谱库升级 fix: 索引数据库表格 hover 时的颜色优化 fix: 日历鼠标滚动修改数值 fix: 日历显示了已经删除的周期任务 fix: 正常态和选中态颜色优化 fix: 知识图...</description>
      <pubDate>Sat, 02 May 2026 03:43:36 GMT</pubDate>
    </item>
    <item>
      <title>0.29.0</title>
      <link>/docs/document/14/796.html</link>
      <guid isPermaLink="false">doc:796</guid>
      <description>feat: 支持日记索引以及支持搜索日记 feat: 代码块收起时支持滚动 fix: 标题快捷键未阻止默认事件 fix: 同一对话生成多个预览块状态不对 fix: 仅完整 HTML 才生成预览 fix: 命令面板被日志事件盖住 fix: 关...</description>
      <pubDate>Sat, 02 May 2026 03:43:11 GMT</pubDate>
    </item>
    <item>
      <title>0.28.2</title>
      <link>/docs/document/14/794.html</link>
      <guid isPermaLink="false">doc:794</guid>
      <description>feat: 支持在创建闪卡时创建卡组 feat: 闪卡填空样式优化 feat: 侧边栏收起展开按钮显示优化 fix: SearchInput 关闭按钮位置 fix: Mac 托盘图标 fix: 闪卡 Prompt 优化，不引用原文 fix:...</description>
      <pubDate>Sat, 02 May 2026 03:42:32 GMT</pubDate>
    </item>
    <item>
      <title>0.28.1</title>
      <link>/docs/document/14/793.html</link>
      <guid isPermaLink="false">doc:793</guid>
      <description>feat: 支持 Markdown 源码和富文本编辑器的路径映射 feat: 替换 App 图标 feat: 支持拖拽图片和音视频到编辑器中 feat: 问题管理搜索框优化 fix: windows 电脑拖拽把手不显示问题 fix: MCP...</description>
      <pubDate>Sat, 02 May 2026 03:42:16 GMT</pubDate>
    </item>
    <item>
      <title>0.28.0</title>
      <link>/docs/document/14/791.html</link>
      <guid isPermaLink="false">doc:791</guid>
      <description>feat: 支持 skill 能力 feat: 支持并行转录 feat: MCP 优化以及相关 bug 修复 feat：添加内置网络工具 feat: 添加内置获取 Tab 数据工具 feat: 聊天支持置顶 feat: 聊天支持分支 fea...</description>
      <pubDate>Sat, 02 May 2026 03:41:13 GMT</pubDate>
    </item>
    <item>
      <title>0.27.0</title>
      <link>/docs/document/14/790.html</link>
      <guid isPermaLink="false">doc:790</guid>
      <description>feat: 支持复制到微信公众号 feat: 支持图表组件 feat: 数据库样式优化 feat: Mention 面板样式优化 feat: 支持非 LLM 的网页剪藏 feat: Mermaid、typst、plantUML 支持保存编译...</description>
      <pubDate>Sat, 02 May 2026 03:40:34 GMT</pubDate>
    </item>
    <item>
      <title>0.26.0</title>
      <link>/docs/document/14/788.html</link>
      <guid isPermaLink="false">doc:788</guid>
      <description>feat: 聊天中支持预览 feat: 白板支持 Column 组件 feat: 白板支持音频卡片 feat: 聊天中的思维导图和白板支持粘贴到白板中 feat: 箭头支持控制点，调整曲线形状 feat: 支持直接拖拽图片、音视频到白板 f...</description>
      <pubDate>Sat, 02 May 2026 03:39:53 GMT</pubDate>
    </item>
    <item>
      <title>0.25.1</title>
      <link>/docs/document/14/786.html</link>
      <guid isPermaLink="false">doc:786</guid>
      <description>feat: 支持视频总结 feat: 数据表格支持搜索 refactor: TTS 服务重构 fix: 修复天气图标无法显示</description>
      <pubDate>Sat, 02 May 2026 03:39:09 GMT</pubDate>
    </item>
    <item>
      <title>0.25.0</title>
      <link>/docs/document/14/785.html</link>
      <guid isPermaLink="false">doc:785</guid>
      <description>feat: 支持转录音频，以及使用 AI 断句优化 feat: 为白板元素添加能力查询，插件之间解耦，能力更加通用 feat: 问题列表支持右键菜单，添加详情，和编辑问题和描述 feat: 编辑支持沉浸模式 feat: 支持 AI 重新优化...</description>
      <pubDate>Sat, 02 May 2026 03:38:50 GMT</pubDate>
    </item>
    <item>
      <title>0.24.1</title>
      <link>/docs/document/14/783.html</link>
      <guid isPermaLink="false">doc:783</guid>
      <description>feat: 完善图册布局算法以及交互 feat: 播客 UI 优化，提取公共播客 hook，为文章添加生成播客的能力 feat: 支持通过 AI 自动打标签 feat: 添加通过 AI 来对问答闪卡进行评价 feat: 支持在聊天中直接创建...</description>
      <pubDate>Sat, 02 May 2026 03:37:57 GMT</pubDate>
    </item>
    <item>
      <title>0.24.0</title>
      <link>/docs/document/14/782.html</link>
      <guid isPermaLink="false">doc:782</guid>
      <description>feat: 支持闪卡 feat: 支持 AI 制作闪卡 fix: 修复闪卡回顾时总数变少问题</description>
      <pubDate>Sat, 02 May 2026 03:37:48 GMT</pubDate>
    </item>
    <item>
      <title>0.23.0</title>
      <link>/docs/document/14/780.html</link>
      <guid isPermaLink="false">doc:780</guid>
      <description>feat: 支持 Slide feat: 为问题添加描述 fix: AI 润色无法应用 fix: 列表中段落无下边距</description>
      <pubDate>Sat, 02 May 2026 03:37:20 GMT</pubDate>
    </item>
    <item>
      <title>0.22.0</title>
      <link>/docs/document/14/778.html</link>
      <guid isPermaLink="false">doc:778</guid>
      <description>feat: 项目重构为 monorepo</description>
      <pubDate>Sat, 02 May 2026 03:36:45 GMT</pubDate>
    </item>
    <item>
      <title>0.21.1</title>
      <link>/docs/document/14/776.html</link>
      <guid isPermaLink="false">doc:776</guid>
      <description>feat: Popover 和 Dropdown 使用磨砂风格背景 feat: 编辑器悬浮工具样式适配 feat: 下划线支持更多种线形 feat: 编辑器编辑体验优化，键盘导航以及删除等体验优化 feat: webview 视图支持添加笔...</description>
      <pubDate>Sat, 02 May 2026 03:36:05 GMT</pubDate>
    </item>
    <item>
      <title>0.21.0</title>
      <link>/docs/document/14/775.html</link>
      <guid isPermaLink="false">doc:775</guid>
      <description>feat: 支持多主题色，各页面适配主题色 feat: 支持阅读 EPUB 电子书，并在资源管理页面支持 feat: 聊天支持工具调用，内置大量卡片、文章、日历、日期等工具 feat: 待办任务进行分类，普通、截止、计划和周期任务任务，并且...</description>
      <pubDate>Sat, 02 May 2026 03:35:33 GMT</pubDate>
    </item>
    <item>
      <title>0.20.0</title>
      <link>/docs/document/14/773.html</link>
      <guid isPermaLink="false">doc:773</guid>
      <description>feat: 支持微信读书高亮和想法同步 feat: 白板支持右键菜单 feat: 日历重构，支持日、周、月和时间轴视图，支持热力图 feat: 聊天支持输出思维导图和白板 feat: 无序列表支持 icon feat: 编辑器和白板选择白板...</description>
      <pubDate>Sat, 02 May 2026 03:34:53 GMT</pubDate>
    </item>
    <item>
      <title>0.19.1</title>
      <link>/docs/document/14/771.html</link>
      <guid isPermaLink="false">doc:771</guid>
      <description>feat: 日记页重构 feat: 支持动态编译 Tailwind，支持在自定义组件和 HTML 中使用 Tailwind feat: Tab 支持重命名和关闭其它 Tab feat: 支持 prompt 管理 feat: 聊天的图片和文件...</description>
      <pubDate>Sat, 02 May 2026 03:33:53 GMT</pubDate>
    </item>
    <item>
      <title>0.19.0</title>
      <link>/docs/document/14/770.html</link>
      <guid isPermaLink="false">doc:770</guid>
      <description>feat: 支持组件模板中心 feat: Webview 支持选择本地 HTML 文件上传</description>
      <pubDate>Sat, 02 May 2026 03:33:25 GMT</pubDate>
    </item>
    <item>
      <title>0.18.2</title>
      <link>/docs/document/14/768.html</link>
      <guid isPermaLink="false">doc:768</guid>
      <description>feat: 支持音乐标注扩展 feat: 支持绘制 PlantUML feat: 支持 S3 和 WebDav 同步和资源上传 feat: 博客支持调整已有音频 feat: 思维导图支持主题 feat: 移除右侧侧边栏 feat: 卡片添加...</description>
      <pubDate>Sat, 02 May 2026 03:30:31 GMT</pubDate>
    </item>
    <item>
      <title>0.18.1</title>
      <link>/docs/document/14/767.html</link>
      <guid isPermaLink="false">doc:767</guid>
      <description>feat: 卡片支持数据库视图 feat: 日历更多弹窗 UI 优化 feat: 画廊视图和看板视图列表支持虚拟列表，提升渲染性能 feat: 支持添加视图时自动填充视图名称 feat: 支持修改资源名称 feat: 资源管理 UI 调整，...</description>
      <pubDate>Sat, 02 May 2026 03:30:01 GMT</pubDate>
    </item>
    <item>
      <title>0.18.0</title>
      <link>/docs/document/14/766.html</link>
      <guid isPermaLink="false">doc:766</guid>
      <description>feat: 多 Tab 视图支持 feat: 视频支持调整宽高 feat: Notion 视频支持不缓存到本地 feat: 项目支持数据库类型 feat: 支持引用对话 feat: underline 和 highlight 支持序列化为 ...</description>
      <pubDate>Sat, 02 May 2026 03:29:44 GMT</pubDate>
    </item>
    <item>
      <title>0.17.5</title>
      <link>/docs/document/14/764.html</link>
      <guid isPermaLink="false">doc:764</guid>
      <description>feat: 支持资源管理</description>
      <pubDate>Sat, 02 May 2026 03:27:31 GMT</pubDate>
    </item>
    <item>
      <title>0.17.4</title>
      <link>/docs/document/14/763.html</link>
      <guid isPermaLink="false">doc:763</guid>
      <description>feat: 数据库支持看板视图 feat: TODO 描述升级为富文本 feat: 日历、对话管理页添加 Titlebar feat: 高亮重构为老版本样式 fix: 日历日、周视图选择范围未处理滚动问题</description>
      <pubDate>Sat, 02 May 2026 03:27:10 GMT</pubDate>
    </item>
    <item>
      <title>0.17.3</title>
      <link>/docs/document/14/762.html</link>
      <guid isPermaLink="false">doc:762</guid>
      <description>feat: 支持播客生成 feat: 日历支持批量合并 feat: 问题管理支持状态管理 fix: 对话管理移动分组 bug 修复 fix: 添加或取消快捷方式不更新 UI 问题修复</description>
      <pubDate>Sat, 02 May 2026 03:26:55 GMT</pubDate>
    </item>
    <item>
      <title>0.17.2</title>
      <link>/docs/document/14/761.html</link>
      <guid isPermaLink="false">doc:761</guid>
      <description>feat: 数据库支持画廊视图 feat: 数据库支持详情 feat: 支持对话管理 feat: 数据库日期插件升级 feat: 数据库支持日历视图 feat: 日、周视图自动滚动到当前时间 fix: Markdown 导出 callout...</description>
      <pubDate>Sat, 02 May 2026 03:26:34 GMT</pubDate>
    </item>
    <item>
      <title>0.17.1</title>
      <link>/docs/document/14/760.html</link>
      <guid isPermaLink="false">doc:760</guid>
      <description>feat: 时间记录功能迁移到日历 feat: 番茄专注支持删除 feat: 日历支持日程视图 feat: 日历支持编辑系统日历事件（不包括时间和日历） feat: 番茄专注支持编辑 feat: 番茄钟支持设置背景白噪声 fix: 番茄专注...</description>
      <pubDate>Sat, 02 May 2026 03:26:06 GMT</pubDate>
    </item>
    <item>
      <title>0.17.0</title>
      <link>/docs/document/14/759.html</link>
      <guid isPermaLink="false">doc:759</guid>
      <description>feat: 添加日历 feat: 专注时长要求必须大于五分钟 feat: 番茄钟和日历关联 feat: 支持日历分组管理 feat: 支持通过 @ 关联文档 feat: 支持压缩图片为 webp feat: Markdown 支持文件目录，...</description>
      <pubDate>Sat, 02 May 2026 03:25:49 GMT</pubDate>
    </item>
    <item>
      <title>0.16.4</title>
      <link>/docs/document/14/757.html</link>
      <guid isPermaLink="false">doc:757</guid>
      <description>feat: 添加番茄专注 feat: 支持 Notion 视频 feat: 支持 Notion 文档的同步 fix: Windows 关闭窗口无法退出应用</description>
      <pubDate>Sat, 02 May 2026 03:25:20 GMT</pubDate>
    </item>
    <item>
      <title>0.16.3</title>
      <link>/docs/document/14/756.html</link>
      <guid isPermaLink="false">doc:756</guid>
      <description>feat: 支持多页面数据同步系统 feat: 用户设置多页面实时同步 feat: 图片添加对齐属性 feat: bilibili 视频支持分 p 视频 feat: 添加问题管理页面 feat: 迁移进度管理页面 feat: 音视频自动记录...</description>
      <pubDate>Sat, 02 May 2026 03:24:54 GMT</pubDate>
    </item>
    <item>
      <title>0.16.2</title>
      <link>/docs/document/14/755.html</link>
      <guid isPermaLink="false">doc:755</guid>
      <description>feat: 数据表格支持多视图 feat: 数据表格支持分组 feat: 数据表格支持排序 feat: 数据表格支持筛选 feat: 代码块支持收起，并可调整高度 feat: 编辑器内视频支持 bilibili 和 youtube feat...</description>
      <pubDate>Sat, 02 May 2026 03:24:36 GMT</pubDate>
    </item>
    <item>
      <title>0.16.1</title>
      <link>/docs/document/14/754.html</link>
      <guid isPermaLink="false">doc:754</guid>
      <description>feat: 可以从数据表格及任务清单中创建的文档建立卡片 feat: 替换关闭展开指示器 feat: 设置修改为弹窗 feat: 编辑器支持 typst 插件 feat: 图片支持调整大小，裁剪完善 fix: 白板制作演示序列自适应屏幕</description>
      <pubDate>Sat, 02 May 2026 03:24:14 GMT</pubDate>
    </item>
    <item>
      <title>0.16.0</title>
      <link>/docs/document/14/753.html</link>
      <guid isPermaLink="false">doc:753</guid>
      <description>feat: 添加任务清单页面</description>
      <pubDate>Sat, 02 May 2026 03:23:50 GMT</pubDate>
    </item>
    <item>
      <title>0.15.1</title>
      <link>/docs/document/14/751.html</link>
      <guid isPermaLink="false">doc:751</guid>
      <description>feat: 支持删除数据行 feat: 支持编辑已有的 Option feat: 项目和文章侧边栏可调整大小 feat: 数据表格添加图片插件 feat: 数据表格添加附件插件 feat: 数据表格添加进度插件 feat: 数据表格添加富文...</description>
      <pubDate>Sat, 02 May 2026 03:23:10 GMT</pubDate>
    </item>
    <item>
      <title>0.15.0</title>
      <link>/docs/document/14/750.html</link>
      <guid isPermaLink="false">doc:750</guid>
      <description>feat: 支持数据表格 feat: 添加注解插件 fix: EditText 粘贴时未触发 onChange 方法</description>
      <pubDate>Sat, 02 May 2026 03:22:33 GMT</pubDate>
    </item>
    <item>
      <title>0.14.2</title>
      <link>/docs/document/14/748.html</link>
      <guid isPermaLink="false">doc:748</guid>
      <description>feat: 视频笔记支持 Bilibili 视频 feat: 视频笔记支持 Youtube 视频 feat: 对话支持开启思考 feat: 对话支持中断 feat: 支持编辑已有的标签 feat: 白板支持侧边栏 fix: 合并相同连续列表...</description>
      <pubDate>Sat, 02 May 2026 03:21:52 GMT</pubDate>
    </item>
    <item>
      <title>0.14.1</title>
      <link>/docs/document/14/747.html</link>
      <guid isPermaLink="false">doc:747</guid>
      <description>feat: 支持上传本地 PDF feat: 目标管理 UI 优化 feat: PDF 支持评论标注 feat: 表格修改后自动聚焦 feat: 添加箭头虚线和动画效果 optimize: useGridLayout 修改为 grid 布局...</description>
      <pubDate>Sat, 02 May 2026 03:21:24 GMT</pubDate>
    </item>
    <item>
      <title>0.14.0</title>
      <link>/docs/document/14/746.html</link>
      <guid isPermaLink="false">doc:746</guid>
      <description>feat: PDF 文本高亮结构重写 feat: PDF 分解为列表页和详情页 feat: PDF 支持侧边栏，显示缩略图，目录和高亮，支持缩略图和目录的缓存 feat: 支持导出卡片、文章、知识库、项目文档为图片 feat: 支持进度管理...</description>
      <pubDate>Sat, 02 May 2026 03:21:05 GMT</pubDate>
    </item>
    <item>
      <title>0.13.4</title>
      <link>/docs/document/14/744.html</link>
      <guid isPermaLink="false">doc:744</guid>
      <description>feat: 去掉 OpenAI 的特殊地位，根据功能选择模型 feat: 对话 UI 优化 feat: 支持多模态对话 feat: 支持 RAG 知识库增强，回答中引用参考的内容 feat: 设置页添加标题栏 feat: 添加 emoji ...</description>
      <pubDate>Sat, 02 May 2026 03:20:30 GMT</pubDate>
    </item>
    <item>
      <title>0.13.3</title>
      <link>/docs/document/14/743.html</link>
      <guid isPermaLink="false">doc:743</guid>
      <description>feat: 元素粘贴优化 feat: 使用 express 静态服务器，支持视频流式传输 feat: 取消 OpenAI 的特殊地位 fix: 支持拖拽到根节点的左侧 fix: 拖拽元素到 Frame 上时会丢失箭头关系 fix: 解散 F...</description>
      <pubDate>Sat, 02 May 2026 03:20:07 GMT</pubDate>
    </item>
    <item>
      <title>0.13.2</title>
      <link>/docs/document/14/742.html</link>
      <guid isPermaLink="false">doc:742</guid>
      <description>feat: 支持列表项反缩进 feat: 支持快捷键移动列表项 feat: 自动合并连续的相同类型列表 feat: 思维导根节点支持吸附 feat: 思维导图支持收起和展开 feat: 思维导图支持快捷键调整位置 feat: 思维导图支持左...</description>
      <pubDate>Sat, 02 May 2026 03:19:36 GMT</pubDate>
    </item>
    <item>
      <title>0.13.1</title>
      <link>/docs/document/14/741.html</link>
      <guid isPermaLink="false">doc:741</guid>
      <description>feat: 多编辑器同步优化，不需要聚焦到内容才能保存，以及优化同步时的闪烁和聚焦问题 feat: 侧边支持新建卡片和文章，侧边卡片支持编辑标签 feat: 项目和知识库编辑标题回车不同步的问题修复 feat: 卡片列表添加全部的分类 fe...</description>
      <pubDate>Sat, 02 May 2026 03:19:03 GMT</pubDate>
    </item>
    <item>
      <title>0.13.0</title>
      <link>/docs/document/14/740.html</link>
      <guid isPermaLink="false">doc:740</guid>
      <description>feat: 通过快捷键 mod + n 打卡快捷卡片窗口 feat: 窗口缩放功能 feat: 搜索重构，全文搜索和向量搜索合并 feat: 选择窗口重构，统一所有选择文档的地方为统一组件 feat: 卡片置顶功能 feat: 白板路由重构...</description>
      <pubDate>Sat, 02 May 2026 03:18:20 GMT</pubDate>
    </item>
    <item>
      <title>0.12.0</title>
      <link>/docs/document/14/738.html</link>
      <guid isPermaLink="false">doc:738</guid>
      <description>feat: 演示模式添加关闭 icon 和回到顶部 icon feat: 支持选择草图风格 feat: 支持设置大语言模型支持的特性 feat: 编辑器标题可折叠内容 feat: 代码块可全屏编辑 feat: 数据库表格初版实现 feat:...</description>
      <pubDate>Sat, 02 May 2026 03:17:40 GMT</pubDate>
    </item>
    <item>
      <title>0.11.0</title>
      <link>/docs/document/14/736.html</link>
      <guid isPermaLink="false">doc:736</guid>
      <description>feat: 设置弹窗修改为页面，可用区域更大 feat: 编辑器支持外部设置主题，适配不同主题色 feat: 为白板添加网格 feat: 白板设置其添加设置适配宽度，并且修复适配高度需要点击两次的问题 feat: 白板支持按住 Ctrl键多...</description>
      <pubDate>Sat, 02 May 2026 03:16:46 GMT</pubDate>
    </item>
    <item>
      <title>0.10.0</title>
      <link>/docs/document/14/734.html</link>
      <guid isPermaLink="false">doc:734</guid>
      <description>feat: 迁移到 Electron feat: 支持文章嵌入 feat: 嵌入支持批量操作 feat: 白板箭头支持居中连接 feat: 白板参考线重写，支持拖拽和缩放 feat: 项目支持白板 feat: 白板属性设置器重构，更加美观和...</description>
      <pubDate>Sat, 02 May 2026 03:15:55 GMT</pubDate>
    </item>
    <item>
      <title>0.9.9</title>
      <link>/docs/document/14/732.html</link>
      <guid isPermaLink="false">doc:732</guid>
      <description>feat: 代码块样式优化 fix: Mac 侧边栏显示问题 fix: 时间记录滚动不加载问题 fix: 切换文章时，标题不更新问题 fix: 项目切换时标题不更新</description>
      <pubDate>Sat, 02 May 2026 03:15:14 GMT</pubDate>
    </item>
    <item>
      <title>0.9.8</title>
      <link>/docs/document/14/731.html</link>
      <guid isPermaLink="false">doc:731</guid>
      <description>feat: 日记支持今日总结插件，统计今日更新的卡片和文章 fix: AI 续写插入代码块崩溃，稳定性提升 fix: 项目为空时无法新建项目 fix: 标签搜索不需要输入完整的标签名，输入部分即可</description>
      <pubDate>Sat, 02 May 2026 03:14:57 GMT</pubDate>
    </item>
    <item>
      <title>0.9.7</title>
      <link>/docs/document/14/730.html</link>
      <guid isPermaLink="false">doc:730</guid>
      <description>fix: workflow build error</description>
      <pubDate>Sat, 02 May 2026 03:14:39 GMT</pubDate>
    </item>
    <item>
      <title>0.9.6</title>
      <link>/docs/document/14/729.html</link>
      <guid isPermaLink="false">doc:729</guid>
      <description>feat: 导出 Markdown 脱离编辑器 feat: AI 续写</description>
      <pubDate>Sat, 02 May 2026 03:14:25 GMT</pubDate>
    </item>
    <item>
      <title>0.9.5</title>
      <link>/docs/document/14/728.html</link>
      <guid isPermaLink="false">doc:728</guid>
      <description>feat: AI 搜索 UI 及输入体验优化 feat: 白板支持复制、剪切和粘贴 feat: 白板支持批量删除，撤销时可全部恢复 feat: 编辑器和白板支持视频 fix: 右侧侧边栏打开时无动画 fix: PDF 视图宽度自适应 fix...</description>
      <pubDate>Sat, 02 May 2026 03:14:04 GMT</pubDate>
    </item>
    <item>
      <title>0.9.4</title>
      <link>/docs/document/14/727.html</link>
      <guid isPermaLink="false">doc:727</guid>
      <description>feat: 支持右边栏 AI 对话 feat: 自动选择上一次对话 feat: 支持流式输出 feat: 支持删除对话 feat: 使用 GPT 3.5 Turbo 来总结对话标题 feat: 对话栏 UI 优化 feat: 接入 AI 搜...</description>
      <pubDate>Sat, 02 May 2026 03:13:41 GMT</pubDate>
    </item>
    <item>
      <title>0.9.3</title>
      <link>/docs/document/14/726.html</link>
      <guid isPermaLink="false">doc:726</guid>
      <description>feat: 编辑器支持插入音频，且支持 TTS feat: 接入豆包声音复制模型 feat: 支持 AI 对话，可配置 Open AI 和豆包模型 feat: 项目支持 AI 剪藏页面</description>
      <pubDate>Sat, 02 May 2026 03:11:39 GMT</pubDate>
    </item>
    <item>
      <title>0.9.2</title>
      <link>/docs/document/14/725.html</link>
      <guid isPermaLink="false">doc:725</guid>
      <description>feat: 添加参考线和吸附能力 fix: 偶现打开编辑面板后操作无反应</description>
      <pubDate>Sat, 02 May 2026 03:11:24 GMT</pubDate>
    </item>
    <item>
      <title>0.9.1</title>
      <link>/docs/document/14/724.html</link>
      <guid isPermaLink="false">doc:724</guid>
      <description>feat: Tabs 组件编辑优化 feat: Titlebar 显示优化，侧边支持收起 feat: 白板支持设置组件属性 fix: 白板图片粘贴优化</description>
      <pubDate>Sat, 02 May 2026 03:11:02 GMT</pubDate>
    </item>
    <item>
      <title>0.9.0</title>
      <link>/docs/document/14/723.html</link>
      <guid isPermaLink="false">doc:723</guid>
      <description>feat: UI 重构</description>
      <pubDate>Sat, 02 May 2026 03:10:44 GMT</pubDate>
    </item>
    <item>
      <title>0.8.3</title>
      <link>/docs/document/14/721.html</link>
      <guid isPermaLink="false">doc:721</guid>
      <description>fix: 去掉图像压缩，正式包无法打开</description>
      <pubDate>Sat, 02 May 2026 03:10:10 GMT</pubDate>
    </item>
    <item>
      <title>0.8.2</title>
      <link>/docs/document/14/720.html</link>
      <guid isPermaLink="false">doc:720</guid>
      <description>feat: 文章支持修改封面，UI 优化 feat: 文章上传限制图片大小，图片太大太多有性能问题 feat: 支持曲线箭头 feat: PDF 宽度自适应 feat: PDF 记住上次浏览的页数 feat: 文件上传进行图片压缩， fix...</description>
      <pubDate>Sat, 02 May 2026 03:09:26 GMT</pubDate>
    </item>
    <item>
      <title>0.8.1</title>
      <link>/docs/document/14/719.html</link>
      <guid isPermaLink="false">doc:719</guid>
      <description>fix: 选择、移动过程中禁止选中文本 fix: 点击已选中的富文本元素后，无法编辑 fix: 图形内文本保存 fix: LocalImage 适配本地图片</description>
      <pubDate>Sat, 02 May 2026 03:09:08 GMT</pubDate>
    </item>
    <item>
      <title>0.8.0</title>
      <link>/docs/document/14/718.html</link>
      <guid isPermaLink="false">doc:718</guid>
      <description>feat: 支持白板功能 几何图形 箭头 富文本 图片 卡片 撤销、重做 feat: 支持粘贴本地文件</description>
      <pubDate>Sat, 02 May 2026 03:08:45 GMT</pubDate>
    </item>
    <item>
      <title>0.7.5</title>
      <link>/docs/document/14/716.html</link>
      <guid isPermaLink="false">doc:716</guid>
      <description>feat: 侧边栏管理 feat: Rust 各功能插件化 feat: 优化各页面布局 feat: 各页面大纲展示优化 fix: Windows 下小窗口无法显示修复</description>
      <pubDate>Sat, 02 May 2026 03:07:59 GMT</pubDate>
    </item>
    <item>
      <title>0.7.4</title>
      <link>/docs/document/14/715.html</link>
      <guid isPermaLink="false">doc:715</guid>
      <description>feat: 图册支持粘贴网页图片 feat: 图册多选上传可查看进度 feat: 日记图册更宽修复 feat: 有序列表缩进优化 feat: 所有图片均支持本地缓存优化 fix: 样式文本图标替换 fix: 跨域资源下载</description>
      <pubDate>Sat, 02 May 2026 03:07:39 GMT</pubDate>
    </item>
    <item>
      <title>0.7.3</title>
      <link>/docs/document/14/714.html</link>
      <guid isPermaLink="false">doc:714</guid>
      <description>feat: 链接编辑优化 feat: 添加新的行内文本样式 feat: 支持窗口阴影 feat: 支持资源缓存到本地 feat: 将 PDF 下载到本地，下次优先本地加载，提升速率 feat: 本地 PDF 由全量读取渲染改为及时渲染，提升...</description>
      <pubDate>Sat, 02 May 2026 03:06:42 GMT</pubDate>
    </item>
    <item>
      <title>0.7.2</title>
      <link>/docs/document/14/713.html</link>
      <guid isPermaLink="false">doc:713</guid>
      <description>fix: Github Actions 编译报错，删除 Cargo.lock</description>
      <pubDate>Sat, 02 May 2026 03:06:26 GMT</pubDate>
    </item>
    <item>
      <title>0.7.1</title>
      <link>/docs/document/14/712.html</link>
      <guid isPermaLink="false">doc:712</guid>
      <description>fix: Github Actions 编译报错</description>
      <pubDate>Sat, 02 May 2026 03:06:08 GMT</pubDate>
    </item>
    <item>
      <title>0.7.0</title>
      <link>/docs/document/14/711.html</link>
      <guid isPermaLink="false">doc:711</guid>
      <description>feat: 支持 PDF 高亮标注笔记</description>
      <pubDate>Sat, 02 May 2026 03:05:50 GMT</pubDate>
    </item>
    <item>
      <title>0.6.7</title>
      <link>/docs/document/14/709.html</link>
      <guid isPermaLink="false">doc:709</guid>
      <description>feat: 根据项目直接建立卡片</description>
      <pubDate>Sat, 02 May 2026 03:05:32 GMT</pubDate>
    </item>
    <item>
      <title>0.6.6</title>
      <link>/docs/document/14/708.html</link>
      <guid isPermaLink="false">doc:708</guid>
      <description>feat: 侧边栏支持收起和展开，调整宽度 feat: 聚焦模式下体验优化 feat: 文档和项目目录显示优化 fix: 知识库选中时未高亮 fix: 日记列表项点击未关闭</description>
      <pubDate>Sat, 02 May 2026 03:05:09 GMT</pubDate>
    </item>
    <item>
      <title>0.6.5</title>
      <link>/docs/document/14/707.html</link>
      <guid isPermaLink="false">doc:707</guid>
      <description>feat: 支持文件附件，点击打开文件管理器</description>
      <pubDate>Sat, 02 May 2026 03:04:45 GMT</pubDate>
    </item>
    <item>
      <title>0.6.4</title>
      <link>/docs/document/14/706.html</link>
      <guid isPermaLink="false">doc:706</guid>
      <description>feat: 时间记录支持时间类型 feat: 日记默认可编辑 feat: 卡片支持标签搜索能力 fix: 拖拽 bug，拖拽到其他块上面时顺序不对 fix: 无法删除第一个列表项 fix: HoveringBar key 重复问题</description>
      <pubDate>Sat, 02 May 2026 03:04:23 GMT</pubDate>
    </item>
    <item>
      <title>0.6.3</title>
      <link>/docs/document/14/705.html</link>
      <guid isPermaLink="false">doc:705</guid>
      <description>feat: 时间记录支持记录时间，再也不用手动输入了 feat: 文字选中背景色优化，和微信读书颜色一致 feat: 去掉 Tikz，减少体积 feat: 支持项目归档 feat: 支持删除项目 fix: 同步远程数据库版本与远程不一致问题</description>
      <pubDate>Sat, 02 May 2026 03:04:02 GMT</pubDate>
    </item>
    <item>
      <title>0.6.2</title>
      <link>/docs/document/14/704.html</link>
      <guid isPermaLink="false">doc:704</guid>
      <description>feat: 下划线支持颜色设置 feat: 卡片支持导出 Markdown</description>
      <pubDate>Sat, 02 May 2026 03:03:43 GMT</pubDate>
    </item>
    <item>
      <title>0.6.1</title>
      <link>/docs/document/14/703.html</link>
      <guid isPermaLink="false">doc:703</guid>
      <description>feat: 可切换数据库</description>
      <pubDate>Sat, 02 May 2026 03:03:21 GMT</pubDate>
    </item>
    <item>
      <title>0.6.0</title>
      <link>/docs/document/14/702.html</link>
      <guid isPermaLink="false">doc:702</guid>
      <description>feat: 编辑体验优化 feat: 添加项目功能 fix: 拖拽线的显示</description>
      <pubDate>Sat, 02 May 2026 03:03:10 GMT</pubDate>
    </item>
    <item>
      <title>0.5.2</title>
      <link>/docs/document/14/700.html</link>
      <guid isPermaLink="false">doc:700</guid>
      <description>feat: 配色优化 feat: 支持聚焦模式 fix: 列表项显示问题修复</description>
      <pubDate>Sat, 02 May 2026 03:02:19 GMT</pubDate>
    </item>
    <item>
      <title>0.5.1</title>
      <link>/docs/document/14/699.html</link>
      <guid isPermaLink="false">doc:699</guid>
      <description>feat: 适配黑暗模式 feat: 为每一个分类显示总数 feat: 可以统计每个知识库下包含的文档数量 feat: 体验操作优化</description>
      <pubDate>Sat, 02 May 2026 03:01:44 GMT</pubDate>
    </item>
    <item>
      <title>0.5.0</title>
      <link>/docs/document/14/698.html</link>
      <guid isPermaLink="false">doc:698</guid>
      <description>feat: UI 重构</description>
      <pubDate>Sat, 02 May 2026 03:01:12 GMT</pubDate>
    </item>
    <item>
      <title>0.4.22</title>
      <link>/docs/document/14/696.html</link>
      <guid isPermaLink="false">doc:696</guid>
      <description>feat: 列表收起支持动画 feat: 无序列表收起时有一个阴影表示可展开 feat: 字数统计添加数学公式 fix: MacOS 编译问题 fix: 远程数据下载检测</description>
      <pubDate>Sat, 02 May 2026 03:00:46 GMT</pubDate>
    </item>
    <item>
      <title>0.4.21</title>
      <link>/docs/document/14/695.html</link>
      <guid isPermaLink="false">doc:695</guid>
      <description>feat: GraphView 宽度自适应 feat: GraphView 预览支持 CardLink feat: 点击图中的节点自动跳转到对应的卡片 feat: 行内卡片连接点击在另一侧打开 feat: GraphView 与 CardV...</description>
      <pubDate>Sat, 02 May 2026 03:00:18 GMT</pubDate>
    </item>
    <item>
      <title>0.4.20</title>
      <link>/docs/document/14/694.html</link>
      <guid isPermaLink="false">doc:694</guid>
      <description>feat: 时间记录日期选择联动 feat: 关系图谱不显示在单独的路由 fix: card-link 添加规则，必须在 paragraph 里面 fix: 卡片列表显示不全 fix: HoveringBar 层级问题修复 fix: 时间记...</description>
      <pubDate>Sat, 02 May 2026 02:59:58 GMT</pubDate>
    </item>
    <item>
      <title>0.4.19</title>
      <link>/docs/document/14/693.html</link>
      <guid isPermaLink="false">doc:693</guid>
      <description>feat: 字体颜色支持黑暗模式，对比度更加明显 feat: 支持小窗创建快捷卡片 mod + shift + n feat: 支持小窗创建快捷时间记录 feat: 支持快捷键打开小窗</description>
      <pubDate>Sat, 02 May 2026 02:59:15 GMT</pubDate>
    </item>
    <item>
      <title>0.4.18</title>
      <link>/docs/document/14/692.html</link>
      <guid isPermaLink="false">doc:692</guid>
      <description>feat: 添加笔记分类 fix: 统计显示 2024 fix: 时间统计编辑和更新回显 fix: 关联卡片同步问题修复</description>
      <pubDate>Sat, 02 May 2026 02:58:41 GMT</pubDate>
    </item>
    <item>
      <title>0.4.17</title>
      <link>/docs/document/14/691.html</link>
      <guid isPermaLink="false">doc:691</guid>
      <description>feat: 支持时间统计</description>
      <pubDate>Sat, 02 May 2026 02:58:16 GMT</pubDate>
    </item>
    <item>
      <title>0.4.16</title>
      <link>/docs/document/14/690.html</link>
      <guid isPermaLink="false">doc:690</guid>
      <description>feat: 卡片管理，右键添加关闭其它卡片 feat: 编辑文章支持自动保存 fix: 编辑器添加规范化 paragraph 规则 fix: PreviewEditor 字体大小</description>
      <pubDate>Sat, 02 May 2026 02:57:56 GMT</pubDate>
    </item>
    <item>
      <title>0.4.15</title>
      <link>/docs/document/14/689.html</link>
      <guid isPermaLink="false">doc:689</guid>
      <description>feat: sidebar 宽度可拖动，所有地方的宽度一致 feat: 支持字数统计 feat: 卡片支持标签系统 fix: sidebar 拖拽和隐藏冲突修复</description>
      <pubDate>Sat, 02 May 2026 02:57:32 GMT</pubDate>
    </item>
    <item>
      <title>0.4.14</title>
      <link>/docs/document/14/688.html</link>
      <guid isPermaLink="false">doc:688</guid>
      <description>feat: 文档支持选择关联文档 不能选择当前文档，子文档和父文档 相同的目录下禁止有相同的文档，无论是拖动还是选择都会禁止掉 fix: 图片概览bug修复 fix: 列表无限滚动 bug 修复</description>
      <pubDate>Sat, 02 May 2026 02:57:07 GMT</pubDate>
    </item>
    <item>
      <title>0.4.13</title>
      <link>/docs/document/14/687.html</link>
      <guid isPermaLink="false">doc:687</guid>
      <description>feat: 编辑时滚动优化 feat: 文档卡片和文章卡片样式优化 feat: 文档项支持收起和展开，默认展开一级 feat: 日记页背景修改为透明</description>
      <pubDate>Sat, 02 May 2026 02:56:33 GMT</pubDate>
    </item>
    <item>
      <title>0.4.12</title>
      <link>/docs/document/14/686.html</link>
      <guid isPermaLink="false">doc:686</guid>
      <description>feat: 侧边栏隐藏统一管理 feat: 文档项支持关联文章，与文章内容、标题同步 feat: 添加扩展，文档项支持概览所有子项，且支持拖拽 feat: 编辑器拖拽颜色统一和文档项相同 fix: 列表编辑修复 fix: 文档项删除优化，删...</description>
      <pubDate>Sat, 02 May 2026 02:55:21 GMT</pubDate>
    </item>
    <item>
      <title>0.4.11</title>
      <link>/docs/document/14/685.html</link>
      <guid isPermaLink="false">doc:685</guid>
      <description>feat: 文档项侧边栏和目录支持动画显示与隐藏</description>
      <pubDate>Sat, 02 May 2026 02:55:04 GMT</pubDate>
    </item>
    <item>
      <title>0.4.10</title>
      <link>/docs/document/14/684.html</link>
      <guid isPermaLink="false">doc:684</guid>
      <description>feat: 文档项支持绑定卡片，与卡片内容同步 fix: 时间显示问题修复</description>
      <pubDate>Sat, 02 May 2026 02:54:36 GMT</pubDate>
    </item>
    <item>
      <title>0.4.9</title>
      <link>/docs/document/14/683.html</link>
      <guid isPermaLink="false">doc:683</guid>
      <description>feat: 支持热力图 feat: 支持 Ctrl + P 打开命令面板跳转页面</description>
      <pubDate>Sat, 02 May 2026 02:52:37 GMT</pubDate>
    </item>
    <item>
      <title>0.4.8</title>
      <link>/docs/document/14/682.html</link>
      <guid isPermaLink="false">doc:682</guid>
      <description>feat: 卡片编辑快捷操作收拢到 statusBar feat: 文档支持目录 feat: 滚动条颜色优化</description>
      <pubDate>Sat, 02 May 2026 02:52:16 GMT</pubDate>
    </item>
    <item>
      <title>0.4.7</title>
      <link>/docs/document/14/681.html</link>
      <guid isPermaLink="false">doc:681</guid>
      <description>feat: Mac 下不监听 resize 事件 feat: 提供快捷键手动下载 feat: 上传、下载提示优化</description>
      <pubDate>Sat, 02 May 2026 02:51:53 GMT</pubDate>
    </item>
    <item>
      <title>0.4.6</title>
      <link>/docs/document/14/680.html</link>
      <guid isPermaLink="false">doc:680</guid>
      <description>feat: 支持通过阿里云 OSS 同步数据库</description>
      <pubDate>Sat, 02 May 2026 02:51:36 GMT</pubDate>
    </item>
    <item>
      <title>0.4.5</title>
      <link>/docs/document/14/679.html</link>
      <guid isPermaLink="false">doc:679</guid>
      <description>feat: check-list 去掉 Add Paragraph，间距更加合理 feat: 自定义块支持跟随主题变化 feat: 发布之前检查类型是否通过</description>
      <pubDate>Sat, 02 May 2026 02:51:01 GMT</pubDate>
    </item>
    <item>
      <title>0.4.4</title>
      <link>/docs/document/14/678.html</link>
      <guid isPermaLink="false">doc:678</guid>
      <description>feat: 支持阿里云 OSS feat: 图片上传统一</description>
      <pubDate>Sat, 02 May 2026 02:50:27 GMT</pubDate>
    </item>
    <item>
      <title>0.4.3</title>
      <link>/docs/document/14/677.html</link>
      <guid isPermaLink="false">doc:677</guid>
      <description>feat: 窗口支持圆角 feat: 背景添加渐变色 feat: 文档修改为知识库 feat: 文档编辑器宽度优化</description>
      <pubDate>Sat, 02 May 2026 02:49:56 GMT</pubDate>
    </item>
    <item>
      <title>0.4.2</title>
      <link>/docs/document/14/676.html</link>
      <guid isPermaLink="false">doc:676</guid>
      <description>feat: 添加自动更新的能力</description>
      <pubDate>Sat, 02 May 2026 02:49:49 GMT</pubDate>
    </item>
    <item>
      <title>0.4.1</title>
      <link>/docs/document/14/675.html</link>
      <guid isPermaLink="false">doc:675</guid>
      <description>feat: 支持动画 feat: 文档项支持图标 feat: 显示创建和更新时间 fix: 文字超长处理</description>
      <pubDate>Sat, 02 May 2026 02:49:24 GMT</pubDate>
    </item>
    <item>
      <title>0.4.0</title>
      <link>/docs/document/14/674.html</link>
      <guid isPermaLink="false">doc:674</guid>
      <description>feat: 支持文档模式 feat: 文档支持拖拽</description>
      <pubDate>Sat, 02 May 2026 02:48:57 GMT</pubDate>
    </item>
    <item>
      <title>0.3.14</title>
      <link>/docs/document/14/672.html</link>
      <guid isPermaLink="false">doc:672</guid>
      <description>feat: tabsContainer 也支持拖拽 fix: 修复 bug，hovering bar 位置不对 fix: status bar 导致窗口抖动，以及位置会随着滚动发生改变 fix: block-panel 位置修复，支持拼音关...</description>
      <pubDate>Sat, 02 May 2026 02:47:35 GMT</pubDate>
    </item>
    <item>
      <title>0.3.13</title>
      <link>/docs/document/14/671.html</link>
      <guid isPermaLink="false">doc:671</guid>
      <description>feat: 属性面板支持收起 feat: 编辑器大小根据容器自适应 feat: 支持 statusBar feat: 关联列表右侧打开查看</description>
      <pubDate>Sat, 02 May 2026 02:47:15 GMT</pubDate>
    </item>
    <item>
      <title>0.3.11</title>
      <link>/docs/document/14/669.html</link>
      <guid isPermaLink="false">doc:669</guid>
      <description>feat: 卡片 Tab 支持拖拽排序 feat: 图册图片支持拖拽排序</description>
      <pubDate>Sat, 02 May 2026 02:35:27 GMT</pubDate>
    </item>
    <item>
      <title>0.3.12</title>
      <link>/docs/document/14/670.html</link>
      <guid isPermaLink="false">doc:670</guid>
      <description>feat: 编辑器支持拖拽排序 feat: 支持跨编辑器拖拽 feat: 支持表格行拖拽排序</description>
      <pubDate>Sat, 02 May 2026 02:43:28 GMT</pubDate>
    </item>
    <item>
      <title>0.3.10</title>
      <link>/docs/document/14/668.html</link>
      <guid isPermaLink="false">doc:668</guid>
      <description>feat: 支持移动卡片到另一侧边栏</description>
      <pubDate>Sat, 02 May 2026 02:34:54 GMT</pubDate>
    </item>
    <item>
      <title>0.3.9</title>
      <link>/docs/document/14/667.html</link>
      <guid isPermaLink="false">doc:667</guid>
      <description>feat: 支持多窗口编辑，内容自动同步</description>
      <pubDate>Sat, 02 May 2026 02:34:15 GMT</pubDate>
    </item>
    <item>
      <title>0.3.8</title>
      <link>/docs/document/14/666.html</link>
      <guid isPermaLink="false">doc:666</guid>
      <description>feat: 重构卡片编辑组件，为未来支持多窗口铺垫 feat: 自动保存 feat: 添加若干快捷键</description>
      <pubDate>Sat, 02 May 2026 02:33:48 GMT</pubDate>
    </item>
    <item>
      <title>0.3.7</title>
      <link>/docs/document/14/665.html</link>
      <guid isPermaLink="false">doc:665</guid>
      <description>feat: 优化选择卡片弹窗打开速度 feat: 获取卡片简介方法优化 fix: 代码块、图片、PreviewWithEditor 删除优化 fix: 颜色选择 bug 修复</description>
      <pubDate>Sat, 02 May 2026 02:33:33 GMT</pubDate>
    </item>
    <item>
      <title>0.3.6</title>
      <link>/docs/document/14/664.html</link>
      <guid isPermaLink="false">doc:664</guid>
      <description>feat: 支持 Tabs 布局 &lt;div id=&quot;demo&quot;&gt;Hello World&lt;/div&gt; 这是 HTML 的代码示例。 fix: 表格聚焦优化</description>
      <pubDate>Sat, 02 May 2026 02:31:55 GMT</pubDate>
    </item>
    <item>
      <title>0.3.5</title>
      <link>/docs/document/14/663.html</link>
      <guid isPermaLink="false">doc:663</guid>
      <description>feat: 图册支持多列模式</description>
      <pubDate>Sat, 02 May 2026 02:28:54 GMT</pubDate>
    </item>
    <item>
      <title>0.3.4</title>
      <link>/docs/document/14/662.html</link>
      <guid isPermaLink="false">doc:662</guid>
      <description>feat: 图册支持轮播模式</description>
      <pubDate>Sat, 02 May 2026 02:27:37 GMT</pubDate>
    </item>
    <item>
      <title>0.3.3</title>
      <link>/docs/document/14/661.html</link>
      <guid isPermaLink="false">doc:661</guid>
      <description>feat: 支持图册</description>
      <pubDate>Sat, 02 May 2026 02:26:25 GMT</pubDate>
    </item>
    <item>
      <title>0.3.1</title>
      <link>/docs/document/14/658.html</link>
      <guid isPermaLink="false">doc:658</guid>
      <description>feat: 支持多列布局 这是第一列 const a = 1 这是第二列 fix: 表格输入修复 fix: 侧边栏无法调整宽度 fix: 删除自动更新</description>
      <pubDate>Sat, 02 May 2026 02:22:56 GMT</pubDate>
    </item>
    <item>
      <title>0.3.2</title>
      <link>/docs/document/14/660.html</link>
      <guid isPermaLink="false">doc:660</guid>
      <description>feat: 支持高亮块</description>
      <pubDate>Sat, 02 May 2026 02:24:02 GMT</pubDate>
    </item>
    <item>
      <title>0.3.0</title>
      <link>/docs/document/14/659.html</link>
      <guid isPermaLink="false">doc:659</guid>
      <description>fix: workflow 脚本修改</description>
      <pubDate>Sat, 02 May 2026 02:23:34 GMT</pubDate>
    </item>
    <item>
      <title>工具调用、MCP、Skill……这些 AI 术语到底在说什么？</title>
      <link>/articles/79.html</link>
      <guid isPermaLink="false">article:79</guid>
      <description>随着 AI Agent 的快速发展，特别是像 OpenClaw 这样应用的大爆发，许多原本只在开发者圈子里流通的 AI 概念开始涌向普通用户：工具调用、MCP、Skill……用户接收了一堆术语轰炸，却不知道这些东西到底解决了什么问题，它们又...</description>
      <pubDate>Fri, 01 May 2026 09:32:25 GMT</pubDate>
    </item>
    <item>
      <title>在早期，由于用户量和流量较少，一台计算机也可以满足服务，然而时至今日，互联网用户...</title>
      <link>/cards/598.html</link>
      <guid isPermaLink="false">card:598</guid>
      <description>在早期，由于用户量和流量较少，一台计算机也可以满足服务，然而时至今日，互联网用户的数量已不可同日而语，无论是出于高可用还是高性能的目的，企业都需要通过横向扩展机器来扩展服务能力，期望用户不论访问哪一台机器，都可以得到同样的服务，并且这件事情...</description>
      <category>负载均衡</category>
      <pubDate>Sat, 19 Jul 2025 09:01:14 GMT</pubDate>
    </item>
    <item>
      <title>看到波波老师之前公众号的一篇文章 《如果高效学习有什么秘诀的话，那就都在这里了：...</title>
      <link>/cards/687.html</link>
      <guid isPermaLink="false">card:687</guid>
      <description>看到波波老师之前公众号的一篇文章 《如果高效学习有什么秘诀的话，那就都在这里了：）》 ，之前肯定读过一次，不过这次读来也引发了一些新的思考，果然好文章就是这样，总是会去引发人的思考。 不要完美主义 我现在写卡片还是有点完美主义，卡片之间重要...</description>
      <category>学习方法</category>
      <category>随笔</category>
      <pubDate>Thu, 05 Mar 2026 15:33:34 GMT</pubDate>
    </item>
    <item>
      <title>破窗效应是犯罪心理学上一个著名的理论：如果对环境中的一个小问题不及时修复，这个小...</title>
      <link>/cards/651.html</link>
      <guid isPermaLink="false">card:651</guid>
      <description>破窗效应是犯罪心理学上一个著名的理论：如果对环境中的一个小问题不及时修复，这个小问题就会暗示此处环境没人管，从而造成更大的混乱。 在 1982 年三月的《大西洋周刊》上，犯罪心理学家詹姆斯·Q·威尔逊及乔治·凯林发表了一片《Broken W...</description>
      <category>心理学/破窗效应</category>
      <pubDate>Wed, 31 Dec 2025 01:06:50 GMT</pubDate>
    </item>
    <item>
      <title>想象你在一个滑梯的顶端，一旦你做了一个小小的让步或尝试（向前迈了一小步），由于重...</title>
      <link>/cards/649.html</link>
      <guid isPermaLink="false">card:649</guid>
      <description>想象你在一个滑梯的顶端，一旦你做了一个小小的让步或尝试（向前迈了一小步），由于重力作用，你会不由自主的沿着滑梯向下滑。 滑梯效应就是你从一个小的让步开始： 吃一口零食没事的 今天少做一道题也没关系 截止日期还早，先打会儿游戏吧 然后引发了一...</description>
      <category>心理学/滑梯效应</category>
      <category>个人成长/习惯养成</category>
      <pubDate>Tue, 30 Dec 2025 01:09:03 GMT</pubDate>
    </item>
    <item>
      <title>学习的本质</title>
      <link>/articles/76.html</link>
      <guid isPermaLink="false">article:76</guid>
      <description>学习和大脑的关系 我们都知道学习是在大脑中进行的，但并不知道学习对大脑究竟有什么影响，更不知道学习时大脑发生了哪些变化，以及这些变化是如何发生的。 ​​​​​具体地说，要学习，人们必须改变自己的大脑，更具体地说，是必须改变大脑的神经连接。 ...</description>
      <pubDate>Mon, 23 Mar 2026 08:53:42 GMT</pubDate>
    </item>
    <item>
      <title>Content-Disposition 字面意思是&quot;内容的处置方式&quot;，它的语义是...</title>
      <link>/cards/693.html</link>
      <guid isPermaLink="false">card:693</guid>
      <description>Content-Disposition 字面意思是&quot;内容的处置方式&quot;，它的语义是：​ 告诉接收方应该如何对待这段内容 。它本质上是一个元数据头，不描述内容，而是描述内容的用途和归属。 它描述的信息取决于作为响应头还是请求头： 响应头：描述接...</description>
      <category>HTTP/Content-Composition</category>
      <pubDate>Wed, 01 Apr 2026 12:51:15 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 中 instanceof 操作符的内部原理就是检查改对象的...</title>
      <link>/cards/686.html</link>
      <guid isPermaLink="false">card:686</guid>
      <description>JavaScript 中 instanceof 操作符的内部原理就是检查改对象的构造函数的 prototype 是否在改对象的原型链上 ┌─────────────────┐ │ 对象 (object) │ │ ┌───────────┐ ...</description>
      <category>JavaScript/instanceof</category>
      <category>JavaScript/原型</category>
      <pubDate>Wed, 25 Feb 2026 14:41:13 GMT</pubDate>
    </item>
    <item>
      <title>HTTP 缓存</title>
      <link>/articles/68.html</link>
      <guid isPermaLink="false">article:68</guid>
      <description>什么是拷贝？对一个变量进行拷贝是指将其表示的数据复制到另一个变量中，大部分情况下的目的是为了避免直接修改原始数据，以便后续进行多种不同的处理或对比。 最简单的拷贝行为，直接将一个变量赋值给另一个变量 let a = 1; let b = a...</description>
      <pubDate>Sat, 07 Dec 2024 14:01:19 GMT</pubDate>
    </item>
    <item>
      <title>Web Locks API</title>
      <link>/articles/77.html</link>
      <guid isPermaLink="false">article:77</guid>
      <description>当用户同时打开多个标签页，或者页面与 Service Worker 并行运行时，它们很可能同时读写同一份共享资源，比如 IndexedDB 中的数据、通过 BroadcastChannel 传递的状态，甚至是一次只允许发起一个的网络请求。如...</description>
      <category>Web API</category>
      <pubDate>Sat, 11 Apr 2026 00:57:49 GMT</pubDate>
    </item>
    <item>
      <title>背景：在 Electron 应用中需要实现全文搜索功能，技术方案是通过 sqli...</title>
      <link>/cards/531.html</link>
      <guid isPermaLink="false">card:531</guid>
      <description>背景：在 Electron 应用中需要实现全文搜索功能，技术方案是通过 sqlite 的 FTS5 进行全文检索，但是 FTS5 对中文检索不太行，需要先进行分词，经过调研决定使用 nodejieba 来进行分词。 问题： nodejieb...</description>
      <category>Electron/踩坑</category>
      <category>踩坑/Electron</category>
      <category>全文搜索</category>
      <category>分词</category>
      <pubDate>Sun, 16 Mar 2025 03:15:50 GMT</pubDate>
    </item>
    <item>
      <title>在 JSX 里面使用 SVG，使用了 xlink:href ，直接报错 解决办法...</title>
      <link>/cards/558.html</link>
      <guid isPermaLink="false">card:558</guid>
      <description>在 JSX 里面使用 SVG，使用了 xlink:href ，直接报错 解决办法 xlink:href -&gt; xlinkHref 参考链接： Rendering Namespace Tags/Attributes Like xmlns:in...</description>
      <category>踩坑/React</category>
      <category>React/踩坑</category>
      <pubDate>Wed, 09 Apr 2025 04:05:07 GMT</pubDate>
    </item>
    <item>
      <title>如何发布 npm 包： 需要有 npm 账号，前往 官网 注册账号 确定你的 r...</title>
      <link>/cards/560.html</link>
      <guid isPermaLink="false">card:560</guid>
      <description>如何发布 npm 包： 需要有 npm 账号，前往 官网 注册账号 确定你的 registry npm config get registry // 先看看你的是否是npm官方的源，不是请切回 npm config set registry...</description>
      <category>包管理器/npm</category>
      <pubDate>Wed, 09 Apr 2025 04:17:25 GMT</pubDate>
    </item>
    <item>
      <title>npm link 的原理就是在全局的 node_modules 和本地的包或者项...</title>
      <link>/cards/659.html</link>
      <guid isPermaLink="false">card:659</guid>
      <description>npm link 的原理就是在全局的 node_modules 和本地的包或者项目中的 node_modules 建立符号链接。 如果在一个本地的包中执行 npm link ，假设这个包的名称是 my-lib ，执行 npm link 后会...</description>
      <category>包管理器/npm</category>
      <category>技巧/调试</category>
      <category>工程化</category>
      <pubDate>Fri, 02 Jan 2026 13:25:27 GMT</pubDate>
    </item>
    <item>
      <title>Windows 操作系统小技巧</title>
      <link>/articles/49.html</link>
      <guid isPermaLink="false">article:49</guid>
      <description>设置默认字体 首先 Windows 操作系统并没有提供直接的设置项去改变全局字体，只能通过注册表来修改默认显示字体 方法一，点击 Windows+R 搜索 Regedit 以此打开注册表编辑器，然后找到以下路径： HKEY_LOCAL_MA...</description>
      <pubDate>Wed, 09 Oct 2024 08:00:52 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 中的变量声明</title>
      <link>/articles/64.html</link>
      <guid isPermaLink="false">article:64</guid>
      <description>在 JavaScript 中有三种方式声明变量： var let const let 和 const 是 ES6 新引入的变量声明方式，解决 var 声明变量的很多问题，基本上已经不使用 var 来声明变量了。 var var 声明变量有三...</description>
      <pubDate>Tue, 15 Oct 2024 04:58:38 GMT</pubDate>
    </item>
    <item>
      <title>如何调试 React 源码</title>
      <link>/articles/65.html</link>
      <guid isPermaLink="false">article:65</guid>
      <description>使用 Vite 创建 React 项目，并且在 WebStorm 中调试 React 源码，效果如下： 可以直接调试源码，而不只是打包后的产物。 构建 React 源码 为了做到能够直接调试源码，而不是压缩、混肴的产物，我们需要自己构建 R...</description>
      <pubDate>Sun, 10 Nov 2024 11:51:24 GMT</pubDate>
    </item>
    <item>
      <title>如何分隔列表项</title>
      <link>/articles/66.html</link>
      <guid isPermaLink="false">article:66</guid>
      <description>在项目开发，一定少不了显示列表，对于列表项我们往往需要一定的间隔分开，下面就要探讨实现这一效果的方式。 margin 通常情况下我们只需要给每一个元素设置一个 margin-bottom 即可 .item { margin-bottom: ...</description>
      <pubDate>Wed, 04 Dec 2024 01:39:19 GMT</pubDate>
    </item>
    <item>
      <title>深拷贝的实现</title>
      <link>/articles/69.html</link>
      <guid isPermaLink="false">article:69</guid>
      <description>什么是拷贝？对一个变量进行拷贝是指将其表示的数据复制到另一个变量中，大部分情况下的目的是为了避免直接修改原始数据，以便后续进行多种不同的处理或对比。 最简单的拷贝行为，直接将一个变量赋值给另一个变量 let a = 1; let b = a...</description>
      <pubDate>Fri, 13 Dec 2024 01:39:44 GMT</pubDate>
    </item>
    <item>
      <title>标题</title>
      <link>/docs/document/14/652.html</link>
      <guid isPermaLink="false">doc:652</guid>
      <description>支持六级标题，可通过 Markdown 语法（ # + 空格 ），也可以通过 Slash 面板创建。 使用技巧： 支持通过 alt + 上下方向键调整标题层级，最高一级标题，最低是段落，也可以在段落上直接使用此快捷键升级为标题 可通过标题左...</description>
      <pubDate>Thu, 01 Jan 2026 10:43:42 GMT</pubDate>
    </item>
    <item>
      <title>面试题：缓存异步函数</title>
      <link>/articles/70.html</link>
      <guid isPermaLink="false">article:70</guid>
      <description>记一次面试题，当时写了很久都没有实现，特此记录。 题目介绍 实现一个函数可以对异步函数的结果进行缓存 const cacheAsyncFunc = (asyncFunc) =&gt; { // TODO } const asyncAdd = (n...</description>
      <pubDate>Mon, 16 Dec 2024 14:24:34 GMT</pubDate>
    </item>
    <item>
      <title>裁剪</title>
      <link>/docs/document/9/92.html</link>
      <guid isPermaLink="false">doc:92</guid>
      <description>有时候我们只对图像的一部分感兴趣，这个时候我们可以定义一个裁剪路径，只有路径包围的区域才会显示出来，而在路径之外的区域则不予显示，这个就像是聚光灯一样，只有聚光灯照到的部分我们才能看得到。 通过 clipPath 定义裁剪路径，然后通过 c...</description>
      <pubDate>Tue, 26 Dec 2023 15:47:42 GMT</pubDate>
    </item>
    <item>
      <title>蒙版</title>
      <link>/docs/document/9/93.html</link>
      <guid isPermaLink="false">doc:93</guid>
      <description>为对象添加蒙版可以改变对象的透明度，蒙版透明度的计算如下 如果蒙版的颜色为白色，那么透明度就完全由 opacity 决定，如果蒙版的颜色为黑色，那么就是完全透明，看不到了。 我们通过 mask 来定义蒙版，需要定义其大小及位置，它的单位默认...</description>
      <pubDate>Tue, 26 Dec 2023 15:47:58 GMT</pubDate>
    </item>
    <item>
      <title>图案</title>
      <link>/docs/document/9/89.html</link>
      <guid isPermaLink="false">doc:89</guid>
      <description>形状中除了可以填充颜色，还可以填充图案。我们的窗帘，床单出现的重复性的形状、花纹、动漫等，它们就是图案，使用图案填充形状时，图案会重复出现铺满整个形状。 我们在 &lt;pattern&gt; 标签中定义图案，首先我们需要定义图案的大小，因为图案是填充...</description>
      <pubDate>Tue, 26 Dec 2023 15:46:45 GMT</pubDate>
    </item>
    <item>
      <title>视口、viewBox 与 preserveAspectRatio</title>
      <link>/docs/document/9/80.html</link>
      <guid isPermaLink="false">doc:80</guid>
      <description>视口 SVG 包含一个 无限大 的画布，但是视口(viewport)限制了我们只能看到一部分，就像是你在屋子里面通过窗子看外面的风景，外面的世界很大，但是窗子的大小是有限的，所以你只能看到一部分，这里的窗子就是视口的作用，它限制了你能看到的...</description>
      <pubDate>Tue, 26 Dec 2023 15:13:32 GMT</pubDate>
    </item>
    <item>
      <title>深度优先遍历</title>
      <link>/docs/document/1/10.html</link>
      <guid isPermaLink="false">doc:10</guid>
      <description>所谓图的遍历就是按照某种顺序访问图中所有的节点，根据访问的顺序不同，可以分为两类： 深度优先遍历 广度优先遍历 在本节中讲解深度优先遍历。 概念 所谓深度优先遍历(Depth First Search，简称 DFS)，是指在遍历时，尽可能深...</description>
      <pubDate>Sat, 02 Dec 2023 12:22:32 GMT</pubDate>
    </item>
    <item>
      <title>联通分量</title>
      <link>/docs/document/1/27.html</link>
      <guid isPermaLink="false">doc:27</guid>
      <description>如何求解图中有多少个联通分量。其实这个问题非常的简单，在上面的我们修改 DFS 的小 bug 时就提到，因为有多个联通分量，我们无法遍历完所有图中的节点，所以我们修改了代码 每次当我们在 for 循环中调用一次 dfs 的时候，就说明存在一...</description>
      <pubDate>Thu, 07 Dec 2023 11:14:41 GMT</pubDate>
    </item>
    <item>
      <title>路径问题</title>
      <link>/docs/document/1/28.html</link>
      <guid isPermaLink="false">doc:28</guid>
      <description>所谓的路径问题就是求两个节点之间是否有路径，这个问题很简单，直接使用我们上面的 isConnected 方法就可以知道两个节点之间是否有路径了。不过我们更想知道的是，两个节点之间的路径是什么，即一个节点到达另一个节点会经历哪些节点。 对于下...</description>
      <pubDate>Thu, 07 Dec 2023 14:25:29 GMT</pubDate>
    </item>
    <item>
      <title>无向图的环检测</title>
      <link>/docs/document/1/29.html</link>
      <guid isPermaLink="false">doc:29</guid>
      <description>我们怎么判断一幅图有没有环呢? 很简单，我们使用深度优先遍历，当访问到某节点时，如果该节点的某邻接节点已经被访问过，并且该邻接节点不是它的上一个节点，那么就说明该图中包含一个环 明白这一点以后我们就可以编写代码了 import java.u...</description>
      <pubDate>Thu, 07 Dec 2023 14:31:46 GMT</pubDate>
    </item>
    <item>
      <title>二分图检测</title>
      <link>/docs/document/1/30.html</link>
      <guid isPermaLink="false">doc:30</guid>
      <description>什么叫二分图 二分图需要满足一下两个特点： 图中的节点被划分为两部分 图中的边连接的是两个部分的节点 在上图中，节点 0, 3, 4, 5 是一部分，节点 1, 2, 6 是一部分，两部分的节点我使用不同的颜色进行填充；且图中所有的边都连接...</description>
      <pubDate>Thu, 07 Dec 2023 14:35:19 GMT</pubDate>
    </item>
    <item>
      <title>岛屿的最大面积</title>
      <link>/docs/document/1/33.html</link>
      <guid isPermaLink="false">doc:33</guid>
      <description>题目介绍 给定一个包含了一些 0 和 1 的非空二维数组 grid。一个岛屿是由一些相邻的 1 (代表土地) 构成的组合，这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0 (代表水) 包围着...</description>
      <pubDate>Fri, 08 Dec 2023 15:52:26 GMT</pubDate>
    </item>
    <item>
      <title>广度优先遍历</title>
      <link>/docs/document/1/32.html</link>
      <guid isPermaLink="false">doc:32</guid>
      <description>树的层序遍历 树的层序遍历是指一层一层的遍历树的节点，它的实现是借助于队列进行实现的： 每一次从队列的头部取出元素进行遍历，然后将该元素的左右孩子添加进队列，以此往复，直至队列为空，遍历结束。 import java.util.Linked...</description>
      <pubDate>Fri, 08 Dec 2023 05:12:25 GMT</pubDate>
    </item>
    <item>
      <title>桥和割点</title>
      <link>/docs/document/1/38.html</link>
      <guid isPermaLink="false">doc:38</guid>
      <description>桥 定义 我们首先看一下桥的概念 上面这幅图中，我们称节点 3-5 之间的这条边为桥，它具有什么特点呢? 一旦将这条边去掉，图的联通分量就会发生变化，所以有如下定义： 如果去掉某条边，使得图的联通分量发生变化，那么称这条边为桥。 桥可以看做...</description>
      <pubDate>Fri, 08 Dec 2023 16:14:39 GMT</pubDate>
    </item>
    <item>
      <title>欧拉回路</title>
      <link>/docs/document/1/41.html</link>
      <guid isPermaLink="false">doc:41</guid>
      <description>18世纪初普鲁士的哥尼斯堡，有一条河穿过，河上有两个小岛，有七座桥把两个岛与河岸联系起来，如下图(黄色线条代表桥，绿色区域代表小岛和河岸) 有个人提出一个问题：一个步行者怎样才能不重复、不遗漏地一次走完七座桥，最后回到出发点。 数学家欧拉将...</description>
      <pubDate>Sat, 09 Dec 2023 02:06:53 GMT</pubDate>
    </item>
    <item>
      <title>最小生成树</title>
      <link>/docs/document/1/42.html</link>
      <guid isPermaLink="false">doc:42</guid>
      <description>概念 首先介绍生成树的概念，假设图中有 V 个顶点，如果能找到图中 V - 1 条边这 V 个节点连接起来，那么就说这 V 个节点与 V - 1 条边形成的图叫做这个图的生成树。 例如图的 DFS 遍历以及 BFS 遍历就会形成一个生成树 ...</description>
      <pubDate>Sat, 09 Dec 2023 02:18:23 GMT</pubDate>
    </item>
    <item>
      <title>Floyed 算法</title>
      <link>/docs/document/1/46.html</link>
      <guid isPermaLink="false">doc:46</guid>
      <description>Dijkstra 和 Bellman-Ford 算法解决的都是单源最短路径问题，而 Floyed 算法解决的所有点对之间的最短问题。我们其实可以通过使用 V 次 Dijkstra 算法就可以求解所有点对之间的最短路径，不过 Dijkstra...</description>
      <pubDate>Sat, 09 Dec 2023 02:47:53 GMT</pubDate>
    </item>
    <item>
      <title>Bellman-Ford 算法</title>
      <link>/docs/document/1/45.html</link>
      <guid isPermaLink="false">doc:45</guid>
      <description>Bellman-Ford 算法也是求解单源最短路径的算法，与 Dijkstra 算法不同的是，它能够处理负权边，即使允许图中存在权值为负数的边。 在讲解 Bellman-Ford 算法之前，我们来看一组操作 dis[w] = Math.mi...</description>
      <pubDate>Sat, 09 Dec 2023 02:41:18 GMT</pubDate>
    </item>
    <item>
      <title>Dijkstra 算法</title>
      <link>/docs/document/1/44.html</link>
      <guid isPermaLink="false">doc:44</guid>
      <description>Dijkstra 算法它能够求解单源最短路径问题，并且使用该算法有一个前提，图中不能存在负权边，即图中的每条边的权值都必须是大于等于 0 的。 Dijkstra 算法使用一个 dis 数组来表示从源 s 到其他节点的最短距离，例如 dis[...</description>
      <pubDate>Sat, 09 Dec 2023 02:35:38 GMT</pubDate>
    </item>
    <item>
      <title>最短路径算法</title>
      <link>/docs/document/1/43.html</link>
      <guid isPermaLink="false">doc:43</guid>
      <description>本文讲解图中点与点之间的最短路径问题，主要讲解三个算法： Dijkstra 算法 Bellman-Ford 算法 Floyed 算法 其中 Dijkstra 与 Bellman-Ford 是解决单源最短路径问题，即它只能求解某节点到其他节点...</description>
      <pubDate>Sat, 09 Dec 2023 02:35:21 GMT</pubDate>
    </item>
    <item>
      <title>有向图算法</title>
      <link>/docs/document/1/47.html</link>
      <guid isPermaLink="false">doc:47</guid>
      <description>实际生活中的很多问题都可以建模为一个有向图的模型： 社交网络：图中的节点看做是一个个的人，如果一个节点指向一个节点，表示这个人关注了这个人，这种关注关系是有方向的 学习课程：将图中的节点看做是一门门的课程，一门课程被其他课程所指向，表示学习...</description>
      <pubDate>Sat, 09 Dec 2023 02:53:48 GMT</pubDate>
    </item>
    <item>
      <title>加油站</title>
      <link>/docs/document/12/162.html</link>
      <guid isPermaLink="false">doc:162</guid>
      <description>题目描述 在一条环路上有 n 个加油站，其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车，从第 i 个加油站开往第 i + 1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发，开始时油箱为空。...</description>
      <pubDate>Mon, 21 Oct 2024 00:42:51 GMT</pubDate>
    </item>
    <item>
      <title>矩阵中的最长递增路径</title>
      <link>/docs/document/12/339.html</link>
      <guid isPermaLink="false">doc:339</guid>
      <description>题目描述 给定一个 m x n 整数矩阵 matrix ，找出其中 最长递增路径 的长度。 对于每个单元格，你可以往上，下，左，右四个方向移动。不能在对角线方向上移动或移动到边界外（即不允许环绕）。 输入： matrix = [[9,9,4...</description>
      <pubDate>Fri, 25 Apr 2025 05:40:57 GMT</pubDate>
    </item>
    <item>
      <title>子集</title>
      <link>/docs/document/12/148.html</link>
      <guid isPermaLink="false">doc:148</guid>
      <description>子集 题目描述 给你一个整数数组 nums ，数组中的元素互不相同 。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按 任意顺序 返回解集。 示例 1： 输入：nums = [1,2,3] 输出：[[],[1],[2],[...</description>
      <pubDate>Tue, 15 Oct 2024 14:22:46 GMT</pubDate>
    </item>
    <item>
      <title>全排列</title>
      <link>/docs/document/12/138.html</link>
      <guid isPermaLink="false">doc:138</guid>
      <description>全排列 题目描述 给定一个没有重复数字的序列，返回其所有可能的全排列。 示例： 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 解题思路 这是...</description>
      <pubDate>Tue, 15 Oct 2024 14:05:54 GMT</pubDate>
    </item>
    <item>
      <title>不同的二叉搜索树</title>
      <link>/docs/document/12/116.html</link>
      <guid isPermaLink="false">doc:116</guid>
      <description>题目描述 给你一个整数 n ，求恰由 n 个节点组成且节点值从 1 到 n 互不相同的二叉搜索树有多少种? 返回满足题意的二叉搜索树的种数。 示例： 输入：n = 3 输出：5 解题思路 对于 n 个数，我们分别以每个数作为根节点，因为根节...</description>
      <pubDate>Tue, 15 Oct 2024 10:59:17 GMT</pubDate>
    </item>
    <item>
      <title>不同的二叉搜索树</title>
      <link>/docs/document/12/116.html</link>
      <guid isPermaLink="false">doc:116</guid>
      <description>题目描述 给你一个整数 n ，求恰由 n 个节点组成且节点值从 1 到 n 互不相同的二叉搜索树有多少种? 返回满足题意的二叉搜索树的种数。 示例： 输入：n = 3 输出：5 解题思路 对于 n 个数，我们分别以每个数作为根节点，因为根节...</description>
      <pubDate>Tue, 15 Oct 2024 10:59:17 GMT</pubDate>
    </item>
    <item>
      <title>解码方法</title>
      <link>/docs/document/12/135.html</link>
      <guid isPermaLink="false">doc:135</guid>
      <description>题目描述 一条包含字母 A-Z 的消息通过以下映射进行了编码 ： &apos;A&apos; -&gt; 1 &apos;B&apos; -&gt; 2 ... &apos;Z&apos; -&gt; 26 要 解码 已编码的消息，所有数字必须基于上述映射的方法，反向映射回字母（可能有多种方法）。例如，&quot;11106&quot;...</description>
      <pubDate>Tue, 15 Oct 2024 13:49:10 GMT</pubDate>
    </item>
    <item>
      <title>不同路径</title>
      <link>/docs/document/12/126.html</link>
      <guid isPermaLink="false">doc:126</guid>
      <description>不同路径 题目描述 一个机器人位于一个 m \times n 网格的左上角 (起始点在下图中标记为 &quot;Start&quot;)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角 (在下图中标记为 &quot;Finish&quot;)。问总共有多少条不同的...</description>
      <pubDate>Tue, 15 Oct 2024 11:19:49 GMT</pubDate>
    </item>
    <item>
      <title>插入区间</title>
      <link>/docs/document/12/330.html</link>
      <guid isPermaLink="false">doc:330</guid>
      <description>题目描述 给你一个 无重叠的 ，按照区间起始端点排序的区间列表 intervals ，其中 intervals[i] = [starti, endi] 表示第 i 个区间的开始和结束，并且 intervals 按照 starti 升序排列。...</description>
      <pubDate>Thu, 17 Apr 2025 03:25:42 GMT</pubDate>
    </item>
    <item>
      <title>盛水最多的容器</title>
      <link>/docs/document/12/142.html</link>
      <guid isPermaLink="false">doc:142</guid>
      <description>题目描述 给你 n 个非负整数 a_1, a_2, \cdots, a_n ，每个数代表坐标中的一个点 (i, a_i) 。在坐标内画出 n 条垂直线，垂直线 i 的两个端点 (i, a_i) 和 (i, 0) 。找出其中的两条线，使得它们...</description>
      <pubDate>Tue, 15 Oct 2024 14:10:37 GMT</pubDate>
    </item>
    <item>
      <title>合并区间</title>
      <link>/docs/document/12/131.html</link>
      <guid isPermaLink="false">doc:131</guid>
      <description>题目描述 以数组 intervals 表示若干个区间的集合，其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间，并返回一个不重叠的区间数组，该数组需恰好覆盖输入中的所有区间。 示例1： 输入...</description>
      <pubDate>Tue, 15 Oct 2024 13:41:37 GMT</pubDate>
    </item>
    <item>
      <title>三数之和</title>
      <link>/docs/document/12/123.html</link>
      <guid isPermaLink="false">doc:123</guid>
      <description>题目描述 给你一个包含 n 个整数的数组 nums ，判断 nums 中是否存在三个元素 a ， b ， c ，使得 a + b + c = 0 。请你找出所有和为 0 且不重复的三元组。 注意：答案中不可以包含重复的三元组。 示例1: 输...</description>
      <pubDate>Tue, 15 Oct 2024 11:12:54 GMT</pubDate>
    </item>
    <item>
      <title>两数之和</title>
      <link>/docs/document/12/122.html</link>
      <guid isPermaLink="false">doc:122</guid>
      <description>LeetCode：两数之和。 题目描述 给定一个整数数组 nums 和一个目标值 target ，请你在该数组中找出和为目标值的那两个整数，并返回他们的数组下标。 你可以假设每种输入只会对应一个答案，但是，数组中同一个元素不能使用两遍。 你...</description>
      <pubDate>Tue, 15 Oct 2024 11:08:39 GMT</pubDate>
    </item>
    <item>
      <title>两数之和</title>
      <link>/docs/document/12/122.html</link>
      <guid isPermaLink="false">doc:122</guid>
      <description>LeetCode：两数之和。 题目描述 给定一个整数数组 nums 和一个目标值 target ，请你在该数组中找出和为目标值的那两个整数，并返回他们的数组下标。 你可以假设每种输入只会对应一个答案，但是，数组中同一个元素不能使用两遍。 你...</description>
      <pubDate>Tue, 15 Oct 2024 11:08:39 GMT</pubDate>
    </item>
    <item>
      <title>最长回文字符串</title>
      <link>/docs/document/12/153.html</link>
      <guid isPermaLink="false">doc:153</guid>
      <description>题目描述 给定一个字符串 s ，找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000 。 示例 1： 输入: &quot;babad&quot; 输出: &quot;bab&quot; 注意: &quot;aba&quot; 也是一个有效答案。 示例2： 输入: &quot;cbbd&quot; 输出: ...</description>
      <pubDate>Tue, 15 Oct 2024 14:29:25 GMT</pubDate>
    </item>
    <item>
      <title>最长回文字符串</title>
      <link>/docs/document/12/153.html</link>
      <guid isPermaLink="false">doc:153</guid>
      <description>题目描述 给定一个字符串 s ，找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000 。 示例 1： 输入: &quot;babad&quot; 输出: &quot;bab&quot; 注意: &quot;aba&quot; 也是一个有效答案。 示例2： 输入: &quot;cbbd&quot; 输出: ...</description>
      <pubDate>Tue, 15 Oct 2024 14:29:25 GMT</pubDate>
    </item>
    <item>
      <title>合并 K 个升序链表</title>
      <link>/docs/document/12/132.html</link>
      <guid isPermaLink="false">doc:132</guid>
      <description>题目描述 给你一个链表数组，每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中，返回合并后的链表。 示例1： 输入：lists = [[1,4,5],[1,3,4],[2,6]] 输出：[1,1,2,3,4,4,5,6] 解释：链...</description>
      <pubDate>Tue, 15 Oct 2024 13:42:59 GMT</pubDate>
    </item>
    <item>
      <title>合并 K 个升序链表</title>
      <link>/docs/document/12/132.html</link>
      <guid isPermaLink="false">doc:132</guid>
      <description>题目描述 给你一个链表数组，每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中，返回合并后的链表。 示例1： 输入：lists = [[1,4,5],[1,3,4],[2,6]] 输出：[1,1,2,3,4,4,5,6] 解释：链...</description>
      <pubDate>Tue, 15 Oct 2024 13:42:59 GMT</pubDate>
    </item>
    <item>
      <title>旋转链表</title>
      <link>/docs/document/12/146.html</link>
      <guid isPermaLink="false">doc:146</guid>
      <description>题目描述 给你一个链表的头节点 head ，旋转链表，将链表每个节点向右移动 k 个位置。 示例1： 输入：head = [1,2,3,4,5], k = 2 输出：[4,5,1,2,3] 示例2： 输入：head = [0,1,2], k...</description>
      <pubDate>Tue, 15 Oct 2024 14:18:19 GMT</pubDate>
    </item>
    <item>
      <title>反转链表</title>
      <link>/docs/document/12/129.html</link>
      <guid isPermaLink="false">doc:129</guid>
      <description>反转链表 题目描述 给你单链表的头节点 head ，请你反转链表，并返回反转后的链表。 示例： 输入：head = [1,2,3,4,5] 输出：[5,4,3,2,1] 解题思路 第一种解法，使用递归，分为两步，第一步对后续的链表进行反转，...</description>
      <pubDate>Tue, 15 Oct 2024 11:24:47 GMT</pubDate>
    </item>
    <item>
      <title>反转链表</title>
      <link>/docs/document/12/129.html</link>
      <guid isPermaLink="false">doc:129</guid>
      <description>反转链表 题目描述 给你单链表的头节点 head ，请你反转链表，并返回反转后的链表。 示例： 输入：head = [1,2,3,4,5] 输出：[5,4,3,2,1] 解题思路 第一种解法，使用递归，分为两步，第一步对后续的链表进行反转，...</description>
      <pubDate>Tue, 15 Oct 2024 11:24:47 GMT</pubDate>
    </item>
    <item>
      <title>包含 min 函数的栈</title>
      <link>/docs/document/12/113.html</link>
      <guid isPermaLink="false">doc:113</guid>
      <description>题目描述 定义栈的数据结构，请在该类型中实现一个能够得到栈的最小元素的 min 函数。在该栈中，调用 min 、 push 、及 pop 的时间复杂度都是 O(1) 。 解题思路 我们第一个想到的办法就是使用一个变量来保存栈中的最小值，但是...</description>
      <pubDate>Tue, 15 Oct 2024 10:54:20 GMT</pubDate>
    </item>
    <item>
      <title>Tauri 应用使用 Gtihub Actions 构建踩坑</title>
      <link>/articles/25.html</link>
      <guid isPermaLink="false">article:25</guid>
      <description>今天为我的编辑器加上了 Github Actions，发布后自动构建 Windows、Mac 和 Linux 应用，折腾了一个小时，有两个坑，特此记录： pnpm install 需要加上 --no-frozen-lockfile 选项，否...</description>
      <category>Github Actions</category>
      <category>tauri</category>
      <category>踩坑</category>
      <pubDate>Fri, 20 Oct 2023 12:15:18 GMT</pubDate>
    </item>
    <item>
      <title>电脑小技巧</title>
      <link>/articles/23.html</link>
      <guid isPermaLink="false">article:23</guid>
      <description>同时按下 Command、Option 和 ESC ，会打开强制杀死程序弹窗，选择程序杀死即可。 Command + Shift + .</description>
      <pubDate>Fri, 13 Oct 2023 00:42:13 GMT</pubDate>
    </item>
    <item>
      <title>如何读懂 TC39</title>
      <link>/articles/18.html</link>
      <guid isPermaLink="false">article:18</guid>
      <description>TC39 是什么：是一个由 JavaScript 开发者、实现者、学者等组成的团体，与 JavaScript 社区合作 维护和发展 JavaScript 的标准 。 TC39 包含四个规范： ECMA-262：ECMAScript ECMA...</description>
      <category>TC39</category>
      <category>ECMA-262</category>
      <category>ECMA-402</category>
      <category>ECMA-404</category>
      <category>ECMA-414</category>
      <pubDate>Thu, 09 Mar 2023 03:12:13 GMT</pubDate>
    </item>
    <item>
      <title>移动端文字垂直居中方案</title>
      <link>/articles/21.html</link>
      <guid isPermaLink="false">article:21</guid>
      <description>有过移动端开发经验的人，想必都对文字垂直居中头痛不已，因为使用常规手段实现文字垂直居中在部分 Android 手机上会出现文字偏上的情况，往往需要配合 line-height 或者 padding 进行微调，苦不堪言。 方案调研 下面是我尝...</description>
      <category>文字垂直居中</category>
      <category>SVG</category>
      <category>Canvas</category>
      <pubDate>Mon, 17 Oct 2022 02:18:00 GMT</pubDate>
    </item>
    <item>
      <title>深度学习简介</title>
      <link>/articles/19.html</link>
      <guid isPermaLink="false">article:19</guid>
      <description>随着一些 AIGC 产品的出现，如 Stable Diffusion、ChatGPT、GPT4 等，AI 再次进入大家的视野，体验过 ChatGPT 的都会说好，我目前已经把它当作学习工具了，Google 在做不出产品，真的可以说拜拜了。 ...</description>
      <category>深度学习</category>
      <category>多层感知机</category>
      <category>卷积神经网络</category>
      <category>生成对抗网络</category>
      <category>手写数字识别</category>
      <pubDate>Wed, 20 Sep 2023 15:02:28 GMT</pubDate>
    </item>
    <item>
      <title>IntersectionObserver</title>
      <link>/articles/63.html</link>
      <guid isPermaLink="false">article:63</guid>
      <description>如果我们需要监听某个元素是否出现在视口中，一般做法是监听 scroll 事件，然后查询元素离视口顶部的距离，但是监听 scroll 事件存在性能问题。 浏览器原生提供了 IntersectionObserver 监听器，可以监听某个元素是否...</description>
      <pubDate>Wed, 28 Sep 2022 10:56:00 GMT</pubDate>
    </item>
    <item>
      <title>C 语言中指针和数组的差异</title>
      <link>/articles/11.html</link>
      <guid isPermaLink="false">article:11</guid>
      <description>学 C 语言的时候，会提及数组是一种特殊类型的指针，数组名指向数组首元素的地址，但是经过个人实践发现数组并不能等价于指针，二者存在差异。 sizeof 使用 sizeof 运算符对数组和指针的操作结果不同 #include&lt;stdio.h&gt;...</description>
      <category>C</category>
      <category>指针</category>
      <category>数组</category>
      <pubDate>Thu, 07 Apr 2022 09:04:00 GMT</pubDate>
    </item>
    <item>
      <title>Ajax跨域</title>
      <link>/articles/15.html</link>
      <guid isPermaLink="false">article:15</guid>
      <description>本篇文章介绍什么是跨域，以及跨域的解决办法。 同源策略 什么是同源策略：同 domain(或IP)，同端口，同协议视为同一个域，一个域内的脚本仅仅具有本域内的权限，可以理解为本域脚本只能读写本域内的资源，而无法访问其它域的资源，这种安全限制...</description>
      <category>同源策略</category>
      <category>CORS</category>
      <category>Ajax</category>
      <category>JSONP</category>
      <pubDate>Wed, 22 Apr 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Z变换解差分方程的思考</title>
      <link>/articles/56.html</link>
      <guid isPermaLink="false">article:56</guid>
      <description>问题描述 今日碰到一道差分方程的题目，如下 已知 x(n) = \left(\dfrac{1}{2}\right)^n u(n) ， y(0) = 2 ， y(1) = 4 ，求全响应。 一般求解这种题目的思路很清晰，首先根据特征方程求出特...</description>
      <pubDate>Sun, 03 Nov 2019 07:21:23 GMT</pubDate>
    </item>
    <item>
      <title>方程与框图的转换</title>
      <link>/articles/9.html</link>
      <guid isPermaLink="false">article:9</guid>
      <description>在信号与系统中我们很容易碰到这种题目，给出框图，列出微分(差分方程)或者给出方程，画出框图，有进一步的还要求列出状态方程。这个问题一开始刚接触时确实令我听挺烦恼的，因为一开始没有抓住诀窍，后来想通了，便觉得十分的简单，现在这里记录一二，以便...</description>
      <category>数字信号处理</category>
      <category>Z变换</category>
      <category>差分方程</category>
      <category>方框图</category>
      <pubDate>Mon, 14 Oct 2019 08:14:00 GMT</pubDate>
    </item>
    <item>
      <title>1px 有多大</title>
      <link>/articles/4.html</link>
      <guid isPermaLink="false">article:4</guid>
      <description>现在有一个灵魂问题， 1px 的大小是多大? 要回答这个问题，首先要区分两种像素，一种是物理像素(或者称为设备像素)，一种是逻辑像素(或者称为设备独立像素、CSS 像素)，我们讨论的是一个 CSS 像素有多大。 屏幕是通过一个个的发光体发出...</description>
      <category>CSS</category>
      <category>px</category>
      <category>深入思考</category>
      <pubDate>Tue, 15 Feb 2022 02:15:35 GMT</pubDate>
    </item>
    <item>
      <title>2023年终总结</title>
      <link>/articles/58.html</link>
      <guid isPermaLink="false">article:58</guid>
      <description>时间飞逝，2023 年很快就过去了，是时候回顾一下自己的 2023。 工作 今年的工作体验有点像过山车，起起伏伏，但总体上看依然是螺旋上升的。 去年的组织架构调整，我从新技术应用组来到了端外 Web 组，不知道是不是因为疫情居家办公的原因还...</description>
      <pubDate>Mon, 01 Jan 2024 08:31:09 GMT</pubDate>
    </item>
    <item>
      <title>图的表示</title>
      <link>/docs/document/1/9.html</link>
      <guid isPermaLink="false">doc:9</guid>
      <description>首先我们来看看图的数据结构长什么样子 一个图它由顶点 Vertex 和边 Edge 组成，上图蓝色的节点表示顶点，而节点与节点之间的有条线连着，这就是顶点之间的边。为了在计算机中表示图，我们给图的顶点编了号，从 0 开始。在实际的模型中，顶...</description>
      <pubDate>Sat, 02 Dec 2023 12:22:00 GMT</pubDate>
    </item>
    <item>
      <title>哈希表</title>
      <link>/docs/document/1/31.html</link>
      <guid isPermaLink="false">doc:31</guid>
      <description>我们通过将我们要查找的某种数据类型转化为一个索引 index ，然后通过索引去数组中查找，这时它的复杂度就是 O(1) 级别的。而将某个数据类型转化为索引的函数我们就称为是哈希函数，比如说将 26 个小写字母转化为索引，我们可以这么写 in...</description>
      <pubDate>Thu, 07 Dec 2023 14:44:38 GMT</pubDate>
    </item>
    <item>
      <title>红黑树</title>
      <link>/docs/document/1/23.html</link>
      <guid isPermaLink="false">doc:23</guid>
      <description>2-3树 2-3 树的节点它可以有一个元素，也可以有两个元素，它也满足二分搜索树的性质 我们把含有两个孩子的节点称为 2 节点，含有 3 个孩子的节点称为 3 节点 2-3 树是一种绝对平衡的树，所谓绝对平衡的树指的是从根节点到任意一个叶子...</description>
      <pubDate>Wed, 06 Dec 2023 23:52:52 GMT</pubDate>
    </item>
    <item>
      <title>AVL 树</title>
      <link>/docs/document/1/22.html</link>
      <guid isPermaLink="false">doc:22</guid>
      <description>概念 我们在研究二分搜索树时发现，如果我们将数据顺序添加进树中时，它有可能会退化成一个链表，即所有的元素都添加到一个孩子上，这样树结构的优势就体现不出来，为了不使左右孩子的高度相差太大，我们需要对树进行调整，使树达到平衡，成为一棵平衡二叉树...</description>
      <pubDate>Wed, 06 Dec 2023 23:47:38 GMT</pubDate>
    </item>
    <item>
      <title>并查集</title>
      <link>/docs/document/1/21.html</link>
      <guid isPermaLink="false">doc:21</guid>
      <description>我们之前遇到的树结构都是由父亲指向孩子，但是并查集不一样，它是由孩子指向父亲的一种结构，并查集结构可以非常高效的回答连接问题(Connectivity Problem)，它可以很快的判断网络中节点的连接状态。并查集主要支持两个动作 unio...</description>
      <pubDate>Wed, 06 Dec 2023 12:26:48 GMT</pubDate>
    </item>
    <item>
      <title>Trie</title>
      <link>/docs/document/1/20.html</link>
      <guid isPermaLink="false">doc:20</guid>
      <description>Trie 树又称为字典树、前缀树。如果我们使用一般树结构去查询一个数据集里的单词，它的复杂度是 O(log n) ，但是如果我们使用 Trie 去查询单词的话，查询的复杂度只与单词的长度有关，与数据的规模无关。比如对于一个 规模的数据集，我...</description>
      <pubDate>Wed, 06 Dec 2023 01:01:10 GMT</pubDate>
    </item>
    <item>
      <title>线段树</title>
      <link>/docs/document/1/19.html</link>
      <guid isPermaLink="false">doc:19</guid>
      <description>对于有一类的问题，我们主要关心的是线段(区间)，比如说查询一个区间 [i, j] 内的最大值，最小值等等。假设你有一个网站，你想查询某年(或某年以后)的用户访问量，消费最多的用户等等，这些都是在某个区间内进行查询，一般线段树的区间是固定的，...</description>
      <pubDate>Wed, 06 Dec 2023 00:54:40 GMT</pubDate>
    </item>
    <item>
      <title>优先队列和堆</title>
      <link>/docs/document/1/17.html</link>
      <guid isPermaLink="false">doc:17</guid>
      <description>普通队列：先进先出，就像是我们在银行办业务或者是在超市买东西，但是考虑在医院，有病人有突发情况，这个时候容不得他去排队挂号了，这时他的优先级是比较高的，所以他需要得到优先的处理，像这种队列中的元素具有优先级的队列，我们把它称之为优先队列。在...</description>
      <pubDate>Wed, 06 Dec 2023 00:44:56 GMT</pubDate>
    </item>
    <item>
      <title>MutationObserver</title>
      <link>/articles/51.html</link>
      <guid isPermaLink="false">article:51</guid>
      <description>在复杂的网页应用中，DOM 结构会频繁的发生变化，有的时候我们需要根据变化来进行相应的操作，以往通过 Mutation Events 来监听 DOM 的变化，目前它已经废弃了，被 MutationObserver 所取代。 Mutation...</description>
      <pubDate>Tue, 11 Oct 2022 01:02:11 GMT</pubDate>
    </item>
    <item>
      <title>TypeScript 字面量类型及小技巧</title>
      <link>/articles/57.html</link>
      <guid isPermaLink="false">article:57</guid>
      <description>字面量类型。当通过 const 声明变量时，类型会被收缩为字面量类型 const a = &quot;Hello&quot;; 当使用 let 声明类型时，不会收缩为字面量类型，也比较合理，毕竟声明为 let 就表示可以继续被赋值，收缩为字面量没有意义。 le...</description>
      <pubDate>Sun, 16 Apr 2023 08:22:13 GMT</pubDate>
    </item>
    <item>
      <title>跑马灯动画续</title>
      <link>/articles/26.html</link>
      <guid isPermaLink="false">article:26</guid>
      <description>在实习的时候写下了《跑马灯动画》这篇文档，为了性能考虑，当时完全是用 CSS 实现的动画，后面了解到 Web Animation API，性能完全不亚于 CSS，于是有了想法，完全使用 JS 来实现动画。 跑马灯动画包括两部分： 跑马灯效果...</description>
      <category>Web Animation API</category>
      <category>跑马灯</category>
      <category>动画</category>
      <pubDate>Sat, 21 Oct 2023 15:17:53 GMT</pubDate>
    </item>
    <item>
      <title>ESLint</title>
      <link>/articles/27.html</link>
      <guid isPermaLink="false">article:27</guid>
      <description>ESLint 是代码检查工具，主要包含代码逻辑和代码风格： 代码逻辑： 使用了未声明的变量 存在未使用的变量 在函数式组件以外使用 React Hook ... ... 代码风格： 是否使用分号 使用单引号还是双引号 ... ... 自 v...</description>
      <pubDate>Mon, 23 Oct 2023 06:19:52 GMT</pubDate>
    </item>
    <item>
      <title>Tauri 踩坑与技巧</title>
      <link>/articles/30.html</link>
      <guid isPermaLink="false">article:30</guid>
      <description>Drag And Drop Tauri 默认不支持 H5 Drag And Drop API，需要在 tauri.config.json 中禁止 fileDropEnabled ，二者不能同时工作。 { // ... &quot;tauri&quot;: { ...</description>
      <category>Tauri</category>
      <category>踩坑</category>
      <pubDate>Sun, 26 Nov 2023 07:33:31 GMT</pubDate>
    </item>
    <item>
      <title>Babel 进行 Polyfill 的各种姿势</title>
      <link>/articles/31.html</link>
      <guid isPermaLink="false">article:31</guid>
      <description>Babel 可以帮助我们把最新的 JS 语法转译为较低版本的 JS 代码，使得我们可以同时兼顾开发效率和兼容性。Babel 将代码转译为低级版本代码时包含两部分： 语法，例如箭头函数，结构语法 API，例如 ES7 提出了 includes...</description>
      <pubDate>Tue, 26 Dec 2023 13:51:42 GMT</pubDate>
    </item>
    <item>
      <title>Git 对象初相识</title>
      <link>/articles/36.html</link>
      <guid isPermaLink="false">article:36</guid>
      <description>Git 对象，四种类型的对象： blob 对象 tree 对象 commit 对象 tag 对象 blob 对象 所有的文件都会被存储为一个 blob 对象，需要注意的是， blob 对象只存储文件的内容，对于文件的其它信息，例如文件名，修...</description>
      <pubDate>Sun, 07 Jan 2024 15:04:31 GMT</pubDate>
    </item>
    <item>
      <title>HTTPS</title>
      <link>/articles/46.html</link>
      <guid isPermaLink="false">article:46</guid>
      <description>如果你使用 HTTP 访问网站或者进行通信，你的一切都毫无秘密 ，因为你的所有信息都是明文传输的，并且你收到的信息都可能是伪造的，想象你访问一个需要输入私密信息的网站，但是网站的内容已经被别人偷偷的篡改过了，你提交的信息都提交到别人的服务器...</description>
      <pubDate>Thu, 02 May 2024 06:44:54 GMT</pubDate>
    </item>
    <item>
      <title>Math.trunc() 是一个取整函数，它的取整方式为去掉数字中的小数部分： ...</title>
      <link>/cards/696.html</link>
      <guid isPermaLink="false">card:696</guid>
      <description>Math.trunc() 是一个取整函数，它的取整方式为去掉数字中的小数部分： Math.trunc(1.2) // 1 Math.trunc(-1.2) // -1 下表显示了与其它取整方法的对比 方法 说明 正数(4.7) 负数(-4....</description>
      <category>JavaScript</category>
      <pubDate>Thu, 09 Apr 2026 03:06:35 GMT</pubDate>
    </item>
    <item>
      <title>isolation 属性用于控制元素是否应该创建一个新的层叠上下文（stacki...</title>
      <link>/cards/661.html</link>
      <guid isPermaLink="false">card:661</guid>
      <description>isolation 属性用于控制元素是否应该创建一个新的层叠上下文（stacking context）。 语法 isolation: auto | isolate; auto : 默认值。元素不会显式地创建一个新的层叠上下文，除非其他属性（...</description>
      <category>CSS/isolation</category>
      <category>CSS/层叠上下文</category>
      <pubDate>Sat, 03 Jan 2026 06:36:06 GMT</pubDate>
    </item>
    <item>
      <title>nonce 和 integrity 是用于增强 Web 安全两个属性： nonc...</title>
      <link>/cards/675.html</link>
      <guid isPermaLink="false">card:675</guid>
      <description>nonce 和 integrity 是用于增强 Web 安全两个属性： nonce 全称 Number used ONCE（一次性数字），是一种白名单机制来防止 XSS 攻击 如果没有 nonce ，那么攻击者注入的内联 script 脚本...</description>
      <category>HTML/nonce</category>
      <category>HTML/integrity</category>
      <category>安全/CSP</category>
      <pubDate>Thu, 22 Jan 2026 15:34:38 GMT</pubDate>
    </item>
    <item>
      <title>在浏览器中，通过 script 、 img 、 video 、 audio 等标...</title>
      <link>/cards/674.html</link>
      <guid isPermaLink="false">card:674</guid>
      <description>在浏览器中，通过 script 、 img 、 video 、 audio 等标签引用跨域资源时，出于安全考虑，浏览器会将此资源视为不透明（Opaque），所谓的不透明通俗讲就是“只可远观而不可亵玩”，即脚本可以执行，图片可以显示，音视频可...</description>
      <category>HTML/crossorigin</category>
      <category>安全/CORS</category>
      <pubDate>Thu, 22 Jan 2026 15:29:10 GMT</pubDate>
    </item>
    <item>
      <title>考虑这样一个场景：你依赖了 A，而 A 依赖了 B。突然 B 被发现存在 bug...</title>
      <link>/cards/694.html</link>
      <guid isPermaLink="false">card:694</guid>
      <description>考虑这样一个场景：你依赖了 A，而 A 依赖了 B。突然 B 被发现存在 bug 或者安全隐患，需要升级。但是 B 不是你直接依赖的，你只能等待 A 的维护者发布新版，这其中的等待时间完全不可控。所以如果能有一种方式直接修改 B 的版本就好...</description>
      <category>包管理器/pnpm</category>
      <pubDate>Tue, 07 Apr 2026 08:34:49 GMT</pubDate>
    </item>
    <item>
      <title>浏览器上传文件的两种方式： input 标签 拖拽 将 input 标签的 ty...</title>
      <link>/cards/39.html</link>
      <guid isPermaLink="false">card:39</guid>
      <description>浏览器上传文件的两种方式： input 标签 拖拽 将 input 标签的 type 设置为 file 即可上传文件 &lt;input id=&quot;fileInput&quot; type=&quot;file&quot; /&gt; const input = document.g...</description>
      <category>DOM</category>
      <pubDate>Mon, 10 Jul 2023 04:49:49 GMT</pubDate>
    </item>
    <item>
      <title>元组表示不同类型的多个值的集合，值使用括号包裹，之间使用逗号分隔， 元组的大小一...</title>
      <link>/cards/488.html</link>
      <guid isPermaLink="false">card:488</guid>
      <description>元组表示不同类型的多个值的集合，值使用括号包裹，之间使用逗号分隔， 元组的大小一旦确定就不能修改。 let t: (i32, bool, f64) = (1, true, 1.2); 元组的值通过下标来访问 t.0 // 1 t.1 // ...</description>
      <category>Rust/数据类型/元组</category>
      <pubDate>Wed, 17 Jul 2024 01:37:18 GMT</pubDate>
    </item>
    <item>
      <title>在 HTTP/1.0 的时代，每次发送请求都需要发起 TCP/IP 连接，服务器...</title>
      <link>/cards/688.html</link>
      <guid isPermaLink="false">card:688</guid>
      <description>在 HTTP/1.0 的时代，每次发送请求都需要发起 TCP/IP 连接，服务器在处理完这次响应之后，就会断开 TCP/IP 连接，这会导致性能问题： 每次请求都要进行 TCP/IP 三次握手和四次挥手，这个过程会耗费大量时间以及占用网络资...</description>
      <category>HTTP/长连接</category>
      <category>HTTP/Content-Length</category>
      <category>HTTP/Transfer-Encoding</category>
      <category>概念对比</category>
      <pubDate>Mon, 23 Mar 2026 09:49:56 GMT</pubDate>
    </item>
    <item>
      <title>moveBefore(nodeToMove, referenceNode) 函数...</title>
      <link>/cards/689.html</link>
      <guid isPermaLink="false">card:689</guid>
      <description>moveBefore(nodeToMove, referenceNode) 函数的作用是把 nodeToMove 插入到 referenceNode 之前， 同时保留该节点及其子节点的所有内部状态。 referenceNode 可以设置为 ...</description>
      <category>DOM/moveBefore</category>
      <pubDate>Wed, 25 Mar 2026 02:18:20 GMT</pubDate>
    </item>
    <item>
      <title>tabIndex 是 HTML 的一个全局属性，它控制这个元素是否可以通过键盘 ...</title>
      <link>/cards/691.html</link>
      <guid isPermaLink="false">card:691</guid>
      <description>tabIndex 是 HTML 的一个全局属性，它控制这个元素是否可以通过键盘 Tab 来聚焦元素，以及通过 Tab 键访问时的访问顺序。 通过 Tab 键按序访问下一个，通过 Shift + Tab 可以访问到上一个。 tabIndex ...</description>
      <category>HTML/tabIndex</category>
      <pubDate>Mon, 30 Mar 2026 10:23:34 GMT</pubDate>
    </item>
    <item>
      <title>Transfer-Encoding 指定了网络节点之间传输消息时的编码方式，取值...</title>
      <link>/cards/592.html</link>
      <guid isPermaLink="false">card:592</guid>
      <description>Transfer-Encoding 指定了网络节点之间传输消息时的编码方式，取值有： chunked gzip compress deflate 最常见的取值是 chunked ，表示分块传输，常用于动态生成内容，不知道内容长度的时候，或者...</description>
      <category>HTTP/Transfer-Encoding</category>
      <pubDate>Mon, 14 Jul 2025 03:13:00 GMT</pubDate>
    </item>
    <item>
      <title>服务端 Jupyter Notebook 部署流程。 配置 Mini Conda...</title>
      <link>/cards/481.html</link>
      <guid isPermaLink="false">card:481</guid>
      <description>服务端 Jupyter Notebook 部署流程。 配置 Mini Conda 下载 Mini Conda mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Mi...</description>
      <category>软件部署</category>
      <category>Python/Jupyter</category>
      <pubDate>Sat, 29 Jun 2024 05:09:12 GMT</pubDate>
    </item>
    <item>
      <title>众所周知，JavaScript 是单线程的，并且 UI 渲染和主线程使用的是同一...</title>
      <link>/cards/87.html</link>
      <guid isPermaLink="false">card:87</guid>
      <description>众所周知，JavaScript 是单线程的，并且 UI 渲染和主线程使用的是同一个线程，如果在主线程中执行耗时长的计算操作，就会导致页面无法响应用户的操作，导致页面卡死。 那对于耗时比较长的操作怎么办呢，两种思路： 化繁为简，是否可以将操作...</description>
      <category>浏览器/Web Worker</category>
      <pubDate>Wed, 12 Jul 2023 14:50:41 GMT</pubDate>
    </item>
    <item>
      <title>application/x-www-form-unlencoded 和 mult...</title>
      <link>/cards/692.html</link>
      <guid isPermaLink="false">card:692</guid>
      <description>application/x-www-form-unlencoded 和 multipart/formdata 是通过 POST 提交表单时的两种数据编码方式。 application/x-www-form-unlencoded 是默认的提交...</description>
      <category>HTML/form</category>
      <category>概念对比</category>
      <category>JavaScript/fetch</category>
      <pubDate>Wed, 01 Apr 2026 12:49:19 GMT</pubDate>
    </item>
    <item>
      <title>在 lodash 提供的 防抖和节流 函数中，出了时间窗口外，还会提供两个选项 ...</title>
      <link>/cards/662.html</link>
      <guid isPermaLink="false">card:662</guid>
      <description>在 lodash 提供的 防抖和节流 函数中，出了时间窗口外，还会提供两个选项 leading 和 trailing 两个布尔值的参数，用以控制在时间窗口开始和结束时是否执行。 leading ，表示在时间窗口开始时立即执行，为 true ...</description>
      <category>JavaScript</category>
      <pubDate>Sat, 03 Jan 2026 10:18:51 GMT</pubDate>
    </item>
    <item>
      <title>dialog 元素和表单的联动 当通过 showModal 打开 dialog ...</title>
      <link>/cards/666.html</link>
      <guid isPermaLink="false">card:666</guid>
      <description>dialog 元素和表单的联动 当通过 showModal 打开 dialog 时，会自动聚焦到 dialog 中第一个可聚焦的元素，关闭时可将焦点恢复， 点击此处示例查看 const handleLoginSubmit = (e) =&gt; ...</description>
      <category>HTML/dialog</category>
      <category>HTML/form</category>
      <pubDate>Wed, 14 Jan 2026 15:00:42 GMT</pubDate>
    </item>
    <item>
      <title>is 是 HTML 的全局属性，主要用于 Web Components 技术中的...</title>
      <link>/cards/670.html</link>
      <guid isPermaLink="false">card:670</guid>
      <description>is 是 HTML 的全局属性，主要用于 Web Components 技术中的自定义内置元素，该属性允许你在保留标准 HTML 元素（如 &lt;button&gt; , &lt;input&gt; , &lt;ul&gt; 等）原有语义、样式和行为的基础上，赋予它们自定义...</description>
      <category>Web Components</category>
      <category>HTML/is</category>
      <pubDate>Sun, 18 Jan 2026 11:01:15 GMT</pubDate>
    </item>
    <item>
      <title>当表单数据构造完成后，如正常提交表单发送网络请求前或者调用 new FormDa...</title>
      <link>/cards/672.html</link>
      <guid isPermaLink="false">card:672</guid>
      <description>当表单数据构造完成后，如正常提交表单发送网络请求前或者调用 new FormData(form) 的时候，会触发 formdata 事件，常利用该事件在表单提交前将拦截并修改数据。在此之前，我们会添加一个隐藏的 &lt;input hidden ...</description>
      <category>HTML/form</category>
      <category>JavaScript/表单</category>
      <pubDate>Thu, 22 Jan 2026 12:46:41 GMT</pubDate>
    </item>
    <item>
      <title>在浏览器中，当导入模块（ import 或 import() ）时仅支持相对路径...</title>
      <link>/cards/678.html</link>
      <guid isPermaLink="false">card:678</guid>
      <description>在浏览器中，当导入模块（ import 或 import() ）时仅支持相对路径或者绝对路径 URL import utils from &apos;./modules/utils.js&apos;; import React from &apos;https://es...</description>
      <category>HTML/Import Map</category>
      <pubDate>Fri, 23 Jan 2026 14:39:35 GMT</pubDate>
    </item>
    <item>
      <title>AI 编程漫谈</title>
      <link>/articles/75.html</link>
      <guid isPermaLink="false">article:75</guid>
      <description>我有一个笔记软件，这是因为当时使用的笔记软件 Obsidian 编辑体验极差，于是自己萌生了一个想法：写一个类似于 Typora 的所见即所得 Markdown 编辑器。在 2023 年的劳动节，我写下了第一行代码；到今年，还差一个半月就三...</description>
      <pubDate>Sun, 15 Mar 2026 12:01:09 GMT</pubDate>
    </item>
    <item>
      <title>Tapable 是 Webpack 实现插件机制的模块，在 Webpack 的内...</title>
      <link>/cards/388.html</link>
      <guid isPermaLink="false">card:388</guid>
      <description>Tapable 是 Webpack 实现插件机制的模块，在 Webpack 的内部通过 Tapable 预定义各个阶段的 Hook，插件可以通过为这些 Hook 注册处理事件来获取该阶段的编译信息甚至修改编译信息。 Tapable 有点类似...</description>
      <pubDate>Sat, 16 Dec 2023 14:17:46 GMT</pubDate>
    </item>
    <item>
      <title>不同路径</title>
      <link>/docs/document/1/40.html</link>
      <guid isPermaLink="false">doc:40</guid>
      <description>题目介绍 在二维网格 grid 上，有 4 种类型的方格： 1 表示起始方格。且只有一个起始方格 2 表示结束方格，且只有一个结束方格 0 表示我们可以走过的空方格 -1 表示我们无法跨越的障碍 返回在四个方向（上、下、左、右）上行走时，从...</description>
      <pubDate>Sat, 09 Dec 2023 01:58:20 GMT</pubDate>
    </item>
    <item>
      <title>哈密尔顿回路</title>
      <link>/docs/document/1/39.html</link>
      <guid isPermaLink="false">doc:39</guid>
      <description>哈密尔顿回路 1859年，爱尔兰数学家哈密尔顿（Hamilton）提出下列周游世界的游戏：在正十二面体的二十个顶点上依次标记伦敦、巴黎、莫斯科等世界著名大城市，正十二面体的棱表示连接这些城市的路线。试问能否在图中做一次旅行，从顶点到顶点，沿...</description>
      <pubDate>Fri, 08 Dec 2023 18:21:12 GMT</pubDate>
    </item>
    <item>
      <title>防抖与节流</title>
      <link>/articles/50.html</link>
      <guid isPermaLink="false">article:50</guid>
      <description>防抖与节流是两个出于性能考虑提出的概念，如果在短时间内多次触发同一函数，可能会产生页面的卡顿，以及性能的降低，针对这种情况，提出了防抖与节流两个解决方案。 防抖与节流的概念 为了解释如上的两个概念，我们以一个例子开始。有一个搜索框，当用户输...</description>
      <pubDate>Thu, 30 Apr 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>TypeScript 是基于结构的类型系统，只要两个类型的结构相同，那么就是兼容...</title>
      <link>/cards/685.html</link>
      <guid isPermaLink="false">card:685</guid>
      <description>TypeScript 是基于结构的类型系统，只要两个类型的结构相同，那么就是兼容的，就可以互相赋值。 但是有的时候虽然结构相同，但是业务语义不同，在这种情况下进行互相赋值会导致业务逻辑错误，但是由于 TypeScript 的机制，无法在编译...</description>
      <category>TypeScript/Brand Type</category>
      <pubDate>Wed, 25 Feb 2026 14:37:30 GMT</pubDate>
    </item>
    <item>
      <title>GSAP 是一个动画库，引用官网的一段话 Animation ultimatel...</title>
      <link>/cards/135.html</link>
      <guid isPermaLink="false">card:135</guid>
      <description>GSAP 是一个动画库，引用官网的一段话 Animation ultimately boils down to changing property values many times per second, making something...</description>
      <category>JavaScript/三方库/GSAP</category>
      <pubDate>Sun, 16 Jul 2023 06:45:05 GMT</pubDate>
    </item>
    <item>
      <title>instanceof 是用来判断某个对象是否是某个函数的实例，如果该函数在这个对...</title>
      <link>/cards/252.html</link>
      <guid isPermaLink="false">card:252</guid>
      <description>instanceof 是用来判断某个对象是否是某个函数的实例，如果该函数在这个对象的原型链上，那么这个对象就是这个函数的实例。在 ES6 中，我们可以 Symbol.hasInstance 来改变这一默认行为 obj instanceof ...</description>
      <category>JavaScript/Symbol</category>
      <category>JavaScript/原型</category>
      <category>JavaScript/instanceof</category>
      <pubDate>Wed, 02 Aug 2023 14:24:25 GMT</pubDate>
    </item>
    <item>
      <title>癌症怎么导致人死亡的，每个人都有差异，死亡原因各不相同，但大致上和器官衰竭有关。...</title>
      <link>/cards/684.html</link>
      <guid isPermaLink="false">card:684</guid>
      <description>癌症怎么导致人死亡的，每个人都有差异，死亡原因各不相同，但大致上和器官衰竭有关。 脑癌，肿瘤压迫重要神经导致死亡 肺癌，生长填充肺部空间，导致氧气交换能力下降，最后因肺衰竭死亡 血癌，白血病细胞抢夺正常红细胞和免疫细胞生存空间，导致系统性缺...</description>
      <category>医学/癌症</category>
      <pubDate>Sat, 14 Feb 2026 05:51:36 GMT</pubDate>
    </item>
    <item>
      <title>密码学是什么？密码学是保护协议免受攻击的科学。 什么是协议？协议是为了完成某一件...</title>
      <link>/cards/681.html</link>
      <guid isPermaLink="false">card:681</guid>
      <description>密码学是什么？密码学是保护协议免受攻击的科学。 什么是协议？协议是为了完成某一件事情必须遵守的一系列步骤。 密码学算法通常也被称为密码学原语，可以将密码学原语看作是密码学中一种最小算法的构造，常和其它原语一起一起构造新协议。</description>
      <category>密码学</category>
      <pubDate>Thu, 05 Feb 2026 01:14:00 GMT</pubDate>
    </item>
    <item>
      <title>肿瘤和癌症的关系。其实二者是两种分类： 肿瘤表示固体 癌症表示恶性 肿瘤不一定是...</title>
      <link>/cards/683.html</link>
      <guid isPermaLink="false">card:683</guid>
      <description>肿瘤和癌症的关系。其实二者是两种分类： 肿瘤表示固体 癌症表示恶性 肿瘤不一定是恶性，因此肿瘤≠癌症，恶性肿瘤才是癌症，除了恶性肿瘤外，癌症还包括血癌。 癌症＝恶性肿瘤+血癌 肿瘤＝良性肿瘤+恶性肿瘤 肿瘤的严重性和肿瘤的大小没有关系，只要...</description>
      <category>医学/癌症</category>
      <category>医学/肿瘤</category>
      <pubDate>Sat, 14 Feb 2026 05:17:36 GMT</pubDate>
    </item>
    <item>
      <title>捕获信号，基本形式 trap commands signal 当捕获到 sign...</title>
      <link>/cards/86.html</link>
      <guid isPermaLink="false">card:86</guid>
      <description>捕获信号，基本形式 trap commands signal 当捕获到 signal 信号，执行 commands #!/bin/zsh trap &quot;echo &apos;Sorry, I trap the Ctrl + C signal.&apos;&quot; SI...</description>
      <category>Shell编程</category>
      <pubDate>Wed, 12 Jul 2023 14:43:33 GMT</pubDate>
    </item>
    <item>
      <title>DOM 树借鉴了家庭族谱的概念，使用父亲、孩子、兄弟等亲属关系来描述节点之间的关...</title>
      <link>/cards/199.html</link>
      <guid isPermaLink="false">card:199</guid>
      <description>DOM 树借鉴了家庭族谱的概念，使用父亲、孩子、兄弟等亲属关系来描述节点之间的关系，我们将对如下 DOM 树来描述节点之间的关系 一个节点都有一个 childNodes 属性，它保存着它的所有子节点，该属性是一个 NodeList 对象，它...</description>
      <category>DOM</category>
      <pubDate>Thu, 27 Jul 2023 01:20:56 GMT</pubDate>
    </item>
    <item>
      <title>在复杂的网页应用中，DOM 结构会频繁的发生变化，有的时候我们需要根据变化来进行...</title>
      <link>/cards/148.html</link>
      <guid isPermaLink="false">card:148</guid>
      <description>在复杂的网页应用中，DOM 结构会频繁的发生变化，有的时候我们需要根据变化来进行相应的操作，以往通过 Mutation Events 来监听 DOM 的变化，目前它已经废弃了，被 MutationObserver 所取代。 Mutation...</description>
      <category>DOM/Mutation Observer</category>
      <pubDate>Mon, 24 Jul 2023 00:49:54 GMT</pubDate>
    </item>
    <item>
      <title>image-set() 是 CSS 用来处理响应式图片的，让浏览器从给定集合中选...</title>
      <link>/cards/680.html</link>
      <guid isPermaLink="false">card:680</guid>
      <description>image-set() 是 CSS 用来处理响应式图片的，让浏览器从给定集合中选择最合适 CSS 图像的方法，比如可以根据像素密度、图片类型来选择合适的图片。 它的 CSS 语法 为： image-set( &lt;image-set-optio...</description>
      <category>CSS/函数/image-set</category>
      <pubDate>Mon, 26 Jan 2026 13:34:09 GMT</pubDate>
    </item>
    <item>
      <title>undefined 和 null 的对比： 相同点 都是假值，转化为 Boole...</title>
      <link>/cards/667.html</link>
      <guid isPermaLink="false">card:667</guid>
      <description>undefined 和 null 的对比： 相同点 都是假值，转化为 Boolean 都是 false Boolean(undefined) // -&gt; true Boolean(null) // -&gt; true 通过 == 比较时返回 t...</description>
      <category>JavaScript</category>
      <category>概念对比</category>
      <pubDate>Fri, 16 Jan 2026 10:42:57 GMT</pubDate>
    </item>
    <item>
      <title>表单： 表单提交，submit vs requestsubmit dialog ...</title>
      <link>/cards/677.html</link>
      <guid isPermaLink="false">card:677</guid>
      <description>表单： 表单提交，submit vs requestsubmit dialog 和 form 的联动 formdata 事件 axios 提交表单的方法 表单验证伪类 field-sizing: content，表单内容自适应</description>
      <pubDate>Thu, 22 Jan 2026 15:52:33 GMT</pubDate>
    </item>
    <item>
      <title>axios 提交表单数据的方法。 直接 new FormData() 发送 co...</title>
      <link>/cards/302.html</link>
      <guid isPermaLink="false">card:302</guid>
      <description>axios 提交表单数据的方法。 直接 new FormData() 发送 const formData = new FormData(); formData.append(&apos;user&apos;, &apos;Alice&apos;); formData.append...</description>
      <category>JavaScript/网络/axios</category>
      <category>JavaScript/表单</category>
      <pubDate>Fri, 25 Aug 2023 01:28:02 GMT</pubDate>
    </item>
    <item>
      <title>Web 安全： CSRF、Cookie 和 SameSite XSS nonce...</title>
      <link>/cards/676.html</link>
      <guid isPermaLink="false">card:676</guid>
      <description>Web 安全： CSRF、Cookie 和 SameSite XSS nonce 和 integrity crossorigin credentials</description>
      <pubDate>Thu, 22 Jan 2026 15:44:09 GMT</pubDate>
    </item>
    <item>
      <title>submit 和 requestSubmit 都是用来提交表单的，但是在行为上有...</title>
      <link>/cards/654.html</link>
      <guid isPermaLink="false">card:654</guid>
      <description>submit 和 requestSubmit 都是用来提交表单的，但是在行为上有所不同： submit 会直接发送 HTTP 请求提交表单数据，绕过原生的 HTML 校验，也不会触发 submit 事件，因此如果通过 addEventLis...</description>
      <category>概念对比</category>
      <category>HTML/form</category>
      <category>JavaScript/表单</category>
      <pubDate>Wed, 31 Dec 2025 10:55:14 GMT</pubDate>
    </item>
    <item>
      <title>inert 是 HTML 的一个全局布尔属性，它指示浏览器忽略该元素以及子元素，...</title>
      <link>/cards/671.html</link>
      <guid isPermaLink="false">card:671</guid>
      <description>inert 是 HTML 的一个全局布尔属性，它指示浏览器忽略该元素以及子元素，无法与该元素进行任何交互，看得见摸不着。 设置 inert 属性后： 无法触发任何鼠标事件，包括点击、鼠标移动、触摸、指针事件等 文本内容无法选中，就像设置了 ...</description>
      <category>HTML/inert</category>
      <category>CSS/interactivity</category>
      <pubDate>Sun, 18 Jan 2026 12:05:34 GMT</pubDate>
    </item>
    <item>
      <title>JWT 全称 JSON Web Token，是一种开放标准（RFC 7519），...</title>
      <link>/cards/669.html</link>
      <guid isPermaLink="false">card:669</guid>
      <description>JWT 全称 JSON Web Token，是一种开放标准（RFC 7519），用以在各方通过 JSON 来安全地进行 身份验证 和 信息交换 。 身份验证：可以把 JWT 看作是门禁卡，在需要验证的地方，只要出示此门禁卡仅可，签名验证通过...</description>
      <category>JWT</category>
      <category>安全/签名</category>
      <pubDate>Sun, 18 Jan 2026 08:57:28 GMT</pubDate>
    </item>
    <item>
      <title>在 TypeScript 中使用 useRef 来获取 DOM 对象，会报类型错...</title>
      <link>/cards/395.html</link>
      <guid isPermaLink="false">card:395</guid>
      <description>在 TypeScript 中使用 useRef 来获取 DOM 对象，会报类型错误 function App() { const ref = useRef&lt;HTMLDivElement&gt;(); return ( &lt;div ref={ref}...</description>
      <category>React/useRef</category>
      <category>技巧/React</category>
      <category>技巧/TypeScript</category>
      <category>React/技巧</category>
      <category>TypeScript/技巧</category>
      <pubDate>Tue, 09 Jan 2024 14:00:56 GMT</pubDate>
    </item>
    <item>
      <title>假设有一个非常复杂的类型运算 export type T1 = &apos;1&apos; | &apos;2...</title>
      <link>/cards/604.html</link>
      <guid isPermaLink="false">card:604</guid>
      <description>假设有一个非常复杂的类型运算 export type T1 = &apos;1&apos; | &apos;2&apos; | &apos;3&apos;; export type T2 = &apos;4&apos; | &apos;5&apos;; export type T3 = &apos;6&apos; | &apos;7&apos;; export type T4 ...</description>
      <category>TypeScript/技巧</category>
      <category>技巧/TypeScript</category>
      <pubDate>Wed, 23 Jul 2025 00:44:07 GMT</pubDate>
    </item>
    <item>
      <title>通过关键字 extends 即可来继承一个类，继承自其它类的类称为子类，或者派生...</title>
      <link>/cards/281.html</link>
      <guid isPermaLink="false">card:281</guid>
      <description>通过关键字 extends 即可来继承一个类，继承自其它类的类称为子类，或者派生类。在子类的构造方法 constructor 中， 必须首先通过调用 super 方法来调用父类的构造函数 ，它会在这里初始化 this ，如果没有调用 sup...</description>
      <category>JavaScript/类</category>
      <pubDate>Tue, 15 Aug 2023 15:10:55 GMT</pubDate>
    </item>
    <item>
      <title>CSS 中的 margin 属性在垂直方向上有时会进行合并（在不设置 write...</title>
      <link>/cards/311.html</link>
      <guid isPermaLink="false">card:311</guid>
      <description>CSS 中的 margin 属性在垂直方向上有时会进行合并（在不设置 write-mode 的情况下），有以下三种情况的 margin 合并： 兄弟元素之间 margin 的合并 父子元素之间 margin 的合并 空元素上下 margin...</description>
      <category>CSS/margin</category>
      <pubDate>Sun, 10 Sep 2023 05:36:45 GMT</pubDate>
    </item>
    <item>
      <title>:valid 和 :invalid 是用于表单验证的伪类， :valid 匹配验...</title>
      <link>/cards/668.html</link>
      <guid isPermaLink="false">card:668</guid>
      <description>:valid 和 :invalid 是用于表单验证的伪类， :valid 匹配验证通过的表单元素，而 :invalid 匹配验证未通过的表单元素，此二者的特点是当页面加载后就会进行匹配，这可能会带来一些体验上的问题，比如输入框要求必填，页面...</description>
      <category>CSS/选择器</category>
      <pubDate>Sat, 17 Jan 2026 09:51:24 GMT</pubDate>
    </item>
    <item>
      <title>Map 和 Set 的迭代顺序： 和插入顺序相同 。 const map = n...</title>
      <link>/cards/563.html</link>
      <guid isPermaLink="false">card:563</guid>
      <description>Map 和 Set 的迭代顺序： 和插入顺序相同 。 const map = new Map(); map.set(&quot;b&quot;, 2); map.set(&quot;a&quot;, 1); map.set(&quot;d&quot;, 4); map.set(&quot;c&quot;, 3); co...</description>
      <category>JavaScript/Map</category>
      <category>JavaScript/Set</category>
      <category>面试题</category>
      <pubDate>Sun, 13 Apr 2025 07:03:37 GMT</pubDate>
    </item>
    <item>
      <title>在 DOM 中，提供了很多方式来修改元素的属性： 通过 DOM 对象属性直接修改...</title>
      <link>/cards/527.html</link>
      <guid isPermaLink="false">card:527</guid>
      <description>在 DOM 中，提供了很多方式来修改元素的属性： 通过 DOM 对象属性直接修改 通过 setAttribute 修改 通过 dataset 修改 首先看通过 DOM 对象修改属性和通过 setAttribute 修改属性的异同，首先相同点...</description>
      <pubDate>Sat, 01 Mar 2025 08:29:17 GMT</pubDate>
    </item>
    <item>
      <title>top-layer 浏览器的特殊层级，位于视口的最顶层，在页面的所有内容之上（包...</title>
      <link>/cards/664.html</link>
      <guid isPermaLink="false">card:664</guid>
      <description>top-layer 浏览器的特殊层级，位于视口的最顶层，在页面的所有内容之上（包括 z-index 最高的元素），它是为了解决特殊的 UI 需求（如全屏、模态窗等）。 无论元素位于 DOM 树的任何层级，也不论 z-index 是什么（如 ...</description>
      <category>CSS/Top Layer</category>
      <category>CSS/层叠上下文</category>
      <pubDate>Tue, 13 Jan 2026 00:09:15 GMT</pubDate>
    </item>
    <item>
      <title>pnpm -C 或者 pnpm --dir 的作用是指定命令执行时的工作目录 p...</title>
      <link>/cards/663.html</link>
      <guid isPermaLink="false">card:663</guid>
      <description>pnpm -C 或者 pnpm --dir 的作用是指定命令执行时的工作目录 pnpm -C &lt;path&gt; &lt;command&gt; 等价于 cd &lt;path&gt; &amp;&amp; pnpm &lt;command&gt; 比如说对于一个 monorepo 项目，需要在某...</description>
      <category>包管理器/pnpm</category>
      <category>使用技巧/pnpm</category>
      <pubDate>Sun, 04 Jan 2026 14:32:17 GMT</pubDate>
    </item>
    <item>
      <title>防抖和节流都是防止短时间内多次触发的技术。防抖是为了防止抖动，例如一个表单的提交...</title>
      <link>/cards/144.html</link>
      <guid isPermaLink="false">card:144</guid>
      <description>防抖和节流都是防止短时间内多次触发的技术。防抖是为了防止抖动，例如一个表单的提交，用户由于手抖，点了两次提交，如果没有使用防抖，就会发出两次请求，可能造成错误的结果；而节流是为了限制触发的频率，比如我们想监听窗口的滚动事件，如果每次事件触发...</description>
      <category>JavaScript</category>
      <pubDate>Sun, 23 Jul 2023 08:18:48 GMT</pubDate>
    </item>
    <item>
      <title>下载本地包的方法： 使用相对路径或者本地路径直接下载 npm install ....</title>
      <link>/cards/660.html</link>
      <guid isPermaLink="false">card:660</guid>
      <description>下载本地包的方法： 使用相对路径或者本地路径直接下载 npm install ./local-lib npm install /Users/xxx/local-lib 在 package.json 通过 file 协议指定本地下载路径 { ...</description>
      <category>包管理器/npm</category>
      <pubDate>Sat, 03 Jan 2026 06:32:55 GMT</pubDate>
    </item>
    <item>
      <title>lh 是相对长度单位，表示的当前的行高。不管当前 lh 是什么值，都会最终计算为...</title>
      <link>/cards/657.html</link>
      <guid isPermaLink="false">card:657</guid>
      <description>lh 是相对长度单位，表示的当前的行高。不管当前 lh 是什么值，都会最终计算为一个像素值，然后 lh 就取这个像素值。 比如不管字体大小还有行高是多少，都希望最多显示三行文字，那么就可以设置 max-height: 3lh 又比如对文本输...</description>
      <category>CSS/line-height</category>
      <pubDate>Fri, 02 Jan 2026 10:28:51 GMT</pubDate>
    </item>
    <item>
      <title>removeChild 是用来删除节点的，该方法接收一个参数，就是你要删除的节点...</title>
      <link>/cards/202.html</link>
      <guid isPermaLink="false">card:202</guid>
      <description>removeChild 是用来删除节点的，该方法接收一个参数，就是你要删除的节点，被删除的节点将会作为返回值返回，如下图 被删除的节点仍然属于文档树，但是在文档树中已经没有了它的位置。</description>
      <category>DOM</category>
      <pubDate>Thu, 27 Jul 2023 01:31:53 GMT</pubDate>
    </item>
    <item>
      <title>要指定超类，可在 class 语句中的类名后加上超类名，并将其用圆括号括起 cl...</title>
      <link>/cards/464.html</link>
      <guid isPermaLink="false">card:464</guid>
      <description>要指定超类，可在 class 语句中的类名后加上超类名，并将其用圆括号括起 class Filter: def init(self): self.blocked = [] def filter(self, sequence): return...</description>
      <category>Python/类</category>
      <pubDate>Mon, 24 Jun 2024 10:50:34 GMT</pubDate>
    </item>
    <item>
      <title>当一个元素获得焦点是会触发 focusin 和 focus 事件，而当一个元素失...</title>
      <link>/cards/656.html</link>
      <guid isPermaLink="false">card:656</guid>
      <description>当一个元素获得焦点是会触发 focusin 和 focus 事件，而当一个元素失去焦点时会触发 focusout 和 blur 事件。 假设当前聚焦在元素 A，然后将焦点聚焦到了 B，那么触发的顺序是 blur(A) -&gt; focusout...</description>
      <category>DOM/事件模型</category>
      <category>概念对比</category>
      <pubDate>Thu, 01 Jan 2026 08:42:27 GMT</pubDate>
    </item>
    <item>
      <title>img 的 sizes 属性是用来完成 响应式图片 的核心技术，需要配合 src...</title>
      <link>/cards/658.html</link>
      <guid isPermaLink="false">card:658</guid>
      <description>img 的 sizes 属性是用来完成 响应式图片 的核心技术，需要配合 srcset 使用。 在下载图片的时候，浏览器可能还不知道需要下载多大的图片，这个时候就可以通过 sizes 属性来对浏览器进行提示，浏览器结合视口大小和 dpr ，...</description>
      <category>HTML/img/sizes</category>
      <category>浏览器/渲染机制</category>
      <pubDate>Fri, 02 Jan 2026 12:30:16 GMT</pubDate>
    </item>
    <item>
      <title>软件公司的两种管理管理方式： Widget Factories（小工厂模式） 认...</title>
      <link>/cards/304.html</link>
      <guid isPermaLink="false">card:304</guid>
      <description>软件公司的两种管理管理方式： Widget Factories（小工厂模式） 认为人是懒惰的，能不干活就不干活，甚至逃避干活，对集体的目标并不关心。于是通过强组织的解构对人员进行管理。喜欢谈论资源（人也被看作是一种资源）、流程、效率和可复用...</description>
      <category>杂</category>
      <category>公司管理</category>
      <pubDate>Sun, 27 Aug 2023 02:42:08 GMT</pubDate>
    </item>
    <item>
      <title>stopPropagation 和 stopImmediatePropagati...</title>
      <link>/cards/524.html</link>
      <guid isPermaLink="false">card:524</guid>
      <description>stopPropagation 和 stopImmediatePropagation 区别是什么？ 二者的作用都是阻止事件冒泡，不同点在于执行 stopPropagation 后，如果当前元素还有未执行的事件处理器，那么会继续执行，而如果使...</description>
      <category>DOM/事件模型</category>
      <pubDate>Sun, 23 Feb 2025 06:10:18 GMT</pubDate>
    </item>
    <item>
      <title>浏览器的事件模型定义了事件在元素上的触发顺序，根据 DOM Level 2 标准...</title>
      <link>/cards/655.html</link>
      <guid isPermaLink="false">card:655</guid>
      <description>浏览器的事件模型定义了事件在元素上的触发顺序，根据 DOM Level 2 标准，事件模型分为三个阶段： 捕获阶段：事件从 window 向下传递到目标元素， Window → Document → html → body → ... → ...</description>
      <category>DOM/事件模型</category>
      <pubDate>Thu, 01 Jan 2026 06:09:48 GMT</pubDate>
    </item>
    <item>
      <title>field-sizing 属性可以控制表单元素的大小，在一般情况下表单元素的大小...</title>
      <link>/cards/653.html</link>
      <guid isPermaLink="false">card:653</guid>
      <description>field-sizing 属性可以控制表单元素的大小，在一般情况下表单元素的大小是固定的，例如对于 input 元素，如果内容超出了宽度，那么内容会横向滚动，对于 textarea 元素，我们设定了 rows ，超出 rows 后也会发生滚...</description>
      <category>CSS</category>
      <pubDate>Wed, 31 Dec 2025 06:31:44 GMT</pubDate>
    </item>
    <item>
      <title>在琢磨 破窗效应 和 滑梯效应 时，我发现这两个概念非常相似：它们都在强调“第一...</title>
      <link>/cards/652.html</link>
      <guid isPermaLink="false">card:652</guid>
      <description>在琢磨 破窗效应 和 滑梯效应 时，我发现这两个概念非常相似：它们都在强调“第一步”——无论是打破第一扇窗，还是踏上滑梯的顶端，都会让事态不可避免地滑向混乱。 但仔细拆解后，会发现两者的侧重点其实大有径庭： 破窗效应 ：更侧重于 环境的暗示...</description>
      <category>概念对比</category>
      <pubDate>Wed, 31 Dec 2025 01:28:20 GMT</pubDate>
    </item>
    <item>
      <title>link 和 @import 引入 CSS 的区别： 语法 link 是 HTM...</title>
      <link>/cards/586.html</link>
      <guid isPermaLink="false">card:586</guid>
      <description>link 和 @import 引入 CSS 的区别： 语法 link 是 HTML 标签，在 HTML 文件中使用 @import 是 CSS 语法，只能在 CSS 文件中使用 加载 link 加载时不影响渲染 @import 需要等待前面...</description>
      <category>概念对比</category>
      <category>面试题</category>
      <category>CSS</category>
      <pubDate>Wed, 23 Apr 2025 10:45:19 GMT</pubDate>
    </item>
    <item>
      <title>预后（Prognosis）是一个医学术语，是医生基于患者当前的状态，对疾病的发展...</title>
      <link>/cards/648.html</link>
      <guid isPermaLink="false">card:648</guid>
      <description>预后（Prognosis）是一个医学术语，是医生基于患者当前的状态，对疾病的发展趋势和最终局面所做的预测。 常见描述： 预后良好：治疗效果好，完全康复概率很大 预后一般：可能会留下一些后遗症，恢复较慢，但不危及生命 预后不良：治疗难度大，病...</description>
      <category>医学/术语</category>
      <pubDate>Tue, 30 Dec 2025 00:28:38 GMT</pubDate>
    </item>
    <item>
      <title>煤气灯效应，本质上是一种通过长期的心理操纵和精神霸凌，让受害者陷入深度自我怀疑、...</title>
      <link>/cards/650.html</link>
      <guid isPermaLink="false">card:650</guid>
      <description>煤气灯效应，本质上是一种通过长期的心理操纵和精神霸凌，让受害者陷入深度自我怀疑、认知失调的心理陷阱。 这个词源于 1944 年的经典电影《煤气灯下》（Gaslight）。片中，丈夫为了霸占妻子的财产，故意将家中的煤气灯调得忽明忽暗。每当妻子...</description>
      <category>心理学/煤气灯效应</category>
      <pubDate>Tue, 30 Dec 2025 11:41:38 GMT</pubDate>
    </item>
    <item>
      <title>神经连接是通过什么机制建立的？又是如何得到加强的？ 早在1949年，赫布就在其著...</title>
      <link>/cards/647.html</link>
      <guid isPermaLink="false">card:647</guid>
      <description>神经连接是通过什么机制建立的？又是如何得到加强的？ 早在1949年，赫布就在其著作《行为的组织》中揭示了这一机制。 当细胞 A 的轴突足以接近以激发细胞 B，并 反复或持续 地参与对细胞 B 的激发时，这两个细胞或其中一个会发生某种生长过程...</description>
      <category>脑科学</category>
      <category>底层认知</category>
      <category>神经科学</category>
      <category>赫布法则</category>
      <pubDate>Sun, 21 Dec 2025 07:16:33 GMT</pubDate>
    </item>
    <item>
      <title>Column</title>
      <link>/docs/document/14/617.html</link>
      <guid isPermaLink="false">doc:617</guid>
      <description>类似于 Milanote 的分组，所有元素</description>
      <pubDate>Sun, 28 Dec 2025 09:43:29 GMT</pubDate>
    </item>
    <item>
      <title>2025 年终总结</title>
      <link>/articles/74.html</link>
      <guid isPermaLink="false">article:74</guid>
      <description>回顾 先看下去年定下的目标完成情况，只完成了一半 ... ... 吉他能顺利的弹几首曲子 运动和减肥，把体重保持在 120 斤 精通 React 源码 精研各种可视化技术（Canvas、SVG、WebGL）、精研动画 输出 20 篇文章 输...</description>
      <pubDate>Sun, 21 Dec 2025 08:03:26 GMT</pubDate>
    </item>
    <item>
      <title>2024年终总结</title>
      <link>/articles/72.html</link>
      <guid isPermaLink="false">article:72</guid>
      <description>2024 这一年终于过去了，以往的开头都是【白驹过隙，时光荏苒】，感觉时间过的飞快，但是今年，却感觉经历了特别多，也经历过低谷，感觉非常的漫长，且听我慢慢道来。 工作 今年的工作经历可太“丰富”了，整年心情的旋律完全随着工作的内容起伏变化，...</description>
      <pubDate>Wed, 01 Jan 2025 01:25:51 GMT</pubDate>
    </item>
    <item>
      <title>我们都知道学习是在大脑中进行的，但并不知道学习对大脑究竟有什么影响，更不知道学习...</title>
      <link>/cards/646.html</link>
      <guid isPermaLink="false">card:646</guid>
      <description>我们都知道学习是在大脑中进行的，但并不知道学习对大脑究竟有什么影响，更不知道学习时大脑发生了哪些变化，以及这些变化是如何发生的。 具体地说，要学习，人们必须改变自己的大脑，更具体地说，是必须改变大脑的神经连接。 人的大脑中大约有 850 亿...</description>
      <category>脑科学</category>
      <category>底层认知</category>
      <category>神经科学</category>
      <pubDate>Sun, 21 Dec 2025 07:14:23 GMT</pubDate>
    </item>
    <item>
      <title>集合是由内置类 set 实现的，这意味着你可直接创建集合，而无需导入模块。 &gt;&gt;...</title>
      <link>/cards/480.html</link>
      <guid isPermaLink="false">card:480</guid>
      <description>集合是由内置类 set 实现的，这意味着你可直接创建集合，而无需导入模块。 &gt;&gt;&gt; set(range(10)) {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 可使用花括号显式地创建集合。注意，不能仅使用花括号来创建空集合，...</description>
      <category>Python/标准库/set</category>
      <pubDate>Wed, 26 Jun 2024 10:46:14 GMT</pubDate>
    </item>
    <item>
      <title>首先要明白两个概念： click 事件的 300ms 延迟 在早期互联网，当时的...</title>
      <link>/cards/639.html</link>
      <guid isPermaLink="false">card:639</guid>
      <description>首先要明白两个概念： click 事件的 300ms 延迟 在早期互联网，当时的网站都是为 PC 端设计了，在移动端中，用户往往需要通过双击来放大页面，而为了区分用户的单击还是双击，在第一点击屏幕时（ touchend ）并不会立即触发 c...</description>
      <category>前端/技巧</category>
      <category>浏览器/踩坑</category>
      <category>踩坑/浏览器</category>
      <pubDate>Tue, 11 Nov 2025 13:00:59 GMT</pubDate>
    </item>
    <item>
      <title>H5 唤端实践</title>
      <link>/articles/67.html</link>
      <guid isPermaLink="false">article:67</guid>
      <description>端外引流是一个提升 DAU 非常重要的手段，常见的端外引流方式有： 广告投放 分享裂变 算法推荐 这些手段的形式大多都是准备一个 H5 页面，这个 H5 是在别的 APP 打开的，当用户打开这个页面的时候，能通过某种手段打开自己的 APP ...</description>
      <pubDate>Fri, 06 Dec 2024 15:14:25 GMT</pubDate>
    </item>
    <item>
      <title>什么是反刍。原本的意思是指某些食草动物进化出来的特殊消化方式。简单来说就是把吃下...</title>
      <link>/cards/645.html</link>
      <guid isPermaLink="false">card:645</guid>
      <description>什么是反刍。原本的意思是指某些食草动物进化出来的特殊消化方式。简单来说就是把吃下去还没有消化的食物重新倒回嘴里，进行再次咀嚼的过程。 为了应对天敌，在进食时不会仔细咀嚼，而是匆忙将大量食物吃下，先储存在胃中，一般这种动物都会有多个胃，比如牛...</description>
      <category>知识反刍</category>
      <category>概念</category>
      <pubDate>Thu, 11 Dec 2025 16:13:59 GMT</pubDate>
    </item>
    <item>
      <title>什么是期货（Futures）？简单可以理解为一份未来的买卖合同。 假设存在这么两...</title>
      <link>/cards/641.html</link>
      <guid isPermaLink="false">card:641</guid>
      <description>什么是期货（Futures）？简单可以理解为一份未来的买卖合同。 假设存在这么两名角色，农民伯伯和面板店老板。农民伯伯种了很多的小麦，面板店老板需要小麦制作面包，二者存在交易关系，但是它们都有各自的担忧： 农民伯伯担心 3 个月后收成是小麦...</description>
      <category>经济学/期货</category>
      <category>金融/衍生品</category>
      <category>风险管理/套期保值</category>
      <category>金融/投机</category>
      <category>金融市场/功能</category>
      <category>金融/历史事件</category>
      <pubDate>Thu, 13 Nov 2025 01:09:16 GMT</pubDate>
    </item>
    <item>
      <title>在 微信公众号 上看到张朝阳关于拖延的看法：我们想做一件事情的时候会选择拖延，是...</title>
      <link>/cards/637.html</link>
      <guid isPermaLink="false">card:637</guid>
      <description>在 微信公众号 上看到张朝阳关于拖延的看法：我们想做一件事情的时候会选择拖延，是因为担心做不到，本质原因就是因为不够熟悉，这个时候就是要去想为什么要做这件事情，想表达什么，去收集信息，自言自语的想把东西都关联起来，把脑子热起来，神经元调动起...</description>
      <category>随笔</category>
      <category>个人成长</category>
      <pubDate>Tue, 11 Nov 2025 01:19:55 GMT</pubDate>
    </item>
    <item>
      <title>渐变色的妙用</title>
      <link>/articles/10.html</link>
      <guid isPermaLink="false">article:10</guid>
      <description>在 CSS 中渐变色作为背景可以制作出非常绚丽，迷人的效果，往往我们将焦点聚集在渐变上面，而忽略了它作为背景图片的作用，在这里我将介绍两个渐变色作为背景色以及背景图片的妙用，可以实现一些难以实现的效果。 透明背景蒙层 我在一个实际的应用开发...</description>
      <category>CSS</category>
      <category>渐变色</category>
      <category>技巧</category>
      <pubDate>Sun, 15 Aug 2021 15:54:00 GMT</pubDate>
    </item>
    <item>
      <title>第四课：变换II</title>
      <link>/docs/project/18/151.html</link>
      <guid isPermaLink="false">doc:151</guid>
      <description>旋转 -\theta 矩阵的逆等于转置，称为正交矩阵。 本节内容： 3D 变换 Viewing（观测）transformation View（视图）/Camera transformation Projection（投影）transform...</description>
      <pubDate>Tue, 07 Jan 2025 14:01:29 GMT</pubDate>
    </item>
    <item>
      <title>第十五课：光线追踪III</title>
      <link>/docs/project/18/195.html</link>
      <guid isPermaLink="false">doc:195</guid>
      <description>概念复习： 能量，电磁辐射的能量，很少使用这个概念，一般用单位时间内辐射的能量 功率：单位时间辐射的能量 辐射强度：一个立体角上的能量 立体角：角度对应的面积除以半径的平方 微分立体角，任意空间方向都可以投影到球面坐标系，使用 \theta...</description>
      <pubDate>Wed, 05 Mar 2025 23:17:04 GMT</pubDate>
    </item>
    <item>
      <title>思维导图布局实现，如下 简单考虑，只考虑向右展开的布局。 已经条件，知道根节点的...</title>
      <link>/cards/525.html</link>
      <guid isPermaLink="false">card:525</guid>
      <description>思维导图布局实现，如下 简单考虑，只考虑向右展开的布局。 已经条件，知道根节点的位置 (rootX, rootY) ，以及所有节点的大小（宽高），求其他节点的位置 (x, y) 。 首先看子节点的 x 和父节点 parentX 的关系，非常...</description>
      <category>算法</category>
      <pubDate>Sun, 23 Feb 2025 22:36:58 GMT</pubDate>
    </item>
    <item>
      <title>假设你需要部署你的网页，出于成本和维护的考虑，我们会选中云服务厂商，一般情况下我...</title>
      <link>/cards/595.html</link>
      <guid isPermaLink="false">card:595</guid>
      <description>假设你需要部署你的网页，出于成本和维护的考虑，我们会选中云服务厂商，一般情况下我们都无法使用完整的一台计算机的能力，为了达成这一要求，云服务厂商会提供虚拟主机服务，虽然看上去你完整的使用了一台算力比较低的机器，实际上是使用部分计算机，云服务...</description>
      <category>HTTP/Host</category>
      <category>虚拟主机</category>
      <pubDate>Fri, 18 Jul 2025 15:59:57 GMT</pubDate>
    </item>
    <item>
      <title>安装(Windows) 前往 MySQL官网 进行下载，下面社区版，版本为 8....</title>
      <link>/cards/559.html</link>
      <guid isPermaLink="false">card:559</guid>
      <description>安装(Windows) 前往 MySQL官网 进行下载，下面社区版，版本为 8.0.30。 然后点击安装，一直点击下一步，有几个需要注意的事项： MySQL 使用的端口号默认为 3306 需要配置 root 的密码，用以连接数据库 安装程序...</description>
      <category>MySQL/安装</category>
      <pubDate>Wed, 09 Apr 2025 04:10:56 GMT</pubDate>
    </item>
    <item>
      <title>在 Windows 如何杀死占用某个端口的进程，首先使用 netstat 根据端...</title>
      <link>/cards/501.html</link>
      <guid isPermaLink="false">card:501</guid>
      <description>在 Windows 如何杀死占用某个端口的进程，首先使用 netstat 根据端口查找进程号 netstat -ano | findstr &lt;端口号&gt; 两种杀死的方式： 使用 tasklist 查找进程号对应进程名称 tasklist | ...</description>
      <category>Windows/技巧</category>
      <pubDate>Wed, 25 Sep 2024 05:28:20 GMT</pubDate>
    </item>
    <item>
      <title>自上班之后我一直在思索，我的人生目标是什么，每天浑浑噩噩的在公司干着没有意义的事...</title>
      <link>/cards/493.html</link>
      <guid isPermaLink="false">card:493</guid>
      <description>自上班之后我一直在思索，我的人生目标是什么，每天浑浑噩噩的在公司干着没有意义的事情是我追求的吗？外面的天气这么好，我应该去外面好好的享受，而不是成天在这水泥钢筋中如行尸走肉般的活着。 打工不是长久之计，不说这个行业对于年龄的歧视，到了 35...</description>
      <category>随笔</category>
      <category>不上班</category>
      <pubDate>Sun, 18 Aug 2024 07:18:04 GMT</pubDate>
    </item>
    <item>
      <title>在软件开发，我们经常被教导要面向接口，而不是面向实现，开发时我们不需要考虑具体的...</title>
      <link>/cards/423.html</link>
      <guid isPermaLink="false">card:423</guid>
      <description>在软件开发，我们经常被教导要面向接口，而不是面向实现，开发时我们不需要考虑具体的实现，只使用接口规定的功能就可以，即使后续由于架构升级或者性能考虑，修改了具体的实现，只要对外提供的接口不变，依赖方便不需要进行任何的修改。 但是 Google...</description>
      <category>软件开发</category>
      <pubDate>Sun, 07 Apr 2024 02:16:30 GMT</pubDate>
    </item>
    <item>
      <title>网卡上为什么需要有单独的缓存？ 对于发送，互联网络的发送是同步的，这就要求必须以...</title>
      <link>/cards/414.html</link>
      <guid isPermaLink="false">card:414</guid>
      <description>网卡上为什么需要有单独的缓存？ 对于发送，互联网络的发送是同步的，这就要求必须以恒定的速率将数据发送出去，如果网卡没有单独的缓存来存储发送的数据，数据直接从主存到网卡并不能保证速率稳定，因为总线上还存在其它的流量。 对于接收，由于接收的速率...</description>
      <category>计算机/缓存</category>
      <pubDate>Sat, 23 Mar 2024 06:16:51 GMT</pubDate>
    </item>
    <item>
      <title>一个芯片上有两个或两个以上的 CPU 称为 多核 芯片，如果 CPU 的数量继续...</title>
      <link>/cards/413.html</link>
      <guid isPermaLink="false">card:413</guid>
      <description>一个芯片上有两个或两个以上的 CPU 称为 多核 芯片，如果 CPU 的数量继续增加时，会使用另一个名称， 众核 。 多核与众核之间没有明确的区分界限， 如果你觉得损失一两个 CPU 也无所谓 ，那么就可以称之为众核了。 GPU 是典型的众...</description>
      <category>概念/芯片</category>
      <pubDate>Fri, 22 Mar 2024 01:21:51 GMT</pubDate>
    </item>
    <item>
      <title>当我们对系统的某个部分进行加速时，对系统整体的加速效果取决于该部分的占比以及加速...</title>
      <link>/cards/397.html</link>
      <guid isPermaLink="false">card:397</guid>
      <description>当我们对系统的某个部分进行加速时，对系统整体的加速效果取决于该部分的占比以及加速程度。 假设该部分占比为 \alpha ，速度提升为 k ，考虑原来的运行时间为 T_{\text{old}} ，那么加速后的运行时间为 那么系统整体的加速比为...</description>
      <category>Amdahl 定律</category>
      <pubDate>Wed, 10 Jan 2024 15:52:37 GMT</pubDate>
    </item>
    <item>
      <title>C 语言源文件转化为可执行目标程序的流程，以如下源程序为例 #include&lt;s...</title>
      <link>/cards/400.html</link>
      <guid isPermaLink="false">card:400</guid>
      <description>C 语言源文件转化为可执行目标程序的流程，以如下源程序为例 #include&lt;stdio.h&gt; int main() { printf(&quot;Hello World!\n&quot;); return 0; } 如上图所示，总共分为四个阶段： 预处理阶段...</description>
      <category>C</category>
      <pubDate>Sun, 14 Jan 2024 04:08:22 GMT</pubDate>
    </item>
    <item>
      <title>可以通过索引类型定义接口的键值需要符合的约束 interface Somethi...</title>
      <link>/cards/6.html</link>
      <guid isPermaLink="false">card:6</guid>
      <description>可以通过索引类型定义接口的键值需要符合的约束 interface Something { // 这个 key 可以随便写成什么有语义的东西 [key: string]: string; // [fieldName: string]: str...</description>
      <category>TypeScript/索引</category>
      <pubDate>Sun, 09 Jul 2023 14:05:58 GMT</pubDate>
    </item>
    <item>
      <title>可以通过 keyof 查询接口键的类型 如果 keyof 作用于原始类型，相当于...</title>
      <link>/cards/5.html</link>
      <guid isPermaLink="false">card:5</guid>
      <description>可以通过 keyof 查询接口键的类型 如果 keyof 作用于原始类型，相当于作用于其包装类型。</description>
      <category>TypeScript/类型操作</category>
      <pubDate>Sun, 09 Jul 2023 14:01:57 GMT</pubDate>
    </item>
    <item>
      <title>通过索引我们可以查询键对应的值的类型，这个索引查询不是作用在 JavaScrip...</title>
      <link>/cards/4.html</link>
      <guid isPermaLink="false">card:4</guid>
      <description>通过索引我们可以查询键对应的值的类型，这个索引查询不是作用在 JavaScript 对象上，可以作用在类型上，比如接口 interface Obj { a: string; b: number; 1: string; } type A = ...</description>
      <category>TypeScript/索引查询</category>
      <pubDate>Sun, 09 Jul 2023 13:55:53 GMT</pubDate>
    </item>
    <item>
      <title>学习方法： PQ4R 任务拆解 制定计划 必要难度理论 写作与思考</title>
      <link>/cards/404.html</link>
      <guid isPermaLink="false">card:404</guid>
      <description>学习方法： PQ4R 任务拆解 制定计划 必要难度理论 写作与思考</description>
      <category>学习方法</category>
      <pubDate>Sun, 21 Jan 2024 09:50:25 GMT</pubDate>
    </item>
    <item>
      <title>let 声明的变量与其他语言声明的变量特性一致： 在变量声明之前不能使用 con...</title>
      <link>/cards/505.html</link>
      <guid isPermaLink="false">card:505</guid>
      <description>let 声明的变量与其他语言声明的变量特性一致： 在变量声明之前不能使用 console.log(a); // ReferenceError: Cannot access &apos;a&apos; before initialization let a = ...</description>
      <category>JavaScript/语法/变量声明</category>
      <pubDate>Tue, 15 Oct 2024 05:13:57 GMT</pubDate>
    </item>
    <item>
      <title>箭头函数是 ES6 新增的一种声明函数的方法，箭头函数的声明由三部分组成： 参数...</title>
      <link>/cards/237.html</link>
      <guid isPermaLink="false">card:237</guid>
      <description>箭头函数是 ES6 新增的一种声明函数的方法，箭头函数的声明由三部分组成： 参数列表：使用括号将参数括起，参数之间使用逗号分隔 (x, y) (x, y = x) 箭头： =&gt; 函数体：使用花括号括起 const add = (x, y) ...</description>
      <category>JavaScript/箭头函数</category>
      <pubDate>Tue, 01 Aug 2023 15:12:20 GMT</pubDate>
    </item>
    <item>
      <title>做笔记的一些误区： 完美主义：认为笔记做完后是不用修改的，直接可用的，实际上笔记...</title>
      <link>/cards/412.html</link>
      <guid isPermaLink="false">card:412</guid>
      <description>做笔记的一些误区： 完美主义：认为笔记做完后是不用修改的，直接可用的，实际上笔记是要一直迭代的，真正重要的是快速写下自己的想法，至于排版、美化、遣词造句都是后续的工作 没有目的：没有审查已有的知识体系，没有目的的进行输入，使得接收的信息无法...</description>
      <category>笔记系统</category>
      <pubDate>Thu, 21 Mar 2024 01:11:53 GMT</pubDate>
    </item>
    <item>
      <title>读了一篇文章， 张朝阳随口而说的这几段话，就是最顶级的学习方法指南！ 其中关于碎...</title>
      <link>/cards/638.html</link>
      <guid isPermaLink="false">card:638</guid>
      <description>读了一篇文章， 张朝阳随口而说的这几段话，就是最顶级的学习方法指南！ 其中关于碎片化学习和系统性学习的阐述有一些感触： 人脑是反系统的，人脑就是碎片化的 人脑的高效的学习策略是 学习时我们要让大脑始终保持在最兴奋的状态 ，而系统学习太枯燥了...</description>
      <category>个人成长</category>
      <category>思考</category>
      <pubDate>Tue, 11 Nov 2025 04:09:29 GMT</pubDate>
    </item>
    <item>
      <title>如何打造自己的知识体系。 以项目为分界点，分为两个部分： 输入，项目之前的流程为...</title>
      <link>/cards/426.html</link>
      <guid isPermaLink="false">card:426</guid>
      <description>如何打造自己的知识体系。 以项目为分界点，分为两个部分： 输入，项目之前的流程为输入部分，以正在进行的项目为导向，广泛收集与该项目有关的所有信息，包括但不限于书本、论文、视频、博客、音频等等渠道，在这一步仅作收集，可以是直接对文章的摘录、课...</description>
      <category>笔记系统</category>
      <pubDate>Sat, 27 Apr 2024 01:57:44 GMT</pubDate>
    </item>
    <item>
      <title>如何在 Github 删除分支： 首先来到仓库的页面，在仓库的顶端有 2 bra...</title>
      <link>/cards/93.html</link>
      <guid isPermaLink="false">card:93</guid>
      <description>如何在 Github 删除分支： 首先来到仓库的页面，在仓库的顶端有 2 branchs 的字，点击进入 点击要删除分支的右边的删除图标</description>
      <category>Github</category>
      <pubDate>Wed, 12 Jul 2023 15:19:08 GMT</pubDate>
    </item>
    <item>
      <title>统计学家乔治·博克斯(George Box)曾说：​“所有模型都是错的，但有些是...</title>
      <link>/cards/636.html</link>
      <guid isPermaLink="false">card:636</guid>
      <description>统计学家乔治·博克斯(George Box)曾说：​“所有模型都是错的，但有些是有用的。​”他的观点是，所有的模型都会做出一系列假设，以简化我们周围的世界；如果它们没有这样做，那么模型和真实世界也就没有什么差别（因此，对理解真实世界也就没有...</description>
      <pubDate>Mon, 10 Nov 2025 01:15:52 GMT</pubDate>
    </item>
    <item>
      <title>第五课：光栅化I</title>
      <link>/docs/project/18/152.html</link>
      <guid isPermaLink="false">doc:152</guid>
      <description>在做完变换之后，下一步是什么，把物体画在屏幕上。 如何定义近大远小： 宽高比 视口，表示可以看到的角度的范围 如何根据视口和宽高比得到 l, r, b, t 什么是屏幕？ Raster 是德语定义的一个词，就是屏幕，光栅化就是把东西画在屏幕...</description>
      <pubDate>Thu, 09 Jan 2025 14:04:44 GMT</pubDate>
    </item>
    <item>
      <title>第七课：着色I</title>
      <link>/docs/project/18/155.html</link>
      <guid isPermaLink="false">doc:155</guid>
      <description>多个物体怎么画在画布上，参考画家，先绘制最远的物体，然后绘制近的，近的物体可以把远的物体遮盖住 需要先按照深度排序（ O(n\log n )），存在无法解决的深度排序 互相覆盖，无法定义深度关系。引入深度缓存（深度缓冲）的概念，Z-Buff...</description>
      <pubDate>Wed, 15 Jan 2025 13:41:46 GMT</pubDate>
    </item>
    <item>
      <title>搜索旋转排序数组II</title>
      <link>/docs/document/12/143.html</link>
      <guid isPermaLink="false">doc:143</guid>
      <description>题目描述 已知存在一个按非降序排列的整数数组 nums ，数组中的值不必互不相同。 在传递给函数之前， nums 在预先未知的某个下标 k(0 &lt;= k &lt; nums.length) 上进行了 旋转 ，使数组变为 [nums[k], num...</description>
      <pubDate>Tue, 15 Oct 2024 14:14:02 GMT</pubDate>
    </item>
    <item>
      <title>第二课：线性代数</title>
      <link>/docs/project/18/145.html</link>
      <guid isPermaLink="false">doc:145</guid>
      <description>向量，带方向的量。表示， \vec{a} 或者粗体 a 。 向量加减计算： 几何：平行四边形法则 代数：对应坐标相加减 乘法： 点乘 向量的点乘得到的是一个数。 a = (x_1, y_1), b = (x_2, y_2) ， \vec{a...</description>
      <pubDate>Fri, 03 Jan 2025 14:53:05 GMT</pubDate>
    </item>
    <item>
      <title>第三课：变换I</title>
      <link>/docs/project/18/150.html</link>
      <guid isPermaLink="false">doc:150</guid>
      <description>课程链接： https://www.bilibili.com/video/BV1X7411F744?p=3&amp;vd_source=e8043cc4b732005b1462dcd5e91d68c6 可以参考【线性代数及其应用】这本书坐标系变换章...</description>
      <pubDate>Sun, 05 Jan 2025 13:21:54 GMT</pubDate>
    </item>
    <item>
      <title>如何清除 Chrome 的 DNS 缓存： 在地址栏输入 chrome://ne...</title>
      <link>/cards/316.html</link>
      <guid isPermaLink="false">card:316</guid>
      <description>如何清除 Chrome 的 DNS 缓存： 在地址栏输入 chrome://net-internals/#dns 点击 Sockets，然后点击 Flush socket pools 点击 DNS，点击 Cleat host cache</description>
      <category>浏览器/技巧</category>
      <category>技巧/浏览器</category>
      <pubDate>Sun, 17 Sep 2023 14:19:21 GMT</pubDate>
    </item>
    <item>
      <title>script 标签中 defer 和 async 的比较： 参考： async ...</title>
      <link>/cards/572.html</link>
      <guid isPermaLink="false">card:572</guid>
      <description>script 标签中 defer 和 async 的比较： 参考： async vs defer attributes</description>
      <category>浏览器</category>
      <category>JavaScript</category>
      <category>概念对比</category>
      <pubDate>Wed, 16 Apr 2025 04:36:58 GMT</pubDate>
    </item>
    <item>
      <title>有的时候你需要验证一个想法，或者尝试某个 API 的使用，但是你不想新建一个 J...</title>
      <link>/cards/555.html</link>
      <guid isPermaLink="false">card:555</guid>
      <description>有的时候你需要验证一个想法，或者尝试某个 API 的使用，但是你不想新建一个 JavaScript 文件，这个时候你会打开控制台。 在控制台进行计算时，有的时候需要用到上一步的计算结果继续运算，但是我们忘了将其保存在变量中，这时我们可以通过...</description>
      <category>技巧/浏览器</category>
      <category>浏览器/技巧</category>
      <pubDate>Wed, 09 Apr 2025 03:46:16 GMT</pubDate>
    </item>
    <item>
      <title>两个元素叠在一起，重合的部分应该显示谁？ 看两个元素所在的层叠上下文，所在的层叠...</title>
      <link>/cards/380.html</link>
      <guid isPermaLink="false">card:380</guid>
      <description>两个元素叠在一起，重合的部分应该显示谁？ 看两个元素所在的层叠上下文，所在的层叠上下文谁高就显示谁，所谓 拼爹 所在的层叠上下文是一样的，看二者有没有形成自己的层叠上下文 有层叠上下文的比没有层叠上下文的强（负值除外） 都有，拼大小，谁大谁...</description>
      <category>CSS/层叠上下文</category>
      <pubDate>Mon, 13 Nov 2023 13:30:13 GMT</pubDate>
    </item>
    <item>
      <title>pnpm 的优势及特点： 节省存储空间 如果在一台电脑上有 100 个 npm ...</title>
      <link>/cards/584.html</link>
      <guid isPermaLink="false">card:584</guid>
      <description>pnpm 的优势及特点： 节省存储空间 如果在一台电脑上有 100 个 npm 项目，每个项目中存在相同的依赖，那么这些依赖在每个项目中都会存在一份。 pnpm 有一个中心化的 content-addressed store 来解决这个问题...</description>
      <category>面试题</category>
      <category>包管理器/pnpm</category>
      <pubDate>Wed, 23 Apr 2025 09:22:44 GMT</pubDate>
    </item>
    <item>
      <title>在 React 中，经常我们需要监听某个变量的变化，然后触发一个行为，这个时候我...</title>
      <link>/cards/386.html</link>
      <guid isPermaLink="false">card:386</guid>
      <description>在 React 中，经常我们需要监听某个变量的变化，然后触发一个行为，这个时候我们会使用 useEffect ，将需要被监听的变量放入它的依赖数组，理想情况是在处理函数中你只使用了该变量，因此只需要将该变量放入到依赖数组中即可，但是实际的情...</description>
      <category>React/useEffect</category>
      <category>React/技巧</category>
      <category>技巧/React</category>
      <category>React/useEffectEvent</category>
      <pubDate>Mon, 11 Dec 2023 10:49:02 GMT</pubDate>
    </item>
    <item>
      <title>长大了想回到童年，因为童年的大部分时间都是无忧无虑，不用承担责任，是自由的，是活...</title>
      <link>/cards/496.html</link>
      <guid isPermaLink="false">card:496</guid>
      <description>长大了想回到童年，因为童年的大部分时间都是无忧无虑，不用承担责任，是自由的，是活泼的，是容易满足的。 但是在小时候我们又想着快快长大，为什么想快快长大，小时候觉得大人是自由，想去哪去哪，想做什么就做什么，不用做作业，大人还有很多钱，但是这不...</description>
      <category>随笔</category>
      <pubDate>Thu, 22 Aug 2024 01:33:04 GMT</pubDate>
    </item>
    <item>
      <title>《驱动力》这本书有一个观点很受启发，那就是自主性，我觉得我上班不开心就是缺少自主...</title>
      <link>/cards/494.html</link>
      <guid isPermaLink="false">card:494</guid>
      <description>《驱动力》这本书有一个观点很受启发，那就是自主性，我觉得我上班不开心就是缺少自主性，我是一个机器人，只会干活的机器人，所以如果我能改变这种状况，掌握自主性，那么我会不会就变得开心呢？ 我失去了主动性 我不再主动的将精力投入到项目中，我从事的...</description>
      <category>随笔</category>
      <category>读书/驱动力</category>
      <pubDate>Wed, 21 Aug 2024 04:44:34 GMT</pubDate>
    </item>
    <item>
      <title>俞敏洪在北大的一次演讲，话题是因思想而光滑，新时代新思想。俞敏洪在此次演讲中指出...</title>
      <link>/cards/387.html</link>
      <guid isPermaLink="false">card:387</guid>
      <description>俞敏洪在北大的一次演讲，话题是因思想而光滑，新时代新思想。俞敏洪在此次演讲中指出的一些问题和提出的一些观点富有见解，因此特意记录下来。 思想需要进一步的解放 目前我们的思想被限制在一条管道中前行，思想不能突破这条管道，我们的讨论应该再大胆一...</description>
      <category>随笔</category>
      <pubDate>Sat, 16 Dec 2023 04:54:31 GMT</pubDate>
    </item>
    <item>
      <title>读书要做读书笔记吗？ 如果读到有启发处，将当时的灵感写下来自然是极好的，但是不用...</title>
      <link>/cards/498.html</link>
      <guid isPermaLink="false">card:498</guid>
      <description>读书要做读书笔记吗？ 如果读到有启发处，将当时的灵感写下来自然是极好的，但是不用刻意去做这件事情，我们读过的书就像吃过的饭，已经成为了我们的养分。 但是写作我认为是必须的，但不必要求必须是边读边写的，写作应当是定个主题，然后去搜集相关的材料...</description>
      <category>随笔</category>
      <pubDate>Mon, 02 Sep 2024 01:40:13 GMT</pubDate>
    </item>
    <item>
      <title>现在主流的笔记软件赚钱思路都是卖同步服务（如 Obsidian 和 思源），或者...</title>
      <link>/cards/540.html</link>
      <guid isPermaLink="false">card:540</guid>
      <description>现在主流的笔记软件赚钱思路都是卖同步服务（如 Obsidian 和 思源），或者一些高级功能（如 Flomo 的相关笔记，每日回顾等），或者就是买断制（比如 Typora）和订阅（Notion，Flowus），除了思源是开源的，其他都是闭源...</description>
      <category>笔记软件/赚钱</category>
      <category>随笔</category>
      <pubDate>Wed, 02 Apr 2025 04:04:26 GMT</pubDate>
    </item>
    <item>
      <title>和小黑吃饭时，我讲了一下我在工作中使用 AI 的情况，AI 实在太强大了，个人有...</title>
      <link>/cards/611.html</link>
      <guid isPermaLink="false">card:611</guid>
      <description>和小黑吃饭时，我讲了一下我在工作中使用 AI 的情况，AI 实在太强大了，个人有点悲观（对 AI 乐观），也许在五年内程序员的岗位会大幅减少。 当时也谈到了 AI 目前的问题，想到之前看到 Lilian Weng 发表的 文章 ：Agent...</description>
      <category>随笔</category>
      <category>AI</category>
      <pubDate>Thu, 31 Jul 2025 01:04:32 GMT</pubDate>
    </item>
    <item>
      <title>Frederic Bartlett 的 Schema 理论，Schema 可以理...</title>
      <link>/cards/615.html</link>
      <guid isPermaLink="false">card:615</guid>
      <description>Frederic Bartlett 的 Schema 理论，Schema 可以理解为我们对世界、事件、人物或概念的概括性知识，它强调知识是一个主动积极的构建过程，而不是被动机械的复制过程。 当我们接收到新的信息时， 会根据已有的 Schem...</description>
      <category>认知心理学</category>
      <category>学习方法</category>
      <pubDate>Sun, 10 Aug 2025 12:35:33 GMT</pubDate>
    </item>
    <item>
      <title>网络效应（Network Effect） 也称为网络外部性（Network Ex...</title>
      <link>/cards/624.html</link>
      <guid isPermaLink="false">card:624</guid>
      <description>网络效应（Network Effect） 也称为网络外部性（Network Externality），是指 一个产品或服务的价值随着使用的用户的增加而增加的现象。 以通信系统为例，如果世界上只有一台电话，那么这台电话毫无价值。如果有两台，两...</description>
      <category>网络效应</category>
      <pubDate>Mon, 15 Sep 2025 01:37:35 GMT</pubDate>
    </item>
    <item>
      <title>在 HTTP/1.1 中，强制要求请求和响应必须是“先进先出”（FIFO）的顺序...</title>
      <link>/cards/634.html</link>
      <guid isPermaLink="false">card:634</guid>
      <description>在 HTTP/1.1 中，强制要求请求和响应必须是“先进先出”（FIFO）的顺序，因为 HTTP/1.1 协议本身没有在消息中加入任何用于配对请求和响应的标识符 ，为了将请求和响应一一对应，因此必须按序处理响应。 这就意味着如果前一个请求响...</description>
      <category>HTTP</category>
      <pubDate>Fri, 10 Oct 2025 01:14:52 GMT</pubDate>
    </item>
    <item>
      <title>学习到两个有用的概念： 认知过载，人在短时间内接受过量信息从而无法进行有效思考 ...</title>
      <link>/cards/630.html</link>
      <guid isPermaLink="false">card:630</guid>
      <description>学习到两个有用的概念： 认知过载，人在短时间内接受过量信息从而无法进行有效思考 老师快速讲述过多知识点 短时间内读完一本书 给我带来的启示是不要求在一周或者几周内快速读完一本书，这也与我的实际体验相符，快速读完无法消化书里面的内容，读书更重...</description>
      <category>学习方法</category>
      <pubDate>Wed, 24 Sep 2025 14:48:46 GMT</pubDate>
    </item>
    <item>
      <title>为什么节食不行：我们的身体通过代谢率来控制输出，当节食时大脑会以为进入了饥荒状态...</title>
      <link>/cards/635.html</link>
      <guid isPermaLink="false">card:635</guid>
      <description>为什么节食不行：我们的身体通过代谢率来控制输出，当节食时大脑会以为进入了饥荒状态，会降低代谢率，导致疲劳，烦躁，当恢复饮食时会迅速反弹。 影响因素： 果糖，不是指水果中和纤维混在一起的糖，而是指人工加工的果糖，果糖不像葡萄糖可以被细胞利用，...</description>
      <category>健康</category>
      <pubDate>Mon, 27 Oct 2025 23:59:38 GMT</pubDate>
    </item>
    <item>
      <title>人实在是太容易受到激素影响了，理性根本无法控制被激素支配的身体。 有一人晚上睡觉...</title>
      <link>/cards/613.html</link>
      <guid isPermaLink="false">card:613</guid>
      <description>人实在是太容易受到激素影响了，理性根本无法控制被激素支配的身体。 有一人晚上睡觉的时候，卧室的门没有关牢，导致只要有风，门就会晃动，发出滋滋滋的声音，就像是一个人在慢慢的打开门，我听到这个声音，一种害怕的感觉涌上心头，因为恐怖电影里面经常有...</description>
      <category>随笔</category>
      <pubDate>Mon, 04 Aug 2025 01:08:17 GMT</pubDate>
    </item>
    <item>
      <title>职业生涯的三个阶段： 融入期 找准自己的角色定位，成为不规则但是很契合的齿轮 建...</title>
      <link>/cards/533.html</link>
      <guid isPermaLink="false">card:533</guid>
      <description>职业生涯的三个阶段： 融入期 找准自己的角色定位，成为不规则但是很契合的齿轮 建立信任是重中之重 突破期 主动是能否突破的决定性因素，主动寻求机会，解决问题做到 120%，提出别人想不到的方法，做到别人做不到的事情，而不是简单的执行 制定长...</description>
      <category>职场</category>
      <pubDate>Sun, 30 Mar 2025 08:36:20 GMT</pubDate>
    </item>
    <item>
      <title>关于不合理的需求沟通，不要直接说不，这样会产生不信任感，但是也是有策略的： 对于...</title>
      <link>/cards/303.html</link>
      <guid isPermaLink="false">card:303</guid>
      <description>关于不合理的需求沟通，不要直接说不，这样会产生不信任感，但是也是有策略的： 对于做不到的需求，不要说需求做不到，特别是不要马上说做不到，你要先想一下，让别人觉得你是想做的，但是仔细思考后，发现的确做不到，这个时候你可以给一个你的方案。诀窍是...</description>
      <category>职场/技巧</category>
      <category>技巧/职场</category>
      <pubDate>Sat, 26 Aug 2023 14:32:13 GMT</pubDate>
    </item>
    <item>
      <title>如何写一张卡片？ 之前遇到的问题： 追求完美主义，很难下笔 越写越发散，越写发现...</title>
      <link>/cards/526.html</link>
      <guid isPermaLink="false">card:526</guid>
      <description>如何写一张卡片？ 之前遇到的问题： 追求完美主义，很难下笔 越写越发散，越写发现关联的东西越多，一张卡片加了很多知识点 每一张卡片都是为了解决一个 问题 因为是一个问题，所以不是大而全，如果是大问题，那应该要拆解为多个小问题 限制了范围，产...</description>
      <category>笔记系统</category>
      <pubDate>Mon, 24 Feb 2025 00:52:21 GMT</pubDate>
    </item>
    <item>
      <title>读了《富兰克林自传》，我明白了美德的重要性，拥有了美德一切都会拥有的，我们需要培...</title>
      <link>/cards/538.html</link>
      <guid isPermaLink="false">card:538</guid>
      <description>读了《富兰克林自传》，我明白了美德的重要性，拥有了美德一切都会拥有的，我们需要培养自己的美德。 从书中可以看到，书中的时代大家是可以看到各自的品性的，并且非常的关注，书中在介绍人物的时候总是会介绍这个人的品性怎么样，但是在现在，似乎大家不关...</description>
      <category>读书/富兰克林自传</category>
      <category>随笔</category>
      <category>个人成长</category>
      <pubDate>Tue, 01 Apr 2025 03:39:49 GMT</pubDate>
    </item>
    <item>
      <title>基于 SVG 无限画板的拖拽和缩放实现。 SVG 可以看作是一个无限大小的画布，...</title>
      <link>/cards/500.html</link>
      <guid isPermaLink="false">card:500</guid>
      <description>基于 SVG 无限画板的拖拽和缩放实现。 SVG 可以看作是一个无限大小的画布，而 viewBox 属性就是决定将画布中的哪一部分展示出来， viewBox 指定的这个范围称之为视口。 viewBox 通过四个属性来定义视口： 左上角坐标 ...</description>
      <category>SVG</category>
      <category>白板</category>
      <pubDate>Sun, 22 Sep 2024 15:09:17 GMT</pubDate>
    </item>
    <item>
      <title>浮点数是如何被编码的？ 在 20 世纪 80 年代，每个厂商对浮点数都有自己的编...</title>
      <link>/cards/402.html</link>
      <guid isPermaLink="false">card:402</guid>
      <description>浮点数是如何被编码的？ 在 20 世纪 80 年代，每个厂商对浮点数都有自己的编码规则，大约在 1985 年，推出了 IEEE 754 标准，该标准定义了浮点数的表示以及运算规则，现在几乎所有的计算机都支持这个标准，极大地提高了程序的可移植...</description>
      <category>编码/浮点数</category>
      <category>IEEE/754</category>
      <pubDate>Sat, 20 Jan 2024 15:22:40 GMT</pubDate>
    </item>
    <item>
      <title>浮点数的编码</title>
      <link>/docs/document/11/108.html</link>
      <guid isPermaLink="false">doc:108</guid>
      <description>浮点数是如何被编码的？ 在 20 世纪 80 年代，每个厂商对浮点数都有自己的编码规则，大约在 1985 年，推出了 IEEE 754 标准，该标准定义了浮点数的表示以及运算规则，现在几乎所有的计算机都支持这个标准，极大地提高了程序的可移植...</description>
      <pubDate>Sun, 25 Feb 2024 04:44:36 GMT</pubDate>
    </item>
    <item>
      <title>补码具有如下特点： 首位表示符号位， 0 表示正数， 1 表示负数 正数的表示同...</title>
      <link>/cards/401.html</link>
      <guid isPermaLink="false">card:401</guid>
      <description>补码具有如下特点： 首位表示符号位， 0 表示正数， 1 表示负数 正数的表示同无符号数 加法的位运算同无符号数一致 假设对于 x &gt; 0 ，其补码表示为 [0, x_{w - 1}, x_{w-2}, \dots, x_0] ，设对于 -...</description>
      <category>编码/补码</category>
      <pubDate>Sat, 20 Jan 2024 01:21:32 GMT</pubDate>
    </item>
    <item>
      <title>补码的表示</title>
      <link>/docs/document/11/107.html</link>
      <guid isPermaLink="false">doc:107</guid>
      <description>补码具有如下特点： 首位表示符号位， 0 表示正数， 1 表示负数 正数的表示同无符号数 加法的位运算同无符号数一致 假设对于 x &gt; 0 ，其补码表示为 [0, x_{w - 1}, x_{w-2}, \dots, x_0] ，设对于 -...</description>
      <pubDate>Sun, 25 Feb 2024 04:44:15 GMT</pubDate>
    </item>
    <item>
      <title>for ... in 的作用是遍历对象上 可枚举 的属性，包括原型链上的属性 c...</title>
      <link>/cards/633.html</link>
      <guid isPermaLink="false">card:633</guid>
      <description>for ... in 的作用是遍历对象上 可枚举 的属性，包括原型链上的属性 const animal = { type: &apos;哺乳动物&apos;, eat: function() { console.log(&apos;正在吃东西...&apos;); } }; co...</description>
      <category>JavaScript</category>
      <pubDate>Thu, 09 Oct 2025 23:29:51 GMT</pubDate>
    </item>
    <item>
      <title>XMLHttpRequest 实例上存在一个 responseType 属性，通...</title>
      <link>/cards/391.html</link>
      <guid isPermaLink="false">card:391</guid>
      <description>XMLHttpRequest 实例上存在一个 responseType 属性，通过设置该属性可以对返回结果产生影响。有如下取值： text 将结果转化为字符串 json 将结果转化为 JavaScript 对象，如果无法转换，则结果为 nu...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 02 Jan 2024 12:19:21 GMT</pubDate>
    </item>
    <item>
      <title>放在函数开头的字符串称为文档字符串（docstring），将作为函数的一部分存储...</title>
      <link>/cards/462.html</link>
      <guid isPermaLink="false">card:462</guid>
      <description>放在函数开头的字符串称为文档字符串（docstring），将作为函数的一部分存储起来。 def square(x): &apos;Calculates the square of the number x.&apos; return x * x 可通过 __d...</description>
      <category>Python/函数</category>
      <pubDate>Mon, 24 Jun 2024 10:37:01 GMT</pubDate>
    </item>
    <item>
      <title>cross-env 的作用：用以跨平台设置环境变量，不同平台设置环境变量的方式不...</title>
      <link>/cards/105.html</link>
      <guid isPermaLink="false">card:105</guid>
      <description>cross-env 的作用：用以跨平台设置环境变量，不同平台设置环境变量的方式不一样，通过 cross-env 可以以相同的方式设置环境变量，提高了脚本的可移植性。 cross-env NODE_ENV=prod webpack 同时设置多...</description>
      <category>JavaScript/三方库/cross-env</category>
      <pubDate>Wed, 12 Jul 2023 15:51:35 GMT</pubDate>
    </item>
    <item>
      <title>satisfies 是 TypeScript 4.9 引入的一个操作符，它可以检...</title>
      <link>/cards/617.html</link>
      <guid isPermaLink="false">card:617</guid>
      <description>satisfies 是 TypeScript 4.9 引入的一个操作符，它可以检查一个表达式是否满足给定类型，并且会保留 最具体 的推断类型。 为了明确 satisfies 的作用，我们可以看下一般情况我们是如何检查类型的，以及会存在什么问...</description>
      <category>TypeScript/satisfies</category>
      <pubDate>Fri, 22 Aug 2025 07:57:56 GMT</pubDate>
    </item>
    <item>
      <title>愈发感觉到当前大模型的训练以及推理和人非常的相似。 刷到这么一个 说法 把人的学...</title>
      <link>/cards/619.html</link>
      <guid isPermaLink="false">card:619</guid>
      <description>愈发感觉到当前大模型的训练以及推理和人非常的相似。 刷到这么一个 说法 把人的学习和大模型训练进行了一个映射： 书中学 -&gt; 预训练 高人聊 -&gt; 后训练 事上练 -&gt; 强化训练 由此我想到大模型的推理，特别是思考模式，它会在输出正式回答之...</description>
      <category>随笔</category>
      <category>学习方法</category>
      <pubDate>Sun, 24 Aug 2025 02:54:21 GMT</pubDate>
    </item>
    <item>
      <title>径向渐变的语法 &lt;radial-gradient()&gt; = radial-gra...</title>
      <link>/cards/625.html</link>
      <guid isPermaLink="false">card:625</guid>
      <description>径向渐变的语法 &lt;radial-gradient()&gt; = radial-gradient( [ &lt;radial-gradient-syntax&gt; ] ) &lt;radial-gradient-syntax&gt; = [ &lt;radial-shape...</description>
      <category>CSS/渐变色</category>
      <pubDate>Mon, 15 Sep 2025 04:32:14 GMT</pubDate>
    </item>
    <item>
      <title>line-height 用以指定行高，当行高大于字体大小时，就会在内容的上下均分...</title>
      <link>/cards/626.html</link>
      <guid isPermaLink="false">card:626</guid>
      <description>line-height 用以指定行高，当行高大于字体大小时，就会在内容的上下均分多余的空间，从而形成行间距，这也是 line-height 在规范中的定义，行与行之间基线之间的距离。 从图中可以看到行间距，内容高度和行高的关系，即 行间距 ...</description>
      <category>CSS/line-height</category>
      <pubDate>Tue, 16 Sep 2025 01:29:49 GMT</pubDate>
    </item>
    <item>
      <title>线性渐变 以与起点在一个方向上的投影距离计算颜色的插值，形成渐变色， 径向渐变 ...</title>
      <link>/cards/628.html</link>
      <guid isPermaLink="false">card:628</guid>
      <description>线性渐变 以与起点在一个方向上的投影距离计算颜色的插值，形成渐变色， 径向渐变 以离中心点的距离进行插值，形成渐变，角向渐变（锥形渐变）则是以与起始位置形成的角度来进行插值，形成渐变。 为什么角向渐变又被称为“锥形”渐变？如果色块的一侧比另...</description>
      <category>CSS/渐变色</category>
      <pubDate>Thu, 18 Sep 2025 14:06:16 GMT</pubDate>
    </item>
    <item>
      <title>当通过鼠标或者键盘聚焦到可聚焦的元素上时，会出现焦点指示器（一般是外轮廓）以响应...</title>
      <link>/cards/629.html</link>
      <guid isPermaLink="false">card:629</guid>
      <description>当通过鼠标或者键盘聚焦到可聚焦的元素上时，会出现焦点指示器（一般是外轮廓）以响应用户已聚焦到该元素，但是这个样式很丑，很多时候我们不想要这个样式，就会把这个外轮廓去掉，但是这样对无障碍人士就不友好，如果说他只能通过键盘访问聚焦的元素，如果没...</description>
      <category>CSS</category>
      <pubDate>Wed, 24 Sep 2025 14:00:43 GMT</pubDate>
    </item>
    <item>
      <title>vertical-align 可以设置行内元素在行框中的垂直对齐方式。根据计算来...</title>
      <link>/cards/632.html</link>
      <guid isPermaLink="false">card:632</guid>
      <description>vertical-align 可以设置行内元素在行框中的垂直对齐方式。根据计算来源和计算方式可分为两类： 相对于父元素的属性（ baseline 、 x-height 、 line-height ） baseline ：元素的基线相对于行框...</description>
      <category>CSS/排版</category>
      <category>CSS/vertical-align</category>
      <pubDate>Fri, 26 Sep 2025 00:39:08 GMT</pubDate>
    </item>
    <item>
      <title>padStart ，在字符串的前面填充指定字符以满足指定的长度要求，接收两个参数...</title>
      <link>/cards/631.html</link>
      <guid isPermaLink="false">card:631</guid>
      <description>padStart ，在字符串的前面填充指定字符以满足指定的长度要求，接收两个参数： 目标长度 填充字符串，可选，默认为空格 &quot; &quot;(U+0020) const month = （new Date().getMonth() + 1） // -...</description>
      <category>JavaScript/字符串</category>
      <pubDate>Thu, 25 Sep 2025 14:36:55 GMT</pubDate>
    </item>
    <item>
      <title>文档组织</title>
      <link>/docs/document/9/87.html</link>
      <guid isPermaLink="false">doc:87</guid>
      <description>在本节中介绍一些有效组织文档的技术，包括对元素进行分组，复用已有的元素 分组 在画布中，有些形状是一体的，比如我们要绘制一只小鸟，小鸟由身体的各个部位（头、身体、翅膀等）组成，这些部位应该归为一组，这样方便我们管理，并且在阅读代码时也会比较...</description>
      <pubDate>Tue, 26 Dec 2023 15:45:41 GMT</pubDate>
    </item>
    <item>
      <title>渐变色</title>
      <link>/docs/document/9/88.html</link>
      <guid isPermaLink="false">doc:88</guid>
      <description>除了可以给形状填充纯色之外，我们还可以为其添加渐变色，渐变色分为两种： 线性渐变 径向渐变 线性渐变 使用 &lt;linearGradient&gt;&lt;/linearGradient&gt; 来定义线性渐变，最简单的渐变就是从一个颜色渐变到另一个颜色，我们...</description>
      <pubDate>Tue, 26 Dec 2023 15:45:57 GMT</pubDate>
    </item>
    <item>
      <title>循环径向渐变的语法同 径向渐变 的语法相同，差异在于循环二字，会以渐变图像的大小...</title>
      <link>/cards/627.html</link>
      <guid isPermaLink="false">card:627</guid>
      <description>循环径向渐变的语法同 径向渐变 的语法相同，差异在于循环二字，会以渐变图像的大小向四个方向重复。其形式语法如下 &lt;repeating-radial-gradient()&gt; = repeating-radial-gradient( [ &lt;ra...</description>
      <category>CSS/渐变色</category>
      <pubDate>Wed, 17 Sep 2025 04:57:28 GMT</pubDate>
    </item>
    <item>
      <title>getopts 用于 shell 脚本中，它一次处理一个命令行选项，当处理完所有...</title>
      <link>/cards/121.html</link>
      <guid isPermaLink="false">card:121</guid>
      <description>getopts 用于 shell 脚本中，它一次处理一个命令行选项，当处理完所有选项后，会返回大于 0 的退出码 getopts optstring var optstring 的定义同 getopt #!/bin/zsh while ge...</description>
      <category>Shell编程</category>
      <pubDate>Thu, 13 Jul 2023 14:09:22 GMT</pubDate>
    </item>
    <item>
      <title>字符串可以使用 format_map 方法进行格式化，接受一个字典 &gt;&gt;&gt; s ...</title>
      <link>/cards/444.html</link>
      <guid isPermaLink="false">card:444</guid>
      <description>字符串可以使用 format_map 方法进行格式化，接受一个字典 &gt;&gt;&gt; s = &quot;Hello, {name}&quot; &gt;&gt;&gt; s.format_map({&quot;name&quot;: &quot;Alice&quot;}) &apos;Hello, Alice&apos;</description>
      <category>Python/字符串/格式字符串</category>
      <pubDate>Sun, 23 Jun 2024 14:27:46 GMT</pubDate>
    </item>
    <item>
      <title>IP 作为识别用户的缺点： IP 是和机器绑定而不是和用户绑定的，如果一台机器上...</title>
      <link>/cards/590.html</link>
      <guid isPermaLink="false">card:590</guid>
      <description>IP 作为识别用户的缺点： IP 是和机器绑定而不是和用户绑定的，如果一台机器上允许多个用户登录，则无法识别 在有的场景下，每次用户登录，网管都会分配新的 IP 地址 出于安全性以及 IP 地址资源的紧缺性的考虑，大多数用户都通过 NAT ...</description>
      <category>网络</category>
      <category>用户认证</category>
      <category>HTTP</category>
      <pubDate>Mon, 14 Jul 2025 01:44:41 GMT</pubDate>
    </item>
    <item>
      <title>Promise.all 可以等待多个异步任务执行完成，其返回一个 Promise...</title>
      <link>/cards/297.html</link>
      <guid isPermaLink="false">card:297</guid>
      <description>Promise.all 可以等待多个异步任务执行完成，其返回一个 Promise ，只有这些异步任务全部执行成功时，返回的 Promise 才是 resolved 的，否则一旦一个 rejected ，其结果就是 rejected 的，但是...</description>
      <category>JavaScript/Promise</category>
      <pubDate>Wed, 16 Aug 2023 15:01:24 GMT</pubDate>
    </item>
    <item>
      <title>kiosk 模式又被称为 信息台模式 或 展台模式 ，当用户运行在这种模式下，用...</title>
      <link>/cards/623.html</link>
      <guid isPermaLink="false">card:623</guid>
      <description>kiosk 模式又被称为 信息台模式 或 展台模式 ，当用户运行在这种模式下，用户对系统功能的访问受到严格限制，常见于银行 ATM 自动取款机，电影院的自助售票机，它具有如下特点： 应用全屏，窗口会占据整个屏幕的显示区域 覆盖一切，窗口会覆...</description>
      <category>Electron</category>
      <pubDate>Mon, 15 Sep 2025 01:17:36 GMT</pubDate>
    </item>
    <item>
      <title>循环线性渐变，会在一个指定的尺寸内创建渐变，然后无限的重复下去，它的语法与 线性...</title>
      <link>/cards/622.html</link>
      <guid isPermaLink="false">card:622</guid>
      <description>循环线性渐变，会在一个指定的尺寸内创建渐变，然后无限的重复下去，它的语法与 线性渐变 的语法相同 &lt;repeating-linear-gradient()&gt; = repeating-linear-gradient( [ &lt;linear-gr...</description>
      <category>CSS/渐变色</category>
      <pubDate>Sun, 14 Sep 2025 12:16:06 GMT</pubDate>
    </item>
    <item>
      <title>在 CSS 中 &lt;zero&gt; 是一个占位符，表示此处可以写为 不带单位 的 0 ...</title>
      <link>/cards/621.html</link>
      <guid isPermaLink="false">card:621</guid>
      <description>在 CSS 中 &lt;zero&gt; 是一个占位符，表示此处可以写为 不带单位 的 0 值，需要注意，必须为显式的字面量，计算出来量如 calc(0) 不能与 &lt;zero&gt; 匹配。 例子 1： 线性渐变 的语法 &lt;linear-gradient()...</description>
      <category>CSS</category>
      <pubDate>Sun, 14 Sep 2025 11:30:01 GMT</pubDate>
    </item>
    <item>
      <title>startsWith 是用来判断某个个字符串是否是该字符串的开头 const s...</title>
      <link>/cards/261.html</link>
      <guid isPermaLink="false">card:261</guid>
      <description>startsWith 是用来判断某个个字符串是否是该字符串的开头 const str = &quot;Hello World!&quot;; console.log(str.startsWith(&quot;Hello&quot;)); // true console.log(s...</description>
      <category>JavaScript</category>
      <pubDate>Sat, 05 Aug 2023 15:49:32 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 函数中 this 的指向</title>
      <link>/articles/73.html</link>
      <guid isPermaLink="false">article:73</guid>
      <description>函数中的 this 表示函数执行时调用该函数的对象，因此函数中的 this 和调用方式有关，而不是和定义的地方有关，不同的调用方式函数内部的 this 也不一样，所以要搞明白函数内部 this 的值，就得看有哪些调用函数的方式： 直接调用 ...</description>
      <pubDate>Sun, 13 Apr 2025 03:24:04 GMT</pubDate>
    </item>
    <item>
      <title>一般情况下我们都会使用 CSS 来制作动画，因为性能好，但是灵活性相比 JS 欠...</title>
      <link>/cards/354.html</link>
      <guid isPermaLink="false">card:354</guid>
      <description>一般情况下我们都会使用 CSS 来制作动画，因为性能好，但是灵活性相比 JS 欠佳，所以有的时候会使用 JS 手动操作样式来制作动画，但是性能上相比 CSS 就存在问题，好消息是自 Chrome36 起，提供了一个新的 API，Web An...</description>
      <category>JavaScript</category>
      <pubDate>Thu, 12 Oct 2023 01:50:34 GMT</pubDate>
    </item>
    <item>
      <title>ES6 为对象提供了一些简写的方式。 当属性名和值所对应的变量名相同时，可以简写...</title>
      <link>/cards/269.html</link>
      <guid isPermaLink="false">card:269</guid>
      <description>ES6 为对象提供了一些简写的方式。 当属性名和值所对应的变量名相同时，可以简写 const name = &quot;Alice&quot;; const age = 18; const person = { name: name, age: age, };...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 15 Aug 2023 14:08:33 GMT</pubDate>
    </item>
    <item>
      <title>有的时候代码中需要共享一个 Symbol ，ES6 提供了一个全局的 Symbo...</title>
      <link>/cards/250.html</link>
      <guid isPermaLink="false">card:250</guid>
      <description>有的时候代码中需要共享一个 Symbol ，ES6 提供了一个全局的 Symbol 管理机构，我们可以在任何时候访问它。我们是通过 Symbol.for 方法来访问这个全局机构的， Symbol.for 接收一个字符串参数，根据这个字符串参...</description>
      <category>JavaScript/Symbol</category>
      <pubDate>Wed, 02 Aug 2023 14:20:11 GMT</pubDate>
    </item>
    <item>
      <title>线性渐变的 基本语法 ： &lt;linear-gradient()&gt; = linea...</title>
      <link>/cards/620.html</link>
      <guid isPermaLink="false">card:620</guid>
      <description>线性渐变的 基本语法 ： &lt;linear-gradient()&gt; = linear-gradient( [ &lt;linear-gradient-syntax&gt; ] ) &lt;linear-gradient-syntax&gt; = [ &lt;angle&gt; ...</description>
      <category>CSS/渐变色</category>
      <pubDate>Wed, 03 Sep 2025 15:54:19 GMT</pubDate>
    </item>
    <item>
      <title>Node.js之事件循环</title>
      <link>/articles/55.html</link>
      <guid isPermaLink="false">article:55</guid>
      <description>Node.js 是单线程的，但是它却可以应用在高并发场景，原因就是它的事件循环机制。所以本篇文章来介绍 Node.js 的事件循环机制。 同步与异步 因为 Node.js 是单线程的，代码的执行不能使用同步机制，因为同步执行会阻塞代码，在单...</description>
      <pubDate>Mon, 22 Feb 2021 23:11:23 GMT</pubDate>
    </item>
    <item>
      <title>读完了《芯片战争》，在读之前一直以为美国是绝对的老大，因为技术的起源似乎都是来自...</title>
      <link>/cards/616.html</link>
      <guid isPermaLink="false">card:616</guid>
      <description>读完了《芯片战争》，在读之前一直以为美国是绝对的老大，因为技术的起源似乎都是来自于美国，但是读了之后才发现目前世界格局并不如我想的那般，光刻机依赖于荷兰的 ASML 公司（全球也只有这家公司有实力生产光刻机），而芯片制造依赖于韩国的三星和台...</description>
      <category>读书/芯片战争</category>
      <pubDate>Sat, 16 Aug 2025 03:13:48 GMT</pubDate>
    </item>
    <item>
      <title>23 抗体</title>
      <link>/docs/project/21/207.html</link>
      <guid isPermaLink="false">doc:207</guid>
      <description>常见抗体长得像有两只钳子的小龙虾，体积很小，抗体具有针对性，会吧相应的病原体都洗出来，然后用小钳子紧紧抓住，一旦和病原体结合，就不会松手。抗体尾端可以方便地结合到免疫细胞上。 抗体的作用： 调理病原体，抓住敌人，让免疫细胞觉得敌人更美味 攻...</description>
      <pubDate>Mon, 10 Mar 2025 00:41:09 GMT</pubDate>
    </item>
    <item>
      <title>22 T 细胞和 B 细胞的共舞</title>
      <link>/docs/project/21/206.html</link>
      <guid isPermaLink="false">doc:206</guid>
      <description>受体和抗原不是完美结合的，只要 B 细胞的受体可以识别出抗原，就能活化，虽然生成的抗体不完美，但是能快速反应，随后使用精妙的系统微调，改进抗体，变成完美。 B 细胞被辅助性 T 细胞激活变成浆细胞，每次 B 细胞首要 辅助性 T 细胞的阳性...</description>
      <pubDate>Mon, 10 Mar 2025 00:30:51 GMT</pubDate>
    </item>
    <item>
      <title>20 唤醒适应性免疫系统：T细胞</title>
      <link>/docs/project/21/204.html</link>
      <guid isPermaLink="false">doc:204</guid>
      <description>T 细胞的分类： 辅助线 T 细胞 杀伤性 T 细胞 调节性 T 细胞 每一种还能特化成不同的亚类。 它们指挥其他免疫细胞，并激活最重型的武器。 这里只介绍辅助性 T 细胞。 辅助性 T 细胞激活后，第一件事情就是克隆增殖自己，几小时内就有...</description>
      <pubDate>Sun, 09 Mar 2025 23:56:11 GMT</pubDate>
    </item>
    <item>
      <title>19 抗原层递</title>
      <link>/docs/project/21/203.html</link>
      <guid isPermaLink="false">doc:203</guid>
      <description>辅助 T 洗吧只会碰那些抱在细胞表面 MHC-II 类分子中的抗原，这样就不会碰到血液或淋巴液中的游离抗原。 过程： 树突细胞在战场把细菌的抗原包裹在 MHC-II 类分子中 树突细胞开始迁移，经淋巴系统来到淋巴结，找到辅助 T 细胞 辅助...</description>
      <pubDate>Sun, 09 Mar 2025 23:42:23 GMT</pubDate>
    </item>
    <item>
      <title>18 胸腺 -- 杀手大师</title>
      <link>/docs/project/21/175.html</link>
      <guid isPermaLink="false">doc:175</guid>
      <description>适应性免疫细胞需要从胸腺这所“杀手大学”中毕业，比如 T 细胞。 每个 T 细胞生来都有某一特殊受体，可以识别某一种特殊抗原，肯定有很多 T 细胞的受体可以与自身细胞的蛋白结合，这就是自身免疫性疾病。 自身免疫性疾病就是适应性免疫系统把自身...</description>
      <pubDate>Thu, 20 Feb 2025 23:53:34 GMT</pubDate>
    </item>
    <item>
      <title>17 烹饪美味的受体菜谱</title>
      <link>/docs/project/21/174.html</link>
      <guid isPermaLink="false">doc:174</guid>
      <description>所有生物的基本部件相同，部件主体是蛋白质，免疫细胞通过和细菌的蛋白质结合，识别和俘获细菌。 先天免疫系统通过 Toll 样受体识别细菌表面常见的蛋白质，有限。 能被免疫系统识别的蛋白块叫抗原，有几亿种抗原先天性免疫系统无法识别。 抗原是免疫...</description>
      <pubDate>Thu, 20 Feb 2025 01:46:33 GMT</pubDate>
    </item>
    <item>
      <title>16 宇宙最大的图书馆</title>
      <link>/docs/project/21/173.html</link>
      <guid isPermaLink="false">doc:173</guid>
      <description>适应性免疫系统为世上所有可能的敌人，包括过去曾出现过的、现有存世的，甚至将来可能出现但目前还不存在的感染，都准备了专门的武器。总之，它拥有全宇宙最大的图书馆。 细菌会适应人体的防御系统，并变成病原体，甚至在感染的过程中，细菌还会变异，仅靠先...</description>
      <pubDate>Thu, 20 Feb 2025 01:41:59 GMT</pubDate>
    </item>
    <item>
      <title>15 超级武器降临</title>
      <link>/docs/project/21/172.html</link>
      <guid isPermaLink="false">doc:172</guid>
      <description>T 细胞激活了巨噬细胞 抗体让细菌无路可逃 战斗结束后 T 细胞通过细胞因子让巨噬细胞有了倦意 中性粒细胞开始自杀（是什么让他自杀的），新生巨噬细胞会处理尸体 发出信号刺激普通细胞生长，让伤口愈合 大部分辅助线 T 细胞程序性死亡 炎症消退...</description>
      <pubDate>Thu, 20 Feb 2025 01:36:02 GMT</pubDate>
    </item>
    <item>
      <title>在程序需要进行输入输出操作时，会发起系统调用，接着设备驱动程序启动 I/O，有三...</title>
      <link>/cards/419.html</link>
      <guid isPermaLink="false">card:419</guid>
      <description>在程序需要进行输入输出操作时，会发起系统调用，接着设备驱动程序启动 I/O，有三种方式来进行输入输出： 轮询：CPU 一直轮询检查数据准备好没有，在这个过程中，CPU 一直在循环等待，不能执行其它任务，待数据准备好了之后，CPU 执行相应的...</description>
      <category>操作系统/输入输出</category>
      <pubDate>Sun, 31 Mar 2024 06:16:10 GMT</pubDate>
    </item>
    <item>
      <title>在 ES5 中没有规定当遍历一个对象时应该以何种顺序来访问对象的属性，但是在 E...</title>
      <link>/cards/273.html</link>
      <guid isPermaLink="false">card:273</guid>
      <description>在 ES5 中没有规定当遍历一个对象时应该以何种顺序来访问对象的属性，但是在 ES6 中规定了访问的顺序，这个影响了 Object.getOwnPropertyNames() 和 Reflect.ownKeys() ，同样也影响了调用 Ob...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 15 Aug 2023 14:42:22 GMT</pubDate>
    </item>
    <item>
      <title>Rust 中打开一个文件的方法。 第一种方式通过 File::open 来打开一...</title>
      <link>/cards/369.html</link>
      <guid isPermaLink="false">card:369</guid>
      <description>Rust 中打开一个文件的方法。 第一种方式通过 File::open 来打开一个文件 let file = File::open(&quot;hello.txt&quot;); 默认打开的文件权限是只读的，可以通过 options() 来设置打开权限 let...</description>
      <category>Rust/标准库/文件</category>
      <pubDate>Fri, 20 Oct 2023 16:14:15 GMT</pubDate>
    </item>
    <item>
      <title>如果输入与输出有相同的生命周期标识，则表示输入必须活的比输出长，换句话说输出的生...</title>
      <link>/cards/410.html</link>
      <guid isPermaLink="false">card:410</guid>
      <description>如果输入与输出有相同的生命周期标识，则表示输入必须活的比输出长，换句话说输出的生命的周期要小于该输入，否则如果输入先死，输出引用了输入，输出引用了一个死掉的数据，是不行的，所以输出的生命周期一定比输入短。 实际的生命周期由输入决定，并且是由...</description>
      <category>Rust/生命周期</category>
      <pubDate>Thu, 29 Feb 2024 15:09:21 GMT</pubDate>
    </item>
    <item>
      <title>在 Rust 中，只有相同类型的数字才能计算 fn main() { let i...</title>
      <link>/cards/485.html</link>
      <guid isPermaLink="false">card:485</guid>
      <description>在 Rust 中，只有相同类型的数字才能计算 fn main() { let i = -1; let f = 2.0; let num = i * f; println!(&quot;{}&quot;, num); } 上述程序编译失败，错误信息如下 let ...</description>
      <category>Rust</category>
      <pubDate>Tue, 16 Jul 2024 00:28:28 GMT</pubDate>
    </item>
    <item>
      <title>Rust 作为强静态类型语言，必须在编译时就知道所有变量的类型。最简单的办法在声...</title>
      <link>/cards/486.html</link>
      <guid isPermaLink="false">card:486</guid>
      <description>Rust 作为强静态类型语言，必须在编译时就知道所有变量的类型。最简单的办法在声明变量的同时指定其类型 fn main() { let i: i32 = -1; let u: u32 = 2; println!(&quot;{} {}&quot;, i, u)...</description>
      <category>Rust</category>
      <pubDate>Tue, 16 Jul 2024 00:55:46 GMT</pubDate>
    </item>
    <item>
      <title>如何运行 Rust 程序： rustc 直接运行单个文件，步骤为使用 rustc...</title>
      <link>/cards/487.html</link>
      <guid isPermaLink="false">card:487</guid>
      <description>如何运行 Rust 程序： rustc 直接运行单个文件，步骤为使用 rustc 编译为二进制文件，随后直接运行 rustc main.rs 运行后会生成可运行的二进制文件 $ ls bin lib.rs main.rs $ rustc m...</description>
      <category>Rust</category>
      <pubDate>Wed, 17 Jul 2024 00:52:34 GMT</pubDate>
    </item>
    <item>
      <title>淋巴系统：免疫系统的高速公路和大都市网络。拥有广泛的淋巴管网和专门的淋巴液。 部...</title>
      <link>/cards/519.html</link>
      <guid isPermaLink="false">card:519</guid>
      <description>淋巴系统：免疫系统的高速公路和大都市网络。拥有广泛的淋巴管网和专门的淋巴液。 部分血液会从血管渗出到组织和器官，直接运送物资，之后部分血液会被血管重新吸收，但有部分血浆仍残留在组织细胞间，淋巴系统会负责把组织细胞间多余的液体重新运回血液，重...</description>
      <category>生物/免疫学</category>
      <pubDate>Wed, 19 Feb 2025 22:43:06 GMT</pubDate>
    </item>
    <item>
      <title>14 淋巴：高速路和大都市</title>
      <link>/docs/project/21/170.html</link>
      <guid isPermaLink="false">doc:170</guid>
      <description>淋巴系统：免疫系统的高速公路和大都市网络。拥有广泛的淋巴管网和专门的淋巴液。 部分血液会从血管渗出到组织和器官，直接运送物资，之后部分血液会被血管重新吸收，但有部分血浆仍残留在组织细胞间，淋巴系统会负责把组织细胞间多余的液体重新运回血液，重...</description>
      <pubDate>Wed, 19 Feb 2025 22:11:27 GMT</pubDate>
    </item>
    <item>
      <title>人体的免疫系统是抵抗病原体的防御机制，由两部分组成： 先天性免疫系统 适应性免疫...</title>
      <link>/cards/520.html</link>
      <guid isPermaLink="false">card:520</guid>
      <description>人体的免疫系统是抵抗病原体的防御机制，由两部分组成： 先天性免疫系统 适应性免疫系统 先天性免疫系统指的是与生俱来的防御机制，可以快速的识别多种病原体，防御机制包括： 物理和化学屏障 皮肤、黏膜 胃酸、溶菌酶、抗菌肽 细胞防御 中性粒细胞 ...</description>
      <category>生物/免疫学</category>
      <pubDate>Fri, 21 Feb 2025 00:07:24 GMT</pubDate>
    </item>
    <item>
      <title>算数基本定理，又称为正整数的唯一分解定理，内容如下： 每个大于 1 的自然数，要...</title>
      <link>/cards/517.html</link>
      <guid isPermaLink="false">card:517</guid>
      <description>算数基本定理，又称为正整数的唯一分解定理，内容如下： 每个大于 1 的自然数，要么本身就是质数，要么可以写为两个或以上的质数的积，而且这些质因子按大小排列之后，写法仅有一种方式。 这表示质数是乘法的基本元素。 证明： 存在性 使用数学归纳法...</description>
      <category>数学/数论</category>
      <pubDate>Mon, 13 Jan 2025 15:03:24 GMT</pubDate>
    </item>
    <item>
      <title>脚本在后台允许，在命令后加个 &amp; #!/bin/zsh count=5 whil...</title>
      <link>/cards/117.html</link>
      <guid isPermaLink="false">card:117</guid>
      <description>脚本在后台允许，在命令后加个 &amp; #!/bin/zsh count=5 while [ &quot;$count&quot; -gt 0 ] do echo &quot;number$count&quot; count=$[ $count - 1 ] sleep 1 done x...</description>
      <category>Linux/作业调度</category>
      <pubDate>Thu, 13 Jul 2023 13:50:59 GMT</pubDate>
    </item>
    <item>
      <title>zip [-r] 压缩后的文件名 文件或目录 -r ：压缩目录 压缩比并没有 g...</title>
      <link>/cards/51.html</link>
      <guid isPermaLink="false">card:51</guid>
      <description>zip [-r] 压缩后的文件名 文件或目录 -r ：压缩目录 压缩比并没有 gzip 高，所以不常用。 # 解压缩 unzip 压缩文件</description>
      <category>压缩/zip</category>
      <category>Linux/命令/zip</category>
      <pubDate>Mon, 10 Jul 2023 14:52:47 GMT</pubDate>
    </item>
    <item>
      <title>gzip 是用于压缩和解压缩的命令行工具。 压缩文件 # 压缩文件，原文件会被删...</title>
      <link>/cards/53.html</link>
      <guid isPermaLink="false">card:53</guid>
      <description>gzip 是用于压缩和解压缩的命令行工具。 压缩文件 # 压缩文件，原文件会被删除，会自动生成以 .gz 为后缀名的压缩文件 gzip 文件 # 压缩多个文件 gzip 文件1 文件2 通过 -c 选项可以将压缩后的内容写入到标准输出而不是...</description>
      <category>压缩/gzip</category>
      <category>Linux/命令/gzip</category>
      <pubDate>Mon, 10 Jul 2023 14:56:13 GMT</pubDate>
    </item>
    <item>
      <title>gzip 的升级版本，增加选项 -k (keep)，后缀名 .bz2 -k ：保...</title>
      <link>/cards/54.html</link>
      <guid isPermaLink="false">card:54</guid>
      <description>gzip 的升级版本，增加选项 -k (keep)，后缀名 .bz2 -k ：保留原文件 bzip2 -k math.sh # -j：使用 bzip2 压缩 tar -jcvf shell.tar.bz2 shell # 解压缩 bzip2...</description>
      <category>Linux/命令/bzip2</category>
      <pubDate>Mon, 10 Jul 2023 14:59:16 GMT</pubDate>
    </item>
    <item>
      <title>tee 同时输出到标准输出和文件 xt in ~/shell/redir λ d...</title>
      <link>/cards/57.html</link>
      <guid isPermaLink="false">card:57</guid>
      <description>tee 同时输出到标准输出和文件 xt in ~/shell/redir λ date | tee datefile Fri Dec 24 21:50:23 CST 2021 xt in ~/shell/redir λ cat datefi...</description>
      <category>Linux/命令/tee</category>
      <pubDate>Mon, 10 Jul 2023 15:16:59 GMT</pubDate>
    </item>
    <item>
      <title>使用 rmdir 可以删除一个空文件夹 ~ » rmdir dir ~ » tr...</title>
      <link>/cards/78.html</link>
      <guid isPermaLink="false">card:78</guid>
      <description>使用 rmdir 可以删除一个空文件夹 ~ » rmdir dir ~ » tree . ├── d1 │ └── d2 │ └── d3 └── dir1 └── dir2 └── dir3 6 directories, 0 files ...</description>
      <category>Linux/命令/rmdir</category>
      <pubDate>Wed, 12 Jul 2023 13:20:31 GMT</pubDate>
    </item>
    <item>
      <title>cd 表示 change directory，它的作用是用来切换工作目录的，它的...</title>
      <link>/cards/90.html</link>
      <guid isPermaLink="false">card:90</guid>
      <description>cd 表示 change directory，它的作用是用来切换工作目录的，它的基本使用如下 cd dir dir 是一个路径，它可以是相对路径，也可以是绝对路径 # 切换到 /tmp 目录 ~ » cd /tmp /tmp » ls ma...</description>
      <category>Linux/命令/cd</category>
      <pubDate>Wed, 12 Jul 2023 14:58:15 GMT</pubDate>
    </item>
    <item>
      <title>有的时候我们可能不记得文件或目录的具体名称，这个时候我们可以使用元字符进行模糊匹...</title>
      <link>/cards/104.html</link>
      <guid isPermaLink="false">card:104</guid>
      <description>有的时候我们可能不记得文件或目录的具体名称，这个时候我们可以使用元字符进行模糊匹配： ? ：表示任意一个字符 * ：表示零个或多个字符 ~ » ls hello hello.c hello.md math ~ » ls -l hello.*...</description>
      <category>Linux/命令/ls</category>
      <pubDate>Wed, 12 Jul 2023 15:49:15 GMT</pubDate>
    </item>
    <item>
      <title>Linux 创建临时文件： mktemp filename.XXXXXX XXX...</title>
      <link>/cards/114.html</link>
      <guid isPermaLink="false">card:114</guid>
      <description>Linux 创建临时文件： mktemp filename.XXXXXX XXXXXX 是模板，会被随机成六个字符 mktemp -t filename.XXXXXX 在 tmp 目录创建文件 mktemp -d dirname.XXXXX...</description>
      <category>Linux/命令/mktemp</category>
      <pubDate>Thu, 13 Jul 2023 13:34:24 GMT</pubDate>
    </item>
    <item>
      <title>绝对定位与 overflow 的关系。 绝对定位的元素，其父元素设置了 over...</title>
      <link>/cards/378.html</link>
      <guid isPermaLink="false">card:378</guid>
      <description>绝对定位与 overflow 的关系。 绝对定位的元素，其父元素设置了 overflow: hidden ，对绝对定位的元素生效吗？这其实要看其父元素是不是其包含块，如果是，则有效，如果不是，则无效。 父元素是其包含块， overflow:...</description>
      <category>CSS/定位/absolute</category>
      <category>CSS/overflow</category>
      <pubDate>Sun, 12 Nov 2023 08:21:15 GMT</pubDate>
    </item>
    <item>
      <title>众所周知， position: fixed 是相对于视口定位，但是有的时候会出现...</title>
      <link>/cards/383.html</link>
      <guid isPermaLink="false">card:383</guid>
      <description>众所周知， position: fixed 是相对于视口定位，但是有的时候会出现例外： 祖先元素设置了 container 属性 祖先元素设置了 transform 属性 此时都是相对于该祖先元素进行定位的。 在 React 组件中，如果需...</description>
      <category>CSS/定位/fixed</category>
      <pubDate>Wed, 29 Nov 2023 14:07:42 GMT</pubDate>
    </item>
    <item>
      <title>CSS 定位： 固定定位 绝对定位 sticky 定位</title>
      <link>/cards/405.html</link>
      <guid isPermaLink="false">card:405</guid>
      <description>CSS 定位： 固定定位 绝对定位 sticky 定位</description>
      <category>CSS/定位</category>
      <pubDate>Sun, 21 Jan 2024 10:02:39 GMT</pubDate>
    </item>
    <item>
      <title>考虑一个列表场景，包含多个垂直排列的子项，每个子项之间需要隔开一定的间隔，一般的...</title>
      <link>/cards/416.html</link>
      <guid isPermaLink="false">card:416</guid>
      <description>考虑一个列表场景，包含多个垂直排列的子项，每个子项之间需要隔开一定的间隔，一般的写法是为每个子项设置外边距，如 .list { } .item { /* 上下保证 20px 的间距 */ margin: 20px 0; } 但是第一个和最后...</description>
      <category>CSS/margin-trim</category>
      <pubDate>Mon, 25 Mar 2024 11:50:11 GMT</pubDate>
    </item>
    <item>
      <title>:focus 伪类选择器选中当前获得焦点的元素 &lt;style&gt; #input {...</title>
      <link>/cards/618.html</link>
      <guid isPermaLink="false">card:618</guid>
      <description>:focus 伪类选择器选中当前获得焦点的元素 &lt;style&gt; #input { width: 300px; height: 48px; border-radius: 24px; outline: 2px solid rgb(255, 25...</description>
      <category>CSS/选择器</category>
      <pubDate>Fri, 22 Aug 2025 10:36:25 GMT</pubDate>
    </item>
    <item>
      <title>当通过 const 声明变量时，类型会被收缩为字面量类型 const a = &quot;...</title>
      <link>/cards/19.html</link>
      <guid isPermaLink="false">card:19</guid>
      <description>当通过 const 声明变量时，类型会被收缩为字面量类型 const a = &quot;Hello&quot;; 当使用 let 声明类型时，不会收缩为字面量类型，也比较合理，毕竟声明为 let 就表示可以继续被赋值，收缩为字面量没有意义。 let a = ...</description>
      <category>TypeScript/技巧</category>
      <category>技巧/TypeScript</category>
      <pubDate>Sun, 09 Jul 2023 14:44:50 GMT</pubDate>
    </item>
    <item>
      <title>background-attachment 规定在滚动的情况下，背景图片相对于哪...</title>
      <link>/cards/428.html</link>
      <guid isPermaLink="false">card:428</guid>
      <description>background-attachment 规定在滚动的情况下，背景图片相对于哪些部分保持固定的属性，有两种滚动： 元素所在的容器可滚动 元素本身可以滚动 语法如下，有三种取值， scroll 为默认取值 background-attach...</description>
      <category>CSS/背景</category>
      <pubDate>Fri, 03 May 2024 06:25:36 GMT</pubDate>
    </item>
    <item>
      <title>Linux 解压缩命令行工具： gzip bzip2 zip tar</title>
      <link>/cards/407.html</link>
      <guid isPermaLink="false">card:407</guid>
      <description>Linux 解压缩命令行工具： gzip bzip2 zip tar</description>
      <category>Linux</category>
      <category>压缩</category>
      <pubDate>Sat, 27 Jan 2024 11:33:10 GMT</pubDate>
    </item>
    <item>
      <title>如何将 Rust 中的结构体变为可 Copy，需要满足两个条件： 所有的字段都是...</title>
      <link>/cards/52.html</link>
      <guid isPermaLink="false">card:52</guid>
      <description>如何将 Rust 中的结构体变为可 Copy，需要满足两个条件： 所有的字段都是可 Copy 没有实现 Drop Trait 然后通过 derive 来为结构体实现 Copy Trait #[derive(Copy, Clone)] str...</description>
      <category>Rust/Trait</category>
      <pubDate>Mon, 10 Jul 2023 14:54:20 GMT</pubDate>
    </item>
    <item>
      <title>Rust 的文件系统 API，基本的读文件，写文件，查看文件信息，创建文件，创建...</title>
      <link>/cards/365.html</link>
      <guid isPermaLink="false">card:365</guid>
      <description>Rust 的文件系统 API，基本的读文件，写文件，查看文件信息，创建文件，创建文件夹。 创建文件 File::create(path) 创建文件，如果文件已经存在，则会清空文件内容 use std::{ fs::{self, File, ...</description>
      <category>Rust/标准库/文件</category>
      <pubDate>Thu, 19 Oct 2023 01:21:24 GMT</pubDate>
    </item>
    <item>
      <title>内存区分为栈和堆，分配在栈中的内存要求在编译时就是确定的，其内存的申请和释放已经...</title>
      <link>/cards/27.html</link>
      <guid isPermaLink="false">card:27</guid>
      <description>内存区分为栈和堆，分配在栈中的内存要求在编译时就是确定的，其内存的申请和释放已经由编译器编译为指令了，对于那些动态大小的内存，编译器不知道需要分配多少内存，需要程序员手动申请，这里申请的内存就是放在堆中的，但是如果只申请而不释放，就会使得堆...</description>
      <category>Rust/所有权</category>
      <category>Rust/内存管理</category>
      <pubDate>Mon, 10 Jul 2023 01:37:34 GMT</pubDate>
    </item>
    <item>
      <title>赋值的两种语义： 拷贝语义 移动语义 如果实现了 Copy Trait ，进行赋...</title>
      <link>/cards/411.html</link>
      <guid isPermaLink="false">card:411</guid>
      <description>赋值的两种语义： 拷贝语义 移动语义 如果实现了 Copy Trait ，进行赋值时就是拷贝语义，会复制一份数据，如果没有实现 Copy Trait ，进行赋值操作是移动语义，进行赋值时会将数据的所有权转移，原先的变量不能够在使用了。 使用...</description>
      <category>Rust/所有权</category>
      <pubDate>Thu, 29 Feb 2024 15:22:06 GMT</pubDate>
    </item>
    <item>
      <title>虽然意识到读书要思考，但是读到难处，即使不是很清楚，也不会停下来思考清楚再往下，...</title>
      <link>/cards/427.html</link>
      <guid isPermaLink="false">card:427</guid>
      <description>虽然意识到读书要思考，但是读到难处，即使不是很清楚，也不会停下来思考清楚再往下，大概率有个印象，就接着往下读了，这种不求甚解的读法，虽然读的很快，但是读完后问我一些问题，我却答不上来！ 我的阅读习惯往往是先快速读完一遍，然后在细读不懂之处，...</description>
      <category>思考/学习方法</category>
      <pubDate>Thu, 02 May 2024 08:16:59 GMT</pubDate>
    </item>
    <item>
      <title>最近在打 Hades 这款游戏的时候萌生了一个想法，人什么时候最容易放弃？之所以...</title>
      <link>/cards/614.html</link>
      <guid isPermaLink="false">card:614</guid>
      <description>最近在打 Hades 这款游戏的时候萌生了一个想法，人什么时候最容易放弃？之所以会萌生这个想法，因为我突然没有动力去打这个游戏了，即有放弃的念头，所以我开始思考为什么我会萌生放弃的念头。 那我为什么想放弃呢，是因为当时我在游戏内的角色状态达...</description>
      <category>随笔</category>
      <pubDate>Mon, 04 Aug 2025 01:20:03 GMT</pubDate>
    </item>
    <item>
      <title>最近读完了纳什的自传，书名叫做《美丽心灵》，但是从书中的描述看，实在是无法理解和...</title>
      <link>/cards/612.html</link>
      <guid isPermaLink="false">card:612</guid>
      <description>最近读完了纳什的自传，书名叫做《美丽心灵》，但是从书中的描述看，实在是无法理解和美丽心灵有什么关系，从纳什中青年的经历看，我只看到了无礼，它的脾气非常的古怪（看了陈省身的采访，陈省身也说他是一个怪人），性格非常的傲慢，对于傲慢还算能够理解，...</description>
      <category>读书/美丽心灵</category>
      <category>随笔</category>
      <pubDate>Mon, 04 Aug 2025 00:55:02 GMT</pubDate>
    </item>
    <item>
      <title>Host 请求头是为了解决在同一个服务器上托管多个服务的问题，这些服务共享同一个...</title>
      <link>/cards/596.html</link>
      <guid isPermaLink="false">card:596</guid>
      <description>Host 请求头是为了解决在同一个服务器上托管多个服务的问题，这些服务共享同一个 IP 地址（多个域名对应一个 IP 地址），为了确定使用哪个托管的服务提供应答，Host 请求头部应运而生。 Host 请求头部的语法： Host: &lt;hos...</description>
      <category>HTTP/Host</category>
      <pubDate>Sat, 19 Jul 2025 01:52:59 GMT</pubDate>
    </item>
    <item>
      <title>在 Electron 中， img 、 audio 和 video 如何访问本地...</title>
      <link>/cards/522.html</link>
      <guid isPermaLink="false">card:522</guid>
      <description>在 Electron 中， img 、 audio 和 video 如何访问本地文件。 如果直接通过本地文件路径去访问文件，是不行的 Electron 可以注册 Scheme 协议，通过这个协议访问，获取到 Scheme 链接后通过内置的 ...</description>
      <category>Electron/踩坑</category>
      <category>Electron/技巧</category>
      <category>踩坑/Electron</category>
      <category>技巧/Electron</category>
      <pubDate>Sun, 23 Feb 2025 04:50:28 GMT</pubDate>
    </item>
    <item>
      <title>设计师在给我切图时，一般会切 2x 或 3x 的图，为什么要切两倍或者三倍像素的...</title>
      <link>/cards/28.html</link>
      <guid isPermaLink="false">card:28</guid>
      <description>设计师在给我切图时，一般会切 2x 或 3x 的图，为什么要切两倍或者三倍像素的图呢，这是为了保证图片看起来不模糊。为什么图片看起来会模糊呢，因为图片的大小对应的是 物理像素而不是 CSS 像素 ，而物理像素和 CSS 像素之间是相差 dp...</description>
      <category>Canvas/技巧</category>
      <category>技巧/Canvas</category>
      <pubDate>Mon, 10 Jul 2023 01:39:56 GMT</pubDate>
    </item>
    <item>
      <title>今天看了张鑫旭的一个处理图片加载错误处理方法的视频，我觉得很是优雅。 常见做法 ...</title>
      <link>/cards/59.html</link>
      <guid isPermaLink="false">card:59</guid>
      <description>今天看了张鑫旭的一个处理图片加载错误处理方法的视频，我觉得很是优雅。 常见做法 监听 onerror 事件，当图片加载出错时，触发该事件，然后我们替换为一张兜底图 &lt;img src=&apos;xxx.png&apos; onerror=&apos;this.src=&quot;...</description>
      <category>CSS/技巧</category>
      <category>技巧/CSS</category>
      <pubDate>Mon, 10 Jul 2023 15:25:36 GMT</pubDate>
    </item>
    <item>
      <title>当我们绘制的路径交叉在一起，形成了多个区域，这个时候应该填充哪些区域呢？例如在一...</title>
      <link>/cards/195.html</link>
      <guid isPermaLink="false">card:195</guid>
      <description>当我们绘制的路径交叉在一起，形成了多个区域，这个时候应该填充哪些区域呢？例如在一个路径中绘制了两个圆，其中一个圆是顺时针绘制的，一个圆是逆时针绘制的，形成了三个区域，那么当我们调用 fill() 方法时，哪些区域应该填充呢？ 判断哪些区域应...</description>
      <category>Canvas</category>
      <pubDate>Wed, 26 Jul 2023 15:34:18 GMT</pubDate>
    </item>
    <item>
      <title>globalAlpha 用来设置全局的透明度 ctx.globalAlpha =...</title>
      <link>/cards/192.html</link>
      <guid isPermaLink="false">card:192</guid>
      <description>globalAlpha 用来设置全局的透明度 ctx.globalAlpha = 0.3 ctx.fillStyle = &apos;#12a182&apos; ctx.fillRect(50, 50, 100, 100) ctx.fillStyle = &apos;b...</description>
      <category>Canvas</category>
      <pubDate>Wed, 26 Jul 2023 15:23:31 GMT</pubDate>
    </item>
    <item>
      <title>void 在 JavaScript 中是一个一元运算符，它会对后面的表达式执行进...</title>
      <link>/cards/600.html</link>
      <guid isPermaLink="false">card:600</guid>
      <description>void 在 JavaScript 中是一个一元运算符，它会对后面的表达式执行进行，然后返回 undefined void 0 // undefined void (1 + 2) // undefied // 立即执行函数 void fun...</description>
      <category>JavaScript/void</category>
      <category>TypeScript/void</category>
      <category>概念对比</category>
      <pubDate>Mon, 21 Jul 2025 00:06:06 GMT</pubDate>
    </item>
    <item>
      <title>如果一个值可能是多种类型中的某一个，可以使用 | 将类型连接起来 type St...</title>
      <link>/cards/12.html</link>
      <guid isPermaLink="false">card:12</guid>
      <description>如果一个值可能是多种类型中的某一个，可以使用 | 将类型连接起来 type StrOrNum = string | number; const s: StrOrNum = &quot;1&quot;; const n: StrOrNum = 1; 你可以在联合...</description>
      <category>TypeScript/联合</category>
      <category>TypeScript/数据类型</category>
      <pubDate>Sun, 09 Jul 2023 14:19:07 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 中存在一个 typeof 操作符，通过它可以知道值的类型，...</title>
      <link>/cards/141.html</link>
      <guid isPermaLink="false">card:141</guid>
      <description>JavaScript 中存在一个 typeof 操作符，通过它可以知道值的类型，TypeScript 中存在同样的一个操作符 typeof ，它的作用也是通过值来获取其类型，不过这里类型是 TypeScript 的类型 const str ...</description>
      <category>TypeScript/类型操作</category>
      <pubDate>Mon, 17 Jul 2023 16:00:21 GMT</pubDate>
    </item>
    <item>
      <title>TypeScript 中的枚举可以在运行时计算确定，因此其值不是在编译时而是在运...</title>
      <link>/cards/608.html</link>
      <guid isPermaLink="false">card:608</guid>
      <description>TypeScript 中的枚举可以在运行时计算确定，因此其值不是在编译时而是在运行时才确定的，不妨称这种枚举为延迟枚举 const lazyValue = () =&gt; 100 + 100; enum Value { A, B = lazyV...</description>
      <category>TypeScript/枚举</category>
      <pubDate>Mon, 28 Jul 2025 09:05:29 GMT</pubDate>
    </item>
    <item>
      <title>选区和元素是否可编辑并没有直接关系，唯一的区别就是，在可编辑元素上可以看到光标。...</title>
      <link>/cards/80.html</link>
      <guid isPermaLink="false">card:80</guid>
      <description>选区和元素是否可编辑并没有直接关系，唯一的区别就是，在可编辑元素上可以看到光标。 &lt;input type=&quot;text&quot;&gt; &lt;textarea&gt;&lt;/textarea&gt; &lt;div contenteditable=&quot;true&quot;&gt;&lt;/div&gt; di...</description>
      <category>DOM/选区</category>
      <pubDate>Wed, 12 Jul 2023 14:26:38 GMT</pubDate>
    </item>
    <item>
      <title>range.surroundContents 给选区包裹一层标签 const m...</title>
      <link>/cards/85.html</link>
      <guid isPermaLink="false">card:85</guid>
      <description>range.surroundContents 给选区包裹一层标签 const mark = document.createElement(&apos;mark&apos;); range.surroundContents(mark); 但是当选区横跨多个标签时...</description>
      <category>DOM/选区</category>
      <pubDate>Wed, 12 Jul 2023 14:40:31 GMT</pubDate>
    </item>
    <item>
      <title>记忆分为两种机制：存储和提取。存储和提取是呈负相关的，存储过程越容易，则提取过程...</title>
      <link>/cards/30.html</link>
      <guid isPermaLink="false">card:30</guid>
      <description>记忆分为两种机制：存储和提取。存储和提取是呈负相关的，存储过程越容易，则提取过程就会越困难。举两个例子： 课堂笔记。有的同学时边听讲边记笔记，记笔记这个过程就是存储过程，像这种未加思考的存储过程，是相当容易的，但是提取过程就会比较困难，过了...</description>
      <category>学习方法</category>
      <pubDate>Mon, 10 Jul 2023 01:41:32 GMT</pubDate>
    </item>
    <item>
      <title>有关文件大小那一列，我们发现它是以字节为单位，我们可能很难马上反应过来有多大，我...</title>
      <link>/cards/103.html</link>
      <guid isPermaLink="false">card:103</guid>
      <description>有关文件大小那一列，我们发现它是以字节为单位，我们可能很难马上反应过来有多大，我们可以添加 -h 选项，以更加人性化的方式显示文件的大小 # 选项没有先后顺序，-h -l 也是可以的 ~ » ls -l -h total 32K -rwxr...</description>
      <category>Linux/命令/ls</category>
      <pubDate>Wed, 12 Jul 2023 15:47:15 GMT</pubDate>
    </item>
    <item>
      <title>Symbol 是 ES6 引入的一种新的原始类型，类型的值唯一的，每个被创建出来...</title>
      <link>/cards/249.html</link>
      <guid isPermaLink="false">card:249</guid>
      <description>Symbol 是 ES6 引入的一种新的原始类型，类型的值唯一的，每个被创建出来的 Symbol 变量都是不同的，这是 Symbol 这种数据类型最大的特点，常常用于作为对象的属性，以防止被不正确篡改。 Symbol 不能通过字面量来进行创...</description>
      <category>JavaScript/Symbol</category>
      <pubDate>Wed, 02 Aug 2023 14:13:13 GMT</pubDate>
    </item>
    <item>
      <title>可以使用 元祖 对剩余参数进行标注 function foo(arg1: str...</title>
      <link>/cards/606.html</link>
      <guid isPermaLink="false">card:606</guid>
      <description>可以使用 元祖 对剩余参数进行标注 function foo(arg1: string, ...rest: [number, boolean]) { } foo(&quot;abc&quot;, 18, true) // ✅ foo(&quot;abc&quot;, &quot;12&quot;, ...</description>
      <category>TypeScript/剩余参数</category>
      <pubDate>Wed, 23 Jul 2025 00:59:16 GMT</pubDate>
    </item>
    <item>
      <title>剩余参数是将多个独立的参数合并为一个数组，而展开运算符则相反，向一个数组展开为一...</title>
      <link>/cards/233.html</link>
      <guid isPermaLink="false">card:233</guid>
      <description>剩余参数是将多个独立的参数合并为一个数组，而展开运算符则相反，向一个数组展开为一个个独立的参数。一些需要借助 apply 方法传递参数的方案现在可以使用展开运算符替代了。 例如对于 Math.max 方法，该方法接收多个数字参数，返回其最大...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 01 Aug 2023 14:57:03 GMT</pubDate>
    </item>
    <item>
      <title>函数类型的声明，例如声明一个 add 函数 function add(x: nu...</title>
      <link>/cards/17.html</link>
      <guid isPermaLink="false">card:17</guid>
      <description>函数类型的声明，例如声明一个 add 函数 function add(x: number, y: number): number { return x + y; } const add = function (x:number, y:num...</description>
      <category>TypeScript/数据类型/函数</category>
      <pubDate>Sun, 09 Jul 2023 14:35:47 GMT</pubDate>
    </item>
    <item>
      <title>在 TypeScript 枚举中有一种常量枚举，与一般枚举声明不同在于使用 co...</title>
      <link>/cards/609.html</link>
      <guid isPermaLink="false">card:609</guid>
      <description>在 TypeScript 枚举中有一种常量枚举，与一般枚举声明不同在于使用 const 来进行修饰 const enum Value { A = 1, B = 2, C = &quot;Hello&quot; } 那么在使用上与普通枚举不同之处在哪里呢？为了回...</description>
      <category>TypeScript/常量枚举</category>
      <category>概念对比</category>
      <pubDate>Mon, 28 Jul 2025 09:37:36 GMT</pubDate>
    </item>
    <item>
      <title>如果一个值它是有限的几个值，我们一般会将该类型标记为枚举。比如服务返回一个字段 ...</title>
      <link>/cards/18.html</link>
      <guid isPermaLink="false">card:18</guid>
      <description>如果一个值它是有限的几个值，我们一般会将该类型标记为枚举。比如服务返回一个字段 auth ，它只有三种取值： 0 ：只有管理员有权限 1 ：所有人都有权限 2 ：管理员以及部分成员有权限 此时你可以声明一个枚举类型 enum AuthVal...</description>
      <category>TypeScript/数据类型</category>
      <category>TypeScript/枚举</category>
      <pubDate>Sun, 09 Jul 2023 14:38:23 GMT</pubDate>
    </item>
    <item>
      <title>当一个变量它只有有限取值的时候，可以使用枚举，也可以使用联合类型，那应该使用哪个...</title>
      <link>/cards/14.html</link>
      <guid isPermaLink="false">card:14</guid>
      <description>当一个变量它只有有限取值的时候，可以使用枚举，也可以使用联合类型，那应该使用哪个呢，比如对于服务端返回的 code 码 type Code = 0 | 1; enum Code { FAIL = 0; SUCCESS = 1; } 从语义的...</description>
      <category>TypeScript/概念辨析</category>
      <category>TypeScript/联合类型</category>
      <category>TypeScript/枚举</category>
      <pubDate>Sun, 09 Jul 2023 14:22:55 GMT</pubDate>
    </item>
    <item>
      <title>安全算法</title>
      <link>/articles/61.html</link>
      <guid isPermaLink="false">article:61</guid>
      <description>我们在使用互联网交换数据时，数据需要经过各种各样的网络设备才能到达通信双方，如果数据在传输的过程中经过某些恶意用户的设备，就有可能导致信息被窃取。所以如果想安全的使用互联网，了解必须的安全技术是不可或缺的。 安全问题 我们首先了解一下在通信...</description>
      <pubDate>Sat, 03 Oct 2020 12:09:12 GMT</pubDate>
    </item>
    <item>
      <title>shift 可以移动变量，默认移动一步，将 $2 移动到 $1 ， $1 的值会...</title>
      <link>/cards/112.html</link>
      <guid isPermaLink="false">card:112</guid>
      <description>shift 可以移动变量，默认移动一步，将 $2 移动到 $1 ， $1 的值会被丢弃，所以请小心 #!/bin/zsh while [ -n &quot;$1&quot; ] do echo &quot;$1&quot; shift done xt in ~/shell/rea...</description>
      <category>Shell编程</category>
      <pubDate>Wed, 12 Jul 2023 16:12:45 GMT</pubDate>
    </item>
    <item>
      <title>给定一串文本及其字体，如何获取该文字的长度。 DOM const getText...</title>
      <link>/cards/372.html</link>
      <guid isPermaLink="false">card:372</guid>
      <description>给定一串文本及其字体，如何获取该文字的长度。 DOM const getTextWidthByDOM = (text, font) =&gt; { const div = document.createElement(&apos;div&apos;); div.st...</description>
      <category>Canvas/技巧</category>
      <category>DOM/技巧</category>
      <category>Canvas/meatureText</category>
      <pubDate>Tue, 31 Oct 2023 09:20:44 GMT</pubDate>
    </item>
    <item>
      <title>自定义属性是指开发者可以在 HTML 元素上定义的非标准属性。自定义属性一般用来...</title>
      <link>/cards/497.html</link>
      <guid isPermaLink="false">card:497</guid>
      <description>自定义属性是指开发者可以在 HTML 元素上定义的非标准属性。自定义属性一般用来存储一些数据，方便后续 JavaScript 处理。 例如对图片进行懒加载，当图片出现在视口之后才开始加载图片，所以不能一开始就把图片地址设置在 src 属性上...</description>
      <category>DOM/自定义属性</category>
      <pubDate>Sun, 25 Aug 2024 11:45:52 GMT</pubDate>
    </item>
    <item>
      <title>第九课：着色III</title>
      <link>/docs/project/18/157.html</link>
      <guid isPermaLink="false">doc:157</guid>
      <description>本课内容： 重心坐标插值 纹理贴图 纹理的其他应用 Barycentric Coordinates 为什么需要插值，很多操作都是在顶点上的，三角形内部从一个顶点过渡另一个顶点的平滑过渡，插值。 三角形三个顶点映射到纹理的哪些 UV，三角形内...</description>
      <pubDate>Tue, 21 Jan 2025 14:38:37 GMT</pubDate>
    </item>
    <item>
      <title>与对象一样，可以为类中的方法名设置计算属性名 const methodName ...</title>
      <link>/cards/278.html</link>
      <guid isPermaLink="false">card:278</guid>
      <description>与对象一样，可以为类中的方法名设置计算属性名 const methodName = &quot;sayHello&quot;; class Person { constructor(name) { this.name = name; } // 计算属性名 [m...</description>
      <category>JavaScript/类</category>
      <pubDate>Tue, 15 Aug 2023 15:01:54 GMT</pubDate>
    </item>
    <item>
      <title>生成器与迭代器的高级用法。 在调用迭代器的 next 方法时，还可以向其中传入一...</title>
      <link>/cards/226.html</link>
      <guid isPermaLink="false">card:226</guid>
      <description>生成器与迭代器的高级用法。 在调用迭代器的 next 方法时，还可以向其中传入一个参数： function* getIterator() { let first = yield 1; yield first + 2; } let itera...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 01 Aug 2023 14:17:27 GMT</pubDate>
    </item>
    <item>
      <title>mv 用来移动文件或者重命名文件。 重命名文件 # src 是文件夹，其余两个为...</title>
      <link>/cards/71.html</link>
      <guid isPermaLink="false">card:71</guid>
      <description>mv 用来移动文件或者重命名文件。 重命名文件 # src 是文件夹，其余两个为文件 ~ » tree . ├── hello.c ├── hello.md └── src 1 directory, 2 files # 重命名 hello....</description>
      <category>Linux/命令/mv</category>
      <pubDate>Tue, 11 Jul 2023 15:35:13 GMT</pubDate>
    </item>
    <item>
      <title>在 JavaScript 中， Symbol 表示运行时的唯一值，在 TypeS...</title>
      <link>/cards/602.html</link>
      <guid isPermaLink="false">card:602</guid>
      <description>在 JavaScript 中， Symbol 表示运行时的唯一值，在 TypeScript 中使用 symbol 这一类型来进行标注 const sym: symbol = Symbol(&quot;foo&quot;) 但是存在的一个问题就是，所有的 Sym...</description>
      <category>TypeScript/unique symbol</category>
      <pubDate>Mon, 21 Jul 2025 00:38:47 GMT</pubDate>
    </item>
    <item>
      <title>tsd 是什么，它是一个可以让你为类型写测试的工具，一般我们会在 .d.ts 中...</title>
      <link>/cards/599.html</link>
      <guid isPermaLink="false">card:599</guid>
      <description>tsd 是什么，它是一个可以让你为类型写测试的工具，一般我们会在 .d.ts 中定义类型，tsd 通过指定的类型测试文件来验证类型定义的正确性，一般是在 .test-d.ts 中文件编写测试代码。 安装 npm install --save...</description>
      <category>TypeScript/工具</category>
      <category>TypeScript/tsd</category>
      <pubDate>Sun, 20 Jul 2025 23:59:21 GMT</pubDate>
    </item>
    <item>
      <title>数组类型的声明有两种方法，以字符串数组为例： const strArr1: st...</title>
      <link>/cards/22.html</link>
      <guid isPermaLink="false">card:22</guid>
      <description>数组类型的声明有两种方法，以字符串数组为例： const strArr1: string[] = [&quot;Hello&quot;, &quot;World&quot;]; const strArr2: Array&lt;string&gt; = [&quot;Hello&quot;, &quot;World&quot;]; ...</description>
      <category>TypeScript/数据类型</category>
      <category>TypeScript/元组</category>
      <pubDate>Sun, 09 Jul 2023 14:52:39 GMT</pubDate>
    </item>
    <item>
      <title>三维设计师必读书单推荐： 《像艺术家一样思考》 适合小白入门阅读，不仅教了绘画技...</title>
      <link>/cards/510.html</link>
      <guid isPermaLink="false">card:510</guid>
      <description>三维设计师必读书单推荐： 《像艺术家一样思考》 适合小白入门阅读，不仅教了绘画技巧，还讲了如何克服对绘画的恐惧，最重要的是书中提供了一种独特的思考方式，并不单纯的讲绘画技巧，而是从视觉感知的角度教读者如何观察事物 《贝蒂的色彩》 从书中认知...</description>
      <category>书籍推荐/设计师</category>
      <pubDate>Sat, 09 Nov 2024 11:03:07 GMT</pubDate>
    </item>
    <item>
      <title>HTTP 重定向的优点： 可靠的执行 HTTP 事务 即使有一个位置出现了问题，...</title>
      <link>/cards/597.html</link>
      <guid isPermaLink="false">card:597</guid>
      <description>HTTP 重定向的优点： 可靠的执行 HTTP 事务 即使有一个位置出现了问题，还有其他的可用 最小化时延 重定向到离客户端最近的资源服务器处，用户可以更快的访问到资源 节约网络带宽 将服务器分散，可以减少网络拥塞 参考： 《HTTP 权威...</description>
      <category>HTTP/重定向</category>
      <pubDate>Sat, 19 Jul 2025 09:00:31 GMT</pubDate>
    </item>
    <item>
      <title>纳瓦尔的七个阅读习惯： 不关注阅读数量 不追求读多少书，也不追求读完一本书 果然...</title>
      <link>/cards/516.html</link>
      <guid isPermaLink="false">card:516</guid>
      <description>纳瓦尔的七个阅读习惯： 不关注阅读数量 不追求读多少书，也不追求读完一本书 果然舍弃 阅读过程中，如果十分枯燥且未引起你的兴趣，果断跳过 好书要精读重读 每个人都有几本反复精读的书，让这些书构成你的基础 激发思考和创意 读书不是为了获取知识...</description>
      <category>读书</category>
      <pubDate>Sun, 05 Jan 2025 12:19:00 GMT</pubDate>
    </item>
    <item>
      <title>笔记为什么需要分类，方便后续查找，比如需要输出的时候，一篇文章，一场演讲，一个汇...</title>
      <link>/cards/546.html</link>
      <guid isPermaLink="false">card:546</guid>
      <description>笔记为什么需要分类，方便后续查找，比如需要输出的时候，一篇文章，一场演讲，一个汇报，可以通过标签迅速查找到相关内容。 为什么要使用标签分类而不是文件夹，其实我相信很多人使用文件夹分类的时候都遇到过这样的问题，一篇笔记似乎可以放在多个地方，不...</description>
      <category>读书/笔记的方法</category>
      <category>学习方法/笔记分类</category>
      <pubDate>Thu, 03 Apr 2025 02:51:37 GMT</pubDate>
    </item>
    <item>
      <title>为什么要使用标签进行分类</title>
      <link>/docs/project/23/291.html</link>
      <guid isPermaLink="false">doc:291</guid>
      <description>笔记为什么需要分类，方便后续查找，比如需要输出的时候，一篇文章，一场演讲，一个汇报，可以通过标签迅速查找到相关内容。 为什么要使用标签分类而不是文件夹，其实我相信很多人使用文件夹分类的时候都遇到过这样的问题，一篇笔记似乎可以放在多个地方，不...</description>
      <pubDate>Thu, 03 Apr 2025 02:54:16 GMT</pubDate>
    </item>
    <item>
      <title>突然不知道遇到什么问题，无法将代码推送到 Github 了 # git push...</title>
      <link>/cards/3.html</link>
      <guid isPermaLink="false">card:3</guid>
      <description>突然不知道遇到什么问题，无法将代码推送到 Github 了 # git push -u origin master Enumerating objects: 248, done. Counting objects: 100% (248/24...</description>
      <category>Git/踩坑</category>
      <category>踩坑/Git</category>
      <pubDate>Sun, 09 Jul 2023 12:30:14 GMT</pubDate>
    </item>
    <item>
      <title>在浏览器中通过 window.innerWidth 获取屏幕宽度时，有的手机在微...</title>
      <link>/cards/36.html</link>
      <guid isPermaLink="false">card:36</guid>
      <description>在浏览器中通过 window.innerWidth 获取屏幕宽度时，有的手机在微信上面获得的数字相比于其它应用获得的数字偏小。 我的手机是 Redmi K40S，在高德上的屏幕大小是 393，在微信上获得的大小是 360。试过了很多办法，微...</description>
      <category>踩坑/DOM</category>
      <category>DOM/踩坑</category>
      <pubDate>Mon, 10 Jul 2023 04:43:00 GMT</pubDate>
    </item>
    <item>
      <title>在高分辨率屏幕 (dpr &gt; 1) 上进行绘图时，会发现绘制的图像比较模糊，这是...</title>
      <link>/cards/44.html</link>
      <guid isPermaLink="false">card:44</guid>
      <description>在高分辨率屏幕 (dpr &gt; 1) 上进行绘图时，会发现绘制的图像比较模糊，这是因为 Canvas 画布的单位不是一个 CSS 像素大小，而是一个物理像素大小。而 CSS 像素大小与物理像素大小相差 dpr 倍。当我们设置 Canvas 大...</description>
      <category>Canvas/踩坑/绘图模糊</category>
      <category>踩坑/Canvas</category>
      <pubDate>Mon, 10 Jul 2023 14:13:51 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript URL 解析会忽略协议的默认端，即使显示指定了端口： co...</title>
      <link>/cards/208.html</link>
      <guid isPermaLink="false">card:208</guid>
      <description>JavaScript URL 解析会忽略协议的默认端，即使显示指定了端口： console.log(new URL(&apos;https://foo.bar:443&apos;).port) // &apos;&apos; console.log(new URL(&apos;https:...</description>
      <category>踩坑/JavaScript</category>
      <category>JavaScript/踩坑</category>
      <pubDate>Sat, 29 Jul 2023 06:56:26 GMT</pubDate>
    </item>
    <item>
      <title>React 不支持在行内样式设置 !important // 无效 &lt;p sty...</title>
      <link>/cards/76.html</link>
      <guid isPermaLink="false">card:76</guid>
      <description>React 不支持在行内样式设置 !important // 无效 &lt;p style={{fontSize: &apos;20px !important&apos;}}&gt;Hello World&lt;/p&gt; 通过 ref 来设置 &lt;p ref={(node) =&gt; ...</description>
      <category>React/技巧</category>
      <category>技巧/React</category>
      <pubDate>Wed, 12 Jul 2023 13:12:45 GMT</pubDate>
    </item>
    <item>
      <title>React 19 变化： useActionState 将状态， pending...</title>
      <link>/cards/573.html</link>
      <guid isPermaLink="false">card:573</guid>
      <description>React 19 变化： useActionState 将状态， pending 和 action 封装为了一个 hook const [error, submitAction, isPending] = useActionState( a...</description>
      <category>React</category>
      <category>面试题</category>
      <pubDate>Fri, 18 Apr 2025 03:00:08 GMT</pubDate>
    </item>
    <item>
      <title>考虑视口的大小为 h ，页面的总长度为 y ，那么滚动条的长度 x 是多少 视口...</title>
      <link>/cards/37.html</link>
      <guid isPermaLink="false">card:37</guid>
      <description>考虑视口的大小为 h ，页面的总长度为 y ，那么滚动条的长度 x 是多少 视口占页面的比例应与滚动条长度占滚动条总长度（视口长度）相同，即 得到</description>
      <category>DOM/技巧</category>
      <category>技巧/DOM</category>
      <pubDate>Mon, 10 Jul 2023 04:45:44 GMT</pubDate>
    </item>
    <item>
      <title>如何不追踪某些文件？ 如果你还没有追踪这个文件，直接在 .gitignore 把...</title>
      <link>/cards/49.html</link>
      <guid isPermaLink="false">card:49</guid>
      <description>如何不追踪某些文件？ 如果你还没有追踪这个文件，直接在 .gitignore 把他添加进去就行了 # .gitignore private.key 但是如果不小心追踪了某个不应该追踪的文件，比如密钥，这个时候只改 .gitignore 是不...</description>
      <category>Git/技巧</category>
      <category>技巧/Git</category>
      <pubDate>Mon, 10 Jul 2023 14:44:04 GMT</pubDate>
    </item>
    <item>
      <title>&lt;div id=&quot;txt&quot; contenteditable=&quot;true&quot;&gt; 天不...</title>
      <link>/cards/83.html</link>
      <guid isPermaLink="false">card:83</guid>
      <description>&lt;div id=&quot;txt&quot; contenteditable=&quot;true&quot;&gt; 天不生夫子，万古如长夜！ &lt;/div&gt; &lt;button id=&quot;restore&quot;&gt;还原选区&lt;/button&gt; 方案一，保存 Range 对象，然后恢复，但是当内容发...</description>
      <category>技巧/DOM</category>
      <category>DOM/选区</category>
      <pubDate>Wed, 12 Jul 2023 14:35:17 GMT</pubDate>
    </item>
    <item>
      <title>背景 今天我突然想开一个新的账户，专门用来写一些电子书，在通过电子邮箱创建了另一...</title>
      <link>/cards/88.html</link>
      <guid isPermaLink="false">card:88</guid>
      <description>背景 今天我突然想开一个新的账户，专门用来写一些电子书，在通过电子邮箱创建了另一个账户之后，第一件事就是为这个账户添加一个 ssh 的公钥，这样就不用每次提交都要输入密码了，但是当我试图直接将我电脑上的公钥提交时，它提示我这个公钥已经存在，...</description>
      <category>Github/技巧</category>
      <category>技巧/Github</category>
      <pubDate>Wed, 12 Jul 2023 14:53:54 GMT</pubDate>
    </item>
    <item>
      <title>使用 Insersection Observer 实现无限滚动。在列表的最后一项...</title>
      <link>/cards/147.html</link>
      <guid isPermaLink="false">card:147</guid>
      <description>使用 Insersection Observer 实现无限滚动。在列表的最后一项，放置一个元素，这个元素透明不可见，我们监听这个元素是否出现视口，如果出现在视口中，就说明滚动到底部，我们便请求新的数据，我们可以设置 rootMargin ，...</description>
      <category>DOM/Intersection Observer/技巧</category>
      <category>技巧/Intersection Observer</category>
      <pubDate>Sun, 23 Jul 2023 15:07:48 GMT</pubDate>
    </item>
    <item>
      <title>任何一个人，因为公司的事找到我的话，不管什么事，这个事情就到我为止，不要把事情往...</title>
      <link>/cards/361.html</link>
      <guid isPermaLink="false">card:361</guid>
      <description>任何一个人，因为公司的事找到我的话，不管什么事，这个事情就到我为止，不要把事情往外推。 别人找你，但是这个事情可能不是你负责的，可能常见的作法是你把事情你说这个不是你负责的，是谁谁谁负责，然后就没有了，正确的做法是不论谁找你，这件事应该是到...</description>
      <category>技巧/职场</category>
      <pubDate>Tue, 17 Oct 2023 00:10:38 GMT</pubDate>
    </item>
    <item>
      <title>动态加载远程库的 demo，通过 import() 远程加载 CommonJS ...</title>
      <link>/cards/390.html</link>
      <guid isPermaLink="false">card:390</guid>
      <description>动态加载远程库的 demo，通过 import() 远程加载 CommonJS 的库。思路是在 window 对象上创建一个临时的 module 对象，然后通过 import() 远程加载这个库，库会挂载到这个临时对象上，加载成功后从这个临...</description>
      <category>JavaScript/技巧/动态加载</category>
      <category>技巧/JavaScript</category>
      <pubDate>Sun, 24 Dec 2023 14:57:51 GMT</pubDate>
    </item>
    <item>
      <title>具有父子关系的两个类型，如果经过一定变换后，还具有父子关系，就说明这种变换是协变...</title>
      <link>/cards/8.html</link>
      <guid isPermaLink="false">card:8</guid>
      <description>具有父子关系的两个类型，如果经过一定变换后，还具有父子关系，就说明这种变换是协变的，如果父子关系颠倒，就说明是逆变的。 如下两个类型， Dog 是 Animal 的子类型 interface Animal { name: string; }...</description>
      <category>TypeScript/逆变</category>
      <category>TypeScript/协变</category>
      <category>TypeScript/数据类型/函数</category>
      <pubDate>Sun, 09 Jul 2023 14:10:06 GMT</pubDate>
    </item>
    <item>
      <title>联合类型作为泛型传递时，其内容会进行分发 // 2 type A = strin...</title>
      <link>/cards/9.html</link>
      <guid isPermaLink="false">card:9</guid>
      <description>联合类型作为泛型传递时，其内容会进行分发 // 2 type A = string | number extends number ? 1 : 2; type B&lt;T&gt; = T extends number ? 1 : 2; // 1 | ...</description>
      <category>TypeScript/联合</category>
      <category>TypeScript/分布式特性</category>
      <pubDate>Sun, 09 Jul 2023 14:14:05 GMT</pubDate>
    </item>
    <item>
      <title>递归练习 type Split&lt;S extends string, T exte...</title>
      <link>/cards/10.html</link>
      <guid isPermaLink="false">card:10</guid>
      <description>递归练习 type Split&lt;S extends string, T extends string[] = []&gt; = S extends `${infer First}${infer Rest}` ? [First, ...Split&lt;...</description>
      <category>TypeScript/类型体操</category>
      <pubDate>Sun, 09 Jul 2023 14:14:51 GMT</pubDate>
    </item>
    <item>
      <title>可以通过 type 对类型取一个别名 type Status = number;...</title>
      <link>/cards/13.html</link>
      <guid isPermaLink="false">card:13</guid>
      <description>可以通过 type 对类型取一个别名 type Status = number; const status: Status =200; 一般 type 用于为一些复杂的类型声明取别名，如果每次都要声明，就会显得很麻烦，如函数类型 type ...</description>
      <category>TypeScript/type</category>
      <pubDate>Sun, 09 Jul 2023 14:21:34 GMT</pubDate>
    </item>
    <item>
      <title>TypeScript 内置了三个类型： any 、 unknown 和 neve...</title>
      <link>/cards/15.html</link>
      <guid isPermaLink="false">card:15</guid>
      <description>TypeScript 内置了三个类型： any 、 unknown 和 never 。 any 表示任意类型，一个变量如果标注为 any 类型，那么它可以接受任何类型的赋值，也可以赋值为任何的类型 let s: any = &quot;Hello W...</description>
      <category>TypeScript/数据类型</category>
      <pubDate>Sun, 09 Jul 2023 14:30:50 GMT</pubDate>
    </item>
    <item>
      <title>使用过 jQuery 就知道，它的有些函数不传递参数时就是获取值，传递参数时就是...</title>
      <link>/cards/16.html</link>
      <guid isPermaLink="false">card:16</guid>
      <description>使用过 jQuery 就知道，它的有些函数不传递参数时就是获取值，传递参数时就是设置值，如 // 获取值 const value = $(&apos;#text&apos;).text() // 设置值 $(&apos;#text&apos;).text(&apos;Hello World...</description>
      <category>TypeScript/数据类型/函数</category>
      <pubDate>Sun, 09 Jul 2023 14:33:48 GMT</pubDate>
    </item>
    <item>
      <title>有的时候我们需要更加精确的类型，例如服务接口返回的 code 字段，它的值是 0...</title>
      <link>/cards/20.html</link>
      <guid isPermaLink="false">card:20</guid>
      <description>有的时候我们需要更加精确的类型，例如服务接口返回的 code 字段，它的值是 0 或者 1 ，这种时候应如何声明类型 interface Response { code: number; status: string; } 如果直接声明为 ...</description>
      <category>TypeScript/联合</category>
      <pubDate>Sun, 09 Jul 2023 14:48:24 GMT</pubDate>
    </item>
    <item>
      <title>我们使用接口来描述对象的类型，接口中规定了对象应该包含的属性及其类型，标注为该接...</title>
      <link>/cards/21.html</link>
      <guid isPermaLink="false">card:21</guid>
      <description>我们使用接口来描述对象的类型，接口中规定了对象应该包含的属性及其类型，标注为该接口的对象，必须包含这个接口中规定的属性， 不能多也不能少 。 使用 interface 声明一个接口 interface Person { name: stri...</description>
      <category>TypeScript/数据类型/interface</category>
      <pubDate>Sun, 09 Jul 2023 14:50:53 GMT</pubDate>
    </item>
    <item>
      <title>TypeScript 的基本类型标注： const a: number = 1;...</title>
      <link>/cards/23.html</link>
      <guid isPermaLink="false">card:23</guid>
      <description>TypeScript 的基本类型标注： const a: number = 1; const b: string = &quot;hello world&quot;; const c: null = null; const d: undefined = nul...</description>
      <category>TypeScript/数据类型</category>
      <pubDate>Sun, 09 Jul 2023 14:55:36 GMT</pubDate>
    </item>
    <item>
      <title>Node 不能直接执行 ts 文件，需要使用 tsc 编译为 js 后才能执行 ...</title>
      <link>/cards/24.html</link>
      <guid isPermaLink="false">card:24</guid>
      <description>Node 不能直接执行 ts 文件，需要使用 tsc 编译为 js 后才能执行 tsc index.ts node index.js 这个流程对于开发来说有点冗余，可以使用 ts-node 直接执行 ts 文件 npm install ts...</description>
      <category>TypeScript</category>
      <pubDate>Sun, 09 Jul 2023 14:57:23 GMT</pubDate>
    </item>
    <item>
      <title>在 ts 文件中，为箭头函数添加泛型的方法为 const add = &lt;T&gt;(a...</title>
      <link>/cards/43.html</link>
      <guid isPermaLink="false">card:43</guid>
      <description>在 ts 文件中，为箭头函数添加泛型的方法为 const add = &lt;T&gt;(a: T, b: T) =&gt; { // ... } 但是在 tsx 中就会报错，我们要在泛型后面添加一个逗号 const add = &lt;T,&gt;(a: T, b: ...</description>
      <category>TypeScript/技巧</category>
      <pubDate>Mon, 10 Jul 2023 04:55:01 GMT</pubDate>
    </item>
    <item>
      <title>一个值可能同时具有多种可能的类型，在断言为具体的类型之前只能使用公共的属性和方法...</title>
      <link>/cards/142.html</link>
      <guid isPermaLink="false">card:142</guid>
      <description>一个值可能同时具有多种可能的类型，在断言为具体的类型之前只能使用公共的属性和方法 const strOrNum: string | number = &quot;a&quot;; // ❎ strOrNum.toLowerCase(); // ✅ (strOr...</description>
      <category>TypeScript/类型守卫</category>
      <pubDate>Tue, 18 Jul 2023 01:15:08 GMT</pubDate>
    </item>
    <item>
      <title>TypeScript 是什么 TypeScript 的数据类型 基本数据类型 字...</title>
      <link>/cards/393.html</link>
      <guid isPermaLink="false">card:393</guid>
      <description>TypeScript 是什么 TypeScript 的数据类型 基本数据类型 字面量类型 数组、元组 any、unknown 和 never interface 枚举</description>
      <category>TypeScript</category>
      <pubDate>Sat, 06 Jan 2024 16:55:59 GMT</pubDate>
    </item>
    <item>
      <title>配置 Conda 镜像源，修改 ~/.condarc 文件 channels: ...</title>
      <link>/cards/482.html</link>
      <guid isPermaLink="false">card:482</guid>
      <description>配置 Conda 镜像源，修改 ~/.condarc 文件 channels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsin...</description>
      <category>Python/conda</category>
      <category>镜像源/conda</category>
      <pubDate>Sat, 29 Jun 2024 05:27:14 GMT</pubDate>
    </item>
    <item>
      <title>小白鼠试毒问题。 问题：现在有 1000 瓶药水，其中有 1 瓶毒药，毒药药性发...</title>
      <link>/cards/508.html</link>
      <guid isPermaLink="false">card:508</guid>
      <description>小白鼠试毒问题。 问题：现在有 1000 瓶药水，其中有 1 瓶毒药，毒药药性发作致死时间为 1 小时。现在有 1 个小时的时间找出毒药，那么至少需要多少只小白鼠来试毒？假设药水量无限，可以无限稀释，喝药时间不计。 使用十位二进制对 100...</description>
      <category>智力题</category>
      <category>面试题</category>
      <pubDate>Sun, 27 Oct 2024 11:07:25 GMT</pubDate>
    </item>
    <item>
      <title>经常有这么一个场景，不同的人访问同一个 URL，服务器会返回不同的内容，比如根据...</title>
      <link>/cards/594.html</link>
      <guid isPermaLink="false">card:594</guid>
      <description>经常有这么一个场景，不同的人访问同一个 URL，服务器会返回不同的内容，比如根据所在的国家或地区返回不同的内容，这就意味着中间的缓存系统需要根据不同的国家和地区来对缓存进行区分，以保证能够正确的缓存内容。 问题是缓存系统要如何知道根据哪些请...</description>
      <category>HTTP/Vary</category>
      <pubDate>Fri, 18 Jul 2025 15:37:38 GMT</pubDate>
    </item>
    <item>
      <title>Content-Length 用来指定 HTTP 请求体或响应体所占字节的大小，...</title>
      <link>/cards/591.html</link>
      <guid isPermaLink="false">card:591</guid>
      <description>Content-Length 用来指定 HTTP 请求体或响应体所占字节的大小，除非是分块传输（ Transfer-Encoding: chunked ），否则必须携带 Content-Length 来指明实体主体的大小（如果没有携带主体，...</description>
      <category>HTTP/Content-Length</category>
      <pubDate>Mon, 14 Jul 2025 02:26:59 GMT</pubDate>
    </item>
    <item>
      <title>什么是一张好卡片： 写给自己看的 只解决一个问题 尊重原始数据 包含自己的见解 ...</title>
      <link>/cards/589.html</link>
      <guid isPermaLink="false">card:589</guid>
      <description>什么是一张好卡片： 写给自己看的 只解决一个问题 尊重原始数据 包含自己的见解 参考： 《万字长文说头卡片大法》</description>
      <pubDate>Sun, 13 Jul 2025 11:11:54 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 是单线程的，为了不阻塞线程，很多方法都是异步的，通过回调函...</title>
      <link>/cards/285.html</link>
      <guid isPermaLink="false">card:285</guid>
      <description>JavaScript 是单线程的，为了不阻塞线程，很多方法都是异步的，通过回调函数的形式来处理函数结果，这就会带来一个问题，当回调特别多时，代码的可读性急剧下降 getUser(function(user) { getOrders(user...</description>
      <category>JavaScript/Promise</category>
      <pubDate>Wed, 16 Aug 2023 12:40:25 GMT</pubDate>
    </item>
    <item>
      <title>我们可以通过 ls -R 来查看一个目录的结构，它可以显示该目录包含的所有文件以...</title>
      <link>/cards/394.html</link>
      <guid isPermaLink="false">card:394</guid>
      <description>我们可以通过 ls -R 来查看一个目录的结构，它可以显示该目录包含的所有文件以及子目录，以及子目录下包含的文件和目录，但是通过 ls -R 显示的信息有点难以阅读，在讲解其它命令之前，这里介绍一个 tree 的工具，它可以以树状的形式显示...</description>
      <category>Linux/命令/tree</category>
      <pubDate>Tue, 09 Jan 2024 13:35:39 GMT</pubDate>
    </item>
    <item>
      <title>安装 Rust，通过 rustup 的命令行工具对 Rust 进行安装。安装方法...</title>
      <link>/cards/484.html</link>
      <guid isPermaLink="false">card:484</guid>
      <description>安装 Rust，通过 rustup 的命令行工具对 Rust 进行安装。安装方法： Linux/Mac $ curl https://sh.rustup.rs -sSf | sh 在 WSL 安装后，使用 rustc 编译时报错 linke...</description>
      <category>Rust/安装</category>
      <pubDate>Sun, 14 Jul 2024 14:16:20 GMT</pubDate>
    </item>
    <item>
      <title>人生的长度是固定的，不要把人生当作是一份答卷，试图在这份答卷里面考到 90 分或...</title>
      <link>/cards/492.html</link>
      <guid isPermaLink="false">card:492</guid>
      <description>人生的长度是固定的，不要把人生当作是一份答卷，试图在这份答卷里面考到 90 分或 100 分，而是把人生看作是一个大型多人在线游戏，竭尽全力的去尝试所有你想尝试的东西！ 你要追求的不是物质财富的积累，而是去追求人生体验，去体验之前从未体验过...</description>
      <category>随笔</category>
      <pubDate>Sun, 18 Aug 2024 06:01:30 GMT</pubDate>
    </item>
    <item>
      <title>从视频中提取音频 ffmpeg -i &lt;input video&gt; -vn -c:...</title>
      <link>/cards/512.html</link>
      <guid isPermaLink="false">card:512</guid>
      <description>从视频中提取音频 ffmpeg -i &lt;input video&gt; -vn -c:a mp3 &lt;output audio&gt; 示例： ffmpeg -i input.mpt -vn -c:a mp3 output.mp3 参数解释： -vn 表...</description>
      <category>技巧/ffmpeg</category>
      <category>ffmpeg</category>
      <pubDate>Sun, 17 Nov 2024 05:31:41 GMT</pubDate>
    </item>
    <item>
      <title>巴纳姆效应指的是 个体倾向于接受普遍模糊的性格描述为准确且特别符合自己的情况 。...</title>
      <link>/cards/515.html</link>
      <guid isPermaLink="false">card:515</guid>
      <description>巴纳姆效应指的是 个体倾向于接受普遍模糊的性格描述为准确且特别符合自己的情况 。这种效应的名称来源于 19 世纪的美国马戏团经营者 P.T. 巴纳姆，他以吸引观众而闻名，常常利用模糊而普遍的描述来吸引人们的兴趣。 例如算命就是利用了巴纳姆效...</description>
      <category>心理学/巴纳姆效应</category>
      <pubDate>Mon, 02 Dec 2024 01:53:50 GMT</pubDate>
    </item>
    <item>
      <title>addEventListener 可以为 DOM 元素添加各种事件处理，语法如下...</title>
      <link>/cards/523.html</link>
      <guid isPermaLink="false">card:523</guid>
      <description>addEventListener 可以为 DOM 元素添加各种事件处理，语法如下 addEventListener(eventName, callback, options) 第一个参数是监听的事件名称，第二参数是处理函数，第三个参数用一配...</description>
      <category>DOM/事件处理/addEventListener</category>
      <pubDate>Sun, 23 Feb 2025 05:14:44 GMT</pubDate>
    </item>
    <item>
      <title>有一个美国的电视游戏节目 Let&apos;s Make a Deal，参赛者会看见三扇关...</title>
      <link>/cards/528.html</link>
      <guid isPermaLink="false">card:528</guid>
      <description>有一个美国的电视游戏节目 Let&apos;s Make a Deal，参赛者会看见三扇关闭了的门，其中一扇的后面有一辆汽车，另外两扇门后面则各藏有一只山羊，选中了汽车就可以获得该汽车。 当参赛者选定了一扇门但还未打开的时候，节目主持人会打开另外两扇...</description>
      <category>数学/概率</category>
      <category>反直觉</category>
      <pubDate>Sat, 01 Mar 2025 10:42:45 GMT</pubDate>
    </item>
    <item>
      <title>什么是执行上下文，代码执行时的抽象容器，包含了当前代码运行所需的信息，按照类型可...</title>
      <link>/cards/548.html</link>
      <guid isPermaLink="false">card:548</guid>
      <description>什么是执行上下文，代码执行时的抽象容器，包含了当前代码运行所需的信息，按照类型可分为三种： 全局执行上下文，代码首次执行时创建 函数执行上下文，每次函数调用时创建 Eval 执行上下文，在严格模式下直接调用 eval() 时创建 每个执行上...</description>
      <category>JavaScript/底层原理</category>
      <pubDate>Thu, 03 Apr 2025 12:11:13 GMT</pubDate>
    </item>
    <item>
      <title>我们都知道作用域的概念，它是指变量可访问范围。我们自然而然的会提出一个疑问，它是...</title>
      <link>/cards/549.html</link>
      <guid isPermaLink="false">card:549</guid>
      <description>我们都知道作用域的概念，它是指变量可访问范围。我们自然而然的会提出一个疑问，它是如何工作的，JavaScript 是如何判断变量是否可以访问的？对于嵌套场景下同名变量引用的值是如何区分的？答案是词法环境，JavaScript 引擎内部通过词...</description>
      <category>JavaScript/作用域</category>
      <category>JavaScript/词法环境</category>
      <category>JavaScript/底层原理</category>
      <pubDate>Thu, 03 Apr 2025 12:32:55 GMT</pubDate>
    </item>
    <item>
      <title>模块只通过 HTTP(s) 工作，而非本地。 如果你尝试通过 file:// 协...</title>
      <link>/cards/557.html</link>
      <guid isPermaLink="false">card:557</guid>
      <description>模块只通过 HTTP(s) 工作，而非本地。 如果你尝试通过 file:// 协议在本地打开一个网页，你会发现 import/export 指令不起作用。 模块核心功能： 始终使用 use strict 模块始终在严格模式下运行。例如，对一...</description>
      <category>JavaScript/模块</category>
      <category>ES6</category>
      <pubDate>Wed, 09 Apr 2025 03:57:31 GMT</pubDate>
    </item>
    <item>
      <title>Canvas 和 SVG 的区别： Canvas 像素栅格图，放大时失真 使用 ...</title>
      <link>/cards/566.html</link>
      <guid isPermaLink="false">card:566</guid>
      <description>Canvas 和 SVG 的区别： Canvas 像素栅格图，放大时失真 使用 JavaScript 绘制 绘制时不会引起 DOM 变化，性能好，适合游戏和数据可视化 简单事件系统，只能给整个 canvas 标签添加事件，无法为其中的绘制的...</description>
      <category>面试题</category>
      <category>Canvas</category>
      <category>SVG</category>
      <category>概念对比</category>
      <pubDate>Mon, 14 Apr 2025 14:15:42 GMT</pubDate>
    </item>
    <item>
      <title>Webpack 的 Loader 和 Plugin 的区别是什么： Loader...</title>
      <link>/cards/568.html</link>
      <guid isPermaLink="false">card:568</guid>
      <description>Webpack 的 Loader 和 Plugin 的区别是什么： Loader 主要负责转化文件内容，将不同类型的资源转化为模块，比如将 TypeScript 转化为 JavaScript，将 Less 转化为 CSS 在模块被处理时被调...</description>
      <category>前端工程化</category>
      <category>面试题</category>
      <category>概念对比</category>
      <pubDate>Tue, 15 Apr 2025 13:12:20 GMT</pubDate>
    </item>
    <item>
      <title>通常加载 CSS 是同步阻塞的，在解析到 CSS 资源时，会阻止已处理内容的渲染...</title>
      <link>/cards/569.html</link>
      <guid isPermaLink="false">card:569</guid>
      <description>通常加载 CSS 是同步阻塞的，在解析到 CSS 资源时，会阻止已处理内容的渲染，直至 CSS 加载并解析完成，构建 CSSOM 树，和 DOM 树形成渲染树后绘制到页面上。 假设 CSS 是异步加载的，那么就会出现一开始没样式，然后闪一下...</description>
      <category>浏览器</category>
      <category>CSS</category>
      <category> 面试题</category>
      <pubDate>Tue, 15 Apr 2025 14:08:12 GMT</pubDate>
    </item>
    <item>
      <title>短轮询、长轮询、SSE 和 WebSocket 异同点的比较。 共同点：为了和服...</title>
      <link>/cards/574.html</link>
      <guid isPermaLink="false">card:574</guid>
      <description>短轮询、长轮询、SSE 和 WebSocket 异同点的比较。 共同点：为了和服务端进行（准）实时通信。 区别： 短轮询：每隔一段时间发起请求，获取服务端状态信息，服务端有数据就返回，无数据就返回空数据，一个应用场景是扫码登陆校验，轮询是否...</description>
      <category>概念对比</category>
      <category>面试题</category>
      <category>短轮询</category>
      <category>长轮询</category>
      <category>SSE</category>
      <category>WebSocket</category>
      <pubDate>Fri, 18 Apr 2025 04:14:01 GMT</pubDate>
    </item>
    <item>
      <title>git reset 和 git revert 都是用来撤销更改的提交，但应用场景...</title>
      <link>/cards/575.html</link>
      <guid isPermaLink="false">card:575</guid>
      <description>git reset 和 git revert 都是用来撤销更改的提交，但应用场景不同： git reset &lt;commit&gt; ，将 HEAD 移动到指定的 commit ，提供选项控制对暂存区和工作区是否有影响 --soft ：对暂存区和工...</description>
      <category>概念对比</category>
      <category>Git/技巧</category>
      <category>面试题</category>
      <pubDate>Fri, 18 Apr 2025 05:21:10 GMT</pubDate>
    </item>
    <item>
      <title>ES Module 和 CommonJS 的区别： 语法 ES Module 使...</title>
      <link>/cards/577.html</link>
      <guid isPermaLink="false">card:577</guid>
      <description>ES Module 和 CommonJS 的区别： 语法 ES Module 使用 import 和 export 进行导入和导出 CommonJS 使用 require 和 module.exports 进行导入和导出 加载方式 ES M...</description>
      <category>JavaScript/模块</category>
      <category>概念对比</category>
      <category>面试题</category>
      <pubDate>Sun, 20 Apr 2025 13:14:36 GMT</pubDate>
    </item>
    <item>
      <title>CSRF（Cross-site request forgery）的意思是 跨站请...</title>
      <link>/cards/567.html</link>
      <guid isPermaLink="false">card:567</guid>
      <description>CSRF（Cross-site request forgery）的意思是 跨站请求 伪造，它利用已登录用户的信息，通过钓鱼网站向已登录的网站发送用户不知道的未授权操作，比如转账操作。常见的手段如在钓鱼网站中搞一个表单，因为用户主动点击提交表...</description>
      <category>安全/CSRF</category>
      <category>面试题</category>
      <pubDate>Tue, 15 Apr 2025 06:07:47 GMT</pubDate>
    </item>
    <item>
      <title>credentials 是指 Cookie、TLS 客户端证书、保存用户名和密码...</title>
      <link>/cards/582.html</link>
      <guid isPermaLink="false">card:582</guid>
      <description>credentials 是指 Cookie、TLS 客户端证书、保存用户名和密码的认证信息的数据。在使用 fetch 请求数据时，可以通过 credentials 参数控制是否携带 credentials 信息，它有三种取值： omit ：...</description>
      <category>JavaScript/fetch</category>
      <category>JavaScript/Cookie</category>
      <pubDate>Wed, 23 Apr 2025 05:13:58 GMT</pubDate>
    </item>
    <item>
      <title>为什么要记笔记？有人说经常用的不用记，不常用的记着没用，所以根本没有记笔记的必要...</title>
      <link>/cards/588.html</link>
      <guid isPermaLink="false">card:588</guid>
      <description>为什么要记笔记？有人说经常用的不用记，不常用的记着没用，所以根本没有记笔记的必要。我认为大错特错： 经常用的不用记：人总是会高估了自己的记忆力，著名的遗忘曲线告诉我们，人类遗忘的速度是如此之快，而记录是对抗遗忘最好的手段 不常用的记着没用：...</description>
      <category>思考</category>
      <category>学习方法</category>
      <pubDate>Sun, 18 May 2025 08:15:07 GMT</pubDate>
    </item>
    <item>
      <title>attribute 和 property 的对比： attribute 写在 H...</title>
      <link>/cards/585.html</link>
      <guid isPermaLink="false">card:585</guid>
      <description>attribute 和 property 的对比： attribute 写在 HTML 源代码中 通过 setAttribute 和 getAttribute 获取和设置 attribute 大小写不敏感，值始终为字符串 property ...</description>
      <category>概念对比</category>
      <category>面试题</category>
      <pubDate>Wed, 23 Apr 2025 09:45:18 GMT</pubDate>
    </item>
    <item>
      <title>Rust 的基本数据类型有 数字 整数 浮点数 字符 布尔 元组 数组 数字 数...</title>
      <link>/cards/26.html</link>
      <guid isPermaLink="false">card:26</guid>
      <description>Rust 的基本数据类型有 数字 整数 浮点数 字符 布尔 元组 数组 数字 数字分为整数和浮点数，整数根据表达的位数不同，是否支持负值，又可以细分，整数类型的名称是 类型+位数 的模式，有符号类型用 i 表示，无符号类型用 u 表示，位数...</description>
      <category>Rust/数据类型/基本数据类型</category>
      <pubDate>Mon, 10 Jul 2023 01:35:55 GMT</pubDate>
    </item>
    <item>
      <title>基本数据类型</title>
      <link>/docs/document/6/112.html</link>
      <guid isPermaLink="false">doc:112</guid>
      <description>Rust 的基本数据类型有 数字 整数 浮点数 字符 布尔 元组 数组 数字 数字分为整数和浮点数，整数根据表达的位数不同，是否支持负值，又可以细分，整数类型的名称是 类型+位数 的模式，有符号类型用 i 表示，无符号类型用 u 表示，位数...</description>
      <pubDate>Mon, 23 Sep 2024 15:02:11 GMT</pubDate>
    </item>
    <item>
      <title>原型链是 JavaScript 实现继承的一种机制，当访问一个对象上不存在的属性...</title>
      <link>/cards/587.html</link>
      <guid isPermaLink="false">card:587</guid>
      <description>原型链是 JavaScript 实现继承的一种机制，当访问一个对象上不存在的属性时，会从它的原型上去查找。每一个对象上都存在一个 prototype 属性，指向的就是其原型对象，原型对象上也存在 prototype ，可以发现，通过 pro...</description>
      <category>JavaScript/原型</category>
      <pubDate>Wed, 23 Apr 2025 11:01:44 GMT</pubDate>
    </item>
    <item>
      <title>记笔记的建议： 记录自己的想法 为什么要记录个人想法，现在的公共知识都可以通过搜...</title>
      <link>/cards/543.html</link>
      <guid isPermaLink="false">card:543</guid>
      <description>记笔记的建议： 记录自己的想法 为什么要记录个人想法，现在的公共知识都可以通过搜索引擎或者 AI 问出来，反而是个人想法与思考值得记录。 记录感到触动的时刻： 灵感很棒，当时看似无用的灵感，能为未来困顿时刻提供帮助，值得记录 信息有用，如何...</description>
      <category>读书/笔记的方法</category>
      <category>学习方法</category>
      <pubDate>Wed, 02 Apr 2025 10:25:58 GMT</pubDate>
    </item>
    <item>
      <title>用自己的话记笔记的建议</title>
      <link>/docs/project/23/285.html</link>
      <guid isPermaLink="false">doc:285</guid>
      <description>记笔记的建议： 记录自己的想法 为什么要记录个人想法，现在的公共知识都可以通过搜索引擎或者 AI 问出来，反而是个人想法与思考值得记录。 记录感到触动的时刻： 灵感很棒，当时看似无用的灵感，能为未来困顿时刻提供帮助，值得记录 信息有用，如何...</description>
      <pubDate>Mon, 31 Mar 2025 02:01:28 GMT</pubDate>
    </item>
    <item>
      <title>package.json 中的 resolutions 字段是 yarn 和 p...</title>
      <link>/cards/581.html</link>
      <guid isPermaLink="false">card:581</guid>
      <description>package.json 中的 resolutions 字段是 yarn 和 pnpm 包管理器提供的一个功能，用来强制指定依赖项的版本（包括嵌套依赖），减少依赖冲突问题。 常见应用场景： 覆盖依赖版本，比如 A 依赖 C@1.0.0，B ...</description>
      <category>面试题</category>
      <category>包管理器/package.json</category>
      <pubDate>Wed, 23 Apr 2025 02:13:32 GMT</pubDate>
    </item>
    <item>
      <title>async 和 await 是 generator 的语法糖。现使用 async...</title>
      <link>/cards/578.html</link>
      <guid isPermaLink="false">card:578</guid>
      <description>async 和 await 是 generator 的语法糖。现使用 asyncRunner 来模拟 async 和 await function asyncRunner(generatorFn) { return new Promise(...</description>
      <category>JavaScript/异步</category>
      <category>底层原理</category>
      <category>面试题</category>
      <pubDate>Sun, 20 Apr 2025 14:11:39 GMT</pubDate>
    </item>
    <item>
      <title>性能指标有哪些？有哪些性能优化手段？ 首屏性能指标： FCP：首次内容渲染，浏览...</title>
      <link>/cards/571.html</link>
      <guid isPermaLink="false">card:571</guid>
      <description>性能指标有哪些？有哪些性能优化手段？ 首屏性能指标： FCP：首次内容渲染，浏览器首次渲染任何文本、图片、非空白 Canvas/SVG 内容的时间点 LCP：页面中最大可见内容元素（如图片、视频、文本块）首次渲染完成的时间点 TTI：页面可...</description>
      <category>面试题</category>
      <category>性能优化</category>
      <pubDate>Wed, 16 Apr 2025 02:32:08 GMT</pubDate>
    </item>
    <item>
      <title>FiberRoot 和 HostRootFiber 辨析： FiberRoot ...</title>
      <link>/cards/545.html</link>
      <guid isPermaLink="false">card:545</guid>
      <description>FiberRoot 和 HostRootFiber 辨析： FiberRoot ，它不是 FiberNode ，每次 createRoot 时都会创建一个 FiberRoot ，它是应用的全局管理者，核心调度中枢 应用入口锚点，包含了 DO...</description>
      <category>React/源码</category>
      <category>概念对比</category>
      <pubDate>Thu, 03 Apr 2025 01:45:13 GMT</pubDate>
    </item>
    <item>
      <title>push 和 concat 的区别： push 会原地修改数组， concat ...</title>
      <link>/cards/565.html</link>
      <guid isPermaLink="false">card:565</guid>
      <description>push 和 concat 的区别： push 会原地修改数组， concat 不会修改原数组，而是返回新的数组 const arr = [1, 2, 3]; arr.push(4); console.log(arr); // [1, 2,...</description>
      <category>面试题</category>
      <pubDate>Mon, 14 Apr 2025 08:37:51 GMT</pubDate>
    </item>
    <item>
      <title>第二十二课：动画与模拟II</title>
      <link>/docs/project/18/202.html</link>
      <guid isPermaLink="false">doc:202</guid>
      <description>知道一个物体的位置和速度，预测下一时刻出现的位置，这个很简单。 单个粒子的模拟，一个粒子在速度场中怎么运动 求解一阶常微分方程 给定初始位置，计算位置随时间的变化 怎么解，欧拉方法（前向欧拉，显示欧拉），用的全一个时刻的量 简单递归 经常使...</description>
      <pubDate>Sun, 09 Mar 2025 10:13:17 GMT</pubDate>
    </item>
    <item>
      <title>Cookie 有哪些属性： Domain：哪些域名可以访问此 Cookie Pa...</title>
      <link>/cards/576.html</link>
      <guid isPermaLink="false">card:576</guid>
      <description>Cookie 有哪些属性： Domain：哪些域名可以访问此 Cookie Path：哪些 URL 路径前缀可以访问此 Cookie，/admin 表示只有 /admin/* 路径可以访问 Expires/Max-Age：Cookie 的过...</description>
      <category>面试题</category>
      <category>JavaScript/Cookie</category>
      <pubDate>Sun, 20 Apr 2025 12:58:30 GMT</pubDate>
    </item>
    <item>
      <title>第八课：着色II</title>
      <link>/docs/project/18/156.html</link>
      <guid isPermaLink="false">doc:156</guid>
      <description>一些说明： 着色是在一个点上 各个方向向量均是指从着色点出去的方向，且均为单位向量 高光项，什么是高光，如何定义高光？ 一些光滑的物体，反射的方向和观测的方向接近时就会产生高光。 Blinn-Phone 模型，可以观察到一个现象，观测方向与...</description>
      <pubDate>Sun, 19 Jan 2025 15:10:52 GMT</pubDate>
    </item>
    <item>
      <title>模块 fileinput 让你能够轻松地迭代一系列文本文件中的所有行。 使用模块...</title>
      <link>/cards/479.html</link>
      <guid isPermaLink="false">card:479</guid>
      <description>模块 fileinput 让你能够轻松地迭代一系列文本文件中的所有行。 使用模块 fileinput ，在 UNIX 管道中使用 cat 调用脚本的效果将与以命令行参数的方式向脚本提供文件名一样。 $ cat file.txt | pyth...</description>
      <category>Python/标准库/fileinput</category>
      <pubDate>Wed, 26 Jun 2024 10:42:29 GMT</pubDate>
    </item>
    <item>
      <title>XSS（Cross-Site Scripting），跨站脚本攻击，为防止与 CS...</title>
      <link>/cards/579.html</link>
      <guid isPermaLink="false">card:579</guid>
      <description>XSS（Cross-Site Scripting），跨站脚本攻击，为防止与 CSS 缩写混淆，使用了 XSS 的缩写。攻击原理是攻击者通过将恶意代码注入到页面，页面未经处理执行了恶意代码，从而导致用户信息泄露，页面被篡改等问题。 XSS 主...</description>
      <category>面试题</category>
      <category>安全/XSS</category>
      <pubDate>Mon, 21 Apr 2025 07:01:19 GMT</pubDate>
    </item>
    <item>
      <title>如何发布 npm 包。 需要有 npm 账号，前往[官网](https://ww...</title>
      <link>/cards/106.html</link>
      <guid isPermaLink="false">card:106</guid>
      <description>如何发布 npm 包。 需要有 npm 账号，前往[官网](https://www.npmjs.com/) 注册账号 确定你的 registry npm config get registry // 先康康你的是否是npm官方的源，不是请切...</description>
      <category>包管理器/npm</category>
      <pubDate>Wed, 12 Jul 2023 15:53:00 GMT</pubDate>
    </item>
    <item>
      <title>npm 设置国内镜像源 npm config set registry http...</title>
      <link>/cards/107.html</link>
      <guid isPermaLink="false">card:107</guid>
      <description>npm 设置国内镜像源 npm config set registry https://registry.npm.taobao.org</description>
      <category>包管理器/npm</category>
      <pubDate>Wed, 12 Jul 2023 15:54:47 GMT</pubDate>
    </item>
    <item>
      <title>npm install 是根据 package.json 文件还是 packag...</title>
      <link>/cards/196.html</link>
      <guid isPermaLink="false">card:196</guid>
      <description>npm install 是根据 package.json 文件还是 package-lock.json 文件进行安装包的呢? 这个问题你在网上搜可能会得到不同的结论，这是因为安装策略有过三次调整： npm 5.0.x 版本， npm ins...</description>
      <category>包管理器/npm</category>
      <pubDate>Wed, 26 Jul 2023 15:38:14 GMT</pubDate>
    </item>
    <item>
      <title>peerDependencies 是 package.json 中的一个属性，类...</title>
      <link>/cards/292.html</link>
      <guid isPermaLink="false">card:292</guid>
      <description>peerDependencies 是 package.json 中的一个属性，类似于 dependencies 和 devDependices ，不同于点在于 peerDependencies 一般常见于库中，用来声明该库所依赖的一些包的版...</description>
      <category>包管理器/package.json</category>
      <pubDate>Wed, 16 Aug 2023 13:13:57 GMT</pubDate>
    </item>
    <item>
      <title>模块化的发展历史： 无模块（1995-2009） var module1 = {...</title>
      <link>/cards/583.html</link>
      <guid isPermaLink="false">card:583</guid>
      <description>模块化的发展历史： 无模块（1995-2009） var module1 = { foo: function() { /*...*/ } }; var module2 = { bar: function() { /*...*/ } }; 全...</description>
      <pubDate>Wed, 23 Apr 2025 05:49:56 GMT</pubDate>
    </item>
    <item>
      <title>GET 和 POST 的比较： 作用 GET：一般用以请求资源 POST：一般用...</title>
      <link>/cards/580.html</link>
      <guid isPermaLink="false">card:580</guid>
      <description>GET 和 POST 的比较： 作用 GET：一般用以请求资源 POST：一般用以提交数据或更新资源 幂等 GET：多次请求对服务器状态无影响，具有幂等性 POST：请求会对服务器状态产生影响，无幂等性 安全 GET：安全性较好，无法作为 ...</description>
      <category>HTTP</category>
      <category>面试题</category>
      <category>概念对比</category>
      <pubDate>Mon, 21 Apr 2025 07:50:05 GMT</pubDate>
    </item>
    <item>
      <title>为什么不能用场所的 WiFi，一旦我们通过 HTTP 访问网站，网站就可能被篡改...</title>
      <link>/cards/35.html</link>
      <guid isPermaLink="false">card:35</guid>
      <description>为什么不能用场所的 WiFi，一旦我们通过 HTTP 访问网站，网站就可能被篡改，如果在页面输入了密码，即使密码是通过 HTTPS 传输的，但是如果提交的地址被修改了，那么你的密码也泄露了。 使用公司的电脑，HTTPS 能保证数据安全吗？只...</description>
      <category>安全/HTTPS</category>
      <pubDate>Mon, 10 Jul 2023 04:42:09 GMT</pubDate>
    </item>
    <item>
      <title>密钥交换算法： RSA 使用证书里面的的公钥对本地生成的 pre-master ...</title>
      <link>/cards/34.html</link>
      <guid isPermaLink="false">card:34</guid>
      <description>密钥交换算法： RSA 使用证书里面的的公钥对本地生成的 pre-master 进行加密，然后传输给服务端，二者使用之前交换的两个随机数和 pre-master 合成会话密钥进行加密通信。 缺点是一旦服务端的私钥泄露，之前发送的所有消息都可...</description>
      <category>安全/算法</category>
      <pubDate>Mon, 10 Jul 2023 04:39:59 GMT</pubDate>
    </item>
    <item>
      <title>通过 cat 命令可以查看文件的内容 # 查看 hello.c 的文件内容 ~ ...</title>
      <link>/cards/55.html</link>
      <guid isPermaLink="false">card:55</guid>
      <description>通过 cat 命令可以查看文件的内容 # 查看 hello.c 的文件内容 ~ » cat hello.c #include&lt;stdio.h&gt; int main() { printf(&quot;Hello World!&quot;); return 0; }...</description>
      <category>Linux/命令/cat</category>
      <pubDate>Mon, 10 Jul 2023 15:08:36 GMT</pubDate>
    </item>
    <item>
      <title>tar 命令是 Linux 操作系统自带一个打包命令行工具，它可以将目录打包为一...</title>
      <link>/cards/56.html</link>
      <guid isPermaLink="false">card:56</guid>
      <description>tar 命令是 Linux 操作系统自带一个打包命令行工具，它可以将目录打包为一个文件，也可以在打包的同时进行压缩。 它的一般使用规则如下： tar 选项 打包后的文件名 被打包的目录 下面是一些常见的选项： -c ：打包 -v ：显示详细...</description>
      <category>Linux/命令/tar</category>
      <pubDate>Mon, 10 Jul 2023 15:13:51 GMT</pubDate>
    </item>
    <item>
      <title>touch 方法可以新建一个空文件，如果该文件已经存在，则只会更新该文件最后的修...</title>
      <link>/cards/58.html</link>
      <guid isPermaLink="false">card:58</guid>
      <description>touch 方法可以新建一个空文件，如果该文件已经存在，则只会更新该文件最后的修改时间为当前时间。 # 当前目录下只有 hello.c 这个文件 ~ » ls -l total 0 -rw-r--r-- 1 xt xt 75 Nov 20 ...</description>
      <category>Linux/命令/touch</category>
      <pubDate>Mon, 10 Jul 2023 15:18:54 GMT</pubDate>
    </item>
    <item>
      <title>基本用法 cp 命令用来复制文件，基本用法 cp source destinat...</title>
      <link>/cards/61.html</link>
      <guid isPermaLink="false">card:61</guid>
      <description>基本用法 cp 命令用来复制文件，基本用法 cp source destination 复制文件并命名 # 当前文件夹下内容 ~ » ls -l total 0 -rw-r--r-- 1 xt xt 75 Nov 20 18:34 hell...</description>
      <category>Linux/命令/cp</category>
      <pubDate>Tue, 11 Jul 2023 04:53:11 GMT</pubDate>
    </item>
    <item>
      <title>很多的命令都接收一个路径作为参数，例如 ls 命令可以接收一个路径，查看该路径下...</title>
      <link>/cards/63.html</link>
      <guid isPermaLink="false">card:63</guid>
      <description>很多的命令都接收一个路径作为参数，例如 ls 命令可以接收一个路径，查看该路径下包含的文件及文件夹。路径可以分为两种，绝对路径和相对路径，我们知道 Linux 的系统是一个树型结构，树的根就是根目录，它包含一系列的目录，这些目录又包含了更多...</description>
      <category>Linux/命令/ls</category>
      <pubDate>Tue, 11 Jul 2023 05:01:01 GMT</pubDate>
    </item>
    <item>
      <title>使用 mkdir 可以创建一个空文件夹 # 当前文件夹下什么也没有 ~ » ll...</title>
      <link>/cards/70.html</link>
      <guid isPermaLink="false">card:70</guid>
      <description>使用 mkdir 可以创建一个空文件夹 # 当前文件夹下什么也没有 ~ » ll total 0 # 创建一个名为 dir 的空文件夹 ~ » mkdir dir ~ » ll total 0 drwxr-xr-x 1 xt xt 4.0K...</description>
      <category>Linux/命令/mkdir</category>
      <pubDate>Tue, 11 Jul 2023 14:55:24 GMT</pubDate>
    </item>
    <item>
      <title>rm 用来删除文件和文件夹 ~ » tree . ├── dst │ ├── h...</title>
      <link>/cards/77.html</link>
      <guid isPermaLink="false">card:77</guid>
      <description>rm 用来删除文件和文件夹 ~ » tree . ├── dst │ ├── hello.c │ ├── hello.md │ └── hello2.md └── src 2 directories, 3 files # 删除 dst 下的...</description>
      <category>Linux/命令/rm</category>
      <pubDate>Wed, 12 Jul 2023 13:17:21 GMT</pubDate>
    </item>
    <item>
      <title>ls 命令的作用是查看指定目录下包含的所有文件及目录。 # 查看当前目录包含的文...</title>
      <link>/cards/99.html</link>
      <guid isPermaLink="false">card:99</guid>
      <description>ls 命令的作用是查看指定目录下包含的所有文件及目录。 # 查看当前目录包含的文件及目录 ~ » ls hello hello.c math 当前目录包含两个文件 hello hello.c 和一个目录 math 。 上述 ls 命令没有指...</description>
      <category>Linux/命令/ls</category>
      <pubDate>Wed, 12 Jul 2023 15:41:21 GMT</pubDate>
    </item>
    <item>
      <title>ls 不会显示隐藏的文件和目录，在 Linux 中，以 . 开头的文件名或目录名...</title>
      <link>/cards/100.html</link>
      <guid isPermaLink="false">card:100</guid>
      <description>ls 不会显示隐藏的文件和目录，在 Linux 中，以 . 开头的文件名或目录名就认为是隐藏文件(夹)，如果需要查看隐藏内容，可以添加 -a 选项 # 查看当前目录包含的所有内容，包含隐藏目录 ~ » ls -a . .cache .loc...</description>
      <category>Linux/命令/ls</category>
      <pubDate>Wed, 12 Jul 2023 15:42:26 GMT</pubDate>
    </item>
    <item>
      <title>ls 只能查看一个层级的内容，所以当前目录下的 math 目录下的文件是查看不了...</title>
      <link>/cards/101.html</link>
      <guid isPermaLink="false">card:101</guid>
      <description>ls 只能查看一个层级的内容，所以当前目录下的 math 目录下的文件是查看不了的，如果希望进一步查看所包含目录的里面的内容，那么可以通过 -R 选项做到这件事情 # 递归显示目录 ~ » ls -R .: hello hello.c ma...</description>
      <category>Linux/命令/ls</category>
      <pubDate>Wed, 12 Jul 2023 15:44:25 GMT</pubDate>
    </item>
    <item>
      <title>如果希望显示有关文件更多的信息，例如文件权限，文件大小等等，我们可以添加 -l ...</title>
      <link>/cards/102.html</link>
      <guid isPermaLink="false">card:102</guid>
      <description>如果希望显示有关文件更多的信息，例如文件权限，文件大小等等，我们可以添加 -l 选项显示更多信息 # 显示文件的详细信息 ~ » ls -l total 32 -rwxr-xr-x 1 xt xt 16696 Nov 9 16:10 hel...</description>
      <category>Linux/命令/ls</category>
      <pubDate>Wed, 12 Jul 2023 15:45:55 GMT</pubDate>
    </item>
    <item>
      <title>CommonJS 与 ES Module 导出值比较。 CommonJS，值拷贝...</title>
      <link>/cards/113.html</link>
      <guid isPermaLink="false">card:113</guid>
      <description>CommonJS 与 ES Module 导出值比较。 CommonJS，值拷贝，不会更改 // a.js let a = 1; const add = () =&gt; { a += 1; } exports.a = a; exports.ad...</description>
      <category>JavaScript/模块</category>
      <category>概念对比</category>
      <pubDate>Thu, 13 Jul 2023 13:32:03 GMT</pubDate>
    </item>
    <item>
      <title>通过 keyof 可以查询类型包含的所有的键 interface Obj { a...</title>
      <link>/cards/138.html</link>
      <guid isPermaLink="false">card:138</guid>
      <description>通过 keyof 可以查询类型包含的所有的键 interface Obj { a: string; b: number; 1: string; [key: string]: any; } type Keys = keyof Obj; 配合 ...</description>
      <category>TypeScript/类型操作</category>
      <pubDate>Mon, 17 Jul 2023 04:27:55 GMT</pubDate>
    </item>
    <item>
      <title>关于滚动的一些注意点： html 和 textarea 元素会出现滚动条，是因为...</title>
      <link>/cards/376.html</link>
      <guid isPermaLink="false">card:376</guid>
      <description>关于滚动的一些注意点： html 和 textarea 元素会出现滚动条，是因为其 overflow 的初始值为 auto ，而不是 visible 对于 PC 来说，滚动条是出现在 html 元素上，而对于移动设备来说却不是，在 PC 设...</description>
      <category>CSS/滚动</category>
      <pubDate>Sat, 11 Nov 2023 02:55:06 GMT</pubDate>
    </item>
    <item>
      <title>不同定位的包含块： position: relative 和 position:...</title>
      <link>/cards/377.html</link>
      <guid isPermaLink="false">card:377</guid>
      <description>不同定位的包含块： position: relative 和 position: static ：包含块由其最近的块级元素的 content-box 形成 position: fixed ，其包含块由初始包含块形成 position: ab...</description>
      <category>CSS/定位/包含块</category>
      <pubDate>Sun, 12 Nov 2023 05:53:37 GMT</pubDate>
    </item>
    <item>
      <title>绝对定位的性质： 如果不设置 left(right) 和 top(bottom)...</title>
      <link>/cards/379.html</link>
      <guid isPermaLink="false">card:379</guid>
      <description>绝对定位的性质： 如果不设置 left(right) 和 top(bottom) 值，其默认值并不是 0 ，而是其 position: static 所在的位置 在不设置宽度的情况下，其宽度具有包裹性，即其宽度由内容的多少决定，同 disp...</description>
      <category>CSS/定位/absolute</category>
      <pubDate>Sun, 12 Nov 2023 08:47:18 GMT</pubDate>
    </item>
    <item>
      <title>每个函数内部都会自动传入一个 arguments 对象，但是箭头函数内部并没有 ...</title>
      <link>/cards/239.html</link>
      <guid isPermaLink="false">card:239</guid>
      <description>每个函数内部都会自动传入一个 arguments 对象，但是箭头函数内部并没有 arguments 对象，所以想取得箭头函数传入的参数，就得使用剩余参数 (function () { let add = (...values) =&gt; { c...</description>
      <category>JavaScript/箭头函数</category>
      <pubDate>Tue, 01 Aug 2023 15:19:12 GMT</pubDate>
    </item>
    <item>
      <title>使用 CSS 实现高度隐藏与显示动画。 在没有指定高度的情况下，其默认值为 au...</title>
      <link>/cards/384.html</link>
      <guid isPermaLink="false">card:384</guid>
      <description>使用 CSS 实现高度隐藏与显示动画。 在没有指定高度的情况下，其默认值为 auto ，容器的高度一般是由子元素撑开的，直接在这种情况下使用 transition 或 animation 是无用的，因为 auto 的值不确定。 我们不设置高...</description>
      <category>CSS/动画</category>
      <category>CSS/技巧</category>
      <category>技巧/CSS</category>
      <pubDate>Sat, 02 Dec 2023 15:55:16 GMT</pubDate>
    </item>
    <item>
      <title>箭头函数与一般函数的不同： 函数内部没有 this ， arguments ， ...</title>
      <link>/cards/240.html</link>
      <guid isPermaLink="false">card:240</guid>
      <description>箭头函数与一般函数的不同： 函数内部没有 this ， arguments ， new.target 绑定 不能通过 new 的方式被调用，上文提及过，箭头函数内部没有 [[Construct]] 方法 没有 prototype 尽管箭头函...</description>
      <category>JavaScript/箭头函数</category>
      <pubDate>Tue, 01 Aug 2023 15:21:51 GMT</pubDate>
    </item>
    <item>
      <title>《荀子》有句话说的好，“如切如磋，如琢如莫，谓学问也”，学问是需要不停的琢磨的，...</title>
      <link>/cards/33.html</link>
      <guid isPermaLink="false">card:33</guid>
      <description>《荀子》有句话说的好，“如切如磋，如琢如莫，谓学问也”，学问是需要不停的琢磨的，我们对知识反复的推敲打磨，才能形成自己的学问。但是如果仅仅是在脑中进行，却是有非常大的难度，因为大脑它容量和算力有限，且有时也不可靠，时不时会遗漏掉一些细节，甚...</description>
      <category>学习方法</category>
      <pubDate>Mon, 10 Jul 2023 01:44:46 GMT</pubDate>
    </item>
    <item>
      <title>记笔记遇到的问题： 需要解决问题时想不起来记的笔记 找到了相关的笔记，却难以应用...</title>
      <link>/cards/534.html</link>
      <guid isPermaLink="false">card:534</guid>
      <description>记笔记遇到的问题： 需要解决问题时想不起来记的笔记 找到了相关的笔记，却难以应用 第一个问题，为什么想不起来，有一个 必要难度理论 ，存储越容易，提取就越困难，反之存储越困难，提取就越容易。我们经常会把收集和记笔记弄错，收藏文章、划线、摘录...</description>
      <category>学习方法</category>
      <pubDate>Mon, 31 Mar 2025 01:55:47 GMT</pubDate>
    </item>
    <item>
      <title>为什么要用自己的话记笔记</title>
      <link>/docs/project/23/283.html</link>
      <guid isPermaLink="false">doc:283</guid>
      <description>记笔记遇到的问题： 需要解决问题时想不起来记的笔记 找到了相关的笔记，却难以应用 第一个问题，为什么想不起来，有一个 必要难度理论 ，存储越容易，提取就越困难，反之存储越困难，提取就越容易。我们经常会把收集和记笔记弄错，收藏文章、划线、摘录...</description>
      <pubDate>Sun, 30 Mar 2025 14:36:55 GMT</pubDate>
    </item>
    <item>
      <title>对象作为键值对数据结构存在的问题： 对象的键只能为字符串或者 symbol ，对...</title>
      <link>/cards/564.html</link>
      <guid isPermaLink="false">card:564</guid>
      <description>对象作为键值对数据结构存在的问题： 对象的键只能为字符串或者 symbol ，对象和数字都会被转化为字符串 多个对象作为键会被转化为同一字符串， [object Object] ，因此无法区分对象 const obj= {}; const ...</description>
      <category>JavaScript/Map</category>
      <category>面试题</category>
      <category>概念对比</category>
      <pubDate>Sun, 13 Apr 2025 07:03:52 GMT</pubDate>
    </item>
    <item>
      <title>第十九课：相机与透镜</title>
      <link>/docs/project/18/199.html</link>
      <guid isPermaLink="false">doc:199</guid>
      <description>图形学成像方法： 光栅化 光线追踪 都是合成方法成像，还可以通过捕捉方法成像，比如相机拍照成照片。 光传播是有时间的，限制光在极其微小的时间内能看到的东西，可以看到光传播的过程，计算摄影学。 相机背后到底是什么？相机的截面图，镜头，棱镜，机...</description>
      <pubDate>Sat, 08 Mar 2025 10:42:45 GMT</pubDate>
    </item>
    <item>
      <title>第十七课：材质与外观</title>
      <link>/docs/project/18/197.html</link>
      <guid isPermaLink="false">doc:197</guid>
      <description>材质的外观，有不同的材质，在光照下表现出不同的外观，外观是材质和光照作用的结果 在图形学中，什么是材质？渲染方程中哪一项是和材质有关的呢？BRDF，材质 = BRDF。 漫反射材质 漫反射材质的漫反射系数，假设入射光是常数，考虑能量守恒， ...</description>
      <pubDate>Fri, 07 Mar 2025 13:04:11 GMT</pubDate>
    </item>
    <item>
      <title>第六课：光栅化II</title>
      <link>/docs/project/18/154.html</link>
      <guid isPermaLink="false">doc:154</guid>
      <description>采样存在锯齿，走样 采样的理论，到底是怎么回事。光栅化就是判断一个像素中心是否在三角形内，是对 2D 空间的采样 由于采样带来的问题 锯齿 摩尔纹 车轮效应 原因是信号的变化的速度太快了，采样跟不上。 在采样 之前做一个模糊 （滤波） 从频...</description>
      <pubDate>Sun, 12 Jan 2025 14:22:11 GMT</pubDate>
    </item>
    <item>
      <title>Python 的序列相关索引卡片： 通用计算 切片 拼接 重复 成员资格判断 i...</title>
      <link>/cards/453.html</link>
      <guid isPermaLink="false">card:453</guid>
      <description>Python 的序列相关索引卡片： 通用计算 切片 拼接 重复 成员资格判断 in 内置函数，len、min 和 max 解包 列表 创建列表 列表方法 元组 创建元组 字符串 格式化 format 格式化指令 format_map，使用字...</description>
      <category>Python/序列</category>
      <pubDate>Mon, 24 Jun 2024 00:34:40 GMT</pubDate>
    </item>
    <item>
      <title>git revert 的用法。 它是什么 恢复到指定的 commit 工作原理 ...</title>
      <link>/cards/364.html</link>
      <guid isPermaLink="false">card:364</guid>
      <description>git revert 的用法。 它是什么 恢复到指定的 commit 工作原理 通过反向应用新建一个 commit，使得这个 commit 的内容与指定的 commit 相同，这样做可以保留历史记录，特别是在多人协作的项目。 如何使用 gi...</description>
      <category>Git</category>
      <pubDate>Wed, 18 Oct 2023 14:35:26 GMT</pubDate>
    </item>
    <item>
      <title>二叉树的最近公共祖先</title>
      <link>/docs/document/12/328.html</link>
      <guid isPermaLink="false">doc:328</guid>
      <description>题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 3 / \ 5 1 / \ / \ 6 2 0 8 / \ 7 4 输入：root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = ...</description>
      <pubDate>Wed, 16 Apr 2025 12:54:38 GMT</pubDate>
    </item>
    <item>
      <title>使用 at 定时运行任务，基本用法： at [-f filename] time...</title>
      <link>/cards/95.html</link>
      <guid isPermaLink="false">card:95</guid>
      <description>使用 at 定时运行任务，基本用法： at [-f filename] time at 可以指定多种不同的 time 格式： 10:15 10:15 PM now、noon、midnight、teatime MMDDYY、MM/DD/YY、...</description>
      <category>Linux</category>
      <category>定时任务/at</category>
      <pubDate>Wed, 12 Jul 2023 15:26:40 GMT</pubDate>
    </item>
    <item>
      <title>使用 cron 进行定时任务， cron 命令格式 min hour dayof...</title>
      <link>/cards/96.html</link>
      <guid isPermaLink="false">card:96</guid>
      <description>使用 cron 进行定时任务， cron 命令格式 min hour dayofmonth month dayofweek command 可以指定特定值，也可以是取值范围（1~5），又或是通配符。 # 每天 10:15 执行命令 15 1...</description>
      <category>Linux</category>
      <category>定时任务/cron</category>
      <pubDate>Wed, 12 Jul 2023 15:31:12 GMT</pubDate>
    </item>
    <item>
      <title>Shell 脚本 for 循环。 语法 for var in list do c...</title>
      <link>/cards/124.html</link>
      <guid isPermaLink="false">card:124</guid>
      <description>Shell 脚本 for 循环。 语法 for var in list do commands done 例子 #!/bin/zsh # 默认分隔符为【空格|制表符|换行符】 for name in Alice Bob Candy Davi...</description>
      <category>Linux</category>
      <category>Shell编程/循环</category>
      <pubDate>Thu, 13 Jul 2023 14:16:21 GMT</pubDate>
    </item>
    <item>
      <title>new 一个对象具体做了什么： 基于构造器原型创建一个对象 调用构建器方法，并将...</title>
      <link>/cards/570.html</link>
      <guid isPermaLink="false">card:570</guid>
      <description>new 一个对象具体做了什么： 基于构造器原型创建一个对象 调用构建器方法，并将创建的对象作为内部 this 值 根据返回结果返回对象 手写实现 const newObj = (constructor, ...rest) =&gt; { cons...</description>
      <category>JavaScript</category>
      <category>面试题</category>
      <pubDate>Tue, 15 Apr 2025 14:28:50 GMT</pubDate>
    </item>
    <item>
      <title>TCP 为什么要进行三次握手？为什么不是两次？为什么不是四次？ 首先要明白进行握...</title>
      <link>/cards/562.html</link>
      <guid isPermaLink="false">card:562</guid>
      <description>TCP 为什么要进行三次握手？为什么不是两次？为什么不是四次？ 首先要明白进行握手的目的：确认双方的发送和接收信息的能力是 OK 的，即信道是可靠的 第一次握手，Server 能确定 Client 的发送能力和自身的接收能力是 OK 的 第...</description>
      <category>计算机网络/TCP</category>
      <category>面试题</category>
      <pubDate>Thu, 10 Apr 2025 01:42:48 GMT</pubDate>
    </item>
    <item>
      <title>isPointInPath(x, y) 可以判断某个点 (x, y) 是否在当前...</title>
      <link>/cards/194.html</link>
      <guid isPermaLink="false">card:194</guid>
      <description>isPointInPath(x, y) 可以判断某个点 (x, y) 是否在当前路径形成的区域中，这个 (x, y) 是指在 canvas 中的坐标。 下面会随机绘制 10 个小球，当点击画布时，会检测是否点击的点在小球的路径中，如果在则会...</description>
      <category>Canvas</category>
      <pubDate>Wed, 26 Jul 2023 15:28:12 GMT</pubDate>
    </item>
    <item>
      <title>梁文锋在 2024 年 DeepSeek 开发者大会上说，“我的父亲是一名小镇数...</title>
      <link>/cards/539.html</link>
      <guid isPermaLink="false">card:539</guid>
      <description>梁文锋在 2024 年 DeepSeek 开发者大会上说，“我的父亲是一名小镇数学老师，他从不问我考试排名，只问‘今天解决了什么问题’，这种对解题本能的呵护，是我后来敢于挑战技术无人区的底气。” 我觉得询问“今天解决了什么问题”这个教育方式...</description>
      <category>教育</category>
      <pubDate>Tue, 01 Apr 2025 15:03:07 GMT</pubDate>
    </item>
    <item>
      <title>对于数组、 Set 和 Map 集合，它们都有三个内置的迭代器，分别是： val...</title>
      <link>/cards/225.html</link>
      <guid isPermaLink="false">card:225</guid>
      <description>对于数组、 Set 和 Map 集合，它们都有三个内置的迭代器，分别是： values keys entries values 是所有值的集合， keys 是所有键的集合，数组和 Set 没有键，对于数组来说，键就是下标，对于 Set 来说...</description>
      <category>JavaScript</category>
      <pubDate>Mon, 31 Jul 2023 15:32:44 GMT</pubDate>
    </item>
    <item>
      <title>Map 是用来存储键值对结构的数据的，可以通过 new Map() 创建一个 M...</title>
      <link>/cards/246.html</link>
      <guid isPermaLink="false">card:246</guid>
      <description>Map 是用来存储键值对结构的数据的，可以通过 new Map() 创建一个 Map 集合 const map = new Map(); map.set(5, &quot;alice&quot;); map.set(10, &quot;bob&quot;); console.lo...</description>
      <category>JavaScript/Map</category>
      <pubDate>Wed, 02 Aug 2023 13:58:17 GMT</pubDate>
    </item>
    <item>
      <title>在 JavaScript 中，每一个函数都会默认的传入一个 this 参数，它的...</title>
      <link>/cards/238.html</link>
      <guid isPermaLink="false">card:238</guid>
      <description>在 JavaScript 中，每一个函数都会默认的传入一个 this 参数，它的取值取决于调用方式，而不是所处的位置 function Person(name) { this.name = name; this.getName = func...</description>
      <category>JavaScript/箭头函数</category>
      <pubDate>Tue, 01 Aug 2023 15:17:22 GMT</pubDate>
    </item>
    <item>
      <title>marker</title>
      <link>/docs/document/9/99.html</link>
      <guid isPermaLink="false">doc:99</guid>
      <description>&lt;marker&gt; 可以定义一个标记，用来标识路径，例如定义一个箭头标记，以标记路径的方向 &lt;defs&gt; &lt;marker id=&quot;tri&quot; markerWidth=&quot;6&quot; markerHeight=&quot;6&quot;&gt; &lt;path d=&quot;M 0 0 L ...</description>
      <pubDate>Thu, 28 Dec 2023 15:04:21 GMT</pubDate>
    </item>
    <item>
      <title>变量声明，使用 let 声明类型，默认是不可变的 let a = 1; // 不...</title>
      <link>/cards/25.html</link>
      <guid isPermaLink="false">card:25</guid>
      <description>变量声明，使用 let 声明类型，默认是不可变的 let a = 1; // 不能重新赋值 a = 2; 要使得变量可变，应当在 let 后加上 mut let mut a = 1; a = 2; 使用 let 声明变量后，后续可以继续声明...</description>
      <category>Rust/语法/变量声明</category>
      <pubDate>Mon, 10 Jul 2023 01:26:13 GMT</pubDate>
    </item>
    <item>
      <title>变量声明</title>
      <link>/docs/document/6/74.html</link>
      <guid isPermaLink="false">doc:74</guid>
      <description>变量声明，使用 let 声明类型，默认是不可变的 let a = 1; // 不能重新赋值 a = 2; 要使得变量可变，应当在 let 后加上 mut let mut a = 1; a = 2; 使用 let 声明变量后，后续可以继续声明...</description>
      <pubDate>Mon, 25 Dec 2023 01:27:16 GMT</pubDate>
    </item>
    <item>
      <title>Rust生命周期</title>
      <link>/docs/document/6/156.html</link>
      <guid isPermaLink="false">doc:156</guid>
      <description>当我们借用一个变量时，如果变量被销毁，那么我们就不能通过该借用的引用访问数据，因为变量以及被销毁了，此时访问的数据是不可知的。 fn main() { let x; { let y = 5; x = &amp;y; } println!(&quot;{}&quot;,...</description>
      <pubDate>Tue, 15 Oct 2024 14:42:32 GMT</pubDate>
    </item>
    <item>
      <title>当我们借用一个变量时，如果变量被销毁，那么我们就不能通过该借用的引用访问数据，因...</title>
      <link>/cards/116.html</link>
      <guid isPermaLink="false">card:116</guid>
      <description>当我们借用一个变量时，如果变量被销毁，那么我们就不能通过该借用的引用访问数据，因为变量以及被销毁了，此时访问的数据是不可知的。 fn main() { let x; { let y = 5; x = &amp;y; } println!(&quot;{}&quot;,...</description>
      <category>Rust/生命周期</category>
      <pubDate>Thu, 13 Jul 2023 13:48:13 GMT</pubDate>
    </item>
    <item>
      <title>字符串相乘</title>
      <link>/docs/document/12/245.html</link>
      <guid isPermaLink="false">doc:245</guid>
      <description>题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2 ，返回 num1 和 num2 的乘积，它们的乘积也表示为字符串形式。 注意：不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 输入: num1 = ...</description>
      <pubDate>Fri, 14 Feb 2025 01:13:24 GMT</pubDate>
    </item>
    <item>
      <title>x 的平方根</title>
      <link>/docs/document/12/155.html</link>
      <guid isPermaLink="false">doc:155</guid>
      <description>题目描述 实现 int sqrt(int x) 函数。计算并返回 x 的平方根，其中 x 是非负整数。由于返回类型是整数，结果只保留整数的部分，小数部分将被舍去。 示例 1： 输入: 4 输出: 2 示例 2： 输入: 8 输出: 2 解题...</description>
      <pubDate>Tue, 15 Oct 2024 14:31:27 GMT</pubDate>
    </item>
    <item>
      <title>用最少数量的箭引爆气球</title>
      <link>/docs/document/12/164.html</link>
      <guid isPermaLink="false">doc:164</guid>
      <description>题目描述 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ，其中 points[i] = [x_start, x_end] 表示水平直径在 x_start 和 x_end 之间的气球。你不知道气球...</description>
      <pubDate>Sun, 27 Oct 2024 14:25:41 GMT</pubDate>
    </item>
    <item>
      <title>罗马数字与数字的转换</title>
      <link>/docs/document/12/137.html</link>
      <guid isPermaLink="false">doc:137</guid>
      <description>罗马数字转数字 题目描述 罗马数包含以下七种字符 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如， 罗马数字 2 写做 II ，即为两个并列的 1。12 写做 XII ，即为 X + II 。 2...</description>
      <pubDate>Tue, 15 Oct 2024 14:00:48 GMT</pubDate>
    </item>
    <item>
      <title>组合总数</title>
      <link>/docs/document/12/150.html</link>
      <guid isPermaLink="false">doc:150</guid>
      <description>组合总数 题目描述 给定一个无重复元素的数组 candidates 和一个目标数 target ，找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取 。 说明： 所有...</description>
      <pubDate>Tue, 15 Oct 2024 14:25:33 GMT</pubDate>
    </item>
    <item>
      <title>组合</title>
      <link>/docs/document/12/149.html</link>
      <guid isPermaLink="false">doc:149</guid>
      <description>题目描述 给定两个整数 n 和 k，返回 1 ... n 中所有可能的 k 个数的组合。 示例： 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 解题思路...</description>
      <pubDate>Tue, 15 Oct 2024 14:23:50 GMT</pubDate>
    </item>
    <item>
      <title>复原 IP 地址</title>
      <link>/docs/document/12/130.html</link>
      <guid isPermaLink="false">doc:130</guid>
      <description>题目描述 给定一个只包含数字的字符串 s ，用以表示一个 IP 地址，返回所有可能从 s 获得的 有效 IP 地址 。你可以按任何顺序返回答案。有效 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成，且不能含有前导 0)，整...</description>
      <pubDate>Tue, 15 Oct 2024 13:39:49 GMT</pubDate>
    </item>
    <item>
      <title>单词搜索</title>
      <link>/docs/document/12/128.html</link>
      <guid isPermaLink="false">doc:128</guid>
      <description>题目描述 给定一个 m \times n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中，返回 true ；否则，返回 false 。 单词必须按照字母顺序，通过相邻的单元格内的字母构成，其中&quot;相邻&quot;单...</description>
      <pubDate>Tue, 15 Oct 2024 11:22:58 GMT</pubDate>
    </item>
    <item>
      <title>买卖股票的最佳时机 II</title>
      <link>/docs/document/12/159.html</link>
      <guid isPermaLink="false">doc:159</guid>
      <description>题目描述 给你一个整数数组 prices ，其中 prices[i] 表示某支股票第 i 天的价格。在每一天，你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买，然后在 同一天 出售。返回你能获得的最...</description>
      <pubDate>Thu, 17 Oct 2024 01:07:44 GMT</pubDate>
    </item>
    <item>
      <title>买卖股票的最佳时机 II</title>
      <link>/docs/document/12/159.html</link>
      <guid isPermaLink="false">doc:159</guid>
      <description>题目描述 给你一个整数数组 prices ，其中 prices[i] 表示某支股票第 i 天的价格。在每一天，你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买，然后在 同一天 出售。返回你能获得的最...</description>
      <pubDate>Thu, 17 Oct 2024 01:07:44 GMT</pubDate>
    </item>
    <item>
      <title>最小路径和</title>
      <link>/docs/document/12/152.html</link>
      <guid isPermaLink="false">doc:152</guid>
      <description>题目描述 给定一个包含非负整数的 m \times n 网格 grid ，请找出一条从左上角到右下角的路径，使得路径上的数字总和为最小。 说明：每次只能向下或者向右移动一步。 示例1： 输入：grid = [[1,3,1],[1,5,1],...</description>
      <pubDate>Tue, 15 Oct 2024 14:28:39 GMT</pubDate>
    </item>
    <item>
      <title>最大子序和</title>
      <link>/docs/document/12/151.html</link>
      <guid isPermaLink="false">doc:151</guid>
      <description>题目描述 给定一个整数数组 nums ，找到一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。 示例1： 输入：nums = [-2,1,-3,4,-1,2,1,-5,4] 输出：6 解释：连续子数组 [4,-1,2,1]...</description>
      <pubDate>Tue, 15 Oct 2024 14:27:57 GMT</pubDate>
    </item>
    <item>
      <title>跳跃游戏II</title>
      <link>/docs/document/12/144.html</link>
      <guid isPermaLink="false">doc:144</guid>
      <description>题目描述 给定一个非负整数数组，你最初位于数组的第一个位置，数组中的每个元素代表你在该位置可以跳跃的最大长度，你的目标是使用最少的跳跃次数到达数组的最后一个位置。 示例： 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置...</description>
      <pubDate>Tue, 15 Oct 2024 14:14:36 GMT</pubDate>
    </item>
    <item>
      <title>交错的字符串</title>
      <link>/docs/document/12/125.html</link>
      <guid isPermaLink="false">doc:125</guid>
      <description>题目描述 给定三个字符串 s1 、 s2 、 s3 ，请你帮忙验证 s3 是否是由 s1 和 s2 交错组成的。两个字符串 s 和 t 交错 的定义与过程如下，其中每个字符串都会被分割成若干非空子字符串： s = s1 + s2 + ......</description>
      <pubDate>Tue, 15 Oct 2024 11:17:11 GMT</pubDate>
    </item>
    <item>
      <title>最长连续序列</title>
      <link>/docs/document/12/163.html</link>
      <guid isPermaLink="false">doc:163</guid>
      <description>题目描述 给定一个未排序的整数数组 nums ，找出数字连续的最长序列（不要求序列元素在原数组中连续）的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 输入： nums = [100,4,200,1,3,2] 输出： 4 ...</description>
      <pubDate>Sun, 27 Oct 2024 13:39:35 GMT</pubDate>
    </item>
    <item>
      <title>字母异位词分组</title>
      <link>/docs/document/12/147.html</link>
      <guid isPermaLink="false">doc:147</guid>
      <description>题目描述 给定一个字符串数组，将字母异位词组合在一起。字母异位词指字母相同，但排列不同的字符串。 示例： 输入: [&quot;eat&quot;, &quot;tea&quot;, &quot;tan&quot;, &quot;ate&quot;, &quot;nat&quot;, &quot;bat&quot;] 输出: [ [&quot;ate&quot;,&quot;eat&quot;,&quot;...</description>
      <pubDate>Tue, 15 Oct 2024 14:19:35 GMT</pubDate>
    </item>
    <item>
      <title>外观数列</title>
      <link>/docs/document/12/145.html</link>
      <guid isPermaLink="false">doc:145</guid>
      <description>题目描述 给定一个正整数 n ，输出外观数列的第 n 项。 「外观数列」是一个整数序列，从数字 1 开始，序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列： countAndSay(1) = &quot;1&quot; cou...</description>
      <pubDate>Tue, 15 Oct 2024 14:17:24 GMT</pubDate>
    </item>
    <item>
      <title>删除有序数组中的重复项</title>
      <link>/docs/document/12/141.html</link>
      <guid isPermaLink="false">doc:141</guid>
      <description>删除有序数组中的重复项 题目描述 给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。不要使用额外的数组空间，你必须在 原地 修改输入数组并在使用 O(1) 额外空间的条件下完成。...</description>
      <pubDate>Tue, 15 Oct 2024 14:09:55 GMT</pubDate>
    </item>
    <item>
      <title>Pow(x, n)</title>
      <link>/docs/document/12/119.html</link>
      <guid isPermaLink="false">doc:119</guid>
      <description>题目描述 示例1: 输入：x = 2.00000, n = 10 输出：1024.00000 示例2： 输入：x = 2.10000, n = 3 输出：9.26100 提示： -100.0 &lt; x &lt; 100.0 -2^{31} \leq...</description>
      <pubDate>Tue, 15 Oct 2024 11:05:23 GMT</pubDate>
    </item>
    <item>
      <title>删除排序链表中的重复元素II</title>
      <link>/docs/document/12/140.html</link>
      <guid isPermaLink="false">doc:140</guid>
      <description>题目描述 存在一个 按升序排列 的链表，给你这个链表的头节点 head ，请你删除链表中所有存在数字重复情况的节点，只保留原始链表中没有重复出现的数字。返回同样按升序排列的结果链表。 示例1： 输入：1 -&gt; 1 -&gt; 2 -&gt; 3 -&gt; ...</description>
      <pubDate>Tue, 15 Oct 2024 14:07:57 GMT</pubDate>
    </item>
    <item>
      <title>简化路径</title>
      <link>/docs/document/12/134.html</link>
      <guid isPermaLink="false">doc:134</guid>
      <description>LeetCode：简化路径。 题目描述 给你一个字符串 path ，表示指向某一文件或目录的 Unix 风格 绝对路径 (以 &apos;/&apos; 开头)，请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中，一个点 . 表示当前目录本身；...</description>
      <pubDate>Tue, 15 Oct 2024 13:46:43 GMT</pubDate>
    </item>
    <item>
      <title>多数元素</title>
      <link>/docs/document/12/158.html</link>
      <guid isPermaLink="false">doc:158</guid>
      <description>题目描述 给定一个大小为 n 的数组 nums ，返回其中的多数元素。多数元素是指在数组中出现次数大于 ⌊n/2⌋ 的元素。 你可以假设数组是非空的，并且给定的数组总是存在多数元素。 示例 1： 输入：nums = [3,2,3] 输出：3...</description>
      <pubDate>Wed, 16 Oct 2024 14:59:34 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 不同于 Java、C++ 等典型的面向对象语言，JavaS...</title>
      <link>/cards/276.html</link>
      <guid isPermaLink="false">card:276</guid>
      <description>JavaScript 不同于 Java、C++ 等典型的面向对象语言，JavaScript 在过去并没有类的概念，所以一些从 Java 或 C++ 等其他面向语言转过来的开发者会感到困惑，所以在 ES6 中引入了类的概念。 使用关键字 cl...</description>
      <category>JavaScript/类</category>
      <pubDate>Tue, 15 Aug 2023 14:59:42 GMT</pubDate>
    </item>
    <item>
      <title>我们一般是通过 dx , dy 来控制图形的平移，其中 dx 控制在水平方向上的...</title>
      <link>/cards/185.html</link>
      <guid isPermaLink="false">card:185</guid>
      <description>我们一般是通过 dx , dy 来控制图形的平移，其中 dx 控制在水平方向上的平移， dy 控制在垂直方向上的平移 // 水平方向向右移动 100，垂直方向向下平移 50 ctx.transform(1, 0, 0, 1, 100, 50...</description>
      <category>Canvas/变换</category>
      <pubDate>Wed, 26 Jul 2023 15:03:38 GMT</pubDate>
    </item>
    <item>
      <title>getopt 可以格式化命令行选项， getopt optstring para...</title>
      <link>/cards/120.html</link>
      <guid isPermaLink="false">card:120</guid>
      <description>getopt 可以格式化命令行选项， getopt optstring parameters ， optstring 定义选项字符串，带有参数的选项后面加上 : ，如 ab:cd xt in ~/shell/read λ getopt ab...</description>
      <category>Shell编程</category>
      <pubDate>Thu, 13 Jul 2023 14:05:45 GMT</pubDate>
    </item>
    <item>
      <title>使用 async 和 await ，以同步的方式写 异步的代码。 使用 Prom...</title>
      <link>/cards/299.html</link>
      <guid isPermaLink="false">card:299</guid>
      <description>使用 async 和 await ，以同步的方式写 异步的代码。 使用 Promise 编写的异步代码已经与同步代码很相似了 let promise = new Promise((resolve, reject) =&gt; { fetch(&quot;/...</description>
      <category>JavaScript/Promise</category>
      <pubDate>Wed, 16 Aug 2023 15:12:20 GMT</pubDate>
    </item>
    <item>
      <title>Promise.resolve 返回一个 Promise ，根据传入参数的不同，...</title>
      <link>/cards/295.html</link>
      <guid isPermaLink="false">card:295</guid>
      <description>Promise.resolve 返回一个 Promise ，根据传入参数的不同，返回不同的值，分为三种情况 传入一个 Promise 对象，直接返回该 Promise 对象 const promise = new Promise((reso...</description>
      <category>JavaScript/Promise</category>
      <pubDate>Wed, 16 Aug 2023 14:57:42 GMT</pubDate>
    </item>
    <item>
      <title>在 ES3 或者更早以前，是不能在块级作用域中定义函数的，但是所有的浏览器都支持...</title>
      <link>/cards/236.html</link>
      <guid isPermaLink="false">card:236</guid>
      <description>在 ES3 或者更早以前，是不能在块级作用域中定义函数的，但是所有的浏览器都支持这一行为，于是在 ES5 中，为了修复这不兼容的行为，规定在严格模式下载块级作用域中声明函数将会导致错误 &quot;use strict&quot;; if (condition...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 01 Aug 2023 15:07:29 GMT</pubDate>
    </item>
    <item>
      <title>只有对于可迭代的对象才可以使用 for ... of 语法进行迭代，那什么对象是...</title>
      <link>/cards/224.html</link>
      <guid isPermaLink="false">card:224</guid>
      <description>只有对于可迭代的对象才可以使用 for ... of 语法进行迭代，那什么对象是可迭代的呢，如果一个对象具有 Symbol.iterator 属性，并且是一个函数，该函数返回的是一个迭代器，那么它就是可迭代的，每次我们使用 for ... ...</description>
      <category>JavaScript</category>
      <pubDate>Sun, 30 Jul 2023 13:38:07 GMT</pubDate>
    </item>
    <item>
      <title>insertAdjacentHTML 是 Element 实例的方法，它的作用是...</title>
      <link>/cards/293.html</link>
      <guid isPermaLink="false">card:293</guid>
      <description>insertAdjacentHTML 是 Element 实例的方法，它的作用是将输入的文本解析为 HTML，然后插入到指定的位置，其语法如下 insertAdjacentHTML(position, text); position 有四种...</description>
      <category>DOM</category>
      <pubDate>Wed, 16 Aug 2023 13:14:18 GMT</pubDate>
    </item>
    <item>
      <title>可以通过 lineWidth 会设置线的宽度，默认值为 1，该值需大于 0。每次...</title>
      <link>/cards/161.html</link>
      <guid isPermaLink="false">card:161</guid>
      <description>可以通过 lineWidth 会设置线的宽度，默认值为 1，该值需大于 0。每次在调用 stroke 方法时，绘图上下文会根据此时的 lineWidth 值绘制路径 const lineWidths = [1, 3, 5, 7, 9] fo...</description>
      <category>Canvas</category>
      <pubDate>Tue, 25 Jul 2023 13:09:42 GMT</pubDate>
    </item>
    <item>
      <title>appendChild 方法是将节点插入到最后面，而 insertBefore ...</title>
      <link>/cards/201.html</link>
      <guid isPermaLink="false">card:201</guid>
      <description>appendChild 方法是将节点插入到最后面，而 insertBefore 则是将节点插入到某个节点之前，所以该方法接收两个参数，第一个参数是要插入的节点，我们将这个节点插入到第二个参数表示的节点的前面 同理，如果添加的节点也在文档树种...</description>
      <category>DOM</category>
      <pubDate>Thu, 27 Jul 2023 01:30:35 GMT</pubDate>
    </item>
    <item>
      <title>appendChild 用来向节点中添加子元素，该方法接收一个参数，为 Node...</title>
      <link>/cards/200.html</link>
      <guid isPermaLink="false">card:200</guid>
      <description>appendChild 用来向节点中添加子元素，该方法接收一个参数，为 Node 类型的节点，而该方法的作用就是将接收的节点添加为最后一个节点 此时新添加的节点为最后一个节点，即 div.lastChild == a; 如果添加的节点是已经...</description>
      <category>DOM</category>
      <pubDate>Thu, 27 Jul 2023 01:27:39 GMT</pubDate>
    </item>
    <item>
      <title>光标是一种特殊的选区。 Selection 对象表示用户选择的文本范围或插入符号...</title>
      <link>/cards/79.html</link>
      <guid isPermaLink="false">card:79</guid>
      <description>光标是一种特殊的选区。 Selection 对象表示用户选择的文本范围或插入符号的当前位置。它代表页面中的文本选区，可能横跨多个元素。通常由用户拖拽鼠标经过文字而产生。 Range 对象表示包含节点和部分文本节点的文档片段。通过 selec...</description>
      <category>DOM/选区</category>
      <pubDate>Wed, 12 Jul 2023 13:24:39 GMT</pubDate>
    </item>
    <item>
      <title>如何通过相对外层的偏移量获取到最里层元素的信息呢？整体思路就是 深度优先遍历 标...</title>
      <link>/cards/82.html</link>
      <guid isPermaLink="false">card:82</guid>
      <description>如何通过相对外层的偏移量获取到最里层元素的信息呢？整体思路就是 深度优先遍历 标签，取得所有的 TextNode，并得到每个 TextNode 所在的区间。然后找到起始点和终止点所在的区间，返回该区间的 TextNode 以及相应的偏移量。...</description>
      <category>算法/DFS</category>
      <category>DOM/选区</category>
      <pubDate>Wed, 12 Jul 2023 14:32:45 GMT</pubDate>
    </item>
    <item>
      <title>在 \LaTeX 中，通过 \\ 可以进行换行 x^2 = 1 \\ y^2 =...</title>
      <link>/cards/72.html</link>
      <guid isPermaLink="false">card:72</guid>
      <description>在 \LaTeX 中，通过 \\ 可以进行换行 x^2 = 1 \\ y^2 = 2 但是在 Obsidian 中无效 要实现换行的效果，应当将表达式包括在 \begin{align}\end{align} 之间（aligned 也是可以的...</description>
      <category>Obsidian/踩坑</category>
      <category>踩坑/Obsidian</category>
      <pubDate>Wed, 12 Jul 2023 04:54:39 GMT</pubDate>
    </item>
    <item>
      <title>Obsidian 官方的同步很贵，用不起，但是为了能在移动端和 PC 端都能使用...</title>
      <link>/cards/73.html</link>
      <guid isPermaLink="false">card:73</guid>
      <description>Obsidian 官方的同步很贵，用不起，但是为了能在移动端和 PC 端都能使用 Obsidian，同步时必须要做的。 如果没有 Android 手机，那么时很好同步的，因为 PC 和 iPhone 可以通过 iCloud 来进行同步，并且...</description>
      <category>Obsidian</category>
      <pubDate>Wed, 12 Jul 2023 13:05:36 GMT</pubDate>
    </item>
    <item>
      <title>修改 package.json 与 manifest.json 中的描述与版本号...</title>
      <link>/cards/108.html</link>
      <guid isPermaLink="false">card:108</guid>
      <description>修改 package.json 与 manifest.json 中的描述与版本号，然后提交代码 git add . git commit -m &quot;&quot; git push 使用 Github Actions 自动构建 name: Release...</description>
      <category>Obsidian/插件开发</category>
      <pubDate>Wed, 12 Jul 2023 15:58:00 GMT</pubDate>
    </item>
    <item>
      <title>作业控制：启动、停止、终止、恢复作业。 jobs 查看作业， Ctrl + Z ...</title>
      <link>/cards/97.html</link>
      <guid isPermaLink="false">card:97</guid>
      <description>作业控制：启动、停止、终止、恢复作业。 jobs 查看作业， Ctrl + Z 停止作业。 #!/bin/zsh count=3 while [ $count -gt 0 ] do echo &quot;Hello $count.&quot; sleep 2 ...</description>
      <category>Linux/作业调度</category>
      <pubDate>Wed, 12 Jul 2023 15:34:49 GMT</pubDate>
    </item>
    <item>
      <title>Antd 的 Popover 的显示与隐藏有两种模式：受控模式和非受控模式，当我...</title>
      <link>/cards/139.html</link>
      <guid isPermaLink="false">card:139</guid>
      <description>Antd 的 Popover 的显示与隐藏有两种模式：受控模式和非受控模式，当我们主动设置 open 为 undefined 时，就是受控模式，反之不设置 open ，或者设置为 undefined 时就是非受控模式。 // 非受控模式 &lt;...</description>
      <category>技巧/React</category>
      <category>React/antd</category>
      <category>React/技巧</category>
      <category>antd/Popover</category>
      <pubDate>Mon, 17 Jul 2023 13:19:24 GMT</pubDate>
    </item>
    <item>
      <title>Antd 语言设置为中文 import dayjs from &apos;dayjs&apos;; ...</title>
      <link>/cards/209.html</link>
      <guid isPermaLink="false">card:209</guid>
      <description>Antd 语言设置为中文 import dayjs from &apos;dayjs&apos;; import &apos;dayjs/locale/zh-cn&apos;; dayjs.locale(&apos;zh-cn&apos;); import zhCN from &apos;antd/local...</description>
      <category>技巧/React</category>
      <category>React/antd</category>
      <pubDate>Sat, 29 Jul 2023 14:51:07 GMT</pubDate>
    </item>
    <item>
      <title>当我们访问一个对象上不存在的属性时，会返回 undefined const ob...</title>
      <link>/cards/62.html</link>
      <guid isPermaLink="false">card:62</guid>
      <description>当我们访问一个对象上不存在的属性时，会返回 undefined const obj = {}; console.log(obj.a); // undefined 那么与我们显示定义值为 undefined 有什么区别 const obj =...</description>
      <category>JavaScript/技巧</category>
      <category>技巧/JavaScript</category>
      <pubDate>Tue, 11 Jul 2023 05:00:11 GMT</pubDate>
    </item>
    <item>
      <title>在工作中经常会频繁的 commit 代码，但是过多的提交信息，让人很难发现我们到...</title>
      <link>/cards/396.html</link>
      <guid isPermaLink="false">card:396</guid>
      <description>在工作中经常会频繁的 commit 代码，但是过多的提交信息，让人很难发现我们到底做了什么功能，最好是在最终提交之前，能把我们的 commit 合并为一个，那么问题是如何进行合并呢。 首先新建一个仓库，创建一个 hello.txt，然后进行...</description>
      <category>Git/技巧</category>
      <category>技巧/Git</category>
      <pubDate>Tue, 09 Jan 2024 14:11:34 GMT</pubDate>
    </item>
    <item>
      <title>使用 FileReader 读取二进制文件内容，提供了不同的方法来解析提交的二进...</title>
      <link>/cards/48.html</link>
      <guid isPermaLink="false">card:48</guid>
      <description>使用 FileReader 读取二进制文件内容，提供了不同的方法来解析提交的二进制内容 readAsText ：将二进制内容解析为字符串，用以读取文本文件 readAsArrayBuffer ：将文件解析为 ArrayBuffer，一般用以...</description>
      <category>JavaScript</category>
      <pubDate>Mon, 10 Jul 2023 14:42:30 GMT</pubDate>
    </item>
    <item>
      <title>encodeURI 与 encodeURIComponent 都是对 URI 进...</title>
      <link>/cards/47.html</link>
      <guid isPermaLink="false">card:47</guid>
      <description>encodeURI 与 encodeURIComponent 都是对 URI 进行编码的，由于 URI 仅支持 ASCII 字符，对于一些特殊的字符需要进行编码，例如汉字、 &amp; 、 ? 等有意义的特殊符号。 encodeURI 不会对 ~!...</description>
      <category>JavaScript</category>
      <pubDate>Mon, 10 Jul 2023 14:40:03 GMT</pubDate>
    </item>
    <item>
      <title>CSS 圆角矩形 ctx.roundRect(upper, left, widt...</title>
      <link>/cards/556.html</link>
      <guid isPermaLink="false">card:556</guid>
      <description>CSS 圆角矩形 ctx.roundRect(upper, left, width, height, borderRadius); 圆锥渐变 const grad = ctx.createConicGradient(0, 100, 100)...</description>
      <category>Canvas</category>
      <pubDate>Wed, 09 Apr 2025 03:51:33 GMT</pubDate>
    </item>
    <item>
      <title>浏览器上传文件的两种方式： input 标签 拖拽 将 input 标签的 ty...</title>
      <link>/cards/554.html</link>
      <guid isPermaLink="false">card:554</guid>
      <description>浏览器上传文件的两种方式： input 标签 拖拽 将 input 标签的 type 设置为 file 即可上传文件 &lt;input id=&quot;fileInput&quot; type=&quot;file&quot; /&gt; const input = document.g...</description>
      <category>技巧/文件上传</category>
      <category>JavaScript/技巧</category>
      <pubDate>Wed, 09 Apr 2025 03:35:39 GMT</pubDate>
    </item>
    <item>
      <title>选项后的参数可能是多个值，使用 &lt;...&gt; 或 [...] 的语法来表示是变长参...</title>
      <link>/cards/131.html</link>
      <guid isPermaLink="false">card:131</guid>
      <description>选项后的参数可能是多个值，使用 &lt;...&gt; 或 [...] 的语法来表示是变长参数 program .option(&apos;--book &lt;book&gt;&apos;) .option(&apos;--author &lt;author...&gt;&apos;) .option(&apos;--pr...</description>
      <category>JavaScript/三方库/Commander</category>
      <pubDate>Thu, 13 Jul 2023 14:40:35 GMT</pubDate>
    </item>
    <item>
      <title>第十六课：光线追踪IV</title>
      <link>/docs/project/18/196.html</link>
      <guid isPermaLink="false">doc:196</guid>
      <description>渲染方程描述了光线的传播方式 概率的复习 Monte Carlo 积分 我们想解一个定积分，但是函数太复杂以至于无法给出解析式，数值方法 -&gt; Monte Carlo 随机采样的方法，a 和 b 之间，随机取一个数，得到 f(x)，a 和 ...</description>
      <pubDate>Thu, 06 Mar 2025 13:20:14 GMT</pubDate>
    </item>
    <item>
      <title>米的定义的演变历史： 1795 年法国科学院对米进行了定义：赤道到北极点的海平面...</title>
      <link>/cards/429.html</link>
      <guid isPermaLink="false">card:429</guid>
      <description>米的定义的演变历史： 1795 年法国科学院对米进行了定义：赤道到北极点的海平面子午线的长度而定，一米为这个子午线长度的一千万分之一。但该种定义存在的问题是地球的并不是静止不动的，人为或者非人为的地貌改变都可能会改变测量的长度。 1960 ...</description>
      <category>杂/米</category>
      <pubDate>Sat, 11 May 2024 08:13:07 GMT</pubDate>
    </item>
    <item>
      <title>var 声明变量有三个特点： 声明提升 正常情况下，变量需要先声明才能使用，如果...</title>
      <link>/cards/503.html</link>
      <guid isPermaLink="false">card:503</guid>
      <description>var 声明变量有三个特点： 声明提升 正常情况下，变量需要先声明才能使用，如果在声明之前使用了还未定义的变量，那么会报错，但是在 JavaScript 中，对于使用 var 声明的变量，可以在声明之前访问，因为 var 声明的变量其作用域...</description>
      <category>JavaScript/语法/变量声明</category>
      <pubDate>Tue, 15 Oct 2024 05:13:17 GMT</pubDate>
    </item>
    <item>
      <title>position: sticky 是相对于其最近的可滚动元素定位的，即 over...</title>
      <link>/cards/382.html</link>
      <guid isPermaLink="false">card:382</guid>
      <description>position: sticky 是相对于其最近的可滚动元素定位的，即 overflow 非 visible 的值（即使未发生滚动） sticky 元素无法超出其 包含块 的范围（一般来说是其父级块元素），因此会出现一些意料以外的情况 当 ...</description>
      <category>CSS/定位/sticky</category>
      <pubDate>Mon, 27 Nov 2023 07:20:52 GMT</pubDate>
    </item>
    <item>
      <title>可以在类的 contructor 方法中访问 new.target ，通过 ne...</title>
      <link>/cards/284.html</link>
      <guid isPermaLink="false">card:284</guid>
      <description>可以在类的 contructor 方法中访问 new.target ，通过 new.target 可以构造一个抽象类，所谓的抽象类，指的就是不能被 new 出实例的类，它只能被继承 class Shape { constructor(nam...</description>
      <category>JavaScript/类</category>
      <pubDate>Tue, 15 Aug 2023 15:24:08 GMT</pubDate>
    </item>
    <item>
      <title>列表的内置方法。 append append 用于将一个对象附加到列表末尾， a...</title>
      <link>/cards/438.html</link>
      <guid isPermaLink="false">card:438</guid>
      <description>列表的内置方法。 append append 用于将一个对象附加到列表末尾， append 就地修改列表 。即不会返回修改后的新列表，而是直接修改旧列表。 &gt;&gt;&gt; lst = [1, 2, 3] &gt;&gt;&gt; lst.append(4) &gt;&gt;&gt; ...</description>
      <category>Python/序列/列表</category>
      <pubDate>Sat, 22 Jun 2024 03:14:39 GMT</pubDate>
    </item>
    <item>
      <title>数组的 slice 方法是对数组内的元素进行拷贝，然后返回一个新的数组，该方法接...</title>
      <link>/cards/283.html</link>
      <guid isPermaLink="false">card:283</guid>
      <description>数组的 slice 方法是对数组内的元素进行拷贝，然后返回一个新的数组，该方法接收两个参数， begin 和 end ，表示拷贝的起始位置和终止位置，这两个参数都是可选的，如果默认没有传入参数的话， begin 的默认值是 0 ， end ...</description>
      <category>JavaScript/Symbol</category>
      <pubDate>Tue, 15 Aug 2023 15:21:29 GMT</pubDate>
    </item>
    <item>
      <title>数组表示的 相同 类型的值的集合，声明时使用中括号，值使用逗号分隔，同元组一样，...</title>
      <link>/cards/489.html</link>
      <guid isPermaLink="false">card:489</guid>
      <description>数组表示的 相同 类型的值的集合，声明时使用中括号，值使用逗号分隔，同元组一样，其长度在声明时就确定了 let a = [1, 2, 3]; let months = [&quot;January&quot;, &quot;February&quot;, &quot;March&quot;, &quot;Ap...</description>
      <category>Rust/数据类型/数组</category>
      <pubDate>Wed, 17 Jul 2024 01:38:02 GMT</pubDate>
    </item>
    <item>
      <title>在为笔记软件的高亮添加背景时，为了显示出具有手写马克笔划线的高亮效果，使用了 C...</title>
      <link>/cards/553.html</link>
      <guid isPermaLink="false">card:553</guid>
      <description>在为笔记软件的高亮添加背景时，为了显示出具有手写马克笔划线的高亮效果，使用了 CSS Houdini 技术来绘制背景 // marker-painter.ts class MarkerPainter { static get inputPr...</description>
      <category>Vite/踩坑</category>
      <category>踩坑/Vite</category>
      <category>CSS/Houdini</category>
      <pubDate>Mon, 07 Apr 2025 01:38:11 GMT</pubDate>
    </item>
    <item>
      <title>Buffer 详解</title>
      <link>/articles/53.html</link>
      <guid isPermaLink="false">article:53</guid>
      <description>Buffer 是 Node.js 的内置类型，它是用来表示内存中一块区域的，它保存的是二进制数据，可以将它看做为一个二进制数组。 Buffer 可以用来表示图片、视频这样的二进制数据，另外我们从文件中读取到的也是 Buffer 类型的数据，...</description>
      <pubDate>Tue, 02 Mar 2021 03:22:01 GMT</pubDate>
    </item>
    <item>
      <title>关于信息源的建议： 做减法，削减信息源 我们现在缺的不是信息，而是高质量的信息，...</title>
      <link>/cards/552.html</link>
      <guid isPermaLink="false">card:552</guid>
      <description>关于信息源的建议： 做减法，削减信息源 我们现在缺的不是信息，而是高质量的信息，我们的注意力有限，不要被低质量的信息浪费了时间，因此要削减这部分的信息源 削减利用情绪的信息源 标题党，引发焦虑，带动情绪，扰乱正常规划和做事节奏 削减觉得舒适...</description>
      <category>读书/笔记的方法</category>
      <category>学习方法</category>
      <pubDate>Sun, 06 Apr 2025 06:00:40 GMT</pubDate>
    </item>
    <item>
      <title>建议</title>
      <link>/docs/project/23/300.html</link>
      <guid isPermaLink="false">doc:300</guid>
      <description>关于信息源的建议： 做减法，削减信息源 我们现在缺的不是信息，而是高质量的信息，我们的注意力有限，不要被低质量的信息浪费了时间，因此要削减这部分的信息源 削减利用情绪的信息源 标题党，引发焦虑，带动情绪，扰乱正常规划和做事节奏 削减觉得舒适...</description>
      <pubDate>Sun, 06 Apr 2025 03:31:31 GMT</pubDate>
    </item>
    <item>
      <title>以我为主</title>
      <link>/docs/project/23/302.html</link>
      <guid isPermaLink="false">doc:302</guid>
      <description>一会儿积累这方面的知识，一会儿积累那方面的知识，墙头草，不知道自己的方向。 一个原则：以我为主，增援未来的自己，未来的自己会怎么用，未来想成为什么样的人，以终为始。 学海无涯，专业的事情交给专业的人去做，专注我们领域的知识 学屠龙技，也要有...</description>
      <pubDate>Sun, 06 Apr 2025 03:57:59 GMT</pubDate>
    </item>
    <item>
      <title>持续不断</title>
      <link>/docs/project/23/303.html</link>
      <guid isPermaLink="false">doc:303</guid>
      <description>持续记录的重要性，知识需要时间的累积才能看到效果，不可能一口气吃成一个大胖子。 换了很多的笔记软件，尝试了很多的笔记方法，都没有办法坚持不断的进行记录，原因在于没有打造一个持续不断记录的系统： 主动管理预期 让记录的门槛变低，随手可记 培养...</description>
      <pubDate>Sun, 06 Apr 2025 04:43:48 GMT</pubDate>
    </item>
    <item>
      <title>心法篇，以我为主，持续不断</title>
      <link>/docs/project/23/301.html</link>
      <guid isPermaLink="false">doc:301</guid>
      <description>如何积累知识，两个原则： 以我为主 持续不断</description>
      <pubDate>Sun, 06 Apr 2025 03:57:33 GMT</pubDate>
    </item>
    <item>
      <title>原则</title>
      <link>/docs/project/23/299.html</link>
      <guid isPermaLink="false">doc:299</guid>
      <description>设定边界 人的精力有限，不可能成为全领域的专家，一定要设定自己需要精进的领域，把有限的精力投入其中，而之外的东西要克制自己 问题导向 以解决具体的问题为导向去搜集信息，而不是去各种平台接受信息流，太被动且效率太低了，我们需要化被动为主动 保...</description>
      <pubDate>Sun, 06 Apr 2025 03:25:41 GMT</pubDate>
    </item>
    <item>
      <title>审视自己和信息的关系</title>
      <link>/docs/project/23/298.html</link>
      <guid isPermaLink="false">doc:298</guid>
      <description>是你掌控信息，还是信息掌控你，我们现在看到信息就像是看到食物一样，不可抑制的被信息吸引，特别是小红书，抖音，止不住的往下刷，信息成瘾，需要化被动为主动，不要被信息给掌控。 信息成瘾追求的不是信息的质量，而是获取信息的这个过程。 信息茧房，只...</description>
      <pubDate>Sun, 06 Apr 2025 03:20:07 GMT</pubDate>
    </item>
    <item>
      <title>回顾笔记的建议和实践： 投入时间 很多人都觉得回顾很有必要性，但是都说没时间做，...</title>
      <link>/cards/551.html</link>
      <guid isPermaLink="false">card:551</guid>
      <description>回顾笔记的建议和实践： 投入时间 很多人都觉得回顾很有必要性，但是都说没时间做，这明显是借口，因为不存在没时间，只存在优先级，还是没把这件事情作为重要的事情来对待。 输入前，大致分好类之后，查阅相关类比的笔记，寻找联系，这是一个回顾的时机 ...</description>
      <category>读书/笔记的方法</category>
      <category>学习方法</category>
      <pubDate>Sun, 06 Apr 2025 02:00:29 GMT</pubDate>
    </item>
    <item>
      <title>建议和做法</title>
      <link>/docs/project/23/296.html</link>
      <guid isPermaLink="false">doc:296</guid>
      <description>回顾笔记的建议和实践： 投入时间 很多人都觉得回顾很有必要性，但是都说没时间做，这明显是借口，因为不存在没时间，只存在优先级，还是没把这件事情作为重要的事情来对待。 输入前，大致分好类之后，查阅相关类比的笔记，寻找联系，这是一个回顾的时机 ...</description>
      <pubDate>Sun, 06 Apr 2025 01:44:40 GMT</pubDate>
    </item>
    <item>
      <title>为什么复习（回顾）很重要： 对抗遗忘，人总是高估自己的记忆力，根据艾宾浩斯遗忘曲...</title>
      <link>/cards/550.html</link>
      <guid isPermaLink="false">card:550</guid>
      <description>为什么复习（回顾）很重要： 对抗遗忘，人总是高估自己的记忆力，根据艾宾浩斯遗忘曲线，一天后 74% 被遗忘掉，一个月后，79% 被遗忘掉，但是如果及时复习的话，长期记忆就能保持 内化知识、整理知识结构的一个新机会 整理笔记结构，去除不需要、...</description>
      <category>学习方法</category>
      <category>读书/笔记的方法</category>
      <pubDate>Fri, 04 Apr 2025 04:58:14 GMT</pubDate>
    </item>
    <item>
      <title>为什么</title>
      <link>/docs/project/23/294.html</link>
      <guid isPermaLink="false">doc:294</guid>
      <description>两个好处： 对抗遗忘，艾宾浩斯遗忘曲线，人高估自己的记忆，其实忘东西忘得特别快 帮助知识内化，记了不等于懂了，要深度理解，消化吸收，思考的越多，记得就越多，记忆是思考的残留，不断回顾，刺激思考 知识就像人体结构，不能仅仅靠吃（不断增加笔记）...</description>
      <pubDate>Fri, 04 Apr 2025 04:26:33 GMT</pubDate>
    </item>
    <item>
      <title>在函数执行时，会创建 执行上下文 ，执行上下文中又会创建 词法环境 ，词法环境中...</title>
      <link>/cards/547.html</link>
      <guid isPermaLink="false">card:547</guid>
      <description>在函数执行时，会创建 执行上下文 ，执行上下文中又会创建 词法环境 ，词法环境中存储了当前上下文中定义的变量，当函数执行完成时，执行上下文中的词法环境应当被销毁以释放内存，避免内存泄露，但是如果函数的返回结果是一个函数，并且返回的函数中引用...</description>
      <category>JavaScript/闭包</category>
      <category>JavaScript/底层原理</category>
      <pubDate>Thu, 03 Apr 2025 11:42:36 GMT</pubDate>
    </item>
    <item>
      <title>同一个 MutationObserver 可以同时监听多个元素，可通过 disc...</title>
      <link>/cards/153.html</link>
      <guid isPermaLink="false">card:153</guid>
      <description>同一个 MutationObserver 可以同时监听多个元素，可通过 disconnect 取消所有元素的监听。 &lt;div id=&quot;text1&quot; contenteditable=&quot;true&quot;&gt;Hello World!&lt;/div&gt; &lt;div...</description>
      <category>DOM/Mutation Observer</category>
      <pubDate>Mon, 24 Jul 2023 01:16:34 GMT</pubDate>
    </item>
    <item>
      <title>标签分类建议</title>
      <link>/docs/project/23/292.html</link>
      <guid isPermaLink="false">doc:292</guid>
      <description>先借鉴，再改造 从零开始很困难，很混乱，可以先借鉴别人的框架、 理解分类背后的逻辑 从自身需求出发 越来越乱，如何维护 熵增是必然的，适当接受混乱和不确定性 输入时减少熵增，制定标签说明书，不要每次都按当时的想法打，出现很多类似重复的标签 ...</description>
      <pubDate>Thu, 03 Apr 2025 03:22:21 GMT</pubDate>
    </item>
    <item>
      <title>标签分类方法</title>
      <link>/docs/project/23/290.html</link>
      <guid isPermaLink="false">doc:290</guid>
      <description>作者自创的 IAPR Inbox，临时存放的尚未消化整理的内容 Area，长期需要保持精进的领域 Project，有明确截止时间和目标的事情 Resource，自己感兴趣的内容，为自己负责就行 兴趣和领域的区别： 兴趣只为自己负责，可以长时...</description>
      <pubDate>Thu, 03 Apr 2025 02:32:43 GMT</pubDate>
    </item>
    <item>
      <title>记笔记常遇到的两个误区： 形式大于内容 常常纠结于格式，排版，字数，是否存在遗漏...</title>
      <link>/cards/542.html</link>
      <guid isPermaLink="false">card:542</guid>
      <description>记笔记常遇到的两个误区： 形式大于内容 常常纠结于格式，排版，字数，是否存在遗漏（比如整本书的知识点是否有遗漏），真正关心的应当是有用的信息，能不能为未来的自己所用，未来的自己会怎么用，形式是为内容服务的 只记录，不思考 当我们觉得某段话打...</description>
      <category>学习方法</category>
      <category>读书/笔记的方法</category>
      <pubDate>Wed, 02 Apr 2025 07:34:04 GMT</pubDate>
    </item>
    <item>
      <title>构建数字笔记系统的步骤： 提取：只提取最有用的，最直击人心的信息，其它不重要的信...</title>
      <link>/cards/422.html</link>
      <guid isPermaLink="false">card:422</guid>
      <description>构建数字笔记系统的步骤： 提取：只提取最有用的，最直击人心的信息，其它不重要的信息就随他而去吧，不要仔细分析这些信息是否值得记录，要相信你的感觉，如果读到这则信息的时候，你感觉直击人心，印象深刻，那就值得记录 组织：以当前正在进行的项目为向...</description>
      <category>学习方法</category>
      <category>读书/打造第二大脑</category>
      <pubDate>Thu, 04 Apr 2024 03:45:49 GMT</pubDate>
    </item>
    <item>
      <title>我注意到很多游戏都是靠卖皮肤赚钱的，比如永劫无间和王者荣耀，游戏内容本身是免费的...</title>
      <link>/cards/541.html</link>
      <guid isPermaLink="false">card:541</guid>
      <description>我注意到很多游戏都是靠卖皮肤赚钱的，比如永劫无间和王者荣耀，游戏内容本身是免费的。而且平时也可以关注大家会花钱在一些华而不实的东西上面，仅仅是因为好看，所以不管是大家现在普遍有对美的追求，还是出于比较的目的，这是一个赚钱的好思路，靠售卖皮肤...</description>
      <category>笔记软件/赚钱</category>
      <pubDate>Wed, 02 Apr 2025 04:18:09 GMT</pubDate>
    </item>
    <item>
      <title>什么是领域？领域是长期持续关注，保持一定的标准，比如健康，需要持续关注，目标是保...</title>
      <link>/cards/536.html</link>
      <guid isPermaLink="false">card:536</guid>
      <description>什么是领域？领域是长期持续关注，保持一定的标准，比如健康，需要持续关注，目标是保持身体健康而不是减少 5kg。 人的精力有限，一定要确认好自己需要精进的领域，否则： 不明白自己的边界，把时间花在了一些无意义的事情上 不知道和长期目标的关系，...</description>
      <category>个人成长</category>
      <pubDate>Mon, 31 Mar 2025 09:36:15 GMT</pubDate>
    </item>
    <item>
      <title>知识管理是获取、分配和有效利用知识的 决策 过程。 如何进行知识管理： 知识获取...</title>
      <link>/cards/537.html</link>
      <guid isPermaLink="false">card:537</guid>
      <description>知识管理是获取、分配和有效利用知识的 决策 过程。 如何进行知识管理： 知识获取 层次步速原理 系统划分为不同的层次，每个层次有不同的时间尺度和节奏 组织管理 战略层（年） 战术层（月） 操作层（周） 生态系统 生态系统（年） 种群动态（季...</description>
      <category>个人成长</category>
      <category>知识管理</category>
      <pubDate>Mon, 31 Mar 2025 09:58:22 GMT</pubDate>
    </item>
    <item>
      <title>给依据，让你行动有支撑</title>
      <link>/docs/project/23/280.html</link>
      <guid isPermaLink="false">doc:280</guid>
      <description>对问题有了初步的解决思路，但是需要进行决策是否做的时候，笔记可以给出支撑的依据。 作者举了一个例子，在官网上除了展示介绍 flomo 是什么以外，是否还需要提供一些其他对用户有用的东西，比如案例，记笔记的方法。作者在过去记录的笔记中找到了依...</description>
      <pubDate>Sun, 30 Mar 2025 14:08:27 GMT</pubDate>
    </item>
    <item>
      <title>给线索，为你提供新方向</title>
      <link>/docs/project/23/279.html</link>
      <guid isPermaLink="false">doc:279</guid>
      <description>遇到问题无从下手时，利用过去记录的笔记提供解决方法。 作者举了平台治理遇到的问题，想到之前读过的一本书记录的笔记，根据笔记提供的思路，想到了解决当前问题的方法。</description>
      <pubDate>Sun, 30 Mar 2025 13:59:55 GMT</pubDate>
    </item>
    <item>
      <title>给想法，让你拿来就能用</title>
      <link>/docs/project/23/277.html</link>
      <guid isPermaLink="false">doc:277</guid>
      <description>当我们需要一个想法的时候，比如面对一个难题，面对文章的选题，幸运的情况下灵感迸发，但是很可能大部分的情况下是一筹莫展，这个时候如果有个想法能拿来就用，岂不美哉，那想法从哪里来，就从记录的笔记中来。 作者举了他们创办的小报童的例子，就来自于他...</description>
      <pubDate>Sun, 30 Mar 2025 13:44:26 GMT</pubDate>
    </item>
    <item>
      <title>前言</title>
      <link>/docs/project/23/276.html</link>
      <guid isPermaLink="false">doc:276</guid>
      <description>通过搜索引擎和 AI 得到的参考信息难以解决个性化的问题，通过查阅记录的笔记，解决现在的问题，即笔记的作用，增援未来的自己。</description>
      <pubDate>Sun, 30 Mar 2025 13:42:02 GMT</pubDate>
    </item>
    <item>
      <title>制定计划学习有一个缺点，当计划完成之后便不再想学习，不想再继续深入，就像考完试一...</title>
      <link>/cards/29.html</link>
      <guid isPermaLink="false">card:29</guid>
      <description>制定计划学习有一个缺点，当计划完成之后便不再想学习，不想再继续深入，就像考完试一样，没有人会继续学习，除非你是真的很感兴趣。 但是制定计划并非没有好处，它可以让你快速的行动起来，特别是面对一个新领域的时候，由于未知我们一般都会拖延，迟迟不肯...</description>
      <category>学习方法</category>
      <pubDate>Mon, 10 Jul 2023 01:40:43 GMT</pubDate>
    </item>
    <item>
      <title>框架先行 搞清楚领域的边界在哪里 方式 书籍目录 视频，60分钟了解 xxx 是...</title>
      <link>/cards/483.html</link>
      <guid isPermaLink="false">card:483</guid>
      <description>框架先行 搞清楚领域的边界在哪里 方式 书籍目录 视频，60分钟了解 xxx 是否专业，找一个和自己领域相关的，判断一下 大约 3-4 个就能对知识体系有所了解了 知识分类 对学习到的知识进行归类 贯穿整个知识过程，学习本身 当了解某个领域...</description>
      <category>学习方法</category>
      <pubDate>Tue, 02 Jul 2024 11:13:25 GMT</pubDate>
    </item>
    <item>
      <title>除自身以外数组的乘积</title>
      <link>/docs/document/12/161.html</link>
      <guid isPermaLink="false">doc:161</guid>
      <description>题目描述 给你一个整数数组 nums ，返回 数组 answer ，其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据保证数组 nums 之中任意元素的全部前缀元素和后缀的乘积都在 32 位 ...</description>
      <pubDate>Thu, 17 Oct 2024 11:22:38 GMT</pubDate>
    </item>
    <item>
      <title>路径</title>
      <link>/docs/document/9/98.html</link>
      <guid isPermaLink="false">doc:98</guid>
      <description>之前介绍的形状（线、折线、矩形、圆）等都可以看作是路径的简写形式，因为直接通过路径去绘制这些图形较为复杂，所以对于这些常见的形状提供一种简单的方法进行绘制。 绘制路径使用 &lt;path&gt; ，通过 d (data 的缩写) 来绘制数据， d 中...</description>
      <pubDate>Wed, 27 Dec 2023 01:41:00 GMT</pubDate>
    </item>
    <item>
      <title>文本</title>
      <link>/docs/document/9/90.html</link>
      <guid isPermaLink="false">doc:90</guid>
      <description>如何在 SVG 中绘制文本。 text 通过 text 标签可以在 SVG 中绘制文字 &lt;svg width=&quot;150&quot; height=&quot;50&quot; viewBox=&quot;0 0 150 50&quot;&gt; &lt;text x=&quot;20&quot; y=&quot;30&quot;&gt;You a...</description>
      <pubDate>Tue, 26 Dec 2023 15:46:54 GMT</pubDate>
    </item>
    <item>
      <title>变换</title>
      <link>/docs/document/9/91.html</link>
      <guid isPermaLink="false">doc:91</guid>
      <description>有的时候我们需要对形状进行变换，比如缩放，旋转等，这个时候可以使用 transform 进行变换。 平移 通过设置 transform 属性值为 translate(x-value, y-value) ，其中 y-value 可省略，默认为...</description>
      <pubDate>Tue, 26 Dec 2023 15:47:30 GMT</pubDate>
    </item>
    <item>
      <title>同步动画</title>
      <link>/docs/document/9/94.html</link>
      <guid isPermaLink="false">doc:94</guid>
      <description>当页面上多个动画有先后顺序时，比如当前一个动画完成时，后一个动画才开始，这样的动画我们称为同步动画。 这个可以设置 begin 属性来锚定某个动画来实现同步动画，举个🌰 &lt;svg width=&quot;400&quot; height=&quot;350&quot; view...</description>
      <pubDate>Tue, 26 Dec 2023 15:48:06 GMT</pubDate>
    </item>
    <item>
      <title>animateTransform</title>
      <link>/docs/document/9/95.html</link>
      <guid isPermaLink="false">doc:95</guid>
      <description>animate 标签不能做 transform 动画，因为 transform 的取值不是数字，而是 scale translate 这样的字符，要实现变换动画，我们要使用 animateTransform 标签。 我们需要设置 attri...</description>
      <pubDate>Tue, 26 Dec 2023 15:49:31 GMT</pubDate>
    </item>
    <item>
      <title>animateMotion</title>
      <link>/docs/document/9/96.html</link>
      <guid isPermaLink="false">doc:96</guid>
      <description>通过 animateMotion 标签，我们可以让元素沿着某一路径运动 &lt;svg width=&quot;300&quot; height=&quot;200&quot; viewBox=&quot;0 0 300 200&quot;&gt; &lt;path d=&quot;M 50 50 Q 100 100 150 ...</description>
      <pubDate>Tue, 26 Dec 2023 15:49:45 GMT</pubDate>
    </item>
    <item>
      <title>线</title>
      <link>/docs/document/9/82.html</link>
      <guid isPermaLink="false">doc:82</guid>
      <description>使用 &lt;line&gt; 标签来指定一条线段，两点确定一线，所以我们需要在 &lt;line&gt; 指定两点 (x1, y1) 和 (x2, y2) &lt;line x1=&quot;20&quot; y1=&quot;20&quot; x2=&quot;80&quot; y2=&quot;80&quot; stroke=&quot;gray&quot; /...</description>
      <pubDate>Tue, 26 Dec 2023 15:43:41 GMT</pubDate>
    </item>
    <item>
      <title>折线</title>
      <link>/docs/document/9/83.html</link>
      <guid isPermaLink="false">doc:83</guid>
      <description>绘制折线我们可以使用多个 &lt;line&gt; 标签，但是这样会有点麻烦，我们可以使用 &lt;polyline&gt; 标签，通过 points 指定点的坐标即可 &lt;svg width=&quot;400&quot; height=&quot;200&quot; viewBox=&quot;0 0 400 ...</description>
      <pubDate>Tue, 26 Dec 2023 15:44:10 GMT</pubDate>
    </item>
    <item>
      <title>矩形</title>
      <link>/docs/document/9/84.html</link>
      <guid isPermaLink="false">doc:84</guid>
      <description>使用 &lt;rect&gt; 来绘制一个矩形，通过 (x, y) 规定矩形左上角的坐标， width, height 规定矩形的宽高 &lt;svg width=&quot;100&quot; height=&quot;100&quot; viewBox=&quot;0 0 100 100&quot;&gt; &lt;rect...</description>
      <pubDate>Tue, 26 Dec 2023 15:44:23 GMT</pubDate>
    </item>
    <item>
      <title>圆和椭圆</title>
      <link>/docs/document/9/85.html</link>
      <guid isPermaLink="false">doc:85</guid>
      <description>通过 &lt;circle&gt; 来绘制一个圆，确定一个圆只要指定圆心和半径即可： (cx, cy) ：圆心坐标 r ：半径 &lt;svg width=&quot;100&quot; height=&quot;100&quot; viewBox=&quot;0 0 100 100&quot;&gt; &lt;circle c...</description>
      <pubDate>Tue, 26 Dec 2023 15:44:32 GMT</pubDate>
    </item>
    <item>
      <title>多边形</title>
      <link>/docs/document/9/86.html</link>
      <guid isPermaLink="false">doc:86</guid>
      <description>通过 &lt;polygon&gt; 可以绘制任意形状的多边形，我们只需要通过 points 指定多边形的顶点坐标（最后不需要指定起点坐标，会自动闭合） &lt;svg width=&quot;170&quot; height=&quot;100&quot; viewBox=&quot;0 0 170 10...</description>
      <pubDate>Tue, 26 Dec 2023 15:44:49 GMT</pubDate>
    </item>
    <item>
      <title>SVG 介绍</title>
      <link>/docs/document/9/76.html</link>
      <guid isPermaLink="false">doc:76</guid>
      <description>概念 SVG 全称为 Scalable Vector Graphics（可缩放矢量图），它是一种图像格式，使用形状、路径等来组成图像内容，与一般由像素描述的图像不同，SVG 可以做到与分辨率无关的清晰度，无论放大多少倍，图像还是一样的清晰。...</description>
      <pubDate>Tue, 26 Dec 2023 15:08:01 GMT</pubDate>
    </item>
    <item>
      <title>animate</title>
      <link>/docs/document/9/79.html</link>
      <guid isPermaLink="false">doc:79</guid>
      <description>通过 animate 标签可以制作动画，该标签可以设置如下属性控制动画： attributeName ：要改变的属性，比如要改变元素的宽度，就设置为 width attributeType ：属性的类型，有两种取值，分别为 XML 和 CS...</description>
      <pubDate>Tue, 26 Dec 2023 15:13:19 GMT</pubDate>
    </item>
    <item>
      <title>棒球比赛</title>
      <link>/docs/document/1/55.html</link>
      <guid isPermaLink="false">doc:55</guid>
      <description>看一个使用最大流解决实际问题的例子，那就是棒球比赛。 全美每年都会举行一次棒球比赛，每个队都要进行 $162$ 场比赛，最终所胜的场次最多的队伍获胜，如果平局就进行加赛。 但是如果在比赛的过程中，某一队已经没有获得冠军的希望了，那么该队就会...</description>
      <pubDate>Sat, 09 Dec 2023 14:55:47 GMT</pubDate>
    </item>
    <item>
      <title>匹配问题</title>
      <link>/docs/document/1/56.html</link>
      <guid isPermaLink="false">doc:56</guid>
      <description>最大匹配与完全匹配 下面我们讲解的算法都是有关于二分图的算法 例如对于上图就是一个二分图，每条边都连接了两个不同部分的节点，生活中很多问题都可以建模为二分图的问题，例如相亲。左边表示男生群体，右边表示女生群体，如果两个节点之间有一条边，说明...</description>
      <pubDate>Sat, 09 Dec 2023 15:04:11 GMT</pubDate>
    </item>
    <item>
      <title>LCP04 覆盖</title>
      <link>/docs/document/1/57.html</link>
      <guid isPermaLink="false">doc:57</guid>
      <description>LCP04 覆盖是一道 LeetCode 上的题目，我们可以将这道题建模为二分图的最大匹配问题。 题目介绍 你有一块棋盘，棋盘上有一些格子已经坏掉了。你还有无穷块大小为 1 ∗ 2 的多米诺骨牌，你想把这些骨牌不重叠地覆盖在完好的格子上，请...</description>
      <pubDate>Sat, 09 Dec 2023 15:08:18 GMT</pubDate>
    </item>
    <item>
      <title>网络流与最大流</title>
      <link>/docs/document/1/52.html</link>
      <guid isPermaLink="false">doc:52</guid>
      <description>网络流与最大流 考虑一幅有向带权图 如果图中有一个源点，即入度为 0 的节点，上图的节点 0 ，有一个汇点，它的出度为 0 ，上图的节点 3 ，并且图中所有边的权值都是非负的，那么我们可以说这是一个网络流。 同一般的带权图不同，网络流中边的...</description>
      <pubDate>Sat, 09 Dec 2023 14:32:58 GMT</pubDate>
    </item>
    <item>
      <title>Ford-Fulkerson 思想</title>
      <link>/docs/document/1/53.html</link>
      <guid isPermaLink="false">doc:53</guid>
      <description>现在我们开始看一看如何找到图中的最大流，还是以下图为例 我们先从源点随便选择一条路径到达汇点 如上图我们就选择 0 → 1 → 3 这条路径，这条路径能够允许的最大容量为 2 ，所以这条路径的流量为 2 ，为了表示已经通过了多少流量，我们以...</description>
      <pubDate>Sat, 09 Dec 2023 14:46:06 GMT</pubDate>
    </item>
    <item>
      <title>Edmonds-Karp 算法</title>
      <link>/docs/document/1/54.html</link>
      <guid isPermaLink="false">doc:54</guid>
      <description>上面的 Ford-Fulkerson 只是提供了一种思想，得到一个网络流的残差图，然后随便找一条路径从源点到汇点，但是没有说怎么找这条路径，所以它只是一种思想。 接下来我们就介绍 Edmonds-Karp 算法，它就是为 Ford-Fulk...</description>
      <pubDate>Sat, 09 Dec 2023 14:55:11 GMT</pubDate>
    </item>
    <item>
      <title>打开转盘锁</title>
      <link>/docs/document/1/35.html</link>
      <guid isPermaLink="false">doc:35</guid>
      <description>题目介绍 你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字： &apos;0&apos;, &apos;1&apos;, &apos;2&apos;, &apos;3&apos;, &apos;4&apos;, &apos;5&apos;, &apos;6&apos;, &apos;7&apos;, &apos;8&apos;, &apos;9&apos; 。每个拨轮可以自由旋转：例如把 &apos;9&apos; 变为 &apos;0&apos; ， &apos;0&apos; 变为 ...</description>
      <pubDate>Fri, 08 Dec 2023 16:00:12 GMT</pubDate>
    </item>
    <item>
      <title>倒水智力题</title>
      <link>/docs/document/1/36.html</link>
      <guid isPermaLink="false">doc:36</guid>
      <description>有两个桶，一个能装 5 升水，一个能装 3 升水，如何得到 4 升水? 这道题还是将状态看做是一个图的节点，如果状态之间能够互相转变，就说状态之前有一条边。我们定义状态 &lt;x,y&gt; 表示第一个桶有 x 升水，第二个桶有 y 升水。那么 &lt;x...</description>
      <pubDate>Fri, 08 Dec 2023 16:03:48 GMT</pubDate>
    </item>
    <item>
      <title>滑动谜题</title>
      <link>/docs/document/1/37.html</link>
      <guid isPermaLink="false">doc:37</guid>
      <description>题目介绍 在一个 2 x 3 的板上（board）有 5 块砖瓦，用数字 1~5 来表示, 以及一块空缺用 0 来表示。一次移动定义为选择 0 与一个相邻的数字（上下左右）进行交换。最终当板 board 的结果是 [[1,2,3],[4,5...</description>
      <pubDate>Fri, 08 Dec 2023 16:07:28 GMT</pubDate>
    </item>
    <item>
      <title>二进制矩阵中的最短路径</title>
      <link>/docs/document/1/34.html</link>
      <guid isPermaLink="false">doc:34</guid>
      <description>题目描述 在一个 N \times N 的方形网格中，每个单元格有两种状态：空（0）或者阻塞（1）。现在我们的目标是从 (0, 0) 到达 (N-1, N-1) ，即从左上角到达右下角，而我们的目标是寻找一条最短路径，并且返回这条路径的长度...</description>
      <pubDate>Fri, 08 Dec 2023 15:56:58 GMT</pubDate>
    </item>
    <item>
      <title>38 免疫系统太激进：过敏</title>
      <link>/docs/project/21/256.html</link>
      <guid isPermaLink="false">doc:256</guid>
      <description>埃博拉病毒，感染了也要 6 天才会死，而过敏发作，15 分钟就会没命。 过度意味着免疫系统对不怎么危险的东西产生了大规模过度反应。就像是在房子里发现一只虫子，然后动用了核武器把整个城市夷为平地，虫子消灭了，城市也没了。 引发过敏的抗原是无害...</description>
      <pubDate>Thu, 13 Mar 2025 23:29:59 GMT</pubDate>
    </item>
    <item>
      <title>39 免疫系统可能想念寄生虫</title>
      <link>/docs/project/21/257.html</link>
      <guid isPermaLink="false">doc:257</guid>
      <description>世界上有近 300 种寄生虫可以感染人类，其中有十几种广泛传播。寄生虫感染在欠发达的地区猖獗。 IgE 的奇怪机制就是为了应对寄生虫感染而生。首先认出寄生虫，在寄生虫在身体于外界的交界处，驻扎在皮肤，肠道，呼吸道的特殊 B 细胞会开始生成大...</description>
      <pubDate>Thu, 13 Mar 2025 23:55:02 GMT</pubDate>
    </item>
    <item>
      <title>40 自身免疫性疾病</title>
      <link>/docs/project/21/258.html</link>
      <guid isPermaLink="false">doc:258</guid>
      <description>免疫系统对自身免疫非常小心，只有能区分自身和异物的细胞才能离开胸腺。 自身免疫正常的情况下，T 细胞和 B 细胞可以识别自体细胞的蛋白（自身抗原）。一旦受到误导，T 细胞和 B 细胞和自身抗原结合，免疫系统不能区分自身和异物，麻烦就大了。 ...</description>
      <pubDate>Fri, 14 Mar 2025 00:41:45 GMT</pubDate>
    </item>
    <item>
      <title>41 卫生假说和老朋友</title>
      <link>/docs/project/21/259.html</link>
      <guid isPermaLink="false">doc:259</guid>
      <description>20 世纪后半叶，发达国家出现的两种有悖常理的趋势： 天花、流行性腮腺炎、麻疹、结核等危险传染病得到了有效遏制 其他一些病发病率不断上升，并且暴涨 国家的发达、富裕程度，和过敏或自身免疫性疾病的患病率之间似乎存在某种直接的联系。 卫生假说：...</description>
      <pubDate>Fri, 14 Mar 2025 01:04:03 GMT</pubDate>
    </item>
    <item>
      <title>42 如何强化免疫系统</title>
      <link>/docs/project/21/260.html</link>
      <guid isPermaLink="false">doc:260</guid>
      <description>强化免疫系统不是好主意，都是骗你买没用东西想出来的： 强化巨噬细胞和中性粒细胞 -&gt; 导致更多、更严重的发炎、发热、不适和乏力 强化自然杀伤性细胞 -&gt; 导致 NK 细胞太过激进，损失健康细胞 强化树突细胞 -&gt; 频繁激活适应性免疫系统，大...</description>
      <pubDate>Fri, 14 Mar 2025 01:22:44 GMT</pubDate>
    </item>
    <item>
      <title>43 免疫系统与应激</title>
      <link>/docs/project/21/261.html</link>
      <guid isPermaLink="false">doc:261</guid>
      <description>在几百万年前，人类组建为了应对环境，例如野兽袭击，需要对感知到的危险做出强烈反应，不管危险是否存在，能快速做出反应的生物更容易存活。在这种自然选择下，人类组建变得很擅长快速识别应激源并迅速做出反应，这是自动过程。 免疫系统也会被应激状态做出...</description>
      <pubDate>Fri, 14 Mar 2025 01:33:16 GMT</pubDate>
    </item>
    <item>
      <title>44 免疫系统与癌症</title>
      <link>/docs/project/21/262.html</link>
      <guid isPermaLink="false">doc:262</guid>
      <description>癌症是指某些部位的细胞不受控制地生长和增殖，可以分为两种： 发生于肺、肌肉、大脑、骨骼或性器官等实质性器官，形成肿瘤 良性肿瘤不会像癌细胞侵犯其他组织和器官，局限在某个部位，甚至不用切除，除非长得太大，压迫大脑等器官。 非实体癌，起源于骨髓...</description>
      <pubDate>Fri, 14 Mar 2025 01:43:06 GMT</pubDate>
    </item>
    <item>
      <title>45 新冠病毒</title>
      <link>/docs/project/21/263.html</link>
      <guid isPermaLink="false">doc:263</guid>
      <description>在疫情初始阶段，这种名为严重急性呼吸综合征冠状病毒2（SARS-2），被称为冠状病毒，但冠状病毒是一类病毒，而非某一种病毒，当时由于传播一太快，错过了去一个恰当名字的机会。 能感染人类的有好几种不同的冠状病毒，15% 的感冒就是由某种冠状病...</description>
      <pubDate>Mon, 17 Mar 2025 01:03:09 GMT</pubDate>
    </item>
    <item>
      <title>35 免疫系统是怎样牢记敌人的</title>
      <link>/docs/project/21/244.html</link>
      <guid isPermaLink="false">doc:244</guid>
      <description>记住旧对手，并保持鲜活记忆，是免疫系统的重要能力。人体有免疫记忆，对于遭受过的感染，免疫系统会记住，再次感染可迅速消灭。 所以有些病小孩更致命，因为小孩没有免疫记忆，而成年人有免疫记忆，等到老去，记忆细胞无法工作后，老年阶段也更容易生病。 ...</description>
      <pubDate>Wed, 12 Mar 2025 23:48:49 GMT</pubDate>
    </item>
    <item>
      <title>36 疫苗和人工免疫</title>
      <link>/docs/project/21/245.html</link>
      <guid isPermaLink="false">doc:245</guid>
      <description>接种疫苗的历史，几百年前，通过人痘接种，认为诱发免疫力。在一千年前的北宋，从轻微感染者身上取一些痘痂，晾干，磨成粉末，吹入受种痘着鼻孔，一切顺利的情况下，接种人会感染轻度天花，将会就会对重度天花免疫。 天花在历史上引起了巨大的灾难，在 20...</description>
      <pubDate>Thu, 13 Mar 2025 00:34:59 GMT</pubDate>
    </item>
    <item>
      <title>37 免疫系统太弱：HIV 和艾滋病</title>
      <link>/docs/project/21/247.html</link>
      <guid isPermaLink="false">doc:247</guid>
      <description>HIV，人类免疫缺陷病毒，影响辅助性 T 细胞。HIV 是导致艾滋病的病毒。 HIV 的传染性不是特别强，需要通过血液等体液或性行为传播，大部分 HIV 都是通过性行为、肉眼不可见的伤口感染。 HIV 通过 CD4 的受体进入细胞体内，这些...</description>
      <pubDate>Thu, 13 Mar 2025 01:04:28 GMT</pubDate>
    </item>
    <item>
      <title>28 流感——威力被低估的病毒</title>
      <link>/docs/project/21/231.html</link>
      <guid isPermaLink="false">doc:231</guid>
      <description>几百颗飞沫随着咳嗽进入空气，其中包含了病毒，当你一无所知的吸入这些空气时，病毒被吸入体内，开始接管你的细胞，随后复制几十亿的病毒。 当流感病毒到达肺部的上层细胞后，它能和上皮细胞的受体结合，大约 1 个小时就能进入细胞内部，从而接管细胞，1...</description>
      <pubDate>Tue, 11 Mar 2025 23:24:26 GMT</pubDate>
    </item>
    <item>
      <title>29 化学战：干扰素，干扰起来！</title>
      <link>/docs/project/21/232.html</link>
      <guid isPermaLink="false">doc:232</guid>
      <description>人体细胞抵抗入侵病毒。 第一步，细胞要意识到自己受到了袭击，Toll 样可以识别病毒一类敌人的最常见形状，上皮细胞有一些不同的受体，可以扫描自己内部，看看有没有危险信号。 先天性免疫系统对付病毒没有对付细菌那么厉害，需要适应性免疫系统的帮助...</description>
      <pubDate>Tue, 11 Mar 2025 23:36:18 GMT</pubDate>
    </item>
    <item>
      <title>30 细胞之窗</title>
      <link>/docs/project/21/236.html</link>
      <guid isPermaLink="false">doc:236</guid>
      <description>如何判断细胞是否应该被杀死： 被病毒入侵的细胞 有些细菌如结核分枝杆菌也可以入侵细胞 癌细胞，标签上没有异常，实际内部已然坏掉 原生动物这些单细胞 想办法了解细胞内部，把细胞内的东西拿出来看看，一种起窗口作用的特殊分子，可以把细胞内部的情况...</description>
      <pubDate>Wed, 12 Mar 2025 01:25:57 GMT</pubDate>
    </item>
    <item>
      <title>31 专业杀手：杀伤性 T 细胞</title>
      <link>/docs/project/21/237.html</link>
      <guid isPermaLink="false">doc:237</guid>
      <description>辅助性 T 细胞和杀伤性 T 细胞均有 T 细胞分化而来，在 T 细胞中，杀伤性 T 细胞占 40%，它们也有几十亿中独特的受体，用以识别抗原。 杀伤性细胞需要靠 MHC-I 类分子激活。 树突状细胞可以对战场中的病毒进行采样，分解为抗原，...</description>
      <pubDate>Wed, 12 Mar 2025 01:37:27 GMT</pubDate>
    </item>
    <item>
      <title>32 天生杀手</title>
      <link>/docs/project/21/238.html</link>
      <guid isPermaLink="false">doc:238</guid>
      <description>自然杀伤细胞（NK 细胞）。 和 T 细胞有亲缘，但发育成熟后会脱离 T 细胞家族，加入先天免疫性系统。 它寻找两种敌人：被病毒感染的细胞核癌变的细胞。 它不通过 MHC-I 类分子去看发生了什么，而是看有没有 MHC-I 类分子，如果受感...</description>
      <pubDate>Wed, 12 Mar 2025 01:48:43 GMT</pubDate>
    </item>
    <item>
      <title>33 如何清除病毒感染</title>
      <link>/docs/project/21/242.html</link>
      <guid isPermaLink="false">doc:242</guid>
      <description>对抗病毒的整个环节： 先天性免疫系统力图遏制感染迅速扩展 大量化学信号散发，请求调高体温 产生更多黏液，让人剧烈咳嗽，把病毒排出体外 自然杀伤细胞两三天后抵达战场，杀死不在现实 MHC-I 类分子的感染细胞 树突细胞对战场进行采样，放入自己...</description>
      <pubDate>Wed, 12 Mar 2025 23:23:04 GMT</pubDate>
    </item>
    <item>
      <title>34 关闭免疫应答</title>
      <link>/docs/project/21/243.html</link>
      <guid isPermaLink="false">doc:243</guid>
      <description>关闭免疫应答很重要，因为活跃的免疫系统会造成附带损伤，消耗大量能力，不过如果太早关闭，病原体还有机会死灰复燃。需要在合适的时机关闭。 随着战斗的进行，敌人数量减少，战场的释放的细胞因子减少，被激活的免疫细胞变少，没有新的免疫细胞释放细胞因子...</description>
      <pubDate>Wed, 12 Mar 2025 23:41:33 GMT</pubDate>
    </item>
    <item>
      <title>条目 #222</title>
      <link>/docs/project/21/222.html</link>
      <guid isPermaLink="false">doc:222</guid>
      <description>肠道黏膜是那个生活了 1000 多种细菌，数量达三四十万亿，还有几千种病毒，组成了肠道微生物群。 肠道免疫系统是一个半封闭系统，和其他部位的免疫系统保持一定界限。 肠道黏膜的最大挑战，它的防线一直在被攻破，要持续响应分辨敌友。 90% 以上...</description>
      <pubDate>Tue, 11 Mar 2025 00:29:48 GMT</pubDate>
    </item>
    <item>
      <title>26 病毒是什么</title>
      <link>/docs/project/21/223.html</link>
      <guid isPermaLink="false">doc:223</guid>
      <description>病毒是最简单的能自我复制的生物，病毒只是个壳子，里面装着少许几条遗传编码和一些蛋白分子而已，完全依赖其他真正的生物而活。 据估计，地球上有 10^{31} 个病毒。 病毒为了繁荣昌盛，它需要进入细胞内不，它们会攻击受体。病毒外壳上有特殊的蛋...</description>
      <pubDate>Tue, 11 Mar 2025 01:17:13 GMT</pubDate>
    </item>
    <item>
      <title>27 肺部免疫系统</title>
      <link>/docs/project/21/224.html</link>
      <guid isPermaLink="false">doc:224</guid>
      <description>人每次吸气量约 500ml，除了氧气外还有很多无用气体和各种微粒。 细菌、病毒、真菌孢子可以吸附在空气的颗粒物、水蒸气或漂浮在空中。肺面临着大量有毒物质、颗粒和微生物的侵袭，如果免疫系统发生大规模反应，会造成组织损伤，这可不行。 鼻腔是呼吸...</description>
      <pubDate>Tue, 11 Mar 2025 01:33:15 GMT</pubDate>
    </item>
    <item>
      <title>第二十一课：动画与模拟I</title>
      <link>/docs/project/18/201.html</link>
      <guid isPermaLink="false">doc:201</guid>
      <description>现在有一个问题，运动的物体如何表示？ 动画，让东西动起来 交流工具 美学 动画可以理解为建模，几何的扩展，动画就是在不同的帧有不同的几何形状，把 3D 的模型衍生到了时间的维度上 视觉暂留的效应，不需要在整个时间范围内非常集中的采样 对于电...</description>
      <pubDate>Sun, 09 Mar 2025 04:11:22 GMT</pubDate>
    </item>
    <item>
      <title>21 军工厂和狙击枪</title>
      <link>/docs/project/21/205.html</link>
      <guid isPermaLink="false">doc:205</guid>
      <description>B 细胞比 T 细胞稍大，二者都源于骨髓，且都必须进行残酷的训练： T 细胞在胸腺 B 细胞在骨髓 B 细胞表面至少有几亿到几十亿受体，每个 B 细胞都有 能识别某一特定抗原的特定受体。 抗体是 B 细胞的受体，类似狙击枪，转为结合特定抗原...</description>
      <pubDate>Mon, 10 Mar 2025 00:11:37 GMT</pubDate>
    </item>
    <item>
      <title>24 沼泽之国：黏膜</title>
      <link>/docs/project/21/210.html</link>
      <guid isPermaLink="false">doc:210</guid>
      <description>人体是开放的系统，需要氧气和营养维持身体，同时也需要将废物排出，而这些地方是人体的薄弱环节，绝大部分病原体入侵都发生在这些地方。 在复习到、口腔、肠道以及生殖道都是身体的外部，这个管道里面存在黏膜。 黏膜的作用，让营养进来，让废物出去，同时...</description>
      <pubDate>Mon, 10 Mar 2025 00:55:55 GMT</pubDate>
    </item>
    <item>
      <title>第十八课：高级光线传播与复杂外观建模</title>
      <link>/docs/project/18/198.html</link>
      <guid isPermaLink="false">doc:198</guid>
      <description>高级光线传播。 无偏的光线传播方法： Bidirectional path tracing，BDPT Metropolis light transport，MLT 有偏的光线传播方法 Photon mapping，光子映射 Vertex c...</description>
      <pubDate>Sat, 08 Mar 2025 07:19:37 GMT</pubDate>
    </item>
    <item>
      <title>第二十课：光场、颜色与感知</title>
      <link>/docs/project/18/200.html</link>
      <guid isPermaLink="false">doc:200</guid>
      <description>从看到的世界是什么说起，设置一个简单场景，看屋子以及透过屋子还可以看到树，把看到的东西画下来。 如果在这个房间加一个幕布，这个幕布可以完美反映你看到的图，你看这个幕布和看真实世界没有区别，这就是虚拟现实的原理。 大家看到的只有光线，不知道多...</description>
      <pubDate>Sun, 09 Mar 2025 00:21:16 GMT</pubDate>
    </item>
    <item>
      <title>第十四课：光线追踪II</title>
      <link>/docs/project/18/193.html</link>
      <guid isPermaLink="false">doc:193</guid>
      <description>如何使用 AABB 加速光线追踪： 均匀格子 空间划分 先考虑和盒子求交，在考虑是否和里面的物体求交 找到包围盒 在做光线追踪之前，把盒子分为一堆格子 判定哪些格子里面可能有物体 开始做光线追踪 怎么知道光线会打到哪个格子，最简单的办法，光...</description>
      <pubDate>Mon, 03 Mar 2025 11:19:42 GMT</pubDate>
    </item>
    <item>
      <title>第十二课：几何III</title>
      <link>/docs/project/18/183.html</link>
      <guid isPermaLink="false">doc:183</guid>
      <description>曲面划分，上采样 网格简化，下采样 三角形不规则，规则化，让每个三角形看着更像正三角形 细分，位移贴图，需要很多的三角形跟上纹理的高度变化，如何引入更多的三角形。 细分： 分出更多的三角形 改变原来的三角形，更加光滑 Loop Subdiv...</description>
      <pubDate>Tue, 25 Feb 2025 23:57:08 GMT</pubDate>
    </item>
    <item>
      <title>第十三课：光线追踪I</title>
      <link>/docs/project/18/184.html</link>
      <guid isPermaLink="false">doc:184</guid>
      <description>为什么需要光线追踪？先说说光栅化存在的问题，不能很好表示全局效果： 软阴影 Glossy，物体表面像镜子，但又没镜子那么光滑 间接光照，光线不断弹射，然后打到人眼，光栅化非常非常的低效、麻烦且不能保证物理上的正确性 光线追踪是一个准确的算法...</description>
      <pubDate>Wed, 26 Feb 2025 01:20:29 GMT</pubDate>
    </item>
    <item>
      <title>第十一课：几何II</title>
      <link>/docs/project/18/171.html</link>
      <guid isPermaLink="false">doc:171</guid>
      <description>显式的几何。 表示方法： 三角形面 贝塞尔曲面 ... 点云，不考虑物体是一个表面，而是表面上的一堆点，只要点表示的足够细，就看不到点与点之间的缝隙，就看到了一个表面，常见于扫描数据 理论可以表示任意的几何，只要你的点足够密 多边形面，在图...</description>
      <pubDate>Thu, 20 Feb 2025 00:43:11 GMT</pubDate>
    </item>
    <item>
      <title>第十课：几何I</title>
      <link>/docs/project/18/159.html</link>
      <guid isPermaLink="false">doc:159</guid>
      <description>纹理的应用，环境光照。 纹理其他的应用，纹理就是一块内存，可以对这块内存进行范围查询，滤波。 环境映射，任何方向都有光，把光记录下来 -&gt; 环境光照，用纹理描述整个环境光长什么样，纹理可以用来表示环境光 把不同的环境光记录在球面上，并且展开...</description>
      <pubDate>Mon, 03 Feb 2025 12:50:48 GMT</pubDate>
    </item>
    <item>
      <title>第一课：总览</title>
      <link>/docs/project/18/146.html</link>
      <guid isPermaLink="false">doc:146</guid>
      <description>计算机图形学的三个研究方向： 渲染，光栅化 几何 光线追踪 动画/模拟/仿真</description>
      <pubDate>Fri, 03 Jan 2025 15:38:47 GMT</pubDate>
    </item>
    <item>
      <title>使用 Github Actions 部署 VuePress 博客</title>
      <link>/articles/62.html</link>
      <guid isPermaLink="false">article:62</guid>
      <description>随着我 VuePress 博客中的东西越来越多，每次我打包好项目然后上传到 Github 上需要好一会儿时间，之前在一些文章中知道 Github Actions 可以帮我自动部署项目，正好今天尝试尝试。 在使用 Github Actions...</description>
      <pubDate>Mon, 31 May 2021 07:20:11 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 加号运算符</title>
      <link>/articles/54.html</link>
      <guid isPermaLink="false">article:54</guid>
      <description>今天看到几道有关加号的题目，觉得很怪异如下 [] + {} // &apos;[object Object]&apos; [] + [] // &apos;&apos; {} + [] // 0 {} + {} // NaN [] + {} == {} + [] // true ...</description>
      <pubDate>Sun, 05 Jul 2020 04:14:25 GMT</pubDate>
    </item>
    <item>
      <title>离散傅里叶变换</title>
      <link>/articles/42.html</link>
      <guid isPermaLink="false">article:42</guid>
      <description>周期序列的离散傅里叶级数展开 正如连续时间周期信号可以表示为一系列正弦信号的和的形式，周期序列也可以表示为一系列正弦之和的形式，假设序列 \tilde{x}[n] 的周期为 N ，那么它的基频为 \cfrac{2\pi}{N} ，所以有 这...</description>
      <pubDate>Mon, 03 Dec 2018 05:04:25 GMT</pubDate>
    </item>
    <item>
      <title>连续时间信号的抽样及其重建</title>
      <link>/articles/38.html</link>
      <guid isPermaLink="false">article:38</guid>
      <description>现研究一连续信号进行抽样转换为数字信号，经数字信号处理器(DSP)或计算机处理后，再进行重建的过程，具体过程如下： 其中采样/保持电路和 A/D 转换电路可以看做是一个理想抽样的过程，而 D/A 转换和平滑滤波可以看做是一个理想内插的过程。...</description>
      <pubDate>Sun, 25 Nov 2018 14:02:09 GMT</pubDate>
    </item>
    <item>
      <title>信号的相关</title>
      <link>/articles/39.html</link>
      <guid isPermaLink="false">article:39</guid>
      <description>有时候需要将一个信号与多个参考信号进行比较，以便确定每对信号之间的相似性，从而从相似性中提取出额外的信息。在雷达应用中，接收到的信号是目标反射回来的信号，该信号是反射信号的延迟形式，通过测量延迟，可以确定目标的位置。 从向量的内积谈起 按照...</description>
      <pubDate>Fri, 16 Nov 2018 13:17:02 GMT</pubDate>
    </item>
    <item>
      <title>离散时间傅里叶变换</title>
      <link>/articles/40.html</link>
      <guid isPermaLink="false">article:40</guid>
      <description>定义 我们定义离散时间傅里叶(DTFT)变换为 其实我在书上看到这里的时候不太理解为什么离散傅里叶变换要这么定义，其实书上直接给出这么一个公式有一点马后炮的感觉，我想知道这个公式为什么这么定义，想知道的是一个设计的过程，这么定义为什么能够给...</description>
      <pubDate>Wed, 21 Nov 2018 03:05:01 GMT</pubDate>
    </item>
    <item>
      <title>离散时间傅里叶变换的性质</title>
      <link>/articles/41.html</link>
      <guid isPermaLink="false">article:41</guid>
      <description>线性性质 设 则 时移性质 设 则 x[n-n_0] 的 DTFT 为 频移性质 设 则 e^{jw_0n}x[n] 的 DTFT 为 时域反转 设 则 x[-n] 的傅里叶变换为 时域微分 设 由于 两边同时对 n 进行微分运算 所以 频...</description>
      <pubDate>Sat, 01 Dec 2018 02:20:28 GMT</pubDate>
    </item>
    <item>
      <title>2021 年终总结</title>
      <link>/articles/35.html</link>
      <guid isPermaLink="false">article:35</guid>
      <description>2021 没想到这么快就过去了，简单的回顾一下 2021 年吧。 去年寒假的这个时候，我参加了阿里巴巴举办的前端练习生计划，参加了几场直播，完成了几次作业。分组的时候成为了队长，本来是要合作完成一个项目的，但是要求写 PRD 需求文档之类的...</description>
      <pubDate>Sat, 22 Jan 2022 13:18:15 GMT</pubDate>
    </item>
    <item>
      <title>使用 Notion 作为视频托管</title>
      <link>/articles/20.html</link>
      <guid isPermaLink="false">article:20</guid>
      <description>有的时候希望在博客里面添加视频，博客托管在 Github Page 上，但是视频一般比较大，也就没有办法将其上传到 Github 上，一般来说我们可以讲视频上传到视频托管平台，比如 bilibili 和 Youtube。 对于国内将视频上传...</description>
      <category>Notion</category>
      <category>视频托管</category>
      <pubDate>Mon, 22 Nov 2021 09:12:32 GMT</pubDate>
    </item>
    <item>
      <title>排序算法</title>
      <link>/articles/22.html</link>
      <guid isPermaLink="false">article:22</guid>
      <description>本篇文章将对常见的排序算法进行介绍，包括： 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 为了对实现的算法进行测试，我们准备一个工具类 Helper ，里面包括我们由于测试算法正确与否的方法以及性能测试的代码，包括交换数组中的两...</description>
      <category>排序算法</category>
      <category>选择排序</category>
      <category>插入排序</category>
      <category>希尔排序</category>
      <category>归并排序</category>
      <category>快速排序</category>
      <category>堆排序</category>
      <pubDate>Sat, 03 Apr 2021 03:25:35 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 正则表达式</title>
      <link>/articles/17.html</link>
      <guid isPermaLink="false">article:17</guid>
      <description>在字符串的处理中，我们经常要进行字符串的匹配，校验等等操作。比如校验字符串的格式是否符合邮箱，电话号码的格式，校验密码是否符合要求，密码中是否包含数字和字母等等；又或者匹配得到某种规则的字符串。这一些操作如果使用常规的方法进行字符串操作，会...</description>
      <category>正则表达式</category>
      <category>exec</category>
      <category>match</category>
      <category>贪婪 vs 懒惰</category>
      <category>量词</category>
      <category>元字符</category>
      <category>分组</category>
      <pubDate>Thu, 28 May 2020 07:21:12 GMT</pubDate>
    </item>
    <item>
      <title>Node EventEmitter 使用及实现</title>
      <link>/articles/12.html</link>
      <guid isPermaLink="false">article:12</guid>
      <description>EventEmitter 是 Node 提供的一个事件订阅模块，本片文章将介绍具体的使用，然后实现一遍。 EventEmitter 的使用 EventEmitter 为我们提供了事件订阅机制，通过引入 events 模块来使用它。 cons...</description>
      <category>Node</category>
      <category>EventEmitter</category>
      <pubDate>Fri, 12 Mar 2021 02:15:02 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 控制对象的访问</title>
      <link>/articles/13.html</link>
      <guid isPermaLink="false">article:13</guid>
      <description>本篇文章总结控制对象访问的相关 API。 Object.defineProperty Object.defineProperty 可以对对象的属性进行配置，它接收如下参数： obj ：对象 prop ：属性 descriptor ：属性描述...</description>
      <category>defineProperty</category>
      <category>defineProperties</category>
      <category>preventExtensions</category>
      <category>seal</category>
      <category>freeze</category>
      <category>Proxy</category>
      <pubDate>Tue, 13 Apr 2021 14:18:00 GMT</pubDate>
    </item>
    <item>
      <title>跑马灯动画</title>
      <link>/articles/14.html</link>
      <guid isPermaLink="false">article:14</guid>
      <description>本篇文章介绍了如何实现支持动态加减速的跑马灯动画，效果如下： 上面的动画主要实现了两个功能： 文字的无缝衔接 动画的动态加减速 首先给出例子用到的 html 与 css 代码 &lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt;...</description>
      <category>跑马灯</category>
      <category>动画</category>
      <category>动态加减速</category>
      <pubDate>Fri, 02 Jul 2021 10:11:12 GMT</pubDate>
    </item>
    <item>
      <title>Node Stream 详解</title>
      <link>/articles/5.html</link>
      <guid isPermaLink="false">article:5</guid>
      <description>假设我们有这么一个需求，我们需要复制一个文件中的内容到另一个文件中，我们会写出以下代码 const fs = require(&apos;fs&apos;); const path = require(&apos;path&apos;); const copy = (source...</description>
      <category>Node</category>
      <category>Stream</category>
      <pubDate>Sat, 06 Mar 2021 04:14:00 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 访问对象中的属性</title>
      <link>/articles/6.html</link>
      <guid isPermaLink="false">article:6</guid>
      <description>本篇文章关于遍历对象属性的问题，包括 for ...in ， Object.keys() ， Reflect.ownKeys() ， Object.getOwnPropertyNames() ， Object.getOwnPropertyS...</description>
      <category>for ... in</category>
      <category>Object.keys</category>
      <category>Reflect.ownKeys</category>
      <category>Object.getOwnPropertyNames()</category>
      <category>Object.getOwnPropertySymbols()</category>
      <pubDate>Fri, 30 Apr 2021 03:25:35 GMT</pubDate>
    </item>
    <item>
      <title>远程访问 jupyter</title>
      <link>/articles/7.html</link>
      <guid isPermaLink="false">article:7</guid>
      <description>最近又开始折腾了 jupyter 了，因为实验室的网络环境太差，每次我使用 conda 开启一个新的环境，然后下载一些新的包时会非常的慢，慢我还能忍，问题是经常下载失败，浪费我的时间😭，接着我想到我有一台腾讯云的服务器，我就想在服务器上下...</description>
      <category>jupyter</category>
      <category>远程访问</category>
      <category>conda</category>
      <pubDate>Fri, 04 Jun 2021 11:14:00 GMT</pubDate>
    </item>
    <item>
      <title>笔记折腾之旅</title>
      <link>/articles/8.html</link>
      <guid isPermaLink="false">article:8</guid>
      <description>记录从上大学开始到现在做笔记的方式，先是手抄纸质笔记，然后是折腾各种电子笔记，在进阶自定义个人博客，到现在自己写了一个笔记软件。 手抄笔记 自从上了大学之后，知识越发艰涩难懂，往往我看完一遍书之后，都不知道自己看了什么，所以当时就觉得我需要...</description>
      <category>笔记</category>
      <category>学习方法</category>
      <category>OneNote</category>
      <category>CSDN</category>
      <category>博客园</category>
      <category>docsify</category>
      <category>Hexo</category>
      <category>VuePress</category>
      <category>Notion</category>
      <category>Obsidian</category>
      <pubDate>Fri, 01 Oct 2021 14:14:00 GMT</pubDate>
    </item>
    <item>
      <title>我是如何成为一名程序员的</title>
      <link>/articles/2.html</link>
      <guid isPermaLink="false">article:2</guid>
      <description>随这我在学校就业网提交签约信息，也就意味着我的秋招基本结束了 我也正好捋捋我是如何成为一名程序员的。 翁恺男神：拯救了我的 C 语言 在上大学之前，从来没写过程序，甚至连编程这件事情是什么都不知道，只会用电脑看小说和打游戏(而且只会4399...</description>
      <category>程序人生</category>
      <pubDate>Thu, 18 Nov 2021 03:20:00 GMT</pubDate>
    </item>
    <item>
      <title>const 和 let 具有相同的特点，有一个不同的是 let 声明的变量是可变...</title>
      <link>/cards/507.html</link>
      <guid isPermaLink="false">card:507</guid>
      <description>const 和 let 具有相同的特点，有一个不同的是 let 声明的变量是可变的，可以被重新赋值，而 const 声明的变量是不可变的，不可以被重新赋值 let a = 1; a = 2; console.log(a); // 2 con...</description>
      <category>JavaScript/语法/变量声明</category>
      <pubDate>Tue, 15 Oct 2024 05:16:03 GMT</pubDate>
    </item>
    <item>
      <title>模块 os 让你能够访问多个操作系统服务。 os 及其子模块 os.path 还...</title>
      <link>/cards/478.html</link>
      <guid isPermaLink="false">card:478</guid>
      <description>模块 os 让你能够访问多个操作系统服务。 os 及其子模块 os.path 还包含多个查看、创建和删除目录及文件的函数，以及一些操作路径的函数（例如， os.path.split 和 os.path.join 让你在大多数情况下都可忽略 ...</description>
      <category>Python/标准库/os</category>
      <pubDate>Wed, 26 Jun 2024 10:41:01 GMT</pubDate>
    </item>
    <item>
      <title>Python 使用异常对象来表示异常状态，并在遇到错误时引发异常。异常对象未被处...</title>
      <link>/cards/465.html</link>
      <guid isPermaLink="false">card:465</guid>
      <description>Python 使用异常对象来表示异常状态，并在遇到错误时引发异常。异常对象未被处理（或捕获）时，程序将终止并显示一条错误消息。 &gt;&gt;&gt; 1 / 0 Traceback (most recent call last): File &quot;&lt;stdi...</description>
      <category>Python/异常</category>
      <pubDate>Mon, 24 Jun 2024 10:54:34 GMT</pubDate>
    </item>
    <item>
      <title>使用 try/except 语句来捕获异常 try: x = int(input...</title>
      <link>/cards/466.html</link>
      <guid isPermaLink="false">card:466</guid>
      <description>使用 try/except 语句来捕获异常 try: x = int(input(&apos;Enter the first number: &apos;)) y = int(input(&apos;Enter the second number: &apos;)) print(...</description>
      <category>Python/异常</category>
      <pubDate>Mon, 24 Jun 2024 10:56:05 GMT</pubDate>
    </item>
    <item>
      <title>只想发出警告，指出情况偏离了正轨，可使用模块 warnings 中的函数 war...</title>
      <link>/cards/467.html</link>
      <guid isPermaLink="false">card:467</guid>
      <description>只想发出警告，指出情况偏离了正轨，可使用模块 warnings 中的函数 warn &gt;&gt;&gt; from warnings import warn &gt;&gt;&gt; warn(&quot;I&apos;ve got a bad feeling about this.&quot;) _...</description>
      <category>Python/异常</category>
      <pubDate>Mon, 24 Jun 2024 10:58:39 GMT</pubDate>
    </item>
    <item>
      <title>初始化方法，命名为 __init__ 。不同于普通方法的地方在于，将在对象创建后...</title>
      <link>/cards/468.html</link>
      <guid isPermaLink="false">card:468</guid>
      <description>初始化方法，命名为 __init__ 。不同于普通方法的地方在于，将在对象创建后自动调用它们。 class FooBar: def __init__(self): self.somevar = 42 &gt;&gt;&gt; f = FooBar() &gt;&gt;&gt;...</description>
      <category>Python/魔法方法</category>
      <pubDate>Mon, 24 Jun 2024 23:43:53 GMT</pubDate>
    </item>
    <item>
      <title>实现一个自定义序列，需要实现它们的基本行为（协议），不可变对象需要实现两个方法，...</title>
      <link>/cards/469.html</link>
      <guid isPermaLink="false">card:469</guid>
      <description>实现一个自定义序列，需要实现它们的基本行为（协议），不可变对象需要实现两个方法，而可变对象需要实现四个。 __len__(self) ：这个方法应返回集合包含的项数，对序列来说为元素个数，对映射来说为键-值对数。如果 __len__ 返回零...</description>
      <category>Python/魔法方法</category>
      <pubDate>Mon, 24 Jun 2024 23:46:22 GMT</pubDate>
    </item>
    <item>
      <title>property 是 Python 中一种特殊的装饰器，它允许您通过定义 get...</title>
      <link>/cards/470.html</link>
      <guid isPermaLink="false">card:470</guid>
      <description>property 是 Python 中一种特殊的装饰器，它允许您通过定义 getter 、 setter 和 deleter 方法来控制对类属性的访问。使用 property 装饰器可以将方法转换为属性，使其在使用上更加直观和方便。 关键点...</description>
      <category>Python/类</category>
      <category>Python/装饰器</category>
      <category>Python/魔法方法</category>
      <pubDate>Mon, 24 Jun 2024 23:53:51 GMT</pubDate>
    </item>
    <item>
      <title>要在属性被访问时执行一段代码，必须使用一些魔法方法。由下面的四个魔法方法定义。 ...</title>
      <link>/cards/471.html</link>
      <guid isPermaLink="false">card:471</guid>
      <description>要在属性被访问时执行一段代码，必须使用一些魔法方法。由下面的四个魔法方法定义。 __getattribute__(self, name) ：在属性被访问时自动调用 __getattr__(self, name) ：在属性被访问而 对象没有这...</description>
      <category>Python/魔法方法</category>
      <pubDate>Tue, 25 Jun 2024 00:52:40 GMT</pubDate>
    </item>
    <item>
      <title>在类中，区别与一般实例方法，还有两个方法：静态方法和类方法。 静态方法同一般函数...</title>
      <link>/cards/472.html</link>
      <guid isPermaLink="false">card:472</guid>
      <description>在类中，区别与一般实例方法，还有两个方法：静态方法和类方法。 静态方法同一般函数一致，不过是在类的命名空间中，可以通过类名或者实例来进行调用，可以使用 @staticmethod 来定义静态方法 class Calculator: @sta...</description>
      <category>Python/类</category>
      <category>Python/装饰器</category>
      <pubDate>Tue, 25 Jun 2024 00:59:02 GMT</pubDate>
    </item>
    <item>
      <title>只要具备了 __iter__ 魔法方法，该对象就是可迭代的，可使用 for 进行...</title>
      <link>/cards/473.html</link>
      <guid isPermaLink="false">card:473</guid>
      <description>只要具备了 __iter__ 魔法方法，该对象就是可迭代的，可使用 for 进行迭代。 方法 __iter__ 返回一个迭代器，它是包含方法 __next__ 的对象，而调用这个方法时可不提供任何参数。当你调用方法 __next__ 时，迭...</description>
      <category>Python/魔法方法</category>
      <category>Python/迭代器</category>
      <pubDate>Wed, 26 Jun 2024 00:43:55 GMT</pubDate>
    </item>
    <item>
      <title>生成器是一种使用普通函数语法定义的 迭代器 。包含 yield 语句的函数都被称...</title>
      <link>/cards/474.html</link>
      <guid isPermaLink="false">card:474</guid>
      <description>生成器是一种使用普通函数语法定义的 迭代器 。包含 yield 语句的函数都被称为生成器，调用时返回一个迭代器。 🌰：斐波那契数列生成器 def fib_generate(): a, b = 0, 1 while True: a, b =...</description>
      <category>Python/生成器</category>
      <pubDate>Wed, 26 Jun 2024 00:48:27 GMT</pubDate>
    </item>
    <item>
      <title>生成器和外部之间的通信渠道： 外部世界：外部世界可访问生成器的方法 send ，...</title>
      <link>/cards/475.html</link>
      <guid isPermaLink="false">card:475</guid>
      <description>生成器和外部之间的通信渠道： 外部世界：外部世界可访问生成器的方法 send ，这个方法类似于 next ，但接受一个参数 生成器：在挂起的生成器内部，外部通过 send 发送的值将作为 yield 的返回值 def number_gene...</description>
      <category>Python/生成器</category>
      <pubDate>Wed, 26 Jun 2024 01:05:32 GMT</pubDate>
    </item>
    <item>
      <title>模块包含哪些东西，可使用函数 dir ，它列出对象的所有属性 &gt;&gt;&gt; impor...</title>
      <link>/cards/476.html</link>
      <guid isPermaLink="false">card:476</guid>
      <description>模块包含哪些东西，可使用函数 dir ，它列出对象的所有属性 &gt;&gt;&gt; import copy &gt;&gt;&gt; dir(copy) [&apos;Error&apos;, &apos;__all__&apos;, &apos;__builtins__&apos;, &apos;__cached__&apos;, &apos;__doc__...</description>
      <category>Python/模块</category>
      <pubDate>Wed, 26 Jun 2024 01:18:49 GMT</pubDate>
    </item>
    <item>
      <title>sys 让你能够访问与 Python 解释器紧密相关的变量和函数 变量 sys....</title>
      <link>/cards/477.html</link>
      <guid isPermaLink="false">card:477</guid>
      <description>sys 让你能够访问与 Python 解释器紧密相关的变量和函数 变量 sys.argv 包含传递给 Python 解释器的参数，其中包括脚本名 函数 sys.exit 退出当前程序。你可向它提供一个整数，指出程序是否成功，这是一种 UNI...</description>
      <category>Python/标准库/sys</category>
      <pubDate>Wed, 26 Jun 2024 10:40:05 GMT</pubDate>
    </item>
    <item>
      <title>用作布尔表达式（如用作 if 语句中的条件）时，下面的值都将被解释器视为假： F...</title>
      <link>/cards/449.html</link>
      <guid isPermaLink="false">card:449</guid>
      <description>用作布尔表达式（如用作 if 语句中的条件）时，下面的值都将被解释器视为假： False None 0 &quot;&quot; () [] {} 其他各种值都被视为真。 虽然可供选择的真值非常多，但标准真值为 True 和 False 。标准真值为 0 （表...</description>
      <category>Python</category>
      <pubDate>Sun, 23 Jun 2024 15:26:00 GMT</pubDate>
    </item>
    <item>
      <title>有条件地执行代码，如果条件为真，就执行后续代码块；如果条件为假，就不执行 nam...</title>
      <link>/cards/450.html</link>
      <guid isPermaLink="false">card:450</guid>
      <description>有条件地执行代码，如果条件为真，就执行后续代码块；如果条件为假，就不执行 name = input(&apos;What is your name?&apos;) if name.endswith(&apos;Gumby&apos;): print(&apos;Hello, Mr. Gum...</description>
      <category>Python</category>
      <pubDate>Mon, 24 Jun 2024 00:20:49 GMT</pubDate>
    </item>
    <item>
      <title>可以使用比较表达式产生布尔值 Python 也支持链式比较：可同时使用多个比较运...</title>
      <link>/cards/451.html</link>
      <guid isPermaLink="false">card:451</guid>
      <description>可以使用比较表达式产生布尔值 Python 也支持链式比较：可同时使用多个比较运算符，如 0 &lt; age &lt; 100 &gt;&gt;&gt; age = 90 &gt;&gt;&gt; 18 &lt; age &lt; 35 False &gt;&gt;&gt; 0 &lt; age &lt; 100 True =...</description>
      <category>Python</category>
      <pubDate>Mon, 24 Jun 2024 00:25:51 GMT</pubDate>
    </item>
    <item>
      <title>布尔值之间可以进行运算，支持三种运算： and ：它接受两个真值，并在这两个值都...</title>
      <link>/cards/452.html</link>
      <guid isPermaLink="false">card:452</guid>
      <description>布尔值之间可以进行运算，支持三种运算： and ：它接受两个真值，并在这两个值都为真时返回真，否则返回假。 or ：接受两个布尔值，二者有一个为真即为真，否则为假 not ：接受一个值，取反 短路，一旦第一个布尔值已能确定结果，不在执行第二...</description>
      <category>Python</category>
      <pubDate>Mon, 24 Jun 2024 00:29:45 GMT</pubDate>
    </item>
    <item>
      <title>在错误条件出现时立即崩溃胜过以后再崩溃 （开发时解 bug 总比上线出现问题解 ...</title>
      <link>/cards/454.html</link>
      <guid isPermaLink="false">card:454</guid>
      <description>在错误条件出现时立即崩溃胜过以后再崩溃 （开发时解 bug 总比上线出现问题解 bug 好）。 断言是一种有效的调试工具，用于验证编程过程中的假设。通过在代码中插入断言语句，可以快速检查程序的状态是否如预期，并能够帮助开发人员快速发现问题。...</description>
      <category>Python/断言</category>
      <pubDate>Mon, 24 Jun 2024 00:45:59 GMT</pubDate>
    </item>
    <item>
      <title>三种进行循环控制的方式： break ：结束（跳出）循环 找出小于 100 的最...</title>
      <link>/cards/455.html</link>
      <guid isPermaLink="false">card:455</guid>
      <description>三种进行循环控制的方式： break ：结束（跳出）循环 找出小于 100 的最大平方值 from math import sqrt for n in range(99, 0, -1): root = sqrt(n) if root == ...</description>
      <category>Python/循环</category>
      <pubDate>Mon, 24 Jun 2024 00:55:21 GMT</pubDate>
    </item>
    <item>
      <title>执行字符串，这样做可能带来严重的安全隐患。 exec 动态地执行字符串中的 Py...</title>
      <link>/cards/456.html</link>
      <guid isPermaLink="false">card:456</guid>
      <description>执行字符串，这样做可能带来严重的安全隐患。 exec 动态地执行字符串中的 Python 代码，并且可以在运行时生成、修改和执行代码 &gt;&gt;&gt; exec(&quot;print(&apos;Hello, world!&apos;)&quot;) Hello, world! 大多数情...</description>
      <category>Python</category>
      <pubDate>Mon, 24 Jun 2024 01:00:45 GMT</pubDate>
    </item>
    <item>
      <title>pass 是一个空语句，用于占位符或空操作。一般用于语法上需要有语句但逻辑上不需...</title>
      <link>/cards/457.html</link>
      <guid isPermaLink="false">card:457</guid>
      <description>pass 是一个空语句，用于占位符或空操作。一般用于语法上需要有语句但逻辑上不需要任何操作的情况。 if name == &apos;Ralph Auldus Melish&apos;: print(&apos;Welcome!&apos;) elif name == &apos;Enid...</description>
      <category>Python/pass</category>
      <pubDate>Mon, 24 Jun 2024 01:07:33 GMT</pubDate>
    </item>
    <item>
      <title>del 关键字的作用是从命名空间中删除一个变量名或从容器对象中删除一个元素。它可...</title>
      <link>/cards/458.html</link>
      <guid isPermaLink="false">card:458</guid>
      <description>del 关键字的作用是从命名空间中删除一个变量名或从容器对象中删除一个元素。它可以用于删除变量、列表中的元素、字典中的键值对等。 删除变量 &gt;&gt;&gt; x = 10 &gt;&gt;&gt; del x &gt;&gt;&gt; x Traceback (most recent ...</description>
      <category>Python/del</category>
      <pubDate>Mon, 24 Jun 2024 01:10:17 GMT</pubDate>
    </item>
    <item>
      <title>Python 有两种语法来重复执行一段代码： while 在条件为真时反复执行代...</title>
      <link>/cards/459.html</link>
      <guid isPermaLink="false">card:459</guid>
      <description>Python 有两种语法来重复执行一段代码： while 在条件为真时反复执行代码块。 x = 1 while x &lt;= 100: print(x) x += 1 for 遍历一个可迭代对象中的元素 numbers = [0, 1, 2, ...</description>
      <category>Python/循环</category>
      <pubDate>Mon, 24 Jun 2024 01:27:11 GMT</pubDate>
    </item>
    <item>
      <title>zip() 函数可以将多个可迭代对象中对应位置的元素打包成一个元组，然后返回一个...</title>
      <link>/cards/460.html</link>
      <guid isPermaLink="false">card:460</guid>
      <description>zip() 函数可以将多个可迭代对象中对应位置的元素打包成一个元组，然后返回一个这些元素构成的迭代器 fruits = [&apos;apple&apos;, &apos;banana&apos;, &apos;cherry&apos;] colors = [&apos;red&apos;, &apos;yellow&apos;, &apos;pu...</description>
      <category>Python/zip</category>
      <pubDate>Mon, 24 Jun 2024 04:43:50 GMT</pubDate>
    </item>
    <item>
      <title>在进行迭代时时，除了需要迭代的值本身，还需要索引信息，这个时候可以使用 enum...</title>
      <link>/cards/461.html</link>
      <guid isPermaLink="false">card:461</guid>
      <description>在进行迭代时时，除了需要迭代的值本身，还需要索引信息，这个时候可以使用 enumerate() 函数 基本语法： enumerate(iterable, start=0) iterable ：要枚举的可迭代对象，如列表、元组等 start ...</description>
      <category>Python/enumerate</category>
      <pubDate>Mon, 24 Jun 2024 04:50:11 GMT</pubDate>
    </item>
    <item>
      <title>私有属性不能从对象外部访问，而只能通过存取器方法（如 get_name 和 se...</title>
      <link>/cards/463.html</link>
      <guid isPermaLink="false">card:463</guid>
      <description>私有属性不能从对象外部访问，而只能通过存取器方法（如 get_name 和 set_name ）来访问。Python 没有为私有属性提供直接的支持，而是要求程序员知道在什么情况下从外部修改属性是安全的。 要让方法或属性成为私有的（不能从外部...</description>
      <category>Python/类</category>
      <pubDate>Mon, 24 Jun 2024 10:45:47 GMT</pubDate>
    </item>
    <item>
      <title>元组：不可修改的序列。 元组使用逗号分隔即可创建。还可以使用圆括号括起（常用做法...</title>
      <link>/cards/439.html</link>
      <guid isPermaLink="false">card:439</guid>
      <description>元组：不可修改的序列。 元组使用逗号分隔即可创建。还可以使用圆括号括起（常用做法）。 &gt;&gt;&gt; 1, 2, 3 (1, 2, 3) &gt;&gt;&gt; (1, 2, 3) (1, 2, 3) 只包含一个值的元组，虽然只有一个值，也必须在它后面加上逗号。 ...</description>
      <category>Python/序列/元组</category>
      <pubDate>Sat, 22 Jun 2024 08:14:22 GMT</pubDate>
    </item>
    <item>
      <title>字符串格式化的方法。 在 % 左边指定一个字符串（格式字符串），并在右边指定要设...</title>
      <link>/cards/440.html</link>
      <guid isPermaLink="false">card:440</guid>
      <description>字符串格式化的方法。 在 % 左边指定一个字符串（格式字符串），并在右边指定要设置其格式的值。 &gt;&gt;&gt; format = &quot;Hello, %s. %s enough for ya?&quot; &gt;&gt;&gt; values = (&apos;world&apos;, &apos;Hot&apos;...</description>
      <category>Python/字符串/格式字符串</category>
      <pubDate>Sat, 22 Jun 2024 08:31:04 GMT</pubDate>
    </item>
    <item>
      <title>格式字符串时可以使用指令设置格式 &gt;&gt;&gt; print(&quot;{pi!s} {pi!r...</title>
      <link>/cards/441.html</link>
      <guid isPermaLink="false">card:441</guid>
      <description>格式字符串时可以使用指令设置格式 &gt;&gt;&gt; print(&quot;{pi!s} {pi!r} {pi!a}&quot;.format(pi=&quot;π&quot;)) π &apos;π&apos; &apos;\u03c0&apos; 上述三个标志（ s 、 r 和 a ）指定分别使用 str 、 repr 和 ...</description>
      <category>Python/字符串/格式字符串</category>
      <pubDate>Sat, 22 Jun 2024 08:40:11 GMT</pubDate>
    </item>
    <item>
      <title>模块 string 中几个很有用的常量： string.digits ：包含数字...</title>
      <link>/cards/442.html</link>
      <guid isPermaLink="false">card:442</guid>
      <description>模块 string 中几个很有用的常量： string.digits ：包含数字 0～9 的字符串。 string.ascii_letters ：包含所有 ASCII 字母（大写和小写）的字符串。 string.ascii_lowercas...</description>
      <category>Python/字符串</category>
      <pubDate>Sat, 22 Jun 2024 08:52:34 GMT</pubDate>
    </item>
    <item>
      <title>center 在两边添加填充字符（默认为空格）让字符串居中。 &gt;&gt;&gt; &quot;The ...</title>
      <link>/cards/443.html</link>
      <guid isPermaLink="false">card:443</guid>
      <description>center 在两边添加填充字符（默认为空格）让字符串居中。 &gt;&gt;&gt; &quot;The Middle by Jimmy Eat World&quot;.center(39) &apos; The Middle by Jimmy Eat World &apos; &gt;&gt;&gt; &quot;The...</description>
      <category>Python/字符串/字符串方法</category>
      <pubDate>Sat, 22 Jun 2024 08:53:12 GMT</pubDate>
    </item>
    <item>
      <title>创建字典： 字面量 &gt;&gt;&gt; d = {&quot;name&quot;: &quot;Alice&quot;, &quot;age...</title>
      <link>/cards/445.html</link>
      <guid isPermaLink="false">card:445</guid>
      <description>创建字典： 字面量 &gt;&gt;&gt; d = {&quot;name&quot;: &quot;Alice&quot;, &quot;age&quot;: 18} &gt;&gt;&gt; d {&apos;name&apos;: &apos;Alice&apos;, &apos;age&apos;: 18} dict 方法，从其他字典进行创建 &gt;&gt;&gt; items = [(&apos;name&apos;...</description>
      <category>Python/字典</category>
      <pubDate>Sun, 23 Jun 2024 14:32:07 GMT</pubDate>
    </item>
    <item>
      <title>clear 删除所有的字典项，原地执行，无返回值 &gt;&gt;&gt; d = {} &gt;&gt;&gt; ...</title>
      <link>/cards/446.html</link>
      <guid isPermaLink="false">card:446</guid>
      <description>clear 删除所有的字典项，原地执行，无返回值 &gt;&gt;&gt; d = {} &gt;&gt;&gt; d[&apos;name&apos;] = &apos;Gumby&apos; &gt;&gt;&gt; d[&apos;age&apos;] = 42 &gt;&gt;&gt; d {&apos;age&apos;: 42, &apos;name&apos;: &apos;Gumby&apos;} &gt;&gt;&gt; ret...</description>
      <category>Python/字典</category>
      <pubDate>Sun, 23 Jun 2024 15:11:49 GMT</pubDate>
    </item>
    <item>
      <title>print 可用于打印一个表达式，这个表达式要么是字符串，要么将自动转换为字符串...</title>
      <link>/cards/447.html</link>
      <guid isPermaLink="false">card:447</guid>
      <description>print 可用于打印一个表达式，这个表达式要么是字符串，要么将自动转换为字符串。 可同时打印多个表达式，是用逗号分隔，参数之间会插入一个空格字符 &gt;&gt;&gt; name = &apos;Gumby&apos; &gt;&gt;&gt; salutation = &apos;Mr.&apos; &gt;&gt;&gt; ...</description>
      <category>Python</category>
      <pubDate>Sun, 23 Jun 2024 15:17:05 GMT</pubDate>
    </item>
    <item>
      <title>解包是指将一个序列（或任何可迭代对象）值存储到一系列变量中。 &gt;&gt;&gt; x, y,...</title>
      <link>/cards/448.html</link>
      <guid isPermaLink="false">card:448</guid>
      <description>解包是指将一个序列（或任何可迭代对象）值存储到一系列变量中。 &gt;&gt;&gt; x, y, z = 1, 2, 3 &gt;&gt;&gt; print(x, y, z) 1 2 3 &gt;&gt;&gt; values = 1, 2, 3 &gt;&gt;&gt; values (1, 2, 3) ...</description>
      <category>Python/解包</category>
      <pubDate>Sun, 23 Jun 2024 15:22:06 GMT</pubDate>
    </item>
    <item>
      <title>序列可以直接通过 + 运算符进行拼接 &gt;&gt;&gt; [1, 2, 3] + [4, 5...</title>
      <link>/cards/433.html</link>
      <guid isPermaLink="false">card:433</guid>
      <description>序列可以直接通过 + 运算符进行拼接 &gt;&gt;&gt; [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] &gt;&gt;&gt; (1, 3, 4) + (2, 7, 8) (1, 3, 4, 2, 7, 8) &gt;&gt;&gt; &quot;Hello ...</description>
      <category>Python/序列/运算</category>
      <pubDate>Sat, 22 Jun 2024 02:43:57 GMT</pubDate>
    </item>
    <item>
      <title>将序列和数字 n 进行相乘，可以将序列重复 n 次 &gt;&gt;&gt; &quot;Hello&quot; * ...</title>
      <link>/cards/434.html</link>
      <guid isPermaLink="false">card:434</guid>
      <description>将序列和数字 n 进行相乘，可以将序列重复 n 次 &gt;&gt;&gt; &quot;Hello&quot; * 5 &apos;HelloHelloHelloHelloHello&apos; &gt;&gt;&gt; [100] * 5 [100, 100, 100, 100, 100] &gt;&gt;&gt; (100, ...</description>
      <category>Python/序列/运算</category>
      <pubDate>Sat, 22 Jun 2024 02:50:03 GMT</pubDate>
    </item>
    <item>
      <title>使用运算符 in 可以判断特定的值是否在序列中 &gt;&gt;&gt; numbers [1, ...</title>
      <link>/cards/435.html</link>
      <guid isPermaLink="false">card:435</guid>
      <description>使用运算符 in 可以判断特定的值是否在序列中 &gt;&gt;&gt; numbers [1, 2, 3, 4, 5, 6, 7, 8, 9] &gt;&gt;&gt; 1 in numbers True &gt;&gt;&gt; 10 in numbers False &gt;&gt;&gt; [1, 2]...</description>
      <category>Python/序列/运算</category>
      <pubDate>Sat, 22 Jun 2024 02:52:33 GMT</pubDate>
    </item>
    <item>
      <title>内置函数 len 可以返回序列中的元素的个数 &gt;&gt;&gt; l = [1, 2, 3,...</title>
      <link>/cards/436.html</link>
      <guid isPermaLink="false">card:436</guid>
      <description>内置函数 len 可以返回序列中的元素的个数 &gt;&gt;&gt; l = [1, 2, 3, 4, 5] &gt;&gt;&gt; len(l) 5 &gt;&gt;&gt; t = (4, 5, 6, 7, 8) &gt;&gt;&gt; len(t) 5 &gt;&gt;&gt; s = &quot;Hello World!&quot; ...</description>
      <category>Python/序列</category>
      <pubDate>Sat, 22 Jun 2024 02:58:01 GMT</pubDate>
    </item>
    <item>
      <title>创建列表 通过字面量直接创建 [] &gt;&gt;&gt; l = [1, 2, 3, 4, 5...</title>
      <link>/cards/437.html</link>
      <guid isPermaLink="false">card:437</guid>
      <description>创建列表 通过字面量直接创建 [] &gt;&gt;&gt; l = [1, 2, 3, 4, 5] &gt;&gt;&gt; l [1, 2, 3, 4, 5] &gt;&gt;&gt; l = [&quot;H&quot;, &quot;i&quot;] &gt;&gt;&gt; l [&apos;H&apos;, &apos;i&apos;] 使用 list 函数将其它序列转化为列表...</description>
      <category>Python/序列/列表</category>
      <pubDate>Sat, 22 Jun 2024 03:04:49 GMT</pubDate>
    </item>
    <item>
      <title>通过切片可以访问序列特定范围内的元素。语法为 [start:end] ，左闭右开...</title>
      <link>/cards/432.html</link>
      <guid isPermaLink="false">card:432</guid>
      <description>通过切片可以访问序列特定范围内的元素。语法为 [start:end] ，左闭右开。 &gt;&gt;&gt; numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] &gt;&gt;&gt; numbers[2:6] [3, 4, 5, 6] &gt;&gt;&gt; nu...</description>
      <category>Python/序列/运算</category>
      <pubDate>Sat, 22 Jun 2024 02:21:45 GMT</pubDate>
    </item>
    <item>
      <title>隐写术是指将一个文件隐藏在另一个文件中，一个最常见的例子就是藏头诗，把信息藏在诗...</title>
      <link>/cards/415.html</link>
      <guid isPermaLink="false">card:415</guid>
      <description>隐写术是指将一个文件隐藏在另一个文件中，一个最常见的例子就是藏头诗，把信息藏在诗的开头，或者诗的其它位置。 在计算机中，可以使用图片来传递隐藏的文件信息。对于一副图片，每个像素有 rgb 三个通道，每个通道使用一个字节表示，如果使用图片 r...</description>
      <category>安全/隐写术</category>
      <category>加密/隐写术</category>
      <pubDate>Sun, 24 Mar 2024 10:11:45 GMT</pubDate>
    </item>
    <item>
      <title>程序的运行有两种状态，内核态和用户态，在内核态下可以执行所有指令，并且具备直接访...</title>
      <link>/cards/417.html</link>
      <guid isPermaLink="false">card:417</guid>
      <description>程序的运行有两种状态，内核态和用户态，在内核态下可以执行所有指令，并且具备直接访问所有硬件资源的能力，在用户态下只能运行部分指令，对于一些特权指令（如访问磁盘）是无法运行的。 应用程序运行在用户态，操作系统运行在内核态，用户态如果想执行一些...</description>
      <category>操作系统</category>
      <pubDate>Sat, 30 Mar 2024 07:37:21 GMT</pubDate>
    </item>
    <item>
      <title>链接是一种共享文件内容的机制，分为两种链接： 硬链接 硬链接是对文件系统中文件的...</title>
      <link>/cards/418.html</link>
      <guid isPermaLink="false">card:418</guid>
      <description>链接是一种共享文件内容的机制，分为两种链接： 硬链接 硬链接是对文件系统中文件的另一个引用或名称 。创建硬链接相当于给文件添加一个新的别名。例如 file2 硬链接到 file1，二者实际指向的是同一个文件，指向的同一数据块。 在文件系统的...</description>
      <category>操作系统/文件系统/链接</category>
      <pubDate>Sun, 31 Mar 2024 01:59:52 GMT</pubDate>
    </item>
    <item>
      <title>PQ4R 学习技巧： 预习（Preview） 了解每章的主要结构和主题，浏览重要...</title>
      <link>/cards/399.html</link>
      <guid isPermaLink="false">card:399</guid>
      <description>PQ4R 学习技巧： 预习（Preview） 了解每章的主要结构和主题，浏览重要标题和图表，能够清楚的知道该章节包含的主要内容 问题（Question） 阅读时进行提问，可以将标题转化为问题，比如章节标题是“心理学的目标”，可以转化为问题，...</description>
      <category>学习方法</category>
      <pubDate>Sat, 13 Jan 2024 14:41:19 GMT</pubDate>
    </item>
    <item>
      <title>一条指令的执行流程可以分解为如下六个部分： 取指 根据 PC 寄存器，从内存中取...</title>
      <link>/cards/406.html</link>
      <guid isPermaLink="false">card:406</guid>
      <description>一条指令的执行流程可以分解为如下六个部分： 取指 根据 PC 寄存器，从内存中取出指令 译码 根据读取到的寄存器编号，从寄存器文件中读取相应寄存器的内容 执行 根据指定功能码，进行计算 访存 从内存中读取数据或者将数据写入到内存中 写回 更...</description>
      <pubDate>Sat, 27 Jan 2024 08:57:48 GMT</pubDate>
    </item>
    <item>
      <title>宇宙的组成： 常规物质：5% 由三种基本粒子组成，上夸克、下夸克和电子 还有一些...</title>
      <link>/cards/408.html</link>
      <guid isPermaLink="false">card:408</guid>
      <description>宇宙的组成： 常规物质：5% 由三种基本粒子组成，上夸克、下夸克和电子 还有一些其它的基本粒子，但是这些粒子并不组成物质，其作用也不得而知 还有五种传递力的粒子 这些基本粒子是否是最小的，不得而知，但是是我们目前发现的最小的粒子，是否只存在...</description>
      <category>科普/宇宙</category>
      <pubDate>Mon, 12 Feb 2024 13:23:59 GMT</pubDate>
    </item>
    <item>
      <title>float 设计的目的是为了实现图文环绕效果，后续布局的用法并不是其设计的目的，...</title>
      <link>/cards/370.html</link>
      <guid isPermaLink="false">card:370</guid>
      <description>float 设计的目的是为了实现图文环绕效果，后续布局的用法并不是其设计的目的，现在我们也很少用到 float 进行布局。 为实现图文环绕效果， float 有以下特点： 会使得父元素高度塌陷（不会撑起父元素的高度），这可以使得文字与浮动内...</description>
      <category>CSS/浮动</category>
      <pubDate>Fri, 27 Oct 2023 15:09:30 GMT</pubDate>
    </item>
    <item>
      <title>学习最终的目的是打造自己的知识体系。 然而现在的现状是学习内容没有形成有效的知识...</title>
      <link>/cards/371.html</link>
      <guid isPermaLink="false">card:371</guid>
      <description>学习最终的目的是打造自己的知识体系。 然而现在的现状是学习内容没有形成有效的知识体系，是各个零零散散的知识点。主要原因是学习没有目标，没有审视已有的知识体系，根据已有的知识体系进行查漏补缺有目的性的学习，而是碰到什么就学习什么，比如看到一篇...</description>
      <category>思考/学习方法</category>
      <pubDate>Sun, 29 Oct 2023 03:41:17 GMT</pubDate>
    </item>
    <item>
      <title>clear 属性可以清除 浮动 ，它规定了元素是否可以与浮动元素相邻，有如下取值...</title>
      <link>/cards/374.html</link>
      <guid isPermaLink="false">card:374</guid>
      <description>clear 属性可以清除 浮动 ，它规定了元素是否可以与浮动元素相邻，有如下取值： none left ：元素的左侧不可以和 前面的浮动元素 相邻 right ：同上，右侧 both ：两侧都不可以与前面的浮动元素相邻 clear 属性只对...</description>
      <category>CSS/浮动</category>
      <pubDate>Thu, 09 Nov 2023 04:35:46 GMT</pubDate>
    </item>
    <item>
      <title>overflow 的相关特性： 设置了 overflow: hidden 的元素...</title>
      <link>/cards/375.html</link>
      <guid isPermaLink="false">card:375</guid>
      <description>overflow 的相关特性： 设置了 overflow: hidden 的元素，当内容超出范围时，裁剪的边界是 border-box 的内边缘，如果想实现裁剪的同时有间隙的效果，可以使用透明边框 如果 overflow-x 和 overf...</description>
      <category>CSS/overflow</category>
      <pubDate>Sat, 11 Nov 2023 02:49:38 GMT</pubDate>
    </item>
    <item>
      <title>CSS 全局属性值： inherit ：继承父元素的属性值 initial ：恢...</title>
      <link>/cards/381.html</link>
      <guid isPermaLink="false">card:381</guid>
      <description>CSS 全局属性值： inherit ：继承父元素的属性值 initial ：恢复为该属性的默认值 这里需要注意的是恢复为该 属性的默认值 ，而 不是 该元素的默认值。 比如对于 p 标签，其 display 的默认值是 block ，但是...</description>
      <category>CSS</category>
      <pubDate>Tue, 21 Nov 2023 14:07:00 GMT</pubDate>
    </item>
    <item>
      <title>inline-block 的 baseline 在哪里？ 分两种情况 没有内联元...</title>
      <link>/cards/314.html</link>
      <guid isPermaLink="false">card:314</guid>
      <description>inline-block 的 baseline 在哪里？ 分两种情况 没有内联元素，或者 overflow 属性不是 visible ，那么 baseline 是 margin-box 的下边缘 除上之外， baseline 是最后一个内联...</description>
      <category>CSS/基线</category>
      <pubDate>Sat, 16 Sep 2023 05:16:44 GMT</pubDate>
    </item>
    <item>
      <title>CSS 属性取值句法介绍，如下是典型案例。 &lt;family-name&gt;# &lt;ur...</title>
      <link>/cards/315.html</link>
      <guid isPermaLink="false">card:315</guid>
      <description>CSS 属性取值句法介绍，如下是典型案例。 &lt;family-name&gt;# &lt;url&gt; || &lt;color&gt; &lt;url&gt;? &lt;color&gt; [/ &lt;color&gt;]? 使用 &lt;&gt; 包括起来字符表示值的类型，例如 &lt;color&gt; ，除了可以是值的...</description>
      <category>CSS/句法</category>
      <pubDate>Sun, 17 Sep 2023 08:57:25 GMT</pubDate>
    </item>
    <item>
      <title>可以针对不同的媒体类型应用不同的样式，由四种方法可以进行媒体查询： link s...</title>
      <link>/cards/317.html</link>
      <guid isPermaLink="false">card:317</guid>
      <description>可以针对不同的媒体类型应用不同的样式，由四种方法可以进行媒体查询： link style @import @media 下面是一些示例 &lt;link type=&quot;text/css&quot; href=&quot;screen.css&quot; media=&quot;scree...</description>
      <category>CSS/媒体查询</category>
      <pubDate>Mon, 18 Sep 2023 01:45:29 GMT</pubDate>
    </item>
    <item>
      <title>如何在 esbuild 项目中使用 CSS Module。 下载插件 esbui...</title>
      <link>/cards/318.html</link>
      <guid isPermaLink="false">card:318</guid>
      <description>如何在 esbuild 项目中使用 CSS Module。 下载插件 esbuild-css-modules-plugin npm i -D esbuild-css-modules-plugin 配置插件 import esbuild fr...</description>
      <category>CSS/CSS Module</category>
      <category>JavaScript/esbuild</category>
      <pubDate>Sat, 23 Sep 2023 08:43:18 GMT</pubDate>
    </item>
    <item>
      <title>如何比较两个值是否相同，最简单的办法直接通过 === 进行判断 const is...</title>
      <link>/cards/319.html</link>
      <guid isPermaLink="false">card:319</guid>
      <description>如何比较两个值是否相同，最简单的办法直接通过 === 进行判断 const isSame = (x, y) =&gt; { return x === y; } 但是存在两种特殊情况： +0 与 -0 不同，但是 +0 === -0 返回的是 tr...</description>
      <category>JavaScript</category>
      <pubDate>Fri, 29 Sep 2023 12:46:08 GMT</pubDate>
    </item>
    <item>
      <title>在执行多个 Promise 时，我们一般是使用 Promise.all 来同时并...</title>
      <link>/cards/338.html</link>
      <guid isPermaLink="false">card:338</guid>
      <description>在执行多个 Promise 时，我们一般是使用 Promise.all 来同时并发执行多个 Promise ，但是在资源有限的情况下，我们需要控制同时执行的 Promise 的数量，可以通过 p-limit 这个库来做到这一点。 安装： n...</description>
      <category>JavaScript/三方库/p-limit</category>
      <pubDate>Sun, 08 Oct 2023 08:35:08 GMT</pubDate>
    </item>
    <item>
      <title>函数柯里化指的是函数处理一部分的参数，然后返回一个函数来处理剩余的参数，比如有一...</title>
      <link>/cards/356.html</link>
      <guid isPermaLink="false">card:356</guid>
      <description>函数柯里化指的是函数处理一部分的参数，然后返回一个函数来处理剩余的参数，比如有一个加法函数如下 function add(x, y) { return x + y; } add(1, 2); // 3 如果这个函数被柯里化，那么可以如下使用...</description>
      <category>JavaScript</category>
      <pubDate>Fri, 13 Oct 2023 00:31:20 GMT</pubDate>
    </item>
    <item>
      <title>柯里化 有什么用处，假设有一个 ajax 请求的函数如下 function aj...</title>
      <link>/cards/357.html</link>
      <guid isPermaLink="false">card:357</guid>
      <description>柯里化 有什么用处，假设有一个 ajax 请求的函数如下 function ajax(type, url, data) { let xhr = new XMLHttpRequest(); xhr.onReadystateChange = f...</description>
      <category>JavaScript</category>
      <pubDate>Fri, 13 Oct 2023 00:33:42 GMT</pubDate>
    </item>
    <item>
      <title>Prettier 是一个内置代码风格的 linter 工具，它开箱即用，用户基本...</title>
      <link>/cards/359.html</link>
      <guid isPermaLink="false">card:359</guid>
      <description>Prettier 是一个内置代码风格的 linter 工具，它开箱即用，用户基本不需要任何配置就可以接入，但也带来了一个问题，由于代码风格是内置的，且不能修改，如果某些规则不满意的话的话却无法自定义。 还有一个比较流行的代码风格检查工具是 ...</description>
      <category>JavaScript</category>
      <pubDate>Sun, 15 Oct 2023 10:18:22 GMT</pubDate>
    </item>
    <item>
      <title>对各种 width 的总结，首先对各个 width 做一个概念的介绍，然后通过实...</title>
      <link>/cards/360.html</link>
      <guid isPermaLink="false">card:360</guid>
      <description>对各种 width 的总结，首先对各个 width 做一个概念的介绍，然后通过实例进行深入的感受： offsetWidth 元素的内容宽度，包含 padding 和 border ，如果存在滚动条的话，也包含滚动条的宽度。 如果元素横向发生...</description>
      <category>DOM</category>
      <pubDate>Sun, 15 Oct 2023 13:14:42 GMT</pubDate>
    </item>
    <item>
      <title>Promise 的原型上存在一个 finally 的方法，该方法接收一个函数 o...</title>
      <link>/cards/294.html</link>
      <guid isPermaLink="false">card:294</guid>
      <description>Promise 的原型上存在一个 finally 的方法，该方法接收一个函数 onFinally 作为参数，当 Promise 实例的状态变为 resolved 或 rejected 时，便会执行 onFinally 函数，该函数不接收任何...</description>
      <category>JavaScript/Promise</category>
      <pubDate>Wed, 16 Aug 2023 14:42:00 GMT</pubDate>
    </item>
    <item>
      <title>Promise.all 接收一个 Promise 对象组成的数组，返回一个 Pr...</title>
      <link>/cards/296.html</link>
      <guid isPermaLink="false">card:296</guid>
      <description>Promise.all 接收一个 Promise 对象组成的数组，返回一个 Promise ，只有当数组中的所有 Promise 都 resolved 后，返回的 Promise 才会变为 resolved 状态，并且将所有 Promise...</description>
      <category>JavaScript/Promise</category>
      <pubDate>Wed, 16 Aug 2023 14:59:51 GMT</pubDate>
    </item>
    <item>
      <title>Promise.race 方法接收一个 Promise 组成的数组，返回一个 P...</title>
      <link>/cards/298.html</link>
      <guid isPermaLink="false">card:298</guid>
      <description>Promise.race 方法接收一个 Promise 组成的数组，返回一个 Promise ，当数组中有任一 Promise 的状态变为 resolved 或者 rejected ，返回的 Promise 就会相应的变为 resolved...</description>
      <category>JavaScript/Promise</category>
      <pubDate>Wed, 16 Aug 2023 15:03:23 GMT</pubDate>
    </item>
    <item>
      <title>Ajax 如何取消网络请求。 XMLHttpRequest 实例上存在一个 ab...</title>
      <link>/cards/300.html</link>
      <guid isPermaLink="false">card:300</guid>
      <description>Ajax 如何取消网络请求。 XMLHttpRequest 实例上存在一个 abort 方法 const xhr = new XMLHttpRequest(); xhr.open(&apos;GET&apos;, url, true); xhr.send();...</description>
      <category>JavaScript</category>
      <pubDate>Thu, 24 Aug 2023 14:17:32 GMT</pubDate>
    </item>
    <item>
      <title>axios 如何取消网络请求。 通过 CancelToken 来取消请求，但该种...</title>
      <link>/cards/301.html</link>
      <guid isPermaLink="false">card:301</guid>
      <description>axios 如何取消网络请求。 通过 CancelToken 来取消请求，但该种方式已经被官方标记为废弃 const source = axios.CancelToken.source(); axios.get(url, { cancelT...</description>
      <category>JavaScript/网络/axios</category>
      <pubDate>Thu, 24 Aug 2023 14:29:52 GMT</pubDate>
    </item>
    <item>
      <title>prettier 是一个代码格式化工具，它的目的是让人们不在为代码风格而进行争辩...</title>
      <link>/cards/305.html</link>
      <guid isPermaLink="false">card:305</guid>
      <description>prettier 是一个代码格式化工具，它的目的是让人们不在为代码风格而进行争辩，因此它提供了很少的选项去配置代码风格（否则人们又会为代码风格进行争论，离它的目标不符）。 安装 npm install prettier --save-dev...</description>
      <category>JavaScript</category>
      <pubDate>Mon, 28 Aug 2023 12:32:12 GMT</pubDate>
    </item>
    <item>
      <title>margin 合并的规则： 正正取最大，如果两个合并的 margin 都是正数，...</title>
      <link>/cards/312.html</link>
      <guid isPermaLink="false">card:312</guid>
      <description>margin 合并的规则： 正正取最大，如果两个合并的 margin 都是正数，最终合并的结果为其中较大的那个 正负相加，如果两个合并的 margin 一个为正，一个为负，那么最终合并的值是两个 margin 值的相加 负负取最小，如果两个...</description>
      <category>CSS/margin</category>
      <pubDate>Sun, 10 Sep 2023 10:29:40 GMT</pubDate>
    </item>
    <item>
      <title>父子元素之间 margin 合并有时会出现不期望的结果，但是存在一些办法可以避免...</title>
      <link>/cards/313.html</link>
      <guid isPermaLink="false">card:313</guid>
      <description>父子元素之间 margin 合并有时会出现不期望的结果，但是存在一些办法可以避免这种合并。 对于 margin-top 的合并，满足如下其中一个条件可禁止合并 父元素设置块格式化上下文 父元素设置 border-top 父元素设置 padd...</description>
      <category>CSS/margin</category>
      <pubDate>Sun, 10 Sep 2023 10:32:37 GMT</pubDate>
    </item>
    <item>
      <title>可以在类中定义访问器属性 class Person { constructor(...</title>
      <link>/cards/277.html</link>
      <guid isPermaLink="false">card:277</guid>
      <description>可以在类中定义访问器属性 class Person { constructor(name) { this._name = name; } set name(value) { if (typeof value === &quot;string&quot;) { ...</description>
      <category>JavaScript/类</category>
      <pubDate>Tue, 15 Aug 2023 15:00:39 GMT</pubDate>
    </item>
    <item>
      <title>类中的方法可以是一个生成器 class Person { *generateNa...</title>
      <link>/cards/279.html</link>
      <guid isPermaLink="false">card:279</guid>
      <description>类中的方法可以是一个生成器 class Person { *generateNames() { yield &quot;Amy&quot;; yield &quot;Bob&quot;; yield &quot;Candy&quot;; } } let person = new Person(); ...</description>
      <category>JavaScript/类</category>
      <pubDate>Tue, 15 Aug 2023 15:04:38 GMT</pubDate>
    </item>
    <item>
      <title>只可以通过类名访问的方法称为静态方法，在 class 定义的类中，通过在方法名前...</title>
      <link>/cards/280.html</link>
      <guid isPermaLink="false">card:280</guid>
      <description>只可以通过类名访问的方法称为静态方法，在 class 定义的类中，通过在方法名前加 static 关键字表示该方法是静态方法 class Person { constructor(name) { this.name = name; } st...</description>
      <category>JavaScript/类</category>
      <pubDate>Tue, 15 Aug 2023 15:08:12 GMT</pubDate>
    </item>
    <item>
      <title>then 方法返回的 Promise 的状态是什么。分为两种情况： 该实例是 r...</title>
      <link>/cards/286.html</link>
      <guid isPermaLink="false">card:286</guid>
      <description>then 方法返回的 Promise 的状态是什么。分为两种情况： 该实例是 resolved 的 传入了第一个函数 返回值是 Promise ：返回的 Promise 是什么态，返回的就是什么态，可以认为返回的就是该 Promise 返回...</description>
      <category>JavaScript/Promise</category>
      <pubDate>Wed, 16 Aug 2023 13:10:25 GMT</pubDate>
    </item>
    <item>
      <title>document.importNode 可以从另一个 document 中复制一...</title>
      <link>/cards/287.html</link>
      <guid isPermaLink="false">card:287</guid>
      <description>document.importNode 可以从另一个 document 中复制一个 Node 或者 DocumentFragment ，被复制的 Node 尚未在 DOM 树中，需要手动插入。 语法如下： document.importNo...</description>
      <category>DOM/importNode</category>
      <pubDate>Wed, 16 Aug 2023 13:12:32 GMT</pubDate>
    </item>
    <item>
      <title>fetch 如何取消网络请求。 fetch 请求数据接受一个 signal 的选...</title>
      <link>/cards/288.html</link>
      <guid isPermaLink="false">card:288</guid>
      <description>fetch 如何取消网络请求。 fetch 请求数据接受一个 signal 的选项，该选项的值是一个 AbortSignal 实例，该实例可以通过 AbortController 实例得到 const controller = new Ab...</description>
      <category>JavaScript</category>
      <pubDate>Wed, 16 Aug 2023 13:12:57 GMT</pubDate>
    </item>
    <item>
      <title>preload 可以提升资源加载的优先级，标记为 preload 的资源被认为是...</title>
      <link>/cards/290.html</link>
      <guid isPermaLink="false">card:290</guid>
      <description>preload 可以提升资源加载的优先级，标记为 preload 的资源被认为是重要资源，浏览器会将其优先级提高，从而实现提前加载，以提升用户体验，但是因为他只是将资源的优先级进行了调整，并不是使资源的加载速度变快，因此对页面的整体性能没有...</description>
      <category>浏览器/性能优化</category>
      <pubDate>Wed, 16 Aug 2023 13:13:25 GMT</pubDate>
    </item>
    <item>
      <title>ES6 中通过 u 标志为正则表达式提供了对 Unicode 的支持。不支持 U...</title>
      <link>/cards/259.html</link>
      <guid isPermaLink="false">card:259</guid>
      <description>ES6 中通过 u 标志为正则表达式提供了对 Unicode 的支持。不支持 Unicode 的例子： // 🤣 UTF-16 -&gt; 0xd83e 0xdd23 const str = &quot;🤣&quot;; // 1. 匹配任意一个字符 const...</description>
      <category>JavaScript</category>
      <pubDate>Sat, 05 Aug 2023 11:25:00 GMT</pubDate>
    </item>
    <item>
      <title>可以通过 includes 方法来判断字符串是否包含某个字串 const str...</title>
      <link>/cards/260.html</link>
      <guid isPermaLink="false">card:260</guid>
      <description>可以通过 includes 方法来判断字符串是否包含某个字串 const str = &quot;Hello World!&quot;; console.log(str.includes(&quot;Hello&quot;)); // true console.log(str.i...</description>
      <category>JavaScript</category>
      <pubDate>Sat, 05 Aug 2023 15:47:55 GMT</pubDate>
    </item>
    <item>
      <title>repeat 方法接收一个数字参数 n ，它的作用是将字符串复制 n 遍然后返回...</title>
      <link>/cards/262.html</link>
      <guid isPermaLink="false">card:262</guid>
      <description>repeat 方法接收一个数字参数 n ，它的作用是将字符串复制 n 遍然后返回 console.log(&quot;hello &quot;.repeat(3)); // &quot;hello hello hello &quot;</description>
      <category>JavaScript</category>
      <pubDate>Fri, 11 Aug 2023 01:28:00 GMT</pubDate>
    </item>
    <item>
      <title>ES6 为正则表达式增加了一个 y 标签，该标签表示从 lastIndex 处精...</title>
      <link>/cards/263.html</link>
      <guid isPermaLink="false">card:263</guid>
      <description>ES6 为正则表达式增加了一个 y 标签，该标签表示从 lastIndex 处精确匹配 // 没有使用修饰符 let pattern = /hello\d\s?/; // 使用了 g 修饰符 let globalPattern = /hel...</description>
      <category>JavaScript</category>
      <pubDate>Fri, 11 Aug 2023 01:31:32 GMT</pubDate>
    </item>
    <item>
      <title>在 ES5 中可以通过 RegExp 构造函数进行正则表达式的复制 const ...</title>
      <link>/cards/264.html</link>
      <guid isPermaLink="false">card:264</guid>
      <description>在 ES5 中可以通过 RegExp 构造函数进行正则表达式的复制 const re1 = /a\db/i, re2 = new RegExp(re1); 如果为构造函数的第二个参数指定了修饰符，在 ES5 中会报错，而在 ES6 中是可以...</description>
      <category>JavaScript</category>
      <pubDate>Fri, 11 Aug 2023 01:33:47 GMT</pubDate>
    </item>
    <item>
      <title>在 ES5 中想获得正则对象包含哪些修饰符，一般通过解析 toString 得到...</title>
      <link>/cards/265.html</link>
      <guid isPermaLink="false">card:265</guid>
      <description>在 ES5 中想获得正则对象包含哪些修饰符，一般通过解析 toString 得到的字符串 const getFlags = function (re) { const str = re.toString(); return str.subs...</description>
      <category>JavaScript</category>
      <pubDate>Fri, 11 Aug 2023 01:35:20 GMT</pubDate>
    </item>
    <item>
      <title>在 ES6 引入了模板字符串，除了通过 &apos;&apos; 和 &quot;&quot; 来声明字符串字面值，还可...</title>
      <link>/cards/266.html</link>
      <guid isPermaLink="false">card:266</guid>
      <description>在 ES6 引入了模板字符串，除了通过 &apos;&apos; 和 &quot;&quot; 来声明字符串字面值，还可以通过 `` 来声明字符串字面值： const str = `Hello World!`; console.log(str); // Hello World! ...</description>
      <category>JavaScript/模板字符串</category>
      <pubDate>Fri, 11 Aug 2023 05:19:56 GMT</pubDate>
    </item>
    <item>
      <title>使用解构语法从对象中提取属性 const user = { name: &apos;Ali...</title>
      <link>/cards/267.html</link>
      <guid isPermaLink="false">card:267</guid>
      <description>使用解构语法从对象中提取属性 const user = { name: &apos;Alice&apos;, age: 18, score: { math: 88, chinese: 70 } } const { name, age } = user; con...</description>
      <category>JavaScript</category>
      <pubDate>Sat, 12 Aug 2023 06:02:52 GMT</pubDate>
    </item>
    <item>
      <title>除了通过下标访问数组中的元素，还可以通过解构语法 const arr = [&apos;A...</title>
      <link>/cards/268.html</link>
      <guid isPermaLink="false">card:268</guid>
      <description>除了通过下标访问数组中的元素，还可以通过解构语法 const arr = [&apos;Alice&apos;, 18]; const [name, age] = arr; console.log(name, age); // Alice 18 如果想忽略某个...</description>
      <category>JavaScript</category>
      <pubDate>Mon, 14 Aug 2023 04:49:32 GMT</pubDate>
    </item>
    <item>
      <title>计算属性指的是可以使用变量的值作为对象的属性名，最常见的就是使用 Symbol ...</title>
      <link>/cards/270.html</link>
      <guid isPermaLink="false">card:270</guid>
      <description>计算属性指的是可以使用变量的值作为对象的属性名，最常见的就是使用 Symbol 值作为属性名 const x = Symbol(); const user = { // 使用 [] 将变量包裹，变量的值将作为该属性名 [x]: 1 } co...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 15 Aug 2023 14:21:45 GMT</pubDate>
    </item>
    <item>
      <title>在比较两个值时，一般会使用 == 或者更加严格的 === ，更多的人乐意使用 =...</title>
      <link>/cards/271.html</link>
      <guid isPermaLink="false">card:271</guid>
      <description>在比较两个值时，一般会使用 == 或者更加严格的 === ，更多的人乐意使用 === ，但是即使是 === 也会不准确，例如 console.log(+0 === -0); // true console.log(NaN === NaN);...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 15 Aug 2023 14:31:18 GMT</pubDate>
    </item>
    <item>
      <title>在实际的工作中，需要将其他对象的属性复制到另一个对象中，这个操作常称之为 mix...</title>
      <link>/cards/272.html</link>
      <guid isPermaLink="false">card:272</guid>
      <description>在实际的工作中，需要将其他对象的属性复制到另一个对象中，这个操作常称之为 mixin function mixin(receiver, supplier) { Object.keys(supplier).forEach(function (...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 15 Aug 2023 14:37:40 GMT</pubDate>
    </item>
    <item>
      <title>几个与原型相关的方法。 在创建对象时，可以通过 Object.create 为对...</title>
      <link>/cards/274.html</link>
      <guid isPermaLink="false">card:274</guid>
      <description>几个与原型相关的方法。 在创建对象时，可以通过 Object.create 为对象指定一个原型 const person = { sayHello() { console.log(&quot;Hello&quot;); }, }; const friend =...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 15 Aug 2023 14:46:45 GMT</pubDate>
    </item>
    <item>
      <title>如果重写了原型中的方法，如何访问原型中的方法。 在 ES5 中，通过 Objec...</title>
      <link>/cards/275.html</link>
      <guid isPermaLink="false">card:275</guid>
      <description>如果重写了原型中的方法，如何访问原型中的方法。 在 ES5 中，通过 Object.getPrototypeOf(this).[method].call(this) 来访问原型 const person = { sayHello() { r...</description>
      <category>JavaScript/类</category>
      <pubDate>Tue, 15 Aug 2023 14:51:10 GMT</pubDate>
    </item>
    <item>
      <title>在实际中我们经常需要将对象转化为原始类型，例如对一个对象做加法，那么就会触发将对...</title>
      <link>/cards/255.html</link>
      <guid isPermaLink="false">card:255</guid>
      <description>在实际中我们经常需要将对象转化为原始类型，例如对一个对象做加法，那么就会触发将对象转化为原始类型的步骤。根据对象需要转化为数字还是字符串，有两种不同的行为。如果需要转化为数字，遵循以下步骤： 调用对象的 valueOf 方法，如果返回的是原...</description>
      <category>JavaScript/Symbol</category>
      <pubDate>Wed, 02 Aug 2023 14:39:19 GMT</pubDate>
    </item>
    <item>
      <title>当我们调用自己创建的对象的 toString 方法时，得到的是 [object ...</title>
      <link>/cards/256.html</link>
      <guid isPermaLink="false">card:256</guid>
      <description>当我们调用自己创建的对象的 toString 方法时，得到的是 [object Object] let Person = { name: &quot;Alice&quot;, }; console.log(Person.toString()); // [obj...</description>
      <category>JavaScript/Symbol</category>
      <pubDate>Wed, 02 Aug 2023 14:40:46 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 使用 UCS-2 来进行编码字符串，UCS-2 使用两个字...</title>
      <link>/cards/257.html</link>
      <guid isPermaLink="false">card:257</guid>
      <description>JavaScript 使用 UCS-2 来进行编码字符串，UCS-2 使用两个字节来表示 Unicode 字符，但是 Unicode 字符集中的字符数已经超过了两个字节能表示的范围，因此对于超出范围以外的字符无法识别。JavaScript ...</description>
      <category>JavaScript</category>
      <pubDate>Thu, 03 Aug 2023 13:36:57 GMT</pubDate>
    </item>
    <item>
      <title>一个字符的表示可能有多种表示方式，例如对于字符 ñ 既可以使用一个码点表示 \u...</title>
      <link>/cards/258.html</link>
      <guid isPermaLink="false">card:258</guid>
      <description>一个字符的表示可能有多种表示方式，例如对于字符 ñ 既可以使用一个码点表示 \u00F1 ，也可以使用两个码点表示 \u006E\u0303 const string1 = &quot;\u00F1&quot;; const string2 = &quot;\u006E...</description>
      <category>JavaScript</category>
      <pubDate>Thu, 03 Aug 2023 14:17:53 GMT</pubDate>
    </item>
    <item>
      <title>Set 集合提供 forEach 的 API 让我们来遍历 Set 集合， fo...</title>
      <link>/cards/243.html</link>
      <guid isPermaLink="false">card:243</guid>
      <description>Set 集合提供 forEach 的 API 让我们来遍历 Set 集合， forEach 接收一个回调函数，该回调函数接收三个参数： 集合中的元素 键值，因为 Set 集合没有键，因此该值与第一个参数的值相同 set 集合本身 let s...</description>
      <category>JavaScript/Set</category>
      <pubDate>Wed, 02 Aug 2023 13:47:04 GMT</pubDate>
    </item>
    <item>
      <title>Set 的构造方法可以接收一个数组作为参数，它会将数组中的元素添加进 Set 集...</title>
      <link>/cards/244.html</link>
      <guid isPermaLink="false">card:244</guid>
      <description>Set 的构造方法可以接收一个数组作为参数，它会将数组中的元素添加进 Set 集合中，但是不会添加重复的元素 let set = new Set([1, 3, 2, 3, 4]); set.forEach((value, _, ownerS...</description>
      <category>JavaScript/Set</category>
      <pubDate>Wed, 02 Aug 2023 13:50:35 GMT</pubDate>
    </item>
    <item>
      <title>Set 可以看做是 StrongSet ，所谓的 Strong 指的是集合中的元...</title>
      <link>/cards/245.html</link>
      <guid isPermaLink="false">card:245</guid>
      <description>Set 可以看做是 StrongSet ，所谓的 Strong 指的是集合中的元素保持对对象的引用，例如 let set = new Set(); let key = { name: &quot;Alice&quot;, }; set.add(key); ke...</description>
      <category>JavaScript</category>
      <pubDate>Wed, 02 Aug 2023 13:54:43 GMT</pubDate>
    </item>
    <item>
      <title>同 Set 一样， Map 集合也提供了一个 forEach 方法用来遍历 Ma...</title>
      <link>/cards/247.html</link>
      <guid isPermaLink="false">card:247</guid>
      <description>同 Set 一样， Map 集合也提供了一个 forEach 方法用来遍历 Map 集合，该方法也接受一个回调函数，回调函数接受三个参数 value key map 集合本身 let map = new Map([ [&quot;name&quot;, &quot;Al...</description>
      <category>JavaScript/Map</category>
      <pubDate>Wed, 02 Aug 2023 14:00:10 GMT</pubDate>
    </item>
    <item>
      <title>WeakMap 的提出与 WeakSet 相似，都是为了解决垃圾回收问题 con...</title>
      <link>/cards/248.html</link>
      <guid isPermaLink="false">card:248</guid>
      <description>WeakMap 的提出与 WeakSet 相似，都是为了解决垃圾回收问题 const map = new WeakMap(); const key1 = {}, key2 = {}; map.set(key1, &quot;Alice&quot;); map....</description>
      <category>JavaScript</category>
      <pubDate>Wed, 02 Aug 2023 14:07:33 GMT</pubDate>
    </item>
    <item>
      <title>Symbol 变量可以作为对象的属性，但是当我们通过 for...in 以及 g...</title>
      <link>/cards/251.html</link>
      <guid isPermaLink="false">card:251</guid>
      <description>Symbol 变量可以作为对象的属性，但是当我们通过 for...in 以及 getOwnPropertyNames 都不能获得 Symbol 属性 let age = Symbol(&quot;age&quot;); let person = { name:...</description>
      <category>JavaScript/Symbol</category>
      <pubDate>Wed, 02 Aug 2023 14:21:43 GMT</pubDate>
    </item>
    <item>
      <title>数组的 concat 方法的作用是将两个数组拼接起来，然后返回一个新的数组 le...</title>
      <link>/cards/253.html</link>
      <guid isPermaLink="false">card:253</guid>
      <description>数组的 concat 方法的作用是将两个数组拼接起来，然后返回一个新的数组 let colors1 = [&quot;red&quot;, &quot;green&quot;]; let colors2 = colors1.concat([&quot;white&quot;, &quot;blue&quot;]); c...</description>
      <category>JavaScript/Symbol</category>
      <pubDate>Wed, 02 Aug 2023 14:31:43 GMT</pubDate>
    </item>
    <item>
      <title>字符串有几个接受正则表达式的方法： match(regex) replace(r...</title>
      <link>/cards/254.html</link>
      <guid isPermaLink="false">card:254</guid>
      <description>字符串有几个接受正则表达式的方法： match(regex) replace(regex, replacement) search(regex) split(regex) 现在 ES6 允许使用对象来代替上面的正则表达式(regex)，从而...</description>
      <category>JavaScript</category>
      <pubDate>Wed, 02 Aug 2023 14:35:49 GMT</pubDate>
    </item>
    <item>
      <title>我们可以使用 ... 对集合进行展开 const arr = [1, 2, 3,...</title>
      <link>/cards/227.html</link>
      <guid isPermaLink="false">card:227</guid>
      <description>我们可以使用 ... 对集合进行展开 const arr = [1, 2, 3, 4, 5]; const set = new Set([1, 2, 3, 4, 5]); const map = new Map([[&apos;a&apos;, 1], [&apos;b...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 01 Aug 2023 14:26:48 GMT</pubDate>
    </item>
    <item>
      <title>可以通过下标去访问字符串中的字符，所以我们可以通过下面的方式遍历字符串 cons...</title>
      <link>/cards/228.html</link>
      <guid isPermaLink="false">card:228</guid>
      <description>可以通过下标去访问字符串中的字符，所以我们可以通过下面的方式遍历字符串 const str = &quot;Hi 𠮷&quot;; for (let i = 0; i &lt; str.length; i++) { console.log(str[i]); } 但...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 01 Aug 2023 14:33:08 GMT</pubDate>
    </item>
    <item>
      <title>每一个函数中都会有一个 arguments 对象，其中保存的是传入的参数值。 a...</title>
      <link>/cards/229.html</link>
      <guid isPermaLink="false">card:229</guid>
      <description>每一个函数中都会有一个 arguments 对象，其中保存的是传入的参数值。 arguments 对象在严格和非严格模式下的行为是不同的。 在非严格模式下， arguments 会受到命名参数的影响，即在函数内对命名参数进行修改，也会相应的...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 01 Aug 2023 14:37:07 GMT</pubDate>
    </item>
    <item>
      <title>在一些场景中，我们定义一个函数，函数的某些参数是可选的，如果用户调用时未传递时，...</title>
      <link>/cards/230.html</link>
      <guid isPermaLink="false">card:230</guid>
      <description>在一些场景中，我们定义一个函数，函数的某些参数是可选的，如果用户调用时未传递时，我们希望该参数有一个默认值，这个参数我们成为默认参数。在 ES5 之前，对于默认参数我们是这么处理 // timeout 和 callback 是默认参数 fu...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 01 Aug 2023 14:41:43 GMT</pubDate>
    </item>
    <item>
      <title>当我们调用函数时，传入的参数个数可以与定义函数时要求的函数个数不同，可多可少。所...</title>
      <link>/cards/231.html</link>
      <guid isPermaLink="false">card:231</guid>
      <description>当我们调用函数时，传入的参数个数可以与定义函数时要求的函数个数不同，可多可少。所以传入的参数都会保存在 arguments 对象中，无论是在函数签名中已经定义了的参数(命名参数)还是未定义的参数(匿名参数) function print(a...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 01 Aug 2023 14:45:09 GMT</pubDate>
    </item>
    <item>
      <title>Function 构造函数一般是用来生成函数实例的，但是我们很少用到它来声明一个...</title>
      <link>/cards/232.html</link>
      <guid isPermaLink="false">card:232</guid>
      <description>Function 构造函数一般是用来生成函数实例的，但是我们很少用到它来声明一个函数 let add = new Function(&quot;first&quot;, &quot;second&quot;, &quot;return first + second&quot;); console.l...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 01 Aug 2023 14:51:15 GMT</pubDate>
    </item>
    <item>
      <title>ES6 为所有的函数都添加了一个 name 属性，因为 有多种方式创建函数，识别...</title>
      <link>/cards/234.html</link>
      <guid isPermaLink="false">card:234</guid>
      <description>ES6 为所有的函数都添加了一个 name 属性，因为 有多种方式创建函数，识别一个函数很难 匿名函数的盛行，使得调试十分困难，无法跟踪堆栈信息 function doSomething() { // empty } const doOth...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 01 Aug 2023 14:59:24 GMT</pubDate>
    </item>
    <item>
      <title>函数可以通过 new 调用，也可以不通过 new 调用。JavaScript 的...</title>
      <link>/cards/235.html</link>
      <guid isPermaLink="false">card:235</guid>
      <description>函数可以通过 new 调用，也可以不通过 new 调用。JavaScript 的函数含有两个内部可见的方法， [[Call]] 和 [[Construct]] 。 当一个函数通过 new 调用时， [[Construct]] 方法就会被调用...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 01 Aug 2023 15:04:57 GMT</pubDate>
    </item>
    <item>
      <title>什么叫尾调用？尾调用指的是函数的最后一条语句是调用一个函数，例如 functio...</title>
      <link>/cards/241.html</link>
      <guid isPermaLink="false">card:241</guid>
      <description>什么叫尾调用？尾调用指的是函数的最后一条语句是调用一个函数，例如 function doSomething() { return doSomethingElse(); } 我们知道每次调用函数时，都会创建一个栈帧放置到函数栈中，当函数调用较...</description>
      <category>JavaScript</category>
      <pubDate>Tue, 01 Aug 2023 15:28:01 GMT</pubDate>
    </item>
    <item>
      <title>Set 集合是一个有序的、没有重复元素的集合。通过 new Set() 得到一个...</title>
      <link>/cards/242.html</link>
      <guid isPermaLink="false">card:242</guid>
      <description>Set 集合是一个有序的、没有重复元素的集合。通过 new Set() 得到一个 Set 对象， Set 集合提供如下 API add(item) ：向集合中添加元素 item has(item) ：判断集合中是否有 item 元素 del...</description>
      <category>JavaScript/Set</category>
      <pubDate>Wed, 02 Aug 2023 13:41:46 GMT</pubDate>
    </item>
    <item>
      <title>HTMLElement 对象提供了一系列方法来操作 attribute ，包括：...</title>
      <link>/cards/211.html</link>
      <guid isPermaLink="false">card:211</guid>
      <description>HTMLElement 对象提供了一系列方法来操作 attribute ，包括： getAttribute ：来获得节点的 attribute setAttribute ：设置节点的 attribute ，如果设置的 attribute 已...</description>
      <category>DOM</category>
      <pubDate>Sun, 30 Jul 2023 06:31:52 GMT</pubDate>
    </item>
    <item>
      <title>文本节点使用 Text 类型表示，它相关的 Node 属性如下： nodeTyp...</title>
      <link>/cards/212.html</link>
      <guid isPermaLink="false">card:212</guid>
      <description>文本节点使用 Text 类型表示，它相关的 Node 属性如下： nodeType ，3 nodeName ， #text nodeValue ，所包含的文本内容 Text 类型的节点没有子节点。我们可以使用下面的方法来操作节点 appen...</description>
      <category>DOM</category>
      <pubDate>Sun, 30 Jul 2023 06:39:04 GMT</pubDate>
    </item>
    <item>
      <title>在所有的节点中，只有 DocumentFragment 在文档中没有对应的标记。...</title>
      <link>/cards/213.html</link>
      <guid isPermaLink="false">card:213</guid>
      <description>在所有的节点中，只有 DocumentFragment 在文档中没有对应的标记。DOM 规定 DocumentFragment 是一种轻量级的文档，它可以包含和控制节点，但是不会真正的文档占用额外的资源，它相关 Node 属性如下： nod...</description>
      <category>DOM</category>
      <pubDate>Sun, 30 Jul 2023 06:44:49 GMT</pubDate>
    </item>
    <item>
      <title>在 JavaScript 中，有两种方法创建一个数组，一个是通过构造函数 Arr...</title>
      <link>/cards/214.html</link>
      <guid isPermaLink="false">card:214</guid>
      <description>在 JavaScript 中，有两种方法创建一个数组，一个是通过构造函数 Array ，另一个是通过字面量 [] 的方式。通过 Array 创建一个数组时，如果传入了一个数字 n ，表示的是创建一个容量为 n 的数组；如果传入了一个参数，但...</description>
      <category>JavaScript</category>
      <pubDate>Sun, 30 Jul 2023 08:58:30 GMT</pubDate>
    </item>
    <item>
      <title>Array.from 方法的作用是将一个类数组转化为真正的数组，例如将 argu...</title>
      <link>/cards/215.html</link>
      <guid isPermaLink="false">card:215</guid>
      <description>Array.from 方法的作用是将一个类数组转化为真正的数组，例如将 arguments 转化为真正的数组 function translateArray() { const arr = Array.from(arguments); co...</description>
      <category>JavaScript</category>
      <pubDate>Sun, 30 Jul 2023 09:01:02 GMT</pubDate>
    </item>
    <item>
      <title>在 JavaScript 中数字都是使用浮点数存储的，即使用 64 位来存储数字...</title>
      <link>/cards/216.html</link>
      <guid isPermaLink="false">card:216</guid>
      <description>在 JavaScript 中数字都是使用浮点数存储的，即使用 64 位来存储数字，但是在一些特殊的场合，例如对于图像，对于每一个像素只需要 8 位来存储即可，如果使用 64 位存储数据，必然会造成内存上的浪费，并且是 8 倍的浪费，于是就有...</description>
      <category>JavaScript</category>
      <pubDate>Sun, 30 Jul 2023 09:34:06 GMT</pubDate>
    </item>
    <item>
      <title>通过 DataView 读取 ArrayBuffer 中的内容是没有任何限制的，...</title>
      <link>/cards/217.html</link>
      <guid isPermaLink="false">card:217</guid>
      <description>通过 DataView 读取 ArrayBuffer 中的内容是没有任何限制的，可以随便的读取，可能造成问题，另外 DataView 暴露的接口过于底层，难以使用。定型数组解决这个问题，可以认为定型数组是一个带了类型预设的 DataView...</description>
      <category>JavaScript</category>
      <pubDate>Sun, 30 Jul 2023 09:53:52 GMT</pubDate>
    </item>
    <item>
      <title>定型数组与一般数组的比较。 相同之处： 可以通过下标访问数据 let int8 ...</title>
      <link>/cards/218.html</link>
      <guid isPermaLink="false">card:218</guid>
      <description>定型数组与一般数组的比较。 相同之处： 可以通过下标访问数据 let int8 = new Int8Array([25, 50]); console.log(int8.length); // 2 console.log(int8[0]); ...</description>
      <category>JavaScript</category>
      <pubDate>Sun, 30 Jul 2023 10:04:46 GMT</pubDate>
    </item>
    <item>
      <title>迭代器是一种遍历集合的一种机制，迭代器具有一个 next() 方法，调用时返回一...</title>
      <link>/cards/222.html</link>
      <guid isPermaLink="false">card:222</guid>
      <description>迭代器是一种遍历集合的一种机制，迭代器具有一个 next() 方法，调用时返回一个对象，包含两个字段： done ：为布尔值， false 表示集合中还有元素可遍历， true 表示集合中没有元素可遍历 value ：如果 done 为 f...</description>
      <category>JavaScript</category>
      <pubDate>Sun, 30 Jul 2023 13:18:30 GMT</pubDate>
    </item>
    <item>
      <title>生成器是用来生成一个数据集合的，它是一个函数，当调用一个生成器时，不会立即执行生...</title>
      <link>/cards/223.html</link>
      <guid isPermaLink="false">card:223</guid>
      <description>生成器是用来生成一个数据集合的，它是一个函数，当调用一个生成器时，不会立即执行生成器函数中的内容，而是会返回一个迭代器，每次调用迭代器的 next 方法，就会执行生成器函数，直至遇到 yield 表达式，会将 yield 后表达式的值返回，...</description>
      <category>JavaScript</category>
      <pubDate>Sun, 30 Jul 2023 13:27:37 GMT</pubDate>
    </item>
    <item>
      <title>DOM 的全称为 Document Object Model，翻译为对象文本模型...</title>
      <link>/cards/197.html</link>
      <guid isPermaLink="false">card:197</guid>
      <description>DOM 的全称为 Document Object Model，翻译为对象文本模型，它是一个针对于 HTML 的 API，它将 HTML 文档描绘为一棵层次化的树，DOM 规范了操作这个文档树的规范，例如添加、删除、移动等等操作。 所有的浏览...</description>
      <category>DOM</category>
      <pubDate>Thu, 27 Jul 2023 01:08:58 GMT</pubDate>
    </item>
    <item>
      <title>DOM 定义了一个 Node 类型的接口，DOM 树上的节点都实现了该类型，因此...</title>
      <link>/cards/198.html</link>
      <guid isPermaLink="false">card:198</guid>
      <description>DOM 定义了一个 Node 类型的接口，DOM 树上的节点都实现了该类型，因此所有的节点都有着 Node 接口中规定的属性和方法。 虽然 HTML 元素以及文本内容都会被转化为节点，但是明显 document 节点，HTML 元素节点，以...</description>
      <category>DOM</category>
      <pubDate>Thu, 27 Jul 2023 01:14:09 GMT</pubDate>
    </item>
    <item>
      <title>replaceChild 参数是用一个节点替换一个节点，所以该方法接收两个参数，...</title>
      <link>/cards/203.html</link>
      <guid isPermaLink="false">card:203</guid>
      <description>replaceChild 参数是用一个节点替换一个节点，所以该方法接收两个参数，新的节点以及被替换的节点</description>
      <category>DOM</category>
      <pubDate>Thu, 27 Jul 2023 01:32:58 GMT</pubDate>
    </item>
    <item>
      <title>cloneNode 方法从名字可以看出，该方法是将自己克隆一份，并返回。复制后的...</title>
      <link>/cards/204.html</link>
      <guid isPermaLink="false">card:204</guid>
      <description>cloneNode 方法从名字可以看出，该方法是将自己克隆一份，并返回。复制后的节点归文档所有，但是没有为该节点指定父节点。 该方法接收一个 bool 类型的参数，当传入为 false 时，表示的是浅复制，当传入的参数为 true 时，表示...</description>
      <category>DOM</category>
      <pubDate>Thu, 27 Jul 2023 01:35:36 GMT</pubDate>
    </item>
    <item>
      <title>normalize 是用来处理节点中的文本节点，它会将空白节点删除，以及将连续的...</title>
      <link>/cards/205.html</link>
      <guid isPermaLink="false">card:205</guid>
      <description>normalize 是用来处理节点中的文本节点，它会将空白节点删除，以及将连续的两个文本节点合并为一个文本节点</description>
      <category>DOM</category>
      <pubDate>Thu, 27 Jul 2023 01:36:50 GMT</pubDate>
    </item>
    <item>
      <title>document 节点上的一些属性： nodeType ， document 的...</title>
      <link>/cards/206.html</link>
      <guid isPermaLink="false">card:206</guid>
      <description>document 节点上的一些属性： nodeType ， document 的 nodeType 的值为 9，可以通过该值来判断节点是否是 document 节点 title ：通过该属性可以读取到网页的标题，它就是 head 标签下的 ...</description>
      <category>DOM</category>
      <pubDate>Thu, 27 Jul 2023 14:36:51 GMT</pubDate>
    </item>
    <item>
      <title>document 包含一系列查找元素的方法，包括： getElementById...</title>
      <link>/cards/207.html</link>
      <guid isPermaLink="false">card:207</guid>
      <description>document 包含一系列查找元素的方法，包括： getElementById getElementByTagName getElementByClassName getElementByName querySelector queryS...</description>
      <category>DOM</category>
      <pubDate>Thu, 27 Jul 2023 14:51:13 GMT</pubDate>
    </item>
    <item>
      <title>Element 节点表示所有的元素节点，它提供了对元素子节点，属性以及内容的访问...</title>
      <link>/cards/210.html</link>
      <guid isPermaLink="false">card:210</guid>
      <description>Element 节点表示所有的元素节点，它提供了对元素子节点，属性以及内容的访问能力，其相关的 Node 属性如下： nodeType ， Element 节点的 nodeType 为 1 nodeName ，标签名的大写，比如 DIV n...</description>
      <category>DOM</category>
      <pubDate>Sun, 30 Jul 2023 06:13:25 GMT</pubDate>
    </item>
    <item>
      <title>有了读取像素数据的能力，我们便可以对图像进行像素级的操纵，例如为其添加滤镜，下面...</title>
      <link>/cards/179.html</link>
      <guid isPermaLink="false">card:179</guid>
      <description>有了读取像素数据的能力，我们便可以对图像进行像素级的操纵，例如为其添加滤镜，下面演示几个例子。 灰度滤镜：根据图像学的知识，将 rgb 三个通道的值同时设置为 0.3r + 0.59g + 0.11b 即可得到一幅灰度图像 const im...</description>
      <category>Canvas/图片</category>
      <pubDate>Wed, 26 Jul 2023 04:55:55 GMT</pubDate>
    </item>
    <item>
      <title>除了通过 getImageData 从画布中拿到数据，还可以通过 createI...</title>
      <link>/cards/180.html</link>
      <guid isPermaLink="false">card:180</guid>
      <description>除了通过 getImageData 从画布中拿到数据，还可以通过 createImageData(width, height) 创建 ImageData ，接受 width 和 height 分别代表创建的图像的宽和高，默认所有像素的四个通...</description>
      <category>Canvas/图片</category>
      <pubDate>Wed, 26 Jul 2023 04:58:11 GMT</pubDate>
    </item>
    <item>
      <title>通过 canvas 对象的 toDataURL(type) 方法，可以将画布转化...</title>
      <link>/cards/181.html</link>
      <guid isPermaLink="false">card:181</guid>
      <description>通过 canvas 对象的 toDataURL(type) 方法，可以将画布转化为图片，其中 type 指定图片的类型，默认为 image/png ctx.fillRect(0, 0, 200, 100) const canvasToPNG...</description>
      <category>Canvas</category>
      <pubDate>Wed, 26 Jul 2023 13:56:22 GMT</pubDate>
    </item>
    <item>
      <title>通过 toBlob(callback, type, quality) 方法可以将...</title>
      <link>/cards/182.html</link>
      <guid isPermaLink="false">card:182</guid>
      <description>通过 toBlob(callback, type, quality) 方法可以将 canvas 对象转化为 Blob 对象，该方法接收三个参数，第一个参数为回调函数，Blob 对象会作为参数传递给改函数， type 指定转换的图片类型，可以...</description>
      <category>Canvas</category>
      <pubDate>Wed, 26 Jul 2023 13:58:14 GMT</pubDate>
    </item>
    <item>
      <title>在很多时候我们需要对绘制的对象进行拉伸，旋转，平移等操作，这些操作可以看做是对坐...</title>
      <link>/cards/183.html</link>
      <guid isPermaLink="false">card:183</guid>
      <description>在很多时候我们需要对绘制的对象进行拉伸，旋转，平移等操作，这些操作可以看做是对坐标进行了变换，在数学上的处理是对当前坐标乘以一个矩阵得到一个新的坐标，然后将新坐标表示的点绘制在画布上 其中等式左边是变换矩阵与当前坐标，右边为变换后的坐标。 ...</description>
      <category>Canvas/变换</category>
      <pubDate>Wed, 26 Jul 2023 13:59:39 GMT</pubDate>
    </item>
    <item>
      <title>在 矩阵 中 m_{11}, m_{22} 控制图形的缩放，其中 m_{11} ...</title>
      <link>/cards/184.html</link>
      <guid isPermaLink="false">card:184</guid>
      <description>在 矩阵 中 m_{11}, m_{22} 控制图形的缩放，其中 m_{11} 表示水平方向上的缩放比率， m_{22} 表示垂直方向上的缩放比率 // 水平方向变为一半，垂直方向变为两倍 ctx.transform(0.5, 0, 0, ...</description>
      <category>Canvas/变换</category>
      <pubDate>Wed, 26 Jul 2023 15:00:10 GMT</pubDate>
    </item>
    <item>
      <title>在数学上，逆时针旋转 \theta 角度的变换矩阵为 要进行顺时针旋转，只需要将...</title>
      <link>/cards/186.html</link>
      <guid isPermaLink="false">card:186</guid>
      <description>在数学上，逆时针旋转 \theta 角度的变换矩阵为 要进行顺时针旋转，只需要将上面的 \theta 换为 -\theta 即可得到顺时针旋转的变换矩阵 const { PI, sin, cos } = Math const theta =...</description>
      <category>Canvas/变换</category>
      <pubDate>Wed, 26 Jul 2023 15:06:10 GMT</pubDate>
    </item>
    <item>
      <title>坐标的变换是相对于 Canvas 坐标系统的原点而言，而不是相对于图形的左上角，...</title>
      <link>/cards/187.html</link>
      <guid isPermaLink="false">card:187</guid>
      <description>坐标的变换是相对于 Canvas 坐标系统的原点而言，而不是相对于图形的左上角，如果希望相对于图形左上角做变换，可以将图形左上角的坐标设置为 (0, 0) ，然后通过平移变换移动到相应的位置，接着进行相应的变换，这时的变换就相当于是对于图形...</description>
      <category>Canvas/变换</category>
      <pubDate>Wed, 26 Jul 2023 15:09:28 GMT</pubDate>
    </item>
    <item>
      <title>当我们通过 transform 设置变换矩阵时，它会在之前的变换基础上进行变换，...</title>
      <link>/cards/188.html</link>
      <guid isPermaLink="false">card:188</guid>
      <description>当我们通过 transform 设置变换矩阵时，它会在之前的变换基础上进行变换，如果希望不在之前的变换基础上进行变换，我们可以使用 setTransform() ，它接受的参数同 transform() ， setTransform() 做...</description>
      <category>Canvas/变换</category>
      <pubDate>Wed, 26 Jul 2023 15:10:44 GMT</pubDate>
    </item>
    <item>
      <title>例子，使用 Canvas 制作动画。 首先动画本质是图像快速的变化，使得我们感觉...</title>
      <link>/cards/189.html</link>
      <guid isPermaLink="false">card:189</guid>
      <description>例子，使用 Canvas 制作动画。 首先动画本质是图像快速的变化，使得我们感觉动起来了，所以制作动画主要分为两步： 清除上一幅图像 绘制新的图像 另一个需要关注的问题就是什么时候绘制一个新的图像，一般来说我们要求 1s 内绘制 60 幅图...</description>
      <category>Canvas/动画</category>
      <pubDate>Wed, 26 Jul 2023 15:15:46 GMT</pubDate>
    </item>
    <item>
      <title>Canvas 中的阴影通过下面四个属性进行设置 shadowColor ：阴影颜...</title>
      <link>/cards/190.html</link>
      <guid isPermaLink="false">card:190</guid>
      <description>Canvas 中的阴影通过下面四个属性进行设置 shadowColor ：阴影颜色 shadowOffsetX ：阴影横向偏移 shadowOffsetY ：阴影纵向偏移 shadowBlur ：阴影模糊 为图形添加阴影 ctx.shado...</description>
      <category>Canvas/阴影</category>
      <pubDate>Wed, 26 Jul 2023 15:19:29 GMT</pubDate>
    </item>
    <item>
      <title>当我们调用 stroke() 和 fill() 方法时，会根据当前的路径信息进行...</title>
      <link>/cards/191.html</link>
      <guid isPermaLink="false">card:191</guid>
      <description>当我们调用 stroke() 和 fill() 方法时，会根据当前的路径信息进行绘制图形，而当我们调用 clip() 方法时，则会根据路径信息形成一个裁剪区域，接下来绘制的图形只能出现在这个裁剪区域中 ctx.beginPath() ctx...</description>
      <category>Canvas</category>
      <pubDate>Wed, 26 Jul 2023 15:22:10 GMT</pubDate>
    </item>
    <item>
      <title>globalCompositeOperation 规定了当两个形状重合时，最终呈...</title>
      <link>/cards/193.html</link>
      <guid isPermaLink="false">card:193</guid>
      <description>globalCompositeOperation 规定了当两个形状重合时，最终呈现出来的图像是什么样子。它的属性十分的多，默认值为 source-over ，表示后面绘制的图像会压住前面的图形，除此之外还有 destination-over...</description>
      <category>Canvas</category>
      <pubDate>Wed, 26 Jul 2023 15:25:25 GMT</pubDate>
    </item>
    <item>
      <title>Canvas 通过 arc(x, y, r, startAngle, endAn...</title>
      <link>/cards/167.html</link>
      <guid isPermaLink="false">card:167</guid>
      <description>Canvas 通过 arc(x, y, r, startAngle, endAngle, anticlockwise = false) 方法可以绘制一个圆弧，其中 (x, y) ：圆心的坐标 r ：圆的半径 startAngle ：圆弧的起...</description>
      <category>Canvas</category>
      <pubDate>Tue, 25 Jul 2023 15:10:42 GMT</pubDate>
    </item>
    <item>
      <title>Canvas 提供了绘制椭圆的方法 ellipse(x, y, a, b, ro...</title>
      <link>/cards/168.html</link>
      <guid isPermaLink="false">card:168</guid>
      <description>Canvas 提供了绘制椭圆的方法 ellipse(x, y, a, b, rotation, startAngle, endAngle, anticlockwise = false) ， rotation 表示对椭圆进行旋转多少度，单位也...</description>
      <category>Canvas</category>
      <pubDate>Tue, 25 Jul 2023 15:21:55 GMT</pubDate>
    </item>
    <item>
      <title>对于一般的曲线的绘制，如果你知道曲线的参数方程的话，那么可以使用直线来模拟曲线，...</title>
      <link>/cards/169.html</link>
      <guid isPermaLink="false">card:169</guid>
      <description>对于一般的曲线的绘制，如果你知道曲线的参数方程的话，那么可以使用直线来模拟曲线，当间隔取的比较小的时候，曲线可以认为是光滑的。 在 Canvas 中我们一般使用贝塞尔曲线来绘制一条曲线，通过起点，终点和多个控制点即可控制一条贝塞尔曲线的生成...</description>
      <category>Canvas/曲线</category>
      <pubDate>Tue, 25 Jul 2023 15:27:03 GMT</pubDate>
    </item>
    <item>
      <title>Canvas 的绘图机制是基于状态来绘制图案的，每次当我们调用方法绘制路径以及设...</title>
      <link>/cards/170.html</link>
      <guid isPermaLink="false">card:170</guid>
      <description>Canvas 的绘图机制是基于状态来绘制图案的，每次当我们调用方法绘制路径以及设置样式信息的时候，例如 lineTo(100, 100) 、 strokeStyle = &apos;red&apos; ，Canvas 上下文只是将这些路径状态和样式保存在绘图上...</description>
      <category>Canvas</category>
      <pubDate>Tue, 25 Jul 2023 15:31:19 GMT</pubDate>
    </item>
    <item>
      <title>Canvas 上下文使用一个栈来保存绘图状态信息，绘图状态信息包括 当前的 tr...</title>
      <link>/cards/171.html</link>
      <guid isPermaLink="false">card:171</guid>
      <description>Canvas 上下文使用一个栈来保存绘图状态信息，绘图状态信息包括 当前的 transform 数组 (transform matrix) 当前的裁剪区域 (clip region) 当前的下列属性值： strokeStyle , fill...</description>
      <category>Canvas</category>
      <pubDate>Tue, 25 Jul 2023 15:35:06 GMT</pubDate>
    </item>
    <item>
      <title>使用 fill 方法对闭合的路径进行填充，使用 closePath 可以对路径进...</title>
      <link>/cards/172.html</link>
      <guid isPermaLink="false">card:172</guid>
      <description>使用 fill 方法对闭合的路径进行填充，使用 closePath 可以对路径进行闭合，相当于 lineTo 到起点 ctx.beginPath(); ctx.moveTo(50, 50) ctx.lineTo(150, 50) ctx.l...</description>
      <category>Canvas</category>
      <pubDate>Wed, 26 Jul 2023 01:21:26 GMT</pubDate>
    </item>
    <item>
      <title>由于绘制矩形非常的常见，Canvas 特意提供了 API 来绘制矩形 rect(...</title>
      <link>/cards/173.html</link>
      <guid isPermaLink="false">card:173</guid>
      <description>由于绘制矩形非常的常见，Canvas 特意提供了 API 来绘制矩形 rect(x, y, width, height) ，其中 (x, y) 表示矩形左上角的坐标， width 和 height 分别表示矩形的宽度和长度 ctx.rect...</description>
      <category>Canvas</category>
      <pubDate>Wed, 26 Jul 2023 01:28:34 GMT</pubDate>
    </item>
    <item>
      <title>Canvas 提供两种绘制文字的方法 strokeText(text, x, y...</title>
      <link>/cards/174.html</link>
      <guid isPermaLink="false">card:174</guid>
      <description>Canvas 提供两种绘制文字的方法 strokeText(text, x, y[, maxLength]) ：绘制文字的边框 fillText(text, x, y[, maxLength]) ：填充文字 上面两个方法都接收四个参数，第一...</description>
      <category>Canvas/文本</category>
      <pubDate>Wed, 26 Jul 2023 01:36:32 GMT</pubDate>
    </item>
    <item>
      <title>通过 measureText(text) 可以测出文本大小，该方法返回的是一个 ...</title>
      <link>/cards/175.html</link>
      <guid isPermaLink="false">card:175</guid>
      <description>通过 measureText(text) 可以测出文本大小，该方法返回的是一个 TextMetrics 对象，该对象包含一个 width 属性，表示文本的长度 const text = &apos;Hello World!&apos; ctx.font = &apos;...</description>
      <category>Canvas/meatureText</category>
      <category>Canvas/文本</category>
      <pubDate>Wed, 26 Jul 2023 01:38:20 GMT</pubDate>
    </item>
    <item>
      <title>通过 direction 可以改变文本的方向，其取值如下 inherit ：默认...</title>
      <link>/cards/176.html</link>
      <guid isPermaLink="false">card:176</guid>
      <description>通过 direction 可以改变文本的方向，其取值如下 inherit ：默认值，继承至 Canvas 元素或者 Document 文档 ltr ：从左至右 rtl ：从右至左 ctx.fillStyle = &apos;#66c18c&apos; ctx....</description>
      <category>Canvas/文本</category>
      <pubDate>Wed, 26 Jul 2023 01:40:45 GMT</pubDate>
    </item>
    <item>
      <title>通过 drawImage() 方法可以在 Canvas 上绘制图像， drawI...</title>
      <link>/cards/177.html</link>
      <guid isPermaLink="false">card:177</guid>
      <description>通过 drawImage() 方法可以在 Canvas 上绘制图像， drawImage() 有三种用法 drawImage(img, x, y) drawImage(img, x, y, w, h) drawImage(img, sx, ...</description>
      <category>Canvas/图片</category>
      <pubDate>Wed, 26 Jul 2023 01:44:48 GMT</pubDate>
    </item>
    <item>
      <title>通过 getImageData(x, y, w, h) 方法可以获得画布某一区域...</title>
      <link>/cards/178.html</link>
      <guid isPermaLink="false">card:178</guid>
      <description>通过 getImageData(x, y, w, h) 方法可以获得画布某一区域的像素数据，返回的对象中的 data 属性保存着所有的像素信息，它是一个一维数组。因为对于画布上的每一像素点都有四个通道，分别代表 rgba ， data 数组...</description>
      <category>Canvas/图片</category>
      <pubDate>Wed, 26 Jul 2023 04:52:45 GMT</pubDate>
    </item>
    <item>
      <title>CSS 全称为 Cascading Style Sheets，中文翻译过来为层叠...</title>
      <link>/cards/157.html</link>
      <guid isPermaLink="false">card:157</guid>
      <description>CSS 全称为 Cascading Style Sheets，中文翻译过来为层叠样式表，它可以为标签添加样式，例如改变文字颜色，设置对齐方式等等。添加样式的方法有四种： style 属性 style 标签 link 标签 @import s...</description>
      <category>CSS</category>
      <pubDate>Mon, 24 Jul 2023 15:53:16 GMT</pubDate>
    </item>
    <item>
      <title>Canvas 基本使用。准备一个画布 &lt;canvas id=&quot;canvas&quot;&gt;&lt;...</title>
      <link>/cards/158.html</link>
      <guid isPermaLink="false">card:158</guid>
      <description>Canvas 基本使用。准备一个画布 &lt;canvas id=&quot;canvas&quot;&gt;&lt;/canvas&gt; 画布的大小可以通过 width 和 height 属性规定，默认为 300 \times 150 ，当浏览器不支持 canvas 时，我们可以...</description>
      <category>Canvas</category>
      <pubDate>Tue, 25 Jul 2023 01:08:06 GMT</pubDate>
    </item>
    <item>
      <title>Canvas 中的坐标系统与数学中的坐标系统，起坐标原点为元素的左上角，x 轴的...</title>
      <link>/cards/159.html</link>
      <guid isPermaLink="false">card:159</guid>
      <description>Canvas 中的坐标系统与数学中的坐标系统，起坐标原点为元素的左上角，x 轴的方向从左至右，y 轴方向从上至下 对于极坐标系，角度的增长沿顺时针方向，这是因为 y 轴向下导致的</description>
      <category>Canvas</category>
      <pubDate>Tue, 25 Jul 2023 01:15:04 GMT</pubDate>
    </item>
    <item>
      <title>使用 Canvas 绘制路径，包括直线和曲线。一个画直线的🌰： ctx.beg...</title>
      <link>/cards/160.html</link>
      <guid isPermaLink="false">card:160</guid>
      <description>使用 Canvas 绘制路径，包括直线和曲线。一个画直线的🌰： ctx.beginPath() ctx.moveTo(100, 100) ctx.lineTo(100, 200) ctx.stroke() 上面牵涉到四个方法： begin...</description>
      <category>Canvas</category>
      <pubDate>Tue, 25 Jul 2023 12:53:43 GMT</pubDate>
    </item>
    <item>
      <title>通过 lineCap 来设置线帽，线帽就是线两端的形状，有三种取值： butt ...</title>
      <link>/cards/162.html</link>
      <guid isPermaLink="false">card:162</guid>
      <description>通过 lineCap 来设置线帽，线帽就是线两端的形状，有三种取值： butt ：默认值，表示没有线帽，线的长度和宽度与设置的相同 round ：半圆形线帽，圆的直径与线的宽度相同 square ：矩形线帽，两边各扩展一个矩形，矩形的长度为...</description>
      <category>Canvas</category>
      <pubDate>Tue, 25 Jul 2023 13:14:34 GMT</pubDate>
    </item>
    <item>
      <title>lineJoin 用来设置线条交接处外角的形状，有如下三种取值： miter ：...</title>
      <link>/cards/163.html</link>
      <guid isPermaLink="false">card:163</guid>
      <description>lineJoin 用来设置线条交接处外角的形状，有如下三种取值： miter ：默认值，折线交接处为尖角 round ：折线交接处为圆角 bevel ：折线交接处为斜角 const lineJoins = [&apos;miter&apos;, &apos;round&apos;...</description>
      <category>Canvas</category>
      <pubDate>Tue, 25 Jul 2023 13:18:47 GMT</pubDate>
    </item>
    <item>
      <title>使用 strokeStyle 来设置路径的样式，它可以有如下取值： 颜色 渐变色...</title>
      <link>/cards/164.html</link>
      <guid isPermaLink="false">card:164</guid>
      <description>使用 strokeStyle 来设置路径的样式，它可以有如下取值： 颜色 渐变色 图案 颜色是任意符合 CSS3 规则的颜色，如 #F6F7F8 rgb(255, 255, 255) rgba(0, 0, 0, .4) ctx.lineWi...</description>
      <category>Canvas</category>
      <pubDate>Tue, 25 Jul 2023 13:21:38 GMT</pubDate>
    </item>
    <item>
      <title>通过 setLineDash(pattern) 可以设置虚线样式，虚线由一段实线...</title>
      <link>/cards/165.html</link>
      <guid isPermaLink="false">card:165</guid>
      <description>通过 setLineDash(pattern) 可以设置虚线样式，虚线由一段实线，一段空白组成。 pattern 是一个数组，表示虚线的模式，例如 [10, 5] 表示实线长度为 10，空白长度为 5，依次重复，又如 [10, 5, 20,...</description>
      <category>Canvas</category>
      <pubDate>Tue, 25 Jul 2023 14:53:44 GMT</pubDate>
    </item>
    <item>
      <title>通过 moveTo 、 lineTo 等方法创建的路径会存放于绘图上下文中，在调...</title>
      <link>/cards/166.html</link>
      <guid isPermaLink="false">card:166</guid>
      <description>通过 moveTo 、 lineTo 等方法创建的路径会存放于绘图上下文中，在调用 stroke 或 fill 方法时，会默认使用存在于上下文中的路径；除此之外还可以将路径信息保存在 Path2D 对象中，然后将对象传递给 stroke 或...</description>
      <category>Canvas</category>
      <pubDate>Tue, 25 Jul 2023 15:00:31 GMT</pubDate>
    </item>
    <item>
      <title>通过将 characterData 设置为 true 来监听文本节点的变化。其相...</title>
      <link>/cards/151.html</link>
      <guid isPermaLink="false">card:151</guid>
      <description>通过将 characterData 设置为 true 来监听文本节点的变化。其相应的 MutationRecord 对象的 type 属性为 characterData 。 const observer = new MutationObse...</description>
      <category>DOM/Mutation Observer</category>
      <pubDate>Mon, 24 Jul 2023 01:10:23 GMT</pubDate>
    </item>
    <item>
      <title>通过 takeRecords() 方法，可以在 mutations 被回调函数处...</title>
      <link>/cards/152.html</link>
      <guid isPermaLink="false">card:152</guid>
      <description>通过 takeRecords() 方法，可以在 mutations 被回调函数处理之前拦截到。 &lt;ul id=&quot;list&quot;&gt; &lt;li&gt;篮球&lt;/li&gt; &lt;li&gt;足球&lt;/li&gt; &lt;li&gt;羽毛球&lt;/li&gt; &lt;/ul&gt; const list = d...</description>
      <category>DOM/Mutation Observer</category>
      <pubDate>Mon, 24 Jul 2023 01:12:54 GMT</pubDate>
    </item>
    <item>
      <title>一个元素有可能会被多个选择器选中，并且被应用相同的样式，这种情况我们称之为样式 ...</title>
      <link>/cards/154.html</link>
      <guid isPermaLink="false">card:154</guid>
      <description>一个元素有可能会被多个选择器选中，并且被应用相同的样式，这种情况我们称之为样式 层叠 &lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;title&gt;层叠&lt;/title&gt; &lt;style&gt; div { color...</description>
      <category>CSS</category>
      <pubDate>Mon, 24 Jul 2023 15:11:20 GMT</pubDate>
    </item>
    <item>
      <title>通过 CSS 我们可以为标签添加样式，那么为哪一个标签添加样式，怎么给特定的标签...</title>
      <link>/cards/155.html</link>
      <guid isPermaLink="false">card:155</guid>
      <description>通过 CSS 我们可以为标签添加样式，那么为哪一个标签添加样式，怎么给特定的标签添加样式，这就需要用到 CSS 选择器。 标签选择器 直接通过标签来为标签添加样式 &lt;p&gt;酒一杯一杯的干&lt;/p&gt; p { color: brown; } 类选择...</description>
      <category>CSS/选择器</category>
      <pubDate>Mon, 24 Jul 2023 15:25:03 GMT</pubDate>
    </item>
    <item>
      <title>除了基本的选择器，CSS 还提供了一些高级的选择器，提供更多的灵活性。 后代选择...</title>
      <link>/cards/156.html</link>
      <guid isPermaLink="false">card:156</guid>
      <description>除了基本的选择器，CSS 还提供了一些高级的选择器，提供更多的灵活性。 后代选择器 看一个🌰： &lt;div&gt; &lt;p&gt;简单的 p 标签&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;p&gt;li里面的p标签&lt;/p&gt;&lt;/li&gt; &lt;li&gt;&lt;p&gt;li里面的p标签&lt;/p&gt;...</description>
      <category>CSS/选择器</category>
      <pubDate>Mon, 24 Jul 2023 15:39:17 GMT</pubDate>
    </item>
    <item>
      <title>通过索引，可以批量定义键值对 interface Obj { [key: str...</title>
      <link>/cards/140.html</link>
      <guid isPermaLink="false">card:140</guid>
      <description>通过索引，可以批量定义键值对 interface Obj { [key: string]: number; } 但如果我只允许存在有限的键，比如该接口只包含几个属性，但是我又不想一一定义，有什么办法，可以使用映射类型进行循环，如 inter...</description>
      <category>TypeScript/类型操作</category>
      <pubDate>Mon, 17 Jul 2023 14:54:14 GMT</pubDate>
    </item>
    <item>
      <title>使用 IntersectionObserver 可以监听元素是否出现在视口中，其...</title>
      <link>/cards/145.html</link>
      <guid isPermaLink="false">card:145</guid>
      <description>使用 IntersectionObserver 可以监听元素是否出现在视口中，其使用方法如下 // 创建 observer，接收两个参数 // 1. fn，被监听的元素出现在视口中时触发的回调函数 // 2. 创建 observer 的选项...</description>
      <category>DOM/Intersection Observer</category>
      <pubDate>Sun, 23 Jul 2023 13:20:24 GMT</pubDate>
    </item>
    <item>
      <title>使用 IntersectionObserver 进行图片的懒加载。我们监控文档中...</title>
      <link>/cards/146.html</link>
      <guid isPermaLink="false">card:146</guid>
      <description>使用 IntersectionObserver 进行图片的懒加载。我们监控文档中所有的图片，这些图片的地址都设置在 data-src 上，当图片出现在视口中时，我们从 data-src 中取出地址，设置在 src 属性上，从而实现页面的懒加...</description>
      <category>DOM/Intersection Observer</category>
      <pubDate>Sun, 23 Jul 2023 15:01:49 GMT</pubDate>
    </item>
    <item>
      <title>通过 childList 来监听子元素的变化。当 options 中的 chil...</title>
      <link>/cards/149.html</link>
      <guid isPermaLink="false">card:149</guid>
      <description>通过 childList 来监听子元素的变化。当 options 中的 childList 设置为 true 时，表示监听子元素的变化，即子元素的新增与删除。 &lt;div id=&quot;container&quot;&gt; &lt;p&gt;世界这么大，我想去看看&lt;/p&gt; ...</description>
      <category>DOM/Mutation Observer</category>
      <pubDate>Mon, 24 Jul 2023 00:58:15 GMT</pubDate>
    </item>
    <item>
      <title>当设置 attributes 属性为 true 时，就可以监听到属性的变化，包括...</title>
      <link>/cards/150.html</link>
      <guid isPermaLink="false">card:150</guid>
      <description>当设置 attributes 属性为 true 时，就可以监听到属性的变化，包括自定义属性。 &lt;div id=&quot;container&quot; class=&quot;red&quot;&gt; &lt;p&gt;世界这么大，我想去看看&lt;/p&gt; &lt;/div&gt; &lt;button id=&quot;bt...</description>
      <category>DOM/Mutation Observer</category>
      <pubDate>Mon, 24 Jul 2023 01:05:20 GMT</pubDate>
    </item>
    <item>
      <title>在项目中使用 GSAP 通过 script 标签引入 CDN，然后就可以在代码中...</title>
      <link>/cards/136.html</link>
      <guid isPermaLink="false">card:136</guid>
      <description>在项目中使用 GSAP 通过 script 标签引入 CDN，然后就可以在代码中访问 gsap 了 &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/gsap/3.10.4/gsap.m...</description>
      <category>JavaScript/三方库/GSAP</category>
      <pubDate>Sun, 16 Jul 2023 06:48:49 GMT</pubDate>
    </item>
    <item>
      <title>浏览器打印日志，除了拼接字符串，还可以使用占位符。 // %s 字符串 cons...</title>
      <link>/cards/137.html</link>
      <guid isPermaLink="false">card:137</guid>
      <description>浏览器打印日志，除了拼接字符串，还可以使用占位符。 // %s 字符串 const name = &quot;Alice&quot;; console.log(&quot;My name is %s&quot;, name); // %d 数字 const price = 18;...</description>
      <category>浏览器</category>
      <pubDate>Sun, 16 Jul 2023 15:21:17 GMT</pubDate>
    </item>
    <item>
      <title>可以通过 program.addCommand() 来添加子命令，每个子命令可以...</title>
      <link>/cards/132.html</link>
      <guid isPermaLink="false">card:132</guid>
      <description>可以通过 program.addCommand() 来添加子命令，每个子命令可以定义它们自己的选项 const { program, Command } = require(&apos;commander&apos;); const upload = new ...</description>
      <category>JavaScript/三方库/Commander</category>
      <pubDate>Thu, 13 Jul 2023 14:42:41 GMT</pubDate>
    </item>
    <item>
      <title>不带任何参数的 git push ，默认只推送当前分支，这叫做 simple 方...</title>
      <link>/cards/134.html</link>
      <guid isPermaLink="false">card:134</guid>
      <description>不带任何参数的 git push ，默认只推送当前分支，这叫做 simple 方式。此外，还有一种 matching 方式，会推送所有有对应的远程分支的本地分支。Git 2.0版本之前，默认采用 matching 方法，现在改为默认采用 s...</description>
      <category>Git</category>
      <pubDate>Sun, 16 Jul 2023 02:12:03 GMT</pubDate>
    </item>
    <item>
      <title>Shell 与输入相关的特殊变量。 $# ：参数个数 获得最后一个参数 # 错误...</title>
      <link>/cards/118.html</link>
      <guid isPermaLink="false">card:118</guid>
      <description>Shell 与输入相关的特殊变量。 $# ：参数个数 获得最后一个参数 # 错误写法 ${$#} 不能在 {} 里面使用美元符 $ ，得改为 ! # 非常奇怪，但是很有用 ${!#} 获得所有参数 $* ：所有参数视作整体 $@ ：分开保存...</description>
      <category>Linux</category>
      <category>Shell编程/输入</category>
      <pubDate>Thu, 13 Jul 2023 14:00:45 GMT</pubDate>
    </item>
    <item>
      <title>如何在多个脚本中使用函数？ xt in ~/shell/func λ cat m...</title>
      <link>/cards/119.html</link>
      <guid isPermaLink="false">card:119</guid>
      <description>如何在多个脚本中使用函数？ xt in ~/shell/func λ cat math.sh #!/bin/zsh add() { echo $[ $1 + $2 ] } sub() { echo $[ $1 - $2 ] } mul() ...</description>
      <category>Shell编程/函数</category>
      <pubDate>Thu, 13 Jul 2023 14:03:23 GMT</pubDate>
    </item>
    <item>
      <title>while 循环 while command do commands done ...</title>
      <link>/cards/122.html</link>
      <guid isPermaLink="false">card:122</guid>
      <description>while 循环 while command do commands done xt in ~/shell/for λ cat 06.sh #!/bin/zsh i=10 while [ $i -gt 0 ] do echo $i i=$[...</description>
      <category>Linux</category>
      <category>Shell编程/循环</category>
      <pubDate>Thu, 13 Jul 2023 14:10:59 GMT</pubDate>
    </item>
    <item>
      <title>until 循环 until command do commands done ...</title>
      <link>/cards/123.html</link>
      <guid isPermaLink="false">card:123</guid>
      <description>until 循环 until command do commands done #!/bin/zsh i=10 until [ $i -lt 0 ] do echo $i i=$[ $i - 1 ] done</description>
      <category>Shell编程/循环</category>
      <pubDate>Thu, 13 Jul 2023 14:11:44 GMT</pubDate>
    </item>
    <item>
      <title>Shell 脚本中函数的创建与使用。格式： function name { co...</title>
      <link>/cards/125.html</link>
      <guid isPermaLink="false">card:125</guid>
      <description>Shell 脚本中函数的创建与使用。格式： function name { commands } function name { commands } 使用： name 举个🌰： #!/bin/zsh function echo_hell...</description>
      <category>Shell编程/函数</category>
      <pubDate>Thu, 13 Jul 2023 14:19:34 GMT</pubDate>
    </item>
    <item>
      <title>Shell 脚本中函数参数的传递。格式 函数名 params ，然后在函数中通过...</title>
      <link>/cards/126.html</link>
      <guid isPermaLink="false">card:126</guid>
      <description>Shell 脚本中函数参数的传递。格式 函数名 params ，然后在函数中通过 $1, $2 等进行访问 注意：函数内部的 $n 不会影响到外部的。 #!/bin/zsh rr() { echo &quot;param1: $1&quot; echo &quot;pa...</description>
      <category>Shell编程/函数</category>
      <pubDate>Thu, 13 Jul 2023 14:22:19 GMT</pubDate>
    </item>
    <item>
      <title>Shell 函数的返回值，函数的退出状态码是最后一条执行语句的退出状态码，通过 ...</title>
      <link>/cards/127.html</link>
      <guid isPermaLink="false">card:127</guid>
      <description>Shell 函数的返回值，函数的退出状态码是最后一条执行语句的退出状态码，通过 $? 可以拿到 #!/bin/zsh list_file() { ls # this file is not exists ls -l dad } list_f...</description>
      <category>Shell编程/函数</category>
      <pubDate>Thu, 13 Jul 2023 14:26:09 GMT</pubDate>
    </item>
    <item>
      <title>Commander 的下载与使用。 npm install commander ...</title>
      <link>/cards/128.html</link>
      <guid isPermaLink="false">card:128</guid>
      <description>Commander 的下载与使用。 npm install commander 首先明白，Commander 的作用是什么，是解析命令行参数，让我们能够以易读且方便的拿到我们想要的选项和参数，而不用手动解析字符串。 举个🌰： const ...</description>
      <category>JavaScript/三方库/Commander</category>
      <pubDate>Thu, 13 Jul 2023 14:33:09 GMT</pubDate>
    </item>
    <item>
      <title>Commander 选项分为短选项和长选项，短选项使用 - 开头，接 单个字符 ...</title>
      <link>/cards/129.html</link>
      <guid isPermaLink="false">card:129</guid>
      <description>Commander 选项分为短选项和长选项，短选项使用 - 开头，接 单个字符 ，长选项使用 -- 开头，后接一个或多个单词（使用 - 连接）。 const { program } = require(&apos;commander&apos;); // 短选...</description>
      <category>JavaScript/三方库/Commander</category>
      <pubDate>Thu, 13 Jul 2023 14:37:19 GMT</pubDate>
    </item>
    <item>
      <title>Commander 对于选项参数的读取是贪婪的，如果定义了某个选项后需要跟参数，...</title>
      <link>/cards/130.html</link>
      <guid isPermaLink="false">card:130</guid>
      <description>Commander 对于选项参数的读取是贪婪的，如果定义了某个选项后需要跟参数，但是实际上没有给参数，那么会把后面的选项读取为参数 const { program } = require(&apos;commander&apos;); program .opt...</description>
      <category>JavaScript/三方库/Commander</category>
      <pubDate>Thu, 13 Jul 2023 14:39:35 GMT</pubDate>
    </item>
    <item>
      <title>xt in ~/shell/read λ cat readoptions.sh ...</title>
      <link>/cards/109.html</link>
      <guid isPermaLink="false">card:109</guid>
      <description>xt in ~/shell/read λ cat readoptions.sh #!/bin/zsh while [ -n &quot;$1&quot; ] do case &quot;$1&quot; in -a) echo &quot;find -a option&quot;;; -b) ech...</description>
      <category>Shell编程</category>
      <pubDate>Wed, 12 Jul 2023 16:01:06 GMT</pubDate>
    </item>
    <item>
      <title>读取用户输入的参数 ./add.sh 10 20 如何拿到 10 和 20 这两...</title>
      <link>/cards/110.html</link>
      <guid isPermaLink="false">card:110</guid>
      <description>读取用户输入的参数 ./add.sh 10 20 如何拿到 10 和 20 这两个参数。 $0 ：调用脚本的命令 $n ：输入参数 $1 ：10 $2 ：20 xt in ~/shell/read λ cat greet.sh #!/bin...</description>
      <category>Shell编程</category>
      <pubDate>Wed, 12 Jul 2023 16:03:27 GMT</pubDate>
    </item>
    <item>
      <title>read 命令用以读取用户输入，然后将其放入一个变量中 -p ：提示消息 -t ...</title>
      <link>/cards/111.html</link>
      <guid isPermaLink="false">card:111</guid>
      <description>read 命令用以读取用户输入，然后将其放入一个变量中 -p ：提示消息 -t ：过期时间，时间内未输入，退出码非 0 #!/bin/bash read -p &quot;Please input your name: &quot; name echo &quot;He...</description>
      <category>Shell编程</category>
      <pubDate>Wed, 12 Jul 2023 16:10:59 GMT</pubDate>
    </item>
    <item>
      <title>如果第一次接触 Linux 系统的话，会发现 Linux 和 Windows 有...</title>
      <link>/cards/115.html</link>
      <guid isPermaLink="false">card:115</guid>
      <description>如果第一次接触 Linux 系统的话，会发现 Linux 和 Windows 有很多不一样的地方，比如目录结构。 Windows 可以分为好几个盘符，例如 C 盘，D 盘等等，在 Linux 中没有盘符的概念，所有的文件都在一个目录下面，我...</description>
      <category>Linux</category>
      <pubDate>Thu, 13 Jul 2023 13:40:55 GMT</pubDate>
    </item>
    <item>
      <title>Windows 在 PowerShell 中设置 $env:GOPROXY = ...</title>
      <link>/cards/94.html</link>
      <guid isPermaLink="false">card:94</guid>
      <description>Windows 在 PowerShell 中设置 $env:GOPROXY = &quot;&lt;https://goproxy.cn,direct&gt;&quot; Linux 直接修改 .bashrc 中的环境变量 GOPROXY=&quot;https://goproxy...</description>
      <category>杂</category>
      <pubDate>Wed, 12 Jul 2023 15:20:17 GMT</pubDate>
    </item>
    <item>
      <title>调整优先级。任务优先级从 -20（最高优先级）~19（最低优先级），默认 Bas...</title>
      <link>/cards/98.html</link>
      <guid isPermaLink="false">card:98</guid>
      <description>调整优先级。任务优先级从 -20（最高优先级）~19（最低优先级），默认 Bash Shell 以优先级 0 启动进程。 nice -n level 指定优先级级别，普通用户只能通过 nice 降低优先级。 nice -n 10 ./04....</description>
      <category>Linux</category>
      <category>优先级/nice</category>
      <category>优先级/renice</category>
      <pubDate>Wed, 12 Jul 2023 15:35:58 GMT</pubDate>
    </item>
    <item>
      <title>选择区域需创建一个 Range 对象，设置范围，然后添加到 Selection ...</title>
      <link>/cards/81.html</link>
      <guid isPermaLink="false">card:81</guid>
      <description>选择区域需创建一个 Range 对象，设置范围，然后添加到 Selection 对象中 range.setStart(startNode, startOffset); range.setEnd(endNode, endOffset); 因为...</description>
      <category>DOM/选区</category>
      <pubDate>Wed, 12 Jul 2023 14:29:57 GMT</pubDate>
    </item>
    <item>
      <title>range.insertNode() 既可以插入文本内容，也可以插入标签。它不会...</title>
      <link>/cards/84.html</link>
      <guid isPermaLink="false">card:84</guid>
      <description>range.insertNode() 既可以插入文本内容，也可以插入标签。它不会替换已选择的内容，而是在起点处插入一个节点。如果要替换，可以先删除在添加，通过 range.deleteContents 进行删除。 const textNod...</description>
      <category>DOM/选区</category>
      <pubDate>Wed, 12 Jul 2023 14:38:51 GMT</pubDate>
    </item>
    <item>
      <title># 创建名称为 torch 的环境，指定 python 版本为 3.10 con...</title>
      <link>/cards/89.html</link>
      <guid isPermaLink="false">card:89</guid>
      <description># 创建名称为 torch 的环境，指定 python 版本为 3.10 conda create -n torch python=3.10 # 激活名为 torch 的环境 conda activate torch # 退出环境 cond...</description>
      <category>CheatSheet/Anaconda</category>
      <pubDate>Wed, 12 Jul 2023 14:55:12 GMT</pubDate>
    </item>
    <item>
      <title>ES6 模块的一些特点 始终使用 use strict 模块始终在严格模式下运行...</title>
      <link>/cards/91.html</link>
      <guid isPermaLink="false">card:91</guid>
      <description>ES6 模块的一些特点 始终使用 use strict 模块始终在严格模式下运行。例如，对一个未声明的变量赋值将产生错误。 &lt;script type=&quot;module&quot;&gt; a = 5; // error &lt;/script&gt; 模块级作用域 在浏...</description>
      <category>JavaScript</category>
      <pubDate>Wed, 12 Jul 2023 15:04:45 GMT</pubDate>
    </item>
    <item>
      <title>添加与删除远程分支 # 添加远程分支 git remote add origin...</title>
      <link>/cards/92.html</link>
      <guid isPermaLink="false">card:92</guid>
      <description>添加与删除远程分支 # 添加远程分支 git remote add origin https://github.com/user/repo.git # 删除远程分支 git remote rm origin 强制推送 git push --...</description>
      <category>Git</category>
      <pubDate>Wed, 12 Jul 2023 15:17:55 GMT</pubDate>
    </item>
    <item>
      <title>将文件描述符重定向到 /dev/null ，任何输出到 /dev/null 的内...</title>
      <link>/cards/69.html</link>
      <guid isPermaLink="false">card:69</guid>
      <description>将文件描述符重定向到 /dev/null ，任何输出到 /dev/null 的内容都会被直接丢掉 xt in ~/shell/redir λ ls -al &gt; /dev/null xt in ~/shell/redir λ 如何将输入重定向...</description>
      <category>Shell编程</category>
      <pubDate>Tue, 11 Jul 2023 14:42:02 GMT</pubDate>
    </item>
    <item>
      <title>两线程竞争访问共享资源，需要保证并发安全，Peterson 算法如下。 线程如果...</title>
      <link>/cards/74.html</link>
      <guid isPermaLink="false">card:74</guid>
      <description>两线程竞争访问共享资源，需要保证并发安全，Peterson 算法如下。 线程如果需要访问共享资源，首先需要举起一面旗子，表示自己需要访问共享资源，并且贴上对方名字的标签，如果满足以下条件则可访问资源： 只有自己举起旗子，表示没有人竞争，可以...</description>
      <category>操作系统/并发</category>
      <pubDate>Wed, 12 Jul 2023 13:07:38 GMT</pubDate>
    </item>
    <item>
      <title>包在国外服务器，下载速度慢，下载位于国内镜像源上的包。通过 pip 下载包时通过...</title>
      <link>/cards/75.html</link>
      <guid isPermaLink="false">card:75</guid>
      <description>包在国外服务器，下载速度慢，下载位于国内镜像源上的包。通过 pip 下载包时通过 -i 选项指定镜像源地址 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 每次下载包时都要指定...</description>
      <category>Python/pip</category>
      <category>镜像源/pip</category>
      <pubDate>Wed, 12 Jul 2023 13:10:06 GMT</pubDate>
    </item>
    <item>
      <title>Linux 使用文件描述符标识文件，非负整数。前三个文件描述符保留（0，1，2）...</title>
      <link>/cards/64.html</link>
      <guid isPermaLink="false">card:64</guid>
      <description>Linux 使用文件描述符标识文件，非负整数。前三个文件描述符保留（0，1，2） 0：标准输入，STDIN 1：标准输出，STDOUT 2：标准错误，STDERR 标准输入：键盘输入。 &lt; 会重定向指定文件来替换标准输入，读取文件获得输入，...</description>
      <category>Shell编程/重定向</category>
      <pubDate>Tue, 11 Jul 2023 14:13:16 GMT</pubDate>
    </item>
    <item>
      <title>临时重定向 # 输出临时重定向到标准错误 echo &quot;This is a err...</title>
      <link>/cards/65.html</link>
      <guid isPermaLink="false">card:65</guid>
      <description>临时重定向 # 输出临时重定向到标准错误 echo &quot;This is a error&quot; &gt;&amp;2 在文件描述符前面添加 &amp; 就是临时重定向 #!/bin/zsh echo &quot;This is a error.&quot; &gt;&amp;2 echo &quot;This n...</description>
      <category>Shell编程/重定向</category>
      <pubDate>Tue, 11 Jul 2023 14:23:48 GMT</pubDate>
    </item>
    <item>
      <title>exec 在 shell 脚本执行期间，重定向到某个特定描述符 #/bin/zs...</title>
      <link>/cards/66.html</link>
      <guid isPermaLink="false">card:66</guid>
      <description>exec 在 shell 脚本执行期间，重定向到某个特定描述符 #/bin/zsh exec 1&gt; stdo exec 2&gt; stde echo &quot;This is error.&quot; &gt;&amp;2 echo &quot;This is normal outpu...</description>
      <category>Shell编程</category>
      <pubDate>Tue, 11 Jul 2023 14:26:15 GMT</pubDate>
    </item>
    <item>
      <title>脚本中重定向输入 # 从 names 文件读取输入 exec 0&lt; names ...</title>
      <link>/cards/67.html</link>
      <guid isPermaLink="false">card:67</guid>
      <description>脚本中重定向输入 # 从 names 文件读取输入 exec 0&lt; names while read name do echo &quot;Hello, $name.&quot; done xt in ~/shell/redir λ cat names Ali...</description>
      <category>Shell编程</category>
      <pubDate>Tue, 11 Jul 2023 14:28:38 GMT</pubDate>
    </item>
    <item>
      <title>Linux Shell 最多可以有 9 个文件描述符，其他 6 个 3~9 可用...</title>
      <link>/cards/68.html</link>
      <guid isPermaLink="false">card:68</guid>
      <description>Linux Shell 最多可以有 9 个文件描述符，其他 6 个 3~9 可用于重定向，可将其任一个分配给文件。 # 创建输出重定向 exec 3&gt; out echo &quot;Hello World.&quot; &gt;&amp;3 echo &quot;Hi.&quot; &gt;&amp;3 #...</description>
      <category>Shell编程/重定向</category>
      <pubDate>Tue, 11 Jul 2023 14:38:02 GMT</pubDate>
    </item>
    <item>
      <title>:where() 伪类的优先级是 0，无论其参数内的选择器优先级多高。 :is(...</title>
      <link>/cards/45.html</link>
      <guid isPermaLink="false">card:45</guid>
      <description>:where() 伪类的优先级是 0，无论其参数内的选择器优先级多高。 :is() 伪类的优先级是由括号内选择器的优先级决定的。 在 Vue 等框架中使用 :is() 伪类，选择器就不会再增加随机属性选择器。 :is() 伪类正式支持是 C...</description>
      <category>CSS/选择器</category>
      <pubDate>Mon, 10 Jul 2023 14:25:34 GMT</pubDate>
    </item>
    <item>
      <title>该笔记是来源于公众号文章 还在用定时器吗？借助 CSS 来监听事件 。 hove...</title>
      <link>/cards/46.html</link>
      <guid isPermaLink="false">card:46</guid>
      <description>该笔记是来源于公众号文章 还在用定时器吗？借助 CSS 来监听事件 。 hover延时触发 一般方法 鼠标进入时开始定时器 var timer = null el.addEventListener(&apos;mouseover&apos;, () =&gt; { ...</description>
      <category>CSS/技巧</category>
      <category>技巧/CSS</category>
      <pubDate>Mon, 10 Jul 2023 14:32:31 GMT</pubDate>
    </item>
    <item>
      <title>使用中文输入时，未输入完成时，拼音会被作为输入，可能会达到意料之外的结果，比如有...</title>
      <link>/cards/50.html</link>
      <guid isPermaLink="false">card:50</guid>
      <description>使用中文输入时，未输入完成时，拼音会被作为输入，可能会达到意料之外的结果，比如有字数限制的时候，没有达到字数上限，但是由于拼音达到输入上限，因此会存在问题。 根本原因是我们需要一个能监听到中文输入法的事件，那就是 compositionst...</description>
      <category>DOM</category>
      <pubDate>Mon, 10 Jul 2023 14:48:22 GMT</pubDate>
    </item>
    <item>
      <title>面对一个大任务时，一定要学会任务的拆解，将大任务拆分为多个小任务，大任务的困难程...</title>
      <link>/cards/31.html</link>
      <guid isPermaLink="false">card:31</guid>
      <description>面对一个大任务时，一定要学会任务的拆解，将大任务拆分为多个小任务，大任务的困难程度会让我们恐惧，从而造成拖延，而分解为多个小任务后，我们会更容易的开始。 任务划分的原则：能取得一定成果，能获得一定反馈。不要将任务划分的过于详细，因为未来的一...</description>
      <category>学习方法</category>
      <pubDate>Mon, 10 Jul 2023 01:41:57 GMT</pubDate>
    </item>
    <item>
      <title>意志力不是由心灵力量控制，而是由大脑控制，在英国有个工人，工人的意志力很好，有一...</title>
      <link>/cards/32.html</link>
      <guid isPermaLink="false">card:32</guid>
      <description>意志力不是由心灵力量控制，而是由大脑控制，在英国有个工人，工人的意志力很好，有一次事故，前额皮质受到了损坏，虽然得以康复，但是性情大变，易怒易躁，这说明是大脑在控制你的意志力。 意志力会受到哪些因素影响： 身体极限 当身体来到极限时，大脑的...</description>
      <category>心理学</category>
      <pubDate>Mon, 10 Jul 2023 01:44:12 GMT</pubDate>
    </item>
    <item>
      <title>有的时候一个政策能决定中国社会的走向，例如改革开放，而一个政策的提出往往是由主要...</title>
      <link>/cards/38.html</link>
      <guid isPermaLink="false">card:38</guid>
      <description>有的时候一个政策能决定中国社会的走向，例如改革开放，而一个政策的提出往往是由主要领导人决定的，一个国家的走向就简单的交给了一个人的手中，即使是国家领导人，也不敢说自己的每次决定都是正确的，这样想想真是可怕，如果做出了错误的决定，由于面子或权...</description>
      <category>随笔</category>
      <pubDate>Mon, 10 Jul 2023 04:46:52 GMT</pubDate>
    </item>
    <item>
      <title>下载 PyPDF2 pip install PyPDF2 分割 PDF from...</title>
      <link>/cards/40.html</link>
      <guid isPermaLink="false">card:40</guid>
      <description>下载 PyPDF2 pip install PyPDF2 分割 PDF from PyPDF2 import PdfFileWriter, PdfFileReader start = 67 end = 198 in_file = &apos;in.p...</description>
      <category>Python</category>
      <pubDate>Mon, 10 Jul 2023 04:51:16 GMT</pubDate>
    </item>
    <item>
      <title>文字的底线 (bottom line)，参考字母 y g 的下边缘，是会超过行框...</title>
      <link>/cards/41.html</link>
      <guid isPermaLink="false">card:41</guid>
      <description>文字的底线 (bottom line)，参考字母 y g 的下边缘，是会超过行框盒子的大小的，超出的部分大约为字体大小的 5%-10%，这个应该和字体有关，不过不同的字体都相差不大。 文字的基线，参考字母 x 的下边缘，距行框盒子底部大约是...</description>
      <category>CSS/基线</category>
      <pubDate>Mon, 10 Jul 2023 04:52:26 GMT</pubDate>
    </item>
    <item>
      <title>使用 &amp; 连接两个类型形成的新类型表示二者的交集，新类型表示同时满足二者的类型 ...</title>
      <link>/cards/11.html</link>
      <guid isPermaLink="false">card:11</guid>
      <description>使用 &amp; 连接两个类型形成的新类型表示二者的交集，新类型表示同时满足二者的类型 // 既是 string 又是 number，不存在这种类型 type Never = string &amp; number; interface State { n...</description>
      <category>TypeScript/类型操作</category>
      <pubDate>Sun, 09 Jul 2023 14:16:16 GMT</pubDate>
    </item>
  </channel>
</rss>
