原创 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.