深入解析 Redis AOF 机制:持久化原理、重写优化与 COW 影响
深入解析 Redis AOF 机制:持久化原理、重写优化与 COW 影响
- 1. 引言
- 2. AOF 机制详解
- 2.1 AOF 解决了什么问题?
- 2.2 AOF 写入机制
- 2.2.1 AOF 的基本原理
- 2.2.2 AOF 运行流程
- 2.2.3 AOF 文件刷盘策略
- 3. AOF 重写机制
- 3.1 AOF 文件为什么会变大?
- 3.2 解决方案:AOF 重写(Rewrite)
- 3.3. AOF 重写机制详解
- 3.3.1 AOF 重写触发条件
- 3.3.3.2 AOF 重写的执行流程
- 3.3.3.3 AOF 重写时如何同步新增写操作?
- 3.3.3.3.1 AOF 重写缓冲区机制
- 3.3.3.3.2 AOF 重写完成后的数据合并
- 4. AOF 与写时复制(Copy-on-Write, COW)
- 5. Redis 处理大规模数据写入的优化方案
- 5.1 AOF 体积大于 64MB 时如何优化?
- ✅ 方案 1:开启 AOF + RDB 混合模式
- ✅ 方案 2:调整 AOF 重写策略
- ✅ 方案 3:优化 `appendfsync` 方式
- ✅ 方案 4:使用 `redis-cli --bigkeys` 找出大 Key
- 6. AOF 重写过程中掉电,如何恢复?
- 7. 总结
1. 引言
Redis 作为高性能的键值存储数据库,提供了两种主要的持久化机制:RDB(Redis Database File) 和 AOF(Append-Only File)。其中,AOF 通过日志追加的方式记录写操作,以最大限度保证数据的可靠性,即使发生崩溃或掉电,也能恢复到最近的状态。
本篇博客将围绕 AOF 机制 进行深入分析,涵盖其原理、AOF 重写策略、写时复制(Copy-on-Write, COW)机制、Redis 大规模数据写入下的优化方案以及 AOF 在极端情况下的处理方式。
2. AOF 机制详解
2.1 AOF 解决了什么问题?
如果 Redis 仅使用内存存储,一旦进程崩溃或服务器掉电,所有数据都会丢失。为了解决这个问题,Redis 提供了两种持久化方式:
- RDB(快照存储):周期性将数据写入磁盘,可能丢失最近的写入。
- AOF(日志记录):通过 追加日志 记录每一个写入操作,提供更高的数据安全性。
✅ AOF 主要优势
- 更高的数据持久化保证:即使 Redis 崩溃,AOF 也可以恢复最近的写入。
- 支持不同的同步策略(
always
、everysec
、no
),平衡性能与数据安全性。 - 支持 AOF 重写(Rewrite),优化日志文件体积,提高恢复效率。
2.2 AOF 写入机制
2.2.1 AOF 的基本原理
AOF(Append-Only File) 是 Redis 提供的持久化方式之一,它会记录所有写操作命令,并追加到 appendonly.aof
文件中。
2.2.2 AOF 运行流程
AOF 主要包含三个核心步骤:
- 命令追加(Append):所有写操作命令会以 Redis 协议格式追加到 AOF 缓冲区。
- 文件同步(fsync):根据配置,AOF 缓冲区会定期刷盘,确保数据持久化。
- AOF 载入(恢复数据):Redis 重启时,读取 AOF 文件并逐条执行命令,恢复数据状态。
2.2.3 AOF 文件刷盘策略
Redis 允许用户配置 appendfsync
参数,决定 AOF 何时刷盘:
always
(每次写入都立即fsync
,数据最安全但性能最差)。everysec
(默认,每秒fsync
一次,性能与安全性折中)。no
(交由操作系统控制fsync
,掉电可能导致较多数据丢失)。
3. AOF 重写机制
3.1 AOF 文件为什么会变大?
由于 AOF 采用追加写策略,重复操作会导致文件体积不断膨胀:
SET key1 100
INCR key1
INCR key1
INCR key1
最终 key1 的值为 103,但 AOF 记录了 4 条命令,这会导致:
- AOF 文件占用过多磁盘空间。
- Redis 重启时恢复速度变慢,因为需要重放大量命令。
3.2 解决方案:AOF 重写(Rewrite)
AOF 重写可以压缩 AOF 文件大小,加快 Redis 启动速度,同时减少存储开销。
AOF 重写原理:
- Redis 并不会简单地裁剪 AOF 文件,而是生成一个新的 AOF 文件。
- 子进程扫描当前数据库状态,将数据转换为最小化的 Redis 命令,并写入新的 AOF 文件。
- 最终使用
rename()
原子替换旧 AOF,确保数据安全。
3.3. AOF 重写机制详解
3.3.1 AOF 重写触发条件
AOF 重写可以手动触发,也可以自动触发:
- 手动触发:
BGREWRITEAOF
- 自动触发(通过
auto-aof-rewrite-percentage
配置):
当 AOF 文件大小比上次重写后增长auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb
100%
并且至少达到64MB
,Redis 自动触发 AOF 重写。
3.3.3.2 AOF 重写的执行流程
(1)Redis fork 子进程执行 AOF 重写
- 子进程扫描 Redis 当前内存数据,生成新的 AOF 文件(
temp-rewriteaof.aof
)。 - 由于写时复制(COW) 机制,子进程与主进程共享内存,减少性能开销。
(2)主进程继续接收新的写操作
- 主进程仍然写入旧 AOF 文件(避免数据丢失)。
- 同时,新增的写入会暂存到 AOF 重写缓冲区(AOF rewrite buffer)。
(3)AOF 重写完成后,合并新增数据
- 主进程将 AOF 重写缓冲区的内容追加到新 AOF 文件,确保数据完整。
(4)使用 rename()
替换旧 AOF 文件
rename("temp-rewriteaof.aof", "appendonly.aof")
原子替换,确保不会出现数据不一致的情况。- 新 AOF 文件替换旧 AOF 文件,完成 AOF 重写。
3.3.3.3 AOF 重写时如何同步新增写操作?
3.3.3.3.1 AOF 重写缓冲区机制
在 AOF 重写过程中,主进程仍然可以接收新的写请求:
- 这些写请求会继续写入旧 AOF 文件(保证数据持久化)。
- 同时,这些写请求会存入 AOF 重写缓冲区(AOF rewrite buffer),等待 AOF 重写完成后追加到新 AOF 文件。
3.3.3.3.2 AOF 重写完成后的数据合并
当 AOF 重写完成后:
- 主进程短暂暂停,将 AOF 重写缓冲区的数据追加到新 AOF。
- 最终用
rename()
替换旧 AOF,确保数据一致性。
4. AOF 与写时复制(Copy-on-Write, COW)
Redis 采用 写时复制(Copy-on-Write, COW) 机制,在 AOF 重写时避免阻塞主进程:
- Redis fork 出一个子进程 进行 AOF 重写,主进程仍然可以继续接收写请求。
- 子进程与主进程共享内存,但如果主进程修改数据,修改的页面会被复制,导致额外的内存开销。
- 大量写操作会导致 COW 频繁触发,造成内存占用短暂增加。
✅ 优化方案:
- 降低 AOF 重写频率(调高
auto-aof-rewrite-percentage
)。 - 合理控制 AOF 体积(结合 RDB + AOF)。
- 升级 Redis 7.0 及以上,使用 AOF + RDB 混合模式。
5. Redis 处理大规模数据写入的优化方案
5.1 AOF 体积大于 64MB 时如何优化?
如果 AOF 重写后仍然大于 64MB,可以采取以下策略:
✅ 方案 1:开启 AOF + RDB 混合模式
Redis 7.0 之后,支持AOF + RDB 混合模式,大幅降低 AOF 体积:
aof-use-rdb-preamble yes
🔹 优势:
- AOF 头部使用 RDB 快照,减少冗余日志。
- 加快 Redis 重启恢复速度。
- 降低磁盘占用。
✅ 方案 2:调整 AOF 重写策略
如果 AOF 仍然过大,可以降低触发频率:
auto-aof-rewrite-percentage 50
auto-aof-rewrite-min-size 64mb
✅ 适用于:AOF 文件增长较快的场景,减少不必要的重写。
✅ 方案 3:优化 appendfsync
方式
如果 Redis 处理高并发写入,可修改 appendfsync
:
appendfsync no # 让 OS 决定何时写入,降低磁盘 IO
✅ 适用于:吞吐量极高的写入场景,减少 fsync
负担。
✅ 方案 4:使用 redis-cli --bigkeys
找出大 Key
如果 AOF 仍然过大,可能是某些 Key 过大:
redis-cli --bigkeys
🔹 优化:
- 使用
EXPIRE key seconds
设置自动过期。 - 减少 Key 数量,合并数据存储。
6. AOF 重写过程中掉电,如何恢复?
- AOF 重写是原子操作,如果发生掉电:
- Redis 仍然使用旧 AOF 文件,数据不会丢失。
- 新 AOF 文件未完成,不会被使用,保证一致性。
✅ AOF 文件损坏自动修复:
- Redis 启动时会检查 AOF 是否损坏,并自动修复。
- 可以手动执行:
redis-check-aof --fix appendonly.aof
✅ 如何优化 AOF 以减少掉电风险?**
- 使用
appendfsync everysec
(默认),减少掉电数据丢失 - 监控 AOF 重写频率,避免频繁触发
- 定期检查 AOF 文件完整性
- 使用 SSD 代替 HDD,提高
fsync
速度
7. 总结
- AOF 主要用于 保证 Redis 数据持久化,避免数据丢失。
- AOF 重写(Rewrite) 机制减少文件体积,加快恢复速度。
- 写时复制(COW) 影响 AOF 重写期间的内存使用。
- 大规模数据写入下,优化 AOF 体积:
- 使用 AOF + RDB 混合模式。
- 调整 AOF 重写触发条件。
- 优化磁盘 IO,避免 AOF 过大。
📌 最终建议:如果 Redis 版本 ≥ 7.0,推荐使用 AOF + RDB 混合模式,以获得最佳性能与数据可靠性!
相关文章:
深入解析 Redis AOF 机制:持久化原理、重写优化与 COW 影响
深入解析 Redis AOF 机制:持久化原理、重写优化与 COW 影响 1. 引言2. AOF 机制详解2.1 AOF 解决了什么问题?2.2 AOF 写入机制2.2.1 AOF 的基本原理2.2.2 AOF 运行流程2.2.3 AOF 文件刷盘策略 3. AOF 重写机制3.1 AOF 文件为什么会变大?3.2 解…...
机器学习day8
自定义数据集 ,使用朴素贝叶斯对其进行分类 代码 import numpy as np import matplotlib.pyplot as pltclass1_points np.array([[2.1, 2.2], [2.4, 2.5], [2.2, 2.0], [2.0, 2.1], [2.3, 2.3], [2.6, 2.4], [2.5, 2.1]]) class2_points np.array([[4.0, 3.5], …...
【前端】ES6模块化
文章目录 1. 模块化概述1.1 什么是模块化?1.2 为什么需要模块化? 2. 有哪些模块化规范3. CommonJs3.1 导出数据3.2 导入数据3.3 扩展理解3.4 在浏览器端运行 4.ES6模块化 参考视频地址 1. 模块化概述 1.1 什么是模块化? 将程序文件依据一定规则拆分成多个文件,这种编码方式…...
【leetcode练习·二叉树拓展】快速排序详解及应用
本文参考labuladong算法笔记[拓展:快速排序详解及应用 | labuladong 的算法笔记] 1、算法思路 首先我们看一下快速排序的代码框架: def sort(nums: List[int], lo: int, hi: int):if lo > hi:return# 对 nums[lo..hi] 进行切分# 使得 nums[lo..p-1]…...
Gurobi基础语法之 addConstr, addConstrs, addQConstr, addMQConstr
在新版本的 Gurobi 中,向 addConstr 这个方法中传入一个 TempConstr 对象,在模型中就会根据这个对象生成一个约束。更重要的是:TempConstr 对象可以传给所有addConstr系列方法,所以下面先介绍 TempConstr 对象 TempConstr TempC…...
游戏引擎 Unity - Unity 设置为简体中文、Unity 创建项目
Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...
Kamailio、MySQL、Redis、Gin后端、Vue.js前端等基于容器化部署
基于容器化的部署方案,通常会将每个核心服务(如Kamailio、MySQL、Redis、Gin后端、Vue.js前端等)独立运行在不同的容器中,通过Docker或Kubernetes统一管理。以下是具体实现方式和关键原因: 1. 容器化部署的核心思路 每…...
从1号点到n号点最多经过k条边的最短距离
目录 解析方法思路代码解释代码逐行注释1. 头文件和常量定义:2.边的结构体:3.全局变量:4.Bellman-Ford算法实现:5.主函数: 注意事项代码含义为什么需要 backup[a]?举例说明关键点 总结 解析 要实现从1号点…...
模拟实战-用CompletableFuture优化远程RPC调用
实战场景 这是广州某500-900人互联网厂的面试原题 手写并发优化解决思路 我们要调用对方的RPC接口,我们的RPC接口每调用一次对方都会阻塞50ms 但是我们的业务要批量调用RPC,例如我们要批量调用1k次,我们不可能在for循环里面写1k次远程调用…...
【pinia状态管理配置】
pinia状态管理配置 安装main.ts引入自定义user仓库使用自定义仓库 安装 pnpm add piniamain.ts引入 // createPinia() 函数调用创建了一个新的 Pinia 实例。 // 这个实例是状态管理的核心,它将管理应用中所有的 store。 import { createPinia } from pinia app.us…...
SpringBoot 引⼊MybatisGenerator
SpringBoot 引⼊MybatisGenerator 1. 引入插件2. 添加generator.xml并修改3. 生成文件 1. 引入插件 <plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</vers…...
在线销售数据集分析:基于Python的RFM数据分析方法实操训练
一、前言 个人练习,文章用于记录自己的学习练习过程,分享出来和大家一起学习。 数据集:在线销售数据集 分析方法:RFM分析方法 二、过程 1.1 库的导入与一些必要的初始设置 import pandas as pd import datetime import matplo…...
LeetCode - #197 Swift 实现找出温度更高的日期
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
分析哲学:从 语言解剖到 思想澄清的哲学探险
分析哲学:从 语言解剖 到 思想澄清 的哲学探险 第一节:分析哲学的基本概念与公式解释 【通俗讲解,打比方来讲解!】 分析哲学,就像一位 “语言侦探”,专注于 “解剖语言”,揭示我们日常使用的语…...
C++【iostream】数据库的部分函数功能介绍
在 C 编程世界中,iostream 库扮演着举足轻重的角色,它是 C 标准库的核心组成部分,为程序提供了强大的输入输出功能。无论是简单的控制台交互,还是复杂的文件操作,iostream 库都能提供便捷高效的解决方案。本文将深入剖…...
金山打字游戏2010绿色版,Win7-11可用DxWnd完美运行
金山打字游戏2010绿色版,Win7-11可用DxWnd完美运行 链接:https://pan.xunlei.com/s/VOIAYCzmkbDfdASGJa_uLjquA1?pwd67vw# 进入游戏后,如果输入不了英文字母(很可能是中文输入状态),就按一下“Shift”键…...
洛谷[USACO08DEC] Patting Heads S
题目传送门 题目难度:普及/提高一 题面翻译 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏。 贝茜让 N N N ( 1 ≤ N ≤ 1 0 5 1\leq N\leq 10^5 1≤N≤105) 头奶牛坐成一个圈。除了 1 1 1 号与 N N N 号奶牛外࿰…...
讲清逻辑回归算法,剖析其作为广义线性模型的原因
1、逻辑回归算法介绍 逻辑回归(Logistic Regression)是一种广义线性回归分析模型。虽然名字里带有“回归”两字,但其实是分类模型,常用于二分类。既然逻辑回归模型是分类模型,为什么名字里会含有“回归”二字呢?这是因为其算法原…...
基于STM32的智能安防监控系统
1. 引言 随着物联网技术的普及,智能安防系统在家庭与工业场景中的应用日益广泛。本文设计了一款基于STM32的智能安防监控系统,集成人体感应、环境异常检测、图像识别与云端联动功能,支持实时报警、远程监控与数据回溯。该系统采用边缘计算与…...
八. Spring Boot2 整合连接 Redis(超详细剖析)
八. Spring Boot2 整合连接 Redis(超详细剖析) 文章目录 八. Spring Boot2 整合连接 Redis(超详细剖析)2. 注意事项和细节3. 最后: 在 springboot 中 , 整合 redis 可以通过 RedisTemplate 完成对 redis 的操作, 包括设置数据/获取数据 比如添加和读取数据 具体整…...
220.存在重复元素③
目录 一、题目二、思路三、解法四、收获 一、题目 给你一个整数数组 nums 和两个整数 indexDiff 和 valueDiff 。 找出满足下述条件的下标对 (i, j): i ! j, abs(i - j) < indexDiff abs(nums[i] - nums[j]) < valueDiff 如果存在,返回 true &a…...
【Linux】从硬件到软件了解进程
个人主页~ 从硬件到软件了解进程 一、冯诺依曼体系结构二、操作系统三、操作系统进程管理1、概念2、PCB和task_struct3、查看进程4、通过系统调用fork创建进程(1)简述(2)系统调用生成子进程的过程〇提出问题①fork函数②父子进程关…...
volatile变量需要减少读取次数吗
问题说明 本人在前期读Netty源码时看到这样一段源码和注释: private boolean invokeHandler() {// Store in local variable to reduce volatile reads.int handlerState this.handlerState;return handlerState ADD_COMPLETE || (!ordered && handlerS…...
红黑树的封装
一、封装思路 在 STL 中 map set 的底层就是封装了一棵红黑树。 其中连接红黑树和容器的是迭代器,map set 暴露出的接口都不是自己写的,而是红黑树写的,外部接口封装红黑树接口。 所以写出红黑树为 map set 写的接口,再在上层的…...
Java 泛型<? extends Object>
在 Java 泛型中,<? extends Object> 和 <?> 都表示未知类型,但它们在某些情况下有细微的差异。泛型的引入是为了消除运行时错误并增强类型安全性,使代码更具可读性和可维护性。 在 JDK 5 中引入了泛型,以消除编译时…...
TensorFlow简单的线性回归任务
如何使用 TensorFlow 和 Keras 创建、训练并进行预测 1. 数据准备与预处理 2. 构建模型 3. 编译模型 4. 训练模型 5. 评估模型 6. 模型应用与预测 7. 保存与加载模型 8.完整代码 1. 数据准备与预处理 我们将使用一个简单的线性回归问题,其中输入特征 x 和标…...
解码大数据的四个V:体积、速度、种类与真实性
解码大数据的四个V:体积、速度、种类与真实性 在大数据领域,有一个大家耳熟能详的概念——“四个V”:Volume(体积)、Velocity(速度)、Variety(种类)、Veracityÿ…...
【单层神经网络】基于MXNet的线性回归实现(底层实现)
写在前面 基于亚马逊的MXNet库本专栏是对李沐博士的《动手学深度学习》的笔记,仅用于分享个人学习思考以下是本专栏所需的环境(放进一个environment.yml,然后用conda虚拟环境统一配置即可)刚开始先从普通的寻优算法开始ÿ…...
深入解析 posix_spawn():高效的进程创建方式(中英双语)
深入解析 posix_spawn():高效的进程创建方式 1. 引言 在 Unix/Linux 系统中,传统的进程创建方式主要依赖 fork() 和 exec() 组合。但 fork() 在某些情况下可能存在性能瓶颈,特别是当父进程占用大量内存时,fork() 仍然需要复制整…...
2024-我的学习成长之路
因为热爱,无畏山海...
【Java异步编程】基于任务类型创建不同的线程池
文章目录 一. 按照任务类型对线程池进行分类1. IO密集型任务的线程数2. CPU密集型任务的线程数3. 混合型任务的线程数 二. 线程数越多越好吗三. Redis 单线程的高效性 使用线程池的好处主要有以下三点: 降低资源消耗:线程是稀缺资源,如果无限…...
前缀和多种基础
前缀和加法 #include<iostream> #include<algorithm> using namespace std; typedef long long ll; int n; const int N 1e310; int arr[N]; int pre[N]; int org[N]; int main(void) {cin >> n;for(int i 1 ; i < n ; i){cin >> arr[i];pre[i] …...
关于贪心学习的文笔记录
贪心,顾名思义就是越贪越好,越多越有易,他给我的感觉是,通常是求最大或最小问题,相比于动态规划贪心让人更加琢磨不透,不易看出方法,为此在这记录我所见过的题型和思维方法,以便回头…...
蓝桥杯思维训练营(三)
文章目录 题目详解680.验证回文串 II30.魔塔游戏徒步旅行中的补给问题观光景点组合得分问题 题目详解 680.验证回文串 II 680.验证回文串 II 思路分析:这个题目的关键就是,按照正常来判断对应位置是否相等,如果不相等,那么就判…...
农历2025开始 笔记
2/3 Hey everyone! The Chinese New Year holiday is over. I spent over ten days back home, and honestly, I feel even more exhausted than when I’m working. Yesterday, I drove for 13 hours straight and finally made it back. In a couple of days, I’ll officia…...
VR触感数据手套:触感反馈赋予虚拟交互沉浸式体验
随着动作捕捉技术的蓬勃发展,动捕数据手套成为了手部动作捕捉与虚拟交互的便捷工具,为人们打开了通往虚拟世界的新大门。在众多产品中,mHand Pro作为一款多功能兼具的VR动作捕捉数据手套,凭借其卓越的性能,在手部动作捕…...
6 [新一代Github投毒针对网络安全人员钓鱼]
0x01 前言 在Github上APT组织“海莲花”发布存在后门的提权BOF,通过该项目针对网络安全从业人员进行钓鱼。不过其实早在几年前就已经有人对Visual Studio项目恶意利用进行过研究,所以投毒的手法也不算是新的技术。但这次国内有大量的安全从业者转发该钓…...
基于LabVIEW的Modbus-RTU设备通信失败问题分析与解决
在使用 LabVIEW 通过 Modbus-RTU 协议与工业设备进行通信时,可能遇到无法正常发送或接收指令的问题。常见原因包括协议参数配置错误、硬件连接问题、数据帧格式不正确等。本文以某 RGBW 控制器调光失败为例,提出了一种通用的排查思路,帮助开发…...
【环境搭建】1.1源码下载与同步
目录 写在前面 一,系统要求 二,安装depot_tools 三,获取代码 四,代码同步 五,代码结构 写在前面 当前的开发背景是基于Google的开源Chromium,来开发Android设备的浏览器方案。 一,系统要…...
从理论到实践:Linux 进程替换与 exec 系列函数
个人主页:chian-ocean 文章专栏-Linux 前言: 在Linux中,进程替换(Process Substitution)是一个非常强大的特性,它允许将一个进程的输出直接当作一个文件来处理。这种技术通常用于Shell脚本和命令行操作中…...
增删改查(CRUD)操作
文章目录 MySQL系列:1.CRUD简介2.Create(创建)2.1单行数据全列插入2.2 单行数据指定插入2.3 多⾏数据指定列插⼊ 3.Retrieve(读取)3.1 Select查询3.1.1 全列查询3.1.2 指定列查询3.1.3 查询字段为表达式(都是临时表不会对原有表数据产生影响)…...
算法竞赛(Python)-堆栈
文章目录 一 基础知识二 题目有效的括号字符串解码 一 基础知识 堆栈(Stack):简称为栈。一种线性表数据结构,是一种只允许在表的一端进行插入和删除操作的线性表。 我们把栈中允许插入和删除的一端称为 「栈顶(top…...
【C++篇】位图与布隆过滤器
目录 一,位图 1.1,位图的概念 1.2,位图的设计与实现 1.5,位图的应用举例 1.4,位图常用应用场景 二,布隆过滤器 2.1,定义: 2.2,布隆过滤器的实现 2.3, 应…...
deeplabv3+街景图片语义分割,无需训练模型,看不懂也没有影响,直接使用,cityscapes数据集_6
目录 1、下载链接1.1、CSDN链接,含权重文件直接使用,建议直接下这个,还不限速。1.2 Github链接:2、下载代码,下载预训练好的权重3、预测代码4、像素提取,或者说类别提取5、文档部分内容截图6、其他数据处理…...
DeepSeek 原理解析:与主流大模型的差异及低算力优势
在人工智能大模型蓬勃发展的浪潮中,DeepSeek 以其独特的技术路线和出色的性能表现脱颖而出。与主流大模型相比,DeepSeek 不仅在技术原理上有着显著的差异,还展现出了在较低算力下达到 OpenAI API 水平的卓越能力。本文将深入剖析这些独特之处…...
OpenAI推出Deep Research带给我们怎样的启示
OpenAI 又发新产品了,这次是面向深度研究领域的智能体产品 ——「Deep Research」,貌似被逼无奈的节奏… 在技术方面,Deep Research搭载了优化后o3模型并通过端到端强化学习在多个领域的复杂浏览和推理任务上进行了训练。因没有更多的技术暴露…...
第三周 树
猫猫和企鹅 分数 10 全屏浏览 切换布局 作者 姜明欣 单位 河北大学 王国里有 nn 个居住区,它们之间有 n−1 条道路相连,并且保证从每个居住区出发都可以到达任何一个居住区,并且每条道路的长度都为 1。 除 1号居住区外,每个居…...
【挖矿——前缀和】
题目 代码 #include <bits/stdc.h> using namespace std; const int N 2e610; int l[N], r[N]; int n, m, ans; int main() {cin >> n >> m;for(int i 1; i < n; i){int p;cin >> p;if(p < 0) l[-p];else r[p];}for(int i 1; i < m; i)l[…...
整个 PVE 系统崩溃后,怎么恢复 PVE 给虚拟机分配的虚拟硬盘中的数据
背景 我有一块 ssd 用于 PVE 系统和 虚拟机 安装,还有一块 HDD 用来存储数据。这个HDD按照 把 PVE 下的机械硬盘(非SSD系统盘)分配给虚拟机使用 进行挂载和配置。主要过程是 PVE中 “数据中信” -> “存储” -> “添加” -> “目录…...
Java循环操作哪个快
文章目录 Java循环操作哪个快一、引言二、循环操作性能对比1、普通for循环与增强for循环1.1、代码示例 2、for循环与while循环2.1、代码示例 3、循环优化技巧3.1、代码示例 三、循环操作的适用场景四、使用示例五、总结 Java循环操作哪个快 一、引言 在Java开发中,…...