Electron 客户端心跳定时任务调度库调研文档 - Node.js 任务调度库技术调研文档

Electron 客户端心跳定时任务调度库调研文档 - Node.js 任务调度库技术调研文档

本文将对七个流行的定时任务调度库:node-cronrxjsbullnode-scheduleagenda、bree、cron。这些库都可以用来处理定时任务,但它们的特点和适用场景有所不同。我们将从以下几个方面进行详细对比:

  • 功能
  • 优缺点
  • 使用场景
  • 简易度
  • 下载使用量

一、node-cron

Github:https://github.com/node-cron/node-cron

1. 概述

node-cron 是一个基于 Cron 表达式的任务调度库,允许你根据 cron 表达式设置任务的执行频率。它轻量、易用,适用于大多数简单的定时任务需求。

2. 功能

  • 支持常见的 cron 表达式(分钟、小时、日、月、星期几)
  • 可以定期执行任务,支持秒级别的定时(每秒、每分钟等)
  • 支持定时任务的启动、停止和删除

3. 优点

  • 简单易用:API 简洁,快速上手,非常适合简单的定时任务需求
  • 语法清晰:使用标准的 cron 表达式来描述任务频率,易于理解和使用
  • 无外部依赖:仅依赖 cron 语法解析
  • 轻量级:适合小型项目或简单任务

4. 缺点

  • 不适合复杂任务:不支持任务的重试、失败管理等复杂场景
  • 不支持持久化:任务状态不可持久化,重启应用后任务可能丢失
  • 单进程限制:任务无法跨进程或服务器同步
  • 只能处理定时任务:如果你需要处理异步任务队列或复杂任务调度,node-cron 的能力有限

5. 使用场景

  • 定期执行简单的任务,如清理缓存、发送通知、定期同步数据等
  • 在小型应用或不需要持久化任务的场景中非常合适。

6. 简易度

  • 简单易用

7. 下载使用量

8. 示例

var cron = require('node-cron');// 每分钟执行一次
cron.schedule('* * * * *', () => {console.log('running a task every minute');
});// 每10秒执行一次任务
cron.schedule('*/10 * * * * *', () => {console.log('Running a task every 10 seconds');
});// 每天中午 12 点执行一次
cron.schedule('0 12 * * *', () => {console.log('This runs every day at 12 PM');
});// 每月 1 号执行一次
cron.schedule('0 0 1 * *', () => {console.log('This runs on the 1st day of every month');
});// 每周三和周五的下午 3 点执行
cron.schedule('0 15 * * 3,5', () => {console.log('This runs every Wednesday and Friday at 3 PM');
});// 每隔五分钟执行一次
cron.schedule('*/5 * * * *', () => {console.log('This runs every 5 minutes');
});

二、rxjs

Github:https://github.com/reactivex/rxjs

Rxjs:https://rxjs.dev/

1. 概述

Rxjs 是一个响应式编程库,主要用途是处理异步事件流。

提供了强大的操作符,用于处理事件、异步任务、定时任务等场景。

Rxjs 并非专门用于任务调度,但它可以非常高效地管理定时任务和流式数据

2. 功能

  • 支持流式数据和事件的处理,可以非常灵活地组合定时任务。
  • 提供了如 interval、timer、delay 等多个操作符来处理定时任务。
  • 强大的异步流管理,能够轻松处理复杂的定时任务和事件流。

3. 优点

  • 灵活性高:可组合操作符处理复杂逻辑
  • 处理异步流:天然支持错误处理、取消订阅、重试机制
  • 高效:能够在流式数据中处理并发,减少不必要的性能损耗

4. 缺点

  • 学习曲线较高:对于初学者来说,理解 rxjs 的概念和操作符可能需要一定的时间
  • 复杂性较高:如果只是需要简单的定时任务,使用 rxjs 可能显得过于复杂
  • 需自行封装定时逻辑

5. 使用场景

  • 当需要管理复杂的异步流、事件流,或者在一个定时任务中有多个异步操作时
  • 适合用来处理带有多个并发操作的定时任务,或者处理与用户交互相关的事件流
  • 已有 Rxjs 集成的项目,复用事件流

6. 简易度

  • 复杂

7. 下载使用量

8. 示例

