avatar

光和尘

有花满渚、有酒盈瓯

目录检索关于我

🔖 studynotejavascriptecmascript

前言

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

CAUTION

__proto__ 虽然被纳入了 ECMA 标准中,但目前它是不被推荐使用的,请使用 Reflect.getPrototypeOf()Reflect.setPrototypeOf()

🔖 codingdebouncethrottle

前言

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

在开始正文之前,先看一下 Typescript 的两个工具类型 ParametersReturnType,引入它们的目的是因为 debouncethrottle 的实现都以高阶函数的方式展现,本着作死无极限精益求精的态度,在实现时自然要考虑返回的函数和原函数应具有相同的参数类型的调用体验啦。

  • Parameters: Typescript@3.1 引入的工具类型,用于获取一个函数的参数类型

🔖 webweb securitycsrf

前言

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

XSS 攻击

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

根据攻击的来源,XSS 攻击可分为存储型、反射型和 DOM 型三种:

  • 存储型 XSS 攻击步骤

    1. 攻击者将恶意代码提交到目标网站的数据库中(如在输入框中输入 "><script>alert('xss')</script>);
    2. 用户访问目标网站,服务端从数据库中取出包含恶意代码的数据,未经正确转义就通过模板引擎渲染成 HTML 返回;

🔖 math函数极限自然对数

前言

e 是一个很神奇的常数,长期以来我只知道它是一个很重要的对数底数。以它为底的对数被称为自然对数,它有一个很重要的性质:对数函数 \log_a(x) 的导数为 \displaystyle \frac{1}{x\ln a},幂函数 y=a^x 的导数为 a^x\ln a[1] 也就是说所有对数函数和幂函数的导数都与 e 有关。

为了理解它为什么被称为自然对数,翻阅了一些网上的资料,发现不少都拿银行的复利来举例;此外 e 还与对数螺旋线有关。如果你只是对 e 为什么被称为自然对数感兴趣,推荐直接阅读下面两篇文章,本文更多的是记录一些和 e 相关的数学式子和证明:

🔖 gamesudoku

前言

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

时间过得可真快,转眼间又是几个春秋。而我仿佛总是在迟到,好几件事情都没能在最希望完成的时候做到,却又在过后耿耿于怀,不甘心地追逐着过去的时空里所发生的期待。不是在原地踏步,可还是开始动摇,想必继续往前的地方是没有尽头的。

什么是数独

一个经典的数独游戏由 x^2 \times x^2

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