Mickey 小站

尘世迷途小码农

ThreadLocal Source

ThreadLocal 源码分析

这篇 blog 来分析一下 ThreadLocal 的源码,如果有同学不了解 ThreadLocal 的作用,可以自行 Google ThreadLocal 使用栗子 public class ThreadLocalTest { private static final ThreadLocal<String> threadLocal = new ThreadLocal...

dw-methodology

数仓方法论

最近面试的时候,面试官建议我去看看数据仓库的方法论,我思考了一下,觉得自己以往搭建数仓确实是凭借自己对数据的感觉的,缺乏理论的支持,于是决定看一下数据仓库工具箱这本书,这篇文章用来记录一下感悟 维度模型设计的四个步骤 选择业务过程:我认为这就是理解自己的业务是在做什么 声明粒度:精确定义某个事实表的每一行在表示什么 确定纬度:...

CompletableFuture Source

CompletableFuture 源码分析

本来想自己写一下的,发现已经有别的同学总结过了 JUC源码解析 CompletableFuture 我认为,这个类,掌握了 Completion 的链接,然后对应 complete 和 whenCompleteAsync 两个函数单步调试即可

autumn interview

秋招面试总结

秋招也要陆陆续续的开始了,今天我面试了第一家公司,所以这篇博客来记录一下 快手 —— abtest 部门 —— 数据研发工程师(offer) 7.29 直通终面 + hr面,8.9 意向书 因为之前暑期三面全过,因此这次提前批,算是直通终面吧,一轮长达一个半小时的技术面之后,进行了 hr 面试 一个 uid,p_...

ScheduledThreadPoolExecutor Source

ScheduledThreadPoolExecutor 源码分析

ScheduledThreadPoolExecutor 可以用于注册任务,这些任务会在将来的某些阶段被调度触发(这篇博客只讲主要的思路) ScheduledThreadPoolExecutor 继承于 ThreadPoolExecutor,对 ThreadPoolExecutor 感兴趣的可以移步ThreadPoolExecutor 源码分析,ScheduledThreadPoolExec...

Deque Source

Deque 源码分析

这篇文章我们来讲一下 ArrayDeque 和 LinkedBlockingDeque 的源码 ArrayDeque 属性 // ArrayDeque 使用数组来存储元素,数组的长度也是 2 的幂次方 // 在 head 和 tail 更改的时候,使用除留余数法来替代取余操作 transient Object[] elements; // 双端队列头部 transient int h...

BlockingQueue Source

BlockiBlockingQueueng 源码分析

这篇 blog 我们来讲一下 BlockingQueue 的几个子类的源码 ArrayBlockingQueue ArrayBlockingQueue 是一个定长的阻塞队列,可以用于实现最基本的生产者 - 消费者模型 属性 // 存放队列元素 final Object[] items; // 下一个 take,poll,peek,remove 操作的元素下标,这个是会循环的,当 t...

FutureTask Source

FutureTask 源码分析

这篇 blog 我们来讲一下 FutureTask 的源码,FutureTask 是 java 实现异步编程的基础 public class FutureTask<V> implements RunnableFuture<V> ... public interface RunnableFuture<V> extends Runnable, Futur...

ReentrantReadWriteLock Source

ReentrantReadWriteLock 源码分析

ReentrantReadWriteLock 源码分析(基于Java 8) 👆这篇 blog 讲解的非常清楚,推荐给大家,这里我自己记录一下个人的感悟 ReentrantReadWriteLock 创建了 ReadLock 类和 WriteLock 类 读锁和写锁是互斥的,写锁不会抢占读锁 当线程获取写锁的时候,是可以继续获取读锁的,这是锁降级,反之则不行,会造成死锁 ...

CyclicBarrier Source

CyclicBarrier 源码分析

这篇 blog 我们来讲一下 CyclicBarrier 的源码,CyclicBarrier 依赖 ReentrantLock 实现功能,感兴趣的同学可以先看看 ReentrantLock 源码分析 CyclicBarrier 用于多个线程的互相等待,当多个线程都做好了准备后,一同开始运行,可以用于系统的初始化,当多个子线程都申请好了资源之后,系统启动 属性 // CyclicBarr...