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

上帝之眼——nmap

nmap介绍

        Nmap(网络映射器)是一款广受欢迎的网络探测和安全评估工具,被誉为“上帝之眼”。它以其强大的扫描功能和广泛的应用场景,成为系统管理员和安全专家手中的得力助手。本文将对Nmap进行详细介绍,包括其优点、基本功能、常用命令等。

       如此笼统的说你肯定不明白为什么它为什么会被称为“上帝之眼”,它的功能非常强大,(它可以扫描同学的计算机获取一些计算机的信息,寻找网络内活着的计算机,寻找开放端口等等)它在使用上也非常灵活,支持多种扫描方式。

        本篇旨在介绍一些基本的功能以及概念,如果想要深入学习还需要自己发现它的功能,并且多使用才能更好得理解。本篇在介绍时会发散性地介绍较多的概念,我会尽量展开来叙述,让读者更好理解。

nmap简单功能的使用以及基本原理

一、主机扫描

        主机扫描的功能是用来发现网络中的存活主机的,Nmap使用各种技术,如ping扫描、ARP扫描、ICMP探测等,来确定主机是否在线。这是进行后续扫描和评估的基础,有助于用户创建一个有效的目标主机清单。

        我们首先介绍一下这些扫描方式。

ping扫描

        ping扫描,通常是通过发送ICMP(Internet Control Message Protocol,因特网控制报文协议)回显请求数据包来探测目标主机是否在线。ICMP是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。它是网络层的一个协议,主要目的是向数据通信中的源主机报告错误,以及提供有关通信状态的信息。

        ping命令是Windows和Linux等操作系统自带的一个网络工具,用于测试与远程计算机或本机的连接。它通过发送ICMP回显请求数据包给目标主机,并监听回显应答数据包来确定目标主机的存活状态。

        例如,我想通过这种扫描的方式扫描某范围内的IP主机在线状态。我需要输入的是

nmap -sn <网段>

        而网段的表达方式同样也是不局限的。

单个主机扫描

        例如,我们现在是家长,我们已知电脑的IP是192.168.1.3

        我们想偷偷检测一下孩子有没有打开电脑,我们可以在确认连接了家里的网络之后,对这个IP地址进行扫描。

        这就是扫描的结果,我们发现从发送ICMP到对方给我们响应是非常快的。我们发现得到的结果是Host is up那么我们就不用多说什么了,直接去惩罚孩子就行。

通过起始IP和结束IP来规定扫描范围

        在我们家连上网之后,我发现网络越来越慢,我们怀疑邻居蹭我们的网络,但是我们没有证据怎么办,一般在我们的网段内进行整体扫描然后看一下设备数量即可确定有没有额外的设备。

        但是我们的设备IP是192.168.1.3那么我们的扫描范围应该是什么样的?是192.168.1.1->192.168.1.254还是192.168.1.3->192.168.254.3我们不得而知,但是,我们发现一般输入ip(if)config之后,我们还会得到子网掩码,什么是子网掩码?

        子网掩码>

        子网掩码是用于划分IP地址中的网络部分和主机部分的,那它的划分原理是什么呢?可以看到在上面的图片中我们的子网掩码是255.255.255.0,我们知道一般IP是由三个小数点分割的四个八位二进制数(00000000b-11111111b)组成的。那么这就注定了它的范围不会超过255,同时,这个数一般不会是0或者255。那么如果你会十进制到二进制的转换的话,你可以很容易的将上面的子网掩码翻译成二进制我们发现它就是11111111.11111111.11111111.00000000,我们规定为一的部分是网络部分,而为0的部分是主机部分,所以我们的主机和同一个局域网内的主机不同的地方就是主机的名字,也就是四个数里面的最后一个数,所以我们的扫描范围应该是192.168.1.1->192.168.1.254。

        通常我们的扫描范围变得更大之后,我们就会等待更长的时间。

好吧,它扫了不到三秒就把所有的设备都扫出来了。

CIDR书写扫描表达式范围

        在上面的扫描中通常我们认为书写是不够优雅和正规的,我们如果想扫了这个网段的所有的设备,我们可以输入以下的指令:

nmap -sn 192.168.1.0/24

        可以看到,我们得到了所有的结果。但是如果你只想扫描0->100那么这种书写格式可能不如上一种通过直接书写范围扫描的合适了。

        除了ping的扫描方式之外,它同样还有其他的方式来扫描。

