Java 8 变量比较工具类(通用版)
在日常开发中变量比较大于、小于、等于、区间判断是最频繁的操作之一。一个好的工具类可以让代码更简洁、更安全、更易读。一、完整工具类源码javaimport java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; /** * 变量比较工具类 * * 功能特性 * 1. 支持 int、long、double、BigDecimal、Date、LocalDate、LocalDateTime、String 等类型 * 2. 支持 、、、、、! 六种比较操作 * 3. 支持区间判断开区间、闭区间、半开半闭 * 4. 支持空值安全null 返回 false * 5. 支持对象字段提取后比较 * 6. 支持集合过滤和排序 * * author YourName * since 1.0 */ public final class CompareUtils { private CompareUtils() { // 工具类私有构造防止实例化 } // 1. 基本比较int public static boolean isGreater(int a, int b) { return a b; } public static boolean isGreaterOrEqual(int a, int b) { return a b; } public static boolean isLess(int a, int b) { return a b; } public static boolean isLessOrEqual(int a, int b) { return a b; } public static boolean isEqual(int a, int b) { return a b; } public static boolean isNotEqual(int a, int b) { return a ! b; } /** * 判断 int 是否在闭区间内[min, max] */ public static boolean isInRange(int value, int min, int max) { return value min value max; } /** * 判断 int 是否在开区间内(min, max) */ public static boolean isInRangeExclusive(int value, int min, int max) { return value min value max; } /** * 获取两个 int 中的较大值 */ public static int max(int a, int b) { return Math.max(a, b); } /** * 获取两个 int 中的较小值 */ public static int min(int a, int b) { return Math.min(a, b); } // 2. 基本比较long public static boolean isGreater(long a, long b) { return a b; } public static boolean isGreaterOrEqual(long a, long b) { return a b; } public static boolean isLess(long a, long b) { return a b; } public static boolean isLessOrEqual(long a, long b) { return a b; } public static boolean isEqual(long a, long b) { return a b; } public static boolean isNotEqual(long a, long b) { return a ! b; } public static boolean isInRange(long value, long min, long max) { return value min value max; } public static boolean isInRangeExclusive(long value, long min, long max) { return value min value max; } // 3. 基本比较double /** * double 比较注意浮点数精度问题推荐使用 BigDecimal */ public static boolean isGreater(double a, double b) { return Double.compare(a, b) 0; } public static boolean isGreaterOrEqual(double a, double b) { return Double.compare(a, b) 0; } public static boolean isLess(double a, double b) { return Double.compare(a, b) 0; } public static boolean isLessOrEqual(double a, double b) { return Double.compare(a, b) 0; } public static boolean isEqual(double a, double b) { return Double.compare(a, b) 0; } public static boolean isNotEqual(double a, double b) { return Double.compare(a, b) ! 0; } public static boolean isInRange(double value, double min, double max) { return value min value max; } // 4. BigDecimal 比较 /** * 判断 a b */ public static boolean isGreater(BigDecimal a, BigDecimal b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } /** * 判断 a b */ public static boolean isGreaterOrEqual(BigDecimal a, BigDecimal b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } /** * 判断 a b */ public static boolean isLess(BigDecimal a, BigDecimal b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } /** * 判断 a b */ public static boolean isLessOrEqual(BigDecimal a, BigDecimal b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } /** * 判断 a b */ public static boolean isEqual(BigDecimal a, BigDecimal b) { if (a null b null) { return true; } if (a null || b null) { return false; } return a.compareTo(b) 0; } /** * 判断 a ! b */ public static boolean isNotEqual(BigDecimal a, BigDecimal b) { return !isEqual(a, b); } /** * 判断 BigDecimal 是否在闭区间内[min, max] */ public static boolean isInRange(BigDecimal value, BigDecimal min, BigDecimal max) { if (value null) { return false; } boolean greaterOrEqualMin min null || value.compareTo(min) 0; boolean lessOrEqualMax max null || value.compareTo(max) 0; return greaterOrEqualMin lessOrEqualMax; } /** * 判断 BigDecimal 是否在开区间内(min, max) */ public static boolean isInRangeExclusive(BigDecimal value, BigDecimal min, BigDecimal max) { if (value null) { return false; } boolean greaterThanMin min null || value.compareTo(min) 0; boolean lessThanMax max null || value.compareTo(max) 0; return greaterThanMin lessThanMax; } /** * 获取两个 BigDecimal 中的较大值null 安全 */ public static BigDecimal max(BigDecimal a, BigDecimal b) { if (a null b null) { return null; } if (a null) { return b; } if (b null) { return a; } return a.compareTo(b) 0 ? a : b; } /** * 获取两个 BigDecimal 中的较小值null 安全 */ public static BigDecimal min(BigDecimal a, BigDecimal b) { if (a null b null) { return null; } if (a null) { return b; } if (b null) { return a; } return a.compareTo(b) 0 ? a : b; } // 5. Date 比较 public static boolean isGreater(Date a, Date b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } public static boolean isGreaterOrEqual(Date a, Date b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } public static boolean isLess(Date a, Date b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } public static boolean isLessOrEqual(Date a, Date b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } public static boolean isEqual(Date a, Date b) { if (a null b null) { return true; } if (a null || b null) { return false; } return a.compareTo(b) 0; } public static boolean isNotEqual(Date a, Date b) { return !isEqual(a, b); } public static boolean isInRange(Date value, Date min, Date max) { if (value null) { return false; } boolean greaterOrEqualMin min null || value.compareTo(min) 0; boolean lessOrEqualMax max null || value.compareTo(max) 0; return greaterOrEqualMin lessOrEqualMax; } // 6. LocalDate 比较 public static boolean isGreater(LocalDate a, LocalDate b) { if (a null || b null) { return false; } return a.isAfter(b); } public static boolean isGreaterOrEqual(LocalDate a, LocalDate b) { if (a null || b null) { return false; } return !a.isBefore(b); } public static boolean isLess(LocalDate a, LocalDate b) { if (a null || b null) { return false; } return a.isBefore(b); } public static boolean isLessOrEqual(LocalDate a, LocalDate b) { if (a null || b null) { return false; } return !a.isAfter(b); } public static boolean isEqual(LocalDate a, LocalDate b) { if (a null b null) { return true; } if (a null || b null) { return false; } return a.isEqual(b); } public static boolean isNotEqual(LocalDate a, LocalDate b) { return !isEqual(a, b); } public static boolean isInRange(LocalDate value, LocalDate min, LocalDate max) { if (value null) { return false; } boolean greaterOrEqualMin min null || !value.isBefore(min); boolean lessOrEqualMax max null || !value.isAfter(max); return greaterOrEqualMin lessOrEqualMax; } public static boolean isInRangeExclusive(LocalDate value, LocalDate min, LocalDate max) { if (value null) { return false; } boolean greaterThanMin min null || value.isAfter(min); boolean lessThanMax max null || value.isBefore(max); return greaterThanMin lessThanMax; } // 7. LocalDateTime 比较 public static boolean isGreater(LocalDateTime a, LocalDateTime b) { if (a null || b null) { return false; } return a.isAfter(b); } public static boolean isGreaterOrEqual(LocalDateTime a, LocalDateTime b) { if (a null || b null) { return false; } return !a.isBefore(b); } public static boolean isLess(LocalDateTime a, LocalDateTime b) { if (a null || b null) { return false; } return a.isBefore(b); } public static boolean isLessOrEqual(LocalDateTime a, LocalDateTime b) { if (a null || b null) { return false; } return !a.isAfter(b); } public static boolean isEqual(LocalDateTime a, LocalDateTime b) { if (a null b null) { return true; } if (a null || b null) { return false; } return a.isEqual(b); } public static boolean isInRange(LocalDateTime value, LocalDateTime min, LocalDateTime max) { if (value null) { return false; } boolean greaterOrEqualMin min null || !value.isBefore(min); boolean lessOrEqualMax max null || !value.isAfter(max); return greaterOrEqualMin lessOrEqualMax; } // 8. String 比较字典序 public static boolean isGreater(String a, String b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } public static boolean isGreaterOrEqual(String a, String b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } public static boolean isLess(String a, String b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } public static boolean isLessOrEqual(String a, String b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } public static boolean isEqual(String a, String b) { return Objects.equals(a, b); } public static boolean isNotEqual(String a, String b) { return !Objects.equals(a, b); } public static boolean isInRange(String value, String min, String max) { if (value null) { return false; } boolean greaterOrEqualMin min null || value.compareTo(min) 0; boolean lessOrEqualMax max null || value.compareTo(max) 0; return greaterOrEqualMin lessOrEqualMax; } // 9. 泛型比较支持所有 Comparable 类型 /** * 判断 a bnull 安全null 返回 false */ public static T extends ComparableT boolean isGreater(T a, T b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } /** * 判断 a b */ public static T extends ComparableT boolean isGreaterOrEqual(T a, T b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } /** * 判断 a b */ public static T extends ComparableT boolean isLess(T a, T b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } /** * 判断 a b */ public static T extends ComparableT boolean isLessOrEqual(T a, T b) { if (a null || b null) { return false; } return a.compareTo(b) 0; } /** * 判断 a bnull 安全 */ public static T extends ComparableT boolean isEqual(T a, T b) { if (a null b null) { return true; } if (a null || b null) { return false; } return a.compareTo(b) 0; } /** * 判断 a ! b */ public static T extends ComparableT boolean isNotEqual(T a, T b) { return !isEqual(a, b); } /** * 判断值是否在闭区间内[min, max] */ public static T extends ComparableT boolean isInRange(T value, T min, T max) { if (value null) { return false; } boolean greaterOrEqualMin min null || value.compareTo(min) 0; boolean lessOrEqualMax max null || value.compareTo(max) 0; return greaterOrEqualMin lessOrEqualMax; } /** * 判断值是否在开区间内(min, max) */ public static T extends ComparableT boolean isInRangeExclusive(T value, T min, T max) { if (value null) { return false; } boolean greaterThanMin min null || value.compareTo(min) 0; boolean lessThanMax max null || value.compareTo(max) 0; return greaterThanMin lessThanMax; } /** * 获取两个 Comparable 中的较大值null 安全 */ public static T extends ComparableT T max(T a, T b) { if (a null b null) { return null; } if (a null) { return b; } if (b null) { return a; } return a.compareTo(b) 0 ? a : b; } /** * 获取两个 Comparable 中的较小值null 安全 */ public static T extends ComparableT T min(T a, T b) { if (a null b null) { return null; } if (a null) { return b; } if (b null) { return a; } return a.compareTo(b) 0 ? a : b; } // 10. 对象字段提取比较 /** * 判断对象的字段是否大于指定值 */ public static T, R extends ComparableR boolean isFieldGreater( T obj, FunctionT, R extractor, R target) { if (obj null) { return false; } R value extractor.apply(obj); if (value null || target null) { return false; } return value.compareTo(target) 0; } /** * 判断对象的字段是否小于指定值 */ public static T, R extends ComparableR boolean isFieldLess( T obj, FunctionT, R extractor, R target) { if (obj null) { return false; } R value extractor.apply(obj); if (value null || target null) { return false; } return value.compareTo(target) 0; } /** * 判断对象的字段是否在闭区间内 */ public static T, R extends ComparableR boolean isFieldInRange( T obj, FunctionT, R extractor, R min, R max) { if (obj null) { return false; } R value extractor.apply(obj); if (value null) { return false; } boolean greaterOrEqualMin min null || value.compareTo(min) 0; boolean lessOrEqualMax max null || value.compareTo(max) 0; return greaterOrEqualMin lessOrEqualMax; } // 11. 集合过滤 /** * 从列表中过滤出值在闭区间内的元素 */ public static T extends ComparableT ListT filterInRange( ListT list, T min, T max) { if (list null || list.isEmpty()) { return new ArrayList(); } return list.stream() .filter(item - isInRange(item, min, max)) .collect(Collectors.toList()); } /** * 从列表中过滤出对象字段在闭区间内的元素 */ public static T, R extends ComparableR ListT filterByFieldInRange( ListT list, FunctionT, R extractor, R min, R max) { if (list null || list.isEmpty()) { return new ArrayList(); } return list.stream() .filter(item - isFieldInRange(item, extractor, min, max)) .collect(Collectors.toList()); } /** * 从列表中过滤出值大于指定值的元素 */ public static T extends ComparableT ListT filterGreaterThan(ListT list, T target) { if (list null || list.isEmpty()) { return new ArrayList(); } return list.stream() .filter(item - isGreater(item, target)) .collect(Collectors.toList()); } /** * 从列表中过滤出值小于指定值的元素 */ public static T extends ComparableT ListT filterLessThan(ListT list, T target) { if (list null || list.isEmpty()) { return new ArrayList(); } return list.stream() .filter(item - isLess(item, target)) .collect(Collectors.toList()); } // 12. 比较结果封装链式调用 /** * 创建比较上下文用于链式比较 */ public static T extends ComparableT CompareContextT compare(T value) { return new CompareContext(value); } /** * 比较上下文类支持链式调用 */ public static class CompareContextT extends ComparableT { private final T value; public CompareContext(T value) { this.value value; } public boolean isGreaterThan(T other) { return CompareUtils.isGreater(value, other); } public boolean isGreaterOrEqualThan(T other) { return CompareUtils.isGreaterOrEqual(value, other); } public boolean isLessThan(T other) { return CompareUtils.isLess(value, other); } public boolean isLessOrEqualThan(T other) { return CompareUtils.isLessOrEqual(value, other); } public boolean isEqualTo(T other) { return CompareUtils.isEqual(value, other); } public boolean isBetween(T min, T max) { return CompareUtils.isInRange(value, min, max); } public boolean isBetweenExclusive(T min, T max) { return CompareUtils.isInRangeExclusive(value, min, max); } public T getValue() { return value; } } }二、使用示例1. 基本数值比较java// int boolean b1 CompareUtils.isGreater(10, 5); // true boolean b2 CompareUtils.isInRange(25, 18, 60); // true // BigDecimal BigDecimal price new BigDecimal(99.99); BigDecimal min new BigDecimal(10); BigDecimal max new BigDecimal(100); boolean inRange CompareUtils.isInRange(price, min, max); // true // double注意精度推荐用 BigDecimal boolean d1 CompareUtils.isGreater(99.9, 10.0); // true2. 日期比较javaLocalDate today LocalDate.now(); LocalDate start LocalDate.of(2026, 1, 1); LocalDate end LocalDate.of(2026, 12, 31); boolean inYear CompareUtils.isInRange(today, start, end); // true boolean isAfter CompareUtils.isGreater(today, start); // true // Date Date now new Date(); Date past new Date(now.getTime() - 3600000); boolean isFuture CompareUtils.isGreater(now, past); // true3. 字符串比较javaString version 2.5; String minVersion 2.0; String maxVersion 3.0; boolean valid CompareUtils.isInRange(version, minVersion, maxVersion); // true boolean isNewer CompareUtils.isGreater(version, 2.0); // true4. 对象字段提取比较javaData public class Order { private BigDecimal amount; private LocalDate orderDate; } Order order new Order(); order.setAmount(new BigDecimal(1500)); order.setOrderDate(LocalDate.now()); // 判断订单金额是否超过 1000 boolean isHigh CompareUtils.isFieldGreater(order, Order::getAmount, new BigDecimal(1000)); // 判断订单金额是否在 500-2000 之间 boolean inRange CompareUtils.isFieldInRange(order, Order::getAmount, new BigDecimal(500), new BigDecimal(2000));5. 集合过滤javaListInteger numbers Arrays.asList(10, 25, 30, 45, 60, 75); // 过滤出 20-50 之间的数字 ListInteger filtered CompareUtils.filterInRange(numbers, 20, 50); // 结果: [25, 30, 45] // 过滤出大于 50 的数字 ListInteger greater CompareUtils.filterGreaterThan(numbers, 50); // 结果: [60, 75]6. 链式调用java// 优雅的链式比较 boolean result CompareUtils.compare(new BigDecimal(50)) .isBetween(new BigDecimal(10), new BigDecimal(100)); // true boolean isLarge CompareUtils.compare(age) .isGreaterThan(18) .isLessThan(60); // 判断年龄在 18-60 之间7. 空值安全比较javaBigDecimal value null; BigDecimal target new BigDecimal(10); // null 返回 false不会 NPE boolean result CompareUtils.isGreater(value, target); // false boolean result2 CompareUtils.isInRange(value, target, new BigDecimal(100)); // false三、API 速查表方法说明支持类型isGreater(a, b)a bint, long, double, BigDecimal, Date, LocalDate, LocalDateTime, StringisGreaterOrEqual(a, b)a b同上isLess(a, b)a b同上isLessOrEqual(a, b)a b同上isEqual(a, b)a b同上isNotEqual(a, b)a ! b同上isInRange(value, min, max)value ∈ [min, max]同上isInRangeExclusive(value, min, max)value ∈ (min, max)同上max(a, b)取较大值同上min(a, b)取较小值同上isFieldInRange(obj, extractor, min, max)字段值 ∈ [min, max]任意对象filterInRange(list, min, max)过滤 List支持 Comparablecompare(value).isBetween(min, max)链式区间判断支持 Comparable四、设计总结特点说明null 安全所有方法对 null 值返回 false不会抛出 NPE类型丰富支持 int、long、double、BigDecimal、Date、LocalDate、LocalDateTime、String泛型支持提供泛型方法支持所有 Comparable 类型链式调用通过CompareContext支持优雅的链式比较集合处理提供集合过滤工具快速筛选数据字段提取支持从对象中提取字段后比较减少重复代码

相关新闻

UE5蓝图快速集成天气API:用VaRest插件5分钟实现动态数据驱动

UE5蓝图快速集成天气API:用VaRest插件5分钟实现动态数据驱动

1. 项目概述:为什么要在UE5蓝图里调用天气API? 如果你正在用UE5做项目,无论是游戏、模拟器还是数字孪生应用,想让场景里的天空、光照、甚至NPC行为根据真实天气动态变化,手动调参数肯定不现实。这时候,调用…

2026/10/2 10:20:57 阅读更多 →
ImageGlass:告别格式困扰,一个开源图像浏览器如何重塑你的图片查看体验

ImageGlass:告别格式困扰,一个开源图像浏览器如何重塑你的图片查看体验

ImageGlass:告别格式困扰,一个开源图像浏览器如何重塑你的图片查看体验 【免费下载链接】ImageGlass 🏞 A fast, open-source, modern image viewer for 90 formats – including WEBP, GIF, SVG, AVIF, JXL, HEIC and more – built for smo…

2026/10/3 6:25:30 阅读更多 →
如何3分钟拯救B站缓存视频:m4s-converter无损转换完整解决方案

如何3分钟拯救B站缓存视频:m4s-converter无损转换完整解决方案

如何3分钟拯救B站缓存视频:m4s-converter无损转换完整解决方案 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 问题诊断室&#xff1…

2026/10/4 12:11:44 阅读更多 →

最新新闻

Docker 下搭建 Redis 集群:三主三从、故障转移与扩容实战

Docker 下搭建 Redis 集群:三主三从、故障转移与扩容实战

Docker 下搭建 Redis 集群,听起来就是拉镜像、起容器、敲一条 create 命令的事,但真正把三主三从跑起来,再经历过一次故障切换和扩容,才知道里面有不少细节是官方文档不会明确告诉你的。我会把一条完整的实操链路走完:…

2026/10/12 4:12:31 阅读更多 →
Web安全防护实战:从TLS指纹识别到API动态令牌设计

Web安全防护实战:从TLS指纹识别到API动态令牌设计

抱歉,这个项目标题我没办法直接写成博文。原因很直接:标题里的“JA3/TLS伪造”“突破Cloudflare v4.0 AI风控”属于绕过网站安全防护机制的技术细节,公开输出这类内容容易踩到合规红线,也可能被用于未授权访问、批量数据采集或规避…

2026/10/12 4:12:31 阅读更多 →
82 极物科技 | KNX调试 - 常见报文异常案例分析

82 极物科技 | KNX调试 - 常见报文异常案例分析

极物科技 | KNX调试 - 常见报文异常案例分析 前言 工程品质是 KNX 国际标准三十年立足全球的根基,而可观测性是品质的前提。 报文追踪把“看不见的总线”变成“看得见的证据”:每一次收发都有记录、每一次异常都有据可查。本文围绕报文追踪的接收链路、发…

2026/10/12 4:12:31 阅读更多 →
VB调用VISA控制安捷伦波形发生器实操指南

VB调用VISA控制安捷伦波形发生器实操指南

简介:本资源是一份面向电子测试测量领域初学者与自动化开发工程师的VISA编程实战项目,聚焦于使用Visual Basic控制Keysight(原安捷伦)任意波形发生器输出多种标准及调制波形。资源完整提供VB源码工程、可执行程序及配套配置文件&a…

2026/10/12 4:12:31 阅读更多 →
Docker搭建Redis集群实战:从端口映射到故障转移全攻略

Docker搭建Redis集群实战:从端口映射到故障转移全攻略

1. 为什么要用 Docker 搭 Redis 集群先聊一个比较实际的问题:Redis 集群这玩意儿,用传统方式在一台物理机或者多台服务器上手工部署,光环境准备就够折腾半天——下载 Redis、编译、改配置、逐台启动、再合成集群,中间任何一步的 R…

2026/10/12 4:12:31 阅读更多 →
Java Web团队研发风格统一实战:从编码规范到架构流程的落地指南

Java Web团队研发风格统一实战:从编码规范到架构流程的落地指南

带过几个 Java Web 项目团队之后,你会发现一个特别有意思的现象:同一个需求,不同成员交上来的代码,看起来完全不像出自同一个项目。有人喜欢把逻辑全塞在 Service 里,有人习惯在 Controller 里堆一坨;命名有…

2026/10/12 4:11:30 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →