软件设计师-知识点

系统总线

系统总线分为三部分:

  • 数据总线
  • 地址总线
  • 控制总线

主要作用:用于CPU、主存和外设部件之间的连接

DMA控制器/中断控制器(CPU)

DMA控制器和中断控制器(CPU)发出的数据地址:主存物理地址
释:和I/O设备相关的数据都是直接读入主存里面的,不会直接放到缓存,也不会保存到硬盘


主要作用:用于I/O设备的连接

三级存储体系

第一层:高速缓存(Cache)
第二层:主存(内存)
第三层:硬盘(外存)

海明码

k:校验位
n:信息位
存在关系:2k ≥ n + k + 1

码距:
码距≥2开始具有检错(校验)能力
奇偶校验码的码距=2

中断向量

中断向量提供:中断服务程序的入口地址

OSI参考模型

有五层和七层之分
在这里插入图片描述

应用层:对接用户,提供接口等服务
表示层:对内容进行格式化表示和转换数据(加密解密)
会话层:建立、维护和结束会话连接
传输层:提供可靠的数据传输服务
网络层:负责将数据包(packet)从源端传输到目的端,并处理网络路由和转发(路由器、三层交换机)
数据链路层:在物理层提供的服务基础上向网络层提供服务(网卡、网桥、交换机、无线接入点WAP)
物理层:在物理信道上透明地传输原始的比特流,为数据链路层提供数据传输服务(集线器、中继器)

PKI体系

由SSL/TSL实现HTTPS应用
在这里插入图片描述
浏览器和服务器之间用于加密HTTP消息的方式是:会话密钥 + 对称加密
浏览器和服务器之间用于加密会话密钥的方式是:对方公钥 + 公钥加密

著作权

在这里插入图片描述
署名权不能被继承。

好的软件设计原则

模块化
提高模块独立性
提高抽象层次

活动图

关键路径:用时最长的路径

位示图

作用:用1位二进制数来表示物理块的使用情况,0表示未使用,1表示已经使用

通常会提供一下参数:
计算机系统的字长,比如64位
磁盘容量,比如512GB
物理块大小,比如4MB

求位示图的大小(单位字)

计算:
①先求磁盘一共有多少个物理块:512GB ÷ 4MB = 128 × 1024 个
②求需要多少个字能完全表示这些物理块的使用情况,也就是位示图的大小:
128 × 1024 / 64 = 2048 字

磁盘调度

分为移臂调度和旋转调度

移臂调度中,先来先服务最短寻道算法都可能随时改变移动臂的运行方向。
在这里插入图片描述
在这里插入图片描述
电梯调度和单向扫描算法则不会随意变换方向
在这里插入图片描述
在这里插入图片描述

多线程

进程中的所有资源(代码段、全局变量、打开的文件),线程都可以共享;
线程的栈指针不能被共享。

PV信号

① 先按顺序把信号量标出来,从小到大P12 P13 P23 P24 P34 P45 P46 P56
分别用 S1 S2 S3 S4 S5 S6 S7 S8 表示
在这里插入图片描述
② 执行前用P(Si)表示,执行后用V(Si)表示,直接按照标出来的信号量对号入座即可。
在这里插入图片描述

软件开发方法

原型化

开发人员首先对用户提出的问题进行总结,并就与系统的主要需求取得一致意见后,开发出一个原型并运行。随后,开发人员会反复对原型进行修改,使之逐步完善,直到用户对系统完全满意为止。

原型化开发方法的优势在于,它能够帮助开发人员更快地理解并确定用户需求,提高产品设计的质量和效率,同时也能够提高用户对产品的满意度和忠诚度。此外,原型还可以作为开发人员与用户以及团队中其他利益相关者(如产品经理、设计师等)之间沟通的桥梁,从而提高团队的协作效率。

然而,原型化开发方法也有其局限性。它可能不适用于开发大型、复杂的信息系统,因为对于大型系统来说,完全通过原型来模拟和实现所有功能可能并不实际。此外,如果系统难以维护,或者用户合作不好,盲目纠错,可能会拖延开发进度。

