- 博客(47)
- 收藏
- 关注
原创 OpenRewrite框架原理解析
本文主要对OpenRewrite框架设计和原理进行解析,分析OpenRewrite框架中是如何运用访问者模式进行架构设计的,然后进一步分析访问逻辑的具体执行过程,以便更清楚的掌握OpenRewrite内部执行机理,拨开云雾见月明,进而更好的指导OpenRewrite开发实践。
2024-03-21 23:53:28
1275
1
原创 OpenRewrite:实现一个简单的配方(Recipe)
本文在前面文章理解OpenRewrite的基础之上,通过实现一个简单的配方(Recipe),能够更直观的熟悉OpenRewrite的开发流程,同时起到很好的带入作用,能够更快的上手实践。下面以配方SayHelloRecipe如何针对目标类添加一个hello()方法进行举例说明;
2024-03-15 14:40:46
1887
原创 大规模自动化重构框架--OpenRewrite浅析
OpenRewrite是一个用于大规模自动化代码重构的框架,通过帮助开发人员自动化地进行代码重构和转换,大大提升了研发效率。本文主要对OpenRewrite进行简要介绍,更详尽的说明可以参加OpenRewrite官网。
2024-03-12 15:58:21
3346
原创 Shiro框架:Shiro用户访问控制鉴权流程-Aop注解方式源码解析
Shiro作为一款比较流行的登录认证、访问控制安全框架,被广泛应用在程序员社区;Shiro登录验证、访问控制、Session管理等流程内部都是委托给SecurityManager安全管理器来完成的,SecurityManager安全管理器前面文章已经进行了详细解析;在此基础上,前面文章已对Shiro用户登录认证流程进行了源码跟踪,对Shiro用户访问控制鉴权流程-内置过滤器方式进行了详细解析;本篇文章继续对用户访问控制鉴权流程-Aop注解方式进行源码解析,了解不同的使用方式以便更好的应用到实际项目中。
2024-01-20 19:24:38
1160
原创 Shiro框架:Shiro用户访问控制鉴权流程-内置过滤器方式源码解析
Shiro作为一款比较流行的登录认证、访问控制安全框架,被广泛应用在程序员社区;Shiro登录验证、访问控制、Session管理等流程内部都是委托给SecurityManager安全管理器来完成的,SecurityManager安全管理器前面文章已经进行了详细解析;在此基础上,上篇文章已对Shiro用户登录认证流程进行了源码跟踪,本篇文章继续对下一个核心流程---用户访问控制鉴权流程进行源码解析;
2024-01-18 00:34:28
1981
原创 Shiro框架:Shiro用户登录认证流程源码解析
Shiro作为一款比较流行的登录认证、访问控制安全框架,被广泛应用在程序员社区;Shiro登录认证、访问控制、Session管理等流程内部都是委托给SecurityManager安全管理器来完成的,SecurityManager安全管理器上篇文章已经进行了详细解析,详见:Shiro框架:Shiro SecurityManager安全管理器解析-优快云博客,在此基础上,本篇文章继续对Shiro关联链路处理流程之一---登录认证流程进行解析;
2024-01-14 18:14:31
2272
原创 Shiro框架:Shiro SecurityManager安全管理器解析
Shiro作为一款比较流行的登录认证、访问控制安全框架,被广泛应用在程序员社区;Shiro登录验证、访问控制、Session管理等流程内部都是委托给SecurityManager安全管理器来完成的,在前述文章全面解析Shiro框架原理的基础之上,详见:Shiro框架:ShiroFilterFactoryBean过滤器源码解析-优快云博客、Shiro框架:Shiro内置过滤器源码解析-优快云博客,本篇文章继续深入解析Shiro SecurityManager安全管理器的结构和功能。
2024-01-13 17:22:58
2208
原创 Shiro框架:Shiro内置过滤器源码解析
Shiro框架作为登录鉴权安全模块一款较为流行的开源框架,通过简单的配置即可完成登录鉴权配置,其中离不开Shiro较为丰富、且简单易用的内置过滤器,本文主要对Shiro多种内置过滤器进行源码解析,方便更好的深入透析其执行原理;
2024-01-12 16:22:50
1412
原创 Shiro框架:ShiroFilterFactoryBean过滤器源码解析
Shiro框架通过添加Servlet Filter的方式,提供了登录验证(Authentication)、访问控制(Authorization)以及Session管理等功能,极大的简化了Spring项目中登录鉴权模块的开发工作。下面通过ShiroFilterFactoryBean作为切入点,详细分析下Shiro自定义拦截器SpringShiroFilter的处理流程;并通过源码解析,跟踪SpringShiroFilter是如何添加到Servlet Filter中的。
2024-01-08 23:50:21
2834
2
原创 cola架构:cola源码中访问者模式应用浅析
访问者(Visitor)模式:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。访问者模式包含的类/接口如下:抽象访问者(Visitor):定义一个访问具体元素的接口,为每个具体元素类对应一个访问操作 visit() ,该操作中的参数类型标识了被访问的具体元素。具体访问者(ConcreteVisitor):实现抽象访问者角色中声明的各个访问操作,确定访问者访问一个元素时该做什么。
2023-10-25 20:08:20
1105
原创 cola架构:有限状态机(FSM)源码分析
cola状态机采用无状态设计,不存储中间状态,重点关注状态之间的转移,这样的设计使得cola更加的简单、轻量、易于上手,在高并发多线程场景下应用单例模式可以实现更高的性能;上述cola状态机语义模型的源码就解析完成了,在实际使用时,需要将语义模型进行组合构造编排,这里是通过Builder模式来完成的,下面进行展开说明;至此,状态机实例、状态机包含的状态、状态关联的所有转移都构造完毕,后续就可以通过状态机的触发方法fireEvent完成状态转移了。
2023-10-25 12:33:03
1291
原创 EasyRule源码:EasyRule框架源码分析
当下的规则引擎选择非常多,例如EasyRule、Aviator 、QLExpress、Drools、Zools等;1.【精选】Aviator源码:从具体实例看Aviator属性语法糖源码分析(a.b.c)2.Aviator源码:Aviator表达式引擎执行过程源码分析本篇对另一种常用的规则引擎框架EasyRule进行源码分析;
2023-10-19 19:50:29
546
原创 cola架构:一种扩展点的实现思路浅析
在实际项目中,我们经常使用策略模式、或者状态模式来隔离同一接口下不同的实现逻辑,进而消除代码中ifelse硬编码分支,使代码结构更清晰,也大大提升了代码可读性;同时也满足了“开闭原则”,具备更高的可扩展性;在cola架构中,给出了一种“扩展点”的思路,本质还是策略模式的实现方式,通过“扩展点注解”的组装方式将策略模式实现类注册到容器中,供后续场景逻辑决策使用;
2023-10-15 16:21:03
2278
原创 SpringEL:SpEL表达式文本转译
2.字段转译映射配置在Mysql数据库中(包括字段名称描述以及关联的字段枚举值描述)由上,通过对SpringEL表达式抽象语法树的遍历,完成对规则表达式的转译;1.操作符转译名称映射配置在配置中心上;
2023-10-10 17:21:10
430
原创 Spring源码:调度框架EnableScheduling&Scheduled源码解析
在实际项目开发中,有时会遇到定时调度的开发需要,这部分的功能在Spring框架中给出了较好的支持,即@EnableScheduling&Scheduled定时调度框架,本着不仅知其然还要知其所以然的指导思想,下面对该调度框架进行源码解析,以便更好的理解其执行过程;
2023-06-26 00:26:09
1065
原创 JVM内存分析:Aviator低版本内存泄漏问题分析
本文通过实际线上项目中频繁FullGC告警的场景,利用MAT内存分析工具,重点分析Aviator低版本内存泄漏问题的排查过程,并深入分析Aviator框架源码深层次的实质根因,最后结合高版本的修复方案,解决内存泄漏问题;
2023-06-17 18:18:38
2777
原创 Aviator源码:Aviator表达式引擎执行过程源码分析
本文通过if语法的引导,着重分析了aviator源码执行过程,主要的技术点包括:asm字节码技术动态生成class、LambdaFunctionBootstrap构造和设计理念以及LambdaFunction函数的构造和设计理念等
2023-06-15 13:18:08
2755
3
原创 Idea借助Maven插件生成项目脚手架archetype
利用已有项目生成自定义项目脚手架,可以帮助我们快速的搭建新项目,节省很多配置新项目的时间;
2022-08-23 11:32:18
1280
原创 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
1171
原创 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
285
原创 Alibaba TTL跨线程参数传递框架
目录1.功能2.使用方式3.扩展1.功能引用github的描述,https://github.com/alibaba/transmittable-thread-local在使用线程池等会池化复用线程的执行组件情况下,提供ThreadLocal值的传递功能,解决异步执行时上下文传递的问题。JDK的InheritableThreadLocal类可以完成父线程到子线程的值传递。但对于使用线程池等会池化复用线程的执行组件的情况,线程由线程池创建好,并且线程是池化起来反复使用的;这时父子
2021-08-13 15:49:11
4537
原创 Mybatis源码:Mybatis配置解析过程源码分析
目录0.伏笔1.SqlSessionFactory2.SqlSession3.SqlSessionFactoryBean0.伏笔本篇主要介绍下Application在启动的时候,mybatis配置文件的解析过程,Dao类以及mapper.xml和Sql注解的解析过程,总结来说就是Configuration配置类的构造解析过程;下面主要以项目中常见的SqlSessionFactory工厂类的典型构建过程为总体脉络来进行分析;@Beanpublic SqlSessionFa.
2021-08-13 15:36:23
314
原创 Mybatis源码:Mybatis一二级缓存源码分析
目录1.缓存的开启2.缓存的创建3.缓存执行逻辑1.缓存的开启缓存开启的设置可以在mybatis配置文件<Properties>中进行设置,默认是开启的;解析配置文件的代码如下:该cacheEnabled缓存开启的总开关,当cacheEnabled为true时,默认开启了一级缓存;二级缓存的开启需要在mapper.xml中设置<cache/>节点(也支持注解的方式),同时一级缓存是局部于SqlSession中的,SqlSession关闭就会回收;二级缓
2021-08-13 15:24:00
194
原创 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
1799
原创 Spring源码:占位符${}解析源码分析
PropertyPlaceholderConfigurerPlaceholderConfigurerSupportPropertyPlaceholderHelper
2021-08-04 20:14:46
1857
原创 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
1869
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
3284
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
1077
原创 Spring源码:@AliasFor JDK动态代理源码分析
目录0. 源码参见1.isSynthesizable判断是否需要被代理2.SynthesizedAnnotationInvocationHandler创建和执行逻辑2.1DefaultAnnotationAttributeExtractor2.1.1AbstractAliasAwareAnnotationAttributeExtractor构造函数2.1.2 接口方...
2019-08-18 14:51:49
936
原创 Spring源码:@EnableAsync与@Async源码分析
目录1. @EnableAsync开启异步化支持2.ProxyAsyncConfiguration异步代理配置类3. AsyncAnnotationBeanPostProcessor3.1BeanFactoryAware实现逻辑3.1.1 异步注解增强/拦截器AnnotationAsyncExecutionInterceptor的原理3.1.2 切点Annotation...
2019-08-13 01:19:44
4211
2
原创 Java Util:Zip批量下载&文件打包
在项目开发中,经常会遇到文件下载、导出的功能,导出文件格式包括.xls、.pdf等,对于单个的文件下载,只需要执行excel和pdf的导出即可;但有时会碰到多个excel或pdf文件的批量下载,且执行文件要压缩到一个文件中,这时就要用到Zip文件压缩的功能了;如下是自己封装的一个ZipFileUtil工具类,支持mvc模式下excel和pdf文件的ZIP文件打包和下载:...
2019-08-11 22:55:22
477
原创 Spring源码:@Configuration配置类解析过程
目录1.ConfigurationClassPostProcessor1.1ConfigurationClassPostProcessor的引入1.2ConfigurationClassPostProcessor的处理过程2.ConfigurationClassUtils获取配置类candidate3. 配置解析类ConfigurationClassParser完成C...
2019-08-11 17:09:20
894
原创 Spring源码:Aop中@Aspect切面的解析代理过程
目录1. 再谈AnnotationAwareAspectJAutoProxyCreator自动代理创建类2.ReflectiveAspectJAdvisorFactory切面工厂类2.1ReflectiveAspectJAdvisorFactory创建Advisor的过程2.1.1InstantiationModelAwarePointcutAdvisorImpl的构造...
2019-08-11 00:34:59
1569
原创 Spring源码:@PropertySource源码解析
目录1.@PropertySource处理入口2.@PropertySource注解解析3. 构造ResourcePropertySource对象4.PropertySource配置加载到environment当中通常,我们在开发java spring项目时,会包含多套环境(profile),并且分别提供了不同环境下的属性文件(.properties),在引用属性文件时,...
2019-08-10 15:25:37
1951
原创 Spring源码:EnableConfigurationProperties源码分析
目录1.EnableConfigurationProperties2.EnableConfigurationPropertiesImportSelector2.1ConfigurationPropertiesBeanRegistrar2.2ConfigurationPropertiesBindingPostProcessorRegistrar3.Configurati...
2019-08-04 17:45:38
840
原创 Spring源码:声明式事务@Transactional源码分析--spring boot方式
目录1. TransactionAutoConfiguration2. @EnableTransactionManagement3.TransactionManagementConfigurationSelector3.1AutoProxyRegistrar3.2ProxyTransactionManagementConfiguration3.2.1ProxyTra...
2019-08-03 21:03:14
966
原创 Spring源码:声明式事务@Transactional源码分析--spring xml实现
目录0. 声明式事务的开启1.事务注解BeanDefinition解析器AnnotationDrivenBeanDefinitionParser1.1InfrastructureAdvisorAutoProxyCreator1.2 AnnotationTransactionAttributeSource1.3TransactionInterceptor1.4 BeanF...
2019-08-03 18:16:40
405
原创 Spring源码:Aop源码分析
目录1. AopAutoConfiguration自动配置2. EnableAspectJAutoProxy/AspectJAutoProxyRegistrar/AnnotationAwareAspectJAutoProxyCreator3. AbstractAutoProxyCreator4. ProxyFactory5. JdkDynamicAopProxy本篇文章主要...
2019-08-03 01:29:29
351
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人