Hive SQL六大经典面试题解析:窗口函数、数据倾斜与性能优化实战
1. 面试题的价值与Hive SQL的核心考察点在数据领域摸爬滚打这些年我面试过不少人也被人面试过。我发现一个很有意思的现象很多候选人能把Hive的架构、原理说得头头是道但一碰到具体的SQL问题尤其是那些需要一点“巧劲”的题目思路就容易卡壳。这其实反映了一个核心问题——对SQL的掌握尤其是对Hive SQL在数据仓库场景下独特用法的理解光靠背概念是远远不够的它需要的是将逻辑思维转化为实际代码的能力。“Hive SQL六大经典面试题”这个标题背后考察的绝不仅仅是六道题的答案。它是一块试金石用来检验你是否真正理解数据仓库的建模思想比如维度建模、是否熟悉Hive作为批处理引擎的特性如数据倾斜处理、以及是否具备用SQL解决复杂业务问题的能力如会话切割、连续登录判断。这些题目往往脱胎于真实的业务场景比如用户行为分析、销售业绩统计、流量报表生成等它们不追求奇技淫巧但要求你对窗口函数、聚合技巧、连接逻辑和性能优化有扎实的功底。接下来我将结合自己多年在大数据平台开发和分析中的经验为你拆解这六类经典题目。我不会只给你答案更重要的是分享解题的思考路径、常见的“坑点”以及在实际生产环境中这些解决方案是如何演化和优化的。无论你是正在准备面试还是想巩固自己的Hive SQL技能相信这些内容都能带来实实在在的帮助。2. 排名与取数问题窗口函数的精髓这类问题几乎是Hive SQL面试的“标配”核心考察点是对窗口函数Window Function的掌握程度。窗口函数能让你在不聚合数据的前提下为每一行计算基于其“窗口”一组相关行的聚合值或排名这对于Top N、移动平均、累计求和等场景至关重要。2.1 经典场景部门工资Top N假设我们有一张员工表employee包含dept_id部门ID、emp_id员工ID和salary薪水。问题通常是“找出每个部门薪水最高的前3名员工”。很多人的第一反应是使用GROUP BY和子查询但这样写既复杂效率又低。正确的姿势是使用ROW_NUMBER()、RANK()或DENSE_RANK()窗口函数。SELECT dept_id, emp_id, salary FROM ( SELECT dept_id, emp_id, salary, ROW_NUMBER() OVER (PARTITION BY dept_id ORDER BY salary DESC) as rn FROM employee ) t WHERE t.rn 3;这里有几个关键选择需要理解为什么用ROW_NUMBER()而不是RANK()ROW_NUMBER()会为每一行生成一个唯一的连续序号即使有并列相同薪水的情况也会强制排出1,2,3。而RANK()在遇到并列时会跳过后续序号例如两个第一下一个是第三。DENSE_RANK()则不会跳号两个第一下一个是第二。题目要求“前3名”如果部门内薪水第三名有两人用ROW_NUMBER()只会随机取一个用RANK()会取出前四行排名为1,1,3,4用DENSE_RANK()会取出前三名对应的所有行排名为1,1,2,2,3,3...。因此必须根据业务语义选择。通常“Top N”指具体的N条记录用ROW_NUMBER()更常见。PARTITION BY和ORDER BY的作用PARTITION BY dept_id意味着在每个部门内部独立进行排名计算这是实现“每个部门”这个分组的关键。ORDER BY salary DESC则定义了排序规则降序确保薪水最高的排第1。实操心得与避坑点数据倾斜陷阱如果一个部门有上亿员工而其他部门只有几十人那么所有数据都会集中到少数几个Reducer上进行窗口计算导致严重的数据倾斜。解决方法通常是在PARTITION BY的字段上提前进行数据均匀化处理或者考虑使用DISTRIBUTE BY配合SORT BY来手动控制数据分布但这会复杂很多。在面试中你可以指出这个潜在问题并说明在大数据量下需要结合set参数调整或使用其他优化手段。性能考量窗口函数需要在单个Reducer内对每个分区进行全量排序当单个分区数据量极大时可能会内存溢出。可以提及通过set hive.exec.paralleltrue开启并行以及合理设置set hive.optimize.skewjointrue来应对倾斜。2.2 进阶分组取最新一条记录这是另一个高频变体。例如有一张用户操作日志表user_log包含user_id,operation,log_time。需要取出每个用户最近的一次操作记录。SELECT user_id, operation, log_time FROM ( SELECT user_id, operation, log_time, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY log_time DESC) as rn FROM user_log ) t WHERE t.rn 1;思路和Top N完全一致只是取rn1。这里的关键是理解“最新”对应着时间戳的降序排序DESC。3. 行转列与列转行数据透视与展开数据仓库中为了适配不同分析模型或报表需求经常需要在行格式和列格式之间进行转换。Hive提供了LATERAL VIEW配合explode进行列转行以及collect_set/collect_list配合CASE WHEN进行行转列。3.1 列转行将标签集合展开假设表user_tags中每个用户的标签存储在一个数组字段tags中如[‘篮球’ ‘音乐’ ‘旅游’]。我们需要将这张表展开使得每个“用户-标签”组合成为一行。SELECT user_id, tag FROM user_tags LATERAL VIEW explode(tags) tag_table AS tag;explode(tags) 这是一个UDTF用户自定义表生成函数它将数组tags中的每个元素炸开变成多行。LATERAL VIEW 它将UDTF生成的结果集一个虚拟表tag_table与原始表的每一行进行关联笛卡尔积从而完成展开。AS tag是为炸开后的字段命名。避坑点如果tags字段可能为NULL或空数组使用explode会导致该行数据丢失。为了避免这种情况应该使用LATERAL VIEW OUTER EXPLODE。OUTER关键字确保了即使数组为空或为NULL原始行也会被保留对应炸开后的字段为NULL。3.2 行转列聚合生成宽表这是更常见的报表需求。例如有一张销售流水表sales字段有sale_date日期product_category产品类别amount销售额。我们需要生成一张日报列是各个产品类别行是日期值是当日该品类的销售总额。SELECT sale_date, SUM(CASE WHEN product_category 电子产品 THEN amount ELSE 0 END) as electronic_amt, SUM(CASE WHEN product_category 服装 THEN amount ELSE 0 END) as clothing_amt, SUM(CASE WHEN product_category 食品 THEN amount ELSE 0 END) as food_amt FROM sales GROUP BY sale_date;这里利用CASE WHEN条件表达式将不同类别的销售额映射到不同的列上然后通过SUM和GROUP BY完成聚合。这是一种静态的写法需要提前知道所有类别。动态行转列的挑战如果产品类别不固定会经常变动上述静态SQL就需要频繁修改。在Hive中实现真正的动态行转列比较麻烦通常需要借助concat函数动态拼接SQL字符串或者更常见的做法是在上层应用如Java、Python或BI工具中处理。在面试中如果被问到动态情况可以指出Hive原生SQL的局限性并提出“用程序生成SQL”或“使用其他支持Pivot的查询引擎如Spark SQL、Presto”作为解决方案。4. 连续区间与状态判断自关联与窗口函数的组合拳这类问题用于识别数据序列中的连续模式例如“连续登录N天的用户”、“连续上涨的股票”。它考察的是对序列数据的处理能力和逻辑建模。4.1 经典场景连续登录7天的用户假设有用户每日登录流水表user_login字段为user_id和login_date。找出所有连续登录至少7天的用户。核心思路利用窗口函数为连续区间内的行生成相同的分组标识。具体方法是先对每个用户的登录日期排序然后用登录日期减去这个排序序号如果日期是连续的那么相减的结果就会是一个相同的固定日期。SELECT user_id, min(login_date) as start_date, max(login_date) as end_date, count(1) as continuous_days FROM ( SELECT user_id, login_date, date_sub(login_date, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY login_date)) as flag_date FROM user_login GROUP BY user_id, login_date -- 先去重避免单日多次登录干扰计算 ) t GROUP BY user_id, flag_date HAVING count(1) 7;步骤拆解子查询中ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY login_date)为每个用户每天的登录记录生成一个连续的序号1,2,3...。date_sub(login_date, 序号) 用登录日期减去对应的序号。对于连续日期这个差值会是一个常数。例如用户A在1号、2号、3号登录序号是1,2,3。那么1-10,2-20,3-30flag_date都是0。如果他在5号也登录了序号是4那么5-41flag_date就变成了1这就标志着一个新的连续区间的开始。外层根据user_id和flag_date分组min(login_date)和max(login_date)就得到了这个连续区间的起止日期count(1)就是连续的天数。HAVING子句过滤出连续天数大于等于7的记录。为什么这是经典题因为它巧妙地用算术运算替代了复杂的循环或递归判断将序列连续性判断转化为了等值分组问题非常适合SQL这种集合操作语言来处理效率很高。4.2 变体最大连续登录天数基于上面的结果求每个用户历史上最大的连续登录天数就很简单了SELECT user_id, max(continuous_days) as max_continuous_days FROM ( -- 上面的连续区间计算SQL这里省略内部细节 SELECT user_id, flag_date, count(1) as continuous_days FROM ... GROUP BY ... ) t GROUP BY user_id;5. 留存与漏斗分析基于时间段的连接留存分析是衡量产品健康度的核心指标常见问题是“计算第N日留存率”。这需要将不同日期的用户集进行关联对比。5.1 计算次日留存率定义某日新增的用户中在第二天仍然活跃的用户比例。 假设有用户活跃日表user_active字段为user_id和active_date。SELECT a.active_date as 日期, count(distinct a.user_id) as 当日新增, count(distinct b.user_id) as 次日留存, count(distinct b.user_id) / count(distinct a.user_id) as 次日留存率 FROM (SELECT user_id, min(active_date) as active_date FROM user_active GROUP BY user_id) a -- 子查询a: 获取每个用户的首次活跃日期即新增日 LEFT JOIN user_active b -- 表b: 用户所有的活跃记录 ON a.user_id b.user_id AND b.active_date date_add(a.active_date, 1) -- 关联条件b的活跃日期是a新增日期的后一天 GROUP BY a.active_date;关键点解析子查询a通过min(active_date)找到每个用户的“新增日期”。这是留存分析的基准。LEFT JOIN以新增用户集a为主表去关联全量活跃表b。关联条件有两个用户ID相等并且b的活跃日期正好是a新增日期的后一天date_add(... , 1)。结果对于a表中的每一行一个新增用户如果在b表中能找到满足条件的记录说明该用户次日留存了。通过COUNT(DISTINCT ...)进行计数并计算比例。避坑点与进阶去重一个用户一天可能有多条活跃记录必须使用COUNT(DISTINCT user_id)否则会重复计算。性能这是一个典型的“大表关联大表”操作如果用户量和活跃天数很多性能压力会很大。优化方法包括提前聚合可以先分别计算出每日的新增用户列表和每日的活跃用户列表再用这两个列表数据量会小很多进行关联。使用MAPJOIN如果有一张表很小比如计算7日内留存新增用户列表可能不大可以尝试将其放入内存进行Map端连接。计算N日留存只需将关联条件中的date_add(a.active_date, 1)改为date_add(a.active_date, N)即可。计算累计留存如第7日留存指的是第7天仍活跃的用户也是类似逻辑。6. 数据倾斜与性能优化不只是理论Hive SQL面试中性能优化是必问环节。而“数据倾斜”是Hive作业的头号杀手。面试官不仅想听你背概念更想听你解决过实际问题。6.1 场景JOIN操作时的数据倾斜假设有两张表订单表orders和用户表users要通过user_id进行关联。但发现某个特殊的user_id比如‘0’或‘NULL’代表的测试用户/默认用户产生了海量订单导致处理这个user_id的Reducer任务极其缓慢拖垮整个作业。解决方案1过滤倾斜Key如果这些倾斜的Key如测试用户对分析结果不重要可以直接在关联前过滤掉。SELECT /* MAPJOIN(small_table) */ ... FROM (SELECT * FROM orders WHERE user_id NOT IN (‘0‘, ’NULL‘)) a JOIN users b ON a.user_id b.user_id;解决方案2将倾斜Key打散如果倾斜Key不能过滤可以采用“加盐散列”的方式将一个大Key拆分成多个小Key分散到不同的Reducer上处理。-- 对orders表中倾斜的user_id进行打散 SELECT ... FROM ( SELECT *, CASE WHEN user_id ‘0‘ THEN concat(’0‘, ’_‘, ceil(rand()*10)) -- 将‘0’随机加上1-10的后缀 ELSE user_id END as salted_user_id FROM orders ) a JOIN ( SELECT *, CASE WHEN user_id ‘0‘ THEN concat(’0‘, ’_‘, 1) -- 在users表中需要将‘0’复制多份分别对应不同的后缀 ELSE user_id END as salted_user_id FROM users LATERAL VIEW explode(array(1,2,3,4,5,6,7,8,9,10)) tmp as salt_num WHERE user_id ‘0‘ UNION ALL SELECT *, user_id as salted_user_id FROM users WHERE user_id ! ‘0‘ ) b ON a.salted_user_id b.salted_user_id;这个例子中我们把user_id‘0’的数据在orders表中随机附加了1-10的后缀打散到10个桶。然后在users表中将user_id‘0’的数据复制10份也分别加上1-10的后缀。这样原本一个巨大的Key变成了10个较小的Key进行关联最后在业务逻辑上再合并即可。这个方法比较繁琐但能有效解决严重倾斜。解决方案3开启Skew Join优化Hive提供了参数来自动处理倾斜set hive.optimize.skewjointrue; set hive.skewjoin.key100000; -- 设置倾斜Key的阈值超过此条数则认为该Key是倾斜的 set hive.skewjoin.mapjoin.map.tasks10000; -- 控制Map Join的任务数 set hive.skewjoin.mapjoin.min.split33554432; -- 控制Map Join的最小切片大小开启后Hive会尝试识别出倾斜的Key并将其存入HDFS然后在另一个Map Join作业中处理避免单个Reducer负载过重。6.2 场景GROUP BY数据倾斜当GROUP BY的字段分布极不均匀时也会导致数据倾斜。例如按城市city分组统计订单但大部分订单都集中在‘上海’。解决方案两阶段聚合第一阶段在Map端先进行一次局部聚合给group by的key加上一个随机前缀降低数据传输量第二阶段在Reduce端去掉前缀进行最终聚合。set hive.map.aggrtrue; -- 开启Map端聚合 set hive.groupby.skewindatatrue; -- 开启针对group by的倾斜优化当hive.groupby.skewindata设置为true时Hive会生成两个MapReduce作业。第一个作业的Map输出会随机分布到Reducer进行部分聚合。第二个作业再基于第一阶段的结果进行最终聚合。这相当于自动实现了“两阶段聚合”能有效缓解GROUP BY倾斜。7. 慢SQL分析与优化从Explain开始当被问到“如何优化一条跑得很慢的Hive SQL”时一个系统性的回答思路比直接说几个参数更有价值。第一步获取执行计划使用EXPLAIN或EXPLAIN EXTENDED命令。这是最重要的诊断工具。你需要关注Stage的依赖关系有多少个Stage是否是串行的有没有可以并行的每个Stage的操作是Map Only还是MapReduceJOIN是Common Join还是Map Join数据流数据的输入输出量Statistics部分是否合理有没有出现某个Stage输入输出量异常大的情况第二步分析瓶颈点结合执行计划从以下几个方面排查数据倾斜如上所述检查JOINKey或GROUP BYKey的分布。JOIN顺序Hive默认从左到右执行JOIN确保小表在前大表在后这样有利于将小表放入内存进行Map Join。可以使用/* STREAMTABLE(大表别名) */提示来指定大表作为流表。避免全局排序ORDER BY会导致所有数据集中到一个Reducer进行排序非常慢。如果不需要全局精确排序用SORT BY或DISTRIBUTE BY ... SORT BY代替。减少数据读取使用分区表PARTITIONED BY并在WHERE条件中指定分区键避免全表扫描。使用分桶表CLUSTERED BY对于JOIN和SAMPLE操作有奇效。只选取必要的列避免SELECT *。调整并行度set mapred.reduce.tasks50; -- 根据数据量手动设置Reduce任务数 set hive.exec.paralleltrue; -- 开启Stage并行执行 set hive.exec.parallel.thread.number16; -- 并行线程数第三步考虑数据模型与预处理如果单条SQL无论如何优化都很难满足性能要求就要考虑上游数据模型或ETL流程了中间结果落表将复杂的、频繁使用的查询结果物化到一张中间表中后续查询直接使用中间表。数据分层构建清晰的数据仓库分层ODS-DWD-DWS-ADS在DWD层完成清洗和轻度聚合在DWS层形成主题宽表这样ADS层的应用查询就会非常简单快速。更换执行引擎对于交互式查询可以考虑将Hive表的数据同步到Presto、Impala或Spark SQL引擎中查询它们基于内存计算延迟更低。在我处理过的一个实际案例中一条每日运行的报表SQL从最初运行2小时优化到15分钟主要就是做了三件事一是通过EXPLAIN发现了一个隐藏的CROSS JOIN笛卡尔积导致数据爆炸重写了逻辑二是对几个常用的大表增加了合理的分区三是将其中一个LEFT JOIN改成了MAPJOIN。所以优化往往是一个结合工具分析、经验判断和业务理解的综合过程。

