网络扫描神器:Nmap 保姆级教程(附链接)

news2024/11/16 16:29:48

一、介绍

Nmap(Network Mapper)是一款用于网络发现和安全审计的开源工具。它最初由 Gordon Lyon(也被称为 Fyodor Vaskovich)开发,是一款功能强大且广泛使用的网络扫描工具。Nmap 允许用户在网络上执行主机发现、端口扫描、服务识别和版本检测等操作,以帮助评估网络的安全性、发现主机和服务、以及识别潜在的安全威胁。

以下是 Nmap 的一些主要功能:

  1. 主机发现: Nmap 可以通过发送网络探测包(ping 扫描)来确定一个网络中活跃的主机。这有助于确定哪些 IP 地址上有活动的设备。

  2. 端口扫描: Nmap 可以扫描目标主机的开放端口,帮助确定哪些服务正在运行。它支持多种扫描技术,包括 TCP 扫描、UDP 扫描、SYN/ACK 扫描等。

  3. 服务识别: Nmap 可以识别目标主机上运行的具体服务和应用程序的版本号。这对于了解目标系统上可能存在的漏洞和弱点很有帮助。

  4. 操作系统检测: Nmap 能够尝试检测目标主机的操作系统类型和版本。这有助于识别网络中的不同操作系统,并为后续的渗透测试提供信息。

  5. 脚本扫描: Nmap 支持脚本扫描,允许用户执行自定义脚本以进行更深入的信息收集和安全审计。

  6. 版本检测: Nmap 可以检测目标系统上运行的服务的版本信息。这对于确定目标系统上可能存在的已知漏洞和安全问题非常有用。

  7. 输出格式: Nmap 可以生成多种输出格式,包括文本、XML、JSON 等,以便进一步的分析和报告。

Nmap 是一款非常灵活和强大的工具,它在安全团队、渗透测试人员和网络管理员之间广泛应用。需要注意的是,在使用 Nmap 进行网络扫描时,应该遵循适用的法律和道德准则,以确保合法和合规的使用。

二、安装 Nmap

Kail Linux 上默认安装了 Nmap,所以只需安装 Kail Linux 即可使用 Nmap。没有的可以参考一篇文章进行安装 Kail Linux 的操作

如何在 VM 虚拟机中安装 Kail Linux 2023.4 操作系统保姆级教程(附链接)icon-default.png?t=N7T8https://eclecticism.blog.csdn.net/article/details/135864762

三、使用 Nmap

3.1 主机

3.1.1 快速扫描

nmap ip

上述命令将执行一个默认的 TCP 端口扫描,显示目标主机上开放的端口以及相应的服务信息。 

3.1.2 扫描多个目标

nmap ip ip 

扫描多个目标只需跟上 IP 即可 

3.1.3 网段扫描

nmap ip/子网掩码

笔者是自己用 VM 虚拟机搭建的一个内网环境,可以看到有两台主机,一台正是咱们自己 Kail Linux

3.1.4 过滤 IP 的网段扫描

nmap ip/子网掩码 -exclude 需要过滤的 IP 或 文件

可以到过滤掉咱们自己后就只有一台主机了  

3.1.5 扫描存活主机

nmap -sP ip/子网掩码 

仅仅确定存活主机并不扫描端口

3.2 端口

Nmap所识别的6个端口状态。

open(开放的)

应用程序正在该端口接收TCP 连接或者UDP报文。发现这一点常常是端口扫描 的主要目标。安全意识强的人们知道每个开放的端口 都是攻击的入口。攻击者或者入侵测试者想要发现开放的端口。 而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。 非安全扫描可能对开放的端口也感兴趣,因为它们显示了网络上那些服务可供使用。

closed(关闭的)

关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应), 但没有应用程序在其上监听。 它们可以显示该IP地址上(主机发现,或者ping扫描)的主机正在运行up 也对部分操作系统探测有所帮助。 因为关闭的关口是可访问的,也许过会儿值得再扫描一下,可能一些又开放了。 系统管理员可能会考虑用防火墙封锁这样的端口。 那样他们就会被显示为被过滤的状态,下面讨论。

