计算机网络基础知识分享

news2024/9/28 5:24:00

计算机网络基础知识分享

发送一个http请求,从客户端到服务器端,都经历了什么?

互联网整体架构

在这里插入图片描述

**Ⅰ,浏览器生成消息 **

(1)浏览器输入网址

我们的探索之旅从在浏览器中输入网址开始,网址,准确来说应该叫 URL。常见的就是以 http:// 开头的那一串东西,但实际 上除了“http:”,网址还可以以其他一些文字开头,例如“ftp:”“file:” “mailto:”等。

几种常见的URL

几种常见的URL

尽管 URL 有各种不同的写法,但它们有一个共同点,那就是 URL 开 头的文字,即“http:”“ftp:”“file:”“mailto:”这部分文字都表示浏览器应 当使用的访问方法。比如当访问 Web 服务器时应该使用 HTTP 协议,而 访问 FTP 服务器时则应该使用 FTP 协议。因此,我们可以把这部分理解为 访问时使用的协议类型 。尽管后面部分的写法各不相同,但开头部分的内容决定了后面部分的写法,因此并不会造成混乱。

(2)浏览器解析URL

在这里插入图片描述

特殊情况: index.html 或者 default.htm

(a)http://www.lab.glasscom.com/dir/

(b)http://www.lab.glasscom.com/

(c)http://www.lab.glasscom.com

(d)http://www.lab.glasscom.com/whatisthis

解析完 URL 之后,我们就知道应该要访问的目标在哪里了。接下来看看浏览器使用 HTTP 协议来访问 Web 服务器

(3)HTTP协议

在这里插入图片描述

HTTP协议的基本思路:

首先,客户端会向服务器发送请求消息。请求 消息中包含的内容是“对什么”和“进行怎样的操作”两个部分。

对什么:URI

进行怎样的操作:方法

在这里插入图片描述

对 URL 进行解析之后,浏览器确定了 Web 服务器和文件名,接下 来就是根据这些信息来生成 HTTP 请求消息了。

生成HTTP请求消息

HTTP 消息在 格式上是有严格规定的,因此浏览器会按照规定的格式来生成请求消息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(4)向 DNS 服务器查询 Web 服务器的 IP 地址

生成 HTTP 消息之后,尽管浏览器能够解析网址并生成 HTTP 消息,但它本身并不具备将消息发送到网络中的功能,因此这一功能需要委托操作系统来实现。在进行这一操作时,我们还需要查询网址中服务器域名对应的 IP 地址。因为在网络中需要通过IP地址才能判断出访问对象服务器的位置。IP地址基本思路图

在这里插入图片描述

栋:网络号

号:主机号

实际的 IP 地址是一串32 比特的数字,按照 8 比特(1 字节)为一组分成 4 组,分别用十进制表示然后再用圆点隔开。这就是我们平常经常见到的 IP 地址格式。如:10.11.12.13

但仅凭这一串数字我们无法区分哪部分是网络号,哪部分是主机号。在 IP 地址的规则中,网络号和主机号连起来总共是 32 比特,但这两部分的具体结构是不固定的。在组建网络时,用户可以自行决定它们之间的分配关系,因此,我们还需要另外的附加信息来表示 IP 地址的内部结构。

这一附加信息称为子网掩码。是一串与 IP 地址长度相同的 32 比特数字,其左边一半都是 1,右边一半都是0。其中,子网掩码为 1 的部分表示网络号,子网掩码为 0 的部分表示主机号。

在这里插入图片描述

通过IP地址和子网掩码确定网络号和主机号
在这里插入图片描述


这种子网掩码写法太长,我们也可以把 1 的部分的比特数用十进制表示
在这里插入图片描述


IP 地址的主机号

全 0:表示整个子网

全 1:表示向子网上所有设备发送包,即“广播”

现在我们知道了通过ip地址可以查找到目标服务器,但是ip地址是一串数字,记忆起来都是比较困难。所以我们可以通过服务器名称来表示IP地址。

需要有一个机制能够通过名称来查询 IP 地址,或者通过 IP 地址来查询名称,这个机制就是 DNS

DNS基本查询原理

DNS 服务器的基本工作就是接收来自客户端的查询消息,然后根据消息的内容返回响应。

其中,来自客户端的查询消息包含以下 3 种信息。

(a)域名

​ 服务器、邮件服务器(邮件地址中 @ 后面的部分)的名称

