自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java并发编程--10-锁机制进化论:从synchronized到Lock接口的设计哲学

摘要:本文深入探讨Java并发编程中锁机制的演进,对比synchronized与Lock接口的设计差异。synchronized作为内置隐式锁,简单易用但存在不可中断、无法超时、非公平性等三大局限;Lock接口作为显式锁,通过可中断锁、超时获取、公平锁等特性解决了这些痛点。文章剖析了Lock的核心方法、ReentrantLock的实现原理,并给出选型建议:简单场景用synchronized,复杂场景用Lock。同时提供生产者消费者模式的两种实现对比,以及面试常见问题的标准答案,帮助开发者深入理解并发锁机制的

2026-03-17 08:28:34 249

原创 Java并发编程--9-ThreadLocal原理与内存泄漏:阿里规范为何强制要求remove()?

ThreadLocal原理与内存泄漏分析摘要: ThreadLocal通过线程独立的ThreadLocalMap实现数据隔离,每个线程维护自己的变量副本。其核心问题在于内存泄漏风险:Entry使用弱引用Key(指向ThreadLocal)和强引用Value。当ThreadLocal对象被回收后,Key变为null,但Value仍被线程强引用。在线程池等复用场景下,未remove()的Value会持续占用内存,导致OOM或数据串号。 关键点: ThreadLocalMap的Entry继承WeakReferen

2026-03-17 08:28:09 155

原创 Java并发编程--8-synchronized深度剖析:从使用到底层锁升级机制

本文深入解析Java中synchronized的底层机制与锁升级过程。文章从基础用法入手,区分实例锁、类锁和代码块锁的使用场景及常见误区。通过字节码层面分析monitorenter和monitorexit指令,揭示synchronized基于Monitor的实现原理。重点拆解JDK 1.6引入的锁升级机制:无锁→偏向锁→轻量级锁→重量级锁的动态转换流程,结合对象头Mark Word结构详细说明状态存储逻辑。同时总结了JDK优化点(自适应自旋、锁消除等)和10+高频面试题要点,帮助开发者全面掌握synchro

2026-03-16 08:27:03 381

原创 进阶篇-LangChain篇-1--LLM不是万能药:为什么我们需要编排框架?

LLM应用开发需要编排框架的原因 大语言模型(LLM)虽然强大,但单独使用时存在四大核心缺陷: 无状态性:每次请求都是独立对话,无法记忆上下文 幻觉问题:会编造看似合理但错误的信息 知识滞后:无法获取训练数据截止后的新信息 上下文限制:输入长度受token数限制 传统开发模式需要手动解决这些问题,导致: 代码量激增(管理对话历史、拼接prompt等) 系统脆弱(模型更换需重构大量代码) 功能扩展困难(集成外部工具复杂度高) LangChain等编排框架通过组件化设计解决了这些痛点: 提供标准化的记忆管理、工

2026-03-16 08:26:39 846

原创 Java并发编程--7-wait/sleep/notify高频面试题合集:吃透Java并发的核心等待唤醒机制

Java并发编程核心:wait/sleep/notify机制解析 摘要:本文深入解析Java并发编程中wait()、sleep()和notify()的核心机制与区别。wait()用于线程间通信,必须配合synchronized使用,会释放对象锁;sleep()是线程休眠方法,不释放任何锁。重点揭示了虚假唤醒问题,强调wait()必须放在while循环而非if语句中检查条件。通过生产者消费者模式等代码案例,展示了正确使用这些API的方法,并总结了10+高频面试题的标准答案,帮助开发者彻底掌握Java并发编程的

2026-03-15 18:29:11 1195

原创 Java并发编程--6-线程饥饿(Thread Starvation)深度剖析:成因、场景与解决方案

本文深入剖析线程饥饿现象,揭示其隐蔽性及危害性。线程饥饿指线程因资源分配不均(如CPU时间片、锁等)长期无法执行,表现为系统吞吐量下降、响应延迟等。与死锁不同,饥饿线程仍处于可执行状态但无机会运行。 文章从生活场景切入,对比线程饥饿、死锁和活锁的区别,指出饥饿的三大根源:不公平锁、优先级差异和资源独占。通过操作系统调度算法和锁竞争机制分析底层原理,强调非公平锁的性能优势但潜在的饥饿风险。 解决方案包括使用公平锁、限制临界区耗时和避免滥用线程优先级。文章通过可视化图表和代码示例,帮助读者理解这一高并发环境下的

