SQL WHERE子句动态条件实战:IF与CASE WHEN实现业务逻辑前置
1. 项目概述WHERE与IF的化学反应如果你写过SQL肯定对WHERE子句不陌生它就是数据库查询的“过滤器”帮你从海量数据里捞出想要的那几条。但有时候过滤条件不是一成不变的它得像变色龙一样能根据不同的情况自动切换。比如领导说“给我查一下上个月的销售数据但如果今天是1号就查昨天的数据。” 这时候你脑子里是不是已经开始盘算着在代码里写if-else了其实在SQL查询里我们完全可以把这种动态判断逻辑直接写在WHERE条件中而IF()函数、CASE WHEN表达式甚至巧妙的逻辑运算符组合就是实现这个目标的瑞士军刀。这个技巧的核心价值在于将业务逻辑判断前置到数据库层。这意味着什么意味着你不需要在应用层比如Java、Python代码里先做一堆判断拼凑出不同的SQL字符串再发给数据库。这样做至少有三个好处一是减少网络往返和代码复杂度一次查询搞定二是能让数据库优化器更好地理解你的意图有机会生成更高效的执行计划三是逻辑集中便于维护和调试。尤其是在构建报表、动态筛选、权限控制例如不同角色看到不同范围的数据等场景下这种动态WHERE条件几乎成了标配技能。我见过不少新手甚至是工作几年的开发者一遇到复杂条件就想着用程序代码拼接SQL结果弄出来一堆难以维护的字符串模板和潜在的SQL注入漏洞。其实花点时间掌握WHERE后面做判断的技巧很多问题都能在SQL这一层优雅地解决。接下来我就带你深入拆解这里面的门道从基础函数到高级组合拳再到实际业务场景中的应用和避坑指南。2. 核心武器库IF、CASE WHEN与逻辑运算符在WHERE子句中实现条件判断我们主要依赖三套武器IF()函数、CASE WHEN表达式以及通过AND、OR、()对基础条件进行逻辑组合。它们各有各的适用场景和脾气用对了事半功倍用错了可能查不出数据或者性能堪忧。2.1 IF()函数简单的二选一IF()函数是MySQL中最直白的条件函数语法就三部分IF(condition, value_if_true, value_if_false)。你可以把它理解成一个微型的单行if-else语句。在WHERE子句里它通常不是直接作为过滤条件而是用于动态生成需要被比较的值或者作为另一个条件表达式的一部分。举个例子假设我们有一个用户表users里面有last_login_date最后登录日期和user_type用户类型字段。产品经理想要一个查询找出所有“近期活跃”的用户。但“近期”的定义对于VIP用户和普通用户不一样VIP用户超过30天未登录算不活跃普通用户超过7天就算不活跃。用应用层代码你可能需要先判断用户类型再组装不同的WHERE条件。但在SQL里可以这么写SELECT user_id, username, user_type, last_login_date FROM users WHERE last_login_date DATE_SUB(CURDATE(), INTERVAL IF(user_type VIP, 30, 7) DAY);拆解一下这个WHERE条件IF(user_type VIP, 30, 7)这是一个动态判断。对于每一行数据MySQL都会评估user_type字段。如果它是VIP那么IF()函数返回30否则返回7。DATE_SUB(CURDATE(), INTERVAL ... DAY)这部分用当前日期减去第一步得到的动态天数30或7得到一个动态的“临界日期”。last_login_date ...最后判断用户的最后登录日期是否晚于或等于这个动态计算的临界日期。这样一来一个WHERE条件就同时覆盖了两套业务规则查询结果会根据每条记录的user_type自动适配不同的“近期”标准。这就是IF()在WHERE中的典型用法——动态生成比较条件的参数。注意IF()函数在WHERE中会对每一行都执行一次。在我们的例子中它对users表的每一行都判断了一次user_type。对于大表这可能会增加计算开销。但在大多数情况下这种开销是完全可以接受的尤其是当你需要在数据库层简化应用逻辑时。2.2 CASE WHEN表达式强大的多路分支当你的业务逻辑不止“是非”两种选择而是有多个分支时IF()函数就显得力不从心了虽然可以嵌套但会很丑。这时候CASE WHEN表达式就该登场了。它就像SQL里的switch-case语句结构更清晰能力也更强大。CASE WHEN有两种形式简单CASE表达式将一个值与多个可能值进行比较。CASE column_name WHEN value1 THEN result1 WHEN value2 THEN result2 ... ELSE default_result END搜索CASE表达式可以表达更复杂的条件是WHERE子句中最常用的形式。CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END在WHERE子句中CASE WHEN通常也是用来构造一个动态的布尔真/假结果然后将其作为一个整体条件来使用。考虑一个订单报表场景。订单表orders有amount金额、status状态、region地区字段。业务方想要一个复杂的筛选1) 状态为“已完成”的订单全部显示2) 状态为“处理中”的订单只显示金额大于1000的3) 其他状态的订单只显示华北地区的。用CASE WHEN可以这样构建WHERE条件SELECT order_id, amount, status, region FROM orders WHERE ( CASE WHEN status 已完成 THEN TRUE WHEN status 处理中 AND amount 1000 THEN TRUE WHEN region 华北 THEN TRUE ELSE FALSE END ) TRUE;这个查询的WHERE子句做了以下几件事对每一行订单数据运行CASE WHEN表达式。按顺序检查条件如果是“已完成”立刻返回TRUE如果不是则检查是否是“处理中”且金额1000如果是则返回TRUE如果还不是则检查是否属于“华北”地区是则返回TRUE以上都不符合返回FALSE。最后WHERE子句要求CASE WHEN表达式的结果必须等于TRUE。这样我们就把一个包含多重业务规则的复杂筛选逻辑封装在了一个清晰的SQL表达式里。CASE WHEN在WHERE中的威力在于它能把一系列IF-ELSE IF-ELSE的逻辑以声明式的方式清晰地表达出来远比在应用层拼接多个AND、OR条件字符串要直观和安全。2.3 逻辑运算符组合最基础却最易错除了使用函数更多的时候动态WHERE条件是通过AND、OR和括号()的组合来实现的。这听起来很简单但却是最容易写出错误或低效查询的地方。关键就在于运算符的优先级和括号的使用。MySQL中NOT优先级最高其次是AND最后是OR。如果不加括号你的查询意图可能会被完全误解。假设我们要查询products表中要么是“电子产品”类要么是库存小于10且价格高于500的商品。错误的写法可能是-- 错误写法逻辑混乱 SELECT * FROM products WHERE category 电子产品 OR stock 10 AND price 500;你以为的可能是(category ‘电子产品’) OR (stock 10 AND price 500)。但由于AND优先级高于OR数据库实际执行的是(category ‘电子产品’) OR (stock 10) AND (price 500)这等价于(category ‘电子产品’) OR (stock 10)这个结果集再与(price 500)取交集。逻辑完全错了。正确的写法必须使用括号来明确分组-- 正确写法用括号明确逻辑分组 SELECT * FROM products WHERE category 电子产品 OR (stock 10 AND price 500);实操心得只要WHERE条件中混用了AND和OR我的习惯是无脑加括号。即使有时不加括号逻辑也对但加上括号能让意图一目了然无论是对于未来的自己还是接手你代码的同事都是一种仁慈。数据库优化器会处理好括号你不用担心性能损失。3. 实战场景深度解析理解了核心武器我们来看看它们在实际业务中是如何大显身手的。我会通过几个典型的场景带你感受动态WHERE条件的强大与优雅。3.1 场景一动态时间范围查询这是最常见的需求之一。报表系统经常需要根据用户选择今天、本周、本月、自定义来查询数据。很多人会在后端根据用户选择生成不同的BETWEEN ... AND ...语句。其实一个CASE WHEN就能统一处理。假设有销售记录表sales字段sale_time为 datetime 类型。前端传入一个参数period其值可能是today、this_week、this_month。-- 假设应用层传入一个变量 period SET period this_week; SELECT SUM(amount) as total_sales, COUNT(*) as order_count FROM sales WHERE sale_time CASE period WHEN today THEN DATE(CURDATE()) WHEN this_week THEN DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) WHEN this_month THEN DATE_FORMAT(CURDATE(), %Y-%m-01) ELSE 1900-01-01 -- 提供一个默认值或根据业务处理 END;在这个查询里CASE表达式根据变量period的值动态计算出了时间范围的起始点。WHERE条件只需要判断sale_time是否大于等于这个动态计算的起始点即可结束点默认为“到现在”。这样一个查询模板就适配了多种时间筛选模式后端代码只需要绑定参数值无需拼接SQL字符串。避坑技巧处理时间范围时要特别注意时区问题。如果你的sale_time存储的是UTC时间而业务要求按本地时间如北京时间筛选就需要在CASE WHEN里用CONVERT_TZ()函数做转换否则在时区切换日如夏令时可能会差一天的数据。3.2 场景二基于用户角色的数据权限过滤在SAAS系统或多租户系统中数据行级权限是刚需。不同角色的用户登录后只能看到自己有权限的数据。例如普通员工只能看自己的订单部门经理能看本部门的总经理能看全公司的。假设有订单表orders字段包括order_id、salesperson_id销售员ID、department_id部门ID。用户信息在users表通过current_user_id变量获取当前登录用户信息。-- 假设通过JOIN或子查询获取当前用户的角色和部门 SELECT o.* FROM orders o WHERE EXISTS ( SELECT 1 FROM users u WHERE u.user_id current_user_id AND ( u.role 总经理 OR (u.role 部门经理 AND o.department_id u.department_id) OR (u.role 销售员 AND o.salesperson_id u.user_id) ) );这个查询的核心思想是将权限判断逻辑放在一个关联子查询中。对于主查询的每一行订单子查询检查当前用户是否存在并且其角色是否满足查看该订单的条件。这本质上也是一个动态的WHERE条件对于同一张订单表不同的用户会命中不同的过滤条件。更复杂的权限模型如用户-角色-资源关联表也可以采用类似的思路通过JOIN权限表和CASE WHEN在WHERE子句中实现动态过滤。这样做的好处是权限逻辑集中在数据库视图或查询中应用层只需调用同一个查询接口安全性更高。3.3 场景三智能搜索与排序权重结合在搜索引擎或商品列表页我们经常需要综合多种因素进行筛选和排序。WHERE子句中的动态条件可以和ORDER BY子句联动实现更智能的查询。例如在商品搜索中用户输入关键词“手机”。我们希望优先展示1) 标题完全匹配的2) 标题包含关键词且库存充足的3) 标题包含关键词的。同时价格还要在用户选择的区间内。SET keyword 手机; SET min_price 1000; SET max_price 5000; SELECT product_id, name, price, stock, CASE WHEN name keyword THEN 3 -- 完全匹配权重最高 WHEN name LIKE CONCAT(%, keyword, %) AND stock 10 THEN 2 -- 包含且库存足 WHEN name LIKE CONCAT(%, keyword, %) THEN 1 -- 仅包含 ELSE 0 END as relevance_weight FROM products WHERE price BETWEEN min_price AND max_price AND ( name keyword OR name LIKE CONCAT(%, keyword, %) ) ORDER BY relevance_weight DESC, price ASC;这里我们在SELECT列表里用CASE WHEN计算了一个“相关性权重”并在WHERE子句中设定了基本的筛选条件价格区间和关键词匹配。最后ORDER BY首先按这个动态计算出的权重降序排列权重相同的再按价格升序排列。这样我们就实现了一个兼顾“相关性”和“价格”的智能排序列表。WHERE子句确保了结果集的范围而CASE WHEN生成的动态字段则影响了结果的呈现顺序。4. 性能优化与避坑指南在WHERE子句中使用条件函数和表达式非常灵活但如果不加注意也可能成为性能杀手。下面是一些关键的优化思路和常见陷阱。4.1 索引失效的陷阱与应对这是最需要警惕的一点。在WHERE子句的列上使用函数或表达式很可能会导致该列上的索引失效。因为数据库通常无法对函数(列)的结果使用建立在原始列上的B-Tree索引。反面教材-- 假设在 create_date 列上有索引 SELECT * FROM orders WHERE DATE_FORMAT(create_date, %Y-%m) 2024-05;这个查询想找2024年5月的所有订单。DATE_FORMAT函数对create_date列进行了格式化操作使得建立在create_date上的索引无法被用于快速定位数据库很可能进行全表扫描。优化方案将函数操作转移到常量一侧保持列本身的“纯洁性”。-- 优化后使用范围查询索引可能生效 SELECT * FROM orders WHERE create_date 2024-05-01 00:00:00 AND create_date 2024-06-01 00:00:00;同样的逻辑也适用于IF()和CASE WHEN。如果它们被用在WHERE条件中作为列的比较值通常问题不大因为列本身没被包装。但如果是对列本身进行判断并返回一个用于比较的值就要小心了。更复杂的例子-- 假设对 price 列有索引 SELECT * FROM products WHERE IF(discount 0, price * 0.9, price) 100;这个查询想找折后价大于100的商品。IF表达式对price列进行了计算price * 0.9这会导致price列的索引失效。优化思路尝试重写逻辑避免在索引列上进行计算。-- 优化思路将条件拆解 SELECT * FROM products WHERE (discount 0 AND price * 0.9 100) OR (discount 0 AND price 100);虽然OR条件有时也会影响索引使用但通过合理的索引设计如复合索引(discount, price)这个查询的性能通常优于在列上使用函数的版本。最根本的办法是如果discount_price折后价是高频查询条件可以考虑将其作为一个冗余字段存储在表中并为其建立索引。4.2 NULL值处理的智慧在动态WHERE条件中NULL值是一个永恒的“坑”。NULL与任何值包括NULL本身的比较结果都是NULL在WHERE子句中会被当作FALSE处理。考虑一个用户搜索功能允许按姓名和城市筛选参数可能为空。-- 有潜在问题的写法 SELECT * FROM users WHERE name name_param AND city city_param;如果city_param为NULL表示用户未选择城市那么city NULL这个条件对于所有行都是NULL即FALSE导致查询结果为空这显然不符合“忽略城市条件”的预期。正确写法使用IS NULL配合OR或者更优雅地使用CASE WHEN或动态构造条件。-- 方法1使用 OR 和 IS NULL SELECT * FROM users WHERE name name_param AND (city city_param OR city_param IS NULL); -- 方法2在应用层动态组装WHERE子句MyBatis等框架常用 -- 伪代码如果 city_param 不为空才添加 “AND city #{cityParam}” 到SQL中。对于IF()和CASE WHEN也要注意它们内部条件或返回值可能为NULL的情况必要时使用IFNULL()或COALESCE()函数提供默认值。4.3 复杂条件的可读性与维护性平衡当WHERE条件变得非常复杂嵌套了多个CASE WHEN和函数时虽然功能实现了但SQL会变得像“天书”一样难以理解和维护。经验法则适度拆分如果一个WHERE子句超过10行或者嵌套超过3层就应该考虑是否能用视图View或公共表表达式CTECommon Table Expressions来拆分逻辑。例如将复杂的动态权重计算放到一个CTE里主查询的WHERE条件会清爽很多。WITH weighted_products AS ( SELECT *, CASE ... END as weight -- 复杂的计算逻辑放在这里 FROM products WHERE ... -- 一些基础过滤 ) SELECT * FROM weighted_products WHERE weight 0 ORDER BY weight DESC;注释是必须的在复杂的CASE WHEN逻辑旁务必添加SQL注释说明每个分支对应的业务规则。这比你想象中重要十倍。考虑使用存储过程或应用层逻辑如果动态条件过于复杂且业务变化频繁强行用一行SQL实现可能并非最佳选择。将部分判断逻辑写在存储过程或应用代码中可能是可读性和维护性更好的选择。没有银弹只有权衡。5. 进阶技巧与HAVING、JOIN的联动动态条件判断不仅限于WHERE子句在GROUP BY后的HAVING子句以及JOIN的连接条件中同样可以发挥巨大作用。5.1 在HAVING子句中进行聚合后判断WHERE是在分组前过滤行HAVING是在分组后过滤组。当你的过滤条件依赖于聚合函数的结果时就必须使用HAVING并且这里同样可以引入动态逻辑。例如分析销售数据想找出“高价值客户”但“高价值”的定义根据客户等级动态变化普通客户总消费1000VIP客户总消费5000即可。SELECT customer_id, customer_level, SUM(amount) as total_spent FROM orders GROUP BY customer_id, customer_level HAVING SUM(amount) CASE customer_level WHEN VIP THEN 5000 ELSE 1000 END;这个查询先按客户分组并计算总消费额然后在HAVING子句中使用CASE根据每组的customer_level动态决定阈值只保留总消费超过对应阈值的客户组。5.2 在JOIN条件中实现动态关联这是一种非常强大的模式可以实现类似“条件连接”的效果。假设我们有两个表main_table和config_table。config_table存储了一些配置规则我们希望根据main_table中的某个字段值动态决定去关联config_table中的哪条配置。SELECT m.*, c.config_value FROM main_table m LEFT JOIN config_table c ON c.rule_type dynamic_rule AND c.rule_key CASE WHEN m.type A THEN rule_for_A WHEN m.type B THEN rule_for_B ELSE default_rule END;在这个LEFT JOIN的ON条件里我们根据main_table的type字段动态生成了要去匹配的config_table.rule_key值。这样一次JOIN就完成了按类型获取不同配置的逻辑避免了多次查询或复杂的联合查询。6. 真实案例一个综合性的数据报表查询让我们看一个融合了多种技巧的真实案例。假设我们要为运营部门生成一个用户活跃度报表规则比较复杂统计过去30天的数据。用户分为“新用户”注册时间在30天内和“老用户”。新用户的活跃标准是登录次数3次。老用户的活跃标准是登录次数5次或有订单记录。同时只关心“启用状态”的用户。表结构简化如下users:user_id,register_date,is_activeuser_login_log:id,user_id,login_timeorders:order_id,user_id,create_time查询语句如下SELECT u.user_id, u.register_date, CASE WHEN u.register_date DATE_SUB(CURDATE(), INTERVAL 30 DAY) THEN 新用户 ELSE 老用户 END as user_type, COUNT(DISTINCT DATE(l.login_time)) as login_days, -- 登录天数 COUNT(o.order_id) as order_count FROM users u LEFT JOIN user_login_log l ON u.user_id l.user_id AND l.login_time DATE_SUB(CURDATE(), INTERVAL 30 DAY) LEFT JOIN orders o ON u.user_id o.user_id AND o.create_time DATE_SUB(CURDATE(), INTERVAL 30 DAY) WHERE u.is_active 1 GROUP BY u.user_id HAVING ( CASE WHEN u.register_date DATE_SUB(CURDATE(), INTERVAL 30 DAY) THEN COUNT(DISTINCT DATE(l.login_time)) 3 ELSE COUNT(DISTINCT DATE(l.login_time)) 5 OR COUNT(o.order_id) 0 END ) TRUE;这个查询的精华在HAVING子句首先在SELECT和HAVING中都用CASE WHEN动态判断了用户类型新/老。在HAVING中根据动态判断出的用户类型应用了不同的活跃度标准。对于新用户要求登录天数3对于老用户要求登录天数5或订单数0。整个逻辑清晰封装在一个SQL语句中数据库可以高效地完成连接、聚合和过滤。这个案例展示了如何将CASE WHEN、聚合函数、HAVING子句以及JOIN条件动态过滤通过AND在JOIN后附加时间条件结合起来解决一个复杂的多规则统计问题。它避免了在应用层进行多次查询和内存中合并数据的繁琐操作也保证了数据计算的一致性和高效性。掌握在WHERE及其相关子句中进行动态判断本质上是在提升你“用声明式语言描述复杂业务逻辑”的能力。这不仅能写出更简洁、高效的SQL更能让你从“数据库操作工”向“数据解决方案设计师”迈进一步。下次再遇到需要根据不同情况切换查询条件的任务时不妨先停下来想想这个逻辑能不能在SQL里优雅地搞定

