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

内网穿透与内网映射是什么?

在互联网技术快速迭代的当下,网络通信架构日益复杂,内网穿透与内网映射作为实现公网访问内网资源的核心技术,在企业办公、个人开发、智能家居等领域发挥着关键作用。尽管两者都致力于打通公网与内网的连接通道,但它们在底层原理、配置方式、适用场景等方面存在显著差异。本文将深入剖析这两项技术,通过详细的原理阐释、操作步骤解析以及对比分析,帮助读者全面掌握其核心要点。

一、内网穿透:突破网络隔离的反向代理技术

1.1 核心原理

内网穿透的核心在于借助公网中转服务器,打破内网与公网之间的网络隔离,实现公网对特定内网服务的访问。其技术本质基于反向代理机制,具体流程如下:

首先,内网设备主动与具有公网 IP 的中转服务器建立长连接。这个连接通常采用 TCP 或 UDP 协议,在连接建立过程中,内网设备会向中转服务器注册需要穿透的服务信息,包括服务类型(HTTP、TCP、UDP 等)、内网 IP 地址以及端口号。以开源工具 FRP 为例,用户需要在内网设备上部署 FRP 客户端,并在客户端配置文件中明确指定中转服务器的地址和端口,同时详细定义本地服务的映射规则。例如,若要将内网中运行在 80 端口的 Web 服务穿透到公网,配置文件中需写明:

[common]

server_addr = 中转服务器IP

server_port = 7000

[web]

type = tcp

local_ip = 192.168.1.100

local_port = 80

remote_port = 8080

其中,server_addr和server_port指定中转服务器的连接信息,local_ip和local_port对应内网服务的地址和端口,remote_port则是公网访问该服务时使用的端口。

当公网设备发起访问请求时,中转服务器接收到请求后,根据预先配置的映射规则,将请求转发至对应的内网设备。在这个过程中,中转服务器充当了一个 “中间人” 的角色,它不仅负责转发数据,还可能对数据进行加密处理,以确保传输过程的安全性。例如,Ngrok 等工具支持 SSL 加密,能够有效防止数据在传输过程中被窃取或篡改。

从网络协议层面来看,内网穿透技术涉及到应用层协议的转换和传输层连接的建立与维护。在应用层,根据不同的服务类型(如 HTTP、FTP、SSH 等),中转服务器需要正确解析和转发相应的协议数据;在传输层,通过 TCP 或 UDP 协议建立稳定的数据传输通道,确保数据能够准确无误地在公网和内网之间传递。

1.2 常用工具及操作细节

1.2.1 FRP

FRP 是一款开源的内网穿透工具,以其高度的灵活性和强大的功能受到广泛应用。

服务端部署

  1. 首先,确保拥有一台具有公网 IP 的服务器,该服务器可以是云服务器(如阿里云、腾讯云等),也可以是本地服务器通过运营商获取公网 IP。
  1. 在服务器上安装 FRP 服务端程序。对于 Linux 系统,可以通过以下命令下载和解压:

wget https://github.com/fatedier/frp/releases/download/v0.47.0/frp_0.47.0_linux_amd64.tar.gz

tar -zxvf frp_0.47.0_linux_amd64.tar.gz

cd frp_0.47.0_linux_amd64

  1. 编辑frps.ini配置文件,进行基本配置。例如:

[common]

bind_port = 7000

vhost_http_port = 8080

vhost_https_port = 8443

其中,bind_port指定 FRP 服务端监听的端口,用于与客户端建立连接;vhost_http_port和vhost_https_port分别用于 HTTP 和 HTTPS 协议的反向代理服务端口。

  1. 启动 FRP 服务端,在 Linux 系统中可以使用以下命令:

./frps -c frps.ini

客户端配置

  1. 在内网设备上下载并解压 FRP 客户端程序,操作步骤与服务端类似。
  1. 编辑frpc.ini配置文件,根据实际需求配置服务映射规则。如前文所述,若要穿透内网 Web 服务,配置示例如下:

[common]

server_addr = 中转服务器IP

server_port = 7000

[web]

type = tcp

local_ip = 192.168.1.100

local_port = 80

remote_port = 8080

  1. 启动 FRP 客户端:

./frpc -c frpc.ini

1.2.2 Ngrok

Ngrok 是一款商业内网穿透工具,提供免费版和付费版,以其便捷的操作和简单的配置深受开发者喜爱。