2026-03-15 18:28:51 1212

原创 Java并发编程--5-volatile关键字深度剖析:可见性、有序性与原子性的真相

摘要: 本文深度剖析Java volatile关键字的三大特性与常见误区。volatile通过MESI缓存一致性协议保证可见性,利用内存屏障禁止指令重排确保有序性,但无法保证原子性(如i++仍需同步)。重点解析了DCL单例模式中volatile的必要性,防止对象初始化时的指令重排问题。通过代码示例验证了无volatile导致的可见性问题,并对比展示正确用法。核心结论:volatile是轻量级同步方案,适用于状态标记等场景,复合操作仍需synchronized或原子类。

2026-03-13 08:25:59 1931

原创 Java并发编程--4-Java并发灵魂:JMM内存模型彻底吃透

摘要:本文深入解析Java内存模型(JMM)的核心原理及其在并发编程中的关键作用。JMM通过主内存与工作内存的抽象设计,定义了线程间共享变量的访问规则,解决了多线程环境下的原子性、可见性和有序性问题。文章从硬件优化导致的并发问题切入,详细阐述了JMM的内存交互操作、三大核心特性及happens-before规则,并通过i++等典型案例展示了如何避免并发bug。掌握JMM是理解volatile、synchronized等并发机制的基础,也是写出线程安全代码的关键。

2026-03-13 08:25:36 1837

原创 Java并发编程--3-start()和run()区别?90%人都用错

本文深入解析Java中start()和run()方法的本质区别,指出80%开发者虽知"start()启动新线程,run()是普通方法",但能从源码层面理解start()底层逻辑、识别run()误用风险、实现优雅线程停止的不足10%。文章从JVM源码角度剖析start()通过native方法start0()创建操作系统线程的核心流程,对比run()仅是普通方法调用的本质特性,并通过实战案例展示误用run()导致的并发失效、状态异常等问题。最后提供面试必备的对比表格,强调start()是线程

2026-03-12 08:27:38 2124

原创 Java并发编程--2-线程生命周期详解:从NEW到TERMINATED的状态流转陷阱

线程生命周期详解:从NEW到TERMINATED的状态流转陷阱 本文深入解析Java线程的6种状态及其转换机制,揭示80%开发者容易混淆的关键点: BLOCKED与WAITING的本质区别:BLOCKED是等待获取锁,WAITING是等待唤醒通知 sleep()与wait()对线程状态的不同影响:sleep()保持锁进入TIMED_WAITING,wait()释放锁进入WAITING 常见线程问题根源:死锁、线程饥饿等往往源于对状态转换的错误理解 通过状态流转图、代码示例和面试真题,帮助开发者掌握线程生命周

2026-03-12 08:27:09 2152

原创 Java并发编程--1-面试必问:进程、线程、协程到底有什么区别?

摘要: 进程、线程和协程是并发编程的核心概念。进程是资源分配的最小单位,拥有独立内存空间,隔离性强但切换成本高;线程是CPU调度的最小单位,共享进程资源,切换开销较小,适合多核CPU和I/O密集型任务;协程是用户态轻量级线程,由程序自身调度,切换开销极低,支持高并发(百万级)。 通俗类比: 进程 = 独立餐厅(资源隔离) 线程 = 共享厨房的厨师(协作高效) 协程 = 超级厨师(主动切换任务) Java选择多线程的原因包括充分利用多核CPU、掩盖I/O等待、提升吞吐量。协程(如Java虚拟线程)进一步优化了

2026-03-11 08:30:00 2569

原创 进阶篇-机器学习篇-20--机器学习总结:当手工特征的天花板显现,神经网络为我们推开了新世界的大门

