原创 IDEA 實用快捷鍵

Ctrl Alt M 抽取方法 method Ctrl Alt F 抽取字段 field Ctrl Alt V 抽取變量 variable Ctrl Alt C 抽取常量 co

原创 35、JVM優化Java代碼時都做了什麼?

我在專欄上一講介紹了微基準測試和相關的注意事項,其核心就是避免 JVM 運行中對 Java 代碼的優化導致失真。所以,系統地理解 Java 代碼運行過程,有利於在實踐中進行更進一步的調優。 今天我要問你的問題是,JVM 優化 Java 代

原创 34、有人說“Lambda能讓Java程序慢30倍”,你怎麼看?

在上一講中,我介紹了 Java 性能問題分析的一些基本思路。但在實際工作中,我們不能僅僅等待性能出現問題再去試圖解決,而是需要定量的、可對比的方法,去評估 Java 應用性能,來判斷其是否能夠符合業務支撐目標。今天這一講,我會介紹從 Ja

原创 36、談談MySQL支持的事務隔離級別,以及悲觀鎖和樂觀鎖的原理和應用場景?

目錄 今天我要問你的問題是,談談 MySQL 支持的事務隔離級別,以及悲觀鎖和樂觀鎖的原理和應用場景? 典型回答 考點分析 知識擴展 一課一練 在日常開發中,尤其是業務開發,少不了利用 Java 對數據庫進行基本的增刪改查等數據操作,這也

原创 37、談談Spring Bean的生命週期和作用域?

在企業應用軟件開發中,Java 是毫無爭議的主流語言,開放的 Java EE 規範和強大的開源框架功不可沒,其中 Spring  毫無疑問已經成爲企業軟件開發的事實標準之一。今天這一講,我將補充 Spring 相關的典型面試問題,並談談其

原创 39、談談常用的分佈式ID的設計方案?Snowflake是否受冬令時切換影響?

專欄的絕大部分主題都側重於 Java 語言和虛擬機,基本都是單機模式下的問題,今天我會補充一個分佈式相關的問題。嚴格來說,分佈式並不算是 Java 領域,而是一個單獨的大主題,但確實也會在 Java 技術崗位面試中被涉及。在準備面試時,如

原创 38、對比Java標準NIO類庫,你知道Netty是如何實現更高性能的嗎?

今天我會對 NIO 進行一些補充,在專欄第 11 講中,我們初步接觸了 Java 提供的幾種 IO 機制,作爲語言基礎類庫,Java 自身的 NIO 設計更偏底層,這本無可厚非,但是對於一線的應用開發者,其複雜性、擴展性等方面,就存在一定

原创 19、Java併發包提供了哪些併發工具類?(高併發編程----5)

目錄 Java 併發包提供了哪些併發工具類? 典型回答  考點分析 知識擴展 Semaphore CountDownLatch CyclicBarrier 線程安全 Map、List 和 Set 一課一練 通過前面的學習,我們一起回顧了線

原创 17、一個線程兩次調用start()方法會出現什麼情況?(高併發編程----3)

目錄 一個線程兩次調用 start() 方法會出現什麼情況?談談線程的生命週期和狀態轉移。 典型回答 考點分析 知識擴展 首先,我們來整體看一下線程是什麼? 線程的基本操作 談談線程 API 使用 一課一練 今天我們來深入聊聊線程,相信大

原创 26、如何監控和診斷JVM堆內和堆外內存使用?

目錄 今天我要問你的問題是,如何監控和診斷 JVM 堆內和堆外內存使用? 典型回答 考點分析 知識擴展 首先,堆內部是什麼結構? 1. 新生代 2. 老年代 3. 永久代 第二,分析完堆內空間,我們一起來看看 JVM 堆外內存到底包括什麼

原创 33、 後臺服務出現明顯“變慢”,談談你的診斷思路?

在日常工作中,應用或者系統出現性能問題往往是不可避免的,除了在有一定規模的 IT 企業或者專注於特定性能領域的企業,可能大多數工程師並不會成爲專職的性能工程師,但是掌握基本的性能知識和技能,往往是日常工作的需要,並且也是工程師進階的必要條

原创 18、什麼情況下Java程序會產生死鎖?如何定位、修復?(高併發編程----4)

目錄 什麼情況下 Java 程序會產生死鎖?如何定位、修復? 典型回答 考點分析 知識擴展 模擬死鎖程序 如何在編程中儘量預防死鎖呢? 第一種方法 第二種方法 第三種方法 第四種方法 一課一練 今天,我會介紹一些日常開發中類似線程死鎖等問

原创 16、synchronized底層如何實現?什麼是鎖的升級、降級? (高併發編程----2)

目錄 syncronized 底層如何實現?什麼是鎖的升級、降級? 典型回答 鎖的升級、降級 考點分析 知識擴展 展開一些 synchronized 的底層實現 順着鎖升降級的過程分析下去,偏斜鎖到輕量級鎖的過程是如何實現的呢? 理解併發

原创 24、有哪些方法可以在運行時動態生成一個Java類?

目錄 今天我要問你的問題是,有哪些方法可以在運行時動態生成一個 Java 類? 典型回答 考點分析 知識擴展 我們分析一下,動態代碼生成是具體發生在什麼階段呢? 最後一個問題,字節碼操縱技術,除了動態代理,還可以應用在什麼地方? 在開始今

原创 22、AtomicInteger底層實現原理是什麼?如何在自己的產品代碼中應用CAS操作?(高併發編程----8)

目錄 今天我要問你的問題是,AtomicInteger 底層實現原理是什麼?如何在自己的產品代碼中應用 CAS 操作? 典型回答 考點分析 知識擴展 一課一練 在今天這一講中,我來分析一下併發包內部的組成,一起來看看各種同步結構、線程池等