原创 Zookeeper(Curator)實現集羣配置文件統一管理

統一監聽管理的優勢? 因爲懶, 減輕運維人員的負擔, 防止由於疏忽導致集羣配置文件出錯. 解決思路 把公共配置抽取出來 對公共配置進行維護 修改公共配置後應用不需要重新部署 採用方案 公共配置抽取存放於zookeeper中

原创 Zookeeper(Curator)實現集羣配置文件統一管理

統一監聽管理的優勢? 因爲懶, 減輕運維人員的負擔, 防止由於疏忽導致集羣配置文件出錯. 解決思路 把公共配置抽取出來 對公共配置進行維護 修改公共配置後應用不需要重新部署 採用方案 公共配置抽取存放於zookeeper中

原创 Zookeeper實現腳本集羣啓動

注意目錄替換 #!/bin/bash #參數傳遞 usage="Usage: $0 (start|stop|status)" if [ $# -lt 1 ]; then echo $usage exit 1 fi beha

原创 Centos7 中docker開啓遠程訪問

首先,centos中docker的配置不同於ubuntu,在centos中沒有/etc/default/docker,另外在centos7中也沒有找到/etc/sysconfig/docke這個配置文件。 參考了的farYang文

原创 Docker配合Maven 實現一鍵打包部署docker鏡像

首先 開啓Docker遠程訪問許可: 並注意防火牆配置 vi /usr/lib/systemd/system/docker.service 加入下面兩行 ExecStart= ExecStart=/usr/bin/dock

原创 HashMap在 JDK1.7中的線程安全問題

HashMap在併發執行put操作時會引起死循環,是因爲多線程會導致HashMap的Entry鏈表形成環形數據結構,一旦形成環形數據結構,Entry的next節點永遠不爲空,就會產生死循環獲取Entry。 產生死循環的過程 (僅在

原创 HashMap 1.7和1.8的區別

底層數據結構不一樣,1.7是數組+鏈表,1.8則是數組+鏈表+紅黑樹結構(當鏈表長度大於8,轉爲紅黑樹)。 JDK1.7用的是頭插法,而JDK1.8及之後使用的都是尾插法,那麼他們爲什麼要這樣做呢?因爲JDK1.7是用單鏈表進行

原创 J.U.C之Fork/Join並行計算框架詳解

ForkJoin實現分而治之 對於簡單的並行任務可以通過"線程池+Future"方案來解決。 如果任務額之間有聚合關係(AND聚合或者OR聚合)用CompletableFuture解決。 批量的並行任務用CompletionSe

原创 J.U.C組件BlockingQueue及其具體實現類介紹

BlockingQueue 簡介 在實際編程中,會經常使用到 JDK 中 Collection 集合框架中的各種容器類如實現 List,Map,Queue 接口的容器類,但是這些容器類基本上不是線程安全的,除了使用 Collect

原创 J.U.C之深入理解Java線程池ThreadPoolExecutor

Java中的線程池是運用場景最多的併發框架, 幾乎所有需要異步或併發執行任務的程序都可以使用線程池。 在開發過程中, 合理地使用線程池能夠帶來3個好處。 降低資源消耗。 通過重複利用已創建的線程降低線程創建和銷燬造成的消耗。 提

原创 J.U.C-AQS框架簡介

AQS 簡介 AbstractQueuedSynchronizer抽象隊列同步器,簡稱爲AQS,可用於構建阻塞鎖或者其他相關同步器的基礎框,是Java併發包的基礎工具類。通過AQS這個框架可以對同步狀態原子性管理、線程的阻塞和解除

原创 J.U.C-AQS框架同步組件之StampedLock樂觀鎖悲觀鎖

StampedLock java1.8提供的, 性能比ReadWriteLock好. 樂觀鎖 樂觀鎖是一種樂觀思想,即認爲讀多寫少,遇到併發寫的可能性低(不是沒有, 所以還要加鎖, 區別於不加鎖的樂觀讀),每次去拿數據的時候都認爲

原创 從DCL(雙重檢測鎖)詳解volatile禁止指令重排序

DCL(雙重檢查鎖定)裏發現的東西 下面是使用 volatile 來優化雙重檢查鎖定的代碼: public class SafeDoubleCheckedLocking { private volatile static In

原创 枚舉來實現單例爲什麼大牛都這麼推薦?

哪種寫單例的方式最好? 在StakcOverflow中,What is an efficient way to implement a singleton pattern in Java?有一個關於的討論: 如上圖,得票率最高的

原创 樹莓派手動指定靜態IP和DNS 終極解決大法 (最管用的版本)

在把玩樹莓派的過程中,往往需要手動給它設定一個靜態的IP地址,一來可以防範DHCP自動分配的IP來回變動,導致遠程SSH時常無法連接;二來還可以提高樹莓派的網絡連接速度。 對此我在網上查了很多資料,大多數方法都是修改 /etc/n