【Java】加密工具类Utils

【Java】加密工具类Utils

package cn.jorian.common.util; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.Mac; import javax.crypto.SecretKey;

【JavaScript】手写深拷贝

【JavaScript】手写深拷贝

要点: 递归 判断类型 检查环 不拷贝原型上的属性 const deepClone = (a, cache) => { if(!cache){ cache = new Map() // 缓存不能全局,最好临时创建并递归传递 } if(a instanceof Object) {

【JavaScript】手写 Promise.all

【JavaScript】手写 Promise.all

要点: 知道要在 Promise 上写而不是在原型上写 知道 all 的参数(Promise 数组)和返回值(新 Promise 对象) 知道用数组来记录结果 知道只要有一个 reject 就整体 reject Promise.prototype.myAll Promise.myAll = func

【JavaScript】手写AJAX

【JavaScript】手写AJAX

//什么是Ajax? async JavaScript and XML(JSON) let xhr = new XMLHttpRequest(); xhr.open('GET','/requestHttpDemo'); // xhr.onload = () => { // console

【JavaScript】手写防抖

【JavaScript】手写防抖

// 概念:回城被打断 let debounce = (fn, time, asThis) => { let timer = null; return (...args) => { if (timer) { clearTimeout(time

【JavaScript】手写节流

【JavaScript】手写节流

// 概念:触发CD let debounce = (fn, time, asThis) => { let cooldown = false; let timer = null; return (...args) => { if (cooldown) {