【軟件設計師】知識點簡單整理

文章目錄

    • 數據結構與算法
      • 排序算法
      • 關鍵路徑
    • 軟件工程
      • 決策表
      • 耦合類型
    • 編程思想
      • 設計模式
    • 計算機網絡
      • 域名請求過程

數據結構與算法

排序算法

  • 哪些排序算法是穩定的算法?哪些不是穩定的算法,請舉出例子。
    穩定排序算法:冒泡排序、插入排序、歸并排序、基數排序、計數排序。
    非穩定排序算法:快速排序、堆排序、選擇排序(例:快速排序)。

  • 圖相關的算法有哪些
    ?遍歷算法?:
    ?廣度優先搜索(BFS)?:從起始節點開始,逐層訪問所有鄰接節點,適用于查找最短路徑。
    ?深度優先搜索(DFS)?:從起始節點開始,盡可能深地搜索,適用于探索復雜圖結構。
    ?A*算法?:啟發式搜索算法,結合了BFS和DFS的特點,通過估值函數找到最短路徑?
    ?最短路徑算法?:
    ?Dijkstra算法?:用于找到單個源點到所有其他點的最短路徑。
    ?Bellman-Ford算法?:適用于包含負權邊的圖。
    ?Floyd-Warshall算法?:計算所有頂點對之間的最短路徑?
    ?最小生成樹算法?:
    ?Prim算法?:從單一節點開始構建最小生成樹。
    ?Kruskal算法?:通過邊的權重選擇最小生成樹?
    ?圖匹配算法?:
    ?匈牙利算法?:用于解決分配問題,特別是在二分圖中?

關鍵路徑

關鍵線路也稱關鍵路徑 [3]。網絡計劃中,自始至終全部由關鍵工作組成的線路或線路上總的工作持續時間(總工期)最長的路線叫作關鍵線路

軟件工程

決策表

決策表又稱判斷表,是一種呈表格狀的圖形工具,適用于描述處理判斷條件較多,各條件又相互組合、有多種決策方案的情況。精確而簡潔描述復雜邏輯的方式,將多個條件與這些條件滿足后要執行動作相對應。但不同于傳統程序語言中的控制語句,決策表能將多個獨立的條件和多個動作直接的聯系清晰的表示出來。

耦合類型

內容耦合
內容耦合是指一個模塊直接訪問或修改另一個模塊的內部數據或實現細節。這種耦合方式使得模塊之間的依賴性極強,任何對內部數據的修改都會影響到其他模塊,導致系統難以維護和擴展。

公共耦合
公共耦合是指多個模塊共享同一個全局數據或資源。這種耦合方式使得模塊之間的依賴性較強,因為任何對全局數據的修改都會影響到所有依賴該數據的模塊。公共耦合可能導致數據不一致性和難以調試的問題。

外部耦合
外部耦合是指模塊依賴于外部系統或環境,如數據庫、文件系統或網絡服務。這種耦合方式使得模塊的可移植性和可測試性降低,因為模塊的行為依賴于外部系統的狀態和配置。

控制耦合
控制耦合是指一個模塊通過傳遞控制信息(如標志或參數)來影響另一個模塊的行為。這種耦合方式使得模塊之間的依賴性較強,因為模塊的行為依賴于傳遞的控制信息。控制耦合可能導致模塊的邏輯復雜性和難以理解。

數據耦合
數據耦合是指模塊之間通過傳遞數據進行交互,每個模塊只依賴于傳遞的數據,而不依賴于其他模塊的內部實現。這種耦合方式使得模塊之間的依賴性較低,因為模塊的行為只依賴于傳遞的數據。數據耦合是較為理想的耦合方式,有助于提高系統的可維護性和可擴展性。

標記耦合
標記耦合是指模塊之間通過傳遞復雜的數據結構(如記錄或對象)進行交互。這種耦合方式使得模塊之間的依賴性較強,因為模塊的行為依賴于傳遞的數據結構。標記耦合可能導致模塊的邏輯復雜性和難以理解。

