
算法
文章平均质量分 90
Jerry3538
明心见性
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Raft算法学习(1)博士论文大纲
Raft算法。原创 2025-05-20 20:15:43 · 572 阅读 · 0 评论 -
AQS(AbstractQueuedSynchronizer)解析
AQS是包下的一个抽象类,它是构建锁和同步组件(如ReentrantLock, Semaphore, CountDownLatch, ReentrantReadWriteLock, FutureTask等)的基础框架。理解AQS是掌握Java并发包高级用法的关键。在深入AQS的队列之前,有必要了解一下原始的CLH锁(Craig, Landin, and Hagersten lock)。CLH锁是一种基于链表的可扩展、高性能、公平的自旋锁。原始CLH锁的核心思想:隐式链表结构。原创 2025-05-11 19:24:20 · 913 阅读 · 0 评论 -
红黑树算法笔记(二)性能对比实验
红黑树性能测试大纲.(待完善目前为目录)原创 2025-05-10 08:27:03 · 792 阅读 · 0 评论 -
红黑树算法笔记(一)
红黑树基本概念及操作笔记以及简单性能对比实验。原创 2025-05-09 20:50:09 · 1343 阅读 · 0 评论 -
LINUX CFS算法解析
linux cfs算法解析笔记。原创 2025-05-09 20:36:01 · 1152 阅读 · 0 评论 -
负载均衡算法解析(一)NGINX
Nginx轮训算法。原创 2025-05-08 21:38:32 · 966 阅读 · 0 评论 -
限流算法学习笔记(一)Go Rate Limiter
限流算法-令牌桶,go语言限流源码分析。原创 2025-05-07 13:52:09 · 1178 阅读 · 0 评论 -
LFU算法解析
LFU算法解析笔记。原创 2025-05-05 22:32:03 · 1501 阅读 · 0 评论 -
TimSort算法解析
排序算法-TimSort解析笔记。原创 2025-05-04 14:49:54 · 860 阅读 · 0 评论 -
W-TinyLFU缓存驱逐算法解析
W-TinyLFU详细解读笔记。原创 2025-05-04 14:43:49 · 1370 阅读 · 0 评论 -
哈希表笔记(四)Redis对比Java总结
/ 底层数组// 元素数量// 修改次数,用于快速失败机制// 扩容阈值// 负载因子// 基本节点类型V value;// 红黑树节点// ...特性Redis 字典影响冲突解决链表 + 红黑树仅链表Java在高冲突情况下性能更稳定扩容方式一次性渐进式Redis操作延迟更一致负载因子默认0.75可调整,强制阈值为5Java空间效率更高内存分配连续数组两个哈希表Redis在rehash期间内存占用更高随机访问不支持。原创 2025-05-01 21:02:45 · 664 阅读 · 0 评论 -
哈希表笔记(三)Java Hashmap
HashMap 是 Java 集合框架中的核心类之一,基于哈希表实现,提供了 Map 接口的主要实现。基于数组 + 链表 + 红黑树的复合结构容量总是 2 的幂,便于哈希计算负载因子影响空间利用率与性能树化/反树化机制动态优化性能巧妙的扩容算法降低重哈希成本非线程安全,并发使用需注意// 桶数组,首次使用时初始化,必要时调整大小。原创 2025-05-01 20:51:27 · 1013 阅读 · 0 评论 -
算法查找目录
原创 2025-05-01 19:59:33 · 714 阅读 · 0 评论 -
哈希表笔记(二)redis
这份代码是Redis核心数据结构之一的字典(dict)实现,本质上是一个哈希表的实现。Redis的字典结构被广泛用于各种内部数据结构,包括Redis数据库本身和哈希键类型。原创 2025-05-01 17:50:40 · 1297 阅读 · 0 评论 -
哈希表笔记(一 )
右移 16 位(原创 2025-04-29 20:38:42 · 928 阅读 · 0 评论 -
排序算法详解笔记(二)
尾递归是一种特殊的递归形式。当一个函数的。原创 2025-04-29 12:52:23 · 1168 阅读 · 0 评论 -
排序算法详解笔记(一)
在用户界面应用中,当多个元素具有相同优先级时,保持它们的原始排列顺序可以提供更一致的用户体验。原创 2025-04-28 13:02:39 · 2163 阅读 · 0 评论 -
c++流对象
C++ 的流库 (<iostream><fstream><sstream>) 提供了一种统一的方式来处理输入和输出,无论数据是来自键盘、文件还是内存中的字符串。它们都基于(输入流基类) 和(输出流基类),共享许多共同的接口和行为。原创 2025-04-27 22:38:21 · 1256 阅读 · 0 评论 -
尝试获取结果 -> 检查状态 -> 根据结果进行操作_模式总结
这些示例清晰地展示了同一个基本模式在 C++ 不同上下文中的具体实现方式,它们都围绕着“尝试获取可能缺失的结果,然后根据结果的存在性(成功与否)来执行相应的逻辑”。需要 C++17 或更高版本的编译器支持。原创 2025-04-27 22:27:31 · 634 阅读 · 0 评论 -
优先队列、堆笔记(算法第四版)
题目:分析以下说法:要实现在常数时间找到最大元素,为何不用一个栈或队列,然后记录已插入的最大元素并在找出最大元素时返回它的值?解答:简单记录一个"当前最大值"确实能让 find-max(即返回最大元素)操作做到 O(1)O(1)O(1),但是它无法满足「优先队列」的完整语义,主要原因在于 删除(或者说 抽取)最大元素以后,你的"当前最大值"就可能失效,必须重新扫描才能找下一大的元素,成本 O(n)O(n)O(n)。具体来说:插入(insert)可以 O(1)O(1)O(1) 更新最大值每次插入 xxx。原创 2025-04-27 15:22:54 · 398 阅读 · 0 评论 -
梯度下降过程详解
xx1x2。原创 2025-04-08 09:47:30 · 1039 阅读 · 0 评论 -
协方差相关问题
n−1nn−1。原创 2025-04-07 21:53:20 · 957 阅读 · 0 评论 -
二分查找:原理、循环不变量与边界处理
在二分查找算法中,如果没有找到目标元素,最终 的位置将会是:目标元素应该插入的位置。具体来说:代码示例展示了这三种情况:对于二分查找而言,循环不变量如下:在每次迭代中:二分查找有两种常见的搜索区间定义:左闭右开区间 [left, right)2. 中间位置的安全计算避免整数溢出:3. 查找目标值的边界查找第一个等于目标值的元素查找最后一个等于目标值的元素4. 下界与上界查找下界(第一个大于等于目标值的元素)上界(第一个大于目标值的元素)5. 常见错误与边界测试循环条原创 2025-03-31 19:48:26 · 535 阅读 · 0 评论 -
动态规划复习总结2
当s[i]与s[j]不相等,那没啥好说的了,dp[i][j]一定是false。当s[i]与s[j]相等时,这就复杂一些了,有如下三种情况。用nums[i]去比较每个序列中的每个单位。不需要连续,所以可以从左和上推出。需要子数组是连续的所以一定得是。需要子数组是连续的所以只能从。原创 2025-01-26 21:53:23 · 297 阅读 · 0 评论 -
动态规划复习总结1
树节点依旧是两种状态选,不选,此外状态是从尾巴节点向根节点转移。写出状态转移方程后处理边界值的初始化。初始化的时候要考虑有没有障碍。有障碍的话要考虑特殊情况。状态转移的时候要考虑障碍。原来的数组变成了环形数组。画图模拟一下就很清楚了。原创 2025-01-24 11:55:42 · 250 阅读 · 0 评论 -
回溯总结2(子集问题)
布尔数组标记法:适合标准的子集问题,简单且高效。计数map法:适合处理重复元素较多的情况,使用额外的计数信息来避免重复。选或不选法:适合限制条件较为复杂的组合问题,尤其是元素选择有上限时。交换法:专门用于排列问题,避免重复排列,操作在原数组上进行。每种方法适用的场景不同,选择时需要考虑问题的性质、元素是否重复以及对时间空间的要求。原创 2025-01-20 21:20:25 · 451 阅读 · 0 评论 -
回溯总结1(组合问题)
重复的元素等效于一个,比如 {4,5} 和 {5,4} 是同一个子集。需要对每次进行元素选取的集合进行修改的话就需要使用index进行起始位置修改dfs的每一层都是对当前集合的遍历可能还需要使用数组辅助进行已使用的元素标记。原创 2025-01-20 17:41:18 · 492 阅读 · 0 评论 -
二叉树总结(hot100)
主要使用的解题技巧包括:原创 2025-01-18 16:18:35 · 330 阅读 · 0 评论 -
链表总结(hot 100)
技巧:3. 哈希表4. 涉及到两个链表的要考虑要不要使用dummy节点。原创 2025-01-16 12:31:13 · 514 阅读 · 0 评论 -
环形链表系列导学
即从这个节点开始,链表进入循环。给定一个单链表,可能存在一个环。我们可以将链表节点视为状态,每个节点的。如果链表中存在环,那么这个序列将出现。我们的目标是找到状态序列中。指针代表状态转移函数。,使得对于某个最小的。原创 2024-11-29 23:29:14 · 902 阅读 · 0 评论 -
动态规划笔记
如果一个问题具有最优子结构、无后效性和重叠子问题,且优化目标明确,状态易于表示,那么它很可能适合用动态规划来解决。原创 2024-11-16 11:10:15 · 881 阅读 · 0 评论 -
一致性hash算法
方法,根据数据键找到对应的真实节点,然后从该节点获取数据。首先,创建一个一致性哈希环的结构体。当我们需要读取数据时,使用相同的。假设我们使用 Go 语言的。原创 2024-11-08 20:37:12 · 685 阅读 · 0 评论 -
回溯算法中的去重策略总结
在处理包含重复元素的问题时,回溯算法需要有效的去重策略,确保生成的结果集中不包含重复的解。理解去重的关键规律和在递归过程中的应用位置是实现正确去重的关键。组合和子集问题条件:在同一层中,如果当前元素与前一个元素相同,且前一个元素未被选取(即未进入递归),则跳过当前元素。原因:确保同一层级不出现相同的组合,避免重复结果。排列问题条件使用一个used数组记录元素是否被使用。如果当前元素已被使用,或者当前元素与前一个元素相同且前一个元素已被使用过,则跳过当前元素。原因。原创 2024-10-27 15:01:41 · 998 阅读 · 0 评论 -
组合总和总结
【代码】组合总和总结。原创 2024-10-25 17:18:52 · 1079 阅读 · 0 评论 -
螺旋矩阵总结
top:上边界bottom:下边界left:左边界right:右边界这四个边界在每轮循环后逐渐收缩,直到所有元素被访问或填充完成。定义边界变量并不断缩小边界:通过topbottomleftright变量来定义并控制矩阵的螺旋层。四步遍历:依次从上→右→下→左的顺序遍历,并在每个方向遍历结束后收缩相应边界。在循环中嵌入边界条件判断:确保每次进入新的方向遍历时检查边界条件,避免多余遍历或越界访问。偏移量和中心填充:对于生成矩阵的问题,使用偏移量来控制每圈的边界;原创 2024-10-25 13:27:27 · 254 阅读 · 0 评论 -
二分查找相关问题
是为了确保中间点不再包含在接下来的搜索区间内,确保算法收敛。可能导致搜索区间没有明显缩小,从而陷入死循环。因此,将改为是不正确的,会导致算法无法终止。使用和不正确,因为可能导致区间无法有效缩小,或错过目标值,甚至提前终止循环。正确的更新方式应该是和,这样可以保证区间每次迭代都能正确缩小,并确保不会遗漏目标值。这就是为什么我们不能简单地使用和,而必须仔细设计区间更新策略。左闭右闭:包含left和right,即 ([left, right])。循环条件是,在最后一次循环中检查的情况。左闭右开:包含。原创 2024-10-24 13:41:37 · 855 阅读 · 0 评论