
------【Java进阶】
武哥聊编程
同济大学硕士,第一批华为5G研发人员,拼多多广告投放部门,全网20w+粉丝。微信公众号:武哥聊编程
展开
-
【java并发】造成HashMap非线程安全的原因
0. 写在前面 在前面我的一篇总结线程范围内共享数据文章中提到,为了数据能在线程范围内使用,我用了HashMap来存储不同线程中的数据,key为当前线程,value为当前线程中的数据。我取的时候根据当前线程名从HashMap中取即可。 因为当初学习HashMap和HashTable源码的时候,知道HashTable是线程安全的,因为里面的方法使用了synchronized进行同步,但是Has原创 2016-05-31 11:18:19 · 18152 阅读 · 1 评论 -
java集合框架12——HashMap和HashTable的区别
前面已经学习了Map的部分内容,主要是HashMap和HashTable,这一节我们来看看它们两有啥异同点。1. HashMap和HashTable的相同点 HashMap和HashTable都是存储“键值对”的散列表,而且都是采用拉链法来实现的。存储的思想都是:通过table数组存储,数组的每个元素都是一个Entry,而一个Entry就是一个单项链表,Entry链表中的每个原创 2016-04-26 15:50:35 · 5255 阅读 · 5 评论 -
java集合框架08——HashMap和源码分析
上一章总体分析了Map架构,并简单分析了一下AbstractMap源码,这一章开始我们将对Map的具体实现类进行详细的学习。本章先研究HashMap。依然遵循以下步骤:先对HashMap有个整体的认识,然后学习它的源码,深入剖析HashMap。原创 2016-04-15 23:40:56 · 10411 阅读 · 6 评论 -
java集合框架09——HashTable和源码分析
上一章我们学习了HashMap的源码,这一节我们来讨论一下HashTable,HashTable和HashMap在某种程度上是类似的。我们依然遵循以下步骤:先对HashTable有个整体的认识,然后学习它的源码,深入剖析HashTable。1.HashTable简介 首先看一下HashTable的继承关系java.lang.Object ↳ java.uti原创 2016-04-21 20:04:27 · 4365 阅读 · 7 评论 -
java集合框架06——fail-fast机制
在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList:注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误的做法:迭代器的快速失转载 2016-04-14 10:06:58 · 3169 阅读 · 1 评论 -
java集合框架05——ArrayList和LinkedList的区别
前面已经学习完了List部分的源码,主要是ArrayList和LinkedList两部分内容,这一节主要总结下List部分的内容。List概括先来回顾一下List在Collection中的的框架图:从图中我们可以看出:1. List是一个接口,它继承与Collection接口,代表有序的队列。2. AbstractList是一个抽象类,它继承与AbstractColle原创 2016-04-13 20:39:09 · 110174 阅读 · 41 评论 -
java集合框架02——Collection架构与源码分析
Collection是一个接口,它主要的两个分支是List和Set。如下图所示: List和Set都是接口,它们继承与Collection。List是有序的队列,可以用重复的元素;而Set是数学概念中的集合,不能有重复的元素。List和Set都有它们各自的实现类。为了方便,我们抽象出AbstractCollection类来让其他类继承,该类实现类Collection中的绝...原创 2016-04-13 08:21:49 · 13523 阅读 · 10 评论 -
java集合框架04——LinkedList和源码分析
上一章学习了ArrayList,并分析了其源码,这一章我们将对LinkedList的具体实现进行详细的学习。依然遵循上一章的步骤,先对LinkedList有个整体的认识,然后学习它的源码,深入剖析LinkedList。LinkedList简介 首先看看LinkedList与Collection的关系:原创 2016-04-12 18:53:35 · 5863 阅读 · 2 评论 -
java集合框架03——ArrayList和源码分析
上一章学习了Collection的架构,并阅读了部分源码,这一章开始,我们将对Collection的具体实现进行详细学习。首先学习List。而ArrayList又是List中最为常用的,因此本章先学习ArrayList。先对ArrayList有个整体的认识,然后学习它的源码,深入剖析ArrayList。1. ArrayList简介 首先看看ArrayList与Collecti...原创 2016-04-11 15:05:57 · 6878 阅读 · 5 评论 -
java集合框架07——Map架构与源码分析
前几节我们对Collection以及Collection中的List部分进行了分析,Collection中还有个Set,由于Set是基于Map实现的,所以这里我们先分析Map,后面章节再继续学习Set。首先我们看下Map架构图: 从图中可以看出: 1. Map是一个接口,Map中存储的内容是键值对(key-value)。 2. 为了方便原创 2016-04-14 17:16:08 · 7572 阅读 · 1 评论 -
java集合框架10——TreeMap和源码分析(一)
前面讨论完了HashMap和HashTable的源码,这一节我们来讨论一下TreeMap。先从整体上把握TreeMap,然后分析其源码,深入剖析TreeMap的实现。1. TreeMap简介 TreeMap是一个有序的key-value集合,它内部是通过红-黑树实现的,如果对红-黑树不太了解,请先参考下这篇博文:红-黑树。下面我们先来看看TreeMap的继承关系:java原创 2016-04-25 09:14:52 · 4847 阅读 · 2 评论 -
java集合框架11——TreeMap和源码分析(二)
我们继续分析TreeMap的源码1.TreeMap源码分析(续)1. 存取方法 TreeMap中的存取方法本质上就是对红黑树的插入和删除操作,从源码里体现的更为明显,其实就是对红黑树的插入和删除(可以参考:红黑树),下面简单看下源码:/*************************** put和remove ****************************原创 2016-04-25 13:12:26 · 6077 阅读 · 1 评论 -
小心踩雷,一次Java内存泄漏排查实战
“前些日子小组内安排值班,轮流看顾我们的服务,主要做一些报警邮件处理、Bug 排查、运营 issue 处理的事。工作日还好,无论干什么都要上班的,若是轮到周末,那这一天算是毁了。不知道是公司网络广了就这样还是网络运维组不给力,网络总有问题,不是这边交换机脱网了,就是那边路由器坏了,还偶发地各种超时,而我们灵敏的服务探测服务总能准确地抓住偶现的小问题,给美好的工作加点料。...转载 2019-06-04 08:45:00 · 8587 阅读 · 8 评论