自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Django--模型

目录 1 概述 2 示例 3 字段说明 3.1 字段类型 3.2 字段选项 4 模型属性 5 模型方法 6 模型继承 6.1 抽象基类 6.2 非抽象继承(多表继承) 6.3 代理继承 6.4 多重继承 7 结语 1 概述 本文档着眼于快速入门,参考自官方文档(h...

2020-02-08 09:57:52

阅读数 20

评论数 0

原创 JDK1.8 -- 函数式接口应用示例

package com.liutao.java8; import org.apache.commons.lang3.StringUtils; import java.util.function.Consumer; import java.util.function.Function; impo...

2019-06-05 09:45:19

阅读数 243

评论数 0

原创 JDK1.8 -- Stream应用示例

package com.liutao.java8; import java.util.*; import java.util.stream.Collectors; import static java.util.stream.Collectors.*; /** * @author: LIU...

2019-06-04 17:18:23

阅读数 83

评论数 0

转载 Nginx 极简教程

目录 概述 什么是 Nginx? 什么是反向代理? 安装与使用 安装 使用 nginx 配置实战 http 反向代理配置 负载均衡配置 网站有多个 webapp 的配置 https 反向代理配置 静态站点配置 搭建文件服务器 跨域解决方案 概述 什么是 Nginx?...

2019-05-31 10:45:16

阅读数 54

评论数 0

原创 jUC--LinkedTransferQueue源码分析(基于JDK1.8)

1 概述 LinkedTransferQueue是一个基于链表的阻塞队列。采用了一种预占模式。消费者线程获取数据的时候,如果在队列中没有任何数据,则消费者线程生成一个节点,这个节点的元素为空,然后消费者线程等待在这个节点上。当生产者线程入队的时候发现了有意个元素为空的节点,则直接将数据赋予这个节...

2019-02-28 09:41:22

阅读数 104

评论数 0

原创 jUC--PriorityBlockingQueue源码分析(基于JDK1.8)

1 概述 在阅读这一篇文章之前,建议大家线阅读我的另一篇文章JUC--PriorityQueue源码分析(基于JDK1.8)。 PriorityBlockingQueue是有界的阻塞队列,根据这个名字我们就可以看出PriorityBlockingQueue的数据存储原理和PriorityQue...

2019-02-27 11:14:36

阅读数 80

评论数 0

原创 jUC--DelayQueue源码分析(基于JDK1.8)

1 概述 DelayQueue是一个有界的阻塞队列,这里面的元素具有延迟释放的功能,仅仅当元素的延迟时间到了的时候才能够被获取。队列的头节点是延迟时间最久的元素。如果没有元素的延迟时间过期,这里将没有头节点,而且poll函数将返回null。这个工具主要用来标记那些应该在给定时间之后实现的对象。 ...

2019-02-26 19:57:10

阅读数 97

评论数 0

原创 JUC--PriorityQueue源码分析(基于JDK1.8)

1 概述 PriorityQueue是基于优先堆实现的无界优先队列,它的底层是通过最小堆来实现的。我们知道普通的队列具有FIFO的特性,队列的出和入与进入队列的时间有关,但是针对优先队列,每个队列的元素中都有一个属性来表示队列的优先级,然后队列的出队就根据队列中元素的优先级来确定先后顺序。这样就...

2019-02-25 17:53:20

阅读数 55

评论数 0

原创 JUC--ConcurrentSkipListSet源码分析(基于JDK1.8)

1 概述 前面的文章中,我们分析了HashSet的实现原理(可以参考Java集合框架--HashSet源码分析(基于JDK1.8))。HashSet的实现其实是依赖于HashMap的,直接使用了HashMap的key来存储HashSet的值,对应的HashMap的value就存为虚拟值。所以,在...

2019-02-25 16:29:45

阅读数 46

评论数 0

原创 JUC--ConcurrentSkipListMap源码分析(基于JDK1.8)

1 概述 我们知道JDK针对键值对的存储提供了HashMap、TreeMap、HashTable和ConcurrentHashMap等工具。这些工具在多线程的情况下,使存入的数据有序同时方便数据的遍历,就显得不那么理想了,所以JDK又为我们提供了一个工具ConcurrentSkipListMap...

2019-02-25 11:20:48

阅读数 44

评论数 0

原创 JUC--CopyOnWriteArraySet源码分析(基于JDK1.8)

1 概述 有一定Java基础知识的同学都知道HashSet是通过散列表实现的,并且存储的内容是无序的而且不能重复。但是HashSet有一个比较明显的缺点,就是HashSet不是线程安全的,那么有没有线程安全的HashSet呢?在这里我们就可以引出CopyOnWriteArraySet了。 Co...

2019-02-22 14:36:20

阅读数 72

评论数 0

原创 JUC--CopyOnWriteArrayList源码分析(基于JDK1.8)

1 概述 我们来设想一个场景,在并发的情况下,我们想要使用一个List来保存对象,这个时候为了让List是线程安全的,我们能怎么做呢?首先我们能够想到的应该是使用synchronized对List对象加锁,或者在使用List对象的地方使用ReentrantLock来保证线程同步,但是这样就有一个...

2019-02-22 13:50:56

阅读数 53

评论数 0

原创 Java的Future模式(基于JDK1.8)

1 概述 在我们使用多线程的时候,如果我们需要在主线程中拿到其余线程执行输出的内容,同时在子线程运行的时候,我们主线程依然运行,只是在合适的时候来拿子线程的结果就行了,这个时候我们怎么办呢?这就需要用到Future模式了。下面我们直接上一个列子来直观地演示Future模式。 2 实例 im...

2019-02-22 10:44:05

阅读数 53

评论数 0

原创 Spring Cloud Sleuth(二)整合zipkin

本文基于Finchley.SR2。 1 概述  

2019-01-30 14:09:32

阅读数 139

评论数 0

原创 Spring Cloud Sleuth(一)简单实例及概念

本文基于Finchley.SR2。 1 概述 Spring Cloud Sleuth为Spring Cloud实现了分布式服务跟踪的解决方案。我们可以通过Spring Cloud Sleuth来获得一个调用链中,各个阶段的时间消耗、服务的异常信息、服务的性能瓶颈等信息。 2 简单实例 在我...

2019-01-30 11:15:56

阅读数 200

评论数 0

原创 Spring配置文件解析(四)BeanDefinitionParserDelegate源码分析

1 概述 通过对BeanDefinitioDocumentReader源码(Spring配置文件解析(三)BeanDefinitionDocumentReader源码分析)的分析,我们知道BeanDefinitioDocumentReader的作用就是将Document对象中获取到Element...

2018-12-29 17:00:33

阅读数 72

评论数 0

原创 Spring配置文件解析(三)BeanDefinitionDocumentReader源码分析

1 概述 前面我们分析了BeanDefinitionReader的源码(Spring配置文件解析(二)BeanDefinitionReader源码分析 ),我们知道BeanDefinitionReader的作用其实就是将Spring的Bean定义的XML文件最终解析成Document对象,然后将...

2018-12-21 17:29:29

阅读数 63

评论数 0

原创 Spring配置文件解析(二)BeanDefinitionReader源码分析

1 概述 这一篇文章的作用主要是接着上篇文章(Spring配置文件解析(一)ClassPathXmlApplicationContext源码分析)继续分析在Spring中配置文件的加载和解析,但是在分析之前,我们有必要对BeanDefinitionReader家族进行一个简单地介绍。 这个Bea...

2018-12-21 11:43:55

阅读数 83

评论数 0

原创 Spring配置文件解析(一)ClassPathXmlApplicationContext源码分析

1 概述 针对前面的SpringIOC的源码分析,我们看见了在整个Spring容器初始化的时候,配置文件的解析是相当重要的,所以从这篇文章开始,我们将对配置文件的解析进行深入的分析。 这里我们仅仅拿ClassPathXmlApplicationContext类来进行分析,因为FileSystem...

2018-12-20 16:12:44

阅读数 457

评论数 1

原创 Spring源码之IOC(五)ApplicationContext源码分析

1 概述 ApplicationContext即应用上下文,它是建立在BeanFactory基础之上的 ApplicationContext有两个主要的实现类:ClassPathXmlApplicationContext:默认从类路径加载配置文件,还有FileSystemXmlApplicati...

2018-12-19 17:09:43

阅读数 80

评论数 0

原创 Spring源码之IOC(四)BeanFactory派生类

1 概述 从前面的文章(Spring源码之IOC(三)BeanFactory源码分析)我们学习到BeanFactory提供了Spring bean容器的基础入口,也就是我们可以通过BeanFactory来获取到bean。而其子类通过扩展BeanFactory来提供了更加丰富的功能,接下来我们就来...

2018-12-14 10:02:54

阅读数 50

评论数 0

原创 Spring源码之IOC(三)BeanFactory源码分析

1 概述 这是进入Spring bean容器的基础接口,她的子类(例如:ListableBeanFactory、ConfigurableBeanFactory)还提供了更多个用处,我们后面会对其子类进行分析。 这个接口的实现类拥有beanDefinition对象,每个beanDefinition...

2018-12-14 09:36:41

阅读数 98

评论数 0

原创 Spring源码之IOC(二)BeanDefinition派生类

1 概述 通过前面的文章,我们对BeanDefinition接口有个深入的认识,我们知道BeanDefinition提供了bean的特性的封装,可以通过BeanDefinition对Bean的属性访问和修改,获取是否是抽象类等属性。针对更多的功能,我们就可以通过使用BeanDefinition的...

2018-12-10 15:33:03

阅读数 69

评论数 0

原创 Spring源码之IOC(一)BeanDefinition源码解析

1 概述 Bean的定义主要是由BeanDefinition来描述的。BeanDefinition是Spring中包装bean的数据结构,她描述了一个bean实例属性、构造参数。当然针对她的具体实现类提供了更加丰富的功能。这仅仅是一个基本的接口,这个接口的主要目的是允许修改和获取bean的属性和...

2018-12-04 19:55:42

阅读数 131

评论数 0

原创 Mybatis源码--XMLMapperBuilder源码分析

1 概述

2018-11-16 16:10:32

阅读数 126

评论数 0

原创 Mybatis源码--XMLConfigBuilder源码分析

注意:文章内容较多,请耐心阅读。 1 概述 前面我们分析了BaseBuilder,BaseBuilder提供的主要功能是处理类型的转换。现在我们就来分心XMLConfigBuilder,这个类的主要作用就是解析mybatis的配置文件。 2 属性 2.1 parsed private ...

2018-11-14 19:54:19

阅读数 82

评论数 0

原创 Mybatis源码--BaseBuilder源码分析

1 概述 BaseBuilder家族的主要作用就是处理配置文件的内容,包括mapper配置文件和config文件,在这里我们有必要首先对其基类进行简单地说明。 2 属性 2.1 configuration 持有配置文件对象,方便解析配置文件后对数据进行设置。 2.2 typeAliasR...

2018-11-12 18:41:33

阅读数 218

评论数 0

原创 Mybatis工具--分页插件

1 概述 在我们使用Mybatis的时候希望对以映射语句进行拦截处理,这个时候就可以用到Mybatis的插件。接下来我们就来Mybatis中的插件是如何实现的,然后来实现分页插件。 2 实现 MyBatis 允许使用插件来拦截的方法调用包括:  Executor (update, query...

2018-11-07 15:40:28

阅读数 52

评论数 0

原创 Mybatis源码--Resources源码分析

1 概述 在我们使用Mybatis的时候都需要将配置文件转换成InputStream,这使用我们通常是使用Resources的getResourceAsStream函数。通过查看Resources源码的注释我们也可以发现,Resources提供了通过类加载器获取资源的功能 2 ClassLoa...

2018-11-02 16:23:43

阅读数 115

评论数 0

原创 Mybatis源码--Sql执行分析

1 概述 前面我们分析了一些Sql解析过程中的一些重要类(Executor、StatementHandler等)的源码,现在就需要对将这些类串起来的流程进行一个详细的分析,所以我们现在来分析一下Mybatis中Sql执行的流程。 2 流程图 从流程图我们大致将Sql执行分成四步,针对第一...

2018-10-31 16:53:08

阅读数 116

评论数 0

原创 Mybatis源码--SqlSessionFactory&SqlSession源码分析

1 概述 这两个类,SqlSessionFactory作为Mybatis的入口提供了各种获取SqlSession的函数。SqlSessionFactory大部分情况下生成唯一的实例,读写分离和多数据库除外。SqlSession主要用于提供CRUD操作。 2 SqlSessionFactory ...

2018-10-31 16:37:44

阅读数 101

评论数 0

原创 Mybatis源码--ParameterHandler源码分析

1 概述 通过前面文章(Mybatis源码分析--StatementHandler源码分析 )的学习,我们已经知道了ParameterHandler是用于绑定参数的。通过查看ParameterHandler的源码,我们知道ParameterHandler是一个接口,而且找个接口仅仅有Defaul...

2018-10-31 11:39:12

阅读数 109

评论数 0

原创 Mybatis源码--StatementHandler源码分析

1 概述 在上一篇文章(Mybatis源码分析--Executor源码分析),我们分析Executor源码的时候就提到了StatementHandler的作用是和数据库对话。当然StatementHandler和数据库对话是依赖于Statement来完成的。在这里随便说一下ParameterHa...

2018-10-31 10:53:21

阅读数 155

评论数 0

原创 Mybatis源码--Executor源码分析

1 概述  Mybatis中所有的Mapper语句的执行都是通过Executor进行的,Executor是Mybatis的一个核心接口。针对Executor的学习,我们先来说说Executor的生成和Executor的分类,然后再来看看其中某个典型方法的具体执行。 2 Executor生成 ...

2018-10-30 20:48:19

阅读数 207

评论数 0

原创 Mybatis源码--MapperProxyFactory&MapperProxy源码分析

1 概述 针对这里的源码分析,我们首先要搞清楚java动态代理,因为就因为这里使用了java动态代理,才能够让我们在并没有mapper接口实现类对应的bean的情况下也能够进行依赖注入。 2 MapperProxyFactory 这个类的主要作用是用于生成mapper接口的Proxy代理。 ...

2018-10-30 20:19:09

阅读数 110

评论数 0

原创 Mybatis源码--MapperMethod源码分析

1 概述 为了便于对Configuration对象的初始化过程的分析,我们这里首先来看看MapperMethod的源码。MapperMethod的作用就是处理Mapper接口函数的注解、参数和返回值。 2 内部类 2.1 MethodSignature 这个内部类主要用于处理函数的参数、注...

2018-10-30 20:05:57

阅读数 102

评论数 0

原创 Java设计模式--责任链模式

1 定义 有多个对象,每个对象持有下一个对象的引用,这样就形成了一条链,请求在这条链上传递,直到某个对象处理了该请求,但是请求的发出者并不知道是哪个对象处理了该请求,所以,在这里我们可以发现责任链模式可以在隐瞒客户端的情况下对系统的逻辑进行动态调整。 2 类图及实例 2.1 类图 这里我们...

2018-10-29 10:40:11

阅读数 50

评论数 0

原创 Mybatis源码--XML配置文件解析(未完待续)

1 概述 前面的文章我们针对Mybatis的初始化的整个过程做了一个分析,我们知道Mybatis的初始化其实就是将配置文件的配置信息最终转换成Configuration对象的一个过程,现在我们就来看一看这个过程到底做了些什么。 2 Configuration类详解 我们知道XML配置文件最终...

2018-10-22 11:53:00

阅读数 95

评论数 0

原创 Mybatis源码--初始化过程分析

1 概述 所有框架的初始化其实就是读取配置文件中的数据来生成配置对应的类的对象。针对Mybatis框架的初始化其实就是读取配置文件和Mapper配置文件来生成Condiguration类的对象。下面我们来看一下具体的初始化过程。 2 利用XML初始化 2.1 应用示例 首先我们来看一个使用...

2018-10-15 17:15:08

阅读数 221

评论数 0

原创 JUC--LinkedBlockingQueue源码分析 (基于JDK1.8) 未完待续

1 概述 LinkedBlockingQueue是一个有界性可选的阻塞队列,也就是再初始化的时候如果设置了大小,则大小就是固定的,否则队列的大小为Integer.MAX_VALUE。通常为了防止数据的膨胀,我们通常再初始化的时候给链表设置一个初始大小。 LinkedBlockingQueue是...

2018-09-27 20:36:17

阅读数 46

评论数 0

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