计算机软件技术基础复习

数据结构

第0节 算法基础

算法分析的目的:分析算法的效率以求改进。

计算机算法:对特定问题求解步骤的一种描述,是指令的有限序列。其中每一条指令表示一个或多个操作。

算法特性:输入、输出、可行性、有穷性、确定性

第一节 数据结构的基本概念

数据结构:指相互有关联的数据元素的集合。
在这里插入图片描述

常见术语:

  • 数据:计算机处理的对象
  • 数据元素:数据的基本单位(一个数据元素可由若干数据项组成),又称作结点或记录
  • 数据项:数据的最小单位,也称作字段或域

在这里插入图片描述

数据结构三个层次:

  • 逻辑结构:反应数据元素之间逻辑关系的数据结构。
    • 表示数据元素的信息
    • 表示各数据元素之间的前后件关系
  • 存储结构:数据的逻辑结构在计算机存储空间中的存放形式(也称为数据的物理结构)
  • 运算:插入、删除、修改、查找、排序等,其依赖于存储结构

数据结构三个层次之间的关系:

  • 逻辑结构唯一,存储结构不唯一
  • 存储结构是逻辑结构在计算机存放形式
  • 运算的实现依赖于存储结构

数据结构的描述:
G r o u p = ( D , R ) Group=(D,R) Group=(D,R)
D:有限个数据元素的集合

R:有限个结点间关系的集合

为了反映各元素之间的前后件关系,一般用如下二元组进行表示. ( a , b ) (a,b) (a,b)表示a是b的前件,b是a的后件.

在这里插入图片描述

线性结构:一对一

特性:1.有且只有一个根结点 2.每个结点最多一个前件,最多一个后件。(第一个数据元素无前件,最后一个无后件,其它有且仅有一个前驱和一个后继。)

非线性结构:多对多

存储结构的三种类型:

顺序存储:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。

在这里插入图片描述

链式存储:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示.

  • 其每个节点都由两部分组成

    1️⃣数据域存放元素本身的数据

    2️⃣指针域存放指针

在这里插入图片描述

索引存储:将具有n个结点的线性表按性质划分成m个子表,然后分别存储此m个子表,且对这m个子表建立一个索引表

在这里插入图片描述

第二节 线性结构

线性表

定义:由n个元素构成的一个有限序列。除了第一个元素外,有且只有一个前件;出了最后一个元素外,有且只有一个后件。

特性:1️⃣数据元素之间呈现线性关系2️⃣同一个线性表内的元素必须是相同的数据类型

顺序表和链表的特点

顺序表:

优点:1.存储密度大(结点本身所占存储量/结点结构所占存储量)2. 可以随机存取表中任一元素

缺点:1.在插入、删除某一元素时,需要移动大量元素 2. 浪费存储空间 3.属于静态存储形式,数据元素的个数不能自由扩充

实现循环队列

假设循环队列的初始状态为空,即s=0,且front=rear=m

队满的条件:s=1,front=rear

(sq.rear+1)%maxsize==sq.front,在具有n个单元的循环队列中,队满时共有n-1个元素

image-20230209145658015 image-20230209145711280
######实现循环队列的入队#######
#include<iostream>
using namespace std;
template <typename T>
void insertcq(T *q,int m,int *rear,int *front,int *s,T x)
{
    if((*s==1)&&(*rear==*front)){
        cout<<"Queue-overflow\n";
        return;
    }
    *rear=*rear+1;
    if(*rear==m+1)	*rear=1;
    q[*rear-1]=x;	*s=1;return;
}


######实现循环队列的出队#######
#include<iostream>
using namespace std;
template <typename T>
void delcq(T *q,int m,int *rear,int *front,int *s)
{
    T y;
    if(*s==0){
        cout<<"Queue-underflow\n";
        return;
    }
    *front=*front+1;
    if(*front==m+1)	*front=1;
    *y=q[*front-1];
    if(*front==*rear) {
        *s=0;
    }
    return;

}

第三节 非线性结构

