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

计算机网络概述--自我学习用

计算网络体系概述

相关问题
  • 计算机网络为什么要分层?
  • 计算机网络是怎么分层的?
  • 三种计算机网络模型的关系是什么?每一层分别包含哪些协议?
  • 计算机网络中,数据如何在各层中传播?数据在网络各层中的存在形式是怎么样的?
OSI七层模型

OSI(Open Systems Interconnection)是开放系统互连参考模型的缩写,它是一个定义得非常好的协议规范集,它为各种系统定义了一个层次结构和一套用于协调与控制各层活动的规则,模型有七层结构。OSI模型的七层结构及其简要描述:

层次名称简要描述
1物理层 (Physical Layer)定义了物理设备标准,如网络接口、传输介质等,负责传输原始比特流。
2数据链路层 (Data Link Layer)在物理层提供的服务基础上,建立相邻节点之间的数据链路,进行差错控制和流量控制。
3网络层 (Network Layer)负责为分组交换网上的不同主机提供通信服务,实现路由选择和分组转发。
4传输层 (Transport Layer)提供端到端的通信服务,负责数据的分段、重组和差错控制,确保数据的可靠传输。
5会话层 (Session Layer)负责建立、管理和终止会话过程,同步不同设备上的各种表示层实体。
6表示层 (Presentation Layer)对应用层数据进行表示和转换,如数据压缩、加密和解密、数据格式转换等。
7应用层 (Application Layer)为网络应用提供访问OSI环境的手段,定义应用进程间通信和交互的规则。

这个表格简洁地概述了OSI模型的每一层及其主要功能。需要注意的是,虽然OSI模型在理论上是一个完善的参考模型,但在实际应用中,TCP/IP协议族由于其简洁性和高效性而被广泛采用。

TCP/IP五层协议

五层体系的协议结构是综合了 OSI 和 TCP/IP 优点的一种协议,包括应用层、传输层、网络层、数据链路层和物理层。其中应用层对应 OSI 的上三层,下四层和 OSI 相同。五层协议的体系结构只是为介绍网络原理而设计的,实际应用还是 TCP/IP 四层体系结构。TCP/IP五层协议栈:

名称主要功能主要协议/技术
物理层负责物理传输介质上比特流的传输无(依赖于物理介质)
数据链路层负责将数据封装成帧,进行差错控制和流量控制以太网、PPP
网络层负责数据包的路由和转发,实现不同网络之间的通信IP、ICMP、IGMP、ARP、RARP
传输层负责端到端的数据传输,提供可靠或不可靠的数据传输服务TCP、UDP
应用层提供网络应用服务,处理特定应用的数据格式HTTP、FTP、SMTP、DNS、SSH

这个表格简要地概括了TCP/IP五层协议栈中每一层的主要功能以及该层使用的主要协议或技术。这些协议共同协作,确保数据能够正确、高效地从源地址传输到目标地址。

数据在各层之间的传输

在TCP/IP五层协议栈中,数据并不是直接在各层之间传输的,而是经历了一个封装和解封装的过程。这个过程确保了数据从源地址到目标地址的可靠传输。以下是数据在各层之间传输的详细步骤:

层次物理层数据链路层网络层传输层应用层
数据类型比特流帧、数据帧数据报、数据包报文段、数据段报文
添加部分前导码MAC头部IP头部TCP头部数据
应用层:
  • 应用层是TCP/IP模型的最上层,直接为用户的应用程序(如浏览器、电子邮件客户端等)提供服务。
  • 在应用层,应用程序(如HTTP服务器或FTP客户端)生成数据,这些数据可能是文本、图片、音频或视频等。
  • 应用层将数据封装成应用层协议所能理解的数据格式,如HTTP请求或FTP命令。
传输层:
  • 传输层负责提供端到端的数据传输服务,包括可靠性和流量控制。
  • 在传输层,数据被封装成传输层协议的数据单元,对于TCP来说是TCP段(segment),对于UDP来说是UDP数据报(datagram)。
  • 封装过程中,传输层会添加源端口号和目的端口号等信息,以便在接收端能够正确地将数据交付给相应的应用程序。
网络层:
  • 网络层负责网络间的通信,主要处理路由和转发。
  • 在网络层,数据被封装成IP数据报(datagram)。封装过程中,会添加源IP地址和目的IP地址等信息。
  • 网络层根据路由选择算法,将数据报从源主机发送到目的主机。
数据链路层:
  • 数据链路层负责处理本地网络的通信,包括帧的构造和解析。
  • 在数据链路层,IP数据报被封装成帧(frame)。封装过程中,会添加帧头(包含源MAC地址和目的MAC地址)和帧尾(包含校验信息)。
  • 数据链路层通过物理层提供的服务,将数据帧从一个节点传输到下一个节点。
物理层:
  • 物理层是TCP/IP模型的最底层,负责将比特流转换成物理信号,并在物理介质上进行传输。
  • 物理层将数据帧转换成适合在物理介质上传输的比特流,如电信号或光信号。
  • 比特流通过物理介质(如电缆、光纤等)传输到目的主机。

应用层

相关问题
  • uri 和 url 的区别 ?
  • dns 是啥工作原理,主要解析过程是啥?
  • 用户输入网址到显示对应页面的全过程是啥?
  • http 头部包含哪些信息?
  • http 方法了解哪些?
  • http 状态码了解哪些?
  • get 和 post 的区别?
  • https 和 https 的区别?
  • https 的加密方式?
  • http 是不保存状态的协议,如何保存用户状态?
  • http 不同版本的区别?
