计算机软件技术基础复习

news2024/11/25 7:34:02

数据结构

文章目录

  • 数据结构
    • 第一节 数据结构的基本概念
    • 第二节 线性结构
      • 线性表
      • 顺序表和链表的特点
      • 实现循环队列
    • 第三节 非线性结构
  • 操作系统
    • 操作系统概述
    • 进程和程序
    • 存储空间的组织
  • 数据库技术
      • 数据库设计
  • 软件技术
    • 软件生命周期

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

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

常见术语:

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

在这里插入图片描述

数据结构三个层次:

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

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

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

数据结构的描述:
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

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

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

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

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

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

相关文章

SQLSERVER 的 truncate 和 delete 有区别吗?

一&#xff1a;背景 1. 讲故事 在面试中我相信有很多朋友会被问到 truncate 和 delete 有什么区别 &#xff0c;这是一个很有意思的话题&#xff0c;本篇我就试着来回答一下&#xff0c;如果下次大家遇到这类问题&#xff0c;我的答案应该可以帮你成功度过吧。 二&#xff1…

Vue2.0页面缓存机制联合页面标签的交互(keep-alive + router)

预期效果&#xff1a;&#xff08;借助iview-ui的在线体验页面示意一下&#xff09; 项目中只有一部分页面需要缓存&#xff0c;且存在多级路由的页面。每打开一个菜单&#xff0c;就会新增一个 Tab标签&#xff0c;只要 Tab标签不关闭&#xff0c;对应的页面就会被缓存&#x…

Java Jackson TypeReference获取泛型类型信息【泛型】

Jackson是一个比较流行的Json序列化和反序列化框架。本文以Jackson为例介绍TypeReference实现涉及泛型的反序列化&#xff0c;及TyperReference的实现原理。对于获取泛型类型信息的场景&#xff0c;TypeReference是一个可以参考的通用解决方案。 Jackson ObjectMapper的readVa…

三表相连 mapjoin

三表相连 mapjoin要求输出的样式三张表score.csvstudent.csvsubject.csv创建三个类StudentScgetset方法实现类MapJoinDriver用mapjoin不需要reduceMapJoinMapper运行结果要求 输出的样式 三张表 score.csv student.csv subject.csv 创建三个类 StudentSc getset方法 插入gets…

Mysql起步之环境搭建8.0

MySQL的下载、安装、配置 MySQL Community Server 社区版本&#xff0c;开源免费&#xff0c;自由下载&#xff0c;但不提供官方技术支持&#xff0c;适用于 大多数普通用户。 MySQL Enterprise Edition 企业版本&#xff0c;需付费&#xff0c;不能在线下载&#xff0c;可以试…

单元测试junit+mock

单元测试 是什么&#xff1f; 单元测试&#xff08;unit testing&#xff09;&#xff0c;是指对软件中的最小可测试单元进行检查和验证。至于“单元”的大小或范围&#xff0c;并没有一个明确的标准&#xff0c;“单元”可以是一个方法、类、功能模块或者子系统。 单元测试通…

Java中类是什么

类(class)是构造对象的模板或蓝图。 我们可以将类想象成制作小甜饼的模具&#xff0c;将对象想象为小甜饼。由类构造(construct)对象的过程称为创建类的实例(instance)。 正如前面所看到的&#xff0c;用Java 编写的所有代码都位于某个类里面。 标准 Java 库提供了几千个类&a…

【Axure教程】转盘抽奖原型模板

转盘抽奖是营销活动中很常用的一种方式&#xff0c;在线上我们也可以经常看到转盘抽奖的活动&#xff0c;所以今天作者就教大家在Axure中怎么制作一个转盘抽奖的原型模板。一、效果展示1、可以随机转动轮盘&#xff0c;轮盘停止时&#xff0c;指针对着的奖品高亮显示2、可以重复…

Qt + Clion + cmake 环境配置

本文不涉及QML&#xff0c;因为我没用过 用C写窗体&#xff0c;同时还有可视化UI界面&#xff0c;这不比控制台程序香吗&#xff1f;QAQ我大一写c大作业的时候要是知道这个东西&#xff0c;我绝对满分啊&#xff01;&#xff01;&#xff01;&#xff01; To&#xff1a; 新版…

