原创 【Spring Cloud 源碼解讀】之 【@LoadBalanced 註解怎麼使 RestTemplate 實現負載均衡!】

前提概要: 前天,有個前端大佬問了我兩個問題:爲啥不引入Ribbon依賴就能使用Ribbon?爲啥RestTemplate加上@LoadBalanced註解就能負載均衡了?我也表示很疑惑,而我自己其實也真的沒去了解過,所以趁着工作

原创 【大白話系列】MySQL 學習總結 之 緩衝池(Buffer Pool) 支撐高併發和動態調整的設計原理

如果大家對我的 【大白話系列】MySQL 學習總結系列 感興趣的話,可以點擊關注一波。 一、上節回顧 在上節《 緩衝池(Buffer Pool) 的設計原理和管理機制》中,介紹了緩衝池整體的設計原理。包括幾個比較重要的概念:fr

原创 面試官:你說你用過Redis,那麼最大可用內存和數據庫數量該怎麼設置?是不是越大越好?

一、Redis 的默認配置 瞭解 Redis 的都知道,Redis 服務器狀態有很多可配置的默認值。 例如:數據庫數量,最大可用內存,AOF 持久化相關配置和 RDB 持久化相關配置等等。我相信,關於 AOF 持久化和 RDB 持

原创 【MySQL 原理分析】之 Explain & Trace 深入分析全模糊查詢(%%)走索引的原理

一、背景 今天,交流羣有一位同學提出了一個問題。看下圖: 之後,這位同學確實也發了一個全模糊查詢走索引的例子: 到這我們可以發現,這兩個sql最大的區別是:一個是查詢全字段(select *),而一個只查詢主鍵(select

原创 【大白話系列】MySQL 學習總結 之 InnoDB 存儲引擎的架構設計

如果大家對我的 【大白話系列】MySQL 學習總結系列 感興趣的話,可以點擊關注一波。 一、存儲引擎 上節我們最後說到,SQL 的執行計劃是執行器組件調用存儲引擎的接口來完成的。 那我們可以理解爲:MySQL 這個數據庫管理系統

原创 MySql自定義函數-關於保留小數位的特殊需求

背景 昨天,關於價格詳情接口又來了一個小需求,而且有點特別。價格顯示:改爲保留兩位小數,沒錯,就是保留兩位小數。大家是不是想說這沒啥特別的。。。數據庫都有函數搞定了。例如四捨五入的ROUND(x,d),直接截取的TRUNCATE(

原创 別再問我 MyBatis 了,Mapper 的解析與加載底層原理我都能講清楚~

目錄一、MyBatis 核心組件:二、簡述 Mapper 執行流程:三、簡單例子深入講解底層原理1、代碼例子:2、XMLConfigBuilder 中關於 Configuration 的解析過程Ⅰ. XMLConfigBuilde

原创 拋開 Spring ,你知道 MyBatis 加載 Mapper 的底層原理嗎?

原文鏈接:拋開 Spring ,你知道 MyBatis 加載 Mapper 的底層原理嗎? 大家都知道,利用 Spring 整合 MyBatis,我們可以直接利用 @MapperScan 註解或者 @Mapper 註解,讓 Spring 可

原创 按照這些優化技巧來寫 SQL,連公司 DBA 也鼓掌稱讚!

剛畢業的我們,都以爲使用 MySQL 是非常的簡單的,無非都是照着 【select from where group by order by】 這個格式套來套去;從來不會關注 SQL 的耗費時長,更不會關注查詢的性能。 但是當用戶

原创 Redis 高頻面試題:10w+QPS 的 Redis 真的只是因爲單線程和基於內存?

原文鏈接:10w+QPS 的 Redis 真的只是因爲單線程和內存?360° 深入底層設計爲你揭開 Redis 神祕面紗! 你以爲 Redis 這麼快僅僅因爲單線程和基於內存? 那麼你想得太少了,我個人認爲 Redis 的快是基於多方面的:

原创 10w+QPS 的 Redis 真的只是因爲單線程和內存?360° 深入底層設計爲你揭開 Redis 神祕面紗!

你以爲 Redis 這麼快僅僅因爲單線程和基於內存? 那麼你想得太少了,我個人認爲 Redis 的快是基於多方面的:不但是單線程和內存,還有底層的數據結構設計,網絡通信的設計,主從、哨兵和集羣等等方面的設計~ 下面,我將 360°

原创 Redis 的 maxmemory 和 dbnum 默認值都是多少?對於最大值會有限制嗎?

一、Redis 的默認配置 瞭解 Redis 的都知道,Redis 服務器狀態有很多可配置的默認值。 例如:數據庫數量,最大可用內存,AOF 持久化相關配置和 RDB 持久化相關配置等等。我相信,關於 AOF 持久化和 RDB 持

原创 【高頻 Redis 面試題】Redis 事務是否具備原子性?

一、Redis 事務的實現原理 一個事務從開始到結束通常會經歷以下三個階段: 1、事務開始 客戶端發送 MULTI 命令,服務器執行 MULTI 命令邏輯。 服務器會在客戶端狀態(redisClient)的 flags 屬性打開

原创 【開源項目 h2cache-spring-boot-starter】自研 Starter:基於 Spring Cache 實現多級緩存(同時整合 Ehcache & Redis)

一、緩存 當系統的併發量上來了,如果我們頻繁地去訪問數據庫,那麼會使數據庫的壓力不斷增大,在高峯時甚至可以出現數據庫崩潰的現象。所以一般我們會使用緩存來解決這個數據庫併發訪問問題,用戶訪問進來,會先從緩存裏查詢,如果存在則返回,如

原创 【開源項目系列】詳細講解如何將開源項目發佈到 Maven 中央倉庫

前言:開源項目 我相信,擁有自己的開源項目是每個程序員心中最想達成的事,不管是小項目還是大項目。當然了,大項目不是每個程序員都要能力完成的;但是小項目,例如自己編寫的 Spring Boot Starter,或者自己編寫的工具類,