(b) Class

​ 在最早设计 DNS 方案时,DNS 在互联网以外的其他网络中的应用也被考虑到了,而 Class 就是用来识别网络的信息。不过,如今除了互联网并没有其他的网络了,因此 Class 的值永远是代表互联网的 IN

(c)记录类型

​ 表示域名对应何种类型的记录。例如,当类型为 A 时,表示域名对应的是 IP 地址;当类型为 MX 时,表示域名对应的是邮件服务 器。对于不同的记录类型,服务器向客户端返回的信息也会不同。

DNS 服务器上事先保存有前面这 3 种信息对应的记录数据,如下图(例如,对于一个邮件地址 tone@glasscom.com,当需要知道这个地址对应的邮件服务器时,我们需要提供 @ 后面的那一串名称。查询消息的内容如下。)

在这里插入图片描述

寻找相应的DNS服务器并获取IP地址

我们已经知道了从DNS服务器可以查询到域名的相关ip信息,所以我们现在来探究如何找到某个域名对应的DNS服务器。

互联网中有数万台 DNS 服务器,肯定不能一台一台挨个去找。我们可以采用下面的办法。首先,将负责管理下级域的 DNS 服务器的 IP 地址注册到它们的上级 DNS 服务器中,然后上级 DNS 服务器的 IP 地址再注册到 更上一级的 DNS 服务器中,以此类推。

例如:lab.glasscom.com

lab.glasscom.com 这个域的 DNS 服务器的 IP 地址需要注册到 glasscom.com 域的 DNS 服务器中,

而 glasscom.com 域的 DNS 服务器的 IP 地址又需要注册到 com 域的 DNS 服务器中。

我们就可以通过上级 DNS 服务器查询出下级 DNS 服务器的 IP 地址.

似乎 com、jp 这些域(称为顶级域)就是最顶层了,但实际上并非如此。在互联网中,com 和 jp 的上面还有一级域,称为根域。根域不像 com、jp 那样有自己的名字,因此在一般书写域名时经常被省略,如果要明确表示根域,应该像 www.lab.glasscom.com**.** 这样在域名的最后再加上一个句点,而这个最后的句点就代表根域。不过,一般都不写最后那个句点,因此根域的存在往往被忽略,但根域毕竟是真实存在的,根域的 DNS 服务器中保管着 com、jp 等的 DNS 服务器的信息。

根域的 DNS 服务器信息保存在互联网中所有的 DNS 服务器中。这样一来,任何 DNS 服务器就都可以找到并访问根域 DNS 服务器了.分配给根域 DNS 服务器 的 IP 地址在全世界仅有13 个 ,而且这些地址几乎不发生变化,因此将这些地址保存在所有的 DNS 服务器中也并不是一件难事。实际上,根域 DNS 服务器的相关信息已经包含在 DNS 服务器程序的配置文件中了,因此只要安装了 DNS 服务器程序,这些信息也就被自动配置好了。

www.lab.glasscom.com

在这里插入图片描述

在真实的互联网中,一台 DNS 服务器可以管理多个域的信息。上级域和下级域有可能共享同一 台 DNS 服务器。在这种情况下,访问上级 DNS 服务器时就可以向下跳过一级 DNS 服务器,直接返回再下一级 DNS 服务器的相关信息。而且 DNS 服务器有一个缓存功能,可以记住之前查询过的域名。如果要查询的域名和相关信息已经在缓存中,那么就可以直接返回响应。

(5)委托协议栈发送消息

知道了 IP 地址之后,就可以委托操作系统内部的协议栈向这个目标 IP 地址发送消息了。要发送给 Web服务器的 HTTP消息是一种数字信息(digital data),因此也可以说是委托协议栈来发送数字信息。

收发数据是使用Socket 库中的程序组件来实现的,简单来说,收发数据的两台计算机之间连接了一条数据通道,数据沿着这条通道流动,最终到达目的地。我们可以把数据通道想象成一条管道,将数据从一端送入管道,数据就会到达管道的另一端然后被取出。数据可以从任何一端被送入管道,数据的流动是双向的。

在这里插入图片描述

建立管道的关键在于管道两端的数据出入口,这些出入口称为套接字。我们需要先创建套接字,然后再将套接字连接起来形成管道。

收发数据的操作可分为4个阶段。

(1)创建套接字(创建套接字阶段)

