计算机软件技术基础复习
数据结构
文章目录
- 数据结构
- 第一节 数据结构的基本概念
- 第二节 线性结构
- 线性表
- 顺序表和链表的特点
- 实现循环队列
- 第三节 非线性结构
- 树
- 操作系统
- 操作系统概述
- 进程和程序
- 存储空间的组织
- 数据库技术
- 数据库设计
- 软件技术
- 软件生命周期
第一节 数据结构的基本概念
数据结构:指相互有关联的数据元素的集合。
常见术语:
- 数据:计算机处理的对象
- 数据元素:数据的基本单位(一个数据元素可由若干数据项组成),又称作结点或记录
- 数据项:数据的最小单位,也称作字段或域
数据结构三个层次:
- 逻辑结构:反应数据元素之间逻辑关系的数据结构。
- 表示数据元素的信息
- 表示各数据元素之间的前后件关系
- 存储结构:数据的逻辑结构在计算机存储空间中的存放形式(也称为数据的物理结构)
- 运算:插入、删除、修改、查找、排序等,其依赖于存储结构
数据结构三个层次之间的关系:
- 逻辑结构唯一,存储结构不唯一
- 存储结构是逻辑结构在计算机存放形式
- 运算的实现依赖于存储结构
数据结构的描述:
Group=(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个元素


######实现循环队列的入队#######
#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;}
第三节 非线性结构
树
相关术语
- 根节点:没有前驱,仅有后继
- 分支结点:有且仅有一个前驱,可以有多个后继
- 叶结点:没有后继,仅有前驱
- 结点的度:该结点拥有的子树数目。
- 树的度:最大的结点度
- 深度:最大的层次数
操作系统
操作系统概述
定义:控制和管理系统资源,方便用户使用计算机的程序集合
作用:
- 管理系统资源
- 为用户提供资源共享的条件和环境,并对资源的使用进行合理调度。
- 提供良好的输入输出的方便环境
- 规定用户的接口
功能和主要任务:
- 处理机管理;2.存储器管理;3.设备管理;4.文件管理;5.作业管理
批处理系统、分时系统、实时系统:
- 批处理:作业成批进入系统后被队列,然后调度权限全部交给系统
- 分时:对若干个并发程序对CPU的分时,其中每个程序对cpu的时间分享单位为时间片(解决人机交互,进行及时响应,共享主机,方便进行程序的调试);特点:同时性、独立性、及时性、交互性
- 实时系统:对随即发生的外部事件做出及时的响应并对其进行处理
- 实时过程控制系统:工业生产的自动化控制、导弹发射等自动控制和实验过程控制
- 实时信息处理系统:机票预定、资料查询等。
进程和程序
顺序程序的特点:
1.顺序性;2.封闭性;3.可再现性
并发程序的特点:
1.并行性;2.共享性
程序的定义:由若干条具有一定功能的机器指令所组成的集合,其之间存在顺序关系
进程:指—个具有—定独立功能的程序关于某个数据集合的一次运行活动。进程是可以并发执行的程序的执行过程,它是控制程序管理下的基本的多道程序单位。

进程的状态及转化:
1.运行状态:正在占据着CPU
2.就绪状态:该进程已经获得除CPU以外的所有资源,只是因为缺少CPU而不能运行下去。
3.等待状态:一个进程正在等待某个事件而暂时停止执行。
进程只能在运行状态下结束。

定义:若干个进程均因互相等待对方所占有的资源而无限等待。
必要条件:
- 资源的独占抢用
- 资源的非抢占分配
- 资源的部分分配
- 对资源的循环等待
预防方法:
- 资源的部分分配(用来破坏第三个必要条件)
- 资源的顺序分配法:破坏第4个条件
- 银行家算法进行动态分配
临界资源:排他性使用的资源,一次只允许一个进程使用的资源。
临界区:在具有互斥关系的各个进程之中,访问临界资源的程序段称为临界区或临界段(只针对某一资源而言的)
PV操作是低级通信原语,信号量是一个只能由P/V操作改变其值的整数变量。

进程的互斥:
-
当多个进程共享数据块或其他排他性使用的资源时,不能同时进入存取或使用,但进入的次序可以是任意的
信号量实现进程互斥
进程的同步:
- 进程之间为了合作完成一个任务,而需要互相等待和交换信息的相互制约关系

信号量实现进程同步
进程通信:
- 信号同步:低级通信原语,只要收到信号就能知道含义
- 信件同步:高级通信原语,收到信件,对信件进行分析,然后采取相关操作。
存储空间的组织
存储管理的功能:
- 地址变换
- 内存分配
- 存储共享与保护
- 存储器扩充
地址变换(地址映射):
- 当用户程序进入内存执行时,必须把用户程序中所有相对地址转换成内存中的实际地址,否则用户程序无法执行。
地址重定位:
- 在进行地址变换时,必须修改程序中所有与地址有关的项,要对程序中的指令地址以及指令中有关地址的部分进行调整。
内零头:指分配给作业的存储空间中未被利用的部分
外零头:指系统中无法利用的小存储块
分页存储管理的优点为:
(1)由于提供了大容量的虚拟存储器,用户的地址空间不再受内存大小的限制,大大方便了用户的程序设计;
(2)由于作业地址空间中的各页面都是按照需要调人内存的,不用的信息不会调入内存,很少用的信息也只是短时间驻留在内存,因此更有效地利用了内存;
(3)由于动态分页管理提供了虚拟存储器,每个作业一般只有一部分信息占用内存,从而可以容纳更多的作业进人系统,这就更有利于多道程序的运行。
分页存储器的缺点是不利于程序的动态连接装配,也不利于程序与数据的共享。
分段存储管理的优点是有利于程序的动态连接装配,也有利于程序与数据的共享,从而更有利于用户的程序设计。
分段存储器的缺点是不利于内存的有效利用。



数据库技术
数据描述:
-
现实世界:所有客观存在的事物及其相互之间的联系
-
观念世界:1️⃣属性2️⃣实体3️⃣实体型4️⃣实体集
-
数据世界:
数据项(字段)、记录、记录型、文件、关键字
数据模型:
-
层次模型:1️⃣有一个数据记录没有父亲,这个记录为根节点2️⃣其他数据记录有且一个父亲
-
网状模型:1️⃣可以有一个以上的结点没有父亲2️⃣至少有一个结点有多于一个的父亲
-
关系模型:关系必须规范,满足一定规范条件,关系的每一个分量必须是不可分的数据项
关系运算:
- 笛卡尔积:第一个元组每个元素与第二个元组每个元素进行组合
- 投影运算:类似于提取某几列的操作
- join:保留了条件列
- natural join:去除重复属性
数据库设计
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。用"矩形框"表示实体型,矩形框内写明实体名称;用"椭圆图框"表示实体的属性,并用"实心线段"将其与相应关系的"实体型"连接起来;用"菱形框"表示实体型之间的联系成因,在菱形框内写明联系名,并用"实心线段"分别与有关实体型连接起来,同时在"实心线段"旁标上联系的类型(1:1,1:n或m:n)。
利用E-R模型进行数据库的概念设计,可以分成三步:首先设计局部E -R模型,然后把各个局部E-R模型综合成一个全局的模型,最后对全局E-R模型进行优化。
分E-R图:各个实体与属性之间的联系,以及实体与实体之间的联系

初步ER图:存在属性域、命名、结构冲突
基本E-R图

实体转为关系结构:
-
每个实体型转为一个关系模式
-
每个联系分别转为关系模式
- 主键需要标注#
- 外键为下波浪号
软件技术
软件生命周期
软件定义期:包括问题定义、可行性研究、需求分析
软件开发期:包括系统设计、详细设计、编码和测试四个阶段
软件维护期:运行维护阶段(持续时间最长、付出代价最大的阶段)
-
问题定义:定义开发项目的背景、目标、实现功能、性能指标及系统需要解决的问题。
-
可行性研究
-
需求分析:通过调研分析全面理解系统需求(关于系统做什么)
- 确定对系统的综合要求
- 对系统的数据要求进行分析
- 推到系统详细模型系统
- 修正开发计划,建立模型系统
-
总体设计:描述系统如何做,怎样实习目标系统
-
详细设计
-
编码
-
测试
1️⃣测试的目的:尽量发现程序中的错误,绝不能证明程序的正确性
2️⃣调试的目的:推断错误原因,进一步改正错误
-
运行维护阶段

白盒测试:根据对程序内部逻辑结构的分析来选择测试用例。
黑箱测试:完全不考虑程序的内部结构和特征,只是根据程序功能导出测试用例
结构化设计:把一个大型系统分解为若干个相对独立、功能单一的模块。同时提出了评价模块结构图质量的具体标准,模块之间的耦合度以及模块各个成分之间的联系。
相关文章:

计算机软件技术基础复习
数据结构 文章目录数据结构第一节 数据结构的基本概念第二节 线性结构线性表顺序表和链表的特点实现循环队列第三节 非线性结构树操作系统操作系统概述进程和程序存储空间的组织数据库技术数据库设计软件技术软件生命周期第一节 数据结构的基本概念 数据结构:指相互…...

python爬虫--beautifulsoup模块简介
BeautifulSoup 的引入 我们学习了正则表达式的相关用法,但是一旦正则写的有问题,可能得到的就不是我们想要的结果了,而且对于一个网页来说,都有一定的特殊的结构和层级关系,而且很多标签都有 id 或 class 来对作区分&…...
Swfit Copy On Write 原理解析
1. Swift Copy On write 原理是什么 Swift 中的 Copy On Write (COW) 技术是一种内存优化技术,其原理是在需要修改数据时才进行拷贝,以避免不必要的内存消耗。 COW 的实现主要依赖于 Swift 中的结构体和类的特性。对于结构体而言,它是值类型…...

【面试题】经典面试题:让 a == 1 a == 2 a == 3 成立?
一、问题解析 if (a == 1 && a == 2 && a == 3) {console.log(Win) } 复制代码 如何打印除Win? 看到题目的第一眼,我是蒙蔽的.怎么可能会有如此矛盾的情况发生呢?就相当于一个人怎么可能即是小孩,又是成年人,还是老年人呢? 冷静下来,发现一些端倪。...
我是歌手-C语言
“我是歌手”是成名歌手之间的比赛节目,2轮比赛中观众支持率最低者出局。 这里我们假设有n个歌手进行了m轮比赛,请求出局者(m轮总分最低者)。 输入n个歌手(编号依次为1,2,......n)…...

Acwing---112.雷达设备
雷达设备1.题目2.基本思想3.代码实现1.题目 假设海岸是一条无限长的直线,陆地位于海岸的一侧,海洋位于另外一侧。 每个小岛都位于海洋一侧的某个点上。 雷达装置均位于海岸线上,且雷达的监测范围为 d,当小岛与某雷达的距离不超…...

SSJ-21A AC220V静态【时间继电器】
系列型号: SSJ-11B静态时间继电器;SSJ-21B静态时间继电器 SSJ-21A静态时间继电器;SSJ-22A静态时间继电器 SSJ-22B静态时间继电器SSJ-42B静态时间继电器 SSJ-42A静态时间继电器SSJ-41A静态时间继电器 SSJ-41B静态时间继电器SSJ-32B静态时间继电…...

m序列发生器——Verilog设计
引言 本篇文章利用Verilog编写一个m序列发生器模块。本文会给出具体的设计、测试源码。 设计说明 模块功能说明: 支持任意位宽的随机数生成;支持本原多项式配置;支持初始种子配置;设计环境: 设计语言:Verilog HDL 设计验证平台:MATLAB R20222a、Vivado 2018.3 m 序列…...

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

DVWA靶场通关和源码分析
文章目录一、Brute Force1.low2、medium3、High4、Impossible二、Command Injection1、Low2、Medium3、High三、CSRF1、Low2、Medium3、High4、Impossible四、File Inclusion1、Low2、Medium3、High五、File Upload1、Low2、Medium3、High4、Impossible六、 SQL注入1、Low2、Me…...

RocketMQ5.0.0消息存储<二>_消息存储流程
目录 一、消息存储概览 二、Broker接收消息 三、消息存储流程 1. DefaultMessageStore类 2. 存储流程 1):同步与异步存储 2):CommitLog异步存储消息 3):提交消息(Commit) 四、参考资料 一、消息存储概览 如下图所…...
【单片机方案】蓝牙体温计方案介绍
蓝牙体温计方案的工作原理利用了温度传感器输出电信号,直接输出数字信号或者再将电流信号(模拟信号)转换成能够被内部集成的电路识别的数字信号,然后通过显示器(如液晶、数码管、LED矩阵等)显示以数字形式的温度,能记录、读取被测温度的最高值…...
React 的受控组件和非受控组件有什么不同
大家好,我是前端西瓜哥,今天我们来看看 React 的受控组件和非受控组件有什么不同。 受控组件 受控组件,指的是将表单元素的值交给组件的 state 来保存。 例子: import ./styles.css import { useState } from reactconst App …...

