原创 Thread.interrupted()與Thread.isInterrupted()的區別

調用Thread.interrupt()方法並不能真正停止線程,只是在當前線程做了一箇中斷的狀態標誌。 public class MyThread extends Thread{ @Override public

原创 jdk1.8中ConcurrentLinkedQueue的實現原理

原文鏈接 ConcurrentLinkedQueue源碼分析 作者 周盛帆 概述 ConcurrentLinkedQueue是一個基於鏈接節點的無界線程安全隊列,採用FIFO的規則對節點進行排序,當我們添加一個元素的時候,它會添加

原创 (3)Storm實時日誌分析實戰--編碼實現

LogParserBolt類 package com.ibeifeng.bigdata.storm.weglog; import backtype.storm.task.OutputCollector; import back

原创 Synchronized的實現與原理

此文乃《Java併發編程的藝術》讀書筆記。購買鏈接 實現的基礎 java中的每一個對象都可以作爲鎖 其表現形式爲: 1.對於普通同步方法,鎖是當前類的實例對象 2.對於靜態同步方法,鎖是當前類的Class對象

原创 原子操作的實現與原理

在java中可以通過鎖和CAS操作來實現原子操作 CAS實現原子操作 CAS自旋的基本思路是:循環進行CAS操作,直到成功爲止 下面代碼演示了非線程安全的計數器和採用CAS操作的線程安全計數器 public class Count

原创 啓動namenode節點報錯:No space left on device

報錯信息 sbin/hadoop-daemon.sh: line 177: echo: write error: No space left on device 解決方法: vim /etc/profile 加入下面兩句

原创 Java內存模型

基礎概念 在併發編程中,需要處理兩個關鍵的問題: 1. 線程之間如何通訊 2. 線程之間如何同步 在命令式編程中,線程通訊有兩種方式: 1. 共享內存 2. 消息傳遞 在共享內存的併發模型裏,線程之間共享程序

原创 Java位運算符總結

1. 左移(<<) 例如: 2 << 2,則是將數字2左移2位計算過程:2<< 2首先把2轉換爲二進制數字0000 0000 0000 0000 0000 0000 0000 0010,然後把該數字高位(左側)的兩個零移出,其他

原创 Storm消息可靠性的保障機制

參考【併發編程網】的Storm官方教程翻譯 以WordCountToPology爲例: // 構造Topology TopologyBuilder builder = new TopologyBuilder();

原创 (1)Storm實時日誌分析實戰--項目準備

流程圖 Flume收集Nginx的日誌,然後存在Kafka隊列中,由storm讀取Kafka中的日誌信息,經過相關處理後,保存到HBase和MySQL中 安裝步驟Kafka 從官網下載安裝包, 解壓到安裝目錄 到kafka官網

原创 Jdk1.8中的LinkHashMap實現原理

概述 LinkedHashMap繼承自HashMap,是Hash表和鏈表的實現,並且依靠着雙向鏈表保證了迭代順序是插入的順序。如果 一個key重新插入到LinkedHashMap中,那麼這個插入順序是無效的,也就是說,如果m.pu

原创 中斷線程的辦法

我們知道調用Thread的interrupt方法,並不能真正中斷線程,只是給線程做了箇中斷的狀態標記,那麼如何中斷線程呢? 先看如下的代碼: public class MyThread extends Thread{ @

原创 偏向鎖和輕量級鎖

1我們先說下java 對象頭部分的 Mark Word。在32位虛擬機上,他的長度是32位;在64位虛擬機上,他的長度是64位。 java1.6之後,對象有4中狀態:無鎖態,偏向鎖態,輕量鎖態,重量鎖態。 普通情況下,Mark W

原创 Java對象在虛擬機中的創建過程

虛擬機遇到一條new指令時,首先將去檢查這個指令的參數是否能在常量池中定位到一個類的符號引用。並且檢查代表這個符號引用的類是否已經被加載、解析和初始化過。如果沒有,那麼必須先執行相應的類加載。在類加載檢查通過後,接下來虛擬機將

原创 WordCountTopology的實現

流程圖如下: 2. 編寫SentenceSpout package com.ibeifeng.bigdata.storm.topo; import backtype.storm.spout.SpoutOutputCol