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

Nmap 工具的详细使用教程

Nmap(Network Mapper)是一款开源且功能强大的网络扫描和安全审计工具。它被广泛用于网络发现、端口扫描、操作系统检测、服务版本探测以及漏洞扫描等。

官方链接:

  • Nmap 官方网站: https://nmap.org/
  • Nmap 官方文档 (英文): https://nmap.org/book/man.html
  • Nmap 参考指南 (中文翻译可能存在,但官方以英文为主): 你可以在官方网站上寻找是否有社区翻译的中文文档,或者通过搜索引擎查找。

Nmap 核心功能:

  • 主机发现 (Host Discovery): 识别网络上存活的主机。
  • 端口扫描 (Port Scanning): 枚举目标主机上开放的 TCP 和 UDP 端口。
  • 服务版本探测 (Version Detection): 确定在开放端口上运行的应用程序的名称和版本号。
  • 操作系统检测 (OS Detection): 尝试确定目标主机的操作系统类型和版本。
  • 脚本扫描 (Scriptable Interaction): 使用 Nmap 脚本引擎 (NSE) 执行各种高级的检测和漏洞扫描任务。

安装 Nmap:

Nmap 支持多种操作系统,包括 Windows, Linux, 和 macOS。

  • Linux: 大多数 Linux 发行版的官方仓库都包含 Nmap。你可以使用包管理器进行安装,例如:
    • Debian/Ubuntu: sudo apt update && sudo apt install nmap
    • Fedora/RHEL/CentOS: sudo dnf install nmapsudo yum install nmap
  • Windows: 从 Nmap 官方网站下载可执行的安装程序 (.exe) 并按照提示进行安装。
  • macOS: 可以通过 Homebrew 安装: brew install nmap,或者从官网下载 .dmg 文件安装。

Nmap 基本语法:

Nmap 的基本命令行语法如下:

nmap [扫描类型...] [选项] {目标规范}

目标规范 (Target Specification):

你可以通过多种方式指定扫描目标:

  • IP 地址: nmap 192.168.1.1
  • 主机名: nmap scanme.nmap.org
  • IP 地址范围:
    • CIDR 表示法: nmap 192.168.1.0/24
    • 连字符表示法: nmap 192.168.1.1-100
  • 从文件读取目标列表: nmap -iL target_list.txt (每行一个目标)
  • 随机选择目标: nmap -iR <数量> (例如: nmap -iR 10 扫描10个随机主机)
  • 排除目标: --exclude <主机1[,主机2][,主机3],...>--excludefile <排除文件>

常用扫描类型 (Scan Types):

  • -sS (TCP SYN 扫描 / 半开放扫描): 这是最常用且默认的扫描类型(如果用户有足够权限)。它发送 SYN 包,如果收到 SYN/ACK 则表示端口开放,收到 RST 则表示端口关闭。因为它不完成 TCP 连接,所以通常比较隐蔽且快速。需要 root/管理员权限。
    sudo nmap -sS 192.168.1.1
    
  • -sT (TCP Connect() 扫描): 当 SYN 扫描不可用时(例如,用户没有原始套接字权限),Nmap 会默认使用此类型。它通过完成完整的 TCP 连接来判断端口是否开放。这种方式更容易被检测到。
    nmap -sT 192.168.1.1
    
  • -sU (UDP 扫描): 扫描 UDP 端口。UDP 扫描通常更慢且更困难,因为 UDP 是无连接协议,开放的端口可能不会响应,而关闭的端口通常会返回 ICMP “port unreachable” 消息。
    sudo nmap -sU 192.168.1.1
    
  • -sA (TCP ACK 扫描): 用于探测防火墙规则集,判断端口是否被防火墙过滤。它发送 ACK 包,如果收到 RST 则表示端口未被过滤(可能开放或关闭),如果没有收到响应或收到 ICMP 错误则表示端口被过滤。
    sudo nmap -sA 192.168.1.1
    
  • -sW (TCP Window 扫描): 与 ACK 扫描类似,但在某些系统上可以区分开放端口和关闭端口。
  • -sM (TCP Maimon 扫描): 一种非常隐蔽的扫描技术,以其发现者 Uriel Maimon 命名。
  • -sN, -sF, -sX (TCP Null, FIN, 和 Xmas 扫描): 这些是非常隐蔽的扫描技术,利用了 TCP RFC 中的一些细微差别。它们向目标端口发送特殊的 TCP 包(不设置 SYN, RST, 或 ACK 位)。如果端口关闭,目标主机会响应一个 RST 包;如果端口开放或被过滤,则不会有响应。这些扫描在非 Windows 系统上效果较好。
    sudo nmap -sN 192.168.1.1
    sudo nmap -sF 192.168.1.1
    sudo nmap -sX 192.168.1.1
    
  • --scanflags <flags> (自定义 TCP 扫描): 允许你指定自定义的 TCP 标志位 (URG, ACK, PSH, RST, SYN, FIN)。
  • -sI <僵尸主机[:探测端口]> (空闲扫描 / Idle Scan): 一种极其隐蔽的扫描技术,它利用一个空闲的“僵尸”主机来间接探测目标。设置起来比较复杂。
  • -b <FTP中继主机> (FTP bounce 扫描): 利用 FTP 服务器的代理特性进行扫描。现在很少有 FTP 服务器支持这种配置。