走完这19篇机器学习,你已经站在了AI的真正入口。机器学习让你学会:如何用数据解决问题深度学习让你学会:如何让机器真正理解数据未来的世界:自动驾驶、AI作画、语音交互、大模型、智能机器人……全部建立在深度学习之上。工具会变,思想永存基础打牢,高楼自起从今天起,放下手工特征的束缚,拥抱自动学习的力量我们深度学习系列,不见不散。“预测未来的最好方式,就是去创造它。我们深度学习系列见!

2026-03-11 08:29:17 2635

原创 进阶篇-机器学习篇-19--机器学习项目实战:客户流失预测(下)--架构和原理分析

机器学习项目实战:客户流失预测系统解析 本项目构建了一个完整的客户流失预测系统,采用分层架构设计: 核心架构: 配置层:集中管理参数(config.yaml) 核心逻辑层:实现数据加载、特征工程、模型训练等功能(src/) 数据层:存储原始和处理后的数据 服务层:提供API接口和Docker部署方案 关键亮点: 模块化设计:各功能解耦,便于维护和扩展 配置中心化:所有参数通过yaml文件统一管理 完整流程:从数据预处理到模型部署的全链路实现 可复现性:通过随机种子控制和实验记录确保结果一致 实践价值: 可作

2026-03-10 08:28:28 2784

原创 进阶篇-机器学习篇-18--机器学习项目实战--客户流失预测(上)--项目背景和编码

本文介绍了机器学习项目全流程实战——客户流失预测(上篇)。文章从项目背景与需求定义出发,重点阐述了如何构建端到端的机器学习解决方案。主要内容包括: 项目规划:针对电信用户流失预测业务场景,明确了以召回率(Recall)为核心指标的技术方案,并设计了完整的项目结构目录。 技术实现:详细说明了环境配置、参数管理(通过config.yaml统一管理)、可复现性保障(随机种子设置)等关键环节。 方法论:强调企业环境中端到端交付能力的重要性,提出"单个算法是零件,完整项目才是汽车"的核心观点。 文

2026-03-10 08:27:58 2975

原创 进阶篇-机器学习篇-17--异常检测与半监督学习:当标签稀缺时怎么办?

正常样本:扎堆出现,结构相似。异常样本:离群独居,结构奇怪。在没有(或极少)异常标签的情况下,自动把“异类”揪出来。少量有标签数据大量无标签数据一起训练,提升泛化能力标签是奢侈品异常是稀客无标签数据才是常态异常检测 & 半监督学习,就是机器学习走向实用化:简单、稳定、快,工程首选。:小样本高维利器。:复杂数据的终极方案。即使没有大量标签,也能从数据中发现规律。

2026-03-09 08:21:19 2615

原创 进阶篇-机器学习篇-16--模型调优:交叉验证、网格搜索与早停策略

本文介绍了模型调优的系统方法,包括学习曲线诊断、交叉验证评估和网格搜索优化。学习曲线可识别欠拟合(训练和验证得分均低)和过拟合(训练得分高但验证得分低)问题。K折交叉验证通过多轮评估提高结果稳健性。网格搜索则自动遍历参数组合寻找最优解。作者强调调参不是玄学,而是基于数据驱动的实验过程,需平衡模型复杂度与泛化能力。通过乳腺癌分类案例,展示了如何利用这些工具实现高效调参。

2026-03-09 08:20:54 2601

原创 进阶篇-机器学习篇-15--特征工程实战:从原始数据到高质量输入

特征工程(Feature Engineering)从原始数据中,通过清洗、转换、构造、选择等一系列操作,提取出对任务有价值、模型易学习的输入变量的过程。机器学习不仅仅是调参的游戏,更是对现实世界的建模。特征构造,是你用业务知识翻译现实世界的过程;特征选择,是你去伪存真、洞察本质的过程。当你看着模型准确率从 0.75 提升到 0.85 时,请记住:这不是因为换了更贵的模型,而是因为你多构造了一个反映“用户购买力”的比例特征,或者你果断删掉了一个充满噪声的列。

2026-03-07 19:27:39 3147

原创 进阶篇-机器学习篇-14--降维技术:PCA与t-SNE可视化高维数据