相关术语

  1. 根节点:没有前驱,仅有后继
  2. 分支结点:有且仅有一个前驱,可以有多个后继
  3. 叶结点:没有后继,仅有前驱
  4. 结点的度:该结点拥有的子树数目。
  5. 树的度:最大的结点度
  6. 深度:最大的层次数

操作系统

操作系统概述

定义:控制和管理系统资源,方便用户使用计算机的程序集合

作用:

  1. 管理系统资源
  2. 为用户提供资源共享的条件和环境,并对资源的使用进行合理调度。
  3. 提供良好的输入输出的方便环境
  4. 规定用户的接口

功能和主要任务:

  1. 处理机管理;2.存储器管理;3.设备管理;4.文件管理;5.作业管理

批处理系统、分时系统、实时系统:

  1. 批处理:作业成批进入系统后被队列,然后调度权限全部交给系统
  2. 分时:对若干个并发程序对CPU的分时,其中每个程序对cpu的时间分享单位为时间片(解决人机交互,进行及时响应,共享主机,方便进行程序的调试);特点:同时性、独立性、及时性、交互性
  3. 实时系统:对随即发生的外部事件做出及时的响应并对其进行处理
    • 实时过程控制系统:工业生产的自动化控制、导弹发射等自动控制和实验过程控制
    • 实时信息处理系统:机票预定、资料查询等。

进程和程序

顺序程序的特点:

1.顺序性;2.封闭性;3.可再现性

并发程序的特点:

1.并行性;2.共享性


程序的定义:由若干条具有一定功能的机器指令所组成的集合,其之间存在顺序关系

进程:指—个具有—定独立功能的程序关于某个数据集合的一次运行活动。进程是可以并发执行的程序的执行过程,它是控制程序管理下的基本的多道程序单位。

image-20230208212654427

进程的状态及转化:

1.运行状态:正在占据着CPU

2.就绪状态:该进程已经获得除CPU以外的所有资源,只是因为缺少CPU而不能运行下去。

3.等待状态:一个进程正在等待某个事件而暂时停止执行。

进程只能在运行状态下结束。

image-20230208214402869
死锁

定义:若干个进程均因互相等待对方所占有的资源而无限等待。

必要条件:

  1. 资源的独占抢用
  2. 资源的非抢占分配
  3. 资源的部分分配
  4. 对资源的循环等待

预防方法:

  1. 资源的部分分配(用来破坏第三个必要条件)
  2. 资源的顺序分配法:破坏第4个条件
  3. 银行家算法进行动态分配

进程的互斥和同步

临界资源:排他性使用的资源,一次只允许一个进程使用的资源。

临界区:在具有互斥关系的各个进程之中,访问临界资源的程序段称为临界区或临界段(只针对某一资源而言的)


PV操作是低级通信原语,信号量是一个只能由P/V操作改变其值的整数变量。

image-20230208220159778

进程的互斥:

  • 当多个进程共享数据块或其他排他性使用的资源时,不能同时进入存取或使用,但进入的次序可以是任意的

    image-20230209114943109

    信号量实现进程互斥

进程的同步:

  • 进程之间为了合作完成一个任务,而需要互相等待和交换信息的相互制约关系
image-20230209115607243

信号量实现进程同步

进程通信:

  1. 信号同步:低级通信原语,只要收到信号就能知道含义
  2. 信件同步:高级通信原语,收到信件,对信件进行分析,然后采取相关操作。

存储空间的组织

存储管理的功能:

  1. 地址变换
  2. 内存分配
  3. 存储共享与保护
  4. 存储器扩充

地址变换(地址映射):

  • 当用户程序进入内存执行时,必须把用户程序中所有相对地址转换成内存中的实际地址,否则用户程序无法执行。

地址重定位:

  • 在进行地址变换时,必须修改程序中所有与地址有关的项,要对程序中的指令地址以及指令中有关地址的部分进行调整。

内零头:指分配给作业的存储空间中未被利用的部分

外零头:指系统中无法利用的小存储块

分页系统与分段系统各有什么优缺点?

分页存储管理的优点为:

(1)由于提供了大容量的虚拟存储器,用户的地址空间不再受内存大小的限制,大大方便了用户的程序设计;