ARP扫描

        ARP扫描是在局域网内根据IP地址获取物理地址(MAC地址)的扫描方法。在Nmap中,可以使用-PR参数来进行ARP扫描。但请注意,ARP扫描仅适用于直接连接的网络(即同一局域网内)。它的扫描指令是:

nmap -PR <网段>

        我们发现这种扫描的方式我们会得到更加完整的数据结果,甚至连开放的端口都给我们扫出来了,虽然它更快但是同样会耗费更长的时间,我们扫一个的时间上面已经扫了254个了。

        在我们使用工具的时候,我们只是修改了一下-PR就可以让它实现不同的扫描方式,那么我们现在了解一下什么是ARP也是有必要的。

ARP介绍

        ARP,全称Address Resolution Protocol,即地址解析协议,是一种网络协议,它的主要功能是在网络层(IP层)和数据链路层(MAC层)之间进行地址转换。具体来说,ARP协议允许网络设备(如计算机、打印机、路由器等)根据已知的IP地址找到对应的MAC地址,以便在局域网(LAN)内实现数据的正确传输。

        APR是通过广播--请求--应答的方式来工作的。

        请求:主机A会向局域网内的所有设备发送一个ARP请求包。这个请求包中包含主机A的IP地址和MAC地址,以及主机B的IP地址。由于不知道主机B的MAC地址,所以ARP请求包会被发送到局域网内的广播地址。

        应答:局域网内的所有设备都会收到这个ARP请求包,并检查请求包中的IP地址是否与自己的IP地址匹配。如果某个设备(如主机B)发现请求包中的IP地址与自己的IP地址匹配,它就会生成一个ARP应答包,其中包含自己的MAC地址,并将这个应答包发送回主机A。

        缓存:为了提高效率,主机A会将主机B的IP地址和MAC地址的对应关系存储在ARP缓存中。这样,当主机A下次需要向主机B发送数据时,就可以直接从ARP缓存中查找MAC地址,而无需再次发送ARP请求。

        简单来说,就是我们的路由器要向姓名(MAC地址)为a的设备发送信息,但是并不知道这个a的id=1(IP),于是我们的路由器就会问所有的设备:“你是不是叫a?”(广播),当他问道正确的设备时,这个设备就会回复他:“我就是a。”(ARP相应包)。这个时候为了下次的数据传输更加方便,你的设备通常会创建一个键值对存储起来(缓存),在这个例子中就是a:1下次找的时候就会更加方便了。

        这不禁让我想到了一种网络攻击的方式。如果在缓存中我们给设备注入错的ARP那么设备就会向错误的设备发送请求,让它把包发给我们而不是路由器,我们再把包丢了,这样他的设备就显示正常连接了网络,但是传输数据的功能就会失效。

ARP投毒

        这种投毒的欺骗方式,一般有两种,我们既可以通过欺骗路由器我们是目标主机,从而让路由器把各种响应包发给我们,我们再丢弃掉。

欺骗路由器

        在操作过程中我们必须要用root的用户权限,输入sudo su或者直接打开红色的终端都可以。

        输入指令:

arpspoof -i <网络接口> -t 192.168.1.1 192.168.1.6

        在上面的指令中,192.168.1.1是我们希望欺骗的路由器的地址,而192.168.1.6是我们希望欺骗的主机地址(我的手机)。

        这个网络接口通常是指你的网卡,我们可以输入ifconfig查看网卡都有什么。一般在没有外接网卡的情况下,大家的电脑都是eth0和wlan0网卡两个,我们可以使用eth0网卡来欺骗。

        接下来,我们输入指令测试一下。

        可以看到,我们右上角显示的网络是正常的,但是我们就是无法访问浏览器界面。

输入指令之后就会得到这个界面,我们会舍弃路由器发送的响应包,但是这种攻击只是暂时的,它并不会长期影响,如果我们想进行长期的攻击就需要编写一个脚本,在python中有subprocess包它会成为一个不错的选择,或者编写shell脚本也是可以的。

        而另一种就是让被攻击的主机认为我们是路由器,它会把各种请求发给我们,我们再丢弃掉即可。

欺骗主机

        欺骗主机只需要把上面的指令的后两个IP地址调换过来即可,如果上面的欺骗会让我们的路由器无法找到目标主机,那么这种方法就会让我们的目标主机无法向路由器发送请求。

        该欺骗我就不再过多演示,与上面的大差不差。