Mysql—触发器

触发器 简介 触发器用于直接在某种操作后&#xff08;数据的增删改查等&#xff09;&#xff0c;通过事件执行设置触发器时的 sql 语句&#xff0c;具有原子性。 可通过 sql 语句直接编写&#xff0c;关键词&#xff1a;CREATE TRIGGER 触发器名称。 例如&#xff1a;在表 st…

String面试题

String面试题 总结的很好&#xff1a;https://blog.csdn.net/qq_45950109/article/details/116992408 String特点 1.被final关键字修饰&#xff0c;不能被继承。实现Serializable&#xff0c;表示支持序列化。实现Comparable&#xff0c;表示可以排序。 2.底层是char数组和…

2023上半年软考报名到弘博创新错不了

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

ChatGPT为什么这么火爆?这是一篇从入门到玩坏的教程

什么是ChatGPT ChatGPT是由OpenAI开发的一个人工智能聊天机器人程序&#xff0c;于2022年11月推出。该程序使用基于GPT-3.5架构的大型语言模型並通过强化学习进行训练。 ChatGPT可以做什么&#xff1f; 你能想到的&#xff0c;它基本上都能和你聊上两句&#xff0c;比如写一…

功率放大器的增益是什么意思

电子工程师在日常实验测试中经常会应用到功率放大器&#xff0c;在介绍功率放大器产品的时候经常会看到增益的参数指标。下面安泰电子就来为大家介绍功率放大器增益是什么意思。 一、功率放大器增益的定义&#xff1a; 功率放大器作为一种电子电路&#xff0c;可以通过获取外部…

TCP连接的状态详解以及故障排查(六)

TCP通信中服务器处理客户端意外断开 如果TCP连接被对方正常关闭&#xff0c;也就是说&#xff0c;对方是正确地调用了closesocket(s)或者shutdown(s)的话&#xff0c;那么上面的Recv或Send调用就能马上返回&#xff0c;并且报错。这是由于close socket(s)或者shutdown(s)有个正…

SQL盲注加速方法总结

sql盲注加速方法总结 盲注分为布尔盲注和时间盲注&#xff0c;一般为加快测试速度都用工具或者脚本跑。但有时还是很慢&#xff0c;这时就需要采取另外办法。在参考了一些资料后经过实验总结可行方案如下。1.二分法加速、2.与运算加速、3.二进制延时注入加速、4.dnslog OOB外带…

[Java 进阶面试题] HashTable, HashMap, ConcurrentHashMap 之间的区别

大家一切顺利~ 文章目录前言HashTable, HashMap, ConcurrentHashMap 之间的区别前言 本篇主要内容如标题 HashTable, HashMap, ConcurrentHashMap 之间的区别 1.ConcurrentHashMap最大优化之处是相比于HashTable,ConcurrentHashMap大大缩小了所冲突的范围,把一把大锁切成了多…

全球爆火的ChatGPT,能否推动芯片市场增长?

“我所热爱的是我真实的生活&#xff0c;因为它包含了我所有的经历和感受&#xff0c;是我每一天都在体验和思考的。”这句非常有诗意的话&#xff0c;来自最近爆火的ChatGPT。 ChatGPT作为一款智能机器人&#xff0c;上知天文下知地理&#xff0c;不仅能写文案&#xff0c;还…

在github上上传文件

一、new新建一个仓库 填写/勾选下面三个部分 二、右键本地的要上传的文件&#xff0c;选择”Git Bash Here"进入。 进入git界面&#xff1a; 三、依次输入下面的命令 1、生成readme文件。 echo "# 在这里填入readme里面的内容" >> README.md2、建立…

(深度学习快速入门)第五章第一节1:GAN概述

获取pdf&#xff1a;密码7281 一&#xff1a;什么是生成模型 生成模型&#xff1a;在概率统计理论中&#xff0c;生成模型是指能够随机生成观测数据的模型&#xff0c;尤其是在给定某些隐含参数的条件下。为了训练一个生成模型我们首先要收集在特定领域下的大量数据&#xff…