【Python爬虫(39)】掌控全局:分布式爬虫的任务管理与监控之道
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发者,都能从中汲取知识,助力掌握爬虫核心技能,开拓技术视野。
目录
- 一、引言
- 二、分布式爬虫任务分配与调度策略
- 2.1 按 URL 范围分配任务
- 2.2 按 IP 地址分配任务
- 2.3 其他常见策略
- 三、监控分布式爬虫的运行状态
- 3.1 节点状态监控
- 3.2 任务进度监控
- 3.3 数据指标监控
- 四、处理分布式爬虫中的节点故障与恢复
- 4.1 故障检测机制
- 4.2 任务转移策略
- 4.3 自动重启与恢复
- 五、总结与展望
一、引言
在大数据时代,数据的获取和分析变得至关重要。分布式爬虫作为一种高效的数据采集工具,能够利用多台计算机的资源,并行地从互联网上抓取大量的数据。在分布式爬虫系统中,任务管理与监控是确保系统高效、稳定运行的关键环节。合理的任务分配与调度策略可以充分发挥各个节点的性能,提高爬取效率;实时监控运行状态有助于及时发现和解决问题,保障系统的稳定性;而有效的节点故障处理与恢复机制则能增强系统的可靠性,确保数据采集任务的连续性。
二、分布式爬虫任务分配与调度策略
2.1 按 URL 范围分配任务
按 URL 范围分配任务是一种常见的任务分配策略。其原理是将目标网站的 URL 空间按照一定的规则进行划分,然后将每个划分后的子范围分配给不同的爬虫节点。例如,可以根据 URL 的域名、路径或者特定的参数来进行范围划分。在爬取一个大型电商网站时,可以按照商品分类的 URL 路径将任务分配给不同的节点,让每个节点负责爬取特定类别的商品信息。这种策略适用于大规模网站的爬取场景,因为它能够将任务进行合理的分割,避免单个节点承担过多的工作,提高爬取效率。在实际应用中,许多电商网站和新闻网站的分布式爬虫都采用了这种任务分配策略。以某知名电商网站为例,其商品数量庞大,通过按 URL 范围分配任务,不同的爬虫节点可以并行地爬取不同类别的商品数据,大大缩短了数据采集的时间。
2.2 按 IP 地址分配任务
按 IP 地址分配任务是通过使用代理 IP 来实现的。每个爬虫节点配置不同的代理 IP,然后根据 IP 地址的归属或者其他规则将任务分配给相应的节点。这种策略在应对反爬虫机制时具有明显的优势,因为不同的 IP 地址可以降低被目标网站封禁的风险。在爬取社交媒体网站或者论坛时,由于这些网站对同一 IP 地址的访问频率限制较为严格,使用按 IP 地址分配任务的策略可以让各个节点使用不同的 IP 进行访问,从而绕过限制,实现高效的数据采集。例如,在对某社交媒体平台进行数据采集时,通过为每个爬虫节点分配不同地区的代理 IP,成功地避免了因频繁访问而被限制的问题,确保了数据采集的顺利进行。
2.3 其他常见策略
除了上述两种策略外,还有一些其他常见的任务分配与调度策略,如轮询法、加权轮询法、最小负载法等。轮询法是将任务依次轮流分配给各个爬虫节点,实现简单,但不考虑节点的性能差异和负载情况;加权轮询法是根据节点的性能或者其他因素为每个节点分配不同的权重,然后按照权重比例分配任务,能够更好地利用高性能节点;最小负载法是实时监测各个节点的负载情况,将任务分配给当前负载最小的节点,确保任务分配的均衡性 。这些策略各有优缺点,在实际应用中需要根据具体的需求和场景来选择合适的策略。比如,在节点性能差异不大且负载相对稳定的情况下,可以使用轮询法;而在节点性能差异明显时,加权轮询法可能更为合适;对于负载变化较大的场景,最小负载法能更好地保证系统的高效运行。
三、监控分布式爬虫的运行状态
3.1 节点状态监控
在分布式爬虫系统中,节点状态监控是确保系统正常运行的重要环节。通过心跳机制,每个爬虫节点会定期向中心调度节点发送心跳消息,表明自己处于正常运行状态。中心调度节点通过实时接收这些心跳消息,能够及时了解每个节点的状态。如果某个节点在一定时间内没有发送心跳消息,中心调度节点就可以判断该节点可能出现了故障,并采取相应的措施,如重新分配该节点的任务。
Zookeeper 和 Etcd 是实现节点状态管理的常用工具。以 Zookeeper 为例,它采用树形结构来存储数据,每个爬虫节点在 Zookeeper 中创建一个临时节点,通过这个临时节点来存储自身的状态信息。当节点正常运行时,临时节点存在;一旦节点出现故障,临时节点会被自动删除,其他节点可以通过监听 Zookeeper 上的节点变化来及时获取节点状态的变更信息 。在一个大规模的分布式爬虫项目中,使用 Zookeeper 进行节点状态管理,当某个节点出现故障时,其他节点能够在短时间内感知到,并重新分配任务,保证了数据采集的连续性。
3.2 任务进度监控
跟踪任务进度是监控分布式爬虫运行状态的关键。可以通过记录已完成和待完成任务的数量来实时了解任务的进展情况。在实际应用中,每个爬虫节点在完成一个任务后,会向任务管理系统更新任务状态,任务管理系统则根据这些更新信息统计已完成和待完成任务的数量,并计算任务的完成进度。
为了更直观地展示任务进度,Grafana 和 Kibana 等可视化工具被广泛应用。这些工具可以从任务管理系统中获取任务进度数据,并以图表、仪表盘等形式展示出来。例如,使用 Grafana 可以创建一个任务进度仪表盘,通过柱状图、折线图等直观地展示各个爬虫节点的任务完成情况、整体任务进度以及任务进度的变化趋势。开发人员和运维人员可以通过这些可视化界面,快速了解任务的执行情况,及时发现任务执行过程中出现的问题。
3.3 数据指标监控
在分布式爬虫运行过程中,需要监控一系列的数据指标,以全面评估爬虫的运行状况。抓取速度是指单位时间内爬虫能够抓取的页面数量,它反映了爬虫的工作效率。数据量指标用于统计爬虫已经抓取到的数据总量,包括页面数量、数据记录数等。失败率则是指爬虫在抓取过程中出现失败的次数占总抓取次数的比例,它可以帮助我们了解爬虫运行的稳定性。
通过对这些数据指标的监控和分析,我们可以及时发现爬虫运行中出现的问题。如果抓取速度突然下降,可能是由于网络问题、目标网站反爬虫机制加强或者爬虫节点负载过高导致的;数据量增长缓慢可能意味着爬虫遇到了数据获取困难的情况;失败率上升则可能表示爬虫在处理某些任务时出现了错误,需要进一步排查原因 。通过实时监控这些指标,并设置合理的阈值,当指标超出正常范围时及时发出警报,以便及时采取措施解决问题,确保分布式爬虫系统的稳定运行。
四、处理分布式爬虫中的节点故障与恢复
4.1 故障检测机制
在分布式爬虫系统中,及时检测到节点故障是保障系统稳定运行的关键。心跳检测是一种常用的故障检测方式,每个爬虫节点会按照固定的时间间隔向中心调度节点发送心跳消息。例如,每隔 5 秒,节点就会发送一次心跳。如果中心调度节点在连续 3 次(即 15 秒)没有收到某个节点的心跳消息,就会判定该节点可能出现故障。
超时机制也是故障检测的重要手段。当爬虫节点发送请求后,如果在规定的时间内(如 10 秒)没有收到响应,就可以认为出现了超时故障。这可能是由于网络拥堵、目标服务器繁忙或者节点自身出现问题导致的。结合日志分析可以更准确地排查故障原因。通过查看节点的日志,我们可以了解到节点在故障发生前的操作、请求的 URL、返回的状态码等信息。比如,如果日志中显示大量的 “403 Forbidden” 状态码,可能是因为爬虫被目标网站封禁;如果是 “Connection refused” 错误,则可能是网络连接问题或者目标服务器拒绝连接。
4.2 任务转移策略
当检测到某个节点出现故障后,需要将该节点上未完成的任务重新分配到其他可用节点上。这个过程需要中心调度节点协调。中心调度节点首先会从故障节点的任务队列中获取未完成的任务列表,然后根据其他可用节点的负载情况,将任务分配给负载较轻的节点。在实际应用中,可能会遇到任务转移对爬虫整体性能产生影响的情况。例如,在重新分配任务时,网络传输任务数据可能会导致网络带宽的占用增加,从而影响其他节点的正常爬取工作。为了应对这种情况,可以采用分批转移任务的方式,将任务分成若干批次,逐步转移到其他节点,避免一次性大量转移任务对网络造成过大压力。同时,在任务转移过程中,要确保任务的唯一性,避免出现重复分配任务的情况,这可以通过在任务管理系统中记录任务的分配状态来实现。
4.3 自动重启与恢复
为了提高系统的自愈能力,可以设置自动重启故障节点的机制。在 Linux 系统中,可以使用 systemd 服务来管理爬虫节点的进程。当检测到节点故障后,systemd 可以自动重启爬虫节点的进程。在节点重启后,需要进行数据恢复和任务接续。如果爬虫节点在爬取过程中使用了数据库来存储已爬取的数据和任务进度信息,那么在重启后,可以从数据库中读取这些信息,恢复到故障发生前的状态。例如,在爬取电商网站商品信息时,爬虫节点会将已爬取的商品 ID 和任务进度记录到数据库中。节点重启后,通过读取数据库中的记录,就可以继续从上次中断的地方开始爬取,确保数据采集的完整性和连续性。
五、总结与展望
分布式爬虫的任务管理与监控是确保爬虫系统高效、稳定运行的关键。合理的任务分配与调度策略能够提高爬虫的工作效率,实时监控运行状态有助于及时发现并解决问题,而有效的节点故障处理与恢复机制则能保障系统的可靠性。在实际应用中,我们需要根据具体的需求和场景,选择合适的任务分配策略、监控工具和故障处理方法。
展望未来,分布式爬虫的任务管理与监控将朝着更加智能化和自动化的方向发展。随着人工智能和机器学习技术的不断进步,未来的分布式爬虫系统有望实现任务分配的智能优化,根据节点的实时性能、网络状况以及目标网站的反爬虫策略等多因素,动态调整任务分配方案,进一步提高爬取效率。同时,自动化的故障诊断和修复机制也将不断完善,能够在更短的时间内检测和解决节点故障,减少对数据采集任务的影响。在监控方面,可视化技术将更加先进,能够提供更加直观、全面的运行状态信息,帮助开发人员和运维人员更好地管理分布式爬虫系统。
相关文章:
【Python爬虫(39)】掌控全局:分布式爬虫的任务管理与监控之道
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
输入框元素覆盖冲突
后端响应中的 "trainingKbGroupName": "基础死型" 通过searchForm2.initFormData(rowData[0]);操作会把基础死型四个字填充到<div class"col-sm-5 form-group"> <label class"col-sm-3 control-label">知识点分组名称<…...
R语言学习笔记——确定指标权重:层次分析法/熵权法/CRITIC方法
本文介绍使用R语言确定指标权重的方法,包括:层次分析法、熵权法和CRITIC方法,内容包含了逆向指标正向化处理。 1、层次分析法 #######层次分析法###### ###几何平均法求权重 options(digits 2) library(tidyverse)macro <- tibble(x1c(…...
前端面试之Box盒子布局:核心知识与实战解析
目录 引言:布局能力决定前端高度 一、盒模型基础:看得见的像素战争 1. 标准盒模型 vs IE盒模型 2. 核心组成公式 3. 视觉格式化模型 二、传统布局三剑客 1. 浮动布局(Float Layout) 2. 定位布局(Position Layou…...
前端VUE+后端uwsgi 环境搭建
1整体架构 请求流程the web clinet--the web server->the socket->uwsgi--django 第一级的nginx并不是必须的,uwsgi完全可以完成整个的和浏览器交互的流程;在nginx上加上安全性或其他的限制,可以达到保护程序的作用;uWSGI本…...
保姆级! 本地部署DeepSeek-R1大模型 安装Ollama Api 后,Postman本地调用 deepseek
要在Postman中访问Ollama API并调用DeepSeek模型,你需要遵循以下步骤。首先,确保你有一个有效的Ollama服务器实例运行中,并且DeepSeek模型已经被加载。 可以参考我的这篇博客 保姆级!使用Ollama本地部署DeepSeek-R1大模型 并java…...
【python】pip命令合集
文章目录 1. 包安装与卸载2. 依赖管理与文件操作3. 包下载与构建4. 配置与缓存管理5. 高级调试与日志6. 虚拟环境集成7. 哈希验证与安全8. 实验性功能(可能不稳定)9. 其他实用命令参数大全(全局常用参数)示例场景 conda: 【python…...
【鸿蒙开发】第四十章 Form Kit(卡片开发服务)
目录 1 概述 1.1 卡片使用场景 1.2 服务卡片架构 1.3 亮点/特征 1.4 开发模式 1.5 与相关Kit的关系 1.6 约束限制 2 ArkTS卡片运行机制 2.1 实现原理 2.2 ArkTS卡片的优势 2.3 ArkTS卡片的约束 3 ArkTS卡片相关模块 4 ArkTS卡片开发指导 4.1 创建一个ArkTS卡片 …...
汽车自动驾驶辅助L2++是什么?
自动驾驶辅助级别有哪些? 依照SAE(SAE International,Society of Automotive Engineers国际自动机工程师学会)的标准,大致划分为6级(L0-L5): L0人工驾驶:即没有驾驶辅助…...
微信小程序消息推送解密
package com.test.main.b2b;import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.util.Arrays;/*** author * version 1.0* description: 解谜微信小…...
java项目之城市公园信息管理系统的设计与实现(源码+文档)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的城市公园信息管理系统的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 城市公园信息…...
EasyRTC:基于WebRTC与P2P技术,开启智能硬件音视频交互的全新时代
在数字化浪潮的席卷下,智能硬件已成为我们日常生活的重要组成部分,从智能家居到智能穿戴,从工业物联网到远程协作,设备间的互联互通已成为不可或缺的趋势。然而,高效、低延迟且稳定的音视频交互一直是智能硬件领域亟待…...
【前端框架】vue2和vue3的区别详细介绍
Vue 3 作为 Vue 2 的迭代版本,在性能、语法、架构设计等多个维度均有显著的变革与优化。以下详细剖析二者的区别: 响应式系统 Vue 2 实现原理:基于 Object.defineProperty() 方法实现响应式。当一个 Vue 实例创建时,Vue 会遍历…...
23.1 WebBrowser控件
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 WebBrowser控件类似于IE浏览器的文档界面(事实上IE也是使用的这个控件),它提供了显示网页及支持…...
从0-1搭建mac环境最新版
从0-1搭建mac环境 先查看自己的芯片信息 bash uname -mbash-3.2$ uname -m arm64这里是自己的型号安装brew xcode-select --install xcode-select -p /bin/zsh -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)” source /Users/lanren/.…...
Docker-技术架构演进之路
目录 一、概述 常见概念 二、架构演进 1.单机架构 2.应用数据分离架构 3.应用服务集群架构 4.读写分离 / 主从分离架构 5.引入缓存 —— 冷热分离架构 6.垂直分库 7.业务拆分 —— 微服务 8.容器化引入——容器编排架构 三、尾声 一、概述 在进行技术学习过程中&am…...
堆、优先队列、堆排序
堆: 定义: 必须是一个完全二叉树(完全二叉树:完全二叉树只允许最后一行不为满,且最后一行必须从左往右排序,最后一行元素之间不可以有间隔) 堆序性: 大根堆:每个父节点…...
C语言之宏定义
目录 前言 一、宏定义前操作 二、引用自定义.h文件 三、宏定义#define 四、对比typedef的差异 五、替换一个函数或表达式 六、嵌套宏替换 七、用宏和typedef创建一个“布尔型数据 八、定义有参数的宏 总结 前言 C语言中的宏定义是一种预处理指令,用来定义常量、函数…...
大语言模型基础
简介 AI大模型是“人工智能预训练大模型”的简称,包含了“预训练”和“大模型”两层含义,二者结合产生了一种新的人工智能模式,即模型在大规模数据集上完成了预训练后无需微调,或仅需要少量数据的微调,就能直接支撑各类应用。AI大模型主要分为三类:大语言模型、CV大模型…...
vxe-table 如何实现跟 Excel 一样的数值或金额的负数自动显示红色字体
vxe-table 如何实现跟 Excel 一样的数值或金额的负数自动显示红色字体,当输入的值为负数时,会自动显示红色字体,对于数值或者金额输入时该功能就非常有用了。 查看官网:https://vxetable.cn gitbub:https://github.co…...
Web 自动化测试提速利器:Aqua 的 Web Inspector (检查器)使用详解
Web 自动化测试提速利器:Aqua 的 Web Inspector (检查器)使用详解 前言简介一、安装二、Web Inspector 的使用2.1 获取元素定位器(Locators)2.2 将定位器添加到代码2.3 验证定位器2.4 处理 Frames (框架) 总结 前言 Je…...
23种设计模式 - 空对象模式
模式定义 空对象模式(Null Object Pattern)是一种行为型设计模式,通过用无操作的空对象替代null值,消除客户端对空值的检查,避免空指针异常。其核心是让空对象与真实对象实现相同接口,但空对象不执行实际逻…...
【mysql80 安装】mysql8.0.31 安装修改3306端口
在离线安装 MySQL 时,可以通过修改 MySQL 的配置文件来更改默认的 3306 端口。以下是具体步骤: 1、vim /etc/my.cnf 打开配置文件后,找到 [mysqld] 部分,这是 MySQL 服务的配置区域。在该部分中,找到或添加以下内容&a…...
基于eBPF的全栈可观测性系统:重新定义云原生环境诊断范式
引言:突破传统APM的性能桎梏 某头部电商平台采用eBPF重构可观测体系后,生产环境指标采集性能提升327倍:百万QPS场景下传统代理模式CPU占用达63%,而eBPF直采方案仅消耗0.9%内核资源。核心业务的全链路追踪时延从900μs降至18μs&a…...
C语言基础学习指南:从零入门到实战应用——适合零基础学习者与进阶巩固
目录 一、C语言概述与开发环境搭建 二、核心语法与数据类型 三、控制结构与运算符 四、函数与模块化编程 五、指针与内存管理 六、实践建议与资源推荐 结语 一、C语言概述与开发环境搭建 C语言是一种高效、灵活的通用编程语言,广泛应用于系统开发、嵌入式系…...
软件架构设计:架构风格
一、架构风格概述 定义 架构风格是对软件系统整体结构和组织方式的抽象描述,提供了一套通用的设计原则和模式。 作用 提高系统的可维护性、可扩展性和可复用性。帮助开发团队在设计和实现过程中保持一致性和规范性。 常见架构风格 分层架构、MVC架构、微服务架构、…...
为啥vue3设计不直接用toRefs,而是reactive+toRefs
Vue 3 设计中将 reactive 和 toRefs 结合使用而非直接使用 toRefs,主要基于以下设计考量: 1. 响应式粒度的不同需求 reactive 适用于对象整体响应式 reactive 会为整个对象创建响应式代理,自动追踪对象内部所有属性的变化。这种设计适用于需要…...
go 网络编程 websocket gorilla/websocket
在 Go 语言中,你可以使用标准库中的 net/http 包和第三方库 gorilla/websocket 来实现一个 WebSocket 服务器。gorilla/websocket 库提供了对 WebSocket 协议的高级抽象,使得处理 WebSocket 连接变得相对简单。 package mainimport ("fmt"&qu…...
【微服务】springboot远程docker进行debug调试使用详解
目录 一、前言 二、线上问题常用解决方案 2.1 微服务线上运行中常见的问题 2.2 微服务线上问题解决方案 2.3 远程debug概述 2.3.1 远程debug原理 2.3.2 远程debug优势 三、实验环境准备 3.1 搭建springboot工程 3.1.1 工程结构 3.1.2 引入基础依赖 3.1.3 添加配置文…...
CORS跨域问题常见解决办法
1.引言 在现代前端开发中,跨域资源共享(Cross-Origin Resource Sharing, CORS)是一种通过设置 HTTP 头来允许或阻止不同源之间的资源访问的机制。浏览器出于安全考虑,默认情况下会阻止跨域请求。本文将详细介绍 CORS 的工作原理、…...
并查集算法篇上期:并查集原理及实现
引入 那么我们在介绍我们并查集的原理之前,我们先来看一下并查集所应用的一个场景:那么现在我们有一个长度为n的数组,他们分别属于不同的集合,那么现在我们要查询数组当中某个元素和其他元素是否处于同一集合当中,或者…...
树莓派4基于Debian GNU/Linux 12 (Bookworm)添加多个静态ipv4网络
假设之前已经配置了 在eth0接口配置了192.168.0.100,现在要在同一接口(例如 eth0)上添加 192.168.1.100: 直接编辑 /etc/NetworkManager/system-connections/ 中相应的连接文件(该文件的文件名通常与连接名称相同&…...
「正版软件」PDF Reader - 专业 PDF 编辑阅读工具软件
PDF Reader 轻松查看、编辑、批注、转换、数字签名和管理 PDF 文件,以提高工作效率并充分利用 PDF 文档。 像专业人士一样编辑 PDF 编辑 PDF 文本 轻松添加、删除或修改 PDF 文档中的原始文本以更正错误。自定义文本属性,如颜色、字体大小、样式和粗细。…...
Python连接MySQL数据库图文教程,Python连接数据库MySQL入门教程
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1. 环境准备1.1安装 Python1.2选择开发环境1.3安装 MySQL 数据库1.4 安装 pymysql 库 2. 连接数据库3. 数据库基本操作3.1 创建数据库3.2 创建表3.3 插入数据3.…...
Websocket——心跳检测
1. 前言:为什么需要心跳机制? 在现代的实时网络应用中,保持客户端和服务端的连接稳定性是非常重要的。尤其是在长时间的网络连接中,存在一些异常情况,导致服务端无法及时感知到客户端的断开,可能造成不必要…...
量子计算驱动的金融衍生品定价革命:突破传统蒙特卡洛模拟的性能边界
引言:金融计算的算力困局 某国际投行采用128量子位处理器对亚洲期权组合定价时,其量子振幅估计算法在2.7秒内完成传统GPU集群需要68小时的计算任务。在蒙特卡洛路径模拟实验中,量子随机游走算法将10,000维衍生品的价格收敛速度提升4个数量级…...
文心智能体平台已全面接入DeepSeek模型,全部免费!
文心智能体平台已全面接入DeepSeek模型!即日起,您可以在创建智能体时,自由选择所需要的模型,欢迎大家体验。 ✅ 零成本体验:当前阶段所有用户可免费使用DeepSeek模型。 ✅ 智能适配:4款DeepSe…...
DuodooBMS源码解读之 odoo_phoenix_alarm模块
Odoo18 扩展模块声光报警器用户使用手册 一、模块概述 本扩展模块是基于 Odoo18 原生系统进行开发的,主要用于实现与上位声光报警设备的通讯功能。通过该模块,用户可以方便地向设备发送指令,控制设备的声音、灯光等操作。本手册将详细介绍该…...
docker从容器中cp到本地、cp本地到容器
在 Docker 中,你可以使用 docker cp 命令从容器中复制文件到本地主机。以下是具体步骤: 1. 查找容器 ID 或名称 首先,你需要知道容器的 ID 或名称。你可以使用以下命令列出所有正在运行的容器: docker ps 这将显示所有正在运行…...
网络工程师 (49)UDP协议
前言 UDP协议,即用户数据报协议(User Datagram Protocol),是一种无连接的、不可靠的、面向报文的传输层通信协议。 一、基本特点 无连接性:UDP在发送数据之前不需要与目标设备建立连接,也无需在数据发送结束…...
1.20作业
1 mfw(git泄露) ./git,原本以为点了链接下了index文件,就可以打开看源码,结果解析不了 老老实实用了githacker githacker --url --output 1 assert() 断言(assert)的用法 | 菜鸟教程 命令注入: /?page).system(cat ./templates/fl…...
HTML/CSS中交集选择器
1.作用:选中同时符合多个条件的元素 交集就是或的意思 2.语法:选择器1选择器2选择器3......选择器n{} 3.举例: /* 选中:类名为beauty的p元素,此种写法用的非常的多 */p.beauty{color: red;}/* 选中:类名包含rich和beauty的元素 */.rich.beauty{color: blue;} 4.注意: 1.有标签…...
迅为RK3568开发板篇Openharmony配置HDF控制UART-实操-HDF驱动配置UART-修改HCS配置
对于不同的平台,需要在对应的平台目录修改对应的 hcs 文件,接下来示例为在 rk3568下新增 uart4 uart9 uart7 的修改方法。 修改 vendor/hihope/rk3568/hdf_config/khdf/device_info/device_info.hcs 文件,device_info.hcs 中添加以下内容&…...
实时股票行情接口与WebSocket行情接口的应用
实时股票行情接口与WebSocket行情接口的应用 实时股票行情接口是量化交易和投资决策的核心工具之一,行情接口的种类和功能也在不断扩展。介绍几种常见的行情接口,包括实时股票行情接口、Level2行情接口、WebSocket行情接口以及量化行情接口,…...
k8s故障处理经典案例(Classic Case of k8s Fault Handling)
k8s故障处理经典案例 问题描述 kubernetes版本:v1.22.5 部分Pod在新版本发布后一直处于ContainerCreating状态,经过kubectl delete命令删除后一直Terminating状态。 排查过程 遇到问题先查日志 首先进入宿主机,查看三个日志,…...
关于uniApp的面试题及其答案解析
我的血液里流淌着战意!力量与智慧指引着我! 文章目录 1. 什么是uniApp?2. uniApp与原生小程序开发有什么区别?3. 如何使用uniApp实现条件编译?4. uniApp支持哪些平台,各有什么特点?5. 在uniApp中…...
给老系统做个安全检查——Burp SqlMap扫描注入漏洞
背景 在AI技术突飞猛进的今天,类似Cursor之类的工具已经能写出堪比大部分程序员水平的代码了。然而,在我们的代码世界里,仍然有不少"老骥伏枥"的系统在兢兢业业地发光发热。这些祖传系统的代码可能早已过时,架构可能岌…...
langchain系列 - FewShotPromptTemplate 少量示例
导读 环境:OpenEuler、Windows 11、WSL 2、Python 3.12.3 langchain 0.3 背景:前期忙碌的开发阶段结束,需要沉淀自己的应用知识,过一遍LangChain 时间:20250220 说明:技术梳理,针对FewShotP…...
【C语言】fgetpos函数用法介绍
目录 一、函数概述 二、核心参数与数据类型 三、典型应用场景 四、与 ftell() 的对比 五、错误处理与调试 六、进阶示例:多位置标记与恢复 七、注意事项 八、总结 fgetpos() 是C标准库中用于文件操作的关键函数之一,其核心功能是获取文件流的当前…...
《算法基础入门:最常用的算法详解与应用(持续更新实战与面试题)》
1. 排序算法 排序算法是将一组数据按特定的顺序排列起来的算法,常见的有: 冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)归并排序(Merge So…...