相关新闻

大气压力传感器 气象监测气压数据采集方案设备

大气压力传感器 气象监测气压数据采集方案设备

一、产品概述大气压力传感器(又称大气压力变送器)是一款专为气象监测与环境数据采集设计的高精度、低功耗设备。它集成了先进的电路模块技术,由电源模块、变送模块和数据处理模块等核心部件构成,能够实现对环境大气压力的精确测量…

2026/8/5 4:45:00 阅读更多 →
PC端微信自动化:基于Hook与HTTP API的wxhelper实战指南

PC端微信自动化:基于Hook与HTTP API的wxhelper实战指南

1. 项目概述:为什么我们需要wxhelper?如果你是一名开发者,或者对自动化、数据同步、消息聚合有需求,那么PC端微信可能是一个让你又爱又恨的工具。爱的是它庞大的用户基数和几乎无法替代的社交生态,恨的是它那封闭的API…

2026/8/5 4:45:00 阅读更多 →
Windows 7 SP1离线安装IE11完整指南:先决条件补丁与避坑详解

Windows 7 SP1离线安装IE11完整指南:先决条件补丁与避坑详解

1. 项目缘起:一个被遗忘但依然关键的系统组件如果你还在使用Windows 7,无论是出于对旧硬件的兼容性、特定行业软件的需求,还是单纯的习惯,那么你很可能遇到过这样一个问题:当你试图安装Internet Explorer 11&#xff0…

