原创 Java併發-從同步容器到併發容器

引言 容器是Java基礎類庫中使用頻率最高的一部分,Java集合包中提供了大量的容器類來幫組我們簡化開發,我前面的文章中對Java集合包中的關鍵容器進行過一個系列的分析,但這些集合類都是非線程安全的,即在多線程的環境下,都需要其他額外的手段

原创 KClient——kafka消息中間件源碼解讀

kclient消息中間件從使用角度上開始入手學習 kclient-processor 該項目使用springboot調用kclient庫,程序目錄如下: domainCat : 定義了一個cat對象Dog : 定義了一個Dog對象handl

原创 Zookeeper 通知更新可靠嗎? 解讀源碼找答案!

導讀: 遇到Keepper通知更新無法收到的問題,思考節點變更通知的可靠性,通過閱讀源碼解析瞭解到zk Watch的註冊以及觸發的機制,本地調試運行模擬zk更新的不可靠的場景以及得出相應的解決方案。 過程很曲折,但問題的根本原因也水落石出了

原创 做JAVA開發的同學一定遇到過的爆表問題,看這裏解決

背景:Java線上服務運行一週後,某個週六晚上CPU使用率突然持續99%,Java進程處於假死狀態,不響應請求。秉着先恢復服務再排查問題的原則,在我連接×××採用重啓大法後,CPU使用率恢復正常,服務也正常響應了,如下圖一所示:(圖一)CP

原创 分佈式Dubbo快速入門

Dubbo入門Editor:SimpleWuDubbo是 阿里巴巴公司開源的一個高性能優秀的服務框架使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和 Spring框架無縫集成。 背景隨着互聯網的發展,網站應用的規模不斷擴大,

原创 微服務該如何設計緩存?

在高併發場景下,需要通過緩存來減少數據庫的壓力,使得大量的訪問進來能夠命中緩存,只有少量的需要到數據庫層。由於緩存基於內存,可支持的併發量遠遠大於基於硬盤的數據庫。所以對於高併發設計,緩存的設計是必不可少的一環。 一、爲什麼要使用緩存 爲什

原创 Dubbo和SpringCloud架構技術路線對比

微服務架構是互聯網很熱門的話題,是互聯網技術發展的必然結果。它提倡將單一應用程序劃分成一組小的服務,服務之間互相協調、互相配合,爲用戶提供最終價值。雖然微服務架構沒有公認的技術標準和規範或者草案,但業界已經有一些很有影響力的開源微服務架構框

原创 淺析Nginx 正向代理與反向代理

1、正向代理和反向代理的概念 無論是正向代理,還是反向代理,說到底,就是代理模式的衍生版本罷了。我們都學習過代理設計模式,都知道代理模式中有代理角色和被代理角色,爲什麼這麼說,因爲這兩個角色對於我們理解正向和反向代理非常重要,下面會講到。

原创 如何快速清理 Docker 無用資源

如果經常使用 docker,你會發現 docker 佔用的資源膨脹很快,其中最明顯也最容易被察覺的應該是對磁盤空間的佔用。本文將介紹如何快速的清理 docker 佔用的系統資源,具體點說就是刪除那些無用的 鏡像、容器、網絡和數據卷。 查看

原创 JVM自定義類加載器加載指定classPath下的所有class及jar

一、JVM中的類加載器類型  從Java虛擬機的角度講,只有兩種不同的類加載器:啓動類加載器和其他類加載器。  1.啓動類加載器(Boostrap ClassLoader):這個是由c++實現的,主要負責JAVA_HOME/lib目錄下的核

原创 Java程序語言的後門-反射機制

在文章JAVA設計模式-動態代理(Proxy)示例及說明和JAVA設計模式-動態代理(Proxy)源碼分析都提到了反射這個概念。 // 通過反射機制,通知力宏做事情method.invoke(object, args);// 通過反射,將h

原创 JAVA設計模式-單例模式(Singleton)線程安全與效率

一,前言   單例模式詳細大家都已經非常熟悉了,在文章單例模式的八種寫法比較中,對單例模式的概念以及使用場景都做了很不錯的說明。請在閱讀本文之前,閱讀一下這篇文章,因爲本文就是按照這篇文章中的八種單例模式進行探索的。   本文的目的是:結合

原创 Java SpringBoot集成RabbitMq實戰和總結

目錄 交換器、隊列、綁定的聲明關於消息序列化同一個隊列多消費類型註解將消息和消息頭注入消費者方法關於消費者確認關於發送者確認模式消費消息、死信隊列和RetryTemplateRPC模式的消息(不常用)關於消費模型關於RabbitMq客戶端的

原创 Java Bean與Map之間相互轉化的實現

目錄樹概述Apache BeanUtils將Bean轉MapApache BeanUtils將Map轉Bean理解BeanUtils將Bean轉Map的實現之手寫Bean轉Map 概述  Apache的BeanUtils Bean工具類很強

原创 PreparedStatement是如何防止SQL注入的?

爲什麼在Java中PreparedStatement能夠有效防止SQL注入?這可能是每個Java程序員思考過的問題。 首先我們來看下直觀的現象(注:需要提前打開mysql的SQL文日誌) 不使用PreparedStatement的set方