Java
文章平均质量分 80
DevDiary
这个作者很懒,什么都没留下…
展开
-
ArrayList 中几个关键部分的源码解析
成为一个非常灵活的数据结构,能够有效地管理内存,同时提供快速的索引访问能力。但它也说明了为什么在添加元素时可能会发生昂贵的数组复制操作,特别是当数组大小需要频繁调整时。扩容通常增加大约 50% 的容量,但具体的增加量取决于需要的最小容量。时,它首先检查数组是否足够大,如果不够大,它需要进行扩容。是如何在运行时根据需要动态调整其存储容量的。的核心是一个动态数组,实际上是一个可调整大小的数组。这段代码定义了数组的默认初始容量,并声明了一个对象数组。方法来确保数组有足够的容量。方法完成的,该方法再调用。原创 2024-05-12 18:53:14 · 187 阅读 · 0 评论 -
Java NIO&AIO
Java NIO(New Input/Output)和 AIO(Asynchronous Input/Output)都是Java平台上处理非阻塞I/O的技术,但它们在处理I/O操作的方式和实现机制上有着显著的差异。原创 2024-05-11 18:23:59 · 938 阅读 · 0 评论 -
Java EE/Jakarta EE范畴一览
Servlet API 提供了一种强大的方式来创建动态 Web 应用程序,通过接收、处理 HTTP 请求和生成响应。它是 Java Web 开发的基石,其他很多 Java Web 技术和框架(如 Spring MVC、JSF)都是建立在 Servlet 的基础之上。允许在HTML页面中嵌入Java代码,用于动态生成Web内容。JavaServer Pages (JSP) 是一个帮助开发者创建动态生成的web页面的技术,它允许开发者将Java代码嵌入到HTML页面中。原创 2024-05-07 21:42:27 · 1053 阅读 · 0 评论 -
Java 中用于线程同步类CountDownLatch和CyclicBarrier的区别
和都是 Java 中用于线程同步的工具类,它们虽然在某些方面类似,但在用途和工作方式上有着明显的区别。原创 2024-05-02 21:33:37 · 427 阅读 · 1 评论 -
JVM对象锁的升级过程
在Java中,锁升级是一个动态过程,JVM根据运行时的线程竞争情况自动调整锁的状态。这个过程涵盖从偏向锁到轻量级锁,最后可能升级到重量级锁。下面详细解释每个步骤以及它们之间的转换机制。原创 2024-05-01 23:15:51 · 888 阅读 · 1 评论 -
JVM(Java虚拟机)内存管理基础理论
Java虚拟机(JVM)在运行Java程序时组织内存的方式是通过设定几个特定的运行时数据区域来实现的。这些区域有各自独特的目的和生命周期,合理的管理和优化这些区域是提高Java应用性能的关键。原创 2024-04-15 16:21:00 · 1413 阅读 · 0 评论 -
如何进行JVM的调优
进行Java虚拟机(JVM)的调优是一项关键的工作,旨在优化JVM的性能,提高应用程序的响应速度和吞吐量,并确保系统的稳定运行。JVM调优通常涉及到调整堆大小、选择合适的垃圾收集器、监控运行时性能以及分析内存泄漏等方面。原创 2024-04-15 02:45:00 · 1446 阅读 · 0 评论 -
一篇文章深入学习Java的AQS(AbstractQueuedSynchronizer)
(简称AQS)是Java并发包中的一个基础框架,它为实现依赖单个原子变量来表示状态的同步器提供了可靠的基础。这个框架被广泛用于Java标准库中许多同步器的实现,例如Semaphore和等。AQS是实现定制同步器的强大工具,其设计抽象且功能强大,允许通过简单的方式来实现复杂的同步需求。通过学习和使用AQS,可以极大地扩展Java并发编程的能力,并深入理解并发控制机制。如果你需要更深入的理解AQS,阅读Oracle官方文档关于AQS部分将提供丰富的信息和示例,帮助你更好地理解和利用这一框架。原创 2024-04-13 15:38:19 · 1460 阅读 · 1 评论 -
简述Java中synchronized关键字的底层工作原理
的底层实现复杂且高效,通过锁的不同状态和锁升级机制,JVM可以在运行时根据具体情况调整同步策略,从而提供良好的性能和线程安全保障。原创 2024-04-12 23:56:04 · 392 阅读 · 0 评论