2026/8/5 4:45:00 阅读更多 →

最新新闻

CTF实战:Web加密漏洞利用与攻击链构建详解

CTF实战:Web加密漏洞利用与攻击链构建详解

1. 题目背景与核心思路解析 “BUUCTF:[CISCN2019 华东北赛区]Web2”这道题,在CTF圈子里算是一个挺经典的案例,它完美地展示了如何将多个看似独立的Web漏洞串联起来,形成一条完整的攻击链。很多新手在初次接触时,可能会…

2026/8/5 7:47:22 阅读更多 →
AI如何自动识别投标文件废标风险?智能评审项目实践

AI如何自动识别投标文件废标风险?智能评审项目实践

这里写自定义目录标题欢迎使用Ma rkdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个…

2026/8/5 7:47:22 阅读更多 →
UE5编译报错hostfxr.dll缺失?一文详解.NET依赖与系统化解决方案

UE5编译报错hostfxr.dll缺失?一文详解.NET依赖与系统化解决方案

1. 项目概述:UE5开发者的“拦路虎” 如果你刚接触虚幻引擎5,正满怀热情地准备编译你的第一个C项目,或者打开一个从网上下载的示例工程,却冷不丁弹出一个“hostfxr.dll找不到”或“无法加载.NET Core运行时”的对话框,那…

