计算机软件技术基础复习
数据结构
文章目录
- 数据结构
- 第一节 数据结构的基本概念
- 第二节 线性结构
- 线性表
- 顺序表和链表的特点
- 实现循环队列
- 第三节 非线性结构
- 树
- 操作系统
- 操作系统概述
- 进程和程序
- 存储空间的组织
- 数据库技术
- 数据库设计
- 软件技术
- 软件生命周期
第一节 数据结构的基本概念
数据结构:指相互有关联的数据元素的集合。
常见术语:
- 数据:计算机处理的对象
- 数据元素:数据的基本单位(一个数据元素可由若干数据项组成),又称作结点或记录
- 数据项:数据的最小单位,也称作字段或域
数据结构三个层次:
- 逻辑结构:反应数据元素之间逻辑关系的数据结构。
- 表示数据元素的信息
- 表示各数据元素之间的前后件关系
- 存储结构:数据的逻辑结构在计算机存储空间中的存放形式(也称为数据的物理结构)
- 运算:插入、删除、修改、查找、排序等,其依赖于存储结构
数据结构三个层次之间的关系:
- 逻辑结构唯一,存储结构不唯一
- 存储结构是逻辑结构在计算机存放形式
- 运算的实现依赖于存储结构
数据结构的描述:
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的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
shiro、springboot、vue、elementUI CDN模式前后端分离的权限管理demo 附源码
shiro、springboot、vue、elementUI CDN模式前后端分离的权限管理demo 附源码 源码下载地址 https://github.com/Aizhuxueliang/springboot_shiro.git 前提你电脑的安装好这些工具:jdk8、idea、maven、git、mysql; shiro的主要概念 Shiro是一个强大…...
智能优化算法——粒子群优化算法(PSO)(小白也能看懂)
前言: 暑假期间,因科研需要,经常在论文中看到各种优化算法,所以自己学习了一些智能优化的算法,做了一些相关的纸质性笔记,寒假一看感觉又有点遗忘了,并且笔记不方便随时查看,所以希…...
Lesson 6.4 逻辑回归手动调参实验
文章目录一、数据准备与评估器构造1. 数据准备2. 构建机器学习流二、评估器训练与过拟合实验三、评估器的手动调参在补充了一系列关于正则化的基础理论以及 sklearn 中逻辑回归评估器的参数解释之后,接下来,我们尝试借助 sklearn 中的逻辑回归评估器&…...
Oracle数据库入门大全
oracle数据库 Oracle 数据库、实例、用户、表空间、表之间的关系 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pSv0SArH-1675906973035)(vx_images/573695710268888.png 676x)] 数据库 数据库是数据集合。Oracle是一种数据库管理系统ÿ…...
C语言操作符详解(下)
提示:本篇内容是C语言操作符详解下篇 文章目录前言八、条件表达式九、逗号表达式十、 下标引用、函数调用和结构成员1. [ ] 下标引用操作符2. ( ) 函数调用操作符3.结构成员访问操作符十一、表达式求值1. 隐式类型转换举例说明1举例说明2举例说明32.算数转换3.操作…...
【五六七人口普查】我国省市两级家庭户住房状况
人口数据是我们在各项研究中最常使用的数据!之前我们分享过第七次人口普查(简称七普)的数据!很多小伙伴拿到数据后都反馈数据非常好用,同时很多小伙伴咨询有没有前面几次人口普查的数据,这样方便做人口变化…...
大数据框架之Hadoop:入门(二)从Hadoop框架讨论大数据生态
第2章 从Hadoop框架讨论大数据生态 2.1 Hadoop是什么 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。主要解决,海量数据的存储和海量数据的分析计算问题。广义上来说,Hadoop通常是指一个更广泛的概念-Hadoop生态圈。 2.2 Hadoop发展历史 1&…...
负载均衡反向代理下的webshell上传+apache漏洞
目录一、负载均衡反向代理下的webshell上传1、nginx 负载均衡2、搭建环境3、负载均衡下的 WebShell连接的难点总结难点一、需要在每一台节点的相同位置都上传相同内容的 WebShell难点二、无法预测下次的请求交给哪台机器去执行。难点三、下载文件时,可能会出现飘逸&…...
打造安全可信的通信服务,阿里云云通信发布《短信服务安全白皮书》
随着数字化经济的发展,信息保护和数据安全成为企业、个人关注的焦点。近日,阿里云云通信发布《短信服务安全白皮书》,该白皮书包含安全责任共担、安全合规、安全架构三大板块,呈现了阿里云云通信在信息安全保护方面的技术能力、安…...
Python项目实战——外汇牌价(附源码)
前言 几乎每个人都在使用银行卡,今天我们就来爬取某行外汇牌价,获取我们想要的数据。 环境使用 python 3.9pycharm 模块使用 requests 模块介绍 requestsrequests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到&…...
web网站开发公司/互联网优化是什么意思
删除第一个字符串当中出现的第二个字符串中的字符 例如; String s1"welcome to bit"; String s2"come";输出: “wl t bit”; 思路: 拿着s1的字符每个字符,看s2中是否包含这个字符,若不包含则将这…...
百度推广seo软件/百度小程序优化
废话不多说,请看以下代码: #define buffer ((char *) *( (int far *)0x200 )) main(){buffer(char *)malloc(20);buffer[10]0;while(buffer[10]!8){buffer[buffer[10]]a buffer[10];buffer[10];}free(buffer); }我们不妨忽略#define buffer ...这个语句…...
施工员证怎么查询网站/建网站的详细步骤
JavaScript Cookies 转载自:http://www.w3school.com.cn/js/js_cookies.asp 什么是cookie? cookie 用来识别用户。 cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创…...
怎么用虚拟主机做网站步骤/百度指数的主要功能有
Linux 开机启动流程 BIOS(Basic Input Output System)是 PC 机启动时加载的第一个软件。其实,它是一组固化到计算机主板上一个芯片上的程序,它保存着计算机最重要的输入输出程序、开机后自检程序和系统自启动程序,它可…...
网站去掉index.html/腾讯企点注册
首先, equality 等同, identity 恒等。 , 两边值类型不同的时候,要先进行类型转换,再比较。 ,不做类型转换,类型不同的一定不等。 下面分别说明: 先说 ,这个比较简单。下…...
颍东网站建设/北京seo软件
请用C语言实现 输出和为一个给定整数的所有组合启动2012/*请用C语言实现 输出和为一个给定整数的所有组合 */#include <stdio.h> //包含头文件stdio.h 为程序提供基本输入输出功能 #include <stdlib.h> //包含标准库头文件stdlib.h 以便调用函数system("pa…...