自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

波波鱼的博客

让技术付诸于梦想

  • 博客(244)
  • 收藏
  • 关注

原创 Java多线程(12)——ThreadLocalRandom源码剖析

目录1.为什么JUC下要新增ThreadLocalRandom?2.ThreadLocalRandom2.1 ThreadLocalRandom使用示例2.2 ThreadLocalRandom的源码分析1.为什么JUC下要新增ThreadLocalRandom?在jdk1.7之前,java.util.Random是使用比较广泛的随机数生成工具类,我们先来看个Random的...

2019-10-08 19:44:36 610

原创 Java基础——Object类和Objects工具类

目录1.Object类1.1 常用方法1.2 Object类中方法常见的问题(1)为什么重写equals时必须重写hashCode方法?(2)wait和notify为什么定义在Object类当中?wait和notify或notifyAll为什么必须在synchronized中去使用?(3)wait和sleep的区别?(4)==和equals的区别?(5)finali...

2019-10-08 11:23:45 964

原创 Java多线程(11)——ThreadLocal源码剖析

目录1.概述2.图解+源码分析ThreadLocal原理2.1 Thread类的两个ThreadLocalMap类型的参数2.2 ThreadLocalMap详解(1)成员变量与内部类(2)构造方法(3)获取前一个/后一个索引的方法和设置扩容阈值的方法(4)getEntry方法(5)ThreadLocal的内存泄露(6)set(7)remove2.3...

2019-10-07 19:10:57 409

原创 Java多线程(13)——Thread类的源码剖析

