Oracle归档日志管理与RMAN清理实战:从原理到自动化运维
1. 项目背景与核心痛点最近在巡检一套运行了快三年的Oracle生产库时发现/u01/app/oracle/arch目录的磁盘使用率已经飙到了95%以上告警邮件响个不停。这场景但凡是个DBA估计都经历过。archive_logs也就是归档日志是Oracle数据库开启归档模式后重做日志文件Redo Log的副本。它的核心作用是保证数据库的恢复能力比如做基于时间点的不完全恢复或者搭建Data Guard物理备库都离不开它。但问题就在于这玩意儿只增不减。只要数据库有事务活动就会源源不断地产生。如果只用不删再大的磁盘也能给你塞满。一旦归档目录满了数据库就会挂起Hang所有写操作都会停摆业务直接中断。所以清理归档日志不是可选项而是必须定期执行的运维动作。然而清理归档日志远不是一句rm -rf那么简单。你得考虑哪些能删删了之后对备份恢复策略有什么影响手动删和用RMAN删有什么区别怎么删才能既释放空间又不影响数据库的可用性和未来的恢复这篇文章我就结合这次实际的清理经历把归档日志的管理逻辑、清理策略和具体操作步骤掰开揉碎了讲清楚。无论你是刚接触Oracle的新手还是想优化现有流程的老手都能找到可落地的参考。2. 归档日志的核心价值与管理逻辑在动手清理之前我们必须先搞明白我们清理的到底是什么以及为什么不能乱删。2.1 归档日志是什么为什么会产生你可以把Oracle数据库想象成一个不断在写日记的账房先生。重做日志文件Redo Log File就是他手里的“当前日记本”实时记录每一笔账目变更。但这个日记本篇幅有限写满了就得换一本。在非归档模式下写满的旧日记本就直接丢弃了。而在归档模式下系统会在这个“旧日记本”被覆盖重用之前把它完整地复印一份保存起来。这份“复印件”就是归档日志。开启归档模式是生产数据库的标配因为它带来了两个至关重要的能力数据恢复允许你将数据库恢复到过去的任意时间点Point-in-Time Recovery。没有归档日志你只能做全库恢复数据会丢失从上次备份到故障发生期间的所有更改。高可用与容灾这是搭建物理备库Data Guard的基础。主库产生的归档日志会持续传输并应用到备库保持数据同步。所以归档日志是数据库的“后悔药”和“备胎”的基石。它的管理直接关系到RPO恢复点目标和RTO恢复时间目标。2.2 归档日志的存储与命名规则归档日志默认存储在由LOG_ARCHIVE_DEST_1参数指定的目录下通常就是$ORACLE_BASE/arch或$ORACLE_HOME/dbs/arch。它的文件名通常包含序列号、线程号等信息例如1_100_1234567890.arc。序列号是连续递增的这为我们判断日志的先后顺序和完整性提供了依据。管理这些文件数据库主要依靠一个内部视图V$ARCHIVED_LOG。这个视图记录了所有已知归档日志的元信息包括名称、位置、序列号、是否已应用对于备库、是否已备份等关键状态。任何清理操作理论上都应该与这个视图的状态同步。如果你直接在操作系统层面删除文件但数据库的控制文件里还认为它存在将来恢复时就会报错找不到对应的归档日志。2.3 何时可以安全删除归档日志这是清理操作中最关键的一环。一个归档日志文件是否可删取决于它是否已经完成了它的“历史使命”。通常满足以下条件之一即可认为安全已被RMAN备份并过期这是最标准、最推荐的方式。你用RMAN对数据库进行了备份全备、增量备并且备份策略中保留的窗口例如保留7天已过那么早于这个窗口的归档日志在RMAN看来就可以被标记为“过时”OBSOLETE进而删除。已被传输并应用到所有备库在Data Guard环境中一个归档日志必须已经成功传输到所有配置的备库并且被备库应用APPLIED之后在主库上才可考虑删除。否则会破坏备库的同步。已被手工确认不再需要例如你已经做了新的全量备份并且确定永远不需要恢复到比这个备份更早的时间点。但这需要极其谨慎的评估。核心原则永远基于备份来确定删除范围而不是基于磁盘空间。空间告警是触发清理动作的信号但具体删哪些必须由备份策略和恢复需求来决定。3. 清理归档日志的两种核心方式与选型清理归档日志主要有两种途径操作系统命令手动删除和使用RMAN命令管理。两者有本质区别。3.1 方式一操作系统命令手动删除不推荐用于生产就是直接用rmLinux或delWindows命令删除文件。优点直接、快速。致命缺点操作与数据库内部状态不同步。你删了文件但V$ARCHIVED_LOG视图和控制文件里依然记录着这些文件的信息。这会导致RMAN备份失败RMAN备份归档日志时会去读取这些记录发现文件不存在而报错。数据库恢复失败当需要进行恢复时RMAN会根据记录去寻找这些文件找不到则恢复中断。空间报告失真V$RECOVERY_FILE_DEST等视图显示的空间使用情况会不准确。除非你紧接着执行CROSSCHECK ARCHIVELOG ALL;和DELETE EXPIRED ARCHIVELOG ALL;命令来同步RMAN目录否则绝不建议直接在OS层面删除。这充其量是一种紧急情况下的“临时止血”措施后续必须进行状态同步。3.2 方式二使用RMAN进行管理强烈推荐RMANRecovery Manager是Oracle官方的备份恢复工具它管理归档日志的方式是“声明式”的。你不需要告诉它删哪个具体文件而是告诉它你的备份保留策略由它来判断哪些归档日志已经“过时”OBSOLETE然后进行删除。这样做的好处是RMAN在删除文件的同时会更新自己的恢复目录或控制文件保持内外状态一致确保未来的备份和恢复操作不会出错。RMAN清理的核心命令逻辑CROSSCHECK ARCHIVELOG ALL;检查磁盘上的归档日志文件是否与RMAN记录的一致。将丢失的文件标记为“EXPIRED”过期。DELETE EXPIRED ARCHIVELOG ALL;删除那些被标记为“EXPIRED”的记录注意这里删除的是RMAN目录中的记录对于已物理丢失的文件此命令不操作磁盘。DELETE OBSOLETE;根据配置的保留策略如CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;删除所有过时的备份集及其相关的归档日志。这是释放空间的主动操作。DELETE ARCHIVELOG UNTIL TIME ‘SYSDATE-7’;删除7天之前的所有归档日志。这是一种更直接的时间点删除方式但需谨慎确保该时间点后的备份是完整的。DELETE ARCHIVELOG ALL BACKED UP 2 TIMES TO DEVICE TYPE DISK;删除所有已备份到磁盘至少2次的归档日志。这是一种基于备份次数的策略。选型结论对于任何严肃的生产环境必须使用RMAN作为归档日志清理的唯一或主要工具。手动删除仅作为RMAN操作后的辅助空间释放例如删除已被RMAN标记可删但可能因权限等问题残留的物理文件且需配合CROSSCHECK命令。4. 实战基于RMAN的归档日志清理完整流程下面我以Linux环境为例展示一次完整的、安全的归档日志清理操作。假设我们的目标是清理所有早于“最近一次成功全备”之前的归档日志。4.1 准备工作与状态检查首先连接到RMAN并检查当前归档日志的生成情况和磁盘空间。# 使用sysdba权限连接到RMAN rman target / # 查看数据库的归档模式 SQL ARCHIVE LOG LIST; # 输出应显示“Database log mode: Archive Mode” # 在RMAN中查看所有归档日志信息 RMAN LIST ARCHIVELOG ALL; # 查看当前的备份保留策略 RMAN SHOW RETENTION POLICY; # 例如输出可能是RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS同时在操作系统层面检查归档目录大小df -h /u01/app/oracle/arch du -sh /u01/app/oracle/arch/*4.2 执行交叉检查Crosscheck这一步是让RMAN的目录状态与磁盘上的物理文件同步。如果之前有过任何手动删除这个命令会将丢失的文件在RMAN中标记为EXPIRED。RMAN CROSSCHECK ARCHIVELOG ALL;执行后RMAN会报告哪些文件是AVAILABLE可用哪些是EXPIRED过期即记录中存在但磁盘上找不到。4.3 删除过期记录Delete Expired删除上一步中被标记为EXPIRED的归档日志记录。注意如果文件本身已在磁盘上被手动删除这个命令不会报错如果文件还存在RMAN也不会去删除物理文件。它只是清理元数据。RMAN DELETE EXPIRED ARCHIVELOG ALL;4.4 根据保留策略删除过时备份及归档日志这是释放磁盘空间的核心步骤。DELETE OBSOLETE命令会依据SHOW RETENTION POLICY显示的策略判断哪些备份集及其关联的归档日志已经超出了保留窗口然后同时删除物理文件和元数据记录。RMAN DELETE OBSOLETE;重要提示在执行前强烈建议先使用REPORT OBSOLETE命令预览一下哪些文件会被删除确认无误后再执行DELETE。RMAN REPORT OBSOLETE; # 仔细查看输出列表确认没有误删近期需要的备份或日志。4.5 使用更精确的时间点删除如果你不想依赖备份策略或者想清理特定时间点之前的日志可以使用DELETE ARCHIVELOG UNTIL TIME。例如删除14天前的所有归档日志RMAN DELETE ARCHIVELOG UNTIL TIME ‘SYSDATE-14’;警告使用此命令前你必须百分之百确认你拥有一个在这个时间点之后最好是紧挨着这个时间点的完整有效备份。否则你将无法恢复到比这个时间点更早的状态。4.6 清理后的验证清理完成后再次检查状态确保空间已释放且数据库状态正常。# 在RMAN中列出剩余的归档日志确认已被清理 RMAN LIST ARCHIVELOG ALL; # 在操作系统层面确认空间释放 df -h /u01/app/oracle/arch # 尝试切换几次日志确保归档进程工作正常 SQL ALTER SYSTEM SWITCH LOGFILE; SQL ARCHIVE LOG LIST; -- 查看最新的归档序列号是否在递增5. 自动化运维编写安全的清理脚本手动执行毕竟容易遗忘自动化才是运维的正道。下面是一个结合了谨慎性检查的Shell脚本示例可以放入crontab中定期执行例如每天凌晨2点。#!/bin/bash # 脚本名purge_archivelog.sh # 功能安全地清理过时的Oracle归档日志 # 作者DBA经验分享 source /home/oracle/.bash_profile # 加载Oracle环境变量 # 定义变量 LOG_FILE/home/oracle/scripts/log/purge_arch_$(date %Y%m%d).log RMAN_CMD_FILE/home/oracle/scripts/rman_purge.rman # 创建RMAN命令文件 cat ${RMAN_CMD_FILE} EOF RUN { # 1. 交叉检查所有归档日志 CROSSCHECK ARCHIVELOG ALL; # 2. 删除过期的归档日志记录 DELETE EXPIRED ARCHIVELOG ALL; # 3. 报告哪些备份/日志将被视为过时预览不执行 REPORT OBSOLETE; # 4. 根据保留策略删除过时的备份和归档日志实际执行 DELETE NOPROMPT OBSOLETE; # 5. 可选删除已备份至少2次到磁盘的归档日志更激进 # DELETE ARCHIVELOG ALL BACKED UP 2 TIMES TO DEVICE TYPE DISK; } EOF # 执行RMAN清理并将输出记录到日志 echo 开始执行归档日志清理时间$(date) ${LOG_FILE} rman target / cmdfile${RMAN_CMD_FILE} log${LOG_FILE} append # 检查RMAN执行是否成功简单通过日志末尾判断 if tail -5 ${LOG_FILE} | grep -q RMAN execution complete; then echo RMAN清理任务执行成功。 ${LOG_FILE} # 可以在这里添加邮件通知成功 else echo 警告RMAN清理任务可能未正常完成请检查日志 ${LOG_FILE} # 这里应该触发告警例如发送邮件或短信 # mail -s Oracle归档日志清理失败告警 dba-teamcompany.com ${LOG_FILE} fi echo 清理执行结束时间$(date) ${LOG_FILE} # 清理临时命令文件 rm -f ${RMAN_CMD_FILE} # 附也可以添加一步操作系统层面的冗余文件清理风险自担 # 例如查找可能残留的 .arc 文件此操作需极度谨慎最好在测试环境验证 # find /u01/app/oracle/arch -name *.arc -mtime 30 -exec ls -l {} \; ${LOG_FILE} # 确认列表无误后才考虑将 -exec ls -l {} \; 替换为 -delete脚本关键点说明预览机制脚本中包含了REPORT OBSOLETE;它会输出将要删除的内容。在实际自动化中你可以选择注释掉这一行或者将其输出单独保存以供审计。日志记录所有操作记录到日志文件便于事后追溯和排错。错误处理简单的成功与否判断生产环境应增强错误捕获和告警。谨慎的OS清理脚本最后注释了一段find命令。强烈不建议在自动化脚本中直接启用。如果确实需要应先在测试环境充分验证并且确保只在执行了成功的RMANDELETE OBSOLETE之后针对非常旧的文件例如-mtime 30进行操作并且先ls确认再考虑-delete。将脚本加入crontab# 编辑oracle用户的crontab crontab -e # 添加一行每天凌晨2点执行 0 2 * * * /bin/bash /home/oracle/scripts/purge_archivelog.sh6. 常见踩坑点与疑难问题排查即使按照上述流程操作在实际环境中仍可能遇到各种问题。这里分享几个我踩过的坑和解决办法。6.1 坑一RMAN删除后磁盘空间未释放现象执行DELETE OBSOLETE后RMAN报告文件已删除但df -h显示磁盘空间没有变化。根因在Linux/Unix系统中如果一个文件正在被进程打开即使你删除了它rm其占用的磁盘空间也不会立即释放直到所有打开该文件的进程都关闭它。在Oracle中归档进程ARCn或RMAN备份进程本身可能仍持有已删除归档日志文件的句柄。排查与解决使用lsof命令查找哪些进程正在使用归档目录下的文件即使文件已被删除。lsof | grep /u01/app/oracle/arch | grep deleted这会列出所有打开了已删除文件的进程及其PID。通常这些进程是ora_arc或rman进程。不要轻易杀死归档进程可以尝试以下方法等待如果是不重要的进程或备份即将完成可以等待其自然结束。重启相关进程对于RMAN备份进程可以尝试在RMAN中ABORT该备份会话。对于归档进程在极端情况下且确认不影响时可以重启数据库实例SHUTDOWN IMMEDIATE; STARTUP这是最彻底的方法但需要安排停机窗口。使用/proc文件系统强制释放找到占用文件的进程PID然后执行cat /dev/null /proc/$PID/fd/$FD_NUM需root权限风险高不推荐生产环境随意使用。6.2 坑二DELETE OBSOLETE 不删除任何归档日志现象执行命令后输出显示“没有过时的对象”。根因保留策略配置为冗余度REDUNDANCY例如CONFIGURE RETENTION POLICY TO REDUNDANCY 2;这意味着RMAN会保留至少2个完整的备份集。如果近期备份失败或只有1个成功备份即使归档日志很旧也不会被标记为过时。没有成功的全量备份RECOVERY WINDOW策略依赖于备份。如果你从未做过全备或者最近的全备失败RMAN就没有计算恢复窗口的基准点因此不会认为任何归档日志过时。归档日志被用于其他用途例如这些日志被用于一个尚未完成的Data Guard同步或者被标记为“强制保留”例如通过CHANGE ARCHIVELOG ... KEEP命令。解决检查并确认备份策略和备份状态RMAN LIST BACKUP SUMMARY;执行一次成功的全量数据库备份。检查归档日志状态SQL SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG WHERE DEST_ID1;(在Data Guard环境中查看是否被应用)。6.3 坑三归档目录权限或空间问题导致归档失败现象数据库告警日志alert_SID.log中出现“ORA-00257: archiver error. Connect internal only, until freed”或“ORA-16038: log string sequence# string cannot be archived”。根因归档目录所在磁盘已满或Oracle软件用户通常是oracle对该目录没有写权限。紧急处理步骤立即清理空间这是最高优先级。按照本文第4部分的方法快速登录RMAN执行DELETE OBSOLETE;。如果情况紧急甚至可以临时使用DELETE ARCHIVELOG UNTIL TIME ‘SYSDATE-1’;删除昨天的日志前提是你有今天的备份。检查权限ls -ld /u01/app/oracle/arch确保目录所有者和组是oracle且有写权限。释放空间后手动切换日志触发归档SQL ALTER SYSTEM ARCHIVE LOG CURRENT;然后检查告警日志确认归档是否恢复正常。6.4 坑四ASM磁盘组中的归档日志清理如果归档目录位于ASM磁盘组中例如DATA/arch操作逻辑与文件系统类似但命令和查看方式稍有不同。查看ASM空间asmcmd lsdg查看磁盘组使用率。RMAN清理命令完全通用RMAN命令无需改变它能识别ASM中的文件。手动查看文件需要使用asmcmd工具。asmcmd ASMCMD cd DATA/arch ASMCMD ls -l切勿在asmcmd中直接rm和在OS中直接删除文件一样这会导致元数据不同步。清理必须通过RMAN进行。7. 进阶策略归档日志生命周期管理的最佳实践单纯的清理是“治标”建立完善的管理策略才是“治本”。制定明确的备份保留策略根据业务RPO要求在RMAN中合理配置RECOVERY WINDOW如7天或30天。这是自动化清理的基石。使用快速恢复区FRA将DB_RECOVERY_FILE_DEST参数指向一个专门的大空间目录或ASM磁盘组。Oracle可以自动管理FRA内的空间当空间不足时会自动删除过时的备份和归档日志。这大大简化了管理。监控FRA使用率SQL SELECT * FROM V$RECOVERY_FILE_DEST;分级存储与定期转移对于需要长期保留用于审计或年度恢复演练的归档日志不要简单地留在生产存储上。可以编写脚本定期将超过恢复窗口的归档日志COPY到廉价的对象存储或磁带库并从生产目录中DELETE。确保转移和删除动作在RMAN内完成使用BACKUP ARCHIVELOG ... DELETE INPUT格式。监控与告警除了监控磁盘空间更要监控归档日志的生成速率、备份状态和FRA使用率。设置预警阈值如80%而不是等到95%才处理。定期恢复演练定期从备份和归档日志中恢复数据库到测试环境。这是检验你的备份和归档日志管理策略是否有效的唯一金标准。如果恢复失败所有清理工作都失去了意义。归档日志管理是Oracle DBA日常工作中看似枯燥却至关重要的一环。它考验的不是高深的技巧而是严谨的流程、对备份恢复原理的深刻理解以及防患于未然的运维意识。希望这篇从实战出发的总结能帮你建立起安全高效的归档日志清理体系让“磁盘空间不足”的告警不再成为深夜加班的原因。记住每一次清理操作前多问一句“如果明天需要恢复我今天删的东西会碍事吗”想清楚这个问题你的操作就不会有大的偏差。

