原创 Spring基礎框架三:深入理解SpringMVC

Spring MVC框架簡介 Spring MVC屬於SpringFrameWork的後續產品,Spring MVC框架提供了構建web應用程序的全功能MVC模塊,是一種輕量級Web框架。使用了MVC架構模式的思想,通過把Model,Vi

原创 高併發架構系列:RPC通信機制你瞭解嗎

前言 在分佈式系統中,因爲每個服務的邊界都很小,很有可能調用別的服務提供的方法。這就出現了服務A調用服務B中方法的需求,即遠程過程調用。 要想讓服務A調用服務B中的方法,最先想到的就是通過HTTP請求實現。是的,這是很常見的,例如服務B暴

原创 翻車現場一:由synchronized的使用場景引發 static和this關鍵字你真的瞭解嗎

前言 我們在開發的時候往往會忽略java知識的一些細節使用,但是這些細節點往往是面試的時候比較關注的,下面總結下面試過程中容易翻車的一些細節點,供大家參考。 synchronized的使用場景可以歸結爲3種: ① 修飾靜態方法,給當前類對

原创 全面解析IO流一:Java IO流詳解

數據流的基本概念 幾乎所有的程序都離不開信息的輸入和輸出,比如從鍵盤讀取數據,從文件中獲取或者向文件中存入數據,在顯示器上顯示數據。這些情況下都會涉及有關輸入/輸出的處理。 在Java中,把這些不同類型的輸入、輸出源抽象爲流(Stream

原创 Redis全面解析三:redis分佈式鎖的實現原理你瞭解嗎

前言 分佈式概念提出之前,項目結構基本都是通過單機部署,針對多線程併發問題,java爲我們已經提供了各種鎖來解決問題。隨着用戶量的提升單體服務已經不能滿足高併發場景的需求,於是興起了分佈式系統以及微服務的理念。由此引出分佈式鎖的概念,在多

原创 Redis全面解析二:redis高可用高併發集羣方案

前言 Redis 緩存作爲使用最多的緩存工具被各大廠商爭相使用。通常我們會使用單體的 Redis 應用作爲緩存服務,然而我們日常在對於redis的使用中,經常會遇到一些問題: 高可用問題,如何保證redis的持續高可用性。 容量問題,單實

原创 Redis Cluster爲什麼有16384個槽?

前言 Redis 集羣並沒有使用一致性hash,而是引入了哈希槽的概念。Redis 集羣有16384個哈希槽,每個key通過CRC16校驗後對16384取模來決定放置哪個槽,集羣的每個節點負責一部分hash槽。但爲什麼哈希槽的數量是163

原创 Redis全面解析零:redis從入門到精通

前言 Redis 也是中高級後端工程師技術面試中,面試官最喜歡問的問題之一。特別是那些優秀的、競爭激烈的大型互聯網公司,通常要求面試者不僅僅掌握 Redis 基礎使用,更要求深層理解 Redis 內部實現的細節原理。毫不誇張地說,能把 R

原创 Redis全面解析一:redis是單線程結構爲何還可以支持高併發

前言 redis設計成單線程結構考慮: 從redis的性能上進行考慮,單線程避免了上下文頻繁切換問題,效率高; 從redis的內部結構設計原理進行考慮,redis是基於Reactor模式開發了自己的網絡事件處理器: 這個處理器被稱爲文件事

原创 Java設計模式三:深入理解工廠模式

前言 工廠顧名思義就是創建產品,根據產品是具體產品還是具體工廠可分爲簡單工廠模式和工廠方法模式,根據工廠的抽象程度可分爲工廠方法模式和抽象工廠模式。該模式用於封裝和管理對象的創建,是一種創建型模式。工廠模式屏蔽產品實現細節,需要什麼產品,

原创 Java設計模式四:深入理解模板模式(Template Pattern)

前言 在模板模式(Template Pattern)中,一個抽象類公開定義了執行它的方法的模板。它的子類可以按需要重寫方法實現,但調用將以抽象類中定義的方式進行。這種類型的設計模式屬於行爲型模式。 模板設計模式在書中定義:   定義一個操

原创 Java設計模式六:深入理解適配器模式(Adapter Pattern)

前言 適配器模式(Adapter Pattern)是作爲兩個不兼容的接口之間的橋樑。這種類型的設計模式屬於結構型模式,它結合了兩個獨立接口的功能。 這種模式涉及到一個單一的類,該類負責加入獨立的或不兼容的接口功能。舉個真實的例子,讀卡器是

原创 Java設計模式二:深入理解單例模式

前言 單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。 這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。 這種模式涉及到一個單一的類,該類負責創建自己的對象,同時確保只有單個對象被創建

原创 Java併發基礎九:併發協作(生產者消費者模型)

對於多線程程序來說,不管任何編程語言,生產者和消費者模型都是最經典的。就像學習每一門編程語言一樣,Hello World!都是最經典的例子。 實際上,準確說應該是“生產者-消費者-倉儲”模型,離開了倉儲,生產者消費者模型就顯得沒有說服力了

原创 Java設計模式一:一文看懂設計模式

前言 在學習Spring框架時候,Spring源碼內部使用了很多設計模式。Spring架構使用了哪些設計模式呢?帶着這些疑問,瞭解下Java常見設計模式是有必要的。 什麼是設計模式 設計模式(Design Pattern)是一套被反覆實踐