- 博客(267)
- 收藏
- 关注
原创 算法精讲——前缀和:小白也能秒懂的时空魔法
天数12345金额25134如果要算第3天到第5天存了多少钱,传统做法是:1+3+4=8元💰预先计算累计金额,这样就能快速查询任意区间的和!// 前缀和数组计算(索引从1开始更直观)i++){// 得到 [0,2,7,8,11,15]场景暴力法时间复杂度前缀和优化后一维区间查询O(1)二维矩阵查询O(mn)O(1)统计子数组O(n²)O(n)
2025-03-14 21:45:12
475
原创 算法精讲 | 树(番外):平衡世界的四大守护者:AVL vs 红黑树 vs B树 vs B+树
① 文件系统需要快速定位单个文件 ② B树非叶节点存数据有利小文件 ③ B+树更适合范围扫描。是强迫症的AVL,潮流的红黑树,还是磁盘大师B+树?比如4KB页,假设key占16B,t≈4KB/(16B+8B)=170。:① 查询更稳定(都要到叶子层) ② 范围查询吊打B树 ③ 非叶节点更"苗条":为什么Linux文件系统用B树而不用B+树?:红黑树为什么比AVL树应用更广?:HashMap为什么不用红黑树?:为什么数据库用B+树不用B树?:B+树叶子链表如何维护?:B树的t值怎么选?
2025-03-12 16:42:54
582
原创 算法精讲 | 树(三):删除操作の外科手术——像园艺大师一样修剪二叉树
既要精准切除病灶,又要完美缝合伤口!:方案一:仅删除第一个遇到的节点;方案二:设计支持重复值的BST结构。:你曾在删除操作中踩过哪些坑?在评论区分享你的惊险故事吧!:高度、平衡因子、父指针、子树大小(若维护):中序遍历结果保持严格递增序即为合法BST。:如何证明删除后的树仍然是BST?:C++选手忘记释放节点内存。:删除操作会影响哪些树属性?:在右子树找最小值时漏判空。:如何处理重复元素的删除?:删除后忘记检查平衡因子。:多线程环境下非原子操作。:未及时更新父节点引用。:处理超大树时未优化。
2025-03-11 22:04:31
656
原创 算法精讲 | 树(二):BFS层序遍历の魔法——像水波纹一样扫描整棵树
小明用DFS解二叉树的右视图总超时,直到他发现BFS层序遍历就像超市结账时排队——:找最短路径时(如迷宫问题),BFS像警犬搜救,DFS像游客瞎逛!:最差情况是完美二叉树,最后一层有⌈n/2⌉个节点,所以是。:队列空且所有节点处理完毕,就像快递站所有包裹都派送完!:每个节点进出队列各一次,时间复杂度是妥妥的。:遍历子节点时从固定左右子节点变成遍历。:层序遍历序列化,空节点用特殊符号标记。:BFS层序遍历的时间复杂度怎么计算?:多源BFS,所有0同时作为起点扩散。集合,像贴封条一样标记已访问节点!
2025-03-10 18:43:11
1531
原创 算法精讲——树(一):DFS 的奇妙探险之旅
策略不撞南墙不回头,优先探索最深的节点实现方式:递归 / 栈(Stack)时间复杂度:O(n)(每个节点访问一次)
2025-03-04 15:42:17
870
原创 Java 集合框架大师课:集合流式编程革命(三)
/ 实现字符串拼接收集器StringBuilder::new, // 容器工厂(sb, s) -> sb.append(s).append("🐶"), // 累加器(sb1, sb2) -> sb1.append(sb2), // 合并器StringBuilder::toString // 最终转换String result = Stream.of("柴犬", "柯基", "哈士奇")// 🐾 输出:柴犬🐶柯基🐶哈士奇🐶。
2025-02-24 21:15:44
1146
原创 算法精讲--贪心算法(一):小白也能看懂的解题秘籍
▎算法江湖生存法则✨四两拨千斤:用简单策略解决复杂问题⚡效率之王:时间复杂度往往最优🧩思维体操:培养最优决策直觉特征贪心算法暴力枚举动态规划时间复杂度O(n log n)O(2^n)O(n²)空间复杂度O(1)O(n)O(n)是否需要历史信息不需要需要需要典型应用最小生成树密码破解背包问题。
2025-02-24 21:10:08
1021
原创 一文搞懂 Cookie、Session、Token、JWT 的恩怨情仇
开发路上总有几个绕不开的「小问题」,今天我们就来盘一盘 Web 开发中的四大认证机制!
2025-02-23 21:47:57
829
原创 算法精讲--动态规划(三):树形DP与状态机模型
状态定义 :转移方程 :🚀 Step3:执行验证测试案例 :🎯 Step4:总结优化(后序遍历)优化解析 :测试案例:🎯 Step4:总结优化(逻辑融合)优化解析:测试案例:🎯 Step4:总结优化(逻辑精简)优化解析:🎯 Step4:总结优化(状态压缩)优化解析:状态定义 :🎯 Step4:总结优化(滚动变量)优化解析 :优化原则:拓展问题:2246. 相邻字符不同的最长路径提示:《动态规划(四):背包九讲》预习指南:复杂度预对比:📢 互动环节:你在树
2025-02-22 14:22:07
1206
原创 Java集合框架大师课:从青铜到王者的数据结构指南(一)
Java集合框架(Java Collections Framework)——开发者的数据管理瑞士军刀!🛠️ 取代Vector/Hashtable等老古董📦 统一数据容器操作规范⚡ 提供高性能数据结构实现使用场景首选方案避坑指南高频查询频繁增删快速去重✅ HashSet❌ TreeSet需要排序✅ TreeSet❌ HashSet线程安全需求❌ HashMap。
2025-02-21 18:30:55
686
原创 动态规划数组维度选择指南
维度选择适用场景经典例题空状态/防越界/严格对齐编辑距离🔄最长子序列📏m*n网格问题/可保护边界/空间优化不同路径🛤️最小路径和💰✨ 小技巧:下次写 DP 前,先画个状态转移草图,再对照这个表格检查,保你维度选择不再纠结!🎯。
2025-02-21 14:41:01
627
原创 算法精讲--动态规划(二):多维DP与状态压缩技巧
多维DP是动态规划的进阶形态,通过多维状态定义# 单序列DP(一维)# 多维DP(二维经典)核心区别单序列DP多维DP状态维度👉 一维数组👉 二维/三维数组适用场景🎯 线性序列问题🎯 网格/矩阵问题转移复杂度⚡ 相对简单⚡ 多方向转移经典问题打家劫舍编辑距离。
2025-02-20 15:37:23
933
原创 算法精讲--动态规划四步法则
/ dp[i][j]表示将A的前i个字符转换为B的前j个字符的最小代价阶段划分每个字符处理视为一个阶段,总阶段数为max(m,n)状态变量(i,j)表示处理到A的第i个字符和B的第j个字符的状态方案时间复杂度空间复杂度适用场景基础二维DPO(mn)O(mn)常规规模数据滚动数组O(mn)O(n)单行依赖场景递归+备忘录O(mn)O(mn)树状结构处理。
2025-02-20 14:50:25
398
原创 解析跨域:原理、解决方案与实践指南
在现代Web开发中,跨域问题是一个常见且重要的挑战。随着互联网应用的日益复杂,前端与后端之间的交互越来越频繁,跨域请求的需求也随之增加。
2025-02-19 20:18:32
1278
原创 Java知识速记:Map接口的实现类解析
Map接口是Java Collections Framework的一部分,主要用于存储键值对(key-value pairs)。每个键都是唯一的,可以通过键快速访问对应的值。Map接口的设计目标是提供一种简单、有效的机制来存储和检索数据。HashMap是最常用的Map实现类,基于哈希表的原理,提供常量时间复杂度的查找、插入和删除操作。LinkedHashMap是HashMap的扩展,保持插入顺序,适合需要维持元素有序性的场景。TreeMap基于红黑树实现,提供自然排序或定制排序的键值对存储。
2025-02-19 19:33:32
468
原创 前端知识速记 - CSS篇:可继承属性与不可继承属性
大多数可继承属性与文本样式相关,用于定义文本的外观。比如color和font-size等。:通过继承父元素的样式,可以减少子元素上的样式设置,从而保持样式结构的简洁性。:当我们在一个文档中有多个嵌套的元素时,可继承属性能够有效地为整个树形结构提供一致性。
2025-02-18 15:55:45
545
原创 算法精讲--知识扩充:循环条件的选择原则
条件形式适用场景算法示例关键判断点避免越界、左闭右开区间数组遍历、KMP 算法索引是否从 0 开始<=闭区间覆盖、数学计算二分查找、动态规划是否需要包含终止点==明确的状态终止条件递归终止、链表遍历是否需精确匹配某个值或状态。
2025-02-18 15:43:46
1175
原创 算法精讲–动态规划(一):基础与核心思想
优化维度原始方案二分查找优化法时间复杂度空间复杂度O(n)O(n)O(n)O(n)扩展性数据量增大时性能下降能处理大规模数据优化维度原始方案滚动变量法时间复杂度OnO(n)OnOnO(n)On空间复杂度OnO(n)OnO1O(1)O1扩展性占用较多内存节省内存,适合大规模数据。
2025-02-18 11:13:15
1075
原创 前端知识速记--HTML篇:HTML5的新特性
新特性描述示例语义化标签提高网页可读性与SEO<header><article>音视频支持简化媒体内容嵌入,无需插件<audio><video>Canvas元素通过JavaScript绘制图形<canvas>本地存储支持在浏览器中存储数据增强的表单功能新增输入类型,优化表单验证。
2025-02-17 23:25:04
595
原创 数据库知识速记:事物隔离级别
隔离级别脏读不可重复读幻读特点读未提交是是是最低的隔离级别,性能最好读已提交否是是避免脏读,读取已提交数据可重复读否否是保证同一事物多次读取一致串行化否否否最高隔离级别,性能最低。
2025-02-17 23:19:18
556
原创 计算机网络知识速记 HTTPS的工作流程
HTTPS是对HTTP协议的安全增强,它通过SSL/TLS协议在客户端和服务器之间建立一个安全的加密通道。HTTPS不仅保证了在数据传输过程中的保密性,还确保数据的完整性和身份认证。
2025-02-16 21:51:45
891
原创 前端知识速记:BFC与IFC
是一种独立的格式化区域,其中的元素与外部环境互不影响。BFC的主要作用包括避免元素重叠、控制外边距合并等。是内联元素的上下文,主要用于控制内联元素的布局,如文本和图片。IFC允许元素在行内流动,从而实现文本混排。
2025-02-16 21:37:31
569
原创 Java知识速记:ArrayList与LinkedList的区别
ArrayList是基于动态数组实现的列表,它可以根据需要自动扩展容量。其优点是随机访问性能高,适合频繁读取操作的场景。LinkedList则是基于链表实现的列表。它由节点构成,每个节点包含数据和指向下一个节点的引用。这使得它在插入和删除操作方面表现出色。
2025-02-15 21:42:47
400
原创 前端知识速记--css篇:CSS3中的常见动画及实现方式
动画类型特性语法格式示例代码过渡 (Transitions)简单状态变更,平滑过渡关键帧动画 (Keyframes)定义多个动画状态,复杂效果动画延迟与方向支持延迟和反向执行缩放和旋转对元素进行缩放和旋转。
2025-02-15 21:29:53
576
原创 计算机网络知识速记 :HTTP多个TCP连接的实现方式
在当今互联网高速发展的背景下, web 应用程序对性能的要求日益增加。在众多网络协议中,HTTP (超文本传输协议) 的性能优化显得尤为重要,尤其是在多个TCP连接的管理和实现上。
2025-02-15 21:16:28
900
原创 前端知识速记—JS篇:JS数组方法
2. concat()方法用于合并两个或多个数组,返回新数组。3. splice() 方法的语法如下:参数说明:: 从数组中开始操作的位置(索引)。从 0 开始计数。如果 start 为负数,则表示从数组末尾开始的偏移量。: 要删除的元素个数。如果不指定这个参数或设置为 0,表示不删除元素。: 要添加到数组中的元素,这些元素从 索引位置开始插入。示例:我们来具体分析这行代码:假设当前的 数组如下:操作过程:起始位置: 设置为 1,表示我们从数组的索引 1 开始操作。也就是
2025-02-14 22:20:13
1109
原创 Java知识速记:Exception与Error的区别
异常是程序在运行时发生的事件,它会干扰程序的正常执行。Java使用Exception类及其子类来表示可以被程序捕获和处理的错误。处理异常的主要方式是使用try-catch块。与异常不同,Error表示程序无法处理的严重问题。这通常与系统本身、硬件或Java虚拟机的内部故障有关,程序一般无法恢复。常见的Error包括和。
2025-02-14 21:12:52
370
原创 前端知识速记—JS篇:原型与原型链
在JavaScript中,原型是构造函数所关联的一个对象,它决定了通过该构造函数创建的所有实例所共享的属性和方法。原型链是JavaScript中实现对象继承的关键机制。它是由多个原型构成的链条,每个对象都有一个__proto__属性,指向其构造函数的原型对象。
2025-02-13 20:23:19
677
原创 计算机网络知识速记:HTTP/2.0与HTTP/1.1
在现代网络应用中,超文本传输协议(HTTP)是基础的通信协议。随着技术的发展,HTTP协议也经历了多个版本的演变,其中HTTP/2.0引入了一系列显著改进以提升网络性能和用户体验。
2025-02-13 19:58:55
745
原创 Java知识速记:异常类
异常类是Java中的一种特殊对象,用于处理程序运行时发生的错误。这些错误可以是用户输入错误、网络连接失败、文件未找到等。Java提供了一整套的异常处理机制,使得程序员能够有效地捕获和处理这些异常。所有的异常都是派生于类的实例,意味着每个异常都是通过继承而来的。在Java中,异常主要分为两类:受检查异常是在编译时需要被检查的一类异常。它们通常是由于外部环境问题导致的,例如文件未找到或网络故障。这些异常要求程序员必须显式地处理或声明,否则编译器会报错。以下是一个简单的示例:2.2 未检查异常(Unchecke
2025-02-13 19:52:06
314
原创 前端知识速记--JS篇:instanceof
在JavaScript中,instanceof运算符用于检测一个对象是否是另一个对象的实例。。如果obj是的实例,它将返回true,否则返回false。这是一个判断对象的原型链上是否存在构造函数的prototype属性的简单方法。
2025-02-12 19:56:25
672
原创 计算机网络知识速记:HTTP1.0和HTTP1.1
HTTP1.0与HTTP1.1之间的区别在于前者的简单性与后者的复杂性,HTTP1.1通过优化连接管理、丰富头信息、增强缓存控制等方式,大幅提升了网络的效率与用户体验。特性HTTP1.0HTTP1.1连接管理非持久连接,每次请求新建连接持久连接,复用同一连接请求/响应头简单,缺少扩展性丰富,支持更多字段缓存控制基本的缓存支持精确的缓存机制管道化不支持支持请求管道化状态码状态码种类有限新增24个状态码,完善错误处理带宽优化不支持断点续传支持部分内容请求。
2025-02-12 19:45:16
747
原创 Java知识速记:ArrayList 和 Array
数组是Java中的一种数据结构,用于存储固定大小的元素集合。数组在创建时就需定义其大小,并且一旦定义后,大小不可更改。这使得数组在存储相对固定的数量数据时,能够提供较高的访问效率。
2025-02-12 19:36:50
361
原创 前端知识速记:浏览器缓存机制 - 强缓存与协商缓存
强缓存(也称为本地缓存)和协商缓存(也称为弱缓存)。当浏览器请求资源时,首先检查本地缓存是否命中。如果命中,则直接从缓存中读取资源,无需向服务器发送任何请求。当强缓存未命中时,浏览器会向服务器发送请求,询问服务器资源是否发生变化。如果服务器告知资源未改变,则浏览器从缓存中读取资源;如果服务器告知资源已改变,则浏览器会下载新资源并更新缓存。
2025-02-11 16:24:08
1412
flaskproject1.zip
2024-11-11
基于node.js的在线聊天室
2024-11-11
一个基于Bootstrap框架的个人秀项目
2024-11-11
拼多多管理系统案例分析课程设计报告:供应链管理、人文关怀与技术创新
2024-11-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人