原创 徹底搞懂jdk1.8中的haspMap原理(源碼解析+ 對比jdk1.7)

前言: 本博客只對jdk1.7中的hashMap進行文字性的說明,源碼的說明只針對jdk1.8,因爲現在開發多數都是jdk1.8. 一、map結構 它是雙列數據,保存具有映射關係“key-value對”的集合,map中的元素具有無

原创 java8新特性之stream的collect實戰

1、list轉換成list 不帶return方式 List<Long> ids=wrongTmpList.stream().map(c->c.getId()).collect(Collectors.toList()); 帶re

原创 lucene淺談

1.導圖: 2.簡述: lucene是基於java的全文索引,用來快速的檢索數據,之前我們接觸到的是結構化的數據,例如數據庫,但是對於非結構化數據內容的查找就需要lucene,我們在做項目的時候可能用不到lucene,但是用到的

原创 (.bat)批處理應用小技巧

前言: 給大家秀一波小技巧,不想談什麼原理了,只想簡單的秀一下,大神只需路過,菜鳥可以看一下! 應用場景一:大家在啓用nginx的時候是習慣點擊nginx.exe還是習慣用命令呢? 如果用命令的話,需要win+r 進入到nginx

原创 【多線程 二】線程創建和啓動的四種方式(以及詳解Thread和Runnable方式的優缺點)

1、繼承Thread 其實也是實現了runnable接口的。 public class Threadextend extends Thread{ @Override public void run() {

原创 【RabbitMq 一】概述

1、爲什麼引入MQ(消息隊列) 解決服務之間數據同步的問題,每個服務的基本數據都有自己存儲的地方,當一個服務的數據 變化的時候,其他的服務數據應該也會跟着變化,如果用代碼來做約束了,違背了服務的獨立的原則,此時引入技術MQ 2、M

原创 【多線程 三】線程同步的幾種方式詳解

1、問題引入 當多個線程共同訪問共享資源的時候,就會發生線程安全的問題,比如如下的程序: 三個窗口同時賣一百張票,但最後出現沒有存在的票(0 -1票) 代碼: public class TicketRunnableImpl imp

原创 【多線程 六】徹徹底底搞懂CAS,解決ABA問題

前言: 如果不知道JMM(java 內存模型),還請看博主的上一篇博客: volatile關鍵字與內存可見性詳解 ,因爲本博客還需要JMM的理論基礎。 博客內容導圖 1、CAS是什麼 CAS(Compare-And-Swap)是

原创 【多線程 四】線程間的通信

1、爲什麼要處理線程間通信 : 當我們需要多個線程共同協作完成一件任務,並且希望他們有規律的執行,那麼此時就需要線程之間進行通信。爲了能達到此種目的我們需要引入一個機制——等待喚醒機制。 2、 等待喚醒機制 這是多個線程間的一種協

原创 【redis 一】前奏 Nosql基石:CAP理論+BASE理論

1、傳統的ACID理論 關係型數據庫遵循ACID規則 事務在英文中是transaction,和現實世界中的交易很類似,它有如下四個特性: 1、A (Atomicity) 原子性 原子性很容易理解,也就是說事務裏的所有操作要麼全部做

原创 【多線程 一】概述

前言: 此篇博客對多線程是一個整體的概述過程,後續會有具體的講解。 1、導圖: 2、何爲線程 線程是進程中的一個執行單元,負責當前進程中程序的執行,一個進程中至少有一個線程。一個進程中是可以有多個線程的,這個應用程序也可以稱之爲

原创 爲什麼匿名類是沒有名字的,明明有名字的解釋

首先大家看一下下面的代碼,大家應該還算熟悉吧,他其實就是一個匿名類。 Runnable runnable = new Runnable() { @Override public

原创 Java Integer.valueOf()和Integer.parseInt()的區別

前言 大家都知道Integer類中有Integer.valueOf(String s)和Integer.parseInt(String s)兩個靜態方法,他們都能夠將字符串轉換爲整型。說到這裏你肯定會想同一個功能爲什麼要提供兩個不

原创 【java 設計模式】 單例模式精解(面試再也不用怕了)

前言 這篇 博客是跑更問底的學習單例模式,看了本博客,對於一般的面試官,你都可以手撕了,但是大神級別的面試官,後邊還會補充。 一、手寫單例模式 1、餓漢式 public class Singleton { // 構造方法私

原创 【springCloud】feign.RetryableException: Read timed out executing GET.。的有效解決辦法

1.錯誤如下圖 2.解決辦法 錯誤提示是請求超時,那我們就把請求的時間改大不久行了,這也是網上的大多數朋友給的解決方案,在網關配置ribbon: ribbon: ConnectTimeout: 60000 # 連接超時時間(