原创 FairScheduler的任務調度機制——assignTasks

首先需要了解FairScheduler是如何在各個Pool之間分配資源,以及每個Pool如何在Job之間分配資源的。FairScheduler的分配資源發生在update()方法中,而該方法由一個線程UpdateThread每隔updat

原创 Hadoop1.2.1源碼解析系列:JT與TT之間的心跳通信機制——命令篇

前兩篇文章簡單介紹了hadoop心跳機制的兩個重要角色:JT和TT,雖然不是太詳細,但是大紙業說清楚了一些事,在JT篇的最後對於JT返回TT的心跳響應中的一些命令一筆帶過,這篇文章將重要介紹這些命令:ReinitTrackerAction

原创 算法系列:矩陣相乘算法的MapReduce實現

看到一篇文章,列出了幾個使用MapReduce完成的算法(附有實現案例),但是還是想自己實現下,所以自己寫了一個,後來看了下案例,不是太一樣,但是我實現了,不管效果如何,或者好不好看,總之我實現了。這裏就跟大家分享下,同時也希望能得到一個

原创 算法系列:PageRank算法的MapReduce實現

首先簡單介紹PageRank的算法公式: (圖片來源:http://en.wikipedia.org/wiki/Page_rank) PR(A)即A的PageRank值;d爲阻尼因子,一般設爲0.85;L(B)即B網站所有的出鏈數量(即B

原创 排序算法系列——直接選擇排序

前面兩篇介紹了兩種插入排序算法:直接插入排序和希爾排序。這篇介紹選擇排序的一種:直接選擇排序。從名字就可以看出直接選擇排序與直接插入排序很相似,兩者相同點在與都是將待排序序列分成有序區和無序區兩部分,不同之處在於直接插入排序是從無

原创 排序算法系列——希爾排序

希爾排序同之前介紹的直接插入排序一起屬於插入排序的一種。希爾排序算法是按其設計者希爾(Donald Shell)的名字命名,該算法由1959年公佈,是插入排序的一種更高效的改進版本。它的作法不是每次一個元素挨一個元素的比較。而是初

原创 JDK併發工具類源碼學習系列——ConcurrentLinkedQueue

歡迎閱讀原文:JDK併發工具類源碼學習系列目錄 上一篇文章介紹了JDK java.util.concurrent包下很重要的一個類:ConcurrentHashMap,今天來看下另一個重要的類——ConcurrentLinkedQ

原创 JDK併發工具類源碼學習系列——ConcurrentHashMap

歡迎閱讀本系列更多文章:JDK併發工具類源碼學習系列目錄 作爲JDK併發工具類源碼學習系列的第一個被分析的類,ConcurrentHashMap類在我的開發過程中經常被使用。個人覺得如果在共享一個Map時,如果無法判斷是否需要加

原创 排序算法系列——歸併排序

歸併排序的核心思想同上一篇介紹的快速排序,都是採用了分治法的思想。其基本思想是將一個待排序序列,劃分成兩個子序列,然後將這兩個子序列排好序之後合併,並遞歸的將子序列劃分爲更小的子序列,一直到只有一個元素的子序列,然後自底向上兩兩合

原创 JDK併發工具類源碼學習系列——SynchronousQueue

SynchronousQueue是一種特殊的阻塞隊列,不同於LinkedBlockingQueue、ArrayBlockingQueue和PriorityBlockingQueue,其內部沒有任何容量,任何的入隊操作都需要等待其他

原创 JDK併發工具類源碼學習系列——LinkedBlockingQueue

LinkedBlockingQueue是一個基於已鏈接節點的、範圍任意的 blocking queue。此隊列按 FIFO(先進先出)排序元素。隊列的頭部 是在隊列中時間最長的元素。隊列的尾部 是在隊列中時間最短的元素。新元素插入

原创 JDK併發工具類源碼學習系列——CopyOnWriteArrayList

CopyOnWriteArrayList是ArrayList的一個線程安全的變體,其中所有可變操作(add、set 等等)都是通過對底層數組進行一次新的複製來實現的。 這一般需要很大的開銷,但是當遍歷操作的數量大大超過可變操作的數

原创 數據結構系列——Trie樹

Trie樹,即字典樹,又稱單詞查找樹或鍵樹,是一種樹形結構,是一種哈希樹的變種。典型應用是用於統計和排序大量的字符串(但不僅限於字符串),所以經常被搜索引擎系統用於文本詞頻統計。它的優點是:最大限度地減少無謂的字符串比較,查詢效率

原创 排序算法系列——冒泡排序

冒泡排序是交換排序的一種,其思想是從序列頭部開始逐步往後遍歷,每次遍歷比較相鄰兩個元素,如果順序不對則交換,n-1次遍歷之後序列就完成了排序。由於每次遍歷都是把最大的元素一步步讓最後移動,類似於水泡慢慢浮出水面,於是得名冒泡算法。

原创 一個簡單的二叉查找樹實現

一個二叉樹實現例子,僅實現add操作,未添加delete操作,待後期添加吧。 /** * <p> * 二叉樹 * </p> * * @author Vicky * @date 2015-8-10 */ public