博客园_余林丰 四川·成都·RD hellobug@outlook.com uuid:a720bd6f-98c3-4f6b-a93b-7f1114a1fbe5;id=4413 2017-06-26T14:02:05Z 余林丰 /yulinfeng/ feed.cnblogs.com /yulinfeng/p/7082700.html 有关ArrayList常用方法的源码解析 - 余林丰 我相信几乎所有的同学在大大小小的笔试、面试过程中都会被问及ArrayList与LinkedList之间的异同点。稍有准备的人这些问题早已烂熟于心,前者基于数组实现,后者基于链表实现;前者随机方法速度快删除和插入指定位置速度慢,后者随机访问速度慢删除和插入指定位置速度快;两者都是线程不安全的;列表与数 2017-06-26T14:00:00Z 2017-06-26T14:00:00Z 余林丰 /yulinfeng/ 【摘要】我相信几乎所有的同学在大大小小的笔试、面试过程中都会被问及ArrayList与LinkedList之间的异同点。稍有准备的人这些问题早已烂熟于心,前者基于数组实现,后者基于链表实现;前者随机方法速度快删除和插入指定位置速度慢,后者随机访问速度慢删除和插入指定位置速度快;两者都是线程不安全的;列表与数 <a href="/yulinfeng/p/7082700.html" target="_blank">阅读全文</a> /yulinfeng/p/7078661.html 5.比较排序之归并排序(非递归) - 余林丰 在上一节中讲解了归并排序的递归版《4.比较排序之归并排序(递归)》,通常来讲,递归版的归并排序要更为常用,本节简单介绍下非递归版的归并排序。思路和递归版相同,均为先分解后合并,非递归的重点在于如何确定并合理的分解待排序数组。 对于递归我们是这么做的: 对于非递归来讲,切分的不向递归从大到小,非递归实 2017-06-25T17:04:00Z 2017-06-25T17:04:00Z 余林丰 /yulinfeng/ 【摘要】在上一节中讲解了归并排序的递归版《4.比较排序之归并排序(递归)》,通常来讲,递归版的归并排序要更为常用,本节简单介绍下非递归版的归并排序。思路和递归版相同,均为先分解后合并,非递归的重点在于如何确定并合理的分解待排序数组。 对于递归我们是这么做的: 对于非递归来讲,切分的不向递归从大到小,非递归实 <a href="/yulinfeng/p/7078661.html" target="_blank">阅读全文</a> /yulinfeng/p/7072163.html 4.比较排序之归并排序(递归) - 余林丰 归并排序里运用到算法里很重要的一个思想——分治法:将原问题分解为几个规模较小但类似于原问题的子问题——《算法导论》。在每一层递归中都有3个步骤: 1.分解问题 2.解决问题 3.合并问题的解 举例待排序数组:{6, 5, 3, 1, 7, 2, 4},将它原始序列做分解。 可以经过不断的递归分解可以 2017-06-23T17:50:00Z 2017-06-23T17:50:00Z 余林丰 /yulinfeng/ 【摘要】归并排序里运用到算法里很重要的一个思想——分治法:将原问题分解为几个规模较小但类似于原问题的子问题——《算法导论》。在每一层递归中都有3个步骤: 1.分解问题 2.解决问题 3.合并问题的解 举例待排序数组:{6, 5, 3, 1, 7, 2, 4},将它原始序列做分解。 可以经过不断的递归分解可以 <a href="/yulinfeng/p/7072163.html" target="_blank">阅读全文</a> /yulinfeng/p/7061681.html 3.比较排序之堆排序 - 余林丰 对于堆排序会涉及一些完全二叉树知识。对于待排序列{10, 2, 11, 8, 7},把它看成是一颗完全二叉树,如下图所示。 堆分为大根堆和小根堆:大根堆表示每个根节点均大于其子节点(L(i) >= L(2i) && L(i) >= L(2i + 1)),小根堆表示每个根节点均小于其子节点(L(i)  2017-06-21T13:03:00Z 2017-06-21T13:03:00Z 余林丰 /yulinfeng/ 【摘要】对于堆排序会涉及一些完全二叉树知识。对于待排序列{10, 2, 11, 8, 7},把它看成是一颗完全二叉树,如下图所示。 堆分为大根堆和小根堆:大根堆表示每个根节点均大于其子节点(L(i) >= L(2i) && L(i) >= L(2i + 1)),小根堆表示每个根节点均小于其子节点(L(i)  <a href="/yulinfeng/p/7061681.html" target="_blank">阅读全文</a> /yulinfeng/p/7056724.html 2.比较排序之梳排序 - 余林丰 梳排序的知名度远没有其他排序算法那么高,它是在冒泡排序的基础上做的改进,引入类似“步长”以及“子序列”概念,这两个概念在后面的排序算法中会经常提及。 待排序列:{10, 2, 11, 8, 7} groupNums = length = 5 步长系数(分组系数)coefficient = 1.3 排 2017-06-20T14:46:00Z 2017-06-20T14:46:00Z 余林丰 /yulinfeng/ 【摘要】梳排序的知名度远没有其他排序算法那么高,它是在冒泡排序的基础上做的改进,引入类似“步长”以及“子序列”概念,这两个概念在后面的排序算法中会经常提及。 待排序列:{10, 2, 11, 8, 7} groupNums = length = 5 步长系数(分组系数)coefficient = 1.3 排 <a href="/yulinfeng/p/7056724.html" target="_blank">阅读全文</a> /yulinfeng/p/7051217.html 1.比较排序之冒泡排序 - 余林丰 冒泡排序可以说是在排序算法中最为入门级别的算法之一了。因为其简单易于理解,常在课堂中作为排序的入门算法。 冒泡排序见名生意,其排序过程如同水里的泡一般由下往上逐级递升。下图所示为冒泡排序过程:假设待排序序列为{10, 2, 11, 8, 7}。 Java Python3 2017-06-19T15:57:00Z 2017-06-19T15:57:00Z 余林丰 /yulinfeng/ 【摘要】冒泡排序可以说是在排序算法中最为入门级别的算法之一了。因为其简单易于理解,常在课堂中作为排序的入门算法。 冒泡排序见名生意,其排序过程如同水里的泡一般由下往上逐级递升。下图所示为冒泡排序过程:假设待排序序列为{10, 2, 11, 8, 7}。 Java Python3 <a href="/yulinfeng/p/7051217.html" target="_blank">阅读全文</a> /yulinfeng/p/7045648.html 14.Java中的Future模式 - 余林丰 jdk1.7.0_79 本文实际上是对上文《13.ThreadPoolExecutor线程池之submit方法》的一个延续或者一个补充。在上文中提到的submit方法里出现了FutureTask,这不得不停止脚步将方向转向Java的Future模式。 Future是并发编程中的一种设计模式,对于多线 2017-06-18T14:18:00Z 2017-06-18T14:18:00Z 余林丰 /yulinfeng/ 【摘要】jdk1.7.0_79 本文实际上是对上文《13.ThreadPoolExecutor线程池之submit方法》的一个延续或者一个补充。在上文中提到的submit方法里出现了FutureTask,这不得不停止脚步将方向转向Java的Future模式。 Future是并发编程中的一种设计模式,对于多线 <a href="/yulinfeng/p/7045648.html" target="_blank">阅读全文</a> /yulinfeng/p/7039979.html 13.ThreadPoolExecutor线程池之submit方法 - 余林丰 jdk1.7.0_79 在上一篇《ThreadPoolExecutor线程池原理及其execute方法》中提到了线程池ThreadPoolExecutor的原理以及它的execute方法。本文解析ThreadPoolExecutor#submit。 对于一个任务的执行有时我们不需要它返回结果,但是有 2017-06-17T05:05:00Z 2017-06-17T05:05:00Z 余林丰 /yulinfeng/ 【摘要】jdk1.7.0_79 在上一篇《ThreadPoolExecutor线程池原理及其execute方法》中提到了线程池ThreadPoolExecutor的原理以及它的execute方法。本文解析ThreadPoolExecutor#submit。 对于一个任务的执行有时我们不需要它返回结果,但是有 <a href="/yulinfeng/p/7039979.html" target="_blank">阅读全文</a> /yulinfeng/p/7021293.html 12.ThreadPoolExecutor线程池原理及其execute方法 - 余林丰 jdk1.7.0_79 对于线程池大部分人可能会用,也知道为什么用。无非就是任务需要异步执行,再者就是线程需要统一管理起来。对于从线程池中获取线程,大部分人可能只知道,我现在需要一个线程来执行一个任务,那我就把任务丢到线程池里,线程池里有空闲的线程就执行,没有空闲的线程就等待。实际上对于线程池的执行 2017-06-15T15:53:00Z 2017-06-15T15:53:00Z 余林丰 /yulinfeng/ 【摘要】jdk1.7.0_79 对于线程池大部分人可能会用,也知道为什么用。无非就是任务需要异步执行,再者就是线程需要统一管理起来。对于从线程池中获取线程,大部分人可能只知道,我现在需要一个线程来执行一个任务,那我就把任务丢到线程池里,线程池里有空闲的线程就执行,没有空闲的线程就等待。实际上对于线程池的执行 <a href="/yulinfeng/p/7021293.html" target="_blank">阅读全文</a> /yulinfeng/p/7004383.html 11.并发包阻塞队列之LinkedBlockingQueue - 余林丰 jdk1.7.0_79 在上文《10.并发包阻塞队列之ArrayBlockingQueue》中简要解析了ArrayBlockingQueue部分源码,在本文中同样要介绍的是Java并发包中的阻塞队列LinkedBlockingQueue。ArrayBlockingQueue队列是由数组实现,而Lin 2017-06-13T15:27:00Z 2017-06-13T15:27:00Z 余林丰 /yulinfeng/ 【摘要】jdk1.7.0_79 在上文《10.并发包阻塞队列之ArrayBlockingQueue》中简要解析了ArrayBlockingQueue部分源码,在本文中同样要介绍的是Java并发包中的阻塞队列LinkedBlockingQueue。ArrayBlockingQueue队列是由数组实现,而Lin <a href="/yulinfeng/p/7004383.html" target="_blank">阅读全文</a>