[架构之路-229]:计算机体硬件与系结构 - 计算机系统的矩阵知识体系结构
目录
一、纵向:目标系统的分层结构
1.1 目标系统的架构
1.2 网络协议栈
1.3 计算机程序语言分层
二、横向(构建目标系统的时间、开发阶段):软件工程
三、二维矩阵知识体系结构
一、纵向:目标系统的分层结构
1.1 目标系统的架构
[架构之路-106]:《软件架构设计:程序员向架构师转型必备》-16-常见的十余种软件分层架构_软件分层设计_文火冰糖的硅基工坊的博客-CSDN博客
计算机系统的分层知识体系是指计算机硬件和软件系统按功能和抽象程度的不同被划分为多个层次,每个层次负责不同的任务和功能。这种分层的设计有助于提高系统的可移植性、可扩展性和维护性,同时也方便不同层次的开发人员进行独立的开发和测试。
以下是计算机系统常见的分层知识体系:
-
硬件层:计算机系统的最底层是硬件层,包括处理器、内存、存储器、输入/输出设备等硬件组件。硬件层负责管理和控制硬件资源,并提供底层的执行能力。
-
网络/硬件驱动层:网络层位于硬件层和操作系统层之间,负责数据在不同计算机之间的传输和通信。网络层提供了数据传输的基本功能,包括数据的分组、路由选择、流量控制和错误检测等。它使用协议(如TCP/IP协议)来实现数据的可靠传输和通信。网络层实现了计算机之间的互联,使得计算机可以通过网络进行数据交换和通信。网络层的功能是支持应用程序的远程访问和数据传输。
-
操作系统层:操作系统层位于硬件层之上,负责管理计算机的资源和提供各种系统服务。它提供了进程管理、内存管理、文件系统管理、设备驱动程序等功能,以支持上层应用的运行。
-
中间件层:中间件层位于操作系统层之上,提供了更高级别的服务和功能,以方便应用程序的开发和部署。中间件层包括数据库系统、消息队列、Web服务器等,它们提供了不同的服务和接口,以满足应用程序的需求。
-
数据库层:数据库层位于中间件层和应用程序层之间,负责管理和组织数据。数据库系统提供了一种结构化的方式来存储和查询数据,以支持应用程序对数据的管理和访问。数据库系统具有数据持久性、数据一致性和数据安全性等特点。常见的数据库系统包括关系型数据库(如MySQL、Oracle)、非关系型数据库(如MongoDB、Redis)等。数据库层承担着数据的存储、查询、事务处理和并发控制等任务,为应用程序层提供数据支持。
-
应用程序层:应用程序层是计算机系统中最上层的层次,包括各种用户应用程序和应用软件。应用程序层通过中间件和操作系统层提供的服务来实现特定的功能,如办公软件、图像处理软件、游戏等。
整个计算机系统的分层知识体系可以用类似于金字塔形状的模型来表示,底层是硬件层,然后是操作系统层、中间件层和应用程序层。每个层次都依赖于下层提供的功能和服务,并为上层层次提供相应的接口和抽象。这种分层设计使得不同的开发人员可以专注于不同的层次进行开发,提高了系统的可维护性和可扩展性。
1.2 网络协议栈
在计算机系统的分层知识体系中,协议栈是一种按照不同层次组织的网络通信协议集合。
协议栈通过将通信功能和任务分解为多个层次,从而实现了对网络通信的有效管理和处理。
常见的协议栈是TCP/IP协议栈,它是互联网中最为广泛使用的网络通信协议栈。TCP/IP协议栈根据功能和抽象程度的不同分为多个层次,包括:
-
物理层:物理层负责传输和接收原始的比特流,使用物理媒介进行数据传输,如电缆、光纤等。
-
数据链路层:数据链路层通过帧的方式将比特流划分为数据包,并为其添加控制信息,以实现可靠地传输数据。在这个层次上,数据传输是局域网(LAN)内的直接通信。
-
网络层:网络层提供了数据包的路由和转发功能,负责确定数据从源到目的地的路径。它使用IP协议来处理网络地址和路由选择。
-
传输层:传输层提供端对端的通信服务,主要使用TCP协议和UDP协议。其中,TCP协议提供可靠的、面向连接的通信,而UDP协议提供不可靠的、面向无连接的通信。
-
应用层:应用层是最高层的协议层,包含各种应用程序和协议,如HTTP、FTP、SMTP等。应用层的协议负责处理特定应用领域的通信需求。
协议栈中的每个层次都有独立的功能和责任,下层向上层提供服务和接口,并通过协议交互来实现通信。上层向下层传递数据和请求,以使数据在网络中得到正确的处理和传输。协议栈的分层结构使得不同层次的协议能够独立进行开发、测试和升级,同时也提供了灵活性和可扩展性,以适应不同的应用场景和需求。
除了TCP/IP协议栈外,还有其他协议栈,如ISO/OSI七层模型、Ethernet协议栈等。不同的协议栈可能有不同的层次数量和名称,但都遵循类似的分层设计原则,以实现有效的通信和数据传输。
1.3 计算机程序语言分层
二、横向(构建目标系统的时间、开发阶段):软件工程
[架构之路-175]-《软考-系统分析师》-知识体系大全(图解)_文火冰糖的硅基工坊的博客-CSDN博客
软件工程是系统化、规范化地应用技术和方法,以开发高质量软件的学科和实践。软件开发过程是软件工程的核心,它描述了从需求分析到软件交付的全过程,并包括了软件设计、编码、测试、部署和维护等阶段。
常见的软件开发过程包括以下几个主要阶段:
-
需求分析:在需求分析阶段,开发团队与用户进行沟通和讨论,确保对用户需求和系统功能有清晰的理解。需求分析的目标是明确系统的功能需求、性能要求、用户界面等方面的需求。
-
软件设计:在软件设计阶段,根据需求分析的结果,设计软件系统的整体架构和模块的详细设计。软件设计包括系统结构设计、数据结构设计、算法设计等,旨在保证软件的可靠性、健壮性和可维护性。
-
编码与实现:在编码与实现阶段,开发团队根据软件设计的规范,将设计的模块实现为具体的编程代码。开发人员使用合适的编程语言和开发工具进行编码,并进行代码的单元测试。
-
软件测试:软件测试是为了评估软件是否满足预期需求和质量标准。测试可以分为单元测试、集成测试和系统测试等不同层次和类型。通过不同的测试手段,检验软件的功能正确性、性能、安全性和可靠性等方面。
-
软件部署与维护:在软件部署阶段,将已经测试通过的软件安装和部署到生产环境中。软件维护阶段则是在软件交付后,通过修复错误、改进功能、升级版本等方式来保障软件的运行和持续改进。
除了以上主要阶段,软件开发过程中还需要进行持续的需求管理、变更控制、配置管理、项目管理等工作,在整个开发过程中进行合理的管理和协调。
需要注意的是,不同的软件项目可能采用不同的开发方法和过程模型,如瀑布模型、敏捷开发、迭代开发等。具体的软件开发过程可根据项目的特定要求和团队的实际情况进行调整和选择。
三、二维矩阵知识体系结构
对于计算机二维知识体系结构,我们可以考虑以下两个维度:软件开发阶段维度和计算机分层维度。
-
软件开发阶段维度(人的维度、时间的维度):这个维度关注软件的开发生命周期,将软件开发过程划分为不同的阶段。常见的软件开发阶段包括需求分析、软件设计、编码与实现、软件测试和部署与维护。每个阶段都有不同的目标、方法和工具。
-
计算机分层维度(机器的维度、目标系统的维度):这个维度关注计算机系统的分层结构。常见的计算机分层模型是ISO/OSI七层模型和TCP/IP四层模型。ISO/OSI七层模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,它描述了计算机系统中各个层次的功能和协议。TCP/IP四层模型包括网络接口层、网络层、传输层和应用层,它是实际互联网中广泛使用的分层模型。
综合以上两个维度,我们可以构建如下的知识体系结构:
- 软件开发阶段维度- 需求分析- 软件设计- 编码与实现- 软件测试- 部署与维护- 计算机分层维度- 应用层- 表示层- 会话层- 传输层- 网络层- 数据链路层- 物理层
在实践中,我们需要学习和理解这两个维度的知识,掌握软件开发的各个阶段的技能和方法,并了解计算机系统中各层次的功能和协议。这有助于我们在实际的软件开发和计算机系统设计中应用相应的概念、技术和工具。
相关文章:

