架構(gòu)概要爾易課程_第1頁
架構(gòu)概要爾易課程_第2頁
架構(gòu)概要爾易課程_第3頁
架構(gòu)概要爾易課程_第4頁
架構(gòu)概要爾易課程_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Version 1.1, Release 20141125第二講課程概述程序設(shè)計 strategy pattern observe pattern template method Command通訊 UDP TCP Select/epoll CTP中的STL概述 Stl的容器 Stl的性能C+概STL述概述STL簡介OOP 執(zhí)行期、顯式的多態(tài)STL 編譯期、隱式的多態(tài)基于型別的泛型編程不同于OOP的一種抽象性質(zhì)對一組抽象概念的建模各個概念之間形成自然的階層組件都是精確符合某些特定條件而寫成,組件可以相互作用、擴充泛型算法= 實際指令+ 需求條件定義抽象的Concepts,并據(jù)此書寫算法和數(shù)據(jù)結(jié)

2、構(gòu),是泛型編程的本質(zhì)STL概述standard template library容器Container基于類型的計算 類型參數(shù)化編譯期多態(tài) 泛型化設(shè)計關(guān)注知識點 常用的容器 string iostream仿函數(shù)Function object空間配制器allocatorStl組件迭代適配器Adaptor迭代器Iterator算法AlgorithmSTL概述STL & OOP 抽象表現(xiàn):OOP接口顯式多態(tài)顯式的接口STL接口隱式的接口隱式多態(tài)STL概述STL中常用組件ContainerIteratorIteratorAlgorithmAlgorithm 常用算法的泛型化 泛化的指針 基于層次特征C

3、ontainer 基于型別的數(shù)據(jù) 一致化的方式 友好的接口 隱藏內(nèi)部實現(xiàn)C+概述STL中的容器原理:1 關(guān)聯(lián)容器AssociativeContainer map multimap set multiset2 序列VectorList slist dequeContainerAdapters3 Adapter容器SequencesStackQueue priority_queueStl容器 連續(xù)的線性空間 一個環(huán)狀雙向鏈表 一種雙向開口的連續(xù)線性空間 stack和queue是deque的子集 迭代器就是一個普通指針 迭代器是封裝了list node 的指針 迭代器支持“分段,整體維護”的空間模式

4、 不遍歷 map中一個鍵值對應(yīng)一個實值,不鍵值上的重復(fù),內(nèi)部是按鍵值來進行 set中鍵值就是實值, 實值就是鍵值,而 鍵值是不可以更改 的 priority_queue帶權(quán)值的queue,順序入隊之后,按照的大小出隊。以 vector為底層容器, 這與queue相差很大。 一種數(shù)據(jù)結(jié)構(gòu),完全二叉樹,但在實現(xiàn)上,它沒有選擇一般的二叉樹數(shù)據(jù)結(jié)構(gòu),使用的是數(shù)組排序的Priority_queueheapSetmulti_setMapmulti_mapQueue/stackDequeListVerctorSTL容器Container 常用函數(shù)vector Push_back back pop_backo

5、perator Remove eraselist push_back pop_back back push_front front pop_front sliceset insert found count Lower|upper_bound equal_rangemap 容納pair Insert found count lower|upper_bound equal_rangeSTL容器STL的性能建議優(yōu)先使用泛型算法,代替書寫優(yōu)先使用容器的方法,而不是通用算法remove并不真的刪除vector中的元素distance advance在不同容器的性能insert在不同容器中的性能表現(xiàn)依據(jù)

6、insert find的概率選擇合適容器&CP&CTPNetwork常用的TCP/IP協(xié)議IP:互聯(lián)網(wǎng)協(xié)議 主機間傳輸數(shù)據(jù)的層協(xié)議TCP: 傳輸協(xié)議 應(yīng)用程序間傳遞數(shù)據(jù)的傳輸協(xié)議UDP:用戶數(shù)據(jù)報協(xié)議 傳輸層協(xié)議,比TCP簡單,也不可靠ICMP:互聯(lián)網(wǎng)報文協(xié)議 攜帶錯誤信息Network的協(xié)議棧應(yīng)用層傳輸層 TCP UDP層 ICMP IP數(shù)據(jù)鏈路層ApplicationPresentation SessionARPHardware Interface RARP物理層Network互聯(lián)網(wǎng)協(xié)議剖析表示層傳輸層層鏈路層物理層傳輸線路ARPHardware InterfaceRARPICMPIPTC

7、PUDPProgramProgramProgramNetwork協(xié)議數(shù)據(jù)封裝應(yīng)用層應(yīng)用層TCPIP用戶數(shù)據(jù)用戶數(shù)據(jù)用戶數(shù)據(jù)用戶數(shù)據(jù)應(yīng)用頭應(yīng)用頭應(yīng)用頭TCP頭TCP頭IP頭Network理解端口使用UDP端口,類比于郵政信箱TCP端口,類比于系統(tǒng)端口是對應(yīng)用程序的標(biāo)識傳輸層利用端口對數(shù)據(jù)進行尋址NetworkCTP中的Front tkernel 之間的通訊front 客戶端之間的通訊(ctpapi)FTDC協(xié)議Network如何搭建可靠UDP協(xié)議建立確認機制以系列號標(biāo)記數(shù)據(jù)的唯一性采用滑動窗口批量,提高效率考慮MTU,使用合適的數(shù)據(jù)大小應(yīng)用壓縮技術(shù)減少傳輸量程序設(shè)程序計設(shè)計Pattern設(shè)計的基

8、本原則 一個類僅一個引起它變化的 軟件實體擴展開發(fā),修改封閉 子類必須能夠替換掉基類 模塊不依賴于底層模塊,二者依賴于抽象 抽象不依賴于細節(jié),細節(jié)應(yīng)該依賴于抽象 如果類的接口不是內(nèi)聚的,需要分解成多組接口原則依賴倒置原則Liskov替換原則開放-封閉原則單一職責(zé)原則Pattern常用的設(shè)計模式Command patternTemplate methodStrategy patternstate patternobserve patternSingleton PatternPatternCommand PatternClass CommandVirtual Void execute()=0;意圖

9、: 對調(diào)用方法進行封裝 命令對象將動作和接受對象組合在一起適用性: 事務(wù)操作 Undo/ 隊列處理 日志Class LightOnCmd : public CommandLight li;Public: LightOnCmd (Light l):Li(l)Public: void execute()light.on();Class Invoker Command cmd;Active ObjectPublic:void buttonPressed()cmd.execute()MacroCommandPatternTemplate Patternclass Thread Public:Virtu

10、al init() = 0; Virtual do() = 0; Virtual clear()=0; Void run() Init();While(!done) do(); Clear();意圖: 定義一個算法的骨架,而將一些步驟延子類中適用性:實現(xiàn)算法的不變部分,可變部分留給子類 公共行為放置到父類中,避免代碼重復(fù)子類的擴展Class MyThread : public Threadvirtual int() virtual clear() virtual do()PatternStrategy PatternClass IApp virtual int() virtual clear(

11、) virtual do()class Runner Iapp *pRunner; Public:Void run() pRunner -Init(); pRunner -do(); pRunner -Clear();意圖適用性Class MyApp : public IAppvirtual int() virtual clear() 用多個行為中的一個行為來配置一個類的方法 需要使用一個算法的不同變體 算法使用客戶不應(yīng)該知道的數(shù)據(jù) 一個類定義了多種行為,操作中以多個條件語句的形式出現(xiàn) 定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換PatternState PatternCla

12、ss IState virtual void coin(Turastile t); virtual void pass(Turastile t);Class State1 : public Istate Class State2: public Istate意圖:一個對象在其內(nèi)部狀態(tài)改變時改變它的行為;對象看起來似乎修改了它的類適用性:Class Turastilestatic Istate *locked; / new State1; Static Istate *unlocked; / new State2; Istate *currState = locked;void coin()cu

13、rrState-coin(this); 一個對象的行為取決于它的狀態(tài) , 并且它必須在運行時刻根據(jù)狀態(tài)改變它的行為 一個操作中含有龐大的多分支的條件語句,且這些分支依賴于該對象的狀態(tài)PatternObserver PatternClass Observer Virtual void update()=0;Class Subject vector Obvs;void nofity() for(auto i, Obvs) i.update(); void registerObv(Observer *obv)Obvs.push_back(obv);Class DataSource : Subject

14、 , ISource void change()nofity();Class ObvImpl : public Observer ISource src;int Mydata;ObvImpl (Isource src) void update() MyData = src.get_data();意圖 定義對象間的一種一對多的依賴關(guān)系 ,當(dāng)一個對象的狀態(tài)發(fā)生改變時 , 所有依賴于它的對象到通知并被自動更新適用性 當(dāng)一個抽象模型有兩個方面 , 其中一個方面依賴于另一方面。 當(dāng)對一個對象的改變需要同時改變其它對象 , 而不知道具體有多少對象有待改變 當(dāng)一個對象必須通知其它對象,而它又不能假定 其它對

15、象是誰PatternSingleton PatternClass Singleton1 Static Singleton1 * inst; Class Singleton2 Private:Static singleton2 *inst; Protected: Singleton2();Public: static Singleton2 *Instance() return (inst)?inst:new Singleton2;Class Singleton3 Private:Static singleton2 *inst; Private: mutex m;Protected: Singleton2();Public: static Singleton2 *Instance() if(!inst) lock_guard g(m);return (inst)?inst:new Singleton2;適用性 當(dāng)類只能有一個實例,而且客戶可從

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論