Spring Boot MyBatis-Plus处理日期查询代码报错分析与修复

以下spring boot + mybatis-plus代码报错: /** * 获取资金信息列表 */ public List<CapitalInfoVO> queryList(@NotNull CapitalInfoQueryDTO queryDTO) { LambdaQueryWrapper<CapitalInfo > queryWrapper = new LambdaQueryWrapper<>(); // 构造查询条件 queryWrapper // 模糊查询 - 资金序号 .like(StringUtils.hasText(queryDTO.getCapitalNo()), CapitalInfo::getCapitalNo, queryDTO.getCapitalNo()) // 模糊查询 - 资金名称 .like(StringUtils.hasText(queryDTO.getCapitalName()), CapitalInfo::getCapitalName, queryDTO.getCapitalName()) // 精确查询 - 资金类别 .eq(StringUtils.hasText(queryDTO.getCapitalType()), CapitalInfo::getCapitalType, queryDTO.getCapitalType()) // 精确查询 - 指标类别 .eq(StringUtils.hasText(queryDTO.getCapitalIndexType()), CapitalInfo::getCapitalIndexType, queryDTO.getCapitalIndexType()) // 模糊查询 - 资金账户 .like(StringUtils.hasText(queryDTO.getCapitalAccount()), CapitalInfo::getCapitalAccount, queryDTO.getCapitalAccount()) // 精确查询 - 资金来源 .eq(StringUtils.hasText(queryDTO.getCapitalSource()), CapitalInfo::getCapitalSource, queryDTO.getCapitalSource()) // 精确查询 - 指标来源 .eq(StringUtils.hasText(queryDTO.getCapitalIndexSource()), CapitalInfo::getCapitalIndexSource, queryDTO.getCapitalIndexSource()) // 精确查询 - 资金年份 .eq(queryDTO.getCapitalYear() != null, CapitalInfo::getCapitalYear, queryDTO.getCapitalYear()) // 精确查询 - 资金状态 .eq(queryDTO.getCapitalState() != null, CapitalInfo::getCapitalState, queryDTO.getCapitalState()) // 模糊查询 - 备注信息 .like(StringUtils.hasText(queryDTO.getRemark()), CapitalInfo::getRemark, queryDTO.getRemark()) // between - 创建日期 .between( queryDTO.getCreateDate().size() == 2, CapitalInfo::getCreateTime, DateUtils.parseDateTimeRange(queryDTO.getCreateDate()).get(0), DateUtils.parseDateTimeRange(queryDTO.getCreateDate()).get(1) ) // 倒序排序 - 资金年份 .orderByDesc(CapitalInfo::getCapitalYear) // 倒序排序 - 主键id .orderByDesc(CapitalInfo::getId); List<CapitalInfo> capitalInfos = capitalInfoMapper.selectList(queryWrapper); // List<CapitalInfo> -> List<CapitalInfoVO> return capitalInfos.stream() .map(capitalInfo -> { CapitalInfoVO capitalInfoVO = new CapitalInfoVO(); BeanUtils.copyProperties(capitalInfo, capitalInfoVO); return capitalInfoVO; }) .collect(Collectors.toList()); } 报错: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) ~[na:na] at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) ~[na:na] at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266) ~[na:na] at java.base/java.util.Objects.checkIndex(Objects.java:359) ~[na:na] at java.base/java.util.ArrayList.get(ArrayList.java:427) ~[na:na] at com.weiyu.service.CapitalInfoService.queryList(CapitalInfoService.java:67) ~[classes/:na] at com.weiyu.controller.CapitalInfoController.queryList(CapitalInfoController.java:53) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) ~[spring-aop-6.1.15.jar:6.1.15] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[spring-aop-6.1.15.jar:6.1.15] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-6.1.15.jar:6.1.15] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[spring-aop-6.1.15.jar:6.1.15] at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:58) ~[spring-aop-6.1.15.jar:6.1.15] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.15.jar:6.1.15] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[spring-aop-6.1.15.jar:6.1.15] at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-6.1.15.jar:6.1.15] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.15.jar:6.1.15] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[spring-aop-6.1.15.jar:6.1.15] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720) ~[spring-aop-6.1.15.jar:6.1.15] at com.weiyu.controller.CapitalInfoController$$SpringCGLIB$$0.queryList(<generated>) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255) ~[spring-web-6.1.15.jar:6.1.15] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188) ~[spring-web-6.1.15.jar:6.1.15] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.1.15.jar:6.1.15] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926) ~[spring-webmvc-6.1.15.jar:6.1.15] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831) ~[spring-webmvc-6.1.15.jar:6.1.15] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.1.15.jar:6.1.15] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) ~[spring-webmvc-6.1.15.jar:6.1.15] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) ~[spring-webmvc-6.1.15.jar:6.1.15] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.1.15.jar:6.1.15] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) ~[spring-webmvc-6.1.15.jar:6.1.15] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) ~[tomcat-embed-core-10.1.33.jar:6.0] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.1.15.jar:6.1.15] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.33.jar:6.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.33.jar:10.1.33] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.1.15.jar:6.1.15] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.15.jar:6.1.15] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.1.15.jar:6.1.15] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.15.jar:6.1.15] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.1.15.jar:6.1.15] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.15.jar:6.1.15] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) ~[tomcat-embed-core-10.1.33.jar:10.1.33] at java.base/java.lang.Thread.run(Thread.java:842) ~[na:na]

根据堆栈跟踪,错误发生在CapitalInfoService.java的第 67 行。查看您的代码,这个位置是:

java

.between( queryDTO.getCreateDate().size() == 2, CapitalInfo::getCreateTime, DateUtils.parseDateTimeRange(queryDTO.getCreateDate()).get(0), DateUtils.parseDateTimeRange(queryDTO.getCreateDate()).get(1) )

错误IndexOutOfBoundsException: Index 0 out of bounds for length 0表示您尝试访问一个空列表的第一个元素。

问题分析:

  1. queryDTO.getCreateDate()null或空列表时,调用.size()会导致空指针异常,但这里显然不是这种情况,因为您已经检查了.size() == 2

  2. 更可能的问题是DateUtils.parseDateTimeRange(queryDTO.getCreateDate())返回了一个空列表,即使传入的queryDTO.getCreateDate()不为空且有 2 个元素

解决方案:

修改您的代码,确保在访问列表元素之前先验证列表不为空:

java

public List<CapitalInfoVO> queryList(@NotNull CapitalInfoQueryDTO queryDTO) { LambdaQueryWrapper<CapitalInfo> queryWrapper = new LambdaQueryWrapper<>(); // 构造查询条件 queryWrapper // 模糊查询 - 资金序号 .like(StringUtils.hasText(queryDTO.getCapitalNo()), CapitalInfo::getCapitalNo, queryDTO.getCapitalNo()) // 模糊查询 - 资金名称 .like(StringUtils.hasText(queryDTO.getCapitalName()), CapitalInfo::getCapitalName, queryDTO.getCapitalName()) // 精确查询 - 资金类别 .eq(StringUtils.hasText(queryDTO.getCapitalType()), CapitalInfo::getCapitalType, queryDTO.getCapitalType()) // 精确查询 - 指标类别 .eq(StringUtils.hasText(queryDTO.getCapitalIndexType()), CapitalInfo::getCapitalIndexType, queryDTO.getCapitalIndexType()) // 模糊查询 - 资金账户 .like(StringUtils.hasText(queryDTO.getCapitalAccount()), CapitalInfo::getCapitalAccount, queryDTO.getCapitalAccount()) // 精确查询 - 资金来源 .eq(StringUtils.hasText(queryDTO.getCapitalSource()), CapitalInfo::getCapitalSource, queryDTO.getCapitalSource()) // 精确查询 - 指标来源 .eq(StringUtils.hasText(queryDTO.getCapitalIndexSource()), CapitalInfo::getCapitalIndexSource, queryDTO.getCapitalIndexSource()) // 精确查询 - 资金年份 .eq(queryDTO.getCapitalYear() != null, CapitalInfo::getCapitalYear, queryDTO.getCapitalYear()) // 精确查询 - 资金状态 .eq(queryDTO.getCapitalState() != null, CapitalInfo::getCapitalState, queryDTO.getCapitalState()) // 模糊查询 - 备注信息 .like(StringUtils.hasText(queryDTO.getRemark()), CapitalInfo::getRemark, queryDTO.getRemark()) // 倒序排序 - 资金年份 .orderByDesc(CapitalInfo::getCapitalYear) // 倒序排序 - 主键id .orderByDesc(CapitalInfo::getId); // 处理日期范围查询 - 单独处理以避免空列表访问 if (queryDTO.getCreateDate() != null && queryDTO.getCreateDate().size() == 2) { List<Date> dateRange = DateUtils.parseDateTimeRange(queryDTO.getCreateDate()); if (dateRange != null && dateRange.size() == 2) { queryWrapper.between(CapitalInfo::getCreateTime, dateRange.get(0), dateRange.get(1)); } else { // 可以记录日志或进行其他处理 log.warn("日期解析失败,将跳过日期范围查询条件"); } } List<CapitalInfo> capitalInfos = capitalInfoMapper.selectList(queryWrapper); // List<CapitalInfo> -> List<CapitalInfoVO> return capitalInfos.stream() .map(capitalInfo -> { CapitalInfoVO capitalInfoVO = new CapitalInfoVO(); BeanUtils.copyProperties(capitalInfo, capitalInfoVO); return capitalInfoVO; }) .collect(Collectors.toList()); }

替代方案(如果仍想保持链式调用):

java

// 在链式调用之前处理日期范围 Date startDate = null; Date endDate = null; if (queryDTO.getCreateDate() != null && queryDTO.getCreateDate().size() == 2) { List<Date> dateRange = DateUtils.parseDateTimeRange(queryDTO.getCreateDate()); if (dateRange != null && dateRange.size() == 2) { startDate = dateRange.get(0); endDate = dateRange.get(1); } } // 构造查询条件 queryWrapper // ... 其他条件 .between(startDate != null && endDate != null, CapitalInfo::getCreateTime, startDate, endDate) // ... 排序条件

建议:

  1. 检查DateUtils.parseDateTimeRange方法:这个方法可能在某些输入下返回空列表。您需要确保它正确处理输入并返回预期的结果。

  2. 添加日志记录:记录解析失败的情况,以便调试。

  3. 防御性编程:在处理可能返回空值的方法时,始终进行空值检查。

这样修改后,您的代码将更加健壮,不会因为DateUtils.parseDateTimeRange返回空列表而导致程序崩溃。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1158879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科技知识图谱:释放创新潜能,构建协同生态

科易网AI技术转移与科技成果转化研究院 在全球化竞争日益激烈的今天&#xff0c;科技创新已不再是单打独斗的智力较量&#xff0c;而是一场需要多方协同、资源整合的复杂系统工程。如何让科技成果从实验室走向市场&#xff0c;如何构建开放协同的创新生态体系&#xff0c;成为…

【深度收藏】大模型RLHF算法全攻略:7种方法优缺点对比与实战选型指南

文章系统介绍7种大模型强化学习算法&#xff1a;经典稳健但资源消耗大的PPO、显存优化的GRPO、轻量高效的DPO、长文本专家GSPO、工业级优化DAPO、防模式崩塌的BAPO以及智能体专用ARPO。每种算法详解核心思想、优势局限及适用场景&#xff0c;为开发者提供从个人实验室到工业级训…

Spring singleton线程安全吗?与单例模式有何不同?

Spring singleton是Spring框架中一个核心且基础的概念&#xff0c;它关乎应用组件的生命周期和资源管理。简单来说&#xff0c;它代表Spring IoC容器默认会为每个Bean定义创建且仅创建一个共享实例。理解其运作机制和适用场景&#xff0c;对于构建高效、稳定的应用至关重要。本…

线程间通信模型有哪些?如何选择与实践应用

线程间通信是多线程编程的基石&#xff0c;它决定了并发程序中各个执行单元如何安全、高效地交换信息和协调任务。理解不同的通信模型&#xff0c;能帮助开发者构建出更稳定、性能更优的软件系统。下面我将结合实践&#xff0c;探讨几个关键方面。 线程间通信有哪些常见模型 最…

4G智能网关在城市水务管网智能监测中的应用

场景痛点&#xff1a;城市供水管网遍布地下&#xff0c;漏损问题隐蔽难寻&#xff0c;造成巨大的水资源浪费和经济损失。传统的人工巡检与分区计量方式效率低下、响应滞后。管网压力、流量、水质等关键参数无法实现广域、实时的监测&#xff0c;一旦发生爆管或水质污染事件&…

企业固定资产管理软件有哪些?全面解析常见产品及对比功能优势

固定资产覆盖设备、办公设施、不动产等多个类别&#xff0c;随着数字化转型深入&#xff0c;固定资产管理软件凭借全生命周期管控、数据实时同步、智能流程优化等优势&#xff0c;成为破解管理难题、提升管控效能的核心工具&#xff0c;为不同规模、不同行业的企业提供标准化、…

大数据分析入门:Hadoop 生态系统与 Python 结合的分布式数据处理实践

在数据量呈指数级增长的数字时代&#xff0c;传统单机数据分析工具已难以应对海量数据的存储与处理需求。Hadoop 生态系统作为大数据领域的开源基石&#xff0c;凭借分布式存储与计算能力&#xff0c;成为处理 PB 级数据的核心解决方案&#xff1b;而 Python 以其简洁易用的语法…

AbMole小讲堂丨ISRIB:整合应激反应的调控分子及其研究应用

ISRIB&#xff08;Integrated Stress Response Inhibitor&#xff0c;AbMole&#xff0c;M9242&#xff09;是一种小分子化合物&#xff0c;能够特异性抑制整合应激反应&#xff08;ISR&#xff09;的激活。ISR是细胞在应激条件下&#xff08;如缺氧、病毒感染等&#xff09;通…

收藏!字节实习生日薪500刷屏:普通人抓住AI风口,从大模型训练师起步就够了

最近打工人的朋友圈&#xff0c;彻底被字节跳动实习生涨薪的消息刷爆了&#xff01; 据1月5日知情人士爆料&#xff0c;此次涨薪覆盖技术、产品、运营等多个核心岗位&#xff0c;且从1月1日起已正式生效。最让人惊呼的是&#xff0c;有网友深挖后发现&#xff0c;产品岗和技术岗…

大模型训练必备技能:从理论到实践,一篇全搞定,建议长期收藏

文章系统介绍大模型训练的必要性、基本流程及学习框架。大模型训练使知识"内化"于模型本身&#xff0c;区别于RAG的外部扩展&#xff0c;具有任务精通度高、响应速度快、系统可靠性强的优势。学习大模型训练对专业人才、学生和企业都至关重要。本教程将从基础到高级&…

强迫风冷散热设计:风道优化设计指南

&#x1f393;作者简介&#xff1a;科技自媒体优质创作者 &#x1f310;个人主页&#xff1a;莱歌数字-CSDN博客 &#x1f48c;公众号&#xff1a;莱歌数字 &#x1f4f1;个人微信&#xff1a;yanshanYH 211、985硕士&#xff0c;职场15年 从事结构设计、热设计、售前、产品设…

大模型智能体必备技能:路由模式详解,从原理到实践一篇搞定,建议收藏

路由模式是智能体系统的动态决策机制&#xff0c;能根据环境状态或用户输入在多路径中仲裁&#xff0c;解决传统线性流程灵活性差的问题。通过"接收输入→评估决策→导向路径"闭环&#xff0c;实现意图精准匹配、上下文自适应和模块化扩展。文章详解4种主流实现方式(…

【必学收藏】提示工程VS RAG VS 微调,大模型应用场景全解析,一篇搞定!

文章全面介绍RAG&#xff08;检索增强生成&#xff09;技术&#xff0c;与提示工程、微调的对比及适用场景。详细阐述RAG系统工作流程&#xff08;文档解析、分块、向量化、存储、检索、重排序等&#xff09;&#xff0c;以及文档分块策略、Embedding模型选择、系统调试、维护评…

【Vivado错误日志】:[IP_Flow19-3478] Validation failed for parameter Coe File(Coe_File).Invalid Coe File...

问题描述&#xff1a; Vivado 在Block Design中调用自定义封装的IP核后Generate Output Product时报错&#xff1a; [IP_Flow19-3478]Validation failed forparameter’CoeFile(Coe_File)with value’…/xxx/xxxxxx/xxxxxxxx.coe’ for IP system_system_top_0_o/bik_mem_gen_1…

【Java毕设全套源码+文档】基于springboot的卷烟营销统计分析系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Java毕设全套源码+文档】基于springboot的小儿推拿培训系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Ray Tune高效调参实战

&#x1f493; 博客主页&#xff1a;借口的CSDN主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Ray Tune高效调参实战&#xff1a;从理论到生产级优化的深度指南目录Ray Tune高效调参实战&#xff1a;从理论到生产级优化的深度指南 引言&#xff1a;调参困境与Ray Tune的破局点 核心…

不想当管理,技术又到顶?资深技术人的第三条路

一位工作八年的架构师曾对我说&#xff0c;他最近非常焦虑&#xff1a;公司希望他带团队&#xff0c;但他不想做纯管理&#xff1b;可如果继续写代码&#xff0c;又感觉技术深度很难再有突破&#xff0c;年轻人学新框架比他快多了。他觉得自己被困在了中间&#xff0c;不上不下…

Alexa Fluor 405 NHS Ester,AF405-NHS,高亮度紫蓝色荧光活性试剂

Alexa Fluor 405 NHS Ester&#xff0c;AF405-NHS&#xff0c;高亮度紫蓝色荧光活性试剂Alexa Fluor 405 NHS Ester&#xff08;简称AF405-NHS&#xff09;是一种高亮度紫蓝色荧光活性试剂&#xff0c;由Alexa Fluor 405荧光染料通过N-羟基琥珀酰亚胺&#xff08;NHS&#xff0…

Atto 465 NHS Ester,Atto465-NHS,实现高分辨率多通道成像

Atto 465 NHS Ester&#xff0c;Atto465-NHS&#xff0c;实现高分辨率多通道成像Atto 465 NHS Ester&#xff08;简称Atto465-NHS&#xff09;是一种高性能荧光活性试剂&#xff0c;由Atto 465荧光染料通过N-羟基琥珀酰亚胺&#xff08;NHS&#xff09;酯活化形成的衍生物。Att…