【软件设计师】知识点简单整理

文章目录

    • 数据结构与算法
      • 排序算法
      • 关键路径
    • 软件工程
      • 决策表
      • 耦合类型
    • 编程思想
      • 设计模式
    • 计算机网络
      • 域名请求过程

数据结构与算法

排序算法

  • 哪些排序算法是稳定的算法?哪些不是稳定的算法,请举出例子。
    稳定排序算法:冒泡排序、插入排序、归并排序、基数排序、计数排序。
    非稳定排序算法:快速排序、堆排序、选择排序(例:快速排序)。

  • 图相关的算法有哪些
    遍历算法‌:
    ‌广度优先搜索(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.mzph.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中通过自定义的一个变量或者条件实现选…