Oracle字符串拆分实战:INSTR、SUBSTR与REGEXP_SUBSTR函数详解
1. 项目概述字符串拆分的核心场景与价值在数据库开发与数据处理中我们经常会遇到一个经典且高频的需求如何将一个包含特定分隔符的字符串字段拆分成多行或多列的数据比如你手头有一张用户表其中有一个字段interests存储着用户爱好数据可能是“篮球,足球,音乐,阅读”这样的逗号分隔字符串。当业务需要统计每个爱好的用户数量或者需要将爱好与其他表进行关联查询时这种存储方式就带来了巨大的不便。直接对这个字段进行LIKE模糊查询不仅效率低下而且无法实现精确的关联和分析。这就是字符串拆分String Splitting要解决的核心问题。它不是一个炫技的功能而是数据清洗、报表生成、接口数据解析等实际工作中绕不开的基础操作。在 Oracle 数据库中虽然没有像其他一些数据库如 SQL Server 的STRING_SPLIT那样提供一个开箱即用的专用拆分函数但它提供了一套强大而灵活的基础字符串函数组合足以应对从简单到复杂的各种拆分场景。其中最核心的“三剑客”便是INSTR、SUBSTR和REGEXP_SUBSTR。掌握它们你就能将一团“糨糊”般的拼接字符串瞬间梳理成清晰规整的表格数据。我处理过太多因为历史设计或外部接口原因导致的这种“逗号分隔值”字段可以说熟练运用这几种方法是每个 Oracle 开发者必备的数据处理技能。接下来我们就深入拆解这几种方法从原理到实战让你彻底搞懂如何根据指定字符拆分字段。2. 核心函数深度解析INSTR、SUBSTR 与 REGEXP_SUBSTR在动手拆分之前我们必须先吃透手中的“工具”。Oracle 的字符串函数非常丰富但用于拆分这三者是基石。理解它们的运作机制和差异是写出高效、准确拆分逻辑的前提。2.1 INSTR定位分隔符的“指南针”INSTR函数的作用是返回一个字符串在另一个字符串中首次或指定第 N 次出现的位置。你可以把它想象成在一个长句子中寻找某个特定单词的位置索引器。它的基本语法是INSTR(string, substring [, start_position [, occurrence]])string被搜索的源字符串。substring要查找的子字符串即我们的分隔符如逗号,。start_position可选开始搜索的位置默认为 1字符串开头。occurrence可选指定要查找第几次出现的子串默认为 1第一次出现。关键点与实战心得INSTR返回的是数字位置。如果找不到子串则返回 0。这个特性在循环拆分时非常有用可以作为循环终止的判断条件。例如INSTR(‘A,B,C’, ‘,’, 1, 2)会返回 3因为在字符串 “A,B,C” 中从第1个字符开始找第2次出现的逗号在位置3“A,”之后。注意位置索引从 1 开始而不是 0。这是 Oracle 字符串函数的一个通用约定务必牢记否则在计算子串起止位置时极易出错。2.2 SUBSTR精准截取的“手术刀”SUBSTR函数用于从字符串中截取一部分。它根据你提供的开始位置和长度像手术刀一样精确地切出想要的片段。它的基本语法是SUBSTR(string, start_position [, length])string源字符串。start_position截取的开始位置。length可选要截取的长度。如果省略则截取从开始位置到字符串末尾的所有字符。关键点与实战心得SUBSTR是执行“切割”动作的核心。拆分的本质就是多次调用SUBSTR每次截取两个分隔符之间的部分。这里有一个极易踩坑的细节当start_position为 0 或负数时Oracle 会将其视为 1。而在拆分逻辑中我们经常需要计算“上一个逗号位置1”作为本次截取的开始如果上一个逗号不存在即第一次截取这个值可能是 0此时SUBSTR会从位置1开始截取这通常符合我们的预期但理解其行为很重要。2.3 REGEXP_SUBSTR正则表达式驱动的“智能切割机”REGEXP_SUBSTR是SUBSTR的超级增强版它使用正则表达式来定义匹配模式从而进行更复杂、更灵活的字符串提取。对于拆分来说它往往能一行代码解决INSTRSUBSTR需要多行循环才能处理的问题。它的基本语法简化版针对拆分场景是REGEXP_SUBSTR(string, pattern [, start_position [, occurrence [, match_parameter [, subexpression]]]])string源字符串。pattern正则表达式模式用于匹配你想要提取的部分。occurrence指定提取第几个匹配项这在拆分中至关重要。关键点与实战心得REGEXP_SUBSTR的强大在于pattern。例如要匹配非逗号的一个或多个字符模式可以写成‘[^,]’。其中[^,]表示“任何不是逗号的字符”表示“一次或多次”。这样它就能依次匹配出 “A”, “B”, “C”。它的occurrence参数让我们可以直接指定“给我第N个匹配项”无需自己写循环去计数极大地简化了代码。但需要注意的是正则表达式的功能强大也意味着开销相对较大在处理超大数据量时需要评估性能。3. 经典拆分方案实战从简单循环到一行搞定理解了工具我们就可以组合它们来构建解决方案。根据不同的场景和复杂度主要有两种经典的实现路径。3.1 方案一INSTR SUBSTR 递归/循环通用基础法这是最经典、最直观的方法尤其适合理解拆分过程的本质。其核心思想是利用INSTR动态找到第N个和第N1个分隔符的位置然后用SUBSTR截取它们之间的部分。我们通过一个示例来逐步拆解。假设有表TAGS数据如下IDTAG_LIST1篮球,足球,音乐2阅读,编程我们希望将TAG_LIST拆分成多行记录。步骤1构建递归查询CONNECT BY骨架在 Oracle 中生成序列数字最方便的方式是使用CONNECT BY子句。我们需要生成一个行号来表示要提取第几个元素。SELECT LEVEL AS lv FROM dual CONNECT BY LEVEL 10 -- 假设最多不会超过10个标签这会产生数字1到10。我们将用它作为occurrence出现次数的参数。步骤2关联数据并计算截取位置将原始表与数字序列关联并为每一行计算关键的位置信息。SELECT t.id, t.tag_list, lv, -- 上一个分隔符的位置如果是第一个则为0 INSTR(t.tag_list, ,, 1, lv - 1) AS prev_pos, -- 当前分隔符的位置如果是最后一个则为0 INSTR(t.tag_list, ,, 1, lv) AS curr_pos, -- 字符串总长度 LENGTH(t.tag_list) AS str_len FROM tags t CROSS JOIN ( SELECT LEVEL AS lv FROM dual CONNECT BY LEVEL 10 ) n WHERE lv (LENGTH(t.tag_list) - LENGTH(REPLACE(t.tag_list, ,, ))) 1这里WHERE子句是关键(LENGTH(str) - LENGTH(REPLACE(str, ,, ))) 1这个公式计算出了字符串中到底有多少个元素逗号数量1。它确保了不会生成多余的空行。步骤3应用SUBSTR完成截取有了prev_pos和curr_pos我们就可以确定每个子串的起止位置。开始位置prev_pos 1。如果prev_pos是0表示第一个元素则开始位置为1。截取长度如果curr_pos 0不是最后一个元素长度为curr_pos - prev_pos - 1如果curr_pos 0是最后一个元素则截取到字符串末尾。将逻辑整合进一个完整的查询SELECT t.id, SUBSTR( t.tag_list, DECODE(INSTR(t.tag_list, ,, 1, n.lv - 1), 0, 1, INSTR(t.tag_list, ,, 1, n.lv - 1) 1), DECODE(INSTR(t.tag_list, ,, 1, n.lv), 0, LENGTH(t.tag_list) 1, INSTR(t.tag_list, ,, 1, n.lv) ) - DECODE(INSTR(t.tag_list, ,, 1, n.lv - 1), 0, 1, INSTR(t.tag_list, ,, 1, n.lv - 1) 1) ) AS single_tag FROM tags t CROSS JOIN ( SELECT LEVEL AS lv FROM dual CONNECT BY LEVEL 20 ) n WHERE n.lv (LENGTH(t.tag_list) - LENGTH(REPLACE(t.tag_list, ,, ))) 1 ORDER BY t.id, n.lv;这个查询看起来复杂但核心就是那三个位置的计算。DECODE函数用于处理边界情况第一个和最后一个元素。实操心得这种方法虽然步骤稍多但优势在于其原理清晰且不依赖于正则表达式在任何版本的 Oracle 中均可使用。它是理解字符串拆分逻辑的绝佳教材。在实际写完后你可以尝试用CASE WHEN替换DECODE逻辑会更易读一些。3.2 方案二REGEXP_SUBSTR CONNECT BY简洁高效法如果你使用的 Oracle 版本支持正则表达式通常是 10g 及以上那么REGEXP_SUBSTR无疑是更优雅的选择。它可以将上述繁琐的位置计算浓缩成一个函数调用。针对同一个TAGS表拆分查询可以写得非常简洁SELECT t.id, REGEXP_SUBSTR(t.tag_list, ‘[^,]’, 1, n.lv) AS single_tag FROM tags t CROSS JOIN ( SELECT LEVEL AS lv FROM dual CONNECT BY LEVEL 20 ) n WHERE REGEXP_SUBSTR(t.tag_list, ‘[^,]’, 1, n.lv) IS NOT NULL ORDER BY t.id, n.lv;逐行解析REGEXP_SUBSTR(t.tag_list, ‘[^,]’, 1, n.lv)这是核心。模式‘[^,]’匹配一个或多个非逗号字符。1表示从字符串第一个字符开始搜索。n.lv表示取第lv个匹配项。CROSS JOIN ... CONNECT BY同样用于生成序列数字lv。WHERE ... IS NOT NULL这是终止条件。当lv超过实际存在的元素个数时REGEXP_SUBSTR会返回NULL从而过滤掉这些多余的行。方案对比与选型建议特性INSTRSUBSTR 方案REGEXP_SUBSTR 方案代码复杂度较高需手动计算位置极低一行核心函数可读性一般逻辑分散很好意图明确兼容性所有 Oracle 版本通常需 10g性能对于简单分隔符通常更快正则引擎有开销大数据量时可能稍慢灵活性固定分隔符处理能力强极强可处理复杂模式如多种分隔符个人经验在大多数现代开发环境中我优先推荐REGEXP_SUBSTR方案。它的代码简洁性带来的维护收益远超过其微小的性能差异。除非是处理海量数据且性能瓶颈确在此处或者环境版本受限否则REGEXP_SUBSTR是首选。4. 高级场景与边界情况处理真实世界的数据从来都不是完美的课本示例。空值、连续分隔符、结尾分隔符、长度不一致等问题层出不穷。一个健壮的拆分方案必须能妥善处理这些边界情况。4.1 处理空元素与连续分隔符假设你的数据是“篮球,,足球,”里面包含了连续逗号和结尾逗号。使用基础的[^,]模式它会匹配非逗号字符序列因此连续逗号之间“什么也没有”的空元素会被忽略。这有时是期望的行为有时却不是。如果需要保留空元素我们需要修改正则表达式模式。可以使用‘([^,]*)(,|$)’这种模式来匹配“零个或多个非逗号字符后跟一个逗号或字符串结束”然后通过子表达式提取第一部分。但更常用的技巧是利用REGEXP_COUNT预先计算元素总数并结合REGEXP_SUBSTR的NULL行为WITH data AS ( SELECT ‘篮球,,足球,’ AS str FROM dual ) SELECT LEVEL AS lv, -- 使用‘.*’匹配任何字符包括空但用‘?’非贪婪匹配并用‘|$’处理结尾 REGEXP_SUBSTR(str, ‘(.*?)(,|$)’, 1, LEVEL, NULL, 1) AS element FROM data CONNECT BY LEVEL REGEXP_COUNT(str, ‘,’) 1;这里模式‘(.*?)(,|$)’是一个非贪婪匹配.*?会匹配尽可能少的字符直到遇到逗号或字符串结束。1作为subexpression参数表示提取第一个括号分组(.*?)的内容。这样就能正确提取出 “篮球”, “”(空), “足球”, “”(空) 四个元素。4.2 处理多种或复杂分隔符当分隔符不是单一的逗号可能是分号、空格、甚至是组合如“,; ”时正则表达式的优势就彻底凸显了。示例拆分“苹果; 橙子,香蕉 葡萄”分隔符为分号、逗号或空格SELECT REGEXP_SUBSTR(‘苹果; 橙子,香蕉 葡萄’, ‘[^;,\s]’, 1, LEVEL) AS fruit FROM dual CONNECT BY REGEXP_SUBSTR(‘苹果; 橙子,香蕉 葡萄’, ‘[^;,\s]’, 1, LEVEL) IS NOT NULL;模式‘[^;,\s]’中的\s代表任何空白字符空格、制表符等。这个模式匹配一个或多个“既不是分号、逗号也不是空白”的字符从而完美拆分。4.3 性能优化与大数据量处理当需要对上百万行数据进行拆分时性能至关重要。以下是一些实测有效的优化技巧限制 CONNECT BY 的层级在生成数字序列的子查询中尽量使用一个贴近实际最大元素数量的上限而不是一个很大的数如CONNECT BY LEVEL 100。这能减少不必要的笛卡尔积生成。可以先通过SELECT MAX(REGEXP_COUNT(tag_list, ‘,’)1) FROM big_table估算出最大值。使用 REGEXP_COUNT 进行精确过滤在WHERE子句中使用REGEXP_COUNT或LENGTH-LENGTH(REPLACE)公式精确过滤避免连接后产生大量NULL行再过滤。这是提升性能最有效的一步。考虑使用 PL/SQL 或临时表对于极其复杂的拆分逻辑或海量数据有时将拆分逻辑写入 PL/SQL 过程利用集合类型如NESTED TABLE或全局临时表进行阶段性处理会比纯 SQL 单条语句更高效、更可控。为源表创建合适的索引如果拆分操作经常基于某个过滤条件如WHERE create_date …确保该条件字段有索引先快速缩小数据范围再进行拆分操作。5. 常见问题排查与实战技巧实录即使理解了原理和方案在实际编码和运行中你依然会遇到各种“坑”。下面是我在多年实践中总结的一些典型问题和解决技巧。5.1 问题一拆分结果出现多余的空行或 NULL 行现象查询结果比预期的元素多多出来的行其single_tag字段为NULL或空字符串。根因与排查CONNECT BY 层级过高数字序列生成的最大值如LEVEL 100远大于实际需要的元素个数。对于源字符串中不存在的lvREGEXP_SUBSTR会返回NULL但如果没有被WHERE子句过滤掉就会产生空行。WHERE 过滤条件不准确使用了错误的公式计算元素数量。例如用LENGTH(tag_list)而不是(LENGTH(tag_list) - LENGTH(REPLACE(tag_list, ‘,’, ‘’))) 1。解决方案 确保WHERE子句能精确匹配实际元素数量。对于REGEXP_SUBSTR方案使用WHERE REGEXP_SUBSTR(…) IS NOT NULL是最稳妥的。对于INSTRSUBSTR方案务必使用那个经典的“逗号数1”公式。5.2 问题二拆分后字符串首尾的空格问题现象拆分出的元素开头或结尾带有空格例如“ 篮球 ”。根因与排查源数据中分隔符前后本身就有空格。例如数据是“篮球, 足球 , 音乐”。解决方案在拆分后使用TRIM()函数去除首尾空格。SELECT TRIM(REGEXP_SUBSTR(tag_list, ‘[^,]’, 1, lv)) AS clean_tag FROM …或者在正则表达式中直接排除空格。但要注意如果元素内部允许有空格如“纽约 尼克斯队”就不能简单排除。-- 匹配非逗号且非空格的字符这会把“纽约 尼克斯”拆成“纽约”和“尼克斯” SELECT REGEXP_SUBSTR(tag_list, ‘[^,\s]’, 1, lv) AS tag FROM …更稳妥的做法是先拆分再对需要清理的字段使用TRIM。5.3 问题三ORA-01489: 字符串连接的结果过长现象在拆分非常长的字符串例如一个包含几千个字符的字段时可能会遇到这个错误。虽然拆分本身不涉及连接但在某些复杂查询或与LISTAGG反向操作时可能触发。排查与解决这个错误通常不是拆分步骤直接导致的而是后续处理的结果。检查是否在拆分后使用了GROUP BY并配合了类似WM_CONCAT或LISTAGG在没有设置ON OVERFLOW子句时的函数。确保对可能超长的聚合结果有处理策略例如使用SUBSTR截断或采用 CLOB 处理方式。5.4 实战技巧将拆分逻辑封装为视图或函数如果一个拆分逻辑需要在多个查询中重复使用将其封装起来是明智的选择。创建视图CREATE OR REPLACE VIEW vw_split_tags AS SELECT t.id, REGEXP_SUBSTR(t.tag_list, ‘[^,]’, 1, n.lv) AS single_tag, n.lv AS tag_order FROM tags t CROSS JOIN (SELECT LEVEL AS lv FROM dual CONNECT BY LEVEL 50) n WHERE REGEXP_SUBSTR(t.tag_list, ‘[^,]’, 1, n.lv) IS NOT NULL;这样业务查询直接SELECT * FROM vw_split_tags即可逻辑清晰且易于维护。创建管道表函数Pipelined Table Function 对于更复杂、需要过程化逻辑处理的拆分例如根据不同的分隔符规则进行拆分可以创建一个返回集合的管道函数。这样可以在 PL/SQL 中实现复杂的拆分算法并以表的形式返回结果兼具灵活性和性能。CREATE TYPE tag_item_type AS OBJECT (id NUMBER, tag VARCHAR2(100)); CREATE TYPE tag_item_table AS TABLE OF tag_item_type; CREATE OR REPLACE FUNCTION split_tags_pipe(p_tag_list VARCHAR2) RETURN tag_item_table PIPELINED IS v_start_pos NUMBER : 1; v_end_pos NUMBER; v_delimiter CHAR(1) : ‘,’; BEGIN IF p_tag_list IS NULL THEN RETURN; END IF; LOOP v_end_pos : INSTR(p_tag_list, v_delimiter, v_start_pos); IF v_end_pos 0 THEN PIPE ROW (tag_item_type(NULL, SUBSTR(p_tag_list, v_start_pos))); EXIT; ELSE PIPE ROW (tag_item_type(NULL, SUBSTR(p_tag_list, v_start_pos, v_end_pos - v_start_pos))); v_start_pos : v_end_pos 1; END IF; END LOOP; RETURN; END; / -- 使用方式 SELECT * FROM TABLE(split_tags_pipe(‘篮球,足球,音乐’));这种方法将拆分逻辑完全黑盒化为调用者提供了最简洁的接口特别适合在复杂的数据处理流程中集成。选择哪种方案取决于你的具体需求是对 SQL 的掌控力还是对封装性和复用性的要求。

