-
查单条且必须存在时用selectOne,否则优先用selectList;输入统一用nextLine()再转类型;UPDATE/DELETE必须检查WHERE条件和参数名;tinyint(1)映射Boolean需配typeHandler或用Integer判断。
-
Java类加载是按需触发的懒加载过程,由ClassLoader.loadClass()驱动并默认遵循双亲委派模型;仅在首次主动使用(如new、访问静态字段、Class.forName等)时触发,且loadClass()不负责链接和初始化,而Class.forName默认会初始化。
-
能,Java8+接口中可定义static方法,属于接口本身、不被实现类继承,调用需通过接口名(如MyInterface.method()),泛型需显式声明,且仅适用于与接口语义强相关的核心工具逻辑。
-
Java中String真的按值传递吗?不是“像”,而是它根本就是按值传递——所有Java对象都如此。所谓“String表现像值传递”,其实是误读了String的不可变性(immutability)和引用变量的赋值行为。当你写str1=str2,复制的是引用值(即堆中对象地址的副本),不是对象本身;但因为String方法(如substring、toUpperCase)从不修改原对象,而是返回新对象,所以看起来“原变量没变”。常见错误现象:为什么修改str后另一个引用没跟着变?典型场景是误以为St
-
Thread.join能阻塞主线程是因为它使当前线程进入WAITING状态,依赖JVM底层通知机制等待目标线程终止;必须在start()后调用,否则立即返回;支持超时等待和中断响应。
-
StringRedisTemplate.opsForValue()存不进数据最常见原因是未调用set()或连接/配置错误;set()是同步的,需检查Redis连通性、序列化器(应使用StringRedisSerializer)、键过期设置及是否误用RedisTemplate。
-
ByteBuffer写完后读不到数据是因为未调用flip():写模式下position停在末尾、limit=capacity,flip()将position设为新limit并归零position,使读操作覆盖已写区域。
-
Java依赖管理核心是用Maven或Gradle自动下载和组织第三方库,避免手动拷贝;Maven适合初学者和传统项目,Gradle更灵活高效;通过pom.xml声明依赖、dependency:tree分析冲突、dependencyManagement统一版本。
-
LocalDateTime.now()返回JVM所在主机的本地日期时间快照,无时区信息,精度通常为毫秒级,非实时高精度时钟;需精准时间应使用Instant.now()。
-
import语句必须写在模块顶层,不可缩进或嵌套;应统一置于文件最上方(__future__之后),延迟加载用importlib.import_module();优先用importxxx而非fromxxximportyyy以避免命名污染。
-
非受检异常应以预防为主、精准响应、合理封装,多数情况下不建议业务层随意捕获;需通过主动校验、自定义业务异常、全局日志监控等手段提升健壮性。
-
本文介绍如何在SpringBoot+JPA项目中安全、幂等地初始化数据库基础数据,防止因CommandLineRunner每次启动重复执行导致的数据冗余,同时支持实体关系映射,无需硬编码SQL。
-
构造方法的核心作用是为新创建的对象设置初始状态,确保对象在使用前具备合法、可用的数据和行为基础;它不负责内存分配,而是对JVM已分配的内存进行初始化,包括赋初值、校验参数、预加载资源等,并支持重载以适配不同初始化需求。
-
必须手动移除SelectionKey,因为selectedKeys()是复用且不自动清理的集合;需在迭代中调用iter.remove()或key.cancel(),否则会导致重复事件、CPU飙升和连接异常。
-
WeakHashMap使用弱引用保存键,当键无外部强引用时可被GC回收,适用于缓存等易导致内存泄漏的场景。其值仍为强引用,需注意避免反向引用造成泄漏。与HashMap类似,但性能略低,因每次访问可能触发无效Entry清理。常用于GUI组件映射、附加元数据、弱监听器等场景,是标准库中开箱即用的弱引用Map实现。