原创 Hot Spot虛擬機新生代爲什麼是一個eden+2個survivor

注:本文針對Hot Spot虛擬機 一、分代收集 在很多時候,JVM中對象的生命週期差距較大,部分對象可能是“朝生夕死”的(大部分),而部分對象可能又是比較“命長”的(小部分)。所以根據對象生命週期的特點,我們將堆空間分爲幾個區域,比如新

原创 數據結構與算法(五):隊列與應用

一、定義 和棧一樣,隊列也是一種操作受限的線性表:它只允許在表的前端進行刪除操作,在表的後端進行插入操作,按照這個特性,先插入的數據會被先移除,所以隊列是一種先進先出(FIFO)的線性表。進行插入操作的端稱爲隊尾,進行刪除操作的端稱爲隊頭

原创 Java使用JDBC連接Impala

一、下載驅動 到官網下載對應版本的Impala JDBC Connector,我這裏下載的是2.6.12版本,若有需要,可自行選擇版本: https://www.cloudera.com/downloads/connectors/imp

原创 安裝CDH出現file /opt/cloudera/parcels/.flood/CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel...does not exist

使用Cloudera Manager採取parcel方式安裝CDH的時候,部分agent節點出現異常: Src file /opt/cloudera/parcels/.flood/CDH-6.2.0-1.cdh6.2.0.p0.9673

原创 kudu環境搭建和基本使用(centos-7)

注:本文只記錄kudu的安裝,不涉及其它工具或組件 一、前言 安裝 kudu有多種方式,本文介紹使用yum源在線安裝的方式(kudu不像CM那樣安裝包很大,在線安裝不會有什麼問題)。博主當前準備四個節點:192.168.0.198、192

原创 Cloudera Manager CDH 離線安裝

注:離線安裝只是針對CM、CDH、數據庫等較大的模塊,中途如果需要安裝其它相關依賴的組件,還是選擇的在線安裝,這些組件都很小不會有什麼影響。如果使用的虛擬機實在沒有網絡,那麼下載到宿主機之後上傳安裝也可以,只是需要自己處理一些依賴。 一、

原创 Hive出現 Cause:Table 'metastore.VERSION' doesn't exist異常

描述: 使用Cloudera Manager集成Hive的服務,出現 Cause:Table 'metastore.VERSION' doesn't exist異常,去對應的數據庫查看,發現該表確實不存在,而且很多其它表也沒有。 解決方案

原创 Java併發編程(八):volatile詳解

一、背景 大家都知道volatile作爲一個“輕量級”的關鍵字,它能夠保證可見性、有序性,但是不能保證原子性。那麼它到底是怎麼保證可見性和有序性的呢?爲什麼不能保證原子性呢?我們該如何正確使用volatile呢?下面我們一一進行解釋。 二

原创 Java併發編程(七):原子性、可見性、有序性與happens-before

一、三大特性 1.1 原子性 原子是化學反應中不可再分的基本微粒,其在化學反應中不可分割。在計算機中,它表示的是一個操作,可能包含一個或多個步驟,這些步驟要麼全部執行成功要麼全部執行失敗,並且執行的過程中不能被其它操作打斷,這類似於數據庫

原创 Lucene檢索源碼解析(中)

上文已經介紹了檢索前的準備工作,本文接着上文的內容,繼續剖析檢索和打分操作 一、獲取LeafCollector 我們先來看一下IndexSearcher的search方法: protected void search(List<Leaf

原创 數據結構與算法(三):棧與應用

一、定義 棧是一種操作受限的線性表。之所以說它操作受限,是由於其只能在一端插入和刪除數據。這一端叫做“棧頂”,另外一端則爲“棧底”。插入的操作我們通常稱之爲“PUSH”(入棧),刪除的操作我們通常稱之爲“POP”(出棧)。所以它具有FIL

原创 Lucene檢索源碼解析(上)

有了Lucene得分公式(戳這裏看詳情)的基礎,我們現在先跳過寫索引的步驟,直接解析查詢這塊兒的代碼(還是基於5.5.0)。另外由於內容實在太多,所以文章分爲三部分介紹,第一部分主要介紹實際檢索前的一些處理,第二部分介紹檢索和評分,第三部

原创 Java併發編程(六):從CPU緩存一致性協議到JMM(Java內存模型)

注:本系列主要注重併發編程這塊兒,JVM內容很多,會另外開專欄總結,此係列可能只是會稍微提及 一、跨平臺和JVM 經過前面幾篇博文的介紹,我們知道,任何編程語言編寫的程序要想被計算機執行,都必須被翻譯成運行環境的CPU所能識別的一系列指令

原创 數據結構與算法(三):鏈表

一、單向鏈表 上一篇文章我們提到了,和數組一樣,鏈表也屬於線性表結構,但是鏈表是鏈式的,而數組是順序的。它和數組最大的區別就是,它的元素存儲並不依賴連續的內存空間,元素之間使用指針來實現邏輯順序。 如果創建一個長度爲4的數組,其內存佈局可

原创 spring-security框架改造:根據接口參數驗證權限

一、背景 spring-security作爲一個權限驗證框架,還是很好用的(雖然有點“重”),它能攔截請求,根據請求的路徑、配置的權限碼和定義的權限驗證器進行權限攔截,同時能很方便的和spring、sprign-session等集成。但是