相关新闻

C++回调函数实战:从函数指针到现代lambda与线程安全设计

C++回调函数实战:从函数指针到现代lambda与线程安全设计

1. 项目概述:为什么我们需要重新审视C回调 在C的日常开发里,尤其是涉及到异步操作、事件驱动或者框架设计时,你大概率会频繁地跟一个概念打交道——回调函数(Callback)。我第一次系统性地思考回调,是在为一…

2026/8/5 7:35:18 阅读更多 →
Python类常见面试题:这些坑90%的面试者都栽过

Python类常见面试题:这些坑90%的面试者都栽过

不论校招, 还是社招, 面向对象皆为高频考点。今日, 我梳理了最为常见的面试题以及其坑, 看过之后面试便不会慌了。1. self到底是什么?能不用吗?面试题: 下面的代码会报错吗?class A:def method():print("hello") a A()…

2026/8/5 7:35:18 阅读更多 →
MATLAB小提琴图绘制全攻略:从核密度估计到高级定制

MATLAB小提琴图绘制全攻略:从核密度估计到高级定制

1. 项目概述:为什么你需要小提琴图?如果你用过MATLAB画箱线图,那你肯定遇到过那个经典问题:箱线图把所有数据点都压缩成了几个统计量(中位数、四分位数),虽然能看出分布的中心和离散程度&#x…

