用子域名可以做网站吗,网上服装商城网站建设方案,小程序制作方法教程,成功的微网站目录
软件分层
介绍
举例
类的继承
虚拟文件系统
线程接口封装
虚拟地址空间
总结
为什么是层状的
软件分层
网络协议
原因
梳理协议顺序
相连节点
协议分层
引入
示例
实际上
逻辑上
制定出协议 软件分层 介绍 通过将软件系统划分为不同的层次,每一层都有…目录
软件分层
介绍
举例
类的继承
虚拟文件系统
线程接口封装
虚拟地址空间
总结
为什么是层状的
软件分层
网络协议
原因
梳理协议顺序
相连节点
协议分层
引入
示例
实际上
逻辑上
制定出协议 软件分层 介绍 通过将软件系统划分为不同的层次,每一层都有特定的功能和职责,以实现模块化,可维护和可扩展的软件架构 这种分层设计有助于提高系统的可理解性,降低耦合度,并促进团队协作 举例 类的继承 子类和基类,两者类型相互独立子类可以共享基类的功能并在此基础上添加、修改或扩展功能,从而建立出类之间的层次关系 虚拟文件系统 虚拟文件系统是一个抽象层它提供了一个统一的接口使得操作系统和应用程序能够访问不同种类的文件系统而不需要关心底层文件系统的具体实现通过struct file指针,指向不同的硬件: 线程接口封装 我们之前模拟封装c的线程库时,是使用回调的方式,在构造函数内部调用传进来的函数指针线程库接口模拟封装(使用参数包接受参数,2种方法)-CSDN博客这就将线程定义和其工作函数进行分层,二者耦合度很低,代码仅通过回调的方式将两者联系在一起 虚拟地址空间
虚拟地址空间属于更高层次的抽象,它隐藏了底层硬件的细节,为应用程序提供了一种独立于实际物理硬件的地址空间 他内部存在着嵌套关系的分层结构: 除此之外,分层也可以是并列关系 每个程序都认为自己独立拥有内存空间,从而在逻辑上将每个程序进行分层同时,虚拟地址空间内部分出了不同区域,这也属于软件分层 总结 软件分层可以在数据结构/软件逻辑上进行分层大多数是两者都有 这样分出了各个模块让代码的耦合度降低了在维护时也更加容易 为什么是层状的 软件分层 可以将大项目分成多个小模块写和维护都容易 如果需要修改或扩展系统的功能只需关注特定层次而不必涉及整个系统 高内聚低耦合是代码要实现的目标 模块内的高内聚使得修改和维护变得更加容易而低耦合减少了模块之间的依赖使得修改一个模块时不会波及到其他模块 网络协议 原因 除了是因为整个网络项目规模太大了需要我们分模块 还因为协议是由问题产生的问题是层状的协议自然也是 梳理协议顺序 要运输数据首先面临的最基础的问题就是如何将数据在两个相连节点之间传输,有了这第一步,才会有在两个相距甚远的主机之间传输的可能性 相连节点 指在网络拓扑结构中这两个节点之间直接通过一条物理链路或网络连接相连这种连接方式称为点对点连接点对点连接可以通过不同的物理介质和连接方式来实现比如:以太网直连(比如通过网线),通过wifi连接,形成点对点链路(通过光纤,电缆等实现)等方式 有了这个可能性,我们还需要探讨如何真正实现 可以跳转的设备很多,怎么选择路径呢?而且如何知道自己已经到达目标主机了呢?就需要一个唯一标识,来区分每一台主机,也就是解决定位主机的问题 两个问题都解决后我们从技术层面上可以运输到目标主机了 但怎么确保一定能做到呢就来到可靠性的问题也就是制定[传输数据时如果出错]的预备方案,确保让可靠的数据源发送成功 当我们可以可靠地运输数据后也就该思考下一步数据到位后要干什么总不能运到就不管了吧 也就有了应用层面上的设计,为传输的数据赋予实际意义 协议分层 引入 既然网络协议是分层的,那么其他协议也可能会是分层设计我们已经有了协议的认知,以及分层的好处,下面就来看看协议是如何实现分层的我们以打电话为例(当然这里只是简单的两层,实际的网络通信会更加复杂, 需要分更多的层次) 示例
下面是两个人通过座机交流: 实际上 我们可以通过前面学习的知识分析出 -- 两个人并没有直接交流,是借助了电话这个设备才成功交流 a的声音被电话接收电话通过压缩编码加密音频等行为最后转换为光电信号光电信号以电话之间的通信协议传输给c的电话然后c的电话进行一系列处理将光电信号转换为音频并播放出来 逻辑上 但是在逻辑上我们认为,我们是直接和对方交流的(因为逻辑上人与电话无法交流,总不会出现c的电话直接来找a交流吧(瘫))所以人与人被划分为同一层而电话本身就要进行交流(将光电信号传给对方),所以电话也分为一层 制定出协议 所以,我们针对划分出的这两层,制定对应的协议 人与人,规定用某种相同语言交流电话之间,制定某种协议 而连接这两层的,就是听筒(相当于听筒是接口),这就实现了高内聚,低耦合的要求 这样进行分层后,一层有问题,不会影响上下层即使换了说其他语言的人 / 换了设备(也可以说是更换了协议) ,依然可以沟通所以,分层可以让维护成本大大降低