tag 後端

標籤
貢獻529
645
05:25 PM · Oct 25 ,2025

@後端 / 博客 RSS 訂閱

程序員Seven - 【設計模式】使用中介者模式實現鬆耦合設計

概述 一般來説,同事類之間的關係是比較複雜的,多個同事類之間互相關聯時,他們之間的關係會呈現為複雜的網狀結構,這是一種過度耦合的架構,即不利於類的複用,也不穩定。例如在下左圖中,有六個同事類對象,假如對象1發生變化,那麼將會有4個對象受到影響。如果對象2發生變化,那麼將會有5個對象受到影響。也就是説,同事類之間直接關聯的設計是不好的。 如果引入中介者模式,那麼同事類之間的關係將變為星型結構,從下右

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - 【設計模式】遍歷集合的藝術:深入探索迭代器模式的無限可能

概述 定義:提供一個對象來順序訪問聚合對象中的一系列數據,而不暴露聚合對象的內部表示。 結構 迭代器模式主要包含以下角色: 抽象聚合(Aggregate)角色:定義存儲、添加、刪除聚合元素以及創建迭代器對象的接口。 具體聚合(ConcreteAggregate)角色:實現抽象聚合類,返回一個具體迭代器的實例。 抽象迭代器(Iterator)角色:定義訪問和遍歷聚合元素的接口,通常包含 ha

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - 【設計模式】通過訪問者模式實現分離算法與對象結構

概述 定義:封裝一些作用於某種數據結構中的各元素的操作(將數據結構於元素進行分離),它可以在不改變這個數據結構的前提下定義作用於這些元素的新的操作。 結構 訪問者模式包含以下主要角色: 抽象訪問者(Visitor)角色:定義了對每一個元素(Element)訪問的行為,它的參數就是可以訪問的元素,它的方法個數理論上來講與元素類個數(Element的實現類個數)是一樣的,從這點不難看出,訪問者模式

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - 【設計模式】備忘錄模式教你如何優雅地處理狀態快照

概述 備忘錄模式提供了一種狀態恢復的實現機制,使得用户可以方便地回到一個特定的歷史步驟,當新的狀態無效或者存在問題時,可以使用暫時存儲起來的備忘錄將狀態復原,很多軟件都提供了撤銷(Undo)操作,如 Word、記事本、Photoshop、IDEA等軟件在編輯時按 Ctrl+Z 組合鍵時能撤銷當前操作,使文檔恢復到之前的狀態;還有在瀏覽器中的後退鍵、數據庫事務管理中的回滾操作、玩遊戲時的中間結果存檔

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - 【設計模式】使用解釋器模式簡化複雜的語法規則

概述 如上圖,設計一個軟件用來進行加減計算。我們第一想法就是使用工具類,提供對應的加法和減法的工具方法。 //用於兩個整數相加 public static int add(int a,int b){ return a + b; } //用於兩個整數相加 public static int add(int a,int b,int c){ return a + b + c; }

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - SpringCloud帶你走進微服務的世界

認識微服務 隨着互聯網行業的發展,對服務的要求也越來越高,服務架構也從單體架構逐漸演變為現在流行的微服務架構。這些架構之間有怎樣的差別呢? 單體架構 單體架構:將業務的所有功能集中在一個項目中開發,打成一個包部署。 單體架構的優缺點如下: 優點: 架構簡單 部署成本低 缺點: 耦合度高(維護困難、升級困難) 分佈式架構 分佈式架構:根據業務功能對系統做拆分,每個業務功能模塊作為獨立

設計模式 , JAVA , 後端

收藏 評論

macrozheng - 換掉Typora!這款現代化的筆記應用,太炫酷了!

作為一名程序員,大家應該都關注了很多技術大佬,其中不乏文章格式看起來很舒服的。今天給大家分享一款好用的開源筆記應用WeChat Markdown Editor,能將Markdown寫的文檔即時渲染為微信文章,希望對大家有所幫助! 簡介 WeChat Markdown Editor(簡稱md)是一款高度簡潔的微信Markdown編輯器,能將Markdown文檔自動即時渲染為微信文章,目前在Gi

springcloud , springboot , JAVA , 後端

收藏 評論

江湖十年 - 在 Go 中如何使用分佈式鎖解決併發問題?

在分佈式系統中,協調多個服務實例之間的共享資源訪問是一個經典的挑戰。傳統的單機鎖(如 sync.Mutex)無法實現跨進程工作,此時就需要用到分佈式鎖了。本文將介紹 Go 語言生態中基於 Redis 實現的分佈式鎖庫 redsync,並探討其使用方法和實現原理。 分佈式鎖 首先我們來探討下為什麼需要分佈式鎖?當我們編寫的程序出現資源競爭的時候,就需要使用互斥鎖來保證併發安全。而我們的服務很有可能不

面試 , 分佈式鎖 , 併發 , go , 後端

收藏 評論

異常君 - Java 多線程核心概念與應用場景

