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

计算机网络(六)应用层

6.1、应用层概述

我们在浏览器的地址中输入某个网站的域名后,就可以访问该网站的内容,这个就是万维网WWW应用,其相关的应用层协议为超文本传送协议HTTP

用户在浏览器地址栏中输入的是“见名知意”的域名,而TCP/IP的网际层使用IP地址来表示目的主机,从域名到IP地址的装转换,由属于应用层范畴的域名系统DNS,在后台帮用户完成

如上是一些常见的应用,我们将通过如上应用学习应用层

总结


6.2、客户/服务器方式(C/S方式)和对等方式(P2P方式)

概念

客户/服务器方式(C/S方式)

如上图:主机A正在运行的客户程序称为客户进程,简称为客户。运行客户程序的主机A称为客户计算机,但有时也称为客户。主机B正在运行的服务器程序称为服务器进程,简称为服务器。运行客户程序的主机A称为服务器计算机,但有时也称为服务器。

对等方式(P2P方式)

如上图所示,主机CDEF运行着同一种P2P程序,其中EF,ED和CE互为对等方。举例可以理解为,E的P2P进程正在从F下载文件,并且为D的P2P进程提供下载服务

总结


6.3、动态主机配置协议DHCP

概念

  • 互联网广泛使用的动态主机配置协议 DHCP (Dynamic Host Configuration Protocol) 提供了即插即用连网 (plug-and-play networking) 的机制。

  • 这种机制允许一台计算机加入新的网络和获取 IP 地址,而不用手工配置。

DHCP的作用

在没有DHCP时,我们只有手动给网络中各主机正确配置网络的相关配置信息,才能正常访问Web服务器。但如果要配置的主机数很多,工作量大,就很容易出错

如果我们给网络中添加一台DHCP服务器并配置相关信息,那么主机开机时,就会向DHCP服务器请求自己的网络配置信息自动获取自己的网络配置,这就减少很多工作量

DHCP的工作过程

DHCP 使用客户 - 服务器方式

  • 需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文 (DHCP DISCOVER),这时该主机就成为 DHCP 客户。

  • 本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。

  • DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池 (address pool) 中取一个地址分配租用给该计算机。DHCP服务器的回答报文叫做提供报文(DHCP OFFER)。

DHCP 工作方式

  • DHCP 使用客户-服务器方式,采用请求/应答方式工作。

  • 在DHCP服务器上运行DHCP服务器进程,简称DHCP服务器。在用户主机运行DHCP客户进程,简称DHCP客户

  • DHCP属于应用层协议,其基于 UDP 工作:DHCP报文在运输层会被封装成为UDP用户数据报。DHCP 服务器运行在 67 号端口, DHCP客户运行在 68 号端口。

DHCP交互过程

DHCP客户端启用DHCP后广播发送DHCP发现报文(DHCP DISCOVER)

  • 事务ID
  • DHCP客户端的MAC地址

封装该报文的IP数据报的源IP地址为0.0.0.0,这是因为主机目前还未分配到IP地址,因此使用该地址代替

目的IP地址为广播地址255.255.255.255,因此该网络的所有设备都会收到该IP数据报。之所以广播发送,是因为主机现在并不知道网络中有哪几个DHCP服务器

对于DHCP客户收到DHCP发现报文后,其应用层没有监听该UDP用户数据报目的端口67进程,因此无法交付DHCP发现报文,只能丢弃。

由于DHCP服务器应用层始终运行DHCP服务器进程,因此会接受DHCP发现报文并做出响应。DHCP服务器收到DHCP发现报文后,层层解封,解封出封装有DHCP发现报文的UDP用户数据报。

DHCP服务器根据DHCP发现报文中封装的DHCP客户端的MAC地址来查找自己的数据库,如果查到匹配信息,则使用这些配置信息来构建并发送DHCP提供报文,如果没有则采用默认配置信息来构建报文并发送

DHCP服务端将广播发送DHCP提供报文(DHCP OFFER)

  • 事务ID
  • 配置信息:IP地址:DHCP服务器从自己的IP地址池中挑选待租用给主机的IP地址(使用ARP来确保所选IP地址未被网络中其他主机占用),子网掩码,地址租期,默认网关,DNS服务器