总的来说,原型化开发是一种动态设计过程,它需要加强用户的参与和决策,以尽快地将需求确定下来。这种方法适用于需求不明确、变化频繁的小型、简单项目,可以帮助开发人员更快地确定产品的需求和设计方案,加速开发进度。

结构化

结构化开发方法是一种用系统工程的思想和工程化的方法,按照用户至上的原则,结构化、模块化、自顶向下地对系统进行分析和设计的方法。其基本思想是软件功能的分解和抽象。

结构化开发方法的开发过程通常包括以下几个阶段:

  • 系统规划阶段:根据用户的系统开发请求,进行初步调查,明确问题,确定系统目标和总体结构,确定分阶段实施进度,然后进行可行性研究。
  • 系统分析阶段:分析业务流程、数据与数据流程、功能与数据之间的关系,最后提出分析处理方式和新系统逻辑方案。
  • 系统设计阶段:进行总体结构设计、代码设计、数据库(文件)设计、输入/输出设计、模块结构与功能设计。根据总体设计,配置与安装部分设备,进行试验,最终给出设计方案。
  • 系统实施阶段:按照系统设计成果,组织人员编程,并进行人员培训、数据准备和试运行等工作。
  • 系统运行与维护阶段:进行系统的日常运行管理、评价、监理审计。在运行的过程中,系统难免会出现修改、调整和维护。如果出现了不可调和的大问题(这种情况一般是若干年后,系统运行的环境已经发生了根本的变化时才可能出现),则用户将会进一步提出开发新系统的要求,这标志着老系统生命的结束、新系统的诞生。

结构化开发方法的主要优点包括:

  • 开发工作的顺序性、阶段性适合初学者参与软件的开发。
  • 开发工作的阶段性评估可以减少开发工作重复性和提高开发的成功率。
  • 有利于提高系统开发的正确性、可靠性和可维护性。
  • 具有完整的开发质量保证措施和开发文档标准体系。

然而,结构化开发方法也存在一些不足,主要是开发周期较长,个件化开发阶段的文档编写工作量过大或过于烦琐,无法发挥开发人员的个性化开发能力。此外,该方法主要适用于组织规模较大、组织结构相对稳定的企业,这些企业往往业务处理过程规范、信息系统数据需求非常明确,在一定时期内需求变化不大

结构化方法:这是一种基于系统工程思想的开发方法,强调开发过程的整体性和全局性。它包括结构化分析、结构化设计和结构化程序设计三个阶段,面向数据流进行开发。
Jackson方法:这是一种面向数据结构的开发方法,首先描述问题的输入/输出数据结构,分析其对应性,然后推出相应的程序结构。它以数据结构为驱动,适合小规模项目。
原型方法:在用户需求不清、需求经常变化的情况下,原型方法非常适用。它通过快速构建和展示软件原型,让用户参与反馈和修改,从而逐步明确需求。
面向对象方法:这是一种以对象作为基本元素,分析、设计和实现软件的方法。它符合人类认识世界的方式,易于理解和维护。面向对象的方法包括多种实现方式,如Booch、Coad和OMT等。
敏捷开发方法:敏捷开发方法强调快速迭代、逐步交付,以及团队协作和快速响应需求变化。它包括多种具体的开发方法,如极限编程(XP)、Scrum、看板(Kanban)等。
除了上述方法外,还有一些其他常见的软件开发方法,如:
瀑布模型:这是一种线性的开发过程,按照顺序完成需求分析、设计、实现、测试和维护等阶段。每个阶段的输出是下一个阶段的输入,各个阶段的执行是串行的。
原型模型:通过快速建立初步系统原型,进行用户反馈并交互改进的方法。
迭代模型:将软件开发划分为多个迭代周期,每个迭代周期按照瀑布模型进行开发,每个迭代周期的输出是可交付的软件产品,可以根据用户反馈进行调整。
增量模型:将软件开发划分为多个增量,每个增量包含一部分功能,完成后将其交付给用户。每个增量都是可用的软件版本,可以反馈用户需求和意见。
螺旋模型:将软件开发划分为多个循环,每个循环包含需求确定、风险分析、开发和测试等阶段。

敏捷开发方法

极限编程

在这里插入图片描述

