原创 定位錯誤日誌排查Bug的基本思路大彙總(持續更新)

1.寫日誌的BugFree思路 一下三條tips是根據項目提煉了的經驗總結。主要提供一種BugFree的思路 1.寫日誌時要養成的好習慣 保證在定位日誌時可以離開代碼情鏡還能看懂問題是什麼。 在方法前加 @Transaction

原创 牛客網編程OJ的典型輸入Java模板

筆試的時候一般都需要自己寫輸入輸出,爲了儘可能減少因爲格式問題而爆0這種委屈之事,我在此以牛客網OJ爲例總結了常見的6種典型情況輸入描述的模板。希望可以幫助到廣大考友把更多的精力放在解題思路上。 1. 輸入是已知大小的二維數組 輸

原创 二叉樹的詳細分類與應用場景(Java代碼實現)

1.二叉搜索樹(Binary Search Tree) leetcode450.刪除BST的結點 class Solution { public TreeNode deleteNode(TreeNode root, int

原创 貪心算法思路總結及其java實現

1. 貪心算法條件與思路的解題步驟 1.一次性:某個狀態以後的過程不會影響以前的狀態,只與當前狀態有關。 2.局部最優集合能得到全局最優。 (如果某次選擇會對之後選擇產生影響,局部最優不能獲得全局最優可以直接KO貪心思路) 第一步

原创 採用jmeter進行搶購商品的壓力測試

測試內容 疫情物資搶購項目提供了三種解決方案來比較系統性能: 1.利用MySQL的update行鎖實現悲觀鎖。 2.MySQL加字段version實現樂觀鎖。 3.添加Redis緩存; 使用了JMeter在保證錯誤率爲零的基礎上,

原创 廣度優先搜索(BFS)總結及其Java實現

圖是搜索算法的最常用數據結構,因此需要先儲備一些圖的概念。 我總結在另一篇博客:非線性數據結構——圖的相關概念 BFS 相對 DFS 的最主要的區別是:BFS 找到的路徑一定是最短的,但代價就是空間複雜度比 DFS 大很多 廣度優

原创 歸併排序和快速排序Java實現與深度對比

《算法》第四版上說明:遞歸排序和快速排序都體現了分治的思想。不過歸併的計算主要消耗在子向量的歸併操作上,而快速排序卻相反。 本篇文章用Java給出代碼後再進行深度對比 快速排序 首先給出思路僞代碼: void quick_sort

原创 操作系統之進程調度與內存管理

1.進程間的通信與調度 1.1進程間的通信(Inter Process Communication) 生產者消費者問題 數據存到有界緩衝區bounded-buffer中,設置count記錄緩衝區的數據量,如果緩衝區滿count=size,

原创 Java內存溢出的典型場景測試

引言:本文是閱讀經典的《深入理解Java虛擬機》後,對第二章的內存溢出異常情況進行總結,通過實際代碼實現來驗證知識點的正確性。 1.堆內存溢出 Java的堆用於存儲對象實例,只要不斷地創建對象,並且保證GC root 到對象之間有

原创 Java虛擬機(JVM)調優和Debug的常用參數詳解

引言:JVM中的參數,根據是否常修改,可分爲標準類型和非標準類型。標準類型的代表有 -server,-client和-version這種無論在那個版本JVM中都是自帶不可改的部分。 —Xint,-Xcomp和-Xmixed這類X開

原创 Java性能監控工具Arthas實踐

1. 啓動Demo 在dos窗口輸入: curl -O https://alibaba.github.io/arthas/arthas-demo.jar java -jar arthas-demo.jar arthas-demo

原创 《Java編程思想第四版》中在算法題中常用的概念總結(持續更新)

總結今年前期在《Java編程思想第四版》中常見的幾個問題: 1.OOP相關概念 向上轉型(upcasting) 書中那句“新類是現有類的一種類型”的概括很到位,也直接解釋了繼承的關係。Java編譯器支持向上轉型,是指子類引用轉換

原创 git常用工具的原理介紹以及項目使用中常見問題(持續更新)

1.工具中的重要原理 1.SSH KEy 在《GitHub入門與實踐》一書中對SSH Key的介紹並不多,只是簡短的說了使用。 針對不同的git平臺,所生產的公開密鑰其實是不一樣的。 重點:id_rsa文件是私有密鑰,id_rsa

原创 從SpringMVC源碼分析原理

1.SpringMVC下獲取web資源的功能實現 WebMvcAutoConfiguration(mvc自動配置類)中的添加資源處理器代碼如下: public void addResourceHandlers(ResourceH

原创 ThreadLocal總結及主要方法的Java實現

1. ThreadLocal概述 1.ThreadLocal提供線程局部變量;開箱即用開銷小,可以代替多線程訪問共享變量時需要上鎖的需要。 在各種涉及的多線程語言都有,Java用哈希表表實現(ThreadLocalMap) 3.