《网络协议》04. 应用层(DNS DHCP HTTP)

news/2024/5/7 20:00:07/文章来源:https://blog.csdn.net/KeepPromise/article/details/134302332

title: 《网络协议》04. 应用层(DNS & DHCP & HTTP)
date: 2022-09-05 14:28:22
updated: 2023-11-12 06:55:52
categories: 学习记录:网络协议
excerpt: 应用层、DNS、DHCP、HTTP(URI & URL,ABNF,报文格式,请求方法,状态码,头部字段,Form 提交,同源策略)。
comments: false
tags:
top_image: /images/backimg/SunsetClimbing.png


网络协议

  • 1:网络互连模型
    • 1.1:请求过程
    • 1.2:网络分层
  • 2:应用层
  • 3:DNS
    • 3.1:域名
    • 3.2:DNS 服务器
    • 3.3:相关命令
  • 4:DHCP
    • 4.1:IP 地址分配
    • 4.2:补充
    • 4.3:相关命令
  • 5:HTTP
    • 5.1:URN & URI & URL
    • 5.2:ABNF
    • 5.3:报文格式
    • 5.4:请求方法
    • 5.5:状态码
    • 5.6:头部字段
      • 5.6.1:请求头字段
      • 5.6.2:响应头字段
    • 5.7:Form 提交
    • 5.8:同源策略


网络协议从入门到底层原理。

1:网络互连模型

为了更好地促进互联网络的研究和发展,国际标准化组织 ISO 在 1985 年制定了网络互连模型:OSI 参考模型(Open System Interconnect Reference Model)。

  • 国际标准:OSI 参考模型(7层)
  • 实际应用:TCP/IP 协议(4层)
  • 学习研究:(5层)

在这里插入图片描述

1.1:请求过程

在这里插入图片描述

1.2:网络分层

在这里插入图片描述

2:应用层

应用层常见的协议有:

  • 超文本传输:HTTP、HTTPS
  • 文件传输:FTP
  • 电子邮件:SMTP、POP3、IMAP
  • 动态主机配置:DHCP
  • 域名系统:DNS

3:DNS

DNS,Domain Name System,域名系统。

  • 利用 DNS 协议,可以将域名解析成对应的 IP 地址
  • DNS 可以基于 UDP 协议,也可以基于 TCP 协议,服务占用 53 端口

在这里插入图片描述

3.1:域名

由于 IP 地址不方便记忆,并且不能表达组织的名称和性质,人们设计出了域名(Domain Name)(比如 baidu.com)。

但实际上,为了能够访问到具体的主机,最终还是得知道目标主机的 IP 地址。

域名申请注册:https://wanwang.aliyun.com/

为什么不直接全程用域名,不用 IP 地址?
IP 地址固定 4 个字节,域名随随便便都至少 10 几个字节,这无疑会增加路由器的负担,浪费流量。

根据级别不同,域名可以分为:

  • 顶级域名(Top-Level Domain,TLD)
  • 二级域名
  • 三级域名

通用顶级域名(General Top-level Domain,gTLD):

.com(公司)
.net(网络机构)
.org(组织机构)
.edu(教育)
.gov(政府部门)
.int(国际组织)
......

国家及地区顶级域名(Country Code Top-level Domain,ccTLD)

.cn(中国)
.jp(日本)
.uk(英国)
......

新通用顶级域名(New Generic Top-level Domain,New gTLD)

.vip
.xyz
.top
.club
.shop
......

二级域名是指顶级域名之下的域名

在通用顶级域名下,它一般指域名注册人的名称。例如 google、baidu、microsoft 等(例:google.com、baidu.com、microsoft.com)

在国家及地区顶级域名下,它一般指注册类别。例如 com、edu、gov、net 等(例:china.com.cn)

在这里插入图片描述

3.2:DNS 服务器

  • 客户端首先会访问最近的一台 DNS 服务器(也就是客户端自己配置的 DNS 服务器)
  • 所有的 DNS 服务器都记录了 DNS 根域名服务器的 IP 地址
  • 上级 DNS 服务器记录了下一级 DNS 服务器的 IP 地址

全球一共 13 台 IPv4 的 DNS 根域名服务器、25 台 IPv6 的 DNS 根域名服务器

3.3:相关命令

Windows 下与 DNS 相关的命令。

查看 DNS 缓存记录
ipconfig /displaydns

清空 DNS 缓存记录
ipconfig /flushdns

解析 DNS
nslookup <域名>

