原创 NIO系列(二) 直接緩衝DirectByteBuffer

1. 介紹    ByteBuffer底層是通過byte數組的方式來存儲數據的,所謂直接緩衝是指byte數組是通過堆外存存儲的,並沒有存在jvm堆上,不受jvm垃圾回收的約束。 2. 直接緩衝和堆緩衝的創建方式    ByteBu

原创 EventBus源碼學習--併發原理

一、EventBus概述   Guava在guava-libraries中爲我們提供了事件總線EventBus,總線的概念大家應該都有了解,例如esb、或者dubbo的url,這些總線可以對分佈式系統進行解耦,EventBus大致思路也

原创 java concurrent 學習(1) – FutureTask原理

在多線程執行時,對於需要有返回值的場景,常常使用Callable和Future的方式來進行,常見的一種使用方式如下: 運行上面的代碼,在控制檯種等待三秒鐘之後打印出結果。代碼非常簡單,但是有幾個問題需要弄清楚:

原创 淺顯易懂的來講解Mapreduce-shuffle原理

本人在學習mapreduce初期,對shuffle階段一直雲裏霧裏,不明白shuffle階段存在的意義,進過了一些項目的洗禮才逐漸明瞭,現在就把工作中的一個場景作爲案例來講解shuffle的原理。 一、工作案例介紹 筆者曾經開發過一

原创 flume的概念和基本使用

一、flume概述 flume是一個分佈式的、可靠的、可用的以及高效的對大量數據日誌進行收集、聚集、移動信息的服務。flume是一個可容錯的、健壯的並且非常簡單的流式數據框架,他只需要簡單配置source、channel以及sin

原创 範型的使用和設計

  java泛型是JDK1.5以後出現的新特性,泛型的簡單使用(例如在集合中的使用)本文不做講解,這裏主要講解一下泛型的設計。 一、泛型類設計   在定義泛型類時,使用尖括號來指定泛型類型參數,泛型類型參數與方法參數不同,方法類型參

原创 MYSQL索引結構原理、性能分析與優化

第一部分:基礎知識 索引 官方介紹索引是幫助MySQL高效獲取數據的數據結構。筆者理解索引相當於一本書的目錄,通過目錄就知道要的資料在哪裏, 不用一頁一頁查閱找出需要的資料。 唯一索引(unique index) 強調唯一,就是索引值必

原创 深入分析MapReduce shuffle過程

  與上一篇博客不同,本篇博客(轉載)重點介紹mapreduce shuffle的詳細過程,完全是理論知識。 MapReduce的Shuffle過程介紹   爲什麼MapReduce計算模型需要Shuffle過程?我們都知道MapR

原创 java範型類型擦除

一. 概述   在上一篇範型博客中,主要講解了範型的基本使用和設計,在本篇博客中主要講解使用範型帶來的問題和解決方法。   在使用java範型時,我們通常會遇到諸多問題,例如不能使用T.class,不能直接使用T t.method

原创 切面和自定義註解的配合使用

一.概述        基於切面的編程(AOP)也許大家並不陌生,大家經常使用切面編程來解決事務問題。但是切面也有弊端,以筆者的經驗看來,使用切面的不方便之處在於切面的精確度問題,我們很難把事務加到大量的指定類的指定方法上,本文就通過S

原创 Spark1.6源碼編譯

一、前言 不論是spark還是hadoop、flume等,都建議新手在學習時自己進行手動編譯,在第一次編譯時肯定會遇到很多問題,大家要擺正心態,一定會有所收貨。本文將中重點講解apache版本和cdh版本下的spark編譯。 二