- 博客(13)
- 资源 (4)
- 收藏
- 关注
原创 一道面试题引发的spring源码阅读
前言 最近读到一道面试题,谈谈spring的实例化,比如一个类有多个构造方法的话,spring该选择哪个构造方法来进行实例化呢 正文开始 spring的实例化过程中会有一步推断构造方法的方法,但是要知道,spring是个非常复杂的框架,对于这个面试题,为了避免篇幅过长,我就不从spring容器初始化开始说起了,这里我就画一下从实例化单例对象方法开始直到推断构造方法的调用链,然后再来详细的讨论...
2020-04-27 16:32:48 968
原创 记一次mybatis源码阅读和分析过程(2)sqlsession的创建和执行流程、查询执行流程分析
前言 上一讲我们分析到了sqlSessionFactory的执行流程,这一次我们来分析sqlsession的创建和执行流程还有查询的执行过程 开始 我们看这句代码 SqlSession sqlSession = sqlSessionFactory.openSession(); //这是个接口,就是sqlSession的工厂 public interface SqlSessionFact...
2020-04-12 22:11:59 609
原创 记一次mybatis源码阅读和分析过程(1)sqlsessionFactory的创建和执行流程的分析
前言 最近在准备换工作,所以开始复习java和常用框架的知识,mybatis框架是工作中常用的一个ORM框架,在复习的过程中,我就简单阅读了一下mybatis的源码,通过debug源码,我更加理解了mybatis的配置原理和映射原理,同时也增强了自己的源码阅读和分析能力 开始 首先我们新建一个maven工程,引入mybatis和mysql的jdbc驱动 <dependencies&...
2020-04-12 17:12:07 417
原创 并发编程的艺术之读书笔记(十六)
前言: 上一部分我们学习了java的线程池,这一部分,我们来学习java的Executor框架 1. Executor框架简介 java多线程程序通常把应用分解成若干个任务,然后使用用户级的调度器(Executor框架)将这些任务映射为固定数量的线程。Executor框架的结构如下 任务。包括任务需要实现的接口:Runnable接口或Callable接口 任务的执行,包括任务执行机制的核...
2020-04-04 21:21:58 262
原创 并发编程的艺术之读书笔记(十五)
前言: 上一部分,我们简单的学习了java的并发工具类,这部分我们开始学习java的线程池 1. 什么是线程池 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。这避免了在处理短时间任务时创建与销毁线程的代价。java中的线程池是运用场景最多的并发框架,几乎所有需要异步或者并发执行任务的程序都可以使用线程池,在开发过程中,合理使用线程池可以带来3个好处...
2020-04-04 17:41:51 251
原创 并发编程的艺术之读书笔记(十四)
前言: 上一部分我们一起学习了java中的原子类,这一部分,我们来学习java中的并发工具类 1. CountDownLatch CountDownLatch是一个同步工具类,它允许一个或多个线程等待其他线程各自执行完毕后再执行。CountDownLatch通过计数器来实现,CountDownLatch的构造函数接收一个int类型的参数作为计数器,计数器的初始值是线程的数量。每当一个线程执行...
2020-04-04 14:38:58 851
原创 并发编程的艺术之读书笔记(十三)
前言: 上一部分,我们一起学习了java中的Fork/Join框架,这一部分,我们来一起学习java中的原子类 我们知道当多个线程同时更新一个变量,可能会导致更新不同步的问题,比如变量i=1,有两个线程A和B,A操作i=i+1,B操作i=i+1,预期得到i=3,结果i却等于2,那是因为A和B线程在更新i时拿到的i都是1,这就是多线程导致的不同步问题,为了解决这个问题,我们一般会使用synchr...
2020-04-03 13:22:34 282
原创 并发编程的艺术之读书笔记(十二)
前言: 上一部分,我们一起学习了java中的阻塞队列,这一部分,我们来学习Fork/Join框架 1. 什么是Fork/Join框架 java从1.7开始提供一个用于并行执行任务的框架,是一个把大任务分成若干个小任务,最后汇总小任务的结果得到大任务结果的框架。 我们通过Fork和Join这两个单词来简单理解一下Fork/Join框架。Fork就是把一个大任务切分为若干个任务并行的执行,Jo...
2020-04-02 23:01:21 239
原创 并发编程的艺术之读书笔记(十一)
前言: 上一部分,我们一起学习了ConcurrentHashMap的概念,部分实现原理及使用,这一部分,我们来学习java中的阻塞队列
2020-04-02 21:13:34 890
原创 并发编程的艺术之读书笔记(十)
前言: 上一部分我们一起学习了Condition接口,这一部分我们一起来学习并发包中的ConcurrentHashMap。 1. ConcurrentHashMap的实现原理及使用 首先我们要知道什么是ConcurrentHashMap,ConcurrentHashMap是一个保证线程安全的高效的HashMap,那么我们为什么要使用ConcurrentHashMap呢,那是因为在并发编程中使...
2020-04-02 15:37:48 956
转载 [转]HashMap多线程死循环问题
正如上篇文中所说,HashMap不是线程安全的,在被多线程共享操作时,会有问题,具体什么问题呢,一直没有个清晰的理解,今天写了个测试程序调了一下,才明白其中道理。 主要是多线程同时put时,如果同时触发了rehash操作,会导致HashMap中的链表中出现循环节点,进而使得后面get的时候,会死循环。【关于什么是rehash,读者可以自行去google了】 本文主要参考了:http://co...
2020-04-02 10:18:02 1132
原创 并发编程的艺术之读书笔记(八)
前言: 上一部分,我们学习了同步器的概念及用法,分析了相关源码,这一部分,我们来一起学习可重入锁和读写锁 1. 可重入锁 可重入锁的意思是同一个线程获得锁之后可以再后续执行过程中再次获得锁而不会造成死锁或阻塞,java中synchronized和ReentrantLock都是可重入锁,这里我们来讨论Lock接口下的ReentrantLock。 ReentrantLock重入锁使用lock(...
2020-04-01 13:59:22 850
Another.Redis.Desktop.Manager.1.3.0.exe
2020-03-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人