原创 微服務治理2 - Eureka服務註冊

在微服務治理1 - Eureka服務治理架構及客戶端裝配和啓動流程分析中介紹了Eureka Client端主要提供以下功能: 服務註冊:服務在啓動時通過發送REST請求將自己註冊到Eureka註冊中心 服務續約(Renew):週

原创 PostgreSQL JPA使用總結(持續更新)

1. 如何一次獲得sequence的多個值 select nextval('schemaName.sequenceName') as id from generate_series(starter: Integer, stop:

原创 微服務治理1 - Eureka服務治理架構及客戶端裝配和啓動流程分析

服務治理是微服務架構中的核心模塊,主要用來實現各個微服務的自動化註冊和發現。隨着業務的增長和微服務實例的增長,服務治理可以大大減少手動配置的工作和手動配置錯誤,並且結合其他中間件實現服務的負載均衡。一個微服務治理框架一般包含三個核

原创 Spring Security源碼閱讀2-Spring Security過濾器鏈初始化1

Spring Security的核心實現是通過一條過濾器鏈來確定用戶的每一個請求應該得到什麼樣的反饋。 1. 使用@EnableWebSecurity註解開啓Spring Security 在使用Spring Security時首

原创 圖形化解釋分佈式系統CAP定理

CAP定理是分佈式系統中的一個基本定理,它指出任何分佈式系統最多可以具有以下三個特性中的兩個: Consistency(一致性) Availability(可用性) Partition tolerance(分區容錯) 1. 分

原创 從團隊協作的五大障礙看團隊管理該怎麼做

1. 團隊協作的五大障礙 團隊協作的五大障礙出自《團隊協作的五大障礙》這本書,書中的五大障礙是指: 缺乏信任:該問題源於團隊成員大都害怕成爲別人攻擊的對象,害怕在他人面前犯錯誤。大家不願意敞開心扉,承認自己的缺點和弱項,從而

原创 結構化代碼-分層封裝與按特性封裝

1. 分層封裝 在大多數應用中我們都是將代碼分層封裝(如Clean架構),如下: com.awesome.project .common StringUtils ExceptionUtils

原创 數據模型和業務模型

業務的處理離不開模型的支持,模型我們一般分爲業務模型和數據模型,其中數據模型一般對應爲數據庫表(通常命名以View結尾),業務模型爲業務處理需要使用的數據模型,業務模型和數據模型一般遵從如下約定: 數據模型沒有默認值,因爲數據模

原创 分層軟件架構及其數據解耦

1. 分層軟件架構 分層架構是軟件的軟件中最常用的架構設計方法,如clean架構、MVP架構等。 分層的實質是隔離關注點,使得每一層具有一致的行爲,這樣不同的開發纔有可能關注不同的軟件層。如WEB開發中常用的前後端分離,前端關注

原创 Spring Security源碼閱讀3-Spring Security過濾器鏈的初始化2

在Spring Security源碼閱讀2-Spring Security過濾器鏈的初始化1文章中,遺留了如下兩個問題: 在步驟(15)中,我們說HttpSecurity類中的performBuild函數返回了DefaultS

原创 Android開發中常用Gradle配置及問題處理-2(持續更新中)

1. Entry name ‘AndroidManifest.xml’ collided 打包APK時資源衝突時報錯,可以使用如下配置解決: android { packagingOptions { exc

原创 Semaphore和線程池的差異

1. 什麼是Semaphore和線程池 Semaphore稱爲信號量,是java.util.concurrent一個併發工具類,用來控制可同時併發的線程數,其內部維護了一組虛擬許可,通過構造器指定許可的數量。線程在執行時,需要通過

原创 敏捷開發團隊必須要做的幾件事

在敏捷開發團隊的管理中,以下幾方面是必須做的。 1. 迭代計劃會(IPM) 評估故事點 對齊迭代目標 調整故事優先級 確認是否有遺漏或考慮不充分的故事 2. 站會 站會一定要對着看板講,如果工作內容不在看板上,需要說明原因並

原创 android FontMetrics中各個字段的意義

FontMetrics類的定義如下: /** * Class that describes the various metrics for a font at a given text size. * Reme

原创 軟件設計工具--PlantUML

慢慢發現在諸多技能中,coding不應該花很多時間。 在代碼編寫前和代碼編寫後的事情,往往纔是需要花大量時間的。 想清楚你要做什麼,要怎麼做,以及之後要達成什麼樣的目標,檢驗結果是否符合預期這些事情,都應該比coding要重要。