![](https://img-blog.csdnimg.cn/direct/a36d94ccbd984237a4bd98dbc23b18de.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
源码研究院
文章平均质量分 89
框架源码分析
留不住的人
PHP是世界上最美的语言
展开
-
Hadoop-MapReduce源码分析
#一、MapReduce源码分析在WCMapper类中的map方法的首行添加如下代码:重新打jar包上传到hadoop集群中,重新运行在hadoop集群中的任何节点上执行如下命令:下载文件夹/tmp/hadoop-yarn/staging/root/.staging/job_1635443832663_0002从该节点的/root目录下下载到windows系统的桌面上,内容列表如下将job.xml拷贝到wordcount项目的根目录,然后进行格式化(目的:方便查看参数),使用C原创 2023-04-04 16:46:28 · 272 阅读 · 0 评论 -
第十篇:Spring源码-事务源码分析
然后我们在上面的中看到了这个对象,通过字面含义是事务定义。我们来看看结构。也就是中定义了事务的传播属性和隔离级别,然后来看看具体的体系结构DefaultTransactionDefinition:是事务定义的默认实现DefaultTransactionAttribute:扩展了TransactionAttribute中的属性的实现@Transactional:该组件就会被解析加载为对应的对象。原创 2023-03-19 00:16:51 · 181 阅读 · 0 评论 -
第九篇:Spring源码-AOP分析
本文我们开始讲解Spring中的AOP原理和源码,我们前面手写了AOP的实现,了解和自己实现AOP应该要具备的内容,我们先回顾下,这对我们理解Spring的AOP是非常有帮助的。原创 2023-03-19 00:15:57 · 88 阅读 · 0 评论 -
第八篇:Spring源码-DI的过程
接下来我们分析下Spring源码中Bean初始化过程中的DI过程。也就是属性的依赖注入。原创 2023-03-19 00:12:27 · 51 阅读 · 0 评论 -
第七篇:Spring源码Bean的实例化
接下来我们看看Bean的实例化处理。原创 2023-03-19 00:11:33 · 101 阅读 · 0 评论 -
第六篇:Spring源码分析-初始化过程
接下来我们详细分析下refresh方法的作用。原创 2023-03-19 00:09:41 · 87 阅读 · 0 评论 -
第五篇:Spring源码篇-ApplicationContext
AbstractBeanDefinition我们可以称之为BeanDefinition的模板类。结构我们上面其实有梳理通过上面我们可以看到AbstractBeanDefinition 具备了 Bean元数据的获取和属性相关的操作。同时AbstractBeanDefinition的继承结构它主要用在spring内部的bean定义、把不同类型的bean定义合并成RootBeanDefinition(getMergedLocalBeanDefinition方法)。原创 2023-03-18 23:17:26 · 167 阅读 · 0 评论 -
第四篇:Spring源码篇-手写篇-手写Bean定义配置化
xml方式的流程如下:我们可以自己写一个解析器,专门来解析对应的xml文件然后我们来看看需要定义的注解有哪些。类要不要配置为Bean @ComponentBeanName Scope和Primary @Scope @Primary工厂方法 工厂Bean @Bean初始化方法、销毁方法 @PostConstruct @PreDestory构造参数依赖 @Autowired @Value属性依赖 @Qualifier。原创 2023-03-18 23:16:23 · 72 阅读 · 0 评论 -
第三篇:Spring源码篇-手写篇-手写AOP
手写IoC和DI后已经实现的类图结构。原创 2023-03-18 23:13:28 · 249 阅读 · 1 评论 -
第二篇:Spring源码篇-手写篇-手写DI
DI(Dependency injection)依赖注入。对象之间的依赖由容器在运行期决定,即容器动态的将某个依赖注入到对象之中。说的直白点就是给Bean对象的成员变量赋值。在这里我们就需要明白几个问题。原创 2023-03-18 23:10:40 · 53 阅读 · 0 评论 -
第一篇:Spring源码手写篇-手写IOC
根据上面的接收我们就清楚了Bean定义的意义了。那么我们来定义Bean定义的模型要考虑几个问题。作用肯定是告诉Bean工厂应该如何来创建某类的Bean实例。原创 2023-03-18 23:09:27 · 153 阅读 · 0 评论 -
第八章:MyBatis整合Spring的原理
设计模式类工厂模式建造者模式单例模式代理模式绑定:MapperProxy延迟加载:ProxyFactory 插件:PluginSpring 集成MyBaits: SqlSessionTemplate的内部SqlSessionInterceptorMyBatis自带连接池:PooledConnection日志打印:ConnectionLogger、StatementLogger适配器模式。原创 2023-03-07 00:01:26 · 79 阅读 · 0 评论 -
第六章:MyBatis基础模块-类型转换模块
MyBatis是一个持久层框架ORM框架,实现数据库中数据和Java对象中的属性的双向映射,那么不可避免的就会碰到类型转换的问题,在PreparedStatement为SQL语句绑定参数时,需要从Java类型转换为JDBC类型,而从结果集中获取数据时,则需要从JDBC类型转换为Java类型,所以我们来看下在MyBatis中是如何实现类型的转换的。原创 2023-03-06 23:59:47 · 260 阅读 · 0 评论 -
第一章:ORM框架发展历程和MyBatis的核心应用
具体的操作步骤是,首先在pom.xml中引入MySQL的驱动依赖,注意MySQL数据库的版本代码重复资源管理结果集处理SQL耦合针对这些问题我们可以自己尝试解决下对应的jdbc操作代码可以简化如下但是整体的操作步骤还是会显得比较复杂,这时我们可以进一步优化我们可以针对DML操作的方法来优化,先解决SQL耦合的问题,在DBUtils中封装DML操作的方法然后在DML操作的时候我们就可以简化为如下步骤显然这种方式会比最初的使用要简化很多,但是在查询处理的时候我们还是没有解决ResultS原创 2023-03-06 22:58:49 · 455 阅读 · 2 评论 -
第七章:MyBatis中的插件机制
首先我们来看下一个自定义的插件我们要如何来实现。原创 2023-03-07 00:00:50 · 445 阅读 · 0 评论 -
第五章:MyBatis基础模块-反射工具箱
接口的定义如下// 检测该ReflectorFactory是否缓存了Reflector对象 boolean isClassCacheEnabled();// 设置是否缓存Reflector对象 void setClassCacheEnabled(boolean classCacheEnabled);// 创建指定了Class的Reflector对象 Reflector findForClass(Class type);然后我们来看看它的具体实现。原创 2023-03-06 23:57:32 · 164 阅读 · 0 评论 -
第四章:MyBatis基础模块-日志模块
首先日志在我们开发过程中占据了一个非常重要的地位,是开发和运维管理之间的桥梁,在Java中的日志框架也非常多,Log4j,Log4j2,Apache Commons Log,java.util.logging,slf4j等,这些工具对外的接口也都不尽相同,为了统一这些工具,MyBatis定义了一套统一的日志接口供上层使用。首先大家对于适配器模式要了解下哦。原创 2023-03-06 23:58:27 · 165 阅读 · 0 评论 -
第二章:MyBatis核心工作原理
接下来我们就开始MyBatis的源码之旅,首先大家要从宏观上了解Mybatis的整体框架分为三层,分别是基础支持层、核心处理层、和接口层。如下图然后根据前面讲解的MyBatis的应用案例,给出MyBatis的主要工作流程图在MyBatis的主要工作流程里面,不同的功能是由很多不同的类协作完成的,它们分布在MyBatis jar包的不同的package里面。大概有一千多个类,这样看起来不够清楚,不知道什么类在什么环节工作,属于什么层次。原创 2023-03-06 23:54:24 · 195 阅读 · 0 评论 -
第三章:MyBatis基础模块-缓存模块
MyBatis作为一个强大的持久层框架,缓存是其必不可少的功能之一,Mybatis中的缓存分为一级缓存和二级缓存。但本质上是一样的,都是使用Cache接口实现的。缓存位于 org.apache.ibatis.cache包下。通过结构我们能够发现Cache其实使用到了装饰器模式来实现缓存的处理。首先大家需要先回顾下装饰器模式的相关内容哦。我们先来看看Cache中的基础类的API// 煎饼加鸡蛋加香肠。原创 2023-03-06 23:56:02 · 102 阅读 · 0 评论