JVM-08: 本地方法栈与 JNI:Java 之外的那半边
上一篇讲虚拟机栈,留了个尾巴:本地方法栈。当时说它跟虚拟机栈是兄弟俩,一个管 Java 方法,一个管 native 方法。这一篇就把这个尾巴补上。native 方法是个很有意思的东西:方法声明里写着 native,却没有方法体。字节码里只有一张欠条,真正的实现在别的语言写的库里。
JAVA反射机制详解,一学就会
类名.class 不触发初始化,Class.forName 会触发静态初始化,loadClass 传 false 时不连接也不初始化。四种方式拿到的 Class 对象 equals 都是 true,因为一个类在 JVM 里只有一个 Class 实例。
22-SpringBoot部分-拦截器与过滤器
教学目标维度目标描述知识目标理解Filter和Interceptor的区别与适用场景;掌握HandlerInterceptor接口的三大方法;掌握拦截路径的配置方式;理解AOP在实际开发中的应用价值技能目标能够实现登录校验拦截器;能够实现请求日志记录;能够配置拦截/排除路径素养目
上百个参数怎么测?Java 反射帮你写工具
做 SDK 测试的同学大概率遇到过:一个接口有上百个入参,每个参数都要测必填校验、长度边界、类型校验。手工写用例,一个接口就要敲一天。这时候与其死磕手工,不如花半天写个测试工具 —— 而工具的核心,就是 Java 反射。
SpringBoot 执行管道实战:500行大方法拆成节点链
SpringBoot 执行管道实战:500行大方法拆成节点链一个商品上架接口,第一版只有 80 行:校验类目、校验价格、保存商品。半年后我再看它,已经 500 多行了。敏感词检查加进来了,定价规则校验加进来了,AI 生成商品详情加进来了,搜索索引同步加进来了,商家通知也加进来了。
提问:为什么 Spring 的 HttpMethod 定义由 enum 改成了 class
回答Arjen Poutsma 在演讲《A Long Spring: 19 Years of Living with Your Past Mistakes》中也提到过这个事情,他将其称之为 Five Years to Fix a Mistake。
告别N+1:Spring Boot 一键数据翻译框架体系
接口只返回 ID、前端却要展示名称时,最优雅的做法是在 DTO 字段上加一个 @AutoTrans 注解,让框架在响应序列化之前统一完成"收集 ID → 去重批量查询 → 回填名称",既不用 SQL 联表,也不用手写回填,还能根治 N+1 查询。
再聊一个 Java 惯例:名词给对象,动词给方法
前两篇分别聊了区间为什么爱写成左闭右开、判空为什么优先用 isEmpty()。这两个惯例背后是同一条原则:用约定俗成的形式,让读代码的人少想一步。顺着这个思路,再说一个 Java 里几乎人人都在用、却很少有人细想其背后原因的惯例:给对象起名时用名词,给方法起名时用动词。
Spring Boot 用了 Lombok,为什么编译时还提示找不到 get 方法?
类上加了 @Getter,IDEA 里也能补全。结果一执行 Maven 编译:cannot find symbol symbol: method getName()先确认两件事:编译时有没有执行 Lombok,以及这个字段生成的方法到底叫什么。1.