摘要: HashMap HashMap 的重要性和面试问到的频率不言而喻,这篇文章我们就 HashMap 的原理和代码来进行分析。 什么是哈希表 讨论哈希表之前,我们先来把一些常用的数据结构的增删改查的性能比较一下。 数组 :采用一段连续的存储单元来存储数据。对与指定下标的查找和插入,其时间复杂度为 O(1 阅读全文
posted @ 2020-01-12 21:22 当年明月123 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 阻塞队列 如果我们想要在线程安全的场景下使用队列,只有两个选择,一个是上面讲过的 ConcurrentLinkedQueue,还有就是我们要将的阻塞队列。 从名字我们就可以判断出阻塞队列适用的场景,那就是生产者消费者模式。阻塞对垒的添加和删除操作在队列满或者空的时候会被阻塞。这就保证了线程安全。 阻 阅读全文
posted @ 2020-01-12 21:20 当年明月123 阅读(361) 评论(0) 推荐(0) 编辑
摘要: Queue 队列是一种支持 FIFO 的数据结构或者容器。Queue 接口下面的实现类包括 Deque,非阻塞队列和阻塞队列。 PriorityQueue PriorityQueue 是一个基于优先级的无界队列。比如我们的作业系统中,当一个作业完成后,在所有等待调度的作业中选择一个优先级最高的作业来 阅读全文
posted @ 2020-01-12 21:12 当年明月123 阅读(412) 评论(0) 推荐(0) 编辑
摘要: Deque 双端队列,既可以当队列使用,也可以当栈使用。是一个接口。我们来看看 Deque 当作栈和队列时对应的方法。 队列: | Queue Method | Equivalent Deque Method | 说明 | | | | | | | | 向队尾插入元素,失败则抛出异常 | | | | 阅读全文
posted @ 2020-01-12 21:03 当年明月123 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 上一章节我们说过,Vector 是同步容器,我们编码时的非原子操作仍然不能保证线程安全。这一节我们就介绍一个线程安全的同步容器。 写入时复制(CopyOnWrite)思想 写入时复制,CopyOnWrite 简称 COW 思想时计算机程序设计领域中的一种优化策略。其核心思想是,如果有多个调用者同时要 阅读全文
posted @ 2020-01-10 13:46 当年明月123 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 在网上找了半天也没有很好的 JAVA 集合框架相关的教程,虽然平时经常使用,但是总感觉有些混乱,也不知晓各个集合或者说容器的特点和使用场景。接下来这一系列的博客希望能将 JAVA 集合框架中的知识做一个总结,也给后来者提供更加清晰的思路。 概述 我们通过这张接口图来了解 JAVA 到底定义了哪些容器 阅读全文
posted @ 2020-01-10 13:41 当年明月123 阅读(243) 评论(0) 推荐(0) 编辑
摘要: CGLIB 动态代理 之前我们详细介绍了 JDK 自身的 API 所提供的动态代理的实现,也说明了它存在的缺陷,那就是只能为接口中的方法做代理,被代理类自身和父类的方法都不能被代理。 CGLIB 就是为了解决这个问题而生的,高新能的,底层基于 ASM 框架的一个代码生成框架,它完美的解决了 JDK 阅读全文
posted @ 2020-01-09 21:33 当年明月123 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 动态代理 动态代理 源于设计模式中的代理模式,代理模式的主要作用就是使代理对象完成用户的请求,屏蔽用户对真实对象的访问。通过代理对象去访问目标对象来控制原对象的访问。 代理模式的最典型的应用就是 Spring AOP。 静态代理 代理模式的实现有两种, 静态代理 和 动态代理 ,静态代理的代理类是需 阅读全文
posted @ 2020-01-09 20:28 当年明月123 阅读(258) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock 我们已经通过前几章学会了 synchronized 和 AQS 等相关只是。下面我们继续来学习 ReentrantLock 这个并发工具类,如果你已经了解了 AQS 的机制,那么你学习 ReentrantLock 将会非常轻松。 背景 Synchronized 关键字虽然 阅读全文
posted @ 2020-01-08 18:58 当年明月123 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 我们前面几张提到过,JUC 这个包里面的工具类的底层就是使用 CAS 和 volatile 来保证线程安全的,整个 JUC 包里面的类都是基于它们构建的。今天我们介绍一个非常重要的同步器,这个类是 JDK 在 CAS 和 volatile 的基础上为我们提供的一个同步工具类。 背景 Abstract 阅读全文
posted @ 2020-01-08 17:57 当年明月123 阅读(545) 评论(0) 推荐(0) 编辑