時間耦合
時間耦合是指模塊之間的交互依賴于特定的時間順序或同步機制。這種耦合方式使得模塊之間的依賴性較強,因為模塊的行為依賴于特定的時間順序或同步機制。時間耦合可能導致系統的復雜性和難以調試。

順序耦合
順序耦合是指模塊之間的交互依賴于特定的執行順序。這種耦合方式使得模塊之間的依賴性較強,因為模塊的行為依賴于特定的執行順序。順序耦合可能導致系統的復雜性和難以維護。

功能耦合
功能耦合是指模塊之間的交互依賴于特定的功能或服務。這種耦合方式使得模塊之間的依賴性較強,因為模塊的行為依賴于特定的功能或服務。功能耦合可能導致系統的復雜性和難以擴展。

邏輯耦合
邏輯耦合是指模塊之間的交互依賴于特定的邏輯或算法。這種耦合方式使得模塊之間的依賴性較強,因為模塊的行為依賴于特定的邏輯或算法。邏輯耦合可能導致系統的復雜性和難以理解。公共耦合(Common Coupling)指一組模塊共同訪問同一個公共數據環境(如全局變量、共享內存、文件或物理設備),導致模塊間存在直接依賴關系。這種耦合的特點是:

編程思想

設計模式

  • 常用的設計模式有哪些,適合哪些場景?
    ?單例模式?:確保一個類只有一個實例,并提供一個全局訪問點。適用于需要嚴格控制實例數量的場景,如數據庫連接池、全局配置對象等?

?工廠模式?:提供一個創建對象的接口,讓子類決定實例化哪個類。適用于需要動態創建對象的場景,如物流系統中的不同運輸方式?

?策略模式?:定義一系列算法,并使它們可以相互替換。適用于有多種實現方式且需要靈活切換的場景,如日志記錄可以選擇寫入數據庫或文件?

?觀察者模式?:定義對象之間的一對多依賴關系,當一個對象狀態改變時,所有依賴對象都會收到通知并自動更新。適用于需要同步更新多個對象的狀態的場景?

?迭代器模式?:提供一種順序訪問聚合對象中各個元素的方法。適用于需要遍歷復雜數據結構的場景,如STL容器?

?模板方法模式?:定義一個算法的框架,允許子類重定義某些步驟而不改變算法的結構。適用于需要定義算法框架并提供鉤子方法讓子類實現的場景?

?責任鏈模式(Chain of Responsibility Pattern)?是一種行為設計模式,其核心思想是通過將多個處理對象連接成鏈狀結構,使請求在鏈上傳遞直到被處理,實現發送者與接收者的解耦。該模式支持動態擴展處理流程,廣泛應用于數據校驗、權限控制、工作流編排等領域。??

應用場景?總結:
??適配器模式?? 兼容舊接口(如USB轉Type-C)
??代理模式?? 控制訪問(如遠程代理、緩存代理)
??責任鏈模式?? 多級審批流程(如請假審批)
??狀態模式?? 對象狀態驅動行為(如訂單狀態流轉)
??建造者模式?? 復雜對象分步構建(如SQL查詢構造器)

計算機網絡

域名請求過程

域名解析過程:(假設域名為www.baidu.com)
先在HOSTS表或者本地主存中的DNS緩存中查詢
如果沒有,再通過遞歸查詢查找本地DNS服務器
如果還沒找到,本地DNS服務器通過迭代查詢查找根域名服務器,根域名服務器返回.com域的頂級域名服務器;
接著本地域名服務器向.com的頂級域名服務器發出請求,返回baidu.com權限域名服務器;
本地域名服務器向baidu.com權限域名服務器發送請求,得到了www.baidu.com的IP地址。

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

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

相關文章

FastAPI 支持文件下載和上傳

文章目錄 1. 文件下載處理1.1. 服務端處理1.1.1. 下載小文件1.1.2. 下載大文件(yield 支持預覽的)1.1.3. 下載大文件(bytes)1.1.4. 提供靜態文件服務1.1.5. 中文文件名錯誤 1.2. 客戶端處理1.2.1. 普通下載1.2.2. 分塊下載1.2.3. …