降维不仅仅是数学技巧,更是一种思维方式。PCA教会我们:在纷繁复杂的信息中,抓住主要矛盾(最大方差),忽略细枝末节。t-SNE教会我们:有时候全局并不重要,局部的联系(邻里关系)才是理解复杂系统的关键。想要提速、去噪、建模?请掏出你的PCA手术刀。想要洞察、展示、发现?请拿起你的t-SNE放大镜。数据虽高维,结构本简单。降维不是丢弃,而是为了更好地看见。

2026-03-07 19:27:22 2969

原创 进阶篇-机器学习篇-13--无监督学习入门:K-Means聚类与应用场景

如果说有监督学习是“按图索骥”,那么无监督学习就是“盲人摸象”后的豁然开朗。K-Means 作为无监督学习的入门算法,它教会我们的不仅是“如何分组”,更是“如何从无标签的数据中发现价值”。即使没有老师,数据内部也蕴含着自然的分组结构。简单往往有效:仅仅通过“找中心”和“归队”这两个动作,就能解决复杂的分群问题。视角的转换:从预测“是什么”,转变为探索“有什么”。在大数据时代,标签是昂贵的,而未标注的数据是海量的。掌握 K-Means,你就拥有了一把挖掘数据金矿的铲子。无论是用户画像异常检测,还是。

2026-03-06 08:24:16 3219

原创 进阶篇-机器学习篇-12--支持向量机(SVM):最大间隔分类的艺术

本文深入浅出地介绍了支持向量机(SVM)的核心原理与应用优势。SVM通过寻找最大间隔的决策边界实现分类,其核心思想简单直观,仅依赖少数支持向量即可确定边界。文章详细解析了硬间隔与软间隔的区别,并重点阐述了核技巧如何通过升维解决非线性分类问题。特别强调了SVM在高维小样本场景中的独特优势,如对高维数据的适应性、小样本下的强泛化能力等。通过生活化类比和代码示例,使读者能快速理解SVM的核心机制与实际应用价值。

2026-03-06 08:23:41 3266

原创 进阶篇-机器学习篇-11--集成学习:随机森林、AdaBoost、GBDT(三个臭皮匠顶个诸葛亮)

Bagging =(自助采样聚合)步骤从原始数据集中有放回地随机抽取多个子集(Bootstrap样本)在每个子集上训练一个基模型(通常是决策树)预测时,所有模型投票(分类)或取平均(回归)关键点:每个模型训练数据不同,但相互独立,可以并行计算。100个医生独立看病,最后少数服从多数,比单个医生更靠谱。随机森林:用「随机」打败「过拟合」,用「投票」提升「稳定性」。AdaBoost:谁错得多,就盯着谁练;谁学得好,就让谁说了算。GBDT:不直接猜答案,而是一点点修正误差,越修越准。精度高。

2026-03-05 08:14:30 4173

原创 进阶篇-机器学习篇-10--决策树:人能看懂的机器学习--原理、划分准则与可视化

决策树是一种直观且易于解释的机器学习算法,通过树形结构模拟人类决策过程。本文从生活实例出发,介绍了决策树的原理、核心数学指标(信息熵、基尼系数)以及剪枝技术防止过拟合。文章重点讲解了CART算法在scikit-learn中的实现,并通过泰坦尼克号生存预测案例演示了决策树的可视化应用。决策树因其可解释性强、无需特征缩放等优点,在医疗、金融等领域广泛应用。

2026-03-05 08:14:00 3711

原创 进阶篇-机器学习篇-9--朴素贝叶斯:基于概率的极速分类器

本文介绍了朴素贝叶斯分类器的核心原理与应用。作为基于概率的极速分类器,朴素贝叶斯凭借其训练速度快、预测效率高的特点,在文本分类任务中表现尤为突出。文章通过生活化案例解释了贝叶斯定理的计算过程,剖析了"朴素"假设的内涵与实用性,并对比了不同变体的适用场景。特别针对文本分类需求,详细阐述了多项式朴素贝叶斯的实现方法,包括拉普拉斯平滑等关键技术。最后通过垃圾邮件分类的实战案例,展示了该算法在实际应用中的高效表现。虽然其"特征独立"的假设看似简单,但在处理海量文本数据时,朴素