[架构之路-229]:计算机体硬件与系结构 - 计算机系统的矩阵知识体系结构
目录 一、纵向:目标系统的分层结构 1.1 目标系统的架构 1.2 网络协议栈 1.3 计算机程序语言分层 二、横向(构建目标系统的时间、开发阶段):软件工程 三、二维矩阵知识体系结构 一、纵向:目标系统的分层结构 1.1…...

第一章 visual studio下载安装
一、官网下载 地址:https://visualstudio.microsoft.com/zh-hans/ 点击免费visual studio 二、安装 运行下载好的exe文件,自定义安装目录 三、选择需要的组件安装 只需要选择标记组件,然后点击安装 等待安装完成就行 四、重启电脑 安装完之后…...

【服务器】在 Linux CLI 下安装 Anaconda
【服务器】在 Linux CLI 下安装 Anaconda 1 系统环境2 下载安装包3 安装 1 系统环境 查看系统信息 cat /etc/os-release2. 查看架构 uname -a # output # Linux localhost.localdomain 4.18.0-193.28.1.el8_2.x86_64 #1 SMP Thu Oct 22 00:20:22 UTC 2020 x86_64 x86_64 x86…...
Python中Lambda用法
在Python中,lambda函数是一种形式较短的函数,又称为匿名函数。与正常的函数不同,lambda函数没有名称,因此只能在定义时直接传递给其他函数或变量使用,而不能单独调用。 lambda函数的语法非常简单,格式如下…...

