- 博客(39)
- 收藏
- 关注
原创 前端构建工具 webpack与vite对比
Webpack是一个功能强大的模块打包器,它允许开发者以模块化的方式组织代码,在启动时加载所有相关依赖。Webpack通过Loaders和Plugins提供了丰富的扩展能力,能够实现代码拆分、懒加载、热模块替换(HMR)等功能,以及为开发和生产环境提供不同的配置选项。
2024-08-22 23:31:40
779
原创 js全局搜索高亮显示
输入想要搜索的内容:对应内容高亮显示:错误实现:1.直接更改body的innerHTML,导致绑定在输入框上的input事件失效这是因为,修改body的innerHTML相当于重写了body里面的输入框,这就相当于创建了另外一个dom对象,之前渲染的dom跟这个新的dom对象没有关系,所以就导致了事件的丢失。2.每次不还原初始状态,导致搜索内容改变后,原来的高亮依然存在所以要在一开始记录初始innerHTML,每次input事件触发后要先还原回初始状态。3.没有考虑到标签名
2024-08-21 18:03:01
149
原创 js 手写图片懒加载插件
利用交叉观察器Intersection Observer实现图片懒加载。自定义插件:暴露一个对象,包含一个install方法。不清楚图片懒加载原理的参考我的上一篇博客。
2024-08-20 22:16:54
395
原创 js面试题 图片懒加载!
若一个页面有大量的图片资源,网页首次打开时,若同时加载完这些资源,需要消耗大量的时间,利用图片懒加载,先加载部分图片,既不会影响用户体验,又能大幅提升首屏加载速度。注:data-* 属性是自定义数据属性,不会影响布局和表现,可以通过DOM元素身上的dataset属性获取,是HTML5引入的新功能。加载:当网页被打开时,浏览器会自动解析img标签,查看src属性,得到图片url,发请求获取图片资源。使用这个API可以更精确地控制懒加载行为,减少滚动事件的直接使用,从而避免潜在的性能问题。
2024-08-20 20:44:43
512
原创 js面试题 diff算法
其中updateChildren方法用到的是首尾指针法。,而不用更新其他数据没发生改变的节点,实现。,并只更新这个虚拟节点所对应的。对比新旧虚拟DOM。地更新真实DOM,进而。
2024-08-18 16:49:20
200
原创 js面试题 数组去重
JavaScript 的Set对象,它是一个只包含唯一值的集合。所以先将数组转化为Set集合,过滤掉重复元素,再用Array.from() 方法还原为数组。
2024-08-18 15:51:48
134
原创 js面试题 异步解决方案
把 需要得到异步任务结果之后才能执行 的内容放进回调函数中,异步任务完成后 调用作为函数参数的callback。那要如何处理这样的异步任务呢?怎样能够得到异步任务执行完的结果再继续接下来的工作呢?需要等待多个Promise的结果怎么办呢?传递给另一个函数,并在被调用函数。回调函数是一种特殊的函数,它。返回的是Promise对象。
2024-08-16 16:00:19
178
原创 js中this的指向以及改变this指向的方法
直接调用全局函数fun(),实际上是window.fun()的简写,调用者是window。1.最外层没有函数包裹,那就是在全局作用域下。this指向.前面的对象。
2024-08-16 11:17:13
183
原创 js深拷贝与浅拷贝
如果我只想复制一个对象而且不想让它对我原来的对象产生影响那该怎么办呢?缺点:对象中值为undefined的属性和对象中的函数无法转化。这个时候,两个引用共同指向一块内存。这样会带来什么问题呢?当一个对象的属性值发生变化时,另一个对象也随之受到影响。JSON.stringify() 将对象转化为字符串。JSON.parse() 将字符串转化为对象。
2024-08-15 22:07:44
250
原创 js怎么判断数据类型
数字、字符串、布尔等基本类型可以由typeof进行判断,复杂数据类型大多都被认为是对象。但是由于Array也是继承于Object的,所以这样是无法精准区分的。注:undefined可以判断,null则被视为空对象。所以我们采用判断其构造函数的方法判断其本身。
2024-08-15 12:12:49
193
原创 js的数据类型与传值和传址
js中的数据类型分为两类数字number,字符串string,布尔boolean,null,undefined,Symbol。注Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。对象Object,数组Array,函数Function。还有两个特殊的对象:正则RegExp,日期Date。
2024-08-15 11:16:21
177
原创 LeetCode每日一题 跳跃问题
思路:每一步跳跃的长度都只有一个范围,不是固定的长度,这无疑增加了题目的难度,难道要每一种可能的跳法都尝试一下吗?
2023-08-28 22:26:14
135
1
原创 LeetCode 每日一题之 股票求最大利润问题
此时,起点就是整段的局部最低点,起点之后的各点都可以作为卖出点,各求利润然后遇到更大的覆盖就行了;找到下一个起点的方法就是找到下一个比当前起点更低的点。以第一点为第一段的起点,水平画线,再次碰到k线之前为一段。
2023-08-26 22:32:07
416
原创 C++实验课 实现银行叫号器功能 自动滚动+键盘上下左右键移动数字
if (clock() - t2 > 200)//只有读取到按键之后才更新。if (clock() - t1 >= 1000)//一秒更新一次。利用伪双线程实现 包含光标移动 隐藏光标的实现。
2023-04-20 16:31:55
400
原创 C++实验作业三
/在一个显示区域内从上到下按顺序显示5个号码,最开始是1-5。//在一个显示区域内从上到下按顺序显示5个号码,最开始是1-5。if (ch == 224) { //判断是否为方向键。//使用键盘交互与计时器实现该程序,使用容器装载号码。//使用键盘交互与计时器实现该程序,使用容器装载号码。if (ch == 27)//ESC键。if (ch == 32)//空格键。void update()//按时更新 线程。
2023-04-16 19:47:10
326
原创 C++ 实验四 字符串处理
第四次实验:字符串从键盘输入一个字符串s,形如:"abc345def"里面有一个数字字符子串(如上面串中的“345”),将其取出,并且在其数值上 + 100,输出运算结果。
2023-04-03 23:16:01
235
原创 C++ LeetCode每日一题 链表居然可以闭合为环!
if (k == 0 || head == nullptr || head->next == nullptr) { //增强健壮性。// 记给定链表的长度为 n,注意到当向右移动的次数 k≥n 时,我们仅需要向右移动 kmodn 次即可。因为每 n 次移动都会让链表变为原状。= nullptr) { //n用来统计链表结点的个数。// 链表开环后返回。
2023-03-30 19:53:41
110
原创 C++ 实验作业
建立一个学生类,输入N个学生的学号和分数,要求80分以上(不含80分)的>=2人,(可选用链表保存).构造函数规定人数N.从80分以上的学生中随机抽取一个人并且输出其学号和分数.要求抽取是没有冗余操作.注意:用类编程,类内要有构造函数.
2023-03-28 08:11:34
499
原创 C++ 实验作业
奖金发放管理.父类为人员类,有一个int型数据n1表示人数.派生类为奖金类,有一个int型数据n2表示每人发放的奖金平均数.两个类分别编写构造函数(重载),对数据进行初始化.在子类中对”>”运算符进行重载,比较两个对象总奖金数的多少.在类内对”
2023-03-28 08:09:43
298
原创 C++LeetCode每日一题 正负数相互转化
如果整数数超过 32 位有符号整数范围 [−231, 231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231 的整数应该被固定为 −231 ,大于 231 − 1 的整数应该被固定为 231 − 1。将前面步骤读入的这些数字转换为整数(即,"123" -> 123, "0032" -> 32)。请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。//将正数转成负数,将负数转成正数。
2023-03-24 09:26:52
712
原创 C++LeetCode每日一题 Day3 常用容器vector的使用
/b为数组,在a的第1个元素(从第0个算起)的位置插入b的第3个元素到第5个元素(不包括b+6),如b为1,2,3,4,5,9,8 ,插入元素后为1,4,5,9,2,3,4,5,9,8。//删除a中第1个(从第0个算起)到第2个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+ 3(不包括它)//在a的第1个元素(从第0个算起)的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4。//返回a的最后一个元素。
2023-03-23 19:53:43
235
原创 C++ LeetCode每日一题
由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。if (n == 0) { //增强代码健壮性。将最终结果插入 nums 的前 k 个位置后返回 k。的数组 nums ,请你。
2023-03-21 15:40:07
102
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人