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.pswp.cn/news/895705.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895705.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895705.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DeepSeek 開放平臺無法充值 改用其他平臺API調用DeepSeek-chat模型方法

近幾天DeepSeek開放平臺無法充值目前已經關閉狀態,大家都是忙著接入DeepSeek模型 ,很多人想使用DeepSeek怎么辦? 當然還有改用其他平臺API調用方法,本文以本站的提供chatgpt系統為例,如何修改DeepSeek-chat模型API接口…

pix2text 使用經驗

給同行打雞血 😊 構建結構化的數理領域知識庫: 提高可訪問性和可搜索性 Markdown和LaTeX格式:這兩種格式易于在線發布和共享,有助于提高數學內容的可訪問性。搜索引擎優化:將PDF內容轉換為標記語言,可以…

Linux(centos)系統安裝部署MySQL8.0數據庫(GLIBC版本)

安裝前檢查服務器glibc版本,下載對應版本包 rpm -qa | grep glibc mysql安裝包及依賴包已整理好,下載地址:https://pan.quark.cn/s/3137acc814c0,下載即可安裝 一、下載MySQL mysql安裝包及依賴包已整理好,下載地址…

6.2.圖的存儲結構-鄰接矩陣法

一.鄰接矩陣法存儲不帶權圖: 結點不帶權值: 1.左圖的無向圖中,A到B直達的有一條路,所以A行B列的值為1; 左圖的無向圖中,A到F沒有直達的路,所以A行F列的值為0; 結論:無…

【VB語言】EXCEL中VB宏的應用

【VB語言】EXCEL中VB宏的應用 文章目錄 [TOC](文章目錄) 前言一、EXCEL-VB1.實驗過程2.代碼 二、EXCEL-VB 生成.c.h文件1.實驗過程2.代碼 四、參考資料總結 前言 1.WPS-VB擴展包 提示:以下是本篇文章正文內容,下面案例可供參考 一、EXCEL-VB 1.實驗過…

用deepseek學大模型05邏輯回歸

deepseek.com:邏輯回歸的目標函數,損失函數,梯度下降 標量和矩陣形式的數學推導,pytorch真實能跑的代碼案例以及模型,數據,預測結果的可視化展示, 模型應用場景和優缺點,及如何改進解決及改進方法數據推導。…

2025年02月17日Github流行趨勢

項目名稱:OmniParser 項目地址url:https://github.com/microsoft/OmniParser 項目語言:Jupyter Notebook 歷史star數:8971 今日star數:969 項目維護者:yadong-lu, ThomasDh-C, aliencaocao, nmstoker, kris…

RocketMQ 5.0安裝部署

0.前言 在微服務架構逐漸成為主流的今天,消息隊列如同數字世界的快遞員,承擔著系統間高效通信的重要使命。 Apache RocketMQ 自誕生以來,因其架構簡單、業務功能豐富、具備極強可擴展性等特點被眾多企業開發者以及云廠商廣泛采用。歷經十余…

Ubuntu 22.04.5 LTS 安裝企業微信,(2025-02-17安裝可行)

一、依賴包(Ubuntu 20.04/Debian 11) 點擊下載https://www.spark-app.store/download_dependencies_latest 1、 下載最新的依賴包。 請訪問星火應用商店依賴包下載頁面, 下載最新的依賴包。2、解壓依賴包 </

如何使用 HPjtune 分析 Java GC 日志并優化 JVM 性能

HPjtune 是一款用于分析 Java 應用程序垃圾回收&#xff08;GC&#xff09;日志的工具&#xff0c;主要用于優化 JVM 性能。雖然 HPjtune 本身并不直接生成 HTML 格式的報告&#xff0c;但可以通過結合其他工具或方法將分析結果導出為 HTML 格式。以下是實現這一目標的步驟和方…

國產FPGA開發板選擇

FPGA開發板是學習和開發FPGA的重要工具&#xff0c;選擇合適的開發板對學習效果和開發效率至關重要。隨著國產FPGA的發展&#xff0c;淘寶上的許多FPGA開發板店鋪也開始進行國產FPGA的設計和銷售&#xff0c;本文將對國產FPGA和相關店鋪做個簡單梳理&#xff0c;幫助有需要使用…

Java高頻面試之SE-22

hello啊&#xff0c;各位觀眾姥爺們&#xff01;&#xff01;&#xff01;本baby今天又來了&#xff01;哈哈哈哈哈嗝&#x1f436; Java中的Optional了解多少&#xff1f; 在 Java 中&#xff0c;Optional 是 Java 8 引入的一個容器類&#xff0c;用于顯式處理可能為 null 的…

使用OBS和nginx實現直播流

使用OBS和nginx實現直播流&#xff0c;如 1&#xff0c;下載OBS OBS用于視頻錄制和直播的免費開源軟件。在 Windows、Mac 或 Linux 上快速輕松地下載并開始流式傳輸。官網下載 2&#xff0c;下載nginx 注意nginx需要下載帶gryghon版本&#xff0c;這個才有rtmp模塊&#xff0…

PyTorch 源碼學習:閱讀經驗 代碼結構

分享自己在學習 PyTorch 源碼時閱讀過的資料。本文重點關注閱讀 PyTorch 源碼的經驗和 PyTorch 的代碼結構。因為 PyTorch 不同版本的源碼實現有所不同&#xff0c;所以筆者在整理資料時盡可能按版本號升序&#xff0c;版本號見標題前[]。最新版本的源碼實現還請查看 PyTorch 倉…

python實現jaccard系數得出兩個集合的相似度

python實現jaccard系數得出兩個集合的相似度 1、簡介 計算兩個集合之間的Jaccard系數是一種常用的方法,用于衡量這兩個集合的相似度。 Jaccard系數定義為兩個集合交集大小與它們并集大小的比值。 Jaccard 系數的值范圍在 0 到 1 之間,值越大表示兩個集合越相似。 2、求兩個…

小愛音箱控制手機和電視聽歌的嘗試

最近買了小愛音箱pro&#xff0c;老婆讓我扔了&#xff0c;吃灰多年的舊音箱。當然舍不得&#xff0c;比小愛還貴&#xff0c;剛好還有一臺紅米手機&#xff0c;能插音箱&#xff0c;為了讓音箱更加靈活&#xff0c;買了個2元的藍牙接收模塊Type-c供電3.5接口。這就是本次嘗試起…

Pycharm+CodeGPT+Ollama+Deepseek

首先&#xff0c;體驗截圖&#xff1a; 接著&#xff1a; 1、下載Ollama&#xff1a; Download Ollama on macOS 2、下載模型 以1.5b為例&#xff0c;打開命令行&#xff0c;輸入: ollama run deepseek-r1:1.5b 3、Pycharm安裝Code GPT插件 打開PyCharm&#xff0c;找到文…

如何確保 for...in 循環按照特定順序遍歷對象屬性

由于 for...in 循環遍歷對象屬性的順序在 ECMAScript 規范中沒有嚴格規定&#xff0c;若要確保按照特定順序遍歷對象屬性&#xff0c;不能直接依賴 for...in 本身&#xff0c;不過可以借助一些其他方法來實現。以下是幾種常見的解決方案&#xff1a; 1. 使用數組存儲屬性名并排…

25/2/17 <嵌入式筆記> 桌寵代碼解析

這個寒假跟著做了一個開源的桌寵&#xff0c;我們來解析下代碼&#xff0c;加深理解。 代碼中有開源作者的名字。可以去B站搜著跟著做。 首先看下main代碼 #include "stm32f10x.h" // Device header #include "Delay.h" #include &quo…

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;專門用于生成二維碼&…