<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[windcpp的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/windcpp</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; windcpp]]></copyright><item><title><![CDATA[asdfasfd]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/84548280</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/84548280</guid><author>windcpp</author><pubDate>Sat, 12 Apr 2014 17:11:58 +0800</pubDate><description><![CDATA[http://www.laomaotao.net/?H9197]]></description><category></category></item><item><title><![CDATA[空余时间做了个小站，欢迎拍砖]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/84221740</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/84221740</guid><author>windcpp</author><pubDate>Tue, 22 May 2012 15:21:04 +0800</pubDate><description><![CDATA[http://wadainying.com/moviez

界面使用了twitter的bootstrap。]]></description><category></category></item><item><title><![CDATA[Java多线程设计模式之Active Object Pattern]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836787</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836787</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 17:49:56 +0800</pubDate><description><![CDATA[测试一下啦]]></description><category></category></item><item><title><![CDATA[测试spring中的org.springframework.beans.factory.InitializingBean]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836772</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836772</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 15:54:52 +0800</pubDate><description><![CDATA[MyInitBean.java

[code=&quot;java&quot;]
import org.springframework.beans.factory.InitializingBean;

public class MyInitBean implements InitializingBean {

	@Override
	public void afterPropertiesSet() t...]]></description><category></category></item><item><title><![CDATA[java.util.concurrent.Executors源码学习(三)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836740</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836740</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:43:45 +0800</pubDate><description><![CDATA[Executors中的重要方法(续)：


8.	ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
创建一个计划任务线程池，池中的worker线程数中有一个。处理的任务放在一个延迟任务队列(DelayedWorkQueue)中，产生新线程的工厂为threadFacto...]]></description><category></category></item><item><title><![CDATA[java.util.concurrent.Executors源码学习(二)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836738</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836738</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:41:58 +0800</pubDate><description><![CDATA[Executors中的重要方法(续)：

5.	ExecutorService newCachedThreadPool()
创建一个线程池，根据需要来产生新的线程，同时可以重用现成的可用线程。处理的任务存放在一个队列同步队列(SynchronousQueue)中。如果线程池中的线程闲置60秒，则此线程将被终止，移出线程池。

6.	ExecutorService newCachedThr...]]></description><category></category></item><item><title><![CDATA[java.util.concurrent.Executors源码学习(一)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836737</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836737</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:39:04 +0800</pubDate><description><![CDATA[java.util.concurrent.Executors：

工厂类，提供了一些工具方法。支持以下各种方法：

1.	创建并返回设置有常用配置字符串的 ExecutorService 的方法。 
2.	创建并返回设置有常用配置字符串的 ScheduledExecutorService 的方法。 
3.	创建并返回“包装的”ExecutorService 方法，它通过使特定于实现的方...]]></description><category></category></item><item><title><![CDATA[java.util.concurrent.ExecutorService(二)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836735</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836735</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:37:07 +0800</pubDate><description><![CDATA[ExecutorService中重要的方法(续)：


6.	 Future submit(Callable task)
提交一个有返回值的任务，并返回一个Future。使用Future的get方法来取得任务执行的结果。

7.	 Future submit(Runnable task, T result)
提交一个Runnable任务，并返回一个Future。使用Future的ge...]]></description><category></category></item><item><title><![CDATA[java.util.concurrent.ExecutorService(一)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836734</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836734</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:36:04 +0800</pubDate><description><![CDATA[java.util.concurrent.ExecutorService：

ExecutorService扩展了Executor并添加了一些生命周期管理的方法，同时提供一个Future用来监控异步任务的执行过程。一个Executor的生命周期有三种状态，运行 ，关闭 ，终止 。Executor创建时处于运行状态。当调用ExecutorService.shutdown()后，处于关闭状态，is...]]></description><category></category></item><item><title><![CDATA[java.util.concurrent.LinkedBlockingDeque源码学习(三)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836733</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836733</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:33:42 +0800</pubDate><description><![CDATA[LinkedBlockingDeque中的重要方法(续)：

16.	E takeFirst()==E take()
17.	E takeLast()
在锁定状态下删除处在队列头/尾的节点。调用unlinkFirst/unlinkLast方法。如果队列为空则当前线程进入等待区
18.	void addFirst(E e)== void push(E e)
19.	void addLas...]]></description><category></category></item><item><title><![CDATA[java.util.concurrent.LinkedBlockingDeque源码学习(二)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836732</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836732</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:32:22 +0800</pubDate><description><![CDATA[LinkedBlockingDeque中的重要方法：

1.	boolean linkFirst(E e)
2.	boolean linkLast(E e)
插入一个节点到队列头/尾。如果队列已满，则返回false，否则生成一个节点并插入队列，然后唤醒一个等待notEmpty条件的线程，返回true
3.	E unlinkFirst()
4.	E unlinkLast()
删除处在队...]]></description><category></category></item><item><title><![CDATA[java.util.concurrent.LinkedBlockingDeque源码学习(一)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836729</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836729</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:30:39 +0800</pubDate><description><![CDATA[java.util.concurrent.LinkedBlockingDeque：
拥有单个锁的双向阻塞队列。它使用了conditions来控制阻塞。操作时不满足条件时，操作终止或等待条件满足。

LinkedBlockingDeque中的重要字段：

1.	private transient Node first
队列中第一个节点
2.	private transient Node...]]></description><category></category></item><item><title><![CDATA[java.util.concurrent.ConcurrentHashMap源码学习(四)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836728</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836728</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:29:33 +0800</pubDate><description><![CDATA[ConcurrentHashMap中内部类Segment的重要方法


重要方法：

a)	static final  Segment[] newArray(int i)
创建指定大小的Segment数组。
b)	HashEntry getFirst(int hash)
得到当前段指定槽位的第一个Entry。
c)	V readValueUnderLock(HashEntry e...]]></description><category></category></item><item><title><![CDATA[java.util.concurrent.ConcurrentHashMap源码学习(三)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836726</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836726</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:27:08 +0800</pubDate><description><![CDATA[ConcurrentHashMap中的内部类：

1.	static final class HashEntry
每个段中链表元素的节点。其中的next字段是final的，不能修改，所以不能在这个节点的下面添加新节点，只能在它的前面添加。

2.	static final class Segment extends ReentrantLock implements Serializabl...]]></description><category></category></item><item><title><![CDATA[java.util.concurrent.ConcurrentHashMap源码学习(二)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836725</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836725</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:24:35 +0800</pubDate><description><![CDATA[ConcurrentHashMap中重要的方法：

1.	V get(Object key)
先从segments数组中取出对应的段Segment，然后再取到对应key的value值。

2.	V put(K key, V value)
先从segments数组中取出对应的段Segment，然后对key赋值。当value为null时抛出NullPointerException异常
...]]></description><category></category></item><item><title><![CDATA[java.util.concurrent.ConcurrentHashMap源码学习(一)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836724</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836724</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:22:08 +0800</pubDate><description><![CDATA[java.util.concurrent.ConcurrentHashMap:

ConcurrentHashMap是支持高并发、高吞吐量的线程安全的HashMap实现。它允许多个修改操作并发进行，关键在于使用了多个锁来控制对hash表的不同部分(Segment)进行的修改。每个段是一个小的hash table，有自己的锁，只要修改操作发生在不同的段上，就可以并发进行。在执行跨段的操作时首先尝...]]></description><category></category></item><item><title><![CDATA[java.util.LinkedHashMap源码学习(二)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836723</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836723</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:20:33 +0800</pubDate><description><![CDATA[LinkedHashMap中重要的方法：

1.	void clear()
调用HashMap中的clear方法清空数据，同时设置before和after都指向header。

2.	boolean containsValue(Object value)
重写了HashMap中的containsValue方法，现在查询和table的容量无关了，只与实际存储的数据量有关。

3.	V...]]></description><category></category></item><item><title><![CDATA[java.util.LinkedHashMap源码学习(一)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836722</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836722</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:19:26 +0800</pubDate><description><![CDATA[java.util.LinkedHashMap:

LinkedHashMap继承自HashMap，但它具有可预知的迭代顺序。LinkedHashMap维护着一个运行于所有条目的双重链表，此链表定义了迭代顺序，这个顺序可以是插入顺序或者是访问的顺序。基本操作和父类HashMap相似，它通过重写父类相关的方法来实现自己的双重链表特性。

LinkedHashMap中重要的字段：

1.	...]]></description><category></category></item><item><title><![CDATA[java.util.HashMap源码学习(二)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836721</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836721</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:17:41 +0800</pubDate><description><![CDATA[HashMap中重要的方法：

1.	public V put(K key, V value)
HashMap中允许key为null，当key为null时，调用private V putForNullKey(V value)把对应的Entry放到table[0]位置。如果key不为null，利用key计算hash码，从而得到对应的table下标，如果Entry e = table[i]已经存...]]></description><category></category></item><item><title><![CDATA[java.util.HashMap源码学习(一)]]></title><link>https://blog.youkuaiyun.com/windcpp/article/details/83836712</link><guid>https://blog.youkuaiyun.com/windcpp/article/details/83836712</guid><author>windcpp</author><pubDate>Tue, 01 Feb 2011 11:09:57 +0800</pubDate><description><![CDATA[java.util.HashMap:

table数组中存放的是单向链表Entry，Entry中存放的实际数据，一个链表中可能有多个数据，由这些数据的Key可以算出hashCode得到在table中的相同的“桶位”。hashMap能实现快速定位，就是利用了这一特点。不需要对所有数据进行迭代，利用key的hashCode快速找到“桶位”，然后只在桶位中单向链表中的少量数据中进行迭代，所以速度很快...]]></description><category></category></item></channel></rss>