自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 hot100打卡——day03

本文汇总了6个LeetCode算法题的解题思路:1.反转链表(迭代法,双指针反转节点指向);2.岛屿数量(DFS深度优先搜索标记已访问岛屿);3.打家劫舍(动态规划记录偷/不偷两种状态);4.多数元素(排序后取中位数);5.除自身外数组乘积(前缀积×后缀积);6.最小栈(数组模拟栈,同步维护最小值数组)。所有解法均给出核心代码和关键思路说明,采用数组、DFS、动态规划等典型算法思想解决问题。

2025-12-26 10:49:26 166

原创 hot100打卡——day02

本文总结了5道LeetCode算法题的解题思路: 翻转二叉树:使用后序遍历递归交换左右子树; 最大正方形:动态规划,dp[i][j]记录以(i,j)为右下角的最大正方形边长; 数组第k大元素:快速选择算法,通过比较pivot值分区处理; 前缀树实现:使用26叉树结构实现字符串的插入、查找和前缀匹配; 课程表:拓扑排序判断图中是否存在环,统计入度为0的节点数量验证是否完成所有课程。

2025-12-25 13:58:05 279

原创 hot100打卡——day01

本文总结了四个经典算法问题的解法:1. 相交链表使用双指针法,通过交替遍历两个链表找到交点;2. 二叉树最近公共祖先采用后序遍历递归判断子树情况;3. 回文链表通过快慢指针找中点并反转后半段进行比较;4. 每日温度问题使用单调栈快速找到每个温度后面第一个更高温度的天数。这些解法都体现了常见算法技巧(双指针、递归、单调栈)的巧妙应用,代码简洁高效。

2025-12-24 20:58:41 500

原创 牛客周赛 Round 119解析

本文展示了5道编程竞赛题目的Java解题代码及思路: A题:比较两个数值x和y,若x大输出A,y大输出B;相等时比较附加参数p1和p2,p1大输出B,p2大输出A,都相等输出C。 B题:计算序列极差。对每组测试数据排序后取首尾元素差值取绝对值。 C题:预处理平方数后二分查找区间。预处理1-100000中平方数各位和等于自身的数,用二分查找给定区间内的数量。 D题:模拟位移操作。统计净位移量,左移时累加位数,右移时优先抵消左移位数,剩余左移位数用快速幂计算。 E题:三角形计数。先排序,分三种情况统计:全等三角

2025-11-24 12:55:05 277

原创 牛客周赛 Round 118 —— 题目详细解析+答案

本文包含6道编程题的解题思路和Java代码实现:A题"小红的博弈"通过简单判断石子数量决定胜负;B题"小红选点"暴力枚举所有点对求最远距离;C题"小红的矩形"根据已知两点坐标补全矩形;D题"小红拿石子1.0"通过排序和贪心策略计算最大可拿石子数;E题"小红玩树"使用BFS计算节点距离并判断博弈结果;F题"小红拿石子2.0"通过比较最大值和出现次数决定胜负。每道题都提供了清晰的解题思路和对应

2025-11-18 00:07:05 694

原创 AcWing第一章——基础算法详解

本文总结了多个基础算法的实现模板和解题思路。主要包括快速排序(785题)、归并排序(787题)及其在计算逆序对数(788题)中的应用,二分查找(789、790题)处理数的范围和三次方根问题,高精度运算(791-794题)实现大数加减乘除,前缀和(795题)与差分(797题)及其二维扩展(796、798题),滑动窗口解决最长连续不重复子序列问题(799题),双指针处理数组元素目标和(800题),位运算统计二进制中1的个数(801题),离散化处理区间和(802题),以及区间合并算法(803题)。这些模板包含了算

2025-11-13 13:59:20 996

原创 常见排序算法

本文介绍了常见的排序算法及其Java实现,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、基数排序和桶排序。每种算法都通过代码示例展示了具体实现方式,并简要说明了其基本原理和特点。这些排序算法涵盖了从简单到复杂的不同类型,包括基于比较的排序(如快速排序)和非比较排序(如计数排序),适用于不同场景和数据结构。