操作步骤

  1. 首先,访问 Ngrok 官方网站(ngrok | API Gateway, Kubernetes Ingress, Webhook Gateway),注册账号并下载对应操作系统的客户端程序。
  1. 打开终端或命令提示符,进入 Ngrok 客户端所在目录。
  1. 运行以下命令启动穿透服务。若要穿透本地 80 端口的 Web 服务,命令如下:

ngrok http 80

运行该命令后,Ngrok 客户端会自动与官方服务器建立连接,并生成一个公网 URL,例如https://xxxxxx.ngrok.io。通过这个 URL,公网设备即可访问内网的 Web 服务。

1.2.3 花生壳

花生壳是另一款常用的内网穿透工具,提供可视化管理界面,操作更加便捷。

操作步骤

  1. 下载并安装花生壳客户端软件,安装完成后登录账号。
  1. 在客户端主界面中,点击 “添加映射” 按钮。
  1. 在弹出的映射设置窗口中,填写相关信息:
    • 应用名称:自定义映射的名称,方便识别。
    • 应用类型:根据服务类型选择,如 HTTP、HTTPS、TCP、UDP 等。
    • 内网主机:填写内网服务所在设备的 IP 地址。
    • 内网端口:填写内网服务的端口号。
    • 外网域名:可以选择花生壳提供的默认域名,也可以绑定自己的域名。
    • 外网端口:花生壳会自动分配一个公网端口,也可以根据需求自定义(需注意端口冲突问题)。
  1. 填写完成后,点击 “确定” 按钮,花生壳客户端会自动建立穿透连接。此时,通过生成的外网域名和端口,即可在公网访问内网服务。

二、内网映射:基于 NAT 的端口转发技术

2.1 核心原理

内网映射的实现主要依赖于路由器的 NAT(网络地址转换)功能。NAT 是一种将私有 IP 地址转换为公有 IP 地址的技术,它允许多个内网设备共享一个公网 IP 地址访问互联网。在内网映射中,路由器充当了一个关键的角色,它通过端口映射规则,将公网 IP 的特定端口流量转发到内网中指定设备的对应端口,从而实现公网对特定内网服务的访问。

当内网设备主动向公网发送数据时,路由器会对数据包进行处理。具体来说,路由器会将数据包的源 IP 地址(内网私有 IP)和源端口号替换为路由器自身的公网 IP 地址和一个随机分配的端口号,并在 NAT 表中记录这一映射关系。例如,内网设备 A(IP 地址为 192.168.1.100,端口号为 1024)向公网服务器 B 发送请求,路由器接收到请求后,会将数据包的源 IP 地址改为路由器的公网 IP(如 202.100.1.1),并分配一个随机端口(如 50000),同时在 NAT 表中记录(192.168.1.100:1024) ↔ (202.100.1.1:50000)的映射关系。

当公网服务器 B 返回响应数据时,数据包的目标 IP 地址和端口号为路由器的公网 IP 和之前分配的端口号(202.100.1.1:50000)。路由器接收到响应数据后,根据 NAT 表中的记录,将数据包的目标 IP 地址和端口号还原为内网设备 A 的私有 IP 地址和端口号(192.168.1.100:1024),然后将数据包转发给内网设备 A。

在内网映射中,端口映射规则的配置至关重要。通过在路由器中设置端口映射规则,用户可以指定公网 IP 的某个端口与内网设备的特定 IP 和端口进行绑定。例如,将公网 IP 的 8080 端口映射到内网 IP 为 192.168.1.100 的设备的 80 端口,这样公网用户通过访问http://路由器公网IP:8080,实际上访问的是内网设备 192.168.1.100 的 80 端口服务。

从网络层次结构来看,NAT 技术主要工作在网络层,它通过修改 IP 数据包的头部信息,实现地址转换和端口映射。同时,在传输层,NAT 也需要对 TCP 和 UDP 协议的端口号进行相应的转换,以确保数据能够准确传输到对应的内网应用程序。

2.2 配置流程及操作细节

不同品牌和型号的路由器,其内网映射配置界面和操作步骤可能会有所差异,但总体流程基本相同。以下以 TP - Link 路由器为例,详细介绍内网映射的配置步骤:

步骤 1:登录路由器管理界面

