原创 TCP/IP詳解看書筆記

第一章 概述 鏈路層, 有時也稱作數據鏈路層或網絡接口層 TCP(傳輸控制協議)爲兩臺主機提供高可靠性的數據通信。它所做的工作包括把應用程序交給它的數據分成合適的小塊交給下面的網絡層,確認接收到的分組,設置發送最後確認分組的超時

原创 9 設計模式_抽象工廠(Abstract Factory)

Abstract Factory 抽象工廠 動機(motivation) 在軟件系統中,經常面臨着“一系列相互依賴的對象”的創建工作;同時,由於需求的變化,往往存在更多系列對象的創建工作. 如何應對這種變化?如何繞過常規的對象創

原创 5 設計模式_觀察者模式(Observer)

Observer 觀察者模式 動機(Motivation) 在軟件構建過程中,我們需要爲某些對象建立一種“通知依賴關係” ——一個對象(目標對象)的狀態發生改變,所有的依賴對象(觀察者對象)都將得到通知。如果這樣的依賴關係過於緊

原创 6 設計模式_裝飾模式(Decorator)

Decorator 裝飾模式 “單一職責”模式: 在軟件組件的設計中,如果責任劃分的不清晰,使用繼承得到的結果往往是隨着需求的變化,子類急劇膨脹,同時充斥着重複代碼,這時候的關鍵是劃清責任 典型模式 Decorator Bri

原创 3 設計模式_模板方法(Template Method)

GOF-23 模式分類 從目的來看 創建型(Creational)模式:將對象的部分創建工作延遲到子 類或者其他對象,從而應對需求變化爲對象創建時具體類型實 現引來的衝擊。 結構型(Structural)模式:通過類繼承或者對

原创 7 設計模式_橋接模式(Bridge)

Bridge 橋模式 動機(Motivation) 由於某些類型的固有的實現邏輯,使得它們具有兩個變化的維度,乃至多個緯度的變化。 裝飾模式的擴展。 如何應對這種“多維度的變化”?如何利用面向對象技術來使得類型可以輕鬆地沿

原创 11 設計模式_構建器(Builder)

Builder 構建器 動機(Motivation) 在軟件系統中,有時候面臨着“一個複雜對象”的創建工作,其通常由各個部分的子對象用一定的算法構成;由於需求的變化,這個複雜對象的各個部分經常面臨着劇烈的變化,但是將它們組合在一

原创 stl_tree.h 源碼剖析

<STL源碼剖析>導覽 關聯式容器 所謂關聯式容器,觀念上類似關聯式數據庫,每組數據都有一個鍵值(key)和一個實值(value)。當元素被插入到容器中時,容器內部結構(RB-Tree,或者是hash-table)便依照其鍵值大

原创 stl_deque.h源碼剖析

deque概述<stl源碼剖析> vector是單向開口的連續線性空間,deque則是雙向開口的連續線性空間。雙向開口,意思是可以在頭尾兩端分別做元素的插入和刪除操作。 deque和vector最大的差異,在於deque允許於常

原创 stl_vector.h源碼剖析

vector簡述<STL源碼剖析> vector是動態空間,隨着元素的加入,它的內部機制會自行擴充擴建以容納新元素。因此,vector的運用對於內存的合理利用與運用的靈活性有很大的幫助 vector的實現技術,關鍵在於其對大小的

原创 stl_list.h源碼剖析

容器list雙向環形鏈表 list相較於vector的連續線性空間,list顯得複雜許多,好處是每次插入或者刪除一個元素,就配置或釋放一個元素空間。因此list對於空間的運用絕對精準,一點也不浪費。而且對於任何位置的元素插入和元素

原创 深度探索C++對象模型(筆記)

第二章 對象 第二章第一節 類對象所佔用的空間 成員函數不佔用類對象的內存空間 一個類對象至少佔用1個字節的內存空間 成員變量是佔用對象的內存空間 成員函數 每個類只誕生 一個(跟着類走),而不管你用這個類產生了多少個該類的對象

原创 stl_alloc.h源碼剖析

本博客結合<<侯捷老師的STL源碼剖析>>閱讀更佳, 本文主要介紹stl_alloc.h 源碼 內存配置操作由 alloc:allocate()負責 內存釋放操作由alloc::deallocate()負責 stl_const

原创 15 設計模式_代理模式(Proxy)

Proxy代理模式 動機(Motivation) 在面向對象系統中,有些對象由於某種原因(比如對象創建的開銷很大,或者某些操作需要安全控制,或者需要進程外的訪問等), 直接訪問會給使用者、或者系統結構帶來很多麻煩。 間接訪問