[IP地址科普] 服务器公网IP、私网IP、弹性IP是什么?区别与应用场景详解
更多服务器知识,尽在hostol.com
当我们谈论让一台服务器连接到互联网,或者让服务器上的网站、应用能够被用户访问时,IP 地址是绝对绕不开的核心概念。它就像是每台联网设备的唯一“身份证号码”和“邮政编码”,使得数据包能够在浩瀚的网络海洋中准确地找到目的地。但是,你可能已经注意到,在配置服务器,尤其是云服务器的时候,会遇到不止一种类型的 IP 地址:公网 IP、私网 IP,还有云服务商常常提到的“弹性 IP”(EIP)。它们都是 IP,但“性格”和“用途”却大相径庭。这三者到底有什么区别?我的服务器在什么情况下需要哪种 IP 呢?
别担心,这并不是什么高深莫测的黑魔法。理解了它们各自的角色和工作原理,你就能像个经验丰富的“网络规划师”一样,为你的服务器和应用配置最合适的“通信地址簿”了。这篇科普指南,我们就来把这三种 IP 地址的“前世今生”和“看家本领”好好聊透彻!
IP 地址基础回顾:数字世界的“门牌号码”
在深入探讨公网、私网和弹性 IP 之前,我们先花一分钟快速回顾一下 IP 地址本身是什么。
IP 地址(Internet Protocol Address)是分配给网络上每个设备(如服务器、电脑、手机、路由器等)的一个唯一数字标识。它使得这些设备能够相互识别、定位并进行通信。你可以把它想象成现实生活中的**电话号码**或者**街道门牌地址**,没有它,信息就不知道该往哪里送。
我们目前主要接触到的是两种 IP 地址版本:
- IPv4 地址: 这是我们最常见到的形式,由四个用点号隔开的十进制数字组成,例如
172.16.254.1
或8.8.8.8
。每个数字的范围是 0-255。IPv4 地址的总量有限(约 43 亿个),目前已基本耗尽。 - IPv6 地址: 为了解决 IPv4 地址枯竭的问题而诞生,它使用更长的地址格式(128位,通常用8组十六进制数表示,如
2001:0db8:85a3:0000:0000:8a2e:0370:7334
),能提供几乎无限的地址空间。IPv6 正在逐步普及。
本文我们主要讨论的是 IP 地址的类型和作用,这些概念对 IPv4 和 IPv6 通常都适用(尽管弹性 IP 主要是针对 IPv4 的云端特性)。
公网 IP (Public IP Address) - 你在互联网上的“公开身份”
它是什么?
公网 IP 地址,顾名思义,就是可以在**公共互联网 (Internet) 上被直接访问和路由**的 IP 地址。它具有**全球唯一性**,就像你的身份证号码在全球范围内是独一无二的一样。这些地址由国际互联网名称与数字地址分配机构 (IANA) 统一管理,并逐级分配给区域性的互联网注册管理机构 (RIRs),再由 RIRs 分配给各地的 ISP (互联网服务提供商) 和大型云服务商。
如果你的服务器想要对外提供服务(比如运行一个网站、一个公开的 API、或者一个游戏服务器),让全世界任何能上网的人都能找到并访问它,那么它就**必须拥有至少一个公网 IP 地址**。这个公网 IP 就是你服务器在浩瀚互联网中的“公开门牌号码”和“对外联系电话”。
主要特点 (Key Characteristics):
- 全球唯一: 任何一个公网 IP 地址在同一时间点都只能被一个设备使用。
- 互联网可路由: 互联网上的路由器知道如何将发往这个 IP 地址的数据包正确地送达。
- 可直接访问: 理论上,任何联网设备都可以直接尝试连接到一个公网 IP 地址(当然,是否能连上还取决于防火墙等安全设置)。
- 通常是静态的(对服务器而言): 虽然个人家庭宽带的公网 IP 可能是动态变化的,但对于服务器,我们通常会为其配置一个**静态公网 IP**,以确保域名解析和服务的稳定性。
- 稀缺资源 (特别是 IPv4): 由于 IPv4 地址已基本耗尽,新的公网 IPv4 地址变得越来越宝贵和昂贵。
应用场景 (Use Cases):
- Web 服务器: 你的域名 (如
www.hostol.com
) 需要通过 DNS 解析到一个公网 IP 地址,用户才能通过域名访问你的网站。 - 邮件服务器 (MX): 接收来自其他邮件服务器的邮件。
- 游戏服务器: 允许玩家从互联网连接进来。
- FTP 服务器、API 服务器、VPN 服务器等任何需要直接从互联网访问的服务。
- 作为NAT网关、负载均衡器等网络设备的对外接口。
简单说,公网 IP 就是你服务器通向世界的“大门”。
获取方式:
当你从服务商那里租用 VPS、云服务器或独立服务器时,服务商通常会自动为你分配一个或多个公网 IP 地址(可能是包含在套餐里,也可能需要额外付费,特别是额外的 IPv4 地址)。
私网 IP (Private IP Address) - 内部网络的“通行代号”
它是什么?
与公网 IP 对应的是私网 IP 地址。这些 IP 地址是专门为在**私有网络 (Private Network)** 内部使用而保留的,例如你的家庭局域网 (LAN)、公司内部网络、或者云服务商提供的虚拟私有云 (VPC) 环境。它们**不能在公共互联网上被直接路由或访问**。
国际标准 RFC 1918 定义了三段专门用于私有网络的 IPv4 地址范围:
10.0.0.0
到10.255.255.255
(即10.0.0.0/8
)172.16.0.0
到172.31.255.255
(即172.16.0.0/12
)192.168.0.0
到192.168.255.255
(即192.168.0.0/16
)
你可以把私网 IP 地址想象成你公司办公楼内部每个办公室的“**内部分机号码**”或者每个员工的“**工位编号**”。这些号码在公司内部是唯一的,方便大家互相联系,但你不能指望客户从外面直接拨打这个内部分机号就能找到某个员工,他们得先打到公司的总机(相当于公网 IP + NAT 网关)。
主要特点 (Key Characteristics):
- 非全球唯一,可重复使用: 你的家庭路由器可能给你的电脑分配了
192.168.1.100
,你邻居家的路由器也可能给他家电脑分配了同样的192.168.1.100
,这完全没问题,因为它们属于不同的私有网络,互不干扰。 - 互联网不可路由: 公共互联网上的路由器会忽略发往这些私网地址段的数据包。
- 需要 NAT (网络地址转换) 才能访问互联网: 私有网络内的设备如果想访问公共互联网(比如浏览网页),它们的私网 IP 地址必须经过路由器或网关设备进行 NAT 转换,变成一个共享的公网 IP 地址才能出去。反过来,外部请求也需要通过 NAT(通常配合端口转发)才能到达私网内的特定设备。
应用场景 (Use Cases):
- 服务器集群内部通信: 在一个云平台的 VPC(虚拟私有云)环境内,你可能有多台服务器,比如一台 Web 服务器、一台应用服务器、一台数据库服务器。它们之间通常通过分配的私网 IP 地址进行通信,这样速度更快(通常是内网带宽)、更安全(不暴露在公网)、也更经济(云平台内网流量通常免费或极低)。
- 后端服务隔离: 将数据库服务器、缓存服务器、内部 API 服务等只配置私网 IP,不分配公网 IP,然后让面向公众的 Web 服务器(它有公网 IP)作为“堡垒”或“代理”来访问这些后端服务。这是一种非常常见的、增强安全性的架构模式,大大减少了核心服务的攻击面。
- 家庭和企业局域网 (LAN): 我们家里的电脑、手机、智能设备连接到 Wi-Fi 路由器后,通常获得的都是私网 IP 地址。
- 节约公网 IPv4 地址: 由于公网 IPv4 地址稀缺,通过 NAT 技术让大量使用私网 IP 的设备共享少量公网 IP,是目前缓解 IPv4 地址耗尽的主要手段。
获取方式:
在局域网中,私网 IP 通常由 DHCP 服务器(比如你的家用路由器)自动分配。在云环境中(如 AWS VPC, 阿里云 VPC),当你创建一台云服务器实例时,平台会自动为其分配一个(或多个)私网 IP 地址。
弹性 IP (Elastic IP / EIP) - 云时代的“便携靓号” (云服务特有概念)
它是什么?
弹性 IP (Elastic IP Address, 常简称 EIP) 是一个**专属于云计算平台**的概念。它本质上是一个你可以从云服务商那里申请并**独立持有**的**静态公网 IPv4 地址**。它的“弹性”体现在,你可以随时将这个 EIP **动态地关联 (Attach/Associate) 到你账户下的任何一台云服务器实例上,也可以随时从实例上解绑 (Detach/Disassociate) 并重新关联到另一台实例上**(通常要求实例在同一区域/可用区)。
你可以把弹性 IP 想象成一个你花钱买断(或者长期租用)的**“手机靓号”或者“企业黄金总机号码”**。这个号码是你自己的,无论你换了多少部手机(云服务器实例),或者办公室搬到哪里(实例升级或迁移),你都可以把这个“靓号”重新绑定到新的手机或电话线上,对外公布的联系方式始终不变。
主要特点与优势 (Key Characteristics & Advantages):
- 静态与持久性 (Static & Persistent): 一旦你申请了一个 EIP 并分配到你的账户下,它就一直属于你,直到你明确地释放它。它不会因为你停止、启动或终止某个云服务器实例而改变或丢失。
- 可重映射性 (Remappable): 这是 EIP 最核心的价值!你可以非常快速地(通常是秒级或分钟级操作)将一个 EIP 从一台实例解绑,然后再绑定到同一区域内的另一台实例上。
- 屏蔽实例故障 (Masking Instance Failures): 这是可重映射性带来的直接好处。如果你的主服务器实例不幸发生故障宕机了,你可以迅速地将指向它的 EIP 重新映射到一个预先准备好的备用服务器实例上。对于依赖这个 IP 地址提供服务的用户来说,他们可能只会经历短暂的中断,而无需更改任何访问配置(如 DNS 记录),因为服务的公网 IP 没有变。这对于实现高可用性 (HA) 非常有用。
- 方便实例升级与迁移 (Facilitating Migrations/Upgrades): 当你需要升级服务器硬件、更换操作系统、或者将应用迁移到新的实例上时,可以先在新实例上把一切都准备好,测试通过后,再把旧实例上的 EIP 解绑并绑定到新实例上,实现平滑的切换,对用户影响最小。
- 成本考量:
- 云服务商通常对**已绑定到正在运行的实例上的 EIP 是免费的**(或者只收取极低的持有费)。
- 但是,为了防止用户“囤积”宝贵的 IPv4 地址资源,云服务商通常会对那些**已分配到你账户下、但当前没有绑定到任何正在运行的实例上的“空闲” EIP,收取一定的保留费用**(通常按小时计费,累加起来可能不便宜)。
与实例默认分配的公网 IP 有何不同?
当你创建一个云服务器实例时,云平台通常会自动(或允许你选择)为它分配一个公网 IP 地址。但是,这种默认分配的公网 IP 很多时候是**短暂的 (Ephemeral)**:
- 如果你停止 (Stop) 再启动 (Start) 这台实例(特别是在某些云平台上,或者如果实例类型不支持固定IP),它原来的公网 IP 可能会丢失,并被重新分配一个新的公网 IP。
- 如果你终止 (Terminate) 这台实例,它绑定的公网 IP 肯定就没了。
而弹性 IP (EIP) 则不同,它独立于任何单个实例的生命周期,只要你不主动释放它,它就一直在你的账户里,可以随意绑定和解绑。
应用场景 (Use Cases):
- 任何需要在云上提供**稳定、不变的公网入口**的生产环境服务器(如 Web 服务器、API 网关、邮件服务器等)。
- 构建**高可用 (HA) 架构**,在主服务器故障时,将 EIP 快速切换到备用服务器。
- 进行服务器实例的**无缝升级、替换或迁移**,而无需更改面向用户的 DNS 记录或 IP 地址配置。
- 当你需要一个**长期固定、不随单个虚拟机生命周期变化的公网 IP** 时。
对于所有重要的、对外提供服务的云服务器,强烈建议使用弹性 IP(或类似机制,如 GCP 的静态外部 IP 地址,Azure 的静态公共 IP 地址)而不是实例默认分配的可能变化的公网 IP。
如何选择与搭配使用?(IP 地址的“组队”策略)
在实际的服务器部署中,这三种 IP 地址往往是协同工作的:
- 大多数云服务器实例的“标配”: 通常会同时拥有一个**私网 IP 地址**(用于在同一个虚拟私有云 VPC 内的服务器之间进行高速、安全的内部通信)和至少一个**公网 IP 地址**(用于直接与互联网通信,或者通过弹性 IP 来提供更稳定的公网访问)。
- 什么时候只用私网 IP? 对于那些不需要直接从公网访问的后端服务器,比如数据库服务器、缓存服务器、内部应用服务层等,最佳实践是**只给它们分配私网 IP 地址**。然后,通过一个拥有公网 IP 的“堡垒机”(用于 SSH 管理)或者一个面向公众的 Web 服务器/负载均衡器(它们拥有公网 IP 或弹性 IP)作为唯一的入口,来代理访问这些后端服务。这种架构能极大地增强后端服务的安全性,减少攻击面。
- 什么时候公网 IP 是必需的? 任何需要直接被互联网用户或服务发现和访问的服务器,都必须拥有公网 IP。比如你的网站服务器,你的邮件服务器的 MX 记录指向的 IP,你的游戏服务器的连接地址等。
- 为什么在云上要用弹性 IP 替代实例默认的公网 IP? 对于任何需要**长期稳定提供服务**的云服务器,使用弹性 IP(或其等效产品)几乎是**必须的**。它带来的故障切换灵活性、实例升级/迁移的便利性,远远超过了它可能产生的微小成本(通常在绑定到运行实例时是免费的)。依赖实例默认分配的、可能会变化的公网 IP 来提供生产服务,会给后续的运维和变更带来很多麻烦(比如每次 IP 变动都要改 DNS,并等待 TTL 生效)。
- 传统独立服务器或 VPS 的情况: 对于租用的独立服务器或很多传统 VPS,服务商通常会直接为你分配一个或多个**静态公网 IP 地址**,这些 IP 通常是固定不变的(除非你主动更换或服务商调整)。“弹性 IP”这种可以随意在不同实例间漂移的概念,主要是云计算平台的特性。当然,这些服务器在数据中心内部,也可能会有私网 IP 用于管理或其他内网通信。
合理规划你的 IP 地址使用策略,是构建安全、可扩展、易于维护的服务器架构的基础。
结论:为你的服务器配置合适的“地址簿”,让连接畅通无忧
好了,关于服务器的公网 IP、私网 IP 和弹性 IP,我们就聊到这里。希望通过这些解释和比喻,你对这三种 IP 地址的“庐山真面目”有了更清晰的认识:
- 公网 IP: 你服务器在互联网上的“全球通用名片”,让世界能找到你。
- 私网 IP: 你服务器在“自家院子”(私有网络/VPC)里的“内部小名”,方便“家里人”互相串门,安全又高效。
- 弹性 IP (云上特性): 你账户下的一个“永久保留的黄金门牌号”,可以灵活地挂在你选定的任何一间“云景房”门口,方便你“搬家”或“临时换房”而不影响访客按老地址找到你。
理解了它们的区别和各自的“用武之地”,你就能更好地为你的服务器和应用程序设计出既安全可靠、又能灵活扩展、同时还兼顾成本效益的网络访问方案了。记住,IP 地址不仅仅是一串数字,它更是你数字世界里每一个“家”的入口和标识!
还有疑问?常见问题解答 (FAQs)
- 问: 一台服务器可以拥有多个公网 IP 地址吗?有什么用? 答: 是的,一台服务器(无论是云服务器还是独立服务器)通常可以配置多个公网 IP 地址。常见用途包括:1) 托管多个需要独立 IP 的 SSL 证书/网站: 虽然现在有 SNI 技术允许在同一个 IP 上托管多个 HTTPS 站点,但某些特殊情况或老旧客户端可能仍需要独立 IP。2) 区分不同的服务出口: 比如一个 IP 用于 Web 服务,另一个用于邮件服务,方便管理和设置反向 DNS。3) 提高某些应用的可用性或性能: 某些应用可能通过绑定到不同 IP 来实现特定的网络策略。4) 作为 NAT 网关的出口 IP 池。 不过,额外的公网 IPv4 地址通常是需要付费的,而且 IPv4 资源紧张,除非确有必要,否则不建议滥用。
- 问: 私网 IP 地址的设备是如何通过 NAT 访问互联网的?NAT 会影响性能吗? 答: NAT (Network Address Translation - 网络地址转换) 是一种将私网 IP 地址和端口号转换为公网 IP 地址和端口号(反之亦然)的技术,通常在路由器或防火墙等网关设备上实现。当私网内设备访问互联网时,网关会将其源私网 IP 和端口替换为网关的公网 IP 和一个新的端口号,并记录这个映射关系;当互联网的响应数据包返回时,网关再根据映射关系将其转换回源私网 IP 和端口。NAT 本身会引入非常微小的处理延迟和一定的网关设备资源消耗,但对于现代硬件来说,对普通上网体验的性能影响通常可以忽略不计。但在高并发、大吞吐量的场景下,NAT 网关设备自身的性能可能会成为瓶颈。
- 问: 弹性 IP (EIP) 是完全免费的吗?如果我申请了很多但不用,会有问题吗? 答: 大多数主流云服务商的策略是:当一个弹性 IP **成功绑定到一台正在运行的云服务器实例上时,这个 EIP 本身通常是免费的**(或者只收取极低的保留费,比如阿里云曾经对绑定后仍收费,但政策可能变化)。但是,如果你申请了一个 EIP 并使其处于**空闲状态**(即分配到你的账户下,但没有绑定到任何正在运行的实例上),那么云服务商通常会**按小时收取一定的资源占用费**。这是为了防止用户滥用和囤积宝贵的公网 IPv4 地址资源。所以,如果你申请了 EIP 但暂时不用,记得及时释放它,或者确保它绑定在运行的实例上,以避免不必要的费用。
- 问: 如果我的网站使用了负载均衡器 (Load Balancer),我的源服务器还需要公网 IP 吗? 答: 通常不需要,甚至不推荐。 当你使用云平台的负载均衡器时,负载均衡器本身会拥有一个公网 IP 地址(通常也是一个弹性 IP),作为你服务的统一入口,接收所有用户的请求。然后,负载均衡器会将这些请求通过**内网(使用私网 IP 地址)**转发到它后面连接的那些源服务器实例上。这种情况下,你的源服务器实例只需要拥有私网 IP 地址即可与负载均衡器通信,无需再分配公网 IP。这样做的好处是:1) 增强了源服务器的安全性,因为它们不直接暴露在公网上。2) 节省了公网 IP 地址资源。3) 所有流量都通过负载均衡器进出,方便统一管理和监控。
- 问: IPv6 地址也有公网、私网和类似“弹性 IP”的概念吗? 答: IPv6 的地址体系与 IPv4 有所不同。1) 公网 IPv6 地址: IPv6 的设计初衷就是为每一个设备都分配一个全球唯一的公网地址,所以绝大多数 IPv6 地址都是公网可路由的(Global Unicast Addresses)。2) 私网 IPv6 地址: IPv6 也有用于本地网络通信的地址,最常见的是“唯一本地地址 (Unique Local Addresses, ULA)” (
fc00::/7
) 和“链路本地地址 (Link-Local Addresses)” (fe80::/10
)。ULA 类似于 IPv4 的私网地址,用于内部网络,不可在公网路由。链路本地地址则只在同一物理网段内有效。3) “弹性”IPv6: 由于公网 IPv6 地址资源极其丰富,云服务商通常会直接为每个实例分配一个(或一段)静态的公网 IPv6 地址,这个地址通常会随着实例的生命周期而固定,因此“弹性可漂移”的需求不像 IPv4 那么迫切。但云平台仍然会提供对 IPv6 地址的静态分配和管理功能。核心区别在于,IPv4 的“弹性”主要是为了解决其稀缺性和固定性问题,而 IPv6 由于其海量地址空间,天生就更容易实现静态分配。
相关文章:
[IP地址科普] 服务器公网IP、私网IP、弹性IP是什么?区别与应用场景详解
更多服务器知识,尽在hostol.com 当我们谈论让一台服务器连接到互联网,或者让服务器上的网站、应用能够被用户访问时,IP 地址是绝对绕不开的核心概念。它就像是每台联网设备的唯一“身份证号码”和“邮政编码”,使得数据包能够在浩…...
【Python】在vscode利用pyinstaller中的.spec文件把py项目打包为.exe实现非py环境下使用的操作步骤
【需要打包的项目结构-简单】 【打包步骤】 【1-将图标以.ico的格式保存在项目中】 可以用.jpg或.png的图像进行重名,注意要和项目在同一个路径下 【2-创建并填写main.sepc文件】 在终端输入以下指令自动创建main.sepc文件,会自动生成标准的文件 pyi…...
MySQL如何查看某个表所占空间大小?(表空间大小查看方法)
文章目录 一、使用SQL查询查看表空间1.1 查询所有表的大小(包括数据和索引)1.2 查询特定数据库的表大小1.3 查询单个表的详细空间信息 二、使用命令行工具查看表空间2.1 使用mysql客户端查询2.2 查看物理文件大小(适用于MyISAM/InnoDB&#x…...
[数据结构]7. 堆-Heap
堆-Heap 1. 介绍2. 堆的实现3. 堆操作InitlilzeDestorySwapPushPopTopEmptySizeAdjustUpAdjustDown 4. HeapSort5. Top-K 1. 介绍 堆(heap) 是一种满足特定条件的完全二叉树。 小顶堆(min heap):任意节点的值 ≤ 其子…...
对心理幸福感含义的探索 | 幸福就是一切吗?
注:机翻,未校。 Happiness Is Everything, or Is It? Explorations on the Meaning of Psychological Well-Being 幸福就是一切吗?对心理幸福感含义的探索 Journal of Personality and Social Psychology 1989, Vol. 57, No. 6,1069-1081 …...
Java应用OOM排查:面试通关“三部曲”心法
开篇点题:OOM——Java应用的“内存爆仓”警报 OOM (OutOfMemoryError) 是啥病?想象一下,你的Java应用程序是一个大仓库,内存就是仓库的存储空间。如果货物(程序运行时创建的对象)越来越多,超出了…...
第28周——InceptionV1实现猴痘识别
前言 🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 一、前期准备 1.检查GPU import torch import torch.nn as nn import torchvision.transforms as transforms import torchvision from torchvision im…...
云上玩转 Qwen3 系列之三:PAI-LangStudio x Hologres构建ChatBI数据分析Agent应用
本文详细介绍了如何使用 LangStudio 和 Qwen3 构建基于 MCP 协议的 Hologres ChatBI 智能 Agent 应用。该应用通过将 Agent、MCP Server 等技术和阿里最新的推理模型 Qwen3 编排在一个应用流中,为大模型提供了 MCPOLAP 的智能数据分析能力,使用自然语言即…...
Android开发-在应用之间共享数据
在Android系统中,应用之间的隔离机制(沙箱机制)保障了系统的安全性与稳定性。然而,在实际开发中,我们经常需要实现跨应用的数据共享,例如: 从一个应用向另一个应用传递用户信息;多个…...
MySQL-数据库分布式XA事务
准备 innodb存储引擎开启支持分布式事务 set global innodb_support_axonMySQL数据库XA事务的SQL语法如下: XA {START| BEGIN} xid {JOIN | RESUME} XA END xid {SUSPEND [ FOR MIGRATE]} XA PREPARE xid XA COMMIT xid [ONE PHASE] XA ROLLBACK xid XA RECOVER 完…...
如何快速入门-衡石科技分析平台
快速指南 创建管理员账号 按照文档安装成功之后,假设安装所在服务器 IP 是<Server IP>,端口是<Server Port>,则可以通过浏览器访问http://<Server IP>:<Server Port>/ 访问衡石分析平台,如果正常&a…...
20250515通过以太网让VLC拉取视熙科技的机芯的rtsp视频流的步骤
20250515通过以太网让VLC拉取视熙科技的机芯的rtsp视频流的步骤 2025/5/15 20:26 缘起:荣品的PRO-RK3566适配视熙科技 的4800W的机芯。 1080p出图预览的时候没图了。 通过105的机芯出图确认 荣品的PRO-RK3566 的硬件正常。 然后要确认 视熙科技 的4800W的机芯是否出…...
OpenCV CUDA模块中矩阵操作-----矩阵最大最小值查找函数
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在OpenCV的CUDA模块中,矩阵最大最小值查找操作用于快速获取矩阵中的全局最小值、最大值及其位置。这些函数对于图像处理任务特别有用…...
OpenCv高阶(4.0)——案例:海报的透视变换
文章目录 前言一、工具函数模块1.1 图像显示函数1.2 保持宽高比的缩放函数1.3 坐标点排序函数 二、透视变换核心模块2.1 四点透视变换实现 三、主流程技术分解3.1 图像预处理3.2 轮廓检测流程3.3 最大轮廓处理 四、后处理技术4.1 透视变换4.2 形态学处理 五、完整代码总结 前言…...
JavaScriptWeb API (DOM和BOM操作)
Web API (基础部分) 作用: 使用 JS 去操作 html 和浏览器 分类: DOM 和 BOM DOM: 操作 HTML 文档的 APIBOM: 操作浏览器的 API DOM(文档对象模型) 是用来呈现以及与任意 HTML 或 XML 文档进行交互的 API 作用: 开发网页内容特效和实现用户交互 动态创建 HTML 元素改变 HTML…...
AM-Thinking-v1论文解读:以32B规模推进推理前沿
《AM-Thinking-v1: Advancing the Frontier of Reasoning at 32B Scale》论文解读 一、引言 过去半年,大型语言模型(LLMs)在推理领域(如数学问题求解和代码生成)取得了显著进展,扩大了其在现实场景中的应…...
Spark--RDD中的转换算子
1、算子的简单介绍 Transformation(转换)算子:根据数据集创建一个新的数据集,计算后返回一个新RDD,例如一个rdd进行map操作后生了一个新的rdd。 Action(动作)算子:对rdd结果计算后返回一个数值value给驱动程序(driver),例如collect算子将数据集的所有元素收集完成返回给驱动程…...
【文件上传漏洞】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文件上传漏洞 定义客户端js检测 服务器检测后缀黑名单白名单 检测内容其他 定义 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服…...
electron进程通信
electron进程通信 模式 1:渲染器进程到主进程(单向) send和on 1.渲染器进程调用方法 click setTitle2.预加载进程暴露setTile方法 setTitle: (title) > ipcRenderer.send(set-title, title),3.主进程监听到方法 ipcMain.on(set-title…...
[C++面试] lambda面试点
一、入门 1、什么是 C lambda 表达式?它的基本语法是什么? Lambda 是 C11 引入的匿名函数对象,用于创建轻量级的可调用对象。 [捕获列表] (参数列表) mutable(可选) 异常声明(可选) -> 返回…...
【愚公系列】《Manus极简入门》040-科技与组织升级顾问:“项目掌舵人”
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! …...
2505C++,py和go调用雅兰亭库的协程工具
原文 神算调用C 一般调用pybind11封装的C库实现神算调用C库,pybind11封装c的接口很简单. 创建一个py_example.cpp文件 #include <pybind11/pybind11.h> #include <string> namespace py pybind11; PYBIND11_MODULE(py_example, m) {m.def("hello", …...
题解:P12207 [蓝桥杯 2023 国 Python B] 划分
链接 题目描述 给定 40 个数,请将其任意划分成两组,每组至少一个元素。每组的权值为组内所有元素的和。划分的权值为两组权值的乘积。请问对于以下 40 个数,划分的权值最大为多少。 5160 9191 6410 4657 7492 1531 8854 1253 4520 9231126…...
英迈国际Ingram Micro EDI需求分析
Ingram Micro(英迈国际)成立于1979年,是全球领先的技术和供应链服务提供商,总部位于美国加州尔湾。公司致力于连接全球的技术制造商与渠道合作伙伴,业务涵盖IT分销、云服务、物流和供应链优化等多个领域。Ingram Micro…...
【Linux】网络基础与socket编程基础
一.网络发展 计算机的出现是在网络之前的。而网络产生之初就是为了解决局部计算机无法交互的问题。所以,网络在诞生之初,最先出现的就是我们的局域网LAN,用来结局局部多台计算机的通信问题。 而随着时间的推移,局域网已经不能满…...
漂亮的收款打赏要饭网HTML页面源码
这是一款专为个人收款及接受打赏设计的HTML页面,其设计简洁且美观。 下载地址:漂亮的收款打赏要饭网HTML页面源码 备用地址:漂亮的收款打赏要饭网HTML页面源码...
【图书推荐】几本人工智能实用性图书
《OpenCV计算机视觉开发实践:基于Python》 《OpenCV计算机视觉开发实践:基于Python》【摘要 书评 试读】- 京东图书 《PyTorch深度学习与计算机视觉实践》 《PyTorch深度学习与计算机视觉实践(人工智能技术丛书)》(王晓华)【摘要 书评 试读…...
uniapp+vite+cli模板引入tailwindcss
目前vitecli方式用的都是官方提供的模板,vite版本还是4.14版本,较旧,而tailwindcss已经有了4版本,实际发现引入最新版会报错,因而继续使用3.3.5版本 pnpm install tailwindcss3.3.5 uni-helper/vite-plugin-uni-tail…...
【使用 C# 获取 USB 设备信息及进行通信】
文章目录 使用 C\# 获取 USB 设备信息及进行通信为什么需要获取 USB 设备信息?方法一:使用 C\# 库 (推荐)1. HidSharp2. LibUsbDotNet 方法二:直接调用 Windows API (P/Invoke)理解设备通信协议 (用于数据交换)总结 使用 C# 获取 USB 设备信息…...
Spring Cloud探索之旅:从零搭建微服务雏形 (Eureka, LoadBalancer 与 OpenFeign实战)
引言 大家好!近期,我踏上了一段深入学习Spring Cloud构建微服务应用的旅程。我从项目初始化开始,逐步搭建了一个具备服务注册与发现、客户端负载均衡以及声明式服务调用功能的基础微服务系统。本文旨在记录这一阶段的核心学习内容与实践成果…...
四维时空数据安全传输新框架:压缩感知与几何驱动跳频
四维时空数据安全传输新框架:压缩感知与几何驱动跳频 1. 引言 1.1 研究背景 随着三维感知技术(如激光雷达、超宽带定位)与动态数据流(如无人机集群、工业物联网)的快速发展,四维时空数据(三维…...
CSS相关知识补充
:root伪类 css自定义变量和var()引用自定义变量 https://developer.mozilla.org/zh-CN/docs/Web/CSS/var 在 SCSS 中,变量的声明和使用是用 $ 符号,比如: $primary-color: #ff5722;.button {color: $primary-color; }SCSS 里没有 var() 这…...
DeepSeek 赋能物联网:从连接到智能的跨越之路
目录 一、引言:物联网新时代的开启二、DeepSeek 技术揭秘2.1 DeepSeek 是什么2.2 DeepSeek 技术优势 三、DeepSeek 与物联网的融合之基3.1 物联网发展现状与挑战3.2 DeepSeek 带来的变革性突破 四、DeepSeek 在物联网的多元应用场景4.1 智慧电力:开启能源…...
谷歌量子计算机:开启计算新纪元
量子计算的黎明 原始尺寸更换图片 在科技迅猛发展的时代,量子计算作为前沿领域,正逐渐崭露头角,吸引着全球无数科研人员与科技巨头的目光。它宛如一把开启未来科技大门的钥匙,为解决诸多复杂难题提供了前所未有的可…...
桃芯ingchips——windows HID键盘例程无法同时连接两个,但是安卓手机可以的问题
目录 环境 现象 原理及解决办法 环境 PC:windows11 安卓:Android14 例程使用的是HID Keyboard,板子使用的是91870CQ的开发板,DB870CC1A 现象 连接安卓手机时并不会出现该现象,两个开发板都可以当做键盘给手机发按…...
AMC8 -- 2009年真题解析(中文解析)
Problem 1 Answer: E 中文解析: Bridget最后有4个,给了Cassie3个, 则给Cassie之前有7个。在此之前给了一半的苹果给Ann, 那么在给Anna之前,他有7*214个苹果。 因此答案是E。 Problem 2 Answer: D 中文解析࿱…...
深入解析CountDownLatch的设计原理与实现机制
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、概述 CountDownLatch是Java并发包(java.util.concurrent)中用于协调多线程同步的核心工具类,其设计目标是允许一个或…...
缓存的相关内容
缓存是一种介于数据永久存储介质与数据应用之间数据临时的存储介质 实用化保存可以有效地减少低俗数据读取的次数 (例如磁盘IO), 提高系统性能 缓存不仅可以用于提高永久性存储介质的数据读取效率,还可以提供临时的数据存储空间 spring boot中提供了缓存技术, 方便…...
JVM方法区核心技术解析:从方法区到执行引擎
方法区 方法区的内部结构 在经典方法区设计中,主要存储以下核心数据内容: 一、类型信息 方法区维护的类型信息包含以下要素: 类全称标识 类名称(含完整包路径)直接父类的完全限定名(包含完整包路径&am…...
AIbase推出全球MCP Server集合平台 收录超12万个MCP服务器客户端
2025年,AI领域迎来了一项重要的技术进展——MCP(Model Context Protocol,模型上下文协议)的广泛应用。全球MCP Server集合平台AIbase(https://mcp.aibase.cn/)应运而生,为AI开发者提供了一站式的MCP服务器和客户端整合…...
Python训练打卡Day22
复习日: 1.标准化数据(聚类前通常需要标准化) scaler StandardScaler() X_scaled scaler.fit_transform(X) StandardScaler() :这部分代码调用了 StandardScaler 类的构造函数。在Python中,当你在类名后面加上括号…...
【ALINX 实战笔记】FPGA 大神 Adam Taylor 使用 ChipScope 调试 AMD Versal 设计
本篇文章来自 FPGA 大神、Ardiuvo & Hackster.IO 知名博主 Adam Taylor。在这里感谢 Adam Taylor 对 ALINX 产品的关注与使用。为了让文章更易阅读,我们在原文的基础上作了一些灵活的调整。原文链接已贴在文章底部,欢迎大家在评论区友好互动。 在上篇…...
【数据结构入门训练DAY-35】棋盘问题
本次训练聚焦于使用深度优先搜索(DFS)算法解决棋盘上的棋子摆放问题。题目要求在一个可能不规则的nn棋盘上摆放k个棋子,且任意两个棋子不能位于同一行或同一列。输入包括棋盘大小n和棋子数k,以及棋盘的形状(用#表示可放…...
张 提示词优化(相似计算模式)深度学习中的损失函数优化技巧
失函数的解释 损失函数代码解析 loss = -F.log_softmax(logits[...
Elasticsearch 常用语法手册
🧰 Elasticsearch 常用语法手册 📚 目录 索引操作文档操作查询操作聚合查询健康与状态查看常见问题与注意事项 🔹 索引操作 查询全部索引 GET _search创建索引 PUT /es_db创建索引并设置分片数和副本数 PUT /es_db {"settings&quo…...
华宇TAS应用中间件与亿信华辰多款软件产品完成兼容互认证
近日,华宇TAS应用中间件与亿信华辰多款产品成功通过兼容互认证测试,双方产品在功能协同、性能优化及高可用性等维度实现全面适配,将为用户提供更加稳定、高效、安全的国产化解决方案。 此次认证也标志着华宇在国产化生态适配领域再添重要里程…...
AI大模型从0到1记录学习numpy pandas day24
第 1 章 环境搭建 1.1 Anaconda 1.1.1 什么是Anaconda Anaconda官网地址:https://www.anaconda.com/ 简单来说,Anaconda Python 包和环境管理器(Conda) 常用库 集成工具。它适合那些需要快速搭建数据科学或机器学习开发环境的用…...
开源GPU架构RISC-V VCIX的深度学习潜力测试:从RTL仿真到MNIST实战
点击 “AladdinEdu,同学们用得起的【H卡】算力平台”,H卡级别算力,按量计费,灵活弹性,顶级配置,学生专属优惠。 一、开篇:AI芯片架构演变的三重挑战 (引述TPUv4采用RISC-V的行业案…...
VirtualiSurg使用SenseGlove触觉手套开发XR手术培训体验
虚拟现实和虚拟现实触觉 作为一个领先的培训平台,VirtualiSurg自2017年以来一直利用扩展现实(XR)和触觉技术,为全球医疗保健行业提供个性化的数据驱动学习解决方案。它们使医疗专业人员能够协作学习和培训,提高他们的技能,让他们…...
AbstractErrorController简介-笔记
1. AbstractErrorController简介 org.springframework.boot.autoconfigure.web.servlet.error.AbstractErrorController 是 Spring Boot 提供的一个用于处理 HTTP 错误(如 404、500 等)的抽象类,用于自定义错误响应的逻辑。它是 Spring Boot…...