線程池如何觀測?這個方案讓你對線程池的運行情況了如指掌!-編程思維

今天我們來聊一個比較實用的話題,動态可監控可觀測的線程池實踐。 這是個全新的開源項目,作者提供了一種非常好的思路解決了線程池的可觀測問題。 這個開源項目叫:DynamicTp 地址在文章末尾。 寫在前面 稍微有些Java編程經驗的小夥伴都知道,Java的精髓在juc包,這是大名鼎鼎的Doug Lea老爺子的傑作,評價一個程序員Java水平怎麼樣,一定程度上看他對juc包下的一些技術掌握的怎麼樣

java日志打印使用指南-編程思維

一、簡介 日志打印是java代碼開發中不可缺少的重要一步。 日志可以排查問題,可以搜集數據 二、常用日志框架 比較常用的日志框架就是logback, 一些老項目會使用log4j,他們用的都是slf4j-api統一接口。 (1) 使用log4j log4j使用: 1. slf4j-api-1.5.11.jar 2. slf4j-log4j12-1.5.11.jar 3. log4j-1.2.15

HashMap的實現原理(看這篇就夠了)-編程思維

一線資深java工程師明确了需要精通集合容器,尤其是今天我談到的HashMap。 HashMap在Java集合的重要性不亞于Volatile在并發編程的重要性(可見性與有序性)。 我會重點講解以下9點: 1.HashMap的數據結構 2.HashMap核心成員 3.HashMapd的Node數組 4.HashMap的數據存儲 5.HashMap的哈希函數 6.哈希沖突:鍊式哈希表 7.Has

一網打盡JVM垃圾回收知識體系-編程思維

垃圾回收的區域 堆:Java 中絕大多數的對象都存放在堆中,是垃圾回收的重點 方法區:此中的 GC 效率較低,不是重點 由于虛拟機棧的生命周期和線程一緻,因此不需要 GC 對象判活 在垃圾收集器對堆進行回收之前,首先要做的就是判斷對象是否還存活,哪些已經成為垃圾。判活算法主要有兩種: 引用計數法 可達性分析算法 前者基本沒有什麼應用,不過 Python 還在使用。JVM 使用的都是可達性分析算法

Solon 開發,五、切面與環繞攔截-編程思維

