- 博客(308)
- 资源 (1)
- 收藏
- 关注
原创 输入网址按回车,到底发生了什么
详解输入网址点击回车,后台到底发生了什么。透析 HTTP 协议与 TCP 连接之间的千丝万缕的关系。掌握为何是三次握手四次挥手?time_wait 存在的意义是什么?全面图解重点问题,再...
2020-08-31 08:48:48
417
原创 Tomcat 高并发之道原理拆解与性能调优
上帝视角拆解 Tomcat 架构设计,在了解整个组件设计思路之后。我们需要下凡深入了解每个组件的细节实现。从远到近,架构给人以宏观思维,细节展现饱满的美。关注「码哥字节」获取更多硬核,你...
2020-08-17 09:00:00
689
2
原创 Tomcat 架构原理解析到架构设计借鉴
Tomcat 架构原理解析到架构设计借鉴Tomcat 发展这么多年,已经比较成熟稳定。在如今『追新求快』的时代,Tomcat 作为 Java Web 开发必备的工具似乎变成了『熟悉的陌生人』,难道说如今就没有必要深入学习它了么?学习它我们又有什么收获呢?静下心来,细细品味经典的开源作品 。提升我们的「内功」,具体来说就是学习大牛们如何设计、架构一个中间件系统,并且让这些经验为我所用。美好的事物往往是整洁而优雅的。但这并不等于简单,而是要将复杂的系统分解成一个个小模块,并且各个模块的职责划分也要清晰
2020-07-06 18:18:49
1157
原创 MySQL InnoDB 事务已提交,数据还会丢失吗?什么是两阶段提交?架构师必知必会高性能参数设置有哪些?
目前担任后端架构师,作为面试官面试过许多候选人,于是就想着出一个技术专栏,解决大家在面试过程中遇到的困惑和难题,让大家在面试中游刃有余,在寒潮之下找到自己心仪的 offer。事后排查发现,就是因为这 10 分钟内的订单事务虽然提交成功,但 Redo Log 还在 OS Cache 中,没刷到磁盘,断电后 OS Cache 中的数据丢失,无法恢复。今天这篇文章,我们就从 MySQL 的底层原理出发,一步步拆解“事务提交”的完整流程,找出数据丢失的潜在风险点,同时给出可落地的解决方案。
2025-12-15 09:01:18
521
原创 我的网站被爬虫薅到宕机,直到装上这款免费GitHub 排名第一WAF...
更绝的是雷池的动态加密功能,能自动对 HTML/JS 代码随机重写,爬虫刚定位到的“加入购物车”按钮 class,下次访问就变成随机字符串,某爬虫开发者吐槽“写规则的速度赶不上代码变化速度”。而且这不是我个例,我后来在雷池社区逛的时候,发现不少企业级用户的案例更有说服力——不同规模、不同行业的痛点,雷池都能精准解决。有了它,我可以安心的跟我的她快乐的么么哒了……高的矮的、胖的瘦的、有钱的没钱的用户,只要你对 “智能语义分析技术” 感兴趣,都可以用上雷池(SafeLine)。
2025-12-12 17:02:28
697
原创 「深度好文」从“披着微服务外衣的大单体”到云原生架构:微服务拆分七大原则与反例详解
上文说的例子,想要抽象一个平台订单的系统,思想上是正确的,但是执行中除了问题,因为拆分处理的微服务并没有数据库读写能力,业务逻辑全部集中在 一个服务内, platform-xxx-service 出问题,整个订单系统崩溃!然而,随着业务的发展,所有的功能模块都部署在一个 WAR 包,每次提交代码都要经过长时间的编译和启动,研发效率非常低下,十几个人都提交到一个主干分支,每次 merge 都要面对代码冲突,耗费大量的沟通成本。:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。
2025-12-09 09:01:20
650
原创 深度好文:MySQL InnoDB 事务隔离与 MVCC、版本链与 ReadView 原理详解
每一个事务在开始的时候就会获得一个 ID,然后这个事务内操作的行的事务 ID,都会被修改为这个事务的 ID。为什么还要射界 MVCC?Read View 最关键的字段叫做 m_ids,它代表的是当前已经开始,但是还没有结束的事务的 ID,也叫做活跃事务 ID。是指一个事务只能看到已经提交的事务的修改,如果在事务执行过程中有别的事务提交了,那么事务还是能够看到别的事务最新提交的修改。当某一个事务发起查询的时候,MVCC 会根据事务的隔离级别来生成不同的 Read View,从而控制事务查询最终得到的结果。
2025-12-01 09:01:38
589
原创 「深度好文」MySQL 事务 ACID 隔离级别、MVCC和Next-Key Lock详解,架构师必备高并发下的知识图谱
在绝大多数应用场景下,它既能保证事务内数据的一致性(避免不可重复读和幻读),又提供了比串行化高得多的并发性能。从 Redis 的第一人称视角出发,拟人故事化方式和诙谐幽默的言语与各路“神仙”对话,配合 158 张图,由浅入深循序渐进的讲解 Redis 的数据结构实现原理、开发技巧、运维技术和高阶使用,让人轻松愉快地学习。MVCC 的核心思想是为每一行数据维护多个版本(通常是两个),通过某个时间点的“快照”(Snapshot)来读取数据,从而避免加锁带来的性能损耗,实现非阻塞的读操作。
2025-11-20 10:06:37
764
原创 深度解析 InnoDB 如何用MVCC和Next-Key Lock实现RR隔离?看完顿悟!
在绝大多数应用场景下,它既能保证事务内数据的一致性(避免不可重复读和幻读),又提供了比串行化高得多的并发性能。从 Redis 的第一人称视角出发,拟人故事化方式和诙谐幽默的言语与各路“神仙”对话,配合 158 张图,由浅入深循序渐进的讲解 Redis 的数据结构实现原理、开发技巧、运维技术和高阶使用,让人轻松愉快地学习。MVCC 的核心思想是为每一行数据维护多个版本(通常是两个),通过某个时间点的“快照”(Snapshot)来读取数据,从而避免加锁带来的性能损耗,实现非阻塞的读操作。
2025-11-13 22:06:30
561
原创 面试官揪着问:如何保证MQ消息不丢失?重复消费如何保证幂等?
Kafka 有 ConsumerGroup 的概念,每个 Consumer 只能消费所分配到的 Partition 的消息,每一个 Partition 只能被一个 ConsumerGroup 中的一个 Consumer 所消费,所以同一个 ConsumerGroup 中 Consumer 的数量如果超过了 Partiton 的数量,将会出现有些 Consumer 分配不到 partition 消费。消息的刷盘过程,为了提高性能,减少刷盘次数,kafka 采用了批量刷盘的做法。
2025-11-11 09:02:00
941
原创 「深度好文」MySQL 全局锁、表锁、行锁、间隙锁、临键锁详解,架构师必备高并发下的锁优化策略
从 Redis 的第一人称视角出发,拟人故事化方式和诙谐幽默的言语与各路“神仙”对话,配合 158 张图,由浅入深循序渐进的讲解 Redis 的数据结构实现原理、开发技巧、运维技术和高阶使用,让人轻松愉快地学习。它允许在保证数据一致性的同时,大幅提升数据库的并发处理能力。可以看到备份的结果是,u_account 表中的数据没有变, u_pricing 表中的数据 已近购买了资费套餐 100.这些存储引擎来说,它们只支持表级锁,而且这些引擎并不支持事务,所以使用这些存储引擎的锁一般都是针对当前会话来说的。
2025-11-10 08:40:03
786
原创 人生不过3万天,一辈子不长,别想太多
人多的街区或者街边老店肯定好吃,需要强调的是,必须是那种四季生活的那种街区和街边老店,不是那种连锁店,更不是那种开在景区景点的桂林米粉店。晚上,你们沿着海边栈道,你的手臂轻轻地环住她的腰,路灯的光纤柔和,斜洒在你们肩膀上,两人相拥轻吻......生命力有了,才可以有挣钱的念头,财富自然会得到,财富获得之后,自由就自然而然的产生。小电驴驶过汕头老城,傍晚的落日斜披在你们的肩膀上,后视镜里,她的眼角弯弯,笑得很甜。人生好像很长,有很多可能,也会遇到不开心的时候,我们要做的是相信,一切皆有可能。
2025-10-02 14:41:32
401
原创 京东面试官揪着问的 InnoDB如何用MVCC和Next-Key Lock实现RR隔离?看完顿悟!
在绝大多数应用场景下,它既能保证事务内数据的一致性(避免不可重复读和幻读),又提供了比串行化高得多的并发性能。从 Redis 的第一人称视角出发,拟人故事化方式和诙谐幽默的言语与各路“神仙”对话,配合 158 张图,由浅入深循序渐进的讲解 Redis 的数据结构实现原理、开发技巧、运维技术和高阶使用,让人轻松愉快地学习。MVCC 的核心思想是为每一行数据维护多个版本(通常是两个),通过某个时间点的“快照”(Snapshot)来读取数据,从而避免加锁带来的性能损耗,实现非阻塞的读操作。
2025-09-01 09:02:40
708
转载 21 张图图解 Kafka 为什么吞吐量大,速度快?
Kafka 中每个 Partition 是一个有序的,不可变的消息序列,新的消息可以不断追加到 Partition 的末尾,在 Kafka 中 Partition 只是一个逻辑概念,每个 Partition 划分为多个 Segment,每个 Segment 对应一个物理文件,Kafka 对 Segment 文件追加写,这就是顺序写文件。:Kafka 中的消息以 Topic 为单位进行划分,生产者将消息发送到特定的 Topic,而消费者负责订阅 Topic 的消息并进行消费。这个过程耗费的时间叫做旋转时间。
2025-08-28 12:15:12
739
原创 Tomcat 为什么能抗住亿级流量?Connector、Container、线程池,到底是如何协作的?架构秘密曝光!
连接器中的 Adapter 会调用容器的 Service 方法来执行 Servlet,最先拿到请求的是 Engine 容器,Engine 容器对请求做一些处理后,会把请求传给自己子容器 Host 继续处理,依次类推,最后这个请求会传给 Wrapper 容器,Wrapper 会调用最终的 Servlet 来处理。调用是由它的父组件的状态变化触发的,上层组件的初始化会触发子组件的初始化,上层组件的启动会触发子组件的启动,因此我们把组件的生命周期定义成一个个状态,把状态的转变看作是一个事件。
2025-08-20 09:01:48
906
原创 500万并发不崩溃?InnoDB 内存架构的秘密曝光!
生在 2025 年作为互联网打工牛马的林渊,学过很多关于 MySQL 的技术,记忆如潮水涌入——2025 年的 InnoDB 架构图在他脑中展开,InnoDB 内存架构、磁盘架构;当其他操作将受影响的页读入 Buffer Pool 时,随后将缓存的更改合并,避免了从磁盘读取二级索引页至 Buffer Pool 所需的大量随机访问 I/O。所有事务对数据的修改在写入磁盘前,其对应的 Redo Log 会先写入 Log Buffer,随后按策略批量刷新到磁盘的 Redo Log 文件中。
2025-08-18 09:02:14
1030
原创 硬核万字图解 MySQL 表空间、Tables、Index、双写缓冲、Redo Log、Undo Log 原理
Redo log 中记录的是对页的物理操作,而不是页面的全量记录,而如果发生 partial page write(部分页写入)问题时,出现问题的是未修改过的数据,此时重做日志(Redo Log)无能为力。其他类的数据,如回滚(undo)信息,插入缓冲索引页、系统事务信息,二次写缓冲(Double write buffer)等还是存放在原来的系统表空间内。独立表空间,顾名思义,就是用户创建的表空间,如果开启独立表空间参数,那么一个表空间会对应磁盘上的一个物理文件,每张表对应一个文件,支持事务独立管理。
2025-08-11 09:02:45
603
原创 MQ 消息积压怎么办?如何实现零业务损失?五步应急方案避免业务雪崩
在使用消息队列遇到的问题中,消息积压这个问题,应该是最常遇到的问题了,消息积压的直接原因,一定是系统中的某个部分出现了性能问题,来不及处理上游发送的消息,才会导致消息积压。在使用消息队列时,如何来优化代码的性能,避免出现消息积压。还有一种不太常见的情况,你通过监控发现,无论是发送消息的速度还是消费消息的速度和原来都没什么变化,这时候你需要检查一下你的消费端,是不是。使用消息队列的时候,大部分的性能问题都出现在消费端,如果消费的速度跟不上发送端生产消息的速度,就会造成消息积压。
2025-07-29 09:01:32
861
原创 Java 8 Stream 流又臭又长?组长推荐我使用 JDFrame 框架,太舒坦了!!
在原生 stream 流中,如果我们要进行数据筛选,只能通过 fliter 方法进行过滤,但是 JDFrame 封装了常用的过滤逻辑,包括范围查询、大于等于、in 查询、模糊查询等等, 能在一定程度上简化手写 filter 的逻辑和提升语义性, 常用的筛选如下。JDFrame 熟练后能在一定程度上提升我们处理数据的效率和可读性, 但是需要使用者有矩阵计算的思想, 以及需要掌握 JDFrame 每个方法处理后的数据是怎么样的,是怎么生成和接收数据处理后的结果,这样你才能进一步的进行数据处理。
2025-07-23 09:01:40
778
原创 腾讯二面:如何保证MQ消息不丢失?重复消费如何保证幂等?
Kafka 有 ConsumerGroup 的概念,每个 Consumer 只能消费所分配到的 Partition 的消息,每一个 Partition 只能被一个 ConsumerGroup 中的一个 Consumer 所消费,所以同一个 ConsumerGroup 中 Consumer 的数量如果超过了 Partiton 的数量,将会出现有些 Consumer 分配不到 partition 消费。消息的刷盘过程,为了提高性能,减少刷盘次数,kafka 采用了批量刷盘的做法。
2025-07-21 09:00:21
907
原创 如果有的选,为什么不推荐去银行科技子公司?背后的逻辑是什么?
从 Redis 的第一人称视角出发,拟人故事化方式和诙谐幽默的言语与各路“神仙”对话,配合 158 张图,由浅入深循序渐进的讲解 Redis 的数据结构实现原理、开发技巧、运维技术和高阶使用,让人轻松愉快地学习。如果这时候银行裁员,你是其中之一,你除了被同化一身的臭毛病,学会甩锅吹水、拉帮结派、溜须拍马等,你的技术和管理思维已经和市场格格不入,也就是没有市场竞争力。这时候,他们会认为自己有所有的管理技巧,而这种所谓的管理技能只会在这个体制下和各个领导之间扯皮和溜须拍马有用,到了外面,别人躲都来不及。
2025-07-14 09:02:36
681
转载 21 张图 9千字详解Kafka为何支持每秒上百万的高并发写入?架构是怎样的?
Kafka 中每个 Partition 是一个有序的,不可变的消息序列,新的消息可以不断追加到 Partition 的末尾,在 Kafka 中 Partition 只是一个逻辑概念,每个 Partition 划分为多个 Segment,每个 Segment 对应一个物理文件,Kafka 对 Segment 文件追加写,这就是顺序写文件。:Kafka 中的消息以 Topic 为单位进行划分,生产者将消息发送到特定的 Topic,而消费者负责订阅 Topic 的消息并进行消费。这个过程耗费的时间叫做旋转时间。
2025-07-07 09:01:37
489
原创 Redis 实现一个高性能轻量级消息队列
参数 0 表示阻塞等待时间无止期,哪怕是烟花易冷人事易分,雨纷纷旧故里草木深,斑驳的城门盘踞着老树根,石板上回荡的是再等,一直等到“心上人”来。消息驱动的系统:系统分为消息队列、消息生产者、消息消费者,生产者负责产生消息,消费者(可能有多个)负责对消息进行处理。消息在被处理和删除之前一直存储在队列上。消息是异步处理的,但是消费者需要按照生产者发送消息的顺序来消费,避免出现后发送的消息被先处理的情况。异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间。
2025-06-27 08:48:23
683
原创 Redis Cluster 高可用原理说的头头是道,这些配置不懂就是纸上谈兵
当某个 master 的 slave 节点宕机后,集群会从其他 master 中选出一个富余的 slave 节点迁移过来,确保每个 master 节点至少有一个 slave 节点,防止当孤立 master 节点宕机时,没有slave节点可以升为 master 导致集群不可用。设置集群节点不可用的最大超时时间,节点失效检测。集群中的每个节点都有一个配置文件,这个文件并不是让程序员编辑的,是我自己创建和更新的,每个节点都要使用不同的配置文件,一定要确保同一个集群中的不同节点使用的是不同的文件。
2025-06-24 08:31:22
616
原创 我离职了,聊聊职场、大学、友情和爱情:人不能两次踏入同一条河流,生命只能倒着被理解,但却必须正着被经历
人不能两次踏入同一条河流,生命只能倒着被理解,但却必须正着被经历。
2025-06-08 11:50:32
571
原创 Redis之父:AI 水平不错,但远落后人类智能,开发者跟评:业界存在大量能力较弱的开发者,许多情况下,AI可以超越他们
我根据上文你列出的学习目标 “Redis 基础入门”,学习内容为“Redis 数据类型 List 底层实现原理和实战技巧” ,我的目标是掌握这些数据类型的底层实现原理和实战技巧,原理讲解要深入一些,我的目标是成为 Redis 高手。张无剑内心嘀咕道:这也太简单了,看起来好像说明了底层原理,但就总觉得好像还不够深入,只能大概了解 Redis 的 List 数据类型,根本成不了 Redis 高手,花了这么多时间,就这?总之,我得出的结论是:虽然目前的 AI 水平不错、颇具实用性,但仍然远远落后于人类智能……
2025-06-02 14:02:49
1036
原创 MySQL InnoDB 磁盘架构:如何管理和存储各数据?系统表、独立表、通用表、撤销表、临时表空间是什么?表和索引如何管理?
相较于相同数量的表分散在多个独立表空间中,更少的通用表空间内存储多张表能减少表空间元数据的内存消耗。page 则是表空间数据存储的基本单位,innodb 将表文件(xxx.ibd)按 page 切分,依类型不同,page 内容也有所区别,最为常见的是存储数据库表的行记录。独立表空间,顾名思义,就是用户创建的表空间,如果开启独立表空间参数,那么一个表空间会对应磁盘上的一个物理文件,每张表对应一个文件,支持事务独立管理。比如创建一张表、索引、表中的每一行数据、查询过程中临时存储的数据都存在哪里,又如何管理?
2025-05-26 08:36:58
765
原创 后端程序员的 Offer 收割攻略宝典!
本专栏不会单纯教你背八股文知识,而是结合实际大厂高并发项目的场景,提取码哥多年的工作经验和面试经验,每篇文章平均画了 4 张图,让你高效的学习面试技术要点,掌握互联网 Java 流行技术体系要点难点,让你系统化的提升技术,做到事半功倍,拿下高薪 Offer。目前担任后端架构师,作为面试官面试过许多候选人,于是就想着出一个技术专栏,解决大家在面试过程中遇到的困惑和难题,让大家在面试中游刃有余,在寒潮之下找到自己心仪的 offer。关注我的读者都知道,在保证文章硬核的同时,依然做到语言风格幽默,图片更是灵魂。
2025-05-25 18:29:46
772
原创 1.8w字图解Java并发容器框架:并发安全 Map、JUC 集合、Java 7 种阻塞队列正确使用场景和原理详解
意思就是消费者线程取元素时,如果队列不为空,则直接取走数据,若队列为空,那就生成一个节点(节点元素为 null)入队,然后消费者线程被等待在这个节点上,后面生产者线程入队时发现有一个元素为 null 的节点,生产者线程就不入队了,直接就将元素填充到该节点,并唤醒该节点等待的线程,被唤醒的消费者线程取走元素,从调用的方法返回。Map 是一个接口,它的实现方式有很多种,比如常见的 HashMap、LinkedHashMap,但是这些 Map 的实现并不是线程安全的,在多线程高并发的环境中会出现线程安全的问题。
2025-05-20 08:30:41
962
原创 1.6w字图解Java并发:多线程挑战、线程状态和通信、死锁AQS、ReentrantLock、Condition 使用和原理
ObjectMonitor 中有两个队列,_WaitSet 和 _EntryList,用来保存 ObjectWaiter 对象列表( 每个等待锁的线程都会被封装成 ObjectWaiter 对象),_owner 指向持有 ObjectMonitor 对象的线程,当多个线程同时访问一段同步代码时,首先会进入 _EntryList 集合,当线程获取到对象的 monitor 后进入 _Owner 区域并把 monitor 中的 owner 变量设置为当前线程同时 monitor 中的计数器 count 加 1。
2025-05-08 08:31:06
819
原创 我离职了,聊聊职场、大学、友情和爱情:人不能两次踏入同一条河流,生命只能倒着被理解,但却必须正着被经历
甚至她下班后,你也要坐着地铁话花两个小时去找你的恋人,两人就在城市的道路上散步,在体育馆无人的广场上拥吻,城市宽大的 8 车道马路上,有一些花圃,他们围坐在花圃的石板凳上,相拥而吻,车子从花圃边的马路上飞驰而过……如果你爱一个人,就不要害怕结局,在你能爱她的时候用力去爱,因为不是每一个人都能非常幸运的,遇到那个很爱很爱的人,其实有些人呢,我们能够遇见,就已经非常幸运了。灭了灯,衣服如灰烬般落尽,这是你与她最近的一次距离接触,这一刻,你感觉 她在注视着自己,就像清晨阳光中的静谧,落在四处花开的春天里。
2025-05-06 21:09:57
944
原创 万字图解线程池ThreadPoolExecutor、ForkJoinPool、定时调度 STPE 使用场景和原理
这时候就要设计一个拒绝策略了,线程池有一个最大的容量,当线程池的任务缓存队列已满,并且线程池中的线程数目达到 maximumPoolSize 时,就需要拒绝掉该任务,采取任务拒绝策略,保护线程池。任务(生产者)被提交到线程池,然后线程池中的线程(消费者)从任务队列中取出任务并执行,当线程执行完任务后则会继续获取新的任务去执行,最终当线程获取不到任务的时候,线程就会被回收。框架的描述可以看出,我们需要一些线程来执行 Fork 出的任务,在实际中,如果每次都创建新的线程执行任务,对系统资源的开销会很大,所以。
2025-04-27 08:30:17
785
原创 万字图解 Java 并发框架:Fork/Join、CountDownLatch、Semaphore、CyclicBarrier
这两个线程通过 exchange 方法交换数据,如果第一个线程先执行 exchange()方法,它会一直等待第二个线程也 执行 exchange 方法,当两个线程都到达同步点时,这两个线程就可以交换数据,它要做的事情是,让一 组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会 开门,所有被屏障拦截的线程才会继续运行。比如计算 1+2+…的源码实现,发现其实它的代码实现非常简单,算上注释也才 300+ 行代码,如果去掉注释的话代码不到 100 行,大部分方法实现都是调用的。
2025-04-23 08:30:42
664
原创 1.8w字图解Java并发容器: CHM、ConcurrentLinkedQueue、7 种阻塞队列的使用场景和原理
意思就是消费者线程取元素时,如果队列不为空,则直接取走数据,若队列为空,那就生成一个节点(节点元素为 null)入队,然后消费者线程被等待在这个节点上,后面生产者线程入队时发现有一个元素为 null 的节点,生产者线程就不入队了,直接就将元素填充到该节点,并唤醒该节点等待的线程,被唤醒的消费者线程取走元素,从调用的方法返回。Map 是一个接口,它的实现方式有很多种,比如常见的 HashMap、LinkedHashMap,但是这些 Map 的实现并不是线程安全的,在多线程高并发的环境中会出现线程安全的问题。
2025-04-22 08:31:47
1042
原创 《Redis 高手心法》:基于 Redis 7.0、158 张图透析 Redis 核心原理、关键细节、应用场景以及如何取舍
◎ 后端开发工程师和运维人员:对于有一些使用经验,但是 Redis 功底相对薄弱、对 Redis 的底层运行原理了解不多的读者,阅读本书后可掌握高阶特性的原理和实战方法,合理并高效地运用 Redis 解决工作中的问题并进行性能调优,以及维护和构建高性能的 Redis 集群。本书从 Redis 的第一人称视角出发,拟人故事化方式和诙谐幽默的言语与各路“神仙”对话,配合 158 张图,由浅入深循序渐进的讲解 Redis 的数据结构实现原理、开发技巧、运维技术和高阶使用,让人轻松愉快地学习。
2025-04-20 16:51:38
809
原创 1.6w字图解Java并发:多线程挑战、线程状态和通信、死锁;AQS、ReentrantLock、Condition 使用和原理
ObjectMonitor 中有两个队列,_WaitSet 和 _EntryList,用来保存 ObjectWaiter 对象列表( 每个等待锁的线程都会被封装成 ObjectWaiter 对象),_owner 指向持有 ObjectMonitor 对象的线程,当多个线程同时访问一段同步代码时,首先会进入 _EntryList 集合,当线程获取到对象的 monitor 后进入 _Owner 区域并把 monitor 中的 owner 变量设置为当前线程同时 monitor 中的计数器 count 加 1。
2025-04-14 08:31:02
658
原创 一文搞懂 MySQL InnoDB架构 Buffer Pool、Change Buffer、自适应哈希索引、Log Buffer
从 Redis 的第一人称视角出发,拟人故事化方式和诙谐幽默的言语与各路“神仙”对话,配合 158 张图,由浅入深循序渐进的讲解 Redis 的数据结构实现原理、开发技巧、运维技术和高阶使用,让人轻松愉快地学习。在磁盘上,Change Buffer 属于系统表空间的一部分,当数据库服务器关闭时,索引变更将在此处缓冲存储。当其他操作将受影响的页读入 Buffer Pool 时,随后将缓存的更改合并,避免了从磁盘读取二级索引页至 Buffer Pool 所需的大量随机访问 I/O。"运维总监瘫坐在监控屏前!
2025-04-08 08:19:45
1157
原创 重生之 MySQL B+Tree 提前问世二十年,MySQL之父叫我师父
而每一个页的存储空间是有限的,如果 data 数据较大时将会导致每个节点(即一个页)能存储的 key 的数量很小,当存储的数据量很大时同样会导致 B-Tree 的深度较大,增大查询时的磁盘 I/O 次数,进而影响查询效率。以根节点为例,关键字为 17 和 35,P1 指针指向的子树的数据范围为小于 17,P2 指针指向的子树的数据范围为 17~35,P3 指针指向的子树的数据范围为大于 35。B+树把磁盘的物理运动,变成了内存的闪电舞蹈!三月后,林渊成立"深空科技",发布"伏羲 B+引擎"。
2025-04-07 08:29:48
752
原创 别再无效刷题!2025 Java面试淘汰率80%的题,都藏在这里
本专栏不会单纯教你背八股文知识,而是结合实际大厂高并发项目的场景,提取码哥多年的工作经验和面试经验,每篇文章平均画了 4 张图,让你高效的学习面试技术要点,掌握互联网 Java 流行技术体系要点难点,让你系统化的提升技术,做到事半功倍,拿下高薪 Offer。目前担任后端架构师,作为面试官面试过许多候选人,于是就想着出一个技术专栏,解决大家在面试过程中遇到的困惑和难题,让大家在面试中游刃有余,在寒潮之下找到自己心仪的 offer。关注我的读者都知道,在保证文章硬核的同时,依然做到语言风格幽默,图片更是灵魂。
2025-04-06 10:02:56
1020
原创 重生之MySQL 索引失效六大陷阱
38 张图详解 Redis:核心架构、发布订阅机制、9大数据类型底层原理、RDB和AOF 持久化、高可用架构、性能问题排查和调优。Kafka 4.0 发布:KRaft 替代 Zookeeper、新一代重平衡协议、点对点消息模型、移除旧协议 API。JVM分配优化三板斧,JVM 的内存区域划分、对象内存布局、百万 QPS 优化实践。"他抓起对讲机:"立刻降级推荐系统!MySQL:MyISAM锁表致千万损失!机房突然陷入黑暗——过载的UPS触发了熔断保护。:"活动还有1分钟开始,现在降级等于自杀!
2025-04-01 18:17:48
719
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