filtered(被过滤的)

由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则 或者主机上的软件防火墙。这样的端口让攻击者感觉很挫折,因为它们几乎不提供 任何信息。有时候它们响应ICMP错误消息如类型3代码13 (无法到达目标: 通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧, 不做任何响应。 这迫使Nmap重试若干次以访万一探测包是由于网络阻塞丢弃的。 这使得扫描速度明显变慢。

unfiltered(未被过滤的)

未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。 只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。 用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定 端口是否开放。

open|filtered(开放或者被过滤的)

当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃 了探测报文或者它引发的任何响应。因此Nmap无法确定该端口是开放的还是被过滤的。 UDP,IP协议, FIN,Null,和Xmas扫描可能把端口归入此类。

closed|filtered(关闭或者被过滤的)

该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。

3.2.1 端口扫描

 nmap ip -p 端口号

扫描「指定端口」,使用 -p 参数,可以一次扫描单个端口、多个端口、或扫描一个范围的端口 

3.2.2 端口范围扫描

nmap ip -p 范围

3.3 服务

3.3.1 识别服务版本

nmap -sV ip -p 端口号或范围

想要识别具体的「服务版本」,可以使用 -sV 参数。

3.4 系统

3.4.1 识别操作系统

nmap -O ip

想要识别「操作系统版本」,可以使用 -O 参数(需要 root 权限)

3.5 扫描基础

3.5.1 TCP 三次握手

建立TCP连接的过程通常包括三个步骤:连接建立、数据传输、连接释放。在这里,我们将主要关注连接建立的过程,这个过程通常称为TCP三次握手。

TCP 三次握手过程

第一步 - 客户端发起连接请求:

  • 客户端发送SYN(同步)包: 客户端向服务器发送一个TCP包,其中SYN标志位被设置为1,同时选择一个初始的序列号(Seq=X)。

源端口:随机端口号
目标端口:服务器的TCP端口号
SEQ:客户端选择的初始序列号
ACK:0
Flags:SYN=1, ACK=0, 其他标志位=0
窗口大小:(根据需要设置)

第二步 - 服务器回应连接请求:

  • 服务器发送SYN-ACK包: 服务器收到客户端的SYN包后,如果愿意建立连接,就向客户端发送一个响应,其中SYN和ACK标志位都被设置为1,同时服务器也选择一个初始的序列号(Seq=Y),并确认客户端的序列号(Ack=X+1)。

源端口:服务器的TCP端口号
目标端口:客户端的随机端口号
SEQ:服务器选择的初始序列号
ACK:客户端的初始序列号+1
Flags:SYN=1, ACK=1, 其他标志位=0
窗口大小:(根据需要设置)

第三步 - 客户端确认连接:

  • 客户端发送ACK包: 客户端收到服务器的SYN-ACK包后,向服务器发送确认包,其中ACK标志位设置为1,确认服务器的序列号(Ack=Y+1)。

 源端口:随机端口号
目标端口:服务器的TCP端口号
SEQ:客户端的初始序列号+1
ACK:服务器的初始序列号+1
Flags:ACK=1, 其他标志位=0
窗口大小:(根据需要设置)

3.6 扫描方式

3.5.1 TCP SYN 扫描

nmap -sS ip

TCP SYN 扫描是一种用于探测目标主机上开放端口的网络扫描技术。它属于 Nmap 工具中的一种扫描方式,通常用于获取目标系统的端口状态信息。TCP SYN 扫描的原理是发送TCP SYN包,根据目标主机的响应来判断端口的状态。

下面是 TCP SYN 扫描的工作原理:

  1. 发送TCP SYN包: 扫描发起者(通常是Nmap工具)向目标主机的指定端口发送TCP SYN包(同步包)。

  2. 等待响应: 如果目标端口是开放的,目标主机将返回一个TCP SYN/ACK包(同步/应答包)表示端口是开放的。如果目标端口是关闭的,目标主机将返回一个TCP RST包(复位包)表示端口是关闭的。

  3. 分析响应: 扫描发起者通过分析目标主机的响应来确定端口的状态。如果收到了 SYN/ACK 包,说明端口是开放的。如果收到了 RST 包,说明端口是关闭的。

  4. 不完全建立连接: 在完成第2步的过程中,扫描发起者不会完成TCP连接的建立,而是在收到响应后发送一个 RST 包,关闭连接。这样,扫描对目标系统的影响较小,因为它不会建立完整的连接。

3.5.2 TCP connect() 扫描

此扫描为默认扫描,不用加参数

TCP Connect 扫描是 Nmap 中的另一种常见的扫描技术。与 TCP SYN 扫描类似,TCP Connect 扫描也用于探测目标主机上的开放端口。它的工作原理是通过尝试建立完整的TCP连接来判断目标主机上的端口状态。

下面是 TCP Connect 扫描的工作原理:

  1. 尝试建立完整的TCP连接: 扫描发起者向目标主机的指定端口尝试建立完整的TCP连接。

  2. 等待响应: 如果目标端口是开放的,目标主机将接受连接并返回一个TCP ACK包(应答包)表示端口是开放的。如果目标端口是关闭的,连接尝试将失败,扫描发起者将收到一个连接拒绝错误。

  3. 分析响应: 扫描发起者通过分析目标主机的响应来确定端口的状态。如果连接成功建立,说明端口是开放的。如果连接被拒绝,说明端口是关闭的。

  4. 完成连接: 与 TCP SYN 扫描不同,TCP Connect 扫描会尝试建立完整的连接。因此,如果连接成功建立,扫描发起者可能会继续与目标主机交换一些数据。

3.5.3 UDP 扫描

nmap -sU ip

UDP(User Datagram Protocol)扫描是一种用于探测目标主机上开放的 UDP(非连接性协议)端口的扫描技术。与 TCP 扫描不同,UDP 扫描涉及到发送 UDP 数据包并分析目标主机的响应。由于 UDP 是面向无连接的协议,UDP 扫描相对复杂,因为没有类似于 TCP SYN/ACK 的确认机制。

以下是 UDP 扫描的工作原理:

  1. 发送UDP数据包: 扫描发起者向目标主机的指定 UDP 端口发送UDP数据包。

  2. 等待响应: 如果目标端口是开放的,目标主机将不发送响应,或者发送一个UDP应答包。如果目标端口是关闭的,目标主机通常会发送一个ICMP不可达消息。

  3. 分析响应: 扫描发起者通过分析目标主机的响应来确定端口的状态。缺乏确认机制使得 UDP 扫描相对不稳定,因为目标主机可能选择不响应请求,或者响应包被防火墙过滤。

需要注意的是,UDP 扫描可能会面临一些挑战,包括:

  • 不稳定性: 由于 UDP 的面向无连接性质,扫描可能会受到目标主机或防火墙的限制,导致结果不稳定。
  • 响应解释: 分析 UDP 响应相对复杂,因为目标主机可以选择不响应,或者发送一些与端口状态无关的信息。
  • 速度较慢: 由于UDP扫描涉及等待响应,可能需要较长时间来完成扫描。

3.5.4 TCP Null 扫描

nmap -sN ip

TCP Null 扫描是 Nmap 工具中的一种扫描技术,用于探测目标主机上的开放端口。与 TCP SYN 扫描和 TCP Connect 扫描不同,TCP Null 扫描尝试利用 TCP 协议的一个特性,即发送一个不包含任何标志位的 TCP 报文,来判断端口的状态。

以下是 TCP Null 扫描的工作原理:

  1. 发送TCP Null 包: 扫描发起者向目标主机的指定端口发送一个不包含任何标志位的 TCP 报文,即所有标志位均被设置为零。

  2. 等待响应: 如果目标端口是开放的,目标主机通常会忽略 TCP Null 报文,不发送任何响应。如果目标端口是关闭的,目标主机可能会发送一个 TCP RST(复位)包,表示端口是关闭的。

  3. 分析响应: 扫描发起者通过分析目标主机的响应来确定端口的状态。缺乏任何标志位的 TCP Null 报文通常在正常操作中是不合法的,因此,如果收到响应,则可能表示端口是关闭的。

3.5.5 TCP FIN 扫描

 nmap -sF ip

TCP FIN(Finish)扫描是 Nmap 工具中的一种扫描技术,用于探测目标主机上的开放端口。与 TCP SYN 扫描和 TCP Null 扫描类似,TCP FIN 扫描尝试利用 TCP 协议的一个特性,即发送一个不包含 SYN 标志位和其他标志位为零的 TCP 报文,来判断端口的状态。

以下是 TCP FIN 扫描的工作原理:

  1. 发送TCP FIN 包: 扫描发起者向目标主机的指定端口发送一个不包含 SYN 标志位的 TCP 报文,即 FIN 标志位被设置为 1,而其他标志位均被设置为零。

  2. 等待响应: 如果目标端口是开放的,目标主机通常会忽略 TCP FIN 报文,不发送任何响应。如果目标端口是关闭的,目标主机可能会发送一个 TCP RST(复位)包,表示端口是关闭的。

  3. 分析响应: 扫描发起者通过分析目标主机的响应来确定端口的状态。缺乏 SYN 标志位的 TCP FIN 报文通常在正常操作中是不合法的,因此,如果收到响应,则可能表示端口是关闭的。

3.5.6 TCP Xmas 扫描

nmap -sX ip

TCP Xmas(也称为Christmas Tree)扫描是 Nmap 工具中的一种扫描技术,用于探测目标主机上的开放端口。TCP Xmas 扫描尝试利用 TCP 协议的一个特性,即发送一个所有标志位均被设置为 1 的 TCP 报文,来判断端口的状态。

以下是 TCP Xmas 扫描的工作原理:

  1. 发送TCP Xmas 包: 扫描发起者向目标主机的指定端口发送一个所有标志位均被设置为 1 的 TCP 报文,即FIN、PSH、URG标志位均被设置为 1。

  2. 等待响应: 如果目标端口是开放的,目标主机通常会忽略 TCP Xmas 报文,不发送任何响应。如果目标端口是关闭的,目标主机可能会发送一个 TCP RST(复位)包,表示端口是关闭的。

  3. 分析响应: 扫描发起者通过分析目标主机的响应来确定端口的状态。缺乏标准标志位的 TCP Xmas 报文通常在正常操作中是不合法的,因此,如果收到响应,则可能表示端口是关闭的。

3.5.7 TCP ACK 扫描

nmap -sA ip

TCP ACK(Acknowledgment)扫描是 Nmap 工具中的一种扫描技术,用于确定目标主机上的端口状态。与其他 TCP 扫描技术不同,TCP ACK 扫描不关心端口是否开放,而是专注于获取目标主机对特定端口的响应。

以下是 TCP ACK 扫描的工作原理:

  1. 发送TCP ACK包: 扫描发起者向目标主机的指定端口发送一个只设置 ACK 标志位的 TCP 报文。

  2. 等待响应: 无论目标端口是开放还是关闭,目标主机通常会返回一个 TCP RST(复位)包,表示对未建立连接的 ACK 请求的拒绝。

  3. 分析响应: 扫描发起者通过分析目标主机的响应来确定端口的状态。如果收到 TCP RST 包,说明端口是关闭的;如果没有收到响应,说明端口可能是开放的或由防火墙过滤。

 3.5.8 TCP 窗口扫描

nmap -sW ip

TCP窗口扫描是一种用于探测目标主机上开放端口的扫描技术。这种扫描技术主要关注TCP协议中的窗口字段(Window Size)。

TCP窗口扫描的工作原理如下:

  1. 发送TCP包: 扫描发起者向目标主机的指定端口发送一个TCP包,其中SYN标志位被设置,但不设置ACK标志位。

  2. 等待响应: 如果目标端口是开放的,目标主机会响应一个包,其中SYN和ACK标志位都被设置,并且TCP窗口字段包含一个非零的值。如果目标端口是关闭的,目标主机可能会响应一个RST(复位)包,或者根本不响应。

  3. 分析响应: 扫描发起者通过分析目标主机的响应来确定端口的状态。如果收到SYN/ACK响应,并且TCP窗口字段的值不为零,那么端口可能是开放的。如果收到RST响应或者根本没有响应,那么端口可能是关闭的。

 3.5.9 TCP Maimon 扫描

nmap -sM ip

在网络扫描领域中,TCP Maimon Scan(又称 Maimonides Scan)是一种比较罕见的扫描技术,其命名来源于古代犹太学者拉比·莫西·马蒙尼德斯(Moses Maimonides)。该扫描技术利用了 TCP 协议的一些特性来确定目标主机上的端口状态。

TCP Maimon Scan 的工作原理如下:

  1. 发送TCP包: 扫描发起者向目标主机的指定端口发送一个TCP包,其中SYN和RST标志位都被设置,同时TCP窗口字段设置为零。

  2. 等待响应: 如果目标端口是开放的,目标主机会响应一个包,其中SYN、ACK和RST标志位都被设置,同时TCP窗口字段包含一个非零的值。如果目标端口是关闭的,目标主机可能会响应一个RST包。

  3. 分析响应: 扫描发起者通过分析目标主机的响应来确定端口的状态。如果收到SYN/ACK/RST响应,并且TCP窗口字段的值不为零,那么端口可能是开放的。如果收到RST响应,那么端口可能是关闭的。

 3.7 防火墙

3.7.1 报文分段

nmap -f ip

-f 参数用于在发送的TCP数据包中进行报文分段(fragmentation)。报文分段是将大的数据包分成更小的片段以适应网络传输的过程。在网络安全领域,报文分段经常用于绕过一些网络防火墙或入侵检测系统的检测。一些防火墙和IDS/IPS系统在处理大数据包时可能会存在漏洞,通过将数据包分成小片段,可以尝试绕过这些安全设备的检测。 

3.7.2 最大传输单元

nmap --mtu 1500 ip

--mtu 参数用于指定数据包的最大传输单元(MTU)。MTU是指一次能够通过通信链路的最大数据包大小。通过调整MTU,可以影响数据包的大小,从而可能绕过一些网络设备的检测。 

3.7.3 诱饵隐藏扫描

nmap -D <ip,ip,ip……> 目标 ip

-D 参数在Nmap中用于进行诱饵(decoy)扫描,通过在扫描中伪装其他主机的IP地址,使得被扫描目标难以确定扫描的真实来源。这有助于混淆目标主机的入侵检测系统,使其难以追踪扫描的发起者。

3.7.4 源地址哄骗

nmap -S <伪装的源 ip> ip 

3.7.5 源端口哄骗

nmap --source-port 或 -g <源端口号> ip 

--source-port-g 参数在Nmap中用于进行源端口欺骗(Source Port Spoofing)。它们允许你指定用于发送扫描请求的源端口号,这样可以对目标主机进行一些混淆,使得入侵检测系统难以准确追踪和识别扫描流量。 

3.7.6  附加随机数据

nmap --data-length <长度> ip

--data-length <number> 参数在Nmap中用于在发送的数据包中附加指定长度的随机数据。这个功能有助于混淆目标主机上的入侵检测系统,使得对扫描流量的分析更加困难。

3.7.7 生存时间

nmap --ttl <值> ip 

--ttl <value> 参数在Nmap中用于设置发送的数据包中的 IP Time-To-Live(TTL)字段的值。TTL是IP协议头部中的一个字段,用于指定数据包在网络上的最大生存时间,通常以跳数(hops)为单位。每经过一个路由器,TTL值就会减1,当TTL值减至0时,数据包将被丢弃,并且路由器会向源主机发送一个 ICMP Time Exceeded 错误消息。

3.7.8 MAC 地址哄骗

nmap --spoof-mac <mac 地址> ip 

--spoof-mac <mac address,prefix,or vendor name> 参数在Nmap中用于进行MAC地址欺骗,即伪装发送扫描请求的主机的MAC地址。MAC地址(Media Access Control address)是网络设备的唯一标识符。通过欺骗目标主机,改变扫描请求中的MAC地址,可以混淆入侵检测系统,使其难以追踪和识别扫描来源。 

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

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

相关文章

【十四】【C++】list 的常见用法

list 的初始化和遍历 /*list的初始化和遍历*/ #if 1 #include <list> #include <vector> #include <iostream> #include<algorithm> using namespace std;void TestList1(){list<int> L1;list<int> L2(10, 5);vector<int> v{1,2,3,4…

奇异值分解(SVD)的应用——图像压缩

SVD方法是模型降阶的一类重要方法&#xff0c;本征正交分解&#xff08;POD&#xff09;和平衡截断&#xff08;BT&#xff09;都属于SVD类方法。 要想深入了解模型降阶技术&#xff0c;我们可以先从SVD的应用入手&#xff0c;做一个直观的了解。 1. SVD的定义和分类 我们想寻找…

01-Spring实现重试和降级机制

主要用于在模块调用中&#xff0c;出现失败、异常情况下&#xff0c;仍需要进行重复调用。并且在最终调用失败时&#xff0c;可以采用降级措施&#xff0c;返回一般结果。 1、重试机制 我们采用spring 提供的retry 插件&#xff0c;其原理采用aop机制&#xff0c;所以需要额外…

无人机应用场景和发展趋势,无人机技术的未来发展趋势分析

随着科技的不断发展&#xff0c;无人机技术也逐渐走进了人们的生活和工作中。无人机被广泛应用于很多领域&#xff0c;例如遥感、民用、军事等等。本文将围绕无人机技术的应用场景和发展趋势&#xff0c;从多角度展开分析。 无人机技术的应用场景 无人机在遥感方面的应用&…

2024 年,如何用 6 个月拿下 30 万年薪的区块链开发?

《区块链简易速速上手小册》开源系列专栏 文章目录 一、了解区块链二、简易速速上手小册系列&#xff08;开源版&#xff09;三、具体安排参考第1个月&#xff1a;基础加固第2个月&#xff1a;区块链原理与技术第3个月&#xff1a;深入智能合约开发第4个月&#xff1a;区块链平…

vtkActor 设置特定图层 显示及置顶显示

问题&#xff0c;有时我们需要显示某个 Actor 在相机最前面&#xff0c;可以遮盖后面的物体;显示在顶层有点不准确&#xff1b;因为这个还相机位置也有关系&#xff1b; 这里讲三种情况&#xff1a; 1. 设置 Mapper 顶层&#xff0c;尝试了一下&#xff0c;可以用于某些场景&…

C++ 模板初阶【函数模板,类模板】

文章目录 泛型编程函数模板概念函数模板的格式函数模板的原理函数模板的实例化隐式实例化:让编译器根据实参推演模板参数的实际类型显式实例化&#xff1a;在函数名后的<>中指定模板参数的实际类型 函数模板的匹配规则 类模板概念类模板格式类模板的实例化 泛型编程 在我…

【计算几何】确定两条连续线段向左转还是向右转

确定两条连续线段向左转还是向右转 目录 一、说明二、算法2.1 两点的叉积2.2 两个段的叉积 三、旋转方向判别3.1 左转3.2、右转3.3 共线判别 一、说明 如果是作图&#xff0c;或者是判别小车轨迹。为了直观地了解&#xff0c;从当前点到下一个点过程中&#xff0c;什么是左转、…

2-1 动手学深度学习v2-Softmax回归-笔记

回归 VS 分类 回归估计一个连续值分类预测一个离散类别 从回归到多类分类 回归 单连续数值输出输出的区间&#xff1a;自然区间 R \mathbb{R} R损失&#xff1a;跟真实值的区别 分类 通常多个输出&#xff08;这个输出的个数是等于类别的个数&#xff09;输出的第 i i i…

Redis核心技术与实战【学习笔记】 - 27.限制Redis Cluster规模的因素(通信开销)

简述 Redis Cluster 能保存的数据量以及支撑的吞吐量&#xff0c;跟集群实例规模相关。 Redis 官方给出了 Redis Cluster 的规模上线&#xff0c;就是一个集群运行 1000 个实例。 其实&#xff0c;限定 Redis Cluster 集群规模的一个关键因素就是&#xff0c;实例间的通信开销…

MySQL优化器

优化器 MySQL存储引擎中存在了一个可插拔的优化器OPTIMIZER_TRACE&#xff0c;可以看到内部查询计划的TRACE信息&#xff0c;从而可以知道MySQL内部执行过程 查询优化器状态 show variables like optimizer_trace;Variable_name Valueoptimizer_trace enabledoff,one_lineoff…

大模型实战营第二期——3. 基于 InternLM 和 LangChain 搭建你的知识库

github地址&#xff1a;InternLM/tutorial-书生浦语大模型实战营文档地址&#xff1a;基于 InternLM 和 LangChain 搭建你的知识库视频地址&#xff1a;基于 InternLM 和 LangChain 搭建你的知识库Intern Studio: https://studio.intern-ai.org.cn/console/instance动手学大模型…

如何在苹果Mac上进行分屏,多任务处理?

Apple 在 macOS Catalina 中引入了 Split View&#xff0c;让您可以同时查看两个应用程序。如果同时处理多个应用程序&#xff0c;但在它们之间切换时感到沮丧&#xff0c;小编教给大家在 Macbook Pro/Air 或 iMac 上使用分屏功能流畅地进行多任务处理。 注意&#xff1a;您可…

C# 委托(delegate)本质理解

目录 代码如下&#xff0c;很简单 运行的结果 反编译程序查看 关注两点&#xff1a; 什么是委托 委托的三个步骤 委托的意义 代码如下&#xff0c;很简单 namespace Delegate { class Program { delegate void SayHi(); void SayHi_1() …

专业135+总400+中国科学院大学859国科大信号与系统考研经验电子信息与通信,真题,大纲,参考书

今年考研专业课859信号与系统135&#xff0c;总分400上岸国科大&#xff0c;总结一下自己这一年的复习经验&#xff0c;希望对后面报考中科院大学的同学有所帮助。 专业课&#xff1a; 国科大不同研究所都是统一命题&#xff0c;859信号与系统的参考书目是郑君里的《信号与系…

移动光猫gs3101超级密码及改桥接模式教程

文章目录 超级管理员账号改桥接模式路由器连接光猫&#xff0c;PPPOE拨号即可&#xff01;附录&#xff1a;如果需要改桥接的话不知道拨号密码咋办打开光猫Telnet功能Telnet 登录 参考文章 移动光猫吉比特GS3101超级账号获取更改桥接 移动光猫gs3101超级密码及改桥接模式教程 …

C#入门及进阶|数组和集合(六):集合概述

1.集合概述 数组是一组具有相同名称和类型的变量集合&#xff0c;但是数组初始化后就不便于再改变其大小&#xff0c;不能实现在程序中动态添加和删除数组元素&#xff0c;使数组的使用具有很多局限性。集合能解决数组存在的这个问题&#xff0c;下面我们来学习介绍集合…

微服务入门篇:http客户端Feign(远程调用,自定义配置,Feign的性能优化,Feign服务抽取)

目录 1.基于Feign的远程调用1.RestTemplate方式调用存在的问题2.Feign的介绍3.定义和使用Feign客户端 2.自定义配置1.方式一&#xff1a;配置文件方式2.方式二: java代码方式&#xff0c;需要先声明一个Bean: 3.Feign的性能优化1.Feign底层的客户端实现2.连接池配置 4.Feign的最…

春节假期:思考新一年的发展思路

春节假期是人们放松身心、享受家庭团聚的时刻&#xff0c;但除了走亲戚、玩、吃之外&#xff0c;我们确实也需要思考新的一年的发展思路。以下是一些建议&#xff0c;帮助您在春节假期中为新的一年做好准备&#xff1a; 回顾过去&#xff0c;总结经验&#xff1a;在春节期间&a…

Blazor 子组件交互例子

源码 子组件 SwitchBar.razor &#xfeff;using Microsoft.Extensions.Logging inject ILogger<Index> Logger<div style"ClassString" onclick"OnClick">ChildContent </div>code {[Parameter]public RenderFragment? ChildContent…