计算机网络-面试总结

计算机网络

  • 从输入一个URL到页面加载完成的过程
    • 整体流程
      • DNS查询过程
      • SSL四次握手
      • HTTP 的长连接与短连接
    • HTTP 的 GET 和 POST 区别
    • 浏览器访问资源没有响应,怎么排查?
  • OSI七层参考模型
    • TCP/IP四层参考模型
    • 比较 TCP/IP 参考模型与 OSI 参考模型
  • TCP三次握手&四次挥手
    • TCP标志位
    • TCP序列号、确认号
    • 三次握手
      • 三次握手过程
      • 为什么不是两次握手?
      • 为什么不是四次握手?
    • 为什么超时重传?如何处理丢包
      • 为什么需要超时重传?
      • 如何处理丢包?
    • 四次挥手
      • 四次挥手过程
      • 为什么需要四次挥手
      • 为什么四次挥手,客户端的TIME-WAIT状态必须等待2MSL的时间,才能返回到CLOSED状态
    • 如果已经建立了连接,但是客户端出现故障了怎么办?
    • 使用tcpdump抓包分析
      • 操作
  • 子网掩码的作用
  • ABC类网络
  • TCP和UDP区别

不会就强调“在同一内网下”

从输入一个url到页面加载完成的过程

整体流程

1、用户在某个标签页输入 URL 并回车后,浏览器主进程会新开一个网络线程,发起 HTTP 请求
2、浏览器会进行 DNS 查询,将域名解析为 IP 地址
3、浏览器获得 IP 地址后,向服务器请求建立 TCP 连接
4、浏览器向服务器发起 HTTP 请求
5、服务器处理请求,返回 HTTP 响应
6、浏览器的渲染进程解析并绘制页面
7、如果遇到 JS/CSS/图片 等静态资源的引用链接,重复上述过程,向服务器请求这些资源

DNS查询过程

DNS 是应用层的协议,作用是将域名转化为 IP,以供传输层建立 TCP 连接。

整体流程:浏览器搜索自身的 DNS 缓存、搜索操作系统的 DNS 缓存、读取本地的 Host 文件和向本地DNS 服务器进行查询等。

SSL四次握手

SSL 位于传输层和应用层之间,TCP 和 HTTP 之间。SSL 协议的目的是,为通信双方提供一种在不安全的网络环境中,安全地协商一个密钥的方法。

SSL 实现的核心是非对称式密码学。非对称密码包含两个部分:公钥和私钥,一个用作加密,另一个则用作解密。使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文;甚至连最初用来加密的密钥也不能用作解密。

HTTPS 本质上就是 HTTP + SSL。通过 SSL 四次握手过程,客户端和服务端会商定一个共同的随机密钥,用来对称加密。握手结束后,双方都会使用这个约定的随机密钥来加密、解密会话内容,使用的完全是普通的 HTTP 协议。

HTTP 的长连接与短连接

HTTP/1.0 默认使用的是短连接。也就是说,浏览器每请求一个静态资源,就建立一次连接,任务结束就中断连接。

HTTP/1.1 默认使用的是长连接。长连接是指在一个网页打开期间,所有网络请求都使用同一条已经建立的连接。当没有数据发送时,双方需要发检测包以维持此连接。长连接不会永久保持连接,而是有一个保持时间。实现长连接要客户端和服务端都支持长连接。

长连接的优点:TCP 三次握手时会有 1.5 RTT 的延迟,以及建立连接后慢启动(slow-start)特性,当请求频繁时,建立和关闭 TCP 连接会浪费时间和带宽,而重用一条已有的连接性能更好。

长连接的缺点:长连接会占用服务器的资源。

HTTP 的 GET 和 POST 区别

特性GETPOST
用途获取数据提交数据
数据传输数据附加在 URL 后数据在请求体中
数据长度受 URL 长度限制(通常 2000 字符以内)没有严格限制
缓存可缓存不缓存
历史记录被记录在浏览器历史中不会出现在浏览器历史中
数据可见性数据暴露在 URL 中数据不暴露在 URL 中
安全性不适合传输敏感数据相对更安全,但仍需要 HTTPS
幂等性幂等非幂等

