- 博客(67)
- 收藏
- 关注
原创 问题解决:BigDecimal累加遇null必报错?一招解决实战坑
摘要: 开发CRM回款功能时,BigDecimal累加报NullPointerException,排查发现是回款金额字段存在null值导致。解决方法是在Stream累加前用Optional.ofNullable处理null值,将其替换为BigDecimal.ZERO。经验教训:数据库字段可能为null时,BigDecimal运算需做空值防护,排查NPE应优先检查数据本身而非新增字段。关键代码:.map(x -> Optional.ofNullable(x.getMoney()).orElse(BigD
2025-12-30 13:14:35
885
原创 实践开发:老系统新增字段我是如何用枚举优雅兼容历史数据的
摘要:文章讨论了CRM系统升级中新增"发票方向"字段的设计过程。作者最初采用金额正负值配合前端颜色区分红冲发票的方案(仅需2行代码),但被要求必须增加字段明确区分。面对历史数据处理难题,最终采用枚举+兜底处理的方案:通过枚举集中管理业务规则,对老数据根据金额自动推导方向。虽然作者认为原方案在当下业务场景已足够,但升级方案确保了系统稳定性和可维护性,为后续开发减少了隐患。该方案平衡了业务需求与技术实现,展示了系统迭代中处理历史数据的有效方法。
2025-12-22 10:18:27
781
原创 ES 为啥还说 No mapping found?原因
摘要:Elasticsearch报错"Nomappingfoundfor[repaymentRatio]"是因为缺少该字段的映射定义。解决方法:1)先检查现有mapping确认字段缺失;2)使用PUT请求为wk_single_receivables索引添加repaymentRatio字段映射,类型设为scaled_float并指定scaling_factor为100。该方法适用于ES6.8版本,可在不删除重建索引的情况下补充新字段映射,避免影响现有数据。(150字)
2025-12-17 14:42:35
112
原创 Vue 报错:TypeError: list.reduce is not a function —— 原因分析与解决方案
摘要:本文分析了Vue父子组件通信中因数据结构不一致导致的reduce报错问题。当子组件通过$emit发送对象{list:[...]}时,父组件误将其当作数组直接调用reduce方法,引发TypeError。解决方案包括:1)子组件直接发送数组;2)父组件正确解构接收的对象数据。该问题常见于组件拆分场景,核心在于确保通信双方数据结构一致。本文通过典型案例说明了类型匹配在Vue开发中的重要性。(149字) 注:摘要严格控制在150字内,完整包含问题现象(报错)、原因分析(数据结构不一致)、解决方案(双向调整)
2025-11-26 09:31:30
374
原创 npm 安装 canvas 报错 node-gyp ERR! 的解决方法(Windows 系统)
摘要: 在Windows环境下使用npm install安装依赖(如canvas模块)时,常因缺少C++编译环境报错node-gyp失败。提供两种解决方案: 简易方案(Node.js v16及以下适用):以管理员身份运行npm install --global windows-build-tools自动安装Python和C++工具。 推荐方案(通用稳定):手动安装Visual Studio Build Tools,勾选“C++桌面开发”组件(含MSVC编译器和Windows SDK),重启后重试安装。后者兼
2025-10-24 15:57:00
1036
原创 NVM(Node Version Manager)详解:多版本 Node 管理神器
本文介绍了Node版本管理工具NVM的核心功能和实用场景。NVM能够实现多Node版本共存、快速切换版本、项目环境隔离等功能,解决开发中常见的版本冲突问题。文章详细说明了Windows系统下NVM的安装步骤和常见问题处理,并提供了常用命令,如安装/切换/查看版本等。通过NVM,开发者可以灵活管理不同项目所需的Node版本,提高开发效率,避免因版本问题导致的构建失败。
2025-10-17 18:38:29
759
原创 使用 EasyExcel 封装通用 Excel 导出工具类
本文分享了如何封装EasyExcel通用导出工具类ExcelExportUtil。针对企业应用中Excel导出的重复代码问题,工具类通过泛型支持任意实体类导出,提供单个Sheet和多Sheet导出功能。核心设计包括:1)封装响应头和流操作;2)支持泛型类导出;3)多Sheet数据封装。使用示例显示控制器代码量减少80%,只需关注业务数据处理。该方案提高了代码复用性和可维护性,特别适合需要导出复杂报表的业务场景。
2025-10-15 15:09:27
383
原创 Vue + Spring Boot 实现 Excel 导出实例
本文介绍了前后端实现Excel导出的完整方案。前端使用Vue+ElementUI,通过Axios请求后端接口时设置responseType:'blob'获取二进制流,利用URL.createObjectURL创建下载链接。后端采用SpringBoot+EasyExcel,通过HttpServletResponse直接输出Excel文件流。文章重点解决了导出时出现[objectObject]的问题,强调必须使用blob类型处理文件流。同时展示了表格数据编辑功能,允许用户修改销售单价并自动计算相关字段。该方案实
2025-10-11 13:36:52
444
原创 【前端实战】Vue watch 里做计算时浮点精度问题及解决方案
Vue watch 做计算时一定要注意浮点精度问题。toFixedNumber()是最简单的前端处理方式。后端也建议做二次截断,保证数据库安全。遇到“最多支持15位数字”的错误,不要先怪正则或校验,先检查浮点数小数位。
2025-09-18 13:47:59
320
原创 【踩坑记录】SpringBoot 项目报 Communications link failure 的解决方法
文章摘要:在SpringBoot项目启动时遇到"Communicationslinkfailure"数据库连接错误,表现为JDBC驱动未收到MySQL响应。常见原因包括MySQL服务未启动、端口错误、账号密码错误等。经排查发现是MySQL服务意外停止,通过services.msc重新启动服务后问题解决。建议遇到此类问题时优先检查数据库服务是否运行,可快速定位大部分类似故障。
2025-08-28 10:34:25
716
原创 CTE(公共表表达式)详解:用实际案例带你掌握SQL高级查询技巧
本文通过SQLServer案例详解CTE(公共表表达式)的概念与应用。CTE是临时命名结果集,用于简化复杂查询,具有提高可读性、支持递归查询、替代视图等优势。重点解析了利用ROW_NUMBER()去重排序、CTE预处理数据等关键技术,并通过报销单关联借款记录的业务场景,展示CTE如何实现高效数据查询。文章还介绍了递归CTE处理层次数据的方法,同时指出CTE的生命周期和性能注意事项。掌握CTE能显著提升SQL查询的编写效率与质量。
2025-08-27 15:27:02
761
原创 解决Vue类型错误:Expected Array, got String,导致需要显示字段显示成了[object Object]
摘要:CRM系统二次开发时,前端保存数据报错"[Vue warn]: Invalid prop: type check failed for prop 'value'. Expected Array, got String",且订单号显示为[object Object]。问题根源在于后端错误地将普通文本字段orderNumber按关联字段处理,返回了List<JSONObject>而非预期的String。解决方法是移除后端多余的集合封装逻辑,保持字段类型与前端预期一致。该案例
2025-08-27 09:54:47
497
原创 前端业务必备工具类:MoneyUtils 金额工具类(精确运算 + 千分位格式化)
摘要:前端开发中,JavaScript的浮点数精度问题会影响金额计算的准确性,同时金额展示缺乏千分位分隔符会影响可读性。为此,MoneyUtils工具类提供了精确的加减乘除运算和格式化展示功能。核心原理是将浮点数放大为整数计算后再缩小,避免精度丢失,并通过正则表达式实现千分位格式化。该工具类适用于财务系统、电商平台等需要精确金额计算的场景,解决了0.1+0.2≠0.3等典型问题,支持保留小数位和金额美化展示。使用时需注意除法运算可能产生循环小数,建议结合toFixed方法控制显示位数。
2025-08-25 18:35:03
1136
原创 【JavaScript】封装日期工具类:精准处理日期加减与格式化
本文介绍了一个实用的前端DateUtils工具类,封装了常见的日期操作功能。该工具类包含日期解析、格式化及加减天数等方法,特别解决了"是否包含当天"的业务难题。通过addDays方法的includeStart参数,可灵活处理如"发货日+90天"是否包含当天的情况。工具类还避免了时区问题导致的日期偏差,支持本地时间解析和统一格式化输出。适用于Vue/React/Node等项目,只需简单引入即可使用,提高了日期处理的准确性和开发效率。建议将此类工具统一维护在项目utils
2025-08-25 14:19:05
780
原创 SpringBoot + MyBatis-Plus 使用 listObjs 报 ClassCastException 的原因与解决办法
本文分享了使用MyBatis-Plus时遇到的典型问题:通过listObjs方法查询多列数据时,由于该方法默认只返回第一列导致类型转换异常。作者分析了报错原因,指出listObjs在多列查询时返回的是Object[]而非实体对象。提供了两种解决方案:1)改用list方法获取实体对象后转换;2)正确处理listObjs返回的Object[]数组。最后建议根据业务场景选择合适方法:多列查询用list,单列查询用listObjs。该案例对处理类似数据库查询问题具有参考价值。
2025-08-20 15:30:16
524
原创 【前端实战】如何封装日期格式化工具,满足后端 LocalDate 和 LocalDateTime 格式需求
【摘要】本文探讨了前后端分离开发中日期时间数据传递的常见问题及解决方案。针对后端LocalDate和LocalDateTime类型对日期格式的严格要求,提出了封装前端日期格式化工具的方法。该工具函数可灵活处理日期转换,支持是否包含时间部分的参数控制,确保格式符合后端要求。通过统一日期处理逻辑,避免了重复代码和接口调用失败,提高了开发效率和代码可维护性。文中给出了具体实现代码和应用示例,强调了前后端格式统一的重要性。
2025-08-12 14:21:23
494
原创 Vue 项目中主从表异步保存实战:缓存导致接口不执行问题排查与解决
本文探讨了企业级管理系统中主从表数据联合保存的实现方案。以"资金利息付款"功能为例,涉及主表保存后并行调用两个从表接口的流程。针对开发中遇到的付款退回从表接口未调用问题,分析发现是浏览器缓存导致数据未刷新。解决方案包括:确保数据实时性、添加调试日志、使用Promise.all并行执行接口、清除缓存等。文章还提出了代码优化建议,如空数据判断和错误细化处理。总结指出,主从表保存应遵循先主后从原则,并行调用接口,并强调调试工具和缓存问题排查的重要性。
2025-08-11 10:09:44
839
原创 【实战】通用利息计算数据转换函数封装及应用场景详解
本文介绍了资金管理系统中针对付款和付款退回数据的统一处理方案。通过设计processInterestList函数,实现了不同格式数据的标准化转换,包括日期格式化(统一为YYYY-MM-DD)、金额字段处理、补贴规则设置等。该函数通过参数配置区分付款(检查结算方式确定补贴点)和付款退回(固定1.0补贴点),并初始化利息计算所需字段。应用时只需传入对应字段名和类型标识即可完成数据转换,有效提升了代码复用性,简化了后续利息计算流程。该方案适用于应付账款等需要统一处理资金往来的业务场景。
2025-08-09 10:45:53
482
原创 前端百分比展示导致后端 BigDecimal 转换异常的排查与解决
摘要:在开发订单预算系统时,前端将利润率差额以"28.4212%"格式的字符串传给后端,导致BigDecimal转换失败。正确做法应保持数据存储为纯数字(28.4212),仅在展示时添加%符号。建议:1)严格区分数据存储与展示格式;2)使用计算方法处理格式化展示;3)确保前后端字段类型一致。该问题警示开发中必须分离数据处理与展示逻辑,避免因格式混淆导致的类型转换错误。
2025-08-07 15:54:57
360
原创 Elasticsearch 字段值过长导致索引报错问题排查与解决经验总结
Elasticsearch字段过长导致索引失败的解决方案:当text类型字段内容超过32,766字节限制时,会报MapperParsingException错误。本文通过设置字段"index":false成功解决该问题,适用于仅需存储展示而不需搜索的大文本字段(如备注、富文本内容)。建议在创建索引时合理规划字段类型,对不需要搜索的大字段及时禁用索引。
2025-07-23 15:06:18
1255
原创 通用业务编号生成工具类(MyBatis-Plus + Spring Boot)详解 + 3种调用方式
本文介绍了一个基于MyBatis-Plus的业务编号生成工具类,支持"前缀-日期-序列号"格式(如FK-240704-0001)。该工具类具有自动递增、去重重试机制(最多5次),通过Lambda表达式获取字段,支持多种调用场景(Service内部/外部/动态获取)。核心功能包括:日期自动格式化、序列号递增、数据库查重验证。已在实际业务中验证可靠性,适用于付款、包装等多业务场景。需配合MyBatis-Plus和commons-beanutils依赖使用。
2025-07-04 13:37:06
1377
原创 SpringBoot 报错 MethodArgumentTypeMismatchException:undefined
摘要:文章记录了一个SpringBoot+Vue开发中遇到的类型转换异常问题。后端报错显示前端传递的"undefined"字符串无法转换为Integer类型。经排查发现是前端API调用时参数名(id)与封装接口参数名(interestPaymentId)不一致,导致URL拼接错误。解决方案包括统一前端参数命名或修改API封装兼容不同参数名。该案例警示开发中需特别注意路径参数传值准确性,避免因字段不一致导致严重报错。
2025-07-04 09:16:39
850
原创 Seata 报错解决:can not get cluster name in registry config ‘service.vgroupMapping.pm_tx_group‘,配置详解、示例与实
是事务组和 Seata TC 集群的桥梁;;遇到报错务必检查:配置键名是否完全匹配事务组名称。
2025-06-13 18:18:31
783
原创 lasticsearch 报错 Document contains at least one immense term 的解决方案
本次问题是由于字段内容超出 Elasticsearch 的最大 term 限制 32766 字节导致。解决方案二通过设置字段,禁止其参与倒排索引,既解决了异常问题,又保留了数据的存储功能。在实际开发中,我们要对每个字段的数据结构与使用场景做好规划,合理设计索引策略,避免不必要的性能浪费与错误。
2025-05-20 13:40:53
941
原创 MyBatis 报错:Column count doesn‘t match value count at row 1 详解与解决
这个错误常见于 SQL 拼接语句中,尤其是部分;建议使用格式化工具或 IDEA 的 XML 格式化功能辅助检查;不要忽略参数之间的逗号,哪怕是一个字段漏了逗号也会导致 SQL 整体错乱;尽量提前用单条 SQL 在 Navicat / MySQL 客户端测试,确认无误再用于批量插入。
2025-05-09 09:20:14
1348
原创 未来五年值得关注的编程语言以及趋势
未来五年,兼具系统级性能与开发效率的语言(如Rust)将重塑技术格局,而TypeScript的工程化价值会持续放大。- 趋势支撑:全球AI项目采用率超75%(GitHub 2023数据),TensorFlow/PyTorch框架统治地位稳固。- 学习建议:掌握FastAPI构建微服务,结合Jupyter进行数据可视化,关注Mojo语言(Python超集)的演进。- 新兴场景:AI模型部署(ONNX Runtime)、自动化测试(Selenium)、量化金融(Pandas)
2025-04-27 11:48:44
1825
原创 解决 Elasticsearch 启动错误:failed to obtain node locks
通过修改中的配置项,可以允许多个节点使用相同的数据目录,从而解决启动时的错误。然而,为了确保 Elasticsearch 的稳定性和性能,建议为每个节点配置不同的数据目录。
2025-04-27 09:25:26
2436
原创 MySQL 报错解析:SQLSyntaxErrorException caused by extra comma before FROM
写 SQL 时建议不要让SELECT语句中最后一行字段后面加逗号,可以使用编辑器插件自动去除末尾逗号,或者在 SQL 模板中进行约束。
2025-04-24 11:40:55
1194
原创 Linux 常用命令大全(超实用!建议收藏)
在 Linux 的世界中,命令行是王道。无论你是开发、测试、运维,还是数据分析师,掌握一手常用命令,效率立刻翻倍!本篇文章收集并整理了日常最常用、最实用的 Linux 命令,涵盖文件操作、进程管理、网络工具、系统信息等多个方面,建议。一、文件与目录操作命令含义示例ls列出目录内容ls -alcd进入目录cd /etcpwd显示当前路径pwdmkdir创建目录mkdir testtouch创建空文件rm删除文件/目录cp复制文件/目录mv移动/重命名tree以树状图显示结构(需安装)
2025-04-24 11:39:20
426
原创 AI 在 IT 行业中的应用:职业终结者还是协同伙伴?
AI 的出现无疑将对 IT 行业带来深远的影响,它正在改变 IT 从业者的工作方式,提升工作效率,同时也给行业带来前所未有的挑战。然而,尽管 AI 强大,但人类的创新思维、判断力和情感智力是 AI 无法替代的。因此,IT 从业者并不会被 AI 取代,而是会与 AI 一同协作,推动行业的创新与发展。未来,AI 与 IT 从业者的协同发展将成为 IT 行业的重要趋势,我们有理由相信,AI 将为 IT 行业带来更加光明的未来。
2025-04-21 09:36:00
898
原创 解决 Spring Boot 中的 Ambiguous mapping 错误:方法映射冲突
错误的发生通常是因为多个方法映射到了相同的 URL 路径。在开发中,我们应该避免重复映射,确保每个 URL 路径映射到唯一的控制器方法。通过合理地调整方法的 URL 路径,可以轻松解决该问题。希望本文能帮助你理解并解决错误。如果你在开发过程中遇到类似问题,可以参考本文的解决方案进行排查和修复。
2025-04-21 09:09:17
834
原创 如何新建一个空分支(不继承 master 或任何提交)
空分支(Orphan Branch)是一种特殊的 Git 分支,它没有父提交历史(即没有任何提交记录的继承),就像一个新的仓库一样。适用于:新模块的独立开发搭建 GitHub Pages 静态站点(通常叫gh-pages分支)临时存储脚本或测试代码步骤命令创建空分支清空工作区添加代码git add .提交代码推送远程git push origin init-erp-module(init-erp-module 这个是自己分支名根据自己来的)
2025-04-17 15:24:19
1757
原创 SpringBoot + MyBatis 报错 DataIntegrityViolationException:Data truncation: Out of range value for colu
这个问题本质上是数据类型约束导致的错误,是 Java 和 MySQL 联调中的常见问题之一。建议在开发初期就统一定义好字段精度规范,并在关键字段上增加校验逻辑,避免因数据异常影响业务流程。
2025-04-17 13:10:54
960
原创 使用 Hutool BeanUtil.copyProperties 时抛出 java.lang.NumberFormatException 的排查与解决
这个问题非常典型,主要是Java 类型转换 + 空字符串BigDecimal无法接受"",会抛出;使用像Hutool这样的工具进行属性自动拷贝时,这类问题更容易出现;尤其是后端开发写实体类时,一不小心字段类型写错了也不容易第一时间发现。🧠 所以建议:写实体类时注意保持与数据库字段一致;如果字段来自用户输入,推荐先定义为String,再做类型转换;Bean 拷贝工具要么加容错处理,要么前置清洗数据。
2025-04-15 10:55:39
528
原创 解决 NoSuchMethodError 问题:升级 Log4j 版本,exception is java.lang.NoSuchMethodError: org.apache.logging.log
通过升级 Log4j 到 2.x 版本,并正确配置相关依赖,我们成功解决了 Spring Cloud 项目中的问题。这个问题通常出现在使用了较旧版本的 Log4j 时,Log4j 2.x 提供了更好的性能和更多功能,推荐在新项目中使用。如果你也遇到类似问题,可以参考上面的解决方案,升级 Log4j 版本,并注意检查项目中是否有旧版的 Log4j 依赖。希望这个总结能对你有所帮助!
2025-04-07 15:33:53
2184
原创 Spring Boot @RequestParam 解析参数时的常见问题及解决方案
原因分析:最后查看了一下接口方法才发现原因,由于使用的是@RequestParam由于。(表单方式)由于我并不打算修改后端所以使用这方式还是非常合适的。,所以如果前端发送 JSON 数据:就会出现如上图一样的错误。解决方案有很多种,我使用的是使用。
2025-04-01 09:58:28
1013
原创 Spring Cloud 项目中 queryFormPositionFieldVo 方法抛出 NullPointerException 的原因分析与解决方案
解决方案:我遇到的问题则是数据库查询的结果为空,我把数据库名写错了结果查询到了别的数据库但是查询不到响应的数据,我只需要把数据库的名字改回来就好了。:由于 Spring AOP 代理,某些方法调用可能存在代理增强问题,导致空指针异常。空指针异常产生的原因大概就这几个,我们只需要按照要求进行排查即可。遇到的问题:告诉我空指针异常但是排查半天没有找到原因。可能查询数据库,但未返回数据,导致后续操作。方法可能访问了一个未初始化的对象或字段。我也重点排查了我的方法发现没有问题。:Spring 依赖注入失败,导致。
2025-03-29 09:45:56
1120
原创 「MethodArgumentTypeMismatchException:前端传递 ‘undefined‘ 导致 Integer 类型转换失败」
Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: "undefined"
2025-03-27 13:26:06
727
原创 Git 提示 “LF will be replaced by CRLF“ 的原因及解决方案
如果这些警告对你没有影响,可以忽略它们,Git 只是提示换行符的变化,不会影响代码逻辑。(Linux 风格),但在 Windows 系统上,Git 可能会自动转换为。如果你不想 Git 自动转换换行符。Git 发现你的代码文件(比如。如果你希望 Git 直接使用。如果你希望所有代码文件都使用。(Windows 风格)。,可以在项目根目录创建。)在提交时的换行符是。
2025-03-26 10:45:14
1063
使用 EasyExcel 封装通用 Excel 导出工具类
2025-10-15
【JavaScript】封装日期工具类:精准处理日期加减与格式化
2025-08-25
实战通用利息计算数据转换函数封装及应用场景详解
2025-08-12
实战通用利息计算数据转换函数封装及应用场景详解
2025-08-09
通用业务编号生成工具类(MyBatis-Plus + Spring Boot)详解 + 3种调用方式
2025-07-04
【Java基础-面试复习大致流程图】
2025-04-21
这篇文章是一份关于Java基础面试题的汇总文档,涵盖了广泛的Java技术和相关领域的知识点
2025-04-21
云智慧人事办公系统(OA)
2024-11-13
基于SSM学生实习管理系统前台小程序与后台管理系统开发实践
2024-11-12
商城订单管理管理系统(EPR)
2024-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