自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DogLee奋斗屋

用最朴实的话说技术

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

原创 一文搞懂Reactor模型

一文搞懂Reactor模型

2023-03-15 20:58:25 184

原创 一文搞懂MyBatis测试工程搭建及与Springboot整合

本篇文章将对如何搭建一个MyBatis测试工程进行介绍,并在此基础上介绍Springboot整合MyBatis。

2023-02-04 10:25:15 584

原创 一文搞懂MyBatis中的基础概念

先对JDBC编程进行介绍,再引出对MyBatis框架的介绍。涵盖对MyBatis框架的优势分析,以及基础概念的讲解。

2023-02-03 21:56:47 345

原创 一文搞懂MyBatis中的TypeHandler

结合示例工程,对Mybatis中的类型处理器TypeHandler的定义,实现方式,生效条件进行了深入分析。

2023-02-01 20:59:29 2468

原创 PowerMock使用-Answer-Spy

针对同一方法多次被调用且不同入参需要Spy不同出参的情况,可以使用Answer。本篇文章将对Answer的使用进行说明。

2023-01-28 21:49:09 169

原创 PowerMock使用-Spy静态方法

本篇文章将说明如何使用PowerMock对静态方法进行Spy。

2023-01-28 21:41:13 807

原创 PowerMock使用-Spy私有方法

本篇文章将说明如何使用PowerMock对私有方法进行Spy。

2023-01-28 21:27:37 778

原创 跳表原理分析及实现

跳表可以达到和红黑树一样的时间复杂度O(logN),且实现简单,Redis中的有序集合对象的底层数据结构就使用了跳表。本篇文章将对跳表的实现进行学习。

2023-01-28 21:18:20 499 1

原创 PowerMock使用-Spy公共方法

本篇文章将说明如何使用PowerMock对公共方法进行Spy。

2023-01-28 00:06:15 3196 1

原创 PowerMock使用-Answer-Mock

针对同一方法多次被调用且不同入参需要Mock不同出参的情况,可以使用Answer。本篇文章将对Answer的使用进行说明。

2023-01-27 23:43:31 555

原创 PowerMock使用-Whitebox

Whitebox可以用于方便的访问类内部的各种字段和方法,是一个简单实用的基于反射的单元测试工具类。本篇文章将对Whitebox的常用方法进行介绍。

2023-01-27 23:28:03 2131

原创 PowerMock使用-Mock静态私有方法

本篇文章将说明如何使用PowerMock对静态私有方法进行Mock。

2023-01-27 23:05:18 2444

原创 PowerMock使用-Mock静态公共方法

本篇文章将说明如何使用PowerMock对静态公共方法进行Mock。

2023-01-27 22:56:39 1307

原创 PowerMock使用-Mock私有方法

本篇文章将说明如何使用PowerMock对私有方法进行Mock。

2023-01-27 22:46:51 9900

原创 PowerMock使用-Mock Final公共方法

本篇文章将说明如何使用PowerMock对final公共方法进行Mock。

2023-01-27 22:33:10 1602

原创 PowerMock使用-Mock公共方法

本篇文章将说明如何使用PowerMock对公共方法进行Mock。

2023-01-27 22:24:07 1203

原创 PowerMock使用-依赖准备

PowerMock是一个单元测试框架,可以模拟静态方法,私有方法和final方法等来简化单元测试的编写。本篇文章将对使用PowerMock需要的依赖进行介绍。

2023-01-27 21:44:03 2983

原创 堆原理分析及优先级队列实现

堆是一颗具有特定性质的二叉树,基于堆可以实现优先级队列,在搜索,插入和删除操作上的时间复杂度均为O(logn),在找到最大或最小元素操作上的时间复杂度均为O(1)。本篇文章将对堆的原理和性质进行分析,并提供基于JAVA语言的堆的实现,最后会再基于堆,实现一个简单优先级队列。

2023-01-27 20:49:32 424

原创 三十. JAVA线程调度机制与应用

说到并发,离不开线程这个概念,在操作系统层面有线程,在JAVA进程层面也有线程。同时还知道线程既可以共享进程资源,又可以被独立调度,那么JAVA进程的线程,也肯定存在一种调度机制。本篇文章将对操作系统的线程的三种实现方式进行说明,然后再对JAVA线程的实现方式进行阐述,最后针对JAVA线程的调度机制进行解释并结合例子说明JAVA线程调度机制的应用。

2023-01-27 12:10:33 939

原创 二十九.线程的中断详解

JAVA中的线程,有一个状态叫做中断状态,用于标记线程是否被中断过。通过对线程中断状态的判断,可以实现一些例如优雅终止线程,唤醒线程等功能。在Thread类中有interrupt(),interrupted()和isInterrupted()方法与线程的中断有关,本篇文章将对这些方法的具体作用进行详细解释。在文章的最后,还会通过一个典型例子,演示如何通过线程的中断状态来优雅的终止线程。

2023-01-23 23:48:26 660

原创 二十八. Semaphore的使用详解

Semaphore在初始化时需要指定许可证数,Semaphore#acquire方法会尝试获取一定数量的许可证,若许可证数量不足,则当前线程进入阻塞状态。相应地,获取到了许可证的线程,在执行完毕后,需要调用Semaphore#release方法来归还许可证。

