原创 prometheus+alertmanager+webhook實現自定義監控報警系統

文章目錄1.概述2.prometheus配置報警規則3.alertmanager配置及部署3.1.alertmanager配置3.2.alertmanager部署4.prometheus關聯alertmanager5.配置報警通知

原创 源碼分析J.U.C-ConcurrentHashMap

文章目錄1.JAVA7與JAVA8中實現方式的區別1.1.初始化容量方式不一樣1.2.數據結構不一樣2.JAVA7中實現2.1.結構圖2.2.相關類圖2.3.執行流程圖2.4.源碼分析2.4.1.實例化ConcurrentHash

原创 prometheus+grafana+mtail+node_exporter實現機器負載及業務監控

文章目錄1.概述2.node_exporter配置啓動3.mtail配置啓動4.prometheus配置啓動5.grafana配置啓動5.1.grafana配置默認Dashboard5.2.grafana添加node_export

原创 linux環境配置(centos)

文章目錄1.同步時間爲北京時間2.設置開機自啓動2.1.修改/etc/rc.d/rc.local文件的方式2.2. 製作服務的方式3.修改單個用戶環境變量4.設置ssh免密登錄4.1.配置機器A4.2.配置機器B5.配置ip地址(

原创 linux命令-rsync

文章目錄1.命令格式1.1.源路徑和目標路徑的兩種寫法1.1.1.使用ssh認證方式1.1.2.使用rsync認證方式1.2.工作模式1.2.1.拷貝本地文件到本地其他目錄1.2.2.本地內容拷貝到遠程機器1.2.3.遠程內容拷貝

原创 源碼分析J.U.C-ReentrantLock

文章目錄1.ReentrantLock的特點2.ReentrantLock用到的知識點3.ReentrantLock內部結構3.1.非公平鎖3.1.1.加鎖過程3.1.2.解鎖過程3.2.公平鎖3.2.1.加鎖過程3.2.2.解鎖

原创 JAVA內存模型

文章目錄1.概述2.JAVA內存模型2.1.主內存與工作內存2.2.內存間交互2.3.volatile變量的特殊規則2.4.非原子性協議(long和double型變量的特殊規則)2.5.原子性、可見性與有序性2.6.先行發生(ha

原创 JVM字節碼執行引擎

文章目錄1.概述2.運行時棧幀結構2.1.局部變量表2.2.操作數棧2.3.動態連接2.4.方法返回地址2.5.附加信息3.方法調用4.基於棧的字節碼解釋執行引擎4.1.解釋執行4.2.基於棧的指令集與基於寄存器的指令集4.3.基

原创 JVM執行子系統類加載機制及主動引用被動引用

文章目錄1.什麼是類加載2.類加載的過程2.1.加載2.2.驗證2.2.1文件格式驗證2.2.2.元數據驗證2.2.3.字節碼驗證2.2.4.符號引用驗證2.3.準備2.4.解析2.5.初始化3.類加載器介紹 1.什麼是類加載 類

原创 二進制及原碼反碼補碼介紹、八進制、十六進制及Java中移位運算詳解

文章目錄1.二進制1.1.原碼1.2.反碼1.3.補碼1.4.浮點數的二進制與十進制轉換2.八進制3.十六進制4.位運算4.1.位運算規則4.2.與(&)運算4.3.或(|)運算4.4.非(~)運算4.5.異或(^)運算4.6.移

原创 JVM參數說明介紹

文章目錄1.JVM運行時數據區內存參數說明2.JVM垃圾收集器參數總結 1.JVM運行時數據區內存參數說明 參數 選項 -Xms 堆的最小值 -Xmx 堆的最大值(Xms和Xmx設置一致,可以避免堆自動擴展)

原创 JDK監控和故障處理工具

文章目錄1.概述2.JDK的命令行工具jpsjstatjinfojmapjhatjstack3.JDK的可視化工具JConsoleVisualVM 1.概述 通常我們定位系統問題時候,都需要一些系統的監控和分析工具來處理線上的運行

原创 深入JVM-內存分配策略

JVM中對象的內存分配,基本上是在堆上分配(也可能經過JIT編譯後被拆散爲標量類型並間接地在棧上分配),對象主要分配在新生代的Eden區,如果啓動了本地線程分配緩衝,將按線程優先在TLAB上分配,少數情況下也可能會直接分配在老年代

原创 深入JVM-垃圾收集算法與垃圾收集器

1.垃圾收集算法 1.1.標記-清除算法 此算法分爲“標記”和“清除”兩個階段,首先標記出所有要回收的對象,標記完成後統一回收掉所有被標記的對象(標記過程參考《深入JVM-垃圾收集器之內存回收》),它是最基礎的收集算法,其缺點主要有兩

原创 深入JVM-垃圾收集器之內存回收

1.前言 在JVM內存運行時數據區中程序計數器、虛擬機棧、本地方法棧等三個區域是線程私有的,即線程結束對應的內存就會回收。而方法區和堆則是線程公有的,這部分內存只有在在程序運行期間纔會知道創建哪些對象,這部分內存是分配和回收都是動態的