原创 5.Quartz應用場景之配置化定時任務(多節點)

要解決的問題 接上文,多節點情況下,加載jobDetail和Trigger會偶發性出現併發錯誤1 解決思路 加鎖控制只有一個節點加載定時任務2 額外庫表 CREATE TABLE `my_job_load_ctrl` ( `I

原创 1.Quartz定時輸出HelloWorld

默認你已掌握 Springboot 工程搭建 ApplicationRunner 環境信息 Quartz 2.3.2 Springboot 2.2.0 IDE:idea 搭建步驟 pom文件關鍵依賴 <dependency>

原创 7.Quartz源碼取經之建造者模式

1.爲什麼用建造者模式? 1.1 場景 成員變量多,且創建對象時,多個成員變量可以有不同組合時(類似麥當勞套餐) 1.2 解決方法 方法一:創建多個構造函數解決,不同入參組合 方法一缺點:組合數太多,需要創建的構造函數太多 方法

原创 6.Quartz應用場景之定時任務監控

要解決的問題 想知道每個定時任務有沒有被執行,執行的結果怎麼樣 解決思路 通過JobListener實現定時任務歷史記錄 額外庫表 #增加STATUS字段記錄定時任務執行狀態 CREATE TABLE `my_job_detail

原创 8.Quartz源碼取經之線程池

1.爲什麼用線程池? 1.1 場景 有多個任務需要併發執行 1.2 解決方法 方法一:給每個任務在執行時再創建新線程 方法一缺點:(1)創建線程耗時(2)任務多時,線程數暴增導致CPU、內存爆掉 方法二:線程池,預先建立多個線程

原创 8.Quartz源碼取經之插件模式

1.爲什麼用插件模式? 1.1 場景 想創建一個開放的應用,主應用只包含標準的功能,個性化的功能交給其他開發者實現 1.2 解決方法 主應用不知道子應用的存在:開放API,子應用獨立運行。百度地圖開放API、jar依賴、SDK、

原创 SSO單點登錄之原理篇

1.場景 多個不同域名的服務,希望用戶只要登錄其中一個,其餘訪問時自動登錄,即單點登錄(SSO,Single Sign On)。 2.CAS(Central Authentication Service)實現SSO的原理 2.1

原创 “數據庫併發導致更新丟失”的四種解決方法

1.問題描述 隔離級別:Read Commited 事務A 事務B select amount=1000

原创 SSO單點登錄之徒手實現篇

1.環境信息 Springboot 2.2.0 thymeleaf 2.CAS Server關鍵代碼 2.1攔截器 public class LoginHandlerInterceptor implements HandlerIn

原创 4.Quartz應用場景之配置化定時任務(單節點)

要解決的問題 把多個定時任務的時間規則寫死在代碼裏,當有改動時,需要動代碼。代碼多、維護成本略高。 解決思路 引入額外的庫表,把定時任務配置在庫表裏,應用啓動時再調API配置到Quartz原生表中 額外庫表 建表 CREATE

原创 ThreadLocal設計初衷推斷

問題 同一個線程內多個方法間如何共享變量? 方法a 類成員變量本來就是各個線程各有一份,線程內共享的。 class MyThread extends Thread{ String myvar; public void

原创 3.Quartz應用場景之應用重啓後定時任務依然生效

默認你已掌握 Springboot 工程搭建 ApplicationRunner 環境信息 Quartz 2.3.0 Springboot 2.2.0 mysql IDE:idea 思路 定時任務配置持久化到數據庫 搭建步驟 創