- 博客(123)
- 收藏
- 关注

原创 零基础入门Spring源码
本文主要介绍Spring的执行流程梳理,主线为Spring源码中bean创建到销毁的流程梳理和其中关键的接口,如:BeanFactory、BeanDefinition、PostProcessor等。
2024-12-24 17:52:13
1891
原创 JVM类加载器详解
类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远超类加载阶段。对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,一个类加载器,都拥有一个独立的类名称空间。
2025-03-30 22:01:25
646
原创 JVM类加载过程详解
类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期可以简单概括为 7 个阶段:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)。其中,验证、准备和解析这三个阶段可以统称为连接(Linking)。
2025-03-23 22:13:33
1112
原创 JVM类文件结构详解
在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。
2025-03-23 19:41:56
943
原创 JVM垃圾回收笔记02-垃圾回收器
如果说回收(收集)算法是内存回收的方法论,那么垃圾回收(收集)器就是内存回收的具体实现。虽然有各种的收集器,但并非要挑选出一个最好的收集器。因为直到现在为止还没有最好的垃圾收集器出现,更加没有万能的垃圾收集器,我们能做的就是根据具体应用场景选择适合自己的垃圾收集器。
2025-03-22 23:46:49
1418
原创 JVM垃圾回收笔记01-垃圾回收算法
Java 堆是垃圾收集器管理的主要区域,因此也被称作 GC 堆(Garbage Collected Heap)。从垃圾回收的角度来说,由于现在收集器基本都采用**分代垃圾收集算法**,所以 Java 堆被划分为了几个不同的区域,这样我们就可以根据各个区域的特点选择合适的垃圾收集算法。
2025-03-22 23:44:56
1042
原创 JVM内存结构笔记06-HotSpot虚拟机对象探秘
Java是一门面向对象的编程语言,Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象通常(例外:复制、反序列化)仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢?基于实用优先的原则,本文以最常用的虚拟机HotSpot和最常用的内存区域Java堆为例,深入探讨一下HotSpot虚拟机在Java堆中对象分配、布局和访问的全过程。
2025-03-20 19:39:31
637
原创 JVM内存结构笔记05-直接内存
直接内存是一种特殊的内存缓冲区,并不在 Java 堆或方法区中分配的,而是通过 JNI 的方式在本地内存上分配的。直接内存并不是虚拟机运行时数据区的一部分,也不是虚拟机规范中定义的内存区域,但是这部分内存也被频繁地使用。而且也可能导致 OutOfMemoryError 错误出现。
2025-03-13 19:02:16
652
原创 JVM中常量池和运行时常量池、字符串常量池三者之间的关系
在Java虚拟机(JVM)中,常量池、运行时常量池和字符串常量池是三个相关但又有所区别的概念。本文将详细解释这三个概念及其相互的联系。
2025-03-13 19:01:42
1028
原创 JVM内存结构笔记04-字符串常量池
字符串常量池 是 JVM 为了提升性能和减少内存消耗针对字符串(String 类)专门开辟的一块区域,主要目的是为了避免字符串的重复创建。
2025-03-12 23:20:13
1030
原创 JVM内存结构笔记03-方法区
方法区属于是 JVM 运行时数据区域的一块逻辑区域,是各个线程共享的内存区域。当虚拟机要使用一个类时,它需要读取并解析 Class 文件获取相关信息,再将信息存入到方法区。方法区会存储已被虚拟机加载的 类信息、字段信息、方法信息、常量、静态变量、即时编译器编译后的代码缓存等数据。
2025-03-12 21:46:42
968
原创 JVM内存结构笔记02-堆
堆是Java 虚拟机所管理的内存中最大的一块,Java 堆是所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及数组都在这里分配内存。
2025-03-11 22:18:32
972
原创 JVM内存结构笔记01-运行时数据区域
对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++那样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。
2025-03-11 22:18:14
767
原创 前后端实时通信的四种方式(附详细案例代码)
后端实现实时通信的几种方式主要包括轮询、长轮询、WebSocket 和 Server-Sent Events (SSE)。本文详细介绍每种方式的适用场景、优缺点和代码实现方式。
2025-03-10 23:41:32
901
原创 MySQL中 IN 到底走不走索引?
在 MySQL 中,IN 语句是否能够利用索引取决于多个因素,包括但不限于查询的具体形式、表的统计信息、索引的选择度等。本文通过几个案例来帮助理解 IN 语句与索引使用的关系。
2025-03-10 13:17:09
1744
原创 Synchronized 锁升级过程
在Java中,synchronized 是一种内置锁机制,用于确保多个线程对共享资源的同步访问。从JDK 1.6开始,为了提高性能和减少锁竞争带来的开销,Java引入了锁升级的概念。
2025-03-09 20:40:15
531
原创 一文看懂Spring ObjectFactory
ObjectFactory 是 Spring 框架中的一个接口,它提供了一种延迟获取对象实例的方式。与直接从 BeanFactory 或 ApplicationContext 中获取 Bean 不同,ObjectFactory 允许在需要时才创建或返回对象实例,这可以有助于优化资源使用和提高性能。
2025-03-06 20:32:26
926
原创 JVM内存结构和各种结构的作用
JVM(Java Virtual Machine)的内存结构是 Java 程序运行的基础,JVM的内存结构主要分为程序计数器、虚拟机栈、本地方法栈、堆、方法区等区域,本文重点介绍了内存结构中各个区域的作用。
2025-03-06 20:31:48
911
原创 Jetcache快速入门
JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用。 JetCache提供了比SpringCache更加强大的注解,可以原生的支持TTL、两级缓存、分布式自动刷新,还提供了Cache接口用于手工缓存操作。 当前有四个实现,RedisCache、TairCache(此部分未在github开源)、CaffeineCache(in memory)和一个简易的LinkedHashMapCache(in memory),要添加新的实现也是非常简单的。
2025-03-04 12:26:25
1089
原创 HashMap、LinkedHashMap、TreeMap三者的区别
HashMap、LinkedHashMap 和 TreeMap 都是 Java 集合中用于存储键值对的 Map 接口的实现类,本文重点介绍它们在底层数据结构、元素顺序、性能以及使用场景等方面存在的区别。
2025-03-04 12:25:09
841
原创 SpringBoot整合SSE(附详细案例代码)
SSE(Server-Sent Events,服务器发送事件)是一种允许服务器向浏览器推送实时更新的技术。它是一个基于HTTP的轻量级协议,专门用于从服务器到客户端的单向消息传递。与 WebSocket 不同,SSE 是单向的,服务器可以主动向客户端发送数据,而客户端只能接收数据。
2025-03-03 12:06:31
2185
原创 快速入门Spring AI Alibaba
本文主要内容为Spring AI Alibaba的快速入门demo,基于Spring Boot集成Spring AI Alibaba并完成一个简单的对话模型。
2024-12-26 18:02:53
740
原创 String.intern()
String.intern() 是 Java 中的一个方法,它用于返回字符串池中与给定字符串内容相同的字符串引用。如果字符串池中不存在这样的字符串,则将该字符串添加到池中,并返回这个新添加的字符串引用。本文是关于String.intern()的相关介绍。
2024-12-25 22:25:47
774
原创 Netty内存泄漏:LEAK: ByteBuf.release() was not called before it‘s garbage-collected.
本文主要介绍Netty中未及时调用ByteBuf.release()导致的内存泄漏问题
2024-12-23 20:10:47
1375
原创 一文看懂 BeanFactoryPostProcessor 与 BeanPostProcessor 接口
本文主要介绍了spring中的BeanFactoryPostProcessor与BeanPostProcessor接口的作用和联系
2024-12-13 12:35:21
846
原创 一文看懂BeanFactory 和 ApplicationContext
本文重点介绍了BeanFactory 和 ApplicationContext,以及两者的区别与联系。
2024-12-09 12:18:05
1029
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人