<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[NoviceZ的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/NoviceZ</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; NoviceZ]]></copyright><item><title><![CDATA[xlsx文件：The maximum length of cell contents (text) is 32767 characters]]></title><link>https://blog.csdn.net/NoviceZ/article/details/163136925</link><guid>https://blog.csdn.net/NoviceZ/article/details/163136925</guid><author>NoviceZ</author><pubDate>Thu, 23 Jul 2026 16:14:20 +0800</pubDate><description><![CDATA[定位到当前xlsx文件单元格支持的最大字符数为32767，而当前待设置的文本长度已经超过了该值。目前使用反射，调整单元格支持的最大字符数。调整后即可正常给单元格填充文本内容。]]></description><category></category></item><item><title><![CDATA[Springboot+Mockito简单使用单元测试]]></title><link>https://blog.csdn.net/NoviceZ/article/details/162958112</link><guid>https://blog.csdn.net/NoviceZ/article/details/162958112</guid><author>NoviceZ</author><pubDate>Fri, 17 Jul 2026 10:37:46 +0800</pubDate><description><![CDATA[本文使用的springboot版本是2.7.18版本，并已集成Mockito 4.5.1版本。]]></description><category></category></item><item><title><![CDATA[ES的match_phrase_prefix语句查询结果不精准]]></title><link>https://blog.csdn.net/NoviceZ/article/details/160657694</link><guid>https://blog.csdn.net/NoviceZ/article/details/160657694</guid><author>NoviceZ</author><pubDate>Thu, 30 Apr 2026 13:56:24 +0800</pubDate><description><![CDATA[match_phrase_prefix官网介绍发现一开始就有介绍：即：返回包含所提供文本中指定词汇的文档，其排列顺序与所提供的顺序一致。所提供的文本中的最后一个词被视为前缀，用于匹配以该词开头的任何词汇。match_phrase_prefix 工作原理：前面所有词 = 短语精确匹配最后一个词 = 去词典查前缀只取前 50 个（max_expansions=50）把这 50 个词拼回短语查询如果你的词不在这 50 个里 → 查不到！]]></description><category></category></item><item><title><![CDATA[Redis数据结构——HyperLogLog 原理]]></title><link>https://blog.csdn.net/NoviceZ/article/details/159506330</link><guid>https://blog.csdn.net/NoviceZ/article/details/159506330</guid><author>NoviceZ</author><pubDate>Thu, 26 Mar 2026 14:31:17 +0800</pubDate><description><![CDATA[HyperLogLog是一种高效的基数计数概率算法，通过极小内存（仅12KB）即可统计近2^64个不同元素。它基于LogLog算法改进，利用分桶和调和平均数降低误差（标准误差0.81%）。Redis实现中采用16384个桶，每个桶6bit，通过哈希将数据分散到桶中并记录最大连续零位数。相比HashMap等传统方法，HyperLogLog在百万级数据量时内存优势显著，适合允许微小误差的大规模去重统计场景，如日活用户统计。其核心思想源自伯努利试验，将统计问题转化为概率估算，展现了数学在工程中的巧妙应用。]]></description><category></category></item><item><title><![CDATA[CompletableFuture的默认线程池ForkJoinPool会导致类加载失败]]></title><link>https://blog.csdn.net/NoviceZ/article/details/157436486</link><guid>https://blog.csdn.net/NoviceZ/article/details/157436486</guid><author>NoviceZ</author><pubDate>Tue, 27 Jan 2026 18:37:42 +0800</pubDate><description><![CDATA[使用CompletableFuture的默认线程池调用getPreviewTypeHandler(PreviewTypeEnum type)方法触发静态代码块进行指定类加载。




2、现象

