随笔分类 -  Java提高篇

Java从入门到放弃
摘要:四种引用类型总结 引用级别:强引用 软引用 弱引用 虚引用 理解 就如最开始说的,设置四种引用类型,是为了更好的控制对象的生命周期,让代码能够一定程度上干涉GC过程,所以引用类型主要就是跟垃圾回收有关了。 对于JVM、GC和内存,可以这样理解,内存好比你的抽屉,这个抽屉有一定大小,并不能无限存放东西 阅读全文
posted @ 2019-03-04 19:26 弗兰克的猫 阅读(717) 评论(2) 推荐(0) 编辑
摘要:定义 PhantomReference是虚引用,该引用不会影响不会影响对象的生命周期,也无法从虚引用中获取对象实例。 说明 源码介绍部分其实也没多大内容,主要内容都在前面介绍中说完了。PhantomReference类的源码和WeakReference类一样简单: 可以看到,get方法直接返回nul 阅读全文
posted @ 2019-01-08 01:02 弗兰克的猫 阅读(1654) 评论(6) 推荐(0) 编辑
摘要:定义 WeakReference是弱引用,该引用不会影响垃圾回收器对对象的回收,不会影响对象的生命周期。 说明 当虚拟机在某个时间点决定要回收一个弱可达(weakly reachable)对象时,会自动清除该对象的所有弱引用。并且会将对象变为finalizable状态,然后把这些刚清除的弱引用放到其 阅读全文
posted @ 2019-01-04 18:28 弗兰克的猫 阅读(871) 评论(1) 推荐(1) 编辑
摘要:定义 SoftReference是软引用,其引用的对象在内存不足的时候会被回收。只有软引用指向的对象称为软可达(softly reachable)对象。 说明 垃圾回收器会在内存不足,经过一次垃圾回收后,内存仍旧不足的时候回收掉软可达对象。在虚拟机抛出OOM之前,会保证已经清除了所有指向软可达对象的 阅读全文
posted @ 2018-12-21 10:56 弗兰克的猫 阅读(3936) 评论(3) 推荐(2) 编辑
摘要:定义 ReferenceQueue是引用队列,用于存放待回收的引用对象。 说明 对于软引用、弱引用和虚引用,如果我们希望当一个对象被垃圾回收器回收时能得到通知,进行额外的处理,这时候就需要使用到引用队列了。 在一个对象被垃圾回收器扫描到将要进行回收时,其相应的引用包装类,即reference对象会被 阅读全文
posted @ 2018-12-11 19:49 弗兰克的猫 阅读(2551) 评论(2) 推荐(1) 编辑
摘要:源码详解系列均基于JDK8进行解析 说明 在Java容器详解系列文章的最后,介绍一个相对特殊的成员:WeakHashMap,从名字可以看出它是一个 Map。它的使用上跟HashMap并没有什么区别,所以很多地方这里就不做过多介绍了,可以翻看一下前面HashMap中的内容。本篇主要介绍它与HashMa 阅读全文
posted @ 2018-10-10 09:47 弗兰克的猫 阅读(1051) 评论(0) 推荐(2) 编辑
摘要:今天要介绍的是基础容器类(为了与并发容器类区分开来而命名的名字)中的另一个成员——PriorityQueue,它的大名叫做优先级队列,想必即使没有用过也该有所耳闻吧,什么?没。。没听过?emmm。。。那就更该认真看看了。 通过本篇你将了解到: 1、PriorityQueue是什么? 2、Priori 阅读全文
posted @ 2018-09-09 18:31 弗兰克的猫 阅读(1209) 评论(2) 推荐(2) 编辑
摘要:今天来介绍一个不太常见也不太常用的类——ArrayDeque,这是一个很不错的容器类,如果对它还不了解的话,那么就好好看看这篇文章吧。 看完本篇,你将会了解到: 1、ArrayDeque是什么? 2、ArrayDeque如何使用? 3、ArrayDeque的内部结构是怎样的? 4、ArrayDequ 阅读全文
posted @ 2018-09-07 19:29 弗兰克的猫 阅读(13484) 评论(6) 推荐(16) 编辑
摘要:上一篇很水的介绍完了TreeMap,这一篇来看看更水的TreeSet。 本文将从以下几个角度进行展开: 1、TreeSet简介和使用栗子 2、TreeSet源码分析 本篇大约需食用10分钟,各位看官请随意享用。 一、TreeSet简介 TreeSet是Set家族中的又一名懒将,跟其他两位一样,与对应 阅读全文
posted @ 2018-09-02 23:59 弗兰克的猫 阅读(824) 评论(0) 推荐(4) 编辑
摘要:今天来看看Map家族的另一名大将——TreeMap。前面已经介绍过Map家族的两名大将,分别是HashMap,LinkedHashMap。HashMap可以高效查找和存储元素,LinkedHashMap可以在高效查找的基础上对元素进行有序遍历,那么TreeMap又有什么特点呢?别急别急,看完这篇你就 阅读全文
posted @ 2018-08-28 23:42 弗兰克的猫 阅读(651) 评论(4) 推荐(3) 编辑
摘要:当当当当当当当,本来打算出去浪来着,想想还是把这个先一起写完吧,毕竟这篇的主角跟我一样是一个超级偷懒的角色——LinkedHashSet,有多偷懒?看完你就知道了。 本篇将从以下几个方面对LinkedHashSet进行介绍: 1、LinkedHashSet中的特性 2、LinkedHashSet源码 阅读全文
posted @ 2018-08-11 11:53 弗兰克的猫 阅读(662) 评论(10) 推荐(3) 编辑
摘要:今天来介绍一下容器类中的另一个哈希表———》LinkedHashMap。这是HashMap的关门弟子,直接继承了HashMap的衣钵,所以拥有HashMap的全部特性,并青出于蓝而胜于蓝,有着一些HashMap没有的特性。 接下来就一起来看看这个关门弟子到底有多大能耐。 本文将从以下几点对Linke 阅读全文
posted @ 2018-08-10 21:17 弗兰克的猫 阅读(1247) 评论(10) 推荐(1) 编辑
摘要:这次介绍一下List接口的另一个践行者——LinkedList,这是一位集诸多技能于一身的List接口践行者,可谓十八般武艺,样样精通,栈、队列、双端队列、链表、双向链表都可以用它来模拟,话不多说,赶紧一起来看看吧。 本篇将从以下几个方面对LinkedList进行解析: 1.LinkedList整体 阅读全文
posted @ 2018-08-02 23:21 弗兰克的猫 阅读(1218) 评论(5) 推荐(5) 编辑
摘要:当当当当当当当,好久不见,最近又是换工作,又是换房子,忙的不可开交,断更了一小段时间,最重要的一篇迟迟出不来,每次都犹抱琵琶半遮面,想要把它用通俗易懂的方式进行说明,确实有一定的难度,可愁煞我也,但自己挖的坑,哭着也要把它补上。请允许我当一回标题党。 好了,言归正传,本篇主要内容便是介绍HashMa 阅读全文
posted @ 2018-07-19 22:49 弗兰克的猫 阅读(17124) 评论(30) 推荐(39) 编辑
摘要:前两篇对HashMap这家伙的主要方法,主要算法做了一个详细的介绍,本篇主要介绍HashMap中默默无闻地工作着的集合们,包括KeySet,values,EntrySet,以及对应的迭代器:HashIterator,KeyIterator,ValueIterator,EntryIterator和 f 阅读全文
posted @ 2018-06-22 17:03 弗兰克的猫 阅读(1265) 评论(0) 推荐(4) 编辑
摘要:上一篇中对HashMap中的基本内容做了详细的介绍,解析了其中的get和put方法,想必大家对于HashMap也有了更好的认识,本篇将从了算法的角度,来分析HashMap中的那些函数。 HashCode 先来说说HashMap中HashCode的算法,在上一篇里,我们看到了HashMap中的put方 阅读全文
posted @ 2018-06-18 21:32 弗兰克的猫 阅读(1236) 评论(4) 推荐(7) 编辑
摘要:准备了很长时间,终于理清了思路,鼓起勇气,开始介绍本篇的主角——HashMap。说实话,这家伙能说的内容太多了,要是像前面ArrayList那样翻译一下源码,稍微说说重点,肯定会让很多人摸不着头脑,不能把复杂的东西用尽量简单的方式说明白,那就说明讲的挺失败的(面壁中)。所以这次决定把内容分四篇进行讲 阅读全文
posted @ 2018-06-16 19:39 弗兰克的猫 阅读(1722) 评论(6) 推荐(17) 编辑
摘要:今天要介绍的是List接口中最常用的实现类——ArrayList,本篇的源码分析基于JDK8,如果有不一致的地方,可先切换到JDK8后再进行操作。 本篇的内容主要包括这几块: 1.源码结构介绍 2.源代码展示 3.要点说明 4.优缺点说明 一、源码结构介绍 ArrayList的源码跟之前的接口源码比 阅读全文
posted @ 2018-06-03 19:01 弗兰克的猫 阅读(1126) 评论(0) 推荐(8) 编辑
摘要:上一篇里介绍了容器家族里的大族长——Collection接口,今天来看看容器家族里的二族长——Map接口。 Map也是容器家族的一个大分支,但里面的元素都是以键值对(key-value)的形式存放的,就像字典一样,用相应的key就可以拿到相应的value。 先来看看Map接口的内容,下面是阉割版的M 阅读全文
posted @ 2018-05-22 01:36 弗兰克的猫 阅读(750) 评论(0) 推荐(1) 编辑
摘要:今天来看看Java里的一个大家伙,那就是容器。 所谓容器,就是专门用来装对象的东西,如果你学过高数,没错,就跟里面说的集合是一个概念,就是一堆对象的集合体,但是集合类是容器类中的一个子集,为了区别表示,所以还是叫容器类,之后所说的集合类只是容器里的一个子集,之后会有详细介绍。 容器就是用来存放和管理 阅读全文
posted @ 2018-05-18 01:02 弗兰克的猫 阅读(1268) 评论(0) 推荐(3) 编辑