自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 字节码文件中的字段和属性

本文解释了Java中字段与属性的区别:字段是类的成员变量,在字节码中通过field_info结构存储名称、类型和访问标志等核心信息;属性则是描述类、字段或方法的元数据,通过attribute_info结构提供额外信息(如调试信息、泛型签名等)。字段可以包含属性,而属性依附于类、字段或方法。常见属性包括Code(方法字节码)、ConstantValue(静态常量值)和SourceFile(源文件名)等。字段定义对象状态,属性支持JVM执行和调试功能。

2025-12-06 20:18:08 845

原创 脏读、不可重读、幻读与四种隔离级别(读未提交、读已提交、可重复度、串行化)相关解析

脏读、不可重读、幻读、读未提交、读已提交、可重复度、串行化

2025-11-24 19:44:14 1160

原创 Java嵌套类详细讲解

Java嵌套类详解摘要:Java提供了四种嵌套类类型:1)静态嵌套类(static修饰,不依赖外部类实例);2)成员内部类(可访问外部类所有成员);3)局部内部类(方法内定义,仅访问final局部变量);4)匿名内部类(无类名,实现接口/继承类)。静态嵌套类适合构建器模式,成员内部类适合迭代器实现,后两者常用于事件处理。关键区别在于访问权限:静态类不能访问实例成员,非静态类会持有外部类引用可能引发内存泄漏。开发中应根据需求选择,内存敏感场景建议使用静态嵌套类或弱引用。合理使用嵌套类能提升代码模块化和封装性。

2025-11-22 20:55:59 579

原创 Java record用法与应用场景详解

Java 14引入的record是一种简化不可变数据类定义的新特性。它自动生成final字段、构造函数、访问器方法以及equals()、hashCode()和toString()方法,大幅减少样板代码。record支持自定义紧凑构造函数、添加方法和静态字段,可实现接口但不能继承其他类。主要适用于DTO、配置参数、方法多返回值等数据载体场景,但不适合需要可变状态或复杂继承的类。相比传统JavaBean,record提供了更简洁的语法、明确的数据语义和天然的不可变性,是Java向现代化编程模式发展的重要改进。

2025-11-21 20:51:15 509

原创 Java Stream reduce 方法入门指南

摘要:Stream API中的reduce方法用于将流元素组合成单一结果,提供三种重载形式:单参数(返回Optional)、双参数(带初始值)和三参数(支持并行流和类型转换)。关键概念包括累积器(定义组合逻辑)、初始值(需满足恒等律)和组合器(并行流合并结果)。典型应用场景包括求和、求极值、字符串拼接等。使用时需注意初始值设置、并行流兼容性,并合理选择reduce或collect方法。

2025-11-20 19:23:14 481

原创 Java对象排序实战:Comparable与Comparator的完整指南

Java提供了Comparable和Comparator两种排序接口:Comparable是内置于对象的自然排序接口(compareTo方法),适用于单一标准排序;Comparator是外部比较器(compare方法),支持多种灵活排序方式而无需修改原类。Java8后推荐使用Lambda表达式和Comparator的静态方法(如comparing()、reversed())实现简洁高效的多级排序。

2025-11-19 19:18:57 576 2

原创 Java Stream reduce 方法实战进阶

Stream API中的reduce方法是处理数据流的重要终端操作,可将流元素归约为单一结果。它提供三种形式:基础版(无初始值)、带初始值版(保证非空结果)和并行版(支持类型转换)。关键概念包括累积器(定义元素组合方式)、初始值(必须为单位元)和组合器(用于并行处理)。reduce适用于数值计算(求和/求积)、字符串处理(拼接)和对象聚合(年龄统计)等场景。使用时需注意:初始值必须为单位元、并行流要求操作满足结合律、避免低效操作(如字符串拼接)。

2025-11-19 19:02:31 339

原创 Java四大核心函数式接口详解:Supplier、Consumer、Function、Predicate

摘要:本文介绍了Java 8中的四种常用函数式接口:Supplier(供应者,无参返回结果)、Consumer(消费者,有参无返)、Function(函数,有参有返)和Predicate(断言,有参返回布尔值)。通过代码示例解析了每个接口的核心方法及执行过程,并说明了其典型应用场景,如延迟计算、数据处理、类型转换和条件过滤等。这些接口在Stream API中被广泛使用,体现了将行为作为参数传递的编程思想,可提高代码的灵活性和复用性。

2025-11-18 15:44:14 385

原创 Java线程池配置深度指南:核心线程数vs最大线程数的性能博弈

摘要:Java线程池的配置需根据任务类型和系统资源动态调整。CPU密集型任务核心线程数建议设为CPU核心数,I/O密集型可设为2-4倍核心数。建议通过监控线程池状态、压力测试持续优化,避免无界队列和不当拒绝策略,初始配置应从保守开始,逐步调整至最优。

