前端知识粉碎机

news2024/9/20 5:41:46

diff算法

在这里插入图片描述
在这里插入图片描述
Dep的作用是收集观察者以及当数据发生变动时通知观察者去更新。
Dep.notify()通知观察者去更新。
当数据改变时,就会触发setter,然后触发Dep.notify,通知订阅者,比对新旧虚拟节点,判断是否是同类标签,如果不是同类标签,直接替换,如果是同类标签,判断新旧虚拟是否相等,相等直接return,不相等的话再分情况比较。如果新旧虚拟节点都有文本节点,用新的文本替换旧文本。旧虚拟节点没有子节点,新虚拟节点有子节点,增加新的子节点。
旧虚拟节点有子节点,新虚拟节点没有子节点,删除旧的子节点。新虚拟节点和旧虚拟节点都有子节点,进行子节点更新。

在这里插入图片描述

比较顺序是 oldStart与newStart—>oldStart与newEnd—>oldEnd与newStart—>oldEnd与newStart 依次比较,直到比较成功后退出当前比较,渲染结果以newVnode为准,每次比较成功后start和end向中间靠拢,当新旧节点中有一个start点跑到end点右侧时终止比较,如果都匹配不到,则旧虚拟DOM key值去比对新虚拟DOM 的key值,如果key相同则复用,并移动到新虚拟DOM的位置。

JS执行机制

JS是单线程语言,分为同步和异步。
同步不需要等待。
异步需要等待一会儿例如setTimeout,网络请求等。
异步任务分为宏任务和微任务
在这里插入图片描述

宏任务不需要立即连贯执行。例如script setTimeout setInterval setImmediate
微任务需要立即连贯执行。例如new Promise().then process.nexTick

在这里插入图片描述

HTTP缓存

HTTP缓存使网页打开速度更快,使服务器压力减小。
Expires 设置过期时间
在这里插入图片描述

在这里插入图片描述
Exprise时间是服务端返回的,比对的确实客户端时间,服务端与客户端时间不一致怎么办?
Cache-Control 采用过期时长
在这里插入图片描述
除了max-age指令外,还有一些其他常用指令。
在这里插入图片描述
在这里插入图片描述

当服务器压力太大,缓存又过期了怎么办?

缓存分为强缓存和协商缓存。
强缓存就是在缓存没有过期的时候,浏览器可以直接决定使用缓存。
在这里插入图片描述
协商缓存,当缓存过期时,浏览器咨询服务器时候可以使用缓存,服务器返回可以使用或者不可以使用。
在这里插入图片描述
如何协商缓存过程?

在这里插入图片描述
浏览器向服务器发送浏览器请求,服务器返回最后修改时间,浏览器以后每次请求,都带上这个值,然后服务器去比对服务端资源最后修改时间,如果不过时,可以用,返回304。如果过时了,正常返回新的资源,返回200状态。
但是Last-Modified是以秒记录的,服务器对一秒内改变无感,会造成有新资源改变却返回没有改变的问题。
用ETag
在这里插入图片描述

DNS域名解析过程

在这里插入图片描述
DNS域名解析分为本地解析和互联网域名服务器解析。首先是本地解析,现在浏览器中查看是否有DNS缓存,如果没有再去操作系统查看是否有DNS缓存,如果没有再去本地HOST文件查看。然后是物联网域名服务器解析,询问本地NDS服务器知道www.sixue.com的IP地址吗,先去本地DNS服务器缓存查看,如果没有,去询问根服务器,根服务器让本地DNS服务器去询问COM顶级域名服务器,COM顶级域名服务器让本地DNS服务器询问sixue.com权威域名服务器,sixue.com权威域名服务器找到ID地址返回给本地DNS服务器,再告诉客户端。

TCP三次握手

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
客户端主动开启SYN-SEND,服务端被动开启SYN-RCVD。
客户端向服务端发送SYN=1建立新连接,seq=x 随机序列号值为x ,服务端收到后,再向客户端发送SYN=1代表同意建立新连接,ACK=1确认序列号有效,seq=y随机序列号值为y,ack确认值为x+1。然后客户端再向服务端发送ACK=1代表确认序列号y值有效,seq=x+1序列号为原先的x值+1,ack=y+1确认服务端发送的序列号y值有效,就+1。然后就可以进行数据传输了。

学会使用Promise

在这里插入图片描述
这就是回调地域。
promise 优雅的去表示异步回调
在这里插入图片描述
在这里插入图片描述
只能由pending转为fulfilled或者rejected
不能由fulfilled或者rejected的变灰pending
在这里插入图片描述
then支持链式调用

简化业务需要
在这里插入图片描述
在这里插入图片描述
finally 无论是fullfilled还是rejected 都会执行。
all 所有都fullfilled 才会执行 有一个rejected都不行
allSettled 所有的有结果就会执行,无论fullfilled还是rejected
any 任意一个fullfilled就会执行
race 任意一个fullfilled或者rejected就会执行。
reject 返回一个状态为rejected的promise对象
在这里插入图片描述

递归算法

在这里插入图片描述
斐波那契数列

在这里插入图片描述
在这里插入图片描述

快速排序

快速排序的特点是每次找一个基准值,比基准值小的排基准值左侧,大的排基准值右侧。

在这里插入图片描述
在这里插入图片描述

了解XSS攻击与防范

XSS—侧重于脚本,千方百计的注入并执行恶意脚本。
CSRF----不注入恶意脚本,侧重于请求伪造,借刀杀人,在用户不知情的情况下,借用户的名义干坏事。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
预防
先注入再执行 ,防止注入,防止执行。
在这里插入图片描述

手写promise及原理

算了吧 太多了

防抖和节流

防抖 回城
在这里插入图片描述

节流 CD

在这里插入图片描述
在这里插入图片描述

for in 和 for of的区别

迭代器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口,就可以完成遍历操作。
ES6创造了一种新的遍历命令for…of循环,Iterator接口主要供for…of消费
原生具备iterator接口的数据(可用for of 遍历)可迭代对象
Array Arguments Set Map String TypedArray NodeList

工作原理
1.创建一个指针对象,指向当前数据结构的起始位置
2.第一次调用对象的next方法,指针自动指向数据结构的第一个成员
3.接下来不断调用next方法,指针一直往后移动,直到指向最后一个成员
4.每调用next方法返回一个包含value和done属性的对象。

对象不是可迭代对象 不能用for of

Object.keys

 const obj = {
        nickname: "sss",
        age: 18,
        gender: "女",
      };

      // 第一种
      const keys = Object.getOwnPropertyNames(obj);
      console.log(keys);

      for (let key of keys) {
        console.log(obj[key]);
      }

      // 第二种
      for (let key in obj) {
        console.log(obj[key]);
      }

      // 第三种
      const keys1 = Object.keys(obj);
      console.log(keys1);

      for (let key of keys1) {
        console.log(obj[key]);
      }

Set和Map

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Emlog博客文章图片自动加水印插件

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 给Emlog博客的上传图片添加水印可以有效地保护作品版权,有效地打击那些转载文件不留原作者地址的垃圾网站,部分Emlog博主通常都是手动给图片添加水印,…

MySQL学习记录(7)SQL优化