2026/8/5 7:47:22 阅读更多 →
UE5 Nanite实战:超大规模场景性能优化与避坑指南

UE5 Nanite实战:超大规模场景性能优化与避坑指南

1. 项目概述:当超大规模场景遇见Nanite 做游戏或者数字孪生项目,最头疼的莫过于场景规模。以前做大地图,那真是“缝缝补补又三年”,LOD(Level of Detail)系统是救星也是噩梦。手动设置几十上百个模型的LOD组…

2026/8/5 7:47:22 阅读更多 →
HoRain云--Git 工作流程

HoRain云--Git 工作流程

下图展示了 Git 的工作流程:我们可以把 Git 的工作流程想象成一个写作业并交给老师的过程。结合上面的图,我们可以把这个流程分为四个主要部分:1. 工作区 (Working Directory) —— 你的书桌这是你实际修改文件的地方。你在这里写代码、删删改…

2026/8/5 7:47:22 阅读更多 →
C语言标准演化史:从KR到GNU,谁才是正统?

C语言标准演化史:从KR到GNU,谁才是正统?

你知道吗?如今最流行的C语言编译器,其实并不完全遵守C语言标准。换句话说,你写的代码,可能根本就不是“标准C”。这听起来有点反常识,但真相是,C语言从诞生那天起,就一直在“内斗”和“博弈”中…

2026/8/5 7:46:21 阅读更多 →

日新闻

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/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

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

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

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

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

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

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘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 阅读更多 →