原创 HashMap引發死鏈問題(HashMap、ConcurrentHashMap原理解析)

事故背景 一個CPU使用率飆升至100%的線上故障,原因是在併發情況下使用HashMap導致死循環。 當cpu使用率100%時,查看堆棧,發現程序都卡在了HashMap.get()這個方法上了,重啓程序後問題消失。但是過段時間又會

原创 MQ的常用場景 && 最佳實踐

RocketMQ 消息隊列 RocketMQ 版是阿里雲基於 Apache RocketMQ 構建的低延遲、高併發、高可用、高可靠的分佈式消息中間件。消息隊列 RocketMQ 版既可爲分佈式應用系統提供異步解耦和削峯填谷的能

原创 記一次通過優化日誌解決高併發服務性能瓶頸問題

事故發現 服務在生產環境中,由於同一時間段請求量過大,導致服務響應速度急劇下降。甚至會出現拒絕服務的問題,第一時間想到是機器性能問題,無法滿足併發如此大的場景,需要進行擴容或者服務限流。經過擴容之後平穩了一個多月之後,又一次大量請

原创 消息隊列 RocketMQ原理和使用整理

一、背景 由於公司之前使用的隊列中間件是kafka,近期變更爲使用阿里的RocketMQ,所以對RocketMQ進行一下簡單的知識整理。後續研究其內部原理後,再來一篇深入理解。 二、說明 消息隊列 RocketMQ 版是阿里雲基於

原创 同步鎖的優化思路及JDK對鎖的一些優化

一、鎖優化的思路和方法 主要有以下5點: 減少鎖持有時間 主要就是精準的確定需要加鎖的模塊,不需要加鎖的代碼模塊分離在同步塊之外。 減小鎖粒度 將大對象(這個對象可能會被很多線程訪問),拆成小對象,大大增加並行度,降低鎖競

原创 Dubbo原理簡述四:服務暴露、服務引用和調用流程

一、服務暴露 先看一張Dubbo服務暴露的流程圖: 關於服務暴露,首先需要了解:ServiceBean.java 此類實現了幾個Spring中比較重要的接口:如InitializingBean、ApplicationContex

原创 JVM監控工具jstat使用詳解

一、常用的JVM監控工具有如下幾項: 1、VisualVM:是一種集成了多個JDK命令行工具的可視化工具,它能爲您提供強大的分析能力。所有這些都是免費的!它囊括的命令行工具包括jps,jstat,jmap,jinfo,jstack

原创 springmvc運行流程分析,手寫spring框架嘗試

      該文章主要是分析Springmvc啓動的流程(配置階段、初始化階段和運行階段),可以讓自己對spring框架有更深一層的理解。對框架比較感興趣的朋友都可以瞭解閱讀下,對於我所描述的內容有錯誤的還望能不吝指出。   對於spri

原创 Java動態代理相關簡述

一、概念: Java動態代理的優勢是實現無侵入式的代碼擴展,也就是方法的增強;讓你可以在不用修改源碼的情況下,增強一些方法;在方法的前後你可以做你任何想做的事情(如Spring AOP、cglib等)。 代理模式: 爲其他對象提供

原创 KMP、BM、Sunday、Horspool、strstr 字符串匹配算法介紹和性能比較

原文鏈接:https://blog.csdn.net/qq_33515733/article/details/81163135 文章轉自:https://blog.csdn.net/

原创 DFA算法實現敏感詞過濾

原文鏈接:https://blog.csdn.net/chenssy/article/details/26961957

原创 圖書管理系統源碼&網上書城系統源碼&學生管理系統源碼

免費分享: 點擊此處查看。

原创 JVM調優和垃圾回收相關參數整理

一、內存調優 -Xms and -Xmx (or: -XX:InitialHeapSize and -XX:MaxHeapSize) -Xms和-Xmx可以說是最流行的JVM參數,它們可以允許我們指定JVM的初始和最大堆內存大小。一般

原创 JVM內存模型和GC算法分析

JVM運行時數據區 JVM在運行過程中會把它所管理的內存劃分成若干不同的數據區域。 線程私有:程序計數器、虛擬機棧、本地方法棧 (主要存放指令) 線程共享:堆、方法區 (主要存放數據) 一、程序計數器 程序計數器是用於存放下一

原创 總結一些索引使用和優化規範

1、索引列的數據長度能少則少。 答:這個原因很簡單,B-Tree各個節點能存儲信息更多,減少樹的告訴,效率自然也能得到提示。 2、索引一定不是越多越好,越全越好,一定是建合適的。 答:索引多了,檢索速度雖然可能得到提升。但是“寫”相關