naive-ui切換主題

1、在App.vue文件中使用 <script setup lang"ts"> import Dashboard from ./views/dashboard/index.vue import { NConfigProvider, NGlobalStyle, darkTheme } from naive-ui import { useThemeStore } from "./store/theme"; // 獲取存儲的主題類…

Kotlin 協程 (三)

協程通信是協程之間進行數據交換和同步的關鍵機制。Kotlin 協程提供了多種通信方式&#xff0c;使得協程能夠高效、安全地進行交互。以下是對協程通信的詳細講解&#xff0c;包括常見的通信原語、使用場景和示例代碼。 1.1 Channel 定義&#xff1a;Channel 是一個消息隊列&a…

使用SQLite Studio導出/導入SQL修復損壞的數據庫

使用SQLite Studio導出/導入SQL修復損壞的數據庫 使用Zotero時遇到了數據庫損壞&#xff0c;在軟件中寸步難行&#xff0c;遂嘗試修復數據庫。 一、SQLite Studio簡介 SQLite Studio是一款專為SQLite數據庫設計的免費開源工具&#xff0c;支持Windows/macOS/Linux。相較于其…

【git config --global alias | Git分支操作效率提升實踐指南】

git config --global alias | Git分支操作效率提升實踐指南 背景與痛點分析 在現代軟件開發團隊中&#xff0c;Git分支管理是日常工作的重要組成部分。特別是在規范的開發流程中&#xff0c;我們經常會遇到類似 feature/user-management、bugfix/login-issue 或 per/cny/dev …

(八)深度學習---計算機視覺基礎

分類問題回歸問題聚類問題各種復雜問題決策樹√線性回歸√K-means√神經網絡√邏輯回歸√嶺回歸密度聚類深度學習√集成學習√Lasso回歸譜聚類條件隨機場貝葉斯層次聚類隱馬爾可夫模型支持向量機高斯混合聚類LDA主題模型 一.圖像數字化表示及建模基礎 二.卷積神經網絡CNN基本原…

在tensorflow源碼環境里,編譯出獨立的jni.so,避免依賴libtensorflowlite.so,從而實現apk體積最小化

需要在APP里使用tensorflow lite來運行PC端訓練的model.tlite&#xff0c;又想apk的體積最小&#xff0c;嘗試了如下方法&#xff1a; 1. 在gradle里配置 implementation("org.tensorflow:tensorflow-lite:2.16.1") 這樣會引入tensorflow.jar&#xff0c;最終apk的…

neo4j框架:java安裝教程

安裝使用neo4j需要事先安裝好java&#xff0c;java版本的選擇是一個犯難的問題。本文總結了在安裝java和使用Java過程中遇到的問題以及相應的解決方法。 Java的安裝包可以在java官方網站Java Downloads | Oracle 中國進行下載 以java 8為例&#xff0c;選擇最后一行的x64 compr…

[服務器備份教程] Rclone實戰:自動備份數據到阿里云OSS/騰訊云COS等對象存儲

更多服務器知識&#xff0c;盡在hostol.com 各位服務器的守護者們&#xff0c;咱們都知道&#xff0c;數據是數字時代的“黃金”&#xff0c;而服務器上的數據更是我們業務的命脈。可天有不測風云&#xff0c;硬盤可能會突然“壽終正寢”&#xff0c;手滑執行了“毀滅性”命令…

Nextjs App Router 開發指南

Next.js是一個用于構建全棧web應用的React框架。App Router 是 nextjs 的基于文件系統的路由器&#xff0c;它使用了React的最新特性&#xff0c;比如 Server Components, Suspense, 和 Server Functions。 術語 樹(Tree): 一種用于可視化的層次結構。例如&#xff0c;包含父…

山東大學計算機圖形學期末復習15——CG15

