redis数据结构-11(了解 Redis 持久性选项:RDB 和 AOF)
了解 Redis 持久性选项:RDB 和 AOF
Redis 提供了多个持久性选项,以确保数据持久性并防止在服务器发生故障或重启时丢失数据。了解这些选项对于为您的特定使用案例选择正确的策略、平衡性能和数据安全至关重要。本章节将深入探讨 Redis 中的两种主要持久性机制:Redis 数据库 (RDB) 快照和仅附加文件 (AOF)。我们将探讨它们的工作原理、优点和缺点以及如何配置它们。
了解 RDB 快照
RDB(Redis 数据库)持久性按指定的时间间隔执行数据集的时间点快照。这些快照表示 Redis 数据库在特定时刻的整个状态。
RDB 的工作原理
当指示 Redis 创建 RDB 快照时,它会执行以下步骤:
- **分 叉:**Redis 使用
fork()
系统调用创建子进程。此子进程是父进程(Redis 服务器)的精确副本。 - 数据转储: 然后,子进程遍历内存中的整个数据集,并将其写入磁盘上的临时文件。
- 文件压缩(可选): 默认情况下,Redis 使用 LZF 压缩来压缩 RDB 文件以减小其大小。这可以进行配置。
- 原子替换: 子进程完成 RDB 文件的写入后,它会以原子方式将旧的 RDB 文件(如果存在)替换为新的 RDB 文件。这可确保 RDB 文件始终处于一致状态。
- 子进程终止: 然后,子进程将退出,从而释放系统资源。
在整个过程中,父进程继续为客户端请求提供服务,从而最大限度地减少停机时间。但是,fork()
作可能会占用大量资源,尤其是对于大型数据集,因为它暂时需要双倍的内存。
配置 RDB 快照
您可以使用 redis.conf
文件中的 save
指令配置 RDB 快照。save
指令采用两个参数:秒数和在这些秒内必须发生的更改数才能触发快照。
例如:
save 900 1 # Save the DB if at least 1 key changed in 900 seconds
save 300 10 # Save the DB if at least 10 keys changed in 300 seconds
save 60 10000 # Save the DB if at least 10000 keys changed in 60 seconds
redis.conf
中的这些行定义了三个不同的保存点。如果满足_这些条件中的任何一个_ ,Redis 将触发 RDB 快照。您可以通过注释掉所有保存
行来完全禁用 RDB 快照。
您还可以使用 redis-cli
中的 SAVE
或 BGSAVE
命令手动触发 RDB 快照。
SAVE:
此命令执行同步保存,阻止 Redis 服务器,直到快照完成。通常不建议将其用于生产环境。BGSAVE:
此命令使用上述相同的分叉机制执行异步保存。它允许 Redis 服务器在创建快照时继续为客户端请求提供服务。
RDB 的优势
- **压 实 度:**RDB 文件非常紧凑,非常适合用于备份和灾难恢复。
- **性能:**RDB 快照的创建(尤其是压缩)和还原速度相对较快。
- **灾难恢复:**RDB 非常适合灾难恢复,因为单个文件代表整个数据集。
- **数据可移植性:**RDB 文件易于移植,可以传输到其他服务器或存档以进行长期存储。
RDB 的缺点
- **数据丢失可能性:**RDB 快照是时间点备份,因此在快照之间写入的任何数据在服务器发生故障时都将丢失。可能的数据丢失量取决于配置的存储间隔。
- 分叉开销:
fork()
作可能会占用大量资源,尤其是对于大型数据集,这可能会导致暂时的性能下降。
RDB 配置选项
除了 save
指令之外,redis.conf
中其他与 RDB 相关的配置选项还包括:
stop-writes-on-bgsave-error
:如果设置为yes
(默认值),则当BGSAVE
命令失败时,Redis 将停止接受写入作。这可以防止在出现磁盘错误或磁盘空间不足时损坏数据。rdbcompression
:如果设置为yes
(默认值),Redis 将使用 LZF 压缩 RDB 文件。将其设置为no
可以提高 CPU 性能,但会导致 RDB 文件变大。rdbchecksum
:如果设置为yes
(默认值),Redis 将在 RDB 文件中包含一个校验和,以检测数据损坏。将其设置为no
可以提高性能,但会降低数据完整性。dbfilename
:指定 RDB 文件的名称(默认值:dump.rdb
)。dir
:指定 RDB 文件的存储目录(默认:Redis 工作目录)。
了解 AOF(仅追加文件)
AOF(仅附加文件)持久性为 RDB 快照提供了更持久的替代方案。AOF 不会定期拍摄快照,而是记录服务器收到的每个写入作。
AOF 的工作原理
启用 AOF 后,Redis 会将每个写入作(例如 SET
、HSET、``LPUSH)
附加到 AOF 文件中。此文件实质上包含对数据库执行的所有写入作的完整历史记录。
- 命令附加: 每次执行写入作时,Redis 都会将相应的命令附加到 AOF 文件中。该命令以 Redis 协议格式编写。
- **文件同步:**AOF 文件会定期同步到磁盘,以保证数据的持久性。此同步的频率是可配置的。
- AOF 重写: 随着时间的推移,AOF 文件可能会变得非常大,因为它包含所有写入作的历史记录。为了减小文件大小,Redis 可以执行 AOF 重写。AOF 重写会创建一个新的、更小的 AOF 文件,其中包含重新创建当前数据集所需的最少命令集。这与 RDB 快照的工作方式类似,但结果仍然是 AOF 文件。
配置 AOF
AOF 在 redis.conf
文件中配置。关键配置选项包括:
appendonly
:设置为yes
以启用 AOF 持久化。设置为no
可禁用它(默认)。appendfilename
:指定 AOF 文件的名称(默认:appendonly.aof
)。appendfsync
:指定 Redis 应将 AOF 文件同步到磁盘的频率。它可以具有以下值之一:always
:在每次写入作后同步。这提供了最高级别的数据持久性,但也提供了最低的性能。everysec
:每秒同步一次。这是数据持久性和性能之间的良好平衡(推荐)。no
:让作系统决定何时同步。这提供了最佳性能,但数据持久性级别最低。
AOF 重写配置
使用以下选项配置 AOF 重写:
auto-aof-rewrite-percentage
:指定在触发重写之前 AOF 文件必须增长的百分比。例如,值100
表示 AOF 文件的大小必须翻倍才能触发重写。auto-aof-rewrite-min-size
:指定触发重写之前 AOF 文件的最小大小。这可以防止重写非常小的 AOF 文件。
您还可以使用 redis-cli
中的 BGREWRITEAOF
命令手动触发 AOF 重写。
AOF 的优势
- **高数据持久性:**AOF 提供比 RDB 更高的数据持久性,尤其是在使用
appendfsync always
或appendfsync everysec
时。 - 减少数据丢失: 如果服务器发生故障,AOF 可确保将数据丢失降至最低,因为只有最后几个尚未同步到磁盘的命令会丢失。
- **人类可读格式:**AOF 文件采用人类可读格式(Redis 协议),因此可以更轻松地在需要时手动调试和恢复数据。
AOF 的缺点
- **较大的文件大小:**AOF 文件通常比 RDB 文件大,因为它们包含所有写入作的历史记录。
- **性能开销:**AOF 可能会带来性能开销,尤其是在
始终使用 appendfsync
时。 - **重写开销:**AOF 重写可能是资源密集型的,尽管它是在后台执行的。
RDB 与 AOF:比较
特征 | RDB | AOF |
---|---|---|
数据持久性 | 较低 (可能丢失数据) | 更高(最小数据丢失) |
文件大小 | 较小 | 较大 |
性能 | 更快 | 更慢(尤其是 always ) |
恢复时间 | 更快 | 较慢(需要重放命令) |
配置 | save 指令 | appendonly , appendfsync 指令 |
使用案例 | 备份、灾难恢复、缓存 | 需要高数据持久性的应用程序 |
选择正确的持久性选项
RDB 和 AOF 之间的选择取决于您的具体要求:
- RDB: 如果您需要快速备份和恢复,并且可以容忍一些数据丢失,请使用 RDB。它适用于数据丢失不严重的缓存方案。
- 主干: 如果您需要高数据持久性并且无法承受丢失数据,请使用 AOF。它适用于数据完整性至关重要的应用程序,例如金融系统或存储关键用户信息的数据库。
- 混合方法: 您还可以同时使用 RDB 和 AOF。在这种情况下,Redis 将使用 AOF 来恢复数据,因为它提供了最完整的数据集。RDB 仍可用于非关键情况下的备份和更快的恢复。
实例
示例 1:为缓存服务器配置 RDB
假设您使用 Redis 作为网站的缓存服务器。数据丢失是可以接受的,因为可以从主数据库中检索数据。在这种情况下,您可以配置具有相对不频繁的保存间隔的 RDB:
save 600 100 # Save if at least 100 keys changed in 600 seconds
save 300 1000 # Save if at least 1000 keys changed in 300 seconds
save 60 10000 # Save if at least 10000 keys changed in 60 seconds
此配置为缓存服务器提供了性能和数据持久性之间的良好平衡。
示例 2:为会话存储配置 AOF
假设您使用 Redis 作为电子商务网站的会话存储。数据丢失是不可接受的,因为它可能导致用户丢失购物车或被注销。在这种情况下,您应该每 sece 使用 appendfsync
配置 AOF:
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
此配置可确保每秒将每个会话更改写入磁盘,从而最大限度地降低数据丢失的风险。
示例 3:同时使用 RDB 和 AOF
对于假设的财务应用程序,您可以同时使用 RDB 和 AOF。每 squad 使用 appendfsync 的
AOF 可确保将事务记录的数据丢失降至最低。RDB 快照每天在非高峰时段拍摄,为灾难恢复和报告目的提供方便的备份。如果服务器发生故障,Redis 将使用 AOF 文件进行恢复。如果 AOF 文件已损坏或不可用,则可以将每日 RDB 快照用作回退,从而承认自上次快照以来可能会丢失数据。
相关文章:
redis数据结构-11(了解 Redis 持久性选项:RDB 和 AOF)
了解 Redis 持久性选项:RDB 和 AOF Redis 提供了多个持久性选项,以确保数据持久性并防止在服务器发生故障或重启时丢失数据。了解这些选项对于为您的特定使用案例选择正确的策略、平衡性能和数据安全至关重要。本章节将深入探讨 Redis 中的两种主要持久…...
掌握 Kotlin Android 单元测试:MockK 框架深度实践指南
掌握 Kotlin Android 单元测试:MockK 框架深度实践指南 在 Android 开发中,单元测试是保障代码质量的核心手段。但面对复杂的依赖关系和 Kotlin 语言特性,传统 Mock 框架常显得力不从心。本文将带你深入 MockK —— 一款专为 Kotlin 设计的 …...
2025/5/16
第一题 A. 例题4.1.2 潜水 题目描述 在马其顿王国的ohide湖里举行了一次潜水比赛。 其中一个项目是从高山上跳下水,再潜水达到终点。 这是一个团体项目,一支队伍由n人组成。在潜水时必须使用氧气瓶,但是每只队伍只有一个氧气瓶。 最多两…...
Detected for tasks ‘compileDebugJavaWithJavac‘ (17) and ‘kspDebugKotlin‘ (21).
1.报错 在导入Android源码的时候出现以下错误:Inconsistent JVM-target compatibility detected for tasks compileDebugJavaWithJavac (17) and kspDebugKotlin (21).。 Execution failed for task :feature-repository:kspDebugKotlin. > Inconsistent JVM-ta…...
嵌入式单片机中STM32F1演示寄存器控制方法
该文以STM32F103C8T6为示例,演示如何使用操作寄存器的方法点亮(关闭LED灯),并讲解了如何调试,以及使用宏定义。 第一:操作寄存器点亮LED灯。 (1)首先我们的目的是操作板子上的LED2灯,对其实现点亮和关闭操作。打开STM32F103C8T6的原理图,找到LED2的位置。 可以看到…...
【带文档】网上点餐系统 springboot + vue 全栈项目实战(源码+数据库+万字说明文档)
📌 一、项目概括 本系统共包含三个角色: 管理员:系统运营管理者 用户:点餐消费用户 美食店:上传菜品与处理订单的店铺账号 通过对这三类角色的权限与业务分工设计,系统实现了点餐流程的全链路数字化&a…...
Spring Cloud:Gateway(统一服务入口)
Api 网关 也是一种服务,就是通往后端的唯一入口,类似于整个微服务架构的门面,所有的外部客户端进行访问,都需要经过它来进行过滤和调度,类似于公司的前台 而Spring Cloud Gateway就是Api网关的一种具体实现 网关的核心…...
Perl测试起步:从零到精通的完整指南
阅读原文 5.2 为什么你的Perl代码总是出问题?因为你还没开始测试! "我的代码昨天还能运行,今天就莫名其妙报错了!"、"我只是改了一个小功能,结果整个系统都崩溃了"、"这段代码不是我写的&am…...
【前端优化】vue2 webpack4项目升级webpack5,大大提升运行速度
记录一下过程 手里有个老项目,vue2webpack4 项目很大,每次运行、运行都要将近10分钟 现在又要往里面写很多东西,再不优化,开发着会更难受,所以决定先将它升级至webpack5 最初失败的尝试 直接在项目里安装了webpack5 但…...
【蓝桥杯省赛真题50】python字母比较 第十五届蓝桥杯青少组Python编程省赛真题解析
python字母比较 第十五届蓝桥杯青少年组python比赛省赛真题详细解析 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解...
学习以任务为中心的潜动作,随地采取行动
25年5月来自香港大学、OpenDriveLab 和智元机器人的论文“Learning to Act Anywhere with Task-centric Latent Actions”。 通用机器人应该在各种环境中高效运行。然而,大多数现有方法严重依赖于扩展动作标注数据来增强其能力。因此,它们通常局限于单一…...
《数据结构初阶》【二叉树 精选9道OJ练习】
【二叉树 精选9道OJ练习】目录 前言:二叉树的OJ练习[144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/)题目介绍方法一:[104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/)题目…...
协议不兼容?Profinet转Modbus TCP网关让恒压供水系统通信0障碍
在现代工业自动化领域中,通信协议扮演着至关重要的角色。ModbusTCP和Profinet是两种广泛使用的工业通信协议,它们各自在不同的应用场合中展现出独特的优势。本文将探讨如何通过开疆智能Profinet转Modbus TCP的网关,在恒压供水系统中实现高效的…...
基于大模型预测的脑出血全流程诊疗技术方案
目录 一、系统架构设计技术架构图二、核心算法实现1. 多模态数据融合算法伪代码2. 风险预测模型实现三、关键模块流程图1. 术前风险预测流程图2. 术中决策支持流程图3. 并发症预测防控流程图四、系统集成方案1. 数据接口规范五、性能优化策略1. 推理加速方案2. 分布式训练架构六…...
掌握 LangChain 文档处理核心:Document Loaders 与 Text Splitters 全解析
🐇明明跟你说过:个人主页 🏅个人专栏:《深度探秘:AI界的007》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是LangChain 2、LangChain 在智能应用中的作用 …...
Oracle — 总结
Oracle 公司及产品概述 公司背景 Oracle(甲骨文)是全球领先的数据库软件和服务提供商,成立于1977年,核心产品包括: Oracle Database:关系型数据库管理系统(RDBMS)。Java:…...
【Vue 3全栈实战】从响应式原理到企业级架构设计
目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选…...
升级kafka4.0.0,无ZK版本
设备规划: 172.20.192.47 kafka-0 172.20.192.48 kafka-1 172.20.192.49 kafka-2 单机块7TB Nvme磁盘一共9块 # 格式化成GPT分区 sudo parted /dev/nvme0n1 --script mklabel gpt sudo parted /dev/nvme1n1 --script mklabel gpt sudo parted /dev/nvme2n1 --s…...
GESP2025年3月认证C++二级( 第三部分编程题(1)等差矩阵)
参考程序: #include <bits/stdc.h> using namespace std;int n, m; // 声明矩阵的行数 n 和列数 mint main() {// 输入两个正整数 n 和 mscanf("%d%d", &n, &m);// 遍历每一行for (int i 1; i < n; i)// 遍历每一列for (int j 1; j &…...
Linux系统启动相关:vmlinux、vmlinuz、zImage,和initrd 、 initramfs,以及SystemV 和 SystemD
目录 一、vmlinux、vmlinuz、zImage、bzImage、uImage 二、initrd 和 initramfs 1、initrd(Initial RAM Disk) 2、initramfs(Initial RAM Filesystem) 3、initrd vs. initramfs 对比 4. 如何查看和生成 initramfs 三、Syste…...
单序列双指针---初阶篇
目录 相向双指针 344. 反转字符串 125. 验证回文串 1750. 删除字符串两端相同字符后的最短长度 2105. 给植物浇水 II 977. 有序数组的平方 658. 找到 K 个最接近的元素 1471. 数组中的 k 个最强值 167. 两数之和 II - 输入有序数组 633. 平方数之和 2824. 统计和小于…...
K8s CoreDNS 核心知识点总结
文章目录 一、章节介绍背景与主旨核心知识点及面试频率 二、知识点详解1. CoreDNS 概述2. 工作原理(高频考点)服务发现流程 3. 配置与插件系统(高频考点)核心配置文件:Corefile常用插件 4. Pod DNS策略(中频…...
Java视频流RTMP/RTSP协议解析与实战代码
在Java中实现视频直播的输入流处理,通常需要结合网络编程、多媒体处理库以及流媒体协议(如RTMP、HLS、RTSP等)。以下是实现视频直播输入流的关键步骤和技术要点: 1. 视频直播输入流的核心组件 网络输入流:通过Socket或…...
卓力达电铸镍网:精密制造与跨领域应用的创新典范
目录 引言 一、电铸镍网的技术原理与核心特性 二、电铸镍网的跨领域应用 三、南通卓力达电铸镍网的核心优势 四、未来技术展望 引言 电铸镍网作为一种兼具高精度与高性能的金属网状材料,通过电化学沉积工艺实现复杂结构的精密成型,已成为航空航天、电…...
label-studio功能常用英文翻译
Projects 项目 Settings 设置 Labeling Interface 标注界面 1、Computer Vision 计算机视觉 Semantic Segmentation with Polygons 多边形语义分割 Semantic Segmentation with Masks 掩码语义分割 Object Detection with Bounding Boxes 边界框目标检测 Keypoint Label…...
2025年PMP 学习十六 第11章 项目风险管理 (总章)
2025年PMP 学习十六 第11章 项目风险管理 (总章) 第11章 项目风险管理 序号过程过程组1规划风险管理规划2识别风险规划3实施定性风险分析规划4实施定量风险分析规划5规划风险应对执行6实施风险应对执行7监控风险监控 目标: 提高项目中积极事件的概率和…...
Jenkins 执行器(Executor)如何调整限制?
目录 现象原因解决 现象 Jenkins 构建时,提示如下: 此刻的心情正如上图中的小老头,火冒三丈,但是不要急,因为每一次错误,都是系统中某个环节在说‘我撑不住了’。 原因 其实是上图的提示表示 Jenkins 当…...
Jenkins 安装与配置指南
Jenkins 安装与配置指南(MD 示例) markdown Jenkins 安装与配置指南 ## 一、环境准备 1. **系统要求** - 操作系统:Linux/macOS/Windows - Java 版本:JDK 8 或更高(建议 JDK 11)2. **安装方式** - **L…...
使用unsloth对Qwen3在本地进行微调
Fine-tune Qwen3(100% locally) 使用unsloth进行微调,使用huggingface在本地运行model。 load model from unsloth import FastLanguageModel import torchMODEL = "unsloth/Qwen3-14B" model,tokenizer = FastLanguageModel.from_pretrained(model_name=MODE…...
GpuGeek 实操指南:So-VITS-SVC 语音合成与 Stable Diffusion 文生图双模型搭建,融合即梦 AI 的深度实践
GpuGeek 实操指南:So-VITS-SVC 语音合成与 Stable Diffusion 文生图双模型搭建,融合即梦 AI 的深度实践 前言 本文将详细讲解 So-VITS-SVC 语音合成与 Stable Diffusion 文生图的搭建方法,以及二者与即梦 AI 融合的实践技巧,无论你…...
CSS- 3.1 盒子模型-块级元素、行内元素、行内块级元素和display属性
本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 HTML系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看! 点…...
使用exceljs将excel文件转化为html预览最佳实践(完整源码)
前言 在企业应用中,我们时常会遇到需要上传并展示 Excel 文件的需求,以实现文件内容的在线预览。经过一番探索与尝试,笔者最终借助 exceljs 这一库成功实现了该功能。本文将以 Vue 3 为例,演示如何实现该功能,代码示例…...
7. 进程控制-进程替换
目录 1. 进程替换 1.1 单进程版: 1.2 进程替换的原理 1.3 多进程版-验证各种程序替换接口 2. 进程替换的各种接口 2.1 execl 2.2 execlp 2.3 execv 2.4 execvp 2.5 execle 1. 进程替换 上图为程序替换的接口,之后会详细介绍。 1.1 单进程版&am…...
关于计算机系统和数据原子性的联系
目录 1、计算机架构 1.1、处理器架构 1.2、内存寻址能力 1.3、性能差异 1.4、软件兼容性 1.5、指令集 1.6、开发和维护 2.、基本数据类型 3、原子类型 3.1、基本概念 3.2、基本数据类型的原子性 3.3、原子操作的解释 3.4、不保证原子性 3.5、解决方案 4、原子性…...
Armijo rule
非精线搜索步长规则Armijo规则&Goldstein规则&Wolfe规则_armijo rule-CSDN博客 [原创]用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则 – 编码无悔 / Intent & Focused...
从数据包到可靠性:UDP/TCP协议的工作原理分析
之前我们已经使用udp/tcp的相关接口写了一些简单的客户端与服务端代码。也了解了协议是什么,包括自定义协议和知名协议比如http/https和ssh等。现在我们再回到传输层,对udp和tcp这两传输层巨头协议做更深一步的分析。 一.UDP UDP相关内容很简单…...
Prometheus实战教程:k8s平台-Mysql监控案例
配置文件优化后的 Prometheus 自动发现 MySQL 实例的完整 YAML 文件。该配置包括: MySQL Exporter 部署:使用 ConfigMap 提供 MySQL 连接信息。Prometheus 自动发现:通过 Kubernetes 服务发现自动抓取 MySQL 实例。 1、mysql 配置文件 &…...
执行apt-get update 报错ModuleNotFoundError: No module named ‘apt_pkg‘的解决方案汇总
Ubuntu版本ubuntu18.04 报错内容: //执行apt-get upgrade报错: Traceback :File “/usr/lib/cnf-update-db”, line 8, in <module>from CommandNotFound.db.creator import DbcreatorFile “/usr/lib/python3/dist-packages/CommandNotFound/db…...
QT6 源(101)篇一:阅读与注释 QPlainTextEdit,其继承于QAbstractScrollArea,属性学习与测试
(1) (2) (3)属性学习与测试 : (4) (5) 谢谢...
Redis(2):Redis + Lua为什么可以实现原子性
Redis 作为一款高性能的键值对存储数据库,与 Lua 脚本相结合,为实现原子性操作提供了强大的解决方案,本文将深入探讨 Redis Lua 实现原子性的相关知识 原子性概念的厘清 在探讨 Redis Lua 的原子性之前,我们需要明确原子性的概念…...
ios打包ipa获取证书和打包创建经验分享
在云打包或本地打包ios应用,打包成ipa格式的app文件的过程中,私钥证书和profile文件是必须的。 其实打包的过程并不难,因为像hbuilderx这些打包工具,只要你输入的是正确的证书,打包就肯定会成功。因此,证书…...
Python生成器:高效处理大数据的秘密武器
生成器概述 生成器是 Python 中的一种特殊迭代器,通过普通函数的语法实现,但使用 yield 语句返回数据。生成器自动实现了 __iter__() 和 __next__() 方法,因此可以直接用于迭代。生成器的核心特点是延迟计算(lazy evaluation&…...
C++11(2)
文章目录 右值引用和移动语义在传参中的提效list容器push_back & insert右值版本的模拟实现类型分类 (了解即可)引用折叠万能引用 完美转发(跟引用折叠有关) 简介:这篇文章是继续介绍C11的一些新语法知识点,也是对…...
unity terrain 在生成草,树,石头等地形障碍的时候,无法触发碰撞导致人物穿过模型
1.terrain地形的草,石头之类要选择模型预制体 2.在人物身上挂碰撞器和刚体,或者单挂一个character controller组件也行 3.在预制体上挂碰撞盒就好了,挂载meshcollider会导致碰撞无效...
以项目的方式学QT开发C++(二)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
API 描述 函数原型 参数说明 push_back() 在 list 尾部 添加一个元素 void push_back(const T& value); value :要添 加到尾部的元 素 这个示例演示了如何创建 std::list 容器,并对其进行插入、删除和迭代操作。在实际应用中&am…...
养生:健康生活的极简攻略
在追求高效生活的当下,养生也能化繁为简。通过饮食、运动、睡眠与心态的精准调节,就能轻松为健康续航。 饮食上,遵循 “均衡、节制” 原则。早餐用一杯热豆浆搭配水煮蛋和半个苹果,唤醒肠胃活力;午餐以糙米饭为主食&am…...
C语言-8.数组
8.1数组 8.1.1初试数组 如何写一个程序计算用户输入的数字的平均数? #include<stdio.h> int main() {int digit;//输入要求平均数的数字double sum=0;//记录输入数字的和int count=0;//记录输入数字的个数printf("请输入一组数字,用来求平均数,以-1结束\n&quo…...
代码随想录算法训练营第四十一天
LeetCode题目: 739. 每日温度496. 下一个更大元素 I503. 下一个更大元素 II 其他: 今日总结 往期打卡 739. 每日温度 跳转: 739. 每日温度 学习: 代码随想录公开讲解 问题: 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer &…...
c++,windows,多线程编程详细介绍
目录 一、C11 标准库 <thread> 实现多线程编程1. 基本线程创建2. 线程管理3. 线程传参4. 同步机制5. 异步编程 二、Windows API 实现多线程编程1. 基本线程创建2. 线程管理3. 线程传参 三、两种方法的对比 在 Windows 平台上使用 C 进行多线程编程,可以通过 C…...
Python多线程
Python多线程 作为一名Python开发者,你是否遇到过这样的场景:程序需要同时处理多个任务,但单线程执行效率太低?这时候,多线程技术就能派上用场了。本文将带你深入浅出地理解Python多线程,并通过丰富的示例…...