幂等性指的是同一个操作多次执行,结果和副作用相同。

浏览器访问资源没有响应,怎么排查

1、检查浏览器控制台和网络面板,F12进入开发者模式,查看Console和NetWork是否有错误或失败的请求。

2、检查网络连接,确保 DNS 解析和网络连接正常。

3、检查服务器状态,确保服务器运行正常,并查看日志信息。

4、检查 API 或后端服务,确认服务是否正常。

5、清除浏览器缓存或使用无痕模式

6、检查跨域问题,确保服务器配置了正确的 CORS 头。

7、检查代理或 VPN 设置,确保没有影响请求。

OSI七层参考模型

层级名称主要功能示例协议
7应用层直接为用户提供网络服务HTTP, FTP, SMTP, DNS
6表示层数据格式化、加密、解密、压缩SSL/TLS, JPEG, GIF, ASCII
5会话层管理会话的建立、维持和终止RPC, NetBIOS, SMB
4传输层端到端的数据传输、错误检测与修正TCP, UDP
3网络层路由选择、IP地址寻址、数据包转发IP, ICMP, ARP, IGMP
2数据链路层数据封装、物理地址传输、错误检测Ethernet, PPP, Frame Relay
1物理层比特流传输、硬件接口、物理连接电缆、光纤、无线信号

TCP/IP四层参考模型

  • 网络接入层:对应于 OSI 参考模型的物理层和数据链路层,负责相邻的物理节点间的可靠数据传输。协议包括WI-Fi、PPP等
  • 网络层(或网际互联层):对应于 OSI 参考模型的网络层,主要解决主机到主机的路由问题。协议包括 IP(网际协议,是用于分组交换数据网络的一种协议,功能包括寻址、路由、尽最大努力交付数据包)等
  • 传输层:对应于 OSI 参考模型的传输层,为应用层实体提供端到端的、通用的通信功能,保证了数据包的顺序传送及数据的完整性。协议包括 TCP(传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议)、UDP(用户数据报协议,是一个简单的、无连接的、不可靠的、面向数据报的通信协议)等
  • 应用层:对应于 OSI 参考模型的应用层,为用户提供所需要的各种服务,是用户与网络之间的接口。协议包括 HTTP(超文本传输协议)、FTP(文件传输协议)、DNS(域名系统,域名和 IP 地址相互映射的分布式数据库)等

比较 TCP/IP 参考模型与 OSI 参考模型

共同点:

  • 都采用了层次结构的概念
  • 都能够提供面向连接和无连接的通信服务机制

不同点:

  • OSI 采用了七层模型,而 TCP/IP 是四层
  • OSI 的网络层既提供面向连接的服务,又提供无连接的服务;TCP/IP 的网络层只提供无连接的网络服务

TCP三次握手&四次挥手

请添加图片描述

TCP标志位

TCP标志位代表当前请求的目的,一共有6种

1、SYN(synchronous):发送/同步标志,用来建立连接,和ACK标志位搭配使用。A请求与B建立连接时,SYN = 1, ACK = 0;B确认与A建立连接时,SYN=1,ACK=1
2、ACK(acknowledgement):确认标志,表示确认收到请求
3、PSH(push):推送操作,就是指数据包到达接收端以后,不对其进行队列处理,而是尽可能的将数据交给应用程序处理
4、FIN(finish):结束标志,表示关闭一个TCP连接
5、RST(reset):重制复位标志,用于复位对应的TCP连接
6、URG(urgent):紧急标志位,用于保证TCP连接不被中断,并且督促中间层设备尽快处理

TCP序列号、确认号

  • 作用:TCP 使用序列号来记录发送数据包的顺序。TCP 传送一个数据包后,只有在指定时间里收到这个包的确认信息,才会将其从队列中删除,否则会重新发送该数据包。对接收方而言,通过数据分段中的序列号可以保证数据能够按照正常的顺序进行重组。

三次握手

三次握手过程

请添加图片描述

