本文聊一個程式員都會關註的問題:性能。當大家談到“性能”時,你首先想到的會是什麼?性能優化是一個複雜且多面的話題,涉及到代碼的編寫、系統的架構以及硬體的選擇與配置。在追求性能的旅途中,我們需要掌握的知識有很多,既有軟體方面的,也有硬體方面的,很多東西我也沒有展開詳細講,只是給大家提供了一個引子,遇到... ...
本文聊一個程式員都會關註的問題:性能。當大家談到“性能”時,你首先想到的會是什麼?性能優化是一個複雜且多面的話題,涉及到代碼的編寫、系統的架構以及硬體的選擇與配置。在追求性能的旅途中,我們需要掌握的知識有很多,既有軟體方面的,也有硬體方面的,很多東西我也沒有展開詳細講,只是給大家提供了一個引子,遇到... ...
本篇我們講紅黑樹的經典實現,Java中對紅黑樹的實現便採用的是經典紅黑樹。前一篇文章我們介紹過左傾紅黑樹,它相對來說比較簡單,需要大家看完上篇再來看這一篇,因為旋轉等基礎知識不會再本篇文章中贅述。本篇的大部分內容參考 《演算法導論》和 Java 實現紅黑樹的源碼,希望大家能夠有耐心的看完。 在正文開始 ...
簡介 設計模式是一種最佳實踐,是長期起來總結的解決一系列問題的一種套路。 一般針對面向對象語言而言,從大型軟體架構出發,便於升級和維護的軟體設計思想,強調降低依賴耦合 目的:代碼重用和工程化 類型 創建型:創建對象的同時隱藏創建的業務邏輯 工廠模式、單例模式、建造者模式、原型模式 結構型:將現有的類 ...
前言 觀察者(Observer)模式也稱發佈-訂閱(Publish-Subscribe)模式,定義了對象間一種一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新。 觀察者模式的圖解如下所示: Subject(目標): 目標知道它的觀察者。可以有任意多個觀察者觀察同 ...
一、定義 定義對象之間的一種一對多依賴關係,使得當每一個對象狀態發生改變時,其相關依賴對象皆得到通知並被自動更新。觀察者模式是一種行為型模式,又稱為發佈-訂閱(Publish-Subscribe)模式、模型-視圖(Model-View)模式、源-監聽器(Source-Listener)模式或從屬者( ...
1. 語言類型:首先,C/C++、Java 、Python都是強類型的語言。強類型語言的定義如下: 強類型語言是一種強制類型定義的語言,即一旦某一個變數被定義類型,如果不經強制轉換,那麼它永遠就是該數據類型。而弱類型語言是一種弱類型定義的語言,某一個變數被定義類型,該變數可以根據環境變化自動進行轉換 ...
要研究類載入過程,我們先要知道關於 Java 處理代碼的流程是怎麼樣的。 第一步:編寫源代碼 這一步是我們最熟悉的,就是我們在 idea 上寫的業務代碼,生成 Example.java 文件。 public class Example { public static void main(String ...
微服務架構是一種軟體開發模式,它將一個複雜的應用程式拆分為多個個獨立的、小型的、可復用的服務,每個服務負責一個特定的業務功能。 微服務架構有許多優點,例如提高系統的可擴展性、可維護性、可測試性和故障容忍性。 但是,微服務架構也有很多問題需要註意,例如如何設計合理的劃分服務介面、如何在服務間實現高效通 ...
一、定義 在不破壞封裝的前提下,捕獲一個對象的內部狀態,併在該對象之外保存這個狀態,這樣就可以在以後將對象恢復到原先保存的狀態。備忘錄模式是一種對象行為型模式,其別名為標記(Token)模式。 二、描述 備忘錄模式的核心在於備忘錄類以及用於管理備忘錄的負責人類的設計,包含以下三個角色: 1、Orig ...
1. 可演進的API 1.1. 隨著需求的變化,你需要改變你的API,即代碼之間的共用介面 1.2. 改變API很容易,但很難做到正確 1.3. 保持API小巧 1.3.1. 小巧的API更易於理解和演進 1.3.2. 只添加即刻需要的API方法或欄位 1.3.3. 帶有許多欄位的API方法應該有合 ...
1. 行為準則 2. 需求的不確定性 2.1. 不斷變化的客戶需求 2.2. 軟體項目無法避免的挑戰 2.3. 產品需求和環境會隨著時間的推移而改變,你的應用程式也必須隨之改變 2.4. 不斷變化的需求會導致不穩定性,使開發工作偏離軌道 2.5. 通過構建可演進的架構來適應不斷變化的需求 2.5.1 ...
一、定義 義一個對象來封裝一系列的對象交互。中介者模式使各對象不需要顯示地相互引用,從而使其耦合鬆散,而且可以讓你相對獨立地改變它們之間的交互。中介者模式又稱為調停模式,它是一種對象說行為型模式。 二、描述 在中介者模式中,引入了用於協調其他對象/類之間的相互調用的中介者類,為了讓系統具有更好的靈活 ...
面向對象編程是一種強大而靈活的編程範式,它可以幫助我們更好地組織和管理代碼,提高代碼的可讀性和可維護性,這使得它特別適合用在大型工程項目中。然而,我們也需要註意其可能帶來的問題,尤其是在併發和複雜系統中。 ...
一、定義 提供一種方法順序訪問一個聚合對象中的各個元素,且不用暴露該對象的內部表示。迭代器模式是一種對象行為型模式,又稱為游標(Cursor)模式。 二、描述 在軟體系統中,聚合對象擁有兩個職責:一是存儲數據,二是遍曆數據。從依賴性來看,前者是聚合對象的基本職責,而後者既是可變化的,又是可分離的。因 ...