万维网和域名系统

万维网(简称WWW或Web)和域名系统(简称DNS)是互联网中两个重要的组成部分,它们各自在互联网的运作中扮演着关键角色。

P2P和C/S

P2P(Peer-to-Peer)与C/S(Client/Server)是计算机网络中两种常见的通信模式,P2P是一种去中心化的网络架构,适用于资源共享和实时通信;而C/S是一种中心化的架构,适用于需要集中管理和控制的应用场景。

P2P(Peer-to-Peer)

定义:P2P是一种网络架构,其中每个设备(称为“对等点”或“节点”)都可以直接与其他设备通信,而不需要通过中央服务器。

特点:

  • 去中心化:没有中央控制点,每个节点都可以相互通信。
  • 资源共享:节点可以共享文件、带宽等资源。
  • 灵活:节点可以动态地加入或离开网络。

应用场景:文件共享(如BitTorrent)、即时通讯(如Skype或某些在线游戏)。

C/S(Client/Server)

定义:C/S架构中,有一个或多个服务器负责存储数据和处理请求,而客户端设备(如电脑、手机等)则发送请求给服务器并接收响应。

特点:

  • 集中管理:数据和服务由服务器集中提供。
  • 安全性:服务器可以提供安全控制和数据完整性检查。
  • 响应速度快:客户端与服务器直接通信,响应通常较快。

应用场景:Web应用(如网站)、数据库系统、电子邮件服务等。

Web结构组件

web结构组件指的是构成Web系统的基础元素,这些组件共同协作,使得Web应用能够正常运行并提供服务,以下是一些Web结构组件:

组件名称定义作用
代理(Proxy)中间服务器,用于转发客户端和服务器之间的请求和响应提高性能、安全性或进行内容过滤
缓存(Cache)存储常用页面副本的地方,以减少网络带宽使用和加快页面加载速度提高Web应用的响应速度
网关(Gateway)连接其他应用或服务的服务器,例如连接Web服务器到FTP服务器的中间件协议转换和服务集成
Agent代理发起HTTP请求的Web客户端,如浏览器、网络爬虫等代表用户或系统发送HTTP请求
Web组件(Web Components)封装好的可复用的自定义元素,用于构建Web应用提高Web开发的效率和可维护性
网络协议(Network Protocols)计算机之间通信的规则,如HTTP和HTTPS确保客户端和服务器之间能够正确通信
域名系统(DNS)将域名转换为IP地址的系统使人们可以通过易记的域名来访问网站
DNS

域名服务器(Domain Name Server,简称DNS)是互联网中至关重要的基础设施之一,它负责将人类可读的域名(如example.com)映射到与之对应的IP地址(如192.0.2.1)。

工作原理

假设一个客户端 A,想要查询 a.leetcode.cn 的 ip 地址,考虑缓存的情况。

  • 客户端 A 首先查询本地的 hosts 文件,查询是否有网址映射关系,如果没有,进行下一步查找。
  • 查找本地的 dns 解析器缓存,如果没有进行下一步。
  • 根据 tcp/ip 参数查找设置好的首选 dns 服务器 ip 地址,一般叫做本地 dns 服务器,查询本地 dns 服务器。本地 dns 服务器如果没有,它就会进行下一步操作。
  • 本地dns会访问根服务器 ,然后根据后缀名,从根服务器中查找对应的顶级域名服务器的 ip ,然后以此向下查找域名服务器的 ip ,然后查找网址映射关系,直到找到为止。
http

http(超文本传输协议)是互联网上应用最为广泛的一种网络协议。HTTP 协议是用于从 Web 服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP 的工作原理是基于客户端-服务器架构。客户端(例如,Web 浏览器)向服务器(例如,Web 服务器)发送 HTTP 请求以获取资源(如 HTML 页面、图片、CSS 样式表、JavaScript 脚本等)。服务器响应这些请求,通过发送 HTTP 响应来提供所需的资源。

HTTPS(HTTP Secure)是在 HTTP 基础上加入了 SSL/TLS 加密技术,提供了安全的数据传输方式。

主要特点包括:
  • 无连接:HTTP 协议是无连接的,即每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

  • 无状态:HTTP 协议是无状态的,协议对于事务处理没有记忆能力。服务器不知道客户端之前发送过什么请求,也不知道客户端下一次会发送什么请求。

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、POST、PUT、DELETE 等。每种方法规定了客户端与服务器联系的类型不同。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。

  • 支持 B/S 模式:HTTP 支持客户端/服务器模式,客户端可以通过 HTTP 协议向服务器发送请求,服务器也可以通过 HTTP 协议将请求的内容返回给客户端。

网络编程socket

网络编程中的 socket 是一种抽象层,它允许应用程序(通常称为“客户端”和“服务器”)通过计算机网络进行通信。socket 提供了一种跨平台、跨语言的网络编程接口,使得在不同的操作系统和编程语言中都可以使用类似的方式进行网络通信。

基本概念
  1. IP 地址:用于唯一标识网络中的设备。
  2. 端口号:用于标识运行在同一台设备上的不同应用程序。每个端口号对应一个特定的服务或应用程序。
  3. TCP/UDP:两种主要的传输层协议。TCP 是面向连接的协议,提供可靠的数据传输服务;UDP 是无连接的协议,提供不可靠的数据传输服务,但速度更快。
