原创 zookeeper的基本原理和部署

一、Zookeeper 概述(官網翻譯) ZooKeeper 通過一個可共享的分層數據註冊(稱之爲znode)命名空間來協調分佈部署的各個進程,這與文件系統很相像。與一般的文件不同,ZooKeeper提供給客戶端的服務是高吞吐、低延遲、

原创 java反射

什麼是java的反射機制:Java程序可以加載一個運行時才得知名稱的class,獲悉其完整構造(但不包括methods定義),並生成其對象實體、或對其fields設值、或喚起其methods。這種“看透class”的能力(the abi

原创 上篇的題目使用TreeMap來實現

package test; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.

原创 Spring MVC 教程,快速入門,深入分析

目錄 一、前言 二、spring mvc 核心類與接口 三、spring mvc 核心流程圖 四、spring mvc DispatcherServlet說明 五、spring mvc 父子上下文的說明 六、springMVC-

原创 裝飾模式

        裝飾模式能在不必改變原類文件和使用繼承的情況下,動態地擴展一個對象的功能。它是通過創建一個包裝對象,也就是裝飾來包裹真實的對象。JDK中IO的設計就用到了裝飾模式,通過過濾流對節點流進行包裝來實現功能的擴展。 裝飾模式的

原创 靜態代理模式

代理模式,可以通過代理可以在原來的基礎上附加一些其他的操作。靜態代理模式相對比較簡單無需再程序運行時動態的進行代理。 靜態代理模式的角色: 抽象角色:真實對象和代理對象的共同接口。其中聲明真實對象和代理對象需要做的事。真實角色:實現抽象

原创 策略模式

策略模式定義了一系列的算法,並將每一個算法封裝起來,而且使它們還可以相互替換。策略模式讓算法獨立於使用它的客戶而獨立變化。其中JDK裏面的TreeSet類和TreeMap類就用到了策略模式。這兩個類是帶排序的集合類,其中排序的規則就相當於

原创 Netty構建一個簡單的http服務

netty簡介   netty是一個異步的基於事件驅動的網絡框架,用於快速開發可維護的高性能協議的服務器和客戶端。   netty是一個NIO客戶端服務器框架,它使得網絡框架的開發變得更加快速和簡單,例如基於協議的服務端和客戶端

原创 Twitter的分佈式自增ID算法snowflake的JAVA實現以及使用時需要注意的問題

概述 分佈式系統中,有一些需要使用全局唯一ID的場景,這種時候爲了防止ID衝突可以使用36位的UUID,但是UUID有一些缺點,首先他相對比較長,另外UUID一般是無序的。 有些時候我們希望能使用一種簡單一些的ID,並且希望ID能

原创 JDK集合源碼分析系列(四)——LinkedHashMap

一、概述 LinkedHashMap其實是HashMap的一個子類,實現原理其實跟HashMap類似。只不過LinkedHashMap會記錄插入key-value的順序,並且在遍歷的時候,會按照插入key-value對的順序遍歷出來。

原创 JDK集合源碼分析系列(二)——LinkedList

一、概述 LinkedList底層是基於鏈表來實現的一種集合。 優點 在於基於鏈表實現,插入 和刪除性能很高,不會像ArrayList那樣會產生大量的元素移動。 缺點 是隨機取一個元素時,需要進行鏈表遍歷,性能相對較差些。 二、

原创 JDK集合源碼分析系列(三)——HashMap

一、概述 HashMap主要是用來存儲key-value對的,HashMap中的key必須是唯一的。那麼HashMap底層是怎麼實現的呢? 二、源碼分析 這裏說明下,以下源碼分析都是基於jdk1.8的。jdk1.8以前,HashMap

原创 JDK集合源碼分析系列(一)——ArrayList

一、概述 ArrayList是我們日常開發中最常用的一種集合,原理就是底層是基於數組來實現了。 優點:因爲是基於數組來實現,所以隨機讀會很快,list.get(2),list.get(20)這種的會很快,直接可以通過內存地址定位某個元

原创 netty服務端Chanel註冊與線程模型詳解(附帶源碼分析)

一、概述 在上一篇博客中,介紹了netty其實是有其背後的理論支撐的——reactor模式,並且詳細介紹了reactor模式。而這邊博客將會詳細介紹netty是怎麼運用reactor模式的,代碼是怎麼設計和封裝的。 二、服務端代碼 現

原创 reactor模式以及reactor模式在netty中的應用

一、概述 在上一篇博客《Java 傳統IO和NIO》 中,我講述了java傳統IO與NIO之間的區別以及NIO給我們帶來的在網絡編程上的性能的提升。然而,Java NIO以及後面要介紹的netty網絡框架都是有一套理論在背後支撐的,那