摘要:
垃圾收集器(Garbage Collection,GC)。大部分人吧GC技术当成Java语言的伴生产物,实际上,GC的历史比Java久远很多,1960年诞生与MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。当然,本文只讨论在Java虚拟机中所使用的垃圾收集机制和垃圾收集器。 对象已 阅读全文
摘要:
Java GC(Garbage Collection,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机 阅读全文
摘要:
我在讲解heapsort之前,我先讲解了priority queue,重点就在于heap排序使用了priority queue的思想。 前面我们很详细的讲解了priority queue的的流程,我们在进行heapsort的时候就会简单很多。 注意我们sink的过程将会是理解heapsort的重要过 阅读全文
摘要:
这真的是一个包含很多东西的数据结构。我们会逐步解析,来讲解优先队列: 首先知道什么是优先队列: 普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除(first in, last out)。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级 阅读全文
摘要:
我们上一篇文章讲述了快速排序的一些要素,我给出代码中其实考虑了某些优化,我们接下来对快速排序中用到和么用到的优化都进行一定的讲解: 1)就地分割(Partitioning in place) 真的原谅一下我的语文表达能力,其实就是考虑分割过程中需不需要多余数组来辅助的问题。如果我们使用一个多余的数组 阅读全文
摘要:
快速算法同样是非常重要的,用我们教授的话,这是一个里程碑的算法。虽然我也不知道为什么。 我们还是首先来看看快速排序的思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达 阅读全文
摘要:
在《algorithm》中,作者单独讲mergesort作为一个小节,可以看出它的重要程度。 首先来看一下归并排序的运用场景是怎样的:将两个已排序列进行排列。 主要的思想便是:比较a[i]和b[j]的大小,若a[i]≤b[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和k分别加上1; 阅读全文
摘要:
其实基本排序并不是一个排序方法,而是集中基本的排序方法的定位,我使用这个名字也是因为《algorithm》书中将下面几种排序方法放在一章中,而这一章节的名字成为基本排序(elementary sort)。 书中包括三种排序方法:选择排序(selection sort)、插入排序(insertion 阅读全文
摘要:
接着上一篇文章的内容,这篇我们将阐述hashmap在jdk1.8中的扩容机制。 jdk1.8中对hashmap有着非常棒的扩容机制,我们在上一篇文章提到了当链表长度大于某个值的时候,hashmap中的链表会变成红黑树结构,但是实际上真的是这样么?我们来看一下树化的函数是怎样进行的: 我们从第一个判断 阅读全文
摘要:
HashMap可以说是java中最常见的几种集合了。 在了解HashMap前我们要先了解Object的两个方法:Equals和hashCode() 首先我们来看一下object内的源码是怎样实现的: hashcode(): 但是这个方法没有实现!注意上面这句话: 这里我将jdk源码中所有相关信息都给 阅读全文