享元模式(Flyweight Pattern) 目錄design pattern 以java 為例 Flyweight Pattern (享元模式)定義透過共享物件來減少系統中創建重複物件的內存使用量,特別適合用於大規模物件的場景中。該模式的核心在於將物件分解為內部狀態(intrinsic state)和外部狀態(extrinsic state),並共享內部狀態以達到節省資源的效果。 seque 2025-01-17 design pattern #java #design pattern
AtomicReference AtomicReferenceAtomicReference 是 Java 提供的一個原子類,用於封裝對象引用,並提供原子性操作(atomic operations)。它允許在多執行緒環境中安全地更新對象引用,避免競態條件的發生。 簡單來說,AtomicReference 是一個用於管理可變對象引用的工具,可以保證在更新時不會產生資料競爭。 使用方式AtomicReference 提供了一個 co 2025-01-17 java #java
外觀模式(Facade Pattern) 目錄design pattern 以java 為例 Facade 外觀模式外觀模式(Facade Pattern)是一種結構型設計模式,它為子系統提供一組統一的接口。這個接口使子系統更容易使用。以現實的例子做舉例,很像我們打電話給客服,客服會幫我們處理我們的問題,而我們不需要知道客服是如何處理的,只需要知道我們的問題被解決了。 結構 Facad 2025-01-17 design pattern #java #design pattern
適配器模式(Adapter Pattern) 目錄design pattern 以java 為例 Adapter PatternAdapter 是一種結構型設計模式,它允許將一個類的接口轉換為客戶端所期望的另一個接口,用於解決接口不兼容的問題 參與角色 目標接口(Target):客戶端所期望的接口,通常是一個接口或抽象類。 適配器(Adapter):實現目標接口,並包裝一個被適配者的實例。 2025-01-05 design pattern #java #design pattern
apache kraft 與 raft 可以先了解raft與 kraft 前身 zookeeperraft 共識演算法使用Spring 連接zookeeper管理kafka 為何要用KRaftKafka KRaft 是 Kafka 2.8 版本中引入的一個新特性,用於取代 ZooKeeper 作為 Kafka 集群的元數據管理服務。Kafka KRaft 基於 Raft 共識協議,具有更 2024-12-30 kafka #algorithm #kafka
共識演算法之一 >> Raft 背景是遊戲raft?? 不是,這裡是在講共識演算法的Raft Raft什麼是Raft?Raft是一種共識演算法,用於在分散式系統中維護一致性。Raft通過選舉機制確保了系統中的一致性,並且在選舉過程中,Raft通過一個稱為leader的節點來協調其他節點的操作。 Raft的基本概念Raft的基本概念包括: Leader:Raft系統中的一個節點,負責協調其他節點的操作。 Follower:Raf 2024-12-30 algorithm #algorithm
spring 設計多階段建構及跨來源資源共享(CORS) 前篇spring security 前言這篇主要記錄一個突然想做的做法,然後四處碰壁的結果,由來是原本我是按照單一前後台的方式做設計,於是原有的config 在同一個檔,包含登入登出跟頁面訪問跟exception 處理 12345678910111213141516171819202122232425262728293031323334353637 2024-12-27 java > springboot #springboot #spring security
抽象工廠模式(Abstract Factory Pattern) 目錄design pattern 以java 為例 什麼是抽象工廠提供了一個用來創建一組相關或相互依賴對象的接口,而不需要指定具體的類。與工廠方法模式相比,抽象工廠模式不僅創建單一對象,還創建一組產品族(即多個相關的產品)。 主要特點: 產品族:抽象工廠模式是用來創建一組相關產品的工廠。每個具體工廠負責創建一組具體的產品。 解耦:抽象工廠模式能夠讓 2024-12-20 design pattern #java #design pattern
工廠模式(Factory Pattern) 目錄design pattern 以java 為例 什麼是工廠模式?用於隱藏對象創建的具體實現細節,讓程式設計可以專注於使用物件,而不需要知道物件是如何被創建的。這種模式的主要目的是透過「工廠」來管理物件的創建,提升程式的可擴展性與可維護性。 重構前所有的邏輯都可以靠if-else 解決,如果不行就再加一層(?) 12345678910111213 2024-12-20 design pattern #java #design pattern
Builder 的比較 builder 的相等情況範例 12345678910111213141516@Builder(toBuilder = true)public class User { private String username; private String email; private int age;}User user = User.builder() 2024-12-18 java #java #lombok