2026/8/5 7:35:18 阅读更多 →

最新新闻

终极FLUX.1-dev低显存优化指南:24GB以下显卡的ComfyUI完整解决方案

终极FLUX.1-dev低显存优化指南:24GB以下显卡的ComfyUI完整解决方案

终极FLUX.1-dev低显存优化指南:24GB以下显卡的ComfyUI完整解决方案 【免费下载链接】flux1-dev 项目地址: https://ai.gitcode.com/hf_mirrors/Comfy-Org/flux1-dev 想要在有限的硬件资源上体验顶尖的AI图像生成技术吗?FLUX.1-dev作为Black Fore…

2026/8/5 19:19:36 阅读更多 →
如何在FF14中快速构建强大插件:Dalamud框架终极指南

如何在FF14中快速构建强大插件:Dalamud框架终极指南

如何在FF14中快速构建强大插件:Dalamud框架终极指南 【免费下载链接】Dalamud FFXIV plugin framework and API 项目地址: https://gitcode.com/GitHub_Trending/da/Dalamud 你是否曾经在玩《最终幻想14》时,希望有一个插件能帮你自动整理背包&am…

2026/8/5 19:19:36 阅读更多 →
成都网站建设及推广如何破局:从底层逻辑到流量变现的全链路实操指南

成都网站建设及推广如何破局:从底层逻辑到流量变现的全链路实操指南

