链表的中间节点 发表于 2021-06-01 | 分类于 数据结构 字数统计: 538 字 | 阅读时长 ≈ 2 分钟 题目描述:给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 阅读全文 »
canvas 实现吸色功能 发表于 2021-05-24 | 分类于 JavaScript 字数统计: 2.4k 字 | 阅读时长 ≈ 10 分钟 需求介绍实现吸管功能: 当点击吸管图标,出现遮罩层,突出需要吸色的画布 鼠标移动至画布,显示放大镜 放大镜中有网格线与中心点小方格。取色取的是中心点小方格的色值 网格线里的每个小方格都是像素点 放大镜需要一直出现在画布中,即鼠标移到画布的各个角落,放大镜都在 处理图像首先需要将图片 ... 阅读全文 »
Vue3-diff算法 发表于 2021-03-30 | 分类于 Vue 字数统计: 3k 字 | 阅读时长 ≈ 12 分钟 前言Vue3.x借鉴了 ivi算法和 inferno算法。在创建 VNode 时就确定其类型,以及在 mount/patch 的过程中采用位运算来判断一个 VNode 的类型,在这个基础之上再配合核心的 Diff 算法,使得性能上较 Vue2.x有了提升。 该算法中还运用了动态规划的思想求解最长递归子序列 阅读全文 »
Vue2-diff算法 发表于 2021-03-09 | 分类于 Vue 字数统计: 2.4k 字 | 阅读时长 ≈ 10 分钟 前言当 dom 发生更改时候,Vue 会用虚拟 dom 进行 diff 算法,diff 算法采用的是同层的树节点比较的方式,时间复杂度只有O(n),是一种相当高效的算法。diff 的过程就是调用了名为 patch 的函数( patch 机制),它的主要功能是比对两个 VNode 节点,将「差异」更新到视图上。 Vue2 的 diff 算法,参考了 snabbdom.js ,使用的是 双端比较算法。 阅读全文 »
Virtual DOM 发表于 2021-03-09 | 分类于 Vue 字数统计: 534 字 | 阅读时长 ≈ 2 分钟 Virtual DOM 是对真实 DOM 的抽象,用一个原生的 JS 对象去描述一个 DOM 节点,其关键属性有标签名、数据、子节点等。 在 Vue.js 中,Virtual DOM 是用 VNode ,一个 Class 去描述,通过 VNode 的 elm 属性可以访问到对应的 Node 阅读全文 »