- 博客(70)
- 收藏
- 关注
原创 js继承方法
核心处理:将组合继承中第二次继承封装为了一个函数,在这个函数里实际通过new的时候调用的是空对象,无副作用。优化了组合继承的弊端。在创建 Child 的实例时,不能向 Parent 传参。缺点:继承实例属性时,实例对象的方法会占用多个空间,或者说,实例之间。缺点:原型链属性公用,若实例A修改,也会影响实例B。ES6 class 的底层实现就是这个继承方法。3、组合继承(构造函数继承+原型链继承)原因是我们用到构造函数,而方法。缺点:组合继承会调用两次构造函数。
2025-05-29 16:35:54
280
原创 GitHub push失败解决办法-fatal: unable to access ‘https://github.com/xxx
windows教程如下:1、搜索控制面板-打开Internet选项2、点击局域网设置:3、如图为地址和端口号即可获得本机地址和端口号。
2025-05-27 17:18:36
405
原创 利用settimeout实现类setinterval的间隔a+count*b输出
【代码】利用settimeout实现类setinterval的间隔a+count*b输出。
2025-04-23 08:35:46
168
原创 关于setTimeout输出
1、这里settimeout与for循环结合,并不能实现我所想的类似于setInterval那种,这三个定时器,都会在页面加载的时候同时开启,谁先跑得快谁先打印,并不是像串行那种你等我那种打法。手写setTimeout在js中是要被push到宏任务队列的。2、setTimeout虽然书写有顺序,这里谁跑得快就谁先输出。// 王五-李四-张三 (间隔1s输出)//3、setTimeout代表的回调地狱。老是搞混,今天总结一下。是会实现串行的效果的。
2025-04-14 21:17:09
166
原创 副作用函数之Object.defineproperty Vs Proxy
要想解决第一次的话,用初始化变量标记为true,条件渲染fn(target)即可。1、常见的数据类型用Object.defineproperty即可。如果不进行操作的话,那么res.push()是会打印三次,2、数组的操作进行劫持得用Proxy+reflect。这里使用防抖将后两次触发打印合二为一。
2025-04-12 08:35:17
178
原创 阻塞程序之promise妙用
思路:模板中延时定时器已经通过timeout函数通过第一种方案阻塞和经过delay时间后唤醒的形式实现了,因为代码中连续执行了四次addTasks()需要我们实现的就是如何让四个调用addTasks函数的代码进行两个一组的并发执行,也就是代码执行的时候从第三个开始起阻塞,等到前两个任务中某一个执行完后,第三个任务开始执行,很明显,这个背景是依赖于其他代码的执行来决定阻塞和唤醒的,要用第二种方式,用队列来实现。下面有个异步调度器的例子,结合了两点,
2025-04-11 07:44:41
170
原创 webworker与service worker区别
之前一直以为service worker是web worker的一种,现在不打算纠缠这些了,只需要知道他们两处理问题的侧重点。想控制网络请求和缓存,离线缓存、推送通知,用service worker。一句话:想解决主线程阻塞问题,比如大文件上传,用webworker。
2025-04-06 16:05:18
280
原创 setInterval问题以及前端如何实现精确的倒计时
2、setinterval是每隔delay时间,把逻辑放到任务队列中,而不是执行栈中,且如果setinterval中的回调函数执行较长时间,如有for循环等逻辑,那么随着每一次执行误差会越来越大,(会因执行延迟导致误差累积)计算剩余时间,避免传统递减法的累积误差,通过postMessage向主线程发送(基于绝对时间计算剩余时间,而不是简单递减)这里有个注意点requestAnimation是控制UI渲染的,也就是会让倒计时ui16.6ms就会更新一次,就是主线程接收到应该渲染的事件后,也是需要去等待。
2025-04-06 15:24:12
554
原创 红包-算法
要记得这里toFixed是将数字取二位小数转为字符串,转为字符串后然后要用parseFloat又转为数字,进行res求和。对最后一个数要进行特殊处理。
2025-04-02 22:14:23
164
原创 请求头中的Origin和Referer
Referer:用于告诉服务器用户是从哪一个页面链接跳转过来的(上一页的url)Origin:主要用于跨域请求,告诉服务器请求来自哪个站点。
2025-03-31 09:56:43
311
原创 lc-二叉树vs链表
二叉树:root与root.left、root.right。二叉树:用root.left或者root.right。链表:用p.next。链表要注意有时加守卫头节点解题。1、链表:p与p.next。
2025-03-29 10:48:38
138
1
原创 lc-链表总结之哨兵节点
怎么用,通过let dummy = new ListNode(val,next=head)的方式,最后return时,必须return dummy.next,而不是head。算法需求中存在需要改变头节点的时候需要哨兵节点。
2025-03-28 23:42:51
226
原创 项目复盘:websocket不受跨域限制的原理
1、WebSocket 是独立于 HTTP 的应用层协议,通过 HTTP 建立连接后,完全脱离 HTTP 语义约束。类似于下述代码,当浏览器发起 WebSocket 连接时,会自动将当前网页的源(协议+域名+端口)填入。注:虽然目前服务端不做白名单校验也能成功,但为了安全还是要做一下di~服务端可以用下列代码进行验证以防恶意操作。不受 HTTP 同源策略限制。不依赖 CORS 头机制。
2025-03-28 22:03:23
460
原创 react中usestate的异步更新与useStateVSuseRef
用useref代替usestate,或者结合useref与usestate。2、适用于一次调用想联系调三次setcount的,让count从0加到3。3、适用于想让从莫接口获取到的boolean值与声明的状态变量绑定。1、适用于只想打印出来的stat。直接在useeffect来打印。
2025-03-27 10:41:18
426
原创 FP与FCP与白屏
FCP 延迟:通常反映渲染阻塞或内容生成问题(JS执行、数据获取等)FP 延迟:通常反映网络或解析问题(HTML/CSS还未下载完成)业务人员一般用FP来分析白屏问题,通过骨架屏等优优化手段来进行容器白屏降噪。FP:开始渲染白色背景时(用户可能感知不到)FCP:当第一个文字或图片出现时。FCP:第一个内容元素渲染时。FP:背景色渲染完成时。
2025-03-26 11:16:01
125
原创 文件的分片上传vs流失上传
将文件分成多个固定大小的块(chunk),逐块上传到服务器。支持断点续传,服务器可以记录已上传的分片。:将文件以流的方式逐步读取并上传到服务器。通常基于长连接(如 WebSocket)。前端手动将文件分片,后端接收并合并分片。文件是逐步读取和上传的,无需手动分片。每个分片是独立的,可以乱序上传。适合实时传输,内存占用低。逐步读取文件并上传。
2025-03-24 00:06:13
182
原创 二进制无法通过json传输给后端
适合中小文件,WebSocket 或 REST API。是multipart/form-data。适合小文件,JSON 或文本协议。适合大文件,HTTP 表单上传。1、转为用base64格式。3、转为form-data。
2025-03-23 22:29:43
91
原创 前后端开发中,图片上传到不同格式(二进制数据ORbase64编码)
适合大文件(如高清图片、视频)。适合小文件(如图标、头像)。实现简单,适合快速开发。1、base64编码。性能更好,节省带宽。
2025-03-23 21:49:04
272
原创 leetcode-234-回文链表
思路:初始化数组,将链表中每个节点的val值全部拷贝到数组里,数组可根据双指针由两头向中间循环移动,若遍历过程中两个指针指的字符不同,则返回false,否则继续遍历直到遍历完成返回true。,请你判断该链表是否为回文链表。给你一个单链表的头节点。
2025-03-23 13:11:07
216
原创 求最长回文串-409
思路:题目求给定字符串中可以构造出来的最长回文串,回文串是由回文中心以及其他字符对构成,且回文中心的数量可为0或1,第一种情况回文串由字符串对构成(回文中心没有)第二钟情况回文串由一个回文中心和其他字符串对构成(回文中心由一个字符构成)则用map、set可做。我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。可以构造的最长回文串是"a",它的长度是 1。给定一个包含大写字母和小写字母的字符串。题目:leetcode-409。不能当做一个回文字符串。通过这些字母构造成的。
2025-03-23 13:03:28
186
原创 leetcode-回文类题-647-求字符串中 回文子串 的数目
思路:找出回文中心 向两边延申,判断是否是回文字符串,每移动一次res++;这是因为aca是回文子串,bacab也是回文子串,且要考虑边界值,使用方括号 [] 访问超出范围的索引会返回 undefined。要用charAt去处理l和r为负数的情况。6个回文子串: "a", "a", "a", "aa", "aa", "aaa"三个回文子串: "a", "b", "c"是字符串中的由连续字符组成的一个序列。是正着读和倒过来读一样的字符串。,请你统计并返回这个字符串中。1、回文子串-647。
2025-03-23 12:49:09
239
原创 单向数据流与双向绑定
优点:代码量减少,操作更方便(表单操作,双向绑定更优,简化了代码),个人认为双向绑定适用局部处理,就是针对个别场景,不适合太复杂的大项目。优点:数据流更清晰,只有唯一的入口和出口,数据状态变化都能被记录、被跟踪,易于维护,调试也很方便,顺藤摸瓜,适用于大型复杂项目,缺点:数据流转比较混乱,不止一处修改入口,难以调试,不易维护。缺点:代码量多了一点,表单校验这种,有时就会比较繁琐。双向绑定 = 单向绑定 + UI事件监听。
2025-03-21 22:03:12
133
原创 浏览器对一个资源设置了缓存,如何清除缓存,且后续请求不命中缓存
来定位资源,忽略掉查询参数,所以浏览器加上查询参数的url和不加的url访问得到的东西是一样的。缓存资源,如果url发生变化(比如加了查询参数),浏览器会认为这是一个新的资源,从而重新请求。原理:1、在资源的url后添加一个查询参数,通常是一个版本号或时间戳,路径:`/path/to/resource`方式3、服务器端设置缓存头(需服务器端配合)域名:`example.com`片段标识:`#section`eg:如下图,添加了查询参数。协议:`https://`方式2、修改资源url。
2025-03-16 15:28:13
356
原创 Json实现深拷贝的缺点
2、如果obj里有RegExp(正则表达式的缩写)、Error对象,则序列化的结果将只得到空对象;4、如果obj里有NaN、Infinity和-Infinity,则序列化的结果会变成null。1、如果被拷贝对象中的属性有时间对象的话,拷贝出来会为字符串,将不再是对象。
2025-03-15 23:05:25
321
原创 js数组最后追加一个数组元素和放在最前面的时间复杂度
在数组开头插入元素时,需要将所有现有元素向后移动一位,为新元素腾出空间。2、unshift是O (n)1、push是O(1),
2025-03-15 16:14:03
123
原创 leetcode105为什么可以root.left可以截取到前序遍历二叉树的(0,index),而不是(1,index+1)
原因在于preoder.shift()会改变原数组,已经把preoder的第一个队头元素已经排除出去了!这里以105前序和中序遍历构造二叉树为例,106同理。306题中的截取后续遍历中用pop()同理。
2025-03-15 12:03:27
165
原创 useEffect的执行是异步的
useeffect不会阻塞渲染,会在组件渲染完成之后异步执行。渲染之后提交阶段执行这个useeffect中的代码。// 这里会在渲染完成后异步执行。// 这里会在渲染阶段同步执行。会打印出component 再打印出useeffect。若需同步 可用uselayouteffect。
2025-03-12 16:14:13
172
原创 二分查找法右指针的位置为什么要初始化为res.length,而不是res.length-1
因为考虑到边界值,若res数组为0,即右指针若初始化为0-1=-1的情况下,right会被初始化为-1,是为了确保二分查找的范围始终有效,即使。
2025-03-12 07:41:05
91
原创 常见的Content-Type值
application/x-www-form-urlencoded表示数据是以URL编码的形式发送的,即键值对被转换成key=value的形式,并用&连接。当用户在网页上填写表单并提交时,浏览器会使用application/x-www-form-urlencoded编码方式将表单数据编码,并通过HTTP请求发送给服务器。application/x-www-form-urlencoded: 这是MIME类型,表示数据被编码为键值对,并且这些键值对是通过&字符分隔的。在Web开发中,我们经常需要发送表单数据。
2025-03-12 06:56:10
477
原创 解决react中函数式组件usestate异步更新
问题:在点击modal组件确认后 调用后端接口,使用setstateone(false)使modal组件关闭,但是设置后关闭不了,在设置setstateone(false)前后打印出了对应的stateone都为true,但是在useeffect中打印出来的为false,3、在useeffect设置,依赖项为stateone,然后设置值setstatetwo(stateone)2、设置modal组件开关方法,绑定为setstateone(false)解决方案:把组件状态的更新值赋值给另一个变量,加一层传导。
2025-02-07 16:10:43
496
空空如也
为什么按钮点击多用防抖,节流是不是更合适一点
2025-03-16
前端网页访问图片会跨域吗
2024-10-25
react路由底层用了js的什么特性
2024-10-14
vue双向数据绑定与数据响应式
2024-09-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人