相关新闻

Spring Boot 3.2 集成 Claude 3.5 Sonnet 生产环境超时与上下文...

Spring Boot 3.2 集成 Claude 3.5 Sonnet 生产环境超时与上下文...

Spring Boot 3.2 集成 Claude 3.5 Sonnet 生产环境超时与上下文截断问题排查实录问题现象上周二凌晨三点,线上订单智能审核服务突然告警。监控面板显示Claude API调用成功率从99.2%暴跌至67%,P99延迟从320ms飙升到8.7s。错误日志集中出现两类异常&#x…

2026/8/6 3:35:24 阅读更多 →
OLTP与OLAP核心差异解析及StarRocks与TiDB选型实战指南

OLTP与OLAP核心差异解析及StarRocks与TiDB选型实战指南

1. 从“交易”到“分析”:OLTP与OLAP的本质分野在数据库领域,OLTP和OLAP是两个最核心、也最常被混淆的概念。我见过不少项目,初期为了省事,试图用一个数据库系统去包打天下,结果在业务发展到一定阶段后,无论…

2026/8/6 3:35:24 阅读更多 →
O1-preview 推理模型的后端架构适配:从“补全“到“思考“的范式迁移

O1-preview 推理模型的后端架构适配:从“补全“到“思考“的范式迁移

