zchen

轻度代码洁癖

设计模式总结

(一)设计模式参考目录 策略模式 观察者模式 装饰者模式 工厂模式 单例模式 命令模式 适配器模式 外观模式 模板方法模式 迭代器模式 组合模式 状态模式 JDK动态代理 相...

2018-02-02 11:50:43

阅读数 426

评论数 0

jdk 源码思维导图总结

以下总结全部基于 jdk1.8。 非并发源码幕布地址:https://mubu.com/doc95LpcV0Umt

2019-05-20 15:32:02

阅读数 12

评论数 0

Java8 EnumMap 源码分析

一、EnumMap 概述 EnumMap 是一个用于存储 key 为枚举类型的 map,底层使用数组实现(K,V 双数组)。下面是其继承结构: public class EnumMap<K extends Enum<K>, V> extend...

2019-05-02 17:26:13

阅读数 49

评论数 0

Java8 ThreadLocal 源码分析

一、ThreadLocal 简介 在学习源码之前,有一个概念我们需要先明白:ThreadLocal 可以使多线程间数据读写隔离,因此 ThreadLocal 解决的是线程局部变量安全性问题,并不是多线程间共享变量安全性问题。 ThreadLocal 在使用时必须先初始化 value,否则会报空...

2019-05-01 17:35:03

阅读数 117

评论数 0

Java 为什么不支持创建泛型化数组

没事的时候在书中翻了下泛型相关的知识,注意到一个比较有意思的问题:Java 不能创建泛型化数组。比如像下面这样就是不允许的: // 创建一个泛型类 public class Generic<T> { } // 测试类 public class Test {...

2019-04-30 10:56:22

阅读数 19

评论数 0

Java8 PriorityBlockingQueue源码分析

在看这篇总结之前,建议大家先熟悉一下 PriorityQueue,这里主要介绍 PriorityBlockingQueue 一些特殊的性质,关于优先级队列的知识不作着重介绍,因为过程与 PriorityQueue 都是一致的。 关于 PriorityQueue 的文章,你可以参考这里-&g...

2019-04-10 18:36:55

阅读数 40

评论数 0

Java8 IdentityHashMap 源码分析

