C++ 之 【list的简介、list 的构造函数、iterator、容量操作、元素访问、增删查改与迭代器失效】
目录
1.list的介绍
2.list的使用
2.1 构造函数
2.2 iterator 的使用
2.3 容量操作
2.4 元素访问
2.5 增删查改
2.5.1头插头删与尾插尾删
2.5.2 insert 、erase 函数
2.5.3 clear、swap函数
2.5.4 关于find函数
3.迭代器失效
1.list的介绍
(1)list的底层通常实现为带头双向循环链表,支持在任意位置插入、删除
(2)链表中,每个节点包含:一个存储数据的变量和指向前后两个节点的指针
假设节点存储的是int型的数据,则结构如下:
2.list的使用
详细了解请参考文档list - C++ Reference
下面只介绍一些常见接口:
2.1 构造函数
std::list() | 默认构造函数,创建一个空链表。 | std::list<int> l1; |
| 创建一个包含 n 个元素的链表,所有元素初始化为 val 。 | std::list<int> l3(3, 10); → {10, 10, 10} |
template<class InputIt>
| 使用迭代器范围 [first, last) 初始化链表(拷贝范围内的元素)。 | std::list<int> l4(v.begin(), v.end()); (假设 v 是 {1, 2, 3} ) |
std::list(const list& other) | 拷贝构造函数,创建一个与 other 内容相同的链表(深拷贝)。 | std::list<int> l5(l4); (l5 内容与 l4 相同) |
2.2 iterator 的使用
begin() | 返回指向链表第一个元素的迭代器(若链表为空,返回 end() )。 | 正向遍历链表、插入/删除头部元素、作为范围循环的起点。 | ||
end() | 返回指向链表尾后位置的迭代器(不指向任何有效元素,仅用于比较)。 | 标记遍历结束位置、作为范围循环的终点、检查链表是否为空(l.begin() == l.end() )。 | ||
rbegin() | 返回指向链表最后一个元素的反向迭代器(逻辑上为链表的“反向开头”)。 | 反向遍历链表、从末尾开始处理元素。 | ||
rend() | 返回指向链表“反向尾后”位置的迭代器(逻辑上为链表的“反向末尾”)。 | 标记反向遍历结束位置、作为反向范围循环的终点。 |
假设链表被实现为 带头双向循环链表,则迭代器示意如下
总结:
1. begin与end为正向迭代器,对迭代器执行++操作,迭代器向后移动
2. rbegin与rend为反向迭代器,对迭代器执行++操作,迭代器向前移动
2.3 容量操作
empty() | bool | 检查链表是否为空(无元素) | if (l.empty()) { std::cout << "链表为空!"; } | ||
size() | size_type | 返回链表中元素的数量(类型为 std::size_t ) | std::cout << "链表大小: " << l.size(); |
2.4 元素访问
front() | 返回链表第一个元素的引用 (可修改或读取)。 |
或 | ||||
back() | 返回链表最后一个元素的引用 (可修改或读取)。 |
或 |
2.5 增删查改
2.5.1头插头删与尾插尾删
void push_front(const T& value); | 在链表头部插入元素 | lt.push_front(1); | ||||||
void pop_front(); | 删除链表头部元素。 | lt.pop_front(); | ||||||
void push_back(const T& value); | 在链表尾部插入元素 | lt.push_back(1); | ||||||
void pop_back(); | 删除链表尾部元素。 | lt.pop_back(); |
pop_front使begin()迭代器失效,pop_back使end()迭代器失效
其余的不失效
2.5.2 insert 、erase 函数
insert | 在指定位置 pos 前插入元素(支持单元素、重复元素、范围插入) | 返回指向新插入元素的迭代器(对单元素插入) | 原有迭代器不失效 | |||||
erase | 删除指定位置或范围的元素(支持单元素删除、范围删除) | 返回指向被删除元素后一个位置的迭代器。 | 使被删除元素的迭代器失效 |
void test1(){std::list<int> lst = {1, 2, 3, 4, 5};// 1. 单元素插入(在第二个位置插入 99)auto it = lst.begin();// 手动移动迭代器到第二个位置++it;auto insert_it = lst.insert(it, 99); // 在 it 前插入 99std::cout << "After single insert: ";for (int x : lst) {std::cout << x << " "; // 输出: 1 99 2 3 4 5}std::cout << "\nInserted element: " << *insert_it << std::endl; // 输出: 99// 2. 范围插入(在第三个位置插入数组 {5, 6, 7})int arr[3] = {5, 6, 7};auto range_it = lst.begin();// 手动移动迭代器到第三个位置for(int i = 0; i < 3; ++i){++range_it;}lst.insert(range_it, arr, arr + 3); // 插入数组std::cout << "After range insert: ";for (int x : lst) {std::cout << x << " "; // 输出: 1 99 2 5 6 7 3 4 5}// 3. 填充插入(在末尾插入 3 个 0)lst.insert(lst.end(), 3, 0); // 末尾插入 3 个 0std::cout << "\nAfter fill insert: ";for (int x : lst) {std::cout << x << " ";// 输出: 1 99 2 5 6 7 3 4 5 0 0 0}// 1. 单元素删除(删除值为 99 的元素)auto delete_it = std::find(lst.begin(), lst.end(), 99); // 查找元素if (delete_it != lst.end()) {auto next_it = lst.erase(delete_it); // 删除并返回下一个元素的迭代器std::cout << "After single erase: ";for (int x : lst) {std::cout << x << " "; // 输出: 1 2 5 6 7 3 4 5 0 0 0}std::cout << "\nNext element after erase: " << *next_it << std::endl; // 输出: 2}// 2. 范围删除(删除从第二个到第四个元素)auto start_it = lst.begin();// 手动移动迭代器到第二个位置for (int i = 0; i < 1 && start_it != lst.end(); ++i, ++start_it);auto end_it = lst.begin();// 手动移动迭代器到第五个位置for (int i = 0; i < 4 && end_it != lst.end(); ++i, ++end_it);lst.erase(start_it, end_it); // 删除 [start_it, end_it) 范围内的元素std::cout << "After range erase: ";for (int x : lst) std::cout << x << " "; // 输出: 1 3 4 5 0 0 0// 3. 边界条件:删除 end() 会导致未定义行为// lst.erase(lst.end()); // 错误:不能删除 end()
}
2.5.3 clear、swap函数
void swap(list& other); | 交换当前链表与 other 链表的所有元素(包括大小、节点和迭代器有效性) | other :待交换的另一个 std::list 对象 | 交换后,原链表的迭代器指向 other 的元素,反之亦然; | |||||
void clear(); | 删除链表中的所有元素,释放所有节点内存 | 所有迭代器/引用失效 (链表变为空) |
虽然使用swap函数后,原链表的迭代器指向
other
的元素,反之亦然,但是开发者不要依赖交换后的迭代器/引用(除非明确知道它们指向另一个链表)
以避免潜在的逻辑错误和未定义行为
2.5.4 关于find函数
std::list 无find成员函数,调用标准库中的find函数即可
3.迭代器失效
操作 | 失效的 迭代器/指针/引用类型 | 失效原因 | 避免失效的方法 | |
---|---|---|---|---|
insert | 不失效(插入位置及之前的迭代器、指针、引用 均有效) | std::list 是双向链表,插入操作仅修改相邻节点的指针,不移动现有节点,所以不失效 | 无需特殊处理,直接使用插入后的迭代器继续操作。 | |
erase | 仅失效被删除节点的迭代器、指针、引用 | erase 会释放被删除节点的内存,导致指向该节点的迭代器/指针/引用失效。 | 删除前保存下一个节点的迭代器(如 ( | |
clear | 所有迭代器、指针、引用均失效 | clear 会释放链表中所有节点的内存,导致所有迭代器/指针/引用失效。 | 清空后通过 begin() /end() 重新获取迭代器,避免使用旧迭代器。 | |
swap | 所有迭代器、指针、引用失效(除非交换同一链表) | 交换后,原链表的迭代器指向 other 的元素,反之亦然。逻辑上所有迭代器失效(内容所属链表已改变)。 | 交换后通过 begin() /end() 重新获取迭代器,避免依赖交换后的迭代器。 |
相关文章:
C++ 之 【list的简介、list 的构造函数、iterator、容量操作、元素访问、增删查改与迭代器失效】
目录 1.list的介绍 2.list的使用 2.1 构造函数 2.2 iterator 的使用 2.3 容量操作 2.4 元素访问 2.5 增删查改 2.5.1头插头删与尾插尾删 2.5.2 insert 、erase 函数 2.5.3 clear、swap函数 2.5.4 关于find函数 3.迭代器失效 1.list的介绍 (1)list的底层通常实现为带…...
使用手机录制rosbag包
文章目录 简介录制工具录制步骤录制设置设置IMU录制频率设置相机分辨率拍照模式录制模式数据制作获取数据数据转为rosbag查看rosbag简介 ROS数据包(rosbag)是ROS系统中用于记录和回放传感器数据的重要工具,通常用于算法调试、系统测试和数据采集。传统上,rosbag依赖于ROS环…...
使用阿里云 CDN 保护网站真实 IP:完整配置指南
使用阿里云 CDN 保护网站真实 IP:完整配置指南 一、宝塔面板准备工作1. 确认网站部署状态2. 宝塔中检查网站配置 二、配置阿里云 CDN1. 添加域名到 CDN2. 配置 DNS 解析3. 配置成功确认 三、宝塔面板安全加固(隐藏 IP 的关键步骤)1. 禁止通过…...
JAVA-StringBuilder使用方法
JAVA-StringBuilder使用方法 常用方法 append(Object obj) 追加内容到末尾 sb.append(" World"); insert(int offset, Object obj) 在指定位置插入内容 sb.insert(5, “Java”); delete(int start, int end) 删除指定范围的字符 sb.delete(0, 5); replace(int start…...
Milvus(9):字符串字段、数字字段
1 字符串字段 在 Milvus 中,VARCHAR 是用于存储字符串数据的数据类型。定义VARCHAR 字段时,有两个参数是必须的: 将datatype 设置为DataType.VARCHAR 。指定max_length ,它定义了VARCHAR 字段可存储的最大字符数。max_length 的有…...
locust压力测试
安装 pip install locust验证是否安装成功 locust -V使用 网上的教程基本上是前几年的,locust已经更新了好几个版本,有点过时了,在此做一个总结 启动 默认是使用浏览器进行设置的 # 使用浏览器 locust -f .\main.py其他参数 Usage: locust […...
Uniapp:showLoading(等待加载)
目录 一、出现场景二、效果展示三、具体使用一、出现场景 在项目的开发中,我们经常会请求后台接口返回数据,但是每一个接口返回数据的时间不一致,有的快,有的慢,这个时候如果不加一个遮罩层,接口返回慢的时候,非常影响用户体验 二、效果展示 三、具体使用 显示加载框…...
线性代数的本质大白话理解
先一句话总结的如下: 线性代数的本质,就是研究“线性变化”——包括空间中点、向量、矩阵之间如何通过线性规则(加法、数乘)变化和联系,并理解这些变化背后的结构。 1. 向量(Vector)——不是数据…...
【Rust通用集合类型】Rust向量Vector、String、HashMap原理解析与应用实战
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
Kotlin await等待多个异步任务都完成后才进行下一步操作
Kotlin await等待多个异步任务都完成后才进行下一步操作 import kotlinx.coroutines.*fun main() {runBlocking {val tagA "a"val tagB "b"val a async {worker(tagA)}val b async {worker(tagB)}println("${System.currentTimeMillis()} 等待 $t…...
佛山大旺高新区3650 M5 ERP服务器维修案例
1:机器型号:联想system x3650 m5 2:故障问题:纺织公司由于没有专业的it网管,导致服务器各种爆故障灯,本次处理的是用户反馈最近ERP软件使用过程中经常弹出资源不足的报错。 3:于是预约我们工程…...
利用Python生成Xilinx FPGA ROM IP核 .coe初始化文件
以下是一个 Python 脚本,用于生成 Xilinx IP ROM 的.coe 格式初始化文件,假设ROM 深度为 1024,数据位宽为 32bit,使用随机的 32 位无符号数进行初始化: import random# 定义ROM的深度和数据位宽 rom_depth 1024 data…...
配置电子邮件服务
配置电子邮件服务 一.基于Postfix的邮件发送 1. 安装Postfix yum install postfix -y 再下载一个telnet工具 yum -y install telnet 启动Postfix systemctl start postfix systemctl enable postfix 查看系统中端口是否被Postfix使用 netstat -tnlp | gre…...
WGCAT工单系统发现错误 定时处理工单数据任务错误
一直在用WGCAT工单系统,今天在系统日志里,看到了这个错误提示,不知道是什么原因 2025-04-26 07:05:00.000 [taskScheduler-10] INFO com.wgcloud.task.ScheduledTask - 定时处理工单数据任务开始----------2025-04-26 07:05:00 2025-04-26 …...
软件工程(一):黑盒测试与白盒测试
黑盒测试(Black Box Testing) 定义 黑盒测试是指不关心程序内部实现细节,只关注输入和输出的测试方法。把被测软件当作一个“黑盒子”,只依据功能说明书或需求文档来编写测试用例,验证功能是否正确。 特点 不需要了…...
emqx部署
要修改文件-命名空间-节点选择器 #apiVersion: v1 ##kind: ConfigMap ##metadata: ## name: emqx-config ##data: ## emqx.conf: | ## # --- apiVersion: v1 kind: PersistentVolume metadata:name: emqx-pv spec:capacity:storage: 5GivolumeMode: FilesystemaccessMode…...
【KWDB 创作者计划】_KWDB产品技术解读
文章目录 每日一句正能量一、KWDB简介二、官网信息三、技术亮点解读(一)存储引擎(二)查询引擎(三)分布式架构 四、应用场景五、总结 每日一句正能量 你的心为什么这样分散,使得你放慢了脚步。他…...
C++ 表达式求值优先级、结合律与求值顺序(五十九)
1. 运算符优先级与结合律 优先级(Precedence) 决定未加括号时运算符如何“绑”在一起:5 10 * 20 / 2; // 等同于 5 ((10 * 20) / 2)结合律(Associativity) 决定同级运算符的结合方向: 左结合࿰…...
乐理学习笔记(一)---节拍与音符
节拍 衡量音的长度和节奏的基本单位,以强弱关系按照一定的规律循环进行 拍大腿、拍手 类型 上面的这些不同类型节拍的强弱关系中第一个都是强(起确定性作用,而不是音量最大) 强和弱是决定性的区别,每一个强拍是和弦…...
《系统架构 - Java 企业应用架构中的完整层级划分》
文章目录 Java 企业应用架构中的完整层级划分核心层级(基础架构)业务逻辑层接口层基础设施层辅助层级特殊架构层级现代架构扩展层各层调用关系示例分层原则建议 Java 企业应用架构中的完整层级划分 除了常见的 Controller、Service、DAO 等标准层级外&a…...
Adobe Lightroom Classic v14.3.0.8 一款专业的数字摄影后期处理软件
软件介绍 Adobe Lightroom Classic 2025中文激活版(Adobe桌面照片编辑软件)LRC2025(LR2025本地离线版)是一款桌面照片编辑器和相册管理软件的raw格式编辑软件,支持各种RAW图像相机配置,HDR全景照片&#x…...
SQL 易混易错知识点笔记1(drop,role,%,localhost)
DROP 与 DELETE 的区别 DELETE:删除表中的数据行,属于DML操作,可回滚,可带WHERE条件 DELETE FROM table WHERE condition; -- 删除特定行 DELETE FROM table; -- 删除所有行但保留表结构 DROP:删除整个数据库对象(表、…...
C++23 std::bind_back:一种调用包装器 (P2387R3)
文章目录 引言背景知识旧有的绑定工具C20的std::bind_front std::bind_back的定义和功能定义功能 std::bind_back的使用场景简化回调函数部分应用参数 std::bind_back与其他绑定工具的对比与std::bind的对比与std::bind_front的对比 总结 引言 在C的发展历程中,每一…...
使用多线程快速向Excel中快速插入一万条数据案例
当有大量数据需要存入Excel时,使用传统的单线程完成会有以下这些弊端: 导入速度慢:单线程一次只能处理一个任务,在导入大量数据时,需要逐个将数据写入 Excel。这意味着 CPU 在大部分时间里只能处理一个数据块ÿ…...
RestRequest ,newtonsoft解析
var request new RestRequest(Method.GET); IRestResponse response client.Execute(request); Console.WriteLine(response.Content); //保存token Newtonsoft.Json.Linq.JObject obj3 Newtonsoft.Json.Linq.JObject.Pars…...
vs2022解决 此项目需要MFC库。从visual studio安装程序(单个组件选项卡)为正在使用的任何工具和体系结构安装他们问题
使用visual studio 2022创建MFC 单文档的项目,编译器报错: 严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息 错误 MSB8041 此项目需要 MFC 库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装它们。 osgEarthMFC…...
面试算法高频08-动态规划-03
练习题 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每…...
uniapp做app,使用v-for遍历渲染第二层的时候,打包到手机上渲染不出第二层的数据
1.打包apk要严格注意一点,在data中定义的时候要把第二层定义上, pointspower: [{ jcdbh: 1, cgqbhs:[] }] 不然会出现未定义的情况,直接把二层结构定义上,有利无害 2.渲染…...
Uniapp(vue):生命周期
目录 一、Vue生命周期二、Uniapp中页面的生命周期三、执行顺序比较一、Vue生命周期 setup():是在beforeCreate和created之前运行的,所以可以用setup代替这两个钩子函数。onBeforeMount():已经完成了模板的编译,但是组件还未挂载到DOM上的函数。onMounted():组件挂载到DOM完…...
Git技巧:Git Hook,自动触发,含实战分享
Git技巧:Git Hook,自动触发,含实战分享 最近项目需要1个git合入时触发脚本的功能,使用Git Hook功能实现,总结如下: Git项目在路径:repo\.git\hooks下有很多文件,这些文件就是本地钩…...
DeepSeek创始人梁文峰是个什么样的人?
梁文峰是一位在人工智能领域具有深远影响力的企业家和技术创新者,他的个人经历和成就展现了他作为一位技术天才、创新领袖以及社会责任感强的企业家的多重身份。 从学术背景来看,梁文峰出生于广东湛江吴川,17岁时以高考状元的身份考入浙江大…...
【知识科普】今天聊聊CDN
CDN 技术详解:从原理到配置实践 CDN 技术详解:从原理到配置实践一、CDN 核心定义二、工作原理深度解析1. 请求路由机制2. 缓存分层架构3. 内容更新流程 三、核心功能组件1. 基础设施层2. 软件系统 四、典型配置流程(以Cloudflare为例…...
Axure疑难杂症:利用中继器制作三级下拉菜单(逻辑判断进阶)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:三级下拉菜单 主要内容:条件筛选时的逻辑判断思维,中继器使用 应用场景:复合条件下的下拉列表制作 案例展…...
C语言----操作符详解(万字详解)
目录 1. 操作符的分类 2. 二进制和进制转换 3. 原码 反码 补码 4. 移位操作符 4.1 左移操作符 >> 4.2 右移操作符 >> 5. 位操作符 5.1 按位与 & 5.2 按位或 | 5.3 按位异或 ^ 5.4 按位取反 ~ 练习 整数存储在内存中二进制中1的个数 练习 二进制位…...
docker本地部署ClipCascade,实现跨设备剪贴板同步
1、什么是 ClipCascade ? ClipCascade 是一款开源的轻量级工具,可以自动同步您的剪贴板在多个设备之间,无需按键。它确保设备之间无缝的剪贴板共享,并以端对端加密优先保护隐私。无论您是在不同工作站之间切换,还是仅…...
Android Compose vs 传统View系统:全面对比与选型指南
Android Compose vs 传统View系统:全面对比与选型指南 一、引言 随着Android Jetpack Compose的正式发布,Android开发迎来了全新的声明式UI框架。本文将全面对比Compose与传统View系统的差异,帮助开发者做出合理的技术选型。 二、核心架构…...
CVE-2024-3431 EyouCMS 反序列化漏洞研究分析
易优内容管理系统(EyouCms) 隶属于海口快推科技有限公司,专注中小型企业信息传播解决方案,利用网络传递信息在一定程度上提高了办事的效率,提高企业的竞争力。EyouCms 是一个自由和开放源码的内容管理系统,它是一个可以独立使用的…...
C# wpf
学习网址:控件的父类们 - WPF中文网 - 从小白到大佬 控件的父类: 由此我们可以得出结论,控件的父类们(准确的说,应该叫父类的父类的父类),至少有如下几个类型: DispatcherObjectDependencyObjectVisualU…...
十一、引用与拷贝函数(References the Copy-Constructor)
十一、引用与拷贝函数(References & the Copy-Constructor) 11.1 指针回顾(Review of pointers) 指针可以保存一个地址。 当你定义一个指针时,必须指定它所指向变量的类型,并且应该初始化它。 示例&a…...
数据结构之顺序表
目录 1.线性表 1.1 线性表的定义:零个或多个数据元素的有限序列。 1.2深度解析 1.3 线性表的抽象数据类型 2.顺序表 2.1 顺序表的定义和存储方式 2.2静态顺序表 2.2.1 静态顺序表的使用 2.2.3 为什么我们要使用typedef呢? 2.2.4 为什么我们要使…...
【计算机视觉】三种图像质量评价指标详解:PSNR、SSIM与SAM
图像质量评价指标详解:PSNR、SSIM与SAM 文章目录 图像质量评价指标详解:PSNR、SSIM与SAM1. 峰值信噪比(PSNR)1.1 数学定义1.2 特点与局限性 2. 结构相似性指数(SSIM)2.1 数学定义2.2 特点与应用 3. 光谱角度映射器(SAM)3.1 数学定义3.2 特点与应用 4. Py…...
轻舟系列FPGA加速卡:大模型分布式训练中的高效协同者
在超大规模模型(如千亿级参数)的分布式训练中,计算、存储与通信的协同优化是突破性能瓶颈的关键。绿算技术公司的轻舟系列FPGA加速卡凭借其低延迟、高能效和可编程特性,能够成为分布式训练架构中的异构加速节点。其在训练集群中的…...
C++20 小语法
这个提案允许在static_assert和if constexpr中从整形转换为布尔类型。 以下表格就可以表示所有内容。 对于严格的C 编译器来说,以前在这种情境下int无法向下转换为bool,需要手动强制转换, C23 这一情况得到了改善。 对于严格的C编译器来说&a…...
LM393比较器的比较翻转电压不对
问个问题,用的LM393比较器,3.3V供电,比较器输出上拉到3.3V, V给的基准2.8V,V-电压从1V升到2.3V,比较器就输出0V了,按理论超过2.8V才翻转到0V的 根据问题描述和电路分析,比较器LM393…...
解决 shadui组件库Popover 点击后会消失
react用了shadui组件库 <Popover><PopoverTrigger><div className"text-operation-item" onClick{props.callback}><img src{props.imgSrc} width{20} height{20} /></div></PopoverTrigger><PopoverContent className"…...
国联股份卫多多与北京慧闻科技(集团)签署战略合作协议
4月27日,北京慧闻科技(集团)有限公司(以下简称“慧闻科技”)销售总监王兴卓一行到访国联股份卫多多,同卫多多/纸多多副总裁、产发部总经理段任飞,卫多多机器人产业链总经理桂林展开深入交流&…...
从数据到决策:如何使用Python进行自动驾驶数据分析
从数据到决策:如何使用Python进行自动驾驶数据分析 大家好,我是Echo_Wish,今天来和大家聊一聊在自动驾驶领域中,如何通过Python进行数据分析。随着自动驾驶技术的不断发展,数据分析在这一领域的作用越来越重要。从传感器数据的处理到模型的训练和优化,Python在自动驾驶数…...
IIS服务器提示ERR_HTTP2 PROTOCOL ERROR解决方案
今天我的淘宝店来了一个客户,说小程序苹果访问没问题,安卓系统访问出现ERR HTTP2 PROTOCAL ERROR的错误见下图 方法供大家闭坑步骤:通过注册表修改(高级) 打开注册表编辑器 (regedit) 导航到: HKEY_LOCAL_MACHINE\SYSTEM\Current…...
Django的异步任务队列管理_Celery
1 基本原理 Celery 是一个异步任务队列,能够将耗时操作(如发邮件、处理图片、网络爬虫等)从 Django 主线程中分离出来,由后台的 worker 处理,避免阻塞请求。Celery 作为独立运行的后台进程(Worker…...
Ubuntu18.04安装IntelliJ IDEA2025步骤
1.下载linux版本的idea 复制下面链接到虚拟机浏览器 下载 IntelliJ IDEA 下载好后,你的文件里会多一个文件,如下图 2.解压并运行Idea 2.1在/usr/local/路径下新建安装目录IDEA: 打开终端输入以下命令: sudo mkdir -p /usr/loc…...