图片来源:https://juejin.im/post/5ddd1f30e51d4532c42c5abe

  • 第一次握手(SYN):
    • 客户端向服务端发送一个同步报文(SYN),表示请求建立连接,并告知自己的初始序列号(Seq)
    • 第一次握手主要是为了:服务端确认“自己收、客户端发”报文功能正常
  • 第二次握手(SYN + ACK):
    • 服务端收到客户端的SYN报文后,回复同步确认报文(SYN + ACK),同时指定自己的初始序列号(Seq),并对客户端的序列号进行ACK确认(确认号=客户端的序列号 + 1)
    • 第二次握手主要是为了:客户端确认“自己发、自己收、服务端收、服务端发”报文功能正常,因此客户端认为连接已建立
  • 第三次握手(ACK):
    • 客户端收到服务器的 SYN + ACK 之后,回复一个 ACK 报文,表示自己确认了服务器的 SYN,并对服务器的序列号进行 ACK 确认(确认号 = 服务器的序列号 + 1)。
    • 第三次握手主要是为了:服务端确认“自己发、客户端收”报文功能正常,此时双方都认为连接已建立,TCP 连接正式建立

三次握手可以解决的问题

1、防止历史连接误触发: 旧的 SYN 可能会因网络问题延迟到达服务器,导致服务器误以为是新的连接,三次握手确保客户端仍在等待通信。

2、确保双方的收发能力都正常: 三次握手能确保双方的 发送能力 和 接收能力 都正常,不会出现服务器单方面认为连接成功的情况。

为什么不是两次握手?

两次握手无法确保客户端和服务器的发送、接收能力都正常,可能会导致旧连接被误认为是新的连接,进而影响数据的可靠性。

假设采用两次握手
1、客户端发送 SYN(请求建立连接)。
2、服务器收到后,直接返回 SYN + ACK,认为连接建立成功。
3、服务器直接开始发送数据。
4、问题:如果客户端因网络延迟或其他原因没有收到服务器的 SYN + ACK,或者客户端已经关闭,服务器仍然认为连接有效,会导致无效连接或错误数据传输。

为什么不是四次握手?

如果使用四次握手,就会多出一步额外的 ACK 确认报文,但这在建立连接时是不必要的,因为:

  • 在第三次握手中,客户端发送的 ACK 已经明确表示它收到了服务器的 SYN + ACK,并准备好通信。
  • 服务器只需要确认这个 ACK 是否到达即可,而不需要再发送一个额外的确认报文。

但是,在 TCP 断开连接时,为什么是四次挥手?
断开连接涉及双方数据传输的结束,需要确保双方都不再发送数据,因此需要四次挥手来确保数据彻底传输完毕。

为什么超时重传?如何处理丢包

为什么需要超时重传?

在TCP传输过程中,网络环境肯能会导致数据包丢失或ACK(确认)丢失。为了确保数据能够可靠地传输,TCP采用超时重传机制

1、发送方发送数据后,会开启一个定时器,等待接收方的ACK确认。
2、如果在超时时间内没有收到ACK,发送方会重新发送该数据包。
3、如果仍然没有收到确认,TCP可能会指数退避地延长超时时间,并继续重传(如:RTO值递增)。
4、当达到一定的重传上限后,TCP会认为连接中断,并向应用层报告失败。

超时重传机制保证了即使网络环境不稳定,TCP仍然能够提供可靠的数据传输。

如何处理丢包?

TCP采用超时重传快速重传两种机制来处理丢包。

1、超时重传

应用场景:适用于网络不稳定、长时间丢包
触发条件:在RTO内未收到ACK
处理方式:重新发送数据包

  • 发送方在发送数据时,启动一个定时器(RTO)
  • 如果在RTO时间内没有收到ACK,TCP认为数据包丢失,重新发送该数据包
  • TCP会指数退避地调整RTO,比如1s、2s、4s…直到达到最大重传次数。

缺点:

  • 如果RTO设置过长,丢包恢复慢,影响性能。
  • 如果RTO设置过短,可能导致不必要的重传,加重网络负担。

2、快速重传

应用场景:适用于部分丢包、轻微网络抖动
触发条件:收到3个相同的ACK
处理方式:立即重传丢失的数据包

