<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Li_Chunxiao_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Li_Chunxiao_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Li_Chunxiao_]]></copyright><item><title><![CDATA[使用达梦迁移数据工具 将mysql迁移到达梦]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/153777610</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/153777610</guid><author>Li_Chunxiao_</author><pubDate>Thu, 23 Oct 2025 12:14:43 +0800</pubDate><description><![CDATA[弹出迁移策略配置,勾选”保持对象名大小写”,再勾选”字符集转换”,将编码字符集选择UTF-8,完成后点击确定, 继续点击下一步,在指定模式中选择mysql数据库并点击下一步,在制定对象页面勾选数据库表,此处可根据需要找到需要特殊处理的表,选中表后点击下方”转换”(或双击表类型),弹出设置表映射关系。更改完成后点击确定, 完成后继续点击下一步,进入执行方式页面后继续点击下一步,进入审阅迁移任务页面(可点击右下角策略再次调整策略)新建后按步骤点击下一步,选择迁移方式,比如mysql->DM, 继续点击下一步。]]></description><category></category></item><item><title><![CDATA[java线程 同步与异步 线程池]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/117527691</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/117527691</guid><author>Li_Chunxiao_</author><pubDate>Thu, 03 Jun 2021 16:46:27 +0800</pubDate><description><![CDATA[java线程 同步与异步 线程池
1）多线程并发时，多个线程同时请求同一个资源，必然导致此资源的数据不安全，A线程修改了B线
程的处理的数据，而B线程又修改了A线程处理的数理。显然这是由于全局资源造成的，有时为了解
决此问题，优先考虑使用局部变量，退而求其次使用同步代码块，出于这样的安全考虑就必须牺牲
系统处理性能，加在多线程并发时资源挣夺最激烈的地方，这就实现了线程的同步机制
同步：A线程要请求某个资源，但是此资源正在被B线程使用中，因为同步机制存在，A线程请求
不到，怎么办，A线程只能等待下去
异步：A]]></description><category></category></item><item><title><![CDATA[springboot 微服务 配置文件相关]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/115673836</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/115673836</guid><author>Li_Chunxiao_</author><pubDate>Wed, 14 Apr 2021 20:52:00 +0800</pubDate><description><![CDATA[现在主流的架构项目都是采用springboot, 越来越多的大中型项目架构采用微服务方式, 最近几天在使用目前比较前沿的技术搭建新的微服务架构, 借此机会整理了一下相关配置文件的一些内容, 一方面是为了做一个备份记录, 另一方便也是希望能帮助到同行的码友们!
以下描述中均是以各种


...]]></description><category></category></item><item><title><![CDATA[springboot 自定义注解 验证参数类型并提示准确异常]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/115695105</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/115695105</guid><author>Li_Chunxiao_</author><pubDate>Wed, 14 Apr 2021 14:17:00 +0800</pubDate><description><![CDATA[最近做项目任务时, 因前端请求接口时未进行参数验证, 因此一些数值类型参数传递数据被录入了String类型, 服务端提示"参数解析失败",  测试提了个提示信息不准确的bug, 虽然前端加一下验证, 后端接口也拦截掉了异常, 但既然提出最好可以处理一下, 当然要看看能不能解决此问题, 将最符合的提示返回给前端.
 首先, 如果需要最准确的提示信息, 那么就需要用到自定义注解了, 在自定义注解中填入相应的提示信息

/**
 * 数据绑定异常提示语
 */
@Target({ ElementType.FIE.]]></description><category></category></item><item><title><![CDATA[java 图片上绘制文字Graphics2D linux 中文乱码]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/113123012</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/113123012</guid><author>Li_Chunxiao_</author><pubDate>Mon, 25 Jan 2021 17:09:34 +0800</pubDate><description><![CDATA[本地调用接口在图片上绘制中文可以生成正确图片, 在linux环境中调用接口显示豆腐块中文乱码

在本地或网络上找到相应免费字体文件 比如: NotoSerifCJK-Regular.ttc
在linux环境中执行以下操作
1.创建chinese文件：mkdir /usr/share/fonts/chinese
2.将NotoSerifCJK-Regular.ttc文件存储到路径下：/usr/share/fonts/chinese/
3.进入home目录：cd
4.执行生成字体缓存并刷新命令：mkfontsc]]></description><category></category></item><item><title><![CDATA[java 图片上绘制文字(综合) Graphics2D]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/112896629</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/112896629</guid><author>Li_Chunxiao_</author><pubDate>Wed, 20 Jan 2021 17:00:59 +0800</pubDate><description><![CDATA[图片上绘制文字, 设置颜色, 字体尺寸大小, 位置等

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.output.ByteArrayOutputStream;

import javax.imageio.ImageIO;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import jav]]></description><category></category></item><item><title><![CDATA[for(),for迭代器,forEach(),stream(),parallelSteam() 执行效率基本对比结果]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/111669460</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/111669460</guid><author>Li_Chunxiao_</author><pubDate>Fri, 25 Dec 2020 14:04:14 +0800</pubDate><description><![CDATA[以下内容为个人亲自执行结果,编写只为记录与分享,若有不同可直接留言,共同交流,共同进步!后续会不断完善!
测试环境

win10 4核20G
jdk1.8.0_231
IDEA2019.3

分别执行10条, 100条, 100条, 1000条, 10000条, 100000条, 1000000条数据测试结果分析

执行循环内容时间较长, 超过1s左右时, 使用parallelSteam效率最高
forEach()不管是循环内容时间长短消耗时间都是最长的, 在内容执行时间短时,执行所消耗是其他方法的5-20]]></description><category></category></item><item><title><![CDATA[Springboot集成WebSocket与定时任务]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/111635267</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/111635267</guid><author>Li_Chunxiao_</author><pubDate>Thu, 24 Dec 2020 17:17:03 +0800</pubDate><description><![CDATA[测试工具推荐使用 http://ws.douqq.com/
网上有很多关于WebSocket用法的文章，但是有一些内容错误或者代码不全的，这里做个记录，方便自己记忆。
首先介绍一下业务需求背景，在一个商品购物系统中，某些订单需要运营后台进行审核通过后才可进行提货等后续操作，这就对及时的获取到是否存在待审核订单有较高的要求；这样就需要后端与前端通知做到紧密互动，在此就不介绍前端轮询请求后端数据与WebSocket方式的优缺点对比了。
需要向前端有审批权限的管理员发送通知的有已下三个场景
1. 运营后台管理员登]]></description><category></category></item><item><title><![CDATA[mysql not in 索引]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108864322</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108864322</guid><author>Li_Chunxiao_</author><pubDate>Wed, 30 Sep 2020 17:33:54 +0800</pubDate><description><![CDATA[组合索引
单列索引 not in 可生效, ()中内容过长不生效
复合索引 中not in 不生效
mysql 自动优化 会将 = 字段排列在前, 其他同级别会进行自主调整, 总之那个索引能过滤掉更多数据会使用那个索引

]]></description><category></category></item><item><title><![CDATA[java mybatis org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108769219</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108769219</guid><author>Li_Chunxiao_</author><pubDate>Thu, 24 Sep 2020 12:00:34 +0800</pubDate><description><![CDATA[org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.NullPointerException
### Cause: java.lang.NullPointerException
	at org.mybatis.spring.MyBatisE]]></description><category></category></item><item><title><![CDATA[JSONObject与各数据类型转换(通用)]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/107757276</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/107757276</guid><author>Li_Chunxiao_</author><pubDate>Wed, 23 Sep 2020 15:14:02 +0800</pubDate><description><![CDATA[Map&lt;String, String&gt; params = JSONObject.parseObject(obj.toJSONString(), new TypeReference&lt;Map&lt;String, String&gt;&gt;(){});

]]></description><category></category></item><item><title><![CDATA[Java区分大小写和mysql不区分大小写]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108261263</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108261263</guid><author>Li_Chunxiao_</author><pubDate>Wed, 23 Sep 2020 14:28:58 +0800</pubDate><description><![CDATA[Java区分大小写和mysql不区分大小写
在开发的过程中遇到了一个小坑，特此记录。在根据用户名查询客户的时候，比如zhangsan和ZHANGSAN同时查出来，
原来是Java区分大小写和mysql不区分大小写造成的。
不要轻易修改数据库。
解决步骤：

在插入用户名的时候直接全部插入为小写，不管用户输入的是大写还是小写，直接转化为小写（当时的开发规定），
//toLowerCase()方法将String转换为小写
String loginName=userBean.getLoginName().toLo]]></description><category></category></item><item><title><![CDATA[用freemarker生成word模板]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108345577</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108345577</guid><author>Li_Chunxiao_</author><pubDate>Tue, 01 Sep 2020 16:52:09 +0800</pubDate><description><![CDATA[需求：
给文书统一生成一个搞头文件，文件内容基本是一样的。
用freemarker生成docx文档
一、生成一个docx结尾的word模板，然后把文档的后缀docx改成zip，zip里会有生成很多文件。如下图：

然后打开word文件夹，如下图：

把document.xml拿出来，把后缀xml改成ftl，然后把里面的内容（在线格式化xml）格式化一下，把一些可变的参数做成变量。
二、在resources文件夹下创建wordTemplates文件夹，里面放刚才的zip和改名的gtwj.ftl文件。
三、替换]]></description><category></category></item><item><title><![CDATA[pdf文件合并]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108344852</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108344852</guid><author>Li_Chunxiao_</author><pubDate>Tue, 01 Sep 2020 16:25:09 +0800</pubDate><description><![CDATA[需求：多个pdf合并成一个pdf
一、pdf合并的类：
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.pdfbox.io.MemoryUsageS]]></description><category></category></item><item><title><![CDATA[word文档转pdf]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108343707</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108343707</guid><author>Li_Chunxiao_</author><pubDate>Tue, 01 Sep 2020 15:42:59 +0800</pubDate><description><![CDATA[需求 ：把docx文档转pdf文件
我的项目是springboot项目：
一、在项目resources里增加license.xml，内容如下：
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;License&gt;
  &lt;Data&gt;
    &lt;Products&gt;
      &lt;Product&gt;Aspose.Total for Java&lt;/Product&gt;
      &lt;Product&gt;Aspose.]]></description><category></category></item><item><title><![CDATA[java 线程池(ExecutorService与Spring配置threadPoolTaskExecutor)]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108095418</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/108095418</guid><author>Li_Chunxiao_</author><pubDate>Wed, 19 Aug 2020 10:58:40 +0800</pubDate><description><![CDATA[一、java ExecutorService实现
创建ExecutorService变量
private ExecutorService executor = null

2.执行对应任务时，首先生成线程池
executor = Executors.newFixedThreadPool(线程池大小);

3.循环执行线程
    for (String str : ids) {



                 executor.submit(new Callable&lt;Void&gt;() {
]]></description><category></category></item><item><title><![CDATA[IDEA Invalid bound statement (not found) 工具引起]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/107606323</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/107606323</guid><author>Li_Chunxiao_</author><pubDate>Mon, 27 Jul 2020 10:40:49 +0800</pubDate><description><![CDATA[今天在开发项目时遇到了一个让我翻车坑, 具体是什么呢?让我来描述一下啊, 最近在做一个新项目-中台服务系统采用的是微服务架构, 框架新搭建的, 为了快捷开发,我们采用了springboot+mybatisPlus中的代码生成器, 由于我做的一个微项目中涉及到的业务非常复杂,为避免后期会涉及到个别表结构的改动, 因此没有一次生成此微项目所有涉及到的业务表对应的代码, 包名是自己创建的, 这就是问题背景5555
以下开始讲述问题情况
在开发过程中大部分方法都是尽量用mybatisPlus中Wrapper这种可以]]></description><category></category></item><item><title><![CDATA[java springboot+mybaitsPlus 自动化生成代码, 自定义生成]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/107211854</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/107211854</guid><author>Li_Chunxiao_</author><pubDate>Wed, 08 Jul 2020 18:04:31 +0800</pubDate><description><![CDATA[随着编码工具的越来越便捷与强大, 越来越多的重复性工作被工具自动化所代替,
(研发工具的程序员正在一点一点干掉编写普通业务类代码的程序员,尤其是企业级小微级项目开发, 便捷了高效了,不进步慢慢就被替代了, 相煎何太急啊!)
好了,其他的就不多说了,下面要记录的是springboot+mybatisPlus自动化生成代码, 官网中有完整的例子, 咱也就不在这里赘述了, 想更深入研究了解的可以直接查看官网https://mp.baomidou.com/guide/generator.html
那为什么还要写这篇]]></description><category></category></item><item><title><![CDATA[java 根据IP获取城市与经纬度(第二种)]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/107090389</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/107090389</guid><author>Li_Chunxiao_</author><pubDate>Thu, 02 Jul 2020 18:23:13 +0800</pubDate><description><![CDATA[此方法使用的是百度地图
注意:
1. 本次采用的是免费受限普通IP方式, 不够精准, 如有更精确需求可以 花钱 购买高级服务
2. 普通IP方式范围目前仅限定国内IP定位
3. 需要注册获取相关秘钥ak
不多说, 采用百度地图调用方式相对更加简单, 直接上代码
package com.example.demo.utils;

import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFact]]></description><category></category></item><item><title><![CDATA[java 根据IP获取城市与经纬度(第一种)]]></title><link>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/107082921</link><guid>https://blog.youkuaiyun.com/Li_Chunxiao_/article/details/107082921</guid><author>Li_Chunxiao_</author><pubDate>Thu, 02 Jul 2020 15:10:06 +0800</pubDate><description><![CDATA[最近需要做一个拨打电话的功能, 调用第三方接口进行拨号, 而接口中要求经纬度为必传字段, 虽然可以通过app或小程序端获取, 但还是想看看能否通过java来获取到这些具体数据值, 以下为本人查找资料与文档总结出第一种实现方案!
此方法需要用到 GeoIP - &gt; 下载地址
注意:
1. 下载使用	GeoIP需要简单的注册一下
2. GeoIP官网上有很多具有倾向性的完整数据, 但有部分是收费的!
3. 此处摘取GeoIP官网中部分需要注意的内容
*GeoLite2免费可下载数据库*
由于即将颁布的数据]]></description><category></category></item></channel></rss>