<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[流沙QuickSand]]></title><description><![CDATA[行者常至，为者常成]]></description><link>https://blog.csdn.net/gengzhy</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; gengzhy]]></copyright><item><title><![CDATA[JSON序列化/反序列化工具改进版]]></title><link>https://blog.csdn.net/gengzhy/article/details/157432653</link><guid>https://blog.csdn.net/gengzhy/article/details/157432653</guid><author>gengzhy</author><pubDate>Tue, 27 Jan 2026 15:27:30 +0800</pubDate><description><![CDATA[摘要：本文介绍了一个深度定制的Gson序列化/反序列化工具，主要特性包括：1)支持枚举类型的复杂处理（code/name/alternative值等）；2)优化集合/数组/Map的反序列化映射；3)提供字符串缩略功能；4)增强BigDecimal处理能力；5)完善日期时间类型的解析。该工具通过多个TypeAdapterFactory实现类型适配，包括ApiDictTypeAdapterFactory处理枚举、StringTypeAdapterFactory处理字符串截断等...]]></description><category></category></item><item><title><![CDATA[JSON序列化/反序列化工具(基于Gson深度定制)]]></title><link>https://blog.csdn.net/gengzhy/article/details/156118000</link><guid>https://blog.csdn.net/gengzhy/article/details/156118000</guid><author>gengzhy</author><pubDate>Sat, 20 Dec 2025 23:44:47 +0800</pubDate><description><![CDATA[本文介绍了一个深度定制的Gson工具类，解决了原生Gson在特定场景下的不足。主要优化包括：1)支持含千分位分隔符、百分号等特殊格式的BigDecimal解析；2)增强枚举类型的序列化/反序列化；3)处理JSONObject与JSONArray的自动转换；4)支持日志记录时的字符串截断；5)优化Map、Date、LocalDateTime等类型的处理......]]></description><category></category></item><item><title><![CDATA[Java高性能全局ID生成器]]></title><link>https://blog.csdn.net/gengzhy/article/details/149447916</link><guid>https://blog.csdn.net/gengzhy/article/details/149447916</guid><author>gengzhy</author><pubDate>Fri, 18 Jul 2025 16:18:35 +0800</pubDate><description><![CDATA[一款高性能的类雪花算法的全局ID生成器，并发环境下QPS可达820万+]]></description><category></category></item><item><title><![CDATA[基于Apache MINA SSHD配置及应用]]></title><link>https://blog.csdn.net/gengzhy/article/details/149121940</link><guid>https://blog.csdn.net/gengzhy/article/details/149121940</guid><author>gengzhy</author><pubDate>Fri, 04 Jul 2025 17:32:59 +0800</pubDate><description><![CDATA[Apache MINA SSHD是一个基于Java的开源SSH服务器/客户端实现，支持SSH2协议，提供文件传输、shell访问等功能。该代码实现了一个SftpClientService服务类，封装了SFTP文件操作，包括读取文件(readOnce/readLines)和写入文件(writeOnce)等核心功能。通过SftpProperties配置类管理连接参数，并采用Builder模式创建SSH会话。主要特点包括：支持大文件分块传输、自动创建目录、严格的异常处理和...]]></description><category></category></item><item><title><![CDATA[一个判断空参数的小工具]]></title><link>https://blog.csdn.net/gengzhy/article/details/149070516</link><guid>https://blog.csdn.net/gengzhy/article/details/149070516</guid><author>gengzhy</author><pubDate>Wed, 02 Jul 2025 15:10:33 +0800</pubDate><description><![CDATA[这个Java方法isNull提供了全面的空值判断功能，支持多种数据类型。它能判断：基本对象为null、字符串为空或&quot;null&quot;、集合/数组/Map为空、Optional为空、Stream为空、原子引用为null，以及各种基本类型数组为空的情况。通过switch表达式实现简洁高效的类型匹配，默认返回false表示非空对象。该方法可作为通用的空值检查工具，适用于各种插件开发场景。]]></description><category></category></item><item><title><![CDATA[基于Jackson的自定序列化反序列化工具]]></title><link>https://blog.csdn.net/gengzhy/article/details/149038144</link><guid>https://blog.csdn.net/gengzhy/article/details/149038144</guid><author>gengzhy</author><pubDate>Tue, 01 Jul 2025 08:53:18 +0800</pubDate><description><![CDATA[摘要：本文介绍了一个用于枚举序列化和反序列化的工具类JacksonUtils，主要包含以下功能：1) 通过EnumJsonModule实现自定义枚举的序列化处理，将枚举值转换为code值；2) 提供静态方法toJson和fromJson进行对象与JSON的互相转换；3) 定义了IDict接口规范枚举行为，要求实现getCode和getDesc方法；4) 包含fromValue方法支持通过code、name或ordinal值查找枚举实例；5) 示例展示了Gender枚举如何实现IDict接口。该工具支持自定义]]></description><category></category></item><item><title><![CDATA[MySQL Procedure值动态修改SQL]]></title><link>https://blog.csdn.net/gengzhy/article/details/148720645</link><guid>https://blog.csdn.net/gengzhy/article/details/148720645</guid><author>gengzhy</author><pubDate>Tue, 17 Jun 2025 17:48:09 +0800</pubDate><description><![CDATA[MySQL Procedure值动态修改SQL]]></description><category></category></item><item><title><![CDATA[记一次Java使用正则解析日期分组匹配顺序问题?]]></title><link>https://blog.csdn.net/gengzhy/article/details/146091377</link><guid>https://blog.csdn.net/gengzhy/article/details/146091377</guid><author>gengzhy</author><pubDate>Fri, 07 Mar 2025 11:41:33 +0800</pubDate><description><![CDATA[记录一次Java使用正则解析日期分组匹配顺序问题]]></description><category></category></item><item><title><![CDATA[基于bouncycastle的SM2加解密及签名验签实现]]></title><link>https://blog.csdn.net/gengzhy/article/details/145469682</link><guid>https://blog.csdn.net/gengzhy/article/details/145469682</guid><author>gengzhy</author><pubDate>Thu, 06 Feb 2025 11:34:10 +0800</pubDate><description><![CDATA[bouncycastle是几个强大的算法库，封装了诸多的加密算法。SM2等国密也已在其中实现。]]></description><category></category></item><item><title><![CDATA[Java正则转带中划线或下划线属性名为驼峰命名]]></title><link>https://blog.csdn.net/gengzhy/article/details/145199641</link><guid>https://blog.csdn.net/gengzhy/article/details/145199641</guid><author>gengzhy</author><pubDate>Fri, 17 Jan 2025 10:07:24 +0800</pubDate><description><![CDATA[利用Java正则分组匹配的方式，将属性名中 -(_) + 后接的字母，匹配上了去掉当前 -(_)，将后接的字母转为大写，再追加拼接起来，就完成了驼峰命名。Java正则转带中划线或下划线属性名为驼峰命名，]]></description><category></category></item><item><title><![CDATA[MinIO服务器文件复制（Windows环境&Linux环境）]]></title><link>https://blog.csdn.net/gengzhy/article/details/144737718</link><guid>https://blog.csdn.net/gengzhy/article/details/144737718</guid><author>gengzhy</author><pubDate>Thu, 26 Dec 2024 11:56:31 +0800</pubDate><description><![CDATA[（注意：需要指定MinIO连接服务的别名，通过命令：mc alias set myMinio [host] [user] [password] 来指定），此处 别名就是 myMinio。二、准备好MinIO服务器需要复制的完整文件路径，以及配置需要复制的目标文件完整路径。执行脚本 mccp.sh 或 mccp.bat。三、创建MC shell脚本。1.Windows环境。]]></description><category></category></item><item><title><![CDATA[时钟之Canvas+JS版]]></title><link>https://blog.csdn.net/gengzhy/article/details/143789129</link><guid>https://blog.csdn.net/gengzhy/article/details/143789129</guid><author>gengzhy</author><pubDate>Fri, 15 Nov 2024 11:00:34 +0800</pubDate><description><![CDATA[上一篇介绍使用CSS+JS方式实现，但元素泰国单一。此篇将以HTML5的canvas标签结合JS来实现。HTML代码JS代码//计时器//钟表半径//时针刻度宽度//分针刻度宽度//时针宽度//分针宽度//秒针宽度} else {})if (!return;//去除透明度//移动中心//设置钟表半径//调整路径结束点样式//开始绘制});//火狐浏览器问题//画时钟圆心ctx.fill()]]></description><category></category></item><item><title><![CDATA[时钟之CSS+JS版]]></title><link>https://blog.csdn.net/gengzhy/article/details/143788671</link><guid>https://blog.csdn.net/gengzhy/article/details/143788671</guid><author>gengzhy</author><pubDate>Fri, 15 Nov 2024 10:51:10 +0800</pubDate><description><![CDATA[此版本绘制的时钟基于CSS+JS模式。优点操作简单，缺点当然是不够灵活。]]></description><category></category></item><item><title><![CDATA[JDK动态代理中如何执行代理接口中的default方法？]]></title><link>https://blog.csdn.net/gengzhy/article/details/143730323</link><guid>https://blog.csdn.net/gengzhy/article/details/143730323</guid><author>gengzhy</author><pubDate>Wed, 13 Nov 2024 09:53:26 +0800</pubDate><description><![CDATA[试想一下，有很多场景下，我们有特殊要求，希望在JDK动态代理的接口中希望有自己自定义的逻辑，而后再执行代理方法。// 此处可以检查 msg，以及一些默认赋值// 再调用执行方法抽象方法send()的参数 msg，我们希望设置一些公共的参数，但是在每一处调用时都设置一次，就显得重复啰嗦。因此，在checkThenSend()中就可以统一设置值，然后再调用 send()方法。本文就是如何实现从而达到目的。]]></description><category></category></item><item><title><![CDATA[基于Spring事务模板编程式事务小工具]]></title><link>https://blog.csdn.net/gengzhy/article/details/143426294</link><guid>https://blog.csdn.net/gengzhy/article/details/143426294</guid><author>gengzhy</author><pubDate>Fri, 01 Nov 2024 10:58:22 +0800</pubDate><description><![CDATA[基于Spring事务，官方推荐使用@Transactional注解的声明式事务，使用便捷，无需关心底层实现，只需关心注解中的参数含义及使用规则。然而在很多场景下（特别是复杂的业务逻辑、更甚在子线程、多线程中），往往声明式事务会出现意想不到的结果。这时候针对特定场景，这时编程式事务更加得心应手。]]></description><category></category></item><item><title><![CDATA[Nginx配置]]></title><link>https://blog.csdn.net/gengzhy/article/details/141892394</link><guid>https://blog.csdn.net/gengzhy/article/details/141892394</guid><author>gengzhy</author><pubDate>Wed, 04 Sep 2024 14:11:10 +0800</pubDate><description><![CDATA[NGINX参考配置]]></description><category></category></item><item><title><![CDATA[PDF模板填充新姿势，开箱即用]]></title><link>https://blog.csdn.net/gengzhy/article/details/140840333</link><guid>https://blog.csdn.net/gengzhy/article/details/140840333</guid><author>gengzhy</author><pubDate>Thu, 01 Aug 2024 10:47:18 +0800</pubDate><description><![CDATA[由于之前使用Itext5工具填充PDF模板后，会导致填充后的PDF文件体积变得很庞大。怀疑了嵌入字体、PDF模板编辑转换和编辑等等的原因，但最后都无功而返，查阅了官方文档，也没得出解决方案。因此，退而求其次，换上了Itext7，官方说过，性能相较Itext5更出色。]]></description><category></category></item><item><title><![CDATA[Java图片压缩]]></title><link>https://blog.csdn.net/gengzhy/article/details/140722572</link><guid>https://blog.csdn.net/gengzhy/article/details/140722572</guid><author>gengzhy</author><pubDate>Fri, 26 Jul 2024 18:44:56 +0800</pubDate><description><![CDATA[前言：压缩原理，基于工具thumbnailator，其底层也是基于JDK提供的BufferedImage及Graphics2D重新绘制图片。]]></description><category></category></item><item><title><![CDATA[简易版接口防重实现（分布式锁）]]></title><link>https://blog.csdn.net/gengzhy/article/details/139591692</link><guid>https://blog.csdn.net/gengzhy/article/details/139591692</guid><author>gengzhy</author><pubDate>Tue, 11 Jun 2024 10:42:03 +0800</pubDate><description><![CDATA[接口防重亦是分布式锁的一种特殊形式。市面上最典型的就是大名鼎鼎的Redisson实现的分布式锁。但使用Redisson仅仅作为一个锁，未免大材小用，同时也显得臃肿。因此，有必要实现一个类似功能且安全高效的、简单的分布式锁。利用Spring提供的切面技术，SpringEl表达式语言，JDK自定义注解，Redis及Lua等。


2.定义切面逻辑处理




3.原理说明

利用Redis Client执行Lua的原子特性，在判断Redis中是否存在当前的Key，如果存在，则抛出异常，表示当前请求的数据已被占用]]></description><category></category></item><item><title><![CDATA[如何本地用户（不联网）安装Windows11系统（本地用户）？]]></title><link>https://blog.csdn.net/gengzhy/article/details/139282948</link><guid>https://blog.csdn.net/gengzhy/article/details/139282948</guid><author>gengzhy</author><pubDate>Wed, 29 May 2024 09:04:29 +0800</pubDate><description><![CDATA[简单理解，OOBE就是一个沙箱（或黑盒）环境，Windows提供一系列工具供你使用。答案是肯定的，Windows提供了一个OOBE（Customize the Out of Box Experience，Win11系统的专业版安装，默认在没网环境无法完成安装，需要联网登录MS账号方能进行。2.执行以下命令创建本地账号，密码可选（如果同时设置密码，密码有最小长度限制）系统重启后，根据提示便能顺利完成本地用户下的Win11系统安装。）的工具，即创建本地用户，绕过联网环节，从而完成系统安装。]]></description><category></category></item></channel></rss>