原创 Java併發--隊列同步器AbstractQueuedSynchronizer

前言 在Java的多線程環境,如果需要控制多個線程訪問共享資源時,我們可以使用synchronized來提供同步,實現鎖功能。在Java SE 5之後,Java併發包新增了Lock接口以及相關實現類,我們可以使用Lock實現與synchr

原创 Java併發--重入鎖ReentrantLock如何實現重入性

前言 重入鎖ReentrantLock,就是支持線程重進入的鎖,它表示該鎖能夠支持一個線程對資源的重複加鎖。synchronized關鍵字隱士的支持鎖的可重入性。利用synchronized,執行線程在獲取鎖之後仍然可以多次獲取鎖。而Re

原创 Java併發--ReentrantReadWriteLock如何管理讀寫鎖

前言 讀寫鎖ReentrantReadWriteLock管理了一組鎖,一個讀鎖,一個寫鎖。當寫鎖被獲取到時,後續(非當前寫操作線程)的讀寫操作都會被阻塞,寫鎖釋放後,所有的操作繼續執行。而當讀鎖被獲取時,後續的任意線程的讀鎖都可被獲取,寫

原创 Java併發--重入鎖ReentrantLock公平性與非公平性的區別

前言 重入鎖ReentrantLock有兩種方式獲取鎖,一種是公平性,一種是非公平性。如果在絕對時間上,先請求獲取鎖的線程一定會先獲取到鎖,那麼這個鎖就是公平的,反之,這個鎖就是不公平的。公平的獲取鎖,也就是等待時間最長的線程最優先獲取鎖

原创 LeetCode--旋轉圖像

問題描述 給定一個 n × n 的二維矩陣表示一個圖像。 將圖像順時針旋轉 90 度。 說明: 你必須在原地旋轉圖像,這意味着你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉圖像。 示例: 給定 matrix = [ [1

原创 SpringBoot源碼--自動配置分析

前言 相信大家都利用過springboot搭建過項目,springboot的強大之處在於起步依賴與自動配置,關於sprinboot的自動配置一直感覺十分的神奇,這幾天查看源碼研究了一下,基本明白了運行原理,總結一下。 1. springb

原创 如果HashMap的容量不是2次冪,會發生什麼?

絮叨 HashMap作爲Java中最常用的數據結構之一,在工作中使用HashMap的頻率和你遇見NullPointException一樣多,在面試中被問到的概率和問你名字的概率一樣大。既然工作,面試經常遇到,我們有必要熟悉HashMap的

原创 項目部署--利用CRT將Java項目部署到服務器

1.Java項目打包 利用maven install將項目打包,生成的jar包會保存在項目的target目錄中。如果在target中已經存在項目jar包,可利用Maven Clean操作清除target目錄。 運行成功後刷新查看項目ta

原创 記一次STS.ini參數調優--合理設置JVM參數值

個人的sts.ini方案以及後面的詳細說明 sts.ini方案: -startup plugins/org.eclipse.equinox.launcher_1.5.400.v20190515-0925.jar --launcher.l

原创 springboot啓動類--SpringApplication.run()詳解

前言 實習的第一個項目是利用springboot完成一個需求,在項目搭建的過程中真正感受到springboot的強大,springboot的起步依賴以及自動配置特性簡直不要太爽,在項目搭建的過程中解放了我們的小手。而springboot的

原创 springboot讀取classpath目錄下文件

假設靜態資源文件 information.txt 放在 src/main/resources 目錄下 public String getInfo() { String msg = ""; InputSt

原创 Lombok介紹--簡化開發

1.Lombok是什麼? lombok官方是這麼解釋的:Project Lombok是一個java庫,可以自動插入編輯器和構建工具,爲java增添趣味。永遠不要再編寫一個getter或equals方法,使用一個註釋,您的類就有了一個功能齊

原创 JDk1.8源碼--HashMap擴容機制的思考

前言 JDK1.8對HashMap進行的較大的改動,其中對HashMap的擴容機制進行了優化。 在JDK1.8前,在多線程的情況下,使用HashMap進行put操作會造成死循環。這是因爲多次put操作會引發HashMap的擴容機制,Has

原创 手機靚號AABB,ABAA,AABB等規則的正則表達式

正文 將11位的手機號進行靚號標識,前7位不做特殊判斷,後四位進行靚號判斷,同時AAAA不允許滿足AABB,AAAB,ABAB等情況。 1.尾號AABB: ^[0-9]{7}(\d)\1((?!\1)\d)\2$ 2.尾號AAA: ^[0

原创 錯誤排查:Cannot get a connection, pool error Timeout waiting for idle object

前言 項目需要將某一表中的數據同步到搜索中,在進行數據同步時報錯提示,Cannot get a connection, pool error Timeout waiting for idle object。報錯提示很容易理解,無法獲取連接