JS 节流与防抖(附 React Hooks)
在搜索框里敲「react」:r、re、rea、reac、react——如果每次敲键都发一次请求,一次输入就白白浪费 4 次网络请求,而且前 4 次的结果你根本来不及看,它们已经在回来的路上了。再往下想:滚动页面时 onScroll 一秒钟触发几十次,resize 拖拽时更是每帧一次。
这类问题有一个共同的名字:事件风暴——短时间内触发太多次,而真正需要执行的只有少数几次。
在搜索框里敲「react」:r、re、rea、reac、react——如果每次敲键都发一次请求,一次输入就白白浪费 4 次网络请求,而且前 4 次的结果你根本来不及看,它们已经在回来的路上了。再往下想:滚动页面时 onScroll 一秒钟触发几十次,resize 拖拽时更是每帧一次。
这类问题有一个共同的名字:事件风暴——短时间内触发太多次,而真正需要执行的只有少数几次。
export { Editor, Element, Location, Node, Operation, Path, PathRef, Point, PointRef, Range, RangeRef, Span, Text, Transforms, createEditor };
react组件间的状态共享只能通过将state提升至公共祖先实现,带来一个显而易见的问题就是开发效率低
计算机 3D 图形的历史可以追溯到 20 世纪 60 年代,几乎和计算机本身的历史一样长。它被广泛应用于工程、教育、培训、建筑、金融、销售、市场、博彩、娱乐等各个领域。曾经 ,3D 图形只能用计算机软件渲染。如今,所有的计算机和移动设备都搭载了 3D 图形处理硬件,普通智能手机甚至有着比五年前的专业图形工作站更为优秀的图形处理能力。更重要的是现代 Web 浏览器也支持了 3D 渲染,相比昂贵的 3D 专用渲染 件,浏览器显然更普遍,更易于获取,并且是免费的。
两个合法编码对应位之间比较,有多少位编码不同,又称为海明距离。比如 10101 和 00110 就是(从高到低 1,4,5 位不同,码距为 3)
计算海明距离的一种方法,就是对两个位串进行异或(xor)运算,并计算出异或运算结果中 1 的个数。例如 110 和 011 这两个位串,对它们进行异或运算,其结果是:
之前入手了一台miniPC安装好了Ubuntu,并通过frp内网穿透部署好了gitlab。现在决定重拾荒废的Blog,并做成自动部署。
本文想达到的目的是在任意一台主机编写Blog,并能够做到提交后自动部署。
当前hexo版本5.0以上(安装主题的方式有所不同)
npm install -g hexo-cli
hexo init myblog
cd myblog
npm install
一般我们需要专门为服务创建不同用户及用户组,以便做好权限管理。 当前是以root用户登录服务器的
useradd blog
passwd blog #设置用户密码
usermod -a -G root blog #设置组
为了方便,直接将blog用户加到了root组里面
届时会通过git的钩子方法自动将文件复制到静态文件夹
mkdir /home/blog/repo/
chown -R blog:root /home/blog/repo/
chmod -R 755 /home/blog/repo/
cd /home/blog/repo/
git init --bare hexo_static.git
既然创建了专用的用户账号,就把相应的资源放在用户目录下/home/blog/就是用户home目录,我们将文件都放到home目录的repo目录中
柯里化(Currying)是函数式编程里最常被提起、也最常被误解的概念之一。面试喜欢问,但很多人只背得住一句「把多参函数变成单参函数的链式调用」,说不清它从哪来、为什么存在、以及它到底划算不划算。
这篇文章把三件事讲透:它是谁发明的、它解决什么问题、它的代价是什么。
手写系列的意义不是「记住答案」,而是把 API 背后那句被藏起来的话重新说出来:「改变 this」本质是什么?「异步」到底是怎么串起来的? 顺着 apply → call → bind → Promise 这条线写下来,你会发现它们是一脉相承的——前面三个解决的是一件事(函数调用时的 this 和参数),最后一个把「回调」正式升级成了「一等公民」。