原创 別再使用 POI 框架啦!(記一次生產應用頻繁出現 OOM 事故的排查過程)

轉載請註明原創出處,謝謝! HappyFeet的博客 真的不要再用 POI 了!!! 1、簡要回顧 前段時間生產環境上的應用頻繁 Crash。經過一番努力排查,我發現在使用 POI 框架讀取 Excel 數據的時候產生了大量

原创 老生常談:StringBuilder 和 StringBuffer 的那些事兒

轉載請註明原創出處,謝謝! HappyFeet的博客 作爲一個老生常談的話題,相信大家對於 StringBuilder 和 StringBuffer 一定不陌生,因爲它們經常出現在面試的題目當中。下面我們就來聊一聊關於 Str

原创 Java 多線程學習(1)一些容易被遺忘的基礎概念

轉載請註明原創出處,謝謝! HappyFeet的博客 有些知識很久不看很容易就會忘掉,尤其是一些概念性知識。好記性不如爛筆頭,不如記下來便於以後翻看。 1、併發和並行 併發:處理多個任務的能力,不一定要同時。 並行:同時處

原创 Java 多線程學習(7)聊聊 LockSupport.park() 和 LockSupport.unpark()

轉載請註明原創出處,謝謝! HappyFeet的博客 最近在忙着找工作、找房子,事兒也挺多的,加上又換了個城市,也就沒什麼心思寫博客了。如今工作已定,房子也租好了,是時候調整好自己的心態,開始寫博客了。 說實話,這段時間面了不

原创 裸辭後的一些感想

轉載請註明原創出處,謝謝! HappyFeet的博客 這段時間,經歷了許多,離職、面試,還有找房子,感受還是蠻多的。之前就計劃找個時間總結一下,只是被我一直拖着,不曾實施。這篇文章也算是落實了我的計劃吧,雖然時間往後延了許多。

原创 讀《 ScalaTest 》有感

轉載請註明原創出處,謝謝! HappyFeet的博客 距離上一次發博客差不多有一年了。2018 年 10 月 至 2019 年 8 月,這一段時間待在上海負責公司的一個項目,整個人就忙了起來,在堅持寫了兩個月之後就覺得沒那麼多

原创 深入理解 JVM(4)垃圾收集器與內存分配策略

轉載請註明原創出處,謝謝! HappyFeet的博客 相信大家在平時的編程中或多或少會遇到一些關於內存溢出以及內存泄漏的問題;那麼出現這些問題如何排查呢? Java 虛擬機一直在默默地爲 Java 程序員做着垃圾收集(GC)的

原创 深入理解 JVM(1)虛擬機類加載機制

轉載請註明原創出處,謝謝! HappyFeet的博客 虛擬機如何加載 Class 文件?Class 文件中的信息進入到虛擬機後會發生什麼變化?這些是本文要討論的內容。 1、什麼是虛擬機的類加載機制? 虛擬機把描述類的數據從

原创 深入理解 ArrayList、LinkedList、HashSet 等 Java 容器

轉載請註明原創出處,謝謝! HappyFeet的博客 Java 容器的繼承關係圖: 集合表示一組對象,稱爲其元素。有些集合允許重複元素,而另一些則不允許。有些是有序的,有些是無序的。 JDK 沒有提供這個接口的任何直接實現:

原创 集合工具類 Collections 的介紹

轉載請註明原創出處,謝謝! HappyFeet的博客 在平時寫代碼的過程中集合會經常被用到,類似於 Map、List、Set 等等,相應的,集合工具類也會被頻繁的使用,下面我們來瞅一瞅 java.util 包下的 Collec

原创 深入理解 Map,HashMap,LinkedHashMap,TreeMap 等

轉載請註明原創出處,謝謝! HappyFeet的博客 1、Map Map 是一個接口,代表的是 key-value 鍵值對,Map 中不能包含重複的 key,一個 key 最多對應一個值。有一些 Map 的實現允許 null

原创 深入理解 JVM(5)熟悉語法糖背後的真相

轉載請註明原創出處,謝謝! HappyFeet的博客 Java 語言中主要的語法糖有:泛型、自動裝箱、自動拆箱、遍歷循環、變長參數、條件編譯、內部類、和 try 語句中定義和關閉資源等。本文主要通過跟蹤 javac 源碼、反編

原创 深入理解 JVM(2)類文件結構

轉載請註明原創出處,謝謝! HappyFeet的博客 談到類文件結構,就要從 Java 虛擬機說起。 一、Java 虛擬機是一個與語言無關的平臺 實現語言無關性的基礎是虛擬機和字節碼存儲格式。 Java 虛擬機不與任何語言綁

原创 全新服務器搭建 Jenkins+Docker+Gradle+Nodejs 環境以實現自動化部署

轉載請註明原創出處,謝謝! HappyFeet的博客 在開發過程中,如果每次交付給測試時都需要手動的對代碼進行構建和部署,這無疑是一件較爲繁瑣的過程,如果能夠讓其一鍵完成,無疑可以節省人力勞動並降低時間開銷。這就是我們通常說的

原创 深入理解 JVM(3)運行時數據區域

轉載請註明原創出處,謝謝! HappyFeet的博客 Java 虛擬機在執行 Java 程序的過程中會把它所管理的內存劃分爲若干個不同的數據區域。這些區域都有各自的用途,以及創建和銷燬時間,有的區域隨着虛擬機進程的啓動而存在,