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

NAT 代理服务 内网穿透

🌈 个人主页:Zfox_
🔥 系列专栏:Linux

目录

  • 一:🔥 NAT 技术背景
  • 二:🔥 NAT IP 转换过程
  • 三:🔥 NAPT
  • 四:🔥 代理服务器
    • 🦋 正向代理
      • 概述
      • 工作原理
      • 功能特点
      • 应用场景
    • 🦋 反向代理
      • 概述
      • 基本原理
      • 应用场景
    • 🦋 NAT 和代理服务器
  • 五:🔥 内网穿透 和 内网打洞
    • 🦋 内网穿透
      • 1. 背景
        • (1)私有IP地址的限制
        • (2)NAT(网络地址转换)的限制
        • (3)防火墙的限制
    • 🦋 内网打洞
      • 内网打洞的工作原理
      • 内网打洞的优缺点
        • 优点:
        • 缺点:
      • 适用场景
  • 六:🔥 总结
    • 🦋 数据链路层
    • 🦋 网络层
    • 🦋 传输层
    • 🦋 应用层
  • 七:🔥 共勉

一:🔥 NAT 技术背景

💬 今天我们来聊聊网络世界里一个超重要的技术 —— NAT(网络地址转换)。你有没有想过,为啥我们家里的电脑、手机,还有公司里的各种设备,都能同时连上网,但又不会互相冲突呢?这就得感谢 NAT

🕸️ IPv4 地址不够用,这事儿大家都清楚。NAT 就像是一个超级聪明的 “翻译官”,它能把我们内网里的私有IP地址(比如192.168.1.x)转换成公网能识别的全局IP地址。这样,我们就能在有限的公网IP下,让无数设备同时上网!

🌰 举个例子,学校里可能有几百台电脑,但学校只需要一个公网IP,NAT 就能搞定这一切。公网IP必须是独一无二的,但私有IP就随便多了,不同的局域网里完全可以重复用,一点儿问题都没有。

二:🔥 NAT IP 转换过程

那么这样在网络通信过程中势必会造成问题,因为私有IP并不是唯一的,所以私有IP不能出现在公网通信中的。解决这个问题的机制就是 NAT 机制。NAT 机制即在路由器进行转发时将报文源IP更换为 路由器WAN口IP 进行一次源IP地址替换! 这样就可以私有IP就不会出现在公网中!并且在通信过程中够可以层层向下找到唯一的主机!

NAT IP 转换过程

  • NAT 路由器将源地址从 10.0.0.10 替换成全局的 IP 202.244.174.37
  • NAT 路由器收到外部的数据时,又会把目标 IP 从 202.244.174.37 替换回 10.0.0.10
  • NAT 路由器内部,有一张自动生成的、用于地址转换的表 NAPT
  • 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系。

三:🔥 NAPT

🤔 那么问题来了,如果局域网内有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的 IP 都是相同的。那么 NAT 路由器如何判定将这个数据包转发给哪个局域网的主机?这时候 NAPT 来解决这个问题了。使用 IP+port 来建立这个关联关系。

NAPT

这种关联关系也是由 NAT 路由器自动维护的。例如在 TCP 的情况下,建立连接时就会生成这个表项;在断开连接后,就会删除这个表项。

路由器之中,进行转发时,维护了一张 NAPT 转换表。其中记录目的 IP + 端口号portWAN口IP + 端口号port 的映射关系,互为键值。这两个都具有唯一性:局域网唯一,公网唯一!源IP发生替换,源端口也可能发生替换!这样保证了映射的唯一性!

每个路由器在转发过程中都会生成一份NAPT 表,最终就可以到达公网进行通信!这样其实也说明了一个问题,公网是无法直接访问内网机器的,只有内网机器向公网发送过数据,建立过 NAPT 表,才能从外部进入内部!

所以 NAT 技术是有缺陷的,由于 NAT 依赖这个转换表, 所以有诸多限制:

  • 无法从 NAT 外部向内部服务器建立连接。
  • 转换表的生成和销毁都需要额外开销。
  • 通信过程中一旦 NAT 设备异常,即使存在热备,所有的 TCP 连接也都会断开。

使用 WIndows 访问我们的 Linux 服务端时,我们仔细观察会发现服务端接收到的IP地址和 WIndows 端是不一致的!
这也是由于路由器 NAT转发的结果!Linux 服务上的实际获取到的IP是出入口路由器的 WAN口IP

四:🔥 代理服务器

🦋 正向代理

概述

正向代理Forward Proxy是一种常见的网络代理方式,它位于客户端和目标服务器之间,代表客户端向目标服务器发送请求。正向代理服务器接收客户端的请求,然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。通过这种方式,正向代理可以实现多种功能,如提高访问速度、隐藏客户端身份、实施访问控制等。

