自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 深入理解深拷贝与浅拷贝

此时我们应该差不多能明白了,并不是浅拷贝本身故意不去拷贝对象的,浅拷贝已经将运行上下文中的所有数据都进行拷贝了,只是说引用数据类型存放在运行上下文中的本来就不是真正的他,只是一个地址值,所以才导致了使用浅拷贝的时候,拷贝过后的对象被修改了,会影响到原来的对象。真正不符合常理的并不是浅拷贝,而是深拷贝。深拷贝在遍历的时候一旦判断类型为对象,就会对这个对象再进行一次拷贝,相当于给原先只是一个拷贝的过程改成了一个递归的过程。

2023-06-12 17:44:34 781

原创 v-if和v-show与v-if和v-for之间的优先级问题

关于这个问题,我们首先需要知道的是v-if和v-show都是如何工作的,只有深入了解了两者的运行原理,才能正确的认识到他们之间的优先级问题。

2023-06-10 22:09:17 1304

原创 防抖与节流总结

防抖是一种常用的前端优化技术,它可以有效地减少在用户频繁触发某些事件(比如鼠标滚动、窗口缩放等)时产生的多次执行函数的问题。这样可以避免函数被频繁调用,从而提高页面的性能和用户体验。节流是一种优化性能的技术,主要用于减少某些事件的触发频率。在一些需要频繁触发事件的场景中,如果不加以限制,可能会造成系统负载过高,甚至导致卡顿或崩溃。节流技术就是通过限制事件触发的频率,来减少系统负载,提高性能。常见的节流方式包括定时器节流和时间戳节流。

2023-04-15 17:34:28 1249 1

原创 为什么基础数据类型存放在栈中,而引用数据类型存放在堆中?

我:基本类型有string、number、boolean、undefined、null、symbol、bigint。一般学到这里也就差不多到此为止了,我在之前复习的时候也是这样,知道我在面美团的时候,面试官这样问了我......基本类型:string、number、boolean、undefined、null、symbol、bigint。面试官:那你知道这些数据类型是以什么格式存放在内存空间的吗?我:基本数据类型存放在栈中,引用数据类型存放在堆中。我:emmm,抱歉,我所了解的大致就这些了。

2023-04-08 15:21:52 1670 1

原创 JavaScript面经

等html全部解析完成,才会执行js代码,顺次执行js脚本.: async是和html解析同步的(一起的),不是顺次执行js脚本(谁先加载完谁先执行)基本类型:string、number、boolean、undefined、null、symbol、bigint引用类型:objectNaN是一个数值类型,但是不是一个具体的数字。

2023-04-01 17:40:27 390

原创 如何用canvas制作一个华容道小游戏(乞丐版)

虽然我有着强烈的制作意愿,但是当初学的unity3D的知识早就还给老师了,而且就我一个人的话,做大型游戏先不说我一个人干不干的过来,首要面对的问题就是,没这个能力你知道吧。于是我想起来了小时候第一次去科技馆,玩的华容道,碰巧之前学过一点canvas,做的话应该是可以做的,虽然我上次用canvas还是在上次,那么......我大抵是废了,横竖都学不进去,上课知识不进脑子,学习光想划水摸鱼,心中仅剩的良知告诉我这样下去是铁定不行的哇,既然学不进去,何不打把游戏,既然要打游戏,为啥不自己写个小游戏嘞?

2023-03-25 15:59:16 1204 2

原创 CSS面经

CSS选择器和优先级常用的css选择器有以下几种(1)id选择器(2)类选择器(3)标签选择器(4)通配符选择器(5)相邻选择器(6)子选择器(7)后代选择器(8)属性选择器(9)伪类选择器对于选择器的优先级:标签选择器、伪类选择器:1;类选择器、伪类选择器、属性选择器:10;id选择器:100;内联样式:1000;注意事项:!important声明的样式的优先级最高;如果优先级相同,则最后出现的样式生效;继承得到的样式的优先级最低;

2023-03-18 19:49:15 302

原创 HTML面经

src用于替换当前元素,如script标签,img标签等。当html解析到这些标签时,会暂停解析,将指定的资源下载下来,嵌入到所在位置内。href的话则是一个当前页面与引用资源之间的链接,如link标签。

2023-03-11 11:03:16 1178

原创 前端网络安全

