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

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

无锁队列Disruptor

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

我所理解的Java锁

为什么需要锁当并发地访问共享资源,如果不加以管理,其结果是混乱的。就如上图,双方均想改变方块的颜色,但在任意时刻,我们并不能确定方块接下来是什么颜色,因为我们无法确定谁的时间片最终改变了方块的颜色。显然,这样的不确定性对于程序来说是不能接受的。我们所期望的,是红色方先过后,方块成了红色。接着绿色方过

数组&链表必会核心知识

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

[转载]一文读懂Java动态代理

事实上,对于很多Java编程人员来说,可能只需要达到从入门到上手的编程水准,就能很好的完成大部分研发工作。除非自己强主动获取,或者工作倒逼你学习,否则我们好像没必要去真正了解Java编程,或者深入研究JDK运行原理、或者在实际工作中某个模块写一套设计模式、或者纠结一个线程安全问题。我觉得完全没必要了

[转载]HashMap剖析

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

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

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