在當今高併發、高性能的系統開發中,多線程編程已經成為 Java 開發者必備的核心技能。無論是提高系統吞吐量、優化用户體驗,還是充分利用多核 CPU 資源,多線程技術都扮演着不可或缺的角色。本文作為 Java 多線程系列的開篇,將為你詳細講解多線程的基礎概念、應用場景以及實現方式。 1. 什麼是多線程? 線程是操作系統能夠進行運算調度的最小單位,也是程序執行流的最小單位。多線程就是指從單個進程中創建

線程池 , 線程 , 多線程 , JAVA , 後端

收藏 評論

異常君 - Java 多線程實戰:四種創建線程方式深度剖析與源碼解讀

前言 多線程編程是 Java 開發者必須掌握的核心技能,而瞭解線程創建的不同方式及其內部機制,是構建高效穩定併發程序的基礎。本文將通過實例代碼、原理分析和源碼解讀,全面剖析 Java 中創建線程的四種主要方式,幫助開發者選擇最適合自己業務場景的線程創建方法。 一、繼承 Thread 類創建線程 1.1 基本原理 Thread 類是 Java 中表示線程的核心類,它實現了 Runnable 接口。通

線程池 , 線程 , JAVA , thread , 後端

收藏 評論

異常君 - Java 多線程揭秘:徹底掌握線程狀態轉換與控制方法

stateDiagram-v2 [*] -- NEW: 創建線程對象 NEW -- RUNNABLE: 調用start() RUNNABLE -- BLOCKED: 等待synchronized鎖 BLOCKED -- RUNNABLE: 獲得鎖 RUNNABLE -- WAITING: 調用wait()/join()/park() WAITING

線程 , 多線程 , JAVA , thread , 後端

收藏 評論

異常君 - 揭秘 Java 線程安全:從問題根源到實用解決方案

在多線程編程中,線程安全問題就像隱藏在代碼中的定時炸彈,隨時可能引發難以調試的 bug。本文將帶你深入理解線程安全問題的本質,並通過實例分析幾種常用的解決方案,幫助你構建健壯的多線程應用。 一、什麼是線程安全問題? 當多個線程同時訪問共享資源(變量、對象等)並且至少有一個線程會修改該資源時,如果沒有正確的同步機制,就可能產生數據不一致的問題。這就是我們常説的"線程不安全"。 graph TD

線程 , 多線程 , JAVA , thread , 後端

收藏 評論

異常君 - 【深度揭秘】Caffeine 緩存引發的內存泄漏全攻略:從根源到解決方案

前言 大家好!今天我要和你們分享一個在 Java 開發中常見但又容易被忽視的問題:Caffeine 緩存引起的內存泄漏。作為目前 Java 生態中性能最強的本地緩存庫,Caffeine 被廣泛應用於各種項目中。但是,如果使用不當,它可能會變成你係統中的"內存黑洞"。 在這篇文章中,我會用通俗易懂的語言,結合實際案例,深入分析 Caffeine 緩存可能導致的內存泄漏問題,並提供針對性的解決方案。無

內存泄漏 , 緩存 , JAVA , 解決方案 , 後端

收藏 評論

異常君 - Java併發問題排查實戰手冊:死鎖與活鎖診斷與解決全流程

一、引言 併發編程就像是在廚房裏同時炒 10 道菜 - 看似效率提高了,但一不小心就會手忙腳亂。作為 Java 後端開發,我們經常為併發問題頭疼不已:生產環境突然卡死,線程 CPU 使用率飆升卻沒有業務進展,各種監控工具報警...而當你想復現問題時,它又像幽靈一樣"按鬧分配",讓人抓狂。 併發 BUG 難以排查的原因主要有三: 不確定性:同樣的代碼,運行 10 次可能只出現 1 次問題 複雜

實戰 , , JAVA , 併發 , 後端

收藏 評論

異常君 - Java 多線程核心技術:線程間通信三種經典方式詳解與實戰

一、為什麼需要線程間通信? 大家好!今天我們來聊聊多線程編程中的一個核心問題:線程間通信。 想象一下這個場景:你開發了一個電商系統,一個線程負責接收用户下單請求,另一個線程負責庫存扣減,還有一個線程負責發送通知。這些線程之間如果無法協作,就像各自為戰的士兵,無法完成統一的任務。 線程間通信解決的核心問題是: 線程協作:多個線程按照預定的順序執行任務 數據共享:一個線程產生的數據,需要被另一個

通信 , 線程 , JAVA , thread , 後端

收藏 評論

異常君 - 一文精通 Java 線程池:原理詳解與實戰指南

在處理高併發任務時,如果每個任務都創建一個新線程,會導致系統資源急劇消耗、性能下降。線程池通過複用已創建的線程來執行新任務,大大提高了資源利用效率。本文將深入探討 Java 線程池的核心原理和實踐應用,助你徹底掌握這一多線程開發的重要工具。 一、線程池的基本概念 線程池本質上是一種線程使用模式,它在系統中預先創建一定數量的線程,放入池中統一管理。當有任務需要執行時,從池中取出線程執行,任務執行完後

線程池 , 線程 , JAVA , 優化 , 後端

收藏 評論

異常君 - 深入剖析 Java 併發容器:解鎖 ConcurrentHashMap 底層原理與高性能實戰應用