待更新补充1.Thread与RunnableThread类中继承了接口Runnable的同时组合了Runnbale 所以我们可以将一个Thread的子类的任务交给另一个Thread去执行package Thread;public class ThreadDemo { public static void main(String[] args) { ...

2019-10-07 10:37:42 327

原创 Java多线程(14)——JUC——locks系列(1)——LockSupport使用以及源码分析

目录1.概述2.LockSupport的park-unpark与Object的wait-notitfy的对比3.LockSupport的源码分析3.1 成员变量3.2 park方法3.3 unpark方法1.概述当我要分析AQS,Condition的时候,发现它们当中都使用到了LockSupport,所以先在这里对LockSupport进行学习 LockSuppo...

2019-10-06 21:22:15 434

原创 Java多线程(9)——Unsafe(1)——Unsafe类的源码分析

目录1.概述2.源码分析2.1 Class相关2.2 Object相关2.3 数组相关2.4 并发相关(1)CAS相关(2)线程调度相关(3)volatile相关读写(4)内存屏障相关2.5 直接内存访问(非堆内存)2.6 系统相关3.带英文原注释的源码文章前半部分暂时大多数从此链接粘贴过来,仅学习使用,但在后续学习过程中再对每一部分再做详细...

2019-10-06 20:36:28 291 1

原创 Java集合(6)——源码剖析(3)——LinkedList源码剖析

目录1.概述2.源码剖析2.1 节点类(LinkedList内部类)‘2.2 成员变量2.3 构造函数2.4 添加元素(1)从链表尾部添加元素(2)从链表头部添加元素(3)在指定节点的前后添加元素(4)将集合插入链表2.5 删除元素(1)从头部删除节点(2)从尾部删除元素(3)删除指定节点2.6节点查询2.7实现Queue接口和D...

2019-10-05 16:34:54 180

原创 Mybatis基础(3)——Mybatis的CRUD、Mybatis的参数深入

目录1.mybatis的CRUD案例1.1 保存用户(插入)1.2 更新用户1.3 删除用户1.4根据id查询1.5用户模糊查询1.6查询使用聚合函数2.parameterType 配置参数2.1 传递基本类型2.2 传递实体类型(POJO)2.3 传递POJO包装对象3.Mybatis 的输出结果封装3.1 resultType...

2019-10-05 11:33:05 275

原创 Mybatis基础(2)——自定义Mybatis

目录1.自定义mybatis的预先分析2.代码实现2.1 使用类加载器读取配置文件返回流2.2 封装从主配置文件中读取的信息的配置类2.3 封装从Mapper配置文件中读取出来的信息的类2.4 解析配置文件或注解的类2.4 定义建造SqlSessionFactory的建造者类2.5 定义SqlSession工厂接口和实现类2.6定义SqlSession接口和实...

2019-10-04 21:21:39 452

原创 Mybatis基础(1)——Mybatis入门案例和自定义Mybatis

目录1.Mybatis框架引入与概述1.1 什么是框架1.2 三层架构1.3 持久层技术解决方案1.4 Mybatis框架概述2.Mybatis的入门2.1 Mybatis的环境搭建(1)创建数据库和示例表(2)创建Maven工程和导入坐标2.2 Mybatis的XML配置入门案例(1)创建实体类和Mapper的接口(2)创建Mybatis的主配置文...

2019-10-04 15:48:34 200

原创 Java多线程(28)——JUC——线程池excutors系列(3)——ThreadPoolExcutor(2)——从源码去剖析线程池的原理

1.线程池的运行状态2.execute和submit方法有什么区别?1.execute是Executor制定的规范,submit是ExecutorService制定的规范 2.execute只有接收Runnable参数的一种实现,submit重载的方法,既有接收Runnable参数的实现,也有接收Callable参数的实现 3.execute()...

2019-10-03 22:40:24 279

原创 Java多线程(27)——JUC——线程池excutors系列(2)——ThreadPoolExcutor(1)——创建线程池的底层原理

目录1.概述2.Excutors创建线程池的6种方式2.1 Excutors.newFixedThreadPool(int)(1)使用案例(2)源码及特点2.2Excutors.newSingleThreadExecutor(int)(1)使用案例(2)源码及特点2.3Excutors.newCachedThreadPool(int)(1)使用案例(...

2019-10-03 15:58:54 815

原创 Java多线程(26)——JUC——线程池excutors系列(1)——线程池概述、自己实现一个线程池、jdk中实现的线程池的架构

目录1.线程池概述1.1 线程池产生的背景1.2什么是线程池?1.3使用线程池的好处1.4线程池的主要特点2.自己实现一个线程池2.1 实现线程池的通用规则2.2 实现代码3.线程池的架构1.线程池概述1.1 线程池产生的背景当我们去创建每个线程的时候,都需要为它去分配内存,如虚拟机栈,程序计数器,本地方法栈等,所以创建的过程时间消耗是比较...

2019-10-03 08:00:05 354

原创 Java多线程(25)——JUC——tools系列(5)——Phaser——国庆完成

1.

2019-10-03 07:59:11 108

原创 Java多线程(24)——JUC——tools系列(4)——Exchanger

1.

2019-10-03 07:58:53 157

原创 Java多线程(23)——JUC——tools系列(3)——Semaphore

1.概述信号量主要用于两个目的:一个用于多个共享资源的互斥使用 当有多个共享资源(如停车位只有3个),多个线程(6辆车)都要进行抢夺,同一时间,只有3个线程能抢到锁,其他线程阻塞等待,当有线程执行完释放锁,阻塞等待的线程再次抢夺锁 另一个用于并发线程数的控制2.使用案例使用案例:import java.util.concurrent.Semaphore;...

2019-10-03 07:58:37 177

原创 Java多线程(22)——JUC——tools系列(2)——CyclicBarrier——待完成

1.概述CyclicBarrier的字面意思是可循环(Cyclic)使用的屏障(Barrier),它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活,线程进入屏障通过CyclicBarrier的await()方法2.使用案例案例1:集齐7颗龙珠,就能召唤神龙import ja...

2019-10-03 07:58:22 174

原创 Java多线程(21)——JUC——tools系列(1)——CountDownLatch——待完成

1.概述CountDownLatch有两种典型用法: 1.让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒 将 CountDownLatch 的计数器初始化为n :new CountDownLatch(n),每当一个任务线程执行完毕,就将计数器减1 CountDownLatch主要有两个方法, 当一个或多个线程调用await方法时,调用线程会被阻塞 其他线程调...

2019-10-03 07:57:48 187

原创 Java集合(26)——并发集合(14)——阻塞队列(7)——LinkedBlockingDeque源码分析——国庆完成

1

2019-10-03 07:57:03 116

原创 Java集合(25)——并发集合(13)——阻塞队列(6)——DelayQueue源码分析

1

2019-10-03 07:55:01 106

原创 Java集合(24)——并发集合(12)——阻塞队列(5)——PriorityBlockingQueue源码分析——待完成

1.

2019-10-02 16:57:58 96

原创 Java集合(23)——并发集合(11)——阻塞队列(4)——LinkedTransferQueue源码分析——待完成

1.概述

2019-10-02 16:57:44 86

原创 Java集合(22)——并发集合(10)——阻塞队列(3)——SynchronousQueue源码分析——待完成

1.SynchronousQueue:一个不存储元素的阻塞队列,每个插入操作必须等到另一个线程调用移除操作,否则插入操作一直处于阻塞状态,吞吐量通常要高于...

2019-10-02 16:55:53 132 1

原创 Java集合(21)——并发集合(9)——阻塞队列(2)——LinkedBlockingQueue源码分析——待完成

1.概述LinkedBlockingQueue:一个基于链表结构的阻塞队列,此队列按照FIFO(先进先出)排序元素,吞吐量通常要高于ArrayBlockingQueue2.使用案例3.源码分析...

2019-10-02 16:55:07 134

原创 Java集合(20)——并发集合(8)——阻塞队列(1)——ArrayBlockingQueue源码分析

目录1.概述2.使用案例3.源码分析3.1 重要属性3.2 构造方法3.3 私有方法入队与出队(1)入队(2)出队3.4 put和take方法(1)put(2)take3.5 offer和poll(1)offer(2)poll3.6 peek3.7 remainingCapacity3.8 remove4.总结1.概述...

2019-10-02 16:54:26 166

原创 Java集合(19)——并发集合(7)——阻塞队列(0)——阻塞队列的架构和方法剖析

目录1.什么是阻塞队列2.为什么要使用阻塞队列,有哪些好处?3.阻塞队列的架构和种类4.BlockingQueue的核心方法(1)抛出异常(2)特殊值(3)阻塞(4)超时1.什么是阻塞队列阻塞队列,顾名思义,首先它是一个队列 ,而一个阻塞队列在数据结构中所起的作用大致如图:线程1往阻塞队列中添加元素,而线程2从阻塞队列中移除元素 当阻塞队列为空时,...

2019-10-02 16:52:48 196

原创 Java集合(18)——并发集合(6)——ConcurrentLinkedQueue源码分析

1.概述2.使用3.源码剖析

2019-10-02 16:48:20 103

原创 Java集合(17)——并发集合(5)——ConcurrentSkipListMap和ConcurrentSkipListSet源码剖析

1.

2019-10-02 16:44:16 114

原创 Java集合(16)——并发集合(4)——CopyOnWriteArraySet源码剖析

1.CopyOnWriteArraySet

2019-10-02 16:43:57 95

原创 Java集合(15)——并发集合(3)——ConcurrentHashMap源码剖析

1.ConcurrentHashMap

2019-10-02 16:43:51 86

原创 Java8的新特性(1)——函数式接口

目录1.函数式接口1.1 概念1.2 格式1.3@FunctionalInterface注解1.4 自定义函数式接口的使用2.函数式编程2.1 Lambda的延迟执行(1)性能浪费的日志案例(2)使用Lambda表达式来改进上述案例2.2使用Lambda作为参数和返回值(1)使用Lambda作为参数(2)使用Lambda作为返回值3.常用函...

2019-10-01 22:51:55 455

原创 Java多线程(16)——JUC——locks系列(3)——AQS

目录0.locks包简介1.AQS简介1.1 AQS是什么1.2AQS框架实现的一些点1.3 AQS的层次结构2.AQS原理及源码详解2.1状态(1)state实现独占锁的图解(2)state实现可重入锁的图解2.2节点Node2.3同步队列2.4 加锁函数acquire(1)tryAcquire(int)(2)addWaiter(N...

2019-09-27 20:10:18 291

原创 Java多线程——LongAdder(jdk1.8新增)源码分析

目录1.类的定义以及重要字段解析1.1 成员变量cells1.2 成员变量cellsBusy1.3 成员变量base2.方法详解2.1 add方法详解2.2longAccumulate方法详解3.hash的生成详解4.总结1.类的定义以及重要字段解析上面的LongAdder的定义结构看该类实现了Striped64抽象类。Striped64类...

2019-09-27 15:27:46 145

原创 Java多线程(20)——悲观锁和乐观锁、公平锁和非公平锁、可重入锁、自旋锁、读锁(共享锁)和写锁(独占锁)

目录1.悲观锁和乐观锁1.1 什么是悲观锁和乐观锁?(1)悲观锁(2)乐观锁1.2 两种锁的使用场景1.3 乐观锁的两种实现方式(1)版本号机制(2)CAS1.4 乐观锁的优缺点(1)优点(2)缺点2.公平锁和非公平锁2.1 是什么?2.2 两者区别3.可重入锁(递归锁)3.1 是什么?3.2 代码演示理解3.3 自己手写一个...

2019-09-27 12:45:44 1014

原创 Java多线程(6)——synchronized——synchronized的实现原理(2)

1.锁的四种状态无锁、 偏向锁、 轻量级锁、 重量级锁 锁降级2.锁优化技术1.自旋锁与自适应自旋锁 2.锁消除 3.锁粗化

2019-09-27 07:37:00 138

原创 Java多线程(5)——synchronized——synchronized的实现原理(1)

目录1.实现synchronized的基础1.1 HotSpot虚拟机对象在内存中的布局(1)对象头(2)实例数据(3)对齐填充1.2 Monitor2.synchronized在字节码层面的语义实现3.锁的内存语义3.1 synchronized与可见性3.2synchronized与原子性3.3synchronized与有序性1.实现sync...

2019-09-27 07:36:31 200

原创 Java多线程(4)——synchronized——线程安全、synchronized的基本使用

目录1.线程安全2.synchronized的基本使用2.1 同步代码块2.2 同步方法1.线程安全什么叫线程安全?如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样 的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 用模拟卖票案例引入线程安全问题:代码:public class TicketR...

2019-09-27 07:29:48 267

原创 SpringBoot基础使用(2)——SpringBoot与配置

1.SpringBoot配置文件类型和作用通过上一篇可以知道 SpringBoot是基于约定的,所以很多配置都有默认值, 配置文件的作用: 但如果想使用自己的配置替换默认配置的话,就可以使用 application.properties或者application.yml(application.yaml)进行配置。 SpringBoot默认会从Resource...

2019-09-25 16:14:00 151

原创 消息中间件(4)——MQ之ActiveMQ(4)——Broker、Spring、SpringBoot整合ActiveMQ

目录1.ActiveMQ的Broker2.Spring整合ActiveMQ3.SpringBoot整合ActiveMQ3.1 队列(1)队列生产者(2)队列消费者3.2 主题(1)主题生产者(2)主题消费者1.ActiveMQ的Broker相当于一个ActiveMQ服务器实例 Broker其实就是实现了用代码的形式启动ActiveMQ将MQ嵌入到Jav...

2019-09-24 17:27:59 613

原创 消息中间件(3)——MQ之ActiveMQ(3)——JMS

目录1.什么是JMS2.四种MQ的落地产品的对比3.JMS的四大组成元素及特点4.消息可靠性4.1 持久性4.2 事务4.3 签收4.4 多结点集群5.点对点和发布订阅的总结5.1 点对点总结5.2 发布订阅总结1.什么是JMS在解释JMS之前,我们先来看什么是JavaaSE和JavaEEJavaSE是Java这门编程语言的基础语法部分J...

2019-09-23 23:47:14 263 1

空空如也

空空如也

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

TA关注的人

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