第一范式:每一个分量必须是不可分的数据项。
第二范式:每一个非主属性完全函数依赖于任何一个候选码。
第三范式:不存在传递依赖。
BC范式:所有属性都是码
一个关系模式可能存在的问题:
- 插入异常
- 删除异常
- 修改复杂
事务
概念:用户定义的一个数据库操作序列
4个特性
- 原子性:一个事务要么做,要么不做
- 一致性:使数据库从一个一致性状态到另一个一致性状态
- 隔离性:事务的执行的相互透明的
- 持久性:一个事务一旦提交,它对数据库的数据改变是永久性的
数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作。
大数据
无法在可容忍的时间内用现有的IT技术和软硬件工具对其进行感知、获取、管理、处理和服务的数据集合。其规模和复杂程度超出了传统数据库和软件技术所能管理和处理的数据集范围
什么是数据挖掘
通过算法从大量数据中搜索隐藏其中的信息,
通过分析每个数据,从大量数据中寻找其中规律,主要有数据准备、规律寻找和规律表示三个步骤.
什么是人工智能
研究开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统.
构造具有智能的人工系统,研究如何应用计算机的软硬件来模拟人类某些智能行为的基本理论方法技术.
什么是机器学习
对计算机一部分数据进行学习,然后对另一些数据进行预测与判断,
核心是使用算法解析数据,从中学习,然后对新数据做出决定或预测,就像人获取一定的经验,可以对新问题进行预测.
什么是深度学习
深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字、图像、声音等数据的解释有很大的帮助.使机器模仿视听和思考等人类活动,通过多层处理,逐渐将初始的“底层”特征表示转化为“高层”特征表示后,用“简单模型”即可完成复杂的分类等学习任务.
什么是计算机视觉
用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像.
什么是数据库
用来组织、管理、存储数据的仓库,当今世界是一个充满着数据的互联网世界,充斥着大量的数据,为了方便管理互联网世界中的数据,就有了数据库管理系统,用户可以对数据库中的数据进行增删改查
什么是计算机
就是电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,逻辑计算,还具有存储记忆功能,是能够按照程序运行,自动,高速处理海量数据的现代化智能电子设备
什么是操作系统
操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其它软件方便的接口和环境,它是计算机系统中最基本的系统软件。
什么是计算机网络
是一个将分散的具有独立功能的计算机系统、通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统
计算机网络是互连的、自治的计算机集合。
什么是数据结构
相互之间存在一种或多种特定关系的数据元素的集合,三要素:逻辑结构,物理结构,数据的运算
什么是软件工程
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而验证正确的管理技术和当前能够得到的最好的技术方法结合
起来,以经济的开发出高质量的软件并有效地维护它
软件工程方法
面向过程
面向对象
面向构件
面向服务
什么是进程,线程
进程是一个程序的执行过程,比如一个正在运行的.exe就是一个进程
线程:进程中的一个执行任务(控制单元),负责当前进程中程序的执行
一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据
进程是操作系统资源分配的基本单位,而线程是处理器任务调度执行的基本单位。
进程之间切换开销大,线程开销小
TCP/IP体系
五层:网络接口层、网际层、传输层、应用层。
OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。
TCP/IP是指利用IP通信时所必须用的的协议群的统称。
互联网进行通信时,需要相应的网络协议,TCP/IP 原本就是为使用互联网而开发制定的协议族。因此,互联网的协议就是 TCP/IP,TCP/IP 就是互联网的协议。
在数据包的首部,明确标明了协议应该如何读取数据。反过来说,看到首部,也就能够了解该协议必要的信息以及所要处理的数据。
TCP 用于在传输层有必要实现可靠传输的情况;而在一方面,UDP 主要用于那些对高速传输和实时性有较高要求的通信或广播通信
TCP连接的三次握手、四次挥手
原语
原语是一段用机器指令编写的完成特定功能的程序,在执行过程中不允许中断
PCB进程控制块
记录进程的信息,以便操作系统对其进行控制和管理,因为经常进行进程之间的切换,保证了该进程随后能再次启动还能从上次执行的地方继续执行。
并行与并发
并行:同一时刻
并发:同一时间间隔
一个CPU在一个瞬间只能处理一个任务。但为什么在我们人类视角,哪怕是单核心计算机也能同时做很多事情,比如同时听音乐和浏览网页,作为整个系统唯一可以完成计算任务的 CPU 是如何保证两个进程“同时进行”的呢?时间片轮转调度!
并发和共享是操作系统的两个基本特征,两者互为存在。资源共享以程序的并发为条件,若系统不允许程序并发执行,则自然不存在资源共享问题。若系统不能对资源共享实施有效的管理,则必将影响到程序的并发执行,甚至根本无法并发执行
进程上下文,就是一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈上的内容,当内核需要切换到另一个进程时,它 需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。
死锁
是指多个进程因为竞争资源而造成的一种僵局(互相等待),若没有外力作用,这些进程将无法向前推进。 –哲学家进餐
原因:
- 系统资源的竞争:不可剥夺资源不足以满足进程的需要
- 进程推进顺序非法:两个进程分别占有资源,又等待对方的资源
-
**死锁产生的必要条件**
- 互斥条件:一段时间内一个资源仅为一个进程所占有
- 不剥夺条件:资源未被使用完,不能被剥夺
- 请求并保持条件:自己占有,又请求别人,不释放自己
- 循环等待条件:循环等待链,每个进程已获得的资源同时被连中下一个进程所请求
处理策略
- 死锁预防:设置某些限制条件,破坏产生死锁的4个必要条件之一。
- 避免死锁:在分配资源的时候,用某种方法防止系统进入不安全状态。 –银行家算法
- 死锁的检测及解除:不设置任何措施,检测死锁的发生,采取某种措施解除死锁。
常见的进程调度算法
- 先来先服务
- 短作业优先
- 优先级调度
- 高响应比优先
- 时间片轮转
- 多级反馈队列
磁盘调度算法
1.先来先服务
2.最短寻道时间
3.扫描算法
4.循环扫描算法
时间局部性
指被引用过一次的内存位置很可能在不远的将来再被多次引用。
空间局部性
指如果一个内存位置被引用了一次,那么程序很可能在不远的将来引用其附近的一个内存位置。
缓冲技术
缓冲技术是为了协调吞吐速度相差很大的设备之间数据传送而采用的技术。
- 可以协调cpu与i/o设备之间速度不匹配的矛盾
- 可以减少cpu的中断频率
- 提高设备的利用率
- 总的来说,就是提高cpu利用率,提高并行度
停等协议(全双工通信)
解决因为物理线路故障、设备故障、病毒攻击、路由信息错误导致的丢包问题,为了实现流量控制
发送方发一个帧,就要等待接收方回复一个确认
优点:简单 缺点:信道利用率太低
GBN
累计确认,发送方多个窗口,接收方一个窗口。
超时是会发送所有未确认的帧
只按序接收帧,不按序无情丢弃
确认序列号最大的,按序到达的帧
SR
对数据逐一确认,收到一个确认一个
只重传出错帧
接收方有缓存
介质访问控制
采取一定的措施,在广播信道上使得两节点之间的通信不会发生互相干扰的情况
多路复用技术:多个信号组合在一条物理信道上进行传输
《《静态划分》》
频分多路复用:为每一个用户分配相同大小的带宽,在同一时间传输
时分多路复用:将一个时间划分为多段,在每一段上每个用户轮流访问信道
波分多路复用:光的频分多路复用
码分多路复用:既能共享信道,又能共享时间
《《动态划分》》
TCP可靠传输
网络层提供尽最大努力交付,不可靠传输,传输层担负可靠传输
可靠:保证接收方收到的字节流和发送方发出的字节流完全一样
序号:保证有序
确认:防止丢包
重传
1.超时:tcp采用自适应算法,
2.冗余ACK:收到同一个报文段的3个ack
TCP流量控制(使用滑动窗口)
让发送方慢点,要让接收方来得及接收
滑动窗口机制实现流量控制
接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小(确认报文段的窗口字段)
tcp采用的是累计确认机制(不是停等)
数据链路层是节点到节点之间的传输,流量控制接收数据若还能接收,就发送确定,否则不回复确认
TCP拥塞控制机制
网络状况不好产生拥塞,
出现条件:对资源需求的总和>可用资源(链路带宽,处理机)
网络中有许多资源出现供应不足的情况—->网络性能变坏—–>网络吞吐量下降
满开始、拥塞避免 快重传、快恢复
关系型数据库与非关系型数据库的区别
关系型数据库是指采用了关系模型来组织数据的数据库,关系模型指的就是二维表格模型,数据按照表的形式存储,然后多组表构成了一个数据库。
非关系型数据库是指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。非关系型数据库以键值对存储,且结构不固定
什么是软件工程,有哪几种软件工程方法
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而验证正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效地维护它
软件工程方法:1、面向过程 2、面向对象 3、面向构件 4、面向服务
贪心算法,动态规划,分治法的区别
分治法、动态规划法、贪心算法这三者之间有类似之处,比如都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。但其实这三者之间的区别还是很大的。
分治法:将原问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。
三个步骤:分解,解决,合并 ——归并排序
贪心算法:使所做的选择看起来都是当前最佳的,期望通过所做的局部最优选择来产生出一个全局最优解
动态规划:常用于有重叠问题和最优子结构性质的问题 —01背包,爬楼梯
电脑浏览器访问www.baidu.com服务器资源时所发生的过程?
为什么报考我们学校
江西师大在江西有一定的知名度,并且学院导师都是名校毕业,发表了许多的论文并获得了很多奖项,计算机评级为C,更加说明了师大的实力。然后自己本科也是师大的,我认为师大有这个实力,在未来给与我帮助。
规划
短期规划是完成本科的毕业论文,在复试的时候也是发现自己许多基础知识相对薄弱,也会尽力去补充。
长期规划是在研一期间阅读一定数量的论文,丰富自己的知识储备,并根据导师的研究方向,确定自己的定位。研二期间,积极配合导师完成自己的本职工作。研三期间完成研究生论文,并且找到一份自己满意的工作。
计算机的五大设备
控制器:计算机的大脑,负责控制计算机各个硬件的工作
运算器:进行计算机的数字运算(加减乘除)和逻辑运算(指计算机中具有“逻辑判断能力”的决算。即计算机要完成的工作所遵循的逻辑判断)
存储器:内存(短期记忆)外存(长期记忆)
输入设备
输出设备
存储器
寄存器 高速缓存(cache) 主存(ROM RAM) 外存
tcp为什么是可靠连接
- 通过 TCP 连接传输的数据无差错,不丢失,不重复,且按顺序到达。
-
TCP 报文头里面的
序号
能使 TCP 的数据按序到达 - 报文头里面的确认序号能保证不丢包,累计确认及超时重传机制
- TCP 拥有流量控制及拥塞控制的机制
数据库设计过程
- 需求分析:数据、功能、性能需求
- 概念设计:er模型,er图
- 逻辑设计:建表
- 物理设计:存储结构、存储方式
- 数据库实施:编码
- 数据库运行和维护
面向过程 和 面向对象的区别
面向过程:分析出解决问题所需要的步骤,然后一步步的实现,耦合度很高
面向对象:面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为。
值传递、地址传递、引用传递
计算机技术
是指计算机领域中所运用的技术方法和技术手段,或指其硬件技术、软件技术及应用技术
数据库索引
当表的数据量比较大的时候,查询操作会比较耗时,建立索引是加快查询速度的一个有效手段(类似图书后面的索引)
索引虽然可以加快查询速度,但是占用一定的空间,表更新的,也要维护索引。
顺序文件、B+树、散列、位图索引
常用的数据模型
- 层次模型
- 网状模型
- 关系模型
- 面向对象数据模型
- 对象关系数据模型
- 半结构化数据模型
ER图冲突
属性冲突:属性值类型,取值范围不同
命名冲突:同名异义、异名同义
结构冲突:在有的表是实体,有的表是属性
XML和HTML的区别
html:超文本标记语言
xml:可扩展标记语言
- HTML中的标记是用来显示数据的,而XML中的标记用来描述数据的性质和结构。
- HTML是不区分大小写的,而XML是严格区分大小写的。
- HTML中,属性值的引号是可用可不用的,而XML中,属性值必须放在引号中。
- HTML中,空格是自动过滤的,而XML中,空格则不会自动删除。
- HTML有的属性可以不赋值,XML必须赋值
软件开发流程
可行性分析
需求分析:考虑用户的需求,功能需求,非功能需求。回答项目做什么的问题
总体设计:回答怎么做的问题
详细设计:
编码:
测试
有考虑读博吗?
目前还在考虑中,硕士期间先锻炼一下自己,如果将来有能力和机会的话,可以考虑读博
路由算法
静态路由算法:管理员手工配置路由信息,提前配置好怎么转发(缺点,更新很麻烦)
动态路由算法(全局性ospf、分散性rip):路由器彼此交换信息,按照路由算法优化出路由表项
B树B+树
所有节点绝对平衡,类似于二叉排序树
B树每个结点都是关键字,b+树只有叶子结点是关键字,分支节点只包含叶子节点的最大值,类似分块查找
b+树叶节点从小到大,用指针链接起来
b树n+1个子树,b+树n个子树
用二维表格表示实体集,用关键码表示实体间联系的数据模型称为关系模型
网络协议三要素
语法:定义数据和控制信息的格式
语义:定义需要发什么样的控制信息,需要完成什么样的响应动作
同步:定义事件顺序的详细描述
Entity Framework Core是一个轻量级、跨平台的ORM框架,用于在.NET Core应用程序中访问和操作数据库。它提供了一种简单的方式来映射对象到数据库表,以及对数据库进行查询和更新操作。Entity Framework Core支持多种数据库,包括SQL Server、MySQL、PostgreSQL和SQLite等。它还提供了一些高级功能,如查询优化、延迟加载和事务处理等。
五、分别简述大内核和微内核
大内核:将操作系统的主要功能模块进行集中,从而用以提供高性能的系统服务
微内核:将内核中最基本的功能保留在内核,将不需要在核心态执行的功能转移到用户态执行,降低内核设计的复杂性。
软件维护
指在软件产品在交付之后,为改正错误、改进性能或其他属性,或者为了适应变化了的环境而对软件产品所进行的修改活动。
软件维护的原因主要有以下两点:
(1)修正在运行中发现在测试阶段未能发现的潜在软件错误和设计缺陷;
(2)根据实际情况,需要改进软件设计,以增强软件的功能,提高软件的性能;
(3)要求在某环境下已运行的软件能适应特定的硬件、软件、外部设备和通信设备等新的工作环境,或是要求适应已变动的数据或文件;
(4)为使运行软件的应用范围得到必要的扩充等。