原创 Spring(三):AOP

AOP 什麼是AOP 百度百科:在軟件業,AOP爲Aspect Oriented Programming的縮寫,意爲:面向切面編程,通過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。AOP是OOP的延續,是軟件開發

原创 Spring(二):Bean的裝配

講解bean的裝配 自動化裝配 註解配置 當使用@Configutation註解的類,則聲明該類爲一個配置類,與配置類有關的註解還有: @ComponentScan @ComponentScans 它們都是用來指定包掃描路徑的

原创 JAVA實現節流閥

JAVA實現節流閥 在前端開發中,有種效果叫做節流閥 顧名思義,節流閥的作用是限制某些事件的執行頻率,基本代碼如下: obj.event = function(){ clearTimeout(obj.timer); obj

原创 調試一個wsl2+java引發的bug

java如何處理localhost這個主機名的? 調試一個wsl2+java引發的bug 最近聽說wsl2將要在2004穩定可用,於是就趕了時髦在使用了wsl+docker部署了數據庫和nacos等等東西,將原來使用虛擬機的容器都

原创 Spring(四):事務管理

事務 首先,我們要知道事務是什麼 構成單一邏輯工作單元的操作集合稱爲事務 事務的ACID特性 原子性:不可分割的最小操作單位,要麼同時成功,要麼同時失敗 一致性:事務操作前後,數據總量不變 隔離性:多個事務之間相互獨立 持久

原创 Spring(一):概覽

設計關鍵策略 基於POJO和最小侵入性編程 通過依賴和麪向接口實現鬆耦合 基於切面和慣例進行聲明式編程 通過切面和模板減少樣板代碼 Spring通過依賴注入,應用切面以及各種模板來簡化JAVA開發 起步 引入依賴 <dep

原创 初探ThreadLocal

在使用spring boot的時候,發現這麼樣一個很有意思的功能: RequestContextHolder.getRequestAttributes()).getRequest() 可以通過這麼樣的一個類來獲取當前的Request對象

原创 談談傳統BIO網絡編程模型的侷限性與NIO

先來看看我們的server端: 創建一個serversocket,進行監聽,每來一個客戶端,就啓動一個新啓動爲其服務: private void createListenSocket() { //如果創建監聽socket

原创 使用AOP來實現接口請求頻率限制

老規矩,定義一個註解: /* * 被該註解修飾的方法都會被切面攔截進行請求次數限制 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @i

原创 使用AOP實現權限攔截校驗

aop的好處就在於它可以只讓你寫一次代碼,然後這些代碼就可以用於容器當中的所有對象,權限攔截校驗是一個表現形式。 那麼,我們要如何實現這個功能? 首先,定義一個註解: /* * 被該註釋修飾的方法都會經過切面攔截校驗權限 */ @Ret

原创 無限樹型菜單分類

有這麼樣一個需求:將以下二維記錄轉成一個樹型菜單 很明顯,結果將是森林。 那麼這裏提供一個通用算法,來實現菜單的轉換。 首先,將所有記錄讀入: List<Department> departments = departmentMapp

原创 個人對三層架構的看法

java web開發當中,有這麼三層:controller、service、dao 分別爲表現層、業務邏輯層以及數據訪問層。 這樣分層的好處有很多,出了問題易於調試,或者便於團隊合作等等。 最重要的是,可以隨時換掉其中的某一層而不影響其他

原创 依賴注入項目總結

這個小demo代碼量不算多,不過幾百行。 但是寫了兩三天,其中不少地方刪刪改改,最後勉強實現了spring中的核心功能:依賴注入 我本身用過spring和guice這兩種依賴注入框架,spring很強大,沒錯,但是spring一個讓人詬病

原创 java如何掃描本項目下的所有類

最近在寫一個依賴注入的小demo,碰到這麼樣的一個問題: 要把本項目下所有被@Component修飾的所有類注入到容器當中。 思路很簡單,通過文件枚舉的方式掃描出本項目的所有類文件,再對文件名進行一些小處理,就能得到本項目的所有類。 p

原创 測試驅動開發初體驗

測試驅動開發有下列三定律:     編寫不能通過的單元測試前,不可以編寫生產代碼。     只可以編寫剛好無法通過的單元測試,不能編譯也算不通過。     只可以編寫剛好足以通過當前失敗測試的生產代碼。 個人是不喜歡這些條條框框,這些東西