自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 OpenRewrite框架原理解析

本文主要对OpenRewrite框架设计和原理进行解析,分析OpenRewrite框架中是如何运用访问者模式进行架构设计的,然后进一步分析访问逻辑的具体执行过程,以便更清楚的掌握OpenRewrite内部执行机理,拨开云雾见月明,进而更好的指导OpenRewrite开发实践。

2024-03-21 23:53:28 1032

原创 OpenRewrite:实现一个简单的配方(Recipe)

本文在前面文章理解OpenRewrite的基础之上,通过实现一个简单的配方(Recipe),能够更直观的熟悉OpenRewrite的开发流程,同时起到很好的带入作用,能够更快的上手实践。下面以配方SayHelloRecipe如何针对目标类添加一个hello()方法进行举例说明;

2024-03-15 14:40:46 1321

原创 大规模自动化重构框架--OpenRewrite浅析

OpenRewrite是一个用于大规模自动化代码重构的框架,通过帮助开发人员自动化地进行代码重构和转换,大大提升了研发效率。本文主要对OpenRewrite进行简要介绍,更详尽的说明可以参加OpenRewrite官网。

2024-03-12 15:58:21 2552

原创 Shiro框架:Shiro用户访问控制鉴权流程-Aop注解方式源码解析

Shiro作为一款比较流行的登录认证、访问控制安全框架,被广泛应用在程序员社区;Shiro登录验证、访问控制、Session管理等流程内部都是委托给SecurityManager安全管理器来完成的,SecurityManager安全管理器前面文章已经进行了详细解析;在此基础上,前面文章已对Shiro用户登录认证流程进行了源码跟踪,对Shiro用户访问控制鉴权流程-内置过滤器方式进行了详细解析;本篇文章继续对用户访问控制鉴权流程-Aop注解方式进行源码解析,了解不同的使用方式以便更好的应用到实际项目中。

2024-01-20 19:24:38 1019

原创 Shiro框架:Shiro用户访问控制鉴权流程-内置过滤器方式源码解析

​Shiro作为一款比较流行的登录认证、访问控制安全框架,被广泛应用在程序员社区;Shiro登录验证、访问控制、Session管理等流程内部都是委托给SecurityManager安全管理器来完成的,SecurityManager安全管理器前面文章已经进行了详细解析;在此基础上,上篇文章已对Shiro用户登录认证流程进行了源码跟踪,本篇文章继续对下一个核心流程---用户访问控制鉴权流程进行源码解析;

2024-01-18 00:34:28 1659

原创 Shiro框架:Shiro用户登录认证流程源码解析

​Shiro作为一款比较流行的登录认证、访问控制安全框架,被广泛应用在程序员社区;Shiro登录认证、访问控制、Session管理等流程内部都是委托给SecurityManager安全管理器来完成的,SecurityManager安全管理器上篇文章已经进行了详细解析,详见:Shiro框架:Shiro SecurityManager安全管理器解析-CSDN博客,在此基础上,本篇文章继续对Shiro关联链路处理流程之一---登录认证流程进行解析;

2024-01-14 18:14:31 1760

原创 Shiro框架:Shiro SecurityManager安全管理器解析

​Shiro作为一款比较流行的登录认证、访问控制安全框架,被广泛应用在程序员社区;Shiro登录验证、访问控制、Session管理等流程内部都是委托给SecurityManager安全管理器来完成的,在前述文章全面解析Shiro框架原理的基础之上,详见:Shiro框架:ShiroFilterFactoryBean过滤器源码解析-CSDN博客、Shiro框架:Shiro内置过滤器源码解析-CSDN博客,本篇文章继续深入解析Shiro SecurityManager安全管理器的结构和功能。

2024-01-13 17:22:58 1813

原创 Shiro框架:Shiro内置过滤器源码解析

Shiro框架作为登录鉴权安全模块一款较为流行的开源框架,通过简单的配置即可完成登录鉴权配置,其中离不开Shiro较为丰富、且简单易用的内置过滤器,本文主要对Shiro多种内置过滤器进行源码解析,方便更好的深入透析其执行原理;

2024-01-12 16:22:50 1264

原创 Shiro框架:ShiroFilterFactoryBean过滤器源码解析

