<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[NJSFHesh的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/NJSFHesh</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; NJSFHesh]]></copyright><item><title><![CDATA[EasyExcel导出动态表头 (支持大数据量分页查询，分sheet导出)]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/148919315</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/148919315</guid><author>NJSFHesh</author><pubDate>Thu, 26 Jun 2025 17:25:36 +0800</pubDate><description><![CDATA[本文介绍了使用EasyExcel导出动态表头Excel的方法。通过List&lt;List&lt;String&gt;&gt;设置表头，Map存储数据行，利用writeTable分批写入数据。关键点包括：1)动态表头构建；2)分页查询数据；3)使用WriteTable控制写入位置；4)通过relativeHeadRowIndex关联表头与数据。该方法适用于列数不固定的导出场景，如用户答卷、动态指标等，实现高效分批导出大数据量Excel文件。]]></description><category></category></item><item><title><![CDATA[【JSqlParser】使用JSqlParser解析sql并动态删除查询条件]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/147816778</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/147816778</guid><author>NJSFHesh</author><pubDate>Fri, 09 May 2025 12:32:36 +0800</pubDate><description><![CDATA[本文介绍了如何使用JSqlParser工具解析SQL语句，并动态删除查询条件，适用于BI报表等场景中用户可选的SQL查询条件。通过JSqlParser，可以处理复杂的SQL语句（如子查询、IN、LIKE等），并能够正确处理查询条件删除后SQL语句的合法性。文章提供了Java代码示例，展示了如何递归分割表达式并处理不同类型的SQL条件。完整代码已封装成工具类，可在GitHub上获取。该方法比使用正则表达式更为强大，能够应对各种复杂的SQL场景。
]]></description><category></category></item><item><title><![CDATA[docker搭建redis读写分离]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/145450592</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/145450592</guid><author>NJSFHesh</author><pubDate>Wed, 05 Feb 2025 10:49:23 +0800</pubDate><description><![CDATA[docker redis读写分离 redis主从复制 docker run]]></description><category></category></item><item><title><![CDATA[java.lang.NoSuchMethodError: java.lang.Math.floorMod(JI)I 解决方案及原因]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/144584361</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/144584361</guid><author>NJSFHesh</author><pubDate>Thu, 19 Dec 2024 14:43:07 +0800</pubDate><description><![CDATA[java.lang.Math.floorMod(JI)]]></description><category></category></item><item><title><![CDATA[【JVM 内存不足问题排查小记】]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/142149373</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/142149373</guid><author>NJSFHesh</author><pubDate>Wed, 11 Sep 2024 20:55:25 +0800</pubDate><description><![CDATA[在开发环境和本地这个API都没问题。但是在测试环境，一点击某个API，整个服务直接重启。]]></description><category></category></item><item><title><![CDATA[springMVC处理请求流程]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/136193620</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/136193620</guid><author>NJSFHesh</author><pubDate>Tue, 20 Feb 2024 16:37:09 +0800</pubDate><description><![CDATA[处理器映射器 (HandlerMapping)会根据请求，找到负责处理该请求的处理器，并将其封装为处理器执行链 返回 (HandlerExecutionChain) 给 DispatcherServlet。DispatcherServlet 会根据 处理器执行链 中的处理器，找到能够执行该处理器的处理器适配器(HandlerAdaptor)    --注，处理器适配器有多个。会把处理器包装成适配器，这样就可以支持多种类型的处理器，类比笔记本的适配器（适配器模式的应用）**需要程序员去写代码处理逻辑的）]]></description><category></category></item><item><title><![CDATA[HttpClient爬虫-xx搜索出现验证码]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/113107586</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/113107586</guid><author>NJSFHesh</author><pubDate>Tue, 20 Feb 2024 16:33:31 +0800</pubDate><description><![CDATA[文章目录前言代码最后

前言
在搜狗微信输入关键字搜索，请求频繁时会出现验证码页面

更换新的cookie即可解决



代码
		// String url = "https://weixin.sogou.com/weixin?type=2&amp;s_from=input&amp;query=ABC&amp;ie=utf8&amp;_sug_=n&amp;_sug_type_=&amp;page=BCA";
		String url = this.engineSite.getStartUrl();
		]]></description><category></category></item><item><title><![CDATA[代码规范合集之代码检测工具sonarQube]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/135380053</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/135380053</guid><author>NJSFHesh</author><pubDate>Tue, 16 Jan 2024 10:20:28 +0800</pubDate><description><![CDATA[重复的字符串文字使重构过程容易出错，因为您必须确保更新所有出现的情况。另一方面，常量可以从许多地方引用，但只需要在一个地方更新。持续更新中-----]]></description><category></category></item><item><title><![CDATA[多线程安全问题-volatile & atomic]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/131561298</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/131561298</guid><author>NJSFHesh</author><pubDate>Wed, 05 Jul 2023 18:02:28 +0800</pubDate><description><![CDATA[数据被从A修改为B又修改为A，A->B->A。如果一个线程前后两次读取数据，都是A，实际上脏读/多线程安全问题已经发生。CAS算法，compareAndSwap，对数据的每次操作都记录下时间戳，只有当时间戳和数据一样时，才会进行操作。synchronized也可以实现原子操作， 它是对资源加锁，同一时间内，只有抢占到锁资源的才能操作数据。加入volatile修饰后，线程本地副本的值不在有效，强制线程从堆内存中拿值。如果只是针对变量的原子操作，那么就使用原子变量。所有操作都具有原子性的变量。]]></description><category></category></item><item><title><![CDATA[学习笔记-多线程-JUC中的强大辅助类]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/131472643</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/131472643</guid><author>NJSFHesh</author><pubDate>Fri, 30 Jun 2023 11:15:53 +0800</pubDate><description><![CDATA[JUC，多线程，java，java工具类]]></description><category></category></item><item><title><![CDATA[学习笔记-多线程-线程池]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/131451911</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/131451911</guid><author>NJSFHesh</author><pubDate>Thu, 29 Jun 2023 14:19:48 +0800</pubDate><description><![CDATA[多线程，线程池]]></description><category></category></item><item><title><![CDATA[浅谈sql优化+索引]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/131436526</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/131436526</guid><author>NJSFHesh</author><pubDate>Wed, 28 Jun 2023 14:45:33 +0800</pubDate><description><![CDATA[索引是已经排好序的有序数据结构，类似于目录，当通过索引去查询数据时，能大大提高查询效率。]]></description><category></category></item><item><title><![CDATA[BeanFactory和ApplicationContext的区别(问题驱动思考)]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/112791068</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/112791068</guid><author>NJSFHesh</author><pubDate>Mon, 18 Jan 2021 21:03:38 +0800</pubDate><description><![CDATA[文章目录前言一、几乎所有人都犯过的错误二、IOC容器1.BeanFactory2.ApplicationContext总结


前言
本文阅读需要约7分钟，从一个普遍的错误到分析BeanFactory和ApplicationContext的不同

一、几乎所有人都犯过的错误
相信几乎所有Spring初学者都犯过一个错误(包括笔者在内)，在编写Controller类或者Service类时忘记写
@Controller或@Service时，tomcat启动必定会报错。

这时一顿操作：错误信息拷贝,面向百度或c]]></description><category></category></item><item><title><![CDATA[使用FreeMarker导出带有背景色的excel]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/110632858</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/110632858</guid><author>NJSFHesh</author><pubDate>Fri, 04 Dec 2020 14:53:09 +0800</pubDate><description><![CDATA[需要的答案的可以直接看结论起因解决结论
起因
工作需求，需要根据列表数据导出为excel
选择导出工具类时有：POI、糊涂工具包、FreeMarker....

个人认为POI通过代码写excel样式比较麻烦，且不直观，放弃
糊涂工具包没用过，他包含很多工具类，项目一时用不上这些工具类，放弃

最后选择了FreeMarker，因为FreeMarker的优点是，我可以预先设计好样式，在通过FreeMarker的
语法糖，类似ONNL的${} &lt;list&gt;标签等来得到我要的excel，样式的实现简单]]></description><category></category></item><item><title><![CDATA[Java1.8之HashMap底层链表变红黑树浅析]]></title><link>https://blog.youkuaiyun.com/NJSFHesh/article/details/109124797</link><guid>https://blog.youkuaiyun.com/NJSFHesh/article/details/109124797</guid><author>NJSFHesh</author><pubDate>Mon, 26 Oct 2020 10:44:35 +0800</pubDate><description><![CDATA[AA

]]></description><category></category></item></channel></rss>