(2)由于作业地址空间中的各页面都是按照需要调人内存的,不用的信息不会调入内存,很少用的信息也只是短时间驻留在内存,因此更有效地利用了内存;

(3)由于动态分页管理提供了虚拟存储器,每个作业一般只有一部分信息占用内存,从而可以容纳更多的作业进人系统,这就更有利于多道程序的运行。

分页存储器的缺点是不利于程序的动态连接装配,也不利于程序与数据的共享。

分段存储管理的优点是有利于程序的动态连接装配,也有利于程序与数据的共享,从而更有利于用户的程序设计。

分段存储器的缺点是不利于内存的有效利用。

image-20230209133108126 image-20230209133124060 image-20230209133012765

数据库技术

数据描述

  1. 现实世界:所有客观存在的事物及其相互之间的联系

  2. 观念世界:1️⃣属性2️⃣实体3️⃣实体型4️⃣实体集

  3. 数据世界:

    数据项(字段)、记录、记录型、文件、关键字

数据模型

  1. 层次模型:1️⃣有一个数据记录没有父亲,这个记录为根节点2️⃣其他数据记录有且一个父亲

    image-20230209134335574
  2. 网状模型:1️⃣可以有一个以上的结点没有父亲2️⃣至少有一个结点有多于一个的父亲

    image-20230209134546258
  3. 关系模型:关系必须规范,满足一定规范条件,关系的每一个分量必须是不可分的数据项

    image-20230209134801162

关系运算:

  • 笛卡尔积:第一个元组每个元素与第二个元组每个元素进行组合
  • 投影运算:类似于提取某几列的操作
  • join:保留了条件列
  • natural join:去除重复属性

数据库设计

什么是E-R图?利用E-R图进行数据库概念结构设计分为哪几步?

E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。用"矩形框"表示实体型,矩形框内写明实体名称;用"椭圆图框"表示实体的属性,并用"实心线段"将其与相应关系的"实体型"连接起来;用"菱形框"表示实体型之间的联系成因,在菱形框内写明联系名,并用"实心线段"分别与有关实体型连接起来,同时在"实心线段"旁标上联系的类型(1:1,1:n或m:n)。

利用E-R模型进行数据库的概念设计,可以分成三步:首先设计局部E -R模型,然后把各个局部E-R模型综合成一个全局的模型,最后对全局E-R模型进行优化。

分E-R图:各个实体与属性之间的联系,以及实体与实体之间的联系

image-20230209135842264

初步ER图:存在属性域、命名、结构冲突

基本E-R图

image-20230209135936642

实体转为关系结构:

  1. 每个实体型转为一个关系模式

  2. 每个联系分别转为关系模式

    image-20230209140133926
    • 主键需要标注#
    • 外键为下波浪号

软件技术

软件生命周期

软件定义期:包括问题定义、可行性研究、需求分析

软件开发期:包括系统设计、详细设计、编码和测试四个阶段

软件维护期:运行维护阶段(持续时间最长、付出代价最大的阶段

  1. 问题定义:定义开发项目的背景、目标、实现功能、性能指标及系统需要解决的问题。

  2. 可行性研究

  3. 需求分析:通过调研分析全面理解系统需求(关于系统做什么)

    • 确定对系统的综合要求
    • 对系统的数据要求进行分析
    • 推到系统详细模型系统
    • 修正开发计划,建立模型系统
  4. 总体设计:描述系统如何做,怎样实习目标系统

  5. 详细设计

  6. 编码

  7. 测试

    1️⃣测试的目的:尽量发现程序中的错误,绝不能证明程序的正确性

    2️⃣调试的目的:推断错误原因,进一步改正错误

  8. 运行维护阶段

image-20230209142927585

白盒测试:根据对程序内部逻辑结构的分析来选择测试用例。

黑箱测试:完全不考虑程序的内部结构和特征,只是根据程序功能导出测试用例

结构化设计:把一个大型系统分解为若干个相对独立、功能单一的模块。同时提出了评价模块结构图质量的具体标准,模块之间的耦合度以及模块各个成分之间的联系。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miracle Fan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值