正向代理

工作原理

  • 客户端将请求发送给正向代理服务器。
  • 正向代理服务器接收请求,并根据配置进行处理,如缓存查找、内容过滤等。
  • 正向代理服务器将处理后的请求转发给目标服务器。
  • 目标服务器处理请求,并将响应返回给正向代理服务器。
  • 正向代理服务器将响应返回给客户端。

功能特点

  • 缓存功能:正向代理服务器可以缓存经常访问的资源,当客户端再次请求这些资源时,可以直接从缓存中获取,提高访问速度。
  • 内容过滤:正向代理可以根据预设的规则对请求或响应进行过滤,如屏蔽广告、阻止恶意网站等。
  • 访问控制:通过正向代理,可以实现对特定网站的访问控制,如限制员工在工作时间访问娱乐网站。
  • 隐藏客户端身份:正向代理可以隐藏客户端的真实 IP 地址,保护客户端的隐私。
  • 负载均衡:在多个目标服务器之间分配客户端请求,提高系统的可扩展性和可靠性。

应用场景

  • 企业网络管理:企业可以通过正向代理实现对员工网络访问的管理和控制,确保员工在工作时间内专注于工作,避免访问不良网站或泄露公司机密。
  • 公共网络环境:在公共场所如图书馆、学校等提供的网络环境中,通过正向代理可以实现对网络资源的合理分配和管理,确保网络使用的公平性和安全性。
  • 内容过滤与保护:家长可以通过设置正向代理来过滤不良内容,保护孩子免受网络上的不良信息影响。
  • 提高访问速度:对于经常访问的网站或资源,正向代理可以通过缓存机制提高访问速度,减少网络延迟。
  • 跨境电商与海外访问:对于跨境电商或需要访问海外资源的企业和个人,正向代理可以帮助他们突破网络限制,顺畅地访问海外网站和资源。

🦋 反向代理

概述

🛜 反向代理服务器 是一种网络架构模式,其作为 Web 服务器的前置服务器,接收来自客户端的请求,并将这些请求转发给后端服务器,然后将后端服务器的响应返回给客户端。这种架构模式可以提升网站性能、安全性和可维护性等。

反向代理

基本原理

🍑 反向代理服务器位于客户端和 Web 服务器之间,当客户端发起请求时,它首先会到达反向代理服务器。反向代理服务器会根据配置的规则将请求转发给后端的 Web 服务器,并将 Web 服务器的响应返回给客户端。在这个过程中,客户端并不知道实际与哪个 Web 服务器进行了交互,它只知道与反向代理服务器进行了通信。

应用场景

  • 负载均衡:反向代理服务器可以根据配置的负载均衡策略,将客户端的请求分发到多个后端服务器上,以实现负载均衡。这有助于提升网站的整体性能和响应速度,特别是在高并发场景下。
  • 安全保护:反向代理服务器可以隐藏后端 Web 服务器的真实 IP 地址,降低其被直接攻击的风险。同时,它还可以配置防火墙、访问控制列表(ACL)等安全策略,对客户端的请求进行过滤和限制,以保护后端服务器的安全。
  • 缓存加速:反向代理服务器可以缓存后端 Web 服务器的响应内容,对于重复的请求,它可以直接从缓存中返回响应,而无需再次向后端服务器发起请求。这可以大大减少后端服务器的负载,提升网站的响应速度。
  • 内容过滤和重写:反向代理服务器可以根据配置的规则对客户端的请求进行过滤和重写,例如添加或删除请求头、修改请求路径等。这有助于实现一些特定的业务需求,如 URL 重写、用户认证等。
  • 动静分离:在大型网站中,通常需要将静态资源和动态资源分开处理。通过将静态资源部署在反向代理服务器上,可以直接从反向代理服务器返回静态资源的响应,而无需再次向后端服务器发起请求。这可以大大提升静态资源的访问速度。
  • CDN(Content Delivery Network,内容分发网络):就是采用了反向代理的原理。

🦋 NAT 和代理服务器

🍑 路由器往往都具备 NAT 设备的功能,通过 NAT 设备进行中转,完成子网设备和其他子网设备的通信过程。代理服务器看起来和 NAT 设备有一点像。客户端像代理服务器发送请求,代理服务器将请求转发给真正要请求的服务器;服务器返回结果后,代理服务器又把结果回传给客户端。

那么 NAT 和代理服务器的区别有哪些呢?

  • 从应用上讲NAT 设备是网络基础设备之一,解决的是 IP 不足的问题。代理服务器则是更贴近具体应用,比如通过代理服务器进行翻墙,另外像迅游这样的加速器,也是使用代理服务器。
  • 从底层实现上讲NAT 是工作在网络层,直接对 IP 地址进行替换。代理服务器往往工作在应用层。
  • 从使用范围上讲NAT 一般在局域网的出口部署,代理服务器可以在局域网做,也可以在广域网做,也可以跨网。
  • 从部署位置上看NAT 一般集成在防火墙、路由器等硬件设备上,代理服务器则是一个软件程序,需要部署在服务器上。

