-
final修饰变量仅保证引用不可变,对象内部仍可变;修饰方法禁止重写但允许重载;修饰类禁止继承且所有方法隐式final;它是不可变设计的必要非充分条件。226 收藏 -
Java的垃圾回收通过标记-清除、复制、标记-整理算法实现自动内存管理,分代回收结合三者优势,提升性能。225 收藏 -
静态代码块先执行,顺序为:静态代码块→实例代码块→构造函数;静态代码块属类级别、类加载时执行一次,实例代码块属对象级别、每次new时在构造函数前执行。223 收藏 -
本文详解如何在Java考勤程序中,自动按当天日期(如attendance_2024-10-25.txt)创建并写入考勤数据,涵盖路径构造、文件写入、异常处理及代码优化建议。222 收藏 -
同步机制的本质是“互斥+内存可见性保障”,通过加锁清空本地缓存、解锁强制刷回主内存来保障可见性、原子性和有序性;synchronized锁对象分别是this、Class对象或指定obj;ReentrantLock需在finally中显式unlock;锁升级由MarkWord状态动态控制,含偏向锁、轻量级锁和重量级锁。218 收藏 -
本文详解如何使用AndroidMediaPlayer实现单音频循环播放,并扩展支持指定目录(如Download文件夹)中所有MP3文件的遍历与自动循环播放,涵盖数据源设置、异步准备、状态管理及常见坑点。212 收藏 -
通过灵活配置JAVA_HOME和PATH环境变量,可在Java开发中实现多JDK共存与快速切换。1.将不同JDK版本安装至独立目录;2.设置JAVA_HOME指向当前使用版本,便于统一管理;3.PATH中引用%JAVA_HOME%\bin,避免路径冲突;4.编写批处理或shell脚本实现命令行快速切换;5.在IDE中为项目单独配置JDK,脱离系统变量依赖。核心是将JAVA_HOME作为动态指针,结合脚本与IDE设置,高效管理JDK版本。209 收藏 -
本文介绍如何为不依赖validatedBy的组合式自定义验证注解(如@ValidChars)编写有效的JUnit测试,重点利用BeanValidationAPI对注解的实际约束行为进行端到端验证。209 收藏 -
Java全局参数管理核心是解耦配置与代码,需统一抽象为含key、defaultValue、value(volatile)、desc及监听器的结构,推荐轻量容器+配置加载或SpringBoot的@ConfigurationProperties方案。208 收藏 -
Collections.synchronizedList可将普通列表转为线程安全列表,但迭代时需手动同步,适用于读多写少场景,性能较低,高并发下建议根据读写比例选择CopyOnWriteArrayList等更高效结构。207 收藏 -
TimeUnit.convert返回0或结果错误本质是整数截断:底层用Math.floorDiv或整除丢弃小数,如999毫秒转秒得0;需按需选用Duration保留精度或手动换算。205 收藏 -
LongAdder在高并发频繁更新时比AtomicLong快,因其采用分段计数减少CAS自旋争抢;适用于监控计数等弱一致性场景,不适用于强一致序列号生成。204 收藏 -
javac用于编译.java文件为.class字节码,java用于运行编译后的类。2.编译使用javac命令生成class文件,运行使用java命令启动JVM执行主类。3.需注意类名与文件名一致、正确设置类路径及包结构下的运行方式。203 收藏 -
Java只有值传递,参数均为副本:基本类型传值拷贝,对象类型传引用地址拷贝;String因不可变性使赋值无效,而ArrayList等可变对象可通过引用副本修改内容。203 收藏 -
线程池配置需匹配任务特征:过小导致排队延迟,过大引发OOM和上下文切换;应选有界队列、合理设core/maxPoolSize,避免无界队列,优先静态配置并结合监控调优。203 收藏