原创 synchronized 優化手段之鎖膨脹機制!

synchronized 在 JDK 1.5 之前性能是比較低的,在那時我們通常會選擇使用 Lock 來替代 synchronized。然而這個情況在 JDK 1.6 時就發生了改變,JDK 1.6 中對 synchronized 進行了各

原创 synchronized 加鎖 this 和 class 的區別!

synchronized 是 Java 語言中處理併發問題的一種常用手段,它也被我們親切的稱之爲“Java 內置鎖”,由此可見其地位之高。然而 synchronized 卻有着多種用法,當它修飾不同對象時,其意義也是不同的,下面我們一起來看

原创 @Autowired報錯原因分析和4種解決方案!

上圖的報錯信息相信大部分程序員都遇到過,奇怪的是雖然代碼報錯,但絲毫不影響程序的正常執行,也就是雖然編譯器 IDEA 報錯,但程序卻能正常的執行,那這其中的原因又是爲何? ​ 報錯原因分析 報錯的原因首先是因爲 IDEA 強大的報警機制,

原创 中年程序員轉行第1年的感悟|2021 年中總結

開始之前先自我介紹一下,我叫王磊(人稱磊哥),來自陝西西安,三十來歲,在軟件行業呆了也算有十餘年了。 ​ 2009 年初來乍到,先做了幾年的 C# 開發,之後又去了一家 500 強的民營企業做了幾年的技術經理,使用的技術也從 C# 開始擴展

原创 Java中生成隨機數的4種方式!

在 Java 中,生成隨機數的場景有很多,所以本文我們就來盤點一下 4 種生成隨機數的方式,以及它們之間的區別和每種生成方式所對應的場景。 1.Random Random 類誕生於 JDK 1.0,它產生的隨機數是僞隨機數,也就是有規則的隨

原创 ThreadLocal內存溢出代碼演示和原因分析!

ThreadLocal 翻譯成中文是線程本地變量的意思,也就是說它是線程中的私有變量,每個線程只能操作自己的私有變量,所以不會造成線程不安全的問題。 ​ 線程不安全是指,多個線程在同一時刻對同一個全局變量做寫操作時(讀操作不會涉及線程不安全

原创 SimpleDateFormat線程不安全的5種解決方案!

1.什麼是線程不安全? 線程不安全也叫非線程安全,是指多線程執行中,程序的執行結果和預期的結果不符的情況就叫做線程不安全。 ​ 線程不安全的代碼 SimpleDateFormat 就是一個典型的線程不安全事例,接下來我們動手來實現一下。首先

原创 ThreadLocal不好用?那是你沒用對!

在 Java 中,如果要問哪個類使用簡單,但用好最不簡單?我想你的腦海中一定會浮現出一次詞——“ThreadLocal”。 ​ 確實如此,ThreadLocal 原本設計是爲了解決併發時,線程共享變量的問題,但由於過度設計,如弱引用和哈希碰

原创 額!Java中用戶線程和守護線程區別這麼大?

在 Java 語言中線程分爲兩類:用戶線程和守護線程,而二者之間的區別卻鮮有人知,所以本文磊哥帶你來看二者之間的區別,以及守護線程需要注意的一些事項。 1.默認用戶線程 Java 語言中無論是線程還是線程池,默認都是用戶線程,因此用戶線程也

原创 線程的故事:我的3位母親成就了優秀的我!

[電影聲明圖片] 聲明:本故事純屬虛構,如果雷同那就是真事了! 大家好,我是線程,我的英文名叫 Thread,別看我現在風光無限,好像人盡皆知的樣子,然而我的身世卻悲慘離奇。 我出身在一個小山村,那是一個與世隔絕的世外桃源,然而年紀輕輕

原创 Semaphore自白:限流器用我就對了!

大家好,我是 Semaphore,我的中文名字叫“信號量”,我來自 JUC(java.util.concurrent)家族。 我們家族有很多優秀的成員,比如:CountDownLatch(等待其他線程都執行完再執行某線程),CyclicBa

原创 CyclicBarrier:人齊了,老司機就可以發車了!

上一篇咱講了 CountDownLatch 可以解決多個線程同步的問題,相比於 join 來說它的應用範圍更廣,不僅可以應用在線程上,還可以應用在線程池上。然而 CountDownLatch 卻是一次性的計數器,以王者農藥來說,咱們不可能一

原创 CountDownLatch:別浪,等人齊再團!

一入王者深似海,從此對象是路人。 哈嘍觀衆老爺們你們好,在下戰神呂布字奉先,今天給大家來一部呂布的教學視頻! 咳咳,不對。大家好,我是磊哥,今天給大家來一篇 CountDownLatch 的文章。 在開始之前,先問大家一個非常專業的技術性問

原创 阿里巴巴Druid,輕鬆實現MySQL數據庫連接加密!

爲什麼要加密? 現在的開發習慣,無論是公司的項目還是個人的項目,都會選擇將源碼上傳到 Git 服務器(GitHub、Gitee 或是自建服務器),但只要將源碼提交到公網服務器就會存在源碼泄漏的風險,而數據庫配置信息作爲源碼的一部分,一旦出現

原创 最新版Swagger 3升級指南和新功能體驗!

Swagger 3.0 發佈已經有一段時間了,它於 2020.7 月 發佈,但目前市面上使用的主流版本還是 Swagger 2.X 版本和少量的 1.X 版本,然而作爲一名合格的程序員怎麼能不折騰新技術呢?所以本期就大家帶來一篇最新版 Sw