原创 深讀源碼-java線程系列之ForkJoinPool深入解析

簡介 隨着在硬件上多核處理器的發展和廣泛使用,併發編程成爲程序員必須掌握的一門技術,在面試中也經常考查面試者併發相關的知識。 今天,我們就來看一道面試題: 如何充分利用多核CPU,計算很大數組中所有整數的和? 剖析 單線程相加? 我們最容

原创 深讀源碼-java線程系列之線程池深入解析——體系結構

簡介 Java的線程池是塊硬骨頭,對線程池的源碼做深入研究不僅能提高對Java整個併發編程的理解,也能提高自己在面試中的表現,增加被錄取的可能性。 本系列將分成很多個章節,本章作爲線程池的第一章將對整個線程池體系做一個總覽。 體系結構

原创 Zookeeper的CAP原則

CAP原則 什麼是CAP 想要進行分佈式事務控制,CAP理論是我們必須要知道的; CAP原則:也叫CAP定理,指的是在一個分佈式系統中,一致性、可用性、分區容錯性三者不可兼得 一致性(Consistency) 分佈式系統中的所

原创 深讀源碼-java線程系列之線程池深入解析——定時任務執行流程

簡介 前面我們一起學習了普通任務、未來任務的執行流程,今天我們再來學習一種新的任務——定時任務。 定時任務是我們經常會用到的一種任務,它表示在未來某個時刻執行,或者未來按照某種規則重複執行的任務。 問題 (1)如何保證任務是在未來某個時刻

原创 阻塞線程不同方式的對比

引子 大家知道,我最近在招人,今天遇到個同學,他的源碼看過一些,然後我就開始了AQS連環問。 我:說說AQS的大致流程? 他:AQS包含一個狀態變量,一個同步隊列……balabala……互斥鎖balabala,共享鎖balabala……

原创 MySQL性能優化(四):分表

爲什麼要分表 如果一個表的每條記錄的內容很大,那麼就需要更多的IO操作,如果字段值比較大,而使用頻率相對比較低,可以將大字段移到另一張表中,當查詢不查大字段的時候,這樣就減少了I/O操作 如果一個表的數據量很少,那麼查詢就很快;如果

原创 JAVA泛型中的通配符 T,E,K,V,?

前言 Java 泛型(generics)是 JDK 5 中引入的一個新特性, 泛型提供了編譯時類型安全檢測機制,該機制允許開發者在編譯時檢測到非法的類型。 泛型的本質是參數化類型,也就是說所操作的數據類型被指定爲一個參數。 泛型帶來的好處

原创 深讀源碼-java同步系列之總結篇

簡介 同步系列到此就結束了,本篇文章對同步系列做一個總結。 腦圖 下面是關於同步系列的一份腦圖,列舉了主要的知識點和問題點,看過本系列文章的同學可以根據腦圖自行回顧所學的內容,也可以作爲面試前的準備。 總結 所謂同步,就是保證多線程(包

原创 MySQL性能優化(一):多種優化方式介紹

我們常見的數據庫性能優化就是SQL語句優化,確實SQL優化是開發者接觸到最多的也是最常有的優化手段。作爲開發人員我們接觸最多的也就是SQL語句的優化,SQL語句的優化除了調整SQL語句外更多的是通過添加索引來加速查詢,表結構(合理設計字段

原创 深讀源碼-java線程系列之線程池深入解析——普通任務執行流程

簡介 前面我們一起學習了Java中線程池的體系結構、構造方法和生命週期,本章我們一起來學習線程池中普通任務到底是怎麼執行的。 建議學習本章前先去複習之前《深讀源碼-java線程系列之自己手寫一個線程池》這兩章內容,有助於理解本章的內容,且

原创 深讀源碼-java同步系列之mysql分佈式鎖

問題 (1)什麼是分佈式鎖? (2)爲什麼需要分佈式鎖? (3)mysql如何實現分佈式鎖? (4)mysql分佈式鎖的優點和缺點? 簡介 隨着併發量的不斷增加,單機的服務遲早要向多節點或者微服務進化,這時候原來單機模式下使用的synch

原创 深讀源碼-java同步系列之StampedLock源碼解析

問題 (1)StampedLock是什麼? (2)StampedLock具有什麼特性? (3)StampedLock是否支持可重入? (4)StampedLock與ReentrantReadWriteLock的對比? 簡介 Stamped

原创 深讀源碼-java同步系列之CountDownLatch源碼解析

問題 (1)CountDownLatch是什麼? (2)CountDownLatch具有哪些特性? (3)CountDownLatch通常運用在什麼場景中? (4)CountDownLatch的初始次數是否可以調整? 簡介 CountDo

原创 深讀源碼-java同步系列之ReentrantReadWriteLock源碼解析

問題 (1)讀寫鎖是什麼? (2)讀寫鎖具有哪些特性? (3)ReentrantReadWriteLock是怎麼實現讀寫鎖的? (4)如何使用ReentrantReadWriteLock實現高效安全的TreeMap? 簡介 讀寫鎖是一種特

原创 深讀源碼-java同步系列之JMM(Java Memory Model)

簡介 Java內存模型是在硬件內存模型上的更高層的抽象,它屏蔽了各種硬件和操作系統訪問的差異性,保證了Java程序在各種平臺下對內存的訪問都能達到一致的效果。 硬件內存模型 在正式講解Java的內存模型之前,我們有必要先了解一下硬件層面的