(2)将管道连接到服务器端的套接字上(连接阶段)

(3)收发数据(通信阶段)

(4)断开管道并删除套接字(断开阶段)

在这里插入图片描述

Ⅱ,电信号传输TCP/IP数据

我们从解析浏览器中输入的网址开始,探索了生成 HTTP 请求消息、委托操作系统发送消息等步骤。 现在,我们将讲解操作系统中的协议栈是如何处理数据发送请求的。

在这里插入图片描述

(应用程序那一层,Socket库用来收发数据,而解析器用于向DNS服务器发出查询)。

接下来我们看看操作系统部分,其中包括协议栈。协议栈的上半部分有两块,分别是负责用 TCP 协议收发数据的部分和负责用 UDP 协议收发数据的部分,它们会接受应用程序的委托执行收发数据的操作。

下面一半是用 IP 协议控制网络包收发操作的部分。在互联网上传送数据时,数据会被切分成一个一个的网络包,而将网络包发送给通信对象的操作就是由 IP 来负责的。此外,IP 中还包括 ICMP 协议和 ARP 协议。 ICMP 用于告知网络包传送过程中产生的错误以及各种控制消息,ARP 用于根据 IP 地址查询相应的以太网 MAC 地址 。 IP下面的网卡驱动程序负责控制网卡硬件,而最下面的网卡则负责完成实际的收发操作,也就是对网线中的信号执行发送和接收的操作。

(1)套接字

在协议栈内部有一块用于存放控制信息的内存空间,这里记录了用于控制通信操作的控制信息,例如通信对象的 IP 地址、端口号、通信操作的进行状态等。本来套接字就只是一个概念而已,我们可以说这些控制信息就是套接字的实体,或者说存放控制信息的内存空间就是套接字的实体。

协议栈是根据套接字中记录的控制信息来工作的.

在这里插入图片描述

(2)连接服务器

在连接阶段,由于数据收发还没有开始,网络包中没有实际的数据,只有控制信息。这些控制信息位于网络包的开头,因此被称为头部。客户端和服务器在通信中会将必要的信息记录在头部并相互确认。此外,以太网和 IP 协议也有自己的控制信息,这些信息也叫头部,为了避免各种不同的头部发生混淆, 我们一般会记作 TCP 头部、以太网头部(MAC头部)、IP 头部。

在这里插入图片描述

TCP头部格式

在这里插入图片描述

连接操作过程,从从应用程序调用 Socket 库的 connect 开始的

connect(< 描述符 >, < 服务器 IP 地址和端口号 >, …)

connect中的套接字会传递给协议栈中的 TCP 模块。然后TCP 模块会与服务器的 TCP模块交换控制信息,这一交互过程包括下面几个步骤

三次握手

在这里插入图片描述

(3)收发数据

当控制流程从 connect 回到应用程序之后,接下来调用 write 将要发送的数据交给协议栈。协议栈并不关心应用程序传来的数据是什么内容。在协议栈看来,要发送的数据就是 一定长度的二进制字节序列而已。

协议栈并不是一收到数据就马上发送出去,而是会将数据存放在内部的发送缓冲区中,并等待应用程序的下一段数据。在数据积累到一定量时再发送出去。判断要素是每个网络包能容纳的数据长度,协议栈会根据一个叫作 MTU 的参数来进行判断。

MTU 表示一个网络包的最大长度,在以太 网中一般是 1500 字节。MTU 是包含头部的总长度,因此需要从 MTU 减去头部的长度,然后得到的长度就是一个网络包中所能容纳的最大数据长度,这一长度叫作 MSS

在这里插入图片描述

发送缓冲区中的数据会被以 MSS 长度为单位进行拆分,拆分出来的每块数据会被放进单独的网络包中。在每一块数据前面加上 TCP 头部,并根据套接字中记录的控制信息标记发送方和接收方的端口号,然后交给 IP 模块来执行发送数据的操作。

在这里插入图片描述

1,ACK号

到这里,网络包已经装好数据并发往服务器了,但数据发送操作还没有结束。TCP 具备确认对方是否成功收到网络包,以及当对方没收到时进行重发的功能。(首先,TCP 模块在拆分数据时, 会先算好每一块数据相当于从头开始的第几个字节,接下来在发送这一块 数据时,将算好的字节数写在 TCP 头部中,“序号”字段就是派在这个用场上的。然后,发送数据的长度也需要告知接收方,不过这个并不是放在 TCP 头部里面的,因为用整个网络包的长度减去头部的长度就可以得到数据的长度,所以接收方可以用这种方法来进行计算。有了上面两个数值, 我们就可以知道发送的数据是从第几个字节开始,长度是多少了。)