常用选项 (Options):

  • 端口规范 (Port Specification):
    • -p <端口范围>: 指定要扫描的端口。例如:
      • -p 22 (扫描端口 22)
      • -p 1-100 (扫描端口 1 到 100)
      • -p U:53,T:21-25,80 (扫描 UDP 端口 53,TCP 端口 21 到 25 和 80)
      • -p- (扫描所有 65535 个端口)
      • --top-ports <数量> (扫描最常见的 N 个端口)
    • -F (快速扫描模式): 仅扫描 Nmap 内置服务文件中列出的端口(比 --top-ports 100 更少)。
  • 服务和版本探测 (Service and Version Detection):
    • -sV (版本探测): 尝试确定在开放端口上运行的服务及其版本。
      nmap -sV 192.168.1.1
      
    • --version-intensity <级别>: 设置版本探测的强度 (0-9,默认为 7)。级别越高,探测越全面但也越慢。
    • --version-light: 等同于 --version-intensity 2
    • --version-all: 等同于 --version-intensity 9
  • 操作系统检测 (OS Detection):
    • -O (启用操作系统检测):
      sudo nmap -O 192.168.1.1
      
    • --osscan-limit: 仅对有希望的主机进行 OS 检测。
    • --osscan-guess--fuzzy: 推测操作系统,即使 Nmap 无法精确确定。
  • 时间和性能 (Timing and Performance):
    • -T<0-5> (设置时序模板):
      • T0 (paranoid): 非常慢,用于躲避 IDS。
      • T1 (sneaky): 比较慢,用于躲避 IDS。
      • T2 (polite): 降低扫描速度以减少带宽和目标主机资源的消耗。
      • T3 (normal): 默认速度。
      • T4 (aggressive): 假设网络状况良好,速度较快。
      • T5 (insane): 非常快,但可能导致结果不准确或淹没目标网络。
      nmap -T4 192.168.1.1
      
    • --min-hostgroup <数量>, --max-hostgroup <数量>: 并行扫描的主机组大小。
    • --min-parallelism <数量>, --max-parallelism <数量>: 并行探测的数量。
    • --min-rtt-timeout <时间>, --max-rtt-timeout <时间>, --initial-rtt-timeout <时间>: 控制探测超时。
    • --max-retries <次数>: 放弃前重试探测的次数。
    • --host-timeout <时间>: 扫描单个主机超时时间。
    • --scan-delay <时间>, --max-scan-delay <时间>: 控制探测之间的时间间隔。
  • 主机发现 (Host Discovery / Ping Sweeping):
    • -sn (Ping 扫描 / 禁止端口扫描): 只进行主机发现,不进行端口扫描。
      nmap -sn 192.168.1.0/24
      
    • -Pn (跳过主机发现 / 将所有主机视为在线): 不进行主机发现,直接对指定目标进行端口扫描。当你确定目标主机在线,但它可能屏蔽了 Ping 请求时很有用。
      nmap -Pn 192.168.1.1
      
    • -PS [端口列表] (TCP SYN Ping): 发送 SYN 包到指定端口进行主机发现。默认端口 80。
    • -PA [端口列表] (TCP ACK Ping): 发送 ACK 包到指定端口进行主机发现。默认端口 80。
    • -PU [端口列表] (UDP Ping): 发送 UDP 包到指定端口进行主机发现。默认端口 40125。
    • -PE, -PP, -PM (ICMP Ping 类型): 分别发送 ICMP Echo Request, Timestamp Request, Address Mask Request。
    • -PR (ARP Ping): 在本地网络上进行 ARP 扫描。通常比基于 IP 的 Ping 更快更可靠。
    • --dns-servers <服务器1[,服务器2],...>: 指定用于反向 DNS 解析的 DNS 服务器。
    • -n (不进行 DNS 解析)。
    • -R (总是进行 DNS 解析)。
  • 输出格式 (Output Formats):
    • -oN <文件名> (标准输出): 将结果保存为人类可读的文本文件。
    • -oX <文件名> (XML 输出): 将结果保存为 XML 格式,方便程序解析。
    • -oS <文件名> (ScRipTKIdd|3 oUTpuT): 脚本小子格式输出(不推荐)。
    • -oG <文件名> (Grepable 输出): 将结果保存为易于 grep 等工具处理的格式。
    • -oA <基本文件名> (输出所有格式): 同时生成标准、XML 和 Grepable 三种格式的输出文件,文件名为 <基本文件名>.nmap, <基本文件名>.xml, <基本文件名>.gnmap
      nmap -oA scan_results 192.168.1.1
      
    • -v (详细模式): 显示更详细的输出信息。可以使用 -vv 获得更详细的信息。
    • -d [级别] (调试模式): 显示调试信息。级别越高,信息越详细。
    • --reason: 显示端口处于特定状态的原因。
    • --open: 只显示开放的端口。
    • --packet-trace: 显示发送和接收的每个数据包。
    • --iflist: 显示主机接口和路由信息。
  • Nmap 脚本引擎 (NSE - Nmap Scripting Engine):
    • -sC--script=default: 执行默认类别的脚本。这些脚本通常被认为是安全且有用的。
      nmap -sC 192.168.1.1
      
    • --script <脚本名|类别|目录|表达式>: 执行指定的脚本、类别中的脚本、目录下的所有脚本或匹配表达式的脚本。
      • 按名称: --script=http-title
      • 按类别: --script=vuln (扫描漏洞)
      • 按目录: --script=./my-custom-scripts/
      • 使用通配符: --script "http-*"
    • --script-args <参数名1=值1,参数名2=值2,...>: 为 NSE 脚本提供参数。
    • --script-help <脚本名|类别|目录|表达式>: 显示脚本的帮助信息。
    • --script-updatedb: 更新 NSE 脚本数据库。
  • 防火墙/IDS 规避和欺骗 (Firewall/IDS Evasion and Spoofing):
    • -f (分片数据包): 将 TCP 头部拆分成更小的数据包,可能绕过一些简单的包过滤器。
    • --mtu <值>: 设置自定义的 MTU。
    • -D <诱饵1,诱饵2,ME,...> (使用诱饵进行扫描): 使扫描看起来像是从多个 IP 地址发起的,其中 ME 代表你自己的真实 IP 地址。
      sudo nmap -D RND:10,192.168.1.101,ME 192.168.1.1
      
      (RND:10 表示随机生成10个诱饵IP)
    • -S <源IP地址> (源地址欺骗): 欺骗源 IP 地址。通常只有在你能看到响应的情况下才有用。
    • -e <接口> (指定网络接口)。
    • --source-port <端口号>-g <端口号> (源端口欺骗)。
    • --data-length <数值> (在发送的包中附加随机数据)。
    • --proxies <代理URL列表>: 通过 HTTP/SOCKS4 代理进行扫描。
  • 其他选项:
    • -6 (启用 IPv6 扫描)。
    • -A (启用 OS 检测、版本探测、脚本扫描和 Traceroute): 这是一个方便的聚合选项,等同于 -O -sV -sC --traceroute
      sudo nmap -A 192.168.1.1
      
    • --traceroute: 跟踪到目标主机的路径。

