原创 【go】context上下文

Why 很多框架中接口函數第一個參數統一是​ctx context.Context​接口,如net/http中conn.serve(ctx context.Context)方法,爲什麼要這麼設計呢? 因爲一般一個網絡請求Request,會

原创 【微服務】容器化之Docker & Kubernetes

1.容器生態 容器技術的生態系統自下而上分別覆蓋了IaaS層和PaaS層所涉及的各類問題,包括資源調度、編排、部署、監控、配置管理、存儲網絡管理、安全、容器化應用支撐平臺等。如下圖,其中docker、k8s、consul、etcd等都是此

原创 【工具】正則匹配工具

背景 正則表達式在程序員的世界裏無所不在,如grep、nginx配置啊等等 一旦正則表達式長了,或者很複雜,如包含分組啊、特殊字符、轉義符號啊,可讀性非常差,理清楚語義很困難 解決方案 使用工具https://regexr.com/ 屬於

原创 【通信】Java NIO模型

目錄 1.可伸縮的網絡服務 1.1 可伸縮的目標 1.2 解決方案 2.事件驅動設計 3.Reactor模式 3.1 單線程版本 3.2 多線程版本 3.2.1 工作線程多線程(並行工作者) 3.2.2 Reactor多線程 4.NIO

原创 【MySQL】索引的那些前世今生

目錄 1.分類 1.1 按語法 1.2 按物理存儲結構 1.3 按數據結構 1.3.1 Btree索引 1.3.2 Hash索引 1.3 按字段數量 2. 設計索引 2.1 選擇合適的數據類型 3.命中索引 1.分類 1.1 按語法 類別

原创 【併發編程】線程生命週期

狀態流轉總圖 0.新建狀態New Thread類 實現了Runnable接口 run() Runnable接口 run(),通過Thread類或線程池來使用 Callable接口 作爲FutureTask構造方法參數使用 ca

原创 【Mysql】一篇文章理清事務隔離級別實現原理MVCC

目錄 0.事務隔離級別 1.MVCC 2.版本控制算法 2.1 select 查詢數據僞代碼 2.2 可見性算法 0.事務隔離級別 我們都知道mysql innodb引擎支持事務,爲了兼顧事務併發時之間的隔離性(ACID)和性能,提供了以

原创 【併發編程】Executor線程池框架-圖文源碼詳解

目錄 0 框架類圖 1. Executors工具類 2 ThreadPoolExecutor  2.1 API常用方法 2.1.1 構造方法 2.1.2 核心方法execute(Runnable r) 2.1.3 addWorker創建工

原创 【bugfix】記一次CPU飆高的排查經歷

目錄 1.定位進程 2.定位線程 3.線程虛擬機棧分析 4.解決方案 4.1 升級JDK 4.2 使用ConcurrentHashMap 1.定位進程 top拿到cpu佔用最高進程的進程號pid=14398 2.定位線程 top -H

原创 【MySQL】你要搞清楚存儲引擎之間的差別,喲

目錄 1.概況對比 2.索引對比 2.1 InnoDB 2.1.1 聚集索引 2.2 myIsam 3.事務 4.鎖 1.概況對比 對比各個存儲引擎之間的特性 特性 InnoDB MyIsam Memory Merge NDB 事務 √

原创 【HTTP】狀態碼錶速查

分類 碼錶 RFC2616規範上的HTTP狀態碼就達40種,若再加上擴展,數量就達60餘種,經常使用的大概只有14種: 200、204、206 301、302、303、304、307 400、401、403、404 500、503 類型

原创 【併發編程】一張圖徹底理解了ReentrantLock和AQS

目錄 1.引言 1.1 類比synchronized 2.使用 2.1 同步 2.2 通信協同 3.實現 2.1 類圖 2.2 核心方法 2.2.1 構造 2.2.2 lock 2.3 AQS 2.3.1 字段分析 2.3.2 lock(

原创 【go】測試go test

目錄 前言 1.go test 1.1 測試函數test 1.2 黑盒&白盒 1.3 測試配置 1.4 獨立測試包 2.測試覆蓋率 3.基準測試 4.pprof剖析 前言 很多語言都有測試工具,如Java的JUnit測試框架的自動化測試,

原创 【OSGI】用OSGI解決JAR包衝突

目錄 1.簡介 2.基本概念 2.1 Bundle 2.1.1 隔離 2.1.2 交互 2.2 Service 3.框架felix使用 3.1加載並解析jar爲Bundle 3.2 Bundle的Classloader的隔離機制以及類共享

原创 【工具】正則表達式

1.背景 開發過程中總是經常性地需要處理文本,如一些文本替換、清除等等,手工或者嚴格匹配效率低下,通過正則匹配的方式可以迅速批量通用化地處理,提高效率。 2.正則表達式 如下圖,服務端的正則有這些特殊字符, 2.1 工具 https:/