【逐步剖C】-第六章-结构体初阶
一、结构体的声明 1. 结构体的基本概念 结构体是一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量。结构体使得C语言有能力描述复杂类型。 如学生,有姓名、学号、性别等;如书,有作者,出版日期…...

Java 并发在项目中的使用场景
1、并发编程的三个核心问题:(1)分工:所谓分工指的是如何高效地拆解任务并分配给线程(2)同步:而同步指的是线程之间如何协作(3)互斥:互斥则是保证同一时刻只允…...

15.面向对象程序设计
文章目录面向对象程序设计15.1OOP:概述继承动态绑定15.2定义基类和派生类15.2.1定义基类成员函数与继承访问控制与继承15.2.2定义派生类派生类对象及派生类向基类的类型转换派生类构造函数派生类使用基类的成员继承与静态成员派生类的声明被用作基类的类防止继承的发…...

Element UI框架学习篇(一)
Element UI框架学习篇(一) 1.准备工作 1.1 下载好ElementUI所需要的文件 ElementUI官网 1.2 插件的安装 1.2.1 更改标签的时实现自动修改 1.2.2 element UI提示插件 1.3 使用ElementUI需要引入的文件 <link rel"stylesheet" href"../elementUI/element…...
【算法】【C语言】
差分算法力扣1094题目描述学习代码思考力扣1094 题目描述 车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向) 给定整数 capacity 和一个数组 trips , trip[i] [numPassengersi, fromi, toi] 表示第 …...

【✨十五天搞定电工基础】基本放大电路
本章要求1. 理解放大电路的放大作用和共发射极放大电路的性能特点; 2. 掌握静态工作点的估算方法和放大电路的微变等效电路分析法; 3. 了解放大电路输入、输出电阻和电压放大倍数的计算方法,了解放大电路的频率特性、 互补功率放大…...

MyBatis 入门教程详解
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...