<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Martin的专栏]]></title><description><![CDATA[开源、分享、提高]]></description><link>https://blog.youkuaiyun.com/feichenwangyalin</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; feichenwangyalin]]></copyright><item><title><![CDATA[Java多线程之使用volatile优雅地实现单例]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/51302883</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/51302883</guid><author>feichenwangyalin</author><pubDate>Tue, 03 May 2016 11:00:26 +0800</pubDate><description><![CDATA[关于volitale关键字volitale即是挥发物，被该关键字修饰变量的值发生改变时，会导致该变量的CPU缓存失效，必须CPU需要重新去内存拉取最新的值。 
该关键字保证了变量的可见性（用一句术语：对于变量的写入操作总是happens-before每一个后续的对该变量的读写操作，也就是保证了更新后的变量，后续的程序总能看到），即该变量发生改变时，在改时间点之后执行的代码可以立即看到变化。 
vol]]></description><category></category></item><item><title><![CDATA[Java多线程：线程池简介及线程池之坑]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/51193870</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/51193870</guid><author>feichenwangyalin</author><pubDate>Tue, 19 Apr 2016 20:48:23 +0800</pubDate><description><![CDATA[线程池简介自JDK1.5，Java吊炸天的并发包就提供线程池java.util.concurrent.ThreadPoolExecutor ，先来看看其各个字段的含义： 
corePoolSize 核心线程数，指保留的线程池大小（不超过maximumPoolSize值时，线程池中最多有corePoolSize 个线程工作）。  
maximumPoolSize 指的是线程池的最大大小（线程池中最大有]]></description><category></category></item><item><title><![CDATA[Java多线程之并发容器：CopyOnWrite到底干啥用的]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/50987943</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/50987943</guid><author>feichenwangyalin</author><pubDate>Sat, 26 Mar 2016 17:44:49 +0800</pubDate><description><![CDATA[CopyOnWrite从字面上理解就是写入的时候做复制操作。而CopyOnWrite是一个Java5之后出现的并发容器，目的是为了提高并发的存取效率。对比CopyOnWrite、ArrayList和Vector源码，可以发现Vector是get和set方法都使用了synchronized关键字做了同步，ArrayList都没有用该关键字，很明显线程不安全；查看CopyOnWrite源码，get方法没]]></description><category></category></item><item><title><![CDATA[Java多线程之线程协作]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/50987492</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/50987492</guid><author>feichenwangyalin</author><pubDate>Sat, 26 Mar 2016 16:27:52 +0800</pubDate><description><![CDATA[无意中在一篇文章中看到一个面试题，题目内容为：现有一个统计任务，需要3个线程完成，在这三个线程完成后由一个线程完成最后的统计报告工作，写出大概代码。
其实多线程问题都可以从两个角度考虑实现，一种是java5之前的同步关键字去实现，另一种是java5之后提供的多线程新特性角度去考虑。
对于传统的同步关键字思路：四个线程都共享一个信号量，当信号量标志子线程任务都完成时，唤醒最后的统计线程；对于java5]]></description><category></category></item><item><title><![CDATA[Java多线程之生产者消费者问题<三>：使用阻塞队列更优雅地解决生产者消费者问题]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/50913265</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/50913265</guid><author>feichenwangyalin</author><pubDate>Thu, 17 Mar 2016 14:18:21 +0800</pubDate><description><![CDATA[前一篇文章讲了如何使用java5中的重入锁和条件变量优雅地解决生产者消费者问题，本文将继续探究java并发包（concurrent），寻求更好的解决方案。
java并发包中提供了阻塞队列（BlockingQueue），查看该类的注释说明，大概翻译下：这是一个额外支持等待队列非空或等待队列可用的队列，意思就是当线程去队列取元素时，如果没有元素线程将等待，直到有可用的有元素可取；当向队列中添加元素时]]></description><category></category></item><item><title><![CDATA[Java多线程之生产者消费者问题<二>：使用重入锁、条件变量优雅地解决生产者消费者问题]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/50865131</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/50865131</guid><author>feichenwangyalin</author><pubDate>Sat, 12 Mar 2016 13:47:31 +0800</pubDate><description><![CDATA[Java5中新增了大量线程同步的功能，比如显式Lock，读写锁ReadWriteLock，条件变量Condition等，虽然这些功能使用之前的synchronized同步关键字都可能实现，但自己使用同步关键字不仅管理混乱，而且容易出错。 如下是使用显式Lock和条件变量Condition更好的解决生产者消费者问题，关于lock和condition读者可以自己查阅相关说明，也很好理解。
Consu]]></description><category></category></item><item><title><![CDATA[Java多线程之生产者消费者问题<一>：使用synchronized 关键字解决生产者消费者问题]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/40156027</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/40156027</guid><author>feichenwangyalin</author><pubDate>Thu, 16 Oct 2014 22:22:55 +0800</pubDate><description><![CDATA[今天看了一片博文，讲Java多线程之线程的协作，其中作者用程序实例说明了生产者和消费者问题，但我及其他读者发现程序多跑几次还是会出现死锁，百度搜了下大都数的例子也都存在bug，经过仔细研究发现其中的问题，并解决了，感觉有意义贴出来分享下。]]></description><category></category></item><item><title><![CDATA[JAVA正则表达式小总结]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/40051927</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/40051927</guid><author>feichenwangyalin</author><pubDate>Mon, 13 Oct 2014 21:37:25 +0800</pubDate><description><![CDATA[最近项目中正在做后台校验，而后台校验也基本都是使用正则表达式校验，本文做一些粗略的总结。
1、字符串长度：.{1,10}，注意有一个点在{}前，表示匹配所有。‘{}’之前一定是一个捕获组，因此如果有其他筛选要求并且限制长度则为在总捕获组的最后加上{}来限制长度。
2、如何表示不为abcd的任意一个字符：([^abcd])*，使用^表示在[]不为[]内的任意字符；注意，常有人写成([^a|b|c]]></description><category></category></item><item><title><![CDATA[oracle for update实现线程同步取数据]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/39973213</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/39973213</guid><author>feichenwangyalin</author><pubDate>Fri, 10 Oct 2014 23:38:49 +0800</pubDate><description><![CDATA[背景：在电信软件领域，常常有取话单数据的概念，而话单数据存储在DB中，]]></description><category></category></item><item><title><![CDATA[Java实现Socket长连接和短连接]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/39450159</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/39450159</guid><author>feichenwangyalin</author><pubDate>Sun, 21 Sep 2014 11:38:58 +0800</pubDate><description><![CDATA[1概念
Socket：socket实际上是对TCP/IP进行的封装，我们可以使用socket套接字通过socket来传输。首先我们需要明白的一个概念就是通道，简单地说通道就是两个对端可以随时传输数据的信道。我么常说的所谓建立socket连接，也就是建立了客户端与服务器端的通道。
长短连接：显而易见，长连接也就是这个socket连接一直保持连接，也就是通道一直保持通畅，两个对端可以随时发送和接收]]></description><category></category></item><item><title><![CDATA[如何使用axis构建SOAP应用程序]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/39256157</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/39256157</guid><author>feichenwangyalin</author><pubDate>Sat, 13 Sep 2014 22:58:42 +0800</pubDate><description><![CDATA[本文档的所有源码：http://download.youkuaiyun.com/detail/feichenwangyalin/7911159
你可以根据将其中的SoapServer和SoapClient导入Eclipse，将axis放入tomcat的webapps中。

1.基本概念
1.1 SOAP的概念
        SOAP即简单对象访问协议，是交换数据的一种协议规范，是一种轻量的、简单的]]></description><category></category></item><item><title><![CDATA[在mysql workbench中建立存储过程]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/8115527</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/8115527</guid><author>feichenwangyalin</author><pubDate>Fri, 26 Oct 2012 15:14:56 +0800</pubDate><description><![CDATA[新手玩mysql stored procedure（存储过程），期间遇到了不少麻烦，为此贴出来，希望能为也正在玩存储过程的人提供一个demo。欢迎拍砖。
/*特别注明：下边的SQL语句都是用test数据库*/
use test;
create table user
(
    id int not null auto_increment primary key,
    userName var]]></description><category></category></item><item><title><![CDATA[spring MVC配置文件解读]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/8112730</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/8112730</guid><author>feichenwangyalin</author><pubDate>Thu, 25 Oct 2012 20:42:18 +0800</pubDate><description><![CDATA[本人spring新手，初玩是spring的感觉就是坑爹的配置文件，为此写此文为正在苦苦挣扎于spring配置文件的同学简单的解释下配置文件。
欢迎拍砖。
先来看web.xml配置文件：

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XML]]></description><category></category></item><item><title><![CDATA[lucene的加锁机制和LockObtainFailedException的异常]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/8029838</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/8029838</guid><author>feichenwangyalin</author><pubDate>Fri, 28 Sep 2012 20:00:34 +0800</pubDate><description><![CDATA[lucene的加锁机制
lucene分为两种锁，writer.lock锁和commit.lock锁（具体可以自己查，不多讲），
这里主要说说writer锁，writer锁主要是为了控制多个writer对同一索引目录的写入
或者reader的删除操作。
如果您做程序过程中遇到了标题的异常情况，那么就要注意是不是同时有多个线程
在操作一个索引目录了，原因可能为您的程序中多次加载或者初始化了该]]></description><category></category></item><item><title><![CDATA[lucene2.9.0索引写入不报错却无法写入的奇怪问题]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/8026409</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/8026409</guid><author>feichenwangyalin</author><pubDate>Thu, 27 Sep 2012 20:58:32 +0800</pubDate><description><![CDATA[多次调试后，发现是writer初始化的问题
Directory fsDir = FSDirectory.open(new File(indexPath));
// Directory ramDir = new RAMDirectory(fsDir);
writer = new IndexWriter(fsDir, analyzer, true,
IndexWriter.MaxFieldLe]]></description><category></category></item><item><title><![CDATA[关于java对资源加锁无效的问题]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/7992751</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/7992751</guid><author>feichenwangyalin</author><pubDate>Tue, 18 Sep 2012 17:37:02 +0800</pubDate><description><![CDATA[看编程思想一书，也写了段代码，发现对static的资源加锁无效，左思右想终于找出了原因，现贴出与大家分享。
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
class Source
{
	int i=0;
}
class Generator
{
	public static I]]></description><category></category></item><item><title><![CDATA[linux下连接windows mysql的错误：Access denied for user 'root'@'localhost' (using password: YES)]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/7963335</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/7963335</guid><author>feichenwangyalin</author><pubDate>Mon, 10 Sep 2012 14:35:52 +0800</pubDate><description><![CDATA[在linux下连接windows server的mysql，出现：Access denied for user 'root'@'localhost' (using password: YES)的错误，
看了一下，其实不管是windows连接linux server还是linux连接windows server这都是用户权限的问题。
解决方法：在mysql命令中输入：
mysql>use my]]></description><category></category></item><item><title><![CDATA[java replaceAll用法]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/7862075</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/7862075</guid><author>feichenwangyalin</author><pubDate>Mon, 13 Aug 2012 22:07:04 +0800</pubDate><description><![CDATA[需要用将以下这一段字符串的“，”全部替换为“--”，
原字符串如下：武进租房,阳湖名城小区租房,赶集租房,常州租房
最终用了一下这段正则表达式解决了：keyWords=keyWords.replaceAll("[.+,]", "--")；
解释：前段“[.+,]” 的意思是匹配像“武进租房,”这样的字串，“[]”的作用是多次匹配，
后端"--"就没什么号解释的了。]]></description><category></category></item><item><title><![CDATA[关于Spring集成JSF是的问题]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/7566317</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/7566317</guid><author>feichenwangyalin</author><pubDate>Mon, 14 May 2012 20:34:31 +0800</pubDate><description><![CDATA[今天我使用Spring 和 JSF集成是遇到了一个问题：FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance())


得到的ApplicationContext 总是为 null ，几经周折，在一家外文网上找到了答案特贴出来与大家分享（目前我很菜的）：
需在JSF的faces-config.x]]></description><category></category></item><item><title><![CDATA[Jrebel 体验]]></title><link>https://blog.youkuaiyun.com/feichenwangyalin/article/details/7555165</link><guid>https://blog.youkuaiyun.com/feichenwangyalin/article/details/7555165</guid><author>feichenwangyalin</author><pubDate>Thu, 10 May 2012 21:04:25 +0800</pubDate><description><![CDATA[初次用 jrebel ，还纠结了好久没用起来，主要因为jrebel 收费，下面贴出jrebel 部署（有参考别人的成份）：
jrebel是一个插件，只要将它部署到相应服务器上即可：window --  preferences -- server  -- tomcat  --  tomcat 7.X -- JDK


在 VM arguments 下输入一下参数：
-noverify -j]]></description><category></category></item></channel></rss>