2024-2025-1 20241421刘庆安《计算机基础与程序设计》第十一周学习总结
这个作业属于哪个课程 | 2024-2025-1-计算机基础与程序设计) |
---|---|
这个作业要求在哪里 | https://www.cnblogs.com/rocedu/p/9577842.html#WEEK11 |
这个作业的目标 | 网络拓扑、云计算、网络安全 、Web、HTML,CSS,Javascript、XML |
作业正文 | 本博客链接 https://www.cnblogs.com/118qa/p/18593472 |
教材学习内容总结
计算机网络知识点总结:
网络分层模型:
OSI 七层模型:从下到上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。各层功能明确,物理层负责处理物理介质上的信号传输;数据链路层进行数据帧的封装与解封装、差错检测等;网络层实现数据包的路由选择与转发;传输层提供端到端的可靠或不可靠传输服务,如 TCP(可靠传输)和 UDP(不可靠传输);会话层建立、维护和管理会话;表示层处理数据的表示、加密和解密等;应用层是用户直接接触的层面,包含各种网络应用程序协议,如 HTTP、FTP 等。
TCP/IP 四层模型:应用层、传输层、网络层和网络接口层。它是实际互联网中广泛应用的模型,与 OSI 模型有一定对应关系,网络接口层涵盖了物理层和数据链路层的部分功能,应用层整合了 OSI 模型中会话层、表示层和应用层的功能。
网络设备:
路由器:工作在网络层,根据 IP 地址进行路由选择,将数据包转发到目标网络,是连接不同网络的关键设备,具有多个网络接口,能够构建复杂的网络拓扑结构。
交换机:主要工作在数据链路层,通过学习设备的 MAC 地址,实现数据帧在局域网内的快速转发,可有效隔离冲突域,提高网络性能,分为二层交换机和多层交换机(如三层交换机可实现部分网络层功能)。
集线器:物理层设备,简单地将多个设备连接在一起,所有端口共享同一带宽,采用广播方式传输数据,容易产生冲突,已逐渐被交换机取代。
网络协议:
IP 协议:网络层的核心协议,为每个网络设备分配唯一的 IP 地址,负责数据包的寻址和路由,有 IPv4 和 IPv6 两个版本,IPv6 旨在解决 IPv4 地址枯竭等问题,具有更大的地址空间和更好的安全性等特性。
TCP 协议:提供可靠的、面向连接的传输服务。通过三次握手建立连接,保证数据的有序传输和可靠交付,采用流量控制和拥塞控制机制,以适应网络的动态变化,适用于对数据准确性要求较高的应用场景,如文件传输、电子邮件等。
UDP 协议:无连接、不可靠的传输协议,传输效率高,数据传输前无需建立连接,适用于对实时性要求较高但对数据准确性要求相对较低的应用,如视频流、音频流等多媒体传输以及一些简单的查询响应应用。
网络地址与子网划分:
IP 地址分类:IPv4 地址分为 A、B、C、D、E 五类,A 类地址范围是 1.0.0.0 - 126.255.255.255,B 类地址范围是 128.0.0.0 - 191.255.255.255,C 类地址范围是 192.0.0.0 - 223.255.255.255,D 类地址用于组播,E 类地址保留用于研究等特殊用途。
子网划分:通过将主机位部分划分为子网位,可将一个大的网络划分为多个小的子网,提高 IP 地址的利用率,增强网络的可管理性和安全性,子网掩码用于确定网络位和主机位的划分界限。
结构体相关知识:
结构体定义:结构体是一种用户自定义的数据类型,它允许将不同类型的数据组合在一起。
结构体变量声明与初始化:可以声明结构体类型的变量,并对其进行初始化。
结构体成员访问:使用点运算符(.)来访问结构体变量的成员。
结构体数组:可以定义结构体数组,用于存储多个结构体类型的数据。
结构体指针:可以定义指向结构体的指针,通过指针来访问结构体成员。
教材学习中的问题
问题:结构体相较于数组以及指针的优势在哪?
AI:相较于数组的优势
数据类型多样性
数组局限:数组是一种同类型数据的集合。例如,在 C 语言中,一个整型数组只能存放整型数据。如果要存储学生的姓名(字符串)、年龄(整数)和成绩(浮点数)等不同类型的数据,使用数组就非常不方便,需要为每种类型的数据分别定义数组,这会使数据结构变得分散和复杂。
结构体优势:结构体允许将不同类型的数据组合在一起。以学生信息为例,可以定义一个结构体包含字符数组(用于存储姓名)、整型(用于存储年龄)和浮点型(用于存储成绩)等成员。这样就可以在一个结构体变量中统一管理多种类型的数据,使数据的组织更加紧密和合理。
语义明确性
数组局限:单纯的数组元素在语义表达上比较模糊。例如,一个存储人员信息的数组,仅仅通过索引访问数组元素时,很难直观地知道每个元素代表的具体含义是姓名、年龄还是其他信息。
结构体优势:结构体成员有明确的名称,这使得代码的可读性大大增强。通过访问结构体的成员名称,如student.name、student.age和student.grade,可以非常清晰地知道正在处理的数据是学生的姓名、年龄还是成绩,提高了代码的可维护性。
数据灵活性
数组局限:数组在大小固定方面存在局限性。一旦定义了数组的大小,在很多情况下(特别是静态数组)很难动态地改变其大小。如果预先估计的数组大小小于实际需要的数据量,就可能导致数据溢出;而如果估计过大,又会浪费内存空间。
结构体优势:结构体本身并不受这种固定大小的限制。虽然结构体数组也有大小限制,但结构体内部成员的大小可以根据实际需求灵活定义,并且可以方便地在结构体中添加或删除成员,而不会像数组那样受到连续存储和同类型的约束。
相较于指针的优势
数据完整性和安全性
指针局限:指针是一种非常强大但也比较危险的工具。如果指针使用不当,很容易导致内存泄漏、悬空指针、野指针等问题。例如,当指针指向的内存已经被释放,但程序仍然试图通过该指针访问数据时,就会产生不可预测的错误。
结构体优势:结构体在使用过程中相对更加安全和稳定。当定义一个结构体变量时,它的内存空间是按照结构体成员的大小和顺序自动分配的,编译器会对结构体的操作进行一定的类型检查,减少了因内存管理不当而产生错误的可能性。
直观性和易用性
指针局限:指针操作相对复杂,尤其是多级指针和指针与数组、函数等混合使用的情况。例如,理解和正确使用指向函数指针的指针就需要对指针概念有深入的理解。对于初学者或者复杂的代码维护场景,指针的复杂性可能会导致代码难以理解和调试。
结构体优势:结构体的操作更加直观。通过简单的成员访问运算符(如 “.” 或 “->”)就可以方便地访问和修改结构体内部的成员数据。这种直观的操作方式使得代码更容易编写、阅读和理解,降低了编程的难度。
数据组织性
指针局限:指针主要用于存储内存地址,它本身并没有很好的数据组织能力。如果仅使用指针来管理复杂的数据,如一个包含多种类型数据的对象,需要手动进行内存分配和数据结构的构建,这会增加编程的复杂性。
结构体优势:结构体能够将相关的数据组合成一个逻辑单元,方便对数据进行整体的操作和传递。例如,在函数调用中,可以将一个结构体变量作为参数传递,函数内部可以直接访问和处理结构体中的各个成员,而不像指针那样需要考虑间接引用和内存安全等诸多问题。
基于AI的学习