nodejs+vue养老人员活体鉴权服务系统elementui
系统 统计数据:统计报表、人员台账、机构数据、上报数据、核验报表等,养老人员活体鉴权服务是目前国家养老人员管理的重要环节,主要为以养老机构中养老人员信息为基础,每月进行活体鉴权识别并统计数据为养老补助等管理。前端功能&…...
解决caffe中的python环境安装的问题(补充)
上一篇(解决caffe中的python环境安装的问题_qiuchangyong的博客-CSDN博客)说到了安装过程中遇到的常见问题,其实还有一个忘了补充,就是在执行命令"sudo python -m pip install -r requirements.txt"后,出现p…...
面试常用排序查找算法
文章目录 1 二分查找2 冒泡排序3 堆排序4 插入排序5 快速排序6 选择排序7 希尔排序 1 二分查找 定义两个变量left和right,分别表示数组的左边界和右边界,初始值分别为0和len - 1,其中len是数组的长度。计算数组的中间位置mid,公式…...

CUDA C编程权威指南:1.1-CUDA基础知识点梳理
主要整理了N多年前(2013年)学习CUDA的时候开始总结的知识点,好长时间不写CUDA代码了,现在LLM推理需要重新学习CUDA编程,看来出来混迟早要还的。 1.CUDA 解析:2007年,NVIDIA推出CUDA(…...

讲讲项目里的仪表盘编辑器(四)分页卡和布局容器组件
讲讲两个经典布局组件的实现 ① 布局容器组件 配置面板是给用户配置布局容器背景颜色等属性。这里我们不需要关注 定义文件 规定了组件类的类型、标签、图标、默认布局属性、主文件等等。 // index.js import Container from ./container.vue; class ContainerControl extends…...
Qt模块、Qt开发应用程序类型、Qt未来主要市场、Qt6功能普及
Qt模块、Qt开发应用程序类型、Qt未来主要市场、Qt6功能普及 文章目录 1.Qt核心模块2.Qt的功能拓展3.Qt未来主要市场4.Qt6功能普及5.弃用的功能: Qt是一个跨平台的应用程序开发框架,提供了丰富的模块和工具来开发各种类型的应用程序。以下是Qt目前已有的…...
nodejs+vue高校校图书馆elementui
管理员输入书籍所在的书架位置,借阅提醒系统:可以查看个人借阅信息和图书到期提醒、挂失、检索、虚拟借书证不仅为群众提供了服务,而且也推广了自己,让更多的群众了解自己。 管理员页面: 第三章 系统分析 10 3.1需求分…...
CUDA C编程权威指南:1.2-CUDA基础知识点梳理
主要整理了N多年前(2013年)学习CUDA的时候开始总结的知识点,好长时间不写CUDA代码了,现在LLM推理需要重新学习CUDA编程,看来出来混迟早要还的。 1.闭扫描和开扫描 对于一个二元运算符 ⊕ \oplus ⊕和一个 n n n元…...
C语言—位运算符
目录 &(位与,AND): |(位或,OR): 位取反(~): 左移(<<): 右移(>>): &(位与,AND)&…...

怎么才能实现一个链接自动识别安卓.apk苹果.ipa手机和win电脑wac电脑
您想要实现的功能是通过检测用户代理(User Agent)来识别访问设备类型并根据设备类型展示相应的页面。您可以根据以下步骤进行实现: 选择后端语言和框架,例如:Node.js、Express。 创建一个新的Express项目。 编写一个…...

zookeeper选举机制
全新集群选举 zookeeper 全新集群选举机制网上资料很多说法很模糊,仔细思考了一下,应该是这样 得到票数最多的机器>机器总数半数 具体启动过程中的哪个节点成为 leader 与 zoo.cfg 中配置的节点数有关,下面以3个举例 选举过程如下 server…...
vcpkg切换 Visual Studio 版本
vcpkg切换 Visual Studio 版本 在使用vcpkg作为项目的包管理工具时,可能会遇到需要切换Visual Studio版本的情况。下面是一种简单的方法来实现这个目标,通过修改triplet文件来指定使用的Visual Studio版本。 步骤1: 创建或修改Triplet文件 首先&#…...

运算符重载
#include <iostream> using namespace std; class Num { private:int num1; //实部int num2; //虚部 public:Num(){}; //无参构造Num(int n1,int n2):num1(n1),num2(n2){}; //有参构造~Num(){}; //析构函数const Num operator(const Num &other)const //加号重载{Nu…...
Llama2-Chinese项目:7-外延能力LangChain集成
本文介绍了Llama2模型集成LangChain框架的具体实现,这样可更方便地基于Llama2开发文档检索、问答机器人和智能体应用等。 1.调用Llama2类 针对LangChain[1]框架封装的Llama2 LLM类见examples/llama2_for_langchain.py,调用代码如下所示:…...
ES6中数组的扩展
1. 扩展运算符 用三个点(...)表示,它如同rest参数的逆运算,将数组转为用逗号分隔的参数序列。扩展就是将一个集合分成一个个的。 console.log(...[1, 2, 3]); // 1, 2, 3可以用于函数调用 扩展运算符后还可以放置表达式 ...(x > 0 ? [a] : [])如…...

计算机考研 | 2016年 | 计算机组成原理真题
文章目录 【计算机组成原理2016年真题44题-9分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2016年真题45题-14分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2016年真题44题-9分】 假定CPU主频为5…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...