☕Java后端开发

5 篇文章
双亲委派模型

双亲委派模型

双亲委派模型是Java类加载器的核心设计,确保类加载的安全性与唯一性。其原理是:类加载器收到请求后先委派给父类加载器,逐层向上,只有当父加载器无法加载时,子加载器才尝试自行加载。Java类加载器层级从高到低依次为:启动类加载器(加载核心类库)、扩展类加载器、应用程序类加载器(加载ClassPath下的类)以及自定义类加载器。该模型带来三大优势:防止核心API被篡改(安全性)、保证同一类只加载一次(唯一性)、实现层级隔离避免冲突。但在SPI机制(如JDBC驱动)、Tomcat容器(Web应用隔离)和热部署等场景中会打破该模型,通过线程上下文类加载器或自定义加载器实现反向委派或直接加载。

ArrayList讲解

ArrayList讲解

ArrayList是Java中基于动态数组的集合,底层自动扩容。无参构造采用懒加载,首次添加元素时初始化容量为10。添加元素时先检查容量,若不足则扩容为原容量的1.5倍(通过右移运算)。指定位置添加元素需将后续元素后移;更新元素通过set方法替换并返回旧值;删除元素通过remove(索引)或remove(对象),后者只删除第一个匹配项,删除后移动元素并置空尾部以帮助GC回收。提前指定初始容量可减少扩容次数,提升性能。

泛型

泛型

Java泛型是Java 5引入的类型参数化技术,允许定义类、接口、方法时使用类型占位符(如T、E),使用时再传入具体类型。其核心价值在于编译期保障类型安全、消除冗余强制类型转换、提升代码通用性,解决了传统Object方式类型不安全、需频繁转换的问题。通配符?用于表示未知类型,解决泛型类型不兼容;限定符? extends T设定上限(只读),? super T设定下限(可写)。Java泛型基于类型擦除实现,编译时占位符被替换为上限类型(默认Object),运行时JVM无法感知泛型。使用占位符时遵循惯例(E/集合元素、T/通用类型、K/V/键值对)。注意通配符不能用于创建对象或类定义,上界只读、下界可写,且通配符不可嵌套。

IO流详解:如何轻松理解输入流和输出流

IO流详解:如何轻松理解输入流和输出流

理解 Java IO 流方向的关键在于以程序或线程为视角:数据进入程序即为输入(Input),程序读取数据;数据离开程序即为输出(Output),程序写入数据。这一原则同样适用于管道流:写线程使用 PipedOutputStream 将数据“输出”到管道,读线程使用 PipedInputStream 从管道“输入”数据。切勿从数据绝对流向判断,而应始终站在各自线程的角度——谁写数据就用 Output,谁读数据就用 Input。掌握该视角即可避免常犯的方向错误,彻底厘清 PipedOutputStream 与 PipedInputStream 的命名逻辑。

序列流(序列化和反序列化)

序列流(序列化和反序列化)

Java 序列化流的核心作用是将内存中的Java对象转换为字节序列(序列化),或将字节序列还原为内存中的Java对象(反序列化),实现对象的持久化存储(如写入文件)或网络传输(如分布式系统间对象传递)。以下是序列化流的完整解析,涵盖核心概念、API使用、规则与注意事项。 一、核心概念