Shiro框架通过添加Servlet Filter的方式,提供了登录验证(Authentication)、访问控制(Authorization)以及Session管理等功能,极大的简化了Spring项目中登录鉴权模块的开发工作。下面通过ShiroFilterFactoryBean作为切入点,详细分析下Shiro自定义拦截器SpringShiroFilter的处理流程;并通过源码解析,跟踪SpringShiroFilter是如何添加到Servlet Filter中的。

2024-01-08 23:50:21 2201 2

原创 cola架构:cola源码中访问者模式应用浅析

访问者(Visitor)模式:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。访问者模式包含的类/接口如下:抽象访问者(Visitor):定义一个访问具体元素的接口,为每个具体元素类对应一个访问操作 visit() ,该操作中的参数类型标识了被访问的具体元素。具体访问者(ConcreteVisitor):实现抽象访问者角色中声明的各个访问操作,确定访问者访问一个元素时该做什么。

2023-10-25 20:08:20 1033

原创 cola架构:有限状态机(FSM)源码分析

cola状态机采用无状态设计,不存储中间状态,重点关注状态之间的转移,这样的设计使得cola更加的简单、轻量、易于上手,在高并发多线程场景下应用单例模式可以实现更高的性能;上述cola状态机语义模型的源码就解析完成了,在实际使用时,需要将语义模型进行组合构造编排,这里是通过Builder模式来完成的,下面进行展开说明;至此,状态机实例、状态机包含的状态、状态关联的所有转移都构造完毕,后续就可以通过状态机的触发方法fireEvent完成状态转移了。

2023-10-25 12:33:03 1135

原创 EasyRule源码:工厂方法模式之规则创建源码分析

本文主要对EasyRule框架中应用的工厂方法模式---规则创建进行源码解析;

2023-10-21 15:12:09 422

原创 EasyRule源码:EasyRule框架源码分析

当下的规则引擎选择非常多,例如EasyRule、Aviator 、QLExpress、Drools、Zools等;1.【精选】Aviator源码:从具体实例看Aviator属性语法糖源码分析(a.b.c)2.Aviator源码:Aviator表达式引擎执行过程源码分析本篇对另一种常用的规则引擎框架EasyRule进行源码分析;

2023-10-19 19:50:29 450

原创 cola架构:一种扩展点的实现思路浅析

在实际项目中,我们经常使用策略模式、或者状态模式来隔离同一接口下不同的实现逻辑,进而消除代码中ifelse硬编码分支,使代码结构更清晰,也大大提升了代码可读性;同时也满足了“开闭原则”,具备更高的可扩展性;在cola架构中,给出了一种“扩展点”的思路,本质还是策略模式的实现方式,通过“扩展点注解”的组装方式将策略模式实现类注册到容器中,供后续场景逻辑决策使用;

2023-10-15 16:21:03 2015

原创 SpringEL:SpEL表达式文本转译

2.字段转译映射配置在Mysql数据库中(包括字段名称描述以及关联的字段枚举值描述)由上,通过对SpringEL表达式抽象语法树的遍历,完成对规则表达式的转译;1.操作符转译名称映射配置在配置中心上;

2023-10-10 17:21:10 364

原创 Spring源码:调度框架EnableScheduling&Scheduled源码解析

在实际项目开发中,有时会遇到定时调度的开发需要,这部分的功能在Spring框架中给出了较好的支持,即@EnableScheduling&Scheduled定时调度框架,本着不仅知其然还要知其所以然的指导思想,下面对该调度框架进行源码解析,以便更好的理解其执行过程;

2023-06-26 00:26:09 956

原创 JVM内存分析:Aviator低版本内存泄漏问题分析

本文通过实际线上项目中频繁FullGC告警的场景,利用MAT内存分析工具,重点分析Aviator低版本内存泄漏问题的排查过程,并深入分析Aviator框架源码深层次的实质根因,最后结合高版本的修复方案,解决内存泄漏问题;

2023-06-17 18:18:38 2248

原创 Aviator源码:Aviator表达式引擎执行过程源码分析

本文通过if语法的引导,着重分析了aviator源码执行过程,主要的技术点包括:asm字节码技术动态生成class、LambdaFunctionBootstrap构造和设计理念以及LambdaFunction函数的构造和设计理念等

2023-06-15 13:18:08 2239 2

原创 Idea借助Maven插件生成项目脚手架archetype

利用已有项目生成自定义项目脚手架,可以帮助我们快速的搭建新项目,节省很多配置新项目的时间;

2022-08-23 11:32:18 1182 1

原创 Guava Cache源码:从特性说起剖析Guava Cache源码实现

