軟考-必須要背的內容

一、設計模式

1、創建型

抽象工廠提供一個接口,創建一系列的相關相互依賴的對象,無需指定具體的類;

eg:系統軟件,支持多種數據庫

生成器:將一個復雜類的表示與構造分離,使得相同的構建過程能夠得到不同表示

eg:同樣制作方法,不同種類披薩

工廠方法:定義一個創建對象的接口,但由子類決定需要實例化哪一個類

eg:產品選擇用哪個子類產品

原型Prototype:用原型實例指定創建對象的類型,并且通過拷貝這個原型來創建新的對象;

eg:自動生成求職簡歷,工作經驗不同(clone)

單例:保證一個類只有一個實例,并且提供一個訪問他的全局訪問點、、、1855

2、結構型設計模式

適配器:將一個類的接口轉換成用戶希望得到的另一種接口。使得原本不兼容的接口得以協同工作;eg:USB,Type-c,語言適配?

橋接:將類的抽象部分和它的實現部分分離,使得可以獨立變化; 繼承樹拆分

eg:不同Linux,win系統顯示不同后綴圖片gif,bmp,jpeg

組合(composite):將對象組合成樹型結構以表示“整體-部分”層次結構,使用戶對單個對象和組合對象的使用具有一致性

eg:公司,子公司;文件夾,文件,菜單?

裝飾器:動態給一個對象添加一些額外職責,子類擴展功能;

eg:operation,super.print()調用父類方法,super(t)表示父類的,發票頭尾

person lisi = new Decorator(new A(new student("lisi")))

外觀(Facade):定義一個高層接口,為子系統中的一組接口提供一個一致的外觀,簡化該系統的使用;eg:對外統一接口

享元(Flyweight):提供支持大量細粒度對象共享的有效方法

eg:黑子,白子,位置

代理:其他對象提供一種代理以控制這個對象的訪問

3、行為型設計模式

責任鏈:多個處理器依次處理同一個請求。一個請求先經過 A 處理器處理,然后再把請求傳遞給 B 處理器,B 處理器處理完后再傳遞給 C 處理器,以此類推,形成一個條。鏈條上的每個處理器各自承擔各自的處理職責。

命令:將一個請求封裝為一個對象,從而使得可以用不同的請求進行參數化,對請求排隊或者記錄請求日志以及支持可撤銷的操作。

eg:遙控器開關機,開關燈;

解釋器:有一個語言需要解釋執行,并且你可以將該語言中的句子表示為一個抽象語法樹時,可以使用解釋器模式

迭代器:提供一種方法順序訪問一個聚合對象中的各個元素,而又不暴露該對象的內部表示。常用于遍歷一個集合對象

中介者:中介模式定義了一個單獨的(中介)對象,來封裝一組對象之間的交互。將這組對象之間的交互委派給與中介對象交互,來避免對象之間的直接交互。

eg:支付接口

備忘錄:在不破壞封裝性的前提下,捕獲一個對象的內部狀態,并在該對象之外保存這個狀態。這樣以后就可將該對象恢復到原先保存的狀態。多用于數據備份和恢復的場景。

觀察者對象之間定義一個一對多的依賴,當一個對象狀態改變的時候,所有依賴的對象都會自動收到通知

eg:關注up,關注某個事情

狀態:當一個對象的行為取決于它的狀態,并且它必須在運行時根據狀態改變它的行為時就可以考慮狀態模式

eg:自動販賣機,會員等級調整。

策略策略模式會定義一系列算法,從概念上來看,所有這些算法完全的都是相同的工作相互替換,只是實現不同,它可以以相同的方式調用所有的算法,

eg:飛機模擬飛行。購物中心打折,滿減,原價

模板方法:定義一個操作中的算法骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算的結構即使重定義該算法的某些特定步驟。

訪問者:表示一個作用于某對象結構中的各元素的操作,它使你可以在不改變各元素的類的前提下定義作用于這些元素的新操作

eg:統計館藏文獻頁數?

二、數據結構----圖

1、鄰接矩陣:n*n

有向圖: 行:出度,列:入度;

無向圖:對稱,第 i 行非0元素個數為頂點 i 的度;

稠密圖:O(n2)

2、鄰接表:

有向圖:空間:n+e,

無向圖:n+2e,

稀疏圖

3、十字鏈表:有向圖,易

4、廣度優先:

隊列,不唯一,BFS,層序遍歷

空間復雜度:O(n),時間復雜度:O(e);

5、深度優先:

棧,不唯一,BFS,先序遍歷

空間復雜度:O(n),時間復雜度:O(e);

6、最小生成樹

帶權連通無向圖

(1)prim:O(v2)邊稠密;從頂點開始,找集合邊最小;

(2)(貪心算法kruskal:不斷選擇未被選小權值邊,O(eloge),邊稀疏;

7、最短路徑:

(1)(貪心算法Dijkstra:某一頂點到其他頂點的最短路徑(單源),O(v2);

(2)(動態規劃Floyed:適用所有頂點間最短路徑和帶權無向圖,

時間復雜度:O(v3)空間復雜度:O(n2)

拓撲排序:AOV網,關鍵路徑--AOE網

二、數據結構----排序

1、查找

順序查找:ASL=(n+1)/2

二分查找:ASL=O(logn)

2、排序

歸并排序:動態規劃

不穩定:快些選堆 朋友來

時間快(nlogn):快些歸隊

一趟確定一個位置:快,選,堆,冒(帽子)

再就是:

正規式:有限自動機的另外一種表達形式

|:表示或

()*:表示循環多次,*可以是0到無窮

計算機網絡

dhcp分到的ip是169和0,說明有問題,是錯誤的

DHCP動態分配ip時候:若沒有獲取到,Windows是169.254.0.0,linux是0.0.0.0

DHCP客戶端可以從DHCP服務端獲得本機IP地址、DNS服務器地址、DHCP服務器地址、默認網關的地址(沒有web服務器地址和郵件服務器地址)

軟件工程:

瀑布模型

每個階段末尾都會有評審,評審上一階段的工作是否達標

缺點:初期分析需求無法把控,開發末期的結果和客戶要求不一致,全盤推翻==(不能適應變化的需求)==

適用場景需求明確/二次開發/有過經驗,用新技術重構也用瀑布

原型:

定義在需求不明確的情況,初期構建一個簡易系統讓用戶發現問題,探索用戶的需求==(只應用于需求分析階段)==,也可以探索出特殊的軟件解決方案

能夠迅速開發出一個讓用戶看得見的系統框架,可以用來支持用戶界面設計

不能指導代碼優化

原型模型最不適合大規模軟件開發

增量:

先做出核心好處在核心模塊盡早和用戶接觸了==(逐步理解需求)==,但是這種模式如何進行模塊劃分是難點

演化(迭代)模型

相比原型,適用于需求清楚,盡早投入使用,要不斷改善的時候

螺旋模型

開發活動和風險管理結合起來,求將風險降到最小并控制風險

有多個模型的特點:瀑布+快速原型

包含維護周期,所以開發和維護之間沒有本質區別

噴泉模型與RAD

面向對象

用戶需求為動力,對象作為驅動,客服了瀑布模型不支持軟件重用和多項開發活動集成的局限性

迭代、無間隙(開發活動之間不存在明顯邊界)

RAD:快速開發模型,SDLC(瀑布模型)+CBSD(構件化開發模型);可以快速構建應用系統

統一過程UP

也稱RUP,用例和風險為驅動,以架構為中心,迭代并增量開發

用于大型項目

五個階段:起始、精化、構建、移交、產生

敏捷開發方法

給開發減輕負擔、適合小型項目、隨時對接客戶

自適應方法ASD==(6個基本原則)、水晶方法Crystal(每個項目用不同方法)、特征驅動開發、并列爭球法SCRUM(30天一迭代的沖刺,按需求優先級實現)、極限編程XP(激發創造性、管理負擔小,測試先行)

內聚是一個模塊內部各個元素彼此結合的緊密程度

巧合內聚(偶然內聚):兩個程序塊放在一起,但是沒有任何關系

邏輯內聚:兩個放在一起的程序塊有邏輯上的關系(比如根據參數選擇調用哪個程序塊)

時間內聚:需要同時執行的幾個任務放在一起

過程內聚:放在一起的程序塊處理的元素是相關的,并且按一定次序

通信內聚(信息內聚):模塊內處理的對象都是同一個數據結構

順序內聚:放在一起的程序塊處理的元素是相關的,并且順序執行

功能內聚:模塊內所有元素完成單一功能(不可再分,缺一不可)

耦合是模塊之間相互獨立性的度量,連接越緊密,耦合性越高,獨立性越弱

數據耦合:兩個模塊之間通過簡單數據交換信息

標記耦合:兩個模塊通過數據結構傳遞

公共耦合:訪問同一個公共的數據環境

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15603.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15603.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15603.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Scrapy順序執行多個爬蟲

Scrapy順序執行多個爬蟲 有兩種方式: 第一種:bat方式運行 新建bat文件 cd C:\python_web\spiders\tiktokSelenium & C: & scrapy crawl spider1 & scrapy crawl spider2 & scrapy crawl spider3 & scrapy crawl spider4 第二種&a…

IOS開發者證書快捷申請

App Uploader 在進行iOS應用開發中,可以借助appuploader輔助工具進行證書制作、上傳和安裝測試等操作。首先,您需要訪問官方網站獲取最新版本的appuploader。最新版本已經優化了與Apple賬號的登錄流程,無需支付688元,并提供了Windows版和Mac版供用戶選擇。下載完成后,解壓…

USART串口通信(stm32)

一、串口通信 通信的目的:將一個設備的數據傳送到另一個設備,擴展硬件系統 通信協議:制定通信的規則,通信雙方按照協議規則進行數據收發 STM32F103C8T6 USART資源: USART1、 USART2、 USART3 自帶波特率發生器&…

方正暢享全媒體新聞采編系統 binary.do SQL注入漏洞復現

0x01 產品簡介 方正暢享全媒體新聞生產系統是以內容資產為核心的智能化融合媒體業務平臺,融合了報、網、端、微、自媒體分發平臺等全渠道內容。該平臺由協調指揮調度、數據資源聚合、融合生產、全渠道發布、智能傳播分析、融合考核等多個平臺組成,貫穿新聞生產策、采、編、發…

【華三包過】2024年/華三H3C/云計算GB0-713

H3CNE-cloud-云計算-713 想轉行 想繼續深入 題庫覆蓋百分百,題庫有新版106道新版113道舊版88道 H3C認證云計算工程師(H3C Certified Network Engineer for Cloud,簡稱H3CNE-Cloud) 認證定位于全面掌握虛擬化技術原理及相關產品/…

半導體行業AI機器視覺的應用探討(3)-效益如何評估

作為半導體廠的IT經理,評估AI機器視覺帶來的經濟收益和管理收益是一個多維度的過程,需要綜合考慮成本節約、效率提升、質量改進等多個方面。以下是一個具體的評估方案: 1. 成本效益分析(CBA) **步驟**: - **初始投資成本**:列出所有與AI機器視覺系統相關的初始投資,包…

c++二進制輸出

輸入一個數&#xff0c;輸出n個數&#xff0c;數可以是0或1&#xff1b;輸入&#xff1a;4輸出&#xff1a;0010&#xff1b;提示&#xff1a;本題要用到rand(),srand(time(0));代碼如下&#xff1a;#include<bits/stdc.h> #include<windows.h> using namespace s…

MySQL的數據庫和表

查看數據庫 命令行的方式&#xff1a; cd /mysql/bin mysql.exe -uroot -p IP&#xff08;不是連接自己&#xff09; 端口&#xff08;不是3306&#xff09; show databases; 直接使用圖形化界面點擊&#xff1a; 查看庫里的表 使用命令行查看&#xff1a; 進入mysql數據庫 u…

JavaFX學習教程二

一、JavaFX 體系結構 JavaFX 場景圖(Scene Graph)是構建 JavaFX 應用程序的起點&#xff0c;一種樹狀數據結構&#xff0c;用于排列&#xff08;和分組&#xff09;圖形對象&#xff0c;以便于邏輯表示。 stage:舞臺&#xff0c;操作系統窗口的 JavaFX 表示&#xff0c;是所有…

Nodejs+Socket.io+Web端完成聊天

前言 源碼獲取:nodeexpresssocket.ioweb: 聊天demo (gitee.com) 目錄結構 后端依賴 啟動方式 前端是html正常啟動 后端是node app.js 后端app.js核心代碼 const express require(express) const app express() var http require(http).Server(app) var io require(so…

掌握C++回調:按值捕獲、按引用捕獲與弱引用

文章目錄 一、按引用捕獲和按值捕獲1.1 原理1.2 案例 二、弱引用2.1 原理2.2 案例一2.3 案例二&#xff1a;使用base庫的弱引用 三、總結 在C回調中&#xff0c;當使用Lambda表達式捕獲外部變量時&#xff0c;有兩種捕獲方式&#xff1a;按值捕獲和按引用捕獲。 一、按引用捕獲…

Matlab自學筆記三十:元胞數組的修改、添加、刪除和連接

1.說明 元胞數組的子數組或元素也是元胞型的&#xff0c;其元素內容&#xff08;值&#xff09;是本身類型&#xff0c;因此&#xff0c;在添、刪、改和連接處理時&#xff0c;必須明確每個元素的值的類型和大小&#xff0c;否則&#xff0c;編程報錯是不可避免的了。看本文前…

Python 點云裁剪

點云裁剪 一、介紹1.1 概念1.2 函數講解二、代碼示例2.1 代碼實現2.2 代碼講解三、結果示例一、介紹 1.1 概念 點云裁剪 :根據待裁剪對象的多邊形體積(json文件)實現點云的裁剪。 1.2 函數講解 下面代碼示例中主要用到了兩個函數。 讀取待裁剪對象的多邊形體積信息(json文…

淺談C++函數

目錄 一、函數的概念二、調用函數的兩個前提三、函數傳參的三種形式四、函數返回類型 一、函數的概念 函數是C程序的基本模塊&#xff0c;通常一個C程序由一個或多個函數組成。函數可以完成用戶指定的任務&#xff0c;一般分為庫函數和用戶自定義的函數。函數由函數頭和函數體…

先進制造aps專題六 aps軟件開發最大的難點,設備甘特圖開發

aps軟件開發最大的難點&#xff0c;設備甘特圖開發 一般認為&#xff0c;aps軟開發中&#xff0c;算法是難的&#xff0c;排程算法難&#xff0c;優化算法更難&#xff0c;但其實最大的難點是設備甘特圖開發 aps軟件設備甘特圖開發的幾個難點如下 1 和項目甘特圖一行顯示一個…

02. Flink 快速上手

02. Flink 快速上手 1、創建項目導入依賴 pom文件&#xff1a; <properties><flink.version>1.17.0</flink.version> </properties><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java<…

k8s配置pods滾動發布

背景 采用微服務架構部署的應用&#xff0c;部署方式都要用到容器化部署k8s容器編排&#xff0c;最近我在公司負載的系統也是用的上述架構部署&#xff0c;但是隨著系統的運行&#xff0c;用戶提的需求就會越多&#xff0c;每次更新的話都要停機發布&#xff0c;最用戶側來說就…

【C語言刷題系列】求一個數組中兩個元素a和b的和最接近整數m

&#x1f493; 博客主頁&#xff1a;倔強的石頭的CSDN主頁 &#x1f4dd;Gitee主頁&#xff1a;倔強的石頭的gitee主頁 ? 文章專欄&#xff1a;C語言刷題系列 目錄 一、問題描述 二、解題思路 解題思路&#xff1a; 解題步驟: 三、C語言代碼實現及測試 一、問題描述 給定一…

指北者智能音樂學習機隆重亮相廣州國際樂器展

2024年5月23-26日廣州國際樂器展覽會在廣交會展館B區隆重開幕&#xff0c;本屆展會開設5大展廳、50000平方米的主題展區&#xff0c;吸引了700多家國內外參展商參展&#xff0c;打造集展示、商貿、文化交流、文娛于一體的廣闊平臺。深圳市指北科技有限公司也攜旗下品牌指北者智…

AWS云服務器每月費用高昂,如何優化達到節省目的?

AWS云服務器每月費用可能因不同的使用情況和配置而有所不同。為了優化并節省AWS云服務器的費用&#xff0c;aws的合作伙伴九河云提供了一些建議&#xff1a; &#xff08;1&#xff09;調整實例大小&#xff1a;確保你使用的實例大小與你的工作負載相匹配。實例的容量每增加一倍…