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

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...