当TCP发送方收到连续3个相同的ACK(即3次确认同一个数据包)时,认为该数据包可能已经丢失,会立即重传,而不等待超时。

示例
1、发送方发送 Seq=1, 2, 3, 4。
2、Seq=2 丢失,但 Seq=3、4 仍然到达 接收方。
3、接收方发现 Seq=2 缺失,于是对 Seq=1 发送 3 次 ACK(ACK=2)。
4、发送方收到 3 次相同的 ACK=2,认为 Seq=2 丢失,立即重传 Seq=2。

优点

  • 比超时重传更快恢复丢包,提高 TCP 传输效率。

四次挥手

四次挥手过程

请添加图片描述

图片来源:https://juejin.im/post/5ddd1f30e51d4532c42c5abe

  • 第一次挥手:客户端向服务端发送连接释放报文(FIN=1,ACK=1),主动关闭连接,同时等待服务端的确认
    • 序列号 seq = u,即客户端上次发送的报文的最后一个字节的序号 + 1
    • 确认号 ack = k, 即服务端上次发送的报文的最后一个字节的序号 + 1
  • 第二次挥手:服务端收到连接释放报文后,立即发出确认报文(ACK=1),序列号 seq = k,确认号 ack = u + 1

这时 TCP 连接处于半关闭状态,即客户端到服务端的连接已经释放了,但是服务端到客户端的连接还未释放。这表示客户端已经没有数据发送了,但是服务端可能还要给客户端发送数据。

  • 第三次挥手:服务端向客户端发送连接释放报文(FIN=1,ACK=1),主动关闭连接,同时等待 ACK 的确认
    • 序列号 seq = w,即服务端上次发送的报文的最后一个字节的序号 + 1。如果半关闭状态,服务端没有发送数据,那么 w == k
    • 确认号 ack = u + 1,与第二次挥手相同,因为这段时间客户端没有发送数据
  • 第四次挥手:客户端收到服务端的连接释放报文后,立即发出确认报文(ACK=1),序列号 seq = u + 1,确认号为 ack = w + 1

此时,客户端就进入了 TIME-WAIT 状态。注意此时客户端到 TCP 连接还没有释放,必须经过 2*MSL(最长报文段寿命)的时间后,才进入 CLOSED 状态。而服务端只要收到客户端发出的确认,就立即进入 CLOSED 状态。可以看到,服务端结束 TCP 连接的时间要比客户端早一些。

TCP 规定,[FIN/ACK] 包即使没有传送数据,也会消耗掉一个序列号。[FIN/ACK] 包是第一、三次挥手:

  • 第一次挥手时,客户端的序列号 seq = u,消耗一个序列号。因此:
    • 第二次挥手时,服务端的确认号 ack = u + 1
    • 第四次挥手时,客户端的序列号 seq = u + 1
  • 第三次挥手时,服务端的序列号 seq = w,消耗一个序列号。因此:
    • 第四次挥手时,客户端的确认号 ack = w + 1

为什么需要四次挥手

因为 TCP 是全双工的,一方关闭连接后,另一方还可以继续发送数据。所以四次挥手,将断开连接分成两个独立的过程

为什么四次挥手,客户端的TIME-WAIT状态必须等待2MSL的时间,才能返回到CLOSED状态

主要有两个原因:

(1) 确保 ACK 报文能够到达服务端,从而使服务端正常关闭连接。

第四次挥手时,客户端第四次挥手的 ACK 报文不一定会到达服务端。服务端会超时重传 FIN/ACK 报文,此时如果客户端已经断开了连接,那么就无法响应服务端的二次请求,这样服务端迟迟收不到 FIN/ACK 报文的确认,就无法正常断开连接。

MSL 是报文段在网络上存活的最长时间。客户端等待 2MSL 时间,即「客户端 ACK 报文 1MSL 超时 + 服务端 FIN 报文 1MSL 传输」,就能够收到服务端重传的 FIN/ACK 报文,然后客户端重传一次 ACK 报文,并重新启动 2MSL 计时器。如此保证服务端能够正常关闭。

