原创 基於Netty的Redis客戶端-Nedis

最近溫習了一遍Redis命令,憂傷的是很多東西已交還給老師,正好趕上antirez大神在愚人節發佈了Redis 3.0,Redis終於有了支持集羣的正式版本,於是心血來潮決定自己實現一個Redis客戶端來撫慰我這顆憂傷的心靈。 Jedi

原创 《Redis設計與實現》學習筆記-單機數據庫

一個Redis服務器實例在單機運行時可以添加多個數據庫來保存鍵值對,Redis在實現中通過一個redisDb結構體來描述數據庫,該結構體中有一個字典類型的字段來保存數據庫中所有的鍵值對,redisServer結構體來描述服務器實例,該結構

原创 Spring AspectJ LTW

LTW(Load Time Weaver),即加載期切面織入,是ApsectJ切面織入的一種方式,它通過JVM代理在類加載期替換字節碼到達織入切面的目的。下面通過一個簡單的例子來演示怎麼使用LTW,然後從代碼入手分析LTW的實現原理。 簡

原创 《Redis設計與實現》學習筆記-服務端

Redis服務器負責與多個客戶端建立連接,處理客戶端請求,保存各個數據庫狀態。通過使用由I/O多路複用技術實現的事件處理器,Redis服務器採用單線程單進程處理客戶端命令請求。Redis通過redisServer結構來記錄服務端的各種狀態

原创 《Redis設計與實現》學習筆記-客戶端

Redis通過一個redisClient結構體來保存客戶端當前的狀態信息和執行相關功能時需要用到的數據結構,包括: 套接字描述符名字flags屬性輸入緩衝區輸出緩衝區當前要執行的命令與命令參數身份驗證標識時間 套接字描述符  fd屬性保

原创 《Redis設計與實現》學習筆記-基礎數據結構

和memcached相比,redis提供更豐富的數據結構,支持基於列表、集合、哈希表等多種數據結構。這些命令是通過6種底層數據結構來實現的,這6種數據結構是: 簡單動態字符串(SDS)鏈表字典跳躍表整數集合壓縮列表 SDS 用來保存re

原创 Spring properties定義bean

Spring提供了豐富的標籤和註解來進行bean的定義,除此之外框架來提供了擴展機制讓使用可以通過properties來定義bean,與強大的標籤式和註解式的bean定義相比,properties提供的規則要簡單許多。 key部分用.分隔

原创 Spring PropertyEditor分析

簡介 通過xml解析器解析出bean定義之後,解析出來的是一個一個的字符串,但是bean的屬性可以各種java類型,那麼在對bean進行初始化時需要在這些字符串和java類型之間進行轉換,比如我的bean有個Class屬性,那麼在注入這個

原创 Spring conversion框架

框架簡介 在Spring PropertyEditor分析中介紹瞭如果通過PropertyEditor來進行值轉換,已經如何根據自身的需求自定義PropertyEditor,但是Spring的這套處理框架存在幾個問題: 方法參數是弱類型

原创 Spring bean定義解析源碼分析

在上一篇Spring IOC容器啓動簡介中在ClassPathXmlApplicationContext的基礎粗略的分析了IOC容器的啓動過程,對一些比較複雜的步驟沒有詳細的說明,從本篇開始對其中的一些比較複雜的步驟進行分析。本篇對基於C

原创 Disruptor原理淺析

Disruptor是一個高吞吐量的異步處理框架,LMAX號稱用它可以1秒鐘處理600萬訂單,從一個簡單的例子來分析Disruptor,下面的代碼是基於2.10.4版本,不同的版本API可能會有些變化,代碼僅供參考。 private sta