摘要:
之前的博客写过Spring与RestHighLevelClient的基础用法,但是实际使用中,会存在大量的复杂操作,如分组,聚合等。 接下来我们就来看下不太好用的分组聚合基本用法 AggregationBuilder 首先RestHighLevelClient中分组需要用到AggregationBu 阅读全文
摘要:
Criteria criteria = Criteria.where("classId").is(classId).and("deleted").is(false); GroupOperation groupOperation = group("userId").max("score").as("s 阅读全文
摘要:
前言 上篇我们说到分布式锁的大概与Redis锁的实现与原理,接下来我们介绍下Zookeeper锁。 Zookeeper锁 我们在实现zookeeper锁时也使用了别人撸好的轮子稍加封装,使用的是apache的curator。 首先,我们实例化一个Curator的客户端实例 @ConditionalO 阅读全文
摘要:
一. 为什么要使用分布式锁 现如今项目集群化,大部分都是采用了多节点部署。在越来越复杂的业务中,java自身的锁机制已经满足不了现在的业务需求了。所以此时需要分布式锁来避免一些因为并发导致的业务错误。 二. 分布式锁介绍 现在业务中分布式锁主要有redis与zookeeper两种方式实现。 三. R 阅读全文
摘要:
HashMap红黑树转换条件是什么? 以下为HashMap的put方法 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int 阅读全文
摘要:
Condition 是在Spring中的的条件注解,通过这个注解可以根据条件,决定类是否加载到Spring Ioc容器中。 @Conditional的使用 注解实现: public class AnnotationMethodLoader implements Condition { @Overri 阅读全文
摘要:
在Java的concurrent包中,公平锁与非公平锁是很常见的概念,ReentrantLock、ReadWriteLock默认都是非公平模式。 非公平锁的效率为什么会高于公平锁呢?那么公平锁与非公平锁又有什么区别呢?、 概念解释 首先从字面意思理解,公平锁自然是遵循FIFO(先进先出)原则的,先到 阅读全文
摘要:
底层 :ArrayList是List接口的大小可变数组的实现。 是否允许null :ArrayList允许null元素。 时间复杂度 :size、isEmpty、get、set、iterator和listIterator方法都以固定时间运行,时间复杂度为O(1)。add和remove方法需要O(n) 阅读全文
摘要:
final Node<K,V>[] resize() { // 当前table Node<K,V>[] oldTab = table; // 获取当前table的长度,如果未初始化则为0 int oldCap = (oldTab == null) ? 0 : oldTab.length; // 获取 阅读全文
摘要:
Mysql的数据源大家用的应该很多,这里我们说一种简单的多数据源的实现方法(aop+springboot+注解实现),基于SpringBoot。 AbstractRoutingDataSource介绍 Spring boot提供了AbstractRoutingDataSource 根据用户定义的规则 阅读全文