1. 併發容器的歷史 大家好,今天我們來聊一個 Java 多線程開發中繞不開的核心話題:併發容器。可能你已經發現,當我們在多線程環境中使用 HashMap、ArrayList 這些集合類時,經常會遇到ConcurrentModificationException或數據不一致的問題,這就是因為這些普通集合類不是線程安全的。 JDK 提供的傳統解決方案是Collections.synchronized

concurrenthashmap , JAVA , 併發 , 併發編程 , 後端

收藏 評論

異常君 - MySQL 事務實現機制:從原理到實踐的深度解析

在數據庫中,事務是保證數據一致性和可靠性的基礎。當你在網上購物、轉賬或者執行任何需要多步操作的數據庫任務時,事務機制都在背後默默保障着數據的安全。那麼,MySQL 是如何實現這一看似簡單卻又複雜的機制呢?本文將帶你深入探索 MySQL 事務的實現原理,通過生動的案例和圖表,讓你輕鬆理解這個核心概念。 什麼是事務? 事務簡單來説就是一組操作的集合,要麼全部執行成功,要麼全部失敗回滾。想象你在 ATM

MySQL , 數據庫 , 事務 , 事務處理 , 後端

收藏 評論

異常君 - 【深度剖析】MySQL B+樹索引:一次查詢的內部奧秘

大家好!今天我們來聊一個 MySQL 核心知識點:B+樹索引的查詢過程。可能你每天都在用SELECT語句查詢數據,但你想過這背後到底發生了什麼嗎?MySQL 是怎麼從成千上萬的數據中快速找到你要的那一條記錄的?帶着這個問題,我們一起揭開 MySQL B+樹索引的神秘面紗! 先説説為什麼 MySQL 選擇 B+樹? 在聊查詢過程前,我們得先明白 MySQL 為啥選 B+樹做索引結構。想象一下,如果數

b+樹 , MySQL , 索引 , SQL , 後端

收藏 評論

異常君 - 【深度剖析】MySQL 索引下推:原理、案例與性能提升實戰

你是否曾經為 MySQL 查詢性能苦惱?或者聽説過"索引下推",但不太明白它是如何工作的?今天我就和大家聊聊 MySQL 中一個強大卻常被忽視的特性 - 索引下推(Index Condition Pushdown,簡稱 ICP)。這個特性從 MySQL 5.6 版本引入,能有效提升查詢性能,減少 IO 操作,但很多開發者對它的理解還不夠深入。 索引下推是什麼? 索引下推是由 MySQL 優化器決定

MySQL , 索引 , 數據庫 , SQL , 後端

收藏 評論

聽風 - 面試背誦版:23種設計模式 + 六大設計原則 + 面試高頻問答

一、設計模式的來源 設計模式(Design Pattern)是前輩們對代碼開發經驗的總結,是解決特定問題的一系列套路。它不是語法規定,而是一套用來提高代碼可複用性、可維護性、可讀性、穩健性以及安全性的解決方案。 1995 年,GoF(Gang of Four,四人組/四人幫)合作出版了《設計模式:可複用面向對象軟件的基礎》一書,共收錄了 23 種設計模式,從此樹立了軟件設計模式領域的里程碑,人稱

設計模式 , 面試 , 後端

收藏 評論

異常君 - Java 併發編程揭秘:聽我説 happens-before 規則

多線程編程就像走鋼絲,一不小心就掉下去。而 Java 的 happens-before 規則,就是那根讓你穩穩走過去的平衡杆。今天我把這個看起來很深奧的概念拆開來講,讓你真正明白它為啥這麼重要,以及怎麼用它來解決實際問題。 你的代碼可能根本不是按你想的順序執行的! 看這段代碼: int a = 1; int b = 2; int c = a + b; 你以為它就是按這個順序執行的?天真了!JVM

多線程 , JAVA , 併發 , 併發編程 , 後端

收藏 評論

macrozheng - 超越Elasticsearch!號稱下一代搜索引擎,性能炸裂!

當我們需要實現全文搜索功能的時候,往往會使用到搜索引擎,比較常用的是Elasticsearch。但是Elasticsearch的硬件配置要求比較高,不同版本間的API兼容性也比較差。今天給大家分享一款輕量級搜索引擎Meilisearch,搜索速度非常快,能實現即時搜索,希望對大家有所幫助! 簡介 Meilisearch是一款輕量級搜索引擎,它支持RESTful風格的搜索API,目前在Github上

elasticsearch , 搜索引擎 , springboot , JAVA , 後端

收藏 評論

vivo互聯網技術 - Full GC 頻率優化實戰

作者:vivo 互聯網服務器團隊- Li Gang 本文介紹了遊戲業務使用MAT和GC日誌等工具對 Full GC頻率進行優化的過程。 一、背景 遊戲業務面對用户端的某個工程,每天Full GC頻率達到120次,業務高峯期每7分鐘就會有一次Full GC。為了避免情況持續變差,最大程度減少對系統響應時間的負面影響,需要對該工程的Full GC頻率進行優化。 該項目JDK版本為1.8,老年代使用

垃圾回收 , JAVA , 優化 , 後端

收藏 評論