原创 OpenJDK 11 JVM日誌相關參數解析與使用

OpenJDK 11是在OpenJDK 8之後的第一個長期支持版本,這一版本在JVM日誌配置有了很大改動,主要是規範化,統一化了。在OpenJDK 8中,日誌配置有很多狀態位,讓人摸不着頭腦,並且比較難以維護與進一步迭代。在Ope

原创 spring feign http客戶端連接池配置以及spring zuul http客戶端連接池配置解析

背景 一般在生產項目中, Feign會使用HTTP連接池而不是默認的Java原生HTTP單路由單長連接;而是使用連接池。Zuul直接使用Ribbon的Http連接池;Feign和網關Zuul的RPC調用,實際上都是HTTP請求。H

原创 Ribbon對於SocketTimeOutException重試的坑以及重試代碼解析

背景 本文基於Spring-Cloud, Daltson SR4 微服務一般多實例部署,在發佈的時候,我們要做到無感知發佈;微服務調用總會通過Ribbon,同時裏面會實現一些重試的機制,相關配置是: #最多重試多少臺服務器 rib

原创 Tomcat容器下Zuul網關加解密後的第一次請求出現400錯誤的問題

問題現象 某些前端發來的請求會在前端加密發送到網關,並在網關解密之後發到真正的微服務,並將結果加密返回給前端。 實現網關加密後,發現一次加密請求後,緊接着的非加密GET請求,就會出現400的錯誤。再發一次相同的GET請求,就會正

原创 Java中對於位運算的優化以及運用與思考

引言 隨着JDK的發展以及JIT的不斷優化,我們很多時候都可以寫讀起來易讀但是看上去性能不高的代碼了,編譯器會幫我們優化代碼。之前大學裏面學單片機的時候,由於內存以及處理器性能都極其有限(可能很多時候考慮內存的限制優先於處理器),

原创 JEP解讀與嚐鮮系列1 - Java Valhalla與Java Inline class

涉及到的JEP: Project Valhalla JEP 169: Value Objects JEP 218: Generics over Primitive Types 這些特性將在JDK14實現 Valhalla項

原创 從JDK8升級到JDK11,看這篇就足夠了

原文地址:https://blog.codefx.org/java/java-11-migration-guide/。 在原文的基礎上,增加了一些我遇到的具體的坑還有在特定場景下的解決方案,供大家參考 一些背景 在背景知識,我

原创 OpenJDK8升級到OpenJDK11需要注意的修改與異常

目前,JDK兩個長期版本是8和11,由於大部分項目使用的還是8,所以從8升級到11會遇到一些困難。 本篇文章會基於實踐遇到的問題,分類總結可能 1. Java模塊化 從Java 9開始,由於引入了JPMS(https://open

原创 JDK核心JAVA源碼解析(7)- 集合相關(1) - LinkedList

想寫這個系列很久了,對自己也是個總結與提高。原來在學JAVA時,那些JAVA入門書籍會告訴你一些規律還有法則,但是用的時候我們一般很難想起來,因爲我們用的少並且不知道爲什麼。知其所以然方能印象深刻並學以致用。 本篇文章針對JAVA

原创 Spring cloud實現FeignClient指定Zone調用

本文基於Spring Cloud Fincheley SR3 背景介紹 目前項目多個區域多個集羣,這些集羣共用同一個Eureka集羣。通過設置eureka.instance.metadata-map.zone設置不同實例所屬的

原创 分佈式緩存存儲算法與實踐思考

最近遇到一個問題,可能很多人也遇到過:由於業務量的增長,緩存節點個數不夠用了。現在的Redis-Cluster直接就加個節點就解決了,但是之前Redis-Cluster不穩定時,我們並不敢用這個,而是通過自己實現分佈式緩存Redis實

原创 大數據級新聞去重實現 - 1.在線實時方案

最近針對爬蟲爬下來的新聞進行去重。這個去重要考慮很多方面: 不同網站發佈的要點新聞,基本上是有通稿的,內容大同小異,基本一致,有些細節不同,需要去掉重複的,保留質量最好的。 去重對比的時間跨度是多大呢?可能剛開始我們會考慮搜索整個庫

原创 BookKeeper全解(1)-BookKeeper簡介和快速上手

什麼是BookKeeper BookKeeper是一個提供日誌條目流存儲持久化的服務框架。特別適合日誌流存儲,一個比較經典的應用是作爲消息隊列Pulsar的持久框架。 那麼BookKeeper是怎樣產生的呢? 這個靈感來源於Hadoo

原创 Redis系列-生產應用篇-分佈式鎖(5)-單進程Redis分佈式鎖的Java實現(Redisson使用與底層實現)-原子鎖類

Redisson單進程Redis分佈式樂觀鎖的使用與實現 本文基於Redisson 3.7.5 4. 原子鎖類 Redisson中實現了兩種原子鎖類:RAtomicLong和RAtomicDouble,還有RLongAdder和R

原创 JDK核心JAVA源碼解析(6) - 原子類AtomicLong與LongAdder對比

想寫這個系列很久了,對自己也是個總結與提高。原來在學JAVA時,那些JAVA入門書籍會告訴你一些規律還有法則,但是用的時候我們一般很難想起來,因爲我們用的少並且不知道爲什麼。知其所以然方能印象深刻並學以致用。 本篇文章針對JAVA中的