原创 JVM內存結構圖解

一 真實系統中的概念   JVM(Java Virtual Machine),顧名思義是對真實計算機系統的模擬,正因如此才能屏蔽物理機器的變化,從而實現“一次編譯,到處運行”。   相信很多Java程序員經常聽到堆、棧等概念,也會進行

原创 Xcafe:Netty實現兼容SpringMVC的Web容器

1.0 前言   Netty是一個非常優秀的java nio框架,這已無需多言。國慶時逛StackOverFlow,發現有人問如何用netty來支持Spring MVC,逛了一圈github並沒有找到有價值的分享。   正好,我一直都想自

原创 RocketMQ筆記(2)_雙主雙從部署

  RocketMQ作爲分佈式的消息中間件,生產環境中只有集羣部署纔有實際意義。本文主要介紹雙主雙從的配置與及部署過程中可能遇到的問題,並假定每臺機器均已安裝好RocketMQ和JDK。如編譯安裝過程有疑問,請參考:   RocketMQ

原创 Java多線程01_可重入函數、可重入鎖

測試環境 OS:windows7_X64 JDK:jdk1.8.0_20 IDE: eclipse_neon 一、可重入函數 相信很多人都聽說過可重入函數,可重入函數最重要的兩條法則就是: 只使用非靜態局部變量;不調用不可重入的函

原创 算法01之歸併排序及多線程測試

一、基本思想     歸併排序和快速排序都使用了分治法,分治法的策略是將一個規模爲n的大問題分解成k個相同的子問題,這些子問題互相獨立且與原問題性質相同,然後分別求解這些子問題,最後將這些子問題的解合併後得到原問題的解。     歸併排序

原创 分佈式ID生成策略(1)_snowflake算法

最近在研究分佈式ID的生成方法,發現Twitter的snowflake算法挺有意思,因此親自動手用Java進行了實現。   snowflake算法的原理就是用64位整數來表示主鍵,其結構如下圖: 1 bit符號位:設計者不喜歡負數主鍵?

原创 Fork/Join(3):ForkJoinPool之API翻譯

Fork/Join(3):ForkJoinPool之API翻譯 ForkJoinPool是Fork/Join框架的兩大核心類之一,這一節先翻譯API,具體使用方法和實現原理留待後續章節再談。 雖然fork/join框架從JDK1.7開

原创 Fork/Join(2):歸併排序

JDK:1.8.0_20 OS :Win7_64 CPU:雙核2.93GHz   fork/join框架是分治法的體現,因此特別適合歸併排序這種分治算法。   單線程測試排序2億個整數約59349毫秒,使用fork/join測試排序約

原创 Fork/Join(1):概念與入門示例

Fork/Join框架是JDK1.7引入的並行計算框架,核心概念:   1. 將大任務自動遞歸分解成小任務並行執行;   2. 工作竊取(work-stealing)算法,空閒線程從另一個任務隊列獲取任務並執行,避免計算資源閒置。   

原创 Java位運算符及二進制常識

一、位運算    二、位移運算    三、二進制數   以Java中最常使用的int類型爲例(32位)。    ㈠ 符號位   二進制數最左端的數字爲符號位:0代表正,1代表負。   ㈡ 最大與最小   ⑴  1是最小的正整數,符號位

原创 從數組到HashMap之算法解釋

一 數組是什麼?   忘了在哪本書裏曾看到過類似這樣的一句話“所有的數據結構都是數組的演化”,想想其實是有道理的,因爲計算機的內存其實就是線性的存儲空間。   Java示例代碼:int[] array = new int[5]   忽略

原创 RocketMQ筆記(1)_Linux下編譯部署

微服務架構中,消息隊列和遠程服務調用已是兩大必不可少的組件,而RocketMQ和Dubbo正是阿里系貢獻的對應的兩大精品開源,作爲兩個已經得到廣泛應用的框架,好好學習研究是必需的。 1. 軟件準備 官方文檔:https://github.