ICMP探测

        虽然ICMP探测通常指的是使用ICMP数据包来探测网络设备的存活状态,但在Nmap中,这可以通过Ping扫描来实现,因为Ping扫描本质上就是使用ICMP(或其他协议)数据包进行探测。或者,为了更明确地指定使用ICMP协议进行探测(尽管Nmap通常会根据目标选择最合适的协议),可以使用-PE参数(但这在大多数情况下与-sn的效果相似,除非有特定的需求或配置)。在某些情况下,由于防火墙或网络配置的限制,ICMP数据包可能会被阻止。因此,如果Ping扫描失败,可以尝试使用其他协议或扫描方法。

二、端口扫描

        用于确定目标主机上开放的网络端口。Nmap支持多种扫描技术,如TCP SYN扫描、TCP Connect扫描、UDP扫描等。通过分析响应和超时信息,Nmap可以识别主机上开放的端口,并确定所运行的服务类型。下面我们详细介绍这三种扫描的方式。

TCP SYN扫描

        TCP SYN扫描利用TCP协议的三次握手过程来检测目标主机上的开放端口。攻击者发送一个SYN包给目标主机的每个端口,如果目标主机返回一个SYN/ACK包,则表示该端口是开放的;如果目标主机返回一个RST包,则表示该端口是关闭的。因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。

nmap -sS <目标IP/主机名>

TCP Connect扫描

        TCP Connect扫描使用完整的TCP连接来检测目标主机上的开放端口。攻击者尝试建立一个TCP连接到目标主机的每个端口,如果连接成功,则表示该端口是开放的;如果连接失败,则表示该端口是关闭的。

nmap -sT <目标IP/主机名>

UDP扫描

        UDP扫描用于检测UDP端口的开放状态。由于UDP是无连接的协议,没有像TCP三次握手那样的确认机制,因此UDP扫描需要发送一个UDP包到目标主机的每个端口,并根据目标主机的响应来判断端口状态。如果目标主机返回一个ICMP端口不可达的消息,则表示该端口是关闭的;如果目标主机没有返回任何消息(或在一定时间内没有响应),则表示该端口可能是开放的或者被过滤的。

nmap -sU <目标IP/主机名>

        我们在主机上打开一个服务器然后用第二种方法扫一下试试。

        我们先随便把一个简单的php代码部署到服务器,可以看到我们部署的是8000端口,我们知道浏览器浏览网页走的是TCP协议,所以我们按第一种第二种方式都是可以扫描到的。

我们扫了一千个端口发现只有我们服务器占用的8000端口是开着的,而且是tcp协议。

三、操作系统探测

        用于确定目标主机运行的操作系统类型。Nmap通过分析目标主机的网络响应、TCP/IP栈行为和其他特征来进行操作系统识别,这有助于评估其安全性,并确定适当的安全策略和防护措施。

        这个TCP/IP栈行为应该是计算机网络上比较入门级别的知识点了。我直接从网上搜索过来就不多说了。

        TCP/IP栈行为,指的是TCP/IP协议栈在网络通信中的具体运作方式和过程。TCP/IP协议栈是一个网络通信协议集合,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。这个协议栈通常被分为四层或五层,每一层都负责不同的功能,共同协作以完成网络通信。

TCP/IP协议栈的分层结构

        应用层:这是TCP/IP协议栈的最高层,主要负责处理特定的应用程序细节。它定义数据格式,并按照对应的格式解读数据。常见的协议有HTTP(用于Web通信)、FTP(用于文件传输)、SMTP(用于电子邮件发送)等。应用层将高层应用程序的需求转换为网络通信需求,并将网络响应转换为应用程序可以理解的形式。

        传输层:这一层主要负责端到端的数据传输服务。它定义端口,确认主机上应用程序的身份,并将数据从一端主机传送到另一端主机。传输层的主要协议有TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供可靠的数据传输服务,通过建立连接、确认接收、流量控制和拥塞控制等机制来确保数据的完整性和顺序性。而UDP则提供无连接的数据传输服务,适用于对实时性要求较高的应用,如视频会议和在线游戏。

        网络层:网络层的主要任务是负责数据包从源主机到目的主机的路由选择和传输。它使用IP协议(互联网协议)来标识和寻址不同的网络设备,并将数据包从一个网络传输到另一个网络。IP协议负责将数据包封装成IP数据报,并添加源地址和目的地址信息,以便在网络中进行传输。网络层还负责处理数据包的分片和重组,以及处理网络拥塞控制。

        数据链路层(或网络接口层):这一层负责本地网络连接和数据帧传输。它包括了以太网、Wi-Fi等物理网络技术,负责将数据包封装成帧,并在物理介质上传输。数据链路层还负责错误检测和纠正,确保数据在物理介质上的正确传输。它使用MAC地址(媒体访问控制地址)来标识网络接口。

        物理层(在某些五层模型中):这是TCP/IP协议栈的最底层,负责建立设备与设备间的物理连接。它将二进制数据转换为电信号或其他形式的信号,通过物理介质(如电缆、光纤或无线信号)进行传输。

        这种探测操作起来也是非常简单,因为操作系统的英文是operating system或者os所以输入的指令就是-O。