那如果服务端重发的 FIN 没有成功地在 2MSL 时间里传给客户端,会怎样?服务端会继续超时重试直到断开连接,见下文。

(2) 防止已失效的连接请求报文段出现在之后的连接中。

TCP 要求在 2MSL 内不使用相同的序列号。客户端在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以保证本连接持续的时间内产生的所有报文段都从网络中消失。这样就可以使下一个连接中不会出现这种旧的连接请求报文段。或者即使收到这些过时的报文,也可以不处理它。

如果已经建立了连接,但是客户端出现故障了怎么办?

或者说,如果三次握手阶段、四次挥手阶段的包丢失了怎么办?比如上面描述的“服务端重发 FIN”的问题。

简而言之,通过定时器 + 超时重试机制,尝试获取确认,直到最后会自动断开连接。

具体而言,TCP 设有一个保活计时器。服务器每收到一次客户端的数据,都会重新复位这个计时器,时间通常是设置为 2 小时。若 2 小时还没有收到客户端的任何数据,服务器就开始重试:每隔 75 秒发送一个探测报文段,若一连发送 10 个探测报文后客户端依然没有回应,那么服务器就认为连接已经断开了。

使用tcpdump抓包分析

操作

tcpdump是一个命令行工具,可以打印网络接口上传输的 TCP 报文。

在一个终端窗口执行以下命令,监听与www.baidu.com传输的数据包

tcpdump -n host www.baidu.com # 可能需要 sudo 权限

参数说明:

  • -n:不要将 host.port 转成域名
  • host:监听发到特定主机与端口的流量
    如图,开始成功监听:
    请添加图片描述

随后再开启一个终端窗口,执行以下命令,访问 www.baidu.com

curl www.baidu.com:

可以看到 tcpdump 打印了信息

其中一定包含三次握手建立连接、发送数据包、四次挥手断开连接这几个过程。接下来一一分析。约定:客户端就是本机,服务端就是百度的服务器。

子网掩码的作用

子网掩码是用于划分网络地址和主机地址的一个32位二进制数。
它与IP地址结合使用,用于确定一个IP地址中哪些位表示网络地址,哪些位表示主机地址。

子网掩码的作用主要有两个方面:

1、确定网络地址:子网掩码通过将IP地址中的网络部分与主机部分进行分隔,将网络地址和主机地址进行划分。子网掩码中的1表示网络部分,0表示主机部分。通过与IP地址进行逻辑与运算,可以得到网络地址。
2、确定主机地址范围:子网掩码中的0表示主机部分,确定了主机地址的范围。主机地址范围就是同一个网络中可以分配给主机的不同IP地址。子网掩码中主机部分的位数可以决定主机地址的数量,可以根据主机地址范围来分配IP地址给不同的主机。

总的来说:它可以帮助路由器和交换机等网络设备正确地识别网络地址和主机地址,实现数据的正确传输和路由。

ABC类网络

类别地址范围默认子网掩码网络部分主机部分每个网络支持的主机数量可用网络数量
A类0.0.0.0 - 127.255.255.255255.0.0.0 /88 位24 位16,777,214128 个
B类128.0.0.0 - 191.255.255.255255.255.0.0 /1616 位16 位65,53416,384 个
C类192.0.0.0 - 223.255.255.255255.255.255.0 /2424 位8 位2542,097,152 个

应用场景:

A 类网络:适用于需要大量主机的非常大的网络(例如,大型 ISP 或跨国公司),但网络数量较少。

B 类网络:适用于中型网络,既能支持较多的主机,又能支持一定数量的子网。常用于中型公司或组织。

C 类网络:适用于小型网络,适合家庭、个人用户或小型企业,支持的主机较少,但支持较多的子网。

1100000000
255.255.255.192

TCP和UDP的区别