import { interval } from 'rxjs';
import { switchMap } from 'rxjs/operators';// 每 10 秒执行一次任务
interval(10000).subscribe(() => {console.log('This runs every 10 seconds');
});// 每 10 秒进行一次接口请求
const heartbeat$ = interval(10000).pipe(switchMap(() => fetch('http://example.com/heartbeat'))
);
heartbeat$.subscribe(response => console.log('Heartbeat sent', response));

三、bull

Github:https://github.com/OptimalBits/bull

1. 概述

bull 是一个基于 Redis 的任务队列库,适合处理大量异步任务。它不仅支持定时任务,还支持任务的重试、延迟执行、优先级队列等。

bull 更适合用来处理生产环境中需要可靠性和高吞吐量的任务,比如在微服务架构中处理后台任务。

2. 功能

  • 支持任务队列和重试机制。
  • 支持任务优先级、延迟、重复任务等。
  • 支持任务的失败管理、事件监听等。
  • 提供后台管理界面(如果集成了 Bull Board)。

3. 优点

  • 高可靠性:基于 Redis,任务的失败、重试、延迟等都能够得到很好的管理
  • 适合高负载:处理大规模任务队列时非常有效
  • 支持定时任务:可以使用 bull 的队列系统来安排定时任务
  • 分布式支持:多进程/服务器协同,避免任务重复执行。
  • 可视化工具:可通过 bull-board 监控任务状态。
  • 更适合大企业大项目

4. 缺点

  • 依赖 Redis:需额外基础设施支持
  • 配置复杂:需管理队列、Worker 和 Redis 连接

5. 使用场景

  • 高负载、需要高可用性和高可靠性的任务调度
  • 高可靠后台任务(如支付处理、邮件批量发送)
  • 微服务架构中跨服务任务调度

6. 简易度

  • 复杂(需了解 Redis)

7. 下载使用量

8. 示例

const Queue = require('bull');
const heartbeatQueue = new Queue('heartbeat', {redis: { host: 'localhost', port: 6379 }
});
// 每 10 秒发送一次心跳
heartbeatQueue.add({}, { repeat: { every: 10000 } });// 任务重试,设置最大重试次数为 3 次
myQueue.add({}, { attempts: 3 });
myQueue.process(async (job) => {console.log('Job processing');if (Math.random() > 0.5) throw new Error('Random failure');
});// 并发执行多个任务
const myQueue = new Queue('myQueue');
myQueue.process(5, async (job) => {console.log('Processing job', job.id);
});// 任务处理优先级
myQueue.add({ foo: 'bar' }, { priority: 1 }); // 优先级 1
myQueue.add({ foo: 'baz' }, { priority: 2 }); // 优先级 2

四、node-schedule

Github:https://github.com/node-schedule/node-schedule

1. 概述

node-schedule 是一个类似于 cron 的任务调度库,它使用更自然的语法来定义定时任务,支持使用 cron 表达式和日期对象来安排任务。

2. 功能

  • 支持 cron 表达式
  • 支持更灵活的日期和时间安排
  • 可以运行单次任务,也可以周期性地运行任务