3. SQL优化 3.1、插入数据 3.1.1 insert 如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化 insert into tb_test values(1,tom); insert into tb_test values(2,cat); insert into tb_test values(3,jerry); .....(1&#xf…

cartgrapher ukf 代码清晰属实不错

文章目录原理UKFSigma and weightUKF AlgorithmUT/UKF/EKF Summarycato_code外围函数检测是否为对称矩阵矩阵的开方根高斯分布UKF 代码实现类预测观测更新点评原理 UKF KF 系列求解: Kalman filter 需要线性模型EKF通过泰勒展开线性化更好的方式线性化 -> Unsc…

【OpenCV学习】第6课:图像模糊(中值滤波,高斯双边滤波)

仅自学做笔记用,后续有错误会更改 理论 中值滤波:对核内数值先进行排序,再取中间那个值 注1:中值滤波属于统计学的排序滤波器 注2:中值滤波对椒盐噪声有很好的抑制作用 高斯双边滤波(美颜磨皮效果一般都是用的这个)&#xff1a…

JAVA中的基本数据类型

文章目录0 写在前面1 特点2 举例说明2.1 数字型2.2 字符型布尔型3 写在最后0 写在前面 Java 语言支持 8 种基本数据类型:byte,short,int,long,float,double,char 和 boolean 1 特点 基本数据…

Java项目:SSM网上外卖订餐管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 该项目为前后台项目,分为普通用户与管理员两种角色,前台普通用户登录,后台管理员登录; 普通用户…

区分度评估指标-KS

1.背景 KS指标来评估模型的区分度(discrimination),风控场景常用指标之一。本文将从区分度的概念、KS的计算方法、业务指导意义、几何解释、数学思想等多个维度展开分析,以期对KS指标有更为深入的理解认知。 Part 1. 直观理解区…

javaee之黑马旅游网2

下面我们来做邮件激活功能 提示邮箱需要登录才能进行账号激活 保证用户填写的邮箱是正确的,可以推广宣传信息到邮箱中 下面分成两部分来做: 第一部分:发送邮件 这个功能就是通过工具类来进行实现的,直接从网上copy的代码 Mai…

痞子衡嵌入式:浅谈i.MXRT1xxx系列MCU时钟相关功能引脚的作用

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT1xxx系列MCU时钟相关功能引脚作用。 如果我们从一颗 MCU 芯片的引脚分类来看芯片功能,大概可以分为三大类:电源、时钟、外设功能。作为嵌入式开发者&#…

service 详解

8.3.3 HeadLiness类型的Service 在某些场景中,开发人员可能不想使用Service提供的负载均衡功能,而希望自己来控制负载均衡策略,针对这种情况,kubernetes提供了HeadLiness Service,这类Service不会分配Cluster IP&…

在线表单设计器都有哪些优秀的功能?

当前,在大数据时代的发展背景下,自定义的在线表单设计器是提升办公效率和协作效率的工具。可视化表单工具丰富的组件、简单的操作等优势特点得到了很多客户的喜爱和支持。那么,您知道在线表单设计器的功能都有哪些吗?通过这篇文章…

前端_Vue_1.初识Vue

文章目录一、前言二、开始1. 简介1.1. 什么是Vue?1.2. 渐进式框架1.3. 单文件组件1.4. API风格1.4.1. 选项式API(Options API)1.4.2. 组合式API(Composition API)1.4.3. 该选哪个?2. 快速上手(学…

导出微信通讯录

不知道什么时候,微信好友已经增加到了几百人,熟悉的、不熟悉的人都淹没在一溜的名字里,今天来整理一下微信通讯录,该删的、该分组的都搞一搞。 首先,导出微信的通讯录 单击微信左下角“菜单”,选择“设置…

为什么我们不支持手工上传镜像

自从我们提供公共镜像库以来,不少同学询问是否支持手工上传镜像到镜像库。答案是:不支持。 今天给大家聊一聊为什么公共镜像库不应该支持手工上传,主要基于以下几个方面的考量: Code First 建木作为一个完整实现GitOps理念的工…

matlab⾼级绘图时间距离图像

这限制了可能在legend上⼯作以实现⽬标的可能性。 可能的解决⽅案是按照以下步骤创建⾃⼰的基于轴的图例: 使⽤以下语法[lgd,icons,plots,txt] legend(___)创建调⽤legend函数的图例(注意,不建议使⽤此语法,我们将在后续步骤中删除图例&…

2022年HNUCM信息科学与工程学院第五届新生赛——正式赛

2022年HNUCM信息科学与工程学院第五届新生赛——正式赛 A 打卡题&#xff0c;向下取整即可 #include<iostream> using namespace std; int main() {int n;cin >> n;cout << n / 7 << endl;return 0; }B 统计数量&#xff0c;注意要是不能整除需要向…

《痞子衡嵌入式半月刊》 第 62 期

痞子衡嵌入式半月刊&#xff1a; 第 62 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻&#xff0c;农历年分二十四节气&#xff0c;希望在每个交节之日准时发布一期。 本期刊是开源项目&#xff08;GitHub: JayHeng/pzh-mcu-bi-weekly&#xff09;&#xff0c;欢…

JAVA班主任管理系统(源代码+论文)

毕业综合实训报告 班主任管理系统设计与实践 目 录 摘要 ………………………………………………………………………Ⅰ &#xff08;空2行&#xff0c;本页行间距为最小值14磅&#xff09; 目录………………………………………………………………………………… 1 第1章 绪…

【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.1 效果演示、技术点

Qt 中绘图用到的类是 QPainter&#xff0c;可以实现点、线、矩形、圆形、多边形、圆弧、饼图、图片等的绘制 什么时候会用到绘图&#xff1f; 需要简单绘制时 比如&#xff0c;绘制温度的曲线时&#xff0c;如下&#xff1a; 自定义控件 绘图最大的一个应用场景就是自定义控…

三 TypeScript变量

流程控制 计算机执行程序的时候是按照从上到下从左到右逐行进行 我们常见的流程&#xff1a; 顺序 分支循环 分支结构 分支结构 单分支 语法结构 if(表达式){代码块}执行逻辑:当程序遇到if结构,首先判断表达式的值,如果表达式的值为真,则执行大括号里面的代码块,如果表达…