做成都网站建设及推广的朋友,估计最近都在为“流量焦虑”而失眠。现在的互联网环境,早就不是以前那种“开个网站、发点文章就能等着客户上门”的傻白甜时代了。如果你现在还抱着“只要我做了网站,SEO自然就来了”这种天真想法,那大概率是在给搜索引擎和同行做慈善。我是老李…

2026/8/5 19:19:36 阅读更多 →
3步掌握:JarvisArt智能修图代理的颠覆性体验

3步掌握:JarvisArt智能修图代理的颠覆性体验

3步掌握:JarvisArt智能修图代理的颠覆性体验 【免费下载链接】JarvisArt [NeurIPS 2025] JarvisArt: Liberating Human Artistic Creativity via an Intelligent Photo Retouching Agent 项目地址: https://gitcode.com/gh_mirrors/ja/JarvisArt 在当今AI修图…

2026/8/5 19:19:36 阅读更多 →
5分钟搞定Zotero PDF翻译插件:学术文献双语翻译终极指南

5分钟搞定Zotero PDF翻译插件:学术文献双语翻译终极指南

5分钟搞定Zotero PDF翻译插件:学术文献双语翻译终极指南 【免费下载链接】zotero-pdf2zh PDF2zh for Zotero | Zotero PDF中文翻译插件 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-pdf2zh 还在为阅读英文文献而烦恼吗?Zotero PDF翻译插…

2026/8/5 19:19:36 阅读更多 →
如何快速恢复QQ空间历史数据:GetQzonehistory完整指南

如何快速恢复QQ空间历史数据:GetQzonehistory完整指南

如何快速恢复QQ空间历史数据:GetQzonehistory完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾经想要找回QQ空间里那些被遗忘的说说、留言和珍贵回忆&#x…

2026/8/5 19:18:36 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →