原创 【JVM】靈性一問——爲什麼用元空間替換永久代?

前言 首先需要明確的是,以下我們討論的HotSpot虛擬機,其他類型的虛擬機,例如JRockit與J9等,壓根就沒有永久代的概念。因此,下面所說的“虛擬機”都是HotSpot版本的。 要想理解這種變化的原因,需要先理解方法區、永久代與元空

原创 將職業和興趣結合起來,於是“胖了麼”誕生了!

寫在前面的話 博客斷斷續續寫了2年多,畢業也快一年了。從一開始的幾個粉絲到現在的6千多粉絲,真的是讓我受寵若驚,接下來我會努力提升博客的質量,儘量輸出更加優質的內容,有不足的地方還需大家批評指正。 第一次租房 畢業的一年裏,發現自己真的是

原创 【JAVA】Spring事務的傳播行爲

前言 Spring爲我們提供了巨大的便利,其中的事務增強特性,使得程序出錯時,不需要我們進行手動回滾。Spring在Propagation定義了7種事務的傳播行爲: public enum Propagation { REQUIRE

原创 【JVM】說說java中的堆區

堆(Heap)是被虛擬機所管理的最大的一塊內存區域,在堆中,會有以下一些對象: 朝生夕死的小對象,蜉蝣一般 大對象,例如長數組,需要大量連續的內存空間 長週期對象,存活很久,很能熬 因此,目前主流的JVM,利用可達性分析算法分析對象是否死

原创 【多線程】Synchronized的優化

對synchronized不太瞭解的同學,可以先參考我的另外一篇文章【多線程】淺說Synchronized 早期版本synchronized性能較低的原因 在早期版本中,synchronized是一種重量級鎖,其底層由Monitor實現,

原创 【多線程】淺說Synchronized

一、前言 synchronized關鍵字用來保證在同一時刻只有一個線程可以執行被它修飾的變量或者代碼塊。 這一篇中,只涉及synchronized的底層實現原理,不涉及對synchronized效率以及如何優化的討論。 二、使用方式 (1

原创 【JAVA】優化if else的幾種方式

在代碼編寫初期,我們寫出來的代碼,脈絡清晰,結構簡單。可隨着bug或者新需求的出現,狀態變得越來越多,只能不停地加else來區分,久而久之,判斷的次數越來越多,嵌套的層數也越來越深,變得難以維護。 當我們狠下心來決定改造時,有哪些方法能

原创 【JAVA】談談Arrays.asList()

我們在日常的開發中,常常使用到Arrays.asList()這個方法,它能夠很輕易地將一個數組轉化爲一個List。 例如: Integer[] a = new Integer[]{1, 2, 3}; Li

原创 【JAVA】條件 a == (Integer) 1 && a == (Integer) 2有可能爲true嗎?

  一、廢話 先看看這個代碼 int a = 1; if (a == (Integer) 1 && a == (Integer) 2) { System.o

原创 【K8S】Service再瞭解

關於Service的概念及其實例,可以參考這篇文章【K8S】Service概念及其實例 一句話概括Service的作用,Service負責將客戶端的請求轉發到具有特定標籤的Pod上。 但是Service和Pod並不是直接相連的,Pod的i

原创 【SpringBoot】使用不同的策略動態地調用某個接口的實現類

1、前言 經常遇到這樣的一個需求,前端傳的實體類型相同,後端需要根據實體類中的某一個字符串,動態地調用某一個類的方法。 在SpringBoot中,我們可以理解成,一個Controller接口對應多個ServiceImpl,使用這種方式,如

原创 面試官如何考察你的思維方式?

1.兩種思維方式 在求職面試中,經常會考察這種問題: 北京有多少量特斯拉汽車?  某衚衕口的煎餅攤一年能賣出多少個煎餅?  深圳有多少個產品經理?  一輛公交車裏能裝下多少個乒乓球?  一個正常成年人有多少根頭髮? 這類估算問題,被稱爲費

原创 【K8S】DaemonSet和StatefulSet

DaemonSet 的使用 通過該控制器的名稱我們可以看出它的用法:Daemon,就是用來部署守護進程的,DaemonSet用於在每個Kubernetes節點中將守護進程的副本作爲後臺進程運行,說白了就是在每個節點部署一個Pod副本,當節

原创 【K8S】健康檢查初探

健康檢查的意義 爲了保證集羣的穩定性,需要及時的對故障服務進行處理。無論是通過下線的方式,不再將請求轉發到該服務,還是通過重啓的方式,使服務得以自動恢復,都是有效的處理方式。 健康檢查的策略 而如何檢測出服務是否有故障,k8s提供了以下的

原创 記錄一次Tomcat啓動緩慢的解決方案

之前寫完一個項目,像平常一樣mvn clean install 打成war包,接着放入Tomcat的webapps目錄下,最後啓動bin目錄的startup.sh,最多10幾秒後,訪問首頁,一切正常。 最近有幾次,同樣的war包,啓動To