工作原理
  1. 创建 socket:应用程序首先创建一个 socket 对象,指定使用的协议(TCP 或 UDP)和本地端口号(如果需要)。
  2. 绑定 socket:对于服务器端的 socket,需要将其绑定到一个特定的 IP 地址和端口号上,以便客户端能够找到并连接到它。
  3. 监听和接受连接(仅适用于 TCP):服务器端的 socket 开始监听来自客户端的连接请求。当有客户端连接时,服务器接受连接并创建一个新的 socket 对象来处理与该客户端的通信。
  4. 发送和接收数据:通过 socket 对象,应用程序可以发送和接收数据。对于 TCP,数据以字节流的形式传输;对于 UDP,数据以数据报的形式传输。
  5. 关闭 socket:当通信完成后,应用程序关闭 socket 对象以释放资源。
示例(基于 Python)
服务器端
import socket# 创建一个 TCP socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定到 IP 地址和端口号
server_address = ('localhost', 12345)
server_socket.bind(server_address)# 开始监听连接请求
server_socket.listen(1)while True:# 接受连接请求并返回一个新的 socket 对象和客户端地址client_socket, client_address = server_socket.accept()print(f"Accepted connection from {client_address}")# 接收并处理数据(这里只是简单地回显数据)data = client_socket.recv(1024)if data:print(f"Received: {data.decode()}")client_socket.sendall(data)  # 回显数据给客户端# 关闭连接client_socket.close()
客户端
import socket# 创建一个 TCP socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 连接到服务器
server_address = ('localhost', 12345)
client_socket.connect(server_address)try:# 发送数据message = b'Hello, server!'client_socket.sendall(message)# 接收数据data = client_socket.recv(1024)print(f"Received: {data.decode()}")
finally:# 关闭连接client_socket.close()

在这个示例中,服务器端创建一个 TCP socket 对象并绑定到本地地址和端口号上,然后开始监听连接请求。客户端也创建一个 TCP socket 对象并连接到服务器。一旦连接建立,客户端发送数据给服务器,服务器接收数据并回显给客户端。最后,双方关闭连接以释放资源。

传输层

传输层(Transport Layer)是计算机网络体系结构中的关键层次之一,主要负责两台计算机之间(或更准确地说,是两个主机中进程之间)的数据通信服务。

  • 为什么要进行三次握手?两次握手可以吗?
  • 为什么要四次挥手?
  • CTIME-WAIT 为什么是 2MSL?
  • TCP 和 UDP 的区别?
  • TCP 是如何保证可靠性的,UDP 为什么是不可靠的 ?
  • TCP 报文包含哪些信息 ?
  • UDP 包含哪些信息
  • 三次握手和四次挥手过程中,网络断开会发生什么?
端口号的使用
  • 传输层使用端口号来区分不同的应用进程。端口号是一个16位的整数,范围从0到65535。其中,0到1023为知名端口(Well-Known Ports),由IANA注册,用于特定的服务;1024到65535为动态/私有端口,可由用户自由分配。
  • 通过“IP地址+端口号”的组合,传输层能够唯一标识网络中的一个通信端口,从而实现数据的准确传输。
UDP协议

UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的、面向数据报的传输层协议。它工作在OSI模型的传输层,为应用层提供了一种简单的、直接的数据传输服务。

特点:
  1. 无连接
    • UDP在发送数据之前不需要建立连接。发送方和接收方之间不保持连接状态,每个数据报都是独立传输的。
  2. 不可靠
    • UDP不保证数据报的顺序、完整性或是否到达。如果数据报在传输过程中丢失或损坏,UDP不会进行重传或恢复。
  3. 面向数据报
    • UDP将应用层交下来的数据封装成一个个的数据报(Datagram),并添加UDP头部信息,然后交给网络层进行传输。每个数据报都是一个独立的单元,携带完整的源地址和目的地址信息。
  4. 开销小
    • UDP头部只有8个字节,相对于TCP的20字节头部来说更小,因此UDP的传输开销更低,传输效率更高。
  5. 支持多播和广播
    • UDP支持向多个目的地址发送相同的数据报,即多播(Multicast)。同时,它还可以将数据报发送给网络中的所有主机,即广播(Broadcast)。
注意事项
  • 由于UDP不提供可靠的数据传输服务,因此在使用UDP时,应用层需要自行处理数据的可靠性问题,如通过应用层协议来确认数据报的接收和重传等。
  • UDP不保证数据报的顺序性,因此接收方可能会以与发送方不同的顺序接收到数据报。如果应用需要保持数据的顺序性,那么应用层需要在发送和接收时进行相应的处理。
TCP协议

TCP(Transmission Control Protocol,传输控制协议)是计算机网络中一种基于连接的、可靠的传输层协议。它提供了一系列机制来确保数据在端到端之间的可靠传输。

