04 2022 档案

摘要:客户端使用https的url访问web服务器,要求与服务器建立ssl连接 web服务器收到客户端请求后, 会将网站的证书(包含公钥)传送一份给客户端 客户端收到网站证书后会检查证书的颁发机构以及过期时间, 如果没有问题就随机产生一个秘钥,然后利用公钥将会话秘钥加密, 并传送给服务端, 服务端利用自己 阅读全文
posted @ 2022-04-29 08:56 下一秒钟已经不同 阅读(59) 评论(0) 推荐(0) 编辑
摘要:四种方式: //Promiseconst sleep = time => { return new Promise(resolve => setTimeout(resolve,time))}sleep(1000).then(()=>{ console.log(1)}) //Generatorfunc 阅读全文
posted @ 2022-04-28 08:38 下一秒钟已经不同 阅读(387) 评论(0) 推荐(0) 编辑
摘要:建议不要这样做。 因为这样做,会导致修改数据的源头不止一处,不利于单项数据流的监控。 如果一定要改,需要委托父组件实现,保证数据修改源头唯一。 子组件中直接修改了父组件的值: 修改值类型数据会报警告, 修改引用类型数据的属性不会,因为引用类型数据存的引用,修改属性不会改变引用地址。 阅读全文
posted @ 2022-04-27 09:32 下一秒钟已经不同 阅读(410) 评论(0) 推荐(0) 编辑
摘要:BFC 就是块级格式上下文。 是页面盒模型布局中的一种 CSS 渲染模式,相当于一个独立的容器,里面的元素和外部的元素相互不影响。 创建 BFC 的方式有: 根元素(<html>) 浮动元素(元素的 float 不是 none) 绝对定位元素(元素的 position 为 absolute 或 fi 阅读全文
posted @ 2022-04-26 09:24 下一秒钟已经不同 阅读(35) 评论(0) 推荐(0) 编辑
摘要:容器管理类似,这里挑一个作说明。 正解: 容器管理的目的是,保证状态的可预测,所以reducer必须是纯函数,因为只有纯函数才能保证相同的输入得到相同的输入。 反解: 使用异步操作的结果(异步操作结果不可预测,成功或失败也不可预测),反应在state中,那么状态将变的不可预测,违背Redux的设计原 阅读全文
posted @ 2022-04-25 14:20 下一秒钟已经不同 阅读(244) 评论(0) 推荐(0) 编辑
摘要:分类 按缓存位置分类 (memory cache, disk cache, Service Worker 等) 它们的优先级是:(由上到下寻找,找到即返回;找不到则继续) Service Worker Memory Cache Disk Cache 网络请求 按失效策略分类 (Cache-Contr 阅读全文
posted @ 2022-04-24 15:32 下一秒钟已经不同 阅读(150) 评论(0) 推荐(0) 编辑
摘要:1. 原生 DOM 操作 vs. 通过框架封装操作。 这是一个性能 vs. 可维护性的取舍。框架的意义在于为你掩盖底层的 DOM 操作,让你用更声明式的方式来描述你的目的,从而让你的代码更容易维护。没有任何框架可以比纯手动的优化 DOM 操作更快,因为框架的 DOM 操作层需要应对任何上层 API 阅读全文
posted @ 2022-04-23 10:06 下一秒钟已经不同 阅读(61) 评论(0) 推荐(0) 编辑
摘要:vue 的响应式原理: vue 采用“数据劫持”+“观察者模式(发布者-订阅者模式)”相结合的方式实现了双向绑定。 具体步骤: 在实例化的时候,使用 Object.definePropery() 方法或 Proxy 构造函数,对 data 进行 getter 和 setter 的处理。 在组件渲染时 阅读全文
posted @ 2022-04-22 09:04 下一秒钟已经不同 阅读(21) 评论(0) 推荐(0) 编辑
摘要:cookie:登陆后后端生成一个sessionid放在cookie中返回给客户端,并且服务端一直记录着这个sessionid,客户端以后每次请求都会自动带上这个sessionid,服务端通过这个sessionid来验证身份。所以别人拿到了cookie,就可以完全替代你。 token:登陆后后端返回一 阅读全文
posted @ 2022-04-21 14:57 下一秒钟已经不同 阅读(657) 评论(0) 推荐(0) 编辑
摘要:在ES5中,顶层对象的属性和全局变量是等价的,var 命令和 function 命令声明的全局变量,自然也是顶层对象。 var a = 12; function f(){}; console.log(window.a); // 12 console.log(window.f); // f(){} 但 阅读全文
posted @ 2022-04-20 08:49 下一秒钟已经不同 阅读(222) 评论(0) 推荐(0) 编辑
摘要:第一阶段——无模块化 将所有JS文件都放在一块,代码执行顺序就按照文件的顺序执行。缺点是污染全局作用域。每一个模块都是暴露在全局中的,容易产生命名冲突。还有要手动处理各代码的依赖关系。 第二阶段——commonJS规范 是一个JavaScript模块化的规范,一个文件就是一个模块,内部定义的变量就属 阅读全文
posted @ 2022-04-19 09:08 下一秒钟已经不同 阅读(179) 评论(0) 推荐(0) 编辑
摘要:浏览器 关于微任务和宏任务在的执行顺序是这样的: 执行一只task(宏任务) 执行完micro-task队列 (微任务) 如此循环往复下去 nodejs Node 10以前: 执行完一个阶段的所有任务 执行完nextTick队列里面的内容 然后执行完微任务队列的内容 Node 11以后:和浏览器一致 阅读全文
posted @ 2022-04-18 09:41 下一秒钟已经不同 阅读(73) 评论(0) 推荐(0) 编辑
摘要:同: 两者都是处理全局状态的工具库,大致实现思想都是:全局state保存状态 >dispatch(action) >reducer(vuex里的mutation) > 生成newState; 异: vuex调用mutation使用commit redux调用reducer使用dispatch 阅读全文
posted @ 2022-04-17 09:28 下一秒钟已经不同 阅读(85) 评论(0) 推荐(0) 编辑
摘要:联系 两种模式本质都是一样的,都是某个对象(subject, publisher)改变,使依赖于它的多个对象(observers, subscribers)得到通知。 区别 发布-订阅模式是观察者模式的一种变体。发布-订阅只是把一部分功能抽象成一个独立的ChangeManager。 主要关键点都在于 阅读全文
posted @ 2022-04-16 09:08 下一秒钟已经不同 阅读(198) 评论(0) 推荐(0) 编辑
摘要:1. 浏览器渲染机制 浏览器采用流式布局模型(Flow Based Layout) 浏览器会把HTML解析成DOM,把CSS解析成CSSOM,DOM和CSSOM合并就产生了渲染树(Render Tree)。 有了RenderTree,我们就知道了所有节点的样式,然后计算他们在页面上的大小和位置,最后 阅读全文
posted @ 2022-04-15 10:57 下一秒钟已经不同 阅读(114) 评论(0) 推荐(0) 编辑
摘要:主要有三个:Object.prototype.toString.call() 、 instanceof 以及 Array.isArray(),对比如下: Object.prototype.toString.call() 优点:这种方法对于所有基本的数据类型都能进行判断,即使是 null 和 unde 阅读全文
posted @ 2022-04-14 10:37 下一秒钟已经不同 阅读(244) 评论(0) 推荐(0) 编辑
摘要:1. npm 模块安装机制: 发出npm install命令 查询node_modules目录之中是否已经存在指定模块 若存在,不再重新安装 若不存在 npm 向 registry 查询模块压缩包的网址 下载压缩包,存放在根目录下的.npm目录里 解压压缩包到当前项目的node_modules目录 阅读全文
posted @ 2022-04-13 08:53 下一秒钟已经不同 阅读(92) 评论(0) 推荐(0) 编辑
摘要:一、三次握手讲解 客户端发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,服务器由SYN=1知道客户端要求建立联机(客户端:我要连接你) 服务器收到请求后要确认联机信息,向A发送ack number=(客户端的seq+1),syn=1,ack=1,随机产生seq=7 阅读全文
posted @ 2022-04-12 08:37 下一秒钟已经不同 阅读(31) 评论(0) 推荐(0) 编辑
摘要:在 HTTP/1 中,每次请求都会建立一次HTTP连接,也就是我们常说的3次握手4次挥手,这个过程在一次请求过程中占用了相当长的时间,即使开启了 Keep-Alive ,解决了多次连接的问题,但是依然有两个效率上的问题: 第一个:串行的文件传输。当请求a文件时,b文件只能等待,等待a连接到服务器、服 阅读全文
posted @ 2022-04-11 08:56 下一秒钟已经不同 阅读(599) 评论(0) 推荐(0) 编辑
摘要:先理清楚 new 关键字调用函数都的具体过程,那么写出来就很清楚了 首先创建一个空的对象,空对象的__proto__属性指向构造函数的原型对象 把上面创建的空对象赋值构造函数内部的this,用构造函数内部的方法修改空对象 如果构造函数返回一个非基本类型的值,则返回这个值,否则上面创建的对象 func 阅读全文
posted @ 2022-04-10 11:19 下一秒钟已经不同 阅读(61) 评论(0) 推荐(0) 编辑
摘要:回调函数 • 优点:简单、容易理解• 缺点:不利于维护,代码耦合高 事件监听(采用时间驱动模式,取决于某个事件是否发生) • 优点:容易理解,可以绑定多个事件,每个事件可以指定多个回调函数• 缺点:事件驱动型,流程不够清晰 发布/订阅(观察者模式) • 类似于事件监听,但是可以通过‘消息中心‘,了解 阅读全文
posted @ 2022-04-09 09:36 下一秒钟已经不同 阅读(21) 评论(0) 推荐(0) 编辑
摘要:事件循环是通过任务队列的机制来进行协调的。 任务队列 JS分为同步任务和异步任务 同步任务都在主线程上执行,形成一个执行栈 主线程之外,事件触发线程管理着一个任务队列,只要异步任务有了运行结果,就在任务队列之中放置一个事件。 一旦执行栈中的所有同步任务执行完毕(此时JS引擎空闲),系统就会读取任务队 阅读全文
posted @ 2022-04-08 13:36 下一秒钟已经不同 阅读(62) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示