关键字:4大价值观、5个原则、12个最佳实践

水晶法

在这里插入图片描述
关键字:策略、约定、方法论

并列争求法

在这里插入图片描述
关键字:30天、迭代、冲刺、优先级、多个小组并行、

自适应软件开发

在这里插入图片描述
关键字:6个原则

耦合

在这里插入图片描述

管道-过滤器体系

在这里插入图片描述

MaCabe计算程序复杂度

在这里插入图片描述

软件维护

在这里插入图片描述

面向对象测试

在这里插入图片描述

面向对象设计原则

在这里插入图片描述

序列图(时序图)

描述以时间顺序组织的对象之间的交互活动。

用例图

描述系统在它的周边环境的语境中所提供的外部可见服务

对象图

描述某一时刻一组对象以及他们之间的关系。

类图

描述一组对象、接口和它们之间的关系

活动图

描述系统内从一个活动到另一个活动的流程。

包图

在这里插入图片描述

Python

① for语句可以用在序列(如列表、元组和字符串)上进行迭代访问
② 循环结构如for和while后可以加else语句
不可以用if…else和switch…else语句表示选择结构
④ 支持嵌套循环

元组

定义一个元组的语法:

x = (1,2,1,2)
x = tuple()
x = 1,2,1,2

易错:

x = (1)

这样定义出来的 x 不是一个元组,而是一个 int 类型的变量

函数依赖的公理系统

在这里插入图片描述

自反律

Y∈X 和 X→Y(属于和决定是相对概念)可以对倒,叫自反,这种规律就叫自反律
在这里插入图片描述

关系模式

例题:
在这里插入图片描述
推出候选关键字:
AB 能决定 C
CD 能决定 B
只有A、D是不能被决定的,所以候选关键字(主码)必然包含A和D,如ABD、ACD。
ABD,因为AB能决定C,所以可以推出ABCD
ACD,因为CD能决定B,所以可以推出ABCD

推出主属性和非主属性:
上面知道了候选关键字(主码)为ABD和ACD,所以主属性就是ABCD,全部都是。

SQL授权语句格式在这里插入图片描述

哈夫曼编码

每一颗哈夫曼二叉树,每个中间节点下都是2个节点,不会是单个叶子;
哈夫曼的节点是以权重排列的,所以从最小权重的两个数开始生成;
每次用最小的两个数生成子树,然后用子树父节点和其余数重新排序,如此重复
左比右小,左0右1;

二分查找

例题
在这里插入图片描述
二分查找画图判断,不会有分歧,一条路下去。

森林

森林转换二叉树过程:
在这里插入图片描述
例题:
在这里插入图片描述
结论:
如果有n棵树,结点总数分别为n1+n2+…+nm,转换成一颗二叉树
那么左子树包含n1个结点,右子树包含n2+n3+…+nm个节点

Kruskal算法

例题:
在这里插入图片描述

Web服务器

Linux常用Apache,默认Web目录为/home/httpd(/var/www/html)
Windows常用IIS,

协议

在这里插入图片描述

传输层协议

TCP: 可靠,面向连接
UDP: 不可靠,无连接

实体联系图

在这里插入图片描述

① 椭圆是属性,方形是实体,菱形是联系
② 联系也可以有属性
③ 实体与实体之间的一 一对应关系用 1 和 *表示
④ 关系模式格式(包括实体和联系):名称(属性一,属性二…)
⑤ 主键用实线,外键用虚线

设计模式

观察者模式

该模式适合当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新

邻接表、邻接矩阵

在这里插入图片描述

防火墙

防火墙的层次越高,效率越低,安全性越高(因为检查的东西越多,实现越复杂)