特点
  1. 面向连接
    • TCP在数据传输之前需要先建立连接,通过三次握手过程来确保双方都已准备好进行数据传输。
  2. 可靠性
    • TCP通过序列号、确认应答、超时重传等机制来确保数据的完整性和顺序性。如果数据包在传输过程中丢失或损坏,TCP会负责重新发送。
  3. 流控制
    • TCP使用滑动窗口机制来防止发送方发送速度过快,确保接收方能够处理并消化数据。这有助于避免接收方被数据淹没,提高传输效率。
  4. 拥塞控制
    • TCP具有拥塞控制机制,用于适应网络的拥塞情况。当网络出现拥塞时,TCP会自动减少发送速率,以减轻网络负担,避免性能下降。
  5. 面向字节流
    • TCP将传输的数据视为无边界的字节流,而不是像UDP那样按照消息边界进行划分。这意味着发送方可以连续发送数据,而接收方也可以连续接收数据,无需关心数据的原始边界。
  6. 全双工通信
    • TCP连接允许双方在同一时间既能发送数据又能接收数据,提高了通信效率。
工作机制
  1. 三次握手
    • 客户端发送SYN报文给服务器,请求建立连接。
    • 服务器收到SYN报文后,回复SYN+ACK报文给客户端,表示同意建立连接。
    • 客户端收到服务器的SYN+ACK报文后,回复ACK报文给服务器,完成三次握手过程,建立连接。
    • SYN表示标志位,seq表示序列号,ACK表示标志位,Ack表示确认号。
客户端 服务器 请求建立链接:SYN=1,seq=x 同意建立链接:SYN=1,ACK=1,seq=y,Ack=x+1 表示建立链接:ACK=1,Seq=x+1,Ack=y+1 发送数据 发送数据 loop [传输信息] 客户端 服务器
  1. 数据传输
    • 连接建立后,双方可以开始传输数据。TCP通过序列号来标识每个数据包的顺序,并通过确认应答机制来确认数据包的接收情况。
  2. 超时重传
    • 如果客户端在规定时间内没有收到服务器的确认应答,则认为数据包丢失,会重新发送该数据包。
  3. 四次挥手
    • 当一方想要关闭连接时,会发送FIN报文给对方,表示没有数据要发送了。对方收到FIN报文后,会回复ACK报文确认收到,并继续发送完剩余的数据(如果有的话)。当对方也发送完所有数据并想要关闭连接时,也会发送FIN报文给对方。最后,双方通过ACK报文确认连接的关闭。
    • FIN:表示标志位,seq:表示序列号,ACK表示标志位,Ack表示确认号
客户端 服务器 请求关闭链接:FIN=1,seq=x 同意关闭链接:ACK=1,seq=y,Ack=x+1 结束发送,关闭链接:FIN=1,ACK=1,seq=z,Ack=x+1 结束接受,关闭链接:ACK=1,seq=x+1,Ack=z+1 客户端 服务器
三次握手与四次挥手
三次握手:确认双方收发能力
  • 第一次握手(SYN):客户端发送一个SYN报文给服务器,表示客户端想要建立连接,并包含一个初始序列号seq=x。这个报文告诉服务器:“我想要连接你,这是我的初始序列号”。
  • 第二次握手(SYN+ACK):服务器收到客户端的SYN报文后,会回复一个SYN+ACK报文给客户端。这个报文包含服务器的初始序列号seq=y,以及对客户端SYN报文的确认号ack=x+1。这个报文告诉客户端:“我收到了你的请求,我想要连接你,这是我的初始序列号,并且我已经确认了你的序列号”。
  • 第三次握手(ACK):客户端收到服务器的SYN+ACK报文后,会回复一个ACK报文给服务器。这个报文包含对服务器SYN报文的确认号ack=y+1,但不包含序列号(因为这是一个纯确认报文)。这个报文告诉服务器:“我收到了你的回复,我已经准备好开始传输数据了”。
四次挥手:确保数据完整传输
  • 当一方想要关闭连接时,它不能直接断开连接,因为可能还有未发送或未接收的数据。因此,它需要发送一个FIN报文给对方,告诉对方:“我已经没有数据要发送了,但请允许我接收你的数据”。
  • 对方收到FIN报文后,会回复一个ACK报文,表示已经收到对方的关闭请求,但自己可能还有数据要发送。此时,连接处于半关闭状态,即一方已经关闭发送通道,但另一方仍然可以发送数据。
  • 当没有数据要发送时,另一方也会发送一个FIN报文给对方,表示自己也想要关闭连接。
  • 最后,对方回复一个ACK报文,确认已经收到对方的FIN报文,此时连接才真正关闭。
确保可靠的机制

TCP(传输控制协议)通过一系列复杂的机制来确保数据的可靠传输。校验和、序列号和确认应答机制保证了数据的完整性和顺序性;超时重传机制避免了因网络原因导致的数据丢失;连接管理(三次握手与四次挥手)确保了连接的可靠建立和正确关闭;流量控制和拥塞控制机制则保证了网络的稳定性和高效性。以下是对这些机制的详细归纳:

1. 校验和
  • 计算方式:在数据传输过程中,TCP将发送的数据段当做一个16位的整数进行累加(进位不丢弃,补在后面),最后取反得到校验和。
  • 作用:发送方在发送数据前计算校验和并填充在报文头中,接收方收到数据后同样计算校验和并与发送方的校验和进行比对。如果比对不一致,则数据一定传输有误。
2. 序列号
  • 作用:TCP为每个字节的数据都进行了编号,这就是序列号。序列号用于确保数据的顺序性和去除重复数据。
  • 确认应答:接收方收到数据后,会向发送方发送ACK报文,其中带有对应的确认序列号,告诉发送方哪些数据已经被成功接收。