特性TCPUDP
连接类型面向连接(需要建立和断开连接)无连接(无建立过程)
可靠性提供可靠的传输,保证数据完整性不保证可靠性,可能丢包、重复或乱序
速度较慢,延迟较高较快,延迟较低
重传机制有,丢包时会自动重传无,丢包时不会重传
顺序控制有,保证数据按顺序到达无,数据可能乱序
使用场景需要高可靠性、顺序保证的应用(如网页、文件传输)对实时性要求高、丢包可容忍的应用(如视频流、在线游戏)
  • 选择 TCP:如果你的应用需要确保数据传输的可靠性、顺序控制,并且可以容忍一定的延迟(如网页浏览、文件传输、电子邮件等),就应该使用 TCP。
  • 选择 UDP:如果你的应用需要快速传输数据,且对丢包有一定容忍度,且不需要顺序控制(如流媒体、在线游戏、DNS 查询等),就应该使用 UDP。

状态码

200 - 成功处理请求

400 - 客户端不理解请求的语法。

401 - 未授权

404 - 未找到页面

500 - 服务器遇到错误,无法请求

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

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

相关文章

AI 编程助手 cursor的系统提示词 prompt

# Role 你是一名极其优秀具有10年经验的产品经理和精通java编程语言的架构师。与你交流的用户是不懂代码的初中生,不善于表达产品和代码需求。你的工作对用户来说非常重要,完成后将获得10000美元奖励。 # Goal 你的目标是帮助用户以他容易理解的…

【服务器与本地互传文件】远端服务器的Linux系统 和 本地Windows系统 互传文件

rz 命令:本地上传到远端 rz 命令:用于从本地主机上传文件到远程服务器 rz 是一个用于在 Linux 系统中通过 串口 或 SSH 上传文件的命令,它实际上是 lrzsz 工具包中的一个命令。rz 命令可以调用一个图形化的上传窗口,方便用户从本…

Unity贴图与模型相关知识

一、贴图 1.贴图的类型与形状 贴图类型 贴图形状 2.在Unity中可使用一张普通贴图来生成对应的法线贴图(但并不规范) 复制一张该贴图将复制后的贴图类型改为Normal Map 3.贴图的sRGB与Alpha sRGB:勾选此选项代表此贴图存储于Gamma空间中…

Python----数据结构(哈希表:哈希表组成,哈希冲突)

一、哈希表 哈希表(Hash table)是一种常用、重要、高效的数据结构。 哈希表通过哈希函数,可以快速地将键(Key)映射到值(Value)。从而允许在近常数时间内对键关联的值进行插入、删除和查找操作。 哈希表的主要思想是通过哈希函数将键转换为索引,将索引映射到数组中…

java方法学习

java 方法 在Java中,方法是类(或对象)的行为或功能的实现。(一起实现一个功能)java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段。 方法是解决一类问题步骤的有序结合。 方法包含于类或…

网络运维学习笔记 015网工初级(HCIA-Datacom与CCNA-EI)NAT网络地址转换

文章目录 NAT(Network Address Translation,网络地址转换)思科:1)PAT2)静态端口转换 华为:1)EasyIP2)NAT Server静态NAT:动态NAT:实验1:在R1上配置NAPT让内网…

强化学习的数学原理-六、随机近似与随机梯度下降

代码来自up主【强化学习的数学原理-作业】GridWorld示例代码(已更新至DQN、REINFORCE、A2C)_哔哩哔哩_bilibili SGD、GD、MGD举例: # 先初始化一个列表,未来要在这100个样本里面再sample出来 np.random.seed(0) X np.linspace(-…

问卷数据分析|SPSS实操之相关分析

皮尔逊还是斯皮尔曼的选取主要看数据的分布 当数据满足正态分布且具有线性关系时,用皮尔逊相关系数 当有一个不满住时,用斯皮尔曼相关系数 1. 选择分析--相关--双变量 2. 将Z1-Y2加入到变量中,选择皮尔逊 3. 此处为结果,可看我案…

jsherp importItemExcel接口存在SQL注入

一、漏洞简介 很多人说管伊佳ERP(原名:华夏ERP,英文名:jshERP)是目前人气领先的国产ERP系统虽然目前只有进销存财务生产的功能,但后面将会推出ERP的全部功能,有兴趣请帮点一下 二、漏洞影响 …

解决华硕主板的Boot界面无法设置M.2的系统启动盘问题

