原创 併發編程原理

任務調度 進程讓操作系統實現了併發,而線程讓進程內部實現了併發 線程安全的本質 (1) 原子性 (2) 有序行 —> 編譯器的重排序和CPU的指令重排序 (3) 可見性 —> 一個線程對共享變量的修改對另外一個線程不

原创 synchronized鎖住的對象能否被修改

線程1通過synchronized將obj鎖住,線程2還能否併發修改obj的內容? 代碼示例: public class ThreadTest { private String name = "step1"; p

原创 分佈式通信基礎

OSI模型 TCP三次握手 握手過程 第一次握手:Client將標誌位SYN置爲1,隨機產生一個值seq=J,並將該數據包發送給Server,Client進入SYN_SENT狀態,等待Server確認。 第二次握手:Se

原创 JMS規範及ActiveMQ

消息中間件的應用場景 異步處理 流量消峯 如果消息隊列長度超過指定長度,直接拋棄 應用解耦 處理分佈式事務 在弱一致性事務模型中,可以採用分佈式消息隊列實現最大努力通知的方式來達到數據的最終一致性 JMS

原创 如何落地需求

前置工作 頂層設計 計算每個請求URL,單位時間(5秒)的訪問次數,的原理 核心公式: 時間對對齊 = n(毫秒數) / 5 * 5 監控頁面

原创 Mysql MVCC

思考一個問題 MVCC是什麼 MVCC: Multiversion concurrency control (多版本併發控制) 解釋:併發訪問(讀或寫)數據庫時,對正在事務內處理的數據做多版本的管理,以達到用來避免寫操作的堵塞,

原创 Java中hashcode核心算法

hashcode 與 equal 方法的關係 從規則的角度看 如果兩個對象相同, equals方法一定返回true,並且這兩個對象的HashCode一定相同; 兩個對象的HashCode相同,並不一定表示兩個對象就相同,即e

原创 多租戶系統中由css引起的CDN資源覆蓋

如圖: 問題描述: 本系統下所有的請求包括靜態資源都必須攜帶 tenantid,即租戶ID。 原來圖片服務器有多臺,訪問圖片的域名每個圖片服務器一個。 後來打算改造成所有圖片只從一個域名的入口請求圖片。 於是問題就產生了,cs

原创 運維監控redis性能指標

對外提供符合redis協議的命令訪問接口,使用cluster info命令,查看集羣狀態與節點數,當集羣狀態爲clusterdown時,代表集羣不可用,或集羣節點數少於正常節點數目時即存在問題。 性能監控使用info命令,具體性能

原创 Nginx 靜態資源緩存優化

Nginx設置靜態頁面壓縮和緩存過期時間的方法 https://www.jb51.net/article/69217.htm nginx緩存靜態資源,只需幾個配置提升10倍頁面加載速度 https://www.jianshu.co

原创 Mysql執行流程

mysql體系結構 Client Connectors 接入方 支持協議很多 Management Serveices & Utilities 系統管理和控制工具,mysqldump、 mysql複製集羣、分區管理等 Conn

原创 ConcurrentHashMap

前言 HashMap是平時開發過程中用的比較多的集合,但它是非線程安全的,在涉及到多線程併發的情況,執行get方法有可能會引起循環遍歷(前提是其它線程的put方法引起了resize動作),導致CPU利用率接近100% 解決方案有

原创 Redis

Redis入門命令 keys pattern [? / * /[]] //獲得一個符合匹配規則的鍵名列表 keys mic:hobby keys * //獲取所有的key type key //去獲得這個key的數據結構類型 s

原创 Mycat

重要概念 邏輯庫(db_user) 數據庫中間件可以被看做是一個或多個數據庫集羣構成的邏輯庫 邏輯表(db_user裏的表) 分片表(用戶表) —> 是指那些原有的很大數據的表,需要切分到多個數據庫的表 全局表(數據字

原创 Netty

JDK 原生 NIO 程序的問題 1)NIO 的類庫和 API 繁雜,使用麻煩:你需要熟練掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。 2)需要具備其他的額