原创 Spring Data JPA如何判斷記錄是否存在?

在使用Spring/Spring Boot+Spring Data JPA的開發過程中,判斷表中滿足條件的記錄是否存在是一個經常遇到的業務場景,比如檢查指定用戶名的用戶是否存在,檢查指定id的設備是否存在等等。在業務開發過程中,通常有兩種方

原创 使用RSA公私鑰實現JWT令牌的簽名和驗籤 1、什麼是JWT令牌 2、什麼是RSA 3、使用RSA對JWT令牌簽名和驗證

使用RSA公私鑰實現JWT令牌的簽名和驗籤 1、什麼是JWT令牌 JWT基本概念可從JWT網站獲取,該網站提供了在線DEBUG的功能,對於初次學習JWT的同學來說非常的友好,同時還將各種語言支持JWT的庫提供了列表查閱,方便大家獲取不同語言

原创 使用IDEA 插件實現spring相關配置信息提示 1 安裝相關插件 2 插件配置 總結

今天看同事演示spring server相關的ssl配置,同事的IDE輸入server後就出現了相關的提示信息,感覺非常的好用,是一個提高研發效率的小技巧,特此記錄一下如下: 1 安裝相關插件 安裝spring boot插件並開啓 2

原创 使用單機緩存之王Caffeine實現一個延遲隊列

延遲隊列:顧名思義就是支持將消息按照一定的要求延遲投遞的消息隊列。生活中需要使用延遲隊列最普遍的場景就是訂單支付,訂單隻有在規定的時間內完成支付,交易纔算真正的完成,沒有在規定時間內完成支付的訂單將會被取消。 Caffeine:一款高性能、

原创 使用LogCaptor對日誌進行單元測試

1 爲什麼要對日誌進行單元測試 對代碼中打印的日誌,是否有必要通過單元測試保證日誌的格式、內容能夠被正確的修改?答案是在一般情況下都無需對日誌的格式、內容進行單元測試。那麼在什麼場景下,通過單元測試看護日誌的格式、內容是有必要的呢?在日誌作

原创 服務拆分-防腐層模式 1 定義 2 上下文和問題 3 解決方案 4 優點 5 問題 6 相關模式 7 應用場景

1 定義 防腐層(Anti-Corruption Layer)模式,是一種在不同語義的子系統間構建一層功能,對子系統間的請求進行翻譯適配,從而確保應用設計不受外部依賴的系統的限制。此模式最初由Eric Evans在《領域驅動設計》中提出。

原创 服務拆分-絞殺者模式 絞殺者模式

絞殺者模式 1 定義 老系統向新系統遷移時,可採用將老系統的部分功能使用新應用或服務替換的方式逐步進行。當老系統全部的功能被替換後,新系統就完成了對老系統的替代,從而老系統被”絞殺“,老系統可以關閉或者下線。這種逐步替換老系統功能到新系統的

原创 服務部署-單實例單節點 1 定義 2 上下文和問題 3 解決方案 4 優缺點

1 定義 Single Service Instance per Host(單實例單節點)是一種常用的微服務部署模式,微服務的一個實例獨立部署在一臺主機之上,實例獨佔該主機運行。該模式有兩種變體:Single Service Instanc

原创 微服務拆分-防腐層模式 1 定義 2 上下文和問題 3 解決方案 4 優點 5 問題 6 相關模式 7 應用場景

1 定義 防腐層(Anti-Corruption Layer)模式,是一種在不同語義的子系統間構建一層功能,對子系統間的請求進行翻譯適配,從而確保應用設計不受外部依賴的系統的限制。此模式最初由Eric Evans在《領域驅動設計》中提出。

原创 服務拆分-分層模式

1 定義 分層架構(Layered Architecture),是一種將複雜系統劃分爲多個邏輯層的架構模式,這種模式在軟件領域尤其是大型系統中廣泛使用。 2 上下文和問題 複雜的系統需要其各個組成部分能夠獨立的開發和演進,因此係統開發人員需

原创 服務拆分-變更孤島 變更孤島

變更孤島 1 定義 變更孤島,是一種創建可演化的架構的模式。其主旨是將大型系統分割成多個獨立可替換的部分,這些可替換的部分在之後的架構演化中逐步替代以適合的架構形態,針對可替代性而不是可重用性設計。 2 上下文和問題 在構建系統的時候,不一

原创 微服務拆分-絞殺者模式 絞殺者模式

絞殺者模式 1 定義 老系統向新系統遷移時,可採用將老系統的部分功能使用新應用或服務替換的方式逐步進行。當老系統全部的功能被替換後,新系統就完成了對老系統的替代,從而老系統被”絞殺“,老系統可以關閉或者下線。這種逐步替換老系統功能到新系統的

原创 Serverless的未來WASM

1 什麼是WASM WASM是WebAssembly的縮寫,WebAssembly是一種用於基於堆棧虛擬機的二進制指令格式。Wasm 被設計爲編程語言的可移植編譯目標,支持在Web上爲客戶端和服務器應用程序服務部署。總結起來WASM是一種可

原创 如何優雅的實現一個Client 0 原則 1 Server的API定義 2 設計Gotify Client 3 GotifyClient 的使用樣例 4 總結 5 附錄

原文首發於InfoQ:如何優雅的實現一個 Client 創建Client的主要目的是方便與Server進行交互,進而操作Server的數據或資源。Client可以採用不同的協議和Server進行交互,這完全取決於Server支持哪些協議,比

原创 reactor-netty發佈1.0.7版本

5月12日reactor社區發佈了reactor-netty 1.0.7版本,1.0.7版本是2020.0.7 版本火車的一部分,並推薦所有Reactor Netty 1.0.x版本用戶升級到1.0.7版本。 ✨新功能和增強 使用Rea