常见防火墙类型:

  • 包过滤防火墙:包过滤技术是一种基于网络层、传输层的安全技术,优点是简单实用,实现成本较低同时,包过滤操作对于应用层来说是透明的,它不要求客户与服务器程序做任何修改。但包过滤技术无法识别基于应用层的恶意入侵,如恶意的Java小程序以及电子邮件中附带的病毒。
  • 代理服务器防火墙:代理服务技术基于应用层,需要检查数据包的内容,能够对基于高层协议的攻击进行拦截,安全性较包过滤技术要好。缺点是处理速度比较慢,不适用于高速网之间的应用。另外,代理使用一个客户程序与特定的中间节点连接,然后中间节点与代理服务器进行实际连接。因此,使用这类防火墙时外部网络与内部网络之间不存在直接连接,即使防火墙发生了问题,外部网络也无法与被保护的网络连接。
  • 电路级网关防火墙:这种防火墙工作在传送层,主要用于监视和过滤进出网络的TCP或UDP数据包。它根据数据包的连接状态信息来决定是否允许该连接。

COCOMO软件成本估算模型

COCOMO用3个不同层次的模型来反映不同程度的复杂性,它们分别为:

  • 基本模型(Basic Model):是一个静态单变量模型,它用一个以已估算出来的源代码行数(LOC)为自变量的函数来计算软件开发工作量。
  • 中级模型(Intermediate Model):则在用LOC为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。
  • 详细模型(Detailed Model):包括中级COCOMO型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中分析、设计等各步骤的影响。

统一过程UP

Rational Unified Process 是软件工程的过程。它提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。

  • “用例驱动,以体系结构为核心,迭代及增量”的软件过程框架,由UML方法和工具支持。
  • 四个阶段:起始、细化、构建、移交
  • 每次迭代包含:计划、分析、设计、构造、集成、测试、内部发布和外部发布
  • 每个迭代有五个核心工作流

中间代码

常见的中间代码表达形式有三种:

  • 后缀式(逆波兰表达式)
  • 三地址码(三元式、四元式都属于三地址码的变种)

MPEG

MPEG-1 音视频编码压缩方案,用于VCD
MPEG-2 音视频编码压缩方案,用于DVD
MPEG-7 是多媒体内容描述接口标准
MPEG-21 是多媒体应用框架标准

双端队列

当双端队列要求进出同一端口时,表现为先进后出

数据库设计

简述数据库设计的六个步骤。
1)需求分析,得出数据流图DFD(Data Flow Diagram)、数据字典DD(Data Dictionary)
2)概念设计,设计E-R图(Entity-Relationship Diagram)
3)逻辑设计,设计关系模式
4)物理设计,设计数据存储结构、索引
5)数据库实施,数据装载
6)数据库运行和维护

参考教程:B站Up主 zst_2001

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/21279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++与c

命名空间的设置: 避免冲突 命名空间: 如果将变量全部定义在全局可能不安全,都可以进行修改。 如果将变量定义在局部,当出了大括号就不能使用。 所以说在定义一个命名空间的时候 定义函数,变量,命名空间…

软件3班20240603

经典 报错 404 大概率 就是 这图 的 路径 写错i了 package com.yanyu;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jav…

现货白银的交易时间有多连贯?

国际市场上的现货白银优势很多,它除了具备国内同类型品种所不具备的数十倍资金杠杆外,也基本上实现了全天24小时不间断的交易时间,所以投资者可以在全天候连贯的行情中,寻找属于自己的交易获利机会。 但对于内地的投资者来说&…

从 Lerna 到现代化:原生 Workspaces 和 Changesets 的高效协作

1. 背景 最近新接手的一些 monorepo 的库项目,项目是用 lerna 进行管理的,使用过程中有一些不丝滑的地方,包括: lerna 版本过旧,使用 4.0.0(现版本 8.1.3),功能差异过大&#xff0…

前端JS必用工具【js-tool-big-box】学习,检测密码强度

js-tool-big-box 前端工具库,实用的公共方法越来越多了,这一小节,我们带来的是检测密码强度。 我们在日常开发中,为了便于测试,自己总是想一个简单的密码,赶紧输入。但到了正式环境,我们都应该…

FullCalendar日历组件集成实战(8)

背景 有一些应用系统或应用功能,如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件,但功能比较简单,用来做数据展现勉强可用。但如果需要进行复杂的数据展示,以及互动操作如通过点击添加事件&#xff0…

【算法每日一练】新月轩就餐

思路: 其实很容易想到是双指针或者双端队列。 我们设置一个type表示当前区间已经有了多少种厨师,同时还需要记录区间中每个元素出现的次数,然后比较棘手的是移动问题了,什么时候移动呢? 我们可以发现当区间当队头元…

