远行客
Mybatis源码分析(三) SQL执行过程 Mybatis源码分析(三) SQL执行过程
selectOne方法分析//DefaultSqlSession.java @Override public <T> T selectOne(String statement, Object parameter) {
2019-10-26
Mybatis源码分析(二) SQL执行入口 Mybatis源码分析(二) SQL执行入口
MyBatis工作流程简述使用sqlSession(旧)public static void main(String[] args) { InputStream inputStream = Resources.getR
2019-10-20
Mybatis源码分析(一) 配置文件解析过程 Mybatis源码分析(一) 配置文件解析过程
概述xml文件中的sql节点会在初始化时被解析成MappedStatement对象,其中的sql语句会被解析成SqlSource对象,动态Sql节点等由SqlNode接口的相应实现类进行表示 XMLConfigBuilder:解析
2019-10-19
CAS CAS
概述    CAS是乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。        CAS 操作中包含三个操作
2019-10-13
ThreadPoolExecutor ThreadPoolExecutor
类图 Executor是一个顶层接口,在它里面只声明了一个方法execute(Runnable),返回值为void,参数为Runnable类型,从字面意思可以理解,就是用来执行传进去的任务的; 然后ExecutorService接口
2019-10-07
LinkedList源码分析 LinkedList源码分析
LinkedList 的继承体系较为复杂,继承自 AbstractSequentialList,同时又实现了 List 和 Deque 接口 AbstractSequentialList 提供了一套基于顺序访问的接口。通过继承此类,子类
2019-10-06
ArrayList源码分析 ArrayList源码分析
源码分析成员变量 /** * 默认容量 */ private static final int DEFAULT_CAPACITY = 10; /** * 一个空数组 *
2019-10-03
sahrding-JDBC分片策略及算法 sahrding-JDBC分片策略及算法
分片策略StandardShardingStrategy标准分片策略。提供对SQL语句中的=, IN和BETWEEN AND的分片操作支持。 StandardShardingStrategy只支持单分片键,提供PreciseShard
2019-10-01
2019-2年面试总结 2019-2年面试总结
Spring事务传播行为 required: 如果存在事务则加入,不存在则新建事务(默认) supports: 如果存在事务则加入,不存在以非事务的方式执行 mandatory: 如果存在事务则加入,如果不存在则抛出异常 nested
2019-03-14
Lock Lock
Lock public interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; // 可以响应中断
2018-07-25
ThreadLocal ThreadLocal
ThreadLocal 概述  ThreadLocal 又名 线程局部变量 ,是 Java 中一种较为特殊的线程绑定机制,可以为每一个使用该变量的线程都提供一个变量值的副本,并且每一个线程都可以独立地改变自己的副本,而不会与其它线程的副
2018-07-20
volatile volatile
摘要  在 Java 并发编程中,要想使并发程序能够正确地执行,必须要保证三条原则,即:原子性、可见性和有序性。只要有一条原则没有被保证,就有可能会导致程序运行不正确。volatile关键字 被用来保证可见性,即保证共享变量的内存可见
2018-07-15
Synchronized Synchronized
线程安全问题在线程安全性的定义中,最核心的概念就是正确性。当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么这个类就是线程安全的
2018-07-12
Thread Thread
线程的生命周期 状态 描述 new 创建状态—>使用new关键字,创建一个线程,但是还没有调用start方法,仅仅由JVM分配内存,并初始化成员变量 runnable/start 就緒状态—>调用start(
2018-07-08
HashMap源码分析 HashMap源码分析
概述: hashmap差不多是由链表组成的数组,当添加一个元素(key-value)时,就首先计算元素key的hash值,以此确定插入数组中的位置。当hash值相同时就放在已存在元素的后面形成链表,当链表长度太大时,链表就转换为红黑树。
2018-07-03
代理模式 代理模式
静态代理  静态代理:由程序员创建或特定工具自动生成源代码,也就是在编译时就已经将接口,被代理类,代理类等确定下来。在程序运行之前,代理类的.class文件就已经生成。 静态代理简单实现  例:假如一个班的同学要向老师交班费,
2018-06-26
建造者模式 建造者模式
1. 重叠构造器模式在这种模式下,我们提供的第一个构造器只有必要的参数,第二个构造器有一个可选参数,第三个构造器有两个可选参数,以此类推,最后一个构造器含有所有参数。 public class Person { private
2018-06-21
接口和抽象类 接口和抽象类
抽象类我们都知道在面向对象的领域一切都是对象。同时,所有的对象都是通过类来描述的,但是并不是所有的类都是可以描述对象(对象 = 状态 + 行为)的。如果一个类没有足够的信息来描述一个具体的对象,那么我们就可以将这样的类设为抽象类。抽象类
2018-06-06
2 / 3