原创 徹底搞定線程池(2)-基於模型實現線程池

概述 在上一篇文章 徹底搞定線程池(1)-線程池模型的構建 中,我把線程池的主要的功能和流程給梳理了一下,並且在最後使用代碼實現了一個簡單的線程池。不過距離一個完整的線程池還需要多做一些東西。 本篇的代碼會在上一版代碼的基礎上進

原创 徹底搞定線程池-(1)線程池模型的構建

概述 做後端的應該都知道線程池,即使你沒親自使用過,那也一定聽過或者瞭解過。有時候也會去深入理解,結果往往是當時覺得自己理解了,過一段時間就忘了。因爲在日常的開發中,我們都不需要用到線程池,很多都是使用的工具和框架寫好,我們直接調

原创 Java字節碼詳解(一) class文件結構

文章目錄java代碼運行過程字節碼文件的結構1.1 Class文件的結構屬性1.2 用一個簡單的示例代碼分析1.3 分析由 `javap -v ` 命令顯示的字節碼文件字節碼文件屬性類屬性常量池方法表集合總結 知識背景:JVM(

原创 測試泛談

1. 前言 軟件測試可能是個做開發的都知道,一般的項目都有測試人員做系統測試,至於集成測試和單元測試可能就沒多少人寫,這個跟公司開發流程和開發人員自身的編碼習慣有關,也沒什麼好與壞之分。 就我個人而言,我是對測試比較感興趣的,完善

原创 多系統單點登錄(sso)設計

文章目錄問題提出登錄信息共享機制設計簡單實現淘寶天貓登錄信息共享(簡化版)登錄流程 問題提出 多個系統中,如何做到其中一個系統登錄了,在瀏覽器中打開其他系統也會成登錄狀態?比如在淘寶登陸了,打開天貓網頁,也會顯示已登錄 網上有一

原创 對緩存的一些簡單理解

1. 緩存 提起 緩存(cache),一般會想到cpu高速緩存、內存緩存。緩存的本質是將部分的數據使用另一種存取速度更快的介質存儲,使系統更快的操作和響應。比如我們將部分的數據從磁盤放到內存中,直接操作內存的數據,這樣比從磁盤讀取

原创 記一次"內存泄露"排查過程

問題的發現 今天發現線上一個應用內存佔用非常高,但它的cpu使用率卻很低 使用ps命令,可以看到 進程 19793 佔用了4.9G的內存,然而它cpu使用率還不到5%,有問題。 # ps -aux | grep 19793 use

原创 TDD實踐和思考

1. 前言 敏捷開發是現在被廣泛應用的軟件開發方法,強調程序團隊成員與業務人員緊密協作,頻繁交付新的軟件版本。 敏捷軟件開發法支持廣泛的軟件開發生命週期。有的專注於實踐(例如,極限編程、務實編程,敏捷建模),而有的專注於管理工作流程(

原创 Future,FutureTask和Callabe關係及使用詳解

文章目錄1.Future擔當的角色2. FutureTask使用場景3. Callable、Future和FutureTaskCallabe接口Future接口FutureTask類4.FutureTask使用例子 1.Future擔

原创 Jvm 內存分佈機制

內存分佈概覽 java虛擬機運行時會將數據分爲幾個區域,如下圖所示 程序計數器 程序計數器是一塊比較小的內存區域,它主要的作用是存儲當前線程執行字節碼的行號。在虛擬機內存模型中(一般的虛擬機會進行優化),字節碼解析工作是通過該計數器

原创 多系統單點登錄原理(淘寶天貓) (sso)

文章目錄問題提出跨域獲取登錄狀態簡單的實現淘寶天貓token的獲取(簡化版)登錄流程 問題提出 多個系統中,如何做到其中一個系統登錄了,其他的打開其他系統也會成登錄狀態?比如在淘寶登陸了,打開天貓網頁,也會顯示已登錄 跨域獲取登錄

原创 Java字節碼詳解(二)字節碼的運行過程

文章目錄JVM的一些基礎概念JVM數據類型JVM的內存結構1.方法區2.堆3.PC寄存器4. Java方法棧和本地方法棧Java字節碼運行過程簡單的示例1.示例源碼2.main函數的字節碼展示3.字節碼指令運行過程方法調用1.示例源碼

原创 Java字節碼詳解(三)字節碼指令(轉)

一、概述 Java虛擬機採用基於棧的架構,其指令由操作碼和操作數組成。 操作碼:一個字節長度(0~255),意味着指令集的操作碼個數不能操作256條。 操作數:一條指令可以有零或者多個操作數,且操作數可以是1個或者多個字節。編譯後的

原创 Java異常詳解-從字節碼角度查看異常實現原理

一、Java異常處理機制 Java異常的定義、類型和用法在網上有很多優秀的文章,這裏直接引用一篇寫得比較詳細的文章。 深入理解Java異常處理機制 一個簡單的異常繼承樹 接下來做一個知識點的提出,如果有哪一個點不懂,可以查看上面引