Solon 開發 一、注入或手動獲取配置 二、注入或手動獲取Bean 三、構建一個Bean的三種方式 四、Bean 掃描的三種方式 五、切面與環繞攔截 六、提取Bean的函數進行定制開發 七、自定義注解開發彙總 八、注入依賴與初始化 想要環繞攔截一個Bean的函數。需要三個前置條件: 通過注解做為切點,進行攔截(不能無緣無故給攔了吧?費性能) Bean 的 method 是被代理的(@Con

Solon 開發,七、自定義注解開發彙總-編程思維

Solon 開發 一、注入或手動獲取配置 二、注入或手動獲取Bean 三、構建一個Bean的三種方式 四、Bean 掃描的三種方式 五、切面與環繞攔截 六、提取Bean的函數進行定制開發 七、自定義注解開發彙總 八、注入依賴與初始化 1、定義構建能力注解,比如@Controller //注冊 @Controller 構建器 Aop.context().beanBuilderAdd(Contr

Solon 開發,六、提取Bean的函數進行定制開發-編程思維

Solon 開發 一、注入或手動獲取配置 二、注入或手動獲取Bean 三、構建一個Bean的三種方式 四、Bean 掃描的三種方式 五、切面與環繞攔截 六、提取Bean的函數進行定制開發 七、自定義注解開發彙總 八、注入依賴與初始化 為什麼需要提取Bean的函數?絕不是閑得淡疼。比如:控制器的@Mapping;再比如:Xxl-Job的@XxlJob。這些都是要提取Bean的函數并定制加工的。

Solon 開發,八、注入依賴與初始化-編程思維

Solon 開發 一、注入或手動獲取配置 二、注入或手動獲取Bean 三、構建一個Bean的三種方式 四、Bean 掃描的三種方式 五、切面與環繞攔截 六、提取Bean的函數進行定制開發 七、自定義注解開發彙總 八、注入依賴與初始化 Solon 強調 有克制的注入 + 手動控制 結合的模式。好處是,代碼用料少、啟動快。 Bean 的關鍵生命節點: 節點 說明 1. Constructor(構

Solon 開發進階,一、插件擴展機制-編程思維

Solon 開發進階 一、插件擴展機制 二、體外擴展機制 三、常用配置說明 四、啟動參數說明 五、全局異常訂閱 像 @Tran、@Cache 之類的注解開發成果,都會希望能在所有項目中複用。Solon Plugin 是一種解耦的插件擴展機制,簡單、彈性、自由。類似 Spring Factories、Java Spi。 Solon Plugin 機制的核心作用是:獲得了應用啟動入口,從而可以

Solon 開發進階,二、體外擴展機制-編程思維

Solon 開發進階 一、插件擴展機制 二、體外擴展機制 三、常用配置說明 四、啟動參數說明 五、全局異常訂閱 Solon 的一個特色:體外擴展機制,用于解決 fatjar 模式部署時的擴展需求。比如: 把數據源配置文件放到體外,根據環境去調整 把一些模塊做成擴展包放到體外 開發管理後台時,可以每個頻道做成一個擴展包 其中, .properties 或 .yml 文件都會做為擴展配置加載,

Solon 開發進階,三、常用配置說明-編程思維

Solon 開發進階 一、插件擴展機制 二、體外擴展機制 三、常用配置說明 四、啟動參數說明 五、全局異常訂閱 應用主配置文件為: resources/app.yml( 或 app.properties ) 1、服務端基本屬性 #服務端口(默認為8080) server.port: 8080 #服務的 http 信号端口(默認為 ${server.port}) server.http.

Solon 開發進階,五、全局異常訂閱-編程思維

Solon 開發進階 一、插件擴展機制 二、體外擴展機制 三、常用配置說明 四、啟動參數說明 五、全局異常訂閱 所謂“全局異常”,是指通過事件總線發布的異常。目前框架會把未吃掉的異常發布到事件總線。比如:啟動時産生的異常,或者計劃任務未處理的異常,或請求中未處理的異常。 事件總線默認會用 "err.printStackTrace()" 自動打印。如果希望 禁掉 自動打印: Solon.sta

Solon 開發進階,四、啟動參數說明-編程思維

Solon 開發進階 一、插件擴展機制 二、體外擴展機制 三、常用配置說明 四、啟動參數說明 五、全局異常訂閱 啟動參數,在應用啟動後會被靜态化(為了内部更高效的利用)。比如,想通過體外擴展加載配置,是不能改掉它們的。 1、啟動參數 啟動參數 對應的應用配置 描述 -env solon.env 環境 -debug solon.debug 調試模式 -setup solon.setup 安裝模

IntelliJ IDEA maven 引用本地 jar 文件-編程思維

IntelliJ IDEA maven 引用本地 jar 文件   背景說明 由于某些特定原因,不能在遠程maven倉庫中下載所需要版本的jar文件,需要在maven中引用本地jar文件。   解決方案 1、創建 libs 目錄 為了方便jar包管理,可以在工程目錄下,創建一個與src目錄平級的libs目錄。如下:   2、工程模塊引入依賴 1)File --> Project Stru

你的Kubernetes Java應用優雅停機了嗎?-編程思維

假如我們從 kafka 拉取數據然後生成任務處理數據,在服務退出時,如何保證内存中的數據能被正常處理完不丢失呢?假如服務是部署在 Kubernetes 中又該如何處理? Java 應用優雅停機 我們首先考慮下,一般在什麼場景下數據會丢失呢? 升級服務時 pod重啟時 服務器斷電時 因為服務器斷電屬于極端情況,我們暫且不考慮。那就隻有 Java 退出時我們要保證數據的完整性了。在 Java 中,

MySQL的中的全局鎖、表級鎖、行鎖-編程思維

MySQL的中的全局鎖、表級鎖、行鎖 學習極客時間-林曉彬老師-MySQL實戰45講 學習整理 🔒全局鎖 對整個數據庫實例加鎖。通過使用Flush tables with read lock (FTWRL)方法,讓整個數據庫處于隻讀的狀态,此後的數據庫的更新語句(增删改)、數據定義語句(建表、修改表結構)和更新類事務的提交語句會被阻塞 鎖定整個數據庫,那麼全局鎖的一個明顯的使用場景就是做全庫

Java 枚舉-編程思維

  2021年10月11日,最近有點忙...說好要好好學習😥 每天10點學習兩小時的我又:咕咕了🕊... 本人學習主要來源于尚矽谷個人源碼地址 借鑒文章 Java 枚舉 枚舉 enum 什麼是枚舉類: Java 枚舉是一個特殊的類,一般表示一組常量 比如: 一年的 4 個季節,一個年的 12 個月份,一個星期的 7 天,方向有東南西北等... 類似這種當一個變量有幾種固定可能的取值時

Python 正則表達式實戰之Java日志解析-編程思維

需求描述 基于生産監控告警需求,需要對Java日志進行解析,提取相關信息,作為告警通知消息的内容部分。 提取思路 具體怎麼提取,提取哪些内容呢?這裡筆者分析了大量不同形态的生産日志,最後總結出4種形态,如下,制定出以下提取邏輯。 形态1 上圖中,款選部分即為要提取的主要内容,即異常發生時所在文件,代碼行,自定義異常相關描述,異常類型,異常描述,這裡提取的相關說明和異常描述将統一作為異常的詳細描

Java之中如何判斷CPU是大端(Big Endian)還是小端(Little Endian)-編程思維

Java之中如何判斷CPU是大端(Big Endian)還是小端(Little Endian) 雖然Java之中的内存分配都Java本身都已經處理好了,不存在Big Endian和Little Endian的區别。 jvm是安裝大端來處理的。 但是,在一些特殊的情況下,我們任然需要知道CPU到底是big endian或者little endian。Java裡面可以直接的調用java.nio.By