标签:Java

示例代码

Java 枚举获取下一个next

阅读(1920)赞(13)

Java 中的枚举在项目中十分常用,我们可以用它来处理固定数量的值。 现在有个场景,需要支持 enum 枚举值的上一个 previous,下一个 next。 示例代码 设定枚举为 春夏秋冬 四个枚举值。 public enum Season...

多线程

Java 中的线程池

阅读(1857)赞(28)

JDK 的 JUC 包中提供了很多与并发相关的类,其中线程池这个类尤为关键。 线程池可以通过重用线程,降低线程创建和销毁造成的资源消耗。 线程池核心参数 线程池类 ThreadPoolExecutor 有 7 个参数: 参数 含义 解释 c...

HashMap 连环追问-码谱
Java Map

HashMap 连环追问

阅读(1899)赞(1)

HashMap 是 Java 集合框架中非常重要的一个实现,它有非常多值得借鉴的实现思路。面试中,也被经常问到。 下面将根据一系列的问题,来逐步深入了解 HashMap。 HashMap 底层结构 了解底层结构,将有助于理解更多复杂的设计思...

Java 中的 LinkedList-码谱
Java List

Java 中的 LinkedList

阅读(1752)赞(0)

LinkedList 在开发中并不常用,在大多数场景下,我们会采用 ArrayList。本篇将从多个维度解读 LinkedList 与 ArrayList 存在的差异。 底层结构 LinkedList 与 ArrayList 底层结构不同:...

Java List

Java 中的fail-fast 与 fail-safe

阅读(1694)赞(2)

在 Java 中,Set 和 List 可以循环遍历,因为其拥有可迭代能力,主要还是 Iterator 的功劳。 初识 首先看一下二者如何定义: fail-fast 一旦发现遍历的同时有其他人修改,则立即抛出异常 fail-safe 当发现...

Java List

ArrayList 扩容规则

阅读(1280)赞(3)

Java 中,ArrayList 是 List 最经典的实现,由于 ArrayList 底层是数组,掌握其扩容机制十分必要。 下面的讨论,基于 JAVA8,不同的JDK版本,某些规则会有差异。 构造器容量 我们一般在一定一个 ArrayLi...

Java 中的常量池-码谱
Java虚拟机

Java 中的常量池

阅读(1791)赞(32)

Java 中有多种常量池,常量池可以实现数据共享,节省内存开销,避免频繁创建对象与销毁对象等诸多好处。 常量池分类 一般,Java 中的常量池被分为以下几类: class 字节码常量池:保存字面量(就是一些字符串和被final修饰的变量)和...

Java GC 垃圾回收与内存管理-码谱
Java虚拟机

Java GC 垃圾回收与内存管理

阅读(1988)赞(0)

垃圾收集器 (GC)负责 Java 中的内存管理。因此,程序员不需要显式地处理内存分配和释放。 在 Java 中,JVM 一开始就预留了一定的内存。有时,实际使用的内存明显少于保留量。在这种情况下,我们更愿意将多余的内存返回给操作系统。 这...

Java虚拟机

GC Roots 根节点

阅读(2231)赞(0)

Java 中,垃圾收集器根 GC Roots 是特殊的对象。了解它有助于理解垃圾收集器的工作原理。 GC Roots GC Roots 是Java垃圾收集上下文中使用的术语。它们是垃圾收集器的特殊对象。顾名思义,GC 根是垃圾收集器进程的起...

Java 异常处理 try-catch-finally-码谱
Java异常

Java 异常处理 try-catch-finally

阅读(1586)赞(3)

Java 的 try 、catch、finally 代码块有助于编写可能导致程序出现异常的代码。 try 代码块 try 代码块包含应在正常条件下运行的应用程序代码。 例如,读取文件,写入数据库或执行复杂的业务操作。 try { //业务代...