原创 HashMap多線程擴容導致死循環解析(JDK1.7)

前言 前一篇 HashMap底層結構與實現原理 遺留了一個問題:JDK1.7中的HashMap在多線程情況下擴容可能會導致死循環。本篇就這個問題進行講解。 擴容死循環 前一篇深入的講解了HashMap1.7擴容的過程,這裏回顧一下

原创 面試前突擊Spring,我只需要十分鐘

前言 作爲一個寫Java的程序員,應該不太可能沒聽過Spring。對開發者來說,Spring就像是哆啦A夢的口袋。無論需要什麼道具,都可以從口袋裏直接拿出來,而不用關心這些道具來自哪裏。 本篇主要記錄一些關於Spring的基礎知識

原创 利用zookeeper手動實現分佈式鎖

前言 分佈式鎖,是控制分佈式系統之間同步訪問共享資源的一種方式。在分佈式系統中,常常需要協調他們的動作。如果不同的系統或是同一個系統的不同主機之間共享了一個或一組資源,那麼訪問這些資源的時候,往往需要互斥來防止彼此干擾來保證一致

原创 利用zookeeper手動實現配置中心

前言 配置一詞,想必大家都不陌生。畢竟程序員總是收到這樣的叮囑:不要寫死。也就是要把一些不經常變化的,可以統一維護的信息放在配置文件中,這樣當配置發生變化時就不用重新編譯代碼。 在單機系統中,往往幾個配置文件足矣。自然就是放在固定

原创 面試官:zookeeper集羣的leader掛了怎麼辦

某天程序員小白參加面試: 幾番苦戰之後,面試進入白熱化階段。面試官大開大合,小白見招拆招。一時之間,難解難分,兩人對拆數十回合不分勝負。說時遲,那時快,小白的左手像火焰一般炙熱,右手像冰霜一樣寒冷… 面試官:我看你簡歷上寫了熟悉

原创 zookeeper從入門到放棄

前言 我們都知道zookeeper可以作爲dubbo的註冊中心,但是那只是zookeeper功能的冰山一角。 zookeeper的定位是一個分佈式應用程序的分佈式協調服務。它提供了一組簡單的原語,分佈式應用程序可以基於這些原語來實

原创 手動搭建高可用的Redis5.0分片集羣,從理論到實踐,超詳細

前言 前一篇 高可用的Redis主從複製集羣,從理論到實踐 發佈後,反響非常熱烈。所以今天繼續深入講解redis集羣的搭建和相關理論。 好吧,其實是因爲上篇搭建的主從複製集羣,還有一個實際問題不能解決,那就是容量問題。 一般來說

原创 高可用的Redis主從複製集羣,從理論到實踐

前言 我們都知道,服務如果只部署一個節點,很容易出現單點故障,從而導致服務不可用。所以服務做成高可用是很有必要的,Redis服務自然也是這樣。本文主要從理論和實踐兩方面講解Redis高可用集羣。手把手教你搭建一個高可用的redis

原创 面試官:MySQL事務是怎麼實現的

前言 用過MySQL的同學都知道,它的InnoDB存儲引擎,是通過事務來保證數據的一致性的。 數據庫事務通常包含了一個序列的對數據庫的讀/寫操作。包含有以下兩個目的: 爲數據庫操作序列提供了一個從失敗中恢復到正常狀態的方法,同時

原创 設計模式:代理模式

前言 代理模式是指爲其他對象提供一種代理,以控制對這個對象的訪問 特點:代理對象在客戶端和目標對象之間起到中介的作用 代理模式(英語:Proxy Pattern)是程序設計中的一種設計模式。 所謂的代理者是指一個類別可以作爲其它

原创 MySQL優化:explain、show profile和show processlist

前言 要想優化SQL語句,首先得知道SQL語句有什麼問題,哪裏需要被優化。這樣就需要一個SQL語句的監控與量度指標,本文講述的explain和show profile就是這樣兩個量度SQL語句的命令。 本文主要基於MySQL5.6

原创 圖解數據結構:堆

前言 此處所說的堆,是數據結構中的堆,而不是JVM運行時數據區域的那個堆。本篇主要講解數據結構中堆的實現、原理、使用等。 定義 堆(英語:Heap)是計算機科學中的一種特別的樹狀數據結構。若是滿足以下特性,即可稱爲堆:“給定堆中

原创 面試官:請手寫一段必然死鎖的代碼

前言 死鎖(Deadlock),是併發編程中最需要考慮的問題之一,一般來說死鎖發生的概率相對較小,但是危害奇大。本篇主要講解死鎖相關的內容,包括死鎖形成的必要條件、危害、如何避免等等。 死鎖的定義 死鎖(英語:Deadlock)

原创 設計模式:工廠方式模式、抽象工廠模式

前言 在面向對象程序設計中,工廠通常是一個用來創建其他對象的對象。工廠是構造方法的抽象,用來實現不同的分配方案。 工廠方法模式 工廠方法模式(英語:Factory method pattern)是一種實現了“工廠”概念的面向對象

原创 Thread類、Runnable接口詳解

前言 Thread類想必都不陌生,第一次學習多線程的時候就一定會接觸Thread類。本篇主要從Thread類的定義、使用、注意事項、源碼等方面入手,全方位的講解Thread類。 Thread 我們經常會被問到這樣一個問題: Ja