原创 死鎖模擬(JAVA)

死鎖模擬(JAVA) /** * Created by double on 2019/7/29. */ public class DeadLockDemo { private final Object lock1 =

原创 如何在github上創建一個項目

如何在github上創建一個項目   在repositories頁面,點擊new 進入倉庫創建頁面,填寫相關信息 Repository name:倉庫名 Description:倉庫描述 類型:public 公共倉庫 所有人

原创 使用bind轉發consul DNS服務

使用bind轉發consul DNS服務 1、安裝bind yum install bind bind-utils -y 2、配置name服務做解析 vim /etc/named.conf options { l

原创 通過gitlab Api自動下載gitLab上的所有項目

通過gitlab Api自動下載gitLab上的所有項目 背景 現在越來越多的公司採用gitlab來管理代碼。但是公司越來越大,項目越來越多,一個個clone比較麻煩,於是寫個java程序批量clone 思路 gitlab有提供a

原创 緩存更新的策略

緩存更新的策略   1、先淘汰緩存,再更新數據庫 public void updateData1(DataObject dataObject) { //第一步,淘汰緩存 deleteFrom

原创 Redisson分佈式鎖的源碼分析

Redisson分佈式鎖的源碼分析 Redisson 分佈式鎖實現思路 鎖標識:Hash 數據結構,key 爲鎖的名字,filed 當前競爭鎖成功線程的唯一標識,value 重入次數 隊列:所有競爭鎖失敗的線程,會訂閱當前鎖的解鎖

原创 SpringBoot項目配置JSON日誌格式輸出

SpringBoot項目配置JSON日誌格式輸出 採用logstash-logback-encoder來實現JSON日誌輸出 引入依賴 implementation 'net.logstash.logback:logstash-l

原创 redisson分佈式鎖併發測試

redisson分佈式鎖併發測試 模擬秒殺搶購場景,100庫存,用jmeter併發測試,起300個線程併發請求2次,總計600個請求數,最後查看庫存是否爲負數,證明分佈式鎖是否鎖住了庫存。 注意:分佈式鎖並不是實現秒殺最佳方式,本

原创 consul各端口作用分析

consul各端口作用分析 consul服務端啓動時會監聽5個端口,如下圖: 這5個端口的作用: 8300:集羣內數據的讀寫和複製 8301:單個數據中心gossip協議通訊 8302:跨數據中心gossip協議通訊 8500

原创 Dapper--Google生產環境下的分佈式跟蹤系統

Dapper--Google生產環境下的分佈式跟蹤系統   概述 當代的互聯網的服務,通常都是用複雜的、大規模分佈式集羣來實現的。互聯網應用構建在不同的軟件模塊集上,這些軟件模塊,有可能是由不同的團隊開發、可能使用不同的編程語言來實現、有

原创 elasticsearch服務器CPU100%分析

elasticsearch服務器CPU100%分析 1、通過top命令查詢佔用CPU高的進程ID 2、查詢是哪些線程佔用比較高 top -Hp 28354 H代表顯示線程信息 p用來指定進程id 發現線程31342、28

原创 java實現整形數字反轉

java實現整形數字反轉 /** * 整形數字反轉 * Created by double on 2019/9/3. */ public class NumberReverse { public static voi

原创 ELK採集nginx錯誤日誌

ELK採集nginx錯誤日誌 一、filebeat採集配置 1、在nginx服務器上安裝filebeat wget https://artifacts.elastic.co/downloads/beats/filebeat/fil

原创 JAVA常見內存溢出模擬

JAVA常見內存溢出模擬 1、堆溢出 import java.util.ArrayList; import java.util.List; /** * 堆溢出 * -Xms20m -Xmx20m -XX:+HeapDumpO

原创 elasticsearch6.3.1中x-pack插件啓用

elasticsearch6.3.1中x-pack插件啓用 elasticsearch版本6.3.1 一、啓用pack 1、重寫license驗證源碼 重寫x-pack下的2個類:LicenseVerifier.java和XPac