#Code

在Java中我们常常会设计到多线程并发的问题,如有一个Money类,里面有一个方法为addMoney,当我们需要需要对这个分发并发的时候,就会出现线程安全问题。对此,我们的解决方案一般有两个,加锁...

寻找源码 首先我们从@Transactional注解出发。 查看引用,可以看到有个名叫SpringTransactionAnnotationParser的类比较可疑,根据名字理解,作用就是用...

以前一直听八股文说Spring的AOP是基于动态代理实现的。所以这里分析一下SpringAOP的源码。 注:本文基于SB 2.4.3版本进行分析,其他版本可能代码会有所出入。同时,由于JDK动态代理...

在Java中,我们经常会使用AOP来记录日志,这也是AOP一个比较经典的使用场景。但是问题是,如果我们需要支持动态的记录日志(比如SpEl)来记录日志,这样就需要对切面进行改造了。 在美团技术团队的...

在使用Graalvm打包一个项目,在运行的时候出现了如下的报错: Exception in thread "main" java.lang.ExceptionInInitial...

在Java中,我们常常使用-Xms、-Xmn、-Xmx来指定运行时的堆内存的占用。然而当我们通过top命令去查看当前程序内存占用情况的时候,经常会发现实际占用的内存远远的大于我们指定的内存。 ...

项目中经常使用的验证码。 通常我们校验验证码的时候会结合缓存(Redis或本地)来实现,为一个验证码唯一绑定一个UUID然后将验证码和UUID传送给前端,然后将UUID作为key,验证码的值作为va...

最近准备和朋友搞一个小项目,需要用到Jenkins来做部署,这里记录一个Jenkins的配置。Jenkins官方文档 由于方便起见,这里我使用War包下载。官网的war包下载比较慢,这里使用清华的源...

在业务代码中,经常会写策略调度器,还有自动注入策略的方法。极大的降低了开发的效率。所以用Java的反射功能来实现一个策略模式的工具类。 代码 定义一个策略接口。 package cn.gloduc...

在实际开发中,我们可能会需要使用到注解来给我们的方法注入一些参数值,比如从token中获取某些参数然后注入到controller中的方法中。但是由于SpringAOP无法支持对参数上的注解进行拦截所...

��