原创 純乾貨:內存溢出通過Jprofile排查思路以及實踐總結

嘀嘀嘀~ 新鮮出爐的線上bug已到賬,請注意查收!!!! 最近忙的頭都擡不起來,都沒有機會和bug好好說說話;這不線上的bug已經及時趕到,還是內存溢出的。 頭疼的一批,業務都還沒搞完,線上的調用第三方的服務慘遭毒手。 從服務的log日

原创 純乾貨:死循環線程居然不執行了?

最近弄了一個新的應用,專門用來收集一些應用數據作參考以及問題排查定位的,但是上線一段時間之後出現了一個非常非常詭異的問題。 問題描述 收集器採用異步化,啓用了一個獨立的線程專門收集各個服務發送過來的數據進行消費。剛開始上線的時候數據能夠按時

原创 瞭解Spring之BeanDefinition對象 BeanDefinition

BeanDefinition 首先我們需要了解BeanDefinition到底是個什麼東西? 瞭解Spring基於BeanDifination對象做了哪些實現? 基於Spring是如何使用Beandifination對象來操作的?基於My

原创 CountDownLatch CyclicBarrier 介紹 CountDownLatch CyclicBarrier Semaphore 二者比較

CountDownLatch 作用 讓一些阻塞等待的線程,被一定數量的線程完成後完成喚醒. 但需要注意的是CountDownLatch只能使用一次,相當於說一旦用完了,就不會再阻塞了 原理步驟: 計數器由構造函數初始化,並用它來初始化AQ

原创 SpringBoot+thymeleaf+x-admin後臺頁面佈局 坑爹了

最近在做針對框架的後臺管理系統,涉及到一些技術點做記錄。 項目框架 : SpringBoot、Thymeleaf 頁面框架:x-admin 佈局框架: thymeleaf-layout-dialect SpringBoot pom.xml

原创 手寫Netty版本的簡易tomcat以及實現部分SpringMVC功能 手寫Netty版本的簡易tomcat以及實現部分SpringMVC功能

手寫Netty版本的簡易tomcat以及實現部分SpringMVC功能 實現思路 首先加載配置文件。 將配置文件中的掃描包進行位置掃描 解析類結構 根據註解將URL以及實例信息進行關聯 構建一個Netty的服務端,負責阻塞接收客戶端

原创 CAS原子性操作 1.java中的原子性操作 Unsafe的compareAndSwapInt方法做了哪些操作? CAS缺點

概念 CAS(compare and swap),比較和交換,是原子操作的一種,可用於在多線程編程中實現不被打斷的數據交換操作,從而避免多線程同時改寫某一數據時由於執行順序不確定性以及中斷的不可預知性產生的數據不一致問題。 該操作通過將內

原创 手寫Netty版本的簡易tomcat以及實現部分SpringMVC功能

手寫Netty版本的簡易tomcat以及實現部分SpringMVC功能 實現思路 首先加載配置文件。 將配置文件中的掃描包進行位置掃描 解析類結構 根據註解將URL以及實例信息進行關聯 構建一個Netty的服務端,負責阻塞接收客戶端

原创 CountDownLatch CyclicBarrier 介紹

CountDownLatch 作用 讓一些阻塞等待的線程,被一定數量的線程完成後完成喚醒. 但需要注意的是CountDownLatch只能使用一次,相當於說一旦用完了,就不會再阻塞了 原理步驟: 計數器由構造函數初始化,並用它來初始化AQ

原创 CAS原子性操作

概念 CAS(compare and swap),比較和交換,是原子操作的一種,可用於在多線程編程中實現不被打斷的數據交換操作,從而避免多線程同時改寫某一數據時由於執行順序不確定性以及中斷的不可預知性產生的數據不一致問題。 該操作通過將內

原创 ReentrantLock源碼解讀

基礎鋪墊 node包裝的狀態: SIGNAL(-1) :線程的後繼線程正/已被阻塞,當該線程release或cancel時要重新這個後繼線程(unpark) CANCELLED(1):因爲超時或中斷,該線程已經被取消 CONDIT

原创 SpringBoot+thymeleaf+x-admin後臺頁面佈局

最近在做針對框架的後臺管理系統,涉及到一些技術點做記錄。 項目框架 : SpringBoot、Thymeleaf 頁面框架:x-admin 佈局框架: thymeleaf-layout-dialect SpringBoot pom.xml

原创 瞭解Spring之BeanDefinition對象

BeanDefinition 首先我們需要了解BeanDefinition到底是個什麼東西? 瞭解Spring基於BeanDifination對象做了哪些實現? 基於Spring是如何使用Beandifination對象來操作的?基於My

原创 CAT消息丟失問題排查Sorry, the message is not there. It could be missing or archived.

當點擊CAT的查看LogViews時出現Sorry, the message is not there. It could be missing or archived. 這時候出現這種問題會一頭霧水,去github上查看貌似也沒有給出

原创 Spring Aspect 調用過程

主要想了解一下Spring中如何通過切面去動態在方法前後切入多個切入點去實現的。 需要關注的幾個點: 切入點和通知是如何去註冊的?(後續補充) 代理過程中是如何植入這些攔截的? 佈置場景 log 日誌切入點實現類 /** * 日誌