原创 RabbitMQ的持久化與非持久化

  登錄RabbitMQ的圖形化管理界面,選擇“Queue”隊列查看模塊,可以看到之前在Spring-Rabbit工程中創建的MyQueue的隊列: 我們可以觀察到在“myQueue”列中,後面有一個Features的屬性,爲“D”,和

原创 理解JVM 類加載機制

什麼是類的加載機制 虛擬機把類的數據從Class文件加載到內存,並對數據進行校驗、轉換解析和初始化,最終形成可以被虛擬機直接使用的Java類型,這既是虛擬機的類加載機制 類加載的過程(生命週期) 類從被加載到虛擬機內存開始,到卸載爲止,它

原创 Spring Boot之日誌配置-logback和log4j2

一、簡介 支持日誌框架:Java Util Logging, Log4J2 and Logback,默認是使用logback 配置方式: 默認配置文件配置 引用外部配置文件配置 二、默認配置文件配置(不建議使用:不夠靈活,對log4j

原创 Spring Boot -- 配置文件詳解:Properties 和 YAML

配置文件的生效順序,會對值進行覆蓋 @TestPropertySource 註解 命令行參數 Jave 系統屬性(System.getProperties()) 操作系統環境變量 只有在 random.* 裏包含的屬性會產生一個 Rand

原创 work工作模式(資源的競爭)

功能:一個生產者,多個消費者,每個消費者獲取到的消息唯一,多個消費者只有一個隊列 消息產生者將消息放入隊列消費者可以有多個,消費者1 ,消費者2 , 同時監聽同一個隊列,消息被消費?    C1 C2共同爭搶當前的消息隊列內容,誰先拿到

原创 論線上如何排查一次CPU100%的情況

記錄如何排查CPU100%問題。 當我們把服務發佈到服務器器,可能會因爲一些問題造成我們的服務器CPU被打滿甚至超過100%,那如果我們想知道到底上在做什麼操作導致CPU持續過高呢?因爲在線上,我們只能通過日誌看問題,或者排查到哪個進程或

原创 37-緩存預熱實現

上一篇文章的時候,我們大概的講了一下緩存預熱的步驟和思路。大概分爲六個步驟。這裏開始我們說一下大概的實現。 1、將訪問流量上報到消息隊列中 如果一個電商網站,當顧客去訪問商品的時候,我們便可以將這個請求的商品信息上傳到mq,其實這一步比較

原创 5-理解自旋鎖,重入鎖

重入鎖 重入鎖,也就是鎖重入,什麼意思呢?之前我們用到的synchronized就是一個重入鎖。那麼,什麼是重入鎖呢? 先說非重入鎖,我們知道,當多個線程來訪問一個方法的時候,比如說這個方法上已經加了一個synchronized,多個線程

原创 36-緩存冷啓動問題:新系統上線、redis徹底崩潰導致數據無法恢復兩種情況

緩存冷啓動,redis啓動後,一點數據都沒有,直接就對外提供服務了,mysql就裸奔,就容易崩潰 緩存預熱思路 (1)提前給redis中灌入部分數據,再提供服務 (2)肯定不可能將所有數據都寫入redis,因爲數據量太大了,第一耗費的時間

原创 Redis事務深入解析和WATCH使用

目錄 1.前言 2.事務基本使用 1)開啓事務 2)命令入列 3)執行事務/放棄事務 3.事務錯誤&回滾 1)執行時錯誤 2)入列錯誤不會導致事務結束 3)入列錯誤會導致事務結束 4)爲什麼不支持事務回滾? 4.監控watch 5.事務在

原创 7-JDK5提供的原子類的操作以及實現原理

關於線程安全性問題的一個解決方案,我們之前對於之前所出現的線程安全性問題已經瞭解了兩個解決方案,第一個是synchronized,第二個是volatile。但是對於我們之前的數值序列生成器來講,使用volatile並不是一個合理的解決方案

原创 8-Lock接口的認識與使用

關於Lock,Lock顧名思義就是鎖,我們之前也已經瞭解過了關於鎖,它其實是解決線程安全性問題的另外一種方案, 解決線程安全性問題,我們已經學習了哪些呢? 第一個就是synchronized; 第二個,我們瞭解了volatile。這兩個可

原创 6-深入理解volatile原理與使用

深入理解volatile原理 volatile:稱之爲輕量級鎖,被volatile修飾的變量,在線程之間是可見的。 可見:一個線程修改了這個變量的值,在另一個線程中能夠讀取到這個修改後的值。 synchronized除了線程之間互斥之外,

原创 dubbo設計架構理解

首先讓我們來看一張圖,這張圖思從dubbo官網拿過來的。基於RPC調用架構設計,我們可以看一下他們之間調用的關係。 圖中一共有5個重要模塊: 註冊中心registry:服務註冊與發現 服務提供者provider:暴露服務 服務

原创 論多數據源(讀寫分離)的實現方案

好的,作爲一個合格的bug生產者,我們直接進入主題,多數據源和讀寫分離實現方案。 首先多數據源和讀寫分離什麼時候我們才需要呢? 多數據源:一個單體項目過於複雜,需要操作多個業務庫的時候,就需要多數據源操作不同的數據 讀寫分離:數據庫