2023-01-22 20:39:09 1373

原创 二十七. 并发实战-CountDownLatch的使用

本篇文章,将对CountDownLatch的创建和使用进行说明。

2023-01-21 11:59:15 211

原创 二十六. 并发实战-读写锁的使用

本篇文章将对读写锁ReentrantReadWriteLock的创建,使用场景,不同加锁方式进行说明和总结。

2023-01-21 11:31:10 220

原创 二十五. 并发实战-构造死锁

本篇文章将对死锁的产生和死锁的构造进行说明。

2023-01-19 21:36:32 196

原创 二十四. 并发实战-ReentrantLock使用

本篇文章将对JUC并发包里提供的ReentrantLock的使用进行说明。

2023-01-19 21:09:40 211

原创 二十三. 并发实战-ScheduledThreadPoolExecutor使用

本篇文章将对计划线程池ScheduledThreadPoolExecutor的使用进行说明。

2023-01-18 22:09:48 730

原创 二十二. 并发实战-ThreadPoolExecutor使用

本篇文章将对线程池ThreadPoolExecutor的使用进行说明。

2023-01-17 22:10:08 647

原创 二十一. 并发实战-线程的创建方式

本篇文章将对JAVA中的线程创建进行实战说明。

2023-01-16 23:30:36 115

原创 十四. 线程睡眠/阻塞/等待的总结

已知让线程睡眠(阻塞或等待)的方式有四种,分别是Thread.sleep(time),LockSupport.park(),Object.wait()和Condition.await(),本篇文章对上述四种方式进行一个简单对比。

2023-01-13 21:36:58 163

原创 十三. 等待通知机制之Condition接口

Condition接口定义了一组方法用于配合Lock实现等待/通知模式,与之作为对比的是,用于配合synchronized关键字实现等待/通知模式的定义在java.lang.Object上的监视器方法wait()和notify()等。

2023-01-13 21:35:24 143

原创 十二. 读写锁-ReentrantReadWriteLock原理分析

读写锁,即ReentrantReadWriteLock,同一时刻可以允许多个读线程获取锁,但当写线程获取锁后,读线程和其它写线程应该被阻塞。

2023-01-13 21:34:21 93

原创 十一. 重入锁-ReentrantLock原理分析

重入锁,即ReentrantLock,继承于Lock接口,提供锁重入功能。重入锁与不可重入锁的区别在于,重入锁支持已经获取锁的线程重复对锁资源进行获取。

2023-01-13 21:32:50 248

原创 九. Executor框架中的任务和任务的执行结果

Executor框架中,提供了Runnable接口和Callable接口用于定义任务,提供了Future接口来表示任务的异步计算结果,本篇文章将对任务和任务的执行结果进行分析。

2023-01-12 22:22:24 397

原创 八. ScheduledThreadPoolExecutor原理解析-DelayedWorkQueue

DelayedWorkQueue是ScheduledThreadPoolExecutor线程池使用的任务阻塞队列。DelayedWorkQueue是基于小根堆实现的延时优先级队列,队列中的元素就是ScheduledFutureTask,因此DelayedWorkQueue的队列头节点任务总是最优先被执行的任务。本篇文章将对DelayedWorkQueue的实现原理进行分析。

2023-01-12 22:21:12 538

原创 七. ScheduledThreadPoolExecutor原理解析-ScheduledFutureTask

已知提交到ScheduledThreadPoolExecutor中的任务均会被封装成ScheduledFutureTask,因此本篇文章将对ScheduledFutureTask的原理进行分析。

2023-01-12 22:19:49 217

原创 六. ScheduledThreadPoolExecutor原理解析-任务提交

ScheduledThreadPoolExecutor继承于ThreadPoolExecutor,扩展实现了延时执行任务和定时执行任务的功能。ScheduledThreadPoolExecutor存储任务的队列为DelayedWorkQueue,是一个基于小根堆实现的延时优先级队列,ScheduledThreadPoolExecutor会将每一个提交到线程池的任务先封装为ScheduledFutureTask,然后再插入到DelayedWorkQueue中。

2023-01-12 22:18:14 179

原创 五. ThreadPoolExecutor原理解析-关闭线程池

关闭ThreadPoolExecutor的方法有shutdown()和shutdownNow()方法,本篇文章将对ThreadPoolExecutor的关闭进行分析。

2023-01-12 22:16:27 2801

原创 四. ThreadPoolExecutor原理解析-执行任务

ThreadPoolExecutor执行任务的入口方法是execute(),本篇文章将结合ThreadPoolExecutor部分源码,对ThreadPoolExecutor执行任务的流程进行分析。

2023-01-12 22:13:38 264

原创 三. ThreadPoolExecutor原理解析-认识线程池状态

本篇文章将结合ThreadPoolExecutor的部分源码,认识ThreadPoolExecutor中的五种线程池状态。

2023-01-12 22:11:32 193

原创 二. Executor框架简介

Executor框架提供了组件来管理Java中的线程,Executor框架将其分为任务,线程执行任务,任务执行结果三部分。

2023-01-12 22:08:33 83

空空如也

空空如也

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

TA关注的人

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