目录1.CacheBuilder1.1 缓存属性1.2 缓存构造1.2.1 LocalManualCache类1.2.2 LocalLoadingCache类2. LocalCache类2.1 LocalCache的构造2.1.1 EntryFactory工厂类2.1.2 Segment[] segments域字段,>2.1.3 Segment属性与构造函数2.2 LocalCache核心接口实现2.2.1 put流程2.2.2 get流程2.2

2022-03-26 12:49:05 1085

原创 Guava Cache源码:CacheBuilderSpec ValueParser分析

目录1.ValueParser顶层接口2.ValueParser继承结构3.ValueParser应用1.ValueParser顶层接口ValueParser顶层接口,定义解析key,value的方法,并设置到CacheBuilderSpec中: private interface ValueParser { void parse(CacheBuilderSpec spec, String key, @Nullable String value); }2.Valu

2022-03-22 12:13:09 257

原创 Alibaba TTL跨线程参数传递框架

目录1.功能2.使用方式3.扩展1.功能引用github的描述,https://github.com/alibaba/transmittable-thread-local在使用线程池等会池化复用线程的执行组件情况下,提供ThreadLocal值的传递功能,解决异步执行时上下文传递的问题。JDK的InheritableThreadLocal类可以完成父线程到子线程的值传递。但对于使用线程池等会池化复用线程的执行组件的情况,线程由线程池创建好,并且线程是池化起来反复使用的;这时父子

2021-08-13 15:49:11 4274

原创 Mybatis源码:Mybatis配置解析过程源码分析

目录0.伏笔1.SqlSessionFactory2.SqlSession3.SqlSessionFactoryBean0.伏笔本篇主要介绍下Application在启动的时候,mybatis配置文件的解析过程,Dao类以及mapper.xml和Sql注解的解析过程,总结来说就是Configuration配置类的构造解析过程;下面主要以项目中常见的SqlSessionFactory工厂类的典型构建过程为总体脉络来进行分析;@Beanpublic SqlSessionFa.

2021-08-13 15:36:23 287

原创 Mybatis源码:Mybatis一二级缓存源码分析

目录1.缓存的开启2.缓存的创建3.缓存执行逻辑1.缓存的开启缓存开启的设置可以在mybatis配置文件<Properties>中进行设置,默认是开启的;解析配置文件的代码如下:该cacheEnabled缓存开启的总开关,当cacheEnabled为true时,默认开启了一级缓存;二级缓存的开启需要在mapper.xml中设置<cache/>节点(也支持注解的方式),同时一级缓存是局部于SqlSession中的,SqlSession关闭就会回收;二级缓

2021-08-13 15:24:00 174

原创 Spring源码:Spring EL表达式源码分析

目录1.EL表达式处理过程1.1 根据EL表达式字符串构建抽象语法树(ast)1.2 构造标准评估上下文对象StandardEvaluationContext1.3 利用标准评估上下文对象StandardEvaluationContext解析EL表达式语法树2.Spring框架中如何使用到EL表达式3.应用EL表达式的条件注解@OnExpressionCondition1.EL表达式处理过程首先看一下EL表达式在代码中的使用方式:BeanExpressionContex

2021-08-05 15:19:18 1695

原创 Spring源码:占位符${}解析源码分析

PropertyPlaceholderConfigurerPlaceholderConfigurerSupportPropertyPlaceholderHelper

2021-08-04 20:14:46 1747

原创 Aviator源码:从具体实例看Aviator属性语法糖源码分析(a.b.c)