2025-10-20 16:35:45 445

原创 leetcode动态规划经典题目详解

该文章总结了多个动态规划问题的解题思路和代码实现,主要包括以下几类问题: 斐波那契数列相关 经典斐波那契数列(递归解法) 爬楼梯问题(类似斐波那契数列,但使用迭代优化) 股票买卖问题 最佳买卖时机(含冷冻期、手续费、交易次数限制等变种) 核心思路:通过状态转移方程(持有/不持有)计算最大利润 背包问题 完全背包(零钱兑换、组合总和) 0-1背包(分割等和子集、目标和) 多维背包(一和零) 子序列/子数组问题 最长递增子序列(LIS) 最长公共子序列(LCS) 最长回文子序列/子串 编辑距离(插入/删除/替换

2025-10-19 00:06:56 712

原创 Netty核心组件

Netty核心组件与WebSocket应用 Netty的核心组件包括Bootstrap(客户端启动类)和ServerBootstrap(服务端启动类),它们通过EventLoopGroup管理线程,Channel处理网络I/O操作,支持异步调用。关键的ChannelPipeline实现了拦截过滤器模式,管理ChannelHandler链来处理入站和出站事件。Netty还提供了ByteBuf数据容器和Unpooled工具类。 实际应用方面,展示了群聊系统实现,通过ChannelGroup管理多个客户端连接。介

2025-10-10 16:58:02 616

原创 Netty的高性能架构设计与快速入门

本文系统介绍了Netty的线程模型及其优越性。主要内容包括:1)传统阻塞I/O模型的缺点;2)Reactor模式的三种实现(单线程、多线程、主从多线程);3)Netty基于主从Reactor多线程模型的改进,使用BossGroup和WorkerGroup线程池分别处理连接和I/O操作;4)通过NioEventLoop实现事件循环处理;5)异步模型和Future-Listener机制;6)给出了Netty HTTP服务开发的快速入门案例。文章通过对比分析,阐述了Netty如何通过线程模型优化解决传统I/O的性

2025-10-10 16:54:44 685

原创 一篇搞懂NIO/BIO/AIO/零拷贝的概念

Java I/O模型对比摘要: BIO(同步阻塞):一连接一线程模式,适合少量固定连接,但线程开销大,资源占用高。NIO(同步非阻塞):单线程处理多连接,基于Channel、Buffer和Selector实现高效IO,通过事件驱动机制减少线程消耗。AIO(异步非阻塞):采用Proactor模式,由OS完成IO后回调通知,适合长连接场景。关键差异:BIO流式处理/线程阻塞,NIO块处理/多路复用,AIO完全异步。零拷贝技术(mmap/sendFile)可显著提升传输性能,减少CPU拷贝次数。NIO在JDK1.

2025-10-05 16:09:10 662

原创 贪心算法经典题目全解析:12 道 LeetCode 题 + 代码 + 思路(附详细注释)

本文总结了LeetCode中贪心算法相关的12道题目及解法。主要内容包括:分发饼干问题(双指针排序)、跳跃游戏系列(动态更新最远可达距离)、摆动序列(升降交替统计)、加油站问题(油量累计判断)、分发糖果(双向遍历处理相邻关系)、柠檬水找零(优先使用大额找零)、身高队列重建(排序后插入)、气球射击问题(区间重叠处理)、无重叠区间(保留结束早的区间)、字母区间划分(记录最后出现位置)、单调递增数字(从后向前处理降位)、二叉树监控(后序遍历状态判断)。这些题目展示了贪心算法在不同场景下的应用,通过局部最优选择达到

2025-09-20 19:07:37 1007

原创 《RocketMQ 2025 实战指南:从消息丢失 / 重复消费 / 顺序消费到事务消息,一篇搞定生产级问题(附完整代码)》

