<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lf124的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lf124</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lf124]]></copyright><item><title><![CDATA[O(n)算法快速构建树形结构(权限树、组织树、省市区联动树)]]></title><link>https://blog.youkuaiyun.com/lf124/article/details/106151979</link><guid>https://blog.youkuaiyun.com/lf124/article/details/106151979</guid><author>lf124</author><pubDate>Sat, 16 May 2020 01:41:08 +0800</pubDate><description><![CDATA[假设数据库查询返回N条记录有父子关系的数据（通过parent_id来关联），例如：SELECTt.id,t.parent_id as pid,t.name /**, t.level **/FROM tree_table t。应用层获取到数据后如何根据父子关系构建树形结构呢？通常的做法是多次遍历，如第一次遍历筛选出第一级节点（假设是n1条），第二次遍历这n1条一级节点，以每个节点id为父节点再次遍历N条总数据得出每个一级节点的所有二级节点（假设是n2）条，然后再进行类似遍历查找下级节点。假设总级数（或者树..]]></description><category></category></item><item><title><![CDATA[Java线程池实现多消费者批量处理队列消息]]></title><link>https://blog.youkuaiyun.com/lf124/article/details/84101410</link><guid>https://blog.youkuaiyun.com/lf124/article/details/84101410</guid><author>lf124</author><pubDate>Thu, 15 Nov 2018 15:09:01 +0800</pubDate><description><![CDATA[通常生产者-消费者的经典实现方式是，启动一个消费者线程从阻塞队列里获取消息进行消费，(多个)生产者往队列里插入待消费的数据然后立即返回。如果生产者生产的速率远大于消费者消费的速率，那么队列的待处理数据就会累积得越来越多。

顾名思义，“多消费者”就是开启多个消费者线程，这里借用Java线程池来管理线程的生命周期：

首先，定义一个接口表示异步消费：


import java.util.concu...]]></description><category></category></item><item><title><![CDATA[Java采用Redis相关命令实现分布式锁]]></title><link>https://blog.youkuaiyun.com/lf124/article/details/84069058</link><guid>https://blog.youkuaiyun.com/lf124/article/details/84069058</guid><author>lf124</author><pubDate>Wed, 14 Nov 2018 16:43:20 +0800</pubDate><description><![CDATA[Java本地锁(synchronized或J.U.C.Lock)只能解决当前jvm下的并发问题，如果是集群环境下或者一个机器跑多个jvm实例且相互间有交互或重叠时，此时需要一个“中央锁”来进行控制。

以下实现来自http://doc.redisfans.com/string/set.html相关描述：


命令 SET resource-name anystring NX EX max-lock...]]></description><category></category></item><item><title><![CDATA[Java使用WeakReference、SoftReference、ConcurrentHashMap构建本地缓存，支持高并发和集群环境]]></title><link>https://blog.youkuaiyun.com/lf124/article/details/80697619</link><guid>https://blog.youkuaiyun.com/lf124/article/details/80697619</guid><author>lf124</author><pubDate>Fri, 15 Jun 2018 13:23:07 +0800</pubDate><description><![CDATA[前言(个人的理解)：缓存 一般用来缓解耗时、耗资源的问题，而本地缓存(jvm缓存)，相对于需要通过网络连接来访问的缓存(如Redis)，本地缓存主要用来缓解耗时问题，以及本地缓存实现起来比较方便 而远程缓存支持存储的对象不够完善（如需要通过序列化/反序列化来解决，本质来说 还是时间问题）。

关于Reference所引用对象的生存时间:

WeakReference&amp;lt;T&amp;gt;：如果当前不存...]]></description><category></category></item><item><title><![CDATA[Java poi Excel xls列号数字转字母]]></title><link>https://blog.youkuaiyun.com/lf124/article/details/53432817</link><guid>https://blog.youkuaiyun.com/lf124/article/details/53432817</guid><author>lf124</author><pubDate>Fri, 02 Dec 2016 16:24:42 +0800</pubDate><description><![CDATA[最近遇到导出的xls中 列是动态生成的，且单元格中需要用到公式，而xls公式不是用数字列号而是用列字母来表示的，这时需要把数字的列号转成该列对应的字母。因为是按月导出 一个月最多31天，所以刚开始采用的办法是定义一个包含1到31列字母的数组。后来想想这样总不是个办法 万一列数更多 且是不确定的呢。于是研究了下 怎么把xls数字列号转成对应的字母。]]></description><category></category></item><item><title><![CDATA[解决easyui中重复调用$.messager.progress('close')报错问题]]></title><link>https://blog.youkuaiyun.com/lf124/article/details/49069577</link><guid>https://blog.youkuaiyun.com/lf124/article/details/49069577</guid><author>lf124</author><pubDate>Mon, 12 Oct 2015 09:37:22 +0800</pubDate><description><![CDATA[问题描述：把$.messager.progress('close')放在全局ajax函数的complete方法里就可以免去每次调用$.messager.progress(options)后都需要调用一次$.messager.progress('close')。
比如 一般我们都是这样的：
				$.messager.progress(progressMsg);	//遮罩并提升信息				$.]]></description><category></category></item><item><title><![CDATA[替换textarea的文本编辑框的实现，可现实文字输入与显示图片、表情]]></title><link>https://blog.youkuaiyun.com/lf124/article/details/47122127</link><guid>https://blog.youkuaiyun.com/lf124/article/details/47122127</guid><author>lf124</author><pubDate>Wed, 29 Jul 2015 09:24:25 +0800</pubDate><description><![CDATA[整理自网络
------------------------------------------------------------------------------------------


方法1：
通过textare添加子元素img，该方式只有IE支持
图片：


var editor = document.getElementById('editor');
v]]></description><category></category></item><item><title><![CDATA[（java）序列化与反序列化]]></title><link>https://blog.youkuaiyun.com/lf124/article/details/44085227</link><guid>https://blog.youkuaiyun.com/lf124/article/details/44085227</guid><author>lf124</author><pubDate>Thu, 05 Mar 2015 17:15:30 +0800</pubDate><description><![CDATA[原文地址：http://www.cnblogs.com/xdp-gacl/p/3777987.html


一、序列化和反序列化的概念


　　把对象转换为字节序列的过程称为对象的序列化。
　　把字节序列恢复为对象的过程称为对象的反序列化。
　　对象的序列化主要有两种用途：
　　1） 把对象的字节序列永久地保存到硬盘上，通常存放在一个文件中；
　　2） 在网络上传送对象的字节序]]></description><category></category></item><item><title><![CDATA[java的一些知识点]]></title><link>https://blog.youkuaiyun.com/lf124/article/details/44084931</link><guid>https://blog.youkuaiyun.com/lf124/article/details/44084931</guid><author>lf124</author><pubDate>Thu, 05 Mar 2015 16:56:20 +0800</pubDate><description><![CDATA[原文出处：http://www.cnblogs.com/plmnko/archive/2010/10/16/1852871.html


构造函数为什么不能被abstract/static/final/native/stricftp/synchronized修饰
 及 一些关键字的用法




from：http://www.blogjava.net/realsmy/archiv]]></description><category></category></item><item><title><![CDATA[（java）异常处理原理和原则]]></title><link>https://blog.youkuaiyun.com/lf124/article/details/44083679</link><guid>https://blog.youkuaiyun.com/lf124/article/details/44083679</guid><author>lf124</author><pubDate>Thu, 05 Mar 2015 15:40:41 +0800</pubDate><description><![CDATA[原文链接：http://www.cnblogs.com/weidagang2046/p/exception-handling-principles.html




Todd.log - a place to keep my thoughts on programming



异常处理原理和原则


异常机制是现代主流语言的标配，但是异常处理问题虽然已经被讨论很多，也有很]]></description><category></category></item></channel></rss>