3. 确认应答与超时重传
  • 确认应答:TCP传输过程中,每次接收方收到数据后都会发送ACK报文进行确认。
  • 超时重传:如果发送方在发送数据后等待一定时间(如Linux中以500ms为单位,超时时间呈指数增长)仍未收到ACK报文,则会重新发送该数据。这避免了因网络原因导致的数据丢失。
4. 连接管理(三次握手与四次挥手)
  • 三次握手:用于建立连接,确保双方都已准备好进行数据传输。
    1. 客户端发送SYN报文给服务器。
    2. 服务器回复SYN+ACK报文给客户端。
    3. 客户端回复ACK报文给服务器,连接建立成功。
  • 四次挥手:用于关闭连接,确保双方都已正确处理完所有数据。
    1. 客户端发送FIN报文给服务器,表示不再发送数据。
    2. 服务器回复ACK报文给客户端,表示收到FIN报文。
    3. 服务器发送FIN报文给客户端,表示也不再发送数据。
    4. 客户端回复ACK报文给服务器,连接关闭成功。
5. 流量控制
  • 滑动窗口机制:TCP利用滑动窗口机制实现流量控制,通过限制发送方窗口大小来防止发送速度过快导致接收方处理不及时而丢包。

    窗口大小:TCP报头中有一个16位的窗口大小字段,表示接收端接收数据缓冲区的剩余大小。发送方根据接收方发送的窗口大小来调整自己的发送速度。

6. 拥塞控制
  • 慢启动:TCP连接刚建立时,发送方限制自己的初始发送窗口大小,避免发送过多数据导致网络拥塞。窗口大小以指数级别增加,直到达到一个阈值。
  • 拥塞避免:在拥塞避免状态下,TCP发送方每经过一轮传输就增加一个MSS(最大报文段长度)的窗口大小。
  • 拥塞检测与快速恢复:当TCP发送方收到超时重传或失序的确认消息时,会认为网络中出现拥塞,并采取相应的措施(如减小窗口大小、进入慢启动状态或快速恢复状态)来避免拥塞加剧。

相关文章:

计算机网络概述--自我学习用

计算网络体系概述 相关问题 计算机网络为什么要分层?计算机网络是怎么分层的?三种计算机网络模型的关系是什么?每一层分别包含哪些协议?计算机网络中,数据如何在各层中传播?数据在网络各层中的存在形式是…...

超级好用的java http请求工具

kong-http 基于okhttp封装的轻量级http客户端 使用方式 Maven <dependency><groupId>io.github.kongweiguang</groupId><artifactId>kong-http</artifactId><version>0.1</version> </dependency>Gradle implementation …...

在原有的iconfont.css文件中加入新的字体图标

前言&#xff1a;在阿里图标库中&#xff0c;如果你没有这个字体图标的线上项目&#xff0c;那么你怎么在本地项目中的原始图标文件中添加新的图标呢&#xff1f; 背景&#xff1a;现有一个vue项目&#xff0c;下面是这个前端项目的字体图标文件。现在需要新开发功能页&#x…...

使用 ESP32-WROOM + DHT11 做个无屏温湿度计

最近梅雨天&#xff0c;有个房间湿度很大&#xff0c;而我需要远程查看温湿度&#xff0c;所以无所谓有没有显示屏&#xff0c;某宝上的温湿度计都是带屏的&#xff0c;如果连WIFI查看温湿度操作也比较麻烦&#xff0c;还需要换电池&#xff0c;实在不能满足我的需求&#xff0…...

如何使用 SwiftUI 构建 visionOS 应用

文章目录 前言WindowsVolumes沉浸式空间结论 前言 Apple Vision Pro 即将推出&#xff0c;现在是看看 SwiftUI API 的完美时机&#xff0c;这使我们能够将我们的应用程序适应 visionOS 提供的沉浸式世界。苹果表示&#xff0c;构建应用程序的最佳方式是使用 Swift 和 SwiftUI。…...

InspireFace-商用级的跨平台开源人脸分析SDK

InspireFace-商用级的跨平台开源人脸分析SDK InspireFaceSDK是由insightface开发的⼀款⼈脸识别软件开发⼯具包&#xff08;SDK&#xff09;。它提供了⼀系列功能&#xff0c;可以满⾜各种应⽤场景下的⼈脸识别需求&#xff0c;包括但不限于闸机、⼈脸⻔禁、⼈脸验证等。 该S…...

华为HCIP Datacom H12-821 卷24

1.单选题 企业大楼有大量员工通常都在上班时在大厅开始接入到公司的WLAN网络,随着每位员工走到各自的工位过程中,每个人的移动端叶通过漫游的方式漫游到各自的网络覆盖区域。为了尽量保证每个终端的IP地址是固定的,建议的做法是? A、配置VLAN Pool并配置顺序算法 B、…...

TikTok马来西亚直播网络怎么配置?

TikTok是一款全球流行的社交媒体应用&#xff0c;在东南亚地区拥有大量用户。在马来西亚这个多元化的国家&#xff0c;配置高效稳定的直播网络对TikTok的运营至关重要。 配置马来西亚直播网络的必要性 广泛的地理覆盖&#xff1a;马来西亚包括大片陆地和众多岛屿&#xff0c;网…...

基于若依的文件上传、下载

