原创 搞什麼?

系統升級了半個月,這個是什麼邏輯呀?

原创 自定義註解+策略模式,實現不同表的寫操作!

案例: 1、利用阿里的開源數據庫同步工具-canal來解析不同的數據庫表binlog日誌,解析完成的數據,我們要入庫不同的數據庫,不同的表。2、每個表對應一個Mapper類,插入不同的表,我們需要選擇不同的Mapper來執行同一個函數:in

原创 zookeeper(3)分佈式鎖

在一個分佈式系統中,如何保證一個操作,同一時間只有一個線程可以執行,這就是分佈式鎖的使用場景,同一時間,只有一個線程可以獲得鎖的使用權。 如何實現一個分佈式鎖? 實現一個分佈式鎖,可以有以下3種方法。 一、基於數據庫實現分佈式鎖。 1、在M

原创 zookeeper(2)Master-Worker協同機制實驗

案例: 1、利用ZooKeeper實現一個組成員的協同管理2、創建一個Master的節點,並利用Master監控組成員Workers3、Workers也要監控Master,當Master宕機之後,一個Worker可以成爲Master 實驗背

原创 zookeeper(1)利用3個機器,搭建zk集羣模式

背景 最近打算好好學習一下zookeeper,那麼第一步就是要搭建一個環境。單機版的比較簡單,這裏就不介紹了。集羣版本的,看網上的教程也蠻簡單的,但是自己動起手來還是會遇到各種問題,這裏做一下記錄。 環境介紹 1、3個阿里雲服務器,其中2個

原创 如何實現一個LRU算法?

LRU就是Least recently used,最近最少使用,如果空間不足淘汰掉最近最少使用的數據。實現方式可以有一下三種: 1、單鏈表 實現原理:1、插入:插入數據是最新的數據,直接插入到鏈表尾部2、查找:查找到的數據移動到鏈表尾部,

原创 問題排查-jps和jstack

jps jps 命令類似與 linux 的 ps 命令,但是它只列出系統中所有的 Java 應用程序。 通過 jps 命令可以方便地查看 Java 進程的啓動類、傳入參數和 Java 虛擬機參數等信息。 參數說明: -q:只輸出進程 ID

原创 問題排查-jmap和MAT工具

jmap常用命令 1、heap命令:jmap -heap pid描述:顯示Java堆詳細信息 2、histo[:live]命令:jmap -histo:live pid描述:顯示堆中對象的統計信息 3、dump:<dump-options

原创 GC問題排查常用命令-jstat

jstat查看GC的常用命令 jstat [ generalOption, outputOptions vmid, [ interva,count ] 參數:generalOption: 一般使用-gcutil查看GC情況vmid: 虛擬機

原创 JMH測試AtomicLong和LongAdder的性能

AtomicLong 和 LongAdder 的區別 AtomicLong 1、AtomicLong是利用了底層的CAS操作來提供併發性。2、在併發量較低的環境下,線程衝突的概率比較小,自旋的次數不會很多。但是,高併發環境下,N個線程同時進

原创 MySQL小組分享大綱

1、查詢語句是如何執行的? 1、連接 1、建立連接2、驗證權限,修改了權限,創建新的連接纔會生效。3、SQL執行的臨時內存 2、查詢緩存 1、先查詢緩存,更新操作會導致所有緩存失效。2、MySQL 8.0功能去掉 3、分析 詞法解析,語法

原创 死磕Synchronized實現原理(轉發)

無意之間發現了這幾篇文章,寫的很詳細,很好,拜讀轉發一下 1、死磕Synchronized底層實現,面試你還怕什麼?2、面試題深入解析:Synchronized底層實現3、一文讓你讀懂Synchronized底層實現,秒殺面試官4、死磕Sy

原创 垃圾回收(3)G1的結構和概念

G1介紹 G1(Garbage First)算法,通過參數-XX:+UseG1GC來啓用,該算法在JDK 7u4版本被正式推出,G1可以通過參數-XX:MaxGCPauseMillis控制GC暫停時間。 Region 在G1算法中,採用了另

原创 垃圾回收(1)概述

1、JVM運行時內存分佈 垃圾回收針對的是Heap(堆區),因爲運行時所有的對象實體都是存在這個區域的。 2、垃圾回收算法 2.1、引用計數法 1、它的做法是爲每個對象添加一個引用計數器,用來統計指向該對象的引用個數,當對象的引用個數爲0

原创 裝飾器模式-實現電商的優惠活動價格計算

1、案例 1、商品有基本價格2、可以使用優惠券和紅包兩種優惠活動3、基於裝飾器模式,實現價格的計算和擴展。 2、實現代碼-業務邏輯 2.1、商品類 import java.math.BigDecimal; import java.util.