具体流程看下图:

在这里插入图片描述

在实际的通信中, 序号并不是从 1 开始的,而是需要用随机数计算出一个初始值,这是因为如果序号都从 1 开始,通信过程就会非常容易预测,有人会利用这一点来发动攻击。

在这里插入图片描述

如果对方没有返回某些包对应 的 ACK 号,那么就重新发送这些包。通过这一机制,我们可以确认接收方有没有收到某个包,如果没有收到则重新发送,这样一来,无论网络中发生任何错误, 我们都可以发现并采取补救措施(重传网络包)。

并且TCP会在发送数据的过程中持续测量 ACK 号的返回时间,如果 ACK 号返回变慢,则相应延长等待时间;相对地,如果 ACK号马上就能返回,则相应缩短等待时间(动态跳转等待时间)。

使用窗口有效管理ACK号

(每发送一个包就等到ACK,这样子的传输效率太慢了),TCP采用滑动窗口的方式来解决这个问题,如下图

在这里插入图片描述

并且为了防止数据到达的速率处理这些数据并传递给应用程序的速率还要快的情况,接收方会通过 TCP 头部中的窗口字段将自己能接收的数据量告知发送方,发送发会根据窗口字段动态跳转发送数据量。

在这里插入图片描述

ACK 与窗口的合并

接收方在发送 ACK 号和窗口更新时,并不会马上把包发送出去,而是会等待一段时间,在这个过程中很有可能会出现其他的通知操作, 这样就可以把两种通知合并在一个包里面发送了。

举个例子,在等待发送 ACK 号的时候正好需要更新窗口,这时就可以把 ACK 号和窗口更新放在 一个包里发送,从而减少包的数量。

当需要连续发送多个 ACK 号时,也可以减少包的数量,这是因为 ACK 号表示的是已收到的数据量,也就是说,它是告诉发送方目前已接收的数据的最后位置在哪里,因此当需要连续发送 ACK 号时,只要发送最后一个ACK 号就可以了,中间的可以全部省略。

当需要连续发生窗口更新说明应用程序连续请求了数据,接收缓冲区的剩余空间连续增加。这种情况和 ACK号一样,可以省略中间过程,只要发送最终的结果就可以了。

总结:

首先,协议栈会检查收到的数据块和 TCP 头 部的内容,判断是否有数据丢失,如果没有问题则返回 ACK号。然后, 协议栈将数据块暂存到接收缓冲区中,并将数据块按顺序连接起来还原出 原始的数据,最后将数据交给应用程序。

(4)断开连接

首先,断开连接的一方的应用程序(假设是服务器)会调用 Socket 库的 close 程序。然后,服务器的协议栈会生成包含断开信息的 TCP 头部,具体来说就是将控制位中的 FIN 比特设为 1。接下来,协议栈会委托 IP 模块向客户端发送数据。同时,服务器的套接字中也会记录下断开操作的相关信息。

接下来轮到客户端了。当收到服务器发来的 FIN 为 1 的 TCP 头部时, 客户端的协议栈会将自己的套接字标记为进入断开操作状态。客户端会向服务器返回一个 ACK 号 ,用于告知服务器已收到 FIN 为 1 的包。

过了一会儿,应用程序就会调用 read 来读取数据 。这时,协议栈不会向应用程序传递数据 ,而是会告知应用程序(浏览器)来自服务器的数据已经全部收到了。因此,客户端应用程序会调用 close 来结束数据收发操作,这时客户端的协议栈也会和服务器一样,生成一个 FIN 比特为 1 的 TCP 包,然后委托 IP 模块发送给服务器。

一段时间之后,服务器就会返回 ACK 号。到这里,客户端和服务器的通信就全部结束了。

在这里插入图片描述

总结:TCP整体流程

在这里插入图片描述

TCP 模块在执行连接、收发、断开等各阶段操作时,都需要委托 IP 模 块将数据封装成包发送给通信对象。我们在 TCP 的讲解中也经常提到 IP, 下面就来讨论一下 IP 模块是如何将包发送给对方的。

在这里插入图片描述