代理服务器是一种应用比较广的技术:

  • 翻墙:广域网中的代理。
  • 负载均衡:局域网中的代理。

代理服务器又分为正向代理和反向代理:

  • 正向代理:用于请求的转发(例如借助代理绕过反爬虫)。
  • 反向代理:往往作为一个缓存。

五:🔥 内网穿透 和 内网打洞

🦋 内网穿透

内网穿透是一种网络技术,用于解决内网设备与外部网络之间通信的问题。它可以让外部设备访问内网中的设备或服务,而无需直接暴露内网设备的IP地址,从而在一定程度上兼顾了安全性和可访问性。

1. 背景

在大多数网络环境中,内网设备(如家庭路由器内的设备、公司内部网络中的服务器等)通常被隐藏在路由器或防火墙之后,无法直接从外部网络访问。这主要是由于以下原因:

(1)私有IP地址的限制

内网设备通常使用私有IP地址(如192.168.x.x),这些地址只能在局域网内使用,无法在公网中直接访问。私有IP地址的范围包括:

  • 10.0.0.010.255.255.255
  • 172.16.0.0172.31.255.255
  • 192.168.0.0192.168.255.255

这些地址在互联网中是不可路由的,因此外部设备无法直接通过这些地址访问内网设备。

(2)NAT(网络地址转换)的限制

内网设备通过路由器访问外网时,路由器会将内网设备的私有IP地址转换为公网IP地址(即路由器的WAN口IP)。这个过程称为网络地址转换(NAT)。NAT的作用是:

  • 节省内公网IP地址资源。
  • 保护内网设备的安全性。

然而,NAT机制也导致了外部设备只能看到路由器的公网IP,而无法直接访问内网设备的私有IP。

(3)防火墙的限制

防火墙是网络中的安全屏障,通常会阻止外部设备直接访问内网设备,以保护内网的安全。防火墙的作用包括:

  • 阻止未经授权的访问。
  • 过滤恶意流量。
  • 保护内网设备免受攻击。

防火墙的限制进一步增加了内网设备对外部访问的难度。

内网穿透

如果今天可以做到:

首先我们拥有一台云服务器,并且在内网构建一台 Linux 机器,使用 22 端口部署了一个 SSH 服务,可以与云服务器建立连接。云服务器也部署一个服务,可以将机器上所有 8888 端口获取的数据转发到内网的 Linux 服务器上。这样,云服务器的 8888 端口与内网服务器的 22 端口就建立了映射。那么其他内网的机器可以通过访问云服务器的8888 端口直接访问到内网的 Linux 机器。这叫做 内网穿透技术

我们可以在云服务器上使用 frp 软件进行内网穿透服务:

  • 服务器:拥有一台具有公网IP地址的服务器,作为 FRP 的服务端。
  • 客户端:需要穿透的内网机器,作为 FRP 的客户端。

为什么要进行内网穿透呢?内网穿透有以下优点:

  • 成本效益:内网穿透可以避免购买服务器公网IP地址的高昂成本,同时也能实现公网服务的功能。
  • 访问限制:由于 NAT(网络地址转换)和防火墙的存在,内网中的设备通常无法直接从外网访问。内网穿透技术可以帮助绕过这些限制,使得内网服务可以被外网访问。
  • 资源共享:内网穿透使得个人或企业可以将其内网中的资源(如文件服务器、Web服务、数据库等)分享给外网的用户,而无需复杂的网络配置。
  • 远程管理:系统管理员可以通过内网穿透技术,从外部网络远程管理内网中的服务器或设备,方便进行维护和监控。可以实现远程访问公司服务器进行办公。
  • 开发与测试:开发者可以在内网环境中开发应用程序,并通过内网穿透技术让外网的测试人员或合作伙伴访问,以便进行测试和反馈。
  • 安全性:内网穿透可以提供一种更安全的远程访问方式。通过配置,可以限制哪些外部地址可以访问内网服务,从而保护内网资源不被未经授权的访问。

🦋 内网打洞

在上述场景中,客户端最终被云服务器获取的源IP是出入口路由器的 WAN口IP 。服务端通过配置会有内网服务器的 IP地址端口号。那么,可不可以将服务端的 IP+port 发给客户端,客户端的 IP+port 发给服务端呢?

答案是可以的。这样客户端就可以直接向内网服务器进行访问,服务端也可以直接给客户端发送数据。这种技术就叫做 内网打洞!这种方式直接跨过了云服务器,在出入口路由器上打了一个洞,可以直接进行访问。