相关新闻

大模型批判性精炼:从静态画像到动态智能体角色的工业实践

大模型批判性精炼:从静态画像到动态智能体角色的工业实践

1. 项目概述:当大模型学会“自我批评”与“角色扮演”最近在工业界做项目评估,一个绕不开的话题就是如何让大语言模型(LLM)的输出更稳定、更贴合实际业务需求。我们团队最近深度参与并评估了一个名为“带批判性精炼的智能体角色生…

2026/8/18 6:41:34 阅读更多 →
BeautifulSoup从入门到实战:Python网页解析与数据抓取指南

BeautifulSoup从入门到实战:Python网页解析与数据抓取指南

1. 从零开始认识BeautifulSoup:它是什么,能解决什么问题?如果你经常需要从网页上抓取点数据,或者处理手头上一堆杂乱的HTML/XML文件,那你大概率已经听过或者正在寻找一个叫BeautifulSoup的Python库。我第一次接触它&am…

2026/8/17 1:51:47 阅读更多 →
5分钟搞定PotPlayer字幕翻译插件:百度翻译API免费配置完整指南

5分钟搞定PotPlayer字幕翻译插件:百度翻译API免费配置完整指南

5分钟搞定PotPlayer字幕翻译插件:百度翻译API免费配置完整指南 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 想看懂一部心…

