原创 多線程程序加速指南

雖然對於一個計算機程序來說最重要的是正確性,如果一個程序沒辦法產出正確的結果,那麼這個程序的價值就大打折扣了。但程序性能也是很重要的一個方面,如果程序運行得太慢,那也會影響到程序的適用範圍和硬件配置的成本。 在之前的文章《4.多線程中那些看

原创 多線程編程完全指南

多線程編程或者說範圍更大的併發編程是一種非常複雜且容易出錯的編程方式,但是我們爲什麼還要冒着風險艱辛地學習各種多線程編程技術、解決各種併發問題呢? 因爲併發是整個分佈式集羣的基礎,通過分佈式集羣不僅可以大大降低同等負載能力的價格,還能使整體

原创 Java同步機制的底層實現

在多線程編程中我們會遇到很多需要使用線程同步機制去解決的併發問題,而這些同步機制就是多線程編程中影響正確性和運行效率的重中之重。這不禁讓我感到好奇,這些同步機制是如何實現的呢?好奇心是進步的源泉,就讓我們一起來揭開同步機制源碼的神祕面紗吧。

原创 從0到1實現自己的阻塞隊列(下)

在上一篇文章《從0到1實現自己的阻塞隊列(上)》中,我們已經實現了一個可以使用的阻塞隊列版本。在這篇文章中,我們可以繼續我們的冒險之旅,將我們的阻塞隊列提升到接近JDK版本的水平上。 更進一步優化效率 我們一直使用的都是Object.not

原创 從0到1實現自己的阻塞隊列(上)

阻塞隊列不止是一道熱門的面試題,同時也是許多併發處理模型的基礎,比如常用的線程池類ThreadPoolExecutor內部就使用了阻塞隊列來保存等待被處理的任務。而且在大多數經典的多線程編程資料中,阻塞隊列都是其中非常重要的一個實踐案例。甚

原创 多線程中那些看不見的陷阱

多線程編程就像一個沼澤,中間遍佈各種各樣的陷阱。大多數開發者絕大部分時間都是在做上層應用的開發,並不需要過多地涉入底層細節。但是在多線程編程或者說是併發編程中,有非常多的陷阱被埋在底層細節當中。如果不知道這些底層知識,可能在編寫過程中完全意

原创 線程池運行模型源碼全解析

在上一篇文章《從0到1玩轉線程池》中,我們瞭解了線程池的使用方法,以及向線程池中提交任務的完整流程和ThreadPoolExecutor.execute方法的源代碼。在這篇文章中,我們將會從頭閱讀線程池ThreadPoolExecutor類

原创 從0到1玩轉線程池

我們一般不會選擇直接使用線程類Thread進行多線程編程,而是使用更方便的線程池來進行任務的調度和管理。線程池就像共享單車,我們只要在我們有需要的時候去獲取就可以了。甚至可以說線程池更棒,我們只需要把任務提交給它,它就會在合適的時候運行了。

原创 Java線程池從使用到閱讀源碼(3/10)

我們一般不會選擇直接使用線程類Thread進行多線程編程,而是使用更方便的線程池來進行任務的調度和管理。線程池就像共享單車,我們只要在我們有需要的時候去獲取就可以了。甚至可以說線程池更棒,我們只需要把任務提交給它,它就會在合適的時候運行了。

原创 這一次,讓我們完全掌握Java多線程(2/10)

多線程不僅是Java後端開發面試中非常熱門的一個問題,也是各種高級工具、框架與分佈式的核心基石。但是這個領域相關的知識點涉及到了線程調度、線程同步,甚至在一些關鍵點上還涉及到了硬件原語、操作系統等更底層的知識。想要背背面試題很容易,但是如果

原创 當我們在說“併發、多線程”,說的是什麼?

這篇文章的目的並不是想教你如何造火箭(面試造火箭,工作擰螺絲),而是想通過對原理和應用案例的有限度剖析來協助你構建起併發的思維,並將操作系統的理論知識與工程實踐結合起來,貫穿從學到會的全過程。當然,雖然我們是從實用角度出發,但具有實踐意義的

原创 技術面試老是有勁使不出,該怎麼辦?

又到了一年金三銀四,回想到很多年前我剛參加工作時的面試經歷,那時都是呆呆地等着面試官問問題,被問到一些自己並不熟悉的問題時要不就是思考半天也切不中要點,要不就只能無奈地回答並不清楚了。其實不管是經驗不足的初級開發,還是面臨更高要求的資深開發

原创 數據庫索引爲什麼用B+樹實現?

爲什麼大多數數據庫索引都使用B+樹來實現呢?這涉及到數據結構、操作系統、計算機存儲層次結構等等複雜的理論知識,但是不用擔心,這篇文章20分鐘之後就會給你答案。 這篇文章是一系列數據庫索引文章中的最後一篇,這個系列包括了下面四篇文章: 數

原创 20分鐘數據庫索引設計實戰

在後端開發的工作中如何輕鬆、高效地設計大量數據庫索引呢?通過下面這四步,20分鐘後你就再也不會爲數據庫的索引設計而發愁了。 順暢地閱讀這篇文章需要了解數據庫索引的組織方式,如果你還不熟悉的話,可以通過另一篇文章來快速瞭解一下——數據庫索引融

原创 數據庫索引融會貫通

索引的各種規則紛繁複雜,不瞭解索引的組織形式就沒辦法真正地理解數據庫索引。通過本文,你可以深入地理解數據庫索引在數據庫中究竟是如何組織的,從此以後索引的規則對於你將變得清清楚楚、明明白白,再也不需要死記硬背。 順暢地閱讀這篇文章需要了解索引