- 博客(48)
- 收藏
- 关注
原创 一文搞懂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
原创 跳表原理分析及实现
跳表可以达到和红黑树一样的时间复杂度O(logN),且实现简单,Redis中的有序集合对象的底层数据结构就使用了跳表。本篇文章将对跳表的实现进行学习。
2023-01-28 21:18:20 499 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使用-依赖准备
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
原创 二十三. 并发实战-ScheduledThreadPoolExecutor使用
本篇文章将对计划线程池ScheduledThreadPoolExecutor的使用进行说明。
2023-01-18 22:09:48 730
原创 十四. 线程睡眠/阻塞/等待的总结
已知让线程睡眠(阻塞或等待)的方式有四种,分别是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关注的人