- 博客(35)
- 收藏
- 关注
原创 接收表单数据:serialize()函数解析
form-serialize可以快速收集表单数据,按照使用者意愿转化为对象或字符串输出,以便于提交至服务器。form-serialize不是浏览器自带的JS方法,而是第三方工具库。
2025-07-19 21:59:06
1082
原创 需要保存至服务器的:常见编辑、发布文章页面基础技巧
需要保存至服务器的:常见编辑、发布文章页面基础技巧,包含从服务器渲染下拉选项,图片框效果(不展示选择文件按钮),上传图片并显示效果
2025-07-18 22:33:23
863
原创 利用node.js在本地搭建简易http服务器
如果80端口被占用,可以改用其他端口如8080,访问地址变为。通过req的这些属性,我们可以根据不同的url响应不同的页面。若我们需要发送请求的地址,可以直接调用req.url。这就包含了搭建一个本地的简易服务器所需要的代码。这里的响应头设置是为了防止输入的中文变为乱码。
2025-07-17 22:22:23
467
原创 Promise与Axios:异步编程
该示例为axios集成函数,其底层为promise与xhr结合使用,返回值也为promise。Promise通过链式调用解决了回调嵌套问题,让异步代码拥有了近乎同步代码的可读性。接收前一个Promise的解析值,并可以返回新Promise继续传递。包装错误信息,在程序而非语义上标记错误信息,便于调试。同时为了帮助大家加强理解,尽量不使用语义化变量名。这种"回调地狱"让代码难以阅读和维护。
2025-07-16 21:37:57
451
原创 前端魅力时刻:使用html让朋友主动叫你爸爸
演示: 我们可以看到,在点击了对方发送的表情后,用户自动发送了内容“爸爸”,那么这是如何实现的呢?代码: 让我们首先分析这串代码的构成:1.a标签2.href属性:weixin:// 微信自定义URL协议 ?msgmenucontent=爸爸&msgmenuid=960 Query String参数传递,其中: bizmsgmenu:指令名称:触发公众号菜单
2025-07-14 03:34:55
5320
3
原创 JavaScript原型
JavaScript中没有"类"的概念,它通过原型prototype来实现对象间的属性和方法共享。既能节省内存,又能实现继承关系。//为数组拓展方法//利用环境对象this(谁引用指向谁)和展开运算符//输出5//求和函数将方法写在prototype上,实例就可以使用这些方法构造函数通过prototype指向原型对象原型对象通过constructor指回构造函数实例对象通过__proto__指向原型对象实例.__proto__ === 构造函数.prototype。
2025-07-13 01:19:13
188
原创 JS实现基础算法与dom的结构
树形结构:DOM 将文档表示为节点树,每个节点代表文档的一部分文档节点:整个文档(dom)元素节点:HTML标签【head【meta,style……】,body【box,section,script……】】属性节点:元素的属性文本节点:元素中的文本内容节点关系父节点 (parentNode)子节点 (childNodes)兄弟节点 (sibling nodes)
2025-07-07 22:25:32
504
原创 百度首页布局:固定右侧盒子不随界面缩小掉下去
在前端开发中,我们经常需要实现类似百度首页的布局效果:当浏览器窗口缩小时,右侧的某些元素(如天气、用户信息等)需要保持固定位置,不会随着其他内容一起掉下去。在开发百度首页风格的布局时,我们遇到了几个关键问题:问题:掉到盒子外部原因分析:解决方案:2. 链接修复问题:不能正常作为链接标签,或打开页面后有多余a标签出现。原因分析:解决方案:首先要检查是否有不合格的嵌套代码,将行快元素规范,补齐标签属性。3. 右侧盒子固定布局需求:界面缩小时右侧盒子保持固定方案2:绝对定位技术要点总结Fl
2025-06-08 18:47:44
870
原创 Flex弹性布局
简化了复杂布局的实现提供了强大的空间分配能力增强了响应式设计的灵活性掌握Flex布局的关键在于理解主轴/副轴的概念,以及如何通过容器和项目的属性组合来实现各种布局需求。
2025-06-02 18:44:58
1032
原创 CSS传统布局与定位详解与TDK三大标签SEO优化
文档流浮动(float)定位(position)虽然现代布局技术(Flexbox/Grid)更加强大,但理解这些传统布局方式仍然是CSS基础的重要组成部分,特别是在维护老项目时尤为重要。
2025-05-25 16:10:38
1096
原创 CSS 浮动(Float)及其应用
最外黑框线父元素father为文档流,其所有孩子都为浮动流,黑色区块left为一列,蓝色区块right为一列。浮动元素会脱离正常的文档流(Document Flow),并向左或向右移动,直到碰到父元素的边缘或另一个浮动元素。在 Flexbox 和 Grid 流行之前,浮动是创建多列布局的主要方式。:当子元素浮动后,父元素无法自动计算高度,导致布局错乱。发现父元素高度发生塌陷,后一位文档流顶了上来。:图片浮动在左侧,文字自动环绕在其右侧。:多个浮动元素之间可能出现意外的空白间隙。
2025-05-18 18:37:19
553
原创 CSS盒子模型:Padding与Margin的适用场景与注意事项
可以发现,两个元素之间的间距为20px,但间距本应该是20+20=40px,这是由于外边距发生了合并/塌陷,当一方元素的外边距较大时,间距取大的一方。margin与padding相同,对于行元素,只在左右方向起作用。可以看到,div的上下左右都有margin效果。同时,margin与padding。而给行元素以padding。
2025-05-14 18:59:00
1324
原创 CSS 基础知识分享:从入门到注意事项
CSS是用于描述HTML或XML文档呈现方式的语言。它控制网页的布局、颜色、字体等视觉表现,让内容与表现分离。通俗的说,html是骨头,那么css就是他的画皮。
2025-05-11 18:15:32
433
原创 前端学习基础—VScode环境配置及html基础知识
全称:HyperText Markup Language(超文本标记语言)作用:定义网页的结构和内容(如文本、图片、链接等)。特点由一系列标签<tag>)组成。文件扩展名为.html或.htm。通过浏览器解析渲染成可视化页面。
2025-05-05 17:42:53
1160
原创 4月28日
对于每个大于当前后位值的元素,我们递归地将其分解为最大真因数,直到它小于或等于当前最小值,同时记录操作次数。如果遇到一个元素无法分解(即它是质数)且仍然大于当前最小值,则整个问题无解,返回 -1。要使得数组变成递增或不增的,那么数组的最大一位就是整个数组的最大值。整体框架依然是递归回溯,不过题目要求我们返回由二维动态数组存储的地图,那么我们就要在每一次枚举时更新当前地图。:对于每个元素,如果它大于后一位的值,则递归地分解它,直到它小于或等于后位值。:每次成功分解后,更新当前的最小值为分解后的结果。
2025-04-28 22:30:14
1023
原创 4月27日-回溯
1也只能在第一层被使用。用while构建外层循环,遍历从传入参数a,到(N-remain+1)的所有数并依次访问其路径,此过程中将节点值传入save数组,访问下一节点时再回溯删除,重新传入下一节点值。那么第一层只能使用1-4,此时有待访问层数为3(回到while循环头部时m会被回溯为3,实际有待访问为2,待访问为0时为传入答案层),4=6--3+1。来到第二层,第一次进入第二层传入参数为1+1即2,该层只能使用2-5,有待访问层数为2,5=6-1+2。=N,直接返回,若sum==N,将save推入ans。
2025-04-27 21:01:08
1034
原创 Web组考核题解
两两链表合并就简单多了,我们就将b链表元素插入到a中,为了方便头节点操作,我们为a链表创建一个哨兵节点dummy,从哨兵结点开始检测,这样就不用处理头节点插入的特殊情况了。排除数组为空的特例以后,如果数组内有需要合并的链表(size>1),进入循环,,取出两个链表,合并后再推入。while循环结束后,head指向的是重复节点的最后一个节点,因此还需要将head遍历一次,并且此时可以进行剪枝,如果head已经为空(链表全为重复元素的情况),直接返回空。i代表子集右边界,j代表子集左边界。
2025-04-27 18:44:46
980
原创 4月26日
遍历数组,对于每一个固定的数 nums[i],设定目标target为 -nums[i],然后在 i+1 到数组末尾的范围内,使用左右指针来寻找两个数,使得它们的和等于目标值。为避免重复解,在每一步跳过重复的元素。在内层双指针移动时,找到满足条件的三元组后,左右指针指向的数可能与下一个数重复,因此也跳过这些重复的数,直到新不同数。如果这题使用一般方法,如暴力遍历,四重循环一定会超时,但如果我们使用哈希,并将a+b+c+d=0转换为a+b=-(c+d),可以让时间复杂度由O(n^4)降到O(n^2)。
2025-04-26 21:33:22
610
原创 4月25日
(sum[i] - sum[j]) % modulo == k实际上可以转化为sum[j] % modulo == (sum[i] - k) % modulo。为了快速得到该区间是否满足有趣子数组,创建哈希表mood,其键为sum[i]-k对modulo的模。在做k倍区间时我们知道了,若两前缀和的模相等,那么用大区间-小区间,该区间的模就为0,符合题目条件。范围内满足count%modulo-k==0的子数组成为有趣子数组,count为区间内满足nums[i]%modulo-k==0的元素个数。
2025-04-25 22:02:13
771
原创 4月24日
两两链表合并就简单多了,我们就将b链表元素插入到a中,为了方便头节点操作,我们为a链表创建一个哨兵节点dummy,从哨兵结点开始检测,这样就不用处理头节点插入的特殊情况了。排除数组为空的特例以后,如果数组内有需要合并的链表(size>1),进入循环,,取出两个链表,合并后再推入。由于所给数组全为正整数且升序,所以我们知道,在下标j-i中(j<=i),若nums[j]*nums[j+1]*···nums[i]<k,则j-i的所有子集乘积均小于k。将数组中链表两两合并,将时间复杂度减小到O(nlnk)
2025-04-24 21:19:20
764
原创 4月23日
如果是需要删除的中间节点,我们需要用save保存前一个节点的地址 ,current临时节点用于遍历重复节点。我们删除中间节点时,只对save节点后的节点进行操作,所以我们在一开始需要保证save所指节点不能为重复节点,save在首次遍历时指向head,那么我们需要保证先将head指向不重复节点。while循环结束后,head指向的是重复节点的最后一个节点,因此还需要将head遍历一次,并且此时可以进行剪枝,如果head已经为空(链表全为重复元素的情况),直接返回空。我们要特判的是头节点重复和尾节点的重复。
2025-04-23 21:17:08
831
原创 4月22日力扣练习
简单介绍一下逻辑:current节点用于链表遍历,交换的两个节点为current节点的后一位和后两位节点,change节点刚开始为current节点的后一位,交换后为current节点的后两位。刚刚提到了头节点交换,由于主循环交换的是current的后两位节点,所以我们在最开始要先对头节点的交换进行特别处理,并更新要返回的头节点位置为交换后的节点。由于单链表的单向性,我们在交换头节点以外的节点时,需要用到三个节点,因此在while循环遍历时,要注意判断current节点以及后两个节点均不为空。
2025-04-22 23:06:00
1032
原创 dfs解决N皇后问题——递归回溯的应用
深度优先搜索算法的特点是一条路走到黑,无法再往下走时,回溯返回其父节点,遍历父节点的下一个子节点,遍历顺序为。实现dfs有两种方式,一种是利用栈实现。栈的特点是后进先出,利用这个特性我们可以实现dfs。将正在访问的节点压入栈,退出访问时将该节点弹出栈。另一种是递归结合回溯算法实现,今天我们将使用递归回溯算法解决N皇后问题。
2025-04-20 18:20:34
911
原创 4月19日算法题
我们知道,若a+b>=lower,a+c<=upper,b<=c,那么b~c的所有数都能与a组成公平数对。这时右边界虽然存在但返回的也是end。利用这两个函数,我们可以快速得到nums[i]的左右边界,结合我们开始的推理,right-left就是nums[i]的数对数量,遍历完接下来所有数。R为右区间乘积,j=n-1时无左区间因此R[n-1]=1。所以计算answer[i]时,只需要answer.push_back(L[i]*R[i]),就可以得到答案。此后的 L[i]=nums[i-1]*L[i-1]。
2025-04-19 21:26:02
714
原创 4月17日算法补题
由于只有一个单一元素,所以当mid为偶数下标时,若nums[mid] == nums[mid+1],则单一元素一定在右侧;= nums[mid+1],那么单一元素在左侧或当前。题目要求时间复杂度为O(log(n)),空间复杂度为O(1),因此我们使用二分查找算法。由于解答注定要遍历整棵树,那么使用dfs或bfs都无妨,这里我们使用dfs深搜算法。首先剪枝,若根节点为空,直接返回false,只有根节点,判断根节点值是否等于目标。首先仍旧时剪枝,若只有一个元素,直接返回该元素。接着直接递归,逐个访问子节点。
2025-04-19 00:47:17
527
原创 4月18日算法题
因此我们在遍历时,只需要访问mymap[nums[i]-i]的值,再++mymap[nums[i]-i]。mymap[nums[i]-i]值就为好数对,那么i-mymap[nums[i]-i]的值就为坏数对。每次截断时,若start==nums[i-1],result.push_back(to_string(start)),如果不等,则result.push_back(to_string(start)+"->"+to_string(nums[i-1))。截断后,start更新为nums[i];
2025-04-18 23:27:13
583
原创 算法学习笔记-dfs入门
深度优先搜索是一种用于遍历或搜索树或图的算法。它从起始节点开始,沿着一条路径尽可能深地探索,直到到达最深的节点,然后再回溯探索其他路径。
2025-04-13 18:53:46
249
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人