<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ft523039764</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ft523039764]]></copyright><item><title><![CDATA[springboot项目版本升级]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/124018492</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/124018492</guid><author>ft523039764</author><pubDate>Mon, 11 Apr 2022 13:43:39 +0800</pubDate><description><![CDATA[springframework springcloud quartz swagger feign升级至版本]]></description><category></category></item><item><title><![CDATA[lettuce重连后业务中断，没有异常抛出ConnectionWatchdog - Reconnecting, last destination was]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/112474163</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/112474163</guid><author>ft523039764</author><pubDate>Mon, 11 Jan 2021 16:49:07 +0800</pubDate><description><![CDATA[记录

  线上业务中使用springboot的默认redis连接，当收到业务请求时最后打印日志：

[INFO ] 10:31:45.303 [lettuce-eventExecutorLoop-1-38] i.l.core.protocol.ConnectionWatchdog - Reconnecting, last destination was redis-service/XX.XXX.XXX.XXX:6379
[INFO ] 10:31:45.329 [lettuce-nioEventLoo..]]></description><category></category></item><item><title><![CDATA[spring gateway 动态路由学习笔记和基础加载流程]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/108881647</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/108881647</guid><author>ft523039764</author><pubDate>Wed, 30 Sep 2020 14:47:42 +0800</pubDate><description><![CDATA[前提：因为工作需要，想要搞一个动态代理，本来想用nginx定时跑脚本的方式，不过lua脚本的学习成本略高，同事提醒要不用gateway，正好学习成本能低些，也可以成体系，好控制。

  略过趟坑，官网学习，百度(90%时间)等，发现能在一个地方全部解决问题的地方基本没有，只能一边尝试一边自己拼凑。这里吐槽一下官网，只有静态路由方式配置的讲解，完全没讲怎么扩展，更麻烦的是中文官网的翻译着实看不懂。

  talk is cheap,show me the request.先说我的需求，vnc请...]]></description><category></category></item><item><title><![CDATA[记录由FastJSON和lombok的Accessors标签引起的反序列化的坑]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/107344539</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/107344539</guid><author>ft523039764</author><pubDate>Tue, 14 Jul 2020 18:32:33 +0800</pubDate><description><![CDATA[坑：

 如果父类Bean使用Accessors标签，子类在JSON反序列化时不会填充父类的属性。

原因：

Accessors 标签生成的set方法有两种，chain模式是setXXX，返回值为this；fluent模式是XXX(),返回值为this。

 两种方式返回值都是父类对象而不是子类对象。

 在JSON.parseObject()方法中，会使用反射找到目标类的set方法，然后使用set方法进行值填充，那怎么判断是不是set方法呢，他规定了几个不是set方法的判断：

1.方法名大于...]]></description><category></category></item><item><title><![CDATA[使用RestTemplate 请求，接口返回400+或500+不抛出异常的方法]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/90602756</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/90602756</guid><author>ft523039764</author><pubDate>Mon, 27 May 2019 14:25:46 +0800</pubDate><description><![CDATA[使用RestTemplate请求其他服务的时候，经常会遇到返回401，404，400，或者由于业务逻辑报500等情况，这种时候RestTemplate会报异常RestClientException，所以代码里面就必须catch异常再继续走逻辑，非常麻烦。

    这种情况多了就想让他不报错，因为返回的ResponseEntity中已经有了返回码，返回头和返回体的全部信息，可以自己处理这些...]]></description><category></category></item><item><title><![CDATA[springboot 自定义JMSListener.destination]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/86577384</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/86577384</guid><author>ft523039764</author><pubDate>Mon, 21 Jan 2019 16:43:08 +0800</pubDate><description><![CDATA[  情景：

     项目在组内开发人员电脑上经常跑本地，activemq的队列名写在配置文件上。由于代码分支不一样，导致消息经常被不正常得消费掉。想要改进这个问题，最简单的是将注解@JMSListener 改为动态加载监听BEAN，但是大家不想为了这个事改变开发习惯，所以定为动态修改入队和监听的地址。

  开始工作：

    从JMSListener注解入手，注释中提到了JmsListen...]]></description><category></category></item><item><title><![CDATA[一个特二的事，有关mybatis的数据源]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/80161296</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/80161296</guid><author>ft523039764</author><pubDate>Wed, 02 May 2018 00:54:42 +0800</pubDate><description><![CDATA[要弄一个springboot + mybatis的多数据源。配置什么的都弄好了，程序启动没问题了，但是一直连不到数据库，BindingException，说我有Invalid bound statement (not found)，我就纳闷了，明明启动过程还很和谐啊。万事debug一下启动过程吧，datasource bingo，sessionfactory bingo，sessiontemple...]]></description><category></category></item><item><title><![CDATA[一个纯的java-redis锁，因为有更好的，暂时就只记录一下]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/79061486</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/79061486</guid><author>ft523039764</author><pubDate>Mon, 15 Jan 2018 10:15:50 +0800</pubDate><description><![CDATA[找了很长时间，左试右试的搞了一个redis锁出来，但是被一个更好的方案取代了，有点郁闷，在此记录一下。
开始是因为redis的操作原子性问题，没有用redis自带的key过期，因为setnx 和expire是两个方法，无法保持强一致性，在高并发时候是致命的。而且保留着对redis的自带过期的不信任（这里补充一下，查了资料后发现redis的自带过期还是不错的，两种过期方式，一个是在get的时候判断]]></description><category></category></item><item><title><![CDATA[记录一个iscroll的坑吧]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/52127082</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/52127082</guid><author>ft523039764</author><pubDate>Fri, 05 Aug 2016 10:58:48 +0800</pubDate><description><![CDATA[闲话少叙：
tab开头。一个bug，在部分安卓机器上，微信浏览器打开我们的页面点击了没反应。
然后开始各种试，各种不同的绑定方法，bind on delegate 什么的，各种点击 tap itap click 什么的，全都不行，最后试出来touchEvent倒还绑得上，差点我就要自己用touch拼click事件了。结果寻访高人，一针见血戳到了问题所在。
第一个怀疑：是不是点击时间穿透了。很]]></description><category></category></item><item><title><![CDATA[上楼一次走一节还是两节楼梯，走法计算思路]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/51756375</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/51756375</guid><author>ft523039764</author><pubDate>Fri, 24 Jun 2016 23:31:02 +0800</pubDate><description><![CDATA[面试又露怯一回，别的就不说了，每次走一或两节楼梯的问题，可以漏了大怯了：有N节楼梯，每次可以走1节或者2节，总共有几种走法，写出计算程序。
本能的来说我想到了这题肯定要递归的，可是想了想不知道怎么递归比较好，所以放弃了该用归纳数据的方法。别的啥也不说了先说说我的错误答案，将楼梯的最下层拿掉两层，也就是后面所有的方法减掉了11 20 两种选择，所以就按照这个思路进行计算，最后判断取模余0还是1。首]]></description><category></category></item><item><title><![CDATA[刚刚看了腾讯优化安卓安装包大小的文章，感触颇深]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/51741512</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/51741512</guid><author>ft523039764</author><pubDate>Thu, 23 Jun 2016 10:39:58 +0800</pubDate><description><![CDATA[文章链接[腾讯内部干货分享]分析Dalvik字节码进行减包优化
有时候写完的程序不知道怎么才能优化，但是还有优化的指标，没办法只能硬着头皮乱改一气。结果有的时候，改完发现全是什么添加的注释啊，改的方法名啊编码规范什么的。
其实优化不应该是任务，而应该是问题，哪个环节出现在瓶颈，限制了速度或其他使用等问题才需要优化，而优化的具体方法也应该从这些方面入手。
比如文章里写的，要减小安卓安装包的大小]]></description><category></category></item><item><title><![CDATA[和sails战斗的过程，被打败了]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/51604965</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/51604965</guid><author>ft523039764</author><pubDate>Tue, 07 Jun 2016 16:50:34 +0800</pubDate><description><![CDATA[因为用express的话现在好多中间件都分离出去了，而且其他中间件也还的自己去找，索性想用sails了，但是sails这东西可是弄死我了。
之前因为电脑上装了sails所以想直接运行sails new XXX生成一个工程。没想到直接就报错了……先是说你的npm版本太高，需要<=3.0，要不然下载依赖包会变慢，而且安装完可能需要npm install再重新装。这个直接就忽略了，慢点没事可以等等。这]]></description><category></category></item><item><title><![CDATA[js&nbsp;正则中？=的匹配]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/51593332</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/51593332</guid><author>ft523039764</author><pubDate>Mon, 06 Jun 2016 09:43:01 +0800</pubDate><description><![CDATA[问题：正则中？=的匹配"  TITLE="js 正则中？=的匹配" />

匹配结果：[a
 和 =339。
为什么不能给前面的[
和=去掉呢，明明后面的就去掉了。
一番百度谷歌之后好像有点懂了，？=意思是不保留匹配，也就是匹配之后原字符转是不变的，继续按照正则表达式向后匹配，当后面的字符全不要了的时候(也就是]及之后)，那已经保留的目的串中没有该字符。而前面的[，由于后面的匹配还可以包含他，所以]]></description><category></category></item><item><title><![CDATA[mongoose里的model好神奇，会自动…]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/51593330</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/51593330</guid><author>ft523039764</author><pubDate>Mon, 06 Jun 2016 09:42:58 +0800</pubDate><description><![CDATA[mongoose里在model到数据库的时候，真气人啊，你设置的model名结尾必须是s，如果不带s那么实际数据库中的model他会自己给你带一个，比如：
mongoose.model('aaa',UserSchema)
数据保存之后，你去查db.aaa.find()就没有数据，而查db.aaas.find()就有；再有mongoose.model('aas',UserSchema)保存数据之后呢]]></description><category></category></item><item><title><![CDATA[Cast&nbsp;to&nbsp;ObjectId&nbsp;…]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/51593329</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/51593329</guid><author>ft523039764</author><pubDate>Mon, 06 Jun 2016 09:42:56 +0800</pubDate><description><![CDATA[因为mongo的自生Id“_id”是有规则的，所以cast的时候可能会报这个错，所以在提交查找前最好先检查一下是否符合规则if(id.match(/^[0-9a-fA-F]{24}$/))，只有24位字符。

另外，我页面里embed的src还带来了个小问题，因为是从url最后一位获得的id，src乱填的话也会找最近的路由造成这种情况，所以首先得match一下过滤掉，并且尽量规范使用数据。]]></description><category></category></item><item><title><![CDATA[两个android警告]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/51593326</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/51593326</guid><author>ft523039764</author><pubDate>Mon, 06 Jun 2016 09:42:30 +0800</pubDate><description><![CDATA[解决Handler 内存泄露警报问题：将回调函数的重载作为new Handler的参数：

new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
return false;
}
})；


解决android下SimpleDateFormat 国际化参数报错问题：

Si]]></description><category></category></item><item><title><![CDATA[转“近期nodejs-web开发的一些总结”，大家都差不多]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/51554378</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/51554378</guid><author>ft523039764</author><pubDate>Wed, 01 Jun 2016 10:59:01 +0800</pubDate><description><![CDATA[在基本没什么压力的情况下，慢慢悠悠学node将近两月，虽然项目还没做太熟，但是学东西的思路基本就是这样了，还是会写文章好啊，可惜不会]]></description><category></category></item><item><title><![CDATA[帮同事弄git的趣事]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/51500015</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/51500015</guid><author>ft523039764</author><pubDate>Wed, 25 May 2016 17:14:02 +0800</pubDate><description><![CDATA[下午海淘pc网站突然不能下单了，问完才知道之前的回滚不完全，也不知道为啥没回滚完全。it那边就烦了“别叫我们回滚了，一会滚滚的就远了”。所以只能我们回滚git master然后提交重走正常上线流程。
然而，git回滚的时候有了问题，用的sourcetree，线很乱分支很多，直接回滚master报错。尝试先将分支回滚，然后在回滚master，试了下是可以的，但是因为分支众多而且每个分支很多次提交，]]></description><category></category></item><item><title><![CDATA[Promise.all解决异步条件的收敛]]></title><link>https://blog.youkuaiyun.com/ft523039764/article/details/51496849</link><guid>https://blog.youkuaiyun.com/ft523039764/article/details/51496849</guid><author>ft523039764</author><pubDate>Wed, 25 May 2016 11:06:58 +0800</pubDate><description><![CDATA[大致情况是我有异步的方法，放到一个promise then中，但是这个方法里还需要有不定数量的数据库请求，因为速度关系需要异步处理。在查了一个晚上到底怎么办之后，发现了.all() 和.spead()两个方法，权衡之后尝试使用.all()解决。
因为问题是判断某数值是否为空，为空的话就进行请求，在前台来说ajax就可以解决，后台的话就像一个线程衍生出好多线程，然后将这些线程的结果都收敛起来。按照]]></description><category></category></item></channel></rss>