源码分析
一步一步手写Spring事务框架、Spring注解版本&事务传播行为、SpringMVC注解、数据库连接池、MyBatis注解版本框架、JDK下不同版本的集合等。
杨林伟
像火箭科学家一样思考!
展开
-
源码分析系列教程(完) - 终章总结
《源码分析系列教程》至此正式讲解完毕,本文来总结一下之前的教程知识点内容,课程系列内容如下: 源码分析系列教程(01) - Spring核心总结(AOP篇) 源码分析系列教程(02) - 手写Spring事务框架 源码分析系列教程(03) - Spring核心总结(IOC篇) 源码分析系列教程(04) - 手写SpringIOC 源码分析系列教程(05) - 手写SpringMVC 源码分析系列...原创 2019-11-04 18:00:02 · 536 阅读 · 0 评论 -
源码分析系列教程(12) - 手写Map框架(基于JDK1.7)
代码已上传到GitHub,有兴趣的同学可以下载来看看:https://github.com/ylw-github/Java-CodeAnalysis-Demo 1. Map接口: package com.ylw.jdk.hashmap; public interface ExtMap<K, V> { // 向集合中插入数据 public V put(K k, V v...原创 2019-11-04 17:48:18 · 454 阅读 · 0 评论 -
源码分析系列教程(11) - 手写Map框架(基于LinkedList)
代码已上传到GitHub,有兴趣的同学可以下载来看看:https://github.com/ylw-github/Java-CodeAnalysis-Demo 1.Map原理 HashMap的底层结构是由数组+链表构成的: 数组(紫色) :hash数组(桶),数组元素是每个链表的头节点 链表(绿色) :解决hash冲突,不同的key映射到了数组的同一索引处 1.1 put和get方法 put()...原创 2019-11-04 17:40:07 · 439 阅读 · 0 评论 -
源码分析系列教程(10) - 手写LinkedList框架
代码已上传到GitHub,有兴趣的同学可以下载来看看:https://github.com/ylw-github/Java-CodeAnalysis-Demo 1.LinkedList结构原理 LinkedList底层的数据结构是基于双向循环链表的,且头结点中不存放数据,如下: 既然是双向链表,那么必定存在一种数据结构——我们可以称之为节点,节点实例保存业务数据,前一个节点的位置信息和后一个节点...原创 2019-11-04 16:37:36 · 504 阅读 · 0 评论 -
源码分析系列教程(09) - 手写List框架
代码已上传到GitHub,有兴趣的同学可以下载来看看:https://github.com/ylw-github/Java-CodeAnalysis-Demo 1.集合框架的介绍 下面先来看下两张图: 对于以上的框架图可以看出: 所有集合类都位于java.util包下:Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口...原创 2019-11-04 15:57:24 · 454 阅读 · 0 评论 -
源码分析系列教程(08) - 手写MyBatis(注解版)
代码已上传到GitHub,有兴趣的同学可以下载来看看:https://github.com/ylw-github/Java-CodeAnalysis-Demo 1. MyBatis相关核心知识 MyBatis和数据库的交互有两种方式: 使用传统的MyBatis提供的API; 使用Mapper接口; 1.1 使用Mapper接口 MyBatis 将配置文件中的每一个<mapper>节...原创 2019-11-04 14:25:56 · 545 阅读 · 0 评论 -
源码分析系列教程(07) - 手写数据库连接池
代码已上传到GitHub,有兴趣的同学可以下载来看看:https://github.com/ylw-github/Java-CodeAnalysis-Demo 先看看包结构: 1.添加maven依赖: <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-...原创 2019-11-04 11:26:44 · 452 阅读 · 0 评论 -
源码分析系列教程(06) - 数据库连接池原理
代码已上传到GitHub,有兴趣的同学可以下载来看看:https://github.com/ylw-github/Java-CodeAnalysis-Demo 1. 原理 数据库连接池的原理就是在内部对象池中,维护一定数量的数据库连接,并对外暴露数据库连接的获取和返回方法。如外部使用者可通过getConnection方法获取数据库连接,使用完毕后再通过releaseConnection方法将连接返...原创 2019-11-04 11:03:01 · 457 阅读 · 0 评论 -
源码分析系列教程(05) - 手写SpringMVC
代码已上传到GitHub,有兴趣的同学可以下载来看看:https://github.com/ylw-github/Java-CodeAnalysis-Demo 本文主要讲解如何手写SpringMVC,SpringMVC是基于Servlet来写的,所以本文会先回顾一下SpringMVC的基本流程和Servlet的基本知识,最后在手写SpringMVC(基于XML技术+反射+注解+Servlet)来实...原创 2019-11-04 10:28:49 · 493 阅读 · 0 评论 -
源码分析系列教程(04) - 手写SpringIOC
在上一节,我们知道SpringIOC的原理是使用了XML技术+发射技术,本文主要讲解如何手写SpringIOC。 步骤一:添加用到的maven依赖 <!-- 1.Spring核心依赖 --> <dependency> <groupId>org.springframework</groupId> ...原创 2019-11-01 18:31:59 · 483 阅读 · 0 评论 -
源码分析系列教程(03) - Spring核心总结(IOC篇)
1. XML技术 XML是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言。 XML 全称为可扩展的标记语言,主要用于描述数据和用作配置文件。 XML 文档在逻辑上主要由一下 5 个部分组成: XML 声明:指明所用 XML 的版本、文档的编码、文档的独立性信息 文档类型声明:指出 XML 文档所用的 DTD 元素:由开始标签、元素内容和结束标签...原创 2019-11-01 17:57:38 · 424 阅读 · 0 评论 -
源码分析系列教程(02) - 手写Spring事务框架
1. 编程事务实现 编程式事务 指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理。管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,Spring推荐使用TransactionTemplate。 下面我们使用编程式事务实现手动事务,使用编程事务实现,手动事务begin、commit、rollback:...原创 2019-11-01 14:45:39 · 462 阅读 · 0 评论 -
源码分析系列教程(01) - Spring核心总结(AOP篇)
1.Spring 核心知识 Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。 框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2E...原创 2019-10-31 16:21:50 · 612 阅读 · 2 评论