原创 Redis實戰(八):面試常問:擊穿,穿透,雪崩,分佈式鎖,API(jedis,luttce,springboot:low/high level)

緩存擊穿 作爲緩存,受到內存大小限制,可能: key 超過了過期時間 key 被 LRU LFU 清掉了 因爲某些 key 不在 redis 裏面了,大量併發來找這個 key 的時候,這時候客戶端去直接請求數據庫,這就是擊穿。

原创 JVM從入門到精通(九):JVM調優實戰 - arthas 的使用

Arthas 文檔 https://github.com/alibaba/arthas/blob/master/README_CN.md 運行起來我們的java程序 啓動 arthas 的 jar 文件,我們看到 剛纔運行的j

原创 JVM從入門到精通(十一): CMS日誌詳解,G1日誌詳解,JVM常見參數總結;補充纖程知識

CMS 日誌格式分析 使用CMS:添加參數UserConcMarkSweepGC(CMS+ParNew) CMS常用參數 -XX:+UseConcMarkSweepGC -XX:ParallelCMSThreads CMS線程

原创 多線程與高併發(四):LockSupport,高頻面試題,AQS源碼,以及源碼閱讀方法論

補充幾道面試題 鎖升級過程:無鎖、偏向鎖、輕量級鎖、重量級鎖 StampedLock 自己看一下 面試題:syn和Reentrantlock的區別? LockSupport LockSupport.park()當前線程停止

原创 多線程與高併發(三):JUC包下新的同步機制:CAS,AtomicInteger,AtomicLong,ReentrantLock,CountDownLatch,ReadWriteLock等

CAS CAS 是一種樂觀鎖,syncronized 是一種悲觀鎖 AtomicInteger AtomicInteger count = new AtomicInteger(0); /*synchronized*/ v

原创 帶你理清 Java 混亂的日誌體系 - log4j、logback、log4j2、jcl、SLFJ 究竟是啥關係?

1.JAVA混亂的日誌體系 換亂的java日誌體系 case: SLF4J-JCL LOG4J-CORE LOGBACK SLF4J-SIMPLE JCL-OVER-SLF4J LOGBACK-CORE LOG4J LOG4J-A

原创 Java序列化 - 分析不同序列化方式的優劣

1.序列化簡介 1.1 定義 序列化是將對象狀態轉換爲可保持或傳輸的格式的過程。與序列化相對的是反序列化,它將流轉換爲對象。這兩個過程結合起來,可以輕鬆地存儲和傳輸數據 1.2 序列化的目的 通過序列化以字節流的形式使對象在網絡中

原创 JVM從入門到精通(一):JVM入門級class文件格式

JVM 基礎入門 JVM 第二章 Class File Format 整個class文件的格式就是一個二進制字節流,這個二進制字節流是由Java虛擬機來解釋的。 如何看到十六進制的字節碼? 安裝idea插件BinEd

原创 坦克大戰 - 設計模式、BIO、NIO、AIO、Netty

設計模式 1、策略模式 有時候你想發射單排子彈,有時候你想發射雙排子彈。 當你想有不同的子彈發射方式時,應該怎麼做才能在儘可能少的修改代碼的前提下,快速完成這些子彈發射策略的切換呢? 辦法就是,你寫一個Interface,讓不同的

原创 JVM從入門到精通(二):詳解Class加載過程

複習:Class文件結構 Class Loading Linking Initializing:編譯 加載 初始化 這節課,我們講 class 是怎麼從硬盤中加載到內存中,並且準備執行的。 package com.mashi

原创 MySQL調優(一):使用profiles、performance_schema性能監控

大綱 MySQL 服務器邏輯架構圖 RBO:基於規則的優化 CBO:介於成本的優化 沒有必要去看優化的一些源碼,面試也不會問。 查看sql語句實際執行的時間 使用SHOW PROFILE命令分析性能的用法 注意:未來版本可

原创 Redis實戰(一):Redis一鍵安裝腳本,Redis 介紹及 NIO 原理介紹

Redis一鍵安裝並啓動的腳本(root用戶) 試過用其他權限用戶安裝會出錯,可能是因爲命令中沒有寫 sudo 切換到root,直接執行即可。 #!/bin/bash cd /usr/local/ && wget http://

原创 多線程與高併發(二):解析自旋鎖CAS操作與volatile

Volitile 作用:保證線程的可見性,同時禁止指令的重排序 多線程時,存在的問題在於,在一個線程中對副本的更改並沒有及時地反映到另外一個線程中。這就是線程之間的不可見。 對變量值加了 volitile 之後,一個線程中的改變,

原创 Redis實戰(二):Redis 的 String 類型 & bitmap

Redis 常用命令、數據類型 查看幫助 To get help about Redis commands type: "help @<group>" to get a list of commands in <g

原创 線上發版如何做到分批發的?詳解藍綠部署,滾動升級,A/B 測試,灰度發佈/金絲雀發佈

過去的 10 年裏,很多大公司都在使用藍綠部署,安全、可靠是這種部署方式的特點。藍綠部署雖然算不上” Sliver Bullet “,但確實很實用。在有關於“微服務”、“ DevOps ”、“ Cloud-native ”的討論