<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ILoveController的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ILoveController</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ILoveController]]></copyright><item><title><![CDATA[SpringBoot整合RabbitMQ，实现MQ动态配置交换机-路由-队列信息]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/132684920</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/132684920</guid><author>ILoveController</author><pubDate>Tue, 05 Sep 2023 10:14:42 +0800</pubDate><description><![CDATA[YamlAndPropertySourceFactory.class：该类为了解决读取yaml以及yml配置文件无法映射的问题。可根据不同的交换机，进行队列，路由的定义。也可以对队列路由进行扩充。目前这里只用到直连类型的交换机。动态参数配置校验（校验可不配置）：可根据不同的交换机类型，做校验，这里是对直连交换机的参数做的校验。以上五个步骤就完成了根据配置文件初始化rabbitMQ的交换机-路由-队列。扩充的属性可以看（三）中对应的实体类。如果可以映射配置文件，可以忽略这个。]]></description><category></category></item><item><title><![CDATA[EsayExcel通过模板动态生成多sheet页报错Sheet index () is out of range问题解决方案]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/131832398</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/131832398</guid><author>ILoveController</author><pubDate>Thu, 20 Jul 2023 15:57:04 +0800</pubDate><description><![CDATA[通过EasyExcel读取模板生成多sheet页Excel的过程中出现报错。在git issue上看到其他低版本依然存在该问题。解决方案：通过POI动态复制sheet。三、通过POI复制sheet页扩容模板。二、MultiSheet类的元素。]]></description><category></category></item><item><title><![CDATA[异步线程池+多线程实现EXCEL填充，打包（zip）及上传]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/121947927</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/121947927</guid><author>ILoveController</author><pubDate>Wed, 15 Dec 2021 11:54:49 +0800</pubDate><description><![CDATA[需求背景：

1、通过筛选条件过滤数据（多线程主要解决这一步查询慢的问题）

2、数据填充EXCEL

3、多EXCEL打zip包上传到文件服务器

4、先返回下载信息，再同步导出EXCEL报表数据



主要逻辑和方法：

注册异步线程池


     /**
     * 注册异步线程池
     */
    @Bean("asyncThreadPool")
    public ThreadPoolTaskExecutor asyncThreadPoolTaskExecutor() {
      ]]></description><category></category></item><item><title><![CDATA[JAVA对接微信小程序，实现订阅消息推送功能]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/114824220</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/114824220</guid><author>ILoveController</author><pubDate>Mon, 15 Mar 2021 11:39:59 +0800</pubDate><description><![CDATA[接之前微信公众号的需求后，现在又需要对接微信小程序，实现订阅消息推送功能。

我把相关的实现逻辑，注意事项总结了一下。

一、配置信息


#################微信渠道-服务号##################
##granttype可共用
wechat.auth.granttype=client_credential
wechat.auth.token=Qwer@123
wechat.auth.appid=xxxxxxxxxx
wechat.auth.secret=xxxxxxxxxx
#]]></description><category></category></item><item><title><![CDATA[@NotNull验证list对象无效]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/111915460</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/111915460</guid><author>ILoveController</author><pubDate>Tue, 29 Dec 2020 15:06:10 +0800</pubDate><description><![CDATA[1.controller层添加@Valid



2.参数List使用@NotNull



3.List中的元素使用@NotEmpty




]]></description><category></category></item><item><title><![CDATA[JAVA对接微信公众号（服务号、订阅号）实现模板消息推送功能]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/111642431</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/111642431</guid><author>ILoveController</author><pubDate>Thu, 24 Dec 2020 17:49:59 +0800</pubDate><description><![CDATA[最近做了个需求要求对接微信公众号，使用模板进行消息推送，今天抽时间总结一下相关的逻辑。

大概逻辑分为四个步骤：

获取微信调用接口凭证access_token。
	获取微信模板列表。
	使用模板进行消息推送。
	公众号配置服务器URL。
我这里的实现没有使用微信公众号weixin-java-mp依赖，完全是根据微信官方文档的提示写的代码。

一、二、获取access_token和模板列表


    @Override
    public String getAccessToken() {
      ]]></description><category></category></item><item><title><![CDATA[restTemplate.postForObject调用接口，接口入参是@RequestParam的方案及其他使用]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/111311647</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/111311647</guid><author>ILoveController</author><pubDate>Thu, 17 Dec 2020 11:36:16 +0800</pubDate><description><![CDATA[最近在调用其他系统的接口时，遇到的问题。由于接口文档给的写的模糊不清，导致接口一直没有调用通。后来索性要了代码权限自己看他写的接口。

一、接口入参是@RequestParam的post请求

1、接口方接口：



2、请求代码：

header设置contentType为application/x-www-form-urlencoded 等同于URL后直接拼接参数。


//header
HttpHeaders header = new HttpHeaders();
header.setContentT]]></description><category></category></item><item><title><![CDATA[MYSQL通过数据库中json数据的key筛选数据]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/109248029</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/109248029</guid><author>ILoveController</author><pubDate>Fri, 23 Oct 2020 19:07:16 +0800</pubDate><description><![CDATA[SELECT
	*
FROM
	table
WHERE
	LOCATE('1',JSON_EXTRACT(json_column, '$[*].json_key')) &gt; 0

JSON_EXTRACT(存放json的字段,json的key)函数。
关于JSON_EXTRACT()的用法拓展：

函数中使用lambda：JSON_EXTRACT(cloumn -&gt; '$[0]','$.key')  -&gt;'$[0]'获取json数据中的第一条。

LOCATE()函数
判断字符串中是...]]></description><category></category></item><item><title><![CDATA[记录IDEA自动生成entity的groovy文件]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/107916707</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/107916707</guid><author>ILoveController</author><pubDate>Mon, 10 Aug 2020 16:52:16 +0800</pubDate><description><![CDATA[记录使用IDEA自动生成entity的goovy文件。

带有数据库注释
	已经修改int、date/datetiem/timestamp等数据格式
	添加了lambda @Data注解

import com.intellij.database.model.DasTable
import com.intellij.database.util.Case
import com.intellij.database.util.DasUtil

/*
 * Available context bindings:
 ]]></description><category></category></item><item><title><![CDATA[JAVA日期计算，格式化日期的常用方法]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/107844815</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/107844815</guid><author>ILoveController</author><pubDate>Thu, 06 Aug 2020 17:08:14 +0800</pubDate><description><![CDATA[public class DateUtils {

    private static final String FORMAT_TIME = "yyyy-MM-dd HH:mm:ss";

    private static final String FORMAT_DAY = "yyyy-MM-dd";

    private static final String FORMAT_MONTH = "yyyy-MM";

    /**
     * 获取去年年份
     *
     * @ret.]]></description><category></category></item><item><title><![CDATA[MySQL查询一段时间内的数据，没有数据的日期补全0]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/107842876</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/107842876</guid><author>ILoveController</author><pubDate>Thu, 06 Aug 2020 16:59:37 +0800</pubDate><description><![CDATA[一、查询每天的数据，没有数据的那天，补全0：


SELECT
	dateTime,
	MAX( success ) AS success,
	MAX( fail ) AS fail 
FROM
	(
	SELECT
		@cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY ) dateTime,
		0 AS success,
		0 AS fail 
	FROM
		( SELECT @cdate := DATE_ADD( #{date1}, INTERVAL + 1]]></description><category></category></item><item><title><![CDATA[mysql not like简化]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/80581780</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/80581780</guid><author>ILoveController</author><pubDate>Tue, 05 Jun 2018 15:19:58 +0800</pubDate><description><![CDATA[mysql支持正则表达式判断select * from user where name NOT LIKE '%AAA%' AND name NOT LIKE '%BBB%' AND name NOT LIKE '%CCC%'使用REGEXP正则表达式select * from user where name NOT REGEXP 'AAA|BBB|CCC'更多用法可以搜REGEXP正则表达式...]]></description><category></category></item><item><title><![CDATA[JAVA对特殊字符的处理]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/80267463</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/80267463</guid><author>ILoveController</author><pubDate>Thu, 10 May 2018 15:16:56 +0800</pubDate><description><![CDATA[最近在维护OA系统的时候，刚好遇到几个类似的问题。总结了一下大概是下面三种情况。1.在拼接原生SQL的时候，特殊字符如【'】，破坏了SQL的完整性。public String escapeExprSpecialWord(String keyword) {  
	    if (StringUtils.isNotEmpty(keyword)) {  
	        String[] fbsArr...]]></description><category></category></item><item><title><![CDATA[DATE日期比较]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/80066554</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/80066554</guid><author>ILoveController</author><pubDate>Tue, 24 Apr 2018 16:28:16 +0800</pubDate><description><![CDATA[public static void main(String[] args) {
		SimpleDateFormat sdf = new SimpleDateFormat(&quot;HH:mm&quot;);
		String time1 = &quot;12:00&quot;;
		String time2 = &quot;13:00&quot;;
		Date dateTime1 = null;
		Date dateTime2 = null;
	...]]></description><category></category></item><item><title><![CDATA[JAVA 三元运算例子]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/80050829</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/80050829</guid><author>ILoveController</author><pubDate>Mon, 23 Apr 2018 15:25:51 +0800</pubDate><description><![CDATA[[条件语句] ? [表达式1] : [表达式2]其中如条件语句为真执行表达式1。否则执行表达式2。表达式1或者表达式2都要有返回值。public static void main(String[] args) {
		double result = getAday();
		System.out.println(&quot;d=&quot;+result);
	}
	public static double getA...]]></description><category></category></item><item><title><![CDATA[JS中map的定义与使用]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/79098174</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/79098174</guid><author>ILoveController</author><pubDate>Thu, 18 Jan 2018 16:59:05 +0800</pubDate><description><![CDATA[function Map() {     
    /** 存放键的数组(遍历用到) */    
    this.keys = new Array();     
    /** 存放数据 */    
    this.data = new Object();     
         
    /**   
     * 放入一个键值对   
     * @param {String}]]></description><category></category></item><item><title><![CDATA[jsonp解决跨域请求问题]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/78661115</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/78661115</guid><author>ILoveController</author><pubDate>Wed, 29 Nov 2017 08:32:33 +0800</pubDate><description><![CDATA[关键代码/**
     * jsonp解决跨域请求问题。
     * JSONP，该协议允许用户传递一个callback参数给服务端，服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据，
     * 这样客户端就可以随意定制自己的函数来自动处理返回数据了
     */
    public String queryStaffInfo() {
        list]]></description><category></category></item><item><title><![CDATA[MySQL中查询一段日期内指定时间段的数据]]></title><link>https://blog.youkuaiyun.com/ILoveController/article/details/78496103</link><guid>https://blog.youkuaiyun.com/ILoveController/article/details/78496103</guid><author>ILoveController</author><pubDate>Fri, 10 Nov 2017 09:07:41 +0800</pubDate><description><![CDATA[查询某张表例如2017-01-01到2017-06-30这段日期内，07点-09点间的数据。 
SQL如下： 
SELECT *  FROM tableName 
 WHERE  
hour(判断条件列) >= 7 AND  hour(判断条件列) < 9  
AND 判断条件列 >= ‘2017-01-01’ AND 判断条件列 < ‘2017-06-30’ 
AND extract(hour_m]]></description><category></category></item></channel></rss>