计算机网络第6章:应用层
每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。
应用层的许多协议都是基于客户服务器方式。客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。
客户服务器方式所描述的是进程之间服务和被服务的关系。客户是服务请求方,服务器是服务提供方。
1 域名系统 DNS1.1 域名系统概述域名系统 DNS (Domain Name System) :
互联网使用的命名系统。
用来把人们使用的机器名字(域名)转换为 IP 地址。
为互联网的各种网络应用提供了核心服务。
互联网的域名系统DNS被设计称为一个联机分布式数据库系统,并采用客户服务器方式。DNS使大部分名字都在本地进行解析,仅少量解析需要在互联网上通信。
域名到 IP 地址的解析是由若干个域名服务器程序共同完成。
域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
解析过程如下:当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程 ...
计算机网络第5章:传输层
1 传输层协议概述1.1 进程之间的通信从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
运输层为相互通信的应用进程提供了逻辑通信:
1.1.1 应用进程之间的通信
两个主机进行通信实际上就是两个主机中的应用进程互相通信。
应用进程之间的通信又称为端到端的通信。
运输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。
“运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。
运输层协议和网络层协议的主要区别:
在运输层有一个很重要的功能——复用和分用。
复用是指发送方不同的应用进程都可以使用同一个运输层协议传送数据
分用是指接收方的 ...
计算机网络第4章:网络层
1 网络层提供的两种服务在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。
争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
1.1 观点1:面向连接,即让网络负责可靠交付建立虚电路(Virtual Circuit),以保证双方通信所需的一切网络资源。设计并使用可靠传输的网络协议,使源端所发送的分组实现通过虚电路无差错地按序地到达目的端。
1.1.1 虚电路服务
当在H1(源端)和H2(目的端)建立了虚电路后,H1 发送给 H2 的所有分组都沿着同一条虚电路传送,分组传输完毕后可以拆除该虚电路,也可长期保留。
虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发(由中间路由器完成)方式传送,而并不是真正建立了一条物理连接。
请注意,电路交换是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似,并不完全一样。
1.2 观点2:不面向连接,即不让网络负责可靠交付网络层向上(如传输层或调用IP协议的协议)只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
网络在发送分组时不 ...
计算机组成原理第3章:系统总线
1 总线的基本概念计算机系统的五大部件之间的互连方式有两种:
各部件之间使用单独的连线——分散连接
将各部件连到一组公共信息传输线上——总线连接
总线是连接各个部件的信息传输线,是各个部件共享的传输介质,同一时刻,只允许有一个部件向总线发送信息,而多个部件可以同时从总线上接受相同的信息。
这里有点像局域网的广播信道,同一时刻只能由一个主机发送数据,其他只能监听。
1.1 总线结构的计算机举例1.1.1 面向 CPU 的双总线结构框图
这种结构在I/O设备与主存交换信息时仍然要占用CPU,因此会影响CPU的工作效率。
1.1.2 单总线结构框图
当主存与I/O交换信息时,原则上不影响CPU的工作,CPU仍可继续处理不访问主存或I/O设备的操作,工作效率有所提升。
由于只有一组总线,当某一时刻各部件都要占用系统总线时,就会发生冲突。
1.1.3 以存储器为中心的双总线结构框图
在单总线基础上又开辟出一条CPU与主存之间的总线,称为存储总线,只供主存与CPU之间传输信息。既提高了传输效率,又减轻了系统总线的负担,还保证了IO设备与存储器交换信息时不经过C ...
数据库第10章:数据库恢复技术
1 事务的基本概念1.1 事务定义事务:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,一个不可分割的工作单位。
事务和程序比较:
在关系数据库中,一个事务可以是一条或多条SQL语句,也可以包含一个或多个程序
一个程序通常包含多个事务
1.2 定义事务1.2.1 显式定义方式
COMMIT:表示提交,即提交事务的所有操作
ROLLBACK:表示回滚,将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态
12345BEGIN TRANSACTION BEGIN TRANSACTION SQL 语句1 SQL 语句1 SQL 语句2 SQL 语句2 。。。。。 。。。。。COMMIT ROLLBACK
1.2.2 隐式方式
当用户没有显式地定义事务时,DBMS按缺省规定自动划分事务。
1 ...
计算机网络第3章:数据链路层
1 使用点对点信道的数据链路层数据链路层使用的信道主要有以下两种类型:
点对点信道。这种信道使用一对一的点对点通信方式。
广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
数据链路层的简单模型,主机 H1 向 H2 发送数据
1.1 数据链路和帧链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
一条链路只是一条通路的一个组成部分
数据链路(data link)除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
一般的适配器都包括了数据链路层和物理层这两层的功能。
2 数据链路层的 3H 问题
How to 封装成帧
How to 透明传输
How to 差错控制
2.1 封装成帧
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
首部和尾部的一个重要 ...
数据结构第8章:排序
1 总览
比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 包括插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序和归并排序。
非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。包括计数排序、桶排序和基数排序。
稳定:如果a原本在b前面,若a=b,那么排序之后a仍然在b的前面。
不稳定:如果a原本在b前面,若a=b,那么排序之后a可能在b的后面。
2 内部排序算法介绍2.1 插入排序类似于打扑克牌,插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
2.1.1 直接插入排序算法思想
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素 ...
数据库第9章:关系查询处理和查询优化
本章介绍数据库的查询处理和查询优化,查询优化一般可分为代数优化(逻辑优化)和物理优化。
1 关系数据库系统的查询处理 1.1 查询处理步骤
RDBMS查询处理阶段 :
查询分析
查询检查
查询优化
查询执行
1.1.1 查询分析对查询语句进行扫描、词法分析和语法分析,从查询语句中识别出语言符号,如SQL关键字、属性名和关系名等。
进行语法检查和语法分析,如果没有语法错误就转入下步处理,否则报告语句中出现的错误。
1.1.2 查询检查根据数据字典对合法的查询语句进行语义检查,根据数据字典中的用户权限和完整性约束定义对用户的存取权限进行检查。
还要根据数据字典中的用户权限和完整性约束定义对用户的存取权限进行检查,这时的完整性检查是初步的、静态的检查。
检查通过后把SQL查询语句转换成等价的关系代数表达式。RDBMS一般都用查询树(语法分析树)来表示扩展的关系代数表达式,把数据库对象的外部名称转换为内部表示。
1.1.3 查询优化选择一个高效执行的查询处理策略,查询优化分类 :
代数优化:指关系代数表达式的优化
物理优化:指存取路径和底层操作算法的选择
查询优化方法选择的 ...
高等数学第2章:导数与微分
1 导数概念1.1 函数在一点处可导的概念1.1.1 导数定义
数学定义为:
$$f^{\prime}\left(x_0\right)=\lim_{\Delta x\to0}\frac{\Delta y}{\Delta x}=\lim_{\Delta x\to0}\frac{f\left(x_0+\Delta x\right)-f\left(x_0\right)}{\Delta x}$$
也可记作:
$$y’|_{x=x_0}, \frac{\mathrm{d}y}{\mathrm{d}x} |_{x=x_0} \text{或}\frac{\mathrm{d}f(x)}{\mathrm{d}x}|_{x=x_0}$$
导数的实质:变化率
导数的定义式:
$$f’\left(x_0\right)=\lim_{\Delta x\to0}\frac{f\left(x_0+\Delta x\right)-f\left(x_0\right)}{\Delta x}$$
或
$$f’\left(x_0\right)=\lim ...
6.5华为机试
题目设置:一共3道题,分别为100、200和300分。
考试时间:19点~21点,共2h。
1 第一题:电影相关1.1 题目描述题意大体是第一行n是输入数据的个数,之后每一行的数据由三个字段组成:
字段1:这部电影的导演
字段2:这部电影的主演
字段3:这部电影的类型
然后给你一个查询,由两个字段组成:
字段1:要查询的类型,是电影的导演、主演还是类型
字段2:要查询的内容
让你把所有匹配的结果输出出来,注意id从小到大进行输出,不同id之间使用空格隔开。
这道题思路感觉还是挺简单的,不用使用任何的算法,直接按照题意描述做就可以,但是最后过了85%的测试用例,不知道为什么,就先做后面了。
2 第二题:服务器2.1 题目描述每个服务器用一个id和所能装载的文件数来描述,之后要进行查询和删除操作,并且这个题目实际上就是对一个循环链表进行插入和删除操作。
最后通过了96%的测试用例,另外这题的输入输出是真的麻烦,要自己进行处理,所以平时还是要多练自己处理输入的题目,要不然只写关键代码遇到这种题直接G了。
3 第三题:最长序列包长度3.1 题目描述大体意思就是告诉你,现在有一 ...