过网络中有路由器和集线器两种不同的转发设备,它们在传输网络包时有着各自的分工。

1,路由器根据目标地址判断下一个路由器的位置,IP 协议根据目标地址判断下一个 IP 转发设备的位置(IP头)。

2,集线器在子网中将网络包传输到下一个路由。子网中的以太网协议将包传输到下一个转发设备(MAC头)。

首先,发送方将包的目的地,也就是要访问的服务器的 IP 地址写入 IP 头部中。接下来,IP 协议会委托以太网协议将包传输过去。

这时,IP 协议会查找下一个路由器的以太网地址(MAC 地址),并将这个地址写入 MAC 头部中。这样一来,以太 网协议就知道要将这个包发到哪一个路由器上了。

接下来,包会到达下一个路由器。路由器中有一张 IP 协议的路由表,可根据这张表以及 IP 头部中记录的目的地信息查出接下来应该发往哪个路由器。为了将包发到下一个路由器,我们还需要查出下一个路由器的MAC 地址,并记录到 MAC 头部中,大家可以理解为改写了 MAC 头部 。这样,网络包就又被发往下一个节点了。

在这里插入图片描述

ARP协议

IP 协议会查找下一个路由器的以太网地址(MAC 地址),并将这个地址写入 MAC 头部中。 IP协议通过 ARP 查询目标路由器的 MAC地址。

如果对方和自己处于同一个子网中(如果路由表的设置正确,那么对方应该在同一子网,否则对方无法作出 ARP 响应,这时只能认为对方不存在,包的发送操作就会失败。),ARP协议广播发送ARP请求对所有设备提问:“×× 这个 IP 地址是谁的?请把你的 MAC 地址告诉我。”然后就会有人回答:“这个 IP 地址是我的,我的 MAC 地址是××”。然后,我们将这个 MAC地址写入 MAC 头部,MAC头部就完成了。

在这里插入图片描述

相应地,如果每次都要发广播,那就会增加很多包,所以ARP也有缓存,如果其中已经保存了对方的 MAC 地址,就不需要发送 ARP 查询。

IP协议 生成了网络包,但只是存放在内存中 的一串数字信息,没有办法直接发送给对方。接下来,网卡将将数字信息转换为电或光信号,才能在网线上传输。现在整个一条线路差不多都通了。

Ⅲ,网线和网络设备

  1. 双绞线(Twisted Pair):双绞线是最常见的网络连接介质,用于以太网(Ethernet)和电话线路。它包括两对绝缘的铜线,通常被绕在一起,以减少干扰和电磁干扰。双绞线通常分为不同等级,如Cat 5、Cat 6和Cat 7,以支持不同的数据传输速度和距离。
  2. 同轴电缆(Coaxial Cable):同轴电缆由中心导体、绝缘层、屏蔽层和外部绝缘层组成。它通常用于有线电视、卫星电视和一些宽带互联网连接。
  3. 光纤(Fiber Optic):光纤是一种通过光脉冲传输数据的介质。它由玻璃或塑料纤维组成,具有高带宽和长距离传输的能力。光纤常用于高速互联网、数据中心互连和长距离通信。
  4. 无线连接:无线连接使用无线电波或微波信号来传输数据,而不需要物理电缆。这包括Wi-Fi、蓝牙、移动网络(如4G和5G)等。无线连接不依赖于物理介质,而是通过无线传输信号进行通信。
  5. 电力线通信(Power Line Communication,PLC):电力线通信使用电力线路来传输数据信号。这通常用于在家庭或办公室中利用电力线路建立网络连接。
  6. 卫星通信:卫星通信利用卫星传输数据信号,适用于远程地区或需要全球范围覆盖的通信。

集线器

集线器是一个简单的物理层设备,广播数据包到所有设备。集线器不理解数据包的内容,它只是物理层的转发设备。

交换机管理器(Managed Switch)

  • 管理型交换机允许网络管理员对网络流量和端口进行配置和管理,支持更复杂的网络设置。

交换机

交换机是一个数据链路层设备,根据MAC地址精确地将数据包转发到目标设备;

  • 交换机根据数据包中的目标MAC地址将数据包从发送端口转发到目标设备的端口,而不是广播到所有端口。这提高了网络效率。
  • 交换机通常具有MAC地址表,用于跟踪网络上各设备的MAC地址。

光猫

