原创 簡單介紹七種單例模式

文章目錄前言餓漢式懶漢式懶漢式 + 同步方法Double-CheckHolder方式枚舉方式枚舉-Holder總結 前言 單例模式相對來說,設計比較簡單,但是實現方式多種多樣,我們需要從線程安全、高性能、懶加載方面進行評估。 餓

原创 ThreadLocal父子線程傳遞的坑

文章目錄前言InheritableThreadLocaltransmittable-thread-local總結 前言 如果子線程想要拿到父線程的中的ThreadLocal值怎麼辦呢?看下下面代碼 public class T

原创 簡析線程上下文ThreadLocal

文章目錄前言ThreadLocal 簡單介紹ThreadLocal常用方法介紹initialValuesetget看看ThreadLocalMap看個例子 前言 在有些時候,單個線程執行任務非常多的時候,後一個步輸入是前一個步驟

原创 又被問到代碼執行順序?來看看init和clinit吧

前言 之前面試的時候經常會被問到,代碼的執行順序,偶爾一次蒙對了,還會繼續被懟能解釋下爲什麼麼? 下面就看看這到底怎麼解 init和clinit區別 init是對象構造器方法,也就是說在程序執行 new 一個對象調用該對象類

原创 可以自定義java.lang.String麼?

前言 記一次阿里面試的時候的一道面試題,被問到可以自定義java.lang.String這個類,讓你自定義的類加載器進行加載麼? 分析ClassLoader 跟着這個loadClass一路追蹤,首先找到了defineClass

原创 類的命名空間

文章目錄前言不同類加載器加載同一個class相同類加載器加載同一個class類的卸載 前言 每一個類加載器都有各自的命名空間,命名空間是由該加載器及其所有父加載器所構成的,因此在每個類加載器中同一個class都是獨一無二的。 p

原创 破環雙親委託機制

文章目錄前言具體實現測試代碼 前言 在之前我們給出的方案都是繞過應用加載器的方式,並沒有避免一層一層的委託,那麼有沒有什麼辦法可以繞過這種雙親委託模型呢? 很慶幸,JDK提供的雙親委託機制並非是一個強制的模型,程序員可以對其進行

原创 線程池原理及自定義線程池

文章目錄線程池原理線程池接口定義ThreadPoolRunnableQueueThreadPoolFactoryDenyPolicyInternalTask線程池自定義詳細實現LinkedRunnableQueue初始化任務線程

原创 guava 如何快速切換到 caffeine

前言 首先看一個spring官方的issue,https://github.com/spring-projects/spring-framework/issues/18370 Caffeine intends to super

原创 SpringCloud 遠程調用日誌記錄traceId和spanId

最近在項目開發中遇到了一些問題,項目爲多機部署,大量日誌輸出導致很難篩出指定請求的全部相關日誌,以及下游服務調用對應的日誌。因此計劃對項目日誌打印進行一些小改造,使用一個traceId跟蹤請求的全部路徑,前提是不修改原有的打印方

原创 自定義實現spring cache 整合 guava 、 redis 兩級緩存

文章目錄前言spring cache 常用註解整合兩級緩存(guava、redis)演示總結參考 前言 緩存在開發中是一個必不可少的優化點,近期在公司的項目重構中,關於緩存優化了很多點,比如在加載一些數據比較多的場景中,會大量

原创 分佈式配置Apollo快速入門

文章目錄Apollo簡介Apollo快速入門安裝Apollo運行時環境下載配置創建數據庫啓動Apollospringboot整合引入pom文件java熱更新創建apollo項目 Apollo簡介 Apollo(阿波羅)是攜程框架

原创 Sharding-Jdbc水平分庫及公共表

文章目錄前言創建數據庫分片規則配置數據操作測試公共表創建數據庫數據操作字典操作測試 前言 垂直分庫是指按照業務將表進行分類,分佈到不同的數據庫上面,每個庫可以放在不同的服務器 上,它的核心理念是專庫專用。接下來看一下如何使用Sh

原创 mac初始化 shell 腳本

#!/bin/bash if test ! $(which brew); then echo "Homebrew is required but not installed, Installing now..." rub

原创 apollo集羣部署策略

文章目錄生產環境部署企業部署方案創建數據庫配置啓動參數修改Eureka地址調整ApolloPortal服務配置啓動ApolloPortal修改啓動配置 龜兔賽跑,就算你跑的慢,也能到終點。 生產環境部署 當一個項目要上線部署到生