-
软件的声明周期
需求分析->软件设计->程序代码->软件测试->运行维护
-
怎样预防死锁
破坏死锁的四大必要条件之一就可(互斥条件、不剥夺条件、请求并保持条件、循环等待条件)
-
归并排序:将两个或者两个以上的有序表合并为一个有序表,直到合并为一个长度为n的有序表
-
PCB:(进程控制块)进程存在的唯一标识
- 进程标识符信息
- 处理机状态信息
- 进程调度信息
- 进程控制信息
-
函数依赖
- 记 A->B表示 A 函数决定 B,也可以说 B 函数依赖于 A。
- 若 {A1,A2,…,An} 是关系的一个或多个属性的集合,该集合函数决定了关系的其它所有属性并且是最小的,那么该集合就称为 键码 。
- 对于 A->B,如果能找到 A 的真子集A’ ,使得 A’->B ,那么 A’->B 就是部分函数依赖 ,否则就是 完全函数依赖 。
- 对于A->B,B->C,则A->C就是传递函数依赖
-
范式:
- 第一范式:数据库的每一列都是不可分割的基本数据项,强调列的原子性,试题中某一属性不能拥有几个值
- 第二范式:唯一性,每一行数据具有唯一性,并消除数据之间的部分依赖
- 第三范式:
- 非主属性不传递函数依赖于键码。简而言之,第三范式就是属性不依赖于其它非主属性
- 独立性,消除传递依赖
-
TCP-UDP的区别
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式(TCP)与数据报模式(UDP) ;5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
-
稳定排序:冒、插、归、基
-
不稳当排序:选择、堆排、快排、shell
-
关键路径:(AOE网 用边表示活动的网络)从源点到汇点的所有路径中,具有最大路径长度的路径叫做关键路径,而把关键路径上的活动叫做关键活动。完成整个工程的最短时间就是关键路径的长度。可以通过加快关键活动来缩短整个工程的工期,但不能随意缩短,不然会变成非关键活动,而且网中的关键路径并非一条,对于有几条关键路径的网,只提高一条关键路径上的关键活动,并不能缩短整个工程的工期。
-
最短路径:迪杰斯特拉算法可以解决无负权值的单源最短路径问题;弗洛伊德算法用来解决全源最短路径问题。Floyd 算法的基本思路:如果存在顶点 k,使得以 k 为中介点时顶点 i 和顶点 j 的当前距离缩短,则使用顶点 k 作为顶点 i 和顶点 j 的中介点。这样枚举所有的顶点 k,以顶点 k 为中介点,枚举所有的顶点对 i 和 j,进行优化即可
-
分页和分段的区别:
- 分段:将用户程序地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。
- 分页:用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配
- 主要区别:
- 页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要.段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地实现共享,满足用户的需要.
- 页的大小固定,由系统确定,将逻辑地址划分为页号和页内地址是由机器硬件实现的.而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分.
- 分页的作业地址空间是一维的.分段的地址空间是二维的.
- 段页式:分页系统能有效地提高内存的利用率,而分段系统能反映程序的逻辑结构,便于段的共享与保护,将分页与分段两种存储方式结合起来,就形成了段页式存储管理方式。
- 内部碎片:发生在以固定长度分割区来进行配置的记忆体中当一个程序载入到固定大小的分割区时,假如程式小于分割区,则剩余的空间将无法被使用,称为内部碎片
- 外部碎片:因为进程持续地被载入与置换,使得可用的记忆体空间被分割成许多不连续的分块,虽然记忆体所剩空间总和足够让新进程执行,却因为空间不连续,导致程序无法载入执行
- 利用聚集或分页可以消除外部碎片
- 为了有效的利用内存,使内存产生更少的碎片,要对内存分页,内存以页为单位来使用,最后一页往往装不满,于是形成了内部碎片。
- 为了共享要分段,在段的换入换出时形成外部碎片,比如5K的段换出后,有一个4k的段进来放到原来5k的地方,于是形成1k的外部碎片。
- 非连续内存分配方式基于将一个进程直接分散地分配到许多不相邻的分区中的思想,分为分页式存储管理,分段存储管理和段页式存储管理。分页式存储管理旨在提高内除利用率,满足系统管理需要,分段式存储管理则是指在满足用户的需要,在实现共享和保护方面优于分页式存储管理,而段页式存储管理则是将两者结合起来,取长补短,则具有分段系统便于实现,可共享,易于保护,可动态链接等功能,又能像分页系统那样很好的解决外部碎片的问题,以及为各个分段可离散分配内存等问题,显然是一种比较有效的存储方式
-
计算机操作系统的最基本特征:
- 并发性:是在计算机系统中同时存在多个程序,宏观上看,这些程序是同前推进的。 在单CPU上,这些并发执行的程序是交替在CPU上运行的。程序并发性体现在两个方面: 用户程序与用户程序之间的并发执行。 用户程序与操作系统程序之间的并发。
- 共享性:资源共享是操作系统程序和多个用户程序共用系统中的资源。
- 随机性:操作系统的运行是在一个随机的环境中,一个设备可能在任何时间向处理机发出中断请求,系统无法知道运行着的程序会在什么时候做什么事情。
- 虚拟:是指通过技术将一个物理实体变成若干个逻辑上的对应物。在操作系统中虚拟的实现主要是通过分时的使用方法。显然,如果n是某一个物理设备所对应的虚拟逻辑设备数,则虚拟设备的速度必然是物理设备速度的1/n。
- 异步性:即不确定性。同一程序和数据的多次运行可能得到不同的结果;程序的运行时间、运行顺序也具有不确定性;外部输入的请求、运行故障发生的时间难以预测。这些都是不确定性的表现。
-
进程状态和状态转换:
-
引入进程的目的是为了能够使程序并发的执行,并且可以对并发执行的程序加以描述和控制
-
进程特征:动态(进程由创建而产生,由调度而执行,由撤销而消亡)、并发(多个进程同存于内存中,可以并发的执行)、独立((资源分派和调度的独立单位))、异步(进程的执行以一种不可预知的速度向前推进)
-
就绪:进程获取了除了CPU之外的所有资源,就等cpu调用执行
-
运行
-
阻塞:处于执行状态的进程由于发生某些时间而暂时无法继续执行
-
创建状态:进程创建的过程中,所需的资源尚不能得到满足,此时创建工作尚未完成,进程无法被调度执行,进程此时就处于创建状态
-
终止状态:程正常运行结束或者出现导致进程终止的错误,或是被OS所终结,或是被父进程终结,则进入终止状态。
-
创建态—>就绪态:进程所需的资源得到分配;
-
执行态—>终止态:进程正常运行结束或者出现导致进程终止的错误,或是被OS所终结,或是被父进程(或其他有终止权的进程)终结。
-
挂起、激活操作:在部分OS中,为了系统和用户观察和分析进程的需要,还引入了一个对进程的重要操作—挂起(Suspend),当对某个进程执行此操作是时,该进程将会被挂起,此时意味着该进程需要释放内存,调至到硬盘中(外存),也意味着此时该进程处于静止状态,无法接受调度或者执行。当该进程被执行激活(Active)操作时,才可将该进程从外存中重新导入到内存中。
-
进程被挂起的原因:
- 终端用户的请求:当终端用户在自己的程序运行期间发现有可疑问题时,希望暂停自己的程序的运行,使之停止下来,以便用户研究其执行情况或对程序进行修改;
- 父进程的请求:有时父进程希望挂起自己的某个子进程,以便考察和修改子进程,或者协调各子进程间的活动;
- 负荷调节的需要:当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行;
- 操作系统的需要:操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。
-
引入挂起之后,系统中的就绪状态和阻塞状态分别变为两种状态,这四种状态为:活动就绪、静止就绪、活动阻塞、静止阻塞,下面分别对这四种状态进行说明:
-
活动就绪(Readya):等价于就绪态,此时进程可以接受调度,获得处理机后可直接转为执行态;
-
静止就绪(Readys):进程被调至外存,无法接受调度;
-
活动阻塞(Blockeda):等价于阻塞态,当等待的事件发生后可以由活动阻塞变为活动就绪状态;
-
静止阻塞(Blockeds):进程仍然可以等待事件,当事件发生后,状态由静止阻塞变为静止就绪状态。
-
-
软件工程三要素:方法、工具、过程
-
CPU有哪些寄存器
- 指令寄存器(IR):保存当前正在执行的一条指令。
- 程序计数器(PC):用来指出下一条指令在主存储器中的地址。
- 地址寄存器(AR):保存CPU当前所访问的主存单元的地址。
- 数据寄存器(DR):主要功能是作为CPU和主存、外设之间信息传输的中转站,用以弥补CPU和主存、外设之间操作速度上的差异
- 累加寄存器(AC):运算器的算术逻辑单元ALU执行算术或逻辑运算时,为ALU提供一个工作区,可以为ALU暂时保存一个操作数或运算结果。
- 程序状态字寄存器(PSW):用来表征当前运算的状态及程序的工作方式。是一个保存各种状态条件标志的寄存器
-
数据独立性:数据独立性包括数据的物理独立性和数据的逻辑独立性。物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。即数据在磁盘上怎样存储由DBMS(DataBase Management System 数据库管理系统2)管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即,当数据的逻辑结构改变时,用户程序也可以不变。
-
大型软件测试的步骤:单元测试、集成测试、系统测试和验收测试
-
指针和引用的区别:引用是别名,指针是地址
- 指针在运行时可以改变所指向的值,而引用一旦与某个对象绑定后就不再改变。意思是:指针可以被重新赋值以指向另一个对象,但是引用则总是在初始化时被指定的对象,以后不能改变,但是指向的内容可以改变。(下面是这个规则的理解)
- 内存分配:程序为指针变量分配区域,而不为引用分配内存区域。因为引用生命时必须初始化,从而指向一个已经存在的对象,引用不能为空值。
- 编译:程序在编译时分别将指针和引用添加到符号表,符号表上记录的是变量名和变量对应的地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成之后就不会再更改,指针可以该表指向的对象(指针变量中的值可以改)但是引用对象不能改,这是使用指针不安全而引用安全的主要原因
- 从理论上来说,对于指针没有级数限制,但是引用只有一级。
- 其实两者的效率是一致的,因为在底层中,指针和引用的参数都指向同一个地址。在高级编程语言中,因为用*传参可能会指向空的地址或者错误的地址,所以要时时判断参数是否为空,导致降低效率。而用&传参数,则参数不可能为空或者错误地址,这也算稍微提升了一些效率。
-
通道的功能:通道的出现进一步提高了CPU的效率。因为通道是一个特殊功能的处理器,它有自己的指令和程序专门负责数据输入输出的传输控制,而CPU将“传输控制”的功能下放给通道后只负责“数据处理”功能。这样,通道与CPU分时使用内存,实现了CPU内部运算与I/O设备的平行工作。 通道的基本功能是执行通道指令,组织外围设备和内存进行数据传输,按I/O指令要求启动外围设备,向CPU报告中断等
-
静态优先级和动态优先级
- 静态优先级:在创建进程时确定的,且在进程的整个运行期间保持不变
- 动态优先级:在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。
-
软件模型:软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码、和测试等阶段,有时也包括维护阶段。开发模型有:边做边改模型、瀑布模型、快速原型模型、增量模型、螺旋模型、演化模型、喷泉模型、智能模型、混合模型、RAD模型
-
瀑布模型:是一种经典模型,提供了软件开发的基本框架,它要求软件开发严格按照 需求 ->分析->设计->编码->测试的阶段进行,每一个阶段都可以定义明确的产出物和验证准则.瀑布模型在每一个阶段完成后都可以组织相关的评审和验证,只有在评审通过后才能够进入到下一个阶段.
- 优点:各阶段划分清晰、强调计划与需求分析、适合需求稳定的产品开发
- 缺点:单一流程不可逆、风险显露得晚纠正机会好、测试只是其中一个阶段,缺乏全过程测试思想
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mMzSATyv-1648005102237)(E:%5CLearningSources%5Cjava%E5%AD%A6%E4%B9%A0%5CNote%5Cphoto%5Cimage-20220317164408849.png)]
-
3个数据模型:层次结构模型、网状结构模型、关系结构模型
-
数据不一致性:指各类数据的矛盾性、不相容性,其一是由于数据冗余造成的,二是由于并发控制不当造成的,三是由于各种故障、错误造成的。
-
ARP协议:将已知IP地址转换为MAC地址
- 原理与流程:当一台主机有IP数据报文发送给另一台主机,它都要知道接收方的逻辑(IP)地址。但是IP地址必须封装成帧才能通过物理网络。这就意味着发送方必须有接收方的物理(MAC)地址,因此需要完成逻辑地址到物理地址的映射。而ARP协议可以接收来自IP协议的逻辑地址,将其映射为相应的物理地址,然后把物理地址递交给数据链路层。
-
映射方式:
- 静态映射:手动创建一张ARP表,把逻辑(IP)地址和物理地址关联起来。这个ARP表储存在网络中的每一台机器上。这样做有一定的局限性,因为物理地址可能发生变化。(机器更换网络适配器后,物理地址会变化; 在某些局域网中,每当计算机加电时,他的物理地址会发生改变; 移动电脑可以从一个物理网络转移到另一个物理网络也会改变物理地址)要避免这些问题的产生就要时常更新ARP表,但费资源
- 动态映射:每次只要机器知道另一台机器的逻辑(IP)地址,就可以使用协议找出相对应的物理地址。已经设计出的实现了动态映射协议的有ARP和RARP两种。ARP把逻辑(IP)地址映射为物理地址。RARP把物理地址映射为逻辑(IP)地址。
-
ARP报文的总长度为64字节。ARP数据包的长度固定为28 bytes
-
帧总长度 = 帧头 + 网络层包头 + 传输层报文头 + 应用数据;
而ARP请求中ARP包已经是最高层,之上没有传输层和应用层,所以总长度为:
帧总长度 = 帧头 + ARP包头 = 14 + 28 = 42 bytes;
而真正 发包的时为了保证以太网帧的最小帧长为64 bytes,会在报文里添加一个padding字段,用来填充数据包大小。
CRC字段是为了校验以太网帧的正确性。在数据包填充完成后,回去通过算法计算一个值放到数据包的CRC字段中。当接受端收到数据包后,会同样使用算法计算一个值,然后和CRC字段的值进行对比,查看是否相同。如果不同则证明数据包被更改,如果相同则证明数据包并未被更改。
-
虚拟存储器特征:
- 离散性:装入虚拟存储器的进程都是离散存放的,这是虚拟存储器的基础。
- 多次性:一个作业被分成多次调入内存运行记载作业运行时没必要将其他装入,只需将当前要运行的那部分程序和数据装入内存,以后每当运行到上位,调入那部分程序实在将他调入。
- 对换性:允许在作业的运行过程中进行换进,换出在进程运行期间允许将那些暂不使用的程序和数据从内存调置外存的兑换区。待以后需要时再将他们从外存掉至内存。
- 虚拟性:只能够从逻辑上扩充内存容量,虚拟出一个较大的逻辑空间,使用户所看到的内存容量远大于实际内存容量。
-
数据的独立性:是数据库系统的最基本的特征之一 。数据独立性是指应用程序和数据结构之间相互独立, 互不影响。数据独立性包括数据的物理独立性和数据的逻辑独立性
- 物理独立性:指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的
- 逻辑独立性:指用户的应用程序与数据库的逻辑结构是相互独立的
- 数据与程序的独立,把数据的定义从程序中分离出去,加上数据的存取又由DBMS负责,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。
-
三级模式结构:外模式、模式和内模式
- 模式:逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。(理解:一个数据库只有一个模式;是数据库数据在逻辑级上的视图;数据库模式以某一种数据模型为基础;定义模式时不仅要定义数据的逻辑结构也要定义与数据有关的安全性、完整性要求,定义这些数据之间的联系)
- 外模式:也称子模式(Subschema)或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。(理解:一个数据库可以有多个外模式;外模式就是用户视图;外模式时保证数据安全性的一个有力措施)
- 内模式:也称存储模式(Storage Schema),它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式(例如,记录的存储方式是顺序存储、按照B树结构存储还是按hash方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定)。(理解:一个数据库只有一个内模式;一个表可能由多个文件组成,他是由DBMS对数据进行有效的组织和管理的方法;目的:为了减少数据冗余,实现数据共享 ; 为了提高存取效率,改善性能)
- 物理独立性(模式\内模式映像):
用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。 - 逻辑独立性(外模式\模式映像):
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即,当数据的逻辑结构改变时,用户程序也可以不变。
-
指令的5个阶段
- 取指令阶段:将一条指令从主存中取到指令寄存器的过程。
- 指令译码阶段:指令译码器按照预约的指令格式,对取回的指令进行拆分和解释,识别区分出不一样的指令类别以及各类获取操做数的方法。
- 指令执行阶段:完成指令所规定的各类操作,具体实现指令的功能。为此,CPU的不一样部分被链接起来,以执行所需的操做。
- 访存取数阶段:根据指令需要,有可能要访问主存,读取操作数,这样就进入了访存取数(Memory,MEM)阶段。此阶段的任务是:根据指令地址码,获得操作数在主存中的地址,并从主存中读取该操做数用于运算
- 写回阶段:作为最后一个阶段,结果写回(Writeback,WB)阶段把执行指令阶段的运行结果数据“写回”到某种存储形式:结果数据常常被写到CPU的内部寄存器中,以便被后续的指令快速地存取;在有些状况下,结果数据也可被写入相对较慢、但较廉价且容量较大的主存。许多指令还会改变程序状态字寄存器中标志位的状态,这些标志位标识着不一样的操作结果,可被用来影响程序的动作。
-
ip与物理地址分别作用在那一层?网络层和数据链路层
-
如何证明2个集合的基数相等?
答:构造两个单设函数A与B f1:A—B f2:B----A 若f1与f2均为单设函数,即可证明两个集合的基数相等。
-
数据库设计的步骤
- 需求分析 (数据、功能、性能需求)
- 概念结构设计 (E-R模型)
- 逻辑结构设计 (E-R->表)
- 物理结构设计
- 数据库实施
- 数据库运行与维护
-
软件工程的定义:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。
-
黑盒白盒测试的区别
- 测试方式不同
- 黑盒测试:功能测试,是通过测试来检测每个功能是否都能正常使用。
- 白盒测试:称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试
- 测试目的不同
- 黑盒测试:把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。
- 白盒测试:通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试。在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致
- 测试原则不同
- 黑盒测试:以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。
- 白盒测试:一个模块中的所有独立路径至少被测试一次。所有逻辑值均需测试true和false两种情况。
- 测试方式不同
-
IP编址有哪几种方式
- IP 地址的编址方式经历了三个历史阶段:分类的IP地址、划分子网、构成超网,前两阶段是分类的,第三阶段是无分类
- IP地址=网络地址+主机地址或 IP地址=网络地址+子网地址+主机地址。
- IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。
- 划分子网(由两级IP地址到三级IP地址): IP地址 ::= {<网络号>,<子网号>,<主机号>}
- 无分类编址CIDR(Classless Inter-Domain Routing)——构成超网
- CIDR消除了A、B、C类地址以及划分子网的概念,从划分子网的三级编址变回两级编址,记为
- 三个阶段的编址演变,都是为了更加有效地分配地址空间。
-
冯诺依曼机器特征
- 指令和数据均可用二进制表示。
- 指令由操作码和地址码组成。操作码表示操作的性质、地址码表示操作数在存储器中的位置
- 指令在存储器中按顺序存放。通常,指令是顺序执行的。在特殊情况下,可根据运算结果或指定的条件来改变运算顺序。
- 机器以运算器为中心。输入输出设备和存储器之间的数据传送通过运算器完成。
- 计算机有运算器、存储器、控制器、输入设备和输出设备五大部件组成,这五大部件是计算机不可或缺的部分,缺少了哪一个都无法正常工作
- 指令和数据以同等地位存放于存储器内,并可按地址访问。
-
数据库计算分为两大类
- 传统的数学集合的关系运算
- 数据库专有的关系运算
-
DMA方式:外设和内存之间有一条直接的数据通路,具有程序中断方式的优点,信息传送不再经过CPU,降低了CPU在传送数据时的开销。
-
DMA接口的组成成分?
- 主存地址计数器:存放要交换数据的主存地址
- 传送长度计数器:记录传送数据的长度,计数溢出时,数据即传送完毕,自动发中断请求信号
- 数据缓冲寄存器:暂存每次传送的数据
- DMA请求触发器:每当I/O设备准备好数据后,给出一个控制信号,是DMA请求出发器置位
- 控制/状态逻辑:当控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数,并对DMA请求信号和CPU响应信号进行协调和同步
- 中断机构:当一个数据库传送完毕后出发中断机构,向CPU提出中断请求。
-
DMA接口的功能:
- 在DMA传送中,DMA控制器将接管CPU的地址总线、数据总线、控制总线,CPU的主存控制信号被禁止使用。当DMA传送结束后,将回复CPU的一切权力并开始执行其操作。
- 流程:
- 接收外设发出的DMA请求,并向CPU发出总线请求
- CPU响应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期
- 确定传送数据的主存单元地址及长度,并自动修改主存 地址计数和传送长度计数
- 规定数据在主存和外设间传送方向,发出读写等控制信号,执行数据传送操作
- 向CPU报告DMA操作的结束
-
网络协议的三个核心要素及概念,各起什么作用
- 语法,定义了数据与控制信息的格式;
- 语义,定义了需要发出何种控制信息,完成何种响应动作以及作出何种响应;
- 同步,定义了事件实现顺序的详细说明
-
关系数据库都有哪些操作,特点是什么?
- 查询:选择、投影、连接、除、并、交、差
- 数据更新:插入、删除、修改
- 特点:集合操作方式,即操作的对象和结果都是关系
-
同步和互斥
同步表现为直接制约,如管道通信,一个进程写,一个进程读,它们是相互制约的。互斥表现为间接制约,比如多个进程同时请求打印机(没使用sPoOLing 技术)、多个进程同时请求一张网卡发送数据包等
-
管程
管程是由一组局部变量、对局部变量进行操作的一组过程和对局部变量进行初始化的语句序列组成。引入它的目的是因为 Wait/Singal操作太过分散,对它的维护很麻烦且容易造成死锁。管程的特点是:管程的过程只能访问管程的局部变量,管程的局部变量只能由其过程来访问;任何时刻只能有一个进程进入管程执行;进程只能通管程提供的过程入口进入管程 -
为什么引入多道程序技术?
因为引入多道程序技术后,可以进一步提高了CPU利用率(阻塞),提高内存和I/O设备利用率(小业把内存浪费了),增加系统吞吐量。
-
缓冲的定义,为什么引入
- 提高设备的利用率。(总的来说,提高CPU利用率,提高并行度)。
- 可以协调CPU与I/O设备之间速度不匹配的矛盾;
- 可以减少对CPU的中断频率
-
tcp的三次握手和四次挥手
-
TCP Flags(TCP标志位)每个长度均为1bit
CWR:压缩,TCP Flags值0x80。
ECE:拥塞,0x40。
URG:紧急,0x20。当URG=1时,表示报文段中有紧急数据,应尽快传送。
ACK:确认,0x10。当ACK = 1时,代表这是一个确认的TCP包,取值0则不是确认包。
PSH:推送,0x08。当发送端PSH=1时,接收端尽快的交付给应用进程。
RST:复位,0x04。当RST=1时,表明TCP连接中出现严重差错,必须释放连接,再重新建立连接。
SYN:同步,0x02。在建立连接是用来同步序号。SYN=1, ACK=0表示一个连接请求报文段。SYN=1,ACK=1表示同意建立连接。
FIN:终止,0x01。当FIN=1时,表明此报文段的发送端的数据已经发送完毕,并要求释放传输连接。 -
建立连接需要三次握手
第一次握手:客户端向服务端发送连接请求包,标志位SYN(同步序号)值为1,顺序号码为X=0。第二次握手:服务端收到客户端发过来报文,由SYN=1知道客户端要求建立联机,则为这次连接分配资源。并向客户端发送一个SYN和ACK都置为1的TCP报文,设置初始顺序号码Y=0,将确认序号(ack)设置为上一次客户端发送过来的顺序号(Seq)加1,即X+1 = 0+1=1。
第三次握手:客户端收到服务端发来的包后检查确认号码(ack)是否正确,即第一次发送的Seq加1(X+1=1)。以及标志位ACK是否为1。若正确,服务端再次发送确认包,ACK标志位为1,SYN标志位为0。确认号码(ack)=Y+1=0+1=1,发送顺序号码(Seq)为X+1=1。Server收到后确认号码值与ACK=1则连接建立成功,可以传送数据了。
-
断开连接需要四次挥手
提醒:中断连接端可以是Client端,也可以是Server端。只要将下面两角色互换即可。
第一次挥手:客户端给服务端发送FIN报文,用来关闭客户端到服务端的数据传送。将标志位FIN和ACK置为1,顺序号码为X=1,确认号码为Z=1。意思是说”我Client端没有数据要发给你了,但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK过来。”第二次挥手:服务端收到FIN后,发回一个ACK(标志位ACK=1),确认号码为收到的顺序号码加1,即X=X+1=2。顺序号码为收到的确认号码=Z。意思是说“你的FIN请求我收到了,但是我还没准备好,请继续你等我的消息" 这个时候客户端就进入FIN_WAIT状态,继续等待服务端的FIN报文。
第三次挥手:当服务端确定数据已发送完成,则向客户端发送FIN报文,关闭与客户端的连接。标志位FIN和ACK值为1,顺序号码为Y=1,确认号码为X=2。意思是告诉Client端“好了,我这边数据发完了,准备好关闭连接了。”
第四次挥手:客户端收到服务器发送的FIN之后,发回ACK确认(标志位ACK=1),确认号码为收到的顺序号码加1,即Y+1=2。顺序号码为收到的确认号码X=2。意思是“我Client端知道可以关闭连接了,但是我还是不相信网络,怕 Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。“(在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放。)
为什么关闭的时候却是四次挥(握)手?
因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
-
数据库的完整性约束:实体完整性、参照完整性、用户定义完整性、关系完整性
- 关系完整性约束:是为了保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则
- 实体完整性:实体完整性是指一个关系中所有主属性不能取空值
- 参照完整性:参照的完整性要求关系中不允许引用不存在的实体。又称引用完整性
- 用户定义完整性:用户定义某个具体数据库所涉及的数据必须满足的约束条件,是由具体应用环境来决定的。
-
ICMP协议
答:ICMP是 Internet Control Message Protocol,因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由器是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP报文有两种:差错报告报文和询问报文。
-
TFTP协议
答:Trivial File Transfer Protocol,是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
-
HTTP协议
答:HTTP超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
-
DHCP协议
答:动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段。是应用层的协议,基于UDP
-
HDLC是面向比特的数据链路层协议、ppp协议是面向字节的协议
-
网桥的作用
网桥是一个局域网与另一个局域网之间间接连接的桥梁
-
防火墙的端口防护
指通过对防火墙的端口开关的位置,关闭一些非必要端口,达到一定安全防护目的的行为
-
网络按地域分类:局域网、城域网、广域网
-
网络按使用者分为:公共网和专业网
-
网络的拓扑结构:星型、总线型、环形、树形、全连接、不规则网状
-
计算机网络体系结构:实际上是分层加每层对应的协议集合,协议包括三个组成部分:语法、语义、时序
-
SQL的四个部分:数据定义子语言、数据操纵子语言、数据控制子语言、系统存储过程
-
DBM支持哪几种数据模型:层次模型、网状模型、关系模型、面向对象模型
-
父子进程是否可以并发运行?
可以,父进程创建子进程后,子进程也成为了一个可以独立运行的单位,虽然子进程继承了父进程的全部资源,但是只要两个进程创建的程序和数据没有冲突,他们就可以并发进行。
-
网络延时:指一个报文或分组从一个网络传送到另一端所需的时间
-
完整性约束:强制数据完整性可以确保数据库中的数据质量
-
码元:数字通信中常常用时间间隔相同的符号来表示一个二进制数字。这样的时间间隔内的信号称为二进制码元,而这个间隔被称为码元长度
-
什么是管态?什么是目态?它们与进程运行状态的关系是什么?
- CPU交替执行操作系统程序和用户程序。
- 管态又叫特权态,系统态或核心态。CPU在管态下可以执行指令系统的全集。通常,操作系统在管态下运行。
- 目态又叫常态或用户态。机器处于目态时,程序只能执行非特权指令。用户程序只能在目态下运行,如果用户程序在目态下执行特权指令,硬件将发生中断,由操作系统获得控制,特权指令执行被禁止,这样可以防止用户程序有意或无意的破坏系统。
-
与IP协议配套的其他协议
- ARP:地址解析协议(IP->MAC)
- RARP:逆地址解析协议(MAC->IP)
- ICMP: 因特网控制报文协议
- IGMP:因特网组管理协议
-
银行家算法
- 一种避免死锁产生的算法
- 在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。
- 银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。为实现银行家算法,系统必须设置若干数据结构
-
基本表和视图的区别
- 视图是虚拟的表,视图展示的数据来自于 基本表。
- 视图中不存储具体的数据,而存储的是sql逻辑,基本表的数据发生改变,视图的展示结果也会随着发生改变,它占用少量的物理空间;而表中保存的是数据,占用大的物理空间;
- 对视图的操作跟普通表是一样的,如:创建视图,删除视图。。视图的建立create和删除drop只影响视图本身,不影响对应的基本表。
- 若视图中的字段数据是来自于基表的话,一般是可以对视图中的数据 进行更新的,对视图数据进行添加、删除和修改操作会直接影响基本表。其他情况不允许更新,如:若视图中的字段使用了函数avg(age)等,就不能进行更新;
- 视图的使用:一般都是把基表的子查询sql语句 封装成视图,方便使用,而且更高效。
- 隐藏一些不想展示给用户的数据。只展示必要的数据。如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等。
-
视图的作用
- 简化数据查询语句
- 使用户能从多个角度看到同一数据
- 提高数据的安全性
- 提供了一定程序的逻辑独立性
-
深度优先遍历和广度优先遍历都是获取图上的顶点的思想方法。
- bfs:先获取一个顶点,距离该顶点最近距离的先获取,最远距离的最后获取。
- dfs : 先获取一个顶点,选定一个分支,每次都获取他的下一个没获取过的顶点,直到都获取完或者没有后继顶点,则返回上一个顶点。
3. 不递归实现bfs:1 顶点v入队列;2 当独立额非空时则继续执行,否则算法结束;3 出队列取得队头顶点v并访问顶点v并标记顶点v已被访问; 4 查找顶点v的第一个领接顶点col; 5 若v的邻接顶点col未被访问过,则col入队列; 6 继续查找顶点v的另一个新的邻接顶点col 转到步骤5 直到顶点v的所有未被访问过的邻接点处理完,转到步骤2
4. 不递归实现dfs:1 栈S初始化;2 访问顶点v 并标记v已被访问,顶点V入栈;3 开始循环只要栈S是非空的,然后取的栈顶元素去判断它是不是又没有被访问过的点,若没有访问就标记一下并入栈,否则就是出栈
-
三级存储体系:cache、主存储器、辅助存储器。
- 合理选择存储器,提高性价比、在满足需求的同时降低成本。
- 过程序局部性原理,从低速设备缓冲入高速设备,从而解决处理器和存储直接的数据差异的问题
- cache-主存:主要解决CPU和主存之间的读取速度的差异的问题,通常由硬件来实现
- 主存-辅存:主要解决主存容量少的问题,通常由软件来实
现。
-
交换机
- 工作原理:它读取目的和源MAC地址与交换机内部的动态查找表进行比较,若不在查找表中,则将其与交换机接口建立映射并加入表中,同时转发数据帧到对应的目的端口。
- 交换机工作于数据链路层。交换机内部的CPU会在每个端口成功连接时,通过ARP协议学习它的MAC地址,保存成一张ARP表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有端口。因此交换机可以用于划分数据链路层广播(冲突域)但它不能划分网络层广播(广播域)
-
内存管理的作用:
- 内存的空间的分配与回收,由操作系统完成组存储器空间的分配和管理。
- 地址转换,把程序中的逻辑地址转化为内存中的物理地址。
- 内存空间的扩充:利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存
- 存储保护,保证各道作业在各自的存储空间内运行,互不干扰。
-
简述满二叉树,完全二叉树,二叉排序树,平衡二叉树的特性
- 满二叉树:只有度为2和0的结点,高度为H,结点数为2的H次方-1
- 完全二叉树:除最后一层结点外,其余各层结点数量达到最大值,并且最后一层只能在最右边缺少结点
- 二叉排序树:左子树上的关键字 < 根结点关键字 < 右子树上的关键字(其中序遍历为递增序列)
- 平衡二叉树:二叉排序树的任意结点的左、右子树的高度之差的绝对值不超过1
-
进程阻塞或被唤醒
- 启动优先级更高的进程
- 等待新任务的到达:进程完成自己的任务后把自己阻塞起来,等待新任务到达将其唤醒
-
TCP/IP的核心思想是?
网络互连”将使用不同底层协议的异构网络,在传输层、网络层建立一个统一的虚拟逻辑网,以此来屏蔽所有物理网络的硬件差异,从而实现网络互连。
-
什么是队列的上溢现象和假溢出现象?解决它们有哪些方法
- 队列上溢现象:用固定大小的数组存放队列元素时,如果元素个数超出了数组大小,就会溢出。
- 解决方法
- 用动态数组来存放队列元素,当元素个数达到数组上限时,再申请一个更大的数组空间即可。
- 用链表来存放队列元素
- 假溢出现象:系统作为队列用的存储区还没有满,但队列却发生了溢出
- 解决方法:
- 将队列元素向前“平移”
- 将队列看成首尾相连,即循环队列
-
什么是 RISC?RISC 指令系统的特点是什么
- RISC,即精简指令集计算机,是一种执行较少类型计算机指令的微处理器,起源于MIPS主机。
- 复杂指令由频度高的简单指令组合实现。
- 指令长度固定,指令格式种类少,寻址方式种类少。
- 只有取数/存数指令访问存储器,其余指令的操作都在寄存器内完成。
- CPU包含较少的单元电路,功耗低。
- 采用流水线技术或超标量和超流水线技术,缩短平均执行时间。
- 控制器采用组合逻辑控制,不采用微程序控制
- 采用优化的编译程序
-
什么是曼彻斯特编码和差分曼彻斯特编码?其特点是什么?
- 曼彻斯特编码:一种同步时钟编码技术,被物理层用来编码一个同步位流的时钟和数据。
- 特点:每一位的中间有一跳变,从高到低跳变表示“1”,从低到高跳变表示“0”。
- 差分曼彻斯特编码:曼彻斯特编码的改进。
- 特点:每位中间的跳变仅提供时钟定时,而用每位开始时有无跳变表示“0”或“1”
- 曼彻斯特编码:一种同步时钟编码技术,被物理层用来编码一个同步位流的时钟和数据。
-
事务指的是满足 ACID 特性的一组操作,那ACID具体指的是啥?
- 事务:一般是指要做的或所做的事情,在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元
- 事务是恢复和并发控制的基本单位,应该具有的四个特性:原子性、一致性、隔离性、持久性
- 原子性:不可再分,整个语句要么执行,要么不执行。
- 一致性:事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性和原子性是密切相关的
- 隔离性:一个事务的执行不能被其他事务干扰。并发执行的各个事务之间互不干扰。
- 持久性:一个事务一旦提交,该事务对数据库所作的更改便持久地保存在数据库之中。
-
对单链表设置头节点的作用是什么?(至少说出两条好处)
- 对所有的节点进行插入删除都是一样的步骤,不需要进行单独的处理。
- 单链表为空的情况与非空单链表的处理是一样的,即使是空表也有一个头节点。
-
请简要说明常见的主机与外围设备之间信息传送的控制方式,并指出采用哪 种方式 CPU 效率最低,哪种方式效率最高。
答:程序中断方式,中断方式,DMA方式,通道方式程序中断方式CPU效率最低;通道方式效率最高
-
简述转发器、交换机、路由器和网关,网卡的工作层次和作用
- 转发器又称中继器、放大器,执行物理成协议,它的作用是放大信号,补偿信号衰减,支持远距离通信,其原理是信号再生。
- 交换机是多端口的网桥,它工作在数据链路层,能隔离冲突域。
- 路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络并完成路由转发,工作在网络层。两个作用(连接不同的网络、选择信息传送的线路)
- 网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关即可以用于广域网互连,也可以用于局域网互连。网关时一中充当转换众人的计算机系统或设备。使用在不同的通信协议、数据格式或语言、甚至体系结构完全不同的两种系统之间,网关是一个翻译器
- 网卡也称网络适配器,是电脑与局域网相互连接的设备。有两个功能:一是将电脑的数据封装成帧,并通过网线(无线网是电磁波)将数据发送到网络上去;二是接收网络上其他设备传过来的帧,并将帧重新组合成数据,发送到所在的电脑中。网卡能接收所有在网络上传输的信号,但正常i情况下只接收发送到该电脑的帧和广播帧,将其余帧丢弃。然后,传送到系统cpu做进一步处理,当电脑发送数据时,网卡 等待合适的时间将分组插入到数据流中。接收系统通知电脑信息是否完整地到达,如果出现问题,将要求对方重新发送
-
OS 有哪几大特征?其最基本的特征是什么?
- 共享性、并发性、异步性、虚拟性
- 共享和并发是操作系统的两个最基本的特征,虚拟以并发和共享为前提,异步是并发和共享的必然结果。
-
面向对象和面向过程有哪些区别
- 面向对象是将现实世界理解、抽象的方法、思想,通过将生产要素转化成对象进行问题处理一种思想,是一种以对象为中心的编程思想,以消息进行驱动。
- 面向过程是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数,面向对象是一种以对象为中心的编程思想,以消息进行驱动。
-
端到端通信和点到点通信有什么区别?
- 点到点是数据链路层的说法,因为数据链路层只负责直接相连的两个节点之间的通信,一个节点的数据链路层接受ip层数据并封装之后,就把数据帧从链路上发送到与其相邻的下一个节点。
- 端到端是传输层的说法,因为无论tcp还是udp协议,都要负责把上层交付的数据从发送端传输到接收端,不论其中间跨越多少节点。只不过tcp比较可靠而udp不可靠而已。所以称之为端到端,也就是从发送端到接收端网络要通信,必须建立连接,不管有多远,中间有多少机器,都必须在两头(源和目的)间建立连接,一旦连接建立起来,就说已经是端到端连接了,即端到端是逻辑链路,这条路可能经过了很复杂的物理路线,但两端主机不管,只认为是有两端的连接,而且一旦通信完成,这个连接就释放了,物理线路可能又被别的应用用来建立连接了。
- 端到端是由无数的点到点实现和组成的。
-
并发一致性问题有那些?
-
在并发环境下,事务间的隔离性很难保证,因此会出现并发一致性问题。并发一致性问题主要有四类,即:丢失修改问题,读脏数据问题,不可重复读问题,幻影读问题。
-
丢失修改问题:T1和T2两个事务都对同一数据进行修改,T1先修改,T2随后修改,T2的修改覆盖了T1的修改。
-
脏读数据问题:T1修改了一个数据,T2随后读取了这个数据,但是T1又撤销了修改,此时T2读取到的数据就是脏数据。
-
不可重复读问题:T1读取了一个数据,T2随后修改了这个数据,T1再次读取这个数据时与之前读取的值不同
-
幻读问题:T1读取一个范围内的数据,T2随后插入了该范围内的一个数据,T1再次读取这个范围内的数据时,和第一次读的结果不同。
-
-
为什么会引入线索二叉树?它有什么优势?
目的:方便查找一个结点的前驱后继
优势:加快查找结点前驱后继的速度 -
请说明 SRAM 的组成结构,与 SRAM 相比,DRAM 在电路组成上有什么不同之处?
组成结构:存储阵列、灵敏放大器、译码器、输入输出电路、时序控制电路不同:组成SRAM的基本电路是双稳态触发器,组成DRAM的电路单元是一个场效应管和一个电容
-
在创建一个进程时所要完成的主要工作是什么
- 申请空白PCB
- 为新进程分配资源
- 初始化PCB
- 将新进程插入就绪队列
-
什么是 CSMA/CD?并论述其发送过程。
CSMA/CD,即载波监听多点接入/碰撞检测
发送过程:在总线上不断地发出信号去探测路线是否空闲,如果不空闲则随机等待一定时间,再继续探测,直到发出信号为止。先听后发,边听边发、冲突停发、随机重发 -
简述中断的步骤及中断响应的条件
中断的步骤
- 保护断点(将本来将要执行的指令地址保存入堆栈)
- 寻找中断入口
- 执行中断处理程序
- 中断返回执行完中断指令后,就从中断处返回到主程序,继续执行
中断响应的条件
- 有中断源发出的中断请求。
- CPU允许中断。
- 中断指令的优先级更高
-
文件管理有哪些主要功能
- 文件存储空间管理
- 目录管理、
- 文件的读/写管理和保护
-
简述 TCP 和 UDP 协议的主要特点和应用场合
- TCP:面向连接的、可靠的、传输大量数据,较慢,提供了流量控制和拥塞控制的机制
- UDP:面向无连接、不可靠、传输少量数据、较快
- 当更加注重完整性可靠性和可控制性时 TCP协议时最好的选择
- 当程序目标是尽可能地传输多的信息,不强调完整性时可采用UDP
-
关系模式中的存储异常问题?
- 数据冗余浪费大量的存储空间
- 更新异常:数据冗余,更新数据时,维护数据完整性代价大
- 删除异常:不该删除的数据不得不删
- 插入异常:该插的数据插不进去
- 产生的原因:模式中某些数据依赖引起的
- 关系的规范化:把不好关系数据库模式转变为好的关系数据库模式
-
请比较 AOE 网与 AOV 网?
- AOV网(Activity On Vertex NetWork)用顶点表示活动,边表示活动(顶点)发生的先后关系。若网中所有活动均可以排出先后顺序(任两个活动之间均确定先后顺序),则称网是拓扑有序的。可以用来求拓扑排序。
- AOE(Activity On Edge NetWork)网的定义:在带权有向图中若以顶点表示事件,有向边表示活动,边上的权值表示该活动持续的时间,这样的图简称为AOE网。可以求关键路径
-
试论证在浮点数加减为什么要对阶对阶原则反过来为什么不行?
- 对阶的目的:使两个浮点数的尾数能够进行加减运算,因为,当进行加减运算时,只有使两浮点数的指数部分相同,才能将相同的指数值作为公因数提出来,然后进行尾数的加减运算。
- 对阶原则:小阶对大阶,若大阶对小阶(反过来),则尾数的数值部分的高位需移出,而小阶对大阶移出的是尾数的数值部分的低位,这样损失的精度更小。
-
什么是多路复用技术?有几种复用方法?
多路复用:将多个信号组合在一条物理信道上进行传输,使多个多个计算机或终端设备共享信道资源,提高信道利用率。
频分多路复用、时分多路复用、波分多路复用、码分多路复用 -
与组合逻辑控制方式相比,微程序控制器有何优点?
微程序控制设计规整,调试、维修以及更改、扩充指令方便的优点,易于实现自动化设计 -
在解决死锁问题的几个方法中,哪种方法最易于实现?哪种方法使资源利用率最高?
解决死锁的四种方法:预防死锁、避免死锁、检测和解除死锁
预防死锁是最容易实现的,避免死锁使资源利用率最高
-
栈在后缀表达式求值的算法思想
- 遍历整个表达式
- 如果是操作数,入栈;
- 如果是操作符,将当前栈顶元素和栈第二个元素出栈进行运算,并将结果压栈;若是除(减)操作符,第二个元素作为被除数(被减数),栈顶元素作为除数(减数);
- 表达式遍历完后,当前栈的栈顶元素即为所求表达式的值。
-
一个计算机系统中的总线,大致分为哪几类?
- 内部总线:CPU内部连接各寄存器及运算部件之间的总线
- 系统总线:CPU同计算机系统的其他高速功能部件互相连接的总线
- I/O总线:中、低速I/O设备之间互相连接的总线
-
高级调度与低级调度的主要任务是什么?
- 高级调度(作业调度)的主要任务是根据某种算法,把外存上处于后备队列中的那些作业调入内存。
- 低级调度(进程调度)是按照某种算法从就绪队列中选取一个进程,将处理机分配给它。
-
简述HTTP协议的特点和工作过程。
- 特点:
- B/S结构(Browser/Server,浏览器/服务器模式)
- 无状态
- 简单快速、可使用超文本传输协议、灵活运行传输各种类型
- 工作过程:
- 域名解析通过DNS把域名解析成IP地址;并且从url中找出端口号(没有,则默认http默认为80,https为403);
- 建立连接:根据得到的IP和端口,创建socket、 三次握手建立TCP连接;
- 发起请求:浏览器向服务器发起http请求;
- 相应请求:服务器相应http请求,并渲染页面元素呈现给用户
- 关闭连接:四次挥手断开连接,也可以根据keep-alive属性继续保持长连接而不断开。
- 特点:
-
什么是软件工程?目前有哪几种主要的软件工程方法?
软件工程是指用系统化、规范化。数量化等工程原理和方法去进行指导软件开发和维护的学科。
它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
主要有传统方法也称为经典软件工程方法或生命周期方法或结构化范型和面向对象方法。
-
软件危机:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列的问题。
-
软件危机的形成:
- 硬件生产率大幅提高,生成力过剩
- 软件生产规模增大复杂度增大
- 软件生产率低
- 硬件软件供需失衡
- 矛盾引发软件危机
-
软件危机的具体体现:
- 软件开发进度难以预测。拖延工期
- 软件开发成本难以控制。投资一再追加,令人难于置信
- 用户对产品功能难以满足。开发人员和用户之间很难沟通、矛盾很难统一。
- 软件产品质量无法保证。系统中的错误难以消除。软件是逻辑产品,质量问题很难以统一的标准度量,因而造成质量控制困难。
- 软件产品难以维护。软件产品本质上是开发人员的代码化的逻辑思维活动,他人难以替代,除非是开发者本人,否则很难及时检测、排除系统故障。为使系统适应新的硬件环境,或根据用户的需要在原系统中增加一些新的功能,又有可能增加系统的错误
- 软件缺少适当的文档资料
-
Dijkstra 算法和 BFS 求的最短路径有什么区别吗
dijkstra算法是求单源点的最短路径问题,要求权值不能为负;BFS算法则是从某顶点出发按广度优先的原则依次访问各连通的顶点,BFS求最短路径的图的边是不带权值或权值相等的。
-
指令和数据均存放在内存中,CPU 如何从时间和空间上区分它们是指令还是数据?
- 从时间上来说:通常完成一条指令可分为取指阶段、分析阶段和执行阶段,取指令事件发生在“取指周期”
- 从空间上来说:取数据事件发生在“执行周期”,存储单元地址的取出的是指令,由指令地址码部分提供存储单元地址的取出的是操作数。
-
分区存储管理中常用哪些分配策略?
- 固定分区存储管理:将内存划分为若干固定大小的分区每个分区中最多只能装入一个作业。当作业申请内存时系统按一定的算法为其选择一个适当的分区并装入内存运行,会有存储空间浪费。
- 可变分区存储管理不是预先将内存划分分区而是在作业装入内存时建立分区使分区大小正好与作业要求的存储空间相等,有较大的灵活性也提高了内存利用率,但是会有存储碎片的产生。算法有首次适应算法,循环首次适应算法,最佳适应算法,最坏适应算法。
-
SMTP 协议的用途是什么?
简单邮件传输协议,它是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。SMTP 通过 TCP 协议在电子邮件应用程序与邮件服务器之间建立传输连接,然后传输电子邮件,并在邮件传输完毕后关闭连接 -
什么是计算机系统完整性?完整性约束条件作业的对象?
- 数据的完整性是指数据的正确性和相容性,防止不合语义的数据进入数据库。
- 列:对属性的取值类型、范围、精度等的约束条件
- 元组:对元组中各个属性列间的联系的约束
- 关系:对若干元组间、关系集合上以及关系之间的联系的约束
-
对于快排的叙述
- 快排是一中采用分治思想的排序算法,大致分为三个步骤
- 步骤
- 定基准----首先选择一个元素作为基准值
- 划分区-----所有比基准小的元素至于基准左侧,比基准大的元素置于右侧,构成左右两个子序列
- 递归调用—递归地调用此切分过程,划分其子序列,直到子序列只含有一个值的时候停止递归
- 基准值的选取有多种方法。但是不同的选取方法对排序的性能会有比较大的影响。
- 序列的第一个值:最简单的选取方式,但是某些情况下,会导致划分的子序列非常的不均衡。比如序列是有序的时候,每次只能划分出一个子序列,而不是两个
- 几数取中:从几个中选取一个基准值,选择的基准值是这几个数中的中间值。此种方式可以避免第一种方式种极端情况出现,会让划分比较均衡
- 随机选取:随机选一个数作为基准值,这种方式也会避免极端情况的出现
- 划分是把数据分成两部分,一部分小于基准值,一部分大于基准值,划分过程大致如下:
- 从当前序列从后往前找到第一个小于基准的数。
- 从当前序列从前往后找到第一个大于基准的数。
- 交换找到的这两个数。继续执行1,2步,直到1,2步遍历的位置相遇则结束。
- 基准值与相遇位置的数据进行交换,完成当前序列的划分,此时所有小于基准的数据在左,大于等于基准的数据在右。
- 时间复杂度
- 最坏情况:数据有序,每次划分都只能等到一个子序列。O(n^2)
- 最好情况:最理想情况下,每次划分都可以得到元素个数相等的两个子序列 O(nlogn)
- 平均:O(nlogn)
- 空间复杂度
- 快速排序过程中,需要进行递归调用,所以需要进行函数压栈操作,每一个函数栈中占用常数空间,最好情况下,最大的递归调用深度为logn, 最坏情况下,最大递归调用深度为n, 故最好情况下为O(logn), 最坏为O(n)。
-
作业调度和进程调度的区别
- 作业调度的主要任务是按一定的原则从外存上处于后备状态的作业种挑选作业进入内存,为它们创建进程,分配必要的资源放于就绪队列当中
- 进程调度的主要目的是为了提高内存利用率和系统吞吐率,把暂时不运行的进程从内存调到外存
-
算法的概念与特性
- 概念:算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每一条指定表示一个或多个操作
- 特性:有穷性、可行性、确定性、输入、输出
- 确定性:算法中每一条指令必须有确切的含义,不会产生二义性
- 有穷性:算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成
- 可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成
- 好算法的特性:健壮性 可读性 正确性 效率与低存储量需求
-
IPv4和IPv6的区别
- IPV4的地址位数是32位,IPv6是128位
- IPv6具有更小的路由表,IPV6的地址分配一开始就遵循聚类的原则,这使得路由器能在路由表中用一条记录表示一片子网,大大减少了路由器中路由表的长度,提高了路由器转发数据包的速度,增强了组播支持以及对流的支持
- IPv6比IPv4的安全性更高,在使用IPv6网络中的用户可以对网络层的数据进行加密并对IP报文进行校验
-
动态规划和贪心算法
- 动态规划算法的基本思想和分治法类似,都是将待求解的问题分解成若干子问题,按顺序求解子阶段,前一个子问题的解,为后一个子问题的求解提供了有用信息。但动态规划对每个子问题只求解一次,并把子问题的最优解保存起来
- 动态规划和贪心都是一种递推算法,均用局部最优解来推到全局最优解
- 只要区别是贪心选择所求问题的整体最优解,可以通过一系列局部最优的选择来达到
-
模块化软件开发
把一个系统分解成各个不同的子模块,不同的开发者,专注于对其中某一模块的开发,基于模块化的性质,每个模块在开发出来以后都可以通过一个被称作是内核的原系统进行信息交流,发挥整个模块的功能,同时也不会影响其他模块功能的发挥。而且在各个不同的模块整合在一起后,由于外部性的存在,会使整个系统增加的功能要超过该模块自身的功能
-
几种常见的操作系统
- 功能:存储器管理功能、处理机管理功能、设备管理功能、文件管理功能、用户接口管理
- 单道批处理系统
- 多道批处理系统
- 分时操作系统
- 实时操作系统
- 网络操作系统
- 分布式计算机系统
- 个人计算机操作系统
-
一个指针变量占几个字节
- 假设p指向char类型变量 (占1个字节)
- 假设q指向int类型变量 (占4个字节)
- 假设r指向double类型变量(占8个字节)
- 任何类型的指针变量都是占用4个字节。
-
局部变量和全局变量可以同名
当局部变量和全局变量同名时,在函数内引用这个变量,会用到同名的局部变量而不是全局变量 -
完整性约束:是一组完整性规则的集合,它时对数据模型及其联系所具有的制约和依赖性规则,用来保证数据的正确性,有效性和兼容性。
-
与文件系统相比,数据库系统有什么优点
- 提高了数据的共享性,使多个用户可以同时访问数据库中的数据
- 减少了数据的冗余度
- 提高了数据与应用程序的独立性
- 提高了数据的一致性和完整性
-
文件系统和数据库系统之间的区别
- 文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据
- 根本区别是数据结构化文件系统中的程序和数据有一定联系,数据库系统中的程序和数据分离
- 文件系统用操作系统中存取方法对数据进行管理,数据库系统用DBMS管理和控制数据
- 文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享
-
文件系统和数据库系统之间的联系
- 均为数据组织的管理技术
- 均由数据管理软件管理数据,程序与数据之间用存取方法进行转换
- 数据库系统是在文件系统的基础上发展而来
-
带宽:作为表示总线和内存性能的指标之一。单位时间内可以传输的数据总量
-
总线带宽指的是总线在单位时间内可以传输的数据总量
-
内存带宽指的是内存总线所能提供的数据传输能力
-
迷宫使用的算法:dfs、随机prim算法
-
关系代数:是一中抽象的查询语言,用于对关系的运算来表达查询,作为研究关系数据语言的数学工具。关系代数的运算对象是关系,运算结果也是关系,专门的关系运算包括:选择、投影、连接、除等
-
线程
- 线程是进程的一个实体,是cpu调度和分派的基本单位,它是比进程更小的能独立运行的基本单位
- 使用场景:需要频繁创建销毁的优先使用线程;线程的切换速度块,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可以提高应用程序的响应;并行操作时使用线程
-
数据库中的数据模型:层次模型、网状模型、关系模型、对象关系模型、对象模型
-
以太网,无线局域网发送数据后是否需要对方确认
以太网不需要,无线局域网需要 -
以.c和.h文件编译成执行文件的过程是什么
- 编译器会用“.h文件中的内容”替换“该行的代码”,起一个“替换”的作用。
- 编译器分别对这.c个文件进行编译,生成.obj中间文件;编译器对这个.obj文件生成一个可执行的二进制文件;
-
编译器的工作流程:一个程序的编译通常有包含以下几个阶段:预处理阶段、词法和语法分析阶段、编译阶段和连接阶段。当词法和语法分析无误后,编译生成目标文件,之后连接器以目标文件以目标文件为对象,对各段代码中的函数和变量进行绝对地址定位生成可执行文件。
-
软件工程的重构和设计模式
- 设计模式:是一套被反复使用,多数人知晓的,经过分类编目的代码设计经验总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性、程序的重用性。
- 单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。
适用于:当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时;当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。 - 工厂模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method 使一个类的实例化延迟到其子类。
适用于:当一个类不知道它所必须创建的对象的类的时候;当一个类希望由它的子类来指定它所创建的对象的时候;当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
- 单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。
- 设计模式分为三种类型,共23种
- 创建型模型:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式
- 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式
- 行为模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式
- 重构就是在不改变软件现有的基础上,通过调整程序代码改善软件的质量、性能,使其的设计模式和架构更加合理,提高软件的扩展性和维护性。目的是提高软件了理解性,降低软件的修改成本
- 设计模式:是一套被反复使用,多数人知晓的,经过分类编目的代码设计经验总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性、程序的重用性。
-
数据库的数据保护都有哪些?怎么实现的
- 有防止非法使用数据库,造成的数据泄露,更改或破坏;防止多个用户同时存取同一数据造成的数据不一致
- 通过四方面实现:安全性控制、完整性控制、并发性控制、数据恢复
-
香农定理:给出了带宽受限且有高斯白噪声干扰的信道的极限数据传输速率
- 信道的带宽或信道中信噪比越大,信息的极限传输速率越高
- 对一定的传输带宽和一定的信噪比,信息传输速率的上限是确定了的
- 只要信息传输速率低于信道的极限传输速率,就能找到某种方法来实现无差错的传输
- 香农定理得出的是极限信息传输速率,实际信道能达到的传输速率要比它低不少
-
奈奎斯特定理规定:在理想低通(没有噪声、带宽有限)的信道中,为了避免码间串扰,极限码元传输速率为2倍的理想低通信道的带宽。
- 在任何信道中,码元传输速率是有上限的,若传输速率超过此上限,就会出现严重的码间串扰问题,使得接收端不可能完全正确识别码元
- 信道的频带越宽(即通过的信号高频分量越多),就可用更高的速率进行码间的有效传输
- 奈式准则给出了码元传输速率的限制,但并未对信息传输速率给出限制,即未对一个码元可以对应多少个二进制位给出限制
- 由于码元传输速率受奈氏准则的制约,所以要提高数据传输速率,就必须设法使每个码元携带更多比特的信号量,此时就需要采用多元制的调制方法。
-
香农定理和奈奎斯特定理体现了一个码元对应的二进制位数是有限的。
-
ER模型
- 组成:主要有实体、属性、联系三个部分组成
- 样例:学生选课中 学生就是实体(考虑问题的对象)、姓名就是属性(实体或联系的某一特性)、选课就是联系(实体之间的联系)
-
存储过程是在大型数据库中,一组为了完成特定功能的sql语句集。它存储在数据库中,经过第一次编译后再次调用不需要在编译,用户通过指定存储过程的名字并给出参数来执行它。详单与数据库中的函数,但要高级一些。
-
存储过程的好处
- 由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。
- 一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。
- 通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。
-
自主存储控制和强制存储控制的区别
- 自主访问控制:由客体的属主对自己的客体进行管理,由属主自己决定是否将自己的客体访问权或部分访问权授予其他主体,这种控制方式是自主的。也就是说在自主访问控制下,用户可以按自己的意愿,有选择地与其他用户共享他的文件。
- 自主访问控制是保护系统资源不被非法访问的一种有效手段。但这种控制是自主的,即它是以保护用户的个人资源的安全为目标并以个人的意志为转移。自主访问控制是一种比较宽松的访问控制,一个主题的访问权限具有传递性,强调自主,自己来决定访问策略,安全风险也来自自主
- 强制访问控制:用户的权限和客体的安全属性都是系统管理员人为设置的,或是有操作系统自动地按照严格的安全策略与规则进行设置,用户和他们的进程不能修改这些属性。
-
orm:对象关系映射,是一种程序技术,用于实现面向对象编程里不同类型系统的数据之间的转换
-
堆和栈
- 栈区(stack) 由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其
操作方式类似于数据结构中的栈。 - 堆区(heap) 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回
收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 - 全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的
全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另 一块区域。 - 程序结束后由系统释放。 - 文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
- 程序代码区—存放函数体的二进制代码。
- 栈区(stack) 由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其
-
堆栈
- 申请后系统的响应
栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢
出。
堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,
会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表
中删除,并将该结点的空间分配给程序 - 申请大小的限制
栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意
思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将
提示overflow。因此,能从栈获得的空间较小。
堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储
的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小
受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。 - 申请效率的比较:栈由系统自动分配,速度较快。但程序员是无法控制的。
堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便.
另外,在WINDOWS下,最好的方式是用VirtualAlloc分配内存,他不是在堆,也不是在栈是
直接在进程的地址空间中保留一块内存,虽然用起来最不方便。但是速度快,也最灵活
- 申请后系统的响应
-
结构化设计:是一种面向数据流的设计方法,目的在于明确软件的结构
-
结构化分析:是一种面向功能或面向数据流的需求分析方法,采取自顶向下,逐层分解的方法,建立系统的处理流程。结构化分析,我认为它是整体和细节的桥梁,把一个软件整体分成几个块,不同的块负责不同的内容。一个软件可能是一个很大的工程,但是它也是由许多小部件搭建起来的,如何确定这些小部件,这时候就需要用到结构化分析方法。
-
new 和 malloc 的区别?
- malloc 与 free 是 C++/C 语言的标准库函数, new/delete 是 C++的运算符。它们都可用
于申请动态内存和释放内存。 - 对于非内部数据类型的对象而言,光用 maloc/free 无法满足动态对象的要求。对象在创
建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。 - 由于 malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造
函数和析构函数的任务强加于 malloc/free。因此 C++语言需要一个能完成动态内存分配和
初始化工作的运算符 new,以一个能完成清理与释放内存工作的运算符 delete。注意
new/delete 不是库函数。 - C++程序经常要调用 C 函数,而 C 程序只能用 malloc/free 管理动态内存
- new 可以认为是 malloc 加构造函数的执行。 new 出来的指针是直接带类型信息的。而
malloc 返回的都是 void 指针。
- malloc 与 free 是 C++/C 语言的标准库函数, new/delete 是 C++的运算符。它们都可用
-
什么是内存泄漏?面对内存泄漏和指针越界,你有哪些方法?你通常采用哪些方法来避免和减少这类错误?
- 用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元
即为内存泄露。 - 使用的时候要记得指针的长度 ,malloc 的时候得确定在那里 free. 对指针赋值的时候应该注意被赋值指针需要不需要释放,动态分配内存的指针最好不要再次赋值
- 用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元
-
软件测试:
- 软件质量表现: 1.用户需求 2.开发规范 3.隐含要求
- 软件质量: 是软件产品的特性可以满足用户的功能、性能需求的能力
- 软件可靠性: 在特定环境下,在给定时间内无故障运行的概率
- 软件错误: 软件没有实现其最终用户合理预期的功能要求
- 代码审查 (Code Review)三部曲:
代码互查(Peer Review)
代码走查 (Walk Through)
正式会议审查 (Inspection) - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-re4hlsYv-1648005102237)(E:%5CLearningSources%5Cjava%E5%AD%A6%E4%B9%A0%5CNote%5Cphoto%5Cimage-20220317170559433.png)]
-
ER图
- 实体 :用矩形表示,矩形框内写明实体名.
- 属性 :用椭圆形表示,并用无向边将其与相应的实体连接起来。
- 联系 :用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无
向边旁标上联系的类型(1…1,1…* 或 …)就是指存在的三种关系 (一对一、一对多或
多对多)。 - ER 模型转换为关系模式的原则:
- 一对一 :遇到一对一关系的话,在两个实体任选一个添加另一个实体的主键即可。
- 一对多 :遇到一对多关系的话,在多端添加另一端的主键。
- 多对多 :遇到多对多关系的话,我们需要将联系转换为实体,然后在该实体上加上另外两个
实体的主键,作为联系实体的主键,然后再加上该联系自身带的属性即可。
-
DBS包括 :数据库(DB) 数据库管理系统(DBMS) 应用系统 数据库管理员
-
数据库语言:DDL(数据定义语言:create) 、DML(数据操纵语言:CRUD)、DCL(数据控制语言:授予权限)
-
函数依赖集的闭包
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SrtJ5Tvu-1648005102238)(E:%5CLearningSources%5Cjava%E5%AD%A6%E4%B9%A0%5CNote%5Cphoto%5Cimage-20220318211529981.png)]
-
属性集的闭包
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uN6YK7VW-1648005102241)(E:%5CLearningSources%5Cjava%E5%AD%A6%E4%B9%A0%5CNote%5Cphoto%5Cimage-20220318211629039.png)] -
常见的流量控制方式
- 停止-等待流量控制方式:发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧;接收方每接收一帧,都要反馈一个应答信号,表示可以接收下一帧,如果接收方不反馈应答信息,那发送方必须一直等待。
- 滑动窗口流量控制方式:在任意时候,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口;同时接收方也维持一组连续允许接收帧的序号,称为接收窗口,发送窗口用来对发送方进行流量控制,而发送窗口的大小代表在还未收到对方确认信息的情况下发送方最多还可以发送多少个数据帧。同理,在接收端设置接收窗口是为了控制可以接收哪些数据帧和不可以接收哪些帧。在接收方,只有收到的数据帧的序号落入接收窗口内时,才允许将该数据帧收下。若是接收到的数据帧落在接收窗口之后,就一律丢弃
- 后退N帧协议(发送窗口大小>1,接收窗口大小=1):在后退N 帧式ARQ 中,发送方无须在收到上一个帧的ACK 后才能开始发送下一帧,而是可以连续发送帧。当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧;或者当发送方发送了N 个帧后,若发现该N 个帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重传该出错帧及随后的N 个帧。换句话说,接收方只允许按顺序接收帧。(接收窗口大小=1则按序接收)
后退N 帧协议一方面因连续发送数据帧而提高了信道的利用率,另一方面在重传时又必须把原来已传送正确的数据帧进行重传(仅因这些数据帧的前面有一个数据帧出了错),这种做法又使传送效率降低。由此可见,若信道的传输质量很差导致误码率较大时,后退N 帧协议不一定优于停止-等待协议 - 选择重传协议(SR)(发送窗口大小>1,接收窗口大小>1) :为进一步提高信道的利用率,可设法只重传出现差错的数据帧或计时器超时的数据帧,但此时必须加大接收窗口,以便先收下发送序号不连续但仍处在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。这就是选择重传ARQ 协议。
在选择重传协议中,每个发送缓冲区对应一个计时器,当计时器超时时,缓冲区的帧就会重传。另外,该协议使用了比上述其他协议更有效的差错处理策略,即一旦接收方怀疑帧出错,就会发一个否定帧NAK给发送方,要求发送方对NAK中指定的帧进行重传
-
可靠传输机制
- 确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容正在被正确接收。有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为稍带确认。超时重传是指发送方在发送某个数据帧后开启一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,知道发送成功为止。
- 数据链路层的可靠传输通常使用确认和超时重传两种机制来完成
- 自动重传请求(ARQ)通过接收方请求发送方重传出错的数据帧来恢复出错的帧,时通信中用于处理信道所带来差错的方法之一。传统自动重传请求分为三种,即停止-等待(Stop-and-Wait) SAW、后退N 帧(Go-Back-N) GBN和选择性重传(Selective Repeat)SR,后两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大时,帧在线路上可以连续地流动,因此又称其为连续ARQ 协议。注意,在数据链路层中流量控制机制和可靠传输机制是交织在一起的
-
随机访问介质访问控制
- ALOHA协议:只要用户有数据要发送,就尽量让他们发送。这样会产生冲突,从而造成帧的破坏,但是广播信道具有反馈性,因此发送方可以在发送数据的过程中进行冲突检测,将接收到的数据与缓冲区的数据进行比较,就可以摘到数据帧是否遭到破坏,同样的道理,其他用户也是按照此过程工作,如果发送方知道数据帧遭到破坏,那么它可以等待一段随机长的时间后重发该帧
- CSMA(载波侦听多路访问)
- 1-坚持的CSMA:侦听到信道忙后,继续坚持侦听信道;侦听到信道空闲后,立即发送数据。若是发生冲突,等待一个随机时间再重复侦听。优点:持续式的时间少于非持续式;缺点:如果两个以上的站点等待发送,一旦截止空闲就会发生冲突
- 非坚持CSMA:一个结点要发送数据时,首先侦听信道;如果信道空闲就立即发送数据;如果信道忙就放弃侦听,等待一个随机的时间再重开始的步骤。优点:等待一个随机时间可以减少再次碰撞冲突的可能性;缺点:如果再这个随机时间内介质上没有数据传送,则会发生浪费
- p-坚持CSMA:用于时分信道。一个系欸但要发送给数据时,首先侦听信道,如果信道忙就持续侦听直至信道空闲;如信道空闲,就以概率p发送数据,以概率1-p推迟到下一个时隙;如介质忙,就持续侦听,
- CSMA/CD(载波侦听多路访问、碰撞检测)
- 先听后发,边听边发,冲突停发,随机重发
- 用于有线连接的局域网
- CSMA/CS(载波侦听多路访问、碰撞避免)
- 用于无线连接的局域网
- 接收信号的强度往往会小于发送信号的强度,且在无线介质上信号强度的动态变化范围很大,因此若要实现碰撞检测,则硬件上的花费就很大
- 在无线通信中,并非所有的站点都能够听见对方,存在隐蔽站
- 碰撞避免并不是指协议可以完全避免碰撞,而是指协议的设计要尽量降低碰撞发生的概率
- CSMA/CA采用二进制指数退避算法。信道从忙态变为空闲时,任何一个站要发送数据帧时,不仅都须等待一个时间间隔,而且还要进入争用窗口,并计算随机退避时间以便再次试图接入信道,降低发生碰撞的概率。
- CSMA/CA 还使用预约信道、ACK 帧、RTS/CTS 帧等三种机制来实现碰撞避免:
- 预约信道。发送方在发送数据的同时向其他站点通知自己传输数据需要的时间长度,以便让其他站点在这段时间内不发送数据,从而避免碰撞。
- ACK 帧。所有站点在正确接收到发给自己的数据帧(除广播帧和组播帧)后,都需要向发送方发回一个ACK 帧,如果接收失败,那么不采取任何行动。发送方在发送完一个数据帧后,在规定的时间内如果未收到ACK 帧,那么认为发送失败,此时进行该数据帧的重发,直到收到ACK 帧或达到规定重发次数为止。
- RTS/CTS 帧。可选的碰撞避免机制,主要用于解决无线网中的“隐蔽站”问题。
-
路由器转发分组的流程?
- 从数据报的首部提取目的主机的IP地址D,得出目的网络地址N
- 若网络N与此路由器直接相连,则把数据报直接交付给目的主机D,这是路由器的直接交付
- 若路由表中有目的地址为D的特定主机路由(对特定的目的主机指明一个特定的路由,通常是为了控制或测试网络,或处于安全考虑采用的),则把数据报传送给路由表中所指明的下一条路由器
- 若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一条路由器
- 若路由表中有一个默认路由,则把数据包传送给路由表中所指明的默认路由器
- 报告转发分组出错
注意:得到下一条路由器的IP地址后并不是直接将该地址填入待发送的数据报中,而是将该IP地址转换为MAC(ARP),将其放到MAC帧首部中,然后根据这个MAC地址找到下一条路由器。在不同网络中传送时,MAC帧中的源地址和目的地址要发生变化,但是网桥在转发帧时,不改变帧的源地址
-
ICMP:
为了提高IP数据报交付成功的机会,在网络层使用了网际控制报文协议来让主机或路由器报告差错和异常情况。ICMP报文作为IP层数据包的数据,加上数据报的首部,组成IP数据报发送出去。ICMP是IP层协议。ICMP报文的种类有两种:ICMP差错报告报文和ICMP询问报文。ICMP差错报告报文用于目标主机或目标路径上的路由器向源主机报告差错和异常情况。共有以下5中类型- 终点不可达
- 源点抑制
- 时间超过
- 参数问题
- 改变路由
-
冷备份
- 冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将要害性文件拷贝到另外的位置的一种说法。
- 冷备份的优点是:
- 是非常快速的备份方法(只需拷文件)
- 轻易归档(简单拷贝即可)
- 轻易恢复到某个时间点上(只需将文件再拷贝回去)
- 能与归档方法相结合,做数据库“最佳状态”的恢复。
- 低度维护,高度安全。
-
热备份
- 热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。所以,假如你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:
- 数据文件一个表空间一个表空间的备份
- 设置表空间为备份状态
- 备份表空间的数据文件
- 回复表空间为正常状态
- 备份归档log文件
- 临时停止归档进程
- log下那些在archive rede log目标目录中的文件
- 重新启动archive进程
- 备份归档的redo log文件
- 用alter database bachup controlfile命令来备份控制文件热备份的优点是:
- 可在表空间或数据库文件级备份,备份的时间短。
- 备份时数据库仍可使用。
- 可达到秒级恢复(恢复到某一时间点上)。
- 可对几乎所有数据库实体做恢复
- 恢复是快速的,在大多数情况下爱数据库仍工作时恢复。
-
引入线程的目的:提高并发性能,降低资源的开销
-
哪些技术能提高cpu访存速度:双端存储器和多模块存储器
- 多模块存储器(时间并行):CPU 的速度比存储器的快,若同时从存储器中取出n 条指令,就可充分利用CPU 资源,提高运行速度。
- 双端存储器(空间并行):端口RAM 是指同一个存储器有左、右两个独立的端口,分别具有两组相互独立的地址线、数据线和读写控制线,允许两个独立的控制器同时异步地访问存储单元,如图所示。当两个端口的地址不相同时,在两个端口上进行读写操作一定不会发生冲突。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-znKxb9v9-1648005102243)(E:%5CLearningSources%5Cjava%E5%AD%A6%E4%B9%A0%5CNote%5Cphoto%5Cimage-20220320112913449.png)]
. 轻易恢复到某个时间点上(只需将文件再拷贝回去)
4. 能与归档方法相结合,做数据库“最佳状态”的恢复。
5. 低度维护,高度安全。
-
热备份
- 热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。所以,假如你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:
- 数据文件一个表空间一个表空间的备份
- 设置表空间为备份状态
- 备份表空间的数据文件
- 回复表空间为正常状态
- 备份归档log文件
- 临时停止归档进程
- log下那些在archive rede log目标目录中的文件
- 重新启动archive进程
- 备份归档的redo log文件
- 用alter database bachup controlfile命令来备份控制文件热备份的优点是:
- 可在表空间或数据库文件级备份,备份的时间短。
- 备份时数据库仍可使用。
- 可达到秒级恢复(恢复到某一时间点上)。
- 可对几乎所有数据库实体做恢复
- 恢复是快速的,在大多数情况下爱数据库仍工作时恢复。
-
引入线程的目的:提高并发性能,降低资源的开销
-
哪些技术能提高cpu访存速度:双端存储器和多模块存储器
- 多模块存储器(时间并行):CPU 的速度比存储器的快,若同时从存储器中取出n 条指令,就可充分利用CPU 资源,提高运行速度。
- 双端存储器(空间并行):端口RAM 是指同一个存储器有左、右两个独立的端口,分别具有两组相互独立的地址线、数据线和读写控制线,允许两个独立的控制器同时异步地访问存储单元,如图所示。当两个端口的地址不相同时,在两个端口上进行读写操作一定不会发生冲突。
[外链图片转存中…(img-znKxb9v9-1648005102243)]