Java
文章平均质量分 69
Java
cab5
种一棵树最好的时间是十年前,其次是现在...
展开
-
如何实现功能插件化
在整个插件化的方案中,会涉及到如下 3 个组成部分:插件定义(即将插件定义为一个接口)插件实现(即对插件接口的实现)和,实现了不同的扣款策略。支持插件插拔的平台(因为不知道叫啥,姑且先叫「主项目」吧)原创 2023-06-29 15:31:32 · 1403 阅读 · 0 评论 -
JVM HotSpot 之 内存结构演进过程
这样就造成了各个 JVM 厂家,对自家的 JVM 中的。又分为三个部分,Eden、From Survivor、To Survivor,他们占据新生代空间的比例为 8:1:1(可调节)。在 1.8 中,内存结构主要由三大块组成:堆内存、元空间、栈。是 HotSpot 的专属概念,例如: JRockit(Oracle)、J9(IBM) 中就没有。通过上边表格我们可以看出来,1.6、1.7、1.8 这三个版本,变化最大的是。不同的 JVM 版本,方法区中存储的数据略有不同(详见上图)。类似(接口 = 方法区;..原创 2022-08-25 18:43:32 · 377 阅读 · 0 评论 -
Junit4 之 assertThat
assertThat 是Hamcrest单元测试框架提供的方法。Hamcrest提供了对多种语言的支持。原创 2022-08-18 09:40:21 · 1410 阅读 · 3 评论 -
单元测试编写规范
为了统一司内的单元测试编写风格,且让大家无需考虑不重要的事情(无脑按着条条框框执行就好了),专注于写单元测试。基于司内的具体情况,制定了一套简单的《单元测试编写规范》,在这里进行分享,希望能给大家提供一些思路。........................原创 2022-08-05 09:50:32 · 1865 阅读 · 0 评论 -
Java 诊断工具之 Arthas
Arthas 是 Alibaba 开源的 Java 诊断工具。Ta 可以动态跟踪 Java 代码,实时监控 JVM 状态,可以在不中断程序执行的情况下轻松完成 JVM 相关问题排查工作。支持 JDK 6+,支持 Linux/Mac/Windows。原创 2022-08-04 13:47:29 · 614 阅读 · 0 评论 -
int 整数相乘溢出的问题
int 整数相乘溢出问题原创 2022-06-27 14:08:20 · 4118 阅读 · 0 评论 -
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException, message: Unrecognized 的解决办法
最近在将 fastjson 用 jackson 进行替换的过程当中,出现了 “com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException, message: Unrecognized” 的问题。该问题出现的原因是由于 JSON 里面包含了实体没有的字段而导致了反序列化的失败,如下图:如果我们把 content 中的 gender 字段去掉,就能正常运行了,如下图:这里有两个解决方案,如下:将 ObjectMapper 的 Deseria原创 2022-06-22 15:10:05 · 3424 阅读 · 0 评论 -
如何使用自定义注解进行参数校验
背景在日常的开发工作过程中,我们用的比较多的参数校验注解有 @NotBlank、@NotBlank、@NotEmpty、@Min、@Max 等等。这些注解只实现了一些基本校验,但是实际工作当中有很多参数的校验要比这个复杂的多(例如:校验输入参数是否符合身份证的规则)。当我们面对这些复杂校验的时候,这些基本的注解就无能为力了。通常的解决方案如果工作中真遇到上述的情况,我们该怎么办呢?通常的做法是将复杂的校验逻辑写在业务代码中,如下:public class AccountController {原创 2022-04-22 15:40:09 · 1575 阅读 · 2 评论 -
采用 Map+Function 重构我们的 if-else
大家应该都有过写 if-else 的经历。如果遇到判断条件较多的情况,那代码可能就会很长了,影响了可读性,不方便修改,可维护性也差。如果要进一步优化的话,我们可以采用策略模式来进行重构。虽然策略模式在一定程度上提升了可维护性。但是,也有弊端,那就是需要写更多的类。除了策略模式以外,还可以采用什么方案能对 if-else 进行优化呢?下面,向大家隆重推荐 Map + Function 的方式。if-else 方式首选,先让我们看下最初使用 if-else 是个啥样,如下: public voi原创 2022-02-09 10:22:28 · 905 阅读 · 0 评论 -
JAVA中的检查型异常和非检查型异常
检查型异常(Checked Exception)Exception 下除了 RuntimeException 外的异常。这种异常,JAVA 编译器强制要求我们必需在它们出现的时候进行 catch 并处理,否则程序就无法编译通过。非检查型异常(Unchecked Exception)RuntimeException 及其子类和错误(Error)...原创 2021-06-17 16:09:09 · 536 阅读 · 0 评论 -
Java 动态代理
Java 动态代理是啥?利用 Java 的反射机制创建代理类,核心是一个接口、一个类,如下:java.lang.reflect.InvocationHandler 接口被代理对象方法的调用处理器,通过该方法可以对被代理对象的方法进行扩展,例如:执行前或执行后增加一些处理逻辑等等。java.lang.reflect.Proxy 类通过该类创建对象的代理类如何实现动态代理?1、被代理的接口A.java/** * @Author: eric * @Date: 2020/8/24原创 2020-08-24 16:04:14 · 132 阅读 · 0 评论 -
用 Optional 改造一段 if 代码
最近,在排查问题的过程中,针对之前写的一段儿 if 逻辑判断,用 Optional 的进行了重构。改造前public class TestOrderGroupSequenceProvider implements DefaultGroupSequenceProvider<TestOrderDto> { @Override public List<Class<?>> getValidationGroups(TestOrderDto testOrderDt原创 2020-08-12 09:14:39 · 724 阅读 · 0 评论 -
使用 AutoCloseable 替代 try-catch-finally 关闭资源
由于 jdk1.7 中的 AutoCloseable 接口的出现,使我们面对资源关闭的时候有了更加优雅的处理方式。首先,先让我们来看看 jdk1.7 之前我们是如何关闭资源的,代码如下:/** * @Author: eric * @Date: 2020/6/30 10:04 * @Description: jdk1.7之前关闭流的方式 */public class CloseResourceBefore7 { public static void main(String[] args)原创 2020-06-30 10:26:59 · 542 阅读 · 1 评论 -
来说说 Java Volatile 关键字
简介在并发编程中 Volatile 是一个很重要的关键词,那 Ta 到底是个什么个啥玩意呢?The Java volatile keyword is used to mark a Java variable as “beingstored in main memory”. More precisely that means, that every read ofa volatile variable will be read from the computer’s main memory, and原创 2020-05-09 17:03:07 · 173 阅读 · 0 评论 -
Class.forName 和 ClassLoader 加载类的区别
简单的说,ClassLoader 只是将类加载到了JVM 当中,而 Class.forName() 在加载类的同时还对类进了初始化,在对类进行初始化的过程中会执行类中的静态代码块,以及对静态变量的赋值等操作。下面,通过 Class.forName() 的代码再进一步说明下:@CallerSensitivepublic static Class<?> forName(String className) throws ClassNotFoundException {原创 2020-05-15 11:24:09 · 421 阅读 · 0 评论
分享