Scrapy 爬虫框架全解析
一、Scrapy 框架概述
- 基本定义
- Scrapy 是一个用 Python 编写的开源网络爬虫框架。它旨在快速、高效地抓取网页数据,可处理大规模的数据抓取任务。
- 基于 Twisted 异步网络库构建,能够并发地处理多个请求,大大提高了数据抓取的速度。
- 遵循 “请求 - 响应” 模型,用户只需定义好初始请求、解析规则等,框架就能自动完成数据的抓取和处理。
- 主要优势
- 高效性:
- 采用异步非阻塞的网络请求机制,在同一时间内可以处理多个请求,减少等待时间。
- 内置的调度器能够智能地管理请求队列,优先处理重要或优先级高的请求。
- 对资源的利用较为合理,在多线程或多进程环境下能充分发挥硬件性能。
- 灵活性:
- 支持多种数据提取方式,如 XPath、CSS 选择器等,可以根据网页结构灵活选择。
- 可定制化的中间件系统,能够方便地添加代理、设置请求头、处理响应等功能。
- 可以轻松地与数据库、数据存储系统集成,方便数据的持久化存储。
- 扩展性:
- 拥有丰富的插件和扩展库,如用于分布式爬取的 Scrapy - Redis 等。
- 良好的架构设计使得开发者可以方便地编写自定义的组件,如自定义的爬虫类、管道类等。
- 基于 Python 语言,与众多其他 Python 库有良好的兼容性,便于功能的扩展和集成。
- 高效性:
二、Scrapy 项目结构
- 核心目录
- scrapy.cfg:
- 项目的配置文件,用于定义项目的基本设置,如项目名称、部署相关的配置等。
- 可以在其中指定 Scrapy 命令的默认设置,例如日志级别、是否启用某些扩展等。
- 是整个项目的入口配置文件,Scrapy 工具在运行项目时首先读取此文件。
- 项目名文件夹:
- 存放项目的主要代码和资源,是项目的核心目录。
- 包含了自定义的爬虫模块、管道模块、中间件模块等的代码文件。
- 可以在其中创建子目录来组织不同功能的代码,如 utils 目录用于存放工具函数代码。
- scrapy.cfg:
- 主要模块
- spiders 目录:
- 用于存放所有的爬虫类代码文件。
- 每个爬虫类通常对应一个特定的网站或数据来源,负责定义抓取的起始 URL、解析规则等。
- 可以在该目录下按照网站或功能分类创建多个爬虫文件,便于管理和维护。
- items.py:
- 定义了数据项的结构,类似于数据库中的表结构或数据模型。
- 可以在其中定义各种字段,用于存储抓取到的数据,字段的数据类型可以根据需求灵活设置。
- 方便在爬虫和管道之间传递和处理数据,保证数据的一致性和规范性。
- pipelines.py:
- 主要负责数据的处理和存储,如数据清洗、去重、存储到数据库或文件等操作。
- 可以定义多个管道类,每个管道类可以处理不同类型的数据或执行不同的操作,形成数据处理的流水线。
- 能够根据数据的特点和需求,灵活地配置管道的顺序和功能,提高数据处理的效率和质量。
- middlewares.py:
- 包含了各种中间件类,用于处理请求和响应的过程。
- 如自定义请求头中间件可以添加特定的请求头信息,代理中间件可以设置代理服务器。
- 异常处理中间件可以捕获和处理请求过程中的异常情况,增强爬虫的稳定性和可靠性。
- spiders 目录:
三、Scrapy 爬虫编写要点
- 定义起始请求
- 起始 URL 设定:
- 明确要抓取的网站的初始 URL,可以是单个 URL 或多个 URL 的列表。
- 考虑网站的结构和数据分布,选择合适的起始点,以便能够全面地抓取目标数据。
- 对于动态加载数据的网站,可能需要分析其 AJAX 请求的 URL 规律,将其作为起始请求的一部分。
- 请求方法选择:
- 常用的请求方法有 GET 和 POST,根据网站的接口要求和数据获取方式选择合适的方法。
- GET 请求适用于获取公开的页面数据,参数通常通过 URL 传递;POST 请求则用于提交数据并获取响应,如登录、搜索等操作。
- 可以在请求中设置超时时间,以避免长时间等待无响应的情况,提高爬虫的效率。
- 请求头设置:
- 模拟真实浏览器的请求头,包括 User - Agent、Referer 等信息,避免被网站识别为爬虫而封禁。
- 可以根据不同的网站或请求类型,动态地设置请求头,增加请求的真实性和多样性。
- 合理设置 Accept、Accept - Encoding 等请求头字段,确保能够正确接收和解析网站的响应数据。
- 起始 URL 设定:
- 数据解析规则
- XPath 解析:
- 学习 XPath 语法,能够准确地定位网页中的元素,如标签、属性等。
- 利用 XPath 提取数据时,注意处理命名空间问题,确保能够正确获取目标数据。
- 可以结合 XPath 的函数和表达式,进行数据的筛选、转换和处理,如提取文本、获取属性值等。
- CSS 选择器解析:
- 熟悉 CSS 选择器的语法,如标签选择器、类选择器、ID 选择器等,用于定位元素。
- CSS 选择器在处理样式相关的元素定位时较为方便,可以快速提取出特定样式的元素数据。
- 与 XPath 相比,在某些场景下 CSS 选择器的表达式可能更简洁、易读,但功能上相对 XPath 可能稍弱一些。
- 正则表达式辅助:
- 当数据的格式较为复杂或不规律时,使用正则表达式进行数据的提取和匹配。
- 正则表达式可以用于提取特定模式的数据,如电话号码、邮箱地址等,但要注意正则表达式的性能和复杂性。
- 可以将正则表达式与 XPath 或 CSS 选择器结合使用,先定位到大致的元素范围,再用正则表达式提取精确的数据。
- XPath 解析:
- 数据存储处理
- 存储格式选择:
- 常见的存储格式有 JSON、CSV、XML 等,根据数据的特点和后续使用需求选择合适的格式。
- JSON 格式适合存储结构化的数据,便于在不同编程语言之间进行数据交换和处理。
- CSV 格式则常用于数据的表格化存储,方便在电子表格软件中查看和分析数据。
- 数据库存储:
- 可以将数据存储到关系型数据库如 MySQL、PostgreSQL 等,利用数据库的强大查询和管理功能。
- 也可以选择非关系型数据库如 MongoDB,适用于存储灵活的数据结构和大规模的数据。
- 在存储到数据库时,要注意数据库的连接设置、表结构设计以及数据的插入和更新操作的优化。
- 文件存储路径与命名:
- 确定数据存储的文件路径,要考虑文件系统的权限、存储空间等因素。
- 合理命名存储文件,使其能够反映数据的来源、抓取时间或其他关键信息,便于文件的管理和查找。
- 可以根据数据的规模和类型,采用分目录存储的方式,提高文件存储的组织性和可维护性。
- 存储格式选择:
四、Scrapy 中间件使用技巧
- 请求中间件
- 代理设置:
- 可以在请求中间件中设置代理服务器,实现 IP 地址的切换,避免因单个 IP 访问频繁被封禁。
- 动态地从代理池获取代理 IP,并在请求中应用,提高爬虫的稳定性和可靠性。
- 对代理的可用性进行检测和筛选,及时排除无效的代理,保证请求的顺利进行。
- 请求头处理:
- 统一管理和设置请求头信息,如随机切换 User - Agent,模拟不同的浏览器访问。
- 根据不同的网站或请求场景,定制化请求头内容,增加请求的真实性和通过率。
- 可以在请求头发送前进行加密或签名处理,以满足某些网站的安全要求。
- 请求重试:
- 当请求失败时,如网络连接超时、服务器错误等,设置合理的重试次数和时间间隔。
- 记录请求重试的次数和原因,便于后续分析和优化爬虫的稳定性。
- 可以根据不同类型的错误,采用不同的重试策略,如对于 403 错误可能需要更换代理后重试。
- 代理设置:
- 响应中间件
- 数据清洗与转换:
- 对抓取到的原始数据进行清洗,去除噪声数据、HTML 标签等无用信息。
- 进行数据格式的转换,如将字符串类型的数据转换为合适的数值类型或日期类型。
- 对数据进行标准化处理,如统一单位、编码格式等,提高数据的质量和可用性。
- 异常处理:
- 捕获响应过程中的异常情况,如解析错误、数据缺失等,并进行相应的处理。
- 可以记录异常信息,以便后续排查问题和优化爬虫代码。
- 对于一些可恢复的异常,如网络波动导致的部分数据丢失,可以尝试重新请求或进行数据补全。
- 响应缓存:
- 对于一些不经常更新的数据,可以设置响应缓存,减少重复请求,提高爬虫的效率。
- 确定缓存的有效期和缓存策略,如基于时间的缓存或基于数据版本的缓存。
- 可以对缓存数据进行压缩存储,节省存储空间,同时在读取缓存时进行解压缩处理。
- 数据清洗与转换:
- 自定义中间件开发
- 继承基础类:
- 无论是请求中间件还是响应中间件,都需要继承相应的基础类,如 scrapy.http.middleware.RequestMiddleware 或 scrapy.http.middleware.ResponseMiddleware。
- 在继承的基础上,重写特定的方法,如 process_request 方法用于请求中间件处理请求,process_response 方法用于响应中间件处理响应。
- 遵循类的命名规范和代码结构要求,使自定义中间件能够与 Scrapy 框架无缝集成。
- 功能实现逻辑:
- 根据需求在中间件方法中编写具体的功能实现代码,如添加自定义的请求头逻辑、数据处理逻辑等。
- 注意代码的效率和性能,避免在中间件中进行过于复杂或耗时的操作,以免影响整个爬虫的运行速度。
- 对中间件的功能进行充分的测试和验证,确保其能够正确地处理各种请求和响应情况。
- 注册与配置:
- 在项目的 settings.py 文件中注册自定义的中间件,指定中间件类的路径。
- 可以根据需要调整中间件的执行顺序,通过 settings.py 文件中的相关设置来控制。
- 确保在注册和配置过程中没有语法错误或配置错误,否则可能导致爬虫无法正常运行。
- 继承基础类:
五、Scrapy 框架的优化与维护
- 性能优化策略
- 并发设置调整:
- 合理设置并发请求的数量,根据目标网站的服务器性能和网络带宽进行优化。
- 可以通过修改 settings.py 文件中的 CONCURRENT_REQUESTS 参数来调整并发量。
- 同时要注意并发量过高可能导致目标网站压力过大或自身被封禁,需要进行适当的平衡。
- 资源利用优化:
- 优化内存使用,及时释放不再使用的对象和数据,避免内存泄漏。
- 合理利用 CPU 资源,避免在爬虫运行过程中出现 CPU 占用过高的情况,影响其他程序运行。
- 可以采用多进程或多线程与异步相结合的方式,充分发挥硬件的性能优势。
- 数据传输优化:
- 压缩请求和响应的数据量,如在请求头中设置 Accept - Encoding 为 gzip 等压缩格式,在响应处理时进行解压缩。
- 减少不必要的数据传输,如只抓取需要的数据,避免抓取大量无用的图片、脚本等资源。
- 优化数据存储的写入操作,采用批量写入、异步写入等方式提高数据存储的效率。
- 并发设置调整:
- 爬虫稳定性维护
- 错误处理机制完善:
- 建立全面的错误处理机制,对网络错误、数据解析错误、存储错误等各类错误进行捕获和处理。
- 对于一些常见的错误,如连接超时、服务器 500 错误等,制定相应的应对策略,如重试、记录错误信息等。
- 定期检查错误日志,分析错误产生的原因和频率,及时对爬虫代码进行优化和调整。
- 网站规则适配更新:
- 目标网站的结构和规则可能会发生变化,需要定期检查并更新爬虫的解析规则和请求逻辑。
- 关注网站的更新公告、API 变化等信息,及时调整爬虫代码以适应新的情况。
- 采用灵活的解析策略,如使用相对路径的 XPath 或 CSS 选择器,减少因网站结构变化带来的影响。
- 爬虫监控与预警:
- 建立爬虫监控系统,实时监测爬虫的运行状态,如运行速度、数据抓取量、错误率等指标。
- 设定预警阈值,当爬虫出现异常情况,如速度过慢、错误率过高时,及时发出预警通知。
- 可以采用日志分析工具、性能监控工具等辅助进行爬虫的监控和预警工作。
- 错误处理机制完善:
- 代码管理与协作
- 版本控制:
- 使用版本控制系统如 Git 对 Scrapy 项目代码进行管理,方便代码的回溯、分支管理和多人协作。
- 定期提交代码更改,编写清晰的提交注释,说明代码修改的目的和内容,便于团队成员了解代码的变化历史。
- 可以创建不同的分支用于开发新功能、修复错误等,在合适的时候进行分支合并。
- 代码规范遵循:
- 遵循 Python 代码规范和 Scrapy 框架的编码风格建议,提高代码的可读性和可维护性。
- 采用合理的代码结构和命名规范,如函数名、变量名要具有描述性,代码模块要功能单一、职责明确。
- 对代码进行适当的注释,尤其是复杂的逻辑部分,方便其他开发人员理解和修改代码。
- 团队协作流程:
- 建立明确的团队协作流程,如代码审查机制,在代码合并前进行审查,确保代码质量。
- 划分不同成员的职责和任务范围,如有的成员负责爬虫开发,有的成员负责数据处理和存储等。
- 定期进行团队沟通和交流,分享开发过程中的经验和问题,促进团队整体的技术提升和项目推进。
- 版本控制:
相关文章:
Scrapy 爬虫框架全解析
一、Scrapy 框架概述 基本定义 Scrapy 是一个用 Python 编写的开源网络爬虫框架。它旨在快速、高效地抓取网页数据,可处理大规模的数据抓取任务。基于 Twisted 异步网络库构建,能够并发地处理多个请求,大大提高了数据抓取的速度。遵循 “请求…...
Hive3.X——异常处理Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000
Hive3.X——异常处理Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000 01 前言 大数据系列,学到了Hive,搭建环境的时候,因为使用的是本机WSL2(别问为啥不用VMware,问就是条件有限,而且WS…...
【跨库查询、多库查询】.NET开源 ORM 框架 SqlSugar 系列
文章目录 一、跨库方式1:跨库导航二、手动跨库查询三、同服务器:自动查询跨库查询3.1 Mysql和SqlServer自动3.2 自动: PgSql跨Scheme查询3.3 其他库同服务器 四、跨服务器:自动跨库查询4.1 配置SqlServer dblink4.2 配置 Oracle dblink4.3 配…...
【JAVA】Java项目实战—Java 数据库应用项目:学生信息管理系统
本项目将实现一个简单的学生信息管理系统,功能包括学生信息的录入、查询、修改和删除。通过本项目,读者将深入理解Java与数据库交互的基本原理,掌握JDBC(Java Database Connectivity)技术,以及如何构建一个…...
中电金信携手中远海科,共启贸易金融数智新篇章
在数智化转型成为驱动经济社会高质量发展的新引擎背景下,“数智方案”栏目聚焦金融等国计民生重点行业场景,依托中电金信“源启筑基咨询引领应用重构”的产品及服务体系,输出市场洞察和行业解决方案、应用案例,旨在全面推动行业IT…...
有没有办法让爬虫更加高效,比如多线程处理?
要让Python爬虫更加高效,确实可以采用多线程处理。多线程可以显著提高爬虫的效率,因为它允许程序同时执行多个任务,从而减少等待时间。以下是一些提高爬虫效率的方法,特别是通过多线程技术: 1. 多线程爬虫 多线程爬虫…...
Android历史版本主要更新说明
Android 15 Android 15 继续致力于构建注重隐私和安全保护的平台,助您提高效率,同时还引入了多项新功能,帮您打造精美应用、卓越的媒体和相机体验,并提供直观的用户体验。在平板电脑和可折叠设备上更能凸显出这些优势。 Android…...
测试岗位应该学什么
以下是测试岗位需要学习的一些关键内容: 1. 测试理论和方法 - 了解不同类型的测试,如功能测试、性能测试、压力测试、安全测试、兼容性测试等。 - 掌握测试策略和测试计划的制定。 2. 编程语言 - 至少熟悉一种编程语言,如 Python、Java…...
华为HarmonyOS NEXT 原生应用开发: 数据持久化存储(用户首选项)的使用 token令牌存储鉴权!
Preferences 数据持久化存储 用户首选项(Preferences) 1. 封装 仓库工具类 ● 这里可以选择将 数据字段 key 抽取为一个静态方法,这里选择让用户传参,看起来较容易理解! /*** 首选项 preferences - 实现数据持久化…...
【AIStarter】告别复杂转换 - MinerU整合包实现PDF到Markdown的无缝转变
在数字化时代,信息的传递与共享变得愈发重要。文档格式之间的转换成为了日常工作中不可或缺的一部分。为了满足用户对高效工作流程的需求,新版MinerU整合包应运而生,它不仅简化了从PDF到Markdown的转换过程,还为用户带来了前所未有…...
Jenkins参数化构建详解(This project is parameterized)
本文详细介绍了Jenkins中不同类型的参数化构建方法,包括字符串、选项、多行文本、布尔值和git分支参数的配置,以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法 文章目录 1. Jenkins的参数化构建1…...
服务器批量清理redis keys,无法适用客户端必须直连的情况
在 Redis 中,批量清理指定模式的键(例如 memberCardData:*)可以通过多种方法来实现。需要注意的是,Redis 的命令执行是单线程的,因此对大量键进行操作时可能会阻塞服务器。以下是几种常见的方法: shell K…...
单元测试SpringBoot
添加测试专用属性 加载测试专用bean Web环境模拟测试 数据层测试回滚 测试用例数据设定...
牛客网刷题 | BC126 小乐乐查找数字
😁博客主页😁:🚀从0至1-CSDN博客🚀 🤑博客内容🤑:🍭C语言、C、数据结构、嵌入式、Linux🍭 😎本文内容🤣:🍭BC1…...
Node一、fs 模块、path 模块、端口号、 http 模块、
一、Node.js了解 Node.js是一个跨平台JavaScript运行环境,使开发者可以搭建服务器端的JavaScript应用程序。 概念:使用 Node.js 编写后端程序 / 支持前端工程化 ✓ 后端程序:提供接口和数据,网页资源等 ✓ 前端工程化 &#x…...
k8s service 配置AWS nlb load_balancing.cross_zone.enabled
在Kubernetes中配置NLB(Network Load Balancer)的跨区域负载均衡(cross-zone load balancing),需要使用服务注解(service annotations)来实现。根据AWS官方文档,以下是配置NLB跨区域…...
[分布式即时通讯系统] 注册类完善
我们在qss里添加err_tip样式,根据不同的状态做字体显示 #err_tip[statenormal]{color: green; } #err_tip[stateerr]{color: red; } 接下来项目中添加global.h和global.cpp文件,global.h声明repolish函数,global.cpp用来定义这个函数。 .h…...
C#使用HttpWebRequest下载文件
public static bool HttpDownloadFile(string downloadUrl, string localPath, log4net.ILog log) { bool bFlagDownloadFile false; //log.Debug(“HttpDownloadFile–准备以HTTP的方式下载文件,url:[” downloadUrl “]本地文件:【” localPath “…...
CentOS7环境安装php
直接安装 yum -y install php CentOS7默认安装是php5,现在php已有8.3版本 先查看php -v 版本 如果是低版本,可以删除 yum remove php yum remove php-fpm yum remove php-common 一、添加REMI存储库 yum install epel-release yum install -y …...
【Excel学习记录】04-排序和筛选
1.排序 (1)简单排序 不建议选中某列后进行排序 可以选中一个单元格或者整个表格→开始→编辑→排序和筛选→升序/降序 (2)多条件排序 可以选中一个单元格或者整个表格→开始→编辑→排序和筛选→自定义排序→指定关键字、比较内…...
Python轻松获取抖音视频播放量
现在在gpt的加持下写一些简单的代码还是很容易的,效率高,但是要有一点基础,不然有时候发现不了问题,这些都需要经验积累和实战,最好能和工作结合起来,不然很快一段时间就忘的干干净净了,下面就是…...
恢复删除的文件:6个免费Windows电脑数据恢复软件
数据恢复软件可帮助您从众多存储设备中恢复损坏或删除的数据。您可以使用这些文件恢复软件来检索文件、文档、视频、图片等。这些应用程序支持多种标准文件格式,如 PNG、RTF、PDF、HTML、JPG、MP3 等。 经过超过 75 小时的研究,我分析了 25 最佳免费数据…...
Go的Gin比java的Springboot更加的开箱即用?
前言 隔壁组的云计算零零后女同事,后文简称 云女士 ,非说 Go 的 Gin 框架比 Springboot 更加的开箱即用,我心想在 Java 里面 Springboot 已经打遍天下无敌手,这份底蕴岂是 Gin 能比。 但是云女士突出一个执拗,非我要…...
Java 中枚举的 toString 方法及其字段信息展示
在 Java 编程中,枚举(enum)是一种特殊的数据类型,用于定义一组固定的常量。枚举类型不仅限于简单的常量定义,还可以包含字段、方法以及构造函数,从而使其具备更强的表达能力。toString 方法是 Java 中所有对…...
Python数据分析(OpenCV视频处理)
处理视频我们引入的还是numpy 和 OpenCV 的包 引入方式如下: import numpy as np import cv2 我们使用OpenCV来加载本地视频,参数就是你视频的路径就可以 #加载视频 cap cv2.VideoCapture(./1.mp4) 下面我们进行读取视频 #读取视频 flag,frame cap.re…...
DocFlow票据AI自动化处理工具:出色的文档解析+抽取能力,提升企业文档数字化管理效能
目录 财务应付 金融信贷业务 近期,DocFlow票据自动化产品正式上线。DocFlow是一款票据AI自动化处理工具,支持不同版式单据智能分类扩展,可选功能插件配置流程,满足多样业务场景。 随着全球化与信息化进程,企业的文件…...
python编程Day15-UnitTest框架的介绍
框架 framework为了解决一类事情的功能集合 Unittest 框架 是 Python 自带的单元测试框架 自带的, 可以直接使用, 不需要单外安装 测试人员 用来做自动化测试, 作为自动化测试的执行框架, 即 管理和执行用例的 使用原因 能够组织多个用例去执行提供丰富的断言方法能够生成测试报…...
Linux——进程控制模拟shell
1.进程创建 我们在之前的文章中介绍过进程创建的方法,可以通过系统调用接口fork来创建新的进程。 fork在创建完新的子进程之后,返回值是一个pid,对于父进程返回子进程的pid,对于子进程返回0。fork函数后父子进程共享代码ÿ…...
OpenCV的图像矫正
一、原理 图像矫正的原理是透视变换,下面来介绍一下透视变换的概念。 透视变换(Perspective Transform)基于一个4对点的映射关系(4个源点到4个目标点),通过这些点之间的映射,可以计算一个变换…...
基于php求职招聘系统设计
摘要 随着社会信息化时代的到来,如今人们社会的生活节奏普遍加快,人们对于工作效率的要求也越来越高,企业 举办招聘会耗时耗财,个人参加招聘会漫无目的寻找不到“方向”,网络搜索工作量目的性不强,信息量繁…...
并行口的基本概念
单片机的并行口结构包括多个并行I/O端口,用于与外部设备进行并行数据传输。这些端口能够直接读写外部存储器、显示设备、打印机等外设的数据,是单片机与外界交互的重要通道。在深入探讨之前,我们先简要了解下单片机的基本概念。 单片机&…...
(六)机器学习 - 正态数据分布
正态数据分布,也称为高斯分布(Gaussian distribution),是一种在统计学中非常重要的概率分布。它描述了自然和社会科学中许多现象的分布情况,如人的身高、体重、智商等。正态分布的图形特征是中间高、两边低,…...
电脑系统报错找不到d3dcompiler_47.dll怎么修复?怎么预防“d3dcompiler_47.dll”文件缺失?
“d3dcompiler_47.dll”文件缺失的修复与预防策略 在日常使用电脑软件,尤其是运行大型游戏或图形密集型应用时,我们可能会遇到一些令人困惑的系统报错。其中之一便是“找不到d3dcompiler_47.dll”的错误提示。这个错误不仅影响软件的正常运行࿰…...
Github 2024-12-12 Go开源项目日报Top10
根据Github Trendings的统计,今日(2024-12-12统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Go Ethereum: 以太坊Go语言官方实现 创建周期:3717 天开发语言:Go协议类型:GNU Lesser General Public License v3.0Star数量:4504…...
RIP协议
介绍 路由信息协议RIP(Routing Information Protocol)是基于距离矢量(Distance-Vector)算法的路由协议,它是一种较为简单的内部网关协议IGP(Interior Gateway Protocol)。它的主要功能是帮助路…...
vue-router查漏补缺
一、动态路由匹配 1.带参数的动态路由匹配 import User from ./User.vue// 这些都会传递给 createRouter const routes [// 动态字段以冒号开始{ path: /users/:efg, component: User }, ]这种方式的路由会匹配到/users/abc或者/users/123,路径参数用冒号:表示,并…...
使用Flink CDC实现 Oracle数据库数据同步的oracle配置操作
使用Flink CDC实现 Oracle数据库数据同步的oracle配置操作,包括开启日志归档和用户授权。 flink官方参考资料: https://nightlies.apache.org/flink/flink-cdc-docs-master/zh/docs/connectors/flink-sources/oracle-cdc/ 操作步骤: 1.启用…...
mqtt.js 客户端封装
mqtt.js 客户端封装 没封装前使用 const client mqtt.connect(ws://10.10.20.9:9001) onMounted(() > {const topicList []const channelCount 12for(let i 0; i < channelCount; i) {topicList.push(/test/sendImage${i 1})}client.on(connect, () > {console…...
www.aws.training网站的账户密码如何修改
www.aws.training网站的账户密码如何修改 参加aws考试后, 账号密码如何修改呢? 是不是找了好久都找不到. 右上角, 我的账户, 点击注销. 然后会跳到页面: 点击那个网址链接, 进入新的页面,点安全: 右上角: 更改密码. 按提示来就好....
使用Python实现高性能数据存储
在数据驱动的时代,处理和存储海量数据已成为关键需求。高性能数据存储不仅能够确保数据的快速读写,还能提升系统的整体性能。Python作为一种灵活且功能强大的编程语言,提供了多种高效的数据存储解决方案。本文将详细介绍如何使用Python实现高…...
[已解决]nvm安装node.js 报错 拒绝访问此应用无法在你电脑上运行
报错如下: 出错背景: 心血来潮把node删掉重新安装,想用nvm来进行管理node 出错原因: npm下载失败、下载不完整 不完整的npm展示: 出错根本原因: 可能因为镜像源或者网络波动,导致node下载…...
图文检索(36):Decomposing Semantic Shifts for Composed Image Retrieval
Decomposing Semantic Shifts for Composed Image Retrieval 摘要方法3.1 前期准备3.2 视觉语言表示3.3 降级过程3.4 升级过程3.5 训练和推理 结论 发布时间(2024 AAAI) 标题:分解语义转换以实现组合图像检索 摘要 语义转换网络 (SSN)&…...
批量计算(Batch Processing)
批量计算(Batch Processing)是一种数据处理方式,指的是将大量任务或数据分批次进行处理,而不是实时处理每一个任务。这种处理方式通常在任务之间没有依赖关系时使用,可以大大提高计算效率和资源利用率。批量计算广泛应…...
Linux yum-config-manager命令异常
错误信息 使用 yum-config-manager命令时错误信息如下 sudo yum-config-manager \ > --add-repo \ > https://download.docker.com/linux/centos/docker-ce.repo sudo: yum-config-manager: command not found 解决办法 第一步: sudo yum -y install yum-u…...
【C++】关联存储结构容器-set(集合)详解
目录 一、基本概念 二、内部实现 三、常用操作 3.1 构造函数 3.2 插入操作 3.3 删除操作 3.4 查找操作 3.5 访问元素 3.6 容量操作 3.7 交换操作 四、特性 五、应用场景 结语 一、基本概念 set是C标准模板库(STL)中的一种关联容器…...
如何利用SPSS软件进行多组间显著性检验以abcd显示
1.SPSS软件中进行多组间的显著性检验 要在SPSS软件中进行多组间的显著性检验,并以abcd显示结果,你可以按照以下步骤操作: 数据准备: 确保你的数据已经正确输入SPSS,其中每行代表一个观测值,包含至少两列&a…...
C++ 之计时函数总结
C 之计时函数总结 总结Windows下C开发时的计时实现 1. clock() #include <time.h> //引入头文件void main() {clock_t start, end;start clock();fun(); //需计时的函数end clock(); float t_cfloat(end-start)/CLOCKS_PER_SEC;cout << "func cos…...
仿dota2渲染--shader常见贴图含义(直观展示)
Properties {[Header(Texture)]_MainTex ("RGB:颜色 A:透贴", 2D) "white"{}_NormTex ("RGB:法线贴图", 2D) "bump" {}_MaskTex ("R:高光强度 G:边缘光强度 B:高光染色 A:高光次幂…...
NoSQL大数据存储技术测试(5)MongoDB的原理和使用
单项选择题 第1题 关于 MongoDB 集群部署下面说法不正确的是() 已经不使用主从复制的模式 在实际应用场景中, Mongodb 集群结合复制集和分片机制 MongoDB 支持自动分片, 不支持手动切分 (我的答案) 每…...
视图、转发与重定向、静态资源处理
目录 视图 默认视图 视图机制原理 自定义视图 请求转发与重定向 静态资源处理 视图 每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性 可以通过 order 属性指定解析器的优先顺序,order 越小优先级越高 默认是最低优先级,Integer.MAX_…...