原创 Thread.join()的實現原理

掃描下方二維碼或者微信搜索公衆號菜鳥飛呀飛,即可關注微信公衆號,閱讀更多Spring源碼分析和Java併發編程文章。 問題 在join()方法中最終會調用到對象的wait()方法,而wait()方法通常是和notify()

原创 面試官:爲什麼《阿里巴巴Java開發手冊》上要禁止使用Executors來創建線程池

掃描下方二維碼或者微信搜索公衆號菜鳥飛呀飛,即可關注微信公衆號,閱讀更多Spring源碼分析和Java併發編程文章。 前言   在《阿里巴巴Java開發手冊》第一章第6講併發處理中,強制規定了線程池不允許使用Executor

原创 優先級隊列PriorityQueue源碼分析

❝ 掃描下方二維碼或者微信搜索公衆號菜鳥飛呀飛,即可關注微信公衆號,閱讀更多Spring源碼分析、Java併發編程、Netty源碼系列和MySQL工作原理文章。 ❞ 1. 回顧 在上一篇文章中分享了堆這種數據結構,同時提到,堆可

原创 面試官:來!聊聊線程池的實現原理以及使用時的問題

掃描下方二維碼或者微信搜索公衆號菜鳥飛呀飛,即可關注微信公衆號,閱讀更多Spring源碼分析和Java併發編程文章。 前言   無論是在工作中,還是在書本中,我們都可以聽到或者看到關於線程在使用時的一些建議:不要在代碼中自己

原创 Semaphore的源碼分析以及使用場景

掃描下方二維碼或者微信搜索公衆號菜鳥飛呀飛,即可關注微信公衆號,閱讀更多Spring源碼分析和Java併發編程文章。 簡介 Semaphore翻譯過來就是信號的意思,在Java中通常稱它爲信號量,是JUC包下提供的一個併發

原创 Netty源碼分析系列之writeAndFlush()下

掃描下方二維碼或者微信搜索公衆號菜鳥飛呀飛,即可關注微信公衆號,閱讀更多Spring源碼分析、Java併發編程和Netty源碼系列文章。 前言 在上一篇文章中(Netty 源碼分析系列之 writeAndFlush()上)分

原创 如何從BIO演進到NIO,再到Netty

掃描下方二維碼或者微信搜索公衆號菜鳥飛呀飛,即可關注微信公衆號,閱讀更多Spring源碼分析和Java併發編程文章。 前言 年初的時候給自己定了一個目標,就是學習Netty的源碼,因此在Q2的OKR上,其中一個目標就是學習N

原创 JVM系列之垃圾收集算法

掃描下方二維碼或者微信搜索公衆號菜鳥飛呀飛,即可關注微信公衆號,閱讀更多Spring源碼分析、Java併發編程、Netty源碼系列和MySQL工作原理文章。 前言 上一篇文章中介紹了標記階段的算法,這篇文章將介紹清除階段的算

原创 Netty源碼分析系列之Reactor線程模型

掃描下方二維碼或者微信搜索公衆號菜鳥飛呀飛,即可關注微信公衆號,閱讀更多Spring源碼分析和Java併發編程文章。 對於網絡編程而言,一方面需要保證基本功能的正確性,另一方面還需要保證程序的高性能。而網絡程序高性能的主題之

原创 一道看了答案都不知道爲什麼的面試題

❝ 掃描下方二維碼或者微信搜索公衆號菜鳥飛呀飛,即可關注微信公衆號,閱讀更多Spring源碼分析、Java併發編程、Netty源碼系列和MySQL工作原理文章。 ❞ 題目 經常看到一道面試題,題目如下,每次都是猜答案,幾乎每次都

原创 垃圾回收之垃圾標記算法

封面前言作爲 Java 開發人員,其實是非常幸福的,因爲 JVM 的存在,使得 Java 開發人員不需要像 C 或者 C++開發人員那樣需要手動申請內存、釋放內存,這些資源申請、垃圾回收的操作,JVM 底層直接幫助我們全乾了。這爲 Ja

原创 MySQL是如何對LRU算法進行優化的?又該如何對MySQL進行調優?

❝ 掃描下方二維碼或者微信搜索公衆號菜鳥飛呀飛,即可關注微信公衆號,閱讀更多Spring源碼分析、Java併發編程、Netty源碼系列和MySQL工作原理文章。 ❞ 1. 開篇 MySQL 在查詢數據時,對於 InnoDB 存儲

原创 併發工具類CyclicBarrier的源碼分析以及使用場景

掃描下方二維碼或者微信搜索公衆號菜鳥飛呀飛,即可關注微信公衆號,閱讀更多Spring源碼分析和Java併發編程文章。 上一篇文章介紹了工具類CountDownLatch的原理和使用場景(併發工具類CountDownLatc

原创 併發工具類CountDownLatch的源碼分析以及使用場景

掃描下方二維碼或者微信搜索公衆號菜鳥飛呀飛,即可關注微信公衆號,閱讀更多Spring源碼分析和Java併發編程文章。 簡介 CountDownLatch是JUC包下提供的一個工具類,它的作用是讓一個或者一組線程等待其他線程

原创 爲什麼《阿里巴巴Java開發手冊》中強制要求主鍵id是自增的

前言在《阿里巴巴 Java 開發手冊》第五章 MySQL 規定第九條中,強制規定了單表的主鍵 id 必須爲無符號的 bigint 類型,且是自增的。爲什麼會這樣強制規定呢?爲什麼通常主鍵 id 的數據類型有兩種選擇:字符串或者整數,主鍵