原创 Mysql explain知識點總結

背景 索引是一門學問,更是實際經驗的體現。 最近項目中對索引進行了一些優化,有了些新的認識。對索引的使用不僅僅是where條件中符合了最左匹配原則這麼簡單,首先需要看懂explain的執行計劃,由於explain涉及的信息量非常多

原创 Mysql執行計劃性能分析新武器

MySQLWorkbench作爲mysql自家的數據庫客戶端管理工具,功能非常強大,今天推薦一下其中的explain功能 在sql編輯頁面,點擊帶放大鏡的執行按鈕 默認輸出explain的結果 注意左上角有個下拉框默認是Tab

原创 徹底搞懂Docker網絡原理之跨主機通信

一、背景 在前一篇文章徹底搞懂Docker網絡原理之單機通信中,列舉了在單主機場景下docker容器之間的通信方式。這篇文章主要介紹跨主機的docker容器之間的通信方式。 二、準備 虛擬機 筆者在筆記本上通過docker-machi

原创 徹底搞懂Docker網絡原理之單機通信

一、背景 學習docker除了鏡像的創建、容器的運行還有網絡的通信,docker支持多種網絡模式,以適應不同場景的容器通信需要。 本文不講原理,只講實踐,通過列舉各種場景,說明在docker的場景下多個容器之間如何通信。 二、準備 準

原创 shardingsphere3.0.0讀寫分離配置

基於spring-boot項目,在使用shardingsphere3.0.0進行讀寫分離配置時,參考官網配置示例有點出入,查看源碼找到對應的路徑,配置如下 pom.xml <dependency> <groupId>io.sh

原创 分佈式事務之Seata中間件原理及流程詳細分析

背景 在分佈式系統中,分佈式事務是一個必須要解決的問題,目前使用較多的是最終一致性方案。自年初阿里開源了Fescar(目前更名爲Seata)後,該項目受到了極大的關注度。Seata以高性能和零侵入的方式爲目標解決微服務領域的分佈式事務

原创 MacBook Pro接通電源後電池不充電 Apple官方解決辦法

型號:MacBook Pro 2018 現象:在確認電源正常的情況下,接入電源後電池不充電。該現象無規律,偶然會出現 原因:Mac有個SMC模塊,是否對電池充電是通過SMC控制的,有時候控制邏輯能出不正常,通過重置SMC即可 辦法:

原创 源碼分析爲什麼不建議用printStackTrace()打印異常堆棧

背景 經常看到說不建議在catch中使用printStackTrace()打印異常,雖然它也能將異常堆棧輸出到控制檯或日誌。 下面是一個簡單異常打印代碼 public class TestPrintStackTrace {

原创 Spring Boot多數據源配置詳細說明

背景 在項目中有時候需要同時連接多個數據庫,由於一般數據庫的連接都是通過數據源連接池去連接的,所以該問題就是多數據源的配置問題。下面通過Spring Boot Jpa框架說明多數據源的配置方式及要點。 第一步創建DataSource

原创 Spring Boot使用devtools實現遠程自動更新遠程熱發佈

背景 在使用Spring Boot開發時可以使用spring-boot-devtools實現熱加載功能,devtools還有一個更高級的功能:遠程自動同步。即本地代碼的更改能自動同步到遠程實例中,不用本地打jar包複製過去或者jenk

原创 IntelliJ IDEA 類的繼承結構指定包範圍查看

背景 通過idea可以很方便的查看類的繼承結構,在類名上右鍵點擊Browse Type Hierarchy或者在打開類中使用快捷鍵crtl+H即可,例如查看InputStream的繼承結構,如同 默認會顯示一大堆,但其實我只想看ja

原创 kafka docker報錯: Connection to node xxxx could not be established. Broker may not be available

背景 在使用docker中搜索kafka時,排在第一位的是wurstmeister/kafka ➜ ~ docker search kafka NAME DESCRIPTI

原创 Spring Data之Projection的使用

背景 假設我們存在一個User實體,同時有一個接口要查詢id、firstName、lastName,我們如何實現呢 @Data @Entity @AllArgsConstructor @NoArgsConstructor public

原创 Spring Data之@DomainEvents註解

背景 在對一個Entity進行save操作時,往往需要觸發後續的業務流程,通常採用如下做法 public void saveUser(){ User user = ... user = repository.save(user);

原创 Jackson的@JsonFormat不生效問題

背景 @JsonFormat用在接口的返回對象屬性上時,能夠對Date進行格式化處理 @Data public class UserVo { //注意帶時分秒的要指定時區 @JsonFormat(pattern = "y