原创 JVM調優實戰:解決CMS concurrent-abortable-preclean LongGC的問題

1. 背景 1.1 多個業務線的應用出現LongGC告警 最近一段時間,經常收到CAT報出來的Long GC告警(配置爲大於3秒的爲Longgc)。 2. 分析前的一些JVM背景知識回顧 2.1 JVM堆內存劃分 新生代(

原创 Dubbo RPC MockServer設計與實現

1. MockServer需求 可界面配置RPC接口的請求和響應數據 調用方代碼只需很少的改動就能使用RPC Mock 可平滑的切換API版本 預發和生產環境忽略Mock 2. 設計目標 代碼極少侵入:調用方代碼只需很少的改

原创 Linux 如何保護重要進程不被OOM Killer幹掉

最近在預發環境上有一個重要的進程隔三差五就被OOM Killer幹掉(通過查看CentOS系統日誌/var/log/messages揪出來是OOM Killer乾的)。該機器上跑着各種進程,內存是有些喫緊。這當然可以通過加大機器內

原创 小技巧:如何使用Java API從Maven倉庫下載Maven Artifact

最近在開發中遇到需要從Maven倉庫下載Maven Artifact(GAV)的場景,遂有此篇小文。 目的 可以在應用程序中根據Maven座標(GroupID,ArtifactID,Version,即GAV)從maven倉庫中下載

原创 What is Aether

原文:《What is Aether》 你是否曾經想過把maven依賴解析機制集成到你的應用程序中,並最終嘗試嵌入Plexus和一整個Maven發行版?你是否曾經想過以多線程的方式使用Maven依賴解析機制,卻被其中有狀態的單例程

原创 Skywalking容量規劃

前言 Apache skywalking 是一個面向分佈式系統的APM(應用性能監控)工具。專門爲微服務,雲原生和基於容器的架構而設計。其底層是一個分佈式追蹤系統。 Skywalking項目地址 本次容量規劃基於壓測結果來進行估算

原创 小技巧:Linux實用命令之cut, sort, uniq

1. cut cut - remove sections from each line of files cut 可以對文件中的每一行進行裁剪。常用選項: -d : 指定分隔符 ,與-f一起使用 -f : 用-d將文本分隔成一段

原创 小技巧:利用HC fluent API 優雅地使用Apache HttpClient

Apache HttpClient功能強大,於http客戶端操作有非常豐富的語義的支持。但是要在高併發、大流量的生產環境中健壯地使用好Apache HttpClient,還是要考慮很多場景的,比如使用連接池,使用代理,重試策略等等,這

原创 ARTS 第一週

ARTS: Algorithm : 每週至少做一個 leetcode 的算法題 Review: 閱讀並點評至少一篇英文技術文章 Tip: 學習至少一個技術技巧、 Share: 分享一篇有觀點和思考的技術文章。 Algorith

原创 經過兩次調優,我解決了CMS concurrent-abortable-preclean LongGC的問題

1. 背景 1.1 多個業務線的應用出現LongGC告警 最近一段時間,經常收到CAT報出來的Long GC告警(配置爲大於3秒的爲Longgc)。 2. 分析前的一些JVM背景知識回顧 2.1 JVM堆內存劃分 新生代(Yo

原创 sonarqube+jenkins實現持續CodeReview

介紹篇 SonarQube 介紹 SonarQube 是 一個開源的代碼質量分析平臺,便於管理代碼的質量,可檢查出項目代碼的漏洞和潛在的邏輯問題。同時,它提供了豐富的插件,支持多種語言的檢測, 如 Java、Python、Groovy

原创 Git快速入門-常用命令之交響樂篇

Git快速入門系列文章 - Git快速入門-安裝配置篇 - Git快速入門-常用命令之獨奏篇 - Git快速入門-常用命令之交響樂篇 - Git快速入門-git stash 暫存變更,git reset 撤銷commit

原创 Git快速入門-常用命令之獨奏篇

Git快速入門系列文章 - Git快速入門-安裝配置篇 - Git快速入門-常用命令之獨奏篇 - Git快速入門-常用命令之交響樂篇 - Git快速入門-git stash 暫存變更,git reset 撤銷commit

原创 單元測試系列三-基於Springboot+Junit+Mockito做單元測試

前言 前面的兩篇文章討論過《爲什麼要寫單元測試,何時寫,寫多細》和《單元測試規範》,這篇文章介紹如何使用Springboot+Junit+Mockito做單元測試,案例選取撮合交易的一個類來做單元測試。 單元測試前先理解需求 要寫出好的單

原创 緩存刷新術之保證數據一致性

1. 概述 在上一篇文章《緩存讀取術之防止緩存雪崩》裏我們解決了引入緩存後讀數據的問題,本文分析寫數據要考慮的問題。數據變更時是更新緩存還是淘汰緩存?是先寫DB再寫Cache,還是先寫Cache再寫DB?如何考量?另外,如果寫DB成功了但