nmap -O <目标IP/主机名>

        我们用kali扫描一下主机192.168.1.3使用的是Windows系统。

        如果你想获得更加详细的信息,包括操作系统版本、内核信息等,你可以使用:

nmap -A <目标IP/主机名>

给我扫了三分钟了,这种的确没有上面的那一种更加方便,扫出来的东西似乎有用的不多。因此我还是更倾向于使用-O扫描。

四、服务器版本探测

        用于确定目标主机上运行的具体服务及其版本信息。Nmap使用各种技术和指纹库来识别服务类型和版本,包括分析响应信息、探测已知漏洞等。这有助于评估目标主机上运行的服务的安全性和漏洞风险,以及进行服务管理和升级计划。

        输入的指令是:

nmap -p 8000 -sV 192.168.1.18

        我们用django开发了一个服务器端,我们扫描一下看看都有什么结果。

        上图左边是nmap扫描得到的结果,右边是django服务端的报表,最终nmap还是很能干地发现了我们的服务器是python服务器。

        以上是一些基本的操作,有兴趣的同学可以再深入了解。

相关文章:

上帝之眼——nmap

nmap介绍 Nmap&#xff08;网络映射器&#xff09;是一款广受欢迎的网络探测和安全评估工具&#xff0c;被誉为“上帝之眼”。它以其强大的扫描功能和广泛的应用场景&#xff0c;成为系统管理员和安全专家手中的得力助手。本文将对Nmap进行详细介绍&#xff0c;包括其优点、基本…...

6.日常英语笔记

It’s a pity that my English hasn’t improved much, and I’m not able to chat with you freely. lung 肺 pulmonary 医学中的肺部相关的 pulmonary disease 肺部疾病 pneumonia 肺炎 pulmonary inflammation 肺炎 stick on the wall 贴到墙上 paste on the wall faint w…...

工业路由器和工业交换机,打造高效稳定的工业网络?

工业路由器和工业交换机各有千秋&#xff0c;但如何将它们完美结合&#xff0c;构建稳定高效的工业网络&#xff1f;答案就在这里&#xff01; 工业物联网&#xff08;IIoT&#xff09;是高效、稳定的工业网络成为智慧工厂、工业自动化和远程监控等场景的基础支撑。工业路由器…...

[c++]--类和对象

目录 前言 一、类的定义 1.类定义格式 2.访问限定符 3.类域 二、实例化 1.实例化概念 2.对象大小 三、this指针 四、C和C语言实现Stack对比 五、类的默认成员函数 1.构造函数 2.析构函数 3.拷贝构造函数 4.赋值运算符重载 4.1.运算符重载 4.2.赋值运算符重载 5.取地址运算符重载…...

图论 之 迪斯科特拉算法求解最短路径

文章目录 题目743.网络延迟时间3341.到达最后一个房间的最少时间I 求解最短路径的问题&#xff0c;分为使用BFS和使用迪斯科特拉算法&#xff0c;这两种算法求解的范围是有区别的 BFS适合求解&#xff0c;边的权值都是1的图中的最短路径的问题 图论 之 BFS迪斯科特拉算法适合求…...

Linux中[root@localhost ~]#

root &#xff1a;当前登录用户 &#xff1a;分隔符 localhost &#xff1a;主机名。当前电脑的名字 ~&#xff1a;当前用户所在的位置 #&#xff1a;命令提示符&#xff0c;从这个位置开始可以输入命令 另一个提示符是$ 如果是 root &#xff0c;则提示&#xff03; 如果是普…...

DuodooBMS源码解读之 sale_delivery模块

发货通知单下载功能操作手册 一、功能概述 该代码实现了发货通知单的下载功能&#xff0c;用户可以选择要下载的发货通知单&#xff0c;系统将生成包含发货通知单详细信息的 Excel 文件供用户下载。 二、文件结构及说明 sale_delivery/controllers/download.py 定义了一个 …...

uniapp引入uview组件库(可以引用多个组件)

第一步安装 npm install uview-ui2.0.31 第二步更新uview npm update uview-ui 第三步在main.js中引入uview组件库 第四步在uni.scss中引入import "uview-ui/theme.scss"样式 第五步在文件中使用组件...

SpringCloud-Eureka初步使用

什么是REST是一组用于规范资源在网络中转移的表现形式软件架构设计风格.简单来说就是客户端和服务器之间的一种交互形式 什么是RESTful,满足了REST风格的接口或者程序,RESTful API是其中的接口,spring中提供了RestTemplate这个类,他强制执行了REST的规范,包括使用HTTP协议的状…...

【gitlab】认识 持续集成与部署

持续集成&#xff08;CI&#xff09;与持续部署&#xff08;CD&#xff09; 1. 什么是持续集成&#xff08;CI&#xff09;&#xff1f; 持续集成&#xff08;Continuous Integration&#xff0c;CI&#xff09;是一种软件开发实践&#xff0c;强调开发人员频繁地将代码提交到…...

机器学习,我们主要学习什么?

机器学习的发展历程 机器学习的发展历程&#xff0c;大致分为以下几个阶段&#xff1a; 1. 起源与早期探索&#xff08;20世纪40年代-60年代&#xff09; 1949年&#xff1a;Hebb提出了基于神经心理学的学习机制&#xff0c;开启了机器学习的先河1950年代&#xff1a;机器学习的…...

React 高阶组件的优缺点

React 高阶组件的优缺点 优点 1. 代码复用性高 公共逻辑封装&#xff1a;当多个组件需要实现相同的功能或逻辑时&#xff0c;高阶组件可以将这些逻辑封装起来&#xff0c;避免代码重复。例如&#xff0c;多个组件都需要在挂载时进行数据获取操作&#xff0c;就可以创建一个数…...

算法1-4 数楼梯

题目描述 楼梯有 N 阶&#xff0c;上楼可以一步上一阶&#xff0c;也可以一步上二阶。 编一个程序&#xff0c;计算共有多少种不同的走法。 输入格式 一个数字&#xff0c;楼梯数。 输出格式 输出走的方式总数。 输入输出样例 输入 #1 4 输出 #1 5 说明/提示 对于…...

我的世界1.20.1forge开发教程(6)——自定义燃料,熔炼规则、配方

配方篇 在Minecraft中,配方代码是用于定义合成配方的一种数据格式。在开发者的角度,配方代码通常以JSON格式编写,包含了合成所需的原料、合成产物以及合成方式等信息。 在1.12版本之前,开发者需要通过修改游戏的源代码来添加自定义配方。这通常需要对游戏的Java代码进行修…...

推荐几款SpringBoot项目手脚架

作为程序员、一般需要搭建项目手脚架时、都会去Gitee或Github上去找、但是由于Github在国内并不稳定、所以就只能去Gitee去上查找。 不同语言检索方式不一样、但是也类似。 Gitee WEB应用开发 / 后台管理框架 芋道源码 ELADMIN 后台管理系统 一个基于 Spring Boot 2.7.1…...

01 1个路由器+两个子网

前言 这是最近一个朋友的 ensp 相关的问题, 这里来大致了解一下 ensp, 计算机网络拓扑 相关基础知识 这里一系列文章, 主要是参照了这位博主的 ensp 专栏 这里 我只是做了一个记录, 自己实际操作了一遍, 增强了一些 自己的理解 当然 这里仅仅是一个 简单的示例, 实际场景…...

buu-[OGeek2019]babyrop-好久不见41

打开 /dev/urandom 设备文件&#xff0c;读取4个字节到 buf 中。 将 buf 传递给 sub_804871F() 函数&#xff0c;该函数似乎对输入进行某种处理并返回一个值 v2。 最后&#xff0c;将 v2 传递给 sub_80487D0() 函数。 这个函数首先将 a1 转换为字符串 s。 然后从标准输入读…...

PV和UV的区别