本文摘要:RocketMQ消息可靠性保障方案主要包括三方面:生产者端采用自动重试+最终一致机制,通过配置retryTimesWhenSendFailed等参数实现消息可靠投递;Broker端通过同步刷盘(SYNC_FLUSH)和同步复制(SYNC_MASTER)配置确保消息持久化与高可用;消费者端需实现手动ACK确认与业务逻辑幂等性处理。此外,文章还详细分析了顺序消息、延迟队列、事务消息的实现原理,以及消息积压、重复消费等典型问题的解决方案。通过生产者、Broker和消费者三端协同配合,可构建完整的消息可靠

2025-09-17 14:37:04 1278

原创 回溯算法经典题目+详细讲解+图示理解

本文总结了LeetCode中关于排列、组合、子集、回文串分割等经典回溯问题的解题思路。主要内容包括: 全排列问题(46/47):通过递归+回溯实现,47题需额外处理重复元素,采用排序和跳过相同元素策略。 组合问题(77/39/40/216):回溯模板应用,注意组合与排列的区别在于不考虑顺序,使用start参数避免重复。39题允许重复使用元素,40题需处理重复值。 子集问题(78/90):78题通过遍历不同长度实现,90题需处理重复子集,采用排序和跳过策略。 其他回溯应用: 491题递增子序列:使用哈希集合去

2025-09-15 21:22:17 733

原创 Leetcode第165场双周赛题目详解+复盘

本文总结了三个编程问题的解法: 大于平均值的最小未出现正整数 - 计算平均数后,从平均数+1开始查找第一个未出现的正整数 使库存平衡的最少丢弃次数 - 使用滑动窗口和哈希表统计窗口内物品数量,超过阈值则丢弃当前物品 子序列最大XOR值 - 使用线性基数据结构高效计算子集异或最大值,通过维护一组线性无关的基向量来避免暴力枚举 三个问题分别涉及数学计算、滑动窗口和高级数据结构应用,展示了处理不同编程问题的多样化思路。

2025-09-14 18:33:31 635

原创 图相关经典题目练习及详解

文章摘要: 本文介绍了LeetCode上关于岛屿和图的系列算法题解,主要包括200.岛屿数量、695.岛屿最大面积、463.岛屿周长等岛屿类问题,以及127.单词接龙、841.钥匙和房间等图论问题。解题思路主要采用DFS/BFS算法,其中岛屿问题多使用Flood Fill算法进行填充标记,图论问题则运用拓扑排序和双向BFS等技巧。文章详细分析了每道题的特殊情况和处理逻辑,如边界条件判断、访问标记、面积统计等,并通过代码注释解释了关键步骤的实现原理。这些解法展示了如何将复杂问题分解为可操作的步骤,并通过合理的

2025-09-08 17:33:21 794

原创 字符串经典题目详解

本文总结了LeetCode中几道字符串相关的题目解法: LCR122路径加密:遍历字符串,将点替换为空格,使用StringBuilder拼接结果。 151反转单词:双指针从后往前确定单词边界,处理多余空格后拼接。 459重复子串:通过KMP算法构造next数组,判断是否存在可整除的重复模式。 10正则表达式匹配:动态规划解决,处理*匹配0次或多次的情况,以及字符精确匹配。 44通配符匹配:类似正则匹配的DP解法,处理*可匹配任意字符的情况。 这些题目主要考察字符串处理、双指针技巧和动态规划的应用,涉及字符串

2025-09-04 16:56:16 1097

原创 二叉树经典题目详解(下)

本文总结了多个二叉树相关的算法题解,主要涉及二叉搜索树(BST)的操作和性质利用。核心解题思路包括: BST构建与转换:利用有序数组的特性,通过分治法递归构建平衡BST(如108题),或根据最大值构建最大二叉树(654题)。 BST操作:包括节点搜索(700题)、插入(701题)、删除(450题)和修剪(669题),利用BST有序性进行高效操作。 树遍历应用:中序遍历用于处理有序数据(530题求最小差、501题找众数、230题找第k小元素),前/后序遍历用于链表化(114题)。 路径和问题:通过递归或前缀和

