中烟错题知识点归纳
数据库
1. 数据库系统,数据库管理系统,数据之间的关系
数据库系统(Database System)是指在计算机系统中,用来管理和存储数据的软件系统。它包括数据库管理系统(Database Management System,简称DBMS)和数据库。数据库管理系统是指管理数据库的软件,它负责数据的存储、检索、更新和管理等功能。
2.数据管理的发展阶段
人工管理阶段发展到文件管理阶段,然后是发展到数据库管理阶段
3.E-R 模型(Entity-Relationship Model)
是用来描述现实世界中各种实体之间的关系的模型,它是数据库设计中常用的概念模型。
4.关系模型(Relational Model)
是一种用于数据库设计的逻辑模型,它使用表格来组织数据,并通过关系(关联键)将表格连接起来。
5.GROUP BY、ORDER BY、JOIN、UNION
在 SQL 语言中,使用 GROUP BY 对查询结果汇总的元组进行分组;ORDER BY表示排序操作,JOIN表示连接操作,UNION 表示并操作。
JOIN:
INNER JOIN(内连接):返回两个表中匹配行的交集。只有在两个表中都存在匹配值的行才会被包含在结果中。
LEFT JOIN(左连接):返回左表(即 FROM
子句中指定的表)的所有行,以及右表中匹配的行。如果右表中没有匹配的行,则在结果中显示 NULL 值。
RIGHT JOIN(右连接):与 LEFT JOIN 相反,返回右表(即 JOIN 子句中指定的表)的所有行,以及左表中匹配的行。如果左表中没有匹配的行,则在结果中显示 NULL 值。
FULL JOIN(全连接):返回左表和右表中的所有行,如果某个行在另一个表中没有匹配的行,则在结果中显示 NULL 值。
UNION:UNION
用于合并两个或多个 SELECT
语句的结果集,并去除重复的行。UNION
必须由两个或多个 SELECT
语句组成,每个 SELECT
语句的列数和数据类型必须相同或兼容。
UNION
将返回两个 SELECT
语句的结果集的并集,并自动去除重复的行。如果想保留重复行,可以使用 UNION ALL
。
6. LIKE 后面的匹配字符通配符%用法
在某些数据库中,还可以使用 _
通配符来匹配单个字符,类似于正则表达式中的 .
。例如,LIKE 'a_'
匹配第一个字符为 "a",第二个字符为任意字符的字符串。
7. ASC
(升序), DESC
(降序)默认升序
8. DISTINCT用法
DISTINCT
关键字用于返回唯一不重复的值。它应用于 SELECT
语句,用于消除结果集中重复的行。
9.TOP用法:
TOP
关键字用于指定要返回的记录的数量,通常与 SELECT
语句一起使用。TOP
只在 Microsoft SQL Server 和 Access 中有效,在其他数据库中,如 MySQL 和 PostgreSQL,可以使用类似功能的 LIMIT
关键字。
10.DDL、DML, DCL、 TCL
数据库中除了 DDL(数据定义语言)和 DML(数据操作语言)之外,还有 DCL(数据控制语言)和 TCL(事务控制语言)。
DDL(Data Definition Language):用于定义数据库对象,例如创建、修改和删除数据库表、索引和视图等。常见的 DDL 命令包括 CREATE、ALTER 和 DROP。
DML(Data Manipulation Language):用于操作数据库中的数据,例如插入、更新、删除和查询数据。常见的 DML 命令包括 INSERT、UPDATE、DELETE 和 SELECT。
DCL(Data Control Language):用于控制数据库用户的访问权限和安全性,例如授予或撤销用户的访问权限。常见的 DCL 命令包括 GRANT 和 REVOKE。
TCL(Transaction Control Language):用于管理事务处理,例如提交事务或回滚事务。常见的 TCL 命令包括 COMMIT 和 ROLLBACK。
11. ADD和INSERT的区别
12. 数据完整性
是指数据库中数据的精确度和一致性。它包括以下几个方面:
实体完整性规则(Entity Integrity):确保每个表中的每一行都有一个唯一的标识符,通常是通过定义主键来实现的。实体完整性规则防止表中出现重复的行,并确保每一行都可以唯一地标识。
参照完整性规则(Referential Integrity):确保在一个表中的外键值始终与另一个表中的主键值匹配。参照完整性规则防止在关联表之间出现不一致的数据,保证了数据之间的引用关系的正确性。
用户定义完整性规则(User-defined Integrity):允许用户根据具体业务需求定义其他的完整性规则。例如,可以定义检查约束(CHECK Constraint)来确保某个列中的值满足特定的条件,或者定义触发器(Trigger)来在特定事件发生时执行特定的操作。
13.据库系统三级结构
数据库系统(DBS)通常被描述为具有三级结构,包括外模式(或视图层)、概念模式(或逻辑层)和内部模式(或存储层)。这三级结构之间存在着两级映像,即外模式到概念模式的映像和概念模式到内部模式的映像,使得数据库系统具有较高的逻辑数据独立性和物理数据独立性。
外模式(或视图层):外模式是用户能够看到和访问的数据库的部分,它描述了用户的视图或者说是用户的角度。外模式定义了用户能够查询和操作的数据的结构和组织方式,同时隐藏了数据库中不必要暴露给用户的细节。
概念模式(或逻辑层):概念模式是数据库全局逻辑结构的描述,它定义了整个数据库的逻辑结构和组织方式,包括数据之间的关系和约束。概念模式是数据库设计的核心部分,它独立于具体的应用程序,为所有用户提供了统一的数据视图。
内部模式(或存储层):内部模式是数据库存储在物理介质上的表示方式,它描述了数据在存储介质上的存储结构和存取方法。内部模式通常由数据库管理系统(DBMS)自行管理,用户通常无需关注内部模式的细节
14.原子性
在关系数据库中,属性通常被设计为不可再分的,这意味着每个属性包含的数据是不可拆分的最小单位
15.MODIFY和ALTER区别
ALTER TABLE
用于修改表的结构,包括添加、删除和修改列,而 MODIFY
是 ALTER TABLE
的一个特定用法,用于修改表中列的定义,特别是用于修改列的数据类型、长度或其他属性。
新技术
1.大数据
大数据的核心可以从三个方面来理解:数据量大、数据类型多样、数据处理速度快、价值密度低。
-
数据量大:大数据的一个核心特征是数据量巨大。传统的数据处理工具和方法往往难以处理如此大量的数据。大数据通常指的是数据量超出传统数据库处理能力的数据集,通常以 TB、PB 或甚至 EB 为单位计量。
-
数据类型多样:大数据不仅涉及到结构化数据(例如表格数据),还包括非结构化数据(例如文本、图像、视频等)和半结构化数据(例如日志文件、传感器数据等)。因此,大数据的处理需要能够处理各种类型和格式的数据。
-
数据处理速度快:大数据处理需要具备高速的处理能力。实时数据处理是大数据领域的一个重要挑战,需要能够快速地处理数据并提供实时的分析和反馈。
大数据的核心为了预测事情发生的可能性
大数据应用领域广泛,以下是5个大数据应用领域的例子:
-
市场营销和广告: 大数据可用于分析消费者行为和趋势,帮助企业更好地了解其目标受众,并制定更有效的营销和广告策略。
-
金融服务: 大数据分析可用于识别欺诈行为、预测市场趋势、个性化推荐投资组合,以及改善风险管理和客户服务。
-
医疗保健: 医疗保健领域利用大数据分析患者数据和医疗记录,以改善诊断准确性、提高治疗效果,甚至发现新的药物和治疗方法。
-
物联网: 物联网设备产生大量数据,大数据分析可用于优化设备性能、预测维护需求,甚至改善城市基础设施管理。
-
政府和公共服务: 政府可以利用大数据来改善城市规划、交通管理、紧急服务响应等公共服务领域的效率和质量。
具体应用领域示例:
-
金融风险管理: 大数据分析可用于识别潜在的金融风险,例如通过分析市场数据、交易记录和其他相关信息,银行可以更好地了解其客户的还款能力和信用风险。
-
医疗保健预测分析: 大数据分析可用于预测疾病的传播趋势和患者的治疗结果。例如,在流行病爆发期间,医疗保健机构可以利用大数据分析来预测病例数量的增长趋势,并做好资源分配和医疗服务准备。
2.云计算
云计算的服务类型通常分为三种主要模式:基础设施即服务(Infrastructure as a Service,IaaS)、平台即服务(Platform as a Service,PaaS)和软件即服务(Software as a Service,SaaS)。
基础设施即服务(IaaS):IaaS 提供了基础的计算资源,包括虚拟机、存储、网络和基本的运行环境。用户可以通过 IaaS 来构建和管理自己的应用程序、存储数据和扩展基础设施,而无需购买和维护物理服务器。常见的 IaaS 提供商包括亚马逊 AWS、微软 Azure 和谷歌云平台。
平台即服务(PaaS):PaaS 提供了用于开发、测试、部署和管理应用程序的平台和工具。PaaS 常常包括开发工具、数据库管理系统、应用程序服务器和运行时环境等。用户可以使用 PaaS 来构建和托管自己的应用程序,而无需关心底层的基础设施。知名的 PaaS 提供商包括 Heroku、Google App Engine 和微软 Azure App Service。
软件即服务(SaaS):SaaS 提供了完整的应用程序作为服务,用户可以通过互联网访问和使用这些应用程序,而无需安装和维护软件。SaaS 包括各种各样的应用程序,如电子邮件、办公软件、客户关系管理(CRM)和企业资源规划(ERP)等。知名的 SaaS 提供商包括 Salesforce、Microsoft 365 和 Google Workspace。
云服务器和物理服务器有以下几个主要区别:
-
基础架构:
- 物理服务器是一台独立的物理设备,包括处理器、内存、硬盘等硬件组件。
- 云服务器是在虚拟化技术基础上实现的,运行在云计算平台上,利用物理服务器的资源来提供服务。
-
资源分配:
- 物理服务器的资源是固定的,不能根据需要进行灵活调整。
- 云服务器的资源可以根据需求进行动态调整,用户可以根据实际需求增减服务器的CPU、内存、存储等资源。
-
可用性和容错性:
- 云服务器通常具有高可用性和容错性,因为云平台会在多个物理服务器之间实现负载均衡和备份。
- 物理服务器的可用性和容错性取决于硬件本身以及部署架构,一旦硬件故障,可能会导致服务中断。
-
管理和维护:
- 物理服务器需要用户自行购买、部署、维护和管理。
- 云服务器由云服务提供商管理和维护,用户只需关注使用和配置。
-
成本:
- 物理服务器的成本包括硬件设备、机房租用、网络带宽等,一次性投入较大。
- 云服务器按照使用量计费,可以根据需要灵活选择服务规格,成本相对灵活和可控。
总的来说,云服务器相比物理服务器具有灵活性、可扩展性和高可用性等优势,适合需要动态调整资源、弹性扩展和高可靠性的应用场景。而物理服务器则适合对资源需求较为固定、有特殊硬件需求或对安全性要求较高的应用场景。
3.人工智能
4.软件开发流程
需求分析、系统设计、实施编码、测试、运行部署、维护
5.计算机病毒特点和怎么预防
特点:寄生性、破坏性、潜伏性、传染性
预防:1.安装防火墙,杀毒软件。2.防止未知的网络服务。3.定期更新操作系统,安装系统补丁程序。4.及时备份数据
计算机网络
1.概念
ISP(Internet Service Provider),
即互联网服务提供商,即 向广大用户综合提供互联网接入业务、信息业务和增值业务的电信运营商。
发送时延
数据块从结点到传输媒体所需的时间是发送时延
-
发送时延(Transmission Delay):发送时延是指从开始发送一个数据包到发送完成之间的时间。发送时延受到数据包大小和网络带宽的影响。发送时延可以通过以下公式计算:
发送时延=数据包大小带宽发送时延=带宽数据包大小
-
传播时延(Propagation Delay):传播时延是指数据包在传输媒介(如光纤、铜线等)中传播所需的时间。传播时延受到传输距离和信号传播速度的影响。传播时延可以通过以下公式计算:
传播时延=传输距离信号传播速度传播时延=信号传播速度传输距离
-
处理时延(Processing Delay):处理时延是指路由器、交换机等网络设备处理数据包所需的时间。处理时延包括将数据包从输入缓冲区移动到输出缓冲区、进行路由决策等过程。
-
往返时延(Round-Trip Time,RTT):往返时延是指从发送一个数据包到收到对应的确认或响应所需的时间。往返时延包括发送时延、传播时延、处理时延以及接收端处理和确认的时间。
波分多路复用(Wavelength Division Multiplexing,WDM)、频分多路复用(Frequency Division Multiplexing,FDM)、时分多路复用(Time Division Multiplexing,TDM)、空分多路复用(Space Division Multiplexing,SDM)
2.交换机(Switch)
是计算机网络中用于连接多台计算机和网络设备的网络设备。它的主要作用是根据目标地址将数据包从一个端口转发到另一个端口,从而实现局域网内计算机之间的通信。交换机可以提高局域网的通信效率和安全性,与集线器(Hub)相比,交换机能够更智能地将数据包发送到目标设备,避免了在整个网络上广播数据包的需要。
交换机通过自身维护的MAC地址表(也称为CAM表)来转发数据帧
交换机如果没有查询到该MAC地址所在表中的信息,那么就会泛洪发送,收到泛洪信息的交换机如果并未发现该Mac地址所在表中信息,那么就会丢弃。不过泛洪会占用大量的带宽,造成网络拥堵,可以手动设置交换机端口拒接该端泛洪报文或者阻止泛洪发
3.集线器(Hub)
是用于连接多台计算机或网络设备的网络设备,其主要作用是将所有连接到它的设备组成一个共享的局域网。集线器的工作原理是在收到一个数据包后,将数据包广播到所有连接的端口上,而不考虑数据包的目标地址。
集线器的作用主要有以下几点:
-
连接设备:集线器可以将多台计算机或网络设备连接在一起,形成一个局域网,使这些设备可以相互通信。
-
数据广播:集线器接收到的数据包会被广播到所有连接的端口上,从而确保所有设备都可以收到数据。
-
信号放大:集线器可以放大信号,使信号能够在局域网中传输更远的距离。
-
简单易用:集线器通常比交换机更简单,配置和使用起来更加容易。
然而,随着网络技术的发展,交换机逐渐取代了集线器的地位,因为交换机能够根据目标地址智能地将数据包发送到目标设备,从而提高了网络的传输效率和安全性。
2.网络协议的三要素:
(1)语义是指要做出何种响应以及发 出何种控制信息。(2)语法是用户数据与控制信息的结构与格式。(3)时序是对事件 发生顺序的详细说明。
3.命令
-
ipconfig:用于显示 Windows 系统的网络配置信息。
ipconfig
:显示网络适配器的基本配置,包括 IP 地址、子网掩码、默认网关等。ipconfig /all
:显示详细的网络配置信息,包括物理地址(MAC 地址)、DHCP 租约信息等。ipconfig /release
:释放当前网络适配器的 DHCP 租约。ipconfig /renew
:向 DHCP 服务器请求更新租约。
-
netstat:用于显示网络连接、路由表和网络接口信息。
netstat
:显示当前的网络连接和侦听端口。netstat -r
:显示路由表信息。netstat -a
:显示所有活动的网络连接和侦听端口。netstat -n
:显示数字格式的地址和端口号。
-
nslookup:用于查询域名系统(DNS)信息。
nslookup domain_name
:查询指定域名的 IP 地址。nslookup -type=mx domain_name
:查询指定域名的邮件服务器记录。nslookup -type=ns domain_name
:查询指定域名的域名服务器记录。nslookup -type=soa domain_name
:查询指定域名的权威区域记录。
-
ping:用于测试与另一台计算机的连接状态。
ping ip_address
:向指定 IP 地址发送 ICMP 回显请求。ping domain_name
:向指定域名的 IP 地址发送 ICMP 回显请求。ping -t ip_address
:持续向指定 IP 地址发送 ICMP 回显请求,直到手动停止。ping -a ip_address
:尝试将 IP 地址解析为主机名。
如何辨别A类B类C类地址
IPv4的私有IP地址范围如下:
- 10.0.0.0 到 10.255.255.255
- 172.16.0.0 到 172.31.255.255
- 192.168.0.0 到 192.168.255.255
这些私有IP地址可以在局域网内部自由分配和使用,但不能直接用于公共互联网上的通信。当局域网内部的设备需要与公共互联网进行通信时,需要通过网络地址转换(NAT)技术将私有IP地址转换为公共IP地址。
4.服务和协议
OSI 开放系统互联参考模型中,服务是本层给上一层提供的, 是垂直的。协议是控制对等实体之间通信的规则,是水平的
5.对 IP 数据报进行分片的主要目的是
适应各个物理网络不同的 MTU 长度。
MTU指的是数据链路层能够传输的最大数据包大小。当一个IP数据报的大小超过某个网络路径上的MTU时,路由器就会对数据报进行分片,将其分割成适合网络路径上MTU的较小片段进行传输。接收端收到这些分片后,会将它们重新组装成完整的数据报。
6.调制和解调
在使用家用电话拨号上网时,信道传输的信号是模拟信号,将数字信号转换成模拟信号的过程叫做调制,将模拟信号转换成数字信号的过程叫做解 调。
建立连接需要 3 次握手,拆除连接需要 4 次挥手协议。
7.URL
正确的URL地址形式包括以下几个部分:
-
协议(Protocol):如HTTP、HTTPS、FTP等,通常以冒号加双斜线开头,例如
http://
。 -
域名(Domain):指定要访问的主机名或域名,例如
www.example.com
。 -
端口号(Port):可选项,用于指定连接的端口号,默认情况下HTTP使用80端口,HTTPS使用443端口,通常不显示在URL中。
-
路径(Path):指定要访问的资源在服务器上的路径,以斜线开头,例如
/path/to/resource
。 -
查询参数(Query Parameters):可选项,用于向服务器传递参数,以问号开头,多个参数使用
&
分隔,例如?param1=value1¶m2=value2
。 -
片段标识符(Fragment Identifier):可选项,指定文档中的特定片段,以井号开头,例如
#section1
其中,协议、域名和路径是必需的部分,端口号、查询参数和片段标识符是可选的部分。
http://:80/index.html错误 http://www.hust.eedu.cn 正确
8.TCP
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。它负责在网络中的两个应用程序之间提供可靠的、有序的数据传输。它采用大小可变的滑动窗口进行流量控制,窗口大小的单位是字节。
TCP具有以下特点:
-
可靠性:TCP使用序列号、确认和重传机制来确保数据的可靠传输,保证数据不会丢失或损坏。
-
面向连接:在数据传输前,TCP会在通信双方建立连接,传输结束后再释放连接,确保数据按照顺序到达。
-
全双工通信:TCP允许通信双方同时发送和接收数据,实现了全双工通信。
-
流量控制:TCP使用滑动窗口机制进行流量控制,确保发送方发送的数据不会超过接收方的处理能力。
-
拥塞控制:TCP使用拥塞窗口机制来控制数据发送速率,以避免网络拥塞。
-
基于字节流:TCP将数据视为连续的字节流进行传输,不保留消息边界。
TCP通常用于可靠性要求较高的应用程序,如网页浏览、电子邮件传输、文件传输等。
9.UDP
UDP(User Datagram Protocol,用户数据报协议)是一种简单的面向数据报的传输层协议,与TCP相比,UDP不提供可靠性、顺序传输和拥塞控制。
UDP的主要特点包括:
-
无连接:UDP是无连接的,即在传输数据前不需要建立连接。
-
不可靠性:UDP不保证数据传输的可靠性,数据包可能会丢失或到达顺序可能错乱。
-
轻量级:UDP的头部开销小,传输效率高。
-
适合实时应用:由于UDP不需要建立连接和保证可靠性,适合实时应用场景,如音视频流媒体传输、在线游戏等。
-
不提供拥塞控制:UDP不提供拥塞控制机制,数据发送的速度受限于应用程序。
UDP通常用于那些对数据传输的实时性要求高,但对数据可靠性要求不高的应用场景,如实时语音通话、视频会议等。
10.ICMP
ICMP(Internet Control Message Protocol,互联网控制消息协议)属于网络层协议,是一种用于在IP网络上发送控制消息的协议。它通常被用于网络设备之间传递错误信息、诊断信息以及网络状态信息。
ICMP的主要功能包括:
-
错误报告:当发生网络错误时,如目标不可达、超时等,ICMP会生成相应的错误报告并发送给源主机。
-
网络诊断:通过ICMP的工具,可以进行网络诊断,例如使用ping命令检测主机的可达性和延迟。
-
路由器通知:当路由器需要通知其他设备有关路由表变化或路由器状态的信息时,会使用ICMP消息。
-
传递重定向:当路由器接收到一个数据包,并且认为有更好的路径可以传输该数据包时,会发送ICMP重定向消息通知发送端更改路由。
-
MTU探测:通过ICMP的“分段超时”和“分段需要重组”消息,可以进行最大传输单元(MTU)的探测和调整。
11.POP
POP(Post Office Protocol,邮局协议)是用于从远程服务器上获取电子邮件的协议,用于电子邮件的接收。它是一种客户端-服务器协议,用于下载邮件到本地计算机,以便用户可以使用邮件客户端(如Outlook、Thunderbird等)阅读和管理邮件。
12.SMTP
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是用于在网络上发送和接收电子邮件的标准协议。SMTP通常用于将电子邮件从发送者的邮件客户端传输到接收者的邮件服务器,然后再由接收者的邮件客户端检索邮件。
SMTP的主要特点包括:
-
文本协议:SMTP是一个文本协议,使用ASCII码进行通信。
-
基于客户端-服务器架构:SMTP使用客户端-服务器架构,客户端通过连接到服务器的25端口发送邮件。
-
可靠性:SMTP通过重试机制和错误报告确保邮件的可靠传输。
-
扩展性:SMTP支持多种扩展,如身份验证、加密传输(如SMTP over TLS)等。
-
无状态:SMTP是无状态的,每个邮件传输都是独立的,不保留关于之前传输的任何状态信息。
SMTP通常用于发送电子邮件的传输,但不负责邮件的接收。接收电子邮件的协议通常是POP3或IMAP。
13.FTP
FTP(File Transfer Protocol,文件传输协议)是一种用于在计算机之间传输文件的标准网络协议。FTP使用客户端-服务器架构,在客户端和服务器之间传输文件和相关数据。使用TCP服务
FTP的主要特点包括:
-
双向传输:FTP支持双向传输,客户端可以上传文件到服务器,也可以从服务器下载文件到本地计算机。
-
支持匿名访问:FTP服务器通常允许匿名用户使用“anonymous”作为用户名和任意电子邮件地址作为密码进行访问,以便下载公共文件。
-
多种模式:FTP支持两种传输模式,即ASCII模式和二进制模式。ASCII模式用于传输文本文件,而二进制模式用于传输图像、视频、音频等二进制文件。
-
不安全性:FTP传输的数据是明文传输的,可能会被窃听和篡改,因此不适合传输敏感数据。
-
端口号:FTP使用tcp端口21作为控制连接的默认端口,使用端口20进行数据连接,但也可以使用不同的端口进行连接。
FTP在Internet上广泛用于文件传输,例如在网站维护中上传下载文件、远程备份等。由于安全性的考虑,现在通常会使用加密的协议如SFTP(SSH File Transfer Protocol)或FTP over SSL/TLS来代替FTP。
14.HTTP
HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超文本(如HTML)数据的应用层协议。它是Web的基础,用于客户端和服务器之间的通信。HTTP使用可靠的数据传输协议(如TCP)来传输数据,通常使用端口号80。
HTTP的主要特点包括:
-
无连接:每个请求-响应对都是独立的,服务器不会保留任何关于前一次请求的状态信息。
-
无状态:每个请求之间是相互独立的,服务器不会记住之前的请求,因此每个请求都必须携带所有必要的信息。
-
简单快速:HTTP协议简单明了,容易实现和解析,因此传输速度较快。
-
灵活:HTTP允许传输任意类型的数据,不限于文本。
-
无安全保障:HTTP本身不具备加密功能,传输的数据可能被窃听和篡改。
HTTP通常用于获取Web页面、下载文件、提交表单等Web应用场景。HTTPS是HTTP的加密版本,使用SSL/TLS协议对数据进行加密,提供了更高的安全性。
ARP
ARP(Address Resolution Protocol,地址解析协议)是一种用于将IP地址解析为MAC地址的网络协议。在局域网中,通信的两端通常使用IP地址来标识自己,但在数据链路层需要使用MAC地址来进行通信。ARP协议的作用就是通过广播查询将IP地址映射到相应的MAC地址,从而实现数据包的传输。
ARP协议的工作过程通常包括以下步骤:
-
ARP请求:当一个设备需要将IP地址解析为MAC地址时,它会发送一个ARP请求广播到局域网上的所有设备,请求目标IP地址对应的MAC地址。
-
ARP应答:拥有目标IP地址的设备收到ARP请求后,会向发送者单播一个ARP应答,包含自己的MAC地址。
-
ARP缓存:发送者接收到ARP应答后,会将目标IP地址和MAC地址的映射关系保存在自己的ARP缓存中,以便后续通信时直接使用。
ARP协议是一个简单而重要的协议,在局域网中广泛应用。然而,由于ARP请求和应答是广播形式的,因此可能会被恶意设备利用进行ARP欺骗(ARP Spoofing)攻击,从而导致网络安全问题。
PPP
PPP(Point-to-Point Protocol,点对点协议)是一种用于在两个网络节点之间建立连接的数据链路层协议。它通常用于在拨号连接和广域网(WAN)中传输数据,可以在串行线路(如电话线或光纤)上可靠地传输数据包。
PPP协议具有以下特点和功能:
-
建立连接:PPP协议允许两个网络节点建立连接,并在连接期间传输数据。
-
数据帧格式:PPP数据帧包括标识符、控制字段、协议字段和数据字段,这些字段用于在网络节点之间传输数据。
-
多种协议支持:PPP协议支持多种网络层协议,如IP、IPv6、IPX等,可以在不同类型的网络上进行通信。
-
认证和加密:PPP协议支持多种认证和加密方法,如PAP(Password Authentication Protocol)、CHAP(Challenge Handshake Authentication Protocol)和EAP(Extensible Authentication Protocol),以确保通信的安全性。
-
网络控制协议:PPP还定义了一系列网络控制协议(如LCP、NCP等),用于建立、配置和维护数据链路连接。
总的来说,PPP协议是一种灵活且功能强大的协议,广泛用于建立可靠的点对点连接,并支持多种网络层协议和安全机制。
15.tco/ip七层的作用
1.物理层的单位是比特,数据链路层的单位是帧,网络层单位是分组,传输层、会话层、表示层和应用层的单位是报文。
2.交换机(Switch)是计算机网络中用于连接多台计算机和网络设备的网络设备。它的主要作用是根据目标地址将数据包从一个端口转发到另一个端口,从而实现局域网内计算机之间的通信。交换机可以提高局域网的通信效率和安全性,与集线器(Hub)相比,交换机能够更智能地将数据包发送到目标设备,避免了在整个网络上广播数据包的需要。
交换机通过自身维护的MAC地址表(也称为CAM表)来转发数据帧
交换机如果没有查询到该MAC地址所在表中的信息,那么就会泛洪发送,收到泛洪信息的交换机如果并未发现该Mac地址所在表中信息,那么就会丢弃。不过泛洪会占用大量的带宽,造成网络拥堵,可以手动设置交换机端口拒接该端泛洪报文或者阻止泛洪发
3.
集线器(Hub)是用于连接多台计算机或网络设备的网络设备,其主要作用是将所有连接到它的设备组成一个共享的局域网。集线器的工作原理是在收到一个数据包后,将数据包广播到所有连接的端口上,而不考虑数据包的目标地址。
集线器的作用主要有以下几点:
-
连接设备:集线器可以将多台计算机或网络设备连接在一起,形成一个局域网,使这些设备可以相互通信。
-
数据广播:集线器接收到的数据包会被广播到所有连接的端口上,从而确保所有设备都可以收到数据。
-
信号放大:集线器可以放大信号,使信号能够在局域网中传输更远的距离。
-
简单易用:集线器通常比交换机更简单,配置和使用起来更加容易。
然而,随着网络技术的发展,交换机逐渐取代了集线器的地位,因为交换机能够根据目标地址智能地将数据包发送到目标设备,从而提高了网络的传输效率和安全性。
信息安全
1.数据的安全性和完整性
-
安全性:数据的安全性指的是数据受到保护,不会被未经授权的访问或攻击者获取。保障数据安全的方法包括加密、访问控制、身份验证等技术手段。
-
完整性:数据的完整性指的是数据在存储、传输和处理过程中不会被篡改或损坏。保障数据完整性的方法包括使用校验和、数字签名等技术来检测和防止数据被篡改
2.网络信息
-
可靠性(Reliability):指的是信息在传输过程中能够被正确地接收,不会丢失、损坏或重复。保障信息传输的可靠性通常涉及使用可靠的传输协议(如TCP)、错误检测和纠正技术等。
-
不可抵赖性(Non-repudiation):指的是发送方无法否认曾经发送过的信息,接收方也无法否认曾经接收到的信息。实现不可抵赖性通常需要使用数字签名等技术。确认参 与者的真实同一性.
-
可控性(Controllability):指的是信息传输和处理过程中能够受到控制,包括对信息的访问控制、传输控制、处理控制等。保障信息的可控性通常需要使用访问控制、加密技术等。
-
完整性(Integrity):指的是信息在传输和处理过程中不会被篡改、损坏或删除,信息的完整性可以通过使用数字签名、消息摘要等技术来验证和保护。
3.SSL
SSL(Secure Sockets Layer,安全套接字层)是一种用于保护Internet通信安全的加密协议。SSL通过在通信双方之间建立安全的加密连接,确保数据在传输过程中不被窃听或篡改。
SSL协议的主要特点包括:
-
加密通信:SSL使用加密算法对通信数据进行加密,防止数据在传输过程中被窃听。
-
身份验证:SSL通过数字证书对通信双方进行身份验证,确保通信双方的身份是合法的。
-
数据完整性:SSL使用消息摘要算法对通信数据进行签名,确保数据在传输过程中不会被篡改。
-
会话管理:SSL可以创建和管理安全会话,减少加密和解密的开销,提高通信性能。
-
协议灵活性:SSL可以与多种应用层协议配合使用,如HTTP、SMTP、POP3等,为这些协议提供安全性支持。
SSL的最新版本是TLS(Transport Layer Security,传输层安全)协议,TLS继承了SSL的设计理念,并进行了一些改进和增强,目前广泛应用于Web安全通信中。例如,HTTPS(HTTP over SSL/TLS)就是在HTTP协议上加入了SSL/TLS协议,用于保护Web通信安全。
3.公钥体系
公钥体系算法是使用公钥加密,使用私钥解密。甲给乙发送 数据,则保证乙能用自己的私钥解开,所以需要用乙的公钥加密。并且乙的公钥可以在 互联网的服务器上查询到。
计算机基础
1.寻址方式
指令系统的不同寻址方式包括以下几种:
-
立即寻址(Immediate Addressing):指令中直接包含操作数的值,无需访问内存。例如,
ADD R1, #10
表示将寄存器R1中的值与立即数10相加。 -
直接寻址(Direct Addressing):指令中包含操作数的地址,需要访问内存来获取操作数的值。例如,
LOAD R1, 1000
表示将内存地址1000处的值加载到寄存器R1中。 -
间接寻址(Indirect Addressing):指令中包含操作数的地址的地址,需要进行两次内存访问才能获取操作数的值。例如,
LOAD R1, (1000)
表示先从内存地址1000处读取一个地址,然后再从该地址处读取实际的操作数值。 -
寄存器寻址(Register Addressing):指令中直接使用寄存器作为操作数,无需访问内存。例如,
ADD R1, R2
表示将寄存器R1和R2中的值相加。 -
寄存器间接寻址(Register Indirect Addressing):指令中使用寄存器中的地址作为操作数的地址,需要进行一次内存访问。例如,
LOAD R1, (R2)
表示将寄存器R2中的值作为地址,从内存中读取数据并加载到寄存器R1中。 -
基址寻址(Base Addressing):指令中使用一个基址寄存器和一个偏移量来计算操作数的地址。例如,
LOAD R1, 1000(R2)
表示将寄存器R2中的值加上偏移量1000,作为地址从内存中读取数据并加载到寄存器R1中。 -
相对寻址(Relative Addressing):指令中使用一个相对于当前指令地址的偏移量来计算操作数的地址。例如,
JUMP 100
表示在当前指令地址的基础上加上偏移量100进行跳转。
采用不同寻址方式为了缩短指令长度、扩大寻址空间、提高编程灵活性
2.采用DMA的I/O系统的基本思想
DMA(Direct Memory Access,直接内存访问)是一种用于提高I/O设备与内存之间数据传输效率的技术。其基本思想是通过使用专门的DMA控制器,将数据直接从I/O设备传输到内存,或者从内存传输到I/O设备,而无需CPU的直接参与。
DMA的基本思想包括以下几个方面:
-
减少CPU的负载:传统上,CPU需要直接处理I/O设备和内存之间的数据传输,包括数据传输的控制、数据拷贝等操作,这会占用CPU的大量时间和资源。而使用DMA后,这些数据传输的工作由DMA控制器负责,CPU可以将更多的精力用于其他任务。
-
提高数据传输效率:DMA控制器通常比CPU更快,能够实现高速的数据传输,从而提高了数据传输的效率。
-
并行处理:由于DMA控制器可以独立于CPU进行工作,因此可以实现数据传输的并行处理,提高系统整体的性能。
-
节省能量:DMA可以帮助系统实现更有效的能源利用,因为它可以在不需要CPU参与时完成数据传输操作,从而减少了CPU的功耗。
总的来说,DMA的基本思想是通过引入专门的DMA控制器,将数据传输的工作从CPU转移到DMA控制器上,从而提高了系统的性能和效率。
C语言
1.逗号运算符
若已定义 int a,则表达式 a=15,a+5,a++的值是
在这个表达式中,逗号运算符会依次执行操作,并返回最后一个操作的值。因此,a=15
的结果是 15
,a+5
的结果是 20
(因为此时 a
的值为 15
),a++
的结果是 15
(因为 a
的值会先被返回,然后再执行自增操作)
x+=y+=z 从右向左进行运算,y=y+z,y 的值变为 0,x=x+y, x 的值变为 1,输出语句中的 x<y?y:x,当 x<y 成立时,输出 y 的值,当 x<y 不成立时 输出 x 的值,输出 1。
3. while 和 do-while
C 语言中 while 和 do-while 循环的主要区别是
C 语言中 while
和 do-while
循环的主要区别是循环条件的判断时机不同。
-
while
循环:在每次循环开始之前先判断循环条件,如果条件为真,则执行循环体内的语句,然后再次判断循环条件。如果条件为假,则跳出循环,不执行循环体内的语句。while (condition) { // 循环体内的语句 }
-
do-while
循环:先执行循环体内的语句,然后再判断循环条件。如果条件为真,则继续循环,否则跳出循环。
do {
// 循环体内的语句
} while (condition);
因此,do-while
循环至少会执行一次循环体内的语句,而 while
循环在判断循环条件为假时,循环体内的语句可能一次都不执行。
4.continue和break
continue 语句的作用是结束本次循环,break 语句的作用是 结束整个循环,从多层循环嵌套中退出时,也可使用 break。
5.局部变量
在这个程序中,fun()
函数定义了两个局部变量 a
和 b
,并赋予它们值 100
和 200
,但这些变量的作用域仅限于 fun()
函数内部。在 main()
函数中,又定义了两个同名的局部变量 a
和 b
,并分别赋予它们值 5
和 7
。在调用 fun()
函数后,main()
函数中的 a
和 b
的值没有被改变,因为在 fun()
函数中重新定义的 a
和 b
是局部变量,它们的作用域仅限于 fun()
函数内部。因此,程序的输出将是 57
。
操作系统
1.将逻辑地址转换为内存物理地址的过程也可以称为重定位(Relocation)。在计算机系统中,重定位是指将程序或数据从一个内存地址移动到另一个内存地址的过程,通常用于处理程序在内存中的位置变化或动态加载的情况。
2.常用的分配算法
首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法
首次适应算法及循环首次适应算法将空闲分区按起始地址递增的次序排列;最佳适应算法将空闲分区按大小递增的次序排列;最坏适应算法将空闲分区按大小递减的次序排列。
3.信号量PV操作
在信号量的 P、V 操作中,P 操作(等待操作)会尝试将信号量的值减一,如果减一后的值小于零,则该进程会被阻塞(处于等待状态)直到信号量的值大于等于零;而 V 操作(发信号操作)会将信号量的值加一,并且如果有进程在等待该信号量,则唤醒一个进程。信号量为-2时,表示2个进程处于等待状态。
4.一个分页存储管理系统中,地址长度为 32 位,其中页号占 8 位,则页表长度 是( )。
地址长度为 32 位,其中页号占 8 位,则页表长度为 2 ^8,页 面大小为 2^24
5.响应比=(等待时间+要求服务时间)/要求服务时间。(一作业 8:00 到达系统,估计运行时间为 1 小时,若 10:00 开始执行该作业, 其响应比是3)
6.文件是按名存储在存储介质上的一组相关信息的集合。
7.
8.
虚拟存储器的主要目的包括以下几点:根据虚存的概念和作用可知,虚拟存储器主要是从逻辑上 扩大主存的存储空间,并提供相应的调度管理机制。
-
扩展内存容量:虚拟存储器允许程序使用比物理内存更大的地址空间。当程序需要的内存超过物理内存大小时,虚拟存储器可以将部分内容存储在磁盘上,从而扩展可用内存容量。
-
提高内存利用率:虚拟存储器允许将程序中未使用的部分存储在磁盘上,从而释放出物理内存空间供其他程序使用,提高了内存利用率。
-
简化编程:使用虚拟存储器可以简化程序的编写,因为程序员不必考虑内存大小限制或物理内存的管理细节。程序可以将所有数据视为在内存中,并由操作系统负责将数据从磁盘加载到内存中。
-
提高系统响应速度:虚拟存储器可以根据程序的需求将数据从磁盘加载到内存中,从而提高了系统对用户请求的响应速度。
9.采用多道程序设计后,用户在程序中使用的地址称为相对地址。
在多道程序设计中,每个程序都被加载到内存的不同位置,而且它们的内存空间是独立的。因此,每个程序中的地址都是相对于该程序自己的内存空间而言的,称为相对地址。这种相对地址的使用使得多个程序能够在同一台计算机上并发运行,而不会相互干扰。
10.
操作系统中的页面调度算法用于管理虚拟内存中的页面,以便将其映射到物理内存中的页面。以下是一些常见的页面调度算法:
-
先进先出(FIFO):最早进入内存的页面最先被淘汰。这种算法简单易实现,但可能会导致“负载倾斜”(即先进入的页面被频繁访问而后进入的页面被淘汰)。
-
最近最久未使用(LRU):淘汰最长时间未被访问的页面。实现起来比较复杂,需要记录每个页面的访问时间,但通常能够获得较好的性能。
-
最少使用(LFU):淘汰使用次数最少的页面。需要记录每个页面被访问的次数,适用于一些特定的工作负载。
-
时钟页面置换算法(Clock):基于FIFO的改进算法,通过一个钟表指针来标记页面的访问情况,当需要淘汰页面时,从钟表指针位置开始查找最早未被访问的页面进行淘汰。
-
最佳页面置换算法(OPT):根据未来的访问情况来淘汰页面,即淘汰未来最长时间内不会被访问的页面。这是一种理想化的算法,但在实际中很难实现,因为需要对未来访问模式进行准确的预测。
数据结构
1.
二叉排序树(Binary Search Tree,BST)是一种特殊的二叉树,具有以下性质:
- 左子树上所有节点的值均小于它的根节点的值。
- 右子树上所有节点的值均大于它的根节点的值。
- 左右子树也分别为二叉排序树。
平衡二叉树是一种特殊的二叉排序树,它在满足二叉排序树的基本性质的同时,还要求树的左右子树高度差不超过 1,以保持树的平衡性。
由二叉树性质 n0=n2+1,可知 n2=n0-1=24-1=23,由题干知 n1=28,故总结点数为 n0+n1+n2=24+28+23=75。
C++
1.C++的析构函数不允许有参数,也不能被重载。析构函数是用来在对象被销毁时释放资源的特殊成员函数,它没有返回类型也不接受任何参数。在类中只能有一个析构函数,并且不能被继承或重载。
在C++中,一个类拥有多个构造函数时,这些构造函数之间是重载关系。这意味着这些构造函数具有相同的名称但是参数列表不同,编译器会根据调用时提供的参数类型和数量来确定调用哪个构造函数。重载构造函数允许对象以不同的方式进行初始化,提高了类的灵活性和可用性。
2.虚函数和纯虚函数
虚函数是在基类中声明的一个函数,它在派生类中可以被重写(覆盖)。通过在基类中将函数声明为虚函数,可以实现运行时多态性,即在运行时确定调用的是哪个版本的函数,从而实现基类指针或引用调用派生类的函数。
要将一个函数声明为虚函数,只需要在函数声明的前面加上 virtual
关键字。派生类中重写虚函数时,可以使用 override
关键字(C++11 引入)来显式标识重写。
C++中的纯虚函数是一个在基类中声明但没有实现的虚函数。它的声明形式为在函数声明的结尾加上= 0
,例如:
class Base {
public:
virtual void func() = 0; // 纯虚函数
};
包含纯虚函数的类称为抽象类,不能被实例化,只能作为基类来派生新的类。派生类必须实现基类中的纯虚函数才能成为一个具体的类。纯虚函数提供了一种将接口与实现分离的机制,可以实现多态性和对象的动态绑定。
例子是定义一个基类 Shape
,其中包含一个纯虚函数 getArea()
用于计算形状的面积,然后派生出不同的形状类如 Circle
和 Rectangle
,这些派生类必须实现 getArea()
方法来计算各自形状的面积。
#include <iostream>
// 抽象基类
class Shape {
public:
// 纯虚函数,必须在派生类中实现
virtual double getArea() const = 0;
};
// 派生类:圆形
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
/*这是C++中的构造函数初始化列表。在这里,Circle 类的构造函数使用初始化列表来初始化 radius 成员变量。初始化列表位于构造函数的冒号后面,接着是一个成员变量名 radius,后面跟着括号括起来的初始化值 r。这样的语法可以在对象创建时直接将参数 r 的值赋给 radius 成员变量,而不需要在构造函数体中使用赋值语句。*/
// 实现基类中的纯虚函数
double getArea() const override {
return 3.14159 * radius * radius;
}
/*const:表示该成员函数是一个常量成员函数,即在函数内部不能修改类的成员变量。这样的函数可以在常量对象上调用,或者在常量成员函数中调用。
override:表示该函数是一个虚函数的重写。它用于显式地告诉编译器,这个函数是在基类中声明为虚函数的,并且在派生类中进行了重写。如果基类中没有对应的虚函数,或者签名不匹配(例如忘记加上 const),编译器会发出错误。*/
};
// 派生类:矩形
class Rectangle : public Shape {
private:
double width;
double height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
// 实现基类中的纯虚函数
double getArea() const override {
return width * height;
}
};
int main() {
Circle circle(5);
Rectangle rectangle(4, 6);
std::cout << "圆形的面积:" << circle.getArea() << std::endl;
std::cout << "矩形的面积:" << rectangle.getArea() << std::endl;
return 0;
}
这个例子中,Shape
类是一个抽象基类,它包含一个纯虚函数 getArea()
,派生类 Circle
和 Rectangle
分别实现了这个方法来计算圆形和矩形的面积。
3.重写和重载区别
-
重载(Overload):
- 重载是指在同一个作用域内,可以定义多个函数或方法具有相同的名称但不同的参数列表。
- 重载的目的是为了让函数名可以根据不同的参数列表执行不同的操作,提高代码的灵活性和可读性。
void print(int a) { cout << "Integer: " << a << endl; } void print(double b) { cout << "Double: " << b << endl; }
-
重写(Override):
- 重写是指子类重新定义(覆盖)了父类中的虚函数,使得子类对象在调用该函数时执行子类自己的实现。
- 重写要求子类函数的名称、参数列表和返回类型都与父类中被重写的虚函数完全相同。
class Base { public: virtual void display() { cout << "Displaying Base class." << endl; } }; class Derived : public Base { public: void display() override { cout << "Displaying Derived class." << endl; } };
总的来说,重载是在同一类中定义多个同名函数,而重写是在子类中重新定义父类中的虚函数。重载是静态多态性(编译时多态),而重写是动态多态性(运行时多态)。
继承、多态
继承(Inheritance):
- 继承是指一个类(称为子类或派生类)可以从另一个类(称为父类或基类)继承属性和方法的过程。
- 继承可以实现代码的重用性和扩展性,子类可以使用父类的成员(属性和方法),并且可以在其基础上添加新的成员或修改继承的成员的行为。
多态(Polymorphism):
- 多态是指同一个函数调用可以根据对象的不同类型而具有不同的行为。
- 多态分为编译时多态(静态多态性)和运行时多态(动态多态性)两种形式。运行时多态通过虚函数实现。
class Animal {
public:
virtual void makeSound() {
cout << "Animal makes a sound." << endl;
}
};
class Dog : public Animal {
public:
void makeSound() override {
cout << "Dog barks." << endl;
}
};
void describe(Animal *animal) {
animal->makeSound();
}
int main() {
Animal *animal = new Dog();
describe(animal);
delete animal;
return 0;
}
在上述示例中,Dog
类继承了 Animal
类的属性和方法,并且重写了 makeSound()
方法。通过多态,即使 animal
是一个指向 Dog
对象的 Animal
指针,但在调用 describe()
函数时会根据实际对象类型调用正确的 makeSound()
方法。
要实现多态,需要满足以下条件:
- 基类必须定义一个虚函数。
- 派生类必须重写该虚函数,并且函数签名(函数名、参数列表、常量属性)必须与基类中的虚函数完全相同。
- 使用基类指针(或引用)指向派生类对象,并通过这个指针(或引用)调用虚函数。
#include <iostream>
// 基类
class Animal {
public:
// 虚函数
virtual void makeSound() {
std::cout << "Animal makes a sound." << std::endl;
}
};
// 派生类
class Dog : public Animal {
public:
// 重写基类的虚函数
void makeSound() override {
std::cout << "Dog barks." << std::endl;
}
};
// 派生类
class Cat : public Animal {
public:
// 重写基类的虚函数
void makeSound() override {
std::cout << "Cat meows." << std::endl;
}
};
int main() {
Animal *animal1 = new Dog(); // 使用基类指针指向派生类对象
Animal *animal2 = new Cat(); // 使用基类指针指向派生类对象
animal1->makeSound(); // 调用虚函数,输出 "Dog barks."
animal2->makeSound(); // 调用虚函数,输出 "Cat meows."
delete animal1;
delete animal2;
return 0;
}
在这个示例中,Animal
类中的 makeSound()
方法是一个虚函数。Dog
和 Cat
类分别重写了这个虚函数。在 main()
函数中,通过基类指针调用 makeSound()
方法时,会根据指针所指向的对象的实际类型来确定调用哪个版本的 makeSound()
方法,从而实现了多态。