内网打洞

内网打洞的工作原理

  1. 信息交换

    • 客户端和服务端通过云服务器交换彼此的 WAN口IP端口号
    • 云服务器作为中介,将客户端的 IP+port 发送给服务端,同时将服务端的 IP+port 发送给客户端。
  2. 建立直接连接

    • 客户端和服务端分别使用对方的 IP+port 尝试建立直接连接。
    • 由于双方的 WAN口IP端口号 已经交换,路由器会允许这种直接通信。
  3. 绕过云服务器

    • 一旦直接连接建立成功,客户端和服务端就可以绕过云服务器,直接进行数据传输。
    • 这种方式不仅减少了云服务器的负载,还提高了数据传输的效率。

内网打洞的优缺点

优点:
  • 高效性:直接通信减少了中间环节,提高了数据传输速度。
  • 降低成本:减少了对云服务器的依赖,降低了带宽和计算资源的消耗。
  • 灵活性:适用于需要频繁通信的场景,如实时音视频传输、在线游戏等。
缺点:
  • 路由器限制:部分路由器可能不支持 NAT 打洞,导致无法建立直接连接。
  • 安全性问题:直接暴露 WAN口IP端口号 可能增加被攻击的风险。
  • 复杂性:实现内网打洞需要对网络协议有较深的理解,且调试和维护成本较高。

适用场景

  • P2P 网络:如文件共享、区块链网络等。
  • 实时通信:如视频会议、在线游戏等。
  • 物联网设备:设备之间需要直接通信的场景。

需要注意的是,一些出入口路由器可能不允许进行内网打洞。这里我们只需要了解其原理即可。

六:🔥 总结

🦋 数据链路层

  • 数据链路层的作用:两个设备(同一种数据链路节点)之间进行传递数据。
  • 以太网:是一种技术标准;既包含了 数据链路层 的内容,也包含了一些 物理层 的内容。例如:规定了网络拓扑结构、访问控制方式、传输速率等。
  • 以太网帧格式
  • 理解 MAC 地址
  • 理解 ARP 协议
  • 理解 MTU

🦋 网络层

  • 网络层的作用:在复杂的网络环境中确定一个合适的路径。
  • 理解 IP 地址:理解 IP 地址MAC 地址的区别。
  • 理解 IP 协议格式
  • 了解网段划分方法
  • 理解如何解决 IP 数目不足的问题:掌握网段划分的两种方案。理解私有 IP公网 IP
  • 理解网络层的 IP 地址路由过程:理解一个数据包如何跨越网段到达最终目的地。
  • 了解 IP 数据包分包的原因
  • 了解 ICMP 协议
  • 了解 NAT 设备的工作原理

🦋 传输层

  • 传输层的作用:负责数据能够从发送端传输到接收端。
  • 理解 端口号的概念
  • 认识 UDP 协议:了解 UDP 协议的特点。
  • 认识 TCP 协议:理解 TCP 协议的可靠性。理解 TCP 协议的状态转化。
  • 掌握 TCP 的连接管理:确认应答、超时重传、滑动窗口、流量控制、拥塞控制、延迟应答、捎带应答特性。
  • 理解 TCP 面向字节流:理解粘包问题和解决方案。
  • 能够基于 UDP 实现可靠传输
  • 理解 MTUUDP/TCP 的影响

🦋 应用层

  • 应用层的作用:满足我们日常需求的网络程序,都在应用层。
  • 能够根据自己的需求:设计应用层协议。
  • 了解 HTTP 协议
  • 理解 DNS 的原理和工作流程

七:🔥 共勉

🎆 🧨 fq 草图讲解 彩蛋:
在这里插入图片描述

😋 以上就是我对 NAT & 代理服务 & 内网穿透 的理解, 觉得这篇博客对你有帮助的,可以点赞收藏关注支持一波~ 😉
在这里插入图片描述

相关文章:

NAT 代理服务 内网穿透

🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 NAT 技术背景二:🔥 NAT IP 转换过程三:🔥 NAPT四:🔥 代理服务器🦋 正向…...

C++20 Lambda表达式新特性:包扩展与初始化捕获的强强联合

