深入解密来自未来的缓存-Caffeine

1.前言读这篇文章之前希望你能好好的阅读:你应该知道的缓存进化史和如何优雅的设计和使用缓存?。这两篇文章主要从一些实战上面去介绍如何去使用缓存。在这两篇文章中我都比较推荐Caffeine这款本地缓存去代替你的GuavaCache。本篇文章我将介绍Caffeine缓存的具体有哪些功能,以及内部的实现原

无锁队列Disruptor

1.何为队列听到队列相信大家对其并不陌生,在我们现实生活中队列随处可见,去超市结账,你会看见大家都会一排排的站得好好的,等待结账,为什么要站得一排排的,你想象一下大家都没有素质,一窝蜂的上去结账,不仅让这个超市崩溃,还会容易造成各种踩踏事件,当然这些事其实在我们现实中也是会经常发生。当然在计算机世界

数组&链表必会核心知识

数组和链表是我们最常用也是最基本的数据结构,严格来说基础的数据结构就只有两种,就是数组和链表,其他的各种高阶的数据结构都是从数组和链表中衍生出来的,它们只是在不同的业务场景中根据数组或链表而衍生出来的解决方案。所以说数组和链表是一切数据结构的根本,我们完全有必要更深层次的理解这两种数据结构。如果你对

深析Pipeline设计模式

目标通过提供初始输入并传递处理后的输出以供下一阶段使用,从而允许在一系列阶段中进行数据处理。解释Pipeline模式为管道模式,也称为流水线模式。通过预先设定好的一系列的阶段来处理输入的数据,每个阶段的输出即是下一个阶段的输入。模型图如下:从图中可以看出,整个流水线内数据流转是从上游到下游,上游的输

[转载]HashMap剖析

HashMap是一个非常重要的集合,日常使用也非常的频繁,同时也是面试重点。本文并不打算讲解基础的使用api,而是深入HashMap的底层,讲解关于HashMap的重点知识。需要读者对散列表和HashMap有一定的认识。HashMap本质上是一个散列表,那么就离不开散列表的三大问题:散列函数、哈希冲

[转载]深入理解Java线程池核心技术:ThreadPoolExecutor

线程池介绍在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题:如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。可能出现服务器在为每个请求