在讲这个数据结构之前,我们先来看一段代码: public static void main(String[] args) { IdentityHashMap<String, Integer> map = new IdentityHashMap&a...

2019-03-20 20:20:01

阅读数 59

评论数 0

Redis 数据结构之哈希表

Redis 的字典底层使用哈希表实现,说到哈希表大家应该能联想到 HashMap 或者是 Hashtable,也应该能联想到 key、value 的存储形式,以及哈希表扩容,哈希算法等知识点。那么 Redis 字典是否也是通过这种形式实现的呢?带着这些疑问下面我们就来了解一下 Redis 中的哈希...

2019-03-15 20:12:53

阅读数 741

评论数 0

Java8 CountDownLatch 源码分析

一、CountDownLatch 概述 1.1 什么是 CountDLatch 闭锁(CountDownLatch)是 java.util.concurrent 包下的一种同步工具类。闭锁可以用来确保某些活动直到其他活动都完成后才执行。 闭锁相当于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭的...

2019-03-11 20:14:15

阅读数 37

评论数 0

Java8 ReentrantLock 源码分析

一、ReentrantLock 概述 1.1 ReentrantLock 简介 故名思义,ReentrantLock 意为可重入锁,那么什么是可重入锁呢?可重入意为一个持有锁的线程可以对资源重复加锁而不会阻塞。比如下面这样: public synchronized void f1() { ...

2019-03-07 20:05:07

阅读数 60

评论数 0

Java8 CopyOnWriteArrayList 源码分析

一、CopyOnWriteArrayList 概述 1.1 概念概述 CopyOnWriteArrayList 是 juc 包下一个线程安全的并发容器,底层使用数组实现。CopyOnWrite 顾名思义是写时复制的意思,其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时...

2019-02-15 19:47:26

阅读数 77

评论数 0

Java8 Hashtable 源码阅读

一、Hashtable 概述 Hashtable 底层基于数组与链表实现,通过 synchronized 关键字保证在多线程的环境下仍然可以正常使用。虽然在多线程环境下有了更好的替代者 ConcurrentHashMap,但是作为一个面试中高频的知识点,我们还是有必要了解一下其内部实现细节的...

2019-01-24 15:02:08

阅读数 83

评论数 0

Java8 ArrayBlockingQueue 源码阅读

一、什么是 ArrayBlockingQueue ArrayBlockingQueue 是 GUC(java.util.concurrent) 包下的一个线程安全的阻塞队列,底层使用数组实现。 除了线程安全这个特性,ArrayBlockingQueue 还有其他的特点: 当队列已满时,会...

2019-01-21 15:47:01

阅读数 71

评论数 0

Java8 LinkedHashMap 源码阅读

如果你对 HashMap 的源码有了解的话,只需要一图就能知道 LinkedHashMap 的原理了,但是具体的实现细节还是需要去读一下源码。 一、LinkedHashMap 简介 1.1 继承结构 从继承结构上来讲 LinkedHashMap 继承自 HashMap,LinkedHas...

2018-12-31 16:30:43

阅读数 178

评论数 0

Java8 PriorityQueue 源码阅读

一、什么是 PriorityQueue 这篇文章带大家去了解一个 jdk 中不常用的数据结构 PriorityQueue(优先队列),虽然在项目里用的不多,但是它本身的设计实现还是很值得大家看一看的。 PriorityQueue 底层是一个用数组实现的完全二叉树,但它并不只是一个完全二叉树,在...

2018-12-20 22:26:03

阅读数 95

评论数 7

Java8 HashMap 扩容机制与线程安全分析

如果大家有仔细阅读过 HashMap 的源码就会发现 HashMap 的哈希表初始化并不是在其构造函数中进行的,而是 resize() 方法。 这篇文章不对 HashMap 中的树进行介绍。 一、HashMap 四个构造函数 这里把 HashMap 的四个构造函数全贴出来,主要是给大家一个参照。 ...

2018-12-17 21:19:27

阅读数 201

评论数 0

Redis 数据持久化之 RDB

我们知道 Redis 是内存数据库,它将自己的数据存储在内存中,如果它不想办法将数据存入磁盘中,那么当服务器进程退出或意外宕掉的时候,服务器中的数据也会消失。 为了解决这个问题, Redis 提供了 RDB 与 AOF 两种数据持久化方式,将数据存储到磁盘中,避免数据丢失。 AOF 持久化不在...

2018-11-13 21:10:54

阅读数 85

评论数 0

《Redis 设计与实现》读书笔记-Redis 对象

一、Redis 对象 1.1 Redis 对象简介 Redis 使用对象来表示数据库中键和值,当我们在数据库中存储一个键值对时,至少会创建两个对象,一个对象用于存储键值对的键,另一个对象用于存储键值对的值。 Redis 中的每一个对象都由一个 RedisObject 结构表示,该结构有三个属...

2018-10-28 15:07:30

阅读数 116

评论数 0

static 关键字静态导包

我们知道 Java 中的 static 关键字表示静态,可以用于修饰字段、方法、代码块、类(静态内部类)。但是除了这些作用外,还有一个就是静态导包。 静态导包是 jdk1.5 提供的一种新的机制,使用方式为 import static packageName.className.* 或 impo...

2018-09-30 11:12:57

阅读数 261

评论数 0

HTTP 协议 Host 请求头的作用

host 是 HTTP 1.1 协议中新增的一个请求头,主要用来实现虚拟主机技术。 虚拟主机(virtual hosting)即共享主机(shared web hosting),利用虚拟技术把一台完整的服务器分成若干个主机,因此可以在单一主机上运行多个网站或服务。 举个栗子,有一台 ip 地址...

2018-09-25 19:47:00

阅读数 3792

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