摘要: 加密的目的,简而言之就是将明文转换为密文、甚至转换为其他的东西,用来隐藏明文内容本身,防止其他人直接获取到敏感明文信息、或者提高其他人获取到明文信息的难度。通常我们提到加密会想到密码加密、HTTPS 等关键词,这里从场景和方法分别提一些我的个人见解。 场景-密码传输 前端密码传输过程中如果不加密,在 阅读全文
posted @ 2022-06-30 10:54 下一秒钟已经不同 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 不考虑正则、函数等奇怪类型的拷贝,满足大多数深度拷贝需求定制需求如下:1、循环引用2、Symbol 类型拷贝 function deepClone(val,map = new WeakMap()){ if(val null || typeof val !=='object') return val; 阅读全文
posted @ 2022-06-28 08:40 下一秒钟已经不同 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 事件代理作用主要是 2 个 将事件处理程序代理到父节点,减少内存占用率 动态生成子节点时能自动绑定事件处理程序到父节点 阅读全文
posted @ 2022-06-27 10:07 下一秒钟已经不同 阅读(256) 评论(0) 推荐(0) 编辑
摘要: bfs利用队列实现,循环中做的是push => shift => push => shift dfs利用栈实现,循环中做的是push => pop => push => pop 刚刚好,中间仅仅差了一个数组方法: function bfs(target, id) { const quene = [. 阅读全文
posted @ 2022-06-23 09:16 下一秒钟已经不同 阅读(44) 评论(0) 推荐(0) 编辑
摘要: https协议由 http + ssl 协议构成,具体的链接过程可参考SSL或TLS握手的概述 中间人攻击过程如下: 服务器向客户端发送公钥。 攻击者截获公钥,保留在自己手上。 然后攻击者自己生成一个【伪造的】公钥,发给客户端。 客户端收到伪造的公钥后,生成加密hash值发给服务器。 攻击者获得加密 阅读全文
posted @ 2022-06-22 14:01 下一秒钟已经不同 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 大概思路是,用正则替换掉关键词。 let panter = new RegExp(关键词, 'g') 该行字符串.replace(panter, '<b style="color: #2D7BFF">' + 关键词 + '</b>') 阅读全文
posted @ 2022-06-17 10:07 下一秒钟已经不同 阅读(15) 评论(0) 推荐(0) 编辑
摘要: Promise._race = promises => new Promise((resolve, reject) => { promises.forEach(promise => { promise.then(resolve, reject) }) }) 阅读全文
posted @ 2022-06-16 10:54 下一秒钟已经不同 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 时间复杂度为O(n): 其他遍历 function convert(list) { const res = [] const map = list.reduce((res, v) => (res[v.id] = v, res), {}) for (const item of list) { if ( 阅读全文
posted @ 2022-06-15 15:54 下一秒钟已经不同 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 思路应该是对 URL的组成部分 分别进行校验 protocol domain name port path (不用校验) params anchor (不用校验) 代码: 1、使用组成部分判断 const isUrl = urlStr => { try { const { href, origin, 阅读全文
posted @ 2022-06-13 11:03 下一秒钟已经不同 阅读(37) 评论(0) 推荐(0) 编辑
摘要: function sum(arr, target) { const res = [] for (let i = 0; i < arr.length; i++){ const a = target - arr[i] const index = arr.indexOf(a,i) if (index>=0 阅读全文
posted @ 2022-06-10 08:50 下一秒钟已经不同 阅读(22) 评论(0) 推荐(0) 编辑