原创 【Redis】7. SpringBoot 整合 lettuce

新建 Maven 項目 導入依賴 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

原创 【消息隊列】05 如何處理消息積壓問題

爲什麼會有消息積壓?如何處理消息積壓?

原创 【消息隊列】01 爲什麼需要消息隊列 — 解耦、異步、削峯

爲什麼需要消息隊列?今天用秒殺案例,帶你講解消息隊列是如何做到解耦,異步,削峯的! 概覽 異步(異步處理) 解耦(服務解耦) 削峯(流量控制)

原创 【消息隊列】04 冪等性解決重複消息問題

冪等性 如果一個函數 f(x) 滿足:f(f(x)) = f(x),則函數 f(x) 滿足冪等性。計算機中描述一個操作,方法或者服務,一個冪等操作的特點是,其任意多次執行所產生的影響均與一次執行的影響相同。 總結 :一個冪等方

原创 【消息隊列】06 避免內存溢出和頻繁的垃圾回收

內存如果溢出,通過自動內存管理機制實現,垃圾回收是不可控的,但是可以降低迴收的頻率。 自動內存管理機制的實現原理 —避免內存溢出1 申請內存過程 計算要創建對象所需要佔用的內存大小 在內存中找一塊兒連續並且是空閒的內存空間,標

原创 【消息隊列】03 消息隊列是如何確保消息不丟失的

消息可靠傳遞,我們要看消息都在出現在哪裏? 生產階段 通過收到broker 的確認響應,則表示發送成功。同步發送消息可以通過 try catch 捕獲異常,進行重發,如果是異步發送消息,則需要寫回調方法檢查消息是否丟失。 存儲階

原创 【消息隊列】02 如何選擇消息隊列 —技術選型

消息隊列這麼多,你是怎麼做技術選型的呢?技術選型的標準是什麼? 技術選型的標準 必須是開源產品,有Bug可以修改源碼。 必須是近幾年流行,社區活躍度高,遇到Bug方便解決。 與周邊的生態系統兼容和集成度要高。 消息傳遞可靠;確

原创 【Java 併發編程】 07 線程安全 — 沒有共享就沒有傷害! 東西多了就不知道珍惜了! 我有殘疾,你隨意修改!我搶到了我加把鎖!即使被傷害,世界也要充滿愛!

1. 什麼是線程安全呢? 線程安全並非“線程安全”,大家不要望文生義,所謂的線程安全其實指的是內存的安全,隨着操作系統的發展,不再是單核CPU,而是多核多任務,也就意味的進程的併發執行,回想一下是不是可以一邊敲着代碼,一邊聽着歌,

原创 【Java 併發編程】 06 從底層解讀萬能的 synchronized

synchronized 上一篇 【Java 併發編程】 05 一個能和面試官扯很久的 volatile 關鍵字 中講到了 volatile 可以解決線程併發執行中可見性和有序性問題。 在【Java 併發編程】 07 線程安全 中

原创 【Java 併發編程】 02 線程的生命週期(線程狀態之間的轉換)

如果對併發編程狀態不是很瞭解的同學,我們可以回想一下操作系統原理關於進程的生命週期的學習,學習操作系統原理的同學都知道,進程也有自己的生命週期,進程可大致分爲三種狀態,以及三種狀態之間的轉變, 👉 操作系統—進程。 三種狀態 執

原创 【Java 併發編程】 01 多線程的實現

常用的實現多線程的2種方式:繼承 Thread 或者實現 Runanable 接口 Thread 類 實現了 Runnable 接口 public class Thread implements Runnable {} //繼承

原创 【Java 併發編程】 05 一個能和面試官扯很久的 volatile 關鍵字

上一篇我們在Java內存模型中(JMM)中 Happens-before 中講到了volatile原則,對於volatile變量的寫操作會早於對其的讀操作。 volatile 意思就是可見的,常用來修飾某個共享變量,意思是當共享變

原创 【Java 併發編程】 03 萬惡的 Bug 起源—併發編程的三大特性

今天讓我們一起走進併發編程中萬惡的Bug起源—併發編程中三大特性。今天學習目標如下: 併發編程的三大特性都要哪些 ? 併發編程三大特性的由來? 如何解決併發編程三大特性問題? 基本概念 原子性:一組操作要麼全部成功,要麼全部

原创 【Java 併發編程】 04 JMM內存模型解決有序性和可見性問題

Java內存模型,即 JMM (Java Memory Model),JMM 是一種規範,它規範了 JVM 運行的行爲,多線程操作對共享內存讀取時,所能讀取到的值應該遵守的規則。提供了一些解決可見性和有序性問題的方法例如 vol