优秀代码模板展示
文章平均质量分 60
恐龙弟旺仔
保持热爱,保持进步
展开
-
Datax之自定义重试工具类RetryUtil
前言:在日常的开发中,针对某个业务逻辑,我们经常会有执行失败后再重试一次的需求。重试根据异常的不同则会有不同的方案。当然重试也不是失败后立即重试,有可能是等待固定时间后重试,也有可能是指数级等待时间重试,重试N次后则最终判定失败,不再重试。基于这种需求,阿里开源的datax工具中,也有相应的工具类,就是RetryUtil,笔者就来简单分析下这个util类。1.datax之RetryUtilpublic final class RetryUtil { private stat.原创 2021-11-11 19:03:32 · 1157 阅读 · 0 评论 -
Datax之自定义线程ClassLoader
前言:学习源码好处多多。最近在学习datax的源码时,碰到一个骚操作,自定义实现URLClassLoader加载器,可以加载指定路径下的jar包。这个很普通,没什么大不了。关键在于后面的操作,将这个自定义的URLClassLoader设置给创建的Thread中,这样就实现了不同的Thread在执行任务时,使用到了不同的URLClassLoader加载的不同的jar包。我们先一起来看下。1.自定义URLClassLoader/** * 提供Jar隔离的加载机制,会把传入的路径、及其子路原创 2021-11-11 19:01:37 · 885 阅读 · 0 评论 -
sentinel之自定义线程池工厂的使用
前言:线程池是我们在开发工作中经常使用到的。JDK提供了Executors来快速创建线程池。本文从那些开源框架中来分析下,他们是怎么更好的创建线程池 1.Executors分析 我们常规使用Executors创建线程池如下:// 创建一个固定线程池ExecutorService threadPool = Executors.newFixedThreadPool(5);1.1 源码角度释义Executorspublic class Exec...原创 2021-11-11 18:58:47 · 706 阅读 · 0 评论 -
sentinel之自定义加载配置工具
前言:有关于在项目中加载配置或者加载其他文件,具体使用哪种方式加载笔者一直搞不清楚,有的直接用File就能搞定,有的需要用ClassLoader.getResources()方法,还有的是相对路径,确实有点太难为人了。在学习Sentinel的源码时,偶然发现了其关于加载配置的一个工具类,刚好满足了笔者的需求,就拿来记录下,以后有类似需求的话可以直接上代码。1.Sentinel之ConfigUtil话不多少,直接上代码public final class ConfigUtil {原创 2021-11-09 19:15:42 · 290 阅读 · 0 评论 -
AtomicReference与AtomicReferenceFieldUpdater的使用
前言:关于JDK提供的原子类,我们之前经常使用的就是基础类型的相关原子类,如AtomicInteger、AtomicLong、AtomicBoolean等。那么有没有关于对象类型的原子类呢,确实是有的,就是AtomicReference类。笔者在学习Netty时,发现了一个更好玩的类AtomicReferenceFieldUpdater,可以对对象的属性实现原子修改。我们一起来学习下。1.AtomicReference1.1 基础使用有关于其使用还是比较简单的,示例如下:Ato原创 2021-11-06 22:02:47 · 784 阅读 · 0 评论 -
datax之关于毒丸对象的使用
前言: 毒丸对象,在日常开发中倒不是经常使用到。笔者在阅读datax的源码时,发现到这个骚操作,赶紧去查了下相关概念和使用场景。本文就当做一个简单的记录,以后在类似的开发场景中能够及时想到这么一种方案。1.毒丸对象 毒丸,是指放在一个队列上的对象。一般在FIFO的队列中,生产者生产消息,消费者消费消息,当生产者生产完所有的消息后,一般会最终发送一个毒丸对象(告诉消费者这是最后一个对象);而当消费者按顺序消费对象时,若消费到毒丸对象,则可以判定这是生产者生产的最后一个对象了,后续就...原创 2021-10-09 18:50:27 · 244 阅读 · 0 评论 -
Netty之FastThreadLocal
前言: 在学习Netty的时候,总有很多之前从没接触过的知识点。比如今天要分享的主题FastThreadLocal一样。从名字看来,应该跟JDK的ThreadLocal差不多,但是多了一个Fast,那么相对ThreadLocal而言,它的存储及获取应该会更快点。 话不多少,我们先来复习一下ThreadLocal的基本使用,然后从源码角度来解析下,最后再来分析下FastThreadLocal的过人之处。1.ThreadLocal// This class provides t...原创 2021-09-28 18:40:36 · 461 阅读 · 1 评论