Python爬虫(52)Scrapy-Redis分布式爬虫架构实战:IP代理池深度集成与跨地域数据采集

目录

    • 一、引言:当爬虫遭遇"地域封锁"
    • 二、背景解析:分布式爬虫的两大技术挑战
      • 1. 传统Scrapy架构的局限性
      • 2. 地域限制的三种典型表现
    • 三、架构设计:Scrapy-Redis + 代理池的协同机制
      • 1. 分布式架构拓扑图
      • 2. 核心组件协同流程
    • 四、技术实现:从0到1搭建穿透型爬虫系统
      • 1. Scrapy-Redis环境配置
      • 2. 智能代理中间件实现
      • 3. 代理池健康管理策略
    • 五、实战案例:突破地域限制的电商数据采集
      • 1. 场景描述
      • 2. 架构部署方案
      • 3. 关键代码实现
    • 六、性能优化实战技巧
      • 1. 代理IP质量评估体系
      • 2. 分布式锁优化
      • 3. 流量指纹伪装
    • 七、系统运维与监控
      • 1. 关键指标监控面板
      • 2. 自动化运维方案
    • 八、总结
      • 1. 架构优势总结
      • 2. 结论
    • 🌈Python爬虫相关文章(推荐)

在这里插入图片描述

一、引言:当爬虫遭遇"地域封锁"

在大数据时代,分布式爬虫架构已成为企业级数据采集的核心基础设施。然而随着反爬技术升级,地域性IP封锁已成为制约爬虫效率的关键瓶颈。本文将深度解析如何通过Scrapy-Redis架构与智能IP代理池的融合,构建具备全球穿透能力的分布式爬虫系统,并提供完整可落地的技术方案

二、背景解析:分布式爬虫的两大技术挑战

1. 传统Scrapy架构的局限性

单点瓶颈:默认FIFO调度器无法应对海量URL队列
状态丢失:进程崩溃导致任务中断与重复采集
扩展困境:多机器部署时需要复杂的状态同步

2. 地域限制的三种典型表现

# 某电商网站地域判断代码片段
def check_region(request):user_ip = request.remote_addrregion = ip2region(user_ip)if region not in ALLOWED_REGIONS:return HttpResponse("Service Unavailable in Your Region", status=403)

三、架构设计:Scrapy-Redis + 代理池的协同机制

1. 分布式架构拓扑图

任务分发
任务分发
通过
通过
获取代理
获取代理
API交互
Master Node/Redis Server
Worker Node1
Worker Node2
Proxy Middleware
Proxy Middleware
IP Proxy Pool
Proxy API

2. 核心组件协同流程

任务分发:Master节点通过Redis有序集合管理全局请求队列
代理分配:Worker节点通过Proxy Middleware动态获取可用IP
状态同步:使用Redis Hash存储代理IP健康状态
失败重试:失败请求携带代理信息重新入队

四、技术实现:从0到1搭建穿透型爬虫系统

1. Scrapy-Redis环境配置

# settings.py 核心配置
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
SCHEDULER_PERSIST = True
REDIS_URL = 'redis://master-node:6379/0'# 自定义请求序列化(携带代理信息)
class ProxyRequest(Request):def __init__(self, url, proxy, *args, **kwargs):super().__init__(url, *args, **kwargs)self.meta['proxy'] = proxy

2. 智能代理中间件实现

import random
from scrapy import signals
from twisted.internet.error import ConnectErrorclass ProxyMiddleware:def __init__(self, proxy_source):self.proxy_source = proxy_source  # 代理池接口self.failed_proxies = set()@classmethoddef from_crawler(cls, crawler):return cls(proxy_source=crawler.settings.get('PROXY_API'))async def process_request(self, request, spider):if 'proxy' not in request.meta or request.meta['proxy'] in self.failed_proxies:proxy = await self._get_healthy_proxy()request.meta['proxy'] = proxyreturn Noneasync def _get_healthy_proxy(self):while True:proxies = await self.proxy_source.get_batch(10)  # 批量获取减少IOfor proxy in proxies:if await self._test_proxy(proxy):return proxyawait asyncio.sleep(5)  # 等待代理池刷新async def _test_proxy(self, proxy):# 实现代理可用性测试逻辑try:async with aiohttp.ClientSession() as session:async with session.get('https://httpbin.org/ip', proxy=proxy, timeout=5) as resp:if resp.status == 200:return Trueexcept (ConnectError, asyncio.TimeoutError):return False

