🔖 studynotejavascriptecmascript

前言

和其它面向对象的语言不同——继承只存在于两个不同的类之间——,Javascript 没有真正的类的概念。它采用一种原型链的机制,通过原型对象的连接关系来表达继承:通过某个属性(__proto__)将原型对象连接成树形结构,则所谓的继承即为该树中节点与其祖先节点的血缘关系。在访问某个对象的属性时,会顺着原型对象树往上寻找目标属性,并返回第一个含有此属性的节点的对应属性值。这种继承策略带来的副产品是,可以轻易地通过修改原型对象上的属性使得所有继承它的对象都拥有此新增属性

🔖 codingdebouncethrottle

前言

防抖(debounce)和节流(throttle)在前端开发中十分常见,它们都是针对一个事件被连续触发时限制执行次数的算法,不同的是 debounce 只处理最后一次事件触发,而 throttle 则以一个固定的频率处理事件触发。你可以在这里直观地观察到它们之间的区别。

在开始正文之前,先看一下 Typescript 的两个工具类型

🔖 webweb securitycsrf

前言

本文主要参考了美团技术团队的系列文章:

XSS 攻击

XSS[1] (Cross-site Scripting) 跨站脚本攻击,是一种代码注入攻击。攻击者通过在 web 页面中插入浏览器上可执行的恶意代码,在用户浏览网页时恶意代码会被浏览器执行,从而完成攻击。

🔖 math函数极限自然对数

前言

e 是一个很神奇的常数,长期以来我只知道它是一个很重要的对数底数。以它为底的对数被称为自然对数,它有一个很重要的性质:对数函数 loga(x) 的导数为 1xlna,幂函数 y=ax 的导数为 axlna[1] 也就是说所有对数函数和幂函数的导数都与

🔖 gamesudoku

前言

前一阵子想要整理一下精确覆盖问题和 DLX 算法,为了验证对算法理解的准确性写了一道数独的题目。想起大学时用 C++ 写过一个回溯版的,当时还兴致冲冲地拿它去求解手机上的数独游戏。想到这里时还特意在电脑上翻了好久也没能找到当时的代码;想起那时在 codevs.cn 上做过提交,本来还想去嫌弃下自己当年写的代码的,结果发现 codevs.cn 好像死掉了。

🔖 算法精确覆盖DLX 算法

前言

很早就想要补一下舞蹈链和精确覆盖算法,却一直各种拖延,趁着最近有空,又重新翻开了刘汝佳的书。大学的时候看过几次,甚至照着书里的思路手敲了一遍并通过了例题,但对于算法的原理一直有些不求甚解。很早以前,一位同学告诉我说“现在看不懂的东西不用勉强,以后慢慢就会懂了”,后来也真的在不断印证这句话;但我很担心随着年纪的增长,记忆力和学习能力不断退化之后,恐怕这个 flag 会逐渐倒下。所以趁着眼下尚能理解进去,尽量用自己的语言做一下记录。

🔖 shuffleknuth-shuffle约瑟夫环

对于给定的 N 个数,将其公平地随机打乱,使得每个位置上每个数出现的概率相等。

约瑟夫环

遍历位置 i,每次从剩余的数中随机取一个放到该位置上。由此可以将问题归约到 不定步长约瑟夫环问题,即:N 个人围坐一圈,从 1 开始报数,每次随机一个数 x,报到 x 的人从圈中离开,然后进入下一轮游戏。因为需要求离开的顺序,所以不能使用递推法,只能用树状数组+二分,复杂度为:

© 2017-2025 光和尘有花满渚、有酒盈瓯