同源指的是:协议、端口号、域名必须一致。他是浏览器的一个用于隔离潜在恶意文件的重要安全机制。限制了从同一个源加载的文档或脚本,与另一个源的资源进行交互。同源策略主要限制了三个方面:当前域下的js脚本不能够访问其他域下的cookie、localStorage和indexDB。当前域下的js脚本不能够访问操作其他域下的DOM。当前域下的Ajax无法发送跨域请求。为什么要有同源策略,他的目的是什么。

2023-03-04 21:11:35 2974

原创 力扣2241. 设计一个 ATM 机器

力扣上的一个中等难度的题,之所以写一篇博客记录下来,是因为貌似触发了力扣的彩蛋,第一次遇见,感觉挺有意义的。题目如下:一个 ATM 机器,存有 5 种面值的钞票:20 ,50 ,100 ,200 和 500 美元。初始时,ATM 机是空的。用户可以用它存或者取任意数目的钱。取款时,机器会优先取 较大 数额的钱。比方说,你想取 $300 ,并且机器里有 2 张 $50 的钞票,1 张 $100 的钞票和1 张 $200 的钞票,那么机器会取出 $100 和 $200 的钞票。

2023-02-19 08:27:54 342

原创 NestJS学习笔记——NestJS的基本操作

要想使用Nest.js,首先电脑上需要安装Node.js环境,其次,需要安装Nest CLI并使用Nest CLI创建项目。

2023-02-05 11:14:59 730

原创 Immutable.js学习笔记

由于旧有的深拷贝方法都多多少少有着一些缺陷,比如[...obj]和Object.assign()只是一级属性复制, 比浅拷贝多拷贝了一层而已,当使用这两种方法去实现深拷贝的时候,我们不得不去遍历层级,一旦遇到层级较为复杂的对象就十分棘手。Immutable.js能将对象转化为不可变的对象,常用于深拷贝,每次修改一个Immutable对象时都会创建一个新的不可变的对象,在新对象上操作并不会影响到原对象的数据。可以使用JS操作数组的方法操作,获取的时候直接arr.toJS()就可以了。

2023-01-15 14:37:06 432

原创 Immutable.js学习笔记

由于旧有的深拷贝方法都多多少少有着一些缺陷,比如[...obj]和Object.assign()只是一级属性复制, 比浅拷贝多拷贝了一层而已,当使用这两种方法去实现深拷贝的时候,我们不得不去遍历层级,一旦遇到层级较为复杂的对象就十分棘手。Immutable.js能将对象转化为不可变的对象,常用于深拷贝,每次修改一个Immutable对象时都会创建一个新的不可变的对象,在新对象上操作并不会影响到原对象的数据。Immutable.js实现的原理是持久化数据结构。

2023-01-15 14:33:34 393

原创 Vue3知识点复习(一)

Reflect的写法和object一样,但是与Object不同的是Reflect有一个返回值,代表此次操作是否成功,而Object没有,这就导致当有一段代码写错了时,Object会卡死,但是Reflect可以运行下去。Vue3中,基本类型的数据的响应式依旧是靠Object.defineProperty()来实现的,但是对象类型的数据则是依靠Vue3中的一个名为reactive的新函数实现的。无法捕获到对数据的添加和删除,也就是我通过函数添加一些新的属性的时候,或者是删除原先的属性的时候,响应式会出问题。

2022-12-11 13:47:09 930

原创 力扣第1742题——盒子中小球的最大数量

题目如下:这道题力扣官方给的题解是用哈希表来暴力求解,但是我在看完数据范围后,有了一点小想法,能不能不用哈希表,就只是用数组来解答呢。答案是可以的。我的思路如下:由于这道题规定了highLimit最大值是十的五次方,所以我们要使用的最大的盒子编号就是第99999号小球要放入的盒子的编号,即45,因此我们可以创建一个长度为46的数组(因为编号是从1号开始的),代表着这些盒子。如此一来的话,每次都可以求出这个小球应该放入哪个盒子,然后让对应的盒子加一就可以了。

2022-12-04 09:16:21 71

原创 力扣第2239题——找到最接近0的数字

题目如下给你一个长度为n的整数数组nums,请你返回nums中最0的数字。如果有多个答案,请你返回它们中的。这道题是一道简单题,写起来也十分的轻松,用暴力就能写。

2022-11-26 15:26:24 258

原创 力扣第891题——子序列宽度之和

这道题是前天的每日一题,题目如下:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的 宽度之和。由于答案可能非常大,请返回对 109 + 7 取余 后的结果。子序列 定义为从一个数组里删除一些(或者不删除)元素,但不改变剩下元素的顺序得到的数组。例如,[3,6,2,7] 就是数组 [0,3,1,6,2,2,7] 的一个子序列。

