- 博客(356)
- 收藏
- 关注
原创 visual stdio 2019环境配置及项目创建教程
目录一. 下载法一:到电脑自带的微软商城搜索visual studio 2019(为防止网页搜索下到病毒)法二:Visual Studio 2019 版本https://docs.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes二. 环境配置汉化工作负荷下载修改三. 创建项目一. 下载法一:到电脑自带的微软商城搜索visual studio 2019(为防止网页搜索下到病毒)下好之后出现的是.
2022-02-03 22:07:19 3077
原创 el-dialog宽度自适应
其中有一个是,在使用element-plus的el-dialog时,在pc端和在手机端打开,由于屏幕宽度的不同,我希望el-dialog的宽度是不一样的。当我在pc端用浏览器打开页面,并缩小窗口时,并不会触发宽度的变化。1️⃣首先,直接给el-dialog设置自定义class结合媒体查询是无效的,直接设置el-dialog的样式属性无效。但每次窗口修改时我需要刷新才会重新触发修改width的操作,所以这里我再加了个监听视口变化的操作。这只是获取你操作屏幕的宽度,并不是你窗口的宽度。
2024-03-28 19:13:09 183
原创 mockjs学习
每个属性组成部分:属性名 生成规则 属性值”属性名|生成规则“:属性值1️⃣七种生成规则属性名 和 生成规则 之间用竖线分隔。生成规则 是可选的。生成规则 的 含义 需要依赖 属性值的类型 才能确定。属性值 中可以含有@占位符。属性值 还指定了最终值的初始值和类型。具体示例可以看官方文档。
2024-03-10 22:11:47 844
原创 今日学习总结2024.3.3
今天也是全天自习的一天,非常充实早上八点开始接着晚上的docker配置,并一边同步博客,还是遇到了卡壳看了一个视频,里面提到了物联网,感觉对这个概念更加了解了,当年填报专业志愿的时候有将物联网工程放在备选项里,感觉很有意思;这个视频讲的主要是家用联网设备的安全问题。之前家里安装了一个监控,现在想想还蛮危险的,家用摄像头很容易就能被黑客破解控制,很容易暴露隐私。在牛客上看面经和大佬的自述,看到已经拿到满意工作的前辈回顾大学历程,感觉真的很优秀啊。上午十点半开始打力扣周赛,有点手生,表现不算好,做出三
2024-03-03 14:34:05 481
原创 leetcode第 387 场周赛总结
而且Y的位置是随n的大小固定的,所以我们只需要统计出Y内的0,1,2的数量以及整个矩阵的0,1,2的数量,然后计算出最小操作数就可以了。这道题其实就是个简单的二维前缀和,也很简单。这里我已经改进了,但主要还是提供一个思路,就不把修改后的代码贴出来了,如果不会这道题可以顺着我的思路自己做出来。第一道简单题,可以通过slice(-1)获取最新插入的数,进行比较分别操作即可,没什么好说的。这次周赛,题目比较简单,第三道题有点浪费了时间,思路是对的,但是被我把问题复杂化了。数值只可能是0,1,2;
2024-03-03 12:12:20 296
原创 今日学习总结2024.3.2
很后悔之前胆小,没有提前投简历找实习,现在稍微有点晚了,希望能在暑假前找到满意的实习。还没像我到大三下学期的小伙伴们,大胆去面试吧。实验室一个星期唯一一天的假期周六,也就是今天,也完全不想放假出去玩啊,在实验室泡了一天。最近的学习状态比较好,感觉非常享受知识进入脑子的过程,有点上头。
2024-03-02 23:56:37 395
原创 最近半年博客产出的反思
包括后面对一些知识的深入学习,我喜欢用gpt来辅助我理解,使用gpt能让我学习过程中,即时提问我不明白的地方,我可以结合学习资料和gpt的回答很快的解决问题。同时,近半年在做知识笔记的时候,少了些自己的理解的表述,多了一些AI那边借鉴来的内容。最近完善boss资料的时候,我认为自己在大学期间学习过程中经常用博客记录学习内容以及在学习过程中写博客笔记是个不错的好习惯,在询问了师傅的意见之后决定把csdn的主页也挂上去。在之后的博客里,我会在自己的理解之上,更多的用自己的语言来做博客笔记。
2024-03-02 22:39:00 340
原创 Vue.js中的$nextTick
其实目前在我现有的开发经历中,我还没有实际运用过$nextTick,今天在看书时,学习到了这个东西,所以做个笔记记录一下。$nextTick 是 Vue提供的一个方法,用于在 DOM 更新之后执行回调函数。它在 Vue.js 中常常用于处理 DOM 相关的操作或获取更新后的 DOM 元素。通过使用 $nextTick 方法,可以确保在 DOM 更新完成后再执行回调函数,从而保证操作的准确性和可靠性。注意,它返回的是一个Promise对象。
2024-03-02 20:57:01 619
原创 寒假学习总结
学习过程均进行了代码实践。小程序开发和nodejs还有express都系统学习完了,还没有正式投入到实际项目运用中,打算在今年的服创项目中增加小程序端,扩充比赛项目内容,并在实践中运用小程序的相关知识;1.使用JavaScript对不同类型的dp题组加强了刷题训练,比如斐波拉契类型dp,矩阵类型dp,字符串类型dp,最长递增子序列系列dp,最长公共子序列dp,股票最佳时机dp,树在dp中的应用。这个自己的项目,网上的参考资料比较少,在开发过程中遇到了很多困难,这个寒假看了很多相关资料,还在努力开发中。
2024-02-27 21:29:10 631
原创 【JavaScript知识点学习笔记】深浅拷贝
深浅拷贝是JavaScript一个非常经典的知识点,每次提到深浅拷贝我总是没办法特别清楚的表述出来,包括很多其他的知识点,其实是会的,但是没办法讲的很清楚,学习了费曼学习法,决定在复盘知识点的时候,每天找人讲解知识点,如果我能表达出来且让对方能听明白我讲的东西才算过关!这意味着如果原始对象包含嵌套对象,浅拷贝后的对象仍然会共享这些嵌套对象的引用。如果对象存在循环引⽤,即对象内部包含对⾃身的引⽤, JSON.stringify() ⽅法⽆法正确处理,会导致循环引⽤的属性被序列化为 null。
2024-02-17 23:43:09 521
原创 Websocket学习笔记
实现 WebSocket 相对简单,服务器端和客户端都有相应的库或 API 可以使⽤,例如 Node.js 中的 socket.io、ws 等,客户端则可以使⽤浏览器提供的 WebSocket API。与传统的 HTTP 请求-响应模式不同,WebSocket 提供了持久连接,使服务器能够主动向客户端推送数据,⽽不需要客户端发起请求。存在⼀个明显的弊端(消息只能有客户端推送到服务器端,⽽服务器端不能主动推送到客户端),导致如果服务器如果有连续的变化,这时只能使⽤轮询,⽽轮询效率过低,并不适合。
2024-02-17 23:27:44 564
原创 性能优化措施总结
合并和压缩 CSS、JavaScript ⽂件,使⽤雪碧图、字体图标等减少图片请求,减少不必要的资源请求。:在构建Vue应⽤时,确保使用⽣产模式,这将禁⽤⼀些开发模式下的警告和调试⼯具,并启用性能优化的功能。:使⽤Vue的计算属性和侦听器来优化视图的更新。:使⽤Webpack的代码分割功能,将代码拆分为多个小块,按需加载,避免打包⼀个巨⼤的⽂件。等代码规范⼯具和静态代码分析⼯具,可以发现潜在的性能问题和优化机会,并进行相应的调整。:选择⾼效的插件和加载器,合理配置它们的项,以优化构建过程和资源处理。
2024-02-17 23:05:20 1392
原创 【刷题日记】最长等差数列
等差数列的特点是相邻两个数的差值是一致的。该题数组中的每个元素值大小范围是【0~500】,所以等差数列的差值范围是【-500~+500】,我们计算差值时可以把差值+500使得差值范围变成【0~1000】;注意,那要把dp数组大小改到1000+.初始化:每单独一个数字都可以是任意等差数的等差数列的唯一成员,所以初始化dp的值为1。dp【i】【j】的含义是:以第i个值为最后一个元素,以j为差值的等差数列的长度。这道题,只要思路想到了就很好写。) 的值都相同,那么序列。按照这个思路可以解题。
2024-02-17 01:51:27 180
原创 【正则表达式
正则表达式构造函数RegExp()和正则表达式字面量的主要区别在于语法和使用方式。正则表达式构造函数RegExp()使用字符串作为参数,需要进行双重转义,即需要使用双反斜杠来表示特殊字符,如 \\d 表示数字, \\w表示字母下划线等。构造函数的参数可以是一个字符串,也可以是两个字符串,第一个字符串是正则表达式模式,第二个字符串是修饰符。如果正则表达式模式是一个变量,只能使用构造函数的方式创建正则表达式。正则表达字面量 // (是左边一个 / 右边一个 / 将表达式包围起来)使用两个斜杠将
2024-02-16 22:26:23 853
原创 【JavaScript】添加、移除、移动、复制、创建和查找节点
注意,以上⽅法都是基于 document 对象进⾏操作的,如果需要在特定的节点上执⾏这些操。作,可以使⽤相应节点的⽅法,例如 parentNode.appendChild(node)添加、移除、替换、插⼊节点。
2024-02-16 21:44:50 239
原创 JavaScript- let var const区别
对于 const 关键字声明的变量 x ,它创建了⼀个只读的引⽤,也就是说它的值不能被修改。在示例中, const x = 10 声明了⼀个常量 x ,⽽在 if 语句块内部再次使⽤ const x = 20 声明了⼀个新的常量 x ,它的作⽤范围也仅限于 if 语句块内部。const 关键字声明的变量创建⼀个只读的引⽤,其值不可修改,但对于复合类型的变量,可以修改其属性或元素的值。声明变量的作⽤域限制在其声明位置的上下⽂中,⽽⾮声明变量总是全局的。声明创建⼀个值的只读引⽤ (即指针)
2024-02-16 21:15:51 437
原创 Vue的双向绑定数据的原理
在上述示例中,我们通过 Object.defineProperty() 对 data 对象的 message 属性进⾏劫持,并在 getter 和 setter 中添加了相应的⽇志和更新操作。vue.js 则是采⽤数据劫持结合发布者-订阅者模式的⽅式,通过 Object.defineProperty() 来劫持各个属性的 setter , getter ,在数据变动时发布消息给订阅者,触发相应的监听回调。通过数据劫持,Vue能够捕获数据的变化,⽽发布者-订阅者模式则确保了数据变化时的及时通知和更新。
2024-02-16 21:02:36 481
原创 【JavaScript细节】map与forEach的区别
在上⾯的示例中,使⽤ forEach ⽅法遍历数组并输出元素、索引和原数组。⽽使⽤ map ⽅法遍历数组并返回每个元素的两倍值,⽣成⼀个新的数组 doubledNumbers。map ⽅法也⽤于遍历数组,返回⼀个新的数组,并且可以通过在回调函数中使⽤ return 语句来指定每次遍历的返回值。的,即使在遍历过程中使⽤ return 语句也⽆法停⽌遍历。⽽ map ⽅法可以使⽤ return 语句中断遍历。⽽ forEach ⽅法不能链式调⽤其他数组⽅法。⽽ forEach⽅法没有返回值,仅⽤于遍历数组。
2024-02-16 19:14:53 638
原创 ES6的重要特性
11 . 管道操作符:提案阶段的特性,引⼊了管道操作符( |> ),可以将表达式的结果作为参数传递给下⼀个表达式,简化了函数调⽤和⽅法链的写法。9. 模块化:引⼊了模块化的概念,可以使⽤ import 和 export 语法导⼊和导出模块,提供了更好的代码组织和模块复⽤的⽅式。7. Promise:引⼊了 Promise 对象,⽤于更好地处理异步操作,解决了回调地狱的问题,并提供了更清晰的异步编程模式。8. 类:ES6引⼊了类的概念,可以使⽤ class 关键字定义类,实现了更接近传统⾯向对象编程的⽅式。
2024-02-16 18:27:55 774
原创 常见的JavaScript书写基本规范
14. 对于⻓的逻辑语句或表达式,可以使⽤合适的换⾏和缩进来增加可读性,或者使⽤括号将其。7. 尽量避免使⽤全局变量,封装代码到函数或模块中,使⽤局部变量来限制作⽤域,减少命名。5. 使⽤缩进(通常是四个空格或⼀个制表符)来表示代码块的层次结构,增加代码的可读性。11 . 使⽤单引号或双引号来表示字符串,保持⼀致性,推荐使⽤单引号。12. 尽量使⽤模板字符串来拼接字符串,避免使⽤字符串连接符(9. 尽量避免使⽤隐式类型转换,使⽤严格相等运算符()来提⾼代码的安全性和效率,避免使⽤隐式全局变量。
2024-02-16 14:53:26 264
原创 promise【JavaScript
一开始是pending,然后可以转变为fulfilled或rejected,一旦转变为其中一种状态,就会保持在那个状态,无法再次改变。在settled状态下,Promise的状态已经确定,不会再发生变化。作的结果,调⽤了 resolve 或 reject ⽅法来改变 Promise 的状态。功时的回调函数,使⽤ catch ⽅法捕获了错误。在上⾯的示例中,我们创建了⼀个 Promise 对象,并在内部定义了⼀个异步操作。这样,我们就可以通过对 Promise 的状态进⾏判断和处理,来执⾏相应的操作。
2024-02-16 14:22:13 402
原创 【Javascript】webpack的使用和特性
Webpack具有强⼤的打包能⼒,能够将项⽬中的多个模块打包成⼀个或多个静态资源⽂件。它⽀持各种模块加载器和插件,可以处理各种类型的资源⽂件,并且能够进⾏代码压缩、⽂件合并、按需加载等优化操作,以提⾼应⽤的性能和加载速度。在实际开发中,Webpack 是一个非常强大的前端构建工具,可以用于将各种前端资源(如 JavaScript、CSS、图片等)打包成静态资源。- 根据开发环境和生产环境的不同,使用 webpack 的环境变量进行配置,以实现对应环境下的不同行为,如开发时的热更新、生产时的代码压缩等。
2024-02-15 17:18:54 799
原创 【Javascript】内存泄漏
JavaScript 内存泄露指的是在程序中,不再使用的内存没有被正确释放,导致内存占用持续增加,最终引发性能问题甚至崩溃。setTimeout 的第一个参数使用字符串而非函数。一直存在于内存中,直到页面关闭,容易造成内存泄漏。控制台日志(console.log)移除存在绑定事件的 DOM 元素。通常哪些操作会造成内存泄漏呢?未使用 var 声明的全局变量。闭包函数(Closures)循环引用(两个对象相互引用)解析后的代码无法被垃圾回收。垃圾回收器定期扫描对象。
2024-02-15 17:10:08 666
原创 【JavaScript】字符串反转的常用方法
将字符串转换为数组,然后使用`reverse()`方法反转数组,最后再使用`join()`方法将数组转换回字符串。通过循环遍历字符串的每个字符,逆序拼接字符来构建反转后的字符串。使用递归函数逐个截取字符串的最后一个字符,并与剩余部分进行拼接。这些方法都可以实现字符串反转。我觉得最香最好用的还是第一种!
2024-02-06 17:23:44 361
原创 JavaScript将整数转化为字符串的常用方法
toFixed()`方法可以将数字转换为字符串,并保留指定小数位数。你还可以传递一个基数作为参数给`toString()`方法(例如,将数字转换为二进制、八进制或十六进制字符串)。这种方法利用了JavaScript的类型强制转换特性,当数字与字符串进行加法操作时,数字会被转换为字符串。字符串模板(ES6新增的功能)也可以用来将数字转换为字符串,通过将数字嵌入到`${}`中。将数字与空字符串(`""`)使用加号(`+`)运算符连接,也可以实现转换。`String()`函数可以将其参数转换为字符串。
2024-02-06 17:21:05 704
原创 【刷题日记】最长定差子序列
更新哈希表,这里 `dp.get(v - difference) || 0` 是获取以 `v-difference` 结尾的最长等差子序列的长度,如果不存在则返回0,然后加1表示将当前元素 `v` 加入到等差子序列中。在这个问题中,状态转移方程是 `dp[v] = dp[v-d] + 1`,意味着如果存在一个值为 `v-d` 的元素,那么以值为 `v` 的元素结尾的最长等差子序列的长度可以从以 `v-d` 结尾的最长等差子序列的长度推导出来,即在后者基础上加一。` 更新找到的最长等差子序列的长度。
2024-02-06 17:07:47 724
原创 【刷题日记】最长数对链
当pairs【i】【0】>pairs【j】【1】时,dp【i】=max(dp【i】,dp【j】+1);思路 :这道题其实,还是和前一个很像,只不过是数组对找最长递增序列的感觉。然后dp【i】含义设置为以pairs【i】【1】为结尾的最长递增序列长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。- 如果返回值 等于 0,则`a`和`b`的相对位置不变。- 如果返回值 小于 0,则将`a`排在`b`之前。- 如果返回值 大于 0,则将`b`排在`a`之前。个数对组成的数对数组。
2024-02-06 16:15:33 250
原创 JavaScript的sort函数
JavaScript 的 `Array.prototype.sort()` 方法用于对数组的元素进行排序,并返回排序后的数组。默认情况下,`sort` 方法将数组元素转换为字符串,并按照字符串的Unicode码点顺序进行排序。这意味着即使数组中的元素是数字,它们也会被先转换成字符串,然后再比较它们的字典序,这可能会导致非直观的排序结果。为了实现更复杂的排序逻辑,`sort` 方法可以接受一个可选的比较函数作为参数。
2024-02-06 16:13:34 303
原创 【刷题日记】最长递增子序列的个数
如果 dp【i】< dp【j】+1,我们需要更新dp【i】=dp【j】+1,同时,cnt【i】=j的最长子序列个数即cnt【j】。如果dp【i】= dp【j】+1,说明两种情况长度相同,要把cnt【j】也加到cnt【i】中。同时,如果res = dp【i】,说明这两种情况长度一样,要把cnt【i】也加到ans中。思路:这道题和上一道题的本质是一样的,只是在迭代结果时要做一些更细致的操作。上一题我们要取dp【i】和dp【j】+1中更大的。还需要增加一个记录结果个数值的变量ans。返回最长递增子序列的个数。
2024-02-06 15:52:19 189
原创 【刷题日记】最长递增子序列
给你一个整数数组 ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如, 是数组 的子序列。这道题比较简单。只需要用到一维的dp数组。首先dp【i】的含义设定为数组中 0 到 i 项中最长递增子序列的长度初始化时,每个数字本身单独就是一个递增子序列,所以初始化dp值为1递推公示:从前往后推,遍历nums数组,然后在当前数组项的基础上遍历前面的数组项。当nums【i】>nums【j】时才可能产生更长的递增子序列,在dp【j】的基础上加
2024-02-06 15:36:49 154
原创 【刷题题解】编辑距离
这道题的dp【i】【j】含义我们设定为:word1的前 i 字符串转变为word2的前 j 字符串所需要进行的最小操作数。=word【j】时,我们有三种操作选择,增加/删除/替换;,即从空字符串变成另一个字符串或者从一个字符串变为空,转换所需的操作数即为另一个单词的长度。这道题也是,一眼动态规划,乍一看感觉很复杂,仔细思考一下还是觉得很复杂。中的一个为空时,转换所需的操作数即为另一个单词的长度。逐一遍历word1的每个字符上遍历word2的每个字符。当word【i】=word【j】时,无需做改变。
2024-02-04 23:49:55 253
原创 【刷题题解】最长回文子序列
给你一个字符串s,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列这道题,一眼动态规划,但是即使动起来也规划不了一点😅好,这道题,我们可以这样子思考,先把视线聚焦在单个字符上,单个字符是s【i】就是一个回文字符串,所以,在此基础上,
2024-02-04 22:52:40 253
原创 前端文件上传(文件上传,分片上传,断点续传)
如果需要重新上传该文件,则可以在下一次上传任务中,首先检查之前已上传的切片信息,如果存在已上传的切片,则可以直接跳过这些切片并进行后续的上传操作。具体实现方法可以根据上传任务的特点来确定,如将上传任务分为多个阶段,每个阶段上传一定数量的切片,如果某个阶段上传失败,则跳过该阶段并记录下失败的切片信息,待后续再进行重传。而通过分片上传,即使某个小块上传失败,只需要重新上传该小块,而不必重新上传整个文件。同时,如果某个小块上传失败,可以重试该小块,而不会影响其他小块的上传,从而提高上传的稳定性。
2024-01-24 11:02:23 1325
原创 github提交代码报错22或443超时
昨天今天一连两次遇到推不上问题,处理完一个第二天又出现另一个问题。直接在终端中输入vim ~/.ssh/config,使用vim编辑器打开此文件,一般是为空。在桌面打开git bash终端输入:ssh -T git@github.com。打开vim编辑器,insert键进行输入了,Esc结束输入,:wq回车退出。众所周知,用过github的都遇到过不少次好好的突然推不上去代码的情况。试了网上很多方法,最后是把端口改成443生效了。结果今天上午写代码推送又出问题说443端口超时。然后是通过两行代码解决的。
2024-01-22 15:35:30 484
原创 刷题日记-139. 单词拆分
如果找到了一个拆分点 `j`,且 `dp[j]` 为 `true`,表示从起始位置到 `j` 的子字符串可以被拆分为字典中的单词,那么将 `dp[i]` 设置为 `true`。最后,如果 `dp[s.size()]` 为 `true`,表示整个字符串 `s` 可以被拆分为字典中的单词,返回 `true`;否则返回 `false`。这段代码是一个解决单词拆分问题的函数 `wordBreak`,其作用是判断字符串 `s` 是否可以被拆分为由字典 `wordDict` 中的单词组成。在每个拆分点 `j` 处,
2024-01-21 10:02:30 388
原创 call、apply、bind应用题型
call、apply和bind都是JavaScript中Function对象的原型方法,它们的主要作用是改变函数的执行call、apply和bind都是JavaScript中Function对象的原型方法,它们的主要作用是改变函数的执行上下文,即。call是函数改变this指向的一个方法,题目要求我们封装函数f,所以返回的是一个function,封装后的f,所以在方法中要返回一个function。这道题,考察的是修改this指向,延申到call,apply和bind的作用和区别。(注意这里的参数调用方法)
2023-12-29 01:58:16 358
原创 reactive数据不响应
Proxy`本身用于对象拦截,通过`new Proxy`返回的值触发`get`和`set`方法,并通过ES6的`Reflect`进行反射,动态地对被代理对象的属性进行操作。由于`Proxy`是基于对象的拦截,当对象本身是原始值时,拦截无效,响应式也就失效。而`ref`在实现响应式时通过`.value`包裹一层对象,从而解决了这个问题。问题在于每次直接将对象或数组赋值给`reactive`创建的对象时,导致`reactive`创建的响应式对象直接被新赋值的对象代理。法二:另一种解决方法是直接使用`ref`
2023-12-17 22:39:39 507
原创 Vue3页面如何设置rem单位的依据“根font-size”的两种方式
最近在对项目做整体的自适应。我们可以通过设置meta的viewport属性设置屏幕的缩放,但有时候,屏幕缩放了但字体大小也需要做相应的调整才能达到更好的自适应效果。我们很容易想到使用媒体查询+rem来实现字体的自适应。rem单位:“rem” 是 “root em” 的缩写,表示相对于根元素(html元素)的字体大小。如果根元素的字体大小为16px,1rem就相当于16px。如果根元素字体大小更改,那么所有使用rem单位的元素的大小都会相应地调整。首先,简单说说使用'rem'单位的目的和必要性。
2023-12-13 19:58:48 1044
原创 【热】如何实现el-table列宽随内容长度自适应最小宽度
非常火急火燎的来写这篇博客!!因为自己一开始想实现这个效果时在网上查了很久查了很多资料和博客都没有找到能有效达到效果的方法,要么就是别人说有效但是我这里会报错而且难以解决。最后终于被我自己给摸索出来了!
2023-12-12 22:02:06 1025 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人