光猫是用户家庭或企业网络与光纤接入网络之间的关键接口。它将光纤提供的高速光信号转换为电信号,以便连接到用户的路由器、计算机或其他网络设备。

路由器

路由器是一个网络层设备,用于跨越不同网络并根据IP地址路由数据包。在路由器中也要维护一张表格,叫做路由条目表,用来反映如何到达某个 IP 地址网段(查找路由的下一跳),同时在路由器中也有 ARP 高速缓存,反映了该路由器各直接网段的 IP 地址和 MAC 地址的对应关系。

接入点(Access Point)

接入点用于扩展无线网络覆盖范围,允许设备通过Wi-Fi接入网络。

无线路由器(Wireless Router)

无线路由器连接有线网络和无线网络,允许设备通过Wi-Fi连接到网络。

防火墙(Firewall)

防火墙用于保护网络免受未经授权的访问和网络攻击,它可以过滤入站和出站流量,控制访问权限。

网关(Gateway)

网关是连接不同网络协议和技术的设备,充当不同网络之间的桥梁。

负载均衡器(Load Balancer)

负载均衡器用于平衡多台服务器之间的流量,以提高性能和可用性。

VPN集线器(VPN Hub)

VPN集线器用于建立虚拟私人网络(VPN)连接,以提供远程访问和安全通信。

网络存储设备(Network Attached Storage,NAS)

NAS设备用于存储和共享文件,允许多个设备访问共享文件。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙4.0基础开发教程

开发准备 熟悉鸿蒙官网安装DevEco studio开发工具 熟悉官网和安装开发工具视频,本套笔记基于这套视频所写 ArkTS语言 ArkTs语言文档 例如在页面做个按钮并带有点击效果需要html,css,js共同完成 html(按钮标签)-css(按钮样式)-js(控制按钮点击操作) 当学完了ArkTs即可以同时…

K8S三台服务器一键部署总结

随着互联网、云计算技术的深入发展&#xff0c;为降低企业大规模云应用建设的难度和成本&#xff0c;支持云应用开发、运行与运维一体化的云应用平台软件应运而生。在数通家族中对企业集成套件的云平台开发、部署、管理、运维进行统一管理&#xff0c;实现数据集成和共享的平台…

【Linux系统基础】(6)在Linux上大数据NoSQL数据库HBase集群部署、分布式内存计算Spark环境及Flink环境部署详细教程

大数据NoSQL数据库HBase集群部署 简介 HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。 和Redis一样&#xff0c;HBase是一款KeyValue型存储的数据库。 不过和Redis设计方向不同 Redis设计为少量数据&#xff0c;超快检索HBase设计为海量数据&#xff0c;…

基于深度学习的瓷砖色差分类方法研究——学习笔记(评价:色差的定义太模糊。。。问题描述不清楚,太水了)

文章目录 摘要0 引言1 瓷砖图像处理1.1 图像采集1.2 图像处理 2 基于深度学习的瓷砖色差分类算法设计2.1 数据预处理2.2 卷积神经网络的设计2.3 实验设计 3 瓷砖色差分类平台的设计与实现 摘要 瓷砖是人类建筑不可或缺的一种材料&#xff0c;而瓷砖品质最重要的指标之一就是色…

为什么要出现并发?并发的三要素

大家好&#xff0c;我是"java继父"伯约&#xff0c;假如这篇对大家有帮助的话求一个赞&#xff0c;另外文章末尾放了我从小白到架构师多年的学习资料。 1.为什么需要多线程 众所周知&#xff0c;CPU、内存、I/O 设备的速度是有极大差异的&#xff0c;为了合理利用 C…

一个利用摸鱼时间背单词的软件

大家好&#xff0c;我是 Java陈序员。 最近进入了考试季&#xff0c;各种考试&#xff0c;英语四六级、考研、期末考等。不知道大家的英语四六级成绩怎么样呢&#xff1f; 记得大学时&#xff0c;英语四级都是靠高中学习积累的老本才勉强过关。 而六级则是考了多次&#xff…

cesium实现二三维联动

记录项目中实现二三维地图联动 效果如下&#xff1a; 第一步&#xff1a;现在页面中加载二三维地图&#xff08;地图的初始化已省略&#xff09; <template><div><div><button click"show">二三维联动</button></div><div&…

【Datawhale 大模型基础】第十一章 环境影响

第十一章 环境影响 This blog is based on datawhale files and a paper. The initial consideration revolves around the potential positive or negative direct impact on the environment. Other transformative technological advancements, like the metaverse, are li…