2026-03-04 08:49:52 4056

原创 进阶篇-机器学习篇-8--K近邻算法:原理超简单,效果却不弱

K近邻算法(KNN)是一种简单直观的机器学习方法,其核心思想是"物以类聚"。该算法无需显式训练,直接存储所有数据,通过计算新样本与已知样本的距离,找出最近的K个邻居进行投票决策。关键因素包括距离度量(如欧氏距离)、K值选择(过小易过拟合,过大易欠拟合)和特征标准化。KNN适用于非线性问题,如手写识别和推荐系统,但预测时计算量较大。通过月牙形数据集的实战演示,展示了KNN处理复杂分类问题的能力。

2026-03-04 08:49:30 4031

原创 进阶篇-机器学习篇-7--什么是逻辑回归?别看叫回归,其实是分类

本文系统解析了逻辑回归这一经典分类模型,揭示其名称与功能的"矛盾"本质。文章指出,逻辑回归虽名为"回归",实为分类模型,其核心是通过Sigmoid函数将线性回归结果映射为概率值(0-1),再通过阈值(通常0.5)实现分类。该模型在金融风控、广告推荐、医疗诊断等领域广泛应用,因其简单、高效、可解释性强而备受青睐。 文章从三个关键组件深入剖析逻辑回归:1)Sigmoid激活函数,将任意数值压缩为概率;2)交叉熵损失函数,对错误预测实施严厉惩罚;3)梯度下降优化算法。通过P

2026-03-03 08:14:28 5134

原创 进阶篇-机器学习篇-6--什么是线性回归?从原理到代码,彻底搞懂

本文系统介绍了线性回归的原理与实现方法。作为机器学习的基础算法,线性回归通过拟合直线y=wx+b来建立特征与目标变量间的关系。文章从房价预测的直观案例入手,详细讲解了损失函数(MSE)、最小二乘法(解析解)和梯度下降(迭代优化)两种核心求解方法,并对比了它们的优缺点。通过Python代码演示了从数据生成、模型实现到结果可视化的完整流程,帮助读者深入理解线性回归的工作原理。文章强调,掌握这一"Hello World"级算法是学习更复杂模型的重要基础。

2026-03-03 08:14:02 5044

原创 进阶篇-机器学习篇-5--模型评估指标认识:准确率、精确率、召回率、AUC

这篇文章系统介绍了机器学习模型评估的核心指标及其应用场景。主要内容包括: 准确率的局限性:通过癌症诊断案例说明,在不平衡数据中高准确率可能掩盖模型的关键缺陷。 分类任务评估指标: 精确率(宁缺毋滥):适用于垃圾邮件识别等误判代价高的场景 召回率(宁可错杀):适用于癌症诊断等漏检代价高的场景 F1分数:平衡精确率和召回率的综合指标 实战演示:使用sklearn计算各项指标,并通过混淆矩阵可视化模型表现,揭示高准确率下的真实问题。 核心观点:单一指标无法全面评估模型,需根据业务场景选择合适的评估体系。 文章强调

2026-03-02 08:18:34 5599

原创 JVM--26-面试题12:系统OOM与Full GC应该怎么办?

本文深入探讨了JVM中的OOM和Full GC问题,从原理认知、触发机制到防御策略全面解析。文章首先区分了五种核心OOM类型及其根本原因,强调OOM是结果而非原因。随后分析了Full GC与Young GC的本质区别,并列举了触发Full GC的五大场景。在防御策略方面,提出了精细化参数配置、关闭显式GC、选择合适收集器以及代码优化等方案。文章指出,真正的技术高手应通过监控趋势提前干预,而非被动应对问题。这些知识不仅是解决生产环境问题的关键,也是Java工程师面试中的重要考察点。

2026-03-02 08:18:11 5311

原创 JVM--25-面试题11:如何不停服务修改JVM参数?

