-
DateTimeFormatter线程安全且不可变,应避免SimpleDateFormat思维;优先用ISO预定义常量,自定义pattern需严守大小写与数量规则;解析须匹配具体类型,格式化前需手动处理时区。
-
必须显式关闭InputStream以释放文件描述符,推荐用try-with-resources自动关闭;若手动关闭,须在finally中判空处理;包装流只需关外层,关闭顺序错误或重复关闭易引发资源管理问题。
-
for循环适用于已知循环次数的场景,其语法为for(初始化;条件;更新){执行语句},如打印1到5:for(inti=1;i<=5;i++)System.out.println(i);
-
Thread.join能阻塞主线程是因为它使当前线程进入WAITING状态,依赖JVM底层通知机制等待目标线程终止;必须在start()后调用,否则立即返回;支持超时等待和中断响应。
-
Java为基本类型提供包装类以支持面向对象操作,8种基本类型均有对应包装类,如int对应Integer;通过valueOf()方法可装箱,推荐于构造函数;Java5起支持自动装箱拆箱,如Integera=100和intb=a;包装类常用方法包括parseXxx()、toString()及常量;适用于集合与泛型,但需注意性能与空指针风险。
-
推荐使用SpringBoot启动新项目,因其自动装配可规避80%配置错误;访问start.spring.io选SpringBoot3.x(JDK17+),勾选SpringWeb和Lombok,用@RestController+@GetMapping编写最简接口验证环境,避免手动引入spring-framework低版本依赖。
-
用ArrayList实现内存版CRUD适合初学者练手,但不可上线:数据随JVM退出丢失,多线程不安全;建议定义User类并手动管理id、重写equals/hashCode;增删改查需注意空值、并发和索引越界。
-
JVM通过热点探测(方法调用计数器和回边计数器)触发JIT分层编译:先C1编译基础优化,再C2编译激进优化;内联受字节码长度、虚方法特性等约束;去优化机制保障正确性但影响性能。
-
Java权限拦截器核心是实现HandlerInterceptor接口,在preHandle中校验用户身份、路径与权限匹配,不通过则返回false并设403;需通过WebMvcConfigurer注册,排除登录等路径,并注意静态资源、CORS及拦截顺序。
-
try-with-resources仅对AutoCloseable对象生效,非标准流(如Files.lines)需显式关闭,重复close或忽略suppressed异常会导致资源泄漏或错误掩盖。
-
新建JSP文件编码不生效需先设项目默认编码为UTF-8并勾选Overrideencoding;pageEncoding决定文件读取编码,contentType决定响应头声明,二者须统一为UTF-8;模板、文件、Tomcat配置及work目录均需同步更新。
-
Java的System类不能直接加载非JNI兼容的DLL;必须使用按JNI规范编写的、导出Java_类名_方法名函数的DLL,再通过System.load()(绝对路径)或System.loadLibrary()(需配置java.library.path)加载。
-
真正安全高效的做法是采用流式写入,即边生成数据边写入输出流,不将整个工作簿加载进内存;EasyExcel支持无模板、无缓存、纯流式导出,配合分页查询与直接响应输出流实现百万级Excel稳定导出。
-
用ArrayList(set)构造函数转Set最快最直接,时间复杂度O(n),避免手动遍历、Stream或Arrays.asList等低效方式,注意null和代理集合等边界问题。
-
BCryptPasswordEncoder默认强度为10,但高并发下易致CPU飙升,推荐显式指定strength=11;必须用matches()比对密码,严禁字符串直接比较;SpringBoot3需显式配置PasswordEncoderBean,且密码长度不得超过72字节。