在本地使用idea运行程序，一切正常，可以扫描到预期的类。上测试环境后，出现问题，扫描不到预期的类。在idea点击运行按钮运行程序，实际上idea是编译后用命令参数把依赖路径全部都加入命令行。它的所有依赖类加载器都是使用的是，他的父加载器是（它可以加载classpath路径下的所有类）；并且在使用Completab]]></description><category></category></item><item><title><![CDATA[从JDK 1.8到JDK 21：实用新特性]]></title><link>https://blog.csdn.net/NoviceZ/article/details/157219673</link><guid>https://blog.csdn.net/NoviceZ/article/details/157219673</guid><author>NoviceZ</author><pubDate>Wed, 21 Jan 2026 17:51:11 +0800</pubDate><description><![CDATA[下方所有代码示例均可直接在JDK 21环境下运行。]]></description><category></category></item><item><title><![CDATA[JDK21虚拟线程也太强大了]]></title><link>https://blog.csdn.net/NoviceZ/article/details/156987390</link><guid>https://blog.csdn.net/NoviceZ/article/details/156987390</guid><author>NoviceZ</author><pubDate>Thu, 15 Jan 2026 16:12:36 +0800</pubDate><description><![CDATA[最近项目要升级到JDK21版本，所以顺带学习了一下JDK21的新特性，其中虚拟线程是一项重量级的更新，一定一定要重视！]]></description><category></category></item><item><title><![CDATA[我们遇到了正则表达式的灾难性回溯问题]]></title><link>https://blog.csdn.net/NoviceZ/article/details/156950236</link><guid>https://blog.csdn.net/NoviceZ/article/details/156950236</guid><author>NoviceZ</author><pubDate>Wed, 14 Jan 2026 18:23:52 +0800</pubDate><description><![CDATA[经过仔细查看正则表达式，发现里面出现了(\d+)*这种匹配格式，然而这就是典型的回溯陷阱，如果传入的数字足够长，会导致指数级的回溯，最终引发。后面经过线下写demo脚本，拉取当时处理的数据，在本地跑这个正则匹配，终于发现了一条有问题的数据。怀疑是进入了死循环，但是查看完相关代码的上下文后，并没有写可以造成死循环的代码片段。查看到有问题的具体代码位置，发现是在使用正则匹配的时候出现问题了。没有内部结构，不需要考虑“如何分组”，因此不会产生回溯。虽然最终会成功，但过程暴露了问题。：长度为 n 的数字串，有。]]></description><category></category></item><item><title><![CDATA[Reflections 工具没有检测到任何类 Reflections took 249 ms to scan 1 urls, producing 0 keys and 0 values]]></title><link>https://blog.csdn.net/NoviceZ/article/details/156200254</link><guid>https://blog.csdn.net/NoviceZ/article/details/156200254</guid><author>NoviceZ</author><pubDate>Tue, 23 Dec 2025 16:54:43 +0800</pubDate><description><![CDATA[Override@OverrideSystem.out.println("处理邮件: " + data);@Override@OverrideSystem.out.println("处理短信: " + data);]]></description><category></category></item><item><title><![CDATA[Es索引文档全量更新与迁移]]></title><link>https://blog.csdn.net/NoviceZ/article/details/155743875</link><guid>https://blog.csdn.net/NoviceZ/article/details/155743875</guid><author>NoviceZ</author><pubDate>Tue, 09 Dec 2025 14:37:01 +0800</pubDate><description><![CDATA[迁移完成后，校验数据完整性，校验通过后可删除旧索引（如果不需要新索引名称与旧索引名称一致，可不用删除）旧索引删除后，可为新索引创建和旧索引名称一致的别名，后续就可以继续使用旧索引名称进行相关操作。经过测试，方案1的耗时较长（2小时左右），方案2耗时20分钟左右，所以采用方案2进行处理。执行完全量迁移脚本后，可使用下方脚本继续迁移增量数据（在执行全量迁移命令后产生的数据）。2、新建索引并进行全量迁移，迁移时更新新增字段的初始值。执行上述命令后，会返回任务id，可根据返回的任务id查询迁移的进度。]]></description><category></category></item><item><title><![CDATA[Mybatis常用动态SQL标签]]></title><link>https://blog.csdn.net/NoviceZ/article/details/154643049</link><guid>https://blog.csdn.net/NoviceZ/article/details/154643049</guid><author>NoviceZ</author><pubDate>Mon, 10 Nov 2025 11:41:40 +0800</pubDate><description><![CDATA[where>]]></description><category></category></item><item><title><![CDATA[MySQL查询指定字符串是否在以逗号分割的字段中（FIND_IN_SET使用方法）]]></title><link>https://blog.csdn.net/NoviceZ/article/details/153834533</link><guid>https://blog.csdn.net/NoviceZ/article/details/153834533</guid><author>NoviceZ</author><pubDate>Fri, 24 Oct 2025 17:06:55 +0800</pubDate><description><![CDATA[是 MySQL 中用于在逗号分隔的字符串列表中查找指定字符串位置的函数。如果找到：返回字符串在列表中的位置（从 1 开始计数）如果未找到：返回 0如果任一参数为 NULL：返回 NULL小数据量的逗号分隔值查询简单的存在性检查不需要高性能的临时查询优先使用规范化表结构- 最佳性能和可扩展性考虑 JSON 类型- MySQL 5.7+ 的现代解决方案添加函数索引- MySQL 8.0+ 的性能优化避免在大数据量使用- 会导致全表扫描。]]></description><category></category></item><item><title><![CDATA[mybatis-plus的insertBatchSomeColumn方法实现批量插入]]></title><link>https://blog.csdn.net/NoviceZ/article/details/153684063</link><guid>https://blog.csdn.net/NoviceZ/article/details/153684063</guid><author>NoviceZ</author><pubDate>Tue, 21 Oct 2025 11:40:35 +0800</pubDate><description><![CDATA[*** 批量插入，借助mybatis-plush的injector实现*//*** 分段批量插入*/return;@Mapper。]]></description><category></category></item><item><title><![CDATA[MySQL 慢查询优化]]></title><link>https://blog.csdn.net/NoviceZ/article/details/150386393</link><guid>https://blog.csdn.net/NoviceZ/article/details/150386393</guid><author>NoviceZ</author><pubDate>Thu, 14 Aug 2025 13:24:47 +0800</pubDate><description><![CDATA[文件里详细记录了慢查询的sql语句。]]></description><category></category></item><item><title><![CDATA[MySQL的MVCC多版本并发控制]]></title><link>https://blog.csdn.net/NoviceZ/article/details/150350882</link><guid>https://blog.csdn.net/NoviceZ/article/details/150350882</guid><author>NoviceZ</author><pubDate>Wed, 13 Aug 2025 17:11:14 +0800</pubDate><description><![CDATA[MVCC (Multi-Version Concurrency Control) 是 MySQL 实现高并发访问的核心机制，它通过在数据行上维护多个版本，使读写操作可以并发执行而不互相阻塞。]]></description><category></category></item><item><title><![CDATA[Xxl-Job的路由策略，以及使用分片广播策略优化项目现有功能]]></title><link>https://blog.csdn.net/NoviceZ/article/details/149933595</link><guid>https://blog.csdn.net/NoviceZ/article/details/149933595</guid><author>NoviceZ</author><pubDate>Tue, 05 Aug 2025 11:37:13 +0800</pubDate><description><![CDATA[XXL-JOB路由策略摘要：系统提供多维度任务路由方案，包括基础单节点策略（FIRST/LAST/ROUND/RANDOM）确保简单调度，集群负载策略（HASH/CONSISTENT_HASH/LFU/LRU）实现智能负载均衡，特殊场景策略（FAILOVER/BUSYOVER）保障系统可靠性。核心分片广播策略支持数据并行处理，通过shardIndex/shardTotal参数实现分布式计算。不同策略适应开发测试、生产集群、关键业务等场景，开发者可根据任务特性（状态要求、负载特征、容错需求）选择最优方案，其中]]></description><category></category></item><item><title><![CDATA[ES组合使用must与should时的注意事项]]></title><link>https://blog.csdn.net/NoviceZ/article/details/149408597</link><guid>https://blog.csdn.net/NoviceZ/article/details/149408597</guid><author>NoviceZ</author><pubDate>Wed, 16 Jul 2025 22:11:39 +0800</pubDate><description><![CDATA[**同时有 `must` 和 `should`**：`should` 条件变为完全可选，不要求必须匹配任何 `should` 条件，除非显式设置 `minimum_should_match`- **没有 `must` 只有 `should`**：默认至少需要匹配一个 `should` 条件，可通过 `minimum_should_match` 参数调整。{"range": {"publish_date": {"gte": "now-7d/d"}}} // 最近发布的加分。]]></description><category></category></item><item><title><![CDATA[ES中must与filter的区别]]></title><link>https://blog.csdn.net/NoviceZ/article/details/148312668</link><guid>https://blog.csdn.net/NoviceZ/article/details/148312668</guid><author>NoviceZ</author><pubDate>Thu, 29 May 2025 16:20:02 +0800</pubDate><description><![CDATA[must的本质：贡献相关性评分的条件，适用于需要影响结果排序的场景。filter的本质：高效的二进制过滤器，适用于精确匹配和高频查询。黄金法则能用filter的不要用must—— 除非明确需要该条件影响评分。]]></description><category></category></item><item><title><![CDATA[使用Redis的Bitmap实现了签到功能]]></title><link>https://blog.csdn.net/NoviceZ/article/details/148121291</link><guid>https://blog.csdn.net/NoviceZ/article/details/148121291</guid><author>NoviceZ</author><pubDate>Wed, 21 May 2025 18:03:07 +0800</pubDate><description><![CDATA[我们可以把，然后，每次，只要是1，就代表是这一天签到了，反之咋没有签到。]]></description><category></category></item><item><title><![CDATA[Kafka的broker、topic、partition、group的关系]]></title><link>https://blog.csdn.net/NoviceZ/article/details/147087723</link><guid>https://blog.csdn.net/NoviceZ/article/details/147087723</guid><author>NoviceZ</author><pubDate>Wed, 09 Apr 2025 11:15:30 +0800</pubDate><description><![CDATA[Kafka的消费模式主要有两种：一种是一对一的消费，也即点对点的通信，即一个发送一个接收。第二种为一对多的消费（发布/订阅模式），即一个消息发送到消息队列，消费者根据消息队列的订阅拉取消息消费。]]></description><category></category></item></channel></rss>