3. 优点

  • 多种调度规则:支持 cron 表达式、日期对象或递归规则(如 every 5 minutes
  • 简单易用

4. 缺点

  • 无持久化:进程重启后任务丢失
  • 没有任务队列:不支持任务队列和高可用性任务管理
  • 不适合高吞吐量的任务处理

5. 使用场景

  • 定期执行任务,特别是当任务间隔和时间调度较为复杂时,node-schedule 非常合适
  • 中小型应用或不需要复杂任务队列的场景

6. 简易度

  • 简单易用,和 node-cron 相似

7. 下载使用量

8. 示例

const schedule = require('node-schedule');
// 每10秒执行一次任务
schedule.scheduleJob('*/10 * * * * *', () => {console.log('Sending heartbeat every 10 seconds');
});// 2025 年 2 月 14 9 点半执行
const date = new Date(2025, 1, 14, 9, 30, 0);
const job = schedule.scheduleJob(date, function(){console.log('The world is going to end today.');
});// 每月 1 号执行任务
schedule.scheduleJob('0 0 1 * *', () => {console.log('This runs on the 1st day of every month');
});// 每周三和周五下午三点执行任务
schedule.scheduleJob('0 15 * * 3,5', () => {console.log('This runs every Wednesday and Friday at 3 PM');
});// 延迟执行任务
schedule.scheduleJob(new Date(Date.now() + 5000), () => {console.log('This runs 5 seconds later');
});// 每 30 分钟执行任务
schedule.scheduleJob('*/30 * * * *', () => {console.log('This runs every 30 minutes');
});

五、agenda

Github:https://github.com/agenda/agenda

1. 概述

agenda 是一个基于 MongoDB 的任务调度库,提供强大的作业调度、任务队列和失败重试机制。agenda 适合处理需要高可靠性、任务队列、延迟执行和定期任务的复杂场景。

支持持久化和分布式任务。适合需要持久化任务和分布式调度的场景,比如在多个实例中运行任务,避免重复执行。配置起来可能需要设置MongoDB。

2. 功能

  • 支持任务的定时执行、延迟执行、优先级、失败重试等
  • 可以存储任务状态到 MongoDB,并提供任务的执行历史
  • 支持任务的调度、取消和重试

3. 优点

  • 高可靠性:任务的状态和调度信息存储在 MongoDB 中,可以持久化任务的状态
  • 强大的功能:支持复杂的任务队列、高吞吐量的任务处理、失败重试机制、并发控制等
  • 灵活的任务调度:支持 cron、定时和延迟任务调度
  • 持久化与分布式:任务存储在 MongoDB,支持多实例协同

4. 缺点

  • 依赖 MongoDB:需维护数据库连接
  • 性能瓶颈:高频率任务可能受数据库性能影响
  • 比较复杂

5. 使用场景

  • 需要持久化但无需复杂队列的中型应用(如定时数据同步)
  • 已有 MongoDB 基础设施的项目

6. 简易度

  • 比较复杂(需 MongoDB)

7. 下载使用量

8. 示例

const { Agenda } = require('agenda');
const mongoose = require('mongoose');// 连接到 MongoDB
mongoose.connect('mongodb://localhost/agenda-example', {useNewUrlParser: true,useUnifiedTopology: true,
});const agenda = new Agenda({ db: { address: 'mongodb://localhost/agenda-example' } });agenda.on('ready', () => {console.log('Agenda is ready!');agenda.start();
});// 创建一个任务
agenda.define('send heartbeat', async job => {console.log('Sending heartbeat...');try {// 模拟发送 HTTP 请求// 例如 fetch 或 axios// const response = await fetch('http://example.com/heartbeat');// if (!response.ok) throw new Error('Heartbeat failed');} catch (err) {console.error('Error in heartbeat task:', err);// 任务失败后处理逻辑throw err;}
});// 创建定时任务,每 10 秒执行一次
agenda.every('10 seconds', 'send heartbeat');
// 任务延迟执行
agenda.schedule('in 10 minutes', 'send heartbeat');// 控制任务
agenda.stop();  // 停止所有任务调度
agenda.cancel({ name: 'send heartbeat' });  // 取消心跳任务

六、bree

Github:https://github.com/breejs/bree

1. 概述

bree 是一个高效的 JavaScript 和 TypeScript 工作调度库。它是一个现代化的任务调度库,特别适合需要使用多线程和调度背景任务的应用。

bree 的调度系统支持 cron 表达式,并且内置了多任务调度功能。

2. 功能

  • 支持 cron 表达式来设置任务
  • 支持并行执行任务和延迟任务
  • 内置任务状态监控和日志功能
  • 支持多进程处理(通过 worker threads)

3. 优点

  • 支持多线程和并行任务,适用于处理大量并发任务
  • 高效:能够高效地管理大规模的任务调度
  • 易集成:支持 Node.js 和 TypeScript 项目,易于集成
  • 任务状态:提供任务的状态和日志管理

4. 缺点

  • 依赖较重:相较于 node-cron,bree 对于简单的定时任务来说过于复杂
  • 任务队列:与 bull 等任务队列系统相比,bree 可能不具备任务队列和重试机制

5. 使用场景

  • 高并发的任务调度,尤其是需要使用多线程处理任务的场景
  • 需要任务监控、日志记录和多进程任务调度的场景

6. 简易度

  • 中等

7. 下载使用量

8. 示例

const Bree = require('bree');
// 每 10 秒执行一次任务
const bree = new Bree({jobs: [{name: 'heartbeat',interval: '10s'}]
});
bree.start();// 监听任务状态
const bree = new Bree({jobs: [{name: 'heartbeat',interval: '10s',onComplete: () => {console.log('Heartbeat job completed');}}]
});bree.start();// 并行处理任务
const bree = new Bree({jobs: [{ name: 'task1', interval: '5s' },{ name: 'task2', interval: '5s' }]
});bree.start();// 任务暂停与继续
const bree = new Bree({jobs: [{ name: 'heartbeat', interval: '10s' }]
});bree.start();
bree.stop('heartbeat'); // 停止任务
bree.start('heartbeat'); // 继续任务

七、cron

Github:https://github.com/kelektiv/node-cron

1. 概述

cron 是一个基于 cron 表达式的任务调度库,功能简单、直接。它可以帮助开发者基于 cron 表达式执行任务,适合于需要定时任务调度的场景。

2. 功能

  • 支持 cron 表达式调度任务
  • 任务失败时可以重试
  • 支持并行执行任务
  • 支持任务暂停和删除

3. 优点

  • 简单易用:语法与 node-cron 相似,使用起来非常直观
  • 灵活:支持自定义的 cron 表达式和多种调度方式
  • 定时任务控制:支持暂停、删除等任务管理功能

4. 缺点

  • 功能相对较少:相比于 bull 和 agenda,不支持队列、重试和失败管理等复杂任务调度功能
  • 性能问题:处理大量复杂任务时,可能会遇到性能瓶颈

5. 使用场景

  • 用于简单的定时任务调度,适合需要标准 cron 表达式来调度任务的场景
  • 不需要复杂任务队列或失败重试的场景

6. 简易度

  • 简单易用,API 与 node-cron 相似,适合快速上手

7. 下载使用量

8. 示例

const cron = require('cron');
// 每 10 秒执行一次任务
const job = new cron.CronJob('*/10 * * * * *', () => {console.log('Heartbeat sent');
});
job.start();// 每分钟执行一次
const job = new cron.CronJob('* * * * *', () => {console.log('This runs every minute');
});
job.start();// 每天中午 12 点执行任务
const job = new cron.CronJob('0 12 * * *', () => {console.log('This runs every day at 12 PM');
});
job.start();// 每周三和周五中午 12 点执行任务
const job = new cron.CronJob('0 12 * * 3,5', () => {console.log('This runs every Wednesday and Friday at 3 PM');
});
job.start();// 凌晨执行任务
const job = new cron.CronJob('0 0 0 * *', () => {console.log('This runs every midnight');
});
job.start();

八、总结

1. 总结

优点缺点使用场景依赖项简易度维护状态
node-cron轻量、易用、支持 cron 表达式、语法清晰只支持简单的定时任务,不支持复杂任务队列、重试等功能简单的定时任务调度、定期执行任务(如每小时、每天等)活跃,常用且广泛支持
rxjs强大的异步流管理、灵活、可以结合其他任务调度和事件流学习曲线陡峭、复杂性较高,可能对于简单定时任务显得过于复杂复杂的异步任务处理、多任务流管理、事件流和定时任务组合活跃,广泛应用于多种异步任务管理
bull高可靠性、任务队列、任务重试、延迟、优先级、任务状态持久化需要 Redis 支持、配置和部署较为复杂高并发任务处理、任务队列管理、需要持久化和重试机制的任务Redis活跃,适用于大规模任务调度
node-schedule支持复杂的日期和时间规则、灵活、支持定时和基于日期的调度不支持任务队列管理、无法处理高负载任务复杂的定时任务调度、日期时间规则复杂的任务调度活跃,广泛用于复杂的调度需求
agenda支持任务队列、失败重试、优先级、持久化任务、灵活的作业调度需要 MongoDB、配置较为复杂需要高可用、高可靠任务调度的场景、任务队列和任务失败重试的任务MongoDB活跃,适用于高负载和任务队列管理
bree高并发任务、多线程支持、作业状态管理、任务日志、灵活的任务调度配置较复杂、任务管理较重、适合大规模任务多线程任务、高并发任务、需要日志和状态监控的场景活跃,适合并行处理和高并发任务
cron简单、易用、支持 cron 表达式,轻量、配置少不支持复杂任务队列管理、任务重试等功能简单的定时任务调度,适合需要基于 cron 的调度场景活跃,广泛应用于简单任务调度

2. 项目选型

2.1. 简单任务调度:
  • 如果你的任务调度需求非常简单,可以选择 node-cron 或 cron。它们提供了轻量且易用的 API,适用于基于 cron 表达式的常规任务调度
2.2. 复杂的异步任务和事件流:
  • rxjs 是最佳选择,特别是当你需要处理事件流、异步操作以及定时任务时,rxjs 的流式处理能力非常强大
2.3. 高负载和任务队列:
  • bull 和 agenda 适用于高负载场景,支持任务队列、失败重试、延迟任务等复杂需求。如果你需要高可靠性和任务管理,选择 bull
  • agenda 适合需要任务持久化和失败重试的高并发任务
2.4. 灵活和自定义调度:
  • node-schedule 适合需要灵活调度和复杂规则的任务,尤其是当你需要根据特定日期或时间来调度任务时,选择 node-schedule
2.5. 高并发和多线程处理:
  • bree 是一个强大的任务调度库,适用于需要高并发、多线程处理的场景。它在任务管理和调度方面提供了更多的功能,适合大规模任务处理

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

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

相关文章

驱动开发系列37 - Linux Graphics 2D 绘制流程(二)- 画布创建和窗口关联

一:概述 前面介绍Pixmap表示一块画布,是绘制发生的地方,本节看看驱动程序如何为画布分配内存/显存,以及如何与窗口关联的。 二:为画布分配BO 在系统启动时(用户登录系统之后,会重启Xorg),在 Xorg 服务器初始化时,要为屏幕创建根窗口的 Pixmap,并绑定到 GPU framebu…

Numpy简易入门

1.1 认识Numpy数组对象 1.1.1 导入NumPy工具包 #导包并起别名为np import numpy as np1.1.2 创建一个三行五列的数组 data np.arange(15).reshap(3, 5)打印结果&#xff1a; 1.1.3 查询data类型 print(type(data))打印结果&#xff1a; <class numpy.ndarray> nda…

【设计模式】【行为型模式】访问者模式(Visitor)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f44d; 欢迎点赞、收藏、关注&#xff0c;跟上我的更新节奏 &#x1f3b5; 当你的天空突…

建筑兔零基础自学python记录22|实战人脸识别项目——视频人脸识别(下)11

这次我们继续解读代码&#xff0c;我们主要来看下面两个部分&#xff1b; 至于人脸识别成功的要点我们在最后总结~ 具体代码学习&#xff1a; #定义人脸名称 def name():#预学习照片存放位置path M:/python/workspace/PythonProject/face/imagePaths[os.path.join(path,f) f…

源代码防泄密沙箱是啥意思?

SDC沙盒通过多种技术手段实现环境隔离&#xff0c;从而有效防止数据泄露。以下是其具体的隔离机制&#xff1a; 1. 创建隔离的加密沙盒 SDC沙盒在员工电脑上虚拟出一个对外隔绝的加密沙盒。这个沙盒会主动与服务器进行认证对接&#xff0c;形成服务器-客户端沙盒这样一个涉密…

【复现DeepSeek-R1之Open R1实战】系列4:SFT和GRPO源码逐行深度解析(上)(3万字长文,从零开始到入门,包含详细的拓展基础知识)

目录 1 前言1.1 Open R1项目简介1.2 主要步骤1.3 原理图 2 基础知识2.1 Vocabulary和Tokenizer2.1.1 vocab.json, tokenizer.json, tokenizer_config.json2.1.2 什么是tokenizer2.1.3 在哪一步将tokenizer转成embedding2.1.4 tokenizer的代码实现 2.2 SFT和GRPO2.2.1 SFT2.2.2 …

课题推荐:高空长航无人机多源信息高精度融合导航技术研究

高空长航无人机多源信息高精度融合导航技术的研究&#xff0c;具有重要的理论意义与应用价值。通过深入研究多源信息融合技术&#xff0c;可以有效提升无人机在高空复杂环境下的导航能力&#xff0c;为无人机的广泛应用提供强有力的技术支持。希望该课题能够得到重视和支持&…

python_excel批量插入图片

提取excel的指定列的值的后4位&#xff08;数值&#xff09;&#xff0c;在其它列名的单元格中&#xff0c;批量嵌入与该数值匹配的图片&#xff08;未实现居中&#xff09;&#xff0c;每间隔4行处理一次&#xff08;合并过单元格&#xff09;。 import pandas as pd from ope…

DeepSeek 助力 Vue 开发:打造丝滑的颜色选择器(Color Picker)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

Jenkinsdebug:遇到ERROR: unable to select packages:怎么处理

报错信息&#xff1a; 报错信息解释&#xff1a; musl-1.2.5-r0 和 musl-dev-1.2.5-r1: 这里说明 musl-dev 需要一个特定版本的 musl&#xff0c;即 musl1.2.5-r1&#xff0c;但是当前版本的 musl&#xff08;1.2.5-r0&#xff09;并不满足这个条件。版本冲突: 当尝试安装新…

并查集基础+优化(下标从0开始)

#include<iostream> #include<algorithm> #include<vector> using namespace std; const int N 1e510; int n,m; int fa[N]; void set(int u,int v) {fa[v] u; } int find(int arr[],int i) {while(arr[i] ! -1){i arr[i]; } return i;//返回的是这个节点…

STM32创建静态库lib

创建静态库lib 1. 新建工程1.1 创建工程文件夹1.2 编写用户相关代码1.2.1 stm32f4xx_it.h1.2.2 stm32f4xx_it.c1.2.3 标准库配置&#xff1a;stm32f4xx_conf.h1.2.4 HAL库的配置&#xff1a;stm32f4xx_hal_conf.h1.2.5 LL库配置&#xff1a;stm32f4xx_ll_conf.h 1.3 移植通用文…

CV -- 基于GPU版显卡CUDA环境+Pycharm YOLOv8 检测

目录 下载 CUDA 下载 cuDNN 下载 anaconda 安装 PyTorch pycharm 搭配 yolo 环境并运行 阅读本文须知&#xff0c;需要电脑中有 Nvidia 显卡 下载 CUDA 打开 cmd &#xff0c;输入 nvidia-smi &#xff0c;查看电脑支持 CUDA 版本&#xff1a; 我这里是12.0&#xff0c;进入…

MATLAB图像处理:图像分割方法

图像分割将图像划分为具有特定意义的子区域&#xff0c;是目标检测、医学影像分析、自动驾驶等领域的核心预处理步骤。本文讲解阈值分割、边缘检测、区域生长、聚类分割、基于图的方法等经典与前沿技术&#xff0c;提供MATLAB代码实现。 目录 1. 图像分割基础 2. 经典分割方…

海康摄像头IPV6模式,手动,自动,路由公告

海康摄像头DS-2DC7220IW-A 网络设置中的IPv6配置选项。IPv6是互联网协议&#xff08;IP&#xff09;的第六版&#xff0c;用于替代IPv4&#xff0c;提供更多的IP地址和改进的网络功能。图片中的选项允许用户选择如何配置设备的IPv6网络连接&#xff1a; 手动&#xff1a;用户可…

NewMap10.3土地勘测定界自动化系统

“NewMap报件通”适用于建设项目用地土地勘测定界工作&#xff0c;其设计理念是以最大化提高作业效率与最简化作业员操作为原则&#xff0c;后台采用数据库管理技术&#xff0c;以“GIS概念”实现了图形数据与属性数据的双向联动&#xff0c;利用该系统可以方便快捷地绘制数字化…

栈(典型算法思想)—— OJ例题算法解析思路

目录 一、1047. 删除字符串中的所有相邻重复项 - 力扣&#xff08;LeetCode&#xff09; 算法代码&#xff1a; 1. 初始化结果字符串 2. 遍历输入字符串 3. 检查和处理字符 4. 返回结果 总结 二、844. 比较含退格的字符串 - 力扣&#xff08;LeetCode&#xff09; 算…

Qt中基于开源库QRencode生成二维码(附工程源码链接)

目录 1.QRencode简介 2.编译qrencode 3.在Qt中直接使用QRencode源码 3.1.添加源码 3.2.用字符串生成二维码 3.3.用二进制数据生成二维码 3.4.界面设计 3.5.效果展示 4.注意事项 5.源码下载 1.QRencode简介 QRencode是一个开源的库&#xff0c;专门用于生成二维码&…

字符串哈希动态规划_6

一.字符串哈希 字符串哈希概述 字符串哈希是一种将字符串映射到一个数值的技术&#xff0c;常用于处理字符串相关的算法问题&#xff0c;尤其在处理字符串匹配、子串查找等问题时非常高效。它的核心思想是利用一个哈希函数将字符串映射成一个整数&#xff0c;并根据该整数来判…

Kubernetes控制平面组件:Kubernetes如何使用etcd

云原生学习路线导航页&#xff08;持续更新中&#xff09; kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计&#xff08;一&#xff09;Kubernetes架构原则和对象设计&#xff08;二&#xff09;Kubernetes架构原则和对象设计&#xff08;三&#xff09;Kubernetes控…