文章目录 1. UV&#xff08;Unique Visitor / 独立访客&#xff09;&#xff1a;多少人来过2. PV&#xff08;Page View / 页面浏览量&#xff09;&#xff1a;访问了多少次3. 对比 UV 和 PV4. 示例场景5. 扩展指标 UV 侧重用户规模&#xff0c;反映“多少人来过”。PV 侧重访问…...

DeepSeek掘金——调用DeepSeek API接口 实现智能数据挖掘与分析

调用DeepSeek API接口:实现智能数据挖掘与分析 在当今数据驱动的时代,企业和开发者越来越依赖高效的数据挖掘与分析工具来获取有价值的洞察。DeepSeek作为一款先进的智能数据挖掘平台,提供了强大的API接口,帮助用户轻松集成其功能到自己的应用中。本文将详细介绍如何调用D…...

JavaScript变量的作用域介绍

JavaScript变量的作用域介绍 JavaScript 变量的作用域决定了变量在代码中的可访问性。 var 是 JavaScript 中最早用于声明变量的关键字&#xff0c;它函数作用域或全局作用域。 let 关键字&#xff0c;具有块级作用域、全局作用域。 const关键字&#xff0c;具有块级作用域…...

ollama如何安全卸载,解决Ollama unins000.msg is missing

春节后在本地电脑安装了Ollama的客户端&#xff0c;每次开机自启&#xff0c;影响开机速度&#xff0c;而且本地的模型不如联网的回答效果好&#xff0c;果断选择了卸载&#xff0c;但是今天卸载发现提示下方的错误。根据此文章可以解决当前的问题。 根据此文章可以解决当前的…...

2.5GE 超千兆SFP光模块型号(常用光模块收发光功率范围)

SFP 2.5GE超千兆光模&#xff0c;参考表格&#xff1a; 型号类型工作波长 (nm)发光功率 (dBm)光功率灵敏度 (dBm)传输距离 (m)SFP-25G-SR多模光纤850-10.0 to -3.0-18.0300 (OM3) / 400 (OM4)SFP-25G-LR单模光纤1310-5.0 to 1.0-24.010,000SFP-25G-ER单模光纤1550-1.0 to 4.0…...

Ubuntu24.04安装不同版本的pip

目录 1.安装pip 2. 为不同的Python版本安装pip 3. 安装python库 1.安装pip 一般情况下&#xff0c;Ubuntu系统默认提供Python 3&#xff0c;但可能没有安装pip。可以通过以下命令安装pip sudo apt update sudo apt install python3-pip 安装完成后&#xff0c;可以通过以下…...

fastadmin实现海报批量生成、邮件批量发送

记录一个海报批量生成、邮件批量发送功能开发&#xff0c;业务场景如下&#xff1a; 国外客户做观展预登记&#xff0c;工作人员通过后台&#xff0c;批量给这些观众生成入场证件并发送到观众登记的邮箱&#xff0c;以方便观众入场时快速进场。证件信息包含入场二维码、姓名&a…...

拆解微软CEO纳德拉战略蓝图:AI、量子计算、游戏革命如何改写未来规则!

2025年2月19日 知名博主Dwarkesh Patel对话微软CEO萨蒂亚纳德拉 在最新访谈释放重磅信号&#xff1a;AI将掀起工业革命级增长&#xff0c;量子计算突破引爆材料科学革命&#xff0c;游戏引擎进化为世界模拟器。 整个视频梳理出几大核心观点&#xff0c;揭示科技巨头的未来十年…...

深度学习(2)-深度学习关键网络架构

关键网络架构 深度学习有4种类型的网络架构&#xff1a;密集连接网络、卷积神经网络、循环神经网络和Transformer。每种类型的模型都是针对特定的输入模式&#xff0c;网络架构包含了关于数据结构的假设&#xff0c;即模型搜索的假设空间。某种架构能否解决某个问题&#xff0…...

MyBatis中的日志和映射器说明

1.MyBatis中的日志 1.1 什么是日志 ​ 在我们编写应用的时候&#xff0c;有一些信息需要及时查看&#xff0c;查看的时候有时需要输出到控制台&#xff0c;有时需要输出到文件。MyBatis也需要日志&#xff0c;一般情况下&#xff0c;使用log4j进行日志管理。 1.2 在MyBatis中…...

pip下载速度变快可以用清华镜像源