打开浏览器,在地址栏中输入路由器的默认 IP 地址(通常为 192.168.1.1 或 192.168.0.1),按下回车键后会弹出登录窗口。输入路由器的用户名和密码(默认用户名和密码一般可以在路由器的说明书或背面标签上找到),点击 “登录” 按钮进入路由器管理界面。

步骤 2:设置内网设备静态 IP(推荐操作)

为了确保端口映射的稳定性,避免因内网设备 IP 地址变动导致映射失效,建议为需要映射的内网设备设置静态 IP 地址。在路由器管理界面中,找到 “DHCP 服务器” 选项,进入 “静态地址分配” 页面。在该页面中,填写内网设备的 MAC 地址、IP 地址、子网掩码、网关等信息。例如,若要为 MAC 地址为00 - 11 - 22 - 33 - 44 - 55的设备分配静态 IP 地址192.168.1.100,子网掩码为255.255.255.0,网关为192.168.1.1,则按照相应字段填写即可。

步骤 3:添加端口映射规则

  1. 在路由器管理界面中,找到 “转发规则” 或 “虚拟服务器” 选项,点击进入端口映射设置页面。
  1. 点击 “添加新条目” 按钮,开始添加端口映射规则。
  1. 在弹出的规则设置窗口中,填写以下信息:
    • 服务端口:填写公网访问时使用的端口号。例如,如果要映射内网的 Web 服务,通常可以使用 8080、80 等端口(需注意 80 端口可能需要特殊权限,部分地区运营商会封锁 80 端口)。
    • 协议:根据服务类型选择协议类型,常见的有 TCP、UDP 和 ALL。对于 Web 服务、FTP 服务等,一般选择 TCP 协议;对于 DNS 服务、SNMP 服务等,可能需要选择 UDP 协议;如果不确定协议类型,也可以选择 ALL,但这可能会增加网络安全风险。
    • 内网 IP 地址:填写需要映射的内网设备的 IP 地址。如果在步骤 2 中设置了静态 IP 地址,这里直接填写对应的 IP 地址即可。
    • 内网端口:填写内网设备提供服务的端口号。例如,Web 服务的默认端口为 80,FTP 服务的默认端口为 21。
    • 启用:勾选该选项,使映射规则生效。
  1. 填写完成后,点击 “保存” 按钮,保存端口映射规则。

步骤 4:验证映射规则

配置完成后,可以通过公网设备验证端口映射是否成功。例如,使用另一台设备(可以是手机通过移动网络,或者另一台处于不同网络环境的电脑),在浏览器中输入http://路由器公网IP:服务端口(如http://202.100.1.1:8080),如果能够正常访问到内网设备的服务页面,则说明端口映射配置成功。

三、内网穿透与内网映射的详细对比

对比项目

内网穿透

内网映射

核心原理

借助公网中转服务器,通过反向代理实现数据转发,涉及应用层协议转换和传输层连接维护

利用路由器 NAT 功能,将公网端口映射到内网设备端口,通过修改 IP 数据包头部和传输层端口号实现地址转换

网络依赖

需公网中转服务器,内网设备无需公网 IP,适用于无公网 IP 环境

路由器必须拥有公网 IP,动态 IP 需配合 DDNS(动态域名解析)服务,如花生壳等

配置复杂度

需部署或依赖中转服务器,同时配置客户端和服务端规则,涉及多个配置文件和参数设置,对用户技术要求较高

在路由器管理界面直接配置端口映射规则,操作相对直观,但不同路由器界面和操作可能存在差异

安全性

数据经中转服务器加密传输,隐藏内网真实 IP,风险主要集中于中转服务器的安全性和稳定性

公网直接访问路由器公网 IP 端口,若配置不当(如映射高危端口且未设置防火墙规则),易遭受攻击,依赖路由器防火墙防护

性能表现

受中转服务器带宽和延迟影响,数据需经过中转,存在一定延迟,适合小流量场景,如 Web 服务、远程控制

直接转发数据,延迟低,能够充分利用路由器带宽,适合高带宽需求场景,如在线游戏、高清视频流传输

适用场景

无公网 IP 环境、动态 IP 且无法配置 DDNS、需隐藏内网架构(如企业远程办公、个人开发调试)

拥有公网 IP、追求低延迟高带宽、配置简单需求(如家庭 NAS 共享、企业 Web 服务器发布)

成本投入

自建中转服务器需承担硬件购置、带宽租赁等成本;使用第三方服务可能需要付费,如 Ngrok 付费版提供更高带宽和更多功能

仅需路由器支持,无额外成本(若使用 DDNS 服务,部分可能收费)

四、选择建议与应用拓展

4.1 选择策略

  1. 网络环境:若处于无公网 IP 的环境,如家庭宽带默认分配内网 IP、校园网或共享网络,内网穿透是实现公网访问内网资源的唯一选择。而对于拥有公网 IP 的场景,内网映射则更为直接和高效,能够充分发挥路由器的性能优势。
  1. 安全需求:如果对安全性要求较高,希望隐藏内网真实架构,避免公网直接暴露内网设备,内网穿透的加密传输和中转机制能提供更好的保护。不过,如果能够合理配置路由器防火墙规则,严格限制公网访问权限,内网映射也能满足一定的安全需求。
  1. 性能要求:对于高带宽、低延迟的应用场景,如在线游戏服务器、高清视频流传输等,内网映射由于直接转发数据,能够提供更好的性能表现。而内网穿透由于数据需要经过中转服务器,可能会存在一定的延迟和带宽限制,更适合小流量的 Web 服务、远程控制等场景。
  1. 成本因素:内网映射无需额外的硬件或服务投入,仅需路由器支持即可,成本较低。而内网穿透如果自建中转服务器,需要承担硬件购置、带宽租赁、服务器维护等成本;使用第三方服务也可能需要支付一定的费用,用户需要根据自身预算进行选择。

4.2 应用拓展

  1. 混合应用:在实际应用中,可将内网穿透和内网映射结合使用,发挥两者的优势。例如,企业可以通过内网映射将部分非敏感的 Web 服务直接对外发布,以获得更好的性能和访问体验;同时,对于敏感的远程管理服务(如 SSH、RDP),则采用内网穿透的方式,并配合 VPN 进行加密访问,以提高安全性。
  1. 新兴领域应用:随着物联网(IoT)、工业互联网等领域的发展,内网穿透和内网映射技术也有了更广泛的应用空间。在智能家居场景中,用户可以通过内网穿透实现远程控制家中的智能设备,如智能摄像头、智能门锁、智能家电等。在工业生产中,内网映射可以将工业控制系统的部分服务安全地对外发布,方便远程监控和维护,提高生产效率和管理水平。

相关文章:

内网穿透与内网映射是什么?

在互联网技术快速迭代的当下,网络通信架构日益复杂,内网穿透与内网映射作为实现公网访问内网资源的核心技术,在企业办公、个人开发、智能家居等领域发挥着关键作用。尽管两者都致力于打通公网与内网的连接通道,但它们在底层原理、…...

51单片机点亮一个LED介绍

LED介绍 LED就是发光二极管,一般来说如果是直插式的,那就是长正短负,如果是贴片式的,那就带彩色标记是阴极,如果是三角形的,水平箭头指的就是阴极,通常一般的工作电压在3mA~20mA,当…...

WebRTC技术EasyRTC嵌入式音视频通信SDK助力智能电视搭建沉浸式实时音视频交互

一、方案概述​ EasyRTC是一款基于WebRTC技术的开源实时音视频通信解决方案,具备低延迟、高画质、跨平台等优势。将EasyRTC功能应用于智能电视,能够为用户带来全新的交互体验,满足智能电视在家庭娱乐、远程教育、远程办公、远程医疗等多种场…...

uniapp 小程序 CSS 实现多行文本展开收起 组件

效果 组件 <template><!-- 最外层弹性盒子 --><div class"box" :style"boxStyle"><!-- 文本区域&#xff0c;动态类名控制展开/收起状态 --><div ref"textRef" :class"[text-cont, btnFlag ? text-unfold : t…...

嵌入式51单片机:C51

sbit TISCON^1的意思是定义TI为SCON的次低位&#xff08;最低位标记为0&#xff0c;其次为1&#xff0c;再次为2&#xff09;...

【回眸】香橙派zero2 嵌入式数据库SQLite

前言 SQLite介绍 安装SQLite3 SQLite 使用 创建数据库 创建一张表格 插入数据 查看数据库的记录 删除一条记录 更改一条记录 删除一张表 增加一列&#xff08;性别&#xff09; SQLite编程操作 前言 还有2个项目没更新完...披星戴月更新中... SQLite介绍 基于嵌入…...

vue3个生命周期解析,及setup

合理使用各生命周期&#xff0c;切勿乱用&#xff0c;不是所有东西都需要&#xff0c;合理使用可以提高效率和性能。 Vue 3 生命周期钩子详解 Vue 3的生命周期钩子分为以下几个阶段&#xff1a; onBeforeMount 调用时机&#xff1a;在组件挂载到DOM之前调用。使用场景&#xf…...

MySQL死锁:面试通关“三部曲”心法

想象一下&#xff0c;你的MySQL数据库里有两张桌子&#xff08;数据表&#xff09;&#xff0c;比如一张“产品库存表”&#xff0c;一张“订单表”。现在来了两个顾客&#xff08;并发事务&#xff09;&#xff0c;都想同时操作这两张桌子上的东西&#xff1a; 顾客A 先锁住了…...

Spring Boot 与 RabbitMQ 的深度集成实践(四)

实战案例 业务场景描述 在电商系统中&#xff0c;用户下单是一个核心业务操作。当用户成功下单后&#xff0c;系统需要执行一系列后续任务&#xff0c;如发送邮件通知用户订单已成功提交&#xff0c;更新库存信息以确保商品库存的准确性&#xff0c;以及记录订单相关的日志信…...

ES6详解

一、变量声明 let 与 const 块级作用域&#xff1a;替代 var 的函数作用域 const 声明常量&#xff08;不可重新赋值&#xff0c;但对象属性可修改&#xff09; if (true) {let x 10const PI 3.14 } console.log(x) // 报错 二、箭头函数 简写语法与 this 绑定 // 传统函数…...

C语言—字符函数和字符串函数

1.字符分类函数 字符控制函数&#xff1a;int iscntrl ( int c ); 控制字符通常不是可打印字符&#xff0c;该函数是用来判断参数是否为控制字符&#xff0c;需要的头文件为<ctype.h>标准ASCII码中&#xff0c;不可打印字符主要包括以下两类&#xff1a; 控制字符&…...

【LeetCode】大厂面试算法真题回忆(93)--优雅数组

题目描述 如果一个数组中出现次数最多的元素出现大于等于k次,被称为k-优雅数组,k也可以被称为优雅阈值。 例如,数组[1, 2, 3, 1, 2, 3, 1],它是一个3-优雅数组,因为元素1出现次数大于等于3次。数组[1, 2, 3, 1, 2]就不是一个3-优雅数组,因为其中出现次数最多的元素是1和…...

【MySQL成神之路】MySQL常用语法总结

目录 MySQL 语法总结 数据库操作 表操作 数据操作 查询语句 索引操作 约束 事务控制 视图操作 存储过程和函数 触发器 用户和权限管理 数据库操作 创建数据库&#xff1a; CREATE DATABASE database_name; 选择数据库&#xff1a; USE database_name; 删除数…...

机器学习第十六讲:K-means → 自动把超市顾客分成不同消费群体

机器学习第十六讲&#xff1a;K-means → 自动把超市顾客分成不同消费群体 资料取自《零基础学机器学习》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章&#xff1a;DeepSeek R1本地与线上满血版部署&#xff1a;超详细手把手指南 K-me…...

多商户1.8.1版本前端问题优化集合指南

1、逛逛社区上传一张图时&#xff0c;进入详情页面显示不出来 修改路径&#xff1a;pages ---> discover ---> components ---> discoverDetails.vue 解读&#xff1a;这里是因为图片高度没有定义&#xff0c;图片没显示出来。修改如下&#xff1a; <!--逛逛类型为…...

基于正点原子阿波罗F429开发板的LWIP应用(1)——网络ping通

说在开头 正点原子F429开发板主芯片采用的是STM32F429IGT6&#xff0c;网络PHY芯片采用的是LAN8720A(V1)和YT8512C(V2)&#xff0c;采用的是RMII连接&#xff0c;PHY_ADDR为0&#xff1b;在代码中将会对不同的芯片做出适配。 CubeMX版本&#xff1a;6.6.1&#xff1b; F4芯片组…...

第 1 章:数字 I/O 与串口通信(GPIO UART)

本章目标: 掌握 GPIO 的硬件原理、寄存器配置与典型驱动框架 深入理解 UART/USART 的帧格式、波特率配置、中断与 DMA 驱动 通过实战案例,将 GPIO 与 UART 结合,实现 AT 命令式外设控制 章节结构 GPIO 概述与硬件原理 GPIO 驱动实现:寄存器、中断与去抖 UART/USART 原理与帧…...

MCU 温度采样理论(-ADC Temperature sensor)

温度传感器可以使用ADC来测量芯片温度。   为了准确测量运行时的芯片温度,请使用在生产过程中运行的参考测量值,此参考值与其他校准数据一起存放在SFlash中。 一、温度测量流程 1、ADC校准:关于偏移和增益调整的实例,见9.3。 2、检查CREFH和VREL:参见8.2。 3、设置参考…...

stm32week16

stm32学习 十一.中断 4.使用中断 EXTI的配置步骤&#xff1a; 使能GPIO时钟设置GPIO输入模式使能AFIO/SYSCFG时钟设置EXTI和IO对应关系设置EXTI屏蔽&#xff0c;上/下沿设置NVIC设计中断服务函数 HAL库的使用&#xff1a; 使能GPIO时钟&#xff1a;__HAL_RCC_GPIOx_CLK_EN…...

隨筆 20250519 基于MAUI Blazor整合SQLite数据库与Star打印机的详细步骤

以下是基于MAUI Blazor整合SQLite数据库与Star打印机的详细步骤&#xff0c;包含必要的NuGet包引入及核心代码实现&#xff1a; 零、目錄結構 ​​ 一、整合SQLite数据库​​ ​​1. 安装NuGet包​​ # SQLite核心库 Install-Package sqlite-net-pcl # SQLite平台适配库&am…...

电子电路原理第十六章(负反馈)

1927年8月,年轻的工程师哈罗德布莱克(Harold Black)从纽约斯塔顿岛坐渡轮去上班。为了打发时间,他粗略写下了关于一个新想法的几个方程式。后来又经过反复修改, 布莱克提交了这个创意的专利申请。起初这个全新的创意被认为像“永动机”一样愚蠢可笑,专利申请也遭到拒绝。但…...

推客小程序系统开发:全栈式技术解决方案与行业赋能实践​

​ 在数字化营销深度渗透各行业的当下&#xff0c;传统推广模式已难以满足企业精细化运营与高效获客的需求。专业的推客小程序系统凭借其强大的裂变传播能力与灵活的推广机制&#xff0c;成为企业构建私域流量池、提升推广效能的核心工具。我们基于多年技术沉淀与行业洞察&…...

【prometheus+Grafana篇】基于Prometheus+Grafana实现Oracle数据库的监控与可视化

&#x1f4ab;《博主主页》&#xff1a; &#x1f50e; CSDN主页 &#x1f50e; IF Club社区主页 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(MongoDB)有了…...

【Android构建系统】Soong构建系统,通过.bp + .go定制编译

背景介绍 本篇是一篇实操内容&#xff0c;是对【Android构建系统】如何在Camera Hal的Android.bp中选择性引用某个模块的优化与改进。本篇内容主要想通过一个具体例子介绍Soong构建系统较复杂的定制化方法和步骤&#xff0c;以便在今后的工作学习中更好的使用Soong构建系统。 …...

Qt开发:QUdpSocket的详解

文章目录 一、QUdpSocket 简介二、常用函数的介绍和使用三、接收端完整示例四、发送端完整示例 一、QUdpSocket 简介 在 Qt 中&#xff0c;UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是通过 QUdpSocket 类实现的。UDP 是一种无连接的、轻量…...

【android bluetooth 协议分析 01】【HCI 层介绍 9】【ReadLocalSupportedCommands命令介绍】

1. HCI_Read_Local_Supported_Commands 命令介绍 1. 命令介绍&#xff08;Description&#xff09; HCI_Read_Local_Supported_Commands 是 HCI 层中非常重要的查询命令。它允许 Host&#xff08;如 Android 系统中的 Bluetooth stack&#xff09;获取 Controller&#xff08;…...

Model 速通系列(一)nanoGPT

这个是新开的一个系列用来手把手复现一些模型工程&#xff0c;之所以开这个系列是因为有人留言说看到一个工程不知道从哪里读起&#xff0c;出于对自身能力的提升与兴趣&#xff0c;故新开了这个系列。由于主要动机是顺一遍代码并提供注释。 该系列第一篇博客是 nanoGPT &…...

星际争霸小程序:用Java实现策略模式的星际大战

在游戏开发的世界里&#xff0c;策略模式是一种非常实用的设计模式&#xff0c;它允许我们在运行时动态地选择算法或行为。今天&#xff0c;我将带你走进一场星际争霸的奇幻之旅&#xff0c;用Java实现一个简单的星际争霸小程序&#xff0c;通过策略模式来模拟不同种族单位的战…...

网络Tips20-007

网络威胁会导致非授权访问、信息泄露、数据被破坏等网络安全事件发生&#xff0c; 其常见的网络威胁包括窃听、拒绝服务、病毒、木马、( 数据完整性破坏 )等&#xff0c; 常见的网络安全防范措施包括访问控制、审计、身份认证、数字签名、( 数据加密 )、 包过滤和检测等。 AE…...

2.微服务-配置

引入springcloud的pom配置 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.12</version><relativePath/></parent> <dependencyManagemen…...

python实现pdf转图片(针对每一页)

from pdf2image import convert_from_path import ospdf_file rC:\Users\\Desktop\拆分\产权证.pdf poppler_path rC:\poppler-24.08.0\Library\bin # 这里改成你自己的路径output_dir rC:\Users\\Desktop\拆分\output_images os.makedirs(output_dir, exist_okTrue)image…...

Python编程从入门到实践 PDF 高清版

各位程序员朋友们&#xff0c;还在为找不到合适的Python学习资料而烦恼吗&#xff1f;还在为晦涩难懂的编程书籍而头疼吗&#xff1f;今天&#xff0c;就给大家带来一份重磅福利——237完整版PDF&#xff0c; 我用网盘分享了「Python编程&#xff1a;从入门到实践__超清版.pdf…...

CVE-2015-3934 Fiyo CMS SQL注入

CVE-2015-3934 Fiyo CMS SQL注入 页面抓登录数据包 构造延时注入语句在user处’%2B(select(0)from(select(sleep(5)))v)%2B’ 存在延时注入&#xff0c;使用脚本即可...

【Pandas】pandas DataFrame mode

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...

(思维题、贪心)洛谷 P11232 CSPS2024 超速检测 题解

这一题在 2024 将我击败&#xff0c;但我怎么现在才补题解 …… 题意 原题 思路 对于每一辆车&#xff0c;我们可以算出&#xff0c;其在距离左端点哪段位置会超速 [ l , r ] [l,r] [l,r]&#xff0c;那么这辆车会被 l l l 右侧最近的测速仪到 r r r 左侧最近的测速仪检…...

C#:多线程

一.线程常用概念 线程&#xff08;Thread&#xff09;&#xff1a;操作系统执行程序的最小单位 进程&#xff08;Process&#xff09;&#xff1a;程序在内存中的运行实例 并发&#xff08;Concurrency&#xff09;&#xff1a;多个任务交替执行&#xff08;单核CPU&#xff0…...

虚拟币制度钱包开发:功能设计与成本全解析

虚拟币制度钱包开发&#xff1a;功能设计与成本全解析 ——从基础架构到合规风控的完整解决方案 一、开发成本&#xff1a;分层定价与关键影响因素 根据2024-2025年行业数据显示&#xff0c;虚拟币钱包App开发成本跨度较大&#xff0c;主要受功能复杂度、技术架构与合规要求三…...

TransmittableThreadLocal实现上下文传递-笔记

1.TransmittableThreadLocal简介 com.alibaba.ttl.TransmittableThreadLocal&#xff08;简称 TTL&#xff09;是阿里巴巴开源的一个工具类&#xff0c;旨在解决 ThreadLocal 在线程池中无法传递上下文变量 的问题。它是对 InheritableThreadLocal 的增强&#xff0c;尤其适用…...

应对WEEE 2025:猎板PCB的区块链追溯与高温基材创新

在全球电子产业加速向循环经济转型的背景下&#xff0c;欧盟《绿色新政》与《WEEE指令》对PCB行业提出更高要求。作为行业先行者&#xff0c;猎板PCB&#xff08;Hunter PCB&#xff09;以生物降解基材为核心&#xff0c;结合全球合规体系与产业链协同创新&#xff0c;构建从材…...

大陆资产在香港发行RWA的合规路径与核心限制

大陆资产在香港发行RWA的合规路径与核心限制 ——从“双重合规原则”到资产准入边界的全景解读 一、法律框架&#xff1a;双重合规原则的刚性约束 根据香港金管局Ensemble沙盒项目要求&#xff0c;大陆资产在香港发行RWA需遵循“双重合规原则”&#xff0c;即底层资产需同时符…...

爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案

爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案 这张有趣的图片生动描绘了爬虫开发者与反爬工程师之间的"军备竞赛"。作为技术博主,我将基于这张图的各个阶段,深入分析爬虫技术的演进与对应的反制措施,提供一套完整的反爬解决方案,包括技术原理、实施方法…...

Fabric初体验(踩坑笔记)

搭建fabric部署合约学习笔记 环境准备CURl安装docker 参照官网文档实现&#xff08;2025.05.19&#xff09;根据前言交代的文章去尝试&#xff08;失败版&#xff09;安装fabric-samples安装指定2.2.0版本Fabric二进制文件和配置文件直接手动下载&#xff08;不建议&#xff09…...

区块链blog2_中心化与效率

&#x1f33f;中心化出现原因 信息/服务分散在各处会浪费时间且不方便使用&#xff0c;由此&#xff0c;把信息/服务集中在一起&#xff0c;便于管理&#xff0c;避免了不必要的效率损失。 即集中资源&#xff0c;使得对信息处理的全过程效率升高。中心化不是网络中产生的&…...

2024年ASOC SCI2区TOP,多机制群优化算法+多风场输电线路巡检中多无人机任务分配与路径规划,深度解析+性能实测

目录 1.摘要2.考虑风场影响的多无人机任务分配3.基于双向蚁群和离散蜜獾算法求解多无人机任务分配问题(BACOHBA)4.考虑风场的多无人机路径规划5.结果展示6.参考文献7.代码获取8.读者交流 1.摘要 随着电力系统规模的不断扩大&#xff0c;复杂环境下的电力线路及设施的巡检与维护…...

智慧赋能光伏运维——无人机巡检+地面监控双链路覆盖,打造光伏电站管理新标杆

一、引言&#xff1a;光伏电站运维的挑战与机遇 在全球能源转型浪潮下&#xff0c;光伏电站作为清洁能源的重要载体&#xff0c;其高效运维管理成为行业核心命题。然而&#xff0c;传统光伏电站运维存在覆盖范围广、设备分散、人工巡检效率低、故障响应慢等痛点。为破解这一难…...

c/c++的opencv开闭操作

OpenCV 中的形态学开运算与闭运算 (C) 在计算机视觉和图像处理领域&#xff0c;形态学操作是用于分析和处理图像形状的一系列非线性操作。OpenCV 作为一个强大的开源计算机视觉库&#xff0c;提供了丰富的形态学转换函数。其中&#xff0c;“开运算”&#xff08;Opening&…...

Linux利用多线程和线程同步实现一个简单的聊天服务器

1. 概述 本文实现一个基于TCP/IP的简单多人聊天室程序。它包含一个服务器端和一个客户端&#xff1a;服务器能够接收多个客户端的连接&#xff0c;并将任何一个客户端发来的消息广播给所有其他连接的客户端&#xff1b;客户端则可以连接到服务器&#xff0c;发送消息并接收来自…...

无人机遥控器光纤通信模块技术要点!

一、技术要点 1. 长距离低损耗传输 采用单模光纤&#xff08;如G.654.E光纤&#xff09;&#xff0c;利用光纤的低衰减特性&#xff08;0.17 dB/km以下&#xff09;&#xff0c;支持10公里以上的远距离通信&#xff0c;突破了传统无线信号因衰减导致的覆盖限制。例如&…...

深入解析OkHttp与Retrofit:Android网络请求的黄金组合

前言 在移动应用开发中&#xff0c;网络请求是连接客户端与服务器的关键桥梁。对于Android开发者而言&#xff0c;OkHttp和Retrofit这对组合已经成为处理网络请求的事实标准。本文将全面剖析这两个框架的设计理念、核心功能、协同关系以及最佳实践&#xff0c;帮助开发者构建高…...

Python操作PDF书签详解 - 添加、修改、提取和删除

目录 简介 使用工具 Python 向 PDF 添加书签 添加书签 添加嵌套书签 Python 修改 PDF 书签 Python 展开或折叠 PDF 书签 Python 提取 PDF 书签 Python 删除 PDF 书签 简介 PDF 书签是 PDF 文件中的导航工具&#xff0c;通常包含一个标题和一个跳转位置&#xff08;如…...