java
文章平均质量分 93
小水牛...
这个作者很懒,什么都没留下…
展开
-
分布式事务 - RocketMQ 实现事务的最终一致
RocketMQ实现事务的最终一致原创 2021-01-18 09:58:21 · 618 阅读 · 0 评论 -
mybatis-plus 4 其他特性
mybatis-plus 4原创 2020-09-08 21:40:32 · 683 阅读 · 0 评论 -
mybatis-plus 3 条件构造器
mybatis-plus 3 条件构造器前言allEqeq & negt & gelt & lebetweenlikeisNull & isNotNullin & notIninSql & notInSqlgroupBy & havingorderByfuncor & andapplylastexists & notExistsQueryWrapper#selectUpdateWrapper#set & setSqllambda原创 2020-09-08 21:40:11 · 1187 阅读 · 0 评论 -
mybatis-plus 2 —— CRUD 封装的使用
mybatis-plus 2 —— CRUD 封装的使用前言CRUD 封装WrapperQueryWrapperUpdateWrapperIServicesavegetlistupdatesaveOrUpdateremovepage前言上一章节介绍了 MP 和 Springboot 的整合,以及 代码生成 的特性。本章节介绍 MP 对 CRUD 的封装,并结合大量 使用示例 帮助理解CRUD 封装MP 帮我们封装了 IService 和 BaseMapper,封装了全面完善的 CRUD 方法,因为我原创 2020-09-08 21:39:06 · 2487 阅读 · 2 评论 -
mybatis-plus 1 —— 整合 Springboot、代码自动生成
springboot 整合 mybatis-plus原创 2020-09-08 21:38:44 · 210 阅读 · 0 评论 -
【从零学 RxJava】RxJava 4 —— 其他操作符
【从零学 RxJava】RxJava 4 —— 其他操作符前言版本总结github参考前言本章节继续解读 RxJava 的其他操作符版本3.0.4总结上一篇:【从零学 RxJava】RxJava 3 —— 变换操作符、过滤操作符下一篇:github文中涉及的示例 demo:https://github.com/dangzhicairang/rxjava.git参考RxJava 2.x 实战 —— 沈哲...原创 2020-11-23 23:50:04 · 790 阅读 · 0 评论 -
【从零学 RxJava】RxJava 3 —— 变换操作符、过滤操作符
【从零学 RxJava】RxJava 3 —— 变换操作符、过滤操作符前言版本mapdemoflatmapdemogroupBydemobufferdemowindowdemofirst & lastdemotakedemotakeLastdemoskipdemoskipLastdemoelementAtdemoignoreElementsdemodistinctdemodistinctUntilChangeddemofilterdemodebouncedemo总结github参考前言操作符是原创 2020-11-23 23:49:35 · 1001 阅读 · 0 评论 -
【从零学 RxJava】RxJava 2 —— 创建操作符
【从零学 RxJava】RxJava 2 操作符 —— 创建操作符前言版本创建操作符createdemojustdemofromdemofromFuturedemodeferdemointervaldemotimerdemorepeatdemorepeatWhendemorepeatUtildemo总结github参考前言操作符是 RxJava 的重要组成部分,本章节解读 创建操作符版本3.0.4创建操作符create从头创建一个 Observable,一个形式正确的有限 Observable原创 2020-11-23 23:48:50 · 725 阅读 · 0 评论 -
【从零学 RxJava】RxJava 1 Hot Observable & Cold Observable、Subject
【从零学 RxJava 】RxJava 1 Hot Observable & Cold Observable、Subject前言什么是 RxJava什么是 Rx版本基础概念ObservableHot ObservableCold ObservableObserversubscribeAPI 示例GAVhello worlddo 操作符Hot Observable & Cold ObservableCold Observablec2hh2cSubject总结参考前言什么是 RxJavaR原创 2020-11-23 23:47:37 · 226 阅读 · 2 评论 -
关于延时、周期任务调度 —— ScheduledExecutorService ScheduledThreadPoolExecutor
关于延时、周期任务调度 —— ScheduledExecutorService ScheduledThreadPoolExecutor前言ScheduledExecutorServiceScheduledThreadPoolExecutor构造方法execute & submitschedulescheduleAtFixedRatescheduleWithFixedDelayScheduledFutureTask#run示例总结前言JUC 提供了相关的类以支持对 延时任务 和 周期任务 的支持原创 2020-10-23 17:05:21 · 1013 阅读 · 0 评论 -
线程池浅析 ThreadPoolExecutor FutureTask
ThreadPoolExecutor 线程池的使用总结前言版本前言版本JDK11原创 2020-10-10 14:12:04 · 1488 阅读 · 0 评论 -
【源码】ThreadLocal InheritableThreadLocal 浅析
【源码】ThreadLocal InheritableThreadLocal 原理浅析前言版本ThreadLocalMap threadLocalsThreadLocal属性initialValuesetgetThreadLocal 示例 demotest1test2ThreadLocalMap inheritableThreadLocalsInheritableThreadLocalInheritableThreadLocal 示例 demo总结前言ThreadLocal ,线程本地变量,常用来存储原创 2020-10-10 14:12:54 · 411 阅读 · 0 评论 -
【源码】Queue AbstractQueue PriorityQueue 浅析
【源码】Queue AbstractQueue PriorityQueue —— 浅析前言QueueAbstractQueuePriorityQueue属性、构造方法add(E e)siftUpremove()element()其他方法demo总结前言一般我们认为的 Queue 是队列,其遵循 FIFO(先进先出)的原则,此时 head 元素即为我们要取出的下一个元素,而插入的下一个元素即 tail。而对于 LIFO (后进先出)比如 栈,其下一个取出的元素依然是 head,插入的元素则就不是 tail原创 2020-09-10 09:45:56 · 369 阅读 · 0 评论 -
java Stream API 用法分析与示例
java Stream API 浅析原创 2020-09-06 14:50:49 · 700 阅读 · 0 评论 -
常用函数式接口的解读及使用
【源码】常用的函数式接口前言版本SupplierdemoConsumerdemoPredicatedemoFunctiondemoUnaryOperatordemoBinaryOperatordemo总结前言Java8 以来推出的 lambda 表达式使得程序员的代码越来越 优雅,配合 函数式接口 一起使用,很多繁杂的代码可以变得十分的 轻巧 。 Oracle 也在 java.util.function 下为我们提供了很多 函数式接口,本章节做个简单地梳理版本JDK11Supplier@Func原创 2020-09-04 16:51:15 · 925 阅读 · 0 评论 -
【源码】JUC —— LinkedBlockingQueue 浅析
【源码】JUC —— LinkedBlockingQueue 浅析前言LinkedBlockingQueueNode属性、构造方法add(E e) & offer(E e)put(E e) & offer(E e, long timeout, TimeUnit unit)enqueue(Node node)remove() & poll()take() & poll(long timeout, TimeUnit unit)前言LinkedBlockingQueue,基于原创 2020-09-18 21:50:07 · 408 阅读 · 0 评论 -
【源码】JUC —— BlockingDeque LinkedBlockingDeque 浅析
【源码】JUC —— BlockingDeque LinkedBlockingDeque 浅析前言BlockingDequeLinkedBlockingDequeNode属性、构造方法头插入操作尾插入操作头获取操作尾获取操作检索操作BlockingQueue 方法委托Stack 方法委托其他方法总结前言public interface BlockingDeque<E> extends BlockingQueue<E>, Deque<E>BlockingDeque原创 2020-09-11 15:55:34 · 420 阅读 · 0 评论 -
【源码】JUC —— BlockingQueue ArrayBlockingQueue 浅析
【源码】BlockingQueue 解读前言Queue前言BlockingQueue 在 Queue 的基础上拓展了在队列满时插入、在队列空时获取元素时阻塞的操作,本章节对 BlockingQueue 进行解读Queuepublic interface Queue<E> extends Collection<E> { boolean add(E e); boolean offer(E e); E remove(); E poll();原创 2020-09-10 18:04:33 · 355 阅读 · 0 评论 -
【源码】JUC —— AtomicStampedReference 解读
【源码】JUC —— AtomicStampedReference 解读前言AtomicStampedReference属性及构造CASattemptStampdemo总结前言原子操作类 有个隐患的问题称之为 ABA问题,即就是说我们无法保证 CAS 过程中 compare 预期值与实际值相等时目标值并没有被真正的改变过举个例子,修改预期值 1 为 2,如果在这期间,有其他线程将 1 修改为 x 后又将 x 修改为 1,那么当前线程 compare 发现 1 = 1,则会成功执行该次 CAS 操作这原创 2020-09-02 15:32:49 · 356 阅读 · 0 评论 -
【源码】JUC —— AtomicInteger 解读
【源码】JUC —— AtomicInteger 解读前言版本UnsafeAtomicInteger属性及构造原子操作getAndSetcompareAndSetgetAndXXXXXXAndGetUpdateAccumulate类型转换demo总结前言JUC 下提供了大量的 原子操作类,以保证我们可以便捷的操作对应类型且保证 并发环境 下的 原子性。本章节介绍 AtomicInteger版本JDK11Unsafe底层的操作基本都由 Unsafe 类提供,比如 CAS操作 @HotSpotI原创 2020-09-02 11:37:45 · 679 阅读 · 0 评论 -
【源码】JUC —— CyclicBarrier 浅析
【源码】JUC —— CyclicBarrier 浅析前言JDK 版本CyclicBarrierawait其他demo总结前言CyclicBarrier ,CountDownLatch 的 plus 版。在 CountDownLatch 的基础上,允许循环使用,指定数量的线程被唤醒后,将再次进入下一轮阻塞、唤醒允许指定一个 Runnable,在唤醒阻塞线程前执行与 CountDownLatch 略有不同的是,不用显示的“倒计时”,而是在阻塞线程数达到 阈值 时直接唤醒该批线程关于 Coun原创 2020-08-28 11:15:50 · 164 阅读 · 0 评论 -
【源码】JUC —— CountDownLatch 浅析
【源码】JUC —— CountDownLatch前言SynctryAcquireSharedtryReleaseShared构造方法实现(委托)demo总结前言CountDownLatch ,主要用于如下场景:待线程阻塞到一定数量后,统一唤醒。有点跟 Semaphore 反着来的意思先养剧,再看剧Sync基于 AQS 实现,内部类 Sync 继承 AQS 实现相关方法 Sync(int count) { setState(count); }原创 2020-08-27 15:31:16 · 337 阅读 · 0 评论 -
【源码】JUC —— Semaphore 浅析
【源码】JUC —— Semaphore 浅析前言SyncnonfairTryAcquireSharedtryReleaseShared其他方法NonfairSyncFairSync构造方法实现(委托)demo总结前言Semaphore ,翻译:信号量,跟 ReentrantLock 相对的,共享锁 的经典实现,基于 AQS ,也提供了 公平锁 和 非公平锁 两种机制关于 ReentrantLock ,可阅读【源码】JUC —— ReentrantLock 浅析Sync内部类 Sync 继承原创 2020-08-27 14:42:26 · 383 阅读 · 0 评论 -
【源码】JUC —— ReentrantLock 浅析
【源码】JUC —— ReentrantLock 浅析前言SyncnonfairTryAcquiretryRelease其他NonfairSyncFairSynchasQueuedPredecessors构造方法实现(委托)demo总结前言基于 AQS 的实现的 可重入独占锁,可以理解为 独占锁 的经典实现。性能对比 synchronized 关键字虽然不再占有那么大的优势(随着 并发量 递增甚至可能不如),但是无论在使用的灵活性、控制性上都是要优于 synchronized 的Sync通过内部类原创 2020-08-27 11:26:27 · 162 阅读 · 0 评论 -
Map 的 computeIfAbsent computeIfPresent compute merge 方法的运用
这里写目录标题前言computeIfAbsentcomputeIfPresentcomputemerge总结前言本文介绍几个 Map 接口提供的小方法computeIfAbsent default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) { Objects.requireNonNull(mappingFunction); V原创 2020-08-19 00:35:05 · 470 阅读 · 0 评论 -
【源码】ArrayList源码
【源码笔记】ArrayList前言构造方法add插入元素get(int index)获取元素contains(Object o)判断元素是否存在remove(int index)根据下标移除元素remove(Object o)移除元素removeAll(Collection c)前言作为最常用的集合之一,有必要读一下源码。ArrayList,基于数组实现,因此元素的读取速度十分快,因为数组在内存的上地址连续,但是插入删除涉及到数组元素的移动,因此效率较慢。构造方法 // 空(默认)构造方法 pu原创 2020-07-02 11:12:34 · 290 阅读 · 0 评论 -
【源码】LinkedList源码
【源码笔记】LinkedList前言链表实现接口定义实现类头插入指定位置插入尾插入移除头元素移除尾元素移除指定值元素是否包含指定元素是否为空LinkedListNodeadd()add(int index, E element)addAll(int index, Collection<? extends E> c)addAll(Collection<? extends E> c)addFirst(E e)addLast(E e)clear()contains(Object o)前言原创 2020-07-05 17:34:13 · 458 阅读 · 0 评论 -
java实现排序二叉树(详细注释附代码)
java实现排序二叉树前言java代码实现节点类插入遍历根据key值查找节点最大(小)值获取前置节点(小于当前节点值的最大值)获取后继节点(大于当前节点值的最小值)移除节点清空树打印测试资料前言排序二叉树,其左右子树也是排序二叉树,满足左孩子节点值 < 根节点值 < 右孩子节点值得特性java代码实现节点类 public class Node<T extends Comparable<T>> { //内部类 T key; // 节点值原创 2020-07-11 19:10:21 · 766 阅读 · 0 评论 -
java实现平衡二叉树(详细注释附代码)
java实现平衡二叉树前言原理思路前言之前有用java实现排序二叉树,但实际上但插入数据较极端时,整个二叉树的左右子树会很不平衡(深度),甚至成为一个链表。平衡二叉树是一种特殊的排序二叉树,使得左右子树的深度相差不超过1,则查询节点的时间复杂度也趋于平衡。原理我们为平衡二叉树的每一个节点计一个平衡因子BF,则当BF的绝对值大于1,则以该节点为根的子树出现了不平衡,我们根据具体的情况对其进行相应的调整,使它回归平衡。具体情况画几张图分析:如图,当BF=2,即左子树深度 - 右子树深度 = 2,则需原创 2020-07-11 23:54:36 · 1561 阅读 · 0 评论