- 博客(14)
- 收藏
- 关注
原创 笔试程序题解析:行程记录整理 + 多条件排序
本文介绍了一个行程记录排序问题的解决方案。问题要求将乱序的行程记录(包含日期、城市名和到达/离开状态)按规则排序输出。解题思路分为四个步骤:1)解析输入数据;2)使用HashMap按城市归并到达和离开记录;3)转换为List并按到达日期升序排序,同一天到达时当天完成的行程优先,最后按城市名排序;4)格式化输出结果。解决方案通过定义Record类存储行程信息,利用Java集合框架实现高效的数据处理和排序,最终输出符合要求的行程列表。
2026-01-04 14:05:24
736
原创 Java 锁的实现原理与源码解析—— 从 synchronized 的 Monitor 到 AQS 的 acquire / release
并发编程的核心在于线程竞争失败时的处理机制。synchronized通过Monitor实现锁机制,包含EntryList(竞争失败线程)和WaitSet(主动等待线程)两种不同阻塞路径,采用锁升级策略优化性能。ReentrantLock基于AQS框架,通过state状态管理锁,采用"快路径优先"设计,竞争失败线程进入CLH队列等待精确唤醒。AQS提供了灵活的并发控制框架,支持自定义竞争语义,衍生出多种并发工具类。
2025-12-30 18:27:02
864
原创 看懂策略模式:从一次订单折扣计算说起!!
初次阅读这段代码时,没有看到明显的 if / else,却能根据订单类型执行不同的优惠逻辑,一度让我怀疑代码是不是“绕远了”。实际上,这是典型的策略模式应用,通过 Spring 自动注入策略集合,实现了运行时的动态分发。如果你还一知半解的话,多多动手多多尝试叭 ~
2025-12-25 17:57:16
605
原创 DTO 与 Entity 互转的实现方式(MapStruct)
MapStruct是一款高效的编译期Bean映射工具,相比反射实现的BeanUtils.copyProperties具有显著优势:1. 编译期生成代码,性能接近手写;2. 类型安全检查在编译阶段完成;3. 自动处理字段匹配和类型转换。通过@Mapper注解接口,MapStruct会在编译时生成具体实现类,支持Spring集成和多种类型转换。其核心价值在于:消除反射性能损耗,提前暴露类型错误,同时保持代码简洁。需要配置Maven依赖和注解处理器,推荐在Spring项目中使用@Autowired注入Mapper
2025-12-22 13:26:45
923
原创 Java Stream API 使用总结
在Java 8之后,Stream API 已经成为日常开发中。但很多人对 Stream 的理解,仍停留在 filter + map + collect。本文结合,总结 Stream API 的。
2025-12-18 16:06:57
991
原创 AI 圈:从零理解 MCP、Agent、Cursor、Claude Code
你用来写项目/写代码的 AI 工具台MCP:你为 AI 提供访问外部系统的“标准工具接口”Agent:负责用“思考 + 工具调用”完成任务的 AI 系统Cursor:MCP 在处理大资源时,用来“继续从上次位置读取”的进度标记一句话:开发者用 Claude Code 写 MCP 工具,Agent 再用 MCP 工具办事,Cursor 用来支持大数据读取。
2025-12-09 17:52:53
496
原创 Java 中 double 转 String 的大坑:为什么 0.0001 数值转换入库后变成了 1.0E-4?科学计数法如何完美避免?
本文探讨了处理小数值double类型数据时遇到的科学计数法、精度以及末尾多余零的处理问题。
2025-12-05 10:41:31
912
原创 为什么 MyBatis 查询总是返回 null?原因比你想得多
在项目中遇到过这种情况吗:明明数据库有数据,SQL 在数据库里跑是有结果的,但通过 MyBatis 查询却一直返回null(或空对象、空集合)?这类问题常见但不容易定位——问题可能出在 SQL、Mapper、参数、类型转换、事务、数据源配置等任何一环。本文把常见原因按类别罗列,并给出逐步排查思路、代码示例与解决办法,希望能帮你快速定位问题。
2025-12-04 13:47:15
1076
原创 Java 中 Function 与 apply 的实际应用场景解析(含优化前后案例)
本文介绍了如何利用Java8的Function函数式接口优化重复的业务逻辑处理。通过将字段判空、格式化等操作封装为Function,可以显著减少if-else代码块,提高代码可维护性。
2025-12-04 11:55:01
1236
原创 Spring Boot 项目启动流程全解析:你以为在启动,其实在做这 10 件事
你看到的 ASCII 图案,就是在这个阶段打印的。这个文件一般默认位置是:src/main/resources/banner.txt 如果没有的话,则是因为 Spring Boot 默认不会生成该文件,需要手动创建,并开启相关的配置。它在启动前搞清楚你需要什么,在启动时把你所有需要的东西自动准备好,在启动后给你一个能直接跑业务的环境。准备启动参数加载配置环境创建应用上下文扫描自动配置初始化所有 Bean启动内置 Web 服务器执行启动回调发布启动完成事件所以——
2025-11-28 16:20:09
679
原创 Java Map 你真的用对了吗?HashMap、LinkedHashMap、TreeMap 全解析
写 Java 的人每天都在用 Map,但你真的用对了吗?虽然都叫 Map,但底层结构、时间复杂度、使用场景完全不同。如果你还分不清什么时候用哪一个,那这篇文章就是为你写的。
2025-11-27 17:42:49
775
原创 后端如何处理“前端动态字段”?项目里遇到的真实场景与优雅解法(含实战代码)
本文针对前端动态勾选字段、后端需动态返回对应值的业务场景,提出了一套优雅解决方案。通过枚举建立中文字段名与实体类英文属性名的映射关系,利用反射机制动态获取实体类属性值,避免了大量if-else判断。
2025-11-27 17:07:40
1090
原创 后端 Excel 导入实战:从文件解析到行级校验
本文分享了Excel文件导入功能的完整技术方案。采用EasyExcel进行高效解析,通过表头校验、行级字段校验、组合唯一性校验等多重验证确保数据质量。强调全量校验通过后再统一入库,避免部分成功的情况,并提供清晰的错误提示。建议将额外逻辑异步处理以提高性能,同时记录完整日志便于问题追踪。该方案解决了常见导入功能存在的校验不完善、性能低下等问题,形成了一套稳定可靠的Excel导入体系。
2025-11-25 14:36:26
919
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