2022-11-20 09:24:42 114

原创 力扣第1488题——避免洪水泛滥

这道题是我点击随机一题之后,随机出来的一道算法题。题目如下:你的国家有无数个湖泊,所有湖泊一开始都是空的。当第 n 个湖泊下雨前是空的,那么它就会装满水。如果第 n 个湖泊下雨前是 满的 ,这个湖泊会发生 洪水。你的目标是避免任意一个湖泊发生洪水。给你一个整数数组 rains ,其中:rains[i] > 0 表示第 i 天时,第 rains[i] 个湖泊会下雨。rains[i] == 0 表示第 i 天没有湖泊会下雨,你可以选择 一个 湖泊并 抽干 这个湖泊的水。

2022-11-12 17:45:02 614

原创 计算机网络体系结构——网络层

随着网络的商业化,互联网用户激增,导致原先充裕的IP地址资源渐渐枯竭,且由于早期分配网络不合理,如给一座大学就分配了一个A类网络,导致这些使用率低下。如果根据IP判断主机与目标主机不在同一个局域网内,发给路由器,由路由器查看是否与目标主机在同一个局域网内,在的话直接交付,不在的话重新封包,查询路由表,发送给下一个路由器。前两个比特为11的再一分为二,前三个比特为110的划为C类网络,后续21位为网络号段,最后八位为主机号段。首地址为0的划为一堆,之后七位为网络号段,后二十四位为主机号段。

2022-11-05 14:37:07 1296

原创 Vue报错“Failed to resolve loader: less-loader”

前几天在运行项目的时候,突然间报了这样一个错,虽然当时的我感觉很疑惑,明明上次跑的好好 的,这次为啥报我没有安装less-loader依赖,但是我还是老老实实地敲下了安装less-loader的代码,没想到折磨才刚刚开始。一开始我是万万没有想到哇,我仅仅是敲了一句普普通通的、没啥毛病的npm install less-loader,就给我报了这么长一串错,直接给我整懵了,只能去问问度娘了。

2022-10-30 09:09:01 8326 2

原创 近期学习生活总结

这种情况下,我根本无心学习,满脑子都是焦虑。但是等到饭点来临,我才发现我的忧虑只是杞人忧天,那天晚上学校送来的晚饭,虽然因为长时间的放置(因为要一栋一栋楼发,所以饭菜放了一段时间),口味肯定没有刚开始好,但是在这种情况下也很难得,很丰盛了。在之后这几天里,学校也给我们发放生活物资,除了一日三餐外,还有口罩、连花清瘟胶囊等医疗物资,用来应急的泡面,还有补充营养的奶和橘子,现在虽然仍在静默状态,但是早已没有了刚开始的惶恐不安,个人感觉除了不能出寝室外,和防控前的生活也没什么区别,逐渐恢复了学习状态。

2022-10-23 09:10:16 136

原创 react学习笔记(6)

useState的作用就是保存组件的状态,和类组件中的state一样,但是是用于函数式组件当中的。上述代码就是创建了一个名为state的状态变量,初始值为0,当我们要改变这个状态的时候,可以通过setstate()进行改变,括号内填入状态改变后的值。只有name改变后, 这个函数才会重新声明一次,如果传入空数组, 那么就是第一次创建后就被缓存, 如果name后期改变了,拿到的还是老的name。如果不传第二个参数,每次都会重新声明一次,拿到的就是最新的name。useRef类似于类组件的this。

2022-10-15 23:09:53 237

原创 力扣第927题——三等分

思路:由于要把数组arr三等分,每一部分表示相同的二进制值,且前导零允许存在,因此可以得知每一部分的1的数量必须是一样的。但是由于最后一部分,无法将最后的0分给后一个数(本身就是最后一个数了),所以最后一部分值是固定的,我们可以根据最后一部分的值进行判断。例如,[1,1,0] 表示十进制中的 6,而不会是 3。此外,前导零也是被允许的,所以 [0,1,1] 和 [1,1] 表示相同的值。arr[j], arr[j + 1], ..., arr[arr.length - 1] 为第三部分。

2022-10-06 15:35:31 632

原创 BFE——JS题库刷题经历

我原先以为我的js虽然学的不算好,但也绝对还行。直到我在这个题库里写了两道题。。。怎么说呢,这个题库里的题是真的好,可以让我们以刷题的方式掌握很多js平时注意不到的知识点,下面是我这段时间刷题的经历,这篇博客只是为了记录一下学习经历,绝对不是为了国庆勋章水博客,嗯,绝对不是。题库链接。

