原创 第十五篇:狀態模式

什麼是狀態呢?這個非常好理解,就比如我們經常聽到的一句廣告詞 “不在狀態怎麼辦?脈動回來!!!”  , 那麼這就是狀態的體現啦,這裏的狀態指的是你的精神,你的精神非常好,可能會趕緊看書工作,稍微差點,可能得眯眼休息下,差到完全處於懵逼狀態

原创 第九篇:裝飾者模式

今天我們來談談裝飾者模式! 說起這個模式,相信大家都有過接觸,java的IO體系總用過吧,IO體系中各種流都可以見到裝飾者的影子,比如BufferedReader和Reader,通過向BufferedReader的構造函數中傳入一個Rea

原创 第十三篇:建造者模式

見名之意,建造者就是用來建造對象的嘛!不過...等等,我們先前不是有工廠模式嗎?我記得工廠模式也是用來創建對象的阿? 彆着急,聽我說! 我們得將這兩種模式區分一下,工廠模式是用來創建一個對象,它只初始化對象必須具備的屬性,而建造者模式呢,

原创 maven源碼調試工具

當我們在使用工具包,框架的時候,爲了深知原理或者解決bug,往往需要對源代碼進行追蹤調試,在沒有maven的時代,需要手動下載源碼jar包,然後在開發工具比如Eclipse中進行手動關聯,纔可以進行逐步調試 , 而maven則提供了Dow

原创 IOC實現之BeanFactory體系結構(一)

我們通過講Spring的容器是怎樣啓動的,它在啓動過程中做了些什麼,以此來引發我們IOC原理的解析,在這裏我們直接使用編程式的方式來啓動容器,而不會涉及到SpringMVC,如果你擔心你大多數時候是SpringMVC與Spring一起使用

原创 基礎篇:資源拷貝之ThreadLocal(六)

如果你有這樣的需求,在不同的線程中對某個對象的修改不會影響到其它線程中該對象的狀態,那麼使用ThreadLocal將是非常不錯的解決方案,事實上,這種需求是很常見的; 我們來演示一下ThreadLocal的工作機制: //測試線程本地存

原创 AOP實現之代理bean創建過程(三)

上篇文章中已經講解完畢spring是怎樣來解析我們xml中的aop配置,同時也講到了在解析過程中,它將會爲我們創建幾個必要的bean對像,接下來我們就講解spring是如何來創建我們的代理對象的; 在講IOC的實現原理時,我們就說過,只

原创 進階篇:同步阻塞隊列之LinkedBlockingQueue(十一)

JDK爲我們提供了多個阻塞隊列的實現,什麼是阻塞隊列呢? 我們都知道隊列就是一組數據的集合,而阻塞隊列的意思是,當你往隊列中取數據時,如果沒有數據,你將被阻塞,一直等到拿到數據爲止; 今天我們就來看一下比較常用的遵循先進先出的阻塞隊列Li

原创 AOP實現之配置文件解析過程(二)

還記得我們在解析IOC時說過的一段代碼嗎? 相關連接在這裏   IOC實現之XML元素解析過程(三)  ,這段代碼位於DefaultBeanDefinitionDocumentReader類中,當時我們是這樣說的: protected

原创 AOP實現之相關概念與準備工作(一)

在講AOP的實現原理之前,我們有必要先來了解一下什麼是Aop,這裏我不會說它的衆多概念,如果想了解術語概念可以去看其它的文章; 在網上或者各大書籍中都有關於AOP中各種概念的解釋,比如 目標對象, 切面,配置,增強類,通知, 切點,通知

原创 進階篇:定時任務執行之ScheduledThreadPoolExecuter(十六)

定時任務這個恐怕很多時候我們都需要用到吧... 比如我們想間隔一天後執行某個定義好的任務,又或者間隔一天執行完某個任務後,再每間隔1小時執行一次...當我們有這種需求的時候,ScheduledThreadPoolExecuter就派上用場

原创 進階篇:等待多個子線程完畢再執行主線程的方法之CountDownLatch(十二)

想一想, 有一天你想測試某個方法的性能,你可能會這麼去做,你先開啓多個線程,然後記錄下多個線程的執行總時間,當多個線程全部執行完畢時,回到主線程將時間打印出來...問題在於,你怎麼來控制主線程要在全部子線程執行完畢之後再執行呢? 你可能會

原创 基礎篇:同步機制之synchronized與ReentrantLock(五)

我們繼續來探討同步機制的話題; 上一篇文章說到了使用ReentrantLock的lock()來獲取鎖,但有時候我們可能有這樣的需求,我們先嚐試着去獲取鎖,但等了幾秒實在拿不到鎖就放棄獲取鎖而轉做其它的事情,這個需求是很常見的, 所幸的是,

原创 基礎篇:wait與notify與notifyAll(八)

這篇文章主要講解多線程編程中 wait與notify與notifyAll 這三個方法的運用,瞭解了它們的基本用法後,我們再寫個 “積累能量---放大招”  的例子來整合演示這幾個方法的協作運用; 見名之意,wait是等待的意思,當在線

原创 進階篇:延時隊列之DelayQueue(十四)

這篇文章我們來講講BlockingQueue阻塞隊列的另一個實現DelayQueue,先前我們的文章中有介紹LinkedBlockingQueue,而DelayQueue與之不同的是,DelayQueue裏面哪怕有元素也無法取出,除非元素