![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 88
李承一
这个作者很懒,什么都没留下…
展开
-
Kafka请求发送分析
Kafka发送请求分析原创 2022-08-08 01:35:58 · 1132 阅读 · 0 评论 -
Eager Rebalance VS Incremental Cooperative Rebalance
本文将介绍Kafka Connect在组成集群时是如何交互的。原创 2022-05-22 16:39:49 · 207 阅读 · 0 评论 -
Netty中的EventExecutor
虽然NioEventLoop追朔到源头是继承了EventExector,但是两者在使用场景上有很大的区别。1、NioEventLoopNioEventLoop的主要y原创 2021-06-15 22:39:21 · 1401 阅读 · 0 评论 -
在Netty中使用FastThreadLocal代替ThreadLocal
FastThreadLocal相比较于ThreadLocal在FastThreadLocalThread有更好的表现,因为在FastThreadLocal是使用数组而不是像ThreadLocal那样使用hash code 以及hash table去查找对象。尽管看起来非常微妙,但它比使用哈希表产生了一些性能优势,并且在频繁访问时非常有用。为了使用FastThreadLocal带来的优势,你的线程类型应该使用FastThreadLocal以及它的子类,而不是使用Thread(下面会讲到原因)。因此在Net原创 2021-03-30 00:16:29 · 634 阅读 · 1 评论 -
在Spring中将ApplicationContextAware和代理设计模式结合
笔者在开发的时候遇到一个问题一个类中存在多个实现 需要提供一个窗口,让外部调用的时候无需知道众多子类的实现因为项目使用Spring开发的,所以笔者这里打算采用ApplicationContextAware提供的接口,获取到全部子类。并提供一个Proxy屏蔽这些子类的差异,让调用只通过Proxy完成。1、代理设计模式和策略设计模式区别这里说明下为啥不用策略设计模式而是选择代理设计模式,因为策略设计模式更趋向于实现一个目标的不同做法,例如我要对一系列数字进行排序,可以采用冒泡、希尔以及归并扽等等原创 2021-03-23 00:03:25 · 370 阅读 · 0 评论 -
关于Netty中的Recycler对象池
1、对象池的背景 Netty本身作为通信用的框架,消息的创建和处理十分频繁,但是大多数的消息本身可循环使用的程度不高,大部分都是创建完传输后就被等待GC了。但是考虑到大部分消息只是消息部分内容有所差异,可以考虑对创建消息的对象进行循环利用,减少创建和GC带来的消耗。2、Recycler图例...原创 2021-03-19 01:22:19 · 751 阅读 · 0 评论 -
CyclicBarrier源码解析
和CountDownLatch不同,CyclicBarrier表示调用await方法之后,线程会阻塞知道,知道一定数目的线程执行了await之后才会全部唤醒。而且CyclicBarrier还有两个功能点,支持重复使用和唤醒时回调。所以我们需要第一步了解到CyclicBarried是如何等待多个线程等待并且一起唤醒的。1、初始化CyclicBarrierCyclicBarrier默认的初始化比较简单,parties表示需要等待多少个线程await后才唤醒。 public CyclicB原创 2020-12-05 23:39:27 · 256 阅读 · 0 评论 -
CountDownLatch源码解析
文章只是简单记述下CountDownLatch的原理,看过AQS、ReentrantLock和ReentrantReadWriteLock的文章后,可以大致清楚了解和AQS相关工具的使用。CountDownLatch本身也是通过一个内部类Sync实现AQS,所以其构造方法内部也是实现如何去初始化这个Sync的过程。 public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentExc原创 2020-12-05 23:39:53 · 244 阅读 · 1 评论 -
ReentrantReadWriteLock死锁问题解析
1、案情代码分析:private static ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true); public static void main(String[] args){ // thread a new Thread(() -> { System.out.println("a第一次获取读锁");原创 2020-10-22 00:14:12 · 1577 阅读 · 0 评论 -
ReentrantLock的非公平锁AQS队列实现
以下以ReentrantLock的NofaiySync分析AQS(又或者说CLH变种)的实现方式。1、尝试获取资源调用NofairSync的lock方法的时候,会先尝试对资源state加锁,失败的时候还会尝试获取锁。 final void lock() { if (compareAndSetState(0, 1)) setExclusiveOwnerThread(Thread.currentThread());原创 2020-09-24 23:56:57 · 972 阅读 · 0 评论 -
基于Java的一个扫描路径下全部文件的程序
import java.io.File;import java.io.FilenameFilter;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.regex.Pattern;public class Directory { //处理多层文...原创 2018-08-10 17:30:01 · 1230 阅读 · 0 评论