pip下载速度变快可以用清华镜像源 https://pypi.tuna.tsinghua.edu.cn/simplepip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple参考清华镜像源地址&#xff08;国内下载python包必备地址&#xff09;_清华源镜像地址-CSDN博客...

骶骨神经

骶骨肿瘤手术后遗症是什么_39健康网_癌症 [健康之路]匠心仁术&#xff08;七&#xff09; 勇闯禁区 骶骨肿瘤切除术...

LeetCode刷题---二分查找---441

排列硬币 441. 排列硬币 - 力扣&#xff08;LeetCode&#xff09; 题目 你总共有 n 枚硬币&#xff0c;并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯&#xff0c;其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。 给你一个数字 n &#xff0c;计算…...

DeepSeek 提示词:定义、作用、分类与设计原则

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

最短路的方案数+打印路径

这个题目整合了我们最短路用到的很多技能 如何统计最短路径的方案数呢&#xff0c;这就需要我们另外开一个全局数组 如何打印路径呢&#xff0c;还是开一个全局的数组&#xff0c;记录前一个是啥就行 简单的来说&#xff0c;要增加啥新的功能&#xff0c;直接多开全局变量就行…...

Python爬虫系列教程之第十三篇:构建高可用爬虫系统 —— 混合架构与自动化监控

大家好&#xff0c;欢迎继续关注本系列爬虫教程&#xff01;随着爬虫项目规模的不断扩大和业务需求的提升&#xff0c;单一技术方案往往难以满足实际应用中对高可用性、稳定性和自动化监控的要求。如何构建一个既能应对多种反爬策略&#xff0c;又能在异常情况下自动恢复、实时…...

Python学习心得浅拷贝与深拷贝

一、变量的赋值、浅拷贝以及深拷贝的定义&#xff1a; 1.变量的赋值&#xff1a;只是形成两个变量&#xff0c;实际上还是指向同一个对象 2.浅拷贝&#xff1a;拷贝时&#xff0c;对象包含的子对象内容不拷贝&#xff0c;因此&#xff0c;源对象与拷贝对象会引用同一个子对象…...

cs106x-lecture13(Autumn 2017)-SPL实现