ping 会自动解析 DNS
ping <域名>

4:DHCP

DHCP(Dynamic Host Configuration Protocol),动态主机配置协议。

DHCP 协议基于 UDP 协议,客户端使用 68 端口,服务器使用 67 端口(双方端口都固定)。

DHCP 服务器会从 IP 地址池中,挑选一个 IP 地址 “ 出租 “ 给客户端一段时间,时间到期就回收。

平时家里上网的路由器就可以充当 DHCP 服务器。

4.1:IP 地址分配

IP 地址按照分配方式可以分为:静态 IP 地址、动态 IP 地址。

静态 IP 地址

  • 手动设置
  • 适用场景:服务器、不怎么挪动的台式机等

动态 IP 地址

  • 从 DHCP 服务器自动获取 IP 地址
  • 适用场景:移动设备、无线设备等

分配 IP 的四个阶段

  1. DISCOVER:发现服务器
    • 发广播包(源 IP 是 0.0.0.0,目标 IP 是 255.255.255.255,目标 MAC 是 FF:FF:FF:FF:FF:FF
  2. OFFER:提供租约
    • 服务器返回可以租用的 IP 地址,以及租用期限、子网掩码、网关、DNS 等信息
    • 注意:这里可能会有多个服务器提供租约
  3. REQUEST:选择 IP 地址
    • 客户端选择一个 OFFER,发送广播包进行回应
  4. ACKNOWLEDGE:确认
    • 被选中的服务器发送 ACK 数据包给客户端
    • 至此,IP 地址分配完毕

图示

在这里插入图片描述

4.2:补充

DHCP 服务器可以跨网段分配 IP 地址吗?(DHCP 服务器、客户端不在同一个网段)

  • 可以借助 DHCP 中继代理(DHCP Relay Agent)实现跨网段分配 IP 地址

自动续约

  • 客户端会在租期不足的时候,自动向 DHCP 服务器发送 REQUEST 信息申请续约。

4.3:相关命令

Windows 下相关的命令。

查看 DHCP 相关的详细信息,比如租约过期时间、DHCP 服务器地址等:
ipconfig /all

释放租约:
ipconfig /release

重新申请 IP 地址、申请续约(延长租期):
ipconfig /renew

5:HTTP

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

  • 互联网中应用最广泛的应用层协议之一
  • 设计 HTTP 最初的目的:提供一种发布和接收 HTML 页面的方法,由 URI 来标识具体的资源
  • 发展至今 HTTP 传递的数据格式不仅仅是 HTML,应用非常广泛

HTML( Hyper Text Markup Language),超文本标记语言。用以编写网页

HTTP 版本

  • 1991 年,HTTP/0.9
    • 只支持 GET 请求方法获取文本数据
    • 不支持请求头、响应头等
  • 1996 年,HTTP/1.0
    • 支持 POST、HEAD 等请求方法
    • 支持请求头、响应头等
    • 支持更多种数据类型,不再局限于文本数据
    • 每次请求都需要与服务器建立一个 TCP 连接,请求处理完成后立即断开 TCP 连接
  • 1997 年,HTTP/1.1
    • 最经典、使用最广泛的版本
    • 支持 PUT、DELETE 等请求方法
    • 采用持久连接(Connection: keep-alive),多个请求可以共用同一个 TCP 连接
  • 2015 年,HTTP/2.0
  • 2018 年,HTTP/3.0

HTTP 的标准

由万维网协会(W3C)、互联网工程任务组(IETF)协调制定,最终发布一系列的 RFC(Request For Comments,请求意见稿)

RFC 官网
https://www.rfc-editor.org

报文格式图示

在这里插入图片描述

5.1:URN & URI & URL

URN(Universal Resource Name,统一资源名称)
URL(Uniform Resource Locator,统一资源定位符)
URI(Uniform Resource Identifier,统一资源标识符)

URL 给出资源位于哪里(哪台主机、哪个路径、哪个文件夹)
URl 给出具体某资源的定位路径(从资源自身出发,给出可达的路径)

# URI 语法规则:
scheme://user:pass@host.domain:port/path/filename?id=1#ch1# URL 语法规则:
scheme://host.domain:port/path/filename# 解释:
scheme     定义因特网服务的类型。最常见的类型是 http
user:pass  认证登录信息
host       定义域主机(http 的默认主机是 www)
domain     定义因特网域名,比如 baidu.com
port       定义主机上的端口号(http 的默认端口号是 80)
path       定义服务器上的路径(如果省略,则文档必须位于网站的根目录中)
filename   定义文档/资源的名称
id=1       查询字符串
ch1        片段标识

URL 属于 URI。

URL 编码:URL 中出现的一些特殊字符(比如中文、空格),需要进行 URL 编码。

在浏览器地址栏输入 URL 时,采用 UTF-8 进行编码。

URL 在线编解码
https://tool.oschina.net/encode?type=4

比如:

编码前:https://www.baidu.com/s?wd=百度
编码后:https://www.baidu.com/s?wd=%E7%99%BE%E5%BA%A6

5.2:ABNF

ABNF(Augmented BNF)

  • 是 BNF(Backus-Naur Form,巴科斯 - 瑙尔范式)的修改、增强版
  • 在 RFC 5234 中表明:ABNF 用作 internet 中通信协议的定义语言
  • ABNF 是最严谨的 HTTP 报文格式描述形式,脱离 ABNF 谈论 HTTP 报文格式,往往都是不严谨的

核心规则

在这里插入图片描述

5.3:报文格式

  • 整体格式

在这里插入图片描述

标记解释
/任选一个
*0 个或多个。2 * 表示至少 2 个,3 * 6 表示 3 到 6 个
()组成一个整体
[]可选(可有可无)
  • request-line 格式

在这里插入图片描述

  • status-line 格式

在这里插入图片描述

  • header-filed 格式

在这里插入图片描述

  • message-body 格式

在这里插入图片描述

  • 关于 HTTP 报文格式的定义

RFC 2616 4.HTTP Message(旧)
RFC 7230 3.Message Format(新)

5.4:请求方法

目前有 9 种请求方法。

RFC 7231, section 4: Request methods:描述了 8 种请求方法:
GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE

RFC 5789, section 2: Patch method:描述了 PATCH 方法

  • GET
    常用于读取的操作,请求参数直接拼接在URL的后面(浏览器对URL是有长度限制的)
  • POST
    常用于添加、修改、删除的操作,请求参数可以放到请求体中(没有大小限制)
  • HEAD
    请求得到与GET请求相同的响应,但没有响应体
  • OPTIONS
    用于获取目的资源所支持的通信选项,比如服务器支持的请求方法
  • PUT
    用于对已存在的资源进行整体覆盖
  • PATCH
    用于对资源进行部分修改(资源不存在,会创建新的资源)
  • DELETE
    用于删除指定的资源
  • TRACE
    请求服务器回显其收到的请求信息,主要用于HTTP请求的测试或诊断
  • CONNECT
    可以开启一个客户端与所请求资源之间的双向沟通的通道,它可以用来创建隧道(tunnel)

5.5:状态码

状态码(Status Code)。指示 HTTP 请求完成状态。

在 RFC 2616 10.Status Code Definitions 规范中定义。

状态码可以分为 5 类:

  • 1XX:信息响应
  • 2XX:成功响应
  • 3XX:重定向
  • 4XX:客户端错误
  • 5XX:服务器错误

常见状态码

  • 100 Continue
    请求的初始部分已经被服务器收到,并且没有被服务器拒绝。客户端应该继续发送剩余的请求。如果请求已经完成,就忽略这个响应。
    • 允许客户端发送带请求体的请求前,判断服务器是否愿意接收请求
    • 在某些情况下,如果服务器在不看请求体就拒绝请求时,客户端就发送请求体是不恰当的或低效的
  • 200 OK
    请求成功。
  • 302 Found
    请求的资源被暂时的移动到了由 Location 头部指定的 URL 上。
  • 304 Not Modified
    说明无需再次传输请求的内容,也就是说可以使用缓存的内容。
  • 400 Bad Request
    由于语法无效,服务器无法理解该请求。
  • 401 Unauthorized
    缺乏目标资源要求的身份验证凭证。
  • 403 Forbidden
    服务器端有能力处理该请求,但是拒绝授权访问。
  • 404 Not Found
    服务器端无法找到所请求的资源。
  • 405 Method Not Allowed
    服务器禁止了使用当前 HTTP 方法的请求。
  • 406 Not Acceptable
    服务器端无法提供与 Accept-Charset 以及 Accept-Language 指定的值相匹配的响应。
  • 408 Request Timeout
    服务器想要将没有在使用的连接关闭。
    • 一些服务器会在空闲连接上发送此信息,即便是在客户端没有发送任何请求的情况下
  • 500 Internal Server Error
    所请求的服务器遇到意外的情况并阻止其执行请求。
  • 501 Not Implemented
    请求的方法不被服务器支持,因此无法被处理。
    • 服务器必须支持的方法(即不会返回这个状态码的方法)只有 GET 和 HEAD
  • 502 Bad Gateway
    作为网关或代理角色的服务器,从上游服务器(如tomcat)中接收到的响应是无效的。
  • 503 Service Unavailable
    服务器尚未处于可以接受请求的状态。
    • 通常造成这种情况的原因是由于服务器停机维护或者已超载

5.6:头部字段

头部字段(Header Field)可以分为 4 种类型:

  • 请求头字段(Request Header Fields)
    有关要获取的资源或客户端本身信息的消息头
  • 响应头字段(Response Header Fields)
    有关响应的补充信息,比如服务器本身(名称和版本等)的消息头
  • 实体头字段(Entity Header Fields)
    有关实体主体的更多信息,比如主体长度(Content-Length)或其 MIME 类型
  • 通用头字段(General Header Fields)
    同时适用于请求和响应消息,但与消息主体无关的消息头

5.6.1:请求头字段

====================================================================
头字段名            说明                                  
====================================================================
User-Agent         浏览器的身份标识字符串。
--------------------------------------------------------------------
Host               服务器域名、端口号。
--------------------------------------------------------------------
Date               发送该消息的日期和时间。
--------------------------------------------------------------------
Referer            表示浏览器访问的前一个页面,正是那个页面上的某个链接将浏览器带到了当前所请求的这个页面。
--------------------------------------------------------------------
Content-Type       请求体的类型
--------------------------------------------------------------------
Content-Length     请求体的长度(字节为单位)
--------------------------------------------------------------------
Accept             能够接受的响应内容类型
--------------------------------------------------------------------
Accept-Charset     能够接受的字符集q 的值越大,优先级越高默认为 1.0 (最大值)
--------------------------------------------------------------------
Accept-Encoding    能够接受的编码方式列表
--------------------------------------------------------------------
Accept-Language    能够接受的响应内容的自然语言列表
--------------------------------------------------------------------
Range              仅请求某个实体的一部分。字节偏移以 0 开始
--------------------------------------------------------------------
Origin             发起一个针对跨域资源共享的请求
--------------------------------------------------------------------
Cookie             之前由服务器通过 Set-Cookie 发送的 Cookie
--------------------------------------------------------------------
Connection         该浏览器想要优先使用的连接类型
--------------------------------------------------------------------
Cache-Control      用来指定在这次请求/响应链中的所有缓存机制都必须遵守的指令
====================================================================

5.6.2:响应头字段

====================================================================
头字段名                        说明                                  
====================================================================
Date                           发送该消息的日期和时间
--------------------------------------------------------------------
Last-Modified                  所请求的对象的最后修改日期
--------------------------------------------------------------------
Server                         服务器的名称
--------------------------------------------------------------------
Expires                        指定一个时间,超过该时间则认为此响应已过期
--------------------------------------------------------------------
Content-Type                   响应体的类型
--------------------------------------------------------------------
Content-Encoding               内容所使用的编码类型
--------------------------------------------------------------------
Content-Length                 响应体的长度(字节为单位)
--------------------------------------------------------------------
Content-Disposition            一个可以让客户端下载文件并建议文件名的头部
--------------------------------------------------------------------
Accept-Ranges                  服务器支持哪些种类的部分内容范围
--------------------------------------------------------------------
Content-Range                  这条部分消息是属于完整消息的哪部分
--------------------------------------------------------------------
Access-Control-Allow-Origin    指定哪些网站可以参与到跨域资源共享
--------------------------------------------------------------------
Location                       进行重定向,或者在创建了某个新资源时使用
--------------------------------------------------------------------
Set-Cookie                     返回一个 Cookie 让客户端保存
--------------------------------------------------------------------
Connection                     针对该连接所预期的选项
--------------------------------------------------------------------
Cache-Control                  向从服务器到客户端在内的所有缓存机制告知,它们是否可以缓存这个对象。(单位为秒)
====================================================================

5.7:Form 提交

常用属性

  • action:请求的 URI
  • method:请求方法(GET、POST)
  • enctype:POST 请求时,请求体的编码方式
    • application/x-www-form-urlencoded(默认值)
      用【&】分隔参数,用【=】分隔键和值,字符用 URL 编码方式进行编码
    • multipart/form-data
      文件上传时必须使用这种编码方式

multipart/form-data:参考 RFC 1521

在这里插入图片描述

5.8:同源策略

浏览器有个同源策略(Same-Origin Policy)。它规定默认情况下,AJAX 请求只能发给同源的 URL。

同源是指 3 个相同:协议域名(IP)端口

在这里插入图片描述

img、script、link、iframe、video、audio 等标签不受同源策略的约束。

CORS(Cross-Origin Resource Sharing,跨域资源共享),解决 AJAX 跨域请求的常用方法。

CORS 的实现需要客户端和服务器同时支持。

  • 客户端:基本所有的浏览器都支持
  • 服务器:需要返回相应的响应头(比如 Access-Control-Allow-Origin),告知浏览器这是一个允许跨域的请求

清浊易辨,邪正难辨。

——《冰鉴》(清)曾国藩

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_190724.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

芯片设计工程师必备基本功——《设计与验证:Verilog HDL》

Verilog HDL 作为两大硬件描述语言之一&#xff0c;拥有很大的用户群。据调查&#xff0c;目前美国有 90%左右的 IC 设计人员使用 Verilog. 在中国&#xff0c;大概再 50% 左右的人在使用 Verilog 。 大量高校毕业生和部分软件设计人员正在不断涌入这个领域。要想尽快在 IC设计…

Git版本控制系统之分支与标签(版本)

目录 一、Git分支&#xff08;Branch&#xff09; 1.1 分支作用 1.2 四种分支管理策略 1.3 使用案例 1.3.1 指令 1.3.2 结合应用场景使用 二、Git标签&#xff08;Tag&#xff09; 2.1 标签作用 2.2 标签规范 2.3 使用案例 2.3.1 指令 2.3.2 使用示例 一、Git分支&…

C++——const成员

这里先用队列举例&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <assert.h> using namespace std; class SeqList { public:void pushBack(int data){if (_size _capacity){int* tmp (int*)realloc(a, sizeof(int) * 4);if (tm…

新零售时代,传统便利店如何转型?

在零售批发业&#xff0c;如何降低各环节成本、提高业务运转效率、更科学地了解客户服务客户&#xff0c;是每家企业在激烈竞争中需要思考的课题。 对零售批发企业来说&#xff0c;这些问题或许由来已久&#xff1a; &#xff08;1&#xff09;如何对各岗位的员工进行科学的考…

阿里云国际站:全球加速GA

文章目录 一、前言 二、阿里云全球加速的概念 三、阿里云全球加速的功能优势 四、阿里云全球加速的原理 五、阿里云全球加速的应用场景 六、写在最后 一、前言 随着互联网的快速发展&#xff0c;网站速度已经成为了用户访问体验的一个重要指标。阿里云加速作为一种新的技…

【开源】基于Vue.js的大学兼职教师管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目详细录屏 二、研究内容三、界面展示3.1 登录注册3.2 学生教师管理3.3 课程管理模块3.4 授课管理模块3.5 课程考勤模块3.6 课程评价模块3.7 课程成绩模块3.8 可视化图表 四、免责说明 一、摘要 1.1 项目介绍 大学兼职教师管理系统&#xff0…

【c++随笔12】继承

【c随笔12】继承 一、继承1、继承的概念2、3种继承方式3、父类和子类对象赋值转换4、继承中的作用域——隐藏5、继承与友元6、继承与静态成员 二、继承和子类默认成员函数1、子类构造函数 二、子类拷贝构造函数3、子类的赋值重载4、子类析构函数 三、单继承、多继承、菱形继承1…

Unity Mirror学习(二) Command特性使用

Command&#xff08;命令&#xff09;特性 1&#xff0c;修饰方法的&#xff0c;当在客户端调用此方法&#xff0c;它将在服务端运行&#xff08;我的理解&#xff1a;客户端命令服务端做某事&#xff1b;或者说&#xff1a;客户端向服务端发消息&#xff0c;消息方法&#xff…

程序员的护城河:职业发展的关键元素

目录 1. 技术深度与广度 2. 项目经验与实际操作 3. 沟通与团队协作 4. 持续学习与自我更新 5. 社区参与与开源贡献 6. 创新思维与解决问题的能力 7. 职业规划与自我管理 结语 在科技日新月异的今天&#xff0c;程序员的竞争已经不再仅仅依赖于技术水平&#xff0c;而是…

通义千问, 文心一言, ChatGLM, GPT-4, Llama2, DevOps 能力评测

引言 “克隆 dev 环境到 test 环境&#xff0c;等所有服务运行正常之后&#xff0c;把访问地址告诉我”&#xff0c;“检查所有项目&#xff0c;告诉我有哪些服务不正常&#xff0c;给出异常原因和修复建议”&#xff0c;在过去的工程师生涯中&#xff0c;也曾幻想过能够通过这…

最新支付宝转卡码生成之转账源代码(隐藏部分卡号)

一、需要准备好自己的卡号、名称、以及对应的姓名 二、然后将自己的信息填入下面的代码中 三、然后将拼接好的代码&#xff0c;利用转码技术生产对应的二维码 四、这样一个跳转银行卡二维码的转账码就做好了 效果演示&#xff1a;如下 支付宝扫码、跳转码、转卡码、隐藏卡号…

Linux学习第二枪(yum,vim,g++/gcc,makefile的使用)

前言&#xff1a;在我的上一篇Linux博客我已经讲了基础指令和权限&#xff0c;现在我们来学习如何在Linux上运行和执行代码 目录 一&#xff0c;yum 二&#xff0c;vim 1&#xff09;命令行模式 2&#xff09;插入模式 3&#xff09;底行模式 三&#xff0c;gcc/g 四&a…

搭建完全分布式Hadoop

文章目录 一、Hadoop集群规划二、在主节点上配置Hadoop&#xff08;一&#xff09;登录虚拟机&#xff08;二&#xff09;设置主机名&#xff08;三&#xff09;主机名与IP地址映射&#xff08;四&#xff09;关闭与禁用防火墙&#xff08;五&#xff09;配置免密登录&#xff…

Spring -Spring之依赖注入源码解析(下)--实践(流程图)

IOC依赖注入流程图 注入的顺序及优先级&#xff1a;type-->Qualifier-->Primary-->PriOriry-->name

windows服务器限制特定ip访问指定端口(服务器ip白名单)

有些时候我们需要限制特定的ip白名单来访问服务器的指定端口&#xff0c;来防止dos攻击或其他危险访问&#xff0c;我们可以通过防火墙来实现这一需求&#xff0c;下面一起看一下&#xff1a; 1.首先开启防火墙 ps:开启防火墙可能有些端口会无法访问&#xff0c;比如80、443等…

华为L410上制作内网镜像模板02

原文链接&#xff1a;华为L410上制作离线安装软件模板02 hello&#xff0c;大家好啊&#xff0c;今天给大家带来第二篇在内网搭建Apache服务器&#xff0c;用于安装完内网操作系统后&#xff0c;在第一次开机时候&#xff0c;为系统安装软件的文章&#xff0c;今天给大家介绍在…

运行npm install卡住不动的几种解决方案

在前端开发经常会遇到运行npm install 来安装工具包一直卡住不动&#xff0c;为此这里提供几种解决方案&#xff0c;供大家参考学习&#xff0c;不足之处还请指正。 第一种方案、首先检查npm代理&#xff0c;是否已经使用国内镜像 // 执行以下命令查看是否为国内镜像 npm con…

CSS3 用户界面、图片、按钮

一、CSS3用户界面&#xff1a; 在CSS3中&#xff0c;增加了一些新的用户界面特性来调整元素尺寸、框尺寸和外边框。CSS3用户界面属性&#xff1a;resize、box-sizing、outline-offset。 1、resize&#xff1a; resize属性指定一个元素是否应该由用户去调整大小。 <style…

学习OpenCV(蝴蝶书/C++)相关——2.MacOS下使用LLDB调试cpp程序

文章目录 1. VScode中的调试2. 配置VSCode中C++的调试(以OpenCV为例)2.1 创建适用于C++的.launch文件2.2 常见参数说明2.3 调试OpenCV的.launch文件示例2.3.1 .launch文件demo2.3.2 Debug模式的可执行文件3. 联合task.json文件一起使用3.1 创建tasks.json和launch.json文件3.2 …

【Bug】Python利用matplotlib绘图无法显示中文解决办法

一&#xff0c;问题描述 当利用matplotlib进行图形绘制时&#xff0c;图表标题&#xff0c;坐标轴&#xff0c;标签中文无法显示&#xff0c;显示为方框&#xff0c;并报错 运行窗口报错&#xff1a; 这是中文字体格式未导入的缘故。 二&#xff0c;解决方案 在代码import部…