Nmap 扫描示例:

  1. 快速扫描单个主机,识别最常见的开放端口:

    nmap -F 192.168.1.1
    
  2. 对整个子网进行 Ping 扫描,找出存活主机:

    nmap -sn 192.168.1.0/24
    
  3. 对目标主机进行详细扫描,包括 TCP SYN 扫描所有端口、操作系统检测、服务版本探测,并执行默认脚本,将结果保存到所有格式:

    sudo nmap -sS -p- -O -sV -sC -oA detailed_scan_results 192.168.1.1
    

    (注意: -p- 扫描所有端口会非常耗时)

  4. 扫描特定 TCP 端口 (例如 80, 443) 和 UDP 端口 (例如 53),并进行版本探测:

    sudo nmap -sS -sU -p T:80,443,U:53 -sV 192.168.1.1
    
  5. 使用 vuln 类别的 NSE 脚本扫描目标主机上的已知漏洞:

    sudo nmap --script vuln 192.168.1.1
    
  6. 扫描一个网站,尝试获取 HTTP 头部信息和网站标题:

    nmap -sV --script=http-headers,http-title scanme.nmap.org
    
  7. 在本地网络中进行 ARP 扫描以快速发现主机:

    sudo nmap -PR 192.168.1.0/24
    
  8. 隐蔽扫描,使用 TCP Null 扫描,设置较慢的时序模板,并使用诱饵:

    sudo nmap -sN -T1 -D RND:5,ME 192.168.1.1
    

理解 Nmap 输出:

Nmap 的输出通常包含以下信息:

  • Starting Nmap …: Nmap 开始扫描的时间和版本信息。
  • Nmap scan report for <目标IP/主机名>: 目标的信息。
  • Host is up (<延迟>s latency). (如果进行了主机发现且主机在线)
  • Not shown: XXX closed ports / XXX filtered ports: 未显示的关闭或被过滤的端口数量。
  • PORT STATE SERVICE VERSION:
    • PORT: 端口号和协议 (例如 22/tcp)。
    • STATE: 端口的状态:
      • open: 端口开放,应用程序正在监听连接。
      • closed: 端口关闭,没有应用程序在监听。但主机可达。
      • filtered: Nmap 无法确定端口是开放还是关闭,因为防火墙或其他网络设备阻止了探测。
      • unfiltered: 端口可访问,但 Nmap 无法确定其是开放还是关闭 (通常见于 ACK 扫描)。
      • open|filtered: Nmap 无法区分端口是开放还是被过滤 (例如,某些 UDP 扫描的结果)。
      • closed|filtered: Nmap 无法区分端口是关闭还是被过滤。
    • SERVICE: Nmap 根据端口号猜测的服务名称 (例如 ssh)。
    • VERSION: (如果使用了 -sV) 在该端口上运行的服务的详细版本信息。
  • OS CPE: (如果使用了 -O) 操作系统的通用平台枚举 (CPE) 标识符。
  • OS details: (如果使用了 -O) Nmap 对操作系统的猜测。
  • TRACEROUTE (using <协议> to port <端口>): (如果使用了 --traceroute) 到目标的路由跳数。
  • NSE Script Results: (如果使用了脚本扫描) NSE 脚本的输出。
  • Nmap done: 扫描完成的信息,包括扫描的主机数量、耗时等。

相关文章:

Nmap 工具的详细使用教程

Nmap&#xff08;Network Mapper&#xff09;是一款开源且功能强大的网络扫描和安全审计工具。它被广泛用于网络发现、端口扫描、操作系统检测、服务版本探测以及漏洞扫描等。 官方链接: Nmap 官方网站: https://nmap.org/Nmap 官方文档 (英文): https://nmap.org/book/man.h…...

Vue 自定义指令输入校验过滤

/*** 过滤字符串* param {*} filterCharRule* param {*} newVal* returns*/ function filterCharForValue(filterCharRule, newVal) {if(!filterCharRule || !newVal) returnconst isArray filterCharRule instanceof Arrayconst isRegExp filterCharRule instanceof RegExpi…...

OpenGl实战笔记(2)基于qt5.15.2+mingw64+opengl实现纹理贴图

一、作用原理 1、作用&#xff1a;将一张图片&#xff08;纹理&#xff09;映射到几何体表面&#xff0c;提升视觉真实感&#xff0c;不增加几何复杂度。 2、原理&#xff1a;加载图片为纹理 → 上传到 GPU&#xff1b;为顶点设置纹理坐标&#xff08;如 0~1 范围&#xff09;&…...

tinyrenderer笔记(透视矫正)

tinyrenderer个人代码仓库&#xff1a;tinyrenderer个人练习代码 引言 还要从上一节知识说起&#xff0c;在上一节中我为了调试代码&#xff0c;换了一个很简单的正方形 obj 模型&#xff0c;配上纹理贴图与法线贴图进行渲染&#xff0c;得了下面的结果&#xff1a; what&…...

c++类【发展】

类的静态成员&#xff08;用static声明的成员&#xff09;,在声明之外用例单独的语句进行初始化&#xff0c;初始化时&#xff0c;不再需要用static进行限定。在方法文件中初始化。以防重复。 特殊成员函数 复制构造函数&#xff1a; 当使用一个对象来初始化另一个对象…...

玛格丽特鸡尾酒评鉴,玛格丽特酒的寓意和象征

玛格丽特鸡尾酒会有独特的风味&#xff0c;而且还会有一个比较吸引人的背后故事。在目前的鸡尾酒界就会占据着很重要的地位&#xff0c;不仅是味蕾的盛宴&#xff0c;同样也会拥有深厚的情感。 玛格丽特由龙舌兰酒、柠檬汁和君度橙酒调制而成&#xff0c;将三者巧妙地结合在一起…...

关于Java多态简单讲解

面向对象程序设计有三大特征&#xff0c;分别是封装&#xff0c;继承和多态。 这三大特性相辅相成&#xff0c;可以使程序员更容易用编程语言描述现实对象。 其中多态 多态是方法的多态&#xff0c;是通过子类通过对父类的重写&#xff0c;实现不同子类对同一方法有不同的实现…...

SecureCrt设置显示区域横列数

1. Logical rows //逻辑行调显示区域高度的 一般超过50就全屏了 2. Logical columns //逻辑列调显示区域宽度的 3. Scrollback buffer //缓冲区大小...

【PhysUnits】1 SI Prefixes 实现解析(prefix.rs)

一、源码 // prefix.rs //! SI Prefixes (国际单位制词头) //! //! 提供所有标准SI词头用于单位转换&#xff0c;仅处理10的幂次 //! //! Provides all standard SI prefixes for unit conversion, handling only powers of 10.use typenum::{Z0, P1, P2, P3, P6, P9, P12, …...

【Python】--实现多进程

import multiprocessing import time # 1.定义好函数 # codeing def coding():for i in range(10):print(f正在编写第{i}行代码)time.sleep(0.2)# music def music():for i in range(10):print(f正在听第{i}首歌曲)time.sleep(0.2)单任务 # 单任务--时间为4s多 if __name__ _…...

计算机视觉与深度学习 | 基于数字图像处理的裂缝检测与识别系统(matlab代码)

🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅 基于数字图像处理的裂缝检测与识别系统 🥦🥦🥦🥦🥦🥦🥦🥦🥦🥦🥦🥦🥦**系统架构设计****1. 图像预处理**目标:消除噪声+增强裂缝特征**2. 图像分割**目标:提取裂缝区域**3. 特征…...

嵌入式MCU语音识别算法及实现方案

在嵌入式MCU&#xff08;微控制器单元&#xff09;中实现语音识别&#xff0c;由于资源限制&#xff08;如处理能力、内存、功耗等&#xff09;&#xff0c;通常需要轻量级算法和优化技术。以下是常见的语音识别算法及实现方案&#xff1a; 一、传统语音识别算法 动态时间规整&…...

【C++核心技术深度解析:从继承多态到STL容器 】

一、C继承机制&#xff1a;代码复用与层次设计 1. 继承基础概念 什么是继承&#xff1f; 继承是面向对象编程的核心机制&#xff0c;通过class Derived : public Base让子类&#xff08;派生类&#xff09;复用父类&#xff08;基类&#xff09;的属性和方法&#xff0c;同时…...

【C/C++】new关键字解析

&#x1f4d8; C 中 new 关键字详解笔记 &#x1f539; 什么是 new&#xff1f; new 是 C 中用于动态内存分配的关键字&#xff0c;它在堆内存中为对象或变量分配空间&#xff0c;并返回对应类型的指针。 与 C 语言中的 malloc 相比&#xff0c;new 更安全、更方便&#xff…...

C++高性能内存池

目录 1. 项目介绍 1. 这个项目做的是什么? 2. 该项目要求的知识储备 2. 什么是内存池 1. 池化技术 2. 内存池 3. 内存池主要解决的问题 4.malloc 3. 先设计一个定长的内存池 4.高并发内存池 -- 整体框架设计 5. 高并发内存池 -- thread cache 6. 高并发内存池 -- …...

chili3d调试笔记12 deepwiki viewport

xiangechen/chili3d | DeepWiki viewport阅读 &#x1f9e0;deep 我要把模型投影成dxf导出有什么办法 引用lookat 截图是如何实现的 明天接着搞 ----------------------------------------------------------------...

前端取经路——JavaScript修炼:悟空的九大心法

大家好&#xff0c;我是老十三&#xff0c;一名前端开发工程师。JavaScript如同孙悟空的七十二变&#xff0c;变化多端却又充满威力。本篇文章我将带你攻克JS中最令人头疼的九大难题&#xff0c;从闭包陷阱到原型链继承&#xff0c;从异步编程到性能优化。每个难题都配有实战代…...

从零实战:在Xilinx Zynq PS端移植VxWorks 6.9系统

一、环境准备与工具链搭建 1.1 硬件配置清单 开发板: Zynq-7000系列(推荐ZedBoard或ZCU102)调试工具: USB-JTAG调试器(如Xilinx Platform Cable USB II)存储介质: SD卡(建议Class 10以上)1.2 软件环境 工具版本作用Vivado2022.1FPGA硬件设计Vitis2022.1系统集成开发Wind…...

网工实验——RIP配置

网络拓扑图 配置 1.为每台设备配置ip地址 AR4 <Huawei>u t m <Huawei>sys [Huawei]sysname AR4 [AR4]int g0/0/0 [AR4-GigabitEthernet0/0/0]ip address 172.16.1.1 24 [AR4-GigabitEthernet0/0/0]q#下面配置换回口&#xff0c;模拟网 [AR4]int LoopBack 0 [AR4…...

前端流行框架Vue3教程:14. 组件传递Props效验

(4) 组件传递Props效验 Vue组件可以更细致地声明对传入的props的校验要求 ComponentA.vue <script> import ComponentB from ./ComponentB.vue; export default {components: {ComponentB},data() {return {title: 标题}} } </script> <template><h3&g…...

电子电器架构 --- 网关ECU中采用多CPU解决方案来实现网关功能

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

关于tftpboot的用法

TFTPBOOT 是一个常用于嵌入式系统或网络设备中的命令&#xff0c;用于通过 TFTP 协议从网络上启动操作系统镜像或引导文件。这个命令通常在设备启动时执行&#xff0c;允许设备通过网络从 TFTP 服务器下载启动镜像或其他必要的文件&#xff0c;而不需要从本地存储中启动。 一般…...

团队协作的润滑剂——GitHub与协作流程

各位代码界的社交恐惧症患者们&#xff0c;今天我们要聊的是如何假装自己很会团队协作——使用GitHub&#xff01;这就像程序员版的"相亲平台"&#xff0c;只不过在这里&#xff0c;你展示的不是自拍和收入&#xff0c;而是代码和commit记录&#xff08;后者往往更令…...

数据库复习

DML操作包括&#xff1a; SELECT INSERT UPDATE DELETE MERGE 返回字符串长度&#xff1a;length() 查询记录&#xff1a;SELECT 增&#xff08;INSERT&#xff09;、删&#xff08;DELETE&#xff09;、改&#xff08;UPDATE&#xff09;、查&#xff08;SELECT&#…...

AI与机器学习、深度学习在气候变化预测中的应用与实践

前言&#xff1a; 全球气候变化是现代社会面临的最重要的环境挑战之一&#xff0c;影响了气温、降水、海平面、农业、生态系统等多个方面。气候变化的驱动因素主要包括温室气体排放、气溶胶浓度、火灾频发、海冰融化、叶绿素变化、农业变化和生态环境变化等。这些因素在全球范围…...

Laravel 12 基于 EMQX 实现 MQTT 消息发送与接收

Laravel 12 基于 EMQX 实现 MQTT 消息发送与接收 要在 Laravel 12 中实现基于 EMQX 的 MQTT 消息发送与接收&#xff0c;你可以按照以下步骤操作&#xff1a; 1. 安装必要的依赖包 首先安装 MQTT 客户端库&#xff1a; composer require php-mqtt/client2. 配置 EMQX 连接 …...

论广告系统对存算分离架构的应用

辅助论点 辅助论点一&#xff1a;存算分离架构起源于数据库领域&#xff0c;并不是在线系统。 存算分离的架构源于Google的Spanner数据库&#xff0c;这个数据库采用了KV做存储层&#xff0c;OLAP做计算层的分离式设计&#xff0c;其目的是能快速伸缩计算资源&#xff0c;且节…...

create-vue搭建Vue3项目(Vue3学习2)

一、认识create-vue image.png 二、create-vue搭建Vue3项目 image.png image.png 依次执行npm install 和npm run dev即可运行项目 image.png image.png © 著作权归作者所有,转载或内容合作请联系作者 喜欢的朋友记得点赞、收藏、关注哦&#xff01;&#xff01;&#xff…...

NHDEEP档案管理系统功能介绍

NHDEEP档案管理系统单机版专注于提高档案管理效率&#xff0c;无需网络连接即可独立运作&#xff0c;确保数据的安全与私密性。无论是机关单位的常规档案工作&#xff0c;还是工程、基建项目的特殊档案管理需求&#xff0c;系统都能提供全面的解决方案。系统支持信创环境。 核心…...

【C++】C++中的命名/名字/名称空间 namespace

C中的命名/名字/名称空间 namespace 1、问题引入2、概念3、作用4、格式5、使用命名空间中的成员5.1 using编译指令&#xff08; 引进整个命名空间&#xff09; ---将这个盒子全部打开5.2 using声明使特定的标识符可用(引进命名空间的某个成员) ---将这个盒子中某个成员的位置打…...

游戏引擎学习第260天:在性能分析器中实现钻取功能

昨天那个帧内存满之后触发段错误实在没找到什么原因导致的 继续研究一下为什么导致的 内存不够进来释放frame 释放frame 应该会给DebugState->FirstFreeStoredEvent 赋值吧 这段宏定义&#xff1a; #define FREELIST_DEALLOCATE(Pointer, FreeListPointer) \if(Pointer) {…...

人工智能100问☞第15问:人工智能的常见分类方式有哪些?

目录 一、通俗解释 二、专业解析 三、权威参考 人工智能的常见分类方式包括:​​按智能水平​​(弱人工智能、通用人工智能、超级人工智能)、​​按技术原理​​(生成式AI、判别式AI、强化学习)、​​按功能目标​​(生成内容、优化决策)、​​按应用领域​​(自然语…...

JavaSE核心知识点01基础语法01-04(数组)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 JavaSE核心知识点01基础语法01-04&#xff0…...

抖音代播领航者——品融电商(PINKROON)的运营实力与服务解析

抖音代播领航者——品融电商&#xff08;PINKROON&#xff09;的运营实力与服务解析 在兴趣电商高速发展的背景下&#xff0c;杭州品融品牌管理有限公司&#xff08;PINKROON&#xff09;凭借其全域增长方法论与抖音生态的深度布局&#xff0c;成为众多品牌首选的抖音代播服务商…...

LeetCode 790 多米诺和托米诺平铺 题解

对于本题不去看LeetCode的评论区和题解很难想到如何去dp&#xff0c;毕竟就算再怎么枚举也很难找到适用于面向结果的规律。所以对于题解我建议大家还是去看一下灵神给的题解&#xff0c;以下是灵神汇总的图&#xff0c;如果能看懂的话&#xff0c;对于解决题目有很大的帮助。 根…...

力扣-hot100 (缺失的第一个正数)

41. 缺失的第一个正数 困难 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xff…...

Electrolink信息泄露(CVE-2025-28228)

免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。使用者应确保其行为符合相关法律法规,并取得目标系统的明确授权。 对于因不当使用本文信息而造成的任何直…...

Leetcode Hot 100 三数之和

思路 对数组先排序&#xff0c;然后使用双指针法进行&#xff0c;并且整个过程需要把握去重的逻辑 代码 class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:if not nums:return []nums.sort() #去重都需要排序res[]for i in range(len(nums)):if i…...

5月6日日记

一点心得是 看通知要仔细认真&#xff0c;自己想问的问题要先看看通知或者文件中说了没有&#xff0c;如果没说再去问相关负责人。 上课的教室一定要看好&#xff0c;看准了再去。别像今天一样先去了科技楼又去了工学馆。 线代开课了。感觉总体还行&#xff0c;并不是很难。…...

巧记英语四级单词 Unit7-中【晓艳老师版】

collapse v.倒塌&#xff0c;坍塌 都(col)来扑(lap)噻immune a.不受影响的&#xff0c;免疫的 我im 木讷mune&#xff0c;人应该木讷一点yard n.院子 鸭的&#xff0c;在哪养&#xff1b;backyard 后院backward a.往后的 ward表示方向 profile n.外形&#xff0c;轮廓 从前面看…...

Windows系统修改Docker Desktop(WSL2)内存分配

# Windows查看docker信息 docker info 新增wsl全局配置文件(.wslconfig文件)&#xff1a;windows路径栏输入&#xff1a;%UserProfile%&#xff0c;找到目录C:\Users\Administrator&#xff0c;默认是没有这个配置文件的&#xff0c;可以自己新增 # 设置在wsl2上运行 [wsl2] # …...

Oracle02-安装

零、文章目录 Oracle02-安装 1、Windows Server2022安装Oracle11g &#xff08;1&#xff09;下载 百度网盘地址&#xff1a; https://pan.baidu.com/s/15MBkMt1ldbSFm4L74h7Myg?pwd8888下载完成两个压缩包解压放在一起 &#xff08;2&#xff09;安装 双击 setup 文件安…...

Linux[Makefile]

Makefile基础结构 规则语法 target: prerequisitescommandtarget&#xff1a;生成的目标&#xff08;如可执行文件、.o文件&#xff09; prerequisites&#xff1a;依赖项&#xff08;源码、头文件等&#xff09; command&#xff1a;构建命令&#xff08;必须用Tab缩进&am…...

相同的数(简单)

深度优先搜索 如果两个二叉树都为空&#xff0c;则两个二叉树相同。如果两个二叉树中有且只有一个为空&#xff0c;则两个二叉树一定不相同。 如果两个二叉树都不为空&#xff0c;那么首先判断它们的根节点的值是否相同&#xff0c;若不相同则两个二叉树一定不同&#xff0c;…...

「Mac畅玩AIGC与多模态22」开发篇18 - 多段输出拼接与格式化展现工作流示例

一、概述 本篇以已有多字段输出为基础&#xff0c;介绍如何通过执行 LLM 节点对多个上游字段进行统一拼接与格式化处理。开发人员将学习如何从多个节点输出中提取数据字段&#xff0c;并组合为结构清晰、风格统一的最终输出&#xff0c;提升用户阅读体验。 二、环境准备 mac…...

餐饮部绩效考核管理制度与综合评估方法

在竞争激烈的餐饮行业中&#xff0c;标准化与数据驱动的管理手段正成为提升服务质量与运营效率的关键。绩效考核不仅关乎员工奖惩&#xff0c;更直接影响顾客体验、成本控制与营收水平。构建一套科学有效的绩效体系&#xff0c;是餐饮部精细化运营的起点。 本文围绕餐饮部绩效…...

conda虚拟环境相关操作

查看当前存在哪些虚拟环境 conda env list conda info --env创建虚拟环境conda create -n env_name pythonX.X删除虚拟环境conda remove -n env_name --all查看安装了哪些包conda list下载/删除环境中的某个包conda install package_nameconda uninstall package_name删除所有未…...

达梦DM数据库安装步骤

文章目录 1、下载并解压缩2、安装DM数据库2.1 运行安装程序2.2 选择语言与时区2.3 安装向导2.4 许可证协议2.5 Key文件2.6 选择组件2.7 安装位置2.8 安装前小结2.9 安装过程2.10 已完成2.11 初始化 3、配置实例3.1选择操作方式3.2创建数据库模版3.3指定数据库目录3.4数据库标识…...

vue3在使用@import “./index.scss“报错

Deprecation Warning: Sass import rules are deprecated and will be removed in Dart Sass 3.0.0. More info and automated migrator: https://sass-lang.com/d/import 2 │ import "./index.scss"; 在 Sass 3.0.0.之后 导入样式使用 “use” &#xff0c;不在使…...

对标研华ECU-461,搭载飞腾4核/8核国产处理器, 提供8网 8串B码对时 双显 无风扇的ARM通信管理平台

ƒ 飞腾 FT-2000/4 和 D2000/8 主控制器&#xff0c;主频 2.3~2.6GHz ƒ 8 个千兆网口 , 8 个全功能隔离串口 ƒ HDMIVGA 双显示接口 ƒ 3 个 USB2.0, 2 个 USB3.0 ƒ 支持 2 组 SATA 硬盘存储 ƒ 支持 CAN 通讯 ( 替换 4 路或 8 路 COM) ƒ 整机无风扇散热设计 …...