2025-09-02 21:27:28 1053

原创 二叉树经典题目详解(上)

本文总结了二叉树相关的常见算法题解,包括层序遍历、右视图、左叶子之和、路径和、最大深度等问题的解法。核心思路分为BFS和DFS两种:BFS使用队列实现,适用于层序遍历类问题;DFS通过递归实现,适用于深度相关问题和路径问题。文章提供了代码模板和解题思路,重点讲解了如何根据题目特点调整遍历方式,如右视图只需记录每层最后一个节点,左叶子之和需要判断节点属性等。同时涵盖了二叉树构建、翻转、对称性判断等综合问题,展示了递归和迭代的不同实现方式。

2025-08-27 15:21:35 984

原创 如何在项目中集成XXL-JOB

XXL-JOB是一个轻量级的分布式任务调度平台,选择它主要因为:1)支持分布式部署,避免本地定时任务的分散管理问题;2)无需额外中间件,仅依赖MySQL;3)提供可视化管理和任务监控。集成方式分为Admin服务(管理端)和执行器(业务端),通过配置文件和注解@XxlJob即可实现任务注册与调度。最佳实践建议按模块划分执行器,避免任务扫描冲突。相比Quartz等方案,XXL-JOB具有社区活跃、配置简单等优势,适合需要统一管理定时任务的分布式系统。

2025-08-26 23:19:33 867

原创 leetcode链表相关题目

本文总结了链表相关算法题的解题思路,包括节点交换、反转、删除、合并、排序等操作。主要解题技巧包括: 双指针法:用于节点交换、删除倒数节点、判断回文链表、检测环形链表等场景 虚拟头节点:处理边界情况,如删除节点时可能删除头节点 快慢指针:寻找中间节点、判断环形链表 归并排序:适用于链表排序问题 优先队列:合并多个有序链表 哈希表+双向链表:实现LRU缓存机制 关键点在于理解指针操作和节点关系,通过引入辅助指针和巧妙遍历方式解决各类链表问题。对于复杂问题如K个一组翻转链表,需要拆解为多个基础操作组合实现。

2025-08-17 14:05:07 1086

原创 leetcode经典题目——单调栈

本文总结了力扣中5道典型的单调栈应用题目,包括739.每日温度、496.下一个更大元素I、503.下一个更大元素II、42.接雨水和84.柱状图中最大的矩形。这些题目都利用了单调栈的特性,通过维护一个单调递减或递增的栈结构来高效解决问题。解题核心在于: 维护栈的单调性; 在遍历过程中处理栈顶元素与当前元素的关系; 通过下标差计算相关指标。单调栈的时间复杂度通常为O(n),空间复杂度为O(n),能高效解决寻找下一个更大/更小元素、计算面积或容量等问题。对于循环数组问题(如503题),可通过遍历两次的方式处理。

2025-08-10 16:12:11 932

原创 leetcode经典题目练习5(栈/队列/堆)

本文总结了力扣(LeetCode)中几道典型的栈和队列相关算法题。主要包括:1. 用栈实现队列(232题)和用队列实现栈(225题),通过双栈/双队列实现数据正逆序存储;2. 有效括号问题(20题)使用栈进行匹配判断;3. 相邻重复项删除(1047题)利用栈结构处理;4. 逆波兰表达式(150题)通过栈实现运算;5. 滑动窗口最大值(239题)使用单调队列优化;6. 前K个高频元素(347题)采用桶排序思想;7. 最小栈(155题)在每个元素中存储当前最小值;8. 字符串解码(394题)通过栈处理嵌套结构;

2025-08-08 16:43:31 799

原创 leetcode经典题目练习4