源IP地址:发送DHCP提供报文的DHCP服务器的IP

目的地址:因为目的主机还没分配到IP,所以使用广播地址

对于DHCP客户收到DHCP提供报文后,由于其应用层始终运行DHCP客户进程,因此会接受DHCP提供报文并做出响应。DHCP客户根据DHCP提供报文中的事务ID来判断该DHCP提供报文是否是自己的所请求的报文,若相等则接收

对于DHCP服务器收到DHCP提供报文后,其应用层没有监听该UDP用户数据报目的端口68进程,即DHCP客户进程,因此无法交付DHCP提供报文,只能丢弃。

注意:DHCP服务器从自己的IP地址池中挑选待租用给主机的IP地址时,使用ARP确保所选IP地址未被网络其他主机占有

在本例中,DHCP客户会收到两个DHCP服务器发来的DHCP提供报文,DHCP客户从中选择一个,一般选择先到的,并向所选择的DHCP服务器发送DHCP请求报文

DHCP客户端将广播发送DHCP请求报文(DHCP REQUEST)

  • 事务ID
  • DHCP客户端的MAC地址
  • 接收的租约中的IP地址
  • 提供此租约的DHCP服务器端的IP地址

源地址:0.0.0.0,因为此时DHCP客户才从多个DHCP服务器中挑选一个作为自己的DHCP服务器。DHCP客户首先要征得该服务器的同意,之后才能正式使用向该DHCP服务器租用的IP地址

目的地址:广播地址,这样可以一次性向所有DHCP服务器发送DHCP请求报文,来告知它们是否请求它们作为自己的DHCP服务器

在本例中,假设DHCP客户端选择DHCP服务器1作为自己的DHCP服务器,DHCP服务器1接受该请求,于是DHCP服务器1给DHCP客户端发送DHCP确认报文

源地址:DHCP服务器1的IP地址

目的地址:广播地址

DHCP客户收到该报文后就可以使用租用的IP地址

注意:DHCP客户在接收DHCP确认报文前使用ARP确保所选IP地址未被网络其他主机占有

DHCP NACK:DHCP否认报文

DHCP中继代理

该网络中主机发送DHCP发现报文时,会被路由器丢弃

 ​​​​​​

使用DHCP中继代理是因为我们不用给每一个网络上都设置一个DHCP服务器,这样会使DHCP服务器的数量太多

总结


6.4、域名系统DNS

概述

域名相比IP地址更容易记忆

在因特网中,用户主机只需要在浏览器中输入某web服务器域名便可访问该服务器所提供的内容

我们可以通过ping命令来观察用户主机和web服务器之间的连通性。

虽然我们ping的是域名,但实际ping的是IP地址,也就是说用户主机把域名转换为了IP地址

对于大多数网络应用,我们可以用简便易记的域名访问目的web服务器,这得益于DNS

我们在浏览器地址栏中输入某web服务器域名时,用户主机会首先在自己的DNS高速缓存中查找该域名所对应的IP地址,如果没有找到则向网络中某台DNS服务器查询。

DNS服务器中存储有域名和IP地址映射关系的数据库,当DNS服务器收到DNS查询报文后,在其数据库中进行查询,然后把查询结果发送给用户主机。

此时用户中主机的浏览器可以通过Web服务器的IP地址对其访问了

名称相同的域名其等级未必相同

域名解析过程

习题

总结


6.5、文件传送协议FTP

概念

文件传送协议FTP的应用

FTP采用C/S方式(客户/服务器方式)

FTP客户计算机可将各种类型的文件上传到FTP服务器计算机

FTP客户计算机也可以从FTP服务器计算机下载文件

我们可以在FTP服务器计算机使用第三方FTP服务器软件或者其他软件创建FTP服务器

如上图:我们可以在Windows系统中使用其自带的FTP服务器功能创建一个FTP服务器站点。

我们可以在浏览器中通过该IP地址访问FTP服务器

注意:此处使用ftp协议而非http协议

也可以通过Windows中命令行工具通过该地址访问FTP服务器

 

也可以通过第三方软件访问ftp服务器

FTP基本工作原理

主动模式

FTP服务器监听熟知端口(端口号为 21),使客户进程能够连接上。