手眼标定学习笔记

目录 标定代码: 手眼标定原理学习 什么是手眼标定 手眼标定的目的 eye in hand eye to hand AXXB问题的求解 标定代码: GitHub - pumpkin-ws/HandEyeCalib 推荐博文: https://zhuanlan.zhihu.com/p/486592374 手眼标定原理学习 参…

国产操作系统上Vim的详解01--vim基础篇 _ 统信 _ 麒麟 _ 中科方德

原文链接:国产操作系统上Vim的详解01–vim基础篇 | 统信 | 麒麟 | 中科方德 Hello,大家好啊!今天给大家带来一篇在国产操作系统上使用Vim的详解文章。Vim是一款功能强大且高度可定制的文本编辑器,广泛应用于编程和日常文本编辑中。…

记一次cms代码审计

000:前言 记录一次小型cms代码审计 001:任意文件删除 由于代码繁杂,不再一一展示 /app/controller/kindeditor.class.php 关键漏洞代码 public function delete() {$path ROOT_PATH.$_GET[pic];unlink($path);$flash M("flash&qu…

Postgre数据库初探

一、PostgreSQL介绍 PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES, 版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。POSTGRES 领先的许多概念在很久以后才出现在一些商业数据库系统中。 PostgreSQL是最初的伯克利代码的开…

vscode编译c/c++找不到jni.h文件

解决办法: 一、下载JDK 访问Oracle官网的Java下载页面:Java Downloads | Oracle 选择适合您操作系统的JDK版本: 对于Windows,选择“Windows x64”或“Windows x86”(取决于您的系统是64位还是32位)。对于Linux&#…

RPM包方式离线部署gitlab

下载安装包 要求:可以联网,系统及版本与目标服务器一致。配置gitlab yum仓库 curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash 新建包存放目录 mkdir /root/gitlab 下载gitlab及相关安装包 …

老赛棍版端口,扫别人没扫到的资产

0x001 获取目标信息 因为某些敏感原因,这部分干脆以长沙为例,仅做查询方式参考。首先FOFA搜:region"Hunan" && city"Changsha",全部转换为C段后去重,就得到该城市的大致网段:…

Android O Camera深度研究

目录 Adnroid O之前的Android camera软件框架 Adnroid O camera软件框架 Passthrough Mode Binderized mode Wrapper shim for libhardware HALs Wrapper shim for libhardware HALs Customized Treble Camera HAL/framework Camera HAL transition and removal plan …

Android精通值Fragment的使用 —— 不含底层逻辑(五)

1. Fragment 使用Fragment的目标:根据列表动态显示内容,更简洁显示界面、查找界面 eg. 使用新闻列表动态显示新闻 1.1 Fragment的特性 具备生命周期 —— 可以动态地移除一些Fragment必须委托在Activity中使用可以在Activity中进行复用 1.2 Fragmen…

新鲜速递:图解新颖LLM的CoPE位置编码

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技…

基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法

基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法 本文介绍了基于docker的oracle12.2.0.1部署,包含了oracle基本配置、监听器和实例启动方法、PDB和CDB操作方法、表空间建立和用户数据库建立、常见启动问题解决等,并介绍了镜像制…

二、go微服务项目“商城项目实战开发”第二步grpc和gin的直连调用

文章目录 商城项目实战开发-GRPC和GIN的直连调用01、本次课程微服务的技术栈02、用户服务接口定义和实现登录1、密码问题01、MD5的方式02、加盐的方式03、动态盐04、使用加盐框架passwordEncoder2、用户服务接口的暴露3、Grpc的实现步骤1.定义暴露接口2.编写user的调用文件3.编…

YOLOv8_obb预测流程-原理解析[旋转目标检测理论篇]

YOLOv8_obb的预测流程,主要分预处理模块、推理模块和后处理模块。这里面有很多内容是和目标检测预测流程是重合的,主要区别在于Angle分支、NMS后处理以及regularize_rboxes部分。本文也主要介绍一下这三个模块,其他模块可以结合YOLOv8预测流程-原理解析[目标检测理论篇]一起…