原创 Spring Boot 定時任務的筆記

簡介 Spring Boot 實現定時任務非常簡單,大致有以下幾種方法: 基於註解(@Scheduled) 基於接口(SchedulingConfigurer) 使用Timer 使用ScheduledExecutorServi

原创 位圖、分治和布隆過濾器

引子 給定 40 億個不重複的沒排過序的 unsigned int 型整數,然後再給定一個數,如何快速判斷這個數是否在這 40 億個整數當中? 位圖 bitmap:就是用一個或多個 bit 來標記某個元素對應的值,而鍵就是該元

原创 Lua入門和使用Redis、Redisson、Spring-data-redis調用Lua腳本

Lua簡介 Lua是一種開源、簡單易學、輕量小巧的腳本語言,用標準C語言編寫。 其設計的目的就是爲了嵌入應用程序中,從而爲應用程序提供靈活的擴展和定製功能。 Redis從2.6版本開始支持Lua腳本,Redis使用Lua可以:

原创 基於Semaphore實現Limiter限流器

簡介 Semaphore 信號量是用來限制多個線程訪問同一個資源,簡單來說就是隻能有特定數量的線程同時訪問資源。與鎖不同的是,鎖只允許一個線程訪問特定的資源,而信號量是允許指定數量的線程同時訪問,可以用來協調多線程。 Semap

原创 Mybatis批量更新返回-2147482646

當ExecutorType爲Batch時,更新操作返回的update counts會丟失,返回的值爲-2127485646,原因是BatchExecutor中的doUpdate方法: public static final int

原创 開機啓動docker toolbox並啓動指定的容器

新建docker-start.bat文件 @echo off REM Set the name of the VM configuration where dockerd will be hosted set BOOT2DO

原创 java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlElement

最近更換了IDEA2019,啓動項目時報錯: Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlElement at com.fast

原创 MySQL服務消失和MySQL無法啓動 服務沒有報告任何錯誤

出現的原因 電腦斷電,第二天再次開機發現MySQL服務在服務列表不見了。。。 但是MySQL的安裝文件夾還在。 解決方法 那就安裝吧~ 管理員身份運行cmd 進入到MySQL安裝文件夾 輸入命令 mysqld.ex

原创 java.lang.IllegalStateException: Unable to load cache item

啓動單元測試時,發現報錯如下: java.lang.IllegalStateException: Failed to load ApplicationContext Caused by: java.lang.IllegalStat

原创 MyBatis原理

引子 MyBatis是優秀的半自動ORM框架。 其工作的步驟可以大致分爲以下步驟: 讀取配置文件並返回InputStream流對象 依據InputStream對象,解析出Configuration對象,然後創建SqlSessi

原创 Spring Boot自動配置原理

引子 我們都知道Spring Boot中的配置文件有application.properties、application.yml,最常見的配置如 server.port=80 這些配置是如何生效的呢? 解析 SpringB

原创 Redis緩存問題

緩存雪崩 緩存宕機或緩存集中失效,以致數據庫扛不住流量。 解決方案: Redis高可用,集羣,避免全部宕機。 Redis設置過期時間加上隨機因子,避免緩存集中失效 Hystrix限流、降級,避免數據庫扛不住 緩存穿透 查詢

原创 vim

介紹 vim編輯器有兩種模式:普通模式和插入模式。 普通模式下按i或insert進入插入模式,插入模式下按esc進入普通模式。 普通模式 普通模式下: ctrl + F:向下翻頁 ctrl + B :向上翻頁 x : 刪除當

原创 數據庫中間件:MyCAT

介紹 MyCAT是數據庫中間件。 能用於讀寫分離、數據分片、多數據源整合。 MyCAT的原理就是攔截,對SQL語句進行攔截,做一些特定的分析,之後將SQL發送到真實的數據庫,並將結果處理返回給用戶。 配置 配置mycat的文檔

原创 SQL語句是怎樣執行的

MySQL的架構 連接器:用於驗證用戶登錄 查詢緩存:執行查詢語句時,先會在查詢緩存中(8.0移除) 分析器:分析SQL用於增刪改還是查以及語法是否正確 優化器:對SQL語句進行優化 執行器:執行SQL,並從SQL引擎返回數據