自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (3)
  • 问答 (2)
  • 收藏
  • 关注

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

1 概述LinkedBlockingQueue是一个有界性可选的阻塞队列,也就是再初始化的时候如果设置了大小,则大小就是固定的,否则队列的大小为Integer.MAX_VALUE。通常为了防止数据的膨胀,我们通常再初始化的时候给链表设置一个初始大小。LinkedBlockingQueue是基于链表实现的一个FIFO队列,链表的首节点是添加时间最久的数据,而链表的尾节点是最早添加的数据,所以...

2018-09-27 20:36:17 205

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

1 概述这是一个依赖于数组实现的有界的阻塞队列,采用先进先出的规则,队列的头元素是入队最久的元素,队列的尾元素是入队时间最晚的元素。队列的大小在队列初始化的时候一旦确定了就没法进行改变,当尝试向满队列中插入数据和从空队列中获取数据都将产生阻塞。另一方面这个队列也可以保证等待线程的公平性,只需要再初始化的时候设置公平性即可,当然,默认情况下是非公平的。2 使用示例ArrayBlockin...

2018-09-27 18:32:47 243

原创 JUC--队列概述

1 概述Java中的队列是一个FIFO的数据结构,适用于生产者消费者模式。Queue接口与List、Set同一级别,都是继承了Collection接口,LinkedList也实现了Deque接口。当然java中的队列有阻塞和非阻塞队列,下面我们就来看一看Java中队列都有哪些实现。2 类图下面我们来看一下java中队列的家庭成员。3 详细说明3.1 QueueQue...

2018-09-26 19:52:53 781

原创 Java集合框架--HashSet源码分析(基于JDK1.8)

1 概述前面的文章,我们分析了List和Map的一些实现类。现在我们开始分析Set的实现类。Set和List相同都是用于存放数据的集合,不同的是Set中的元素不允许重复(通过hashCode和equals函数来保证不重复性),如果数据相同就会进行覆盖。Set的实现是依赖于Map的实现,我们知道Map中的key也是不允许重复的。接下来我们就来看一下Set的具体实现类HashMap的实现吧...

2018-09-26 16:23:55 245

原创 Java集合框架--LinkedHashMap源码分析(基于JDK1.8)

1 概述前面我们对HashMap的源码进行了分析(详情可以参考:Java集合框架--HashMap源码分析(二)(基于JDK1.8),我们知道HashMap针对数据的插入是通过计算key的hash值和table大小来确定在数组及链表当中的位置的,所以HashMap没法保存插入数据的顺序。为了保存插入元素的顺序,就有了我们现在要提到的LinkedHashMap,从类的命名我们可以猜想,Linke...

2018-09-26 11:32:10 233

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

1 概述前面我们分析了ConcurrentHashMap(JDK1.7)(请参考JUC--ConcurrentHashMap源码分析(一)(基于JDK1.7))和HashMap(JDK1.8)(请参考Java集合框架--HashMap源码分析(二)(基于JDK1.8))的源码,我们直到ConcurrentHashMap其实就是针对HashMap(JDK1.7)进行了分段加锁的方式,也就是针对H...

2018-09-25 11:19:48 398

原创 JUC--ConcurrentHashMap源码分析(一)(基于JDK1.7)

1 概述前面分析研究了HashMap,我们知道HashMap不是线程安全的,那么如果需要线程安全的HashMap怎么办呢?这个时候我们有几种解决方法。(1)使用HashTable代替HashMap;(2)使用Collections.synchronizeMap(hashMap);(3)使用ConcurrentHashMap;针对这三种方法得区别我们在文章后面再谈,下面我们就针对...

2018-09-18 11:02:34 239

原创 Java集合框架--HashMap源码分析(一)(基于JDK1.7)

1 概述Map是我们常使用得一种用于存放键值对的数据结构,现在我们来分析一下Map的实现类HashMap的具体实现,我们直到JDK1.8实现HashMap是使用数组+链表的数据结构,而JDK1.8为了提高查询效率改进了数据结构,加入了红黑树的数据结构来实现。现在在我们分析JDK1.8的HashMap之前先来看一下JDK1.7的实现。2 JDK1.7实现2.1 数据结构图我们首先来看...

2018-09-12 09:52:26 230

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

1 概述通过前面(参考JUC-- Semaphore学习(一)简介和使用 )对Semaphore的介绍,我们对Semaphore有了一个基本的认识,我们知道Semaphore通常用于限制对资源使用的线程数量,现在就要针对Semaphore的源码进行分析,Semaphore的结构如下:从上图我们可以发现,这里又出现了AQS的身影,我们可以看出AQS的重要性。所以再学习JUC的时候非常有必...

2018-09-07 17:23:22 269 1

原创 JUC--Semaphore简介和使用

1 概述通过查看JDK的API,我们可以发现对Semaphore的定义如下:信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。Semaphore(信号量)限制着访问某些资源...

2018-09-06 16:22:50 421

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

1 概述通过前面对CyclicBarrier(请参考JUC-- CyclicBarrier学习(一)简介和使用)的介绍,我们对CyclicBarrier的使用有了一个深度的认识,现在就要针对CyclicBarrier的源码进行分析,CyclicBarrier的结构如下:从上图我们可以猜想CyclicBarrier的实现主要就是依靠ReentrantLock和Condition。2 ...

2018-09-06 10:38:11 220

原创 JUC--CyclicBarrier简介和使用

1 概述CyclicBarrier允许一组线程相互等待,直到到达某个公共的屏障点这组线程才继续执行。在涉及一组固定大小的线程的程序当中,这组线程必须相互等待,这个时候CyclicBarrier就显得非常有用了,由于Barrier(栅栏)在释放线程后可以从新使用,所以Barrier被称为Cyclic(循环)Barrier(栅栏)。2 示例下面我们来看看CyclicBarrier是如何使用...

2018-09-06 09:22:03 322

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

1 概述通过前面的文章(JUC--Condition学习(一)简介和使用),我们对Condition有了一个初步的认识,并且我们也知道了如何使用Condition,现在我们就来看一看Condition到底是如何实现线程的等待和唤醒的。2 等待队列在我们学习AQS的时候,我们知道当线程获取锁失败的时候会进入CLH队列,以等待状态(WAITING)存在于同步队列。而当我们调用Conditi...

2018-09-04 11:46:11 471

原创 JUC--Condition简介和使用

1 概述我们知道针对synchronized关键字实现的加锁操作操作我们可以使用wait和notify来实现线程的等待和唤醒线程,但是我们清楚这个时候就只能有一个线程进入等待,那么如果我们想要多个线程等待,同时我们可以唤醒多个线程怎么办呢?这个时候就需要用到Lock对应的Condition来完成了。我们知道针对Lock与synchronized的区别在于,Lock的操作更加灵活,并且可以响...

2018-09-04 10:24:09 2034

Mybatis--SQL解析流程图

此图用于展示Mybatis的SQL解析的具体流程,包含了SqlSession和Mapper动态代理对象的获取步骤。通过查阅此图可以对Mybatis的SQL解析流程有一个清晰的认识。

2018-11-02

Xshell+Xftp

使用时直接解压,并打开使用必读.txt文件查看使用方法。

2018-06-06

JAVA面向对象之继承

Java编程语言,对于面向对象中继承的使用

2015-09-13

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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