<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xialonghua的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xialonghua</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xialonghua]]></copyright><item><title><![CDATA[Maven强制指定jar版本]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/117219412</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/117219412</guid><author>xialonghua</author><pubDate>Mon, 24 May 2021 10:49:04 +0800</pubDate><description><![CDATA[最近发现个问题有个aliyun的oss sdk版本指定了不起作用，一直是很老的版本。依赖树打印也是没有问题的。最后临时取巧强制指定版本解决。
配置到parent pom里即可
&lt;dependencyManagement&gt;
	&lt;dependencies&gt;
    	&lt;dependency&gt;
        	&lt;groupId&gt;com.aliyun.oss&lt;/groupId&gt;
        	&lt;artifactId&gt;aliyun-sdk-]]></description><category></category></item><item><title><![CDATA[mac curl7.64.1 multipart上传文件spring后端搜不到的问题]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/110119776</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/110119776</guid><author>xialonghua</author><pubDate>Wed, 25 Nov 2020 10:57:46 +0800</pubDate><description><![CDATA[问题
最近升级了mac打包机的系统，结果上传接口无法接受到文件，后端是spring boot。
原因
最终发现curl -F参数指定后，7.64.1版本生成的HTTP BODY里对应的内容是Content-Disposition: attachment;，而实际上spring接收的应该是Content-Disposition: form-data;
解决
最终通过升级curl版本到7.7x.x或者其他版本解决。。查看body后发现是Content-Disposition: form-data;
虽然是一个小]]></description><category></category></item><item><title><![CDATA[Tinker1.9.14.5 一行代码没改生成补丁包含大量变更的问题]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/109669826</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/109669826</guid><author>xialonghua</author><pubDate>Fri, 13 Nov 2020 11:27:25 +0800</pubDate><description><![CDATA[背景
tinker热修复应该很多人都在用，但其实还是有些BUG的。官方据称内部版本与开源版本一致。这不。。又被我碰到一个BUG，差点被坑惨了，导致了半年的热修复不能用，最近空闲下来仔细研究了下原因，终于是找到问题了。
问题
一行代码没改。每次生成出来的补丁有260KB。
原因

经过多次对比、排除实验，发现每次都是因为有大量的R文件的res id改变导致。
那么导致资源变更的原因是什么呢？
最后发现tinker基准包生成的R.txt文件与实际最后补丁包生成的R.txt文件部分ID的值变了，从而导致所有引用的]]></description><category></category></item><item><title><![CDATA[Spring boot tomcat因为maxHttpHeaderSize配置导致启动请求一会OOM]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/106543167</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/106543167</guid><author>xialonghua</author><pubDate>Thu, 04 Jun 2020 11:43:52 +0800</pubDate><description><![CDATA[背景
项目上线后，发现过段时间就会请求失败OOM。经过排除，哪怕请求一个空的接口都会OOM，请求分配内存失败。
原因
最后发现有次配置文件上传，从网上复制了一个配置maxHttpHeaderSize设了100M。
经过查看源码，是因为请求来了后，会先创建Http的Processor，然后将这个Processor缓存起来复用。
Processor会直接根据maxHttpHeaderSize来申请http的inputBuffer和outputbuffer。
那么就导致了创建了几个Processor后内存就直接满]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.2.6 返回LocalDateTime为数组的问题]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/106127579</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/106127579</guid><author>xialonghua</author><pubDate>Thu, 14 May 2020 20:20:06 +0800</pubDate><description><![CDATA[背景
搭了一个初始工程，使用的是spring boot 2.2.6。结果发现LocalDateTime返回到前端后变成了数组。
网上找了遍都是不知道哪抄的，没一个行的。
问题根源
还是通过查看源码的方式，发现默认序列化情况下会使用kotlin SerializationFeature.WRITE_DATES_AS_TIMESTAMPS。所以打印出数组。
 @Override
    public void serialize(LocalDateTime value, JsonGenerator g, Ser]]></description><category></category></item><item><title><![CDATA[Matrix导致tinker补丁包过大问题]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/105303373</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/105303373</guid><author>xialonghua</author><pubDate>Fri, 03 Apr 2020 23:45:34 +0800</pubDate><description><![CDATA[背景
这是个大坑，记录下。
项目接入了tinker做热修复，可是呢一行代码不改，你猜补丁多大？
10M
加固后生成的补丁，你猜多大？
18M
这简直是不能接受啊！
结论
先说结论，因为其他都是废话，也没人关心，希望结论能帮助到他人。

matrix导致tinker补丁过大


项目里用例tinker+matrix，这俩是微信一家的
matrix在做方法耗时插桩时，会在代码里每个方法里插入开始和结束...]]></description><category></category></item><item><title><![CDATA[JAVA操作jenkins api取消正在排队某一个任务]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/103392613</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/103392613</guid><author>xialonghua</author><pubDate>Thu, 26 Mar 2020 19:48:47 +0800</pubDate><description><![CDATA[import hudson.model.* 
def q = Jenkins.instance.queue
  println(Jenkins.instance.pluginManager.plugins)
q.items.findAll { 
  
  it.task.name.startsWith("jenkins job 名字")
  
}.each { 
  packageId=""
  ...]]></description><category></category></item><item><title><![CDATA[Java CPU高如何查看线程状态]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/105125853</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/105125853</guid><author>xialonghua</author><pubDate>Thu, 26 Mar 2020 19:20:42 +0800</pubDate><description><![CDATA[背景
服务器上线后，莫名其妙收到CPU高的报警。那么该如何排查呢？
方法

jps命令查看java对应的进程ID
top -H -p PID 查看当前进程中线程状态，找到比较占CPU的几个PID
printf “%x\n” PID  线程ID转换成16进制
jstack 31057|grep 16进制PID -A 30 查看对应线程状态信息
根据返回可看到是执行到哪里导致CPU过高


...]]></description><category></category></item><item><title><![CDATA[算法时间复杂度的大概计算方法]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/103897384</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/103897384</guid><author>xialonghua</author><pubDate>Wed, 08 Jan 2020 21:22:58 +0800</pubDate><description><![CDATA[前言
最近在看看leetcode，很多题都要求时间复杂度在一定值之内。那么这个值该如何去计算呢？还是得捡捡基础知识。
时间复杂度
通俗点讲就是程序执行数据规模为N的算法所需要的大致时间，记作T(n)=O(f(n))，一般时间复杂度都叫O(n)。下面再引用一句牛逼点的话：

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大...]]></description><category></category></item><item><title><![CDATA[Spring boot maven clean package kotlin+java混编]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/103145602</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/103145602</guid><author>xialonghua</author><pubDate>Tue, 19 Nov 2019 16:38:10 +0800</pubDate><description><![CDATA[背景
这次项目做完，用公司发布系统编译的时候，报错了。因为是混编，结果报kotlin文件都找不到。maven clean package -U这是打包命令，可是因为是发布系统模板所以不好改命令。
解决方案
可以改编译命令的前提下
这个不多说了，网上挺多人复制的。其实就是在package前面强制先编译kotlin。
三方链接
不修改打包命令的前提下
这个就不好搞了。最后还是在kotlin官网找到了答...]]></description><category></category></item><item><title><![CDATA[mac docker gitlab 503：too many open files]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/103126592</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/103126592</guid><author>xialonghua</author><pubDate>Mon, 18 Nov 2019 17:42:50 +0800</pubDate><description><![CDATA[背景
在mac上装了个docker、在docker里起了个gitlab，结果gitlab太吃电脑了，随便一操作就挂了报503.。。通过日志发现是too many open files。
解决办法
只有增加mac的文件打开数。结果发现ulimit -n 最大256.。坑爹啊。
通过查找google发现通过以下方式来修改，只在10.14、10.12上测试OK，应该10.12以后的都可以。：

创建文件...]]></description><category></category></item><item><title><![CDATA[mac上vue项目编译报错：primordials is not defined]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/103086408</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/103086408</guid><author>xialonghua</author><pubDate>Fri, 15 Nov 2019 15:35:17 +0800</pubDate><description><![CDATA[背景
有个vue项目要发布，本地运行好好的，结果编译就报错：
primordials is not defined

解决办法
经过查询发现是node的版本太高与gulp不符。只有降低node版本解决问题。
我得版本是node：12.0。怎么降低版本呢？
通过nvm命令即可。

nvm list 查看当前版本
nvm install vxxx.xx.xx下载所需版本（一个版本一个版本试）
nvm ...]]></description><category></category></item><item><title><![CDATA[element-vue中el-table去除鼠标悬停背景色]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/100034098</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/100034098</guid><author>xialonghua</author><pubDate>Fri, 23 Aug 2019 11:19:12 +0800</pubDate><description><![CDATA[问题
使用el-table的时候，会发现鼠标移到某行，某行就会高亮。那怎么去掉这个效果呢？
解决
添加以下CSS即可(或自己改成想要的颜色)：
.el-table tbody tr:hover&gt;td { 
    background-color:#ffffff!important
}


...]]></description><category></category></item><item><title><![CDATA[element-vue中el-tag 点击事件无效]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/100034012</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/100034012</guid><author>xialonghua</author><pubDate>Fri, 23 Aug 2019 11:16:48 +0800</pubDate><description><![CDATA[问题
使用el-tag有时想添加点击事件，结果发现添加了@click="xxx"发现，并没有触发click。
解决
element官方有说明，
@click改成即可@click.native


]]></description><category></category></item><item><title><![CDATA[centos Gitolite自定义仓库目录+git daemon启动命令]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/96492915</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/96492915</guid><author>xialonghua</author><pubDate>Wed, 14 Aug 2019 13:31:40 +0800</pubDate><description><![CDATA[背景
现在可能大家都在使用gitlab来管理代码。非常方便，还能控制权限。
可是最近接到一个需求是这样的：

要用git做版本管理
所有git仓库为可读
拥有权限配置

Gitolite + Git Daemon
这个时候搭建一套gitlab其实挺麻烦。这时候Gitolite合git daemon就派上用场了。
1. Gitolite：能够拥有权限管理功能
2. Git Daemon：可以使所有g...]]></description><category></category></item><item><title><![CDATA[Jenkins插件历史版本下载]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/99558129</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/99558129</guid><author>xialonghua</author><pubDate>Wed, 14 Aug 2019 13:09:59 +0800</pubDate><description><![CDATA[背景
今天真是吓死宝宝了。不小心点了jenkins里的某个插件降级，结果jenkins启动报错，说各种版本不兼容，所有slave全部断开，jenkins的插件列表里又不能指定版本升级。。还好是中午休息时间，赶紧想解决办法。
解决方案

突然想到jenkins可以按照插件的hpi文件
首先定位到是哪一个插件版本不兼容
下载jenkins插件的历史版本，那么这个到哪去下呢？找到了插件源码，可是下下来编...]]></description><category></category></item><item><title><![CDATA[Jenkins指定build number起始]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/99419820</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/99419820</guid><author>xialonghua</author><pubDate>Tue, 13 Aug 2019 12:18:39 +0800</pubDate><description><![CDATA[背景
jenkins每次编译都会生成一个build号，并且是从1一直递增的。那么有时候我们想像数据库那样，指定从10000号开始递增，该如何做呢？
解决方案
在jenkins主菜单，jenkins-&gt;系统管理-&gt;脚本命令行。进入命令行模式：

输入命令点运行即可：
Jenkins.instance.getItemByFullName("对应的job_name").updateNextB...]]></description><category></category></item><item><title><![CDATA[jenkins 并发构建Android 报错：Gradle build daemon disappeared unexpectedly (it may have been killed or may]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/99292604</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/99292604</guid><author>xialonghua</author><pubDate>Mon, 12 Aug 2019 11:20:46 +0800</pubDate><description><![CDATA[问题
jenkins CI的时候，如果一台机器只执行一个job，是很大的浪费。那么我们可以把一台slave设置成多进程并发的执行。
在使用Gradle编译Android时，出现了错误：
Gradle build daemon disappeared unexpectedly (it may have been killed or may ...

是因为jenkins并发执行会将gradle杀掉。...]]></description><category></category></item><item><title><![CDATA[Linux scp 卡住不动]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/98340752</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/98340752</guid><author>xialonghua</author><pubDate>Sat, 03 Aug 2019 15:21:28 +0800</pubDate><description><![CDATA[传一个文件到服务器的时候，scp卡住不动了。原来是默认scp会使用最大带宽，防火墙阻止了传输。加一个-l 8192限制下上传速度就好了。。
scp -l 8192 xxx root@xxx:/xxx


...]]></description><category></category></item><item><title><![CDATA[根据网上配置了远程git仓库，git clone报Permission denied (publickey,gssapi-keyex,gssapi-with-mic).]]></title><link>https://blog.youkuaiyun.com/xialonghua/article/details/95187022</link><guid>https://blog.youkuaiyun.com/xialonghua/article/details/95187022</guid><author>xialonghua</author><pubDate>Tue, 09 Jul 2019 13:26:13 +0800</pubDate><description><![CDATA[根据网上的链接配置了远程git仓库以及ssh key，结果clone的时候还是报没有权限。
正克隆到 'xxxxxxxxx'...
deploy@ip: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
fatal: 无法读取远程仓库。

请确认您有正确的访问权限并且仓库存在。

可能是因为ssh key文件夹权限问题，因此进到...]]></description><category></category></item></channel></rss>