基于若依实现文件上传、下载 文章目录 基于若依实现文件上传、下载1、前端实现-文件上传1.1 通用上传分析1.2 修改实现上传接口 2、后端实现-文件上传3、后端实现-文件下载4、前端实现-文件下载 官网其实也写了&#xff0c;但是我是自己改造封装了一下&#xff0c;再次迈向全栈…...

论文回顾 | CVPR 2021 | How to Calibrate Your Event Camera | 基于图像重建的事件相机校准新方法

论文速览 | CVPR 2021 | How to Calibrate Your Event Camera | 基于图像重建的事件相机校准新方法 1 引言 在计算机视觉和机器人领域,相机校准一直是一个基础而又重要的问题。传统的相机校准方法主要依赖于从已知校准图案中提取角点,然后通过优化算法求解相机的内参和外参。这…...

高级java每日一道面试题-2024年7月1日

题目&#xff1a;请解释 Java 中的内存泄漏&#xff0c;并说明如何检测和避免内存泄漏。 答案&#xff1a; 内存泄漏指的是程序中不再使用的对象&#xff0c;由于某些原因没有被垃圾回收器回收&#xff0c;仍然占据着内存空间&#xff0c;导致可用内存逐渐减少&#xff0c;最…...

当需要对多个表进行联合更新操作时,怎样确保数据的一致性?

文章目录 一、问题分析二、解决方案三、示例代码&#xff08;以 MySQL 为例&#xff09;四、加锁机制示例五、测试和验证六、总结 在数据库管理中&#xff0c;经常会遇到需要对多个表进行联合更新的情况。这种操作带来了一定的复杂性&#xff0c;因为要确保在整个更新过程中数据…...

数据结构-线性表的应用

目录 前言一、有序表的合并1.1 顺序表实现1.2 单链表实现 二、稀疏多项式的相加和相乘2.1 稀疏多项式的相加2.2 稀疏多项式的相乘 总结 前言 本篇文章介绍线性表的应用&#xff0c;分别使用顺序表和单链表实现有序表的合并&#xff0c;最后介绍如何使用单链表实现两个稀疏多项…...

cpp http server/client

httplib 使用httplib库 basedemo server.cpp #include "httplib.h" #include <iostream> using namespace httplib;int main(void) {Server svr;svr.Get("/hello", [](const Request& req, Response& res) {std::cout << "lo…...

昇思25天学习打卡营第2天|MindSpore快速入门

打卡 目录 打卡 快速入门案例&#xff1a;minist图像数据识别任务 案例任务说明 流程 1 加载并处理数据集 2 模型网络构建与定义 3 模型约束定义 4 模型训练 5 模型保存 6 模型推理 相关参考文档入门理解 MindSpore数据处理引擎 模型网络参数初始化 模型优化器 …...

django之url路径

方式一&#xff1a;path 语法&#xff1a;<<转换器类型:自定义>> 作用&#xff1a;若转换器类型匹配到对应类型的数据&#xff0c;则将数据按照关键字传参的方式传递给视图函数 类型&#xff1a; str: 匹配除了”/“之外的非空字符串。 /test/zvxint: 匹配0或任何…...

【OnlyOffice】桌面应用编辑器,插件开发大赛,等你来挑战

OnlyOffice&#xff0c;桌面应用编辑器&#xff0c;最近版本已从8.0升级到了8.1 从PDF、Word、Excel、PPT等全面进行了升级。随着AI应用持续的火热&#xff0c;OnlyOffice也在不断推出AI相关插件。 因此&#xff0c;在此给大家推荐一下OnlyOffice本次的插件开发大赛。 详细信息…...

[学习笔记]SQL学习笔记(连载中。。。)

学习视频&#xff1a;【数据库】SQL 3小时快速入门 #数据库教程 #SQL教程 #MySQL教程 #database#Python连接数据库 目录 1.SQL的基础知识1.1.表(table)和键(key)1.2.外键、联合主键 2.MySQL安装&#xff08;略&#xff0c;请自行参考视频&#xff09;3.基本的MySQL语法3.1.规…...

Buuctf之SimpleRev做法

首先&#xff0c;查个壳&#xff0c;64bit&#xff0c;那就丢进ida64中进行反编译进来之后&#xff0c;我们进入main函数&#xff0c;发现里面没什么东西&#xff0c;那就shiftf12搜索字符串&#xff0c;找到关键字符串&#xff0c;双击进入然后再选中该字符串&#xff0c;ctrl…...

【云原生监控】Prometheus 普罗米修斯从搭建到使用详解

目录 一、前言 二、服务监控概述 2.1 什么是微服务监控 2.2 微服务监控指标 2.3 微服务监控工具 三、Prometheus概述 3.1 Prometheus是什么 3.2 Prometheus 特点 3.3 Prometheus 架构图 3.3.1 Prometheus核心组件 3.3.2 Prometheus 工作流程 3.4 Prometheus 应用场景…...

【C++】模板进阶--保姆级解析(什么是非类型模板参数?什么是模板的特化?模板的特化如何应用?)

目录 一、前言 二、什么是C模板&#xff1f; &#x1f4a6;泛型编程的思想 &#x1f4a6;C模板的分类 三、非类型模板参数 ⚡问题引入⚡ ⚡非类型模板参数的使用⚡ &#x1f525;非类型模板参数的定义 &#x1f525;非类型模板参数的两种类型 &#x1f52…...

Cookie与Session

