- 博客(35)
- 收藏
- 关注
原创 前端0知识docker临危之被迫弄docker教程
这时他将让你弄docker!我用的阿里巴巴推的轩辕,因为其他的我在下载项目依赖基本上都下载失败,轩辕的也就go出问题,这里因为go下载失败所以跟后端说了之后,后端把go也弄进了容器镜像里就不需要远程拉取go镜像了。以上步骤是基于你的docker出现了WSL error!此时应该是没有什么问题了,如果出现就找后端,前端自己闷头解决很痛苦!点击右下侧,进入docker的setting页面(正常怎么进入我不知道,我是点击这个更新提示进入的)这个指令最后结果是三个容器(有对应容器名字)都运行成功证明成了!
2025-07-17 11:16:07
1035
原创 React+TS编写轮播图
数据扩展:通过在原始数据前后添加副本,实现视觉上的无限循环无缝跳转:当滚动到边缘时,禁用动画并立即跳转精确计算:动态计算轮播项宽度确保滚动精度状态管理:使用React状态控制当前显示项CSS过渡:通过CSS实现平滑的滚动效果。
2025-04-20 23:05:46
888
原创 ES6中的map和set
JS的数据对象(Obejct),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键(一定程度上对其的使用有限制)比如下面代码上面代码原意是将一个 DOM 节点作为对象data的键,但是由于对象只接受字符串作为键名,所以element被自动转为字符串。“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。(Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。
2024-12-15 22:36:46
1382
原创 vue深入理解(1)
编译时(Compile Time)和运行时(Runtime)指的是程序在不同的阶段进行的不同类型的处理。js 编译是什么呢?现代前端开发,我们都是使用 react、vue、webpack 等工具,其实就是把这些框架代码编译成了 js 代码,那么编译时其实是指的,webpack 等工具把 react、vue 编译为 js 的过程。运行时自然不用说,就是浏览器解释 js 代码的过程。纯运行时框架例子// 渲染 dom。
2024-12-08 20:14:07
1133
原创 vue3项目中使用星火API
通过阅读文档可知我们需要返回给api接口的数据需要authorization,然后对话内容需要设置message设置role为user则content的内容是使用者的提问。在node环境epxress中使用讯飞ai接口进行二次封装,通过ai对话回复提取,获得ai提取的文章摘要。然后点击应用进入之后,可以查看使用,我使用的是spark lite免费便宜,对于个人项目来说是足够的。在点击应用选择要使用的ai接口(这里我选取的是spark Lite )右下角可以看到web的接口文档。以下是vue3前端调用。
2024-12-01 20:45:23
957
原创 Express编写中间件
那么请求就会处于挂起状态,既不会发送响应给客户端,也不会继续执行后续的中间件。第二个路由不会导致任何问题,但是永远都不会被调用,因为第一个路由结束了请求/响应循环。这样做会将控制权传递给下一个中间件函数,允许请求继续在中间件栈中流动。函数不是Node.js或Express API的一部分,而是传递给中间件函数的第三个参数。一旦这样做了,请求-响应循环就结束了,后续的中间件将不会被执行。:如果一个中间件函数决定结束请求-响应循环,它可以通过发送一个响应(例如,调用。,以将控制权传递给下一个中间件函数。
2024-11-24 19:08:31
1148
原创 vue中动态渲染静态图片资源
在vue上,动态渲染静态图片资源(比如从assets文件夹加载的图片)需要注意打包工具对静态资源的解析方式。如果你的项目是通过vite创建的vue3项目的话,应该使用vite提供的静态资源载入方法。requie是webpack提供的一种加载能力,所以vite不能用require方法。,所以两者的底层打包工具不一样,相应的对静态资源的解析方式也不一样。如果路径是动态拼接的,可以直接在模板中拼接路径。使用webpack提供的静态资源路径解析。
2024-11-17 20:05:05
1311
原创 Web API中的requestAnimationFrame
requestAnimationFrame 适合需要高精度控制和动态调整的复杂动画。CSS 动画适合简单的、预定义的动画效果,特别是那些需要高性能且不需要频繁调整的场景。例如,可以使用 rAF处理复杂的交互逻辑,而使用 CSS 动画处理简单的视觉效果。
2024-11-03 14:59:02
1330
原创 JavaScript完整笔记
JS引入JavaScript 程序不能独立运行,它需要被嵌入 HTML 中,然后浏览器才能执行 JavaScript 代码。通过 script 标签将 JavaScript 代码引入到 HTML 中,有两种方式:内部方式通过 script 标签包裹 JavaScript 代码我们将 < script>放在HTML文件的底部附近的原因是浏览器会按照代码在文件中的顺序加载HTML。如果先加载的JavaScript期望修改其下方的HTML,那么它可能由于HTML尚未被加载而失效。因此,
2024-10-25 14:54:36
1206
原创 JavaScript完整笔记
复习:splice() 方法用于添加或删除数组中的元素。注意这种方法会改变原始数组。删除数组:splice(起始位置, 删除的个数)比如:let arr = ['red', 'green', 'blue']arr.splice(1,1) // 删除green元素console.log(arr) // ['red, 'blue']添加元素splice(起始位置,删除个数,添加数组元素)let arr = ['red', 'green', 'blue']//arr.splice
2024-10-23 19:40:19
635
原创 移动应用开发实验室JS第一次考核
解释:垃圾回收是指自动释放不再使用的内存。程序在运行时会动态分配内存,但并不是所有被分配的内存都会一直被使用。垃圾回收机制的任务就是识别那些不再被使用的内存,并将其释放回系统,以便其他进程可以使用。首先是事件捕获阶段:从父到子的进行到目标阶段,捕获阶段的任务就是建立这个事件传递路线,以便后面冒泡阶段顺着这条路。解析:var存在变量提升,内层定义的tmp由于变量提升覆盖了外层定义的tmp,实际的执行如下。JS的事件流分成三个阶段事件捕获阶段、目标阶段、冒泡阶段。然后是目标阶段:事件捕获到目标进入目标阶段。
2024-09-18 18:27:22
835
原创 6.4分享会
严格意义上讲,我们在 JavaScript 阶段学习的知识绝大部分属于 ECMAScript 的知识体系,ECMAScript 简称 ES 它提供了一套语言标准规范,如变量、数据类型、表达式、语句、函数等语法规则都是由 ECMAScript 规定的。上述的例子中当用户分分别点击【开始】或【结束】按钮后,通过右侧调试窗口可以观察到 html 标签的内容在不断的发生改变,这便是通过 DOM 实现的。是 JavaScript 内置的专门用于 DOM 的对象,该对象包含了若干的属性和方法,
2024-06-04 16:13:45
1107
1
原创 每日算法4/21
最上面一行,机器人只能一直往左走:dp[0] [j] = arr[0] [j] + dp[0] [j-1];最左面一列,机器人只能一直往下走:dp[i] [0] = arr[i] [0] + dp[i] [0];根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉,下一个小时才会开始吃另一堆的香蕉。,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。每个小时,她将会选择一堆香蕉,从中吃掉。狒狒喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。因为路径 1→3→1→1→1 的总和最小。
2024-04-21 22:53:44
2273
原创 二分答案算法
跟二分查找类似,当我们要找某个量的最值的时候,可以在这个两最小可能的取值,和最大可能的取值之间二分,来快速找到答案check函数为了验证中间值是否符合题目要求,根据是否来决定下一轮区间界限是作曲兼缩小,还是右区间缩小。
2024-04-21 17:28:39
2310
1
原创 每日算法4/20
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。网格的左上角 (起始点在下图中标记为 “Start” )。从左上角开始,总共有 3 条路径可以到达右下角。你有多少种不同的方法可以爬到楼顶呢?1. 1 阶 + 1 阶 + 1 阶。1. 向右 -> 向下 -> 向下。2. 向下 -> 向下 -> 向右。3. 向下 -> 向右 -> 向下。有两种方法可以爬到楼顶。1. 1 阶 + 1 阶。有三种方法可以爬到楼顶。动态规划主要步骤就是。这时一道二维的DP题。
2024-04-20 21:07:26
879
原创 每日算法题补4/19
然后对于每个组,先描述字符的数量,然后描述字符,形成一个描述组。局部只要右边的孩子分比左边的孩子高的话,右边的孩子糖果数就比左边的孩子糖果数多;全局使得相邻的孩子中,评分高的右孩子比左孩子分配到的糖果多。countAndSay(4) = 读 "21" = 一 个 2 + 一 个 1 = "12" + "11" = "1211"「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。countAndSay(2) = 读 "1" = 一 个 1 = "11"
2024-04-20 01:06:17
931
原创 每日算法题
分配给所有商店的最大商品数目为 max(5, 5, 5, 5, 5, 5, 5) = 5。分配给所有商店的最大商品数目为 max(2, 3, 3, 3, 3, 3) = 3。11 件种类为 0 的商品被分配到前 4 间商店,分配数目分别为:2,3,3,3。6 件种类为 1 的商品被分配到另外 2 间商店,分配数目分别为:3,3。15 件种类为 0 的商品被分配到前 3 间商店,分配数目为:5,5,5。10 件种类为 2 的商品被分配到最后 2 间商店,数目为:5,5。
2024-04-20 00:37:52
1035
原创 每日算法4/17
将 3 个球分别放入位于 1,4 和 7 的三个篮子,两球间的磁力分别为 [3, 3, 6]。在代号为 C-137 的地球上,Rick 发现如果他将两个球放在他新发明的篮子里,它们之间会形成特殊形式的磁力。然后遍历哈希中键值的位置,如果为1(代表着数组元素是唯一元素)那么增加到总数当中。先将数组映射到哈希中,索引就是数组元素,索引指向数组的值表示数组元素出现过几次。唯一元素为 [1,2,3,4,5] ,和为 15。唯一元素为 [1,3] ,和为 4。,那么它们之间的磁力为。没有唯一元素,和为 0。
2024-04-17 22:32:17
1168
1
原创 每日算法4/16
nums 可以划分成 (2, 2) ,(3, 3) 和 (2, 2) ,满足所有要求。无法将 nums 划分成 4 / 2 = 2 个数对且满足所有要求。指包含英语字母表中每个字母至少一次的句子。给你一个仅由小写英文字母组成的字符串。包含英语字母表中每个字母至少一次。6 / 2 = 3 个数对。
2024-04-16 22:00:00
633
原创 每日算法4/13
链表中,0 和 1 是相连接的,且 nums 中不包含 2,所以 [0, 1] 是 nums 的一个组件,同理 [3] 也是一个组件,故返回 2。链表中,0 和 1 是相连接的,3 和 4 是相连接的,所以 [0, 1] 和 [3, 4] 是两个组件,故返回 2。中组件的个数,这里对组件的定义为:链表中一段最长连续结点的值(该值必须在列表。,那么另一个栈的数据就是按照出队列的顺序出栈。,该列表是上述链表中整型值的一个子集。由于栈是后进后出,而队列是先进先出,,该链表上的每个结点都有一个。
2024-04-14 01:41:14
891
1
原创 每日算法4/8
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。反转后的字符串中不能存在前导空格和尾随空格。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。,从字符串开头算起,每计数至。是由非空格字符组成的字符串。
2024-04-08 23:54:41
513
原创 每日算法4/6
指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。利用快慢指针,如果链表成环,那么快指针一定会在一个节点与慢指针相遇。链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,请你反转链表,并返回反转后的链表。仅仅是为了标识链表的实际情况。,判断链表中是否有环。给你一个链表的头节点。
2024-04-06 22:42:47
1035
1
原创 每日算法4/4
首先通过终止指针遍历得到元素之和,得到一组元素满足元素之和>=目标值的子数组,并记录下此时的长度,通过动态最小化记录最小子数组的长度,然后缩小左界限,如果仍然满足元素之和>=目标值,那么继续缩小子数组的左界限并记录。以上是一圈的输入,要进入下一圈的话,行列的起始位置,终止位置都会发生改变。终止位置回到退1,行列的起始位置会进1,然后同上进行一圈的循环输入。,所以最后还需要判断是否是奇数,如果是奇数,还需要输入中间的那个数组元素。如果不存在符合条件的子数组,返回。是该条件下的长度最小的子数组。
2024-04-04 21:48:24
443
2
原创 每日算法4/3
https://img-blog.csdnimg.cn/direct/3d896c9fa73d4c79b6bc11535e1db7e3.jpeg
2024-04-03 23:14:32
976
1
原创 二分查找LeetCode.33.
因为是找一个具体的数字而不是求一个边界,所以需要有等于号来保证最后左右边界收缩至同一位置时仍可以得到正确答案;同样的如果右方有序且确定目标元素位于该有序区间内,那么就将左边界收缩至mid - 1;二分查找是在有序数组之中,题目虽然将数组进行了旋转,但在一个分界处左右都是有序的,循环内都还没有返回查找到的位置,代表没有查找到目标值,所以根据题目得最后返回-1。到达此处说明mid与target的元素是不同的,直接舍弃即可;到达此处说明mid与target的元素是不同的,直接舍弃即可;按升序排列,数组中的值。
2024-04-02 22:43:44
500
1
原创 素数-欧拉筛LeetCode204.
当标记处为1时,表示序列i是素数,然后存入primer数组中,且每轮循环要进行非素数标记,当 i 可以整除素数表中某个素数时,那么 i 就不需要在往后乘其他素数了,说明prime[j]是i的一个素因子,并且是最小的素因子(因为是最早接触的素因子),所以i可以表示为i*prime[j]的形式。所以需要一个数组vis存放标记,数组几是倍增结果标记为0表示非素数,1表示是素数,另一个数组primer存放素数。常规的方法,对于这道题而言,运行时间太长,采用欧拉筛能节约很多时间,欧拉筛的时间复杂度是O(n)
2024-04-02 22:06:36
278
1
原创 单链表OJ题练习-Leetcode 206.反转链表
原链表这里我用了两种来解决。既然要使链表反转,那么原本n1->next=n2,n1指向n2(即n1存储n2的地址),就反转成n2指向n1(即n2存储n1的地址),这样两个节点就可以反转了。但这样会出现一个问题,n2->next存储的是n1的地址,却丢失了原本下一个节点的地址(即原来指向该节点的指针丢失了),会造成内存泄漏导致该节点无法访问,所以需要一个n3来保存下一个节点地址。:再用一个指针n3在进行逆转前存储下一个节点的地址,n3=n2->next将下一个节点地址存储防止丢失,
2024-03-26 23:31:00
1943
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