2026/8/17 1:50:47 阅读更多 →

最新新闻

技术写作知识体系:从主题索引到版本更新

技术写作知识体系:从主题索引到版本更新

技术写作知识体系:从主题索引到版本更新 问题与适用范围 微服务网关在流量高峰期遭遇无缓冲 Channel 死锁,线程池瞬间挂起。 本文以 技术写作方法论与知识体系构建 为例,讨论并发与异常输入下的处理方式。下文的架构图和代码用于解释设计取舍…

2026/8/18 6:56:17 阅读更多 →
无U盘安装CentOS 7:Windows硬盘直装与双系统引导全攻略

无U盘安装CentOS 7:Windows硬盘直装与双系统引导全攻略

1. 项目概述与核心思路最近在折腾一台老旧的Windows笔记本,想把它改造成一个轻量级的Linux服务器来跑点小服务。手头没有多余的U盘,又不想破坏现有的Windows系统,这听起来像是个不可能的任务,对吧?其实不然。通过直接在…

2026/8/18 6:56:17 阅读更多 →
计算机毕业设计之基于python的网咖管理系统的设计与实现

计算机毕业设计之基于python的网咖管理系统的设计与实现

随着信息技术的飞速发展,网咖行业对高效、智能的管理系统需求日益增长。本文设计并实现了一套基于Python语言、Django框架、Vue前端框架以及MySQL数据库的网咖管理系统。该系统旨在解决传统网咖管理中存在的效率低下、信息不透明等问题,通过用户、管理员…