Cookie Set-Cookie: sessionIdabc123; ExpiresWed, 09 Jun 2024 10:18:14 GMT; Path/; Secure; HttpOnlySession session作用域 首先需要了解servlet容器可能包含多个web应用。 在servlet容器中同一应用的servlet 对 session数据是可见的&#xff0c;不同应用之间session是相互…...

Nuxt3 的生命周期和钩子函数(十一)

title: Nuxt3 的生命周期和钩子函数&#xff08;十一&#xff09; date: 2024/7/5 updated: 2024/7/5 author: cmdragon excerpt: 摘要&#xff1a;本文详细介绍了Nuxt3中几个关键的生命周期钩子和它们的使用方法&#xff0c;包括webpack:done用于Webpack编译完成后执行操作…...

Windows ipconfig命令详解,Windows查看IP地址信息

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 ipconfig 1、基…...

在C#/Net中使用Mqtt

net中MQTT的应用场景 c#常用来开发上位机程序&#xff0c;或者其他一些跟设备打交道比较多的系统&#xff0c;所以会经常作为拥有数据的终端&#xff0c;可以用来采集上传数据&#xff0c;而MQTT也是物联网常用的协议&#xff0c;所以下面介绍在C#开发中使用MQTT。 安装MQTTn…...

VBA提取word表格内容到excel

这是一段提取word表格中部分内容的vb代码。 Sub 提取word表格() mypath ThisWorkbook.Path & "\"myname Dir(mypath & "*.doc*")n 4 index of rowsRange("A1:F1") Array("课程代码", "课程名称", "专业&…...

html+css+js图片手动轮播

源代码在界面图片后面 轮播演示用的几张图片是Bing上的&#xff0c;直接用的几张图片的URL&#xff0c;谁加载可能需要等一下&#xff0c;现实中替换成自己的图片即可 关注一下点个赞吧&#x1f604; 谢谢大佬 界面图片 源代码 <!DOCTYPE html> <html lang&quo…...

【十三】图解 Spring 核心数据结构:BeanDefinition 其二

图解 Spring 核心数据结构&#xff1a;BeanDefinition 其二 概述 前面写过一篇相关文章作为开篇介绍了一下BeanDefinition&#xff0c;本篇将深入细节来向读者展示BeanDefinition的设计&#xff0c;让我们一起来揭开日常开发中使用的bean的神秘面纱&#xff0c;深入细节透彻理解…...

数据库作业

命令 登陆数据库 mysql -uroot -p123456 --prompt"\u\h:\d--> " 创建数据库zcr create database zcr&#xff1b; 修改数据库zcr字符集为gbk alter database zcr default character set gbk collate gbk_chinese_ci; 选择数据库zcr use zcr 查看数据库zc…...

12、matlab中for循环,if else判断语句,break和continue用法以及switch case语句使用

1、前言 在MATLAB中&#xff0c;for循环用于迭代一个固定次数的循环。可以使用if else语句在循环中进行条件判断&#xff0c;根据条件的不同执行相应的代码块。break和continue可以用于控制循环的执行流程&#xff0c;break用于提前结束循环&#xff0c;而continue用于跳过当前…...

AcWing 3207:门禁系统 ← 桶排序中“桶”的思想

【题目来源】https://www.acwing.com/problem/content/3210/【题目描述】 涛涛最近要负责图书馆的管理工作&#xff0c;需要记录下每天读者的到访情况。 每位读者有一个唯一编号&#xff0c;每条记录用读者的编号来表示。 给出读者的来访记录&#xff0c;请问每一条记录中的读者…...

开发个人Go-ChatGPT--3 服务拆分

开发个人Go-ChatGPT–3 服务拆分 个人Go-ChatGPT项目可拆分用户服务&#xff08;user&#xff09;&#xff0c;AI模型服务&#xff08;AiModel&#xff09;&#xff0c;… 每个服务都可以再分为 api 服务和 rpc 服务。api 服务对外&#xff0c;可提供给 app 调用。rpc 服务是…...

Android --- 新电脑安装Android Studio 使用 Android 内置模拟器电脑直接卡死,鼠标和键盘都操作不了

新电脑安装Android Studio 使用 Android 内置模拟器电脑直接卡死&#xff0c;鼠标和键盘都操作不了 大概原因就是,初始化默认Google的安卓模拟器占用的RAM内存是2048&#xff0c;如果电脑的性能和内存一般的话就可能卡死&#xff0c;解决方案是手动修改安卓模拟器的config文件&…...

从入门到深入,Docker新手学习教程

编译整理&#xff5c;TesterHome社区 作者&#xff5c;Ishaan Gupta 以下为作者观点&#xff1a; Docker 彻底改变了我们开发、交付和运行应用程序的方式。它使开发人员能够将应用程序打包到容器中 - 标准化的可执行组件&#xff0c;将应用程序源代码与在任何环境中运行该代码…...

Postman编写测试脚本

在 Postman 中&#xff0c;编写测试脚本通常使用 JavaScript&#xff0c;这些脚本可以在请求发送前后执行。以下是一些示例代码&#xff0c;展示了如何在 Postman 中使用测试脚本。 1. 测试脚本示例&#xff1a;检查响应状态码 // 测试脚本在请求发送后执行 pm.test("Re…...

代码随想录算法训练Day57|LeetCode200-岛屿数量、LeetCode695-岛屿的最大面积