摘要:本文深入探讨了在生产环境中如何实现 JVM 参数的无损动态修改。首先明确了三类 JVM 参数特性:启动期不可变参数(如内存配置)、运行时可控参数(带{manageable}标志)和代码热更新。重点介绍了使用 JDK 自带工具 jinfo 进行动态参数调整的完整流程,包括参数可修改性验证、常用命令速查和实战案例(如动态开启 GC 日志)。同时指出了 jinfo 的四大限制,并简要提及通过 JMX 编程实现自动化调优的方法。最后强调核心参数的不可变性,为生产环境调优提供了安全边界。(149字)

2026-02-28 08:27:25 6072

原创 JVM--24-面试题10:说下你在项目的JVM调优经验

本文深入探讨了JVM调优的系统性方法论和实战经验。作者首先澄清了JVM调优的三大误区,强调调优是基于数据驱动的科学决策过程。文章通过电商大促场景的Full GC问题案例,展示了完整的STAR法则调优流程:从问题定位(使用jstat、jmap等工具分析GC日志和堆转储)、根因分析(发现缓存对象未设置TTL导致老年代堆积),到分层解决方案(紧急参数调整和核心参数优化)。最后指出JVM调优的本质是在吞吐量、延迟和内存占用之间寻找业务场景的最优平衡点,而非追求万能参数模板。

2026-02-28 08:26:51 5853

原创 进阶篇-机器学习篇-4--数据预处理与特征工程:机器学习真正的核心

本文探讨了数据预处理在机器学习中的核心地位,指出数据质量直接决定模型性能上限。作者通过泰坦尼克号数据集案例,展示了一套标准化的数据预处理流程: 数据探索与理解(分析数据结构、缺失值和数据类型) 缺失值处理(识别并填补缺失数据) 异常值处理(检测并修正不合理数据) 特征编码与缩放(将文本转为数值并统一量纲) 特征选择与分割(筛选有用特征并划分训练/测试集) 文章强调,80%的机器学习项目时间都花费在数据预处理环节,而非模型调参。通过具体的Python代码示例,演示了如何将原始"脏数据"转化

2026-02-27 08:23:23 6268

原创 JVM--面试题9:CMS、G1、ZGC收集器深度对比

本文通过图解和生活类比的方式,深入对比了JVM三大垃圾收集器CMS、G1和ZGC的核心特点。CMS采用"边营业边打扫"策略,但会产生内存碎片;G1将堆划分为多个区域,每次只清理最脏的区域,实现可控停顿;ZGC通过着色指针技术实现并发标记和移动,几乎无停顿。文章从堆内存结构、GC触发时机、回收过程等多个维度,用仓库管理员的类比生动解释了不同收集器的工作原理和适用场景,帮助读者深入理解JVM垃圾回收机制。

2026-02-27 08:22:56 6459

原创 JVM--面试题8:说说你知道的垃圾收集器?

本文深入探讨了JVM垃圾收集器的核心知识体系,从主流收集器对比、历史演进和分类维度三个层面进行系统梳理。通过对比表格清晰展示了Serial、ParNew、CMS、G1等8种收集器的代别、算法、线程模式和适用场景。文章指出垃圾收集器从单线程到多线程再到并发处理的演进趋势,以及停顿时间从秒级到亚毫秒级的优化历程。最后从线程数、代别和目标三个维度对收集器进行分类,为JVM调优和GC日志分析提供理论基础。理解不同收集器的原理和适用场景是区分普通程序员与资深工程师的关键能力。

2026-02-26 08:25:58 7042

原创 JVM--面试题7:常见的垃圾收集算法有哪些?

本文深入探讨了JVM垃圾回收中的四种核心收集算法:标记-清除、标记-复制、标记-整理和分代收集。文章首先通过对比表格呈现各算法的特点与演进关系,指出分代收集是现代JVM的默认选择。随后详细分析了每种算法的原理、优缺点及适用场景,强调不同算法针对不同对象生命周期的优化。特别指出标记-清除会产生内存碎片,标记-复制空间利用率低,标记-整理移动成本高,而分代收集综合最优。文章采用可视化流程图展示算法执行过程,并提供了面试回答要点,帮助读者理解垃圾回收的核心实现原理。