2026/8/18 6:56:17 阅读更多 →
本地AI抠图神器See-through WebUI安装与优化全攻略

本地AI抠图神器See-through WebUI安装与优化全攻略

上周帮一个做电商的朋友处理商品图,他有一批白底产品图,想快速把产品主体抠出来换个背景。试了几个在线工具,要么效果粗糙边缘锯齿,要么收费高昂批量处理麻烦。折腾到半夜,我突然想起之前隐约听过一个叫“See-through”…

2026/8/18 6:56:17 阅读更多 →
智能体控制论:构建能调度其他AI的元智能体架构

智能体控制论:构建能调度其他AI的元智能体架构

1. 项目概述:当智能体开始“使用”智能体最近在AI圈子里,一个听起来有点“套娃”的概念正在被频繁讨论:智能体对智能体的使用。这不再是简单的多智能体协作,而是指向一个更深层的架构——一个智能体系统能够像人类使用工具一样&am…

2026/8/18 6:56:17 阅读更多 →
智能体决策可重构性实践:基于锚点实现跨SDK决策追溯

智能体决策可重构性实践:基于锚点实现跨SDK决策追溯

1. 项目缘起:从“黑盒”到“白盒”的决策追溯困境在智能体(Agent)开发领域,尤其是当我们深度集成来自不同供应商的SDK来构建复杂决策系统时,一个长期困扰开发者和算法工程师的痛点日益凸显:我们常常无法清晰…

2026/8/18 6:55:17 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/17 2:58:27 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/17 2:58:30 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/17 2:58:32 阅读更多 →

月新闻

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

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

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

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

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

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

2026/8/17 18:55: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/17 18:55:55 阅读更多 →