自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

叉烧钵钵鸡的博客

系统学习,拒绝碎片化

  • 博客(35)
  • 收藏
  • 关注

原创 【Spring详解六】容器的功能扩展-ApplicationContext

深入探讨了Spring框架中ApplicationContext的功能扩展,与BeanFactory进行对比,详细解析了ApplicationContext的加载过程,包括设置配置路径、初始化BeanFactory、扩展功能、注册后处理器、初始化消息资源和事件广播器等步骤。

2025-02-25 23:44:41 985

原创 【Spring详解五】bean的加载

外没有别的处理工作,根据分析,基本可以理清Spring处理循环依赖的解决办法,在B中创建依赖A时通过ObjectFactory提供的实例化方法来获取原始A,使B中持有的A仅仅是刚刚初始化并没有填充任何属性的A,而这初始化A的步骤还是刚刚创建A时进行的,但是因为A与B中的A所表示的属性地址是一样的所以在A中创建好的属性填充自然可以通过B中的A获取,这样就解决了循环依赖的问题。BeanFactory是最基本的抽象工厂,而其他的IOC容器只不过是具体的工厂,对应着各自的Bean定义方法。

2025-02-20 22:17:09 990

原创 【Spring详解四】自定义标签的解析

自定义标签解析通过 BeanDefinitionParserDelegate.parseCustomElement() 方法进行。解析流程包括获取命名空间、查找处理器、调用处理器解析标签、将解析结果转换为 BeanDefinition。NamespaceHandler 负责将命名空间与处理器进行映射。BeanDefinitionParser 负责解析标签内容并生成 BeanDefinition。

2025-02-20 16:37:17 1006

原创 【Spring详解三】默认标签的解析

深入解析了Spring框架中默认标签的解析过程,重点关注Bean标签的解析及注册。文章详细介绍了BeanDefinition的创建、属性解析、子元素解析以及注册流程,并分析了alias、import和beans标签的解析原理。

2025-02-19 22:18:06 1087

原创 【Spring详解二】容器的基本实现

介绍了Spring框架中容器的基本实现原理,包括XmlBeanFactory的加载过程、配置文件封装、Bean解析和注册等。主要内容包括Spring框架结构、核心类介绍、XML配置文件读取、Bean解析和注册等。

2025-02-18 16:35:26 656

原创 【Spring详解一】Spring整体架构和环境搭建

介绍了Spring框架的整体架构和环境搭建过程。主要内容包括Spring框架的分层架构和各个模块的功能,以及如何使用Git和Gradle下载和编译Spring源码。

2025-02-18 14:27:25 805

原创 【Java集合四】HashSet详解

详细解析了 Java 集合框架中的 HashSet 类,包括其概述、源码解析、主要方法和实现原理。文章介绍了 HashSet 的无序、不可重复特性,以及其基于 HashMap 的底层数据结构。此外,还探讨了如何正确使用 HashSet 以及与 HashMap 的关联。

2025-02-17 14:32:14 433

原创 【Java集合三】ConcurrentHashMap 详解

本文深入解析了 Java 中的 ConcurrentHashMap,对比了 Java 7 和 Java 8 的版本差异,重点介绍了其线程安全机制、数据结构、扩容机制以及 put 和 get 操作的原理。

2025-02-16 21:52:07 777

原创 【Java集合二】HashMap 详解

深入解析了Java中的HashMap数据结构,涵盖了其工作原理、数据结构、源码解析以及JDK7和JDK8之间的差异。文章详细介绍了HashMap的内部实现,包括数组、链表、红黑树等数据结构,并分析了HashMap的put、get等方法的具体实现过程。

2025-02-15 20:05:58 629

原创 【Java集合一】集合概述

介绍了Java集合框架,包括其概述、主要数据结构(如List、Set、Queue、Map)以及相关实现类(如ArrayList、LinkedList、HashSet、HashMap等)。内容涵盖了集合框架的原理、特点、使用方法以及常见操作。

