12 2022 档案
摘要:Elasticsearch 问题收集 Mac端安装 安装elasticsearch 安装elasticsearch ❯ brew install elasticsearch Running `brew update --auto-update`... ==> Auto-updated Homebre
阅读全文
摘要:JAVA并发-Thread.sleep(0)深入理解 Thread.Sleep(0)的作用,就是“触发操作系统立刻重新进行一次CPU竞争”。 通过调用 Thread.sleep(0) 的目的是为了让 GC 线程有机会被操作系统选中,从而进行垃圾清理的工作。它的副作用是,可能会更频繁地运行 GC,毕竟
阅读全文
摘要:【转载】硬核干货:5W字17张高清图理解同步器框架AbstractQueuedSynchronizer 前提 并发编程大师Doug Lea在编写JUC(java.util.concurrent)包的时候引入了java.util.concurrent.locks.AbstractQueuedSynch
阅读全文
摘要:【转载】ThreadLocal源码分析-黄金分割数的使用 前提 最近接触到的一个项目要兼容新老系统,最终采用了ThreadLocal(实际上用的是InheritableThreadLocal)用于在子线程获取父线程中共享的变量。问题是解决了,但是后来发现对ThreadLocal的理解不够深入,于是顺
阅读全文
摘要:反转链表 import java.util.Arrays; import java.util.List; import org.springframework.util.CollectionUtils; import com.google.common.collect.Lists; import l
阅读全文
摘要:【转载】通过transmittable-thread-local源码理解线程池线程本地变量传递的原理 前提 最近一两个月花了很大的功夫做UCloud服务和中间件迁移到阿里云的工作,没什么空闲时间撸文。想起很早之前写过ThreadLocal的源码分析相关文章,里面提到了ThreadLocal存在一个不
阅读全文
摘要:【转载】硬核干货:4W字从源码上分析JUC线程池ThreadPoolExecutor的实现原理 前提 很早之前就打算看一次JUC线程池ThreadPoolExecutor的源码实现,由于近段时间比较忙,一直没有时间整理出源码分析的文章。之前在分析扩展线程池实现可回调的Future时候曾经提到并发大师
阅读全文
摘要:JAVA并发-Disruptor框架 Disruptor简介 最好的方法去理解Disruptor就是将它和容易理解并且相似的队列,例如BlockingQueue。Disruptor其实就像一个队列一样,用于在不同的线程之间迁移数据,但是Disruptor也实现了一些其他队列没有的特性,如: 同一个“
阅读全文
摘要:JAVA Unsafe类详解 官方不建议使用Unsafe 使用Unsafe要注意以下几个问题: 1、Unsafe有可能在未来的Jdk版本移除或者不允许Java应用代码使用,这一点可能导致使用了Unsafe的应用无法运行在高版本的Jdk。 2、Unsafe的不少方法中必须提供原始地址(内存地址)和被替
阅读全文
摘要:Kafka 事务 幂等性 幂等性是指发送同样的请求,对系统资源的影响是一致的。结合 Kafka Producer,是指在多次发送同样的消息,Kafka做到发送消息的不丢失和不重复。 Kafka为啥需要幂等性? 在使用Kafka时,需要确保Exactly-Once语义。分布式系统中,一些不可控因素有很
阅读全文