2026-02-26 08:25:34 6858

原创 JVM--面试题6:如何判断对象可以被垃圾回收?

对象死亡判定是 JVM 垃圾回收的理论基础。理解 GC 原理(为什么这样设计)排查内存泄漏(哪些引用导致对象无法回收)合理使用引用(软引用缓存、弱引用临时数据)“知其然,知其所以然”理解对象死亡判定的设计初衷,才能真正掌握垃圾回收的精髓。互动话题你在项目中使用过软引用或弱引用吗?是什么场景?欢迎在评论区分享你的使用经验!

2026-02-25 08:23:09 7256

原创 JVM--面试题5:说说JVM的类加载机制和双亲委派模型

类加载请求先委托给父加载器,父加载器无法加载时,子加载器才尝试加载。│ 双亲委派模型工作流程 ││ ││ 类加载请求 ││ │ ││ ▼ ││ │ Custom Loader │ ──→ 先委托父加载器 ││ │ (自定义加载器) │ ││ │ ││ ▼ 委托 ││ │ App Loader │ ──→ 先委托父加载器 ││ │ (应用加载器) │ ││ │ ││ ▼ 委托 ││ │ Ext Loader │ ──→ 先委托父加载器 ││ │ (扩展加载器) │ ││ │ │。

2026-02-25 08:21:39 7294

原创 JVM--面试题4:为什么新生代到老年代的复制次数是15次?

JVM堆内存中对象晋升老年代的默认阈值是15次复制,这一设计基于对象头中存储年龄的4位空间限制(最大可表示15)。64位JVM开启压缩指针后,对象头为16字节(Mark Word 8字节+Klass Pointer 4字节+对齐填充4字节)。对象年龄记录在Mark Word中,每次Minor GC后存活对象会在Survivor区之间复制并年龄+1。当年龄达到15次时,对象将晋升到老年代。这一机制平衡了内存使用效率和对象存活周期评估,生产环境中可通过-XX:MaxTenuringThreshold参数调整该阈

2026-02-24 08:19:01 7723

原创 JVM--面试题3:详细说一下Java堆内存结构,为什么要分代?

本文深入解析了JVM堆内存的分代结构及其设计原理。堆内存被划分为新生代(Eden区、两个Survivor区)和老年代,采用分代收集理论进行管理。这种设计基于三大假说:弱分代假说(98%对象短命)、强分代假说(对象生命周期差异大)和跨代引用假说。新生代使用复制算法高频Minor GC,老年代使用标记整理/清除算法低频回收。分代设计通过"物以类聚"策略,针对不同生命周期对象采用最优回收算法,显著提升了垃圾回收效率。文章还详细介绍了各区域比例、作用及GC特点,为理解JVM内存管理和性能优化提供

2026-02-24 08:17:19 7927

原创 JVM--面试题2:请详细描述 JVM 的运行时数据区

运行时数据区是 JVM 知识体系的核心基石。快速定位内存问题(OOM、栈溢出)合理配置 JVM 参数(堆大小、栈大小、元空间)写出更高效的代码(减少对象创建、避免内存泄漏)“知其然,知其所以然”理解运行时数据区的设计初衷,才能真正掌握 JVM 的精髓。互动话题你在项目中遇到过哪些内存问题?是如何定位和解决的?欢迎在评论区分享你的排查经验!

2026-02-23 17:42:14 8189

原创 JVM--面试题1:谈谈你对JVM的理解?它的核心作用是什么?

即 Java 虚拟机,是 Java 语言的运行时环境(Runtime Environment),是 Java 实现"一次编写,到处运行(Write Once, Run Anywhere)"的核心基石。📌关键理解JVM 不是具体的软件,而是一套规范(Specification)。不同厂商可以基于这套规范实现自己的 JVM,如 HotSpot、OpenJ9、Zing 等。JVM 是 Java 程序员从"会用"到"精通"的分水岭。写出更高效的代码(理解内存分配、对象创建成本)更快定位问题。

2026-02-23 09:24:02 8947

空空如也

空空如也

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

TA关注的人

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