原创 java執行反射代碼導致頻繁創建奇怪的類從而發生元數據區被佔滿FUllGc案例

查看 JVM GC 日誌 沒有一絲耽擱,老王立刻調出了線上GC日誌,在日誌裏,看到了一個“Metadata GC Threshold”的字樣,類似於如下日誌: 【Full GC(Metadata GC Threshold)xx

原创 如果項目今後需要擴展,那麼可以考慮不要使用lombok

我承認,Lombok是一個很不錯的Java庫,它可以讓你在少寫代碼的同時耍耍酷,簡單的幾個註解,就可以幹掉一大片模板代碼。 但是,所有的源代碼很多時候是用來閱讀的,只有很少的時間是用來執行的(你可以細品這句話)。 一年以前,我和大

原创 高併發下,你都怎麼選擇最優的線程數

爲了加快程序處理速度,我們會將問題分解成若干個併發執行的任務。並且創建線程池,將任務委派給線程池中的線程,以便使它們可以併發地執行。在高併發的情況下采用線程池,可以有效降低線程創建釋放的時間花銷及資源開銷,如不使用線程池,有可能造

原创 一起來踩踩 Spring 中這個循環依賴的坑

什麼是依賴 其實,不分場景地、籠統地說A依賴B其實是不夠準確、至少是不夠細緻的。我們可以簡單定義一下什麼是依賴。 所謂A依賴B,可以理解爲A中某些功能的實現是需要調用B中的其他功能配合實現的。這裏也可以拆分爲兩層含義: A強依賴B

原创 虛擬機擴容磁盤創建分區

雖然已經擴大了磁盤,但是由於還沒有經過分區,指定文件系統,所以linux操作系統無法識別(其實就相當於你的硬盤雖然大了,但是你並沒有對其進行分區是一個道理)。下面我們進行分區處理。 分區: fdisk命令: fdisk -l

原创 《Spring 設計思想》AOP 設計思想與原理

Spring 提供了AOP(Aspect Oriented Programming) 的支持, 那麼,什麼是AOP呢?本文將通過一個另外一個角度來詮釋AOP的概念,幫助你更好地理解和使用Spring AOP。 1. Java程序運

原创 賊好用的 Java 工具類庫 HuTool

賊好用的 Java 工具類庫,GitHub 星標 10k+,你在用嗎? HuTool

原创 怎麼分析hs_err_pid2416.log相關的文件

jvm crash 後生成的 hs_err_pid.log 文件非常的複雜,非常的難懂!那麼有沒有一款工具能幫助我們來分析它呢?且看本文給你推薦的這款工具 CrashAnalysis 的用法。 這款工具的 github 地址 使用

原创 TCP/IP四層網絡模型和OSI七層網絡模型

首先要說一下,四層模型和七層模型,我們往往是可以一塊兒來聊的。 1、首先我問要明白,爲啥要有協議 設想一下,各個電腦廠商,比如IBM、蘋果啥的,都弄自己的協議,結果就蘋果電腦和蘋果電腦自己可以通信,和IBM電腦就不可以通信,這不是

原创 Java 8 Steam API map和flatMap方法使用詳解

java 8 stream api 中有兩個方法map和flatMap非常實用,應用場景也非常廣泛,能極大提升編程效率。下面我們詳細介紹一下這兩個方法的用法。 map方法 我們來看個示例:把一個整數列表轉換成字符串列表,java

原创 HashMap 這一篇就夠了

二狗:先來點簡單的,介紹下 HashMap 的底層數據結構吧。 囧輝:我們現在用的都是 JDK 1.8,底層是由“數組+鏈表+紅黑樹”組成,如下圖,而在 JDK 1.8 之前是由“數組+鏈表”組成。 二狗:爲什麼要改成“數組+鏈

原创 聊聊Spring Boot服務監控,健康檢查,線程信息,JVM堆信息,指標收集,運行情況監控等!

前言 去年我們項目做了微服務1.0的架構轉型,但是服務監控這塊卻沒有跟上。這不,最近我就被分配了要將我們核心的微服務應用全部監控起來的任務。我們的微服務應用都是SpringBoot 應用,因此就自然而然的想到了藉助Spring B

原创 Nginx配置請求轉發到spring-boot-admin

我的spring-boot-admin的實際地址是47.56.190.83:8888,由於47.56.190.83的8888端口沒有放開,所有想使用nginx的8080端口轉發請求,由於通過這種方式相關的Spring-Boot-A

原创 kill -9的原理都不知道就敢到線上執行?明天不用來了!

相信很多程序員對於Linux系統都不陌生,即使自己的日常開發機器不是Linux,那麼線上服務器也大部分都是的,所以,掌握常用的Linux命令也是程序員必備的技能。 但是,怕就怕很多人對於部分命令只是一知半解,使用不當就能導致線上故

原创 我用的最多的三種模式

策略模式 關於策略模式的使用方式,在Spring中其實比較簡單,從本質上講,策略模式就是一個接口下有多個實現類,而每種實現類會處理某一種情況。 我們以發獎勵爲例進行講解,比如我們在抽獎系統中,有多種獎勵方式可供選擇,比如積分,虛擬