<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[不积跬步，无以至千里]]></title><description><![CDATA[个人博客地址：https://lewky.cn]]></description><link>https://blog.youkuaiyun.com/lewky_liu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lewky_liu]]></copyright><item><title><![CDATA[Maven无法下载2.1.7.js7版本的itext依赖]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/109322686</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/109322686</guid><author>lewky_liu</author><pubDate>Tue, 27 Oct 2020 22:41:33 +0800</pubDate><description><![CDATA[问题与分析
某日忽然发现用Maven编译项目报错如下：
Failed to collect dependencies at net.sf.jasperreports:jasperreports:jar:6.10.0
-&gt; com.lowagie:itext:jar:2.1.7.js7: Failed to read artifact descriptor for com.lowagie:itext:jar:2.1.7.js7: 
Could not transfer artifact com.lowa]]></description><category></category></item><item><title><![CDATA[PostgreSQL - 如何杀死被锁死的进程]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/103077674</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/103077674</guid><author>lewky_liu</author><pubDate>Fri, 15 Nov 2019 00:50:19 +0800</pubDate><description><![CDATA[前言
在一次系统迭代后用户投诉说无法成功登陆系统，经过测试重现和日志定位，最后发现是由于用户在ui上进行了某些操作后，触发了堆栈溢出异常，导致数据库里的用户登陆信息表的数据被锁住，无法释放。这个表里存放的是用户的session信息。
虽然后来解决了问题，但是数据库里这个用户登录信息表里被lock住的数据始终无法释放，这导致用户永远无法登陆成功，需要手动跑SQL把锁去掉才行。
杀掉指定进程
Post...]]></description><category></category></item><item><title><![CDATA[SQL - where条件里的!=会过滤值为null的数据]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/103059943</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/103059943</guid><author>lewky_liu</author><pubDate>Thu, 14 Nov 2019 00:10:35 +0800</pubDate><description><![CDATA[!=会过滤值为null的数据
在测试数据时忽然发现，使用如下的SQL是无法查询到对应column为null的数据的：
select * from test where name != 'Lewis';

本意是想把表里name的值不为Lewis的所有数据都搜索出来，结果发现这样写无法把name的值为null的数据也包括进来。
上面的!=换成&lt;&gt;也是一样的结果，这可能是因为在数据库里nu...]]></description><category></category></item><item><title><![CDATA[SpringBoot JPA懒加载异常 - com.fasterxml.jackson.databind.JsonMappingException: could not initialize pr]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/102715108</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/102715108</guid><author>lewky_liu</author><pubDate>Thu, 24 Oct 2019 08:49:26 +0800</pubDate><description><![CDATA[问题与分析
某日忽然发现在用postman测试数据时报错如下：
com.fasterxml.jackson.databind.JsonMappingException: could not initialize proxy [com.cbxsoftware.cbx.attachment.entity.RefAttachment#c109ec36e60c4a89a10eabc72416d984] -...]]></description><category></category></item><item><title><![CDATA[由Java正则表达式的灾难性回溯引发的高CPU异常：java.util.regex.Pattern$Loop.match]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/102493459</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/102493459</guid><author>lewky_liu</author><pubDate>Fri, 11 Oct 2019 00:37:53 +0800</pubDate><description><![CDATA[问题与分析
某天领导report了一个问题：线上的CPU自从上一个版本迭代后就一直处于居高不下的状况，领导看着这段时间的曲线图判断是有两条线程在不停的死循环。
接到任务后去查看了AWS的CloudWatch，发现线上CPU确实一直居高不下，使用率基本是之前的两倍；另外发现线程使用率以比之前频繁很多。后来公司的大佬拿到dump后经过分析发现，是由正则表达式造成的CPU持续高使用率的问题。
堆栈信息如...]]></description><category></category></item><item><title><![CDATA[Jetty - Unable to compile class for JSP]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/102339369</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/102339369</guid><author>lewky_liu</author><pubDate>Tue, 08 Oct 2019 00:17:28 +0800</pubDate><description><![CDATA[问题与分析
在启动公司项目时发现报错如下：
    [jetty] 2019-10-07 10:28:28.760:WARN:org.apache.jasper.compiler.Compiler:Error compiling file: D:\lewis.liu\CBX_KME\Program\jetty-temp\main\jsp\org\apache\jsp\invalidatePrevS...]]></description><category></category></item><item><title><![CDATA[org.springframework.expression.spel.SpelEvaluationException: EL1030E]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/102339071</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/102339071</guid><author>lewky_liu</author><pubDate>Tue, 08 Oct 2019 00:12:18 +0800</pubDate><description><![CDATA[问题与分析
在本地开发项目时发现报错如下：
org.springframework.expression.spel.SpelEvaluationException: EL1030E: The operator 'ADD' is not supported between objects of type 'java.lang.String' and 'null'
	at org.springfram...]]></description><category></category></item><item><title><![CDATA[ELK系列(7) - 测试环境下Logstash异常退出：block in multi_receive_encoded]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/99496420</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/99496420</guid><author>lewky_liu</author><pubDate>Wed, 14 Aug 2019 00:11:22 +0800</pubDate><description><![CDATA[问题与分析
在本地测试无误后将ELK部署到了测试环境，结果第二天发现Logstash挂掉了，一开始以为是自动部署之类导致的问题。之后几天时间里Logstash总是会down掉，查看了下日志文件，发现报错如下：
[2019-06-28T07:56:13,148][FATAL][logstash.runner          ] An unexpected error occurred!
{
	: ...]]></description><category></category></item><item><title><![CDATA[Linux - /bin/sh^M: bad interpreter: No such file or directory]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/99495945</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/99495945</guid><author>lewky_liu</author><pubDate>Wed, 14 Aug 2019 00:06:40 +0800</pubDate><description><![CDATA[问题
在Windows环境下用Notepad++写了个shell脚本，上传到Linux平台后运行报错如下：
/bin/sh^M: bad interpreter: No such file or directory

经过查阅资料才知道，这是由于文件格式的问题：使用vi/vim进入该shell文件，按下:进入末行模式，输入set ff查询文件格式，结果如下：
fileformat=dos

这个问...]]></description><category></category></item><item><title><![CDATA[Log4j2 - 日志框架中isDebugEnabled()的作用]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/99494863</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/99494863</guid><author>lewky_liu</author><pubDate>Tue, 13 Aug 2019 23:55:49 +0800</pubDate><description><![CDATA[为什么要使用isDebugEnabled()
之前在系统的代码中发现有时候会在打印日志的时候先进行一次判断，如下：
if (LOGGER.isDebugEnabled()) {
    LOGGER.debug("Search parameters: " + searchParams);
}

我们使用的是Log4j2框架，框架自身提供了类似的许多api，比如isErrorEnabled()，is...]]></description><category></category></item><item><title><![CDATA[LeetCode - 412. Fizz Buzz]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/91344837</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/91344837</guid><author>lewky_liu</author><pubDate>Sat, 08 Jun 2019 15:02:40 +0800</pubDate><description><![CDATA[题目
Write a program that outputs the string representation of numbers from 1 to n.
But for multiples of three it should output “Fizz” instead of the number and for the multiples of five output “Buzz”. ...]]></description><category></category></item><item><title><![CDATA[LeetCode - 771. Jewels and Stones]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/91344832</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/91344832</guid><author>lewky_liu</author><pubDate>Sat, 08 Jun 2019 15:01:59 +0800</pubDate><description><![CDATA[题目
You’re given strings J representing the types of stones that are jewels, and S representing the stones you have.  Each character in S is a type of stone you have.  You want to know how many of the ...]]></description><category></category></item><item><title><![CDATA[LeetCode - 344. Reverse String]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/91344828</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/91344828</guid><author>lewky_liu</author><pubDate>Sat, 08 Jun 2019 15:01:17 +0800</pubDate><description><![CDATA[题目
Write a function that reverses a string. The input string is given as an array of characters char[].
Do not allocate extra space for another array, you must do this by modifying the input array in-...]]></description><category></category></item><item><title><![CDATA[LeetCode - 709. To Lower Case]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/91344821</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/91344821</guid><author>lewky_liu</author><pubDate>Sat, 08 Jun 2019 15:00:08 +0800</pubDate><description><![CDATA[题目
Implement function ToLowerCase() that has a string parameter str, and returns the same string in lowercase.
Example 1:
Input: "Hello"
Output: "hello"

Example 2:
Input: "here"
Output: "here"

Examp...]]></description><category></category></item><item><title><![CDATA[LeetCode - 136. Single Number]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/91344814</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/91344814</guid><author>lewky_liu</author><pubDate>Sat, 08 Jun 2019 14:59:21 +0800</pubDate><description><![CDATA[题目
Given a non-empty array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without u...]]></description><category></category></item><item><title><![CDATA[ELK系列(5) - Logstash怎么分割字符串并添加新的字段到Elasticsearch]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/90150052</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/90150052</guid><author>lewky_liu</author><pubDate>Mon, 13 May 2019 00:16:43 +0800</pubDate><description><![CDATA[问题
有时候我们想要在Logstash里对收集到的日志等信息进行分割，并且将分割后的字符作为新的字符来index到Elasticsearch里。假定需求如下：
Logstash收集到的日志字段message的值是由多个字段拼接而成的，分隔符是;,;，如下：
{
    "message": "key_1=value_1;,;key_2=value2"
}

现在想要将message的值拆分成2个新...]]></description><category></category></item><item><title><![CDATA[ELK系列(4) - Elasticsearch cannot write xcontent for unknown value of type class java.math.BigDecimal]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/88556755</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/88556755</guid><author>lewky_liu</author><pubDate>Sun, 12 May 2019 17:33:44 +0800</pubDate><description><![CDATA[java.lang.IllegalArgumentException: cannot write xcontent for unknown value of type class java.math.BigDecimal
	at org.elasticsearch.common.xcontent.XContentBuilder.unknownValue(XContentBuilder.java:7...]]></description><category></category></item><item><title><![CDATA[ELK系列(3) - Elasticsearch修改jvm参数]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/90142625</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/90142625</guid><author>lewky_liu</author><pubDate>Sun, 12 May 2019 17:20:03 +0800</pubDate><description><![CDATA[方法
Elasticsearch默认会配置1G的JVM堆的初始值和最大值，该jvm参数被配置在/config/jvm.options里：
-Xms1g
-Xmx1g

如果只是个人开发小项目，可以把参数改小些，比如：
-Xms512m
-Xmx512m

这个jvm.options用来配置各种jvm参数，比如GC、GC logging、heap dumps等。


...]]></description><category></category></item><item><title><![CDATA[ELK系列(2) - Kibana怎么修改日期格式Date format]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/90142271</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/90142271</guid><author>lewky_liu</author><pubDate>Sun, 12 May 2019 16:56:28 +0800</pubDate><description><![CDATA[问题
Kibana在创建Index Patterns的时候，可以选择某个date类型的field作为排序字段。之后在Discover里打开对应的index，会发现这个date类型的field的格式显示如下：
April 10th 2019, 17:40:32.359

这是Kibana默认的日期格式，有两种修改的方式。
方式一：全局修改
登录http://localhost:5601/，会进入Ki...]]></description><category></category></item><item><title><![CDATA[ELK系列(1) - Elasticsearch + Logstash + Kibana + Log4j2快速入门与搭建用例]]></title><link>https://blog.youkuaiyun.com/lewky_liu/article/details/90142121</link><guid>https://blog.youkuaiyun.com/lewky_liu/article/details/90142121</guid><author>lewky_liu</author><pubDate>Sun, 12 May 2019 16:46:58 +0800</pubDate><description><![CDATA[前言
最近公司分了个ELK相关的任务给我，在一边学习一边工作之余，总结下这些天来的学习历程和踩坑记录。
首先介绍下使用ELK的项目背景：在项目的数据库里有个表用来存储消息队列的消费日志，这些日志用于开发者日后的维护。每当客户端生产一条消息并发送到消息队列后，就会插入一条对应的记录到数据库里。当这条消息被消费之后，又会更新数据库里对应的记录的几个column的值，比如status、updated_o...]]></description><category></category></item></channel></rss>