本文总结了力扣平台上多道哈希表相关题目的解法。主要内容包括:1. 字母异位词分组(49题):通过排序字符串作为哈希表键值进行分组;2. 有效的字母异位词(242题):提供排序和哈希表两种解法;3. 数组交集(349题):利用辅助数组标记元素出现情况;4. 快乐数(202题):使用集合检测循环;5. 两数之和(1题)和四数相加II(454题):哈希表存储中间结果降低时间复杂度;6. 赎金信(383题):通过字符计数比较;7. 四数之和(18题):采用双指针法配合剪枝优化。这些题目展示了哈希表在解决查找、统计、

2025-08-05 11:55:36 990

原创 leetcode——双指针经典题目

本文总结了四道经典的双指针算法题目解法: 替换空格/路径加密:遍历字符串,遇到'.'替换为空格,其余字符直接保留。 三数之和:先排序数组,使用三指针(k,l,r)遍历,k固定时移动l和r寻找和为0的组合,注意去重和提前终止条件。 盛最多水容器:双指针从两端向中间移动,每次计算当前面积并更新最大值,移动较矮的指针。 无重复字符最长子串:滑动窗口配合哈希表记录字符最后出现位置,遇到重复字符时调整窗口左边界。 这些题目展示了双指针在字符串处理、数组遍历和滑动窗口等场景的高效应用。

2025-08-01 14:00:40 253

原创 leetcode矩阵经典题目

本文摘要: 矩阵类算法题解集合,包含四道力扣经典题目解法。1. 矩阵置零(73题):通过首行首列标记零元素位置,分步处理原矩阵置零;2. 螺旋矩阵(54题):按右、下、左、上顺序循环遍历边界,收集元素;3. 旋转图像(48题):分圈处理矩阵元素,通过四次交换实现顺时针旋转;4. 搜索二维矩阵II(240题):从右上角开始二叉搜索,比较目标值决定移动方向。所有解法均注重空间效率优化,提供清晰的解题思路和代码实现。

2025-07-30 11:34:08 1073

原创 leetcode——数组经典题目详解

本文总结了LeetCode中多个数组相关算法的解题思路和代码实现。主要包括:移动零(双指针法)二分查找(递归实现)移除元素(快慢指针)有序数组平方(双指针从两端遍历)滑动窗口(最小子数组、字母异位词)螺旋矩阵(分层处理)合并区间(排序后合并)前缀和(和为K的子数组)轮转数组(三次反转)除自身乘积(前后缀乘积)缺失正数(原地哈希)这些题目都采用了巧妙的指针或数学技巧,在O(n)或O(logn)时间复杂度内解决问题。关键思路包括双指针、滑动窗口、递归、哈希表等,展现了处理数组问题的多

2025-07-28 12:49:51 666

原创 双Token实现

本文介绍了现代Web开发中Token认证的续期方案,重点分析了双Token机制(AccessToken+RefreshToken)的实现与优缺点。文章首先解释了Token续期的必要性,然后对比了四种常见续期方式:RefreshToken机制、静默续期、重新登录和滑动过期。其中双Token方案通过短期AccessToken(1小时)和长期RefreshToken(7天)配合,既保证安全性又提升用户体验。详细说明了双Token的工作流程、数据库设计和JWT实现方法,包括AccessToken的生成验证和Refr

2025-07-05 19:54:18 1107

原创 缓存击穿、缓存穿透、缓存雪崩

摘要:本文探讨了缓存常见的三大问题及解决方案。缓存击穿指热点key失效导致数据库压力过大,可通过分布式锁、续期机制或永不过期策略解决。缓存穿透是查询不存在的数据,建议使用布隆过滤器或缓存空值。缓存雪崩因大批key同时失效引起,可通过随机化过期时间或集群部署预防。文章详细介绍了布隆过滤器的实现原理和Java代码示例,包括哈希计算和Redis BitMap应用,并对比了不同方案的适用场景。针对缓存雪崩,提出了多线程查询结合随机过期时间的优化方案,有效分散数据库压力。