首先,FTP客户随机选择一个临时端口号与其建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送FTP的相关控制命令(这条连接是FTP客户与服务器之间的命令通道)

FTP服务器使用自己的熟知端口号20与FTP客户的另一个临时端口建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送数据

被动模式

注意两种模式的控制连接在整个会话期间保持打开状态,而数据连接单次数据传输完毕后就关闭

习题

总结


6.6、电子邮件

概念  

邮件发送和接收过程

简单邮件传送协议SMTP(Simple Mail Transfer Protocol)的基本工作原理

SMTP客户与服务器之间通过命令与应答的交互方式实现SMT客户发送邮件给SMTP服务器 

应答代码220后可能有描述信息

当服务器邮件身份无效时,接受方发回其他代码,如421表示服务不可用 

电子邮件的信息格式

Cc:抄送人,其可看可不看可回可不回邮件

邮件读取

基于万维网的电子邮件

习题

总结


6.7、万维网WWW

概念

概述 

  • 万维网 WWW (World Wide Web) 并非某种特殊的计算机网络,而是一个大规模的、联机式的信息储藏所

  • 万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。这种访问方式称为“链接”。

万维网的工作方式

  • 万维网以客户 - 服务器方式工作。

  • 浏览器就是在用户计算机上的万维网客户程序。驻留着万维网文档的计算机运行着服务器程序,这个计算机也称为万维网服务器

  • 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档

  • 在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。

万维网应用举例

访问网页

怎样标志分布在整个互联网上的万维网文档?

万维网的文档

 我们可以将网页另存下来,保存结果是一个HTML的文件和一个文件夹,文件夹内容如下:

由这些文件编写的万维网文档由浏览器内核负责解释和渲染

接下来我们将结合这些文件组合成一个完善的网页

如图所示,这是一个html文档,当我们打开这个文件时,出现一个页面

 

我们将css文件和html文件组合在一起,这个网页就变得好看一些了

此时我们在html文件中添加一个按钮,并创建一个js文件添加时间处理函数,页面就有了一个新功能了 

当我们点击这个按钮时,触发功能

超文本传输协议HTTP(Hyper Transfer Protocol)

概念和传输过程

  • 在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议 HTTP (HyperText Transfer Protocol)。

  • HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。

  • 每个万维网网点都有一个服务器进程,它不断地监听 TCP 的端口 80,以便发现是否有浏览器向它发出连接建立请求。

  • 一旦监听到连接建立请求并建立了 TCP 连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。

  • 最后,TCP 连接就被释放了。

RTT:请求和响应所耗费的时间

在HTTP/1.1持续连接的情况下,只有服务器有相关文档,浏览器不同的页面也可以发送请求报文和接收响应报文

HTTP报文格式

HTTP请求报文格式

URL:统一资源定位符字段,也就是网址

HTTP响应报文格式

短语:对状态码的简单描述

如上图所示:浏览器并不会直接显示相应报文,而是以一种人性化的方式显示

使用Cookie在服务器上记录用户信息

万维网缓存与代理服务器

如果该请求有缓存

如果该请求没有缓存

若web缓存的命中率比较高,则会大大减小了该链路上的通信量,因而减少了访问因特网的时延

原始服务器通常会为每个响应的对象设定一个修改时间字段和一个有效日期字段。代理服务器依该字段判断存储在其中的文档是否过期

现有校园网一主机请求一文档

若代理服务器中文档未过期时,文档会发给主机

若代理服务器中文档过期并且代理服务器的文档和原始服务器的文档一致,原始服务器则给代理服务器发送不包含实体主体的响应

若代理服务器中文档过期并且代理服务器的文档和原始服务器的文档不一致,原始服务器则给代理服务器发送封装有该文档的响应报文

习题

总结

相关文章:

计算机网络(六)应用层

6.1、应用层概述 我们在浏览器的地址中输入某个网站的域名后,就可以访问该网站的内容,这个就是万维网WWW应用,其相关的应用层协议为超文本传送协议HTTP 用户在浏览器地址栏中输入的是“见名知意”的域名,而TCP/IP的网际层使用IP地…...

上海亚商投顾:沪指探底回升微涨 机器人概念股午后爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 市场全天探底回升,沪指盘中跌超1.6%,创业板指一度跌逾3%,午后集体拉升翻红…...

conda相关操作

conda 是一个开源的包管理和环境管理工具,主要用于 Python 和数据科学领域。它可以帮助用户安装、更新、删除和管理软件包,同时支持创建和管理虚拟环境。以下是关于 conda 的所有常见操作: 1. 安装 Conda Conda 通常通过安装 Anaconda 或 Mi…...

使用TCP协议实现智能聊天机器人

实验目的与要求 本实验是程序设计类实验,要求使用原始套接字编程,掌握TCP/IP协议与网络编程Sockets通信模型,并根据教师给定的任务要求,使用TCP协议实现智能聊天机器人。 (1)熟悉标准库socket 的用法。 …...

PHP二维数组去除重复值

Date: 2025.01.07 20:45:01 author: lijianzhan PHP二维数组内根据ID或者名称去除重复值 代码示例如下: // 假设 data数组如下 $data [[id > 1, name > Type A],[id > 2, name > Type B],[id > 1, name > Type A] // 重复项 ];// 去重方法 $dat…...

2025年01月11日Github流行趋势

项目名称:xiaozhi-esp32 项目地址url:https://github.com/78/xiaozhi-esp32项目语言:C历史star数:2433今日star数:321项目维护者:78, MakerM0, whble, nooodles2023, Kevincoooool项目简介:构建…...

备战蓝桥杯 队列和queue详解

目录 队列的概念 队列的静态实现 总代码 stl的queue 队列算法题 1.队列模板题 2.机器翻译 3.海港 双端队列 队列的概念 和栈一样,队列也是一种访问受限的线性表,它只能在表头位置删除,在表尾位置插入,队列是先进先出&…...

IT面试求职系列主题-Jenkins

想成功求职,必要的IT技能一样不能少,先说说Jenkins的必会知识吧。 1) 什么是Jenkins Jenkins 是一个用 Java 编写的开源持续集成工具。它跟踪版本控制系统,并在发生更改时启动和监视构建系统。 2)Maven、Ant和Jenkins有什么区别…...

Vue篇-06

1、路由简介 vue-rooter:是vue的一个插件库,专门用来实现SPA应用 1.1、对SPA应用的理解 1、单页 Web 应用(single page web application,SPA)。 2、整个应用只有一个完整的页面 index.html。 3、点击页面中的导航链…...

mysql binlog 日志分析查找

文章目录 前言一、分析 binlog 内容二、编写脚本结果总结 前言 高效快捷分析 mysql binlog 日志文件。 mysql binlog 文件很大 怎么快速通过关键字查找内容 一、分析 binlog 内容 通过 mysqlbinlog 命令可以看到 binlog 解析之后的大概样子 二、编写脚本 编写脚本 search_…...

ubuntu 配置OpenOCD与RT-RT-thread环境的记录

1.git clone git://git.code.sf.net/p/openocd/code openocd 配置gcc编译环境 2. sudo gedit /etc/apt/source.list #cdrom sudo apt-get install git sudo apt-get install libtool-bin sudo apt-get install pkg-config sudo apt-install libusb-1.0-0-dev sudo apt-get…...

双系统解决开机提示security Policy Violation的方法

最近,Windows系统更新后,发现电脑开机无法进入桌面,显示“Verifiying shim SBAT data failed: security Policy Violation; So mething has gone seriously Wrong: SBAT self-check failed: Security Policy Violation”的英文错误信息。为了…...

附加共享数据库( ATTACH DATABASE)的使用场景

附加共享数据库(使用 ATTACH DATABASE)的功能非常实用,通常会在以下几种场景下需要用到: 1. 跨数据库查询和分析 场景: 你的公司有两个独立的数据库: 一个存储了学生信息 (school.db)一个存储了员工信息 …...

matlab的绘图的标题中(title)添加标量以及格式化输出

有时候我们需要在matlab绘制的图像的标题中添加一些变量,这样在修改某些参数后,标题会跟着一块儿变。可以采用如下的方法: x -10:0.1:10; %x轴的范围 mu 0; %均值 sigma 1; %标准差 y normpdf(x,mu,sigma); %使用normpdf函数生成高斯函数…...

