-
通过配置别名或使用jEnv实现MacOS下多JDK版本快速切换,提升Java开发效率。
-
本文介绍在IntelliJIDEA(社区版)中恢复反编译类(如PrintStream.class)JavaDoc显示的完整配置方法,核心是正确关联JDK源码包src.zip到项目源路径。
-
java.util.concurrent包的核心定位是提供可组合、线程安全、有明确语义的并发构建块,而非synchronized或wait/notify的语法糖;典型工具如ArrayBlockingQueue、ForkJoinPool等直接解决生产者-消费者、任务分治等场景。
-
Collectors.groupingBy可用于分组统计,如按部门统计员工数量:Map<String,Long>countByDept=employees.stream().collect(Collectors.groupingBy(Employee::getDepartment,Collectors.counting()));
-
本文介绍使用Lombok的@EqualsAndHashCode注解,为含嵌套对象的DTO生成一致性哈希值,支持通过@EqualsAndHashCode.Exclude精确排除ID、版本等非业务字段,适用于数据库持久化场景。
-
类加载和对象初始化顺序为:先父类静态→子类静态→父类实例→父类构造→子类实例→子类构造,静态内容仅首次加载执行,实例部分每次new时执行。
-
应有选择地截断异常链以保留业务栈帧并维护cause关系:识别并跳过java.、sun.、spring、servlet等无意义栈帧,从首个业务包(如com.yourcompany.*)起向上保留;递归裁剪整条异常链,用构造函数传递裁剪后的cause;白名单配置+兜底策略确保鲁棒性;日志前统一处理,禁用丢弃cause的重抛。
-
优先选OpenJDK,Kali默认仅提供openjdk-17-jdk和openjdk-11-jdk;需手动设JAVA_HOME到JDK根目录(如/usr/lib/jvm/java-17-openjdk-amd64),写入~/.bashrc并source生效,避免工具因环境变量失效而启动失败。
-
Java中int变量可用十六进制字面量声明,以0x或0X开头,如intx=0xFF;(值为255),其本质仍是十进制存储,仅书写形式不同,适用于位操作、颜色值等场景。
-
掌握IntelliJIDEA的LiveTemplates和FileTemplates配置,可提升Java开发效率。通过设置代码片段快捷生成常用结构(如sout、log),并统一文件模板中的包名、作者、日期等信息,实现团队编码规范一致;支持导出导入模板配置,便于新成员快速接入,减少重复劳动,聚焦业务逻辑。
-
DuplicateKeyException实际由数据库驱动抛出,MyBatis仅做包装;Spring通过异常翻译器将其统一转换,需确保spring-jdbc在classpath且配置了DataSourceTransactionManager。
-
Arrays.asList()返回的是Arrays的私有静态内部类(非java.util.ArrayList),底层直接引用原数组,仅支持get/set操作;add、remove、clear等结构修改方法继承自AbstractList默认实现,直接抛出UnsupportedOperationException。
-
Field.getType()返回字段声明时的原始类型(如List.class),不包含泛型信息,也不反映运行时实际对象类型;需用getGenericType()获取泛型参数,用value.getClass()获取运行时类型。
-
Collections.unmodifiableXXX方法返回集合的只读视图,通过装饰器模式拦截修改操作,真正不可变需确保原始集合不被外部修改,推荐在构造时复制数据并封装为不可变视图。
-
链式调用需每个方法显式返回this:因JS默认返回undefined,中断链;箭头函数无独立this,不可用于链式方法;返回新实例或异步操作均非真链式。