一、问题描述 当我们的华硕主板电脑开机后,发现电脑无法正常进入Windows系统界面,直接显示PXE网络网络信息;且知道我们进入到BIOS界面也无法找到选择系统盘,界面只显示【UEFI:PXE IP4 Intel(R) Ethernet】、【UEFI:PXE IP6 Intel(…

BuildFarm Worker 简要分析

更多BuildFarm/Bazel/Remote Execution API的文章见我的个人博客: Bazel 报错:/tmp/external/gcc_toolchain_x86_64_files/bin/x86_64-linux-gcc: No such file or directory 记录Bazel 编译 java 代码为独立运行的 jar 包的方法BuildFarm S…

docker修改镜像默认存储路径(基于页面迁移)

文章目录 1、停止服务2、拷贝镜像3、docker界面设置路径4、重新启动服务5、重启电脑 1、停止服务 桌面底部右键打开任务管理器 停止docker服务 2、拷贝镜像 从原目录拷贝到新的目录下,新的目录自己定,如果没有权限,需要先对原文件添加权限…

基于ffmpeg+openGL ES实现的视频编辑工具-opengl相关逻辑(五)

在我们的项目中,OpenGL ES 扮演着至关重要的角色,其主要功能是获取图像数据,经过一系列修饰后将处理结果展示到屏幕上,以此实现各种丰富多样的视觉效果。为了让大家更好地理解后续知识,本文将详细介绍 OpenGL 相关代码。需要注意的是,当前方案将对 OpenGL 的所有操作都集…

机器学习实战(7):聚类算法——发现数据中的隐藏模式

第7集:聚类算法——发现数据中的隐藏模式 在机器学习中,聚类(Clustering) 是一种无监督学习方法,用于发现数据中的隐藏模式或分组。与分类任务不同,聚类不需要标签,而是根据数据的相似性将其划…

七星棋牌顶级运营产品全开源修复版源码教程:6端支持,200+子游戏玩法,完整搭建指南(含代码解析)

棋牌游戏一直是移动端游戏市场中极具竞争力和受欢迎的品类,而七星棋牌源码修复版无疑是当前行业内不可多得的高质量棋牌项目之一。该项目支持 6大省区版本(湖南、湖北、山西、江苏、贵州),拥有 200多种子游戏玩法,同时…

uniapp邪门事件

很久之前在这篇《THREEJS 在 uni-app 中使用(微信小程序)》:THREEJS 在 uni-app 中使用(微信小程序)_uni-app_帶刺的小葡萄-华为开发者空间 中学到了如何在uniapp的微信小程序里接入three.js的3d模型 由于小程序自身很…

【OS安装与使用】part6-ubuntu 22.04+CUDA 12.4运行MARL算法(多智能体强化学习)

文章目录 一、待解决问题1.1 问题描述1.2 解决方法 二、方法详述2.1 必要说明2.2 应用步骤2.2.1 下载源码并安装2.2.2 安装缺失的依赖项2.2.3 训练执行MAPPO算法实例 三、疑问四、总结 一、待解决问题 1.1 问题描述 已配置好基础的运行环境,尝试运行MARL算法。 1…

人工智能(AI)的不同维度分类

人工智能(AI)的分类 对机器学习进行分类的方式多种多样,可以根据算法的特性、学习方式、任务类型等不同维度进行分类这些分类都不是互斥的: 1、按数据模态不同:图像,文本,语音,多态等 2、按目标函数不同:判别式模型…

从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(一)

项目包含5个模块 1.首页 (聊天主页) 2.注册 3.登录 4.个人资料 5.设置主题 一、配置开发环境 建立项目文件夹 mkdir chat-project cd chat-project mkdir server && mkdir webcd server npm init cd web npm create vitelatest 创建前端项目时我们选择javascrip…

【论文精读】VLM-AD:通过视觉-语言模型监督实现端到端自动驾驶

论文地址: VLM-AD: End-to-End Autonomous Driving through Vision-Language Model Supervision 摘要 人类驾驶员依赖常识推理来应对复杂多变的真实世界驾驶场景。现有的端到端(E2E)自动驾驶(AD)模型通常被优化以模仿…