- 博客(36)
- 收藏
- 关注
原创 深入揭秘 ConcurrentHashMap:JDK7 到 JDK8 并发优化的演进之路
从源码层次剖析 ConcurrentHashMap 的线程安全机制,比较 JDK7 分段锁与 JDK8 CAS+红黑树方案,揭示其扩容、树化与高并发优化的核心原理。
2025-08-27 22:57:07
3607
原创 深入解析 Spring Caffeine:揭秘 W-TinyLFU 缓存淘汰策略的高命中率秘密
系统解析 Caffeine 在 Spring 中的缓存实现,详细剖析 W-TinyLFU 结合 Window、TinyLFU 与 SLRU 的淘汰机制及其高命中率原理与优势。
2025-08-16 13:31:14
3209
原创 面试官问你 MySQL 的线上执行 DDL 该怎么做?4 种方案多角度回答!
揭秘MySQL三大DDL算法(copy、inPlace、Instant Add Column),助你线上修改表结构不锁表、不宕机,轻松解决面试与生产难题!
2025-07-22 16:03:59
7101
原创 Park 打断大反转!一次 park 不阻塞,参数化日志竟成幕后黑手?
一次 park 不阻塞的背后竟是 permit 时序微调!通过日志格式改变执行顺序,探究 park()、interrupt() 与 permit 的隐秘机制,揭示并发调试中的细节陷阱。
2025-07-17 11:31:49
8172
原创 深入浅出Redis:一文掌握Redis底层数据结构与实现原理
Redis之所以高效,不仅在于它的内存操作,更在于巧妙的数据结构设计。本文带你揭开Redis底层数据结构的神秘面纱,包括动态字符串SDS如何解决C语言字符串问题、IntSet如何高效处理整数集合、Dict哈希字典如何快速实现键值对存储与扩容、ZipList如何节省空间但又引发“连锁更新”的问题、QuickList如何兼具空间高效与操作性能、SkipList跳表如何做到类似红黑树的查询效率,以及RedisObject如何统一不同类型的数据存储。在阅读完本文后,你将对Redis数据结构的设计思想与源码实现原理有
2025-07-11 19:33:08
8714
原创 想给面试官吹DDD?项目像搭积木一样运行:领域驱动设计(DDD)让复杂业务变简单
“想象一下,如果可以像搭积木一样组装你的系统,每一块都是独立可复用的‘业务能力’,是不是很酷?这正是DDD的魅力所在。”
2025-06-26 12:28:57
6365
原创 MySQL是怎么提高并发度的?InnoDB为什么会设计这些锁?一篇文章串通MySQL各种锁!
首先你要明白的是间隙锁的引入是为了解决幻读问题的,其次幻读特指其他事务在我查询的范围中新插入了数据,明白了这一点,你就能抓住重心,如何才能锁住不造成幻读的范围...
2025-06-24 15:01:52
9757
原创 你真的懂 MySQL 的一致性读和当前读的区别吗? 为什么表结构必须遵循当前读?
本文章将逐步拆分讲解 ReadView,深入理解当前读和一致性读的区别。使用查询语句和更新语句逐步分析 MySQL 是如何进行事务的多版本并发控制的。我们以一个问题开始我们的讨论吧
2025-06-13 16:08:13
5537
2
原创 除了Cookie会话跟踪技术,你还知道其他的会话跟踪技术吗?会话技术的方案对比
除了Cookie会话跟踪技术,你还知道其他的会话跟踪技术吗?会话技术的方案对比
2025-06-10 18:12:02
5176
1
原创 今天被人问GC的相关知识,索性整理了一下到目前常用的一些垃圾回收器,从垃圾回收的机制到垃圾回收器的实现
今天被人问GC的相关知识,索性整理了一下到目前常用的一些垃圾回收器,从垃圾回收的机制到垃圾回收器的实现
2025-06-08 21:09:18
8463
1
原创 结合源码分析Redis的内存回收和内存淘汰机制,LRU和LFU是如何进行计算的?
结合源码分析Redis的内存回收和内存淘汰机制,LRU和LFU是如何进行计算的?
2025-06-01 13:46:28
5207
原创 今天花了三个小时,带你彻底理解 IO多路复用中,epoll模式中通知的触发方式以及线程的阻塞和非阻塞选择
今天花了三个小时,带你彻底理解 IO多路复用中,epoll模式中通知的触发方式以及线程的阻塞和非阻塞选择
2025-05-29 22:00:06
4926
2
原创 学习完多级缓存之后的总结,覆盖了Redis集群,OpenResty,Nginx本地缓存,Caffeine,Canal
学习完多级缓存之后的总结,覆盖了Redis集群,OpenResty,Nginx本地缓存,Caffeine,Canal
2025-05-26 10:30:00
1035
原创 Linux系统是如何访问到本机Windows系统中的Tomcat服务的?
Linux系统是如何访问到本机Windows系统中的Tomcat服务的?
2025-05-25 16:30:00
371
原创 学完JUC之后,一起来整理一下MySQL锁的知识,梳理MySQL各种级别的锁:全局锁,表锁,行锁。Record Lock,Gap Lock,Next-Key Lock的加锁机制
学完JUC之后,一起来整理一下MySQL锁的知识,梳理MySQL各种级别的锁:全局锁,表锁,行锁。Record Lock,Gap Lock,Next-Key Lock的加锁机制
2025-05-24 19:15:11
2664
原创 JUC原理讲解 --《volatile原理》《Happens-before规则》volatile如何实现遍历的可见性,以及有序性的?
深度解析volatile关键字的原理,进一步理解happens-before规则
2025-05-12 14:26:17
925
原创 一篇文章搞懂Spring mvc底层原理,DispatcherServlet如何运作的?
自定义参数解析器参数解析器需要实现 HandlerMethod接口,完成 supportsParameter(检查是否支持某个参数),resolveArgument(获取参数的值)两个方法将实现的类加入到 HandlerAdapter 中( HandlerAdapter提供setCustomArgumentResolvers)看是否支持某种参数(supportsParameter 方法)获取参数的值(resolveArgument 方法)自定义返回值处理器。
2025-05-08 13:52:07
1128
2
原创 浅谈Spring的容器与Bean
ApplicationContext 接口,是 BeanFactory 的子接口。可以看到,我们课上讲的,都是 BeanFactory 提供的基本功能,ApplicationContext 中的扩展功能都没有用到。
2025-04-23 19:15:12
749
原创 彻底理解力扣《组合总和II》题目,深刻理解如何去重!
彻底理解力扣《组合总和II》题目,深刻理解如何去重!给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
2025-04-13 19:25:21
672
原创 CentOS 7 yum 命令无法找到所需的元数据文件无法使用解决方法
CentOS 7 yum 命令无法找到所需的元数据文件无法使用(Cannot find a valid baseurl for repo: base/7/x86_64)解决方法
2024-12-05 18:50:55
682
1
原创 PyCharm连接git时报错: “fatal: unable to access ‘链接‘: schannel: SEC_E_UN“
fatal: unable to access '远程仓库链接': schannel: SEC_E_UNTRUSTED_ROOT (0x80090325) - ֤▒▒▒▒▒▒▒ɲ▒▒▒▒▒▒εİ䷢▒▒▒▒▒䷢▒ġ▒。这个错误通常与 Git 在 Windows 上的 SSL/TLS 设置有关,我们只需要关闭SSL认证即可完美解决该问题。再PyCharm的终端中设置gitbash路径,输入bash路径之后就可以在终端中运行git指令。找到项目的根路径或者在PyCharm的终端中输入,打开。
2024-09-20 10:06:31
2088
1
原创 SQL优化 -- limit优化
尽管查询使用了索引(),但默认情况下,LIMIT子句不会保证结果的顺序。要确保结果按id排序,必须显式地使用子句。
2024-07-11 16:29:45
908
原创 利用requests库爬取Ajax数据
④ 最后整合思路:利用Request URL的规律构造最终url --> 采取get请求并且添加Accpet为json类型(因为我们想获取的数据就是一个json字典) --> 利用字典的方法提取数据即可 --> 保存数据至MySql数据库中。① 我们继续分析响应,发现返回内容是application/json, text/plain, */*,但是我们只需要筛选出来的xhr类型,也就是json文件内容。所以请求头我们需要设置Accept。可以发现,该xhr文件是一个data字典,里面包含了此次的目标内容。
2024-06-29 18:10:55
925
原创 Mysql中DQL的查询顺序
GROUP BY 子句能够使用SELECT子句中定义的别名,是因为SQL数据库引擎在内部对查询的执行过程进行了优化。大家都发现了一个很奇怪的现象,按照前面讲述的执行顺序,这条SQL语句应该报语法错误啊,因为group by是在select之前执行的呀,怎么能提前“预知”别名,似乎有点解释不通了。3、经过试验,我发现having子句是在select子句后运行的,也就是说having是拿着select后的虚拟表过滤的。name varchar(50) not null comment '姓名',
2024-06-25 16:37:39
480
1
土木跨考计学,研究生阶段该怎么决定今后的发展方向?
2024-06-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