2025-11-17 20:56:33 164

原创 深入理解Java线程池:原理、使用与最佳实践

Java线程池是并发编程的核心组件,通过预先创建线程避免频繁创建销毁的资源消耗。核心类ThreadPoolExecutor包含7个关键参数:核心/最大线程数、存活时间、工作队列、线程工厂和拒绝策略。任务处理流程遵循"核心线程-入队-临时线程-拒绝"的决策路径。Executors提供了4种常用线程池,但因可能引发OOM问题,生产环境建议直接配置ThreadPoolExecutor。合理配置线程池需考虑任务类型(CPU/IO密集型)并选用适当的队列和拒绝策略,同时应监控线程池状态并正确关闭。

2025-11-17 17:00:42 1100

原创 Java中的更改器方法、访问器方法和构造器方法

Java面向对象编程中的三种核心方法:构造器方法用于对象初始化(类同名、无返回值);访问器方法(getter)安全获取对象属性(返回属性值);更改器方法(setter)修改对象状态(通常void返回)。它们共同实现封装特性,确保数据安全性和完整性。构造器可重载,访问/更改器方法常包含验证逻辑。

2025-11-16 18:24:00 363 1

原创 Java Set 深度探秘:唯一性保障与三大实现的特性对比

摘要:Java Set是存储唯一元素的集合接口,核心实现包括HashSet(无序高速)、LinkedHashSet(保持插入顺序)和TreeSet(自动排序)。Set通过equals()和hashCode()保证元素唯一性,与List不同之处在于无序性和不可重复性。选择时需考虑顺序需求:HashSet适合纯唯一性场景,LinkedHashSet维护插入顺序,TreeSet实现自然或定制排序。注意所有实现均非线程安全,并发环境下需使用同步包装或并发集合类。正确使用Set能有效处理需要唯一元素的集合场景。

2025-11-15 00:54:58 445

原创 深入理解 Java Map:核心方法、实现对比与选型指南

摘要:Java中的Map接口用于存储键值对数据,具有键唯一、值可重复的特性。主要实现类包括:基于哈希表的HashMap(无序高效)、维护顺序的LinkedHashMap、基于红黑树的TreeMap(自动排序),以及线程安全的ConcurrentHashMap。Map提供了put、get、remove等核心方法,支持通过entrySet()、keySet()等方式遍历。选择Map实现时,应根据排序需求、线程安全等因素合理选用。

2025-11-15 00:54:27 939

原创 Java 线程安全 Set 全面解析:从 synchronizedSet 到 ConcurrentHashMap

Java集合中的Set在多线程环境下存在线程安全问题。文章介绍了三种线程安全的Set实现方案:1)使用Collections.synchronizedSet()包装原Set,适合低并发场景但性能较差;2)CopyOnWriteArraySet基于写时复制技术,读取性能高但写入开销大,适合读多写少场景;3)ConcurrentHashMap.newKeySet()利用并发哈希表实现,平衡读写性能,适合高并发环境。开发者应根据具体场景(如数据一致性要求、读写比例)选择合适的线程安全Set实现。

2025-11-14 19:36:07 1176

原创 HashSet、LinkedHashSet 和 TreeSet的底层原理

本文分析了Java中HashSet、LinkedHashSet和TreeSet三种Set实现的底层原理。HashSet基于HashMap实现,使用哈希表存储元素,具有无序特性,操作时间复杂度为O(1)。LinkedHashSet继承HashSet但使用LinkedHashMap,通过双向链表维护插入顺序,适合需要保持顺序的场景。TreeSet基于TreeMap实现,采用红黑树结构,元素自动排序并提供范围查询功能,操作时间复杂度为O(logn)。

2025-11-14 19:31:01 768

原创 HashMap、LinkedHashMap 和 TreeMap 的底层原理

本文对比分析了HashMap、LinkedHashMap和TreeMap的核心原理。HashMap采用数组+链表/红黑树结构,无序但查询高效(O(1));LinkedHashMap通过双向链表维护插入/访问顺序,适合LRU缓存;TreeMap基于红黑树实现,保证键值有序(O(logn)),支持范围查询。三者各有优势:HashMap通用高效,LinkedHashMap适合有序场景,TreeMap适用于排序和范围查询。选择时需权衡排序需求、性能表现和内存占用。

2025-11-13 18:38:53 819

原创 Java Map 接口方法详解

摘要:本文详细介绍了Java中Map接口的主要操作方法,包括基本操作(put/get/remove等)、批量操作(putAll)、视图方法(keySet/values/entrySet)以及Java8新增的默认方法(getOrDefault/merge/compute等)。重点讲解了compute、computeIfAbsent、computeIfPresent和merge等函数式方法的使用场景,如词频统计、分组收集和缓存实现,并对比了这些方法在不同情况下的行为特点。

2025-11-13 16:40:56 251

空空如也

空空如也

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

TA关注的人

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