2、第一个GO 程序

引言 接下里我们就用Go Land 工具,开发第一个GO程序。大家也可以用其他的开发工具,例如 Vs Code 1、新建项目 第一个是选择你的程序保存位置 (不要有中文)。 第二个是你的Go的编译器的安装地址。 选择完毕后,就点击 …...

【Linux-多线程】-线程安全单例模式+可重入vs线程安全+死锁等

一、线程安全的单例模式 什么是单例模式 单例模式是一种“经典的,常用的,常考的”设计模式 什么是设计模式 IT行业这么火,涌入的人很多.俗话说林子大了啥鸟都有。大佬和菜鸡们两极分化的越来越严重,为了让菜鸡们不太拖大佬的后…...

00000007_C语言设计模式

C语言设计模式 尽管 C 语言并不直接支持面向对象编程,但通过结构体和函数指针的灵活运用,我们依然可以实现多种经典的设计模式。 1. 工厂模式 1.1 工厂方法的定义与实现 工厂模式通过统一的接口创建对象,客户端无需知道具体的创建逻辑。 代…...

探索数据存储的奥秘:深入理解B树与B+树

key value 类型的数据红黑树(最优二叉树,内存最优),时间复杂度:O(logn),调整方便;一个结点分出两个叉B树一个节点可以分出很多叉数据量相等的条件下:红黑树的层数很高&am…...

Web渗透测试之XSS跨站脚本之JS输出 以及 什么是闭合标签 一篇文章给你说明白

目录 闭合标签 XSS之js输出 闭合标签 封闭标签 达到 让标签值不当成 一个属性值来展示 从而达到xss注入的效果 "> 为了想办法闭合前面的标签,不用也行成功率高一些 攻击方法 "><script>confirm(1)</script>, 其中 "> 我们称之为完成闭合…...

EasyExcel的应用

一、简单使用 引入依赖&#xff1a; 这里我们可以使用最新的4.0.2版本&#xff0c;也可以选择之前的稳定版本&#xff0c;3.1.x以后的版本API大致相同&#xff0c;新的版本也会向前兼容&#xff08;3.1.x之前的版本&#xff0c;部分API可能在高版本被废弃&#xff09;&…...

VS Code的设置功能以及多层级的设置方式与解密

VS Code的Settings功能为用户提供了极大的灵活性和便利性&#xff0c;使得用户可以根据自己的需求和偏好来定制编辑器的行为和外观。 Settings 可以实现的具体功能 VS Code的设置项非常丰富&#xff0c;涵盖了各个方面&#xff0c;包括但不限于&#xff1a; 编辑器选项&…...

UI自动化测试框架playwright--初级入门

一、背景&#xff1a;UI自动化的痛点&#xff1a; 1、设计脚本耗时&#xff1a; 需要思考要如何模拟用户的操作&#xff0c;如何触发页面的事件&#xff0c;还要思考如何设计脚本&#xff0c;定位和操作要交互的元素、路径、位置&#xff0c;再编写代码逻辑&#xff0c;往复循…...

SQL多表联查、自定义函数(字符串分割split)、xml格式输出

记录一个报表的统计&#xff0c;大概内容如下&#xff1a; 多表联查涉及的报表有&#xff1a;房间表、买家表、合同表、交易表、费用表、修改记录表 注意&#xff1a;本项目数据库使用的是sqlserver&#xff08;mssql&#xff09;&#xff0c;非mysql。 难点1:业主信息&#…...

Fast API使用

相关的代码上都有注释&#xff0c;其中前端代码是用来提交表单的 此代码进行了跨域处理&#xff0c;允许前端直接提交表单&#xff0c;并正常返回 完整代码&#xff1a; from typing import Unionfrom fastapi import Header, Cookie from pydantic import BaseModel, Field f…...

LLM - Llama 3 的 Pre/Post Training 阶段 Loss 以及 logits 和 logps 概念

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145056912 Llama 3 是 Meta 公司发布的开源大型语言模型&#xff0c;包括具有 80 亿和 700 亿参数的预训练和指令微调的语言模型&#xff0c;支持…...

MySQL 中删除重复数据 SQL 写法

要在 MySQL 中删除重复的数据并只保留一条&#xff0c;可以使用下面的方法&#xff08;要用的时候直接复制小改下条件和表名称即即可&#xff09; 方法一&#xff1a;使用 left join 子查询删除重复数据(推荐) 温馨提示&#xff1a;本人在 500w 数据下执行此 SQL 耗费 15s-30s…...

docker minio镜像arm64架构

minio版本为RELEASE.2021-09-03T03-56-13Z 原项目信创改造&#xff0c;服务器资源改为了arm64架构&#xff0c;统信uos docker镜像库内没有对应的minio镜像&#xff0c;当前镜像为拉取源码后&#xff0c;自编译打包镜像&#xff0c;亲测可用。 使用方式 将tar包导入到服务器…...

VUE3 监听器(watch)

在 Vue 3 中&#xff0c;监听器&#xff08;watch&#xff09;是用来观察响应式数据的变化&#xff0c;并在数据发生变化时执行相应操作的机制。watch 主要用于响应式数据变化时的副作用处理&#xff0c;比如异步操作、数据更新等。 1. 基础使用 在 Vue 3 中&#xff0c;watc…...

CAPL如何设置TCP/IP传输层动态端口范围

在TCP/IP协议中,应用程序通过传输层协议TCP/UDP传输数据,接收方传输层收到数据后,根据传输层端口号把接收的数据上交给正确的应用程序。我们可以简单地认为传输层端口号是应用程序的标识,这就是为什么我们说应用程序在使用TCP/IP协议通信时要打开传输层端口号或者绑定端口号…...

随记:有关Springboot项目中的时间格式实现的几种方式

1.注解 JsonFormat DateTimeFormat import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.format.annotation.DateTimeFormat;import java.time.LocalDateTime;public class Event {// 序列化和反序列化时生效JsonFormat(pattern "yyyy-MM…...

网站备案作用/百度极速版下载

这题目的问题是 最后要加加 ,supplier.SName 虽然sid应该已经能分出行了 应该已经是不同的了 但是以前我写join的时候 都是要把所有的 除了count的列都group 这题是要写 distinct...

字体网站/云南省最新疫情情况

经过查阅资料和自己的理解整理出来的&#xff0c;欢迎大家指教。Awake和Start对比awake比start先执行。当有多个类的时候&#xff0c;所有类的awake执行完了才会执行start。awake里面一般放初始化的属性值&#xff0c;获取组件等。start里面可以处理一些只执行一次的功能。比如…...

重庆家居网站制作公司/百度移动端模拟点击排名

二分查找作为程序员的一项基本技能&#xff0c;是面试官最常使用来考察程序员基本素质的算法之一&#xff0c;也是解决很多查找类题目的常用方法&#xff0c;它可以达到 的时间复杂度。 前提条件 必须有序。一般是从小到大有序。 坑点 计算中间值导致的数据越界。一般我们…...

苹果电脑用什么软件做网站/网络推广网上营销

分类简介: 阅读他人的代码&#xff0c;可以学到很多东西&#xff0c;从思路&#xff0c;到方案&#xff0c;一系列都可以在项目代码中体现&#xff0c;所以&#xff0c;此分类专门用于记录阅读过的项目代码&#xff0c;并在上面给出自己的理解和注释 在此&#xff0c;感谢原作者…...

如何用织梦cms做网站/宁波网站快速优化

hover到卡片上的时候&#xff0c;卡片位移&#xff0c;向上移动6px: 1、现在原本布局就是卡片向上有个20的margin&#xff0c;所以hover的时候&#xff0c;直接改变margin-top值为14px,因为父元素的高度是用子元素撑开的&#xff0c;所以导致父元素的兄弟元素的位置也向上跑了&…...

企业解决方案有哪些/贵州seo技术查询

我们基于寄存器的方式已经编写了LED驱动&#xff0c;实现点亮/熄灭LED&#xff0c;但是你有没有发现一个问题&#xff0c;就是假设LED修改了一个GPIO&#xff0c;那么需要对应的修改寄存器代码&#xff0c;非常繁琐&#xff0c;而且随着改板次数增加&#xff0c;那么会带来一个…...