Redis-实践知识

转自极客时间Redis 亚风 原文视频&#xff1a;https://u.geekbang.org/lesson/535?article681062 Redis最佳实践 普通KEY Redis 的key虽然可以自定义&#xff0c;但是最好遵循下面几个实践的约定&#xff1a; 格式&#xff1a;[业务名称]:[数据名]:[id] 长度不超过44字节 不…

C语言蛇形矩阵

文章目录 每日一言题目解题思路全部代码结语 每日一言 山有榛&#xff0c;隰有苓。云谁之思&#xff1f;西方美人。 --邶风简兮 题目 解题思路 话不多说&#xff0c;直接看图 通过观察图表&#xff0c;我想到了这种方法&#xff1a; 我将数字放置的位置分为两大类&#xff…

VMware虚拟机的安装配置

目录 一. VMware虚拟机的安装 二. VMware配置虚拟机 三. VMware安装windows server 2012 一. VMware虚拟机的安装 1. 双击安装&#xff0c;点击下一步 2. 勾选接受许可&#xff0c;点击下一步 3. 选择安装位置&#xff0c;点击下一步 4. 用户体验设置&#xff08;可选&#…

Matlab仿真2ASK/OOK、2FSK、2PSK、QPSK、4QAM在加性高斯白噪声信道中的误码率与归一化信噪比的关系

本文为学习所用&#xff0c;严禁转载。 本文参考链接 https://zhuanlan.zhihu.com/p/667382398 QPSK代码及高斯白噪声如何产生 https://ww2.mathworks.cn/help/signal/ref/butter.html 滤波器 https://www.python100.com/html/4LEF79KQK398.html 低通滤波器 本实验使用matlab仿…

LeetCode刷题--- 字母大小写全排列

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述递归递归、搜索与回…

磁钢的取向和充磁方向

充磁是磁钢生产中的必备工序&#xff0c;如果磁铁不充磁&#xff0c;就不具备磁性&#xff0c;也就丧失了作为永磁材料的基本功能。磁钢作为一个立体的工件&#xff0c;形状和尺寸各异&#xff0c;如何给磁钢充磁&#xff1f;不同方向的充磁效果一样吗&#xff1f;今天我们就来…

Spring源码分析---Bean 的生命周期 03

来源&#xff1a;Spring 3. Bean 的生命周期 自定义一个 SpringBoot 的主启动类&#xff1a; SpringBootApplication public class A03Application {public static void main(String[] args) {ConfigurableApplicationContext context SpringApplication.run(A03Applicatio…

什么牌子国产主食冻干猫粮好?十大放心猫粮国产名单前五名推荐

很多新手铲屎官在为自家猫咪购买猫食品时&#xff0c;都会非常注重成分和安全性。养了这么多年的猫&#xff0c;可以说&#xff0c;他们购买过的猫食品数量一定比大多数人都要多。自从冻干猫粮流行起来之后&#xff0c;很多铲屎官都开始给自家的猫咪喂冻干。冻干不仅可以作为主…

视觉学习(3) —— 使用调试助手与视觉连接

Modbus Slave 进入之后 点击进入 OK后 此处就代表完成&#xff0c;若是没有连接完成就如下图 回到视觉 将视觉参数设置好后&#xff0c;回到Modbus Slave&#xff0c;点击进行连接

postman的下载安装和使用

第一章、使用postman向后端发送请求 1.2&#xff09;postman下载与安装使用 我的百度网盘postman点击下载 提取码&#xff1a;bybp 下载后双击.exe文件直接安装 点击此次创建集合 点击此处创建请求 1.2&#xff09;发送get请求 选择自己的请求方式&#xff0c;输入请求…

vue3 配置 @符号

config,ts 配置 有 爆红 安装 npm install 一下 然后 配置 路径提示功能 tsconfig.json 配置 路径提示功能 一共这两个路径配置

【Linux系统基础】(5)在Linux上集群化环境前置准备及部署Zookeeper、Kafka软件详细教程

集群化环境前置准备 介绍 在前面&#xff0c;我们所学习安装的软件&#xff0c;都是以单机模式运行的。 后续&#xff0c;我们将要学习大数据相关的软件部署&#xff0c;所以后续我们所安装的软件服务&#xff0c;大多数都是以集群化&#xff08;多台服务器共同工作&#xf…