背景 正常情况下 Java 的反射是可以获取到普通的泛型类型的,例如假设存在基类 @Data public static class Page<T> { private List<T> data; private List<String> ids; } 此时直接执行 FieldUtil
阅读全文标签: JDK
Java 基于 ByteBuddy 重写系统当前时间
背景 一般单元测试时总会有些代码会严重依赖系统当前时间,这种情况下的测试代码写起来可能就比较费劲,此处分享一种基于 ByteBuddy 的覆盖 System.currentTimeMillis 的解决方案。 添加依赖 ByteBuddy 是啥以及作用
阅读全文JSR269 编译期处理常用操作
基础变量 后面有些凭空出现的变量可以从这找类型和获取方式: JavacTrees trees = JavacTrees.instance(processingEnv); Context context = ((JavacProcessingEnvironment)processingEnv).getContext(); TreeMaker t
阅读全文从头开始一个 JSR269 工程
修改 pom.xml 添加依赖 sun.tools: <dependency> <groupId>com.sun.tools</groupId> <artifactId>com.sun.tools</artifactId> <version>1.6</version> </dependency&
阅读全文关于 MetaSpace 及 FastJSON 导致的 OOM
在 JDK8 之前,虚拟机内存主要分为堆和非堆两部分,堆中划分新生代老生代,非堆中包含所有非对象信息和运行时信息,其中有一块叫 PermGen,用以保存字节码等类信息。在 JDK8 中取消了这块内存,并添加了 MetaSpace 替代所有功能。
阅读全文基于 ByteBuddy 运行时动态修改字节码
简介 Byte Buddy 是一个字节码生成与操作库。它无需编译器,能够在Java程序运行时创建与修改 class 文件。 目标 已有类文件: public static class Log { public static void log(String a) { System.out.println(“L
阅读全文JVM 类加载器应用之多版本库支持
问题 开发过程中,咱们经常需要使用不同的库版本,而这些版本又不是向后兼容的,或者出于某种原因需要支持同一库的多个版本。 在这种情况下,默认的类加载器已经是不支持了,因为 loadClass 方法只加载一次特定的类
阅读全文SNI 兼容性导致 HTTPS 访问异常
直接贴日志吧,发现有台机器访问 https 就会有以下异常: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching wos.58cdn.com.cn found. at
阅读全文关于 java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
Java SE5扩展了反射机制的API,Class 中出现了 getAnnotation(Class<a> annotationClass) 方法,该方法可以帮助程序员快速的构造自定义注解处理器。文档中对该方法的注释为: 返回改程序元素上存在的、指定类型
阅读全文