3. 代理池健康管理策略

# 代理质量评估算法
def calculate_score(proxy):factors = {'latency': 0.4,    # 延迟权重'success_rate': 0.5,  # 成功率权重'last_check': 0.1  # 最近检测时间权重}score = (1/proxy.latency) * factors['latency'] + \proxy.success_rate * factors['success_rate'] + \(1/(time.time()-proxy.last_check)) * factors['last_check']return score / sum(factors.values())# 代理分级存储(Redis实现)
def classify_proxy(proxy):if proxy.score > 0.9:redis.zadd('proxies:premium', {proxy.ip: proxy.score})elif proxy.score > 0.7:redis.zadd('proxies:standard', {proxy.ip: proxy.score})else:redis.zadd('proxies:backup', {proxy.ip: proxy.score})

五、实战案例:突破地域限制的电商数据采集

1. 场景描述

目标网站:某跨国电商平台(存在严格地域限制)

采集目标:全球10个主要城市商品价格数据

反爬特征:

检测真实IP地理位置
对非常用设备指纹验证
频率限制(10次/分钟)

2. 架构部署方案

全球代理节点
负载均衡
美国东海岸节点
欧洲法兰克福节点
亚太新加坡节点
Scrapy集群1
Scrapy集群2
Scrapy集群3
Redis主库
代理健康监控

3. 关键代码实现

# 动态设备指纹中间件
class DeviceFingerprintMiddleware:def __init__(self):self.fingerprints = {'user_agent': ['Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15...'],'accept_language': 'en-US,en;q=0.9','accept_encoding': 'gzip, deflate, br'}def process_request(self, request, spider):# 根据代理IP地域选择对应指纹region = ip2region(request.meta['proxy'].split(':')[0][2:])request.headers['User-Agent'] = random.choice(self.fingerprints['user_agent'])request.headers['Accept-Language'] = REGION_LANG_MAP.get(region, 'en-US')# 智能重试策略
class SmartRetryMiddleware:def __init__(self, settings):self.retry_times = settings.getint('RETRY_TIMES')self.priority_adjust = settings.getint('RETRY_PRIORITY_ADJUST')async def process_response(self, request, response, spider):if response.status in [403, 429, 503]:# 携带原始代理信息重新入队retry_req = request.copy()retry_req.meta['retry_times'] = retry_req.meta.get('retry_times', 0) + 1retry_req.priority = request.priority + self.priority_adjust * retry_req.meta['retry_times']yield retry_req

六、性能优化实战技巧

1. 代理IP质量评估体系

指标评估方法权重
连接延迟ICMP Ping + TCP握手时间30%
成功率连续100次请求成功率40%
匿名度检查HTTP_X_FORWARDED_FOR头20%
地理位置精度IP库查询与目标区域匹配度10%

2. 分布式锁优化

# 使用Redlock实现分布式锁
from redis.lock import Lockclass DistributedLock:def __init__(self, redis_client, lock_name, expire=30):self.lock = Lock(redis_client, lock_name, expire=expire)async def acquire(self):return await self.lock.acquire()async def release(self):await self.lock.release()# 在代理池更新时使用
async def update_proxies():async with DistributedLock(redis, 'proxy_pool_lock') as lock:if lock.locked():# 执行代理池更新操作pass

3. 流量指纹伪装

Canvas指纹欺骗:随机生成噪声点阵
WebGL指纹篡改:修改渲染器信息
AudioContext指纹:生成随机频谱特征

七、系统运维与监控

1. 关键指标监控面板

指标监控工具告警阈值
代理池可用率Prometheus<80%持续5分钟
任务队列堆积量Grafana>100000
平均请求延迟ELK Stack>5s
地域访问成功率Custom Script<95%

2. 自动化运维方案

#!/bin/bash
# 代理池自动维护脚本
while true; do# 清理失效代理redis.call('ZREMRANGEBYSCORE', 'proxies:all', 0, $(date -d '-1 hour' +%s))# 补充新代理if [ $(redis.call('ZCARD', 'proxies:all')) -lt 500 ]; thennew_proxies=$(curl -s https://api.proxyprovider.com/get?count=200)redis.call('ZADD', 'proxies:all', $new_proxies)fisleep 300  # 每5分钟执行一次
done

八、总结

1. 架构优势总结

地理穿透能力:通过全球代理节点实现精准地域访问
系统健壮性:代理池自动维护机制保障99.9%可用率
采集效率:分布式架构实现日均千万级URL处理
成本优化:智能代理分级使有效IP利用率提升40%

2. 结论

本文通过系统化的架构设计和深度技术实现,为解决地域限制下的分布式爬虫问题提供了完整解决方案。实际生产环境部署显示,该架构可使跨境数据采集成功率提升至98%以上,请求延迟降低60%,系统维护成本减少50%,为企业构建全球化的数据采集能力提供了坚实的技术支撑。

🌈Python爬虫相关文章(推荐)

Python爬虫介绍Python爬虫(1)Python爬虫:从原理到实战,一文掌握数据采集核心技术
HTTP协议解析Python爬虫(2)Python爬虫入门:从HTTP协议解析到豆瓣电影数据抓取实战
HTML核心技巧Python爬虫(3)HTML核心技巧:从零掌握class与id选择器,精准定位网页元素
CSS核心机制Python爬虫(4)CSS核心机制:全面解析选择器分类、用法与实战应用
静态页面抓取实战Python爬虫(5)静态页面抓取实战:requests库请求头配置与反反爬策略详解
静态页面解析实战Python爬虫(6)静态页面解析实战:BeautifulSoup与lxml(XPath)高效提取数据指南
Python数据存储实战 CSV文件Python爬虫(7)Python数据存储实战:CSV文件读写与复杂数据处理指南
Python数据存储实战 JSON文件Python爬虫(8)Python数据存储实战:JSON文件读写与复杂结构化数据处理指南
Python数据存储实战 MySQL数据库Python爬虫(9)Python数据存储实战:基于pymysql的MySQL数据库操作详解
Python数据存储实战 MongoDB数据库Python爬虫(10)Python数据存储实战:基于pymongo的MongoDB开发深度指南
Python数据存储实战 NoSQL数据库Python爬虫(11)Python数据存储实战:深入解析NoSQL数据库的核心应用与实战
Python爬虫数据存储必备技能:JSON Schema校验Python爬虫(12)Python爬虫数据存储必备技能:JSON Schema校验实战与数据质量守护
Python爬虫数据安全存储指南:AES加密Python爬虫(13)数据安全存储指南:AES加密实战与敏感数据防护策略
Python爬虫数据存储新范式:云原生NoSQL服务Python爬虫(14)Python爬虫数据存储新范式:云原生NoSQL服务实战与运维成本革命
Python爬虫数据存储新维度:AI驱动的数据库自治Python爬虫(15)Python爬虫数据存储新维度:AI驱动的数据库自治与智能优化实战
Python爬虫数据存储新维度:Redis Edge近端计算赋能Python爬虫(16)Python爬虫数据存储新维度:Redis Edge近端计算赋能实时数据处理革命
反爬攻防战:随机请求头实战指南Python爬虫(17)反爬攻防战:随机请求头实战指南(fake_useragent库深度解析)
反爬攻防战:动态IP池构建与代理IPPython爬虫(18)反爬攻防战:动态IP池构建与代理IP实战指南(突破95%反爬封禁率)
Python爬虫破局动态页面:全链路解析Python爬虫(19)Python爬虫破局动态页面:逆向工程与无头浏览器全链路解析(从原理到企业级实战)
Python爬虫数据存储技巧:二进制格式性能优化Python爬虫(20)Python爬虫数据存储技巧:二进制格式(Pickle/Parquet)性能优化实战
Python爬虫进阶:Selenium自动化处理动态页面Python爬虫(21)Python爬虫进阶:Selenium自动化处理动态页面实战解析
Python爬虫:Scrapy框架动态页面爬取与高效数据管道设计Python爬虫(22)Python爬虫进阶:Scrapy框架动态页面爬取与高效数据管道设计
Python爬虫性能飞跃:多线程与异步IO双引擎加速实战Python爬虫(23)Python爬虫性能飞跃:多线程与异步IO双引擎加速实战(concurrent.futures/aiohttp)
Python分布式爬虫架构实战:Scrapy-Redis亿级数据抓取方案设计Python爬虫(24)Python分布式爬虫架构实战:Scrapy-Redis亿级数据抓取方案设计
Python爬虫数据清洗实战:Pandas结构化数据处理全指南Python爬虫(25)Python爬虫数据清洗实战:Pandas结构化数据处理全指南(去重/缺失值/异常值)
Python爬虫高阶:Scrapy+Selenium分布式动态爬虫架构实践Python爬虫(26)Python爬虫高阶:Scrapy+Selenium分布式动态爬虫架构实践
Python爬虫高阶:双剑合璧Selenium动态渲染+BeautifulSoup静态解析实战Python爬虫(27)Python爬虫高阶:双剑合璧Selenium动态渲染+BeautifulSoup静态解析实战
Python爬虫高阶:Selenium+Splash双引擎渲染实战与性能优化Python爬虫(28)Python爬虫高阶:Selenium+Splash双引擎渲染实战与性能优化
Python爬虫高阶:动态页面处理与云原生部署全链路实践(Selenium、Scrapy、K8s)Python爬虫(29)Python爬虫高阶:动态页面处理与云原生部署全链路实践(Selenium、Scrapy、K8s)
Python爬虫高阶:Selenium+Scrapy+Playwright融合架构Python爬虫(30)Python爬虫高阶:Selenium+Scrapy+Playwright融合架构,攻克动态页面与高反爬场景
Python爬虫高阶:动态页面处理与Scrapy+Selenium+Celery弹性伸缩架构实战Python爬虫(31)Python爬虫高阶:动态页面处理与Scrapy+Selenium+Celery弹性伸缩架构实战
Python爬虫高阶:Scrapy+Selenium+BeautifulSoup分布式架构深度解析实战Python爬虫(32)Python爬虫高阶:动态页面处理与Scrapy+Selenium+BeautifulSoup分布式架构深度解析实战
Python爬虫高阶:动态页面破解与验证码OCR识别全流程实战Python爬虫(33)Python爬虫高阶:动态页面破解与验证码OCR识别全流程实战
Python爬虫高阶:动态页面处理与Playwright增强控制深度解析Python爬虫(34)Python爬虫高阶:动态页面处理与Playwright增强控制深度解析
Python爬虫高阶:基于Docker集群的动态页面自动化采集系统实战Python爬虫(35)Python爬虫高阶:基于Docker集群的动态页面自动化采集系统实战
Python爬虫高阶:Splash渲染引擎+OpenCV验证码识别实战指南Python爬虫(36)Python爬虫高阶:Splash渲染引擎+OpenCV验证码识别实战指南
从Selenium到Scrapy-Playwright:Python动态爬虫架构演进与复杂交互破解全攻略Python爬虫(38)从Selenium到Scrapy-Playwright:Python动态爬虫架构演进与复杂交互破解全攻略
基于Python的动态爬虫架构升级:Selenium+Scrapy+Kafka构建高并发实时数据管道Python爬虫(39)基于Python的动态爬虫架构升级:Selenium+Scrapy+Kafka构建高并发实时数据管道
基于Selenium与ScrapyRT构建高并发动态网页爬虫架构:原理、实现与性能优化Python爬虫(40)基于Selenium与ScrapyRT构建高并发动态网页爬虫架构:原理、实现与性能优化
Serverless时代爬虫架构革新:Python多线程/异步协同与AWS Lambda/Azure Functions深度实践Python爬虫(42)Serverless时代爬虫架构革新:Python多线程/异步协同与AWS Lambda/Azure Functions深度实践
智能爬虫架构演进:Python异步协同+分布式调度+AI自进化采集策略深度实践Python爬虫(43)智能爬虫架构演进:Python异步协同+分布式调度+AI自进化采集策略深度实践
Python爬虫架构进化论:从异步并发到边缘计算的分布式抓取实践Python爬虫(44)Python爬虫架构进化论:从异步并发到边缘计算的分布式抓取实践
Python爬虫攻防战:异步并发+AI反爬识别的技术解密(万字实战)Python爬虫(45)Python爬虫攻防战:异步并发+AI反爬识别的技术解密(万字实战)
Python爬虫进阶:多线程异步抓取与WebAssembly反加密实战指南Python爬虫(46) Python爬虫进阶:多线程异步抓取与WebAssembly反加密实战指南
Python异步爬虫与K8S弹性伸缩:构建百万级并发数据采集引擎Python爬虫(47)Python异步爬虫与K8S弹性伸缩:构建百万级并发数据采集引擎
基于Scrapy-Redis与深度强化学习的智能分布式爬虫架构设计与实践Python爬虫(48)基于Scrapy-Redis与深度强化学习的智能分布式爬虫架构设计与实践
Scrapy-Redis+GNN:构建智能化的分布式网络爬虫系统(附3大行业落地案例)Python爬虫(49)Scrapy-Redis+GNN:构建智能化的分布式网络爬虫系统(附3大行业落地案例)
智能进化:基于Scrapy-Redis与数字孪生的自适应爬虫系统实战指南Python爬虫(50)智能进化:基于Scrapy-Redis与数字孪生的自适应爬虫系统实战指南
去中心化智能爬虫网络:Scrapy-Redis+区块链+K8S Operator技术融合实践Python爬虫(51)去中心化智能爬虫网络:Scrapy-Redis+区块链+K8S Operator技术融合实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HashMap真面目

背景 今天数据采集项目碰到一个性能问题&#xff0c;3000多个采集点&#xff0c;每一个采集点每秒送一个数据&#xff0c;接收到数据之后首先需要内存中做缓存&#xff0c;之后有一系列的业务分析处理&#xff0c;所以&#xff0c;对系统性能要求比较高。 最近几天发现服务器…

STM32CubeMX-H7-19-ESP8266通信(中)--单片机控制ESP8266实现TCP地址通信

前言 上篇文章我们已经能够使用串口助手实现esp8266的几种通信&#xff0c;接下来我们使用单片机控制实现。这篇文章会附带教程&#xff0c;增加.c和,.h&#xff0c;把串口和定时器放到对应的编号&#xff0c;然后调用初始化就可以使用了。 先讲解&#xff0c;然后末尾再放源码…

欧盟RED网络安全标准EN 18031-2的要求

欧盟RED网络安全标准EN 18031-2的要求 欧盟RED网络安全标准EN 18031-2的要求 ​ 适用产品范围&#xff1a; 能够处理个人隐私数据的可联网无线电设备。 不具备联网能力的三类无线电设备&#xff1a;玩具、儿童护理类设备、可穿戴类设备。 主要测试与评估内容&#xff1a; EN…

一起了解--CAST函数

CAST函数在SQL中用途广泛&#xff0c;不仅可以转换为数值类型&#xff0c;还可以在多种场景下用于数据类型转换。以下是一些常见的用途和示例&#xff1a; 类型转换 使用CAST函数可以在查询数据库时根据需要调整数据格式或类型 CAST(expression AS target_type) expression …

(50)课71:查看指定 query_id 的 SQL 语句的执行各个阶段的耗时情况 show profile for query query_id;

&#xff08;137&#xff09;查看指定 query_id 的 SQL 语句的执行各个阶段的耗时情况 show profile for query query_id &#xff1a; &#xff08;138&#xff09; 谢谢

AWS中国云的定时任务(AWS EventBridge+AWS Lambda)

问题 最近有一个每天在凌程定时同步数据给第三方系统的需求。需要使用AWS EventBridge和AWS Lambda结合的方式来同步数据给第三方系统。 思路 使用Python的ORM框架(例如&#xff1a;SQLAlchemy)查询到需要同步的数据&#xff0c;然后&#xff0c;使用http客户端&#xff08;…

开源PSS解析器

本章介绍开源PSS解析工具&#xff1a; 1. PSSTools语法解析器&#xff0c;这个工具仅包含一个语法解析器。 2. gen-pss&#xff0c;实现了语法解析器&#xff0c;和简单的Test realization&#xff0c;没有约束求解器。 本文将改造并使用gen-pss来生成C测试用例&#xff0…

《linux2.4 内存管理》:第 2 章 描述物理内存

Linux 适用于多种体系结构&#xff0c;需用体系结构无关方式描述内存。本章介绍影响 VM 行为的内存簇、页面和标志位结构。 非一致内存访问&#xff08;NUMA&#xff09;&#xff1a;在 VM 中&#xff0c;大型机器内存分簇&#xff0c;依簇与处理器距离&#xff0c;访问代价不…

数据湖是什么?数据湖和数据仓库的区别是什么?

目录 一、数据湖是什么 &#xff08;一&#xff09;数据湖的定义 &#xff08;二&#xff09;数据湖的特点 二、数据仓库是什么 &#xff08;一&#xff09;数据仓库的定义 &#xff08;二&#xff09;数据仓库的特点 三、数据湖和数据仓库的区别 &#xff08;一&#…

Smart Form Adobe form

强制更改内表:TNAPR se16-> Smart Form总览 Smart form 变量格式说明: &symbol& (括号中,小写字母为变量) &symbol& 屏蔽从第一位开始的N位 &symbol (n)& 只显示前N位 &symbol (S)& 忽略正负号 &symbol (<)& 符号在…

Linux 内核学习(11) --- Linux 链表结构

文章目录 Linked List 简介Linked List 操作方法链表头结点初始化创建链表节点添加节点到链表中从链表中删除节点从链表中替换节点移动链表中的节点检查链表链表遍历demo 实例 Linked List 简介 链表是一种数据结构&#xff0c;由一系列节点组成&#xff0c;每个节点包含数据部…

一分钟部署nginx-公网IP访问内网

前言 服务器内网下有nacos cluster&#xff08;3个节点&#xff09;&#xff0c;开放到公网并指定公司网络访问需要配置三次IP白名单&#xff0c;因此需要简化流程&#xff0c;通过nginx反向代理只配置1次IP白名单。 现在通过docker容器模拟环境&#xff0c;准备1台云服务器。…

C 语言分支与循环

目录 一. 分支结构&#xff1a;if 语句与 switch 语句 1. if 语句 2. switch 语句 二、关系操作符、条件操作符与逻辑操作符 1. 关系操作符 2. 条件操作符 3. 逻辑操作符 三、循环结构&#xff1a;while 循环、for 循环与 do - while 循环 1. while 循环 2. for 循…

【一文看懂Spring Boot2.x升级Spring Boot3.x】springboot2.x升级springboot3.x

springboot2.x升级springboot3.x 背景升级jdk版本为17以上springboot版本修改javax包更新mybatis-plus升级swagger升级springdocspringdoc配置背景 当前项目是springboot2.5.9版本的springboot+mybatis-plus项目,需要升级到springboot3.5.0项目。 升级jdk版本为17以上 Spri…

阳台光伏防逆流电表革新者:安科瑞ADL200N-CT/D16-WF

——为家庭能源管理提供高精度、智能化解决方案 一、阳台光伏爆发的背景 在全球能源转型与碳中和目标的驱动下&#xff0c;阳台光伏正以革命性姿态重塑家庭能源消费模式。从欧洲的“微型发电站”到中国的“万亿蓝海”&#xff0c;这一创新技术不仅撬动了能源市场的结构性变革…

美团完整面经

面试岗位 面试的岗位 - 2025春季校招 【转正实习】软件服务工程师-后端方向&#xff08;成都 - 软硬件服务-SaaS事业部&#xff09; 一面&#xff08;业务初试 - 30min&#xff09; 问题 自我介绍 Java基础 HashMap底层用的数据结构是什么&#xff1f;是线程安全的吗&…

pysnmp 操作流程和模块交互关系的可视化总结

1. SNMP GET 操作序列图 #mermaid-svg-KALvv8WkHJTsNCeu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-KALvv8WkHJTsNCeu .error-icon{fill:#552222;}#mermaid-svg-KALvv8WkHJTsNCeu .error-text{fill:#552222;str…

关于 /proc/net/tcp 与 /proc/$pid/net/tcp 的关系分析

关于 /proc/net/tcp 与 /proc/$pid/net/tcp 的关系分析 1. 基础概念 在 Linux 系统中&#xff0c;每个进程必定归属于一个且仅一个网络命名空间&#xff08;Network Namespace&#xff09;。这是 Linux 命名空间隔离机制的核心特性之一。 /proc/net/tcp 显示当前网络命名空间…

微信小程序 - 保存手机号等信息到通讯录

主要使用小程序 wx.addPhoneContact 这个api 一、界面 <view class"tab-item" bindtap"addToPhoneContacts">保存</view> 二、js 逻辑文件中 addToPhoneContacts() {wx.addPhoneContact({firstName: this.data.firstName, // 姓名mobilePh…

计算机视觉一些定义解析

1.GCT&#xff08;Gated Channel Transformation&#xff09; 定义 GCT&#xff08;Gated Channel Transformation&#xff09;是一种用于增强卷积神经网络特征提取能力的模块。它的核心思想是通过门控机制对特征图的通道进行动态调整&#xff0c;从而突出对任务更有帮助的特…