- 博客(283)
- 资源 (1)
- 收藏
- 关注

原创 输入网址按回车,到底发生了什么
详解输入网址点击回车,后台到底发生了什么。透析 HTTP 协议与 TCP 连接之间的千丝万缕的关系。掌握为何是三次握手四次挥手?time_wait 存在的意义是什么?全面图解重点问题,再...
2020-08-31 08:48:48
390

原创 Tomcat 高并发之道原理拆解与性能调优
上帝视角拆解 Tomcat 架构设计,在了解整个组件设计思路之后。我们需要下凡深入了解每个组件的细节实现。从远到近,架构给人以宏观思维,细节展现饱满的美。关注「码哥字节」获取更多硬核,你...
2020-08-17 09:00:00
644
2

原创 Tomcat 架构原理解析到架构设计借鉴
Tomcat 架构原理解析到架构设计借鉴Tomcat 发展这么多年,已经比较成熟稳定。在如今『追新求快』的时代,Tomcat 作为 Java Web 开发必备的工具似乎变成了『熟悉的陌生人』,难道说如今就没有必要深入学习它了么?学习它我们又有什么收获呢?静下心来,细细品味经典的开源作品 。提升我们的「内功」,具体来说就是学习大牛们如何设计、架构一个中间件系统,并且让这些经验为我所用。美好的事物往往是整洁而优雅的。但这并不等于简单,而是要将复杂的系统分解成一个个小模块,并且各个模块的职责划分也要清晰
2020-07-06 18:18:49
1119
原创 1.8w字图解Java并发容器框架:并发安全 Map、JUC 集合、Java 7 种阻塞队列正确使用场景和原理详解
意思就是消费者线程取元素时,如果队列不为空,则直接取走数据,若队列为空,那就生成一个节点(节点元素为 null)入队,然后消费者线程被等待在这个节点上,后面生产者线程入队时发现有一个元素为 null 的节点,生产者线程就不入队了,直接就将元素填充到该节点,并唤醒该节点等待的线程,被唤醒的消费者线程取走元素,从调用的方法返回。Map 是一个接口,它的实现方式有很多种,比如常见的 HashMap、LinkedHashMap,但是这些 Map 的实现并不是线程安全的,在多线程高并发的环境中会出现线程安全的问题。
2025-05-20 08:30:41
685
原创 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
745
原创 我离职了,聊聊职场、大学、友情和爱情:人不能两次踏入同一条河流,生命只能倒着被理解,但却必须正着被经历
甚至她下班后,你也要坐着地铁话花两个小时去找你的恋人,两人就在城市的道路上散步,在体育馆无人的广场上拥吻,城市宽大的 8 车道马路上,有一些花圃,他们围坐在花圃的石板凳上,相拥而吻,车子从花圃边的马路上飞驰而过……如果你爱一个人,就不要害怕结局,在你能爱她的时候用力去爱,因为不是每一个人都能非常幸运的,遇到那个很爱很爱的人,其实有些人呢,我们能够遇见,就已经非常幸运了。灭了灯,衣服如灰烬般落尽,这是你与她最近的一次距离接触,这一刻,你感觉 她在注视着自己,就像清晨阳光中的静谧,落在四处花开的春天里。
2025-05-06 21:09:57
801
原创 万字图解线程池ThreadPoolExecutor、ForkJoinPool、定时调度 STPE 使用场景和原理
这时候就要设计一个拒绝策略了,线程池有一个最大的容量,当线程池的任务缓存队列已满,并且线程池中的线程数目达到 maximumPoolSize 时,就需要拒绝掉该任务,采取任务拒绝策略,保护线程池。任务(生产者)被提交到线程池,然后线程池中的线程(消费者)从任务队列中取出任务并执行,当线程执行完任务后则会继续获取新的任务去执行,最终当线程获取不到任务的时候,线程就会被回收。框架的描述可以看出,我们需要一些线程来执行 Fork 出的任务,在实际中,如果每次都创建新的线程执行任务,对系统资源的开销会很大,所以。
2025-04-27 08:30:17
624
原创 万字图解 Java 并发框架:Fork/Join、CountDownLatch、Semaphore、CyclicBarrier
这两个线程通过 exchange 方法交换数据,如果第一个线程先执行 exchange()方法,它会一直等待第二个线程也 执行 exchange 方法,当两个线程都到达同步点时,这两个线程就可以交换数据,它要做的事情是,让一 组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会 开门,所有被屏障拦截的线程才会继续运行。比如计算 1+2+…的源码实现,发现其实它的代码实现非常简单,算上注释也才 300+ 行代码,如果去掉注释的话代码不到 100 行,大部分方法实现都是调用的。
2025-04-23 08:30:42
558
原创 1.8w字图解Java并发容器: CHM、ConcurrentLinkedQueue、7 种阻塞队列的使用场景和原理
意思就是消费者线程取元素时,如果队列不为空,则直接取走数据,若队列为空,那就生成一个节点(节点元素为 null)入队,然后消费者线程被等待在这个节点上,后面生产者线程入队时发现有一个元素为 null 的节点,生产者线程就不入队了,直接就将元素填充到该节点,并唤醒该节点等待的线程,被唤醒的消费者线程取走元素,从调用的方法返回。Map 是一个接口,它的实现方式有很多种,比如常见的 HashMap、LinkedHashMap,但是这些 Map 的实现并不是线程安全的,在多线程高并发的环境中会出现线程安全的问题。
2025-04-22 08:31:47
985
原创 《Redis 高手心法》:基于 Redis 7.0、158 张图透析 Redis 核心原理、关键细节、应用场景以及如何取舍
◎ 后端开发工程师和运维人员:对于有一些使用经验,但是 Redis 功底相对薄弱、对 Redis 的底层运行原理了解不多的读者,阅读本书后可掌握高阶特性的原理和实战方法,合理并高效地运用 Redis 解决工作中的问题并进行性能调优,以及维护和构建高性能的 Redis 集群。本书从 Redis 的第一人称视角出发,拟人故事化方式和诙谐幽默的言语与各路“神仙”对话,配合 158 张图,由浅入深循序渐进的讲解 Redis 的数据结构实现原理、开发技巧、运维技术和高阶使用,让人轻松愉快地学习。
2025-04-20 16:51:38
565
原创 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
556
原创 一文搞懂 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
1002
原创 重生之 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
693
原创 别再无效刷题!2025 Java面试淘汰率80%的题,都藏在这里
本专栏不会单纯教你背八股文知识,而是结合实际大厂高并发项目的场景,提取码哥多年的工作经验和面试经验,每篇文章平均画了 4 张图,让你高效的学习面试技术要点,掌握互联网 Java 流行技术体系要点难点,让你系统化的提升技术,做到事半功倍,拿下高薪 Offer。目前担任后端架构师,作为面试官面试过许多候选人,于是就想着出一个技术专栏,解决大家在面试过程中遇到的困惑和难题,让大家在面试中游刃有余,在寒潮之下找到自己心仪的 offer。关注我的读者都知道,在保证文章硬核的同时,依然做到语言风格幽默,图片更是灵魂。
2025-04-06 10:02:56
933
原创 重生之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
674
原创 重生之我用 2025 年的 InnoDB 知识在 2003 年 IT 圈打工
" 运维经理老周扯着嘶哑的嗓子,"每秒 300 次更新请求,MyISAM 根本扛不住!"我们现在用空间换时间,未来..."他顿了顿,"这些设计会让 InnoDB 统治数据库世界。38 张图详解 Redis:核心架构、发布订阅机制、9大数据类型底层原理、RDB和AOF。"但这需要更强的 CPU 和内存!"CTO 指着飙升的 CPU 曲线。林渊深吸一口气:"立即切换 InnoDB 引擎,这是最后的生路!重启后老周面色惨白:"库存数据回滚了!"这是把 IOPS 压力转嫁给 CPU!"这是典型的交叉死锁!
2025-03-31 08:30:25
253
原创 MySQL MyISAM引擎是什么?有什么致命缺陷?为何现在都不使用了?
38 张图详解 Redis:核心架构、发布订阅机制、9大数据类型底层原理、RDB和AOF 持久化、高可用架构、性能问题排查和调优。"当我启动 InnoDB 引擎时,服务器内存突然耗尽..." —— 林渊如何用 Buffer Pool 优化化解内存危机?JVM分配优化三板斧,JVM 的内存区域划分、对象内存布局、百万 QPS 优化实践。: MySQL 4.0 采用"每连接每线程"模型,线程执行完不会销毁而是进入?穿越工程师如何逆天改命》。"各位请看,"林渊点击投影,"这不是故障,而是架构级癌症。
2025-03-30 10:00:43
845
原创 MySQL:MyISAM锁表致千万损失!穿越工程师如何逆天改命
已经连续加班到 23:00 半年多才下班,现在已是亥时,push 完代码后拿出我在「拼夕夕」买的 「zippo」火机点上一支烟,看着它逐渐没有痕迹,空气中闻到一股股淡淡的味道。忽然,我只觉心里难受,胸闷气短,眼前一片黑,我想要努力的睁开眼睛,可是却什么都看不见,逐渐听不见周边的声音……我掐灭了烟头,又重新点上一支烟,沉浸在淡蓝色的烟雾中,是那么的温柔,那么的迷蒙,那么的深情。我弹落的烟灰如此的黯然,黯然如我,思绪万千。Christina,我想起你了,发信息给你的手在键盘敲很轻,我给的思念很小心。
2025-03-29 22:34:29
607
原创 Kafka 4.0 发布:KRaft 替代 Zookeeper、新一代重平衡协议、点对点消息模型、移除旧协议 API
整个通信协调机制本质上是事件驱动模型,也就是 Metadata as an Event Log,Leader 通过 KRaft 生产权威的事件,Follower 和 Broker 通过监听 KRaft 来获得这些事件,并且顺序处理事件,达到集群状态和期望的最终一致。从 Redis 的第一人称视角出发,拟人故事化方式和诙谐幽默的言语与各路“神仙”对话,配合 158 张图,由浅入深循序渐进的讲解 Redis 的数据结构实现原理、开发技巧、运维技术和高阶使用,让人轻松愉快地学习。
2025-03-26 08:29:33
841
原创 38 张图详解 Redis:核心架构、发布订阅机制、9大数据类型底层原理、RDB和AOF 持久化、高可用架构、性能问题排查和调优
String(字符串)、Hashes(散列表)、Lists(列表)、Sets(无序集合)、Sorted Sets(可根据范围查询的排序集合)、Bitmap(位图)、HyperLogLog、Geospatial (地理空间)和 Stream(流)等数据类型底层实现原理。Java 的 HashSet 底层是用 HashMap 实现,Sets 的底层数据结构也是用 Hashtable(散列表)实现,散列表的 key 存的是 Sets 集合元素的 value,散列表的 value 则指向 NULL。
2025-03-25 08:29:55
637
1
原创 拼多多二面:高并发场景扣减商品库存如何防止超卖?
大家好,我是《Redis 高手心法》作者,可以叫我靓仔。相信大家都参与过某某电商的抢购活动,那么大家有没有思考过,在高并发场景下,如何防止商品超卖?这里需要注意哪些问题?下面,让我们来一步步看下。首先,我们先看下正常的下单流程(简易版)。❝那么,针对库存扣减的场景,要如何实现呢进入正文前,介绍下我的点击查看详细介绍->《Java 面试高手心法 58 讲》专栏内容涵盖Java 基础、Ja...
2025-03-11 08:36:28
1081
原创 技术博主码哥深夜写诗:白素贞的油纸伞,能遮住现代人的遗憾吗?
大家好,我是码哥,《Redis高手心法》畅销书作者。今天不说技术,给大家分享一首诗。开篇寄语:人生并不像火车要通过每个站似的经过每一个生活阶段。标题《种忆录》种忆录谷雨猕漫着芭蕉的味道动了心成了情白素贞的姻以伞结缘可天若无雨地上无伞断桥未断过客,能留下一段传奇吗?或许难难倘若在江城边不是西湖畔你还愿这情节假设成立吗?没有油纸伞没有躲雨的屋檐我背影在前你是否,淋雨陪下去仅仅为最初的遇见你我在丽江古...
2025-03-08 11:57:10
121
原创 云原生时代的JVM调优:从被K8s暴打到优雅躺平
大家好,我是码哥,《Redis 高手心法》畅销书作者。在微服务与容器化技术主导的现代架构中,JVM 参数的配置已从传统的“经验预设”转向“动态感知”的工程化调优。尤其在 Kubernetes 等容器编排平台中,JVM 需要适应动态资源分配、高并发负载波动以及混合业务场景的复杂性。如何让 Java 应用在有限的资源约束下实现性能、稳定性与资源利用率的平衡?这需要从内存模型、编译策略到运行时环境的系统...
2025-03-05 08:39:21
1244
原创 性能提升300%!JVM分配优化三板斧,JVM 的内存区域划分、对象内存布局、百万 QPS 优化实践...
大家好,我是码哥,《Redis 高手心法》畅销书作者。在 JVM 的世界中,运行时数据区域是整个虚拟机的基础,它决定了程序的内存管理、线程的执行流以及垃圾回收的核心逻辑。运行时数据区域的划分不仅体现了 JVM 的设计哲学,还在性能优化中起着至关重要的作用。今天,我们来学习下 JVM 的内存区域划分、对象内存布局、百万 QPS 优化实践。图:小豆丁技术栈进入正文前,介绍下我的点击查看详细介绍-&g...
2025-03-03 09:02:36
914
1
原创 从 12s 到 200ms,MySQL 两千万订单数据 6 种深度分页优化全解析
前言大家好,我是码哥,可以叫我靓仔,《Redis 高手心法》畅销书作者。那晚,大约晚上 11 点,我与 Chaya 在丽江的洱海酒店享受两人世界的快乐,电商平台的运维大群突然炸开了锅。监控系统发出刺耳的警报:订单查询接口响应时间从200ms 飙升到 12 秒,数据库 CPU 利用率突破 90%。发现事故根源竟是一个看似平常的查询——用户中心的历史订单分页查询。这背后隐藏的正是MySQL 深度分页的...
2025-02-24 08:20:20
556
原创 你真的懂 Redis 哨兵集群吗?一主二从三哨兵架构如何扛住百万级并发?
大家好,我是 Redis。本篇文章选自我的新书《Redis 高手心法》第三章其中一小节~通过之前的学习,你已知道 Redis 主从复制是高可用的基石,某个 slave 宕机依然可以将请求发送给 master 或者其他 slave,但是如果 master 宕机,则只能响应读操作,写请求无法再执行。所以主从复制架构面临一个严峻问题:master 宕机,无法执行写操作,无法自动选择将一个 slave 切...
2025-02-20 08:22:49
726
原创 腾讯元宝、微信 + DeepSeek = 下一代搜索革命?
大家好,我是码哥字节,可以叫我靓仔,《Redis 高手心法》的作者。DeepSeek 想必大家都知道了,春节期间爆火,日活 1500 万。七天下载量破亿,日下载全球第一!DeepSeek 在上个月发布了 R1 版本,在美国 AIME 2024 测试中 R1 拿下 79.8 分,超过了 OpenAI 的 o1 模型的 79.2 分;在 MATH-500,R1 为 97.3 分,同样超过了 o1 的 ...
2025-02-17 08:31:02
1088
原创 找工作三个月面试 20 家,一份offer都没收到,怎么办?
大家好,我是码哥,《Redis 高手心法》作者、InfoQ 签约作者、51CTO Top 红人。曾经干的不爽了就跳槽,还能加薪,起步 30% 涨幅,好不快活!现在的互联网行情寒潮想必大家都体会到了。公司降薪、年终奖年包变成诈骗的也数不胜数,而绝大多数的我们也只能忍气吞声的苟着。因为外面的招聘变少了,即使有招聘,难度属于地狱级别。除了运气好以外,没有一点真材实料的技术和面试技巧,真的只会翻车!我们平...
2025-02-16 21:57:24
715
原创 MySQL是什么?它的架构是怎样的?假如让你重新设计,你要怎么做?
我叫萧剑臣,今年 34 岁,2024 年快接近尾声,在一线城市「浅圳」打拼,在一家名叫「网讯」的互联网大厂工作,是一名资深后端架构师。已经连续加班到 23:00 半年多才下班,现在已是亥时,push 完代码后拿出我在「拼夕夕」买的 「zippo」火机点上一支烟,看着它逐渐没有痕迹,空气中闻到一股股淡淡的味道。我弹落的烟灰如此的黯然,黯然如我,思绪万千。我闭上眼睛就是天黑,一种撕裂的感觉。我掐灭了烟...
2025-02-11 08:36:42
888
原创 DeepSeek 出世,压力给到微信公众号的 AI 智能体
靓仔们好久不见,我是码哥,《Redis 高手心法》作者。前几天,码哥收到了公众号后台的通知:邀请开通微信公众号 AI 智能回复。当时,码哥正在拥抱硬核技术和对象。看到这个消息,我只迟疑片刻,选择先拥抱技术,再拥抱我的对象 Chaya。这是微信公众号原生 AI 智能体,不正是我一直期待的么!在这之前,想让公众号对接 AI,只能对接字节的 coze 开放平台,亦或是腾讯的元器开放平台。使用第三方平台的...
2025-02-10 14:30:34
776
原创 微信亲自下场,我的公众号有 AI 智能体了!Ta 真的很懂我
靓仔们好久不见,我是码哥,《Redis 高手心法》作者。前几天,码哥收到了公众号后台的通知:邀请开通微信公众号 AI 智能回复。当时,码哥正在拥抱硬核技术和对象。看到这个消息,我只迟疑片刻,选择先拥抱技术,再拥抱我的对象 Chaya。这是微信公众号原生 AI 智能体,不正是我一直期待的么!在这之前,想让公众号对接 AI,只能对接字节的 coze 开放平台,亦或是腾讯的元器开放平台。使用第三方平台的...
2025-01-25 17:37:59
1182
原创 小红书抗住高并发的背后:Redis 7.0 性能必杀技之 I/O 多线程模型
大家好,我是码哥,《Redis 高手心法》作者。本书获得前阿里 P9 级资深技术专家李运华的推荐。进入正文......在《Redis 为什么这么快》这篇文章中,我们已经知道 Redis 使用全局 dict 字典表 + 内存数据库 + 丰富高效的数据结构 + 单线程模型 + I/O 多路复用事件驱动框架使得 Redis 快到飞起。Redis 的网络 I/O 以及键值对指令读写是由单个线程来执行的,避...
2025-01-20 08:30:44
643
原创 京东二面:Redis 为什么这么快?我说是纯内存操作,他对我笑了笑......
我是码哥,《Redis 高手心法》作者,可以叫我靓仔。本文将深入探讨 Redis 为什么快的底层原理,主要从高效的内存数据结构、单线程模型、I/O 多路复用,持久化技术的取舍等多角度探讨。Redis 的性能强大主要有以下原因。◎ 基于内存实现。◎ 使用 I/O 多路复用模型。◎ 单线程模型。◎ 6.0 推出 I/O 多线程模型。◎ 高效的底层数据结构。◎ 全局散列表。Re...
2025-01-14 08:31:31
927
原创 微服务架构中的服务注册与发现有哪些?Zookeeper、Eureka、Nacos、Consul 都有什么区别,实现原理是什么?...
“大家好,我是码哥,《Redis 高手心法》作者,本章节选自《Java 面试高手心法 58 讲》专栏。随着单体应用的拆分,我们面临的首要问题就是采用哪种方式实现服务间的调用,像之前单体应用可能直接在配置或数据库保存调用方的域名 IP 信息等。但拆分后服务实例信息众多,且随着服务动态扩缩容,服务运行时信息一直变化,那么我们就需引入注册中心帮助我们解决这类问题了。今天我们来聊一聊微服务架构中的服务注册...
2025-01-09 08:31:31
698
原创 我的 2024 盘点来了 | 愿你我闯过人生的每一道关
大家好,见字如面,我是码哥,《Redis 高手心法》作者,可以叫我靓仔。2024 已经过去,2025 新的一年到来,在此祝大家新年快乐,立下的 flag 可以完成。一年过去了,这几天总想着写点文字来回顾自己这一年的收获与得失,也希望我的经历能给你带来一些思考,欢迎你在留言区聊聊新的一年你的愿望,一起努力。花有重开日,人无再少年。每个人在不同的人生阶段对这句话都有不同的感悟。关于码哥读者朋友们都是因...
2025-01-01 23:05:31
970
原创 Redis Sets 使用场景有哪些?如何实现共同好友?
Redis Sets 是什么?Sets 的功能类似 Java 中的 HashSet,是通过散列表实现的,所以添加、删除、查找元素的时间复杂度是 O(1)。Sets 是字符串类型的无序集合,集合中的元素是唯一的,不会出现重复的数据。Java 的 HashSet 底层是用 HashMap 实现的,Sets 的底层数据结构是用散列表实现的,散列表的 key 存储的是 Sets 中元素的 value,散列...
2024-12-30 08:30:41
803
原创 从原理到实践,深入浅出 JVM 类加载性能调优
大家好,我是码哥,好久不见。今天继续聊聊《干翻 JVM 系列》的第八篇《从原理到实践,深入浅出 JVM 类加载性能调优》。在 Java 应用中,类加载的性能问题 是影响系统启动速度、内存使用和模块稳定性的重要因素。我将以简单明了的语言和丰富的案例介绍如何优化类加载的性能。这不仅能提升程序的响应速度,还能让系统更加稳定健壮。减少不必要的类加载启动时间调优是指通过减少类的加载数量或优化类加载过程,缩短...
2024-12-12 09:00:12
1131
原创 小米二面:JVM 触发类加载的条件有哪些?我说 new 的时候加载,然后他对我笑了笑.........
大家好,我是码哥,《Redis 高手心法》作者。Java 虚拟机(JVM)中,类的加载并不是随意发生的,而是由特定的触发条件决定的。什么时候加载?什么时候初始化?这是我们必须要搞清楚的问题,尤其在复杂的应用中,弄懂类加载的时机能帮助我们避免一些潜在的性能问题和运行时错误。在本节中,我们将详细探讨类加载的时机、主动和被动引用的区别,以及常见的类加载触发条件。在进入正文前,介绍下我的《Java 面试高...
2024-12-05 08:56:56
1111
原创 JVM 类加载器有哪些?双亲委派机制的作用是什么?如何自定义类加载器?
类加载器分类大家好,我是码哥,可以叫我靓仔,《Redis 高手心法》畅销书作者。先回顾下,在 Java 中,类的初始化分为几个阶段: 加载、链接(包括验证、准备和解析)和 初始化。而 类加载器(Class Loader)则是加载阶段中,负责将本地或网络中的指定类的二进制流,加载到 Java 虚拟机中的工具。在进入正文前,介绍下我的《Java 面试高手心法 58 讲》专栏,帮助你在现在就业压力巨大的...
2024-12-04 09:00:40
1062
原创 面试提问:JVM 垃圾回收算法有哪些?CMS、G1、ParNew、Serial、Parallel 原理是什么?...
大家好,我是码哥,《Redis 高手心法》畅销书作者。在 Java 的世界里,垃圾回收(Garbage Collection,GC)就像一位默默奉献的清洁工,负责清理那些不再被需要的对象。没有 GC,我们的程序内存迟早会被耗尽。但 GC 的运作并非无代价,不合适的垃圾回收策略可能导致高延迟甚至性能瓶颈。本章将带你深入理解 JVM 的垃圾回收机制,从垃圾回收算法到收集器设计,再到 GC 日志分析与调...
2024-12-03 09:01:15
775
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人