1.从测试入手直观看aviator特性a.b.c测试代码如下:public class BillingEngineTest extends TransactionalTestBase { @Test public void test() { Student student = new Student(); student.setName("张三"); student.setAge(20); student.setBir

2021-08-04 16:00:16 1737 1

原创 Mybatis Generator源码:批量插入mapper接口自动实现

目录0. 现实背景1. 方案调研1.1 自动添加mapper接口方法1.2 自动生成xml文件2. 方案实现2.1 批量插入插件BatchInsertPlugin实现2.2AdditionalXMLMapperGenerator Document生成器实现2.3BatchInsertElementGenerator 动态SQL生成0. 现实背景在项目开发...

2019-10-20 17:30:44 3186 1

原创 Mybatis Generator源码:Generator自动生成框架

目录0. 使用方法1. 配置文件定义2. Generator框架解析过程分析2.1 ConfigurationParser配置文件解析2.2 MyBatisGenerator自动生成过程分析我们都知道mybatis对于Dao接口中的方法具体实现方式有两种:一种是基于注解的方式 另一种是以及xml 动态SQL的方式其中基于xml实现的方式,自己手写麻烦复杂,很容易出问......

2019-10-20 16:24:20 1023

原创 Spring源码:@AliasFor JDK动态代理源码分析

目录0. 源码参见1.isSynthesizable判断是否需要被代理2.SynthesizedAnnotationInvocationHandler创建和执行逻辑2.1DefaultAnnotationAttributeExtractor2.1.1AbstractAliasAwareAnnotationAttributeExtractor构造函数2.1.2 接口方...

2019-08-18 14:51:49 909

原创 Spring源码:@EnableAsync与@Async源码分析

目录1. @EnableAsync开启异步化支持2.ProxyAsyncConfiguration异步代理配置类3. AsyncAnnotationBeanPostProcessor3.1BeanFactoryAware实现逻辑3.1.1 异步注解增强/拦截器AnnotationAsyncExecutionInterceptor的原理3.1.2 切点Annotation...

2019-08-13 01:19:44 4143 2

原创 Java Util:Zip批量下载&文件打包

在项目开发中,经常会遇到文件下载、导出的功能,导出文件格式包括.xls、.pdf等,对于单个的文件下载,只需要执行excel和pdf的导出即可;但有时会碰到多个excel或pdf文件的批量下载,且执行文件要压缩到一个文件中,这时就要用到Zip文件压缩的功能了;如下是自己封装的一个ZipFileUtil工具类,支持mvc模式下excel和pdf文件的ZIP文件打包和下载:...

2019-08-11 22:55:22 448

原创 Spring源码:@Configuration配置类解析过程

目录1.ConfigurationClassPostProcessor1.1ConfigurationClassPostProcessor的引入1.2ConfigurationClassPostProcessor的处理过程​2.ConfigurationClassUtils获取配置类candidate3. 配置解析类ConfigurationClassParser完成C...

2019-08-11 17:09:20 852

原创 Spring源码:Aop中@Aspect切面的解析代理过程

目录1. 再谈AnnotationAwareAspectJAutoProxyCreator自动代理创建类2.ReflectiveAspectJAdvisorFactory切面工厂类2.1ReflectiveAspectJAdvisorFactory创建Advisor的过程2.1.1InstantiationModelAwarePointcutAdvisorImpl的构造...

2019-08-11 00:34:59 1517

原创 Spring源码:@PropertySource源码解析

目录1.@PropertySource处理入口2.@PropertySource注解解析3. 构造ResourcePropertySource对象4.PropertySource配置加载到environment当中通常,我们在开发java spring项目时,会包含多套环境(profile),并且分别提供了不同环境下的属性文件(.properties),在引用属性文件时,...

2019-08-10 15:25:37 1909

原创 Spring源码:EnableConfigurationProperties源码分析

目录1.EnableConfigurationProperties2.EnableConfigurationPropertiesImportSelector2.1ConfigurationPropertiesBeanRegistrar2.2ConfigurationPropertiesBindingPostProcessorRegistrar3.Configurati...

2019-08-04 17:45:38 794

原创 Spring源码:声明式事务@Transactional源码分析--spring boot方式

目录1. TransactionAutoConfiguration2. @EnableTransactionManagement3.TransactionManagementConfigurationSelector3.1AutoProxyRegistrar3.2ProxyTransactionManagementConfiguration3.2.1ProxyTra...

2019-08-03 21:03:14 936

原创 Spring源码:声明式事务@Transactional源码分析--spring xml实现

目录0. 声明式事务的开启1.事务注解BeanDefinition解析器AnnotationDrivenBeanDefinitionParser1.1InfrastructureAdvisorAutoProxyCreator1.2 AnnotationTransactionAttributeSource1.3TransactionInterceptor1.4 BeanF...

2019-08-03 18:16:40 381

原创 Spring源码:Aop源码分析

目录1. AopAutoConfiguration自动配置2. EnableAspectJAutoProxy/AspectJAutoProxyRegistrar/AnnotationAwareAspectJAutoProxyCreator3. AbstractAutoProxyCreator4. ProxyFactory5. JdkDynamicAopProxy本篇文章主要...

2019-08-03 01:29:29 335

原创 JDK源码:ArrayList

ArrayList类图

2019-07-20 12:46:29 141

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除