2025-06-12 16:16:12 873

原创 解决分库分表带来的Id冲突问题

本文探讨了分库分表后ID冲突的解决方案,并实现了一个基于MySQL号段模式的分布式ID生成器。主要内容包括:1)分析了数据库步长、UUID、Redis和雪花算法等方案的优缺点;2)设计并实现了一个结合MySQL号段和本地缓存的分布式ID生成器,支持有序和无序两种ID生成方式;3)通过乐观锁、线程池和信号量等机制确保线程安全和高并发性能;4)采用阈值触发机制自动刷新ID段,当剩余ID量低于25%(无序)或75%(有序)时异步加载新号段。该系统实现了简单高效的分布式ID生成,适用于中小规模应用场景。

2025-06-12 00:24:00 934

原创 批量查询优化

本文探讨了优化批量查询用户信息的实现方案。针对传统union all查询在分表场景下的性能问题,提出了多线程+缓存的解决方案:1) 使用parallelStream并行查询并分组避免Sharding-Jdbc笛卡尔积路由;2) 通过Redis批量查询先过滤已缓存数据;3) 对未命中数据采用多线程查询数据库;4) 使用管道批量设置缓存并添加随机过期时间防止雪崩。方案有效降低了数据库压力,并提出了后续需解决的缓存穿透、击穿等问题。

2025-06-09 14:14:40 782

原创 Redis和MySQL缓存一致性问题

引入缓存就要承担不一致性的后果,因为AP和CP本来就是不能两全的,所以只能选其一我们只能尽最大的努力的兼顾两者如果说非要一致性,也行,就是消除这种并发执行的情况,每个线程操作前必需拿到分布式锁,才能执行业务但是这样子就导致了性能下降最终一致性:延迟双删+失败重试强一致性:分布式锁+同步更新最后,如果各位大佬有什么更好的方式的话,也请不吝赐教小弟。

2025-06-07 11:14:37 613

原创 如何设计分布式锁

锁就是一个线程拿到之后能继续往下走,拿不到就不能往下走。这也就是锁的互斥性。锁就是用来解决线程安全问题的。

2025-06-04 13:30:43 900

原创 MySQL的架构演进

上面提到的几个缺点,前三个是随着用户量的增加一定会出现的问题,但是还不至于成为MySQL性能的瓶颈,所以主要就是解决第四个问题(单节点数据量大时,性能仍然较差),这个时候就要介绍分片模式。流程是这样子的,数据库操作请求进来之后会在时间分片(Sharding-JDBC之类的)判断是读请求还是写请求,然后将请求打到对应的MySQL节点上。主节点的增删改操作以及相应的sql会记录到 binlog中,所以现在就是从节点去订阅主节点的binlog日志,实现数据同步的问题。

2025-06-03 10:34:53 423

原创 常见的几种限流算法

bg:随着应用规模的增大和场景的复杂,系统如何在面对海量请求时保持稳定运行,同时又能合理分配资源、保障用户体验,成为了一个基本并且重要的解决的问题限流算法的核心目标是通过对请求流量的控制,避免系统因过载而崩溃,同时确保系统资源的高效利用。常见的限流算法:计数器法、滑动窗口法、漏桶算法、令牌桶算法。

2025-06-01 15:01:27 904 1

原创 判断字符串中包含目标字符串的个数

本质其实就是使用指针不断地截取字符串,然后判断截取出来地这部分里面是否包含目标字……

2025-05-15 10:23:45 173

原创 期末作业表结构

Kname varchar(10) not null comment '客户姓名',Ddelivery varchar(10) comment '商品提取方式',Ktelephone varchar(12) comment '客户电话',Kgender ENUM('男','女') comment '客户性别',Ktype varchar(20) comment '客户类型',Stype varchar(10) comment '商品类型',Sunit varchar(20) comment '商品单位',

2025-01-06 11:12:02 304 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除