自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 问答 (2)
  • 收藏
  • 关注

原创 面试官:ThreadLocal不清理会导致串号?这3个分布式大坑谁踩谁死!

摘要:本文复盘了一场P7级电商高并发岗位的面试经历,重点探讨了分布式环境下的三大技术难点:1) ThreadLocal在线程复用场景下的数据串扰问题,强调必须在拦截器的afterCompletion中清理数据;2) 本地缓存同步方案,通过Redis发布订阅实现多节点缓存一致性;3) Elasticsearch容灾策略,采用死信队列补偿写入失败,MySQL降级保障查询可用性。文章通过代码示例展示了实战解决方案,揭示了高并发系统设计中"不一致"和"不可靠"问题的处理思路,

2026-01-04 15:57:31 1053

原创 面试官:Redis点赞不落库崩了咋办?这波极限拉扯我给满分!

走出会议室,我后背都湿了。取舍能力性能 > 强一致性,但要有兜底方案(定时持久化)。边界意识:AI/RPC接口绝不能放在数据库事务内,这是高并发系统的红线。防御思维:Kafka幂等不能只靠配置,业务层去重才是王道。💡经验之谈不要为了用技术而用技术。你要说“因为MySQL行锁竞争会导致CPU飙升,而我们业务允许短暂的数据不一致,换取的是系统的高吞吐量。

2026-01-03 15:00:25 1714

原创 面试官:线程池先判断最大线程数?MySQL默认读已提交?出门右转不送!

摘要: 本文针对后端面试中高频易错的三大知识点(线程池任务流程、MySQL默认隔离级别、Redis持久化策略)进行深度解析。线程池任务提交遵循“核心线程→队列→最大线程→拒绝”四步逻辑,类比银行业务办理流程;MySQL InnoDB默认隔离级别为可重复读(RR),而非常见的读已提交(RC);Redis持久化推荐RDB快照与AOF日志混合模式,兼顾性能与数据安全。文章通过场景复现、源码原理和实战配置,揭示常见认知误区,并附赠速查清单帮助面试避坑。

2026-01-03 11:19:11 816

原创 面试官:MySQL用B+树,Redis为啥用跳表?这都答不出来?

《数据结构选型实战:MySQL、Redis与HashMap的底层逻辑》 本文通过面试对话场景,深入解析三大主流数据结构的设计哲学: MySQL的B+树专为磁盘IO优化,矮胖结构+叶子链表实现高效范围查询; Redis跳表凭借内存优势,以多级索引简化有序集合操作; HashMap红黑树作为冲突兜底,平衡查询与插入性能。文章揭秘了HashMap长度取2次幂的位运算玄机,并给出对比选型速查表,揭示技术选型本质是场景与性能的权衡。掌握这些底层逻辑,轻松应对横向对比类面试题。

2026-01-02 12:35:31 1257

原创 面试官:ThreadLocal不手动remove导致生产事故?内存泄漏只是小事!

摘要: ThreadLocal在生产环境中存在两大隐患:内存泄漏与数据串号。其核心矛盾在于:Key采用弱引用便于回收,而Value保持强引用确保数据跨方法可用。当线程复用(如Tomcat线程池)且未清理时,残留的Value会导致用户隐私泄露(P0级事故)。解决方案是在拦截器的afterCompletion中强制调用remove(),既解决内存泄漏(断开强引用链),又避免数据污染。面试要点包括:Key弱引用/Value强引用的设计哲学、僵尸Entry的形成机制、线程复用的风险及防御措施。

2026-01-02 11:32:10 706

原创 面试官:线上CPU飙升100%排查只会top?回家等通知吧!

摘要: 当Java应用CPU飙升至100%时,可按以下步骤快速排查: 1️⃣ 定位进程:top命令(按P排序)找到高CPU的Java进程PID。 2️⃣ 定位线程:top -H -p PID查看线程,记录占用最高的线程ID(十进制)。 3️⃣ 进制转换:用printf "%x\n" 线程ID转为十六进制(对应Java堆栈中的nid)。 4️⃣ 分析堆栈:jstack PID | grep -A 20 0xnid精准定位问题代码行,常见死循环(RUNNABLE状态)。若为GC线程占用高,则

2026-01-01 13:45:11 645

原创 面试官:先更新数据库还是先删缓存?这也答不上来,回家等通知吧

📝 摘要: 本文探讨了高并发项目中缓存与数据库更新的顺序问题。标准方案是Cache Aside Pattern(先更新数据库再删缓存),但在极端并发下仍可能产生脏数据。解决方案包括延时双删策略(先删缓存→更新DB→延时再删缓存)和多级缓存同步(使用Redis Pub/Sub或MQ广播通知各节点清理本地缓存)。关键点在于权衡性能与一致性,通常采用最终一致性而非强一致性。面试中需掌握这些场景的推演逻辑及应对方案。

2025-12-31 21:39:14 620

原创 算法大白话总结:数据规模与算法选择速查表

算法选择速查指南 根据数据规模快速匹配算法: n≤10:回溯/全排列 n≤20:状态压缩DP n≤1000:O(n²)DP n≤10⁵:O(nlogn)排序/堆 n≤10⁶:O(n)滑动窗口/前缀和 n≤10¹⁸:二分/数学公式 关键特征对应算法: 连续子数组→滑动窗口 下一个更大元素→单调栈 最优解问题→动态规划 图连通性→并查集 1秒可执行约10⁸次操作,据此选择时间复杂度合适的算法。

2025-11-29 09:53:04 1258

原创 算法大白话:图论进阶篇——从迷宫到网络世界

本文介绍了图论中的核心算法与应用,主要包括: 图的基础概念:有向/无向图、有权/无权图、邻接矩阵与邻接表表示方法 拓扑排序:通过BFS实现DAG的线性排序,应用于课程安排等依赖关系问题(LeetCode 207/210) 关键算法模板: 入度统计与邻接表构建 BFS处理入度为0的节点 通过计数判断图中是否存在环 典型应用场景:课程安排、任务调度等需要处理先后顺序的问题,提供完整的Java实现代码和示例解析。 文章通过具体例题展示了如何用拓扑排序解决实际问题,并给出了详细的算法流程图示和复杂度分析。

2025-11-29 09:39:35 1273

原创 算法大白话:动态规划篇——攻克状态转移

动态规划(DP)是解决复杂优化问题的核心算法,通过状态转移和表格记录避免重复计算。本文从记忆化搜索入手,以斐波那契数列和零钱兑换为例,演示如何将递归优化为DP。关键步骤包括:1)定义状态转移方程;2)确定容器规模;3)初始化基础条件;4)选择填表顺序。特别强调背包问题的核心思想——"选或不选",并对比了记忆化搜索(自顶向下递归)与DP(自底向上填表)的优缺点。掌握这四步流程,能系统化解决大多数DP问题。

2025-11-28 14:21:24 1267

原创 算法大白话:特殊的捷径——栈与贪心策略

本文介绍了两种高效算法:单调栈和贪心算法。单调栈专用于寻找"下一个更大/小元素",通过维护有序栈结构实现O(n)时间复杂度,适用于柱状图最大面积、接雨水等问题。贪心算法通过局部最优选择逐步逼近全局最优,适合特定场景的优化问题。文章通过LeetCode例题展示了单调栈的具体应用,包括每日温度、最大矩形面积和接雨水问题,详细解析了算法思路和实现技巧。

2025-11-27 17:16:03 1137

原创 算法大白话:二叉树与回溯——递归思维的双重应用

摘要 本文系统讲解了二叉树与回溯算法中的递归应用技巧。主要内容包括: 递归三部曲:明确参数、出口和单层逻辑,以路径总和问题为例展示递归实现 二叉树处理: 遍历方式选择(DFS适合路径判断,BFS适合层序问题) 构造二叉树的区间分割法,通过中序+后序序列重建二叉树 公共祖先问题:利用BST特性快速定位最近公共祖先 核心技巧:参数传递、边界条件处理、树结构特性利用等 通过典型例题(LeetCode 112、513、106、235)的代码实现,展示了递归在树结构问题中的灵活应用。

2025-11-26 14:55:45 648

原创 算法大白话:线性结构通关——从链表指针到区间二分

本文总结了链表、滑动窗口和二分查找三大算法技巧的核心要点与实战应用。对于链表问题,重点介绍了虚拟头节点和快慢指针技巧,通过LeetCode 19题演示了如何高效删除倒数节点。滑动窗口部分以LeetCode 3题为例,展示了通过双指针动态维护窗口解决无重复子串问题的方法。二分查找部分深入解析了边界查找技巧,通过LeetCode 34题详细说明了如何查找目标值的起始和结束位置。文章最后提供了算法选择的指导原则:链表问题用快慢指针,连续子数组/子串问题用滑动窗口,有序数组查找用二分查找。

2025-11-25 16:30:58 721

原创 网站项目部署总结

本文记录了将Java Web项目部署到阿里云服务器的完整过程。系统环境采用CentOS 7.6,配置了Java 11、Maven 3.6、MySQL 8.0、Redis 3.2等基础组件,以及Nginx、Tomcat、Kafka、Elasticsearch等中间件。详细介绍了通过yum和wget安装各组件的方法,包括配置Maven阿里云镜像、MySQL密码修改、Redis启动验证、Kafka主题查看等关键步骤。特别说明了Elasticsearch需要以普通用户启动的特殊要求,并提供了Wkhtmltopdf的

2025-11-24 21:59:07 1372

原创 cursor拉取远程github代码到本地

为了更好理解github中的项目代码,我们经常需要拉去远程github项目仓库的代码到本地,不同于复杂的命令行拉取方式,cursor提取了简单的图形化操作方式帮助我们拉取代码。

2025-11-15 18:18:39 2333 1

原创 微服务内部调用安全实践:基于 OpenFeign + 自定义注解 + AOP 的实现

本文提出了一种基于OpenFeign的安全调用方案,通过自定义注解@InnerAuth+AOP拦截+Feign请求拦截器,实现微服务间调用的安全校验。方案核心是为内部请求添加特殊标识头,服务端通过切面验证请求来源,拒绝未授权访问。该设计既保持了OpenFeign的简洁性,又能有效防止接口伪造,支持用户信息校验等扩展功能,适用于企业级微服务架构的安全通信需求。

2025-10-08 16:52:31 359

原创 八股训练营心得体会

例如,学习TCP/IP模型时,不仅了解了模型的层次结构,还深入探讨了三次握手和四次挥手的实际过程。总的来说,八股训练营不仅让我掌握了丰富的技术知识,也培养了我的学习能力和解决问题的能力。我学会了如何清晰地表达自己的观点,如何将复杂的技术概念简化为易于理解的语言。这种系统性的学习让我对各个领域的知识有了更全面的理解,避免了知识的碎片化。过每天的学习,我意识到技术更新迭代的速度非常快,只有保持持续学习的态度,才能跟上行业的发展。训练营的内容激励我去主动寻找更多的学习资源,提升自己的技术水平。

2025-04-16 01:23:13 235

LENFusion.md

LENFusion.md

2024-10-10

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

TA关注的人

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