目录
一个函数如果访问了外层作用域的变量,就是闭包
作用:避免命名冲突、解决循环绑定引发的索引问题、使函数内部变量不被销毁
应用场景:
缺点:会出现内存泄漏的问题
对于高频触发的时间,用防抖节流来减少调用频率
搜索框输入、窗口大小调整等
滚动加载、搜索联想
强制缓存在未失效的时候会直接用浏览器的缓存,不会向服务器发送请求
强制缓存生效时状态码为200
相关请求头:cache-control / Expires / Pragma
当第一次请求时服务器返回的响应头没有cache-control / Expires或过期或属性设置为no-cache,浏览器第二次请求时就会与服务器协商,如果没有修改返回304,告诉浏览器可以使用缓存,如果数据有更新则返回200,将更新数据一起返回
相关请求响应头:ETag/If-Not-Match 、Last-Modified/If-Modified-Since
Pending 进行中
Fulfilled 已成功
Rejected 已失败
.then第一个参数是resolve状态的回调函数,第二个是rejected
.catch方法是 .then(null, rejection)的别名,一般用来代替then方法的第二个参数
.finally方法用于不管promise最后状态如何都会执行的操作
all() 多个promise包装成一个新的,都fulfilled才完成,有一个rejected就rejected,但如果promise自己有catch就不会进入all方法的catch
race() 只要有一个promise状态改变就改变
Hash和history
工作原理是hashChange事件,url后添加#xxx触发这个事件。#后的hash变化不会导致浏览器向服务器发出请求,即不会刷新页面,触发hashChange事件,通过监听hash值来实现更新页面部分内容
Vue-router默认的是hash模式。
会创建HashHistory对象,访问不同路由时使用HashHistory.push()或HashHistory.replace()
用H5的pushState()和replaceState()两个api结合window.popstate事件
pushState设置的url可以试当前url同源的任意url,而hash只能修改#后的部分
pushState设置的url和当前一模一样也会记录到栈中,hash设置的必须不一样才会记录
pushState通过stateObject可以添加任意类型的数据到记录中,hash只可是短字符串
hash兼容IE8以上,history兼容IE10以上
history模式需要后端配合将所有访问都指向index.html,否则会导致404
宏任务 Macrotask是指Event Loop在每个阶段执行的任务
script、setTimeout、setInterval、setImmediate、I/O、UI rendering
微任务 Microtask是指Event Loop在每个阶段间执行的任务
promise.then、process.nextTick、Object.observe、MutationObserve
Number、String、Boolen、Symbol、Null、Undefined、Object
Event Loop:主线程会不断从任务队列中按顺序取任务执行,每执行完一个任务都会检查微任务队列是否为空,如果不为空会一次性执行完所有微任务,再进入下一个循环去任务队列中取下一个任务执行。
Async/await:执行到await时若返回的是promise对象会阻塞当前async代码块下面的代码,先执行await中的同步代码,然后执行当前async外的同步代码,等同步代码都执行完后再回到async中,等promise状态达到fulfilled再执行之后的代码。若await返回的不是promise对象,同步代码执行完会回到当前async中执行。
子类具有父类的各种属性和方法,不需要再次编写
实现方式:
不能传参;
Object.create是浅拷贝,多个实例的引用类型指向同一地址,会被篡改
可传参,不共享父类引用属;
调用了两次父类构造函数
登录了信任网站的情况下,浏览器自动保存了cookie,进入攻击网站,并在攻击网站的诱导下触发对信任网站的请求。由于cookie还在有效期内,请求会被处理
措施:
通过页面设计时候的缺陷,利用浏览器对某处代码的解析,让浏览器执行恶意代码。如,HTML中内嵌的文本、内联JS、标签的href、src属性、onload/onerror/onclick等事件中注入突破原本限制的代码
持久型xss:将脚本植入服务器数据库里,导致每个访问的用户都会执行
非持久型:恶意代码存在url里
措施:
(大部分浏览器都自带xss筛选器,vue等框架也对xss有一些防护)
Vue是一个用于创建用户界面的js框架,它的核心特性是:
Model模型层:负责处理业务逻辑和服务器进行交互
View视图层:负责将数据模型转化为UI展示出来
ViewModel视图模型层:用来连接M和V,与View之间双向绑定,帮助我们完全避免了对DOM的操作(只操作数据,界面的变动是根据数据双向绑定出来的)
MVC模式:模型 / 视图 / 控制
Vue允许通过组件来拼装一个页面,每个组件都是一个可复用的Vue实例,组件里可以包含自己的数据,视图和代码逻辑,方便复用
带有v-前缀的特殊属性,当表达式的值改变时,响应式地作用于DOM
自定义指令:Vue.directive(),第一个参数是指令名,不带v-;组件options选项中设置directive属性,directive:{ focus:{} }。然后再模板中使用v-focus
content、border(粗细,样式,颜色)、padding(受盒子background影响)、margin
标准盒模型:width/height + padding + border + margin
怪异盒模型:width/height + margin,width/height包含了padding和border
ID(#box)、class(.one)、标签 (p)、通用、属性([attribute] 所有带有attribute属性的元素)、伪类(:hover)、伪元素(::first-line)、子选择器(.one>one_1),相邻选择器(.one+.two 紧接在.one后的所有.two)
!import > 内联 > ID > 类、伪类 > 标签、伪元素 > 子选择器、相邻选择器
遍历:reduce、map、filter、every、some、forEach
改变:push、pop、shift、unshift、splice、sort、reserve
不变:join、slice、concat
concat
返回子串:slice、substr、substring
删除空格:trim、trimLeft、trimRight
repeat复制、toLowerCase转小写、toUpperCase转大写
chatAt、indexOf、includes
split转数组
有变量提升,未赋值时是undefined
可重复声明
作用域是方法作用域,在非函数作用域中定义就是全局变量
声明的变量只在局部起作用
声明前使用会报错
不可重复声明
有let的所有特性
声明时必须初始化,之后不可更改(实际是地址不可更改)
get方法请求一个指定资源,应只被用于获取数据;post方法用于将实体提交到指定资源,通常会导致服务器上的状态变化
get回退无害,post会再次提交请求
get请求参数会被完整保留在浏览器历史记录里,post不会
get在url中传送的参数是有长度限制的,post没有
get不安全,因为参数直接暴露在url上,所以不能用来传递敏感信息
get参数通过url传递,post放在request body中
1消息,2成功,3重定向,4请求错误,5服务器错误
200返回数据;201服务器创建了新资源
301永久移动;302临时移动;
401未授权;403拒绝请求;404找不到请求;405方法错误
502网关错误,上游出问题;503服务不可用;504超时
Accept 能够接受的回应内容类型
Authorization 认证信息
Cache-control 指定缓存机制
Connection 浏览器想要优先使用的连接类型
Cookie 服务器发送的一个超文本传输协议cookie
Content-Type 请求体的多媒体类型
Content-Type: application/x-www-form-urlencoded
Date 发送该消息的日期
Expect 客户端要求服务器做出的特定行为
Host 服务器的域名和端口号
User-Agent 浏览器的身份标识
读取文件的内容,用MD5实现文件的唯一性,然后对文件进行分割(用Blob的slice方法,包含md5值,文件大小,共多少块,第多少块),上传
后端可以根据前端传的md5值,到服务器查找之前文件的合并信息,返回数据告诉前端从第几节上传,实现断点续传
访问页面时,先把图片的路径替换成一张占位图的路径,当图片进入可视区域才把图片路径替换成真实路径
监听页面滚动,当元素到浏览器窗口的距离(offsetTop)小于document到浏览器窗口的距离(scrollTop)+可视区域的高度(document.body. clientHeight),img.src改成真实路径
1) top/left/right/bottom都设置为0,margin: auto
2) top: 50%,margin:负自身的50%,如margin:-50px
3) top:50%,transform:translate(-50%,-50%)
基本类型存储在栈中,引用类型额对象存储在堆中,引用地址放在栈中
实际是v-bind和input事件
:value=”value” @input=”value = $event.target.value”
父传子,子组件设置props属性,接受父组件传来的参数
子传父,通过$emit触发自定义事件,第二个参数为传递的数值,父组件绑定监听器获取组组件传来的参数
父组件在使用子组件的时候设置ref属性ref=” xxx”,this.$refs.xxx获取子组件实例
兄弟组件传值,创建一个中央时间总线EventBus,兄弟组件通过$emit触发自定义事件,另一个兄弟组件通过$on监听自定义事件
兄弟组件传值,通过共同祖辈或root,一个this.$parent.emit(‘add’),另一个this.$parent.on(‘add’, this.add)
是状态管理工具,集中式存储管理应用的所有组件的状态
State:用来存放共享变量
Getters:相当于计算属性,返回的值会根据它的依赖被缓存起来,只有依赖值发生变化才会被重新计算
Mutations:用来存放修改state中数据的方法,store.commit方法更改数据
Action:通常用来做异步操作,需要在mutation的基础上进行
Module:分割的模块,每个模块拥有自己的state、getters、mutation、actions
通过同层的树节点进行比较的算法,只比较同层,循环从两边向中间比较
Vue中用于虚拟DOM渲染成真实DOM的新旧节点比较,
先同级比较,相同则直接复用。
然后比较子节点,如果旧的有子节点,新的没有,会把旧的删除;如果旧的没有新的有,会把新增的子节点插入旧的。
都有子节点时,先比较第一个是否一样,一样的话移动新旧的start指针,不一样则会从最后一个开始比较;如果头尾都不相等则比较新头和旧尾,一样就把旧尾移到前面去,然后end指针往前一位,start指针往后一位。如果存在key则会直接用key去旧的子节点中找,找到就移动到最前面,start往后一位,没有就直接插入。
最后把旧的多余节点删掉。
webpack是用于JS应用程序静态模块的打包工具
常用配置:
entry:入口文件,从哪个开始打包
output:输出,打包好的文件输出到哪里
module:配置loader,webpack本身只能打包js/json,打包css、img、html等需要各种loader,通过npm下载即可
plugins:插件
mode:打包模式,development和production
减少http请求数,合并css和js,使用css精灵图
缓存资源
压缩代码,多余的缩进和换行
样式放在头部使用link引入,脚本放在尾部使用异步加载
懒加载、滚屏加载等按需加载方法
进入页面时先使用loading,加载完成后再显示页面
压缩图像,使用css代替图像
静态资源不适用cookie
避免img、iframe的src为空,空的话会重新加载
避免重置图像大小,会引发重绘
减少DOM节点
动画尽量使用css3动画,5个元素以上的话使用canvas
使用requestAnimationFrame代替setTimeout
对滚动、鼠标移动这类高频时间使用防抖节流
尽量不在html中写style
避免css表达式
不滥用float,float渲染时计算量比较大
不声明太多的font-size,会影响css树的效率
值为0时不写单位
尽量改变class而不是style
尽量使用id选择器
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100
目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类
所有题目均有五种语言实现。C实现目录、C++实现目录、Python实现目录、Java实现目录、JavaScript实现目录题目n行m列的矩阵,每个位置上有一个元素你可以上下左右行走,代价是前后两个位置元素值差的绝对值.另外,你最多可以使用一次传送阵(只能从一个数跳到另外一个相同的数)求从走上角走到右下角最少需要多少时间。输入描述:第一行两个整数n,m,分别代表矩阵的行和列。后面n行,每行m个整数,分别代表矩阵中的元素。输出描述:一个整数,表示最少需要多少时间。
西安华为OD面试体验开始投简历技术面试进展工作进展开始投简历去年一整年一直在考研和工作之间纠结,感觉自己的状态好像当时的疫情一样差劲。之前刚毕业的时候投了个大厂的简历,结果一面写算法的时候太拉跨了,虽然知道时dfs但是代码熟练度不够,放在平时给足时间自己可以调试通过,但是熟练度不够那面试当时就写不出来被刷了。说真的算法学到后期我感觉最重要的是熟练度和背板子(对于我这种普通玩家来说),面试题如果一上来短时间内想不出思路就完蛋了。然后由于当时找的工作不是很理想就又想考研了。但是考研是有风险的,我自我感觉自己可能冲不上那个学校,而找工作一个没成可以继续找嘛。本着抱着试试看的态度在boss上投了简历,
目录一、安装包链接二、安装详细步骤1.安装Wireshark和WinPcap2.安装OracleVMVirtualBox3.安装ensp三、安装后注册四、启动路由器出现40错误怎么解决一、安装包链接二、安装详细步骤链接:https://pan.baidu.com/s/1QbUUYMOMIV2oeIKHWP1SpA?pwd=xftx提取码:xftx1.安装Wireshark和WinPcap找到Wireshark安装包所在文件夹,双击它,按照以下步骤安装。2.安装OracleVMVirtualBox找到OracleVMVirtualBox安装包所在文件夹,双击它,按照以下步骤安装。注:可自定义安装
近日,上海证券交易所科创板披露的信息显示,嘉兴中润光学科技股份有限公司(下称“中润光学”)获得上市委会议通过。这意味着,中润光学的上市之路获得实质性进展,接下来将提交注册。据贝多财经了解,中润光学的招股书于2022年5月20日获得科创板受理,5个月后便获得上市委会议通过,进度不可谓不快。本次冲刺科创板上市,中润光学拟募资4.05亿元,计划用于高端光学镜头智能制造项目、高端光学镜头研发中心升级项目等。天眼查信息显示,中润光学成立于2012年8月,是一家以从事非金属矿物制品业为主的企业。当前,该公司的注册资本为6600万元,法定代表人为张平华。穿透股权可知,张平华也是该公司的实际控制人。据招股书介
?作者主页:静Yu?简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者?社区地址:前端知识交流社区?博主的个人博客:静Yu的个人博客?博主的个人笔记本:前端面试题个人笔记本只记录前端领域的面试题目,项目总结,面试技巧等等。接下来会更新蓝桥杯官方系统基础练习的VIP试题,依然包括解题思路,源代码等等。问题描述:给定当前的时间,请用英文的读法将它读出来。时间用时h和分m表示,在英文的读法中,读一个时间的方法是: 如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“threeo’clock”。 如果m不为0,则将时读出来,然后将分读出来,如5
三大公有云厂商,香港地区主机测评一、ping时延比对(厦门电信本地测试):Ping时延测试腾讯云阿里云华为云延迟率最低时延44ms,最高72ms,平均46ms47.242段:最低时延59ms,最高204ms,平均107ms最低时延45ms,最高93ms,平均47ms丢包率丢包率小有的ip段丢包率较大每个段都会有概率丢包阿里云:47.242段:最低时延59ms,最高204ms,平均107ms,有的ip段丢包率较大8.210段:最低时延64ms,最高232ms,平均119ms,丢包率较好腾讯云:最低时延44ms,最高72ms,平均46ms,丢包率小华为云:最低时延45ms,最高93ms,平均47m
华为认证分等级的,相当于初中高三个等级,当然高级是比较难考的,也是含金量最高的。我就慢慢给你介绍一下。1.了解华为认证华为认证网络工程师是由华为公司认证与采购部推出的独立认证体系,与之前的华为认证不同,简称HCIA。同时华为认证是华为技术有限公司凭借多年信息通信技术人才培养经验,以及对行业发展的理解,以层次化的职业技术认证为指引,推出的覆盖IP、IT、CT以及ICT融合技术领域的认证体系,是ICT全技术领域认证体系。2.怎么考取华为认证网络工程师?要考取华为认证网络工程师必须选择最近的Prometric授权考试中心APTC报名并参加GB0-190的考试,考试通过后,以获得由华为统一签发的“华