2022-10-01 09:13:33 603

原创 计算机网络体系结构——数据链路层

因此为了防止在帧中的数据部分出现同样的编码格式的数据,我们加入了转义字符ESC,在此类数据前加上ESC,避免识别失误。但是ESC也是一串编码,为了避免帧中有和ESC格式一样的编码,当遇见编码格式好ESC一样的数据时,连续使用两个ESC代表一个ESC。首部和尾部的一个重要作用就是进行帧定界,就是当数据传输过去之后,对方的数据链路层在解析帧的时候,能根据帧定界确定这个帧的范围。首部的第一个字段和尾部的第二个字段都是标志字段 ,格式是0X7E,表示后面的字符是用十六进制表示的。C是控制字段,规定为0x03。

2022-09-28 21:38:55 1708

原创 计算机网络体系结构——物理层

连接各种计算机的传输媒体上的传输数据比特流,尽可能屏蔽掉传输媒体与通信手段的差异,让数据链路层更好的工作。其实就是将在光纤、双绞线、电缆等等媒介上传输的数据,使用不同方式传递的数据,能够以尽可能相同的形式传递给数据链路层。可以将其描述为确定与传输媒体的接口有关的一些特性。

2022-09-25 09:03:59 578

原创 JavaScript原型链与继承

在js中,对象可以分为函数对象和普通对象两种,其中普通对象只有隐式原型_proto_,函数对象既有隐式原型_proto_,还有显示原型prototype属性。像是我们经常使用的一些如Object,Function等等,都是js内置的函数。隐式原型_proto_具有constructor和__proto__两个属性,constructor用于记录实例是由哪个构造函数创建的,__proto__指向它的构造函数的显示原型的值。

2022-09-24 17:06:24 410

原创 JavaScript变量提升

当栈内存的作用域形成时,js代码执行前浏览器将带有var关键字的变量提前声明(也就是在变量所属的作用域的顶部声明,虽然声明了,但是没有定义,在赋值前——也就是写着var XXX的地方之前,值为undefined),将带有function关键字的变量提前进行声明和定义(就是说带function的只要在这个作用域内写了,就可以用,哪怕调用这个函数的地方在他前面)。当js代码执行的时候,遇到创建函数的代码会直接跳过。

2022-09-16 22:10:05 1413

原创 作用域与闭包

js内部的垃圾回收机制是引用计数收集,即当内存中的一个变量被引用一次,计数就加一。垃圾回收机制会以固定的时间轮询这些变量,将计数为0的变量标记为失效变量并将之清除从而释放内存。但是在某些情况下,当一块内存不再被应用程序使用的时候,由于某种原因,这块内存没有返还给操作系统或者内存池,这种情况就叫做内存泄漏。内存泄漏可能会导致应用程序卡顿或者崩溃。

2022-09-16 07:00:00 98

原创 初始WebGL

光栅: 几乎所有的现代图形系统都是基于光栅来绘制图形的,光栅就是指构成图像的像素阵列。像素: 一个像素对应图像上的一个点它通常保存图像上的某个具体位置的颜色等信息。帧缓存: 在绘图过程中,像素信息被存放于帧缓存中,帧缓存是一块内存地址。CPU: 中央处理单元,负责逻辑计算。GPU: 图形处理单元,负责图形计算。由于cpu串行处理,因此在计算图形时并不好用,因为图形计算要计算大量的简单的计算。

2022-09-12 22:17:46 133

原创 Websocket

WebSocket 是一种在单个TCP连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。Tcp,英文全称为Transmission Control Protocol,是一种面向连接的、可靠的、基于字节流的传输层通信协议。通俗一点理解就是在网络世界里的一种信息传递方式,像是现实生活中的写信等等,是电子设备传递信息的一种方式。全双工,通讯传输的一种方式。除了全双工外,还有半双工和单工。

2022-09-05 21:05:58 445 2

原创 前端需要知道的浏览器机制

HTTP:超文本传输协议,是应用层的一个协议,定义了超文本的传输的标准。HTTPS:是HTTP的一种,以安全为重点的HTTP,在HTTP的基础上加入了SSL,因此可以看作HTTPS = HTTP + SSL。HTTPS的安全基础是SSL,通过SSL进行传输加密与身份认证,保证了传输过程的安全性。通俗点说,HTTP就是说话的语言、语法,规定了我们要怎么说话,以及说话时语句怎么组成。而HTTPS则相当于暗语,只有说话者和目标者知道并能听懂。

2022-09-01 21:39:00 953

原创 css知识点总结