O1-preview 推理模型的后端架构适配:从"补全"到"思考"的范式迁移项目背景上周我们在重构内部数据分析平台的智能问答模块时,发现基于 GPT-4o 的问答链路在处理多步骤推理任务时,P99 延迟飙升至 8.4 秒,且答案…

2026/8/6 3:35:24 阅读更多 →

最新新闻

技术深耕匠心赋能行业革新 集之互动引领AI品牌定制剧营销全新未来

技术深耕匠心赋能行业革新 集之互动引领AI品牌定制剧营销全新未来

数字技术的飞速迭代,正在重构品牌营销的底层逻辑与行业格局,AI影视工业化的全面落地,让品牌内容营销正式告别传统实拍高成本、低效率、难量产的旧时代,迈入智能化、精品化、常态化、低成本的全新发展阶段。AI品牌定制剧作为内容营…

2026/8/6 11:09:21 阅读更多 →
数据库系统工程师必知:DDL核心知识与软考实战技巧

数据库系统工程师必知:DDL核心知识与软考实战技巧

1. 项目概述:数据库系统工程师与DDL的核心价值作为数据库领域的"建筑师",数据库系统工程师需要掌握从底层结构设计到上层应用开发的全套技能。而数据定义语言(DDL)正是构建数据库大厦的基石工具,它定义了数据的组织方式和存储结构。…

