当前位置: 首页 > news >正文

软考高级之系统架构师之软件工程

软件工程

面向对象设计原则

  1. 单一职责:设计目的单一的类
  2. 开闭原则;对扩展开放,对修改关闭
  3. 里氏替换:子类可以替代父类
  4. 依赖倒置:要依赖于抽象,而不是实现。要针对接口编程,不要针对实现编程
  5. 接口隔离:使用多个专门的接口好过使用单一的总接口
  6. 组合重用:要尽量使用组合而不是继承来达到重用的目的
  7. 迪米特法则:最少知识法则,一个对象应当对其他对象有尽可能少的了解(封装)

迪米特法则的应用准则:

  • 在类的划分上,应当创建有弱耦合的类。类之间的耦合越弱,就越有利于复用。
  • 在类的结构设计上,每一个类都应当尽量降低成员的访问权限。一个类不应当public自己的属性,而应当提供取值和赋值的方法让外界间接访问自己的属性。
  • 在类的设计上,只要有可能,一个类应当设计成不变类。
  • 在对其它对象的引用上,一个类对其它对象的引用应该降到最低。

耦合

耦合表示模块之间联系的紧密程度。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的牵一发动全身的水波效应,保证系统设计顺利进行。

紧密耦合表示模块之间联系非常强,松散耦合表示模块之间联系比较弱,非直接耦合则表示模块之间无任何直接联系。模块的耦合类型通常分为7种:

  • 非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过上级模块的控制和调用来实现的。
  • 数据耦合:一组模块借助参数表传递简单数据。
  • 标记耦合:一组模块通过参数表传递记录等复杂信息(数据结构)。
  • 控制耦合:模块之间传递的信息中包含用于控制模块内部逻辑的信息。
  • 通信耦合:也叫外部耦合,一组模块共用一组输入信息,或它们的输出需要整合以形成完整数据,即共享输入或输出。
  • 公共耦合:多个模块都访问同一个公共数据环境,公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
  • 内容耦合:也叫内部耦合,一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口等。

对于模块之间耦合的强度,主要依赖于一个模块对另一个模块的调用、一个模块向另一个模块传递的数据量、一个模块施加到另一个模块的控制的多少,以及模块之间接口的复杂程度。

内聚

软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分摸块的一个准则就是高内聚低耦合。

内聚度是指内部各元素之间联系的紧密程度,模块的内聚种类通常可分为7种,按其内聚度从低到高的次序依此为:

  • 偶然内聚:巧合内聚,完成一组没有关系或松散关系的任务
  • 逻辑内聚:完成逻辑上相关的一组任务
  • 瞬时内聚:时间内聚,所包含的任务必须在同一时间间隔内执行
  • 过程内聚:处理元素相关,而且必须按特定的次序执行
  • 通信内聚:所有处理元素集中在一个数据结构的区域上
  • 顺序内聚:处理元素相关,而且必须顺序执行
  • 功能内聚:完成一个单一功能,各个部分协调工作,缺一不可

系统建模

包括四个模块:

  • 用例建模:描述参与者和系统之间的主要交互;用例建模可以描述利益相关者所看到的系统行为
  • 组件建模:确定系统的子系统、模块和组件结构,为子系统、模块分配需求和职责,每个组建元素作为一个自包含的单元,用于开发、部署和执行
  • 服务建模:提供通用的应用程序,并将应用程序定义为一组抽象服务接口
  • 性能建模:是对系统的性能进行度量,为每个组件确定性能指标。包括执行时间、资源使用、开发复杂性、维护复杂性等

静态分析

静态分析通过解析程序文本从而识别出程序语句的各个部分,审查可能的缺陷和异常之处,静态分析包括五个阶段:

  • 控制流分析阶段找出并突出显示那些带有多重出口或入口的循环以及不可达到的代码段;
  • 数据使用分析阶段突出程序中变量的使用情况;
  • 接口分析阶段检查子程序和过程说明及它们使用的一致性;
  • 信息流分析阶段找出输入变量和输出变量之间的依赖关系;
  • 路径分析阶段找出程序中所有可能的路径并画在此路径中执行的语句

软件质量

软件质量是指反映软件系统或软件产品满足规定或隐含需求的能力的特征和特性全体。软件质量管理是指对软件开发过程进行的独立的检查活动,由质量保证、质量规划和质量控制三个主要活动构成。软件质量保证是指为保证软件系统或软件产品充分满足用户要求的质量而进行的有计划、有组织的活动,其目的是生产髙质量的软件。软件评审是软件质量保证的主要活动之一。

软件质量强调3个方面的内容:

  • 软件需求:测试软件质量的基础
  • 开发标准:定义一组用于指导软件开发方式的准则
  • 期望需求:间接定义用户对某些特性的需求

软件设计

软件设计包括体系结构设计、接口设计、数据设计和过程设计。

  • 结构设计:定义软件系统各主要部件之间的关系;开发一个模块化的程序结构,并表示出模块间的控制关系
  • 数据设计:将模型转换成数据结构的定义。好的数据设计将改善程序结构和模块划分,降低过程复杂性
  • 接口设计:人机界面设计,软件内部,软件和操作系统间以及软件和人之间如何通信
  • 过程设计:系统结构部件转换成软件的过程描述

外部&内部设计

外部设计处于软件设计的开始阶段,主要是按系统需求说明来确定此系统的软件结构和对应于系统需求说明,设计出各个功能部分的功能和接口。内部设计处于软件工程中的概要设计阶段,按照外部设计中确立的系统软件结构,来细化此系统各个功能部件以及各个部件接口的设计,并且详细给出各个功能部件详细的数据输入、输出设计。内部设计细化外部设计中的各种功能。

用户界面设计

用户界面设计的基本原则是从实践中总结出来的一些设计规则。Theo Maiidel在他的界面设计著作中提出3条黄金规则:

  • 让用户拥有控制权:用户希望控制计算机,而不是被计算机控制,因此在设计人机界面时应遵循以下原则:交互模式的定义不能强迫用户进入不必要的或不希望的动作的方式、提供灵活的交互、允许用户交互可以被中断和撤销、当技能级別增长时可以使交互流水化并允许定制交互、使用户隔离内部技术细节。
  • 减少用户的记忆负担:要求用户记住的东西越多,与系统交互时出错的可能也越大,因此好的用户界面设计不应加重用户的记忆负担。减少用户记忆负担的设计原则为:减少对短期记忆的要求、建立有意义的默认值、定义直觉性的捷径、界面的视觉布局应该基于真实世界的隐喻、以不断进展的方式提示信息。
  • 保持界面一致:用户应该以一致的方式展示和获取信息,这意味着所有可视信息的组织遵循统一的设计标准,所有屏幕显示都遵守该标准。输入机制被约束到有限的集合内,在整个软件系统中被一致地使用,同时从任务到任务的导航机制也被一致地定义和实现。保持界面一致性的设计原则包括以下内容:允许用户将当前任务放在有意义的语境中、在应用系列内保持一致性、不要改变用户己经熟悉的用户交互模型。

软件重用

软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。

按照重用活动是否跨越相似性较少的多个应用领域,分垂直式重用与水平式重用:

  • 垂直式重用:纵向重用,局限于某一垂直领域的重用,如只在电力系统中用到的构件。指在一类具有较多公共性的应用领域之间进行软部件重用。纵向重用活动的主要关键点是域分析:根据应用领域的特征及相似性预测软部件的可重用性。
  • 水平式重用:横向重用,指通用领域的重用。在不同应用领域都可重用的软件元素,如数据结构、分类算法和人机界面构建等。标准函数是一种典型的、原始的横向重用机制。

软件复用过程:创建、复用、支持、管理4个过程

  • 创建:界定和提供可复用资产,以满足复用者的需要
  • 复用:利用可复用资产来生产应用软件产品
  • 支持:全面支持可复用资产的获取、管理和维护工作
  • 管理:执行计划、启动、资源、跟踪,并协调其他各个过程

SDE

软件开发环境(Software Development Environment,SDE)是指支持软件的工程化开发和维护而使用的一组软件,由软件工具集和环境集成机制构成。

软件开发环境应支持多种集成机制:如平台集成、数据集成、界面集成、控制集成和过程集成。软件开发环境应支持小组工作方式,并为其提供配置管理,环境的服务可用于支持各种软件开发活动,包括分析、设计、编程、调试和文档等。较完善的软件开发环境通常具有多种功能,例如,软件开发的一致性与完整性维护,配置管理及版本控制,数据的多种表示形式及其在不同形式之间的自动转换,信息的自动检索与更新,项目控制和管理,以及对开发方法学的支持。软件开发环境具有集成性、开放性、可裁减性、数据格式一致性、风格统一的用户界面等特性,因而能大幅度提高软件生产率。

软件开发环境应支持多种集成机制,根据功能的不同,集成机制可以划分为环境信息库、过程控制与消息服务器、环境用户界面三部分:

  • 环境信息库。环境信息库是软件开发环境的核心,用以存储与系统开发有关的信息,并支持信息的交流与共享。环境信息库中主要存储两类信息,一类是开发过程中产生的有关被开发系统的信息,例如分析文档、设计文档和测试报告等;另一类是环境提供的支持信息,如文档模板、系统配置、过程模型和可复用构件等。
  • 过程控制与消息服务器。过程控制与消息服务器是实现过程集成和控制集成的基础。过程集成时按照具体软件开发过程的要求进行工具的选择与组合,控制集成使各工具之间进行并行通信和协同工作。
  • 环境用户界面。环境用户界面包括环境总界面和由它实行统一控制的各环境部件及工具的界面。统一的、具有一致性的用户界面是软件开发环境的重要特征,是充分发挥环境的优越性、高效地使用工具并减轻用户的学习负担的保证。

管理

软件工程管理集成过程管理和项目管理,包括以下 6 个方面:启动和范围定义、软件项目计划、软件项目实施、评审和评价、关闭、软件工程度量。

生命周期

根据传统的软件生命周期方法学,可以把软件生命周期划分为软件定义、软件开发、软件运行、软件维护。

软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程成为软件生存周期。一个完整的软件生存周期是以需求为出发点,从提出软件开发计划的那一刻开始,直到软件在实际应用中完全报废为止。软件生存周期的提出了是为了更好地管理、维护和升级软件,其中更大的意义在于管理软件开发的步骤和方法。

软件生存周期模型又称软件开发模型(Software Develop Model)或软件过程模型(Software Process Model),它是从某个特定角度提出的软件过程的简化描述。

可参考软考高级之系统架构师系列之软件开发模型

维护

软件维护工作包括多种类型:

  • 改正性维护:也叫正确性维护,改正在系统运行(使用)阶段已发生而系统测试阶段尚未发现的错误。软件测试不可能发现系统中所有潜在的错误,程序在使用过程中还可能发生错误,诊断和更正这些错误的过程称为改正性维护
  • 适应性维护:指使应用软件适应信息技术变化和管理需求变化而进行的修改。在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护
  • 完善性维护:指扩充功能和改善性能而进行的修改。在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性
  • 预防性维护:为了适应未来的软硬件环境的变化(为了改进软件未来的可维护性或可靠性,或为了给未来的改进提供更好的基础而对软件进行修改),应主动增加预防性的新功能,以使应用系统适应各类变化而不被淘汰。目的是检测并更正软件产品中的潜在错误,防止它们成为实际错误

逆向工程

逆向工程与重构工程是目前预防性维护采用的主要技术。所谓软件的逆向工程就是分析已有的程序,寻求比源代码更高级的抽象表现形式。一般认为,凡是在软件生命周期内将软件某种形式的描述转换成更为抽象形式的活动都可称为逆向工程。

逆向工程导出的信息可分为如下4个抽象层次:

  • 实现级:包括程序的抽象语法树、符号表、过程设计表示等信息
  • 结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、数据结构等
  • 功能级:包括反映程序段功能及程序段之间关系的信息,如数据和控制流模型
  • 领域级:包括反映程序分量或程序与应用领域概念之间对应关系的信息,如实体关系模型

上述信息的抽象级别越高,它与代码的距离就越远,通过逆向工程恢复的难度亦越大,而自动工具支持的可能性相对变小,要求人参与判断和推理的工作增多。

应用系统构建中可以采用多种不同的技术,逆向工程就是分析已有的程序,寻求比源代码更高级的抽象表现形式,在软件生命周期内将软件某种形式的描述转换成更为抽象形式的活动;重构是指在同一抽象级别上转换系统描述形式;设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计的信息;再工程是在逆向工程所获信息的基础上修改或重构已有的系统,产生系统的一个新版本。

复杂度

软件源码复杂度度量方法主要有三种:

  • 代码行方法:最简单,该方法认为,代码行越多,软件越容易产生漏洞
  • Helstead方法:思路是根据程序中可执行代码行的操作符和操作数的数量来计算程序的复杂性。操作符和操作数的量越大,程序结构就越复杂
  • McCabe方法:环路复杂度,用来定量度量程序的逻辑复杂度

McCabe

托马斯·麦克凯提出的一种基于程序控制流的复杂性度量方法,又称环路度量,循环复杂度(Cyclomatic Complexity),条件复杂度,圈复杂度。它认为程序的复杂性很大程度上取决于程序图的复杂性。单一的顺序结构最为简单,循环和选择所构成的环路越多,程序就越复杂。

McCabe度量法以图论为工具,先画出程序图,然后用该图的环路数作为程序复杂性的度量值。程序图是退化的程序流程图,即把程序流程图的每一个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫做程序图。

根据图论,在一个强连通的有向图G中,环的个数V(G)计算公式:

V(G) = m − n + 2

V(G)是有向图G中环路数,m是图G中弧数,n是图G中结点数,p是图G中强连通分量个数。在一个程序中,从程序图的入口点总能到达图中任何一个结点,因此,程序总是连通的,但不是强连通的。为了使图成为强连通图,从图的出口点到入口点加一条用虚线表示的有向边,使图成为强连通图。这样就可以使用上式计算环路复杂性。

另有一种计算公式:环路复杂度 = 闭环个数 + 1

McCabe复杂度包括:圈复杂度、基本复杂度、模块设计复杂度、设计复杂度、集成复杂度、行数、规范化复杂度、全局数据复杂度、局部数据复杂度、病态数据复杂度。

工具

软件系统工具的种类繁多,很难有统一的分类方法。通常可以按软件过程活动将软件工具分为软件开发工具、软件维护工具、软件管理和软件支持工具。

  • 软件开发工具:需求分析工具、设计工具、编码与排错工具。
  • 软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
  • 软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。

参考

相关文章:

软考高级之系统架构师之软件工程

软件工程 面向对象设计原则 单一职责:设计目的单一的类开闭原则;对扩展开放,对修改关闭里氏替换:子类可以替代父类依赖倒置:要依赖于抽象,而不是实现。要针对接口编程,不要针对实现编程接口隔…...

SpringBoot集成与应用Neo4j

文章目录 前言集成使用定义实体配置定义Repository查询方法方式一:Query方式二:Cypher语法构建器方式三:Example条件构建器方式四:DSL语法 自定义方法自定义接口继承自定义接口实现自定义接口neo4jTemplateNeo4jClient 自定义抽象…...

做人,不一定要风风光光,但一定要堂堂正正。处事,不一定要尽善尽美,但一定要问心无愧。

做人,不一定要风风光光,但一定要堂堂正正。处事,不一定要尽善尽美,但一定要问心无愧。以真诚的心,对待身边的每一个人。以感恩的心,感谢拥有的一切。 未来,不是穷人的天下,也不是富人…...

51单片机实验:数码管动态显示00-99

1、实验要求 利用STC89C52RC单片机开发板实现:使用2位数码管循环显示00-99,每次间隔1s,并且当计数到20时,则蜂鸣器鸣响1次。 2、实验分析 程序实现分析: 1、定义数码管位选引脚(P2.4、P2.5、P2.6、…...

【教3妹学编程-java实战5】结构体字段赋值的几种方式

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 2哥 :3妹,考考你,你知道java结…...

阿里蚂蚁淘宝等多次一面面试面经

一面采用电话面试笔试链接做算法题(可能开视频)的形式 蚂蚁第一次: 自我介绍 技术一般使用开源技术还是自己研发 开源spring cloud等 流水线用来做什么 用户是什么人 应用场景 是toB的对吧 学到的最前沿的技术有哪些 gateway全局权限…...

UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解

目录 0 引言1 全局对象(全局变量)1.1 游戏实例 GameInstance1.1.1 介绍1.1.2 使用 GameInstance 1.2 玩家控制器 PlayerController1.3 游戏世界类 UWorld 🙋‍♂️ 作者:海码007📜 专栏:UE虚幻引擎专栏&…...

c#使用ExifLib库提取图像的相机型号、光圈、快门、iso、曝光时间、焦距信息等EXIF信息

近期公司组织了书画摄影比赛,本人作为摄影爱好者,平时也会拍些照片,这次比赛当然不能错过。为了提高获奖概率,选了19张图像作为参赛作品。但是,摄影作品要提交图像的光圈、曝光时间等参数。一两张还可以通过电脑自带软…...

C++入门05—指针

1. 指针的基本概念 指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示 可以利用指针变量保存地址 2. 指针变量的定义和使用 指针变量定义语法: 数据类型 * 变量名; 示例: …...

Go学习第十六章——Gin文件上传与下载

Go web框架——Gin文件上传与下载 1. 文件上传1.1 入门案例(单文件)1.2 服务端保存文件的几种方式SaveUploadedFileCreateCopy 1.3 读取上传的文件1.4 多文件上传 2. 文件下载2.1 快速入门2.2 前后端模式下的文件下载2.3 中文乱码问题 1. 文件上传 1.1 …...

2.MySQL的调控按钮——启动选项和系统变量

2.MySQL的调控按钮——启动选项和系统变量 1.启动选项和配置文件1.1 在命令行上使用选项1.2 配置文件中使用选项1.2.1 配置文件路径1.2.2 配置文件的内容1.2.3 特定 MySQL 版本的专用选项组1.2.4 配置文件的优先级1.2.5 同一个配置文件中多个组的优先级1.2.6 defaults-file 的使…...

故障诊断模型 | Maltab实现CNN卷积神经网络故障诊断

文章目录 效果一览文章概述模型描述源码设计参考资料效果一览 文章概述 故障诊断模型 | Maltab实现CNN卷积神经网络故障诊断 模型描述 卷积神经网络(convolutional neural network)是具有局部连接、权重共享等特性的深层前馈神经网络,最早主要是用来处理图像信息。 相比于全…...

qt高精度定时器的使用停止线程应用

##线程停止 //线程停止应用 public: explicit WorkerThread(QObject *parent 0) :QThread(parent), m_bStopped(false){qDebug() << "Worker Thread : " << QThread::currentThreadId();}~WorkerThread(){stop();quit();wait();}void stop() {qDebug()…...

Spring Boot Actuator 介绍

Spring Boot Actuator是什么 Spring Boot Actuator 模块提供了生产级别的功能&#xff0c;比如健康检查&#xff0c;审计&#xff0c;指标收集&#xff0c;HTTP 跟踪等&#xff0c;帮助我们监控和管理Spring Boot 应用。 这个模块是一个采集应用内部信息暴露给外部的模块&…...

【MATLAB】安装Psychtoolbox

目录 一、下载Psychtoolbox工具包 1. 一个是这个ZTP文件 2. 分别下载 Subversion 1.7.x command-line client 和 gstreamer.freedesktop.org 二、解压工具包&#xff0c;保存至同一文件 三、安装到matlab 1. 安装psychtoolbox 2. 检查是否安装成功 一、下载Psychtoolbox…...

【Python机器学习】零基础掌握GradientBoostingClassifier集成学习

什么能有效地解决分类问题,特别是在数据复杂、特征多样的情况下? 面对这个问题,许多人可能会想到复杂的神经网络或深度学习方法。然而,有一种称为“梯度提升分类器”(Gradient Boosting Classifier)的算法,以其高准确度、灵活性和易用性赢得了大量用户的青睐。 假设在…...

RFNet模型数据集采集处理流程

文章目录 cityscapes数据集内容如何标注数据得到标签图片 cityscapes数据集内容 训练模型的时候下载了cityscapes里的disparity、gtFine和leftImg8bit。 共5000张图片。2975张训练&#xff0c;500张验证&#xff0c;1525test。每个目录下都有train、test和val的子目录,这些子…...

sql-50练习题6-10

sql练习题6-10题 前言数据库表结构介绍学生表课程表成绩表教师表 0-6 查询"李"姓老师的数量0-7 查询学过"李四"老师授课的同学的信息0-8 查询没学过"李四"老师授课的同学的信息0-9 查询学过编号为"01"并且也学过编号为"02"的…...

【刷题宝典NO.1】

Nim游戏 https://leetcode.cn/problems/nim-game/description/ 你和你的朋友&#xff0c;两个人一起玩 Nim 游戏&#xff1a; 桌子上有一堆石头。 你们轮流进行自己的回合&#xff0c; 你作为先手 。 每一回合&#xff0c;轮到的人拿掉 1 - 3 块石头。 拿掉最后一块石头的人…...

如何在深度学习领域取得个人的成功

要在深度学习领域取得个人的成功&#xff0c;可以考虑以下建议&#xff1a; 学习深度学习的基础知识&#xff1a;首先&#xff0c;建立坚实的深度学习基础知识是非常重要的。你可以学习深度学习的基本概念、神经网络的原理、常用的深度学习框架&#xff08;如TensorFlow、PyTor…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...