岛屿数量 题目描述 力扣200-岛屿数量 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此…...

StopWatch的使用

org.springframework.util.StopWatch 是 Spring 框架提供的一个轻量级的计时工具&#xff0c;用于测量代码执行时间。它比 Apache Commons Lang 的 StopWatch 提供了更多的功能&#xff0c;例如累计多个时间段、打印详细报告等。 以下是如何使用 Spring 的 StopWatch&#xff…...

MySQL基础篇(三)数据库的修改 删除 备份恢复 查看连接情况

对数据库的修改主要指的是修改数据库的字符集&#xff0c;校验规则。 将test1数据库字符集改为gbk。 数据库的删除&#xff1a; 执行完该数据库就不存在了&#xff0c;对应数据库文件夹被删除&#xff0c;级联删除&#xff0c;里面的数据表全部被删除。 注意&#xff1a;不要随…...

android手机电视相框项目-学员做出个bug版本邀请大家review提意见

背景 前几天给我的vip学员布置了一个android手机/电视相框的项目&#xff0c;具体详情看如下链接&#xff1a; https://mp.weixin.qq.com/s/l2roDoco-o59SLlORENZlA 这个项目我说过不给提供答案哈&#xff0c;让各位学员朋友自己独立思考完成哈&#xff0c;因为尽量想让大家慢…...

web零碎知识2

不知道我的这个axios的包导进去没。 找一下关键词&#xff1a; http请求协议&#xff1a;就是进行交互式的格式 需要定义好 这个式一发一收短连接 而且没有记忆 这个分为三个部分 第一个式请求行&#xff0c;第二个就是请求头 第三个就是请求体 以get方式进行请求的失手请求…...

Android项目框架

Android项目基于Android Studio开发&#xff0c;Android Studio使用Gradle作为项目构建工具。新建工程后可以看到如图所示目录结构&#xff0c;将Android切成Project可以看到完整的Android工程目录结构&#xff0c;如图所示。 图1-2 Android项目目录结构 app目录是一个典型的…...

vue 模糊查询加个禁止属性

vue 模糊查询加个禁止属性 父组件通过属性传&#xff0c;是否禁止输入-------默认可以输入...

MySQL 主从复制中 MHA 工具的研究与实践

MySQL 主从复制中 MHA 工具的研究与实践 一、MHA 工具简介二、MHA 的工作原理三、MHA 配置步骤环境准备1. 在主服务器上配置主从复制2. 在从服务器上配置复制 安装 MHA 工具1. 安装必要的依赖包2. 下载并安装 MHA 配置 MHA1. 创建 MHA 配置文件2. 配置 SSH 免密登录 测试 MHA1.…...

Hi3861 OpenHarmony嵌入式应用入门--TCP Server

本篇使用的是lwip编写tcp服务端。需要提前准备好一个PARAM_HOTSPOT_SSID宏定义的热点&#xff0c;并且密码为PARAM_HOTSPOT_PSK LwIP简介 LwIP是什么&#xff1f; A Lightweight TCP/IP stack 一个轻量级的TCP/IP协议栈 详细介绍请参考LwIP项目官网&#xff1a;lwIP - A Li…...

Poker Game, Run Fast

Poker Game, Run Fast 扑克&#xff1a;跑得快 分门别类&#xff1a; 单张从小到大默认 A < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < J < Q < K 跑得快&#xff1a;单张从小到大 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 &…...

订单折扣金额分摊算法|代金券分摊|收银系统|积分分摊|分摊|精度问题|按比例分配|钱分摊|钱分配

一个金额分摊的算法&#xff0c;将折扣分摊按比例&#xff08;细单实收在总体的占比&#xff09;到各个细单中。 此算法需要达到以下要求&#xff1a; 折扣金额接近细单总额&#xff0c;甚至折扣金额等于细单金额&#xff0c;某些时候甚至超过细单总额&#xff0c;要保证实收不…...

Matlab中collectPlaneWave函数的应用

查看文档如下&#xff1a; 可以看出最多5个参数&#xff0c;分别是阵列对象&#xff0c;信号幅度&#xff0c;入射角度&#xff0c;信号频率&#xff0c;光速。 在下面的代码中&#xff0c;我们先创建一个3阵元的阵列&#xff0c;位置为&#xff1a;&#xff08;-1,0,0&#x…...

Linux系统的基础知识和常用命令

1、什么是Linux&#xff1f; 是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦兹于1991年10月5日首次发布&#xff0c;它主要受到Minix和Unix思想的启发&#xff0c;是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行…...

三相异步电动机的起动方法

1. 引言 2. 三相笼型异步电动机德起动方法 3. 三相绕线型异步电动机的起动方法 4. 软起动器起动 5. 参考文献 1 引言 三相异步电动机结构简单﹑价格低廉﹑运行可靠﹑维护方便&#xff0c;在工农业生产中得到了广泛应用。为使电动机能够转动起来&#xff0c;并很快达到工作转…...

【LinuxC语言】手撕Http协议之accept_request函数实现(一)

文章目录 前言accept_request函数作用accept_request实现解析方法根据不同方法进行不同操作http服务器响应格式unimplemented函数实现总结前言 在计算机网络中,HTTP协议是一种常见的应用层协议,它定义了客户端和服务器之间如何进行数据交换。在这篇文章中,我们将深入探讨Li…...