原创 Spring裏Controller繼承接口的RequestMapping註解

背景 經常會遇到Controller繼承一個接口的實現方式,接口上的方法會加上RequestMapping的註解,但是在瀏覽器裏請求會發現代理錯誤。 結構圖 首先InitializingBean裏面有個afterProperti

原创 持續發佈

發佈模式 藍綠髮布 在發佈的過程中用戶無感知服務的重啓,通常情況下是通過新舊版本並存的方式實現,也就是說在發佈的流程中,新的版本和舊的版本是相互熱備的,通過切換路由權重的方式(非0即100)實現不同的應用的上線或者下線。 金絲雀發

原创 命令模式 :封裝調用

定義 命令模式將"請求"封裝成對象,以便使用不同的請求、隊列或者日誌來參數化其它對象。命令模式也支持可撤銷的操作。 命令模式設計圖 模式的意義 命令模式,主要的是將請求對象和執行對象進行解耦,也就是類圖裏面的Invoker和

原创 Spring源碼獲取Bean

前言 前面的文章描述了,通過xml文件的解析,得到了Bean的定義,但是Bean卻沒有new出來。我們主要看下容器將非懶加載的單例bean是怎麼創建起來的。 源碼解析 通過refresh的代碼,去掉關係不大的代碼。 //Abstr

原创 Spring源碼解析 XML方式加載bean

繼承圖 Spring源碼擁有的類實在太多了,所以梳理下主要的類圖對研究代碼還是很有用的,Spring的配置從先前的XML的配置的容器ClassPathXmlApplicationContext,到現在的基於註解的Annotatio

原创 發佈到Tomcat的ROOT目錄

1. 將包改名 ROOT.war 將項目的war包改成ROOT.war包,然後放到$CATALINA_HOME\webapps的目錄下,這樣我們就可以通過下面的鏈接打開 http://localhost:8080/ 2. 在Ser

原创 查找Java的安裝路徑

背景 今天想實驗一下JDK裏面自帶的java的一些內存檢查工具,但是發現沒找到JDK的安裝路徑,比較尷尬,所以記錄一下文章,以便下次查閱。 方法 whereis 指令whereis Java which 命令which Ja

原创 sqlserver執行優化

理論儲備 聚集索引,數據是按順序存儲的,使用聚集索引查找到的數據就是數據物理存儲的位置,聚集索引的葉子節點不僅包含了索引鍵,還包含了數據頁。 非聚集索引,索引是完全獨立於數據的,是在另外的索引頁面中存放非聚集索引數據的,使用非聚

原创 nginx學習彙總

背景介紹 公司要求將數據庫遷移到國外,但是國外的網絡一直不穩定。我準備嘗試多家香港雲服務器,選了一臺阿里雲的,一臺恆創雲的。 經過測試後,恆創雲在連接新加坡節點的時候的確速度要好多了,但是穩定性相對弱一些,有時會出現他們所說的網路

原创 9 種方法來解決掉那些“煩人”的 if else

1.使用 return 我們使用 return 去掉多餘的 else,實現代碼如下。 優化前代碼: if ("java".equals(str)) { // 業務代碼...... } else { return;

原创 HashMap的hash()方法

基礎知識回顧 哈希算法 因爲Java的HashMap源碼裏面有個混淆函數hash(),我就想補一下哈希的定義。 哈希算法有以下三個特點 安全,給定數據 M 容易算出哈希值 X ,而給定 X 不能算出 M ,或者說哈希算法應該是一

原创 外觀模式

外觀模式 定義 外觀模式提供了一個統一的接口,用來訪問子系統的一羣接口。外觀定義了一個高層接口,讓子系統更容易使用。 這樣我們可以避免和子系統之間的緊耦合。 最少知識原則 只和你的密友談話。 當你正在設計一個系統,不管是任何對象

原创 設計模式原則

開閉原則 類應該對擴展開放,對修改關閉。 好萊塢原則 不要給我們打電話,我們會給你打電話(don‘t call us, we‘ll call you)

原创 單件模式

定義 單件模式確保一個類只有一個實例,並提供一個全局訪問點。 普通 下面是簡單的單例模式,線程不安全,還具有延遲加載的功能 public class Singleton { private static Singlet

原创 觀察者模式

定義 定義了對象之間的一對多的依賴,這樣一來,當一個對象改變時,它的所有依賴者都會收到通知並自動更新。 類圖 思考 這個模式我覺的還是比較簡單的,在主題裏面維護了一個觀察者對象集合,當我們主題自身發生變化時,通過對這個集合進行循