CG15 OpenGL緩沖區、讀寫操作以及混合&#xff08;Blending&#xff09; 一、OpenGL緩沖區概述 OpenGL中的緩沖區是用于存儲像素數據的內存區域&#xff0c;主要包括以下類型&#xff1a; 顏色緩沖區&#xff08;Color Buffer&#xff09;&#xff1a;存儲每個像素的顏色值…

html+css+js趣味小游戲~記憶卡片配對(附源碼)

下面是一個簡單的記憶卡片配對游戲的完整代碼&#xff0c;使用HTML、CSS和JavaScript實現&#xff1a; html <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"wid…

?個并發訪問量?較?的key在某個時間過期,在redis中這個時間過期什么意思

在 Redis 中&#xff0c;當提到一個鍵&#xff08;key&#xff09;“在這個時間過期”&#xff0c;指的是為該鍵設置了生存時間&#xff08;TTL, Time To Live&#xff09;或過期時間&#xff08;expiration time&#xff09;。一旦到達設定的過期時間&#xff0c;Redis 會自動…

【設計模式】- 行為型模式1

模板方法模式 定義了一個操作中的算法骨架&#xff0c;將算法的一些步驟推遲到子類&#xff0c;使得子類可以不改變該算法結構的情況下重定義該算法的某些步驟 【主要角色】&#xff1a; 抽象類&#xff1a;給出一個算法的輪廓和骨架&#xff08;包括一個模板方法 和 若干基…

ubuntu22.04 卸載ESP-IDF

要在Ubuntu 22.04上完全卸載ESP-IDF&#xff0c;請按照以下步驟操作&#xff1a; 卸載ESP-IDF的步驟 刪除ESP-IDF目錄&#xff1a; # 假設ESP-IDF安裝在~/esp/esp-idf目錄 rm -rf ~/esp/esp-idf刪除ESP-IDF工具鏈和下載的工具&#xff1a; rm -rf ~/.espressif從PATH中移除ESP…

SQLMesh 內置宏詳解:@PIVOT等常用宏的核心用法與示例

本文系統解析 SQLMesh 的四個核心內置宏&#xff0c;涵蓋行列轉換的 PIVOT、精準去重的 DEDUPLICATE、靈活生成日期范圍的 DATE_SPINE&#xff0c;以及動態表路徑解析的 RESOLVE_TEMPLATE。通過真實案例演示參數配置與 SQL 渲染邏輯&#xff0c;并對比宏調用與傳統 SQL 的差異&…

基于Springboot + vue3實現的工商局商家管理系統

項目描述 本系統包含管理員、商家兩個角色。 管理員角色&#xff1a; 用戶管理&#xff1a;管理系統中所有用戶的信息&#xff0c;包括添加、刪除和修改用戶。 許可證申請管理&#xff1a;管理商家的許可證申請&#xff0c;包括搜索、修改或刪除許可證申請。 許可證審批管理…

第五部分:第五節 - Express 路由與中間件進階:廚房的分工與異常處理

隨著你的 Express 應用變得越來越大&#xff0c;所有的路由和中間件都寫在一個文件里會變得難以管理。這時候就需要將代碼進行拆分和組織。此外&#xff0c;一個健壯的后端應用必須能夠優雅地處理錯誤和一些常見的 Web 開發問題&#xff0c;比如跨域。 路由模塊化 (express.Ro…

萌新聯賽第(三)場

C題 這道題用暴力去寫想都不要想&#xff0c;一定超時&#xff0c;于是我們需要優化&#xff0c;下面是思路過程&#xff1a; 如圖&#xff0c;本題只需找到x的因數個數和(n-x)的因數個數&#xff0c;這兩個相乘&#xff0c;得到的就是對于這個x來說組合的個數&#xff0c;且x…

【Android構建系統】如何在Camera Hal的Android.bp中選擇性引用某個模塊

背景描述 本篇文章是一個Android.bp中選擇性引用某個模塊的實例。 如果是Android.mk編譯時期&#xff0c;在編譯階段通過某個條件判斷是不是引用某個模塊A, 是比較好實現的。Android15使用Android.bp構建后&#xff0c;要想在Android.bp中通過自定義的一個變量或者條件實現選…