<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[askuld的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/askuld</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; askuld]]></copyright><item><title><![CDATA[SpringBoot全局日期格式化]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/169557463</link><guid>https://blog.youkuaiyun.com/askuld/article/details/169557463</guid><author>askuld</author><pubDate>Fri, 30 Oct 2026 15:15:22 +0800</pubDate><description><![CDATA[前端传日期字符串导致后端400错误，是Java后端常见痛点。本文提供三种全局日期格式化方案：① @JsonFormat 注解（简单但冗余）；② 全局 Converter（适配GET参数接收）；③ Jackson全局配置（推荐，统一序列化/反序列化）。结合 application.yml 简化配置，实现代码零侵入、维护性高。生产建议：统一使用 LocalDate/LocalDateTime，明确时区（如GMT+8），前后端约定格式，优先级：字段注解 &gt; 全局配置。]]></description><category></category></item><item><title><![CDATA[高频使用的MySQL技巧]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/154384441</link><guid>https://blog.youkuaiyun.com/askuld/article/details/154384441</guid><author>askuld</author><pubDate>Tue, 04 Nov 2025 09:43:21 +0800</pubDate><description><![CDATA[- 创建用户偏好表（JSON字段存储动态配置）idINT PRIMARY KEYCOMMENT'主键ID',user_id INTCOMMENT'用户ID',preferences JSONCOMMENT'用户偏好设置（JSON格式）') COMMENT'用户偏好表';-- 插入测试数据-- 查询指定用户的主题配置（->符号提取JSON值）-- 结果："dark"]]></description><category></category></item><item><title><![CDATA[springboot整合druid(多数据源配置)]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/150772381</link><guid>https://blog.youkuaiyun.com/askuld/article/details/150772381</guid><author>askuld</author><pubDate>Mon, 25 Aug 2025 16:18:29 +0800</pubDate><description><![CDATA[【代码】springboot整合druid(多数据源配置)]]></description><category></category></item><item><title><![CDATA[策略模式 vs 适配器模式]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/150574267</link><guid>https://blog.youkuaiyun.com/askuld/article/details/150574267</guid><author>askuld</author><pubDate>Thu, 21 Aug 2025 09:46:51 +0800</pubDate><description><![CDATA[2.2支付宝适配器2.2.1原生接口public class AlipayService {    public AlipayResponse createPayment(AlipayRequest request) {        // 支付宝原生逻辑    }]]></description><category></category></item><item><title><![CDATA[SpringBoot集成MyBatis的SQL拦截器]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/150277162</link><guid>https://blog.youkuaiyun.com/askuld/article/details/150277162</guid><author>askuld</author><pubDate>Tue, 12 Aug 2025 17:31:16 +0800</pubDate><description><![CDATA[1、mybatis慢查询监控拦截器
2、数据脱敏拦截器（敏感信息保护）
3、mybatis通用字段自动填充
4、mybatis拦截器备份delete删除数据]]></description><category></category></item><item><title><![CDATA[mybatis-plus-join-boot-starter依赖解决 Join 联表查询]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/147787151</link><guid>https://blog.youkuaiyun.com/askuld/article/details/147787151</guid><author>askuld</author><pubDate>Thu, 08 May 2025 14:11:16 +0800</pubDate><description><![CDATA[Mybatis Plus 封装的 mapper 不支持 join，如果需要支持就必须自己去实现。但是对于大部分的业务场景来说，都需要多表 join，要不然就没必要采用关系型数据库了。那么有没有一种不通过硬 SQL 的形式，通过框架提供 join 能力呢？答案是，可以有。]]></description><category></category></item><item><title><![CDATA[TransactionTemplate 与@Transactional 注解的使用]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/147574764</link><guid>https://blog.youkuaiyun.com/askuld/article/details/147574764</guid><author>askuld</author><pubDate>Mon, 28 Apr 2025 10:07:48 +0800</pubDate><description><![CDATA[‌和是Spring框架中实现事务管理的两种主要方式，各有其特点和适用场景。]]></description><category></category></item><item><title><![CDATA[SpringBoot动态设置定时任务]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/147276770</link><guid>https://blog.youkuaiyun.com/askuld/article/details/147276770</guid><author>askuld</author><pubDate>Wed, 16 Apr 2025 14:52:54 +0800</pubDate><description><![CDATA[在SpringBoot项目中简单使用定时任务，不过由于要借助cron表达式且都提前定义好放在配置文件里，不能在项目运行中动态修改任务执行时间，实在不太灵活。除了上面的借助cron表达式的方法，还有另一种触发器，区别于CronTrigger触发器，该触发器可随意设置循环间隔时间，不像cron表达式只能定义小于等于间隔59秒。访问接口，传入请求参数cron表达式，将定时任务修改为15秒执行一次。编写一个接口，使得可以通过调用接口动态修改该定时任务的执行时间。启动项目，可以看到任务每10秒执行一次。]]></description><category></category></item><item><title><![CDATA[SpringBoot动态配置数据源的几种实现方式]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/146561090</link><guid>https://blog.youkuaiyun.com/askuld/article/details/146561090</guid><author>askuld</author><pubDate>Thu, 27 Mar 2025 15:38:29 +0800</pubDate><description><![CDATA[AbstractRoutingDataSource 的核心原理是通过一个线程本地变量（ThreadLocal）来保存当前使用的数据源标识，然后在每次获取连接时，根据这个标识来决定使用哪个数据源。利用ThreadLocal管理当前使用的数据源，DynamicDataSourceContextHolder可以在不同的线程间隔离数据源的使用，实现数据源的动态切换。它用于确定当前使用的数据源标识。根据返回的标识，AbstractRoutingDataSource 会从预先配置的数据源中选择对应的数据源。]]></description><category></category></item><item><title><![CDATA[【Java开发】Springboot集成mybatis-plus]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/144256430</link><guid>https://blog.youkuaiyun.com/askuld/article/details/144256430</guid><author>askuld</author><pubDate>Thu, 05 Dec 2024 10:03:14 +0800</pubDate><description><![CDATA[-mysql依赖-->目前，多数项目会有多数据源的要求，或者是主从部署的要求，所以我们还需要引入 mybatis-plus 关于多数据源的依赖-- mybatis-plus 多数据源 -->]]></description><category></category></item><item><title><![CDATA[springboot整合flowable工作流]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/144181247</link><guid>https://blog.youkuaiyun.com/askuld/article/details/144181247</guid><author>askuld</author><pubDate>Mon, 02 Dec 2024 10:30:33 +0800</pubDate><description><![CDATA[1、Start Events（开始事件）Start Event: 流程的起点，手动触发。（重要）Start Conditional Event: 条件满足时自动触发。Start Message Event: 接收到特定消息时自动触发。Start Error Event: 发生指定错误时自动触发。Start Escalation Event: 需要升级或转交给更高级别人员时自动触发。Start Signal Event: 接收到特定信号时自动触发。]]></description><category></category></item><item><title><![CDATA[Springboot调整接口响应返回时长详解(解决响应超时问题)]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/144130813</link><guid>https://blog.youkuaiyun.com/askuld/article/details/144130813</guid><author>askuld</author><pubDate>Fri, 29 Nov 2024 11:03:04 +0800</pubDate><description><![CDATA[可以通过两种方式为Spring Boot应用程序。]]></description><category></category></item><item><title><![CDATA[Git常用命令总结]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/143730533</link><guid>https://blog.youkuaiyun.com/askuld/article/details/143730533</guid><author>askuld</author><pubDate>Wed, 13 Nov 2024 09:45:14 +0800</pubDate><description><![CDATA[1、git fetch 取回所有更新分支信息2、git branch -a  查看所有分支信息3、git branch  查看当前分支信息4、git checkout “分支名”  切换分支5、git init    初始化git仓库6、git clone “ 克隆地址 ”  拉取项目7、git pull   拉取代码8、git status   查看修改的文件git status -s / git status --short 查看更加简洁的状态信息。]]></description><category></category></item><item><title><![CDATA[Windows部署MinIO，搭建本地对象存储服务]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/140873924</link><guid>https://blog.youkuaiyun.com/askuld/article/details/140873924</guid><author>askuld</author><pubDate>Fri, 02 Aug 2024 16:45:06 +0800</pubDate><description><![CDATA[基于外网的项目，可以使用阿里云等提供的OSS对象存储服务；但基于内网的项目，就只能部署本地的文件存储服务，这里推荐一下MinIO；MinIO是一个高性能、高可靠、可扩展、开源、分布式对象存储解决方案；1、它提供了与Amazon Web Services S3兼容的API，并支持所有核心S3功能；2、对于开发人员友好，部署简单，接口文档完善，支持主流开发语言；3、非常适合存储大量非结构化数据，例如图片、文件、视频、音频等等；]]></description><category></category></item><item><title><![CDATA[Vue利用递归的方法，根据id获取对应的字段名(树形数据)]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/140269926</link><guid>https://blog.youkuaiyun.com/askuld/article/details/140269926</guid><author>askuld</author><pubDate>Mon, 08 Jul 2024 15:38:00 +0800</pubDate><description><![CDATA[【代码】Vue利用递归的方法，根据id获取对应的字段名(树形数据)]]></description><category></category></item><item><title><![CDATA[el-table实现固定列，及解决固定列导致部分滚动条无法拖动的问题]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/140201764</link><guid>https://blog.youkuaiyun.com/askuld/article/details/140201764</guid><author>askuld</author><pubDate>Fri, 05 Jul 2024 10:49:33 +0800</pubDate><description><![CDATA[当数据量动态变化时，可以为 Table 设置一个最大高度。通过设置max-height属性为 Table 指定最大高度。此时若表格所需的高度大于最大高度，则会显示一个滚动条。fixed属性：列是否固定在左侧或者右侧，true 表示固定在左侧；可选值：true, left, right。]]></description><category></category></item><item><title><![CDATA[vue中如何使用echarts和echarts-gl实现三维折线图和三维柱状图]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/140043876</link><guid>https://blog.youkuaiyun.com/askuld/article/details/140043876</guid><author>askuld</author><pubDate>Fri, 28 Jun 2024 15:09:23 +0800</pubDate><description><![CDATA[在package.json文件中添加。]]></description><category></category></item><item><title><![CDATA[echarts实现3D柱状图(视觉层面)]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/140036021</link><guid>https://blog.youkuaiyun.com/askuld/article/details/140036021</guid><author>askuld</author><pubDate>Fri, 28 Jun 2024 10:33:43 +0800</pubDate><description><![CDATA[完整实例，copy就可直接使用。]]></description><category></category></item><item><title><![CDATA[解决 vue 项目开发越久 node_modules包越大的问题]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/140011633</link><guid>https://blog.youkuaiyun.com/askuld/article/details/140011633</guid><author>askuld</author><pubDate>Thu, 27 Jun 2024 13:50:46 +0800</pubDate><description><![CDATA[有一个vue项目，发现它的占用空间越来越大，一看是node_modules占用已经100多G了，然后测试了每次编译运行就会增大几百兆，日积月累，磁盘都快装满了。但是并不想删除node_modules重装，后来找到了是CompressionWebpackPlugin插件开启了GZIP压缩，缓存越来越大的问题，在vue.config.js相关配置中增加一条cache：false即可解决。]]></description><category></category></item><item><title><![CDATA[vue跳转页面的几种常用方法]]></title><link>https://blog.youkuaiyun.com/askuld/article/details/139976518</link><guid>https://blog.youkuaiyun.com/askuld/article/details/139976518</guid><author>askuld</author><pubDate>Wed, 26 Jun 2024 09:37:28 +0800</pubDate><description><![CDATA[vue跳转页面的几种常用方法]]></description><category></category></item></channel></rss>