monolake 的GeekBand C++開發(fā)學(xué)習(xí)筆記(十二)

前記:本周進入C++開發(fā)課程最后一門課:系統(tǒng)設(shè)計與實踐。董飛老師從實踐的角度講解了系統(tǒng)設(shè)計中的要點;系統(tǒng)設(shè)計中的七劍客以及一些系統(tǒng)設(shè)計實例。

進程與線程

在程序中見的最多的概念。兩個概念很像,但是有本質(zhì)區(qū)別。進程是一個具有獨立功能的程序關(guān)于某個數(shù)據(jù)集合的一次運行活動。它可以申請和擁有系統(tǒng)資源,是一個動態(tài)的概念,是一個活動的實體。它不只是程序的代碼,還包括當(dāng)前的活動,通過程序計數(shù)器的值和處理寄存器的內(nèi)容來表示。而線程是作為獨立運行和獨立調(diào)度的基本單位。作用是為了更好的調(diào)配系統(tǒng)資源,即以更有效編程的目的進行的。
簡而言之,一個程序至少有一個進程,一個進程至少有一個線程。進程在執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享內(nèi)存,從而極大地提高了程序的運行效率。線程的劃分尺度小于進程,使得多線程程序的并發(fā)性高。從邏輯角度來看,多線程的意義在于一個應(yīng)用程序中,有多個執(zhí)行部分可以同時執(zhí)行。

系統(tǒng)設(shè)計七劍客

系統(tǒng)設(shè)計中七大要點元素:

同步(Concurrency)

進程與線程之間的區(qū)別造成了他們之間的通信與同步機制不同。在設(shè)計中考慮到不同的同步通信機制之間的關(guān)系。

網(wǎng)絡(luò)(Network)

網(wǎng)絡(luò)OSI有7個層級劃分: OSI的7層從上到下分別是 7 應(yīng)用層,6 表示層,5 會話層,4 傳輸層,3 網(wǎng)絡(luò)層 ,2 數(shù)據(jù)鏈路層,1物理層。
其中高層(即7、6、5、4層)定義了應(yīng)用程序的功能,下面3層(即3、2、1層)主要面向通過網(wǎng)絡(luò)的端到端的數(shù)據(jù)流。

數(shù)據(jù)庫(Datebase)

傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(Relational DB):各個值關(guān)系密切,效率低,安全性高。
鍵值存儲(KV Store):靜態(tài)關(guān)聯(lián),簡單但是訪問效率高。
Sharding:切分的基本思想就要把一個數(shù)據(jù)庫切分成多個部分放到不同的數(shù)據(jù)庫(server)上,從而緩解單一數(shù)據(jù)庫的性能問題。
Clustering:聚群,將相似的數(shù)據(jù)分為一組進行管理,具有學(xué)習(xí)型的性質(zhì),但是在面對大量數(shù)據(jù)時,易出現(xiàn)重者越重的情況。

分布式系統(tǒng)(Distribute System)

分布式系統(tǒng)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng)。正是因為軟件的特性,所以分布式系統(tǒng)具有高度的內(nèi)聚性和透明性。分布式系統(tǒng)組件分布在網(wǎng)絡(luò)計算機上,組件之間僅僅通過消息傳遞來通信并協(xié)調(diào)行動。大大減輕服務(wù)器端壓力。

性能(Performance)

考慮性能相關(guān)的必須知道的要點速度效率。Cache是關(guān)鍵,越接近CPU級的效率越高,但是容量很小。反之,網(wǎng)絡(luò)級的效率最底下,但是數(shù)據(jù)容量最大。

估算(Estimation)

在系統(tǒng)設(shè)計中對數(shù)據(jù)的考慮估算。通過模型等要素估算個因素值,對較大系統(tǒng)一步步的簡化建模分析。

面向?qū)ο蟮脑O(shè)計模式(Design Pattern)

23中經(jīng)典的設(shè)計模式中用的比較多的設(shè)計模式:
MVC(模型(model)-視圖(view)-控制器(controller)):用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務(wù)邏輯。
Sigleton(單例模式):提供唯一實例和全局訪問點。
Factory(工廠模式):創(chuàng)建生成工廠,不同子類不同的繼承不同的工廠進行創(chuàng)建。
Iterator(迭代器):遍歷機制與聚合對象進行分離。
Decorator(裝飾器):使用裝飾器可以方便的對象添加額外的職責(zé)而不影響基類內(nèi)容。
Facade(門面模式):對子系統(tǒng)提供統(tǒng)一的接口,解耦和的方式便于用戶使用和子系統(tǒng)的內(nèi)部維護。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容