原创 我以爲我對MySQL索引很瞭解,直到我遇到了阿里的面試官。。。

相信很多人對於MySQL的索引都不陌生,索引(Index)是幫助MySQL高效獲取數據的數據結構。因爲索引是MySQL中比較重點的知識,相信很多人都有一定的瞭解,尤其是在面試中出現的頻率特別高。樓主自認爲自己對MySQL的索引相關知識有很多

原创 MySQL鎖機制——你想知道的都在這了!

一、鎖的類型1. 行鎖(1)共享鎖(S Lock)允許事務讀一行數據(2)排它鎖 (X Lock) 允許事務讀一行數據2. 表鎖(意向鎖)鎖定允許事務在行級上的鎖和表級上的鎖同時存在。爲了支持在不同粒度上進行加鎖操作,InnoDB存儲引擎支

原创 面試官:談談你對 Spring AOP 的瞭解?請加上這些,絕對加分!

01 引言衆所周知,一旦提到AOP,相信大家都是條件反射的想到JDK代理和CGLib代理,沒錯,這兩個代理都是在運行時內存中臨時生成代理類,故而又稱作運行時增強——動態代理。世間萬物都不是絕對的,既然有動態代理,那麼,是否有想過:是不是存在

原创 Spring Framework 常犯的十大錯誤,你犯錯了沒?

1. 錯誤一:太過關注底層我們正在解決這個常見錯誤,是因爲 “非我所創” 綜合症在軟件開發領域很是常見。症狀包括經常重寫一些常見的代碼,很多開發人員都有這種症狀。雖然理解特定庫的內部結構及其實現,在很大程度上是好的並且很有必要的(也可以是一

原创 冪等問題:8種方案幫你解決重複提交!

1.什麼是冪等?冪等:F(F(x)) = F(x) 多次運算結果一致在我們編程中常見冪等(1)select查詢天然冪等  (2)delete刪除也是冪等,刪除同一個多次效果一樣 (3)update直接更新某個值的,冪等 (4)update更

原创 揭開面紗,追着 redis 七連問!

01 redis的通訊協議是什麼?redis的通訊協議是文本協議,是的,Redis服務器與客戶端通過RESP(REdis Serialization Protocol)協議通信,沒錯,文本協議確實是會浪費流量,不過它的優點在於直觀,非常的簡

原创 Redis爲什麼這麼快?一文帶你深入瞭解Redis!

我們使用 Redis 時,會接觸 Redis 的 5 種對象類型(字符串、哈希、列表、集合、有序集合),豐富的類型是 Redis 相對於 Memcached 等的一大優勢。在瞭解 Redis 的 5 種對象類型的用法和特點的基礎上,進一步瞭

原创 如何優雅的關閉 Spring Boot 應用?

01 前言隨着線上應用逐步採用 SpringBoot 構建,SpringBoot應用實例越來多,當線上某個應用需要升級部署時,常常簡單粗暴地使用 kill 命令,這種停止應用的方式會讓應用將所有處理中的請求丟棄,響應失敗。這樣的響應失敗尤其

原创 推薦收藏:一文理解JVM虛擬機(內存、垃圾回收、性能優化),解決面試問題!

一. JVM內存區域的劃分1.1 java虛擬機運行時數據區java虛擬機運行時數據區分佈圖:JVM棧(Java Virtual Machine Stacks): Java中一個線程就會相應有一個線程棧與之對應,因爲不同的線程執行邏輯有所不

原创 腦裂是什麼?Zookeeper是如何解決的?

01 什麼是腦裂?腦裂(split-brain)就是“大腦分裂”,也就是本來一個“大腦”被拆分了兩個或多個“大腦”,我們都知道,如果一個人有多個大腦,並且相互獨立的話,那麼會導致人體“手舞足蹈”,“不聽使喚”。腦裂通常會出現在集羣環境中,比

原创 從零開始的高併發--- Zookeeper實現分佈式鎖

01 前言我們現在擁有這麼一個集羣,集羣裏面有個緩存服務,集羣中每個程序都會用到這個緩存,如果此時緩存中有一項緩存過期了,在大併發環境下,同一時刻中許許多多的服務都過來訪問緩存,獲取緩存中的數據,發現緩存過期,就要再去數據庫取,然後更新到緩

原创 爲了做到微服務的高可用,鬼知道我出了多少張牌?

高可用並不是一套整體解決方案,而是又諸多環節組成,一環扣一環,鬼知道爲了這些串聯起來的環節,我得出多少張牌去應對,才能最終組成一個整個系統的高可用落地方案。01 什麼是高可用?在定義什麼是高可用,可以先定義下什麼是不可用,一個網站的內容最終

原创 手把手帶你入門 Spring Security!

Spring Security 是 Spring 家族中的一個安全管理框架,實際上,在 Spring Boot 出現之前,Spring Security 就已經發展了多年了,但是使用的並不多,安全管理這個領域,一直是 Shiro 的天下。相

原创 Redis如何保證接口的冪等性?

有個小夥伴在最近的一次業務升級中,遇到這樣一個問題,我們設計了新的賬戶體系,需要在用戶將應用升級之後將原來賬戶的數據手動的同步過來,就是需要用戶自己去觸發同步按鈕進行同步,因爲有些數據是用戶存在自己本地的。那麼在這個過程中就存在一個問題,要

原创 一文讓你輕鬆瞭解JAVA開發中的四種加密方法!

一、工具類1. md5加密工具類package 加密Tester.util; import java.security.MessageDigest;public class MD5Utils {     private static fi