文章目录 一、Lambda表达式的历史回顾二、C20 Lambda表达式的两大新特性(一)初始化捕获(Init-Capture)(二)包扩展(Pack Expansion) 三、结合使用初始化捕获与包扩展(一&a…...

ES scroll=1m:表示快照的有效时间为1分钟。怎么理解

在Elasticsearch中,scroll1m 表示你创建的 scroll 上下文 的有效时间为 1分钟。这个参数控制了你可以在多长时间内继续使用这个 scroll_id 来获取更多的数据。 什么是 Scroll 上下文? 当你使用 scroll API 时,Elasticsearch 会为你的查询创…...

【IoU变体对比:WIOU、SIOU、EIOU、GIOU、CIOU】

IoU变体对比:WIOU、SIOU、EIOU、GIOU、CIOU 1. 基本概念与公式(1) GIOU (Generalized Intersection over Union)(2) CIOU (Complete Intersection over Union)(3) EIOU (Efficient Intersection over Union)(4) SIOU (Shape-Enhanced Intersection over Union)(5) W…...

【MySQL】数据库-图书管理系统(CC++实现)

一.预期功能 该图书管理系统设计提供基本的设计模版,涉及数据库的增删查改等操作,包含登录功能,图书管理功能,图书借阅功能,用户管理功能等基础功能,详细功能查看以下菜单表,共包含三个菜单&am…...

【leetcode hot 100 560】和为K的子数组

解法一&#xff1a;用左右指针寻找字串&#xff0c;如果和>k&#xff0c;则减少一个数&#xff08;left&#xff09;&#xff1b;如果和<k&#xff0c;则加上一个数&#xff08;right&#xff09;。 class Solution {public int subarraySum(int[] nums, int k) {int nu…...

【漫话机器学习系列】110.线性可分(Linearly Separable)

线性可分与线性不可分的概念详解 1. 引言 在机器学习和模式识别领域&#xff0c;分类问题是一个重要的研究方向。在分类任务中&#xff0c;我们通常需要将不同类别的数据点分开&#xff0c;而如何进行分割是一个关键问题。线性可分&#xff08;Linearly Separable&#xff09…...

单细胞分析(19)—— 单细胞转录组基因集评分方法

下面是每种基因集评分方法的原理介绍代码示例&#xff0c;适用于R语言和Python两种主流生信分析环境。可以直接应用于单细胞转录组&#xff08;scRNA-seq&#xff09;数据分析中。 &#x1f52c; 单细胞转录组基因集评分方法&#xff08;附代码示例&#xff09; 在单细胞RNA测…...

【数据挖掘】Pandas

Pandas 是 Python 进行 数据挖掘 和 数据分析 的核心库之一&#xff0c;提供了强大的 数据清洗、预处理、转换、分析 和 可视化 功能。它通常与 NumPy、Matplotlib、Seaborn、Scikit-Learn 等库结合使用&#xff0c;帮助构建高效的数据挖掘流程。 &#x1f4cc; 1. 读取数据 P…...

Spring Boot 中 @Transactional 注解全面解析

亲爱的小伙伴们&#x1f618;&#xff0c;在求知的漫漫旅途中&#xff0c;若你对深度学习的奥秘、Java 与 Python 的奇妙世界&#xff0c;亦或是读研论文的撰写攻略有所探寻&#x1f9d0;&#xff0c;那不妨给我一个小小的关注吧&#x1f970;。我会精心筹备&#xff0c;在未来…...

【网络】数据链路层(以太网帧格式、MTU、ARP)、NAT、内网穿透

文章目录 1. 数据链路层2. 以太网帧格式3. MTU3.1 认识MTU3.2 MTU 对于 TCP 协议的影响 4. 局域网通信原理5. ARP协议5.1 基本概念5.2 原理5.3 ARP 数据报的格式 6. NAT技术7. 内网穿透8. 内网打洞9. 代理服务器9.1 正向代理9.2 反向代理9.3 NAT VS 代理服务器 10.网络总结 1. …...

ASPNET Core笔试题 【面试宝典】

文章目录 一、如何在ASP.NET Core中激活Session功能&#xff1f;二、什么是中间件&#xff1f;三、ApplicationBuilder的Use和Run方法有什么区别&#xff1f;四、如何使TagHelper在元素这一层上失效&#xff1f;五、什么是ASP.NET Core&#xff1f;六、ASP.NET Core中AOP的支持…...

Harmony os next~鸿蒙原子化服务开发实战:天气卡片开发全解析

鸿蒙原子化服务开发实战&#xff1a;天气卡片开发全解析 一、原子化服务与HarmonyOS卡片概述 &#xff08;1&#xff09;原子化服务特性 HarmonyOS原子化服务具有独立入口&#xff08;桌面图标/智慧搜索&#xff09;、免安装、跨设备流转三大核心特性。服务卡片作为其可视化载…...

【pytest框架源码分析三】pluggy源码分析之hook注册调用流程

pluggy的hook调用&#xff0c;最重要的就是使用了__call__魔法函数&#xff0c;这个函数能够在我们调用实例时&#xff0c;自动调用这个函数&#xff0c;无需自己手动调用。 前面介绍了各个类的方法&#xff0c;这里简述下pluggy的调用流程&#xff08;主要介绍主流程&#xff…...

Linux消息队列

msgget函数&#xff08;类似于shmget&#xff09; 是 Linux 系统中用于 创建或获取消息队列&#xff08;System V Message Queue&#xff09; 的系统调用。 #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>int msgget(key_t key, int m…...

ChatGPT 提示词框架

作为一个资深安卓开发工程师&#xff0c;我们在日常开发中经常会用到 ChatGPT 来提升开发效率&#xff0c;比如代码优化、bug 排查、生成单元测试等。 但要想真正发挥 ChatGPT 的潜力&#xff0c;我们需要掌握一些提示词&#xff08;Prompt&#xff09;的编写技巧&#xff0c;并…...

对于动态线程池框架 Hippo4j 的思考

从 java 线程池探讨动态线程池框架的可行性以及扩展性 ThreadPoolExecutor 对外给用户暴露了很多 get、set 方法&#xff0c;get 方法可以让我直接获得一些线程池的运行时信息&#xff0c;比如线程池过去已经完成任务的总数量&#xff0c;线程池目前活跃线程数量等等&#xff…...

问deepseek: HYPRE BoomerAMG 有哪些参数可以进行性能调优

Hypre BoomerAMG 是一个高性能的多重网格预条件子&#xff0c;常用于求解大规模稀疏线性系统。为了优化其性能&#xff0c;可以调整以下关键参数&#xff1a; 1. AMG 参数 Coarsening (强连接阈值) strong_threshold: 控制强连接的阈值&#xff0c;通常在 0.25 到 0.6 之间&a…...

seacms v9 实现的MySQL注入

目录 过滤关键词information_schema 怎么办 一、环境搭建 二、环境分析 三、源代码分析 1、过滤程序 2、注入点 四、获取数据库名 五、获取数据库表名 六、获取表的列名 七、获取数据信息 过滤关键词information_schema 怎么办 1.、利用sys数据库&#xff08;MySQL 5.…...

基于C#的CANoe CLR Adapter开发指南

一、引言 CANoe 是一款广泛应用于汽车电子开发和测试的工具&#xff0c;它支持多种编程接口&#xff0c;方便开发者进行自定义扩展。CANoe CLR Adapter 允许我们使用 C# 语言与 CANoe 进行交互&#xff0c;充分利用 C# 的强大功能和丰富的类库。本文将详细介绍如何基于 C# 进行…...

Vue 系列之:基础知识

什么是 MVVM MVVM&#xff08;Model-View-ViewModel&#xff09;一种软件设计模式&#xff0c;旨在将应用程序的数据模型&#xff08;Model&#xff09;与视图层&#xff08;View&#xff09;分离&#xff0c;并通过 ViewModel 来实现它们之间的通信。降低了代码的耦合度。 M…...

知识库功能测试难点

图表交互功能测试难点 知识库图表类型多&#xff0c;每种图表交互功能不同。像柱状图&#xff0c;可能有点击柱子查看详细数据、鼠标悬停显示数据提示等交互&#xff1b;折线图除了这些&#xff0c;还可能支持缩放查看不同时间段数据。多种交互操作在不同图表间存在差异&#x…...

一文掌握 Scrapy 框架的详细使用,包括实战案例

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. Scrapy 简介2. Scrapy 的核心组件3. 安装 Scrapy4. 创建 Scrapy 项目4.1 创建项目4.2 创建 Spider5. 编写 Spider5.1 定义 Item5.2 编写 Spider 逻辑6. 运行 Scrapy 爬虫6.1 运行爬虫6.2 保存爬取数据7. Scrapy 的高…...

奔图Pantum M7165DN黑白激光打印一体机报数据清除中…维修

故障描述: 一台奔图Pantum M7165DN黑白激光打印一体机开机自检正常,自检过后就不能工作了,按键面板无任何反应一直提示数据清除中…,如果快速操作的话也能按出菜单、功能啥的,不过一会又死机了,故障请看下图: 故障检修: 经分析可能是主板数据出现了问题,看看能不能快速…...

微服务架构与传统的单体架构有什么区别?微服务架构(Spring Cloud + Maven)强在哪?

微服务架构与传统的单体架构&#xff08;Spring Boot Maven 项目&#xff09;在设计和实现上有显著差异&#xff0c;主要体现在系统拆分方式、部署模式、技术栈选择、维护成本等方面。以下是具体对比&#xff1a; 1. 架构设计 维度单体架构微服务架构系统拆分所有功能模块集…...

二、QT和驱动模块实现智能家居----2、编译支持QT的系统

因为我们的Linux内核文件不支持QT系统&#xff08;当然如果你的支持&#xff0c;完全跳过这篇文章&#xff09;&#xff0c;所以我们要从网上下载很多软件包&#xff0c;这里直接用百问网的软件包&#xff0c;非常方便。 一&#xff1a;Ubuntu 配置 1 设置交叉编译工具链 以…...

游戏引擎学习第128天

开始 然而&#xff0c;我们仍然有一些工作要做&#xff0c;渲染部分并没有完全完成。虽然现在已经能够运行游戏&#xff0c;而且帧率已经可以接受&#xff0c;但仍然有一些东西需要进一步完善。正在使用调试构建编译版本&#xff0c;虽然调试版本的性能不如优化版本&#xff0…...

【量化策略】套利交易策略

【量化策略】套利交易策略 &#x1f680;量化软件开通 &#x1f680;量化实战教程 技术背景与应用场景 在金融市场中&#xff0c;套利交易策略是一种利用市场价格差异来获取无风险利润的交易方式。这种策略通常涉及同时买入和卖出不同市场上的相同或相似金融产品&#xff0…...

laravel11设置中文语言包

安装中文语言包 Laravel 11 默认没有内置完整中文语言包&#xff0c;推荐使用第三方维护的完整翻译&#xff1a; # 通过 Composer 安装语言包 composer require laravel-lang/common --dev# 发布中文语言文件到项目 php artisan lang:add zh_CN这会自动将中文语言文件生成到 l…...

Javaweb数据库多表查询 内连接 外连接 子查询

内连接 外连接 左外连接&#xff0c;左边是全部表 表名&#xff0c;即使没有匹配右边的数据&#xff0c;也要查询出来 子查询 案例 1.没有说所有的部门&#xff0c;所有的员工&#xff0c;用内连接&#xff08;隐式内连接&#xff09;...

欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、马氏距离理解学习

目录 一、欧氏距离&#xff08;Euclidean Distance&#xff09;公式&#xff1a;原理&#xff1a; 二、曼哈顿距离&#xff08;Manhattan Distance&#xff09;公式&#xff1a;原理&#xff1a; 三、切比雪夫距离&#xff08;Chebyshev Distance&#xff09;公式&#xff1a;原…...

【地图视界-Leaflet4】绘制自定义图形

引言 在前面的文章中&#xff0c;我们学会了如何在 Leaflet 中添加标记、弹窗以及切换不同的底图和叠加图层。但是在很多实际应用中&#xff0c;我们需要在地图上绘制多边形、圆形、矩形、折线等几何图形&#xff0c;用于标记区域、路径规划、范围分析等。 本篇文章将介绍如何…...

华为hcia——Datacom实验指南——STP工作基本原理及STP/RSTP基本功能配置

什么时候需要用到STP 在二层交换网络中&#xff0c;为了避免环路产生。 什么是STP STP生成树协议&#xff0c;是用来在冗余链路上消除二层环路。在众多交换机中&#xff0c;需要设置出一个根桥&#xff0c;其余的交换机称为非根桥&#xff0c;根桥是整个交换网络的核心&…...

游戏引擎学习第127天

仓库:https://gitee.com/mrxiao_com/2d_game_3 为本周设定阶段 我们目前的渲染器已经实现了令人惊讶的优化&#xff0c;经过过去两周的优化工作后&#xff0c;渲染器在1920x1080分辨率下稳定地运行在60帧每秒。这个结果是意料之外的&#xff0c;因为我们没有预计会达到这样的…...

PostgreSQL 创建表格

PostgreSQL 创建表格 在数据库管理中&#xff0c;表格&#xff08;Table&#xff09;是数据存储的基础。PostgreSQL作为一款强大的开源对象关系型数据库管理系统&#xff08;ORDBMS&#xff09;&#xff0c;创建表格是其最基本的功能之一。本文将详细讲解如何在PostgreSQL中创…...

AF3 deduplicate_unpaired_sequences函数解读

AlphaFold3 msa_pairing模块的deduplicate_unpaired_sequences 函数的作用是移除 chain[msa] 中那些已经存在于 chain[msa_all_seq] 中的序列。换句话说&#xff0c;它保留那些不在 chain[msa_all_seq] 中的序列&#xff0c;从而确保未配对的 MSA 序列不会与配对的 MSA 序列重复…...

图像处理之图像边缘检测算法

目录 1 图像边缘检测算法简介 2 Sobel边缘检测 3 经典的Canny边缘检测算法 4 演示Demo 4.1 开发环境 4.2 功能介绍 4.3 下载地址 参考 1 图像边缘检测算法简介 图像边缘检测是计算机视觉和图像处理中的基本问题&#xff0c;主要目的是提取图像中明暗变化明显的边缘细节…...

unity使用input system实现相机屏幕手势丝滑拖拽

input action设置 操作对象设置 camera 具体操作类 PlayerInputView类 using System.Collections; using UnityEngine; using UnityEngine.InputSystem; using TouchPhase UnityEngine.InputSystem.TouchPhase;public class FingerScale : MonoBehaviour {private Vector3…...

Leetcode-853. Car Fleet [C++][Java]

目录 一、题目描述 二、解题思路 Leetcode-853. Car Fleethttps://leetcode.com/problems/car-fleet/description/ 一、题目描述 There are n cars at given miles away from the starting mile 0, traveling to reach the mile target. You are given two integer array …...

建易WordPress

建易WordPress是一家专业的WordPress建站服务提供商&#xff0c;专注于为企业和个人提供一站式的WordPress网站建设、维护、托管、运营推广以及搜索引擎优化(SEO)服务。 服务内容 1. 网站建设 提供模板建站和定制开发两种服务&#xff0c;满足不同客户的需求。模板建站价格为…...

计算机三级网络技术备考(3)

【知识点补充&#xff1a;带宽是是链路的传输速率&#xff0c;宽带是一种服务】 第四章&#xff1a;路由设计技术 考点1&#xff1a;IP路由选择与路由汇聚 核心层&#xff1a;s0两个IP进行汇聚就行 汇聚层&#xff1a;聚合后两个以上的往前进几位&#xff08;因为主机号不够因…...

工程化与框架系列(13)--虚拟DOM实现

虚拟DOM实现 &#x1f333; 虚拟DOM&#xff08;Virtual DOM&#xff09;是现代前端框架的核心技术之一&#xff0c;它通过在内存中维护UI的虚拟表示来提高渲染性能。本文将深入探讨虚拟DOM的实现原理和关键技术。 虚拟DOM概述 &#x1f31f; &#x1f4a1; 小知识&#xff1…...

Java实现pdf文件压缩(aspose-pdf实现压缩、itextpdf去除aspose-pdf版权水印)

Java实现pdf文件压缩 时间换空间&#xff0c;实现pdf文件无损压缩。 1、依赖准备 市面上操作pdf文件的组件有spire.pdf.free、itextpdf、openpdf、pdfbox等&#xff0c;它们各有千秋。我们主要完成的场景为压缩&#xff0c;减少文件大小去优化存储、传输等。 在这里选取的组件…...

生态安全相关

概念&#xff1a;生态安全指一个国家具有支撑国家生存发展的较为完整、不受威胁的生态系统&#xff0c;以及应对内外重大生态问题的能力。 &#xff08;1&#xff09;国外生态安全的研究进展 国际上对生态安全的研究是从“环境”与“安全”之间的关系展开的。开始的阶段&#x…...

通过 ANSYS Discovery 进行 CFD 分析,增强工程设计

概括 工程师使用计算流体动力学 (CFD) 分析来研究和优化各种应用中的流体流动和传热分析。ANSYS Discovery 是一个用户友好的软件平台&#xff0c;使工程师能够轻松设置和解决 CFD 模型&#xff0c;并能够通知设计修改 在这篇博文中&#xff0c;我们将重点介绍在 Ansys Disc…...

2. 在后端代码中加入日志记录模块

1. 说明 日志模块基本上是每一个软件系统开发中必不可少的&#xff0c;主要用于持久记录一些代码运行中的输出信息&#xff0c;辅助编码人员进行代码调试&#xff0c;以及后期软件上线运行报错分析。在Python中加入日志模块比较简单&#xff0c;只需要借助logging和RotatingFi…...

MySQL锁分类

一、按锁的粒度划分 全局锁 定义&#xff1a;锁定整个数据库实例&#xff0c;阻止所有写操作&#xff0c;确保数据备份一致性。加锁方式&#xff1a;通过FLUSH TABLES WITH READ LOCK实现&#xff0c;释放需执行UNLOCK TABLES。应用场景&#xff1a;适用于全库逻辑备份&#xf…...

软件测试之白盒测试知识总结

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 概念与定义 白盒测试&#xff1a;侧重于系统或部件内部机制的测试&#xff0c;类型分为分支测试&#xff08;判定节点测试&#xff09;、路径测试、语句测试…...

看视频学习方法总结

以下是提高教学视频吸收率的系统性方法&#xff0c;结合认知科学原理和实际学习场景&#xff0c;帮助您最大化学习效果&#xff1a; 一、观看前的黄金准备阶段 60秒快速扫描法 用1分钟快速浏览视频目录、章节标题和简介&#xff0c;建立知识框架。荷兰伊拉斯姆斯大学实验表明&…...

nvm的学习

学习 nvm&#xff08;Node Version Manager&#xff09; 是掌握 Node.js 开发的关键技能之一。以下是系统的学习路径和实战指南&#xff0c;涵盖从基础到进阶的内容&#xff1a; 一、基础入门 1. nvm 的核心作用 多版本共存&#xff1a;安装和管理多个 Node.js 版本&#xff…...