<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[兰亭古墨]]></title><description><![CDATA[努力向前，成长可见]]></description><link>https://blog.youkuaiyun.com/hefeng6500</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hefeng6500]]></copyright><item><title><![CDATA[Kiro 生成 commit message 如何使用简体中文]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/162909480</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/162909480</guid><author>hefeng6500</author><pubDate>Wed, 15 Jul 2026 16:50:31 +0800</pubDate><description><![CDATA[Kiro 默认生成的 commit message 是英文。如果你需要使用简体中文，需要通过以下两种机制配合实现。]]></description><category></category></item><item><title><![CDATA[NLP 技术演进]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/162496968</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/162496968</guid><author>hefeng6500</author><pubDate>Wed, 01 Jul 2026 22:38:29 +0800</pubDate><description><![CDATA[摘要： NLP技术经历了规则系统、统计方法、机器学习到深度学习四个阶段的演进。深度学习阶段以端到端学习为核心，包括词向量、序列建模、Transformer革命和预训练大语言模型四个关键时期。其中，RNN通过循环连接处理序列数据，但面临梯度消失问题；LSTM引入记忆单元和门控机制缓解了梯度消失，但仍存在并行计算困难、参数量大等问题；GRU作为LSTM的简化版本，通过合并门控结构降低了计算复杂度。这些模型虽然在长序列建模上有所改进，但固定维度的记忆单元仍存在信息稀释的瓶颈，为后续Transformer的突破埋下]]></description><category></category></item><item><title><![CDATA[钉钉工作台自建组件定时器被禁？用 Swiper 模拟 setInterval 的优雅方案]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/158037270</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/158037270</guid><author>hefeng6500</author><pubDate>Fri, 13 Feb 2026 10:54:53 +0800</pubDate><description><![CDATA[在钉钉工作台自建组件中，如果定时器 API 被限制，可以通过 swiper 的 autoplay + interval + onChange 机制模拟定时器行为。]]></description><category></category></item><item><title><![CDATA[Tailwind CSS @apply Unknown at rule @apply scss(unknownAtRules) 解决方案]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/141634268</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/141634268</guid><author>hefeng6500</author><pubDate>Wed, 28 Aug 2024 10:30:04 +0800</pubDate><description><![CDATA[Unknown at rule @applyscss(unknownAtRules)]]></description><category></category></item><item><title><![CDATA[分析 Vue3 Effect 函数看响应式依赖收集和触发更新过程2]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/141004249</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/141004249</guid><author>hefeng6500</author><pubDate>Thu, 08 Aug 2024 00:20:52 +0800</pubDate><description><![CDATA[会在 effect._trackId 为 1 的 effect 的 deps 数组上保存 flag 和 name 这两个 dep，同时也分别在 flag 的 dep 和 name 的 dep 上保存 effect._trackId 为 1 的 effect。此时的 activeEffect 已经变样了（即使是从之前的 flag 的 dep 中取出的 effect）就是执行 effect 的回调函数。时触发 trigger，执行 flag 的 dep 中的 effect.run()执行 run 方法中的。]]></description><category></category></item><item><title><![CDATA[分析 Vue3 Effect 函数看响应式依赖收集和触发更新过程]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/141002833</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/141002833</guid><author>hefeng6500</author><pubDate>Wed, 07 Aug 2024 22:28:40 +0800</pubDate><description><![CDATA[先给一个简单的实例，分析依赖收集和更新的过程reactive 函数只会创建一个响应式对象，没有产生其他的什么副作用，仅在state对象在访问或者修改时才会触发proxy的getter和setter。]]></description><category></category></item><item><title><![CDATA[Vue3 实现 Three.js粒子特效]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/138161753</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/138161753</guid><author>hefeng6500</author><pubDate>Wed, 24 Apr 2024 16:01:14 +0800</pubDate><description><![CDATA[【代码】Vue3 实现 Three.js粒子特效。]]></description><category></category></item><item><title><![CDATA[How to fix “__dirname is not defined in ES module scope“]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/127648083</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/127648083</guid><author>hefeng6500</author><pubDate>Wed, 02 Nov 2022 11:06:18 +0800</pubDate><description><![CDATA[How to fix "__dirname is not defined in ES module scope"]]></description><category></category></item><item><title><![CDATA[java 中 byte a = 1； a += 1和 a = a + 1 有什么区别？]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/127468019</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/127468019</guid><author>hefeng6500</author><pubDate>Sat, 22 Oct 2022 21:48:52 +0800</pubDate><description><![CDATA[因为 1 默认是 int 类型 byte + init 类型会隐私转换为 int 类型，将 int 类型直接分配给 byte 类型就会报错。]]></description><category></category></item><item><title><![CDATA[java 中 byte 溢出详解，为什么 byte 130 结果为 -126]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/127467330</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/127467330</guid><author>hefeng6500</author><pubDate>Sat, 22 Oct 2022 21:21:34 +0800</pubDate><description><![CDATA[在 java 中 byte 130 的 130 默认是 int 类型（十进制），int 类型占用 4 个字节。就是二进制定点表示法，即最高位为符号位，“0”表示正，“1”表示负，其余位表示数值的大小。在计算机中所有的数据都是以补码的形式出现。所以求出截取后的数据的补码即可。正数的反码与其原码相同；负数的反码是对其原码逐位取反，但符号位除外。通过截取后的结果可以看到，符号位（最高位）为 1，说明这是一个负数。正数的补码与其原码相同；负数的补码是在其反码的末位加1。最高位为符号位，为 1，代表负数。]]></description><category></category></item><item><title><![CDATA[Vue Computed 依赖收集与更新原理]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/126426729</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/126426729</guid><author>hefeng6500</author><pubDate>Fri, 19 Aug 2022 17:03:48 +0800</pubDate><description><![CDATA[调用 watcher.depend() , this 指的是 computed watcher，会将 computed watcher 里面的 deps 保存在所有依赖调用 deps[i].depend()，进而调用 Dep 类中的 Dep.target.addDep(this)，使得 render watcher 中保存了当前的 dep，假设改变了 a，请问底层是如何收集依赖，如何触发更新的？所以，修改 a 属性的值，最后 notify 会清空这个 保存 watcher 的队列，进行页面更新！]]></description><category></category></item><item><title><![CDATA[什么是 commonjs2]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/126076728</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/126076728</guid><author>hefeng6500</author><pubDate>Sat, 30 Jul 2022 19:41:38 +0800</pubDate><description><![CDATA[webpackissue的回答https//github.com/webpack/webpack/issues/1114。CommonJS2有export和module.export。CommonJS只有export。]]></description><category></category></item><item><title><![CDATA[react-router 使用 browserHistory 在 nginx 部署不生效解决方案]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/126044635</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/126044635</guid><author>hefeng6500</author><pubDate>Thu, 28 Jul 2022 21:44:12 +0800</pubDate><description><![CDATA[location / {
            root   html/dist;
            index  index.html index.htm;
            try_files $uri /index.html;
        }]]></description><category></category></item><item><title><![CDATA[不创建临时变量交换数组元素]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/125780474</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/125780474</guid><author>hefeng6500</author><pubDate>Thu, 14 Jul 2022 12:07:30 +0800</pubDate><description><![CDATA[不创建临时变量交换数组元素]]></description><category></category></item><item><title><![CDATA[如何用 css 画一个正方体]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/125506378</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/125506378</guid><author>hefeng6500</author><pubDate>Tue, 28 Jun 2022 17:13:51 +0800</pubDate><description><![CDATA[懒得写思路了，直接看代码吧]]></description><category></category></item><item><title><![CDATA[js正则表达式实现千分位符]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/125393082</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/125393082</guid><author>hefeng6500</author><pubDate>Tue, 21 Jun 2022 16:18:57 +0800</pubDate><description><![CDATA[解释
首先理解一下： 正向肯定预查（look ahead positive assert） 和 正向否定预查(negative assert)正向肯定预查（look ahead positive assert）：正向否定预查(negative assert)：/(\d)(?=(\d\d\d)+(?!\d))/g 正则表达式图解：
假设有字符串 ，正则表达式  首先，匹配 ，发现  后面有 ，正向预查到了，所以  会被匹配到；再次向后，匹配  ，发现 , 所以  也被匹配到,如下图
加上 ，还要保证正向预查的]]></description><category></category></item><item><title><![CDATA[JavaScript 高级之各种手写系列]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/125385766</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/125385766</guid><author>hefeng6500</author><pubDate>Tue, 21 Jun 2022 10:17:10 +0800</pubDate><description><![CDATA[JavaScript 高级之各种手写系列]]></description><category></category></item><item><title><![CDATA[手写 promise]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/125338019</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/125338019</guid><author>hefeng6500</author><pubDate>Fri, 17 Jun 2022 17:48:44 +0800</pubDate><description><![CDATA[Promises/A+: https://promisesaplus.com/

[译]Promise/A+ 规范: https://zhuanlan.zhihu.com/p/143204897]]></description><category></category></item><item><title><![CDATA[股票问题 - 121. 买卖股票的最佳时机]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/125154537</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/125154537</guid><author>hefeng6500</author><pubDate>Mon, 06 Jun 2022 21:23:09 +0800</pubDate><description><![CDATA[121. 买卖股票的最佳时机]]></description><category></category></item><item><title><![CDATA[53. 最大子数组和]]></title><link>https://blog.youkuaiyun.com/hefeng6500/article/details/125125797</link><guid>https://blog.youkuaiyun.com/hefeng6500/article/details/125125797</guid><author>hefeng6500</author><pubDate>Sat, 04 Jun 2022 21:28:59 +0800</pubDate><description><![CDATA[53. 最大子数组和给你一个整数数组 nums ，请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。子数组 是数组中的一个连续部分。
解法
1. 暴力解法切记这里双层循环时，定义 sum 的位置，如果放到顶级作用域，就求成了数组中的最大和了。这里是 最大和的连续子数组
时间复杂度：O(n^2)
时间复杂度：O(1)2. 动态规划定义数组 dp[i] 表示第 i 个数结尾的连续子数组的最大和初始化： dp[0] = nums[0]循环顺序：单层循环 nums递推公式：
if dp[i]]></description><category></category></item></channel></rss>