2025-02-14 22:45:04 1019

原创 【JVM详解五】JVM性能调优

本文深入探讨了 JVM 性能调优的各个方面,包括性能监控工具、GC 日志分析、性能调优流程和常用参数设置。文章重点介绍了如何使用 VisualVM、GCViewer 等工具分析 GC 日志,并根据分析结果进行内存占用、延迟和吞吐量的调优。

2025-02-10 12:14:37 1099 1

原创 【JVM详解四】执行引擎

JVM的执行引擎是JVM的核心组成部分之一,负责将Java字节码转换为机器码以便CPU执行。执行引擎包括解释器、JIT编译器和垃圾收集器。解释器逐行解释字节码,而JIT编译器则对热点代码进行优化编译以提高执行效率。垃圾收集器则负责自动管理内存,释放无用对象占用的空间。这些组件共同协作,确保了Java程序的跨平台性和高效执行。

2025-02-09 22:08:50 1201

原创 【JVM详解三】垃圾回收机制

详细介绍了JVM中的垃圾回收机制,包括对象存活判断、垃圾回收算法、垃圾收集器以及内存分配与回收策略。通过引用计数算法和可达性分析算法判断对象是否存活,垃圾回收算法包括标记-清除、复制、标记-整理和分代收集算法。常见的垃圾收集器如Serial、ParNew、CMS和G1各有特点,G1收集器尤其适用于低停顿和高吞吐量的场景。最后,文章还探讨了内存分配策略,如对象优先在Eden分配和大对象直接进入老年代。

2025-02-09 15:38:21 927

原创 【JVM详解二】常量池

详细解析了JVM中的常量池,包括class文件常量池、运行时常量池和字符串常量池。首先,class文件常量池在编译时生成,存储字面量和符号引用;其次,运行时常量池动态导入class文件常量池的内容,并在Java程序运行时提供常量的引用;最后,字符串常量池通过懒加载机制管理字符串对象的引用,以提高内存利用率。

2025-02-08 22:11:34 1283

原创 【JVM详解一】类加载过程与内存区域划分

详尽介绍了Java虚拟机(JVM)的类加载过程及其内存区域的划分。JVM是Java语言实现跨平台特性的核心,负责将Java字节码映射到本地操作系统的指令。文章还讨论了JRE、JDK与JVM之间的关系,以及JVM的整体架构与运行时数据区,阐述了类加载机制的工作原理,包括加载、验证、准备、解析和初始化的五个阶段。

2025-02-08 21:40:52 1283

原创 Java AIO详解

AIO(异步I/O)是Java的一种高级I/O模型,通过完全异步的方式允许线程发起I/O请求后立即返回,大大提升了性能和效率。相较于NIO和BIO,AIO采用了回调机制来处理I/O操作结果,适用于高并发的网络应用场景。在JDK 1.7及以上版本中引入的NIO2部分增加了多种异步通道,支持Windows和Linux两大操作系统的异步I/O实现。

2025-02-08 14:25:29 739

原创 Java NIO详解

本文深入讲解了 Java NIO,一种基于通道和缓冲区的非阻塞 IO 模型,旨在解决传统 BIO 模型在高并发场景下的性能瓶颈。文章详细介绍了 NIO 的核心组件:Buffer、Channel 和 Selector,并对比了 NIO 与 BIO 的区别,阐述了 NIO 在性能和资源利用方面的优势。此外,文章还提供了 NIO 的实际应用案例,并介绍了基于 NIO 的 Reactor 模式,包括单线程、多线程和主从多线程三种模式,分析了它们的优缺点和适用场景。

2025-02-05 21:56:32 1206 2

原创 Java BIO详解

详细介绍了 Java BIO(Blocking I/O)模型,即同步阻塞式 IO。文章首先概述了 BIO 的概念、特点和适用场景,并指出了其线程资源浪费、不适合高并发、效率低等缺点。接着,文章深入讲解了 Java IO 流的分类、常用类和方法,包括字节流和字符流、输入流和输出流等。最后,文章通过一个简单的 BIO 编程实例,展示了 BIO 模型的实际应用,并分析了其工作机制和优缺点。