(3) 子元素设置绝对定位,父元素设置相对定位,left:50%,margin-left:-子元素的宽度的一半(宽度定),或者transform:translateX(-50%)(宽度不定)(2)子元素设置绝对定位,父元素设置相对定位,子元素设置top:50%;left:50%(左上角垂直居中),margin-top:-子元素高的一半,margin-left:-子元素宽的一半。在标准文档流中,父元素的高度是由子元素撑起来的,有时当我们给子元素设置浮动的时候,就会产生高度塌陷的问题。...

2022-08-29 20:15:21 451

原创 js总结笔记

闭包内的数据在函数执行完之后不会被垃圾回收器回收,因此可以延长部分数据的生命周期,同时使函数外部可以对函数内部的数据进行相关的操作。原型链:根据prototype和—proto—串成的一条链,查找对象的某一个内容时,如果找到了就停止并返回,未找到就到原型或隐式原型中继续找,直到找到或者隐式原型为null。2.结束前,让对象成为垃圾对象(被垃圾回收器回收)在js里,当存在函数嵌套,并且在函数的内部引用了函数外部的数据的时候,闭包就产生了。因此,闭包虽然好用,但是可以不用的时候尽量不要用,用了的话要及时清除。.

2022-08-29 20:14:42 96

原创 html知识点总结

而对于标记语言,百科里给的解释是指将文本以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码,我有点不是很理解,但是结合以前写页面的经历,感觉是指将页面的结构和样式通过标签和文本结合的方式展现出来。就是定义了支持汉字的编码格式,如果没有在页面上加这句,浏览器没有按照指定的格式解析,就会出现"锟斤拷烫烫烫"这样的乱码。全局属性是指可以与所有html元素一起使用的属性,即所有的html元素如div,p,button等元素都可以使用的属性。出现乱码代表编码的方式和解码的方式不一样,...

2022-08-13 20:33:03 321

原创 Typescript基础

js是动态类型弱类型语言,而ts是静态类型弱类型语言。强类型语言:不允许改变变量的数据类型,除非进行强制类型转换。弱类型语言:变量可以被赋予不同的值。静态类型语言:在编译阶段确定所有变量的类型。动态类型语言:在执行阶段确定所有变量的类型。...

2022-08-06 21:02:17 436

原创 React学习笔记(5)

1)getDerivedStateFromProps第一次的初始化组件以及后续的更新过程中(包括自身状态更新以及父传子),返回一个对象作为新的state,返回null则说明不需要在这里更新state。我感觉吧,受控组件之所以受控,是因为使用了setState更新,因此每一次更新的时候都会触发render函数,导致传给其他组件的数据随之变化,而不是像非受控组件那样,传的值恒定为初始值。还有一种说法就是,React组件的数据渲染是否被调用者传递的props完全控制,控制则为受控组件,否则为非受控组件。...

2022-07-31 11:42:34 153

原创 react学习笔记(4)

this.state是纯js对象,在vue中,data属性是利用object.defimeProperty处理过的,更改data的数据的时候会触发数据的getter和setter,但是React中没有做这样的处理,如果直接更改的话,react是无法得知的,所以,需要使用特殊的更改状态的方法setstate.状态就是组件描述某种显示情况的数据,由组件自己设置和更改,也就是说由组件自己维护,使用状态的目的就是为了在不同的状态下使组件的显示不同(自己管理)6.属性可以修改子组件的值,状态不可以。...

2022-07-23 21:30:17 310

原创 react学习笔记(3)

3.bind改变this,不会自动执行,手动加括号执行函数obj1.getName.bind(obj2)此处后面的小括号可选择是否添加,加了自动执行。}进行事件绑定,此方法需要注意不要在函数的后面加小括号,加完之后将会在渲染的时候执行一次,之后this.handleClick将变为该函数的返回值。当满足条件时,即this.state.list.length为0时,显示div,否则为空,即什么也不显示。缺点需要注意this的指向问题,this为undefind,即指向react事件系统。...

2022-07-16 20:59:33 162

原创 react学习笔记(2)

JSX是一种JavaScript的语法扩展,运用于React架构中,其格式比较像是模版语言,但事实上完全是在JavaScript内部实现的。元素是构成React应用的最小单位,JSX就是用来声明React当中的元素,React使用JSX来描述用户界面。正在上传…重新上传取消babel的jsx编译器,就是负责将ReactDOM. render( 11111111,document。getE lementById("root" ))这样的代码转换成这样ReactDOM. rende...

2022-07-08 21:29:26 188

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除