原创 Dubbo的SPI的分析

首先定義: SPI:即Service Provider Interface,釋義爲服務提供接口 JDK SPI:Java的spi機制,是去掃描/META-INF/service/的接口名文件,並獲取文件中的值。以mysql的驅動類

原创 spring中scope的prorotype與singleton的區別

在配置文件中的單例中經常有scope的配置項的選擇,如下: <bean id="writeSqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate" sc

原创 Synchronized關鍵字的使用區別

Synchronized關鍵字的使用區別 常用API method 註釋 run() run()方法是我們創建線程時必須要實現的方法,但是實際上該方法只是一個普通方法,直接調用並沒有開啓線程的作用。 start(

原创 關於left join、right join和join等join的區別

前言: 這兩天,有個項目需要對SQL進行優化,公司的實習生對一些SQL的連接不太懂,今天和實習生講解後就趁熱打鐵說一下各種join的區別。 各種join的區別 首先放兩張關係圖: 下面就講解下關係: 多表查詢分爲 內、外連接 外

原创 java線程池的大小如何設置?

概念,IO密集型和CPU密集型 CPU密集型(計算密集型): cpu密集型任務的特點是要進行大量的計算,消耗CPU資源,比如計算圓周率、對視頻進行高清解碼等等,全靠CPU的運算能力 計算機密集型任務主要消耗CPU資源,因此,代碼運

原创 常用nginx轉發匹配規則

一、正則表達式匹配: 1、~ 爲區分大小寫匹配 2、~* 爲不區分大小寫匹配 3、!~ 和 !~* 分別爲區分大小寫不匹配及不區分大小寫不匹配 二、文件及目錄匹配 -f 和 !-f 用來判斷是否存在文件 -d 和 !-d 用來判斷

原创 吉利汽車面試題

說明:只針對自己面試過程中的題目 1、談談面向對象的多態 2、kafka的topic、offset以及partition之間的聯繫 3、elasticsearch的原理和結構 4、springbean的生命週期 5、concurr

原创 關於Java堆內存是線程共享的嗎?

首先,在JVM的內存結構中,比較常見的兩個區域是堆內存和棧內存關於這兩個概念的介紹一般如下: 1、堆是線程共享的內存區域,棧是線程獨享的內存區域。 2、堆中主要存放對象實例,棧中主要存放各種基本數據類型、對象的引用。 但

原创 爲什麼Java中靜態方法不能調用非靜態方法和變量?

這個問題在學習jvm的時候會遇到過 首先看個例子 一 例子 我們先看效果 效果: 我們在靜態方法main中調用非靜態變量或者是方法都會報錯。我們反過來看看 反過來沒有問題,這是什麼原因呢? 二、原因解釋 我們需要首先知道的是靜

原创 HashMap的負載因子初始值爲什麼是0.75?

注:本片文章基於JDK1.8,特在此說明。 一、首先介紹下負載因子的作用 對於HashMap的研究,我之前一直停留在烤爐源碼的實現,其實現在看來,系統默認的各種參數纔是HashMap的精華所在。 負載因子是和擴容機制有關的,意思時

原创 spring Bean的完整生命週期

spring容器中的bean的完整生命週期一共分爲是11步 1、bean對象的實例化 2、封裝屬性,也就是設置properties中的屬性值 3、如果bean實現了BeanNameAware,則執行setBeanName方法,也就

原创 HashMap默認容量爲16的原因

集合是Java開發日常中經常會使用到的,而作爲一種典型的K-V結構的數據結構,HashMap對於我們來說並不陌生。在日常開發中我們會經常以如下方式創建一個HashMap: Map<String, String> map = new

原创 kafka原理解析

前言 kafka是一種高吞吐量的分佈式發佈訂閱消息系統,它可以處理消費者規模中的網站中的所有動作流數據,具有高性能、持久化、多副本備份、橫向擴展能力等等。 基礎架構及術語 話不多說,先看圖,通過這張圖我們來捋一捋相關的概念及之間的

原创 多個單列索引和聯合索引的區別

背景: 爲了提高數據庫效率,建索引是家常便飯;那麼當查詢條件爲2個及以上時,我們是創建多個單列索引還是創建一個聯合索引好呢?他們之間的區別是什麼?哪個效率高呢?我在這裏詳細測試分析下。 一、聯合索引測試 注:Mysql版本爲 5.

原创 爲什麼要重寫hashcode和equals方法?

1.通過Hash算法來了解HashMap對象的高效性 我們首先了解下數據結構中的一個知識點:在一個長度爲n(假設是10000)的 線性表(假設是ArrayList)裏,存放着無序的數字;如果我們要找一個指定的數字,就不得不通過從頭