2026/8/6 11:09:21 阅读更多 →
Horos医学影像软件:在macOS上免费获得专业级DICOM查看器的终极指南

Horos医学影像软件:在macOS上免费获得专业级DICOM查看器的终极指南

Horos医学影像软件:在macOS上免费获得专业级DICOM查看器的终极指南 【免费下载链接】horos Horos™ is a free, open source medical image viewer. The goal of the Horos Project is to develop a fully functional, 64-bit medical image viewer for OS X. Horos…

2026/8/6 11:09:21 阅读更多 →
浏览器智能体自动化爬虫:原理、实践与优化

浏览器智能体自动化爬虫:原理、实践与优化

1. 项目概述:浏览器控制智能体的自动化革命 在数据驱动的时代,网页数据爬取已成为市场分析、竞品研究和商业决策的基础能力。传统爬虫开发需要处理反爬机制、页面结构变更和维护复杂代码,而AiPy提出的浏览器控制智能体方案,将自动…

2026/8/6 11:09:21 阅读更多 →
OPC UA:工业通信协议的统一与安全实践

OPC UA:工业通信协议的统一与安全实践

1. 工业通信的"普通话革命":OPC UA的前世今生2006年,当OPC基金会首次发布OPC UA规范时,恐怕没人能预料到这个工业通信协议会成为智能制造时代的"普通话"。作为传统OPC标准的升级版,它用一套基于服务的架构&am…

2026/8/6 11:09:21 阅读更多 →
直方图均衡化算法原理与FPGA硬件实现全解析

直方图均衡化算法原理与FPGA硬件实现全解析

1. 直方图均衡化:从映射函数到电路实现的全景解析 直方图均衡化,这个名字对于图像处理领域的朋友来说,绝对是个“老熟人”。无论是刚入门时调用的 cv2.equalizeHist() ,还是在各种图像增强论文里看到的对比度拉伸效果&#xff0…

2026/8/6 11:08:21 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到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/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

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

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

2026/8/5 21:00:14 阅读更多 →
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/5 23:46:51 阅读更多 →