打卡cs106x(Autumn 2017)-lecture13 (以下皆使用SPL实现&#xff0c;非STL库&#xff0c;后续课程结束会使用STL实现) 1、v1v2p1p2 The following code C uses pointers and produces two lines of output. What is the output? int v1 10; int v2 25; int* p1 &v1…...

3D模型在线转换工具:轻松实现3DM转OBJ

3D模型在线转换是一款功能强大的在线工具&#xff0c;支持多种3D模型格式的在线预览和互转。无论是工业设计、建筑设计&#xff0c;还是数字艺术领域&#xff0c;这款工具都能满足您的需求。 3DM与OBJ格式简介 3DM格式&#xff1a;3DM是一种广泛应用于三维建模的文件格式&…...

AI IDE 新势力 Trae 功能深度解析:Builder与Chat模式的应用场景与市场竞争力分析

文章目录 一、前言二、简介2.1 Trae 的背景与定位 三、Trae 核心功能3.1 Builder模式介绍3.2 Chat模式介绍 四、Trae 实际应用案例4.1 Trae 安装与配置4.1.1 Trae 安装与配置4.1.2 Trae 设置 4.2 实战案例分享4.2.1 Trae Builder模式&#xff1a;从0到1生成对接 DeepSeek 的聊天…...

天 锐 蓝盾终端安全管理系统:办公U盘拷贝使用管控限制

天 锐 蓝盾终端安全管理系统以终端安全为基石&#xff0c;深度融合安全、管理与维护三大要素&#xff0c;通过对桌面终端系统的精准把控&#xff0c;助力企业用户构筑起更为安全、稳固且可靠的网络运行环境。它实现了管理的标准化&#xff0c;有效破解终端安全管理难题&#xf…...

ADCP处理软件CODAS安装 (conda方法安装)

夏威夷大学出品的ADCP处理软件&#xff0c;我主要用来查看船载ADCP流速数据。 1. 先安装conda(miniconda就可以)&#xff0c;这里不再赘述&#xff0c;安装完可以添加conda库和取消登录自动激活conda conda config --add channels conda-forge # 添加库 conda config --set a…...

JUC并发—9.并发安全集合三

大纲 1.并发安全的数组列表CopyOnWriteArrayList 2.并发安全的链表队列ConcurrentLinkedQueue 3.并发编程中的阻塞队列概述 4.JUC的各种阻塞队列介绍 5.LinkedBlockingQueue的具体实现原理 6.基于两个队列实现的集群同步机制 1.并发安全的数组列表CopyOnWriteArrayList …...

后端Java Stream数据流的使用=>代替for循环

API讲解 对比 示例代码对比 for循环遍历 package cn.ryanfan.platformback.service.impl;import cn.ryanfan.platformback.entity.Algorithm; import cn.ryanfan.platformback.entity.AlgorithmCategory; import cn.ryanfan.platformback.entity.DTO.AlgorithmInfoDTO; im…...

强化学习-GAE方法

2016-ICLR-HIGH-DIMENSIONAL CONTINUOUS CONTROL USING GENERALIZED ADVANTAGE ESTIMATION 解决问题 强化学习的目标为最大化策略的预期总回报&#xff0c;其中一个主要困难为 行为对reward的影响存在一个长时间的延迟&#xff08;credit assignment problem&#xff09;。价…...

51c大模型~合集71

我自己的原文哦~ https://blog.51cto.com/whaosoft/12260659 #大模型推理加速技术的学习路线 EfficientQAT 可以在 41 小时内在单个 A100-80GB GPU 上完成对 2-bit Llama-2-70B 模型的量化感知训练。与全精度模型相比&#xff0c;精度仅下降了不到 3%&#xff08;69.48 v…...

PyTorch-基础(CUDA、Dataset、transforms、卷积神经网络、VGG16)

PyTorch-基础 环境准备 CUDA Toolkit安装&#xff08;核显跳过此步骤&#xff09; CUDA Toolkit是NVIDIA的开发工具&#xff0c;里面提供了各种工具、如编译器、调试器和库 首先通过NVIDIA控制面板查看本机显卡驱动对应的CUDA版本&#xff0c;如何去下载对应版本的Toolkit工…...

Linux(centos)系统安装部署MySQL8.0数据库(GLIBC版本)

安装前检查服务器glibc版本&#xff0c;下载对应版本包 rpm -qa | grep glibc mysql安装包及依赖包已整理好&#xff0c;下载地址&#xff1a;https://pan.quark.cn/s/3137acc814c0&#xff0c;下载即可安装 一、下载MySQL mysql安装包及依赖包已整理好&#xff0c;下载地址…...

Transformer解析——(四)Decoder

本系列已完结&#xff0c;全部文章地址为&#xff1a; Transformer解析——&#xff08;一&#xff09;概述-CSDN博客 Transformer解析——&#xff08;二&#xff09;Attention注意力机制-CSDN博客 Transformer解析——&#xff08;三&#xff09;Encoder-CSDN博客 Transforme…...

TypeScript 中 type 和 interface 深度对比分析

一、核心概念对比 特性interfacetype本质声明式类型契约&#xff08;面向对象范式&#xff09;类型别名&#xff08;函数式编程思维&#xff09;可扩展性支持声明合并&#xff08;多次声明自动合并&#xff09;不可合并基础类型支持只能描述对象/函数类型可描述任意类型&#…...

unplugin-vue-components,unplugin-auto-import,借用ai去学习

好的&#xff0c;我现在需要帮助用户理解他们提供的这段Vite配置代码。用户之前已经询问过关于ElementPlusResolver的导入问题&#xff0c;现在他们展示了在vite.config.ts中使用该解析器的具体配置。我需要逐步分析这段代码&#xff0c;并解释每个部分的作用。 首先&#xff…...

Nginx学习笔记:常用命令端口占用报错解决Nginx核心配置文件解读

Nginx 1. 基础命令1.1 重新加载systemd配置1.2 停止Nginx服务1.3 启动Nginx服务1.4 重启Nginx服务1.5 查看Nginx服务状态1.6 测试配置和重载Nginx 2. 额外命令2.1 启用开机自启2.2 禁用开机自启2.3 强制关闭所有Nginx进程 3. Nginx端口占用解决方案3.1 查找占用端口8090的进程3…...

C++ ——继承

体现的是代码复用的思想 1、子类继承父类&#xff0c;子类就拥有了父类的特性&#xff08;成员方法和成员属性&#xff09; 2、已存在的类被称为“基类”或者“父类”或者“超类”&#xff1b;新创建的类被称为“派生类”或者“子类” 注意&#xff1a; &#xff08;1&#…...