2025-02-04 23:20:02 1086

原创 【Java并发编程】ForkJoinPool 详解

ForkJoinPool 是 Java 7 引入的一种高效的并发执行框架,它通过将任务分解成更小的子任务,并利用工作窃取算法来并行执行这些子任务,从而提高程序的执行效率。ForkJoinPool 主要由 ForkJoinTask、ForkJoinPool 和 WorkQueue 三个核心类组成,其中 ForkJoinTask 定义了任务执行和拆分的逻辑,ForkJoinPool 负责管理工作线程和任务队列,WorkQueue 则是工作线程执行任务的队列。

2024-11-08 10:31:14 1026

原创 【Java并发编程】线程池详解

本文深入解析了 Java 线程池的核心设计与实现,探讨了线程池的用途、工作原理和关键组件。文章首先介绍了线程池的概念和优势,随后详细分析了 ThreadPoolExecutor 类的源码,包括生命周期管理、任务执行机制和 Worker 线程管理等。最后,文章结合实际业务场景,讨论了线程池参数配置的挑战,并提出了动态化线程池的解决方案。

2024-10-29 15:31:28 1096

原创 【Java并发编程】倒计时锁CountDownLatch详解

本文从特性简介、源码分析、场景应用三个层面详细分析了倒计时锁CountDownLatch。CountDownLatch 是 Java 并发编程中的一个重要工具,它允许一个或多个线程等待其他线程完成操作。它通过一个计数器来实现,计数器的初始值表示需要等待的任务数。每当一个线程完成任务后,计数器的值就会减1。当计数器的值变为0时,所有等待的线程就可以恢复执行。

2024-10-25 16:22:53 1079

原创 【Java并发编程】循环屏障CyclicBarrier详解

CyclicBarrier 是一个线程同步工具类,用于协调一组线程,使其在达到某个共同点(屏障)后再一起继续执行。与 CountDownLatch 不同,CyclicBarrier 可以重复使用,每次达到屏障后,都会开启新一代线程,并重置屏障状态。CyclicBarrier 主要通过 ReentrantLock 和 Condition 实现,并提供了 await() 方法用于线程阻塞等待,以及 breakBarrier()、nextGeneration() 和 reset() 等工具方法用于控制屏障状态。

2024-10-25 15:54:54 1187

原创 【Java并发编程】信号量Semaphore详解

本文从源码层面分析了Semaphore的实现原理以及运行机制。Semaphore 是 Java 并发编程中用于控制同时访问特定资源线程数量的工具,通过协调线程保证合理使用公共资源。它基于 AQS 共享锁实现,通过获取和释放许可来控制对资源的访问。Semaphore 可用于流量控制,例如数据库连接限制等场景。

2024-10-25 09:31:28 1635

原创 【Java并发编程】读写锁ReentrantReadWriteLock详解

本文详细介绍了 Java 中 ReentrantReadWriteLock 读写锁的实现原理和使用方法。重要亮点:状态变量 state及通过对state进行位运算操作同时维护读锁和写锁、写锁和读锁的获取和释放原理、锁降级

2024-10-24 14:40:04 733

原创 【Java并发编程】独占锁 ReentrantLock 详解

深入分析了ReentrantLock的使用和实现原理,从源码层面详细分析了锁的获取和释放机制,以及如何利用Condition对象实现等待/通知模式。

2024-10-16 16:42:50 1310

原创 【Java并发编程】ThreadLocal详解

ThreadLocal 是 Java 提供的一种线程局部变量工具,为每个使用该变量的线程提供一个独立的变量副本,避免多线程之间的数据冲突。本文详细介绍了 ThreadLocal 的使用方法、实现原理、内存泄漏问题以及相关扩展知识。

2024-10-16 09:52:56 804

原创 【Java并发编程】关键字volatile详解

详细解析了 Java 中 volatile 关键字的原理和应用,探讨了其在多线程环境下如何保证变量可见性和有序性,以及无法保证原子性的原因。

2024-10-11 17:32:18 1934

原创 【Java并发编程】Condition详解

深入解析了 Java 并发编程中 Condition 接口的原理和使用方法。通过对比 Condition 与 Object 的监视器方法,突出了 Condition 在等待/通知模式上的优势,例如更为灵活的等待队列管理和更精细的锁控制。文章详细分析了 ConditionObject 类的实现,包括等待队列的结构、await() 和 signal() 方法的执行流程,以及中断处理机制。此外,文章还对比了 Condition 与 Object 监视器方法在使用方式上的区别,强调了 Condition 的适用场景

2024-10-10 17:07:29 1686 1

原创 【Java并发编程】深入理解AQS实现原理

深入解析了 Java 并发编程中重要的组件——AbstractQueuedSynchronizer (AQS) 的实现原理。AQS 是构建锁和其他同步组件的基础框架,通过维护一个 int 类型的状态变量和 CLH 队列来实现对共享资源的同步访问。文章详细介绍了 AQS 的设计模式、资源共享方式、核心方法以及内部类 Node 和 ConditionObject 的作用。

2024-07-16 14:52:38 1279

原创 CPU高速缓存与JMM

探讨了 CPU 高速缓存与 Java 内存模型 (JMM) 之间的关系,解释了多核处理器架构下内存访问的复杂性以及如何确保数据一致性。包括:CPU 高速缓存、缓存一致性问题、MESI 协议、伪共享问题、指令重排、内存屏障、JMM和Happens-Before原则。

2024-07-05 16:16:27 911

原创 用户态与内核态

深入探讨了用户态与内核态的概念,以及它们在操作系统中的重要作用。文章首先介绍了 CPU 指令集权限分级,解释了为什么操作系统需要区分内核态和用户态。随后,文章详细解析了虚拟地址空间的划分、用户空间与内核空间的区别,以及进程和线程在用户态和内核态下的运行机制。最后,文章探讨了用户态到内核态的切换方式,并分析了 JVM 线程的实现机制。

2024-07-03 17:12:10 2861

原创 【Java并发编程】synchronized详解

深入解析了 Java 中 synchronized 关键字的原理,从源码层面揭示了其背后的实现机制和优化策略。

2024-06-27 10:30:18 2655

原创 【Java并发编程】偏向锁/轻量级锁/重量级锁详解

深入解析了 Java 并发编程中的三种锁机制:偏向锁、轻量级锁和重量级锁。文章首先介绍了锁升级模型,然后详细解释了每种锁的工作原理、加锁和解锁过程,以及它们之间的转换条件。最后,文章分析了重量级锁的实现细节,包括 Monitor 的结构和操作过程。

2024-06-26 17:30:44 2363

原创 【Java并发编程】——锁分类详解

本文详细介绍了 Java 并发编程中锁的分类,主要分为悲观锁和乐观锁两大类,并深入探讨了共享锁/互斥锁、公平锁/非公平锁、偏向锁/轻量级锁/重量级锁、可重入锁/不可重入锁、自旋锁、分段锁等概念。通过分析 Java 中锁的实现机制,例如 synchronized 关键字、ReentrantLock 类、AQS 框架等,以及不同锁的优缺点和适用场景,帮助读者更好地理解和应用 Java 并发编程中的锁机制。

2024-06-21 22:12:28 1215 1

原创 【Java并发编程】多线程基础知识

深入浅出地介绍了 Java 并发编程中的多线程基础知识,涵盖了进程、线程的概念,创建多线程的几种方式,线程的状态,线程常用方法,以及 Java 对象的内存结构等内容。通过学习本文,读者可以建立起对 Java 多线程编程的初步理解,为进一步学习和应用并发编程打下基础。

2024-06-21 16:49:30 1015

空空如也

空空如也

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

TA关注的人

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