原创 一張圖搞定Eureka Client啓動、註冊、心跳流程

Eureka Client啓動流程圖 註冊流程圖 心跳流程圖

原创 git 清空所有歷史記錄

## 先clone 項目到本地目錄 git clone https://e.coding.net/Ethan3/study-sample.git ## 進入倉庫目錄,拉一個分支,比如名爲 master_1 git checkou

原创 通過PS1設置命令行提示符

通過PS1變量,設置Linux Shell提示符顯示 當設置爲: if [ $(whoami) = 'root' ]; then export PS1=`whoami`@`hostname`:'$PWD#' else expo

原创 supervisor守護進程

進程管理工具(Supervisor) 簡介 Supervisor是用Python開發的一個client/server服務,是Linux/Unix系統下的一個進程管理工具,不支持Windows系統。它可以很方便的監聽、啓動、停止、重

原创 調用鏈監控對比

簡介 Zipkin是Twitter開源的調用鏈分析工具,目前基於springcloud sleuth得到了廣泛的使用,特點是輕量,使用部署簡單。 Pinpoint是韓國人開源的基於字節碼注入的調用鏈分析,以及應用監控分析工具。特點

原创 一文搞定Spring容器初始化方法棧調用棧

背景 大家都知道Spring容器啓動時,主要通過調用org.springframework.context.support.AbstractApplicationContext#refresh 方法,但是在調用過程中,有很多的調用

原创 HashTable、HashMap、Synchronized、ConcurrentHashMap性能測試分析

目的 本文目的是爲了對HashTable、HashMap、SynchronizedMap、ConcurrentHashMap做一個性能測試,以比較理論與實踐的差距 方法 首先我準備了一個Junit測試類,可以配置不同線程併發數,以

原创 代理服務器sock5安裝與配置

步驟1:下載 wget https://nchc.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz 步驟2:安裝依賴組件 yum -y install p

原创 Eureka 集羣註冊

集羣註冊 方式一:通過hostname註冊,適用於多機或單機搭建 標識每個啓動節點的hostname, 通過eureka.instance.hostname 設置 配置eureka.client.register-with

原创 Java對象佈局解析與實戰

背景 對於瞭解Java內存佈局的Coder來說,Java對象內存佈局主要由頭信息+對象變量(引用或原生類型)+對齊組成,而對於數組會添加一個數組長度字段,主要由頭信息+對象變量(引用或原生類型)+對齊組成。而對於對象頭信息,包含了

原创 NIO網絡編程底層邏輯分析

背景 最近在複習Java NIO的網絡編程部分,針對NIO的多路複用,產生了以下疑問: ServerSocketChannel如何被創建的 Selector是如何創建的 Channel註冊到Selector上的背後,執行了哪些操

原创 零拷貝詳解

背景 在程序開發中,將文件磁盤發送到另一個網絡端是很常見的場景,通過代碼實現也很簡單,比如Java中,可以使用Inputsteam分塊讀取文件(通常我們將緩存區設置爲8KB),然後將緩存區數據輸出到Outputstream中。更好

原创 Netty中FastThreadLocal爲什麼比ThreadLocal快

背景 近期在看netty源碼,發現有個叫做FastThreadLocal的類,代碼doc中寫明此類的用途和ThreadLocal一樣,都是維持線程獨有的變量,但是速度會更快。於是產生了疑問:FastThreadLocal爲什麼比T

原创 基於JMH對Java NIO 零拷貝進行基準測試

背景 Java NIO中引入了零拷貝的API,本文測試零拷貝與傳統IO的性能差異,通過藉助基準測試工具JMH進行測試 測試用例 簡單些了一個JMH的實例,迭代100次,計算每次的平均時間 import org.openjdk.jm

原创 使用NIO編寫服務端代碼,客戶端關閉後,服務端無限循環獲取讀事件

問題描述 服務端代碼如下: package com.ethan.nio; import lombok.extern.slf4j.Slf4j; import java.io.IOException; import java.ne