﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-敬的世界</title><link>http://www.blogjava.net/nikita/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2026 09:58:16 GMT</lastBuildDate><pubDate>Thu, 30 Apr 2026 09:58:16 GMT</pubDate><ttl>60</ttl><item><title>解决ServletUrlRenderer WARN警告</title><link>http://www.blogjava.net/nikita/archive/2012/02/09/369656.html</link><dc:creator>picture talk</dc:creator><author>picture talk</author><pubDate>Thu, 09 Feb 2012 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/nikita/archive/2012/02/09/369656.html</guid><wfw:comment>http://www.blogjava.net/nikita/comments/369656.html</wfw:comment><comments>http://www.blogjava.net/nikita/archive/2012/02/09/369656.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/nikita/comments/commentRss/369656.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nikita/services/trackbacks/369656.html</trackback:ping><description><![CDATA[
<img src ="http://www.blogjava.net/nikita/aggbug/369656.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nikita/" target="_blank">picture talk</a> 2012-02-09 12:42 <a href="http://www.blogjava.net/nikita/archive/2012/02/09/369656.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts 2与AJAX（第一部分） </title><link>http://www.blogjava.net/nikita/archive/2011/08/07/355970.html</link><dc:creator>picture talk</dc:creator><author>picture talk</author><pubDate>Sun, 07 Aug 2011 14:36:00 GMT</pubDate><guid>http://www.blogjava.net/nikita/archive/2011/08/07/355970.html</guid><wfw:comment>http://www.blogjava.net/nikita/comments/355970.html</wfw:comment><comments>http://www.blogjava.net/nikita/archive/2011/08/07/355970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nikita/comments/commentRss/355970.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nikita/services/trackbacks/355970.html</trackback:ping><description><![CDATA[link to : <a href="/max/archive/2007/06/12/123682.html">http://www.blogjava.net/max/archive/2007/06/12/123682.html</a><img src ="http://www.blogjava.net/nikita/aggbug/355970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nikita/" target="_blank">picture talk</a> 2011-08-07 22:36 <a href="http://www.blogjava.net/nikita/archive/2011/08/07/355970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MAP IN JS</title><link>http://www.blogjava.net/nikita/archive/2011/08/05/355890.html</link><dc:creator>picture talk</dc:creator><author>picture talk</author><pubDate>Fri, 05 Aug 2011 09:16:00 GMT</pubDate><guid>http://www.blogjava.net/nikita/archive/2011/08/05/355890.html</guid><wfw:comment>http://www.blogjava.net/nikita/comments/355890.html</wfw:comment><comments>http://www.blogjava.net/nikita/archive/2011/08/05/355890.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nikita/comments/commentRss/355890.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nikita/services/trackbacks/355890.html</trackback:ping><description><![CDATA[
		<div class="dp-highlighter">
				<ol class="dp-c">
						<li>source page :   http://www.iteye.com/topic/196610<br /><span><span></span></span></li>
						<li>
								<span>
										<span>Array.prototype.remove = </span>
										<span class="keyword">function</span>
										<span>(s) {   </span>
								</span>
						</li>
						<li>
								<span>    </span>
								<span class="keyword">for</span>
								<span> (</span>
								<span class="keyword">var</span>
								<span> i = 0; i &lt; </span>
								<span class="keyword">this</span>
								<span>.length; i++) {   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">if</span>
								<span> (s == </span>
								<span class="keyword">this</span>
								<span>[i])   </span>
						</li>
						<li>
								<span>            </span>
								<span class="keyword">this</span>
								<span>.splice(i, 1); 
  </span>
						</li>
						<li>
								<span>    }   </span>
						</li>
						<li>
								<span>}   </span>
						</li>
						<li>
								<span>  </span>
						</li>
						<li>
								<span>
								</span>
								<span class="comment">/** </span> </li>
						<li>
								<span>
										<span class="comment"> * Simple Map </span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> *  </span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> *  </span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> * var m = new Map(); </span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> * m.put('key','value'); </span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> * ... </span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> * var s = ""; </span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> * m.each(function(key,value,index){ 
</span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> *      s += index+":"+ key+"="+value+"\n"; 
</span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> * }); </span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> * alert(s); </span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> *  </span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> * @author dewitt </span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> * @date 2008-05-24 </span> </span>
						</li>
						<li>
								<span>
										<span class="comment"> */</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>
								</span>
								<span class="keyword">function</span>
								<span> Map() { 
  </span>
						</li>
						<li>
								<span>    </span>
								<span class="comment">/** 存放键的数组(遍历用到) */</span>
								<span>  </span>
						</li>
						<li>
								<span>    </span>
								<span class="keyword">this</span>
								<span>.keys = </span>
								<span class="keyword">new</span>
								<span> Array();   </span>
						</li>
						<li>
								<span>    </span>
								<span class="comment">/** 存放数据 */</span>
								<span>  </span>
						</li>
						<li>
								<span>    </span>
								<span class="keyword">this</span>
								<span>.data = </span>
								<span class="keyword">new</span>
								<span> Object();   </span>
						</li>
						<li>
								<span>       </span>
						</li>
						<li>
								<span>    </span>
								<span class="comment">/** </span> </li>
						<li>
								<span>
										<span class="comment">     * 放入一个键值对 </span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     * @param {String} key </span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     * @param {Object} value </span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     */</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>    </span>
								<span class="keyword">this</span>
								<span>.put = </span>
								<span class="keyword">function</span>
								<span>(key, value) {   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">if</span>
								<span>(</span>
								<span class="keyword">this</span>
								<span>.data[key] == </span>
								<span class="keyword">null</span>
								<span>){   </span>
						</li>
						<li>
								<span>            </span>
								<span class="keyword">this</span>
								<span>.keys.push(key);   </span>
						</li>
						<li>
								<span>        }   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">this</span>
								<span>.data[key] = value;   </span>
						</li>
						<li>
								<span>    };   </span>
						</li>
						<li>
								<span>       </span>
						</li>
						<li>
								<span>    </span>
								<span class="comment">/** </span> </li>
						<li>
								<span>
										<span class="comment">     * 获取某键对应的值 </span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     * @param {String} key </span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     * @return {Object} value </span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     */</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>    </span>
								<span class="keyword">this</span>
								<span>.get = </span>
								<span class="keyword">function</span>
								<span>(key) {   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">return</span>
								<span> </span>
								<span class="keyword">this</span>
								<span>.data[key];   </span>
						</li>
						<li>
								<span>    };   </span>
						</li>
						<li>
								<span>       </span>
						</li>
						<li>
								<span>    </span>
								<span class="comment">/** </span> </li>
						<li>
								<span>
										<span class="comment">     * 删除一个键值对 </span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     * @param {String} key </span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     */</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>    </span>
								<span class="keyword">this</span>
								<span>.remove = </span>
								<span class="keyword">function</span>
								<span>(key) {   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">this</span>
								<span>.keys.remove(key); 
  </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">this</span>
								<span>.data[key] = </span>
								<span class="keyword">null</span>
								<span>;   </span>
						</li>
						<li>
								<span>    };   </span>
						</li>
						<li>
								<span>       </span>
						</li>
						<li>
								<span>    </span>
								<span class="comment">/** </span> </li>
						<li>
								<span>
										<span class="comment">     * 遍历Map,执行处理函数 </span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     *  </span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     * @param {Function} 回调函数 function(key,value,index){..} 
</span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     */</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>    </span>
								<span class="keyword">this</span>
								<span>.each = </span>
								<span class="keyword">function</span>
								<span>(fn){   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">if</span>
								<span>(</span>
								<span class="keyword">typeof</span>
								<span> fn != </span>
								<span class="string">'function'</span>
								<span>){   </span>
						</li>
						<li>
								<span>            </span>
								<span class="keyword">return</span>
								<span>; 
  </span>
						</li>
						<li>
								<span>        }   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">var</span>
								<span> len = </span>
								<span class="keyword">this</span>
								<span>.keys.length;   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">for</span>
								<span>(</span>
								<span class="keyword">var</span>
								<span> i=0;i&lt;len;i++){   </span>
						</li>
						<li>
								<span>            </span>
								<span class="keyword">var</span>
								<span> k = </span>
								<span class="keyword">this</span>
								<span>.keys[i];   </span>
						</li>
						<li>
								<span>            fn(k,</span>
								<span class="keyword">this</span>
								<span>.data[k],i);   </span>
						</li>
						<li>
								<span>        }   </span>
						</li>
						<li>
								<span>    };   </span>
						</li>
						<li>
								<span>       </span>
						</li>
						<li>
								<span>    </span>
								<span class="comment">/** </span> </li>
						<li>
								<span>
										<span class="comment">     * 获取键值数组(类似Java的entrySet()) 
</span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     * @return 键值对象{key,value}的数组 
</span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     */</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>    </span>
								<span class="keyword">this</span>
								<span>.entrys = </span>
								<span class="keyword">function</span>
								<span>() {   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">var</span>
								<span> len = </span>
								<span class="keyword">this</span>
								<span>.keys.length;   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">var</span>
								<span> entrys = </span>
								<span class="keyword">new</span>
								<span> Array(len);   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">for</span>
								<span> (</span>
								<span class="keyword">var</span>
								<span> i = 0; i &lt; len; i++) {   </span>
						</li>
						<li>
								<span>            entrys[i] = {   </span>
						</li>
						<li>
								<span>                key : </span>
								<span class="keyword">this</span>
								<span>.keys[i],   </span>
						</li>
						<li>
								<span>                value : </span>
								<span class="keyword">this</span>
								<span>.data[i]   </span>
						</li>
						<li>
								<span>            };   </span>
						</li>
						<li>
								<span>        }   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">return</span>
								<span> entrys; 
  </span>
						</li>
						<li>
								<span>    };   </span>
						</li>
						<li>
								<span>       </span>
						</li>
						<li>
								<span>    </span>
								<span class="comment">/** </span> </li>
						<li>
								<span>
										<span class="comment">     * 判断Map是否为空 </span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     */</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>    </span>
								<span class="keyword">this</span>
								<span>.isEmpty = </span>
								<span class="keyword">function</span>
								<span>() {   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">return</span>
								<span> </span>
								<span class="keyword">this</span>
								<span>.keys.length == 0;   </span>
						</li>
						<li>
								<span>    };   </span>
						</li>
						<li>
								<span>       </span>
						</li>
						<li>
								<span>    </span>
								<span class="comment">/** </span> </li>
						<li>
								<span>
										<span class="comment">     * 获取键值对数量 </span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     */</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>    </span>
								<span class="keyword">this</span>
								<span>.size = </span>
								<span class="keyword">function</span>
								<span>(){   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">return</span>
								<span> </span>
								<span class="keyword">this</span>
								<span>.keys.length;   </span>
						</li>
						<li>
								<span>    };   </span>
						</li>
						<li>
								<span>       </span>
						</li>
						<li>
								<span>    </span>
								<span class="comment">/** </span> </li>
						<li>
								<span>
										<span class="comment">     * 重写toString  </span> </span>
						</li>
						<li>
								<span>
										<span class="comment">     */</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>    </span>
								<span class="keyword">this</span>
								<span>.toString = </span>
								<span class="keyword">function</span>
								<span>(){   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">var</span>
								<span> s = </span>
								<span class="string">"{"</span>
								<span>;   </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">for</span>
								<span>(</span>
								<span class="keyword">var</span>
								<span> i=0;i&lt;</span>
								<span class="keyword">this</span>
								<span>.keys.length;i++,s+=</span>
								<span class="string">','</span>
								<span>){   </span>
						</li>
						<li>
								<span>            </span>
								<span class="keyword">var</span>
								<span> k = </span>
								<span class="keyword">this</span>
								<span>.keys[i];   </span>
						</li>
						<li>
								<span>            s += k+</span>
								<span class="string">"="</span>
								<span>+</span>
								<span class="keyword">this</span>
								<span>.data[k];   </span>
						</li>
						<li>
								<span>        }   </span>
						</li>
						<li>
								<span>        s+=</span>
								<span class="string">"}"</span>
								<span>; 
  </span>
						</li>
						<li>
								<span>        </span>
								<span class="keyword">return</span>
								<span> s; 
  </span>
						</li>
						<li>
								<span>    };   </span>
						</li>
						<li>
								<span>}   </span>
						</li>
						<li>
								<span>  </span>
						</li>
						<li>
								<span>  </span>
						</li>
						<li>
								<span>
								</span>
								<span class="keyword">function</span>
								<span> testMap(){ 
  </span>
						</li>
						<li>
								<span>    </span>
								<span class="keyword">var</span>
								<span> m = </span>
								<span class="keyword">new</span>
								<span> Map();   </span>
						</li>
						<li>
								<span>    m.put(</span>
								<span class="string">'key1'</span>
								<span>,</span>
								<span class="string">'Comtop'</span>
								<span>);   </span>
						</li>
						<li>
								<span>    m.put(</span>
								<span class="string">'key2'</span>
								<span>,</span>
								<span class="string">'南方电网'</span>
								<span>);   </span>
						</li>
						<li>
								<span>    m.put(</span>
								<span class="string">'key3'</span>
								<span>,</span>
								<span class="string">'景新花园'</span>
								<span>);   </span>
						</li>
						<li>
								<span>    alert(</span>
								<span class="string">"init:"</span>
								<span>+m); 
  </span>
						</li>
						<li>
								<span>       </span>
						</li>
						<li>
								<span>    m.put(</span>
								<span class="string">'key1'</span>
								<span>,</span>
								<span class="string">'康拓普'</span>
								<span>);   </span>
						</li>
						<li>
								<span>    alert(</span>
								<span class="string">"set key1:"</span>
								<span>+m); 
  </span>
						</li>
						<li>
								<span>       </span>
						</li>
						<li>
								<span>    m.remove(</span>
								<span class="string">"key2"</span>
								<span>); 
  </span>
						</li>
						<li>
								<span>    alert(</span>
								<span class="string">"remove key2: "</span>
								<span>+m); 
  </span>
						</li>
						<li>
								<span>       </span>
						</li>
						<li>
								<span>    </span>
								<span class="keyword">var</span>
								<span> s =</span>
								<span class="string">""</span>
								<span>;   </span>
						</li>
						<li>
								<span>    m.each(</span>
								<span class="keyword">function</span>
								<span>(key,value,index){   </span>
						</li>
						<li>
								<span>        s += index+</span>
								<span class="string">":"</span>
								<span>+ key+</span>
								<span class="string">"="</span>
								<span>+value+</span>
								<span class="string">"\n"</span>
								<span>; 
  </span>
						</li>
						<li>
								<span>    });   </span>
						</li>
						<li>
								<span>    alert(s);   </span>
						</li>
						<li>
								<span>}  </span>
						</li>
				</ol>
		</div>
		<pre style="DISPLAY: none" class="js" title="一个简单的JavaScript Map" name="code">Array.prototype.remove = function(s) {
	for (var i = 0; i &lt; this.length; i++) {
		if (s == this[i])
			this.splice(i, 1);
	}
}

/**
 * Simple Map
 * 
 * 
 * var m = new Map();
 * m.put('key','value');
 * ...
 * var s = "";
 * m.each(function(key,value,index){
 * 		s += index+":"+ key+"="+value+"\n";
 * });
 * alert(s);
 * 
 * @author dewitt
 * @date 2008-05-24
 */
function Map() {
	/** 存放键的数组(遍历用到) */
	this.keys = new Array();
	/** 存放数据 */
	this.data = new Object();
	
	/**
	 * 放入一个键值对
	 * @param {String} key
	 * @param {Object} value
	 */
	this.put = function(key, value) {
		if(this.data[key] == null){
			this.keys.push(key);
		}
		this.data[key] = value;
	};
	
	/**
	 * 获取某键对应的值
	 * @param {String} key
	 * @return {Object} value
	 */
	this.get = function(key) {
		return this.data[key];
	};
	
	/**
	 * 删除一个键值对
	 * @param {String} key
	 */
	this.remove = function(key) {
		this.keys.remove(key);
		this.data[key] = null;
	};
	
	/**
	 * 遍历Map,执行处理函数
	 * 
	 * @param {Function} 回调函数 function(key,value,index){..}
	 */
	this.each = function(fn){
		if(typeof fn != 'function'){
			return;
		}
		var len = this.keys.length;
		for(var i=0;i&lt;len;i++){
			var k = this.keys[i];
			fn(k,this.data[k],i);
		}
	};
	
	/**
	 * 获取键值数组(类似Java的entrySet())
	 * @return 键值对象{key,value}的数组
	 */
	this.entrys = function() {
		var len = this.keys.length;
		var entrys = new Array(len);
		for (var i = 0; i &lt; len; i++) {
			entrys[i] = {
				key : this.keys[i],
				value : this.data[i]
			};
		}
		return entrys;
	};
	
	/**
	 * 判断Map是否为空
	 */
	this.isEmpty = function() {
		return this.keys.length == 0;
	};
	
	/**
	 * 获取键值对数量
	 */
	this.size = function(){
		return this.keys.length;
	};
	
	/**
	 * 重写toString 
	 */
	this.toString = function(){
		var s = "{";
		for(var i=0;i&lt;this.keys.length;i++,s+=','){
			var k = this.keys[i];
			s += k+"="+this.data[k];
		}
		s+="}";
		return s;
	};
}


function testMap(){
	var m = new Map();
	m.put('key1','Comtop');
	m.put('key2','南方电网');
	m.put('key3','景新花园');
	alert("init:"+m);
	
	m.put('key1','康拓普');
	alert("set key1:"+m);
	
	m.remove("key2");
	alert("remove key2: "+m);
	
	var s ="";
	m.each(function(key,value,index){
		s += index+":"+ key+"="+value+"\n";
	});
	alert(s);
}
</pre>
		<p> //testMap.htm</p>
		<div class="dp-highlighter">
				<div class="bar">
						<div class="tools">Html代码 <a title="复制代码" href="#"><img alt="复制代码" src="http://www.blogjava.net/images/icon_copy.gif" /></a> <a title="收藏这段代码"><img class="star" alt="收藏代码" src="http://www.blogjava.net/images/icon_star.png" /><img style="DISPLAY: none" class="spinner" src="http://www.blogjava.net/images/spinner.gif" /></a></div>
				</div>
				<ol class="dp-xml">
						<li>
								<span>
										<span class="tag">&lt;</span>
										<span class="tag-name">html</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>
								</span>
								<span class="tag">&lt;</span>
								<span class="tag-name">head</span>
								<span class="tag">&gt;</span>
								<span>  </span>
						</li>
						<li>
								<span>
								</span>
								<span class="tag">&lt;</span>
								<span class="tag-name">title</span>
								<span class="tag">&gt;</span>
								<span>Test Map</span>
								<span class="tag">&lt;/</span>
								<span class="tag-name">title</span>
								<span class="tag">&gt;</span>
								<span>  </span>
						</li>
						<li>
								<span>
								</span>
								<span class="tag">&lt;</span>
								<span class="tag-name">script</span>
								<span> </span>
								<span class="attribute">language</span>
								<span>=</span>
								<span class="attribute-value">"javascript"</span>
								<span> </span>
								<span class="attribute">src</span>
								<span>=</span>
								<span class="attribute-value">"map.js"</span>
								<span class="tag">&gt;</span>
								<span>  </span>
						</li>
						<li>
								<span>
								</span>
								<span class="tag">&lt;/</span>
								<span class="tag-name">script</span>
								<span class="tag">&gt;</span>
								<span>  </span>
						</li>
						<li>
								<span>
								</span>
								<span class="tag">&lt;/</span>
								<span class="tag-name">head</span>
								<span class="tag">&gt;</span>
								<span>  </span>
						</li>
						<li>
								<span>
								</span>
								<span class="tag">&lt;</span>
								<span class="tag-name">body</span>
								<span class="tag">&gt;</span>
								<span>  </span>
						</li>
						<li>
								<span>
								</span>
								<span class="tag">&lt;</span>
								<span class="tag-name">input</span>
								<span> </span>
								<span class="attribute">type</span>
								<span>=</span>
								<span class="attribute-value">"button"</span>
								<span> </span>
								<span class="attribute">value</span>
								<span>=</span>
								<span class="attribute-value">"test"</span>
								<span> </span>
								<span class="attribute">onclick</span>
								<span>=</span>
								<span class="attribute-value">"testMap()"</span>
								<span class="tag">&gt;</span>
								<span>  </span>
						</li>
						<li>
								<span>
								</span>
								<span class="tag">&lt;/</span>
								<span class="tag-name">body</span>
								<span class="tag">&gt;</span>
								<span>  </span>
						</li>
						<li>
								<span>
								</span>
								<span class="tag">&lt;/</span>
								<span class="tag-name">html</span>
								<span class="tag">&gt;</span>
								<span>  <br /></span>
						</li>
				</ol>
		</div>
<img src ="http://www.blogjava.net/nikita/aggbug/355890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nikita/" target="_blank">picture talk</a> 2011-08-05 17:16 <a href="http://www.blogjava.net/nikita/archive/2011/08/05/355890.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>直觉往往靠不住</title><link>http://www.blogjava.net/nikita/articles/339802.html</link><dc:creator>picture talk</dc:creator><author>picture talk</author><pubDate>Sat, 04 Dec 2010 11:58:00 GMT</pubDate><guid>http://www.blogjava.net/nikita/articles/339802.html</guid><wfw:comment>http://www.blogjava.net/nikita/comments/339802.html</wfw:comment><comments>http://www.blogjava.net/nikita/articles/339802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nikita/comments/commentRss/339802.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nikita/services/trackbacks/339802.html</trackback:ping><description><![CDATA[许多貌似简单的数学题，其答案往往与人们的直觉不符。请看这三道数学题，：<br /><br />一、球拍和球的总结是1.1远，球拍比球贵1元， 那么球的价格是多少 ？<br /><br />二、如果5台机器用了5分钟来生产5个零件，那么100台机器生产100个零件需要用多少分钟 ？<br /><br />三、在一个湖里有一篇睡莲，睡莲的面积每天扩大一倍。如果睡莲覆盖整个湖需要48天，那么它覆盖半个湖需要多少天 ？<br /><br />直觉告诉我们， 答案分别是：0 .1元， 100分钟和24天。 美国研究人员吧这三道题混杂在问卷中让10所大学的3000多名本科生解答， 发现大部分人都凭直觉回答。 但是直觉是错的。 正确的答案分别是： 0.05元、5分钟和47天。 按答对一题的一分计算，这些学生的平均分值得1.24分。即使是那些给出正确答案的人， 往往也是首先想到直觉的答案， 然后意识到这个答案是错误的， 才找到违反直觉的正确答案。直觉其实是一种无意识的本能反应， 不经思考快速地自发产生，不受人的心理状态的影响。理性思维则需要做有意识的思会被考。反应要慢得多。直觉对我们的生存至关重要。 我们看到一张脸，不可能要经过思考才能辨认出是熟人；看到一块石头迎面砸来， 不可能等到想起会被砸伤才躲开。这些都要靠直觉做出快速的自发反应。但是在面临更复杂的问题时就需要用到理性思维才能解决。<br /> <br />在生活中我们交替使用这两套思维系统。例如，我们讲母语时，用的是直觉思维，而讲外语是用的是理性思维，因此不可能像讲母语那么流利。我们听到气象员用摄氏报出气温时，会直觉感到气温的高低，但是如果听到的是华氏温度，就要用到理性思维了——美国人则相反，通过反复的训练，有可能让理性思维转化成直觉。 例如，人们在学开车时，要靠理性思维进行判断，反应比较慢，开车时间长了，在某种程度上就成了一种本能，具有速度的应变能力。<br /><br />但是有时对同一个问题，直觉和理性思维会给出相互冲突的答案，而直觉往往战胜理性，从而让人产生烦恼。<img src ="http://www.blogjava.net/nikita/aggbug/339802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nikita/" target="_blank">picture talk</a> 2010-12-04 19:58 <a href="http://www.blogjava.net/nikita/articles/339802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>找东西的 10大诀窍 </title><link>http://www.blogjava.net/nikita/articles/339800.html</link><dc:creator>picture talk</dc:creator><author>picture talk</author><pubDate>Sat, 04 Dec 2010 11:38:00 GMT</pubDate><guid>http://www.blogjava.net/nikita/articles/339800.html</guid><wfw:comment>http://www.blogjava.net/nikita/comments/339800.html</wfw:comment><comments>http://www.blogjava.net/nikita/articles/339800.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nikita/comments/commentRss/339800.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nikita/services/trackbacks/339800.html</trackback:ping><description><![CDATA[迈克尔.所罗门——《怎样找东西》一书的作者将为您提供“寻物学”的十点建议。<br /><br />第一点建议，“不要急于寻找”。66岁的 所罗门说，“丢东西的第一反应可能是翻箱倒柜，漫无目的的胡乱折腾，这是很多人常犯的错误”。<br /><br />第二点建议道出了所罗门寻物学的精华。“东西没有丢，丢失的是你正常的思维”。他说，“没有丢失的东四，只有不会找的人”。所以，我们不得不接纳第三个建议，盲目的恐慌会遮蔽我们的眼睛。开始寻找之前，一定要心态平和，自信满满。不妨先坐下来喝茶，然后开始忙活。<br /><br />建议四很简单， “东西经常会呆在最初的地方，”这位哈弗大学高材生说，“你是不是有存放东西的固定地点？如果有，先找那里， 别让眼睛左右有你的思维。外套可能就放在常用的衣架上，字典可能就放在书桌上。”<br /><br />至于第五点建议，大家或许都有类似的经验。“当你心绪平静下来时， 你或许会奇迹般的记起丢失的东西。突然记起自己没有丢， 只是放错了位置。”<br /><br />有的时候，就像第六点建议的那样，你可能正在直勾勾的盯着要找的东西，却就是“看”不见。“当一个人急匆匆、思维处于高度激动状态时， 很容易成为‘睁眼瞎’。看不到要找的东西。请再仔细地寻找一遍。”<br /><br />所以，当你嘴里嘟哝着“车钥匙”的时候，牢记第七点建议-“遮蔽效应”。车钥匙其实就在你认为的地方， 只不过被某个物体盖住了 。<br /><br />“掀开任何能遮挡东西的物品，如报纸，如果还没有，那么采纳第八点建议。”有的东西只是稍微挪动了一点位置，虽然很小， 却足以让他们逃离你的视线。 藏在打字机下的铅笔，放在抽屉最里面的工具等等。“根据我们的观察，东西挪动的距离不超过18英寸，以18英寸为半径画圆， 仔细在这个区域查找， 胜利的概率就比较大。”<br /><br />第九点建议寓于常识之中，当你丢失东西时，好好想想丢在哪儿。“当你精疲力尽的翻遍所有的地方， 没有发现蛛丝马迹时，你得到最终的结论， 也就是第十条建议，不是你的错。换句话说，就是别人借了你的雨伞，吃了你的油炸圈，拿走了你的车钥匙。”<br /><br />“其实还有第十一点建议，”所罗门说，“无论如何， 有些时候， 命运会选择把某些东西从你的财产中永久的拿走。 接受这一点， 然后继续自己的生活。”<br /><br /><br /><img src ="http://www.blogjava.net/nikita/aggbug/339800.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nikita/" target="_blank">picture talk</a> 2010-12-04 19:38 <a href="http://www.blogjava.net/nikita/articles/339800.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Fix Out of Memory errors by increasing available memory </title><link>http://www.blogjava.net/nikita/archive/2010/09/09/331477.html</link><dc:creator>picture talk</dc:creator><author>picture talk</author><pubDate>Thu, 09 Sep 2010 02:56:00 GMT</pubDate><guid>http://www.blogjava.net/nikita/archive/2010/09/09/331477.html</guid><wfw:comment>http://www.blogjava.net/nikita/comments/331477.html</wfw:comment><comments>http://www.blogjava.net/nikita/archive/2010/09/09/331477.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nikita/comments/commentRss/331477.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nikita/services/trackbacks/331477.html</trackback:ping><description><![CDATA[
		<div class="page-metadata" sizset="44" sizcache="3">
				<ul sizset="44" sizcache="3">
						<li class="page-metadata-item noprint" sizset="44" sizcache="3">
								<a class="page-metadata-icon page-restrictions hidden" id="content-metadata-page-restrictions" title="Page restrictions apply. Click the lock icon to view or edit the restriction." href="http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory#" jquery1284000845122="38">
										<span>Page restrictions apply</span>
								</a>
						</li>
						<li class="page-metadata-modification-info" sizset="45" sizcache="3">Added by <a class="url fn confluence-userlink userlink-0" title="" href="http://confluence.atlassian.com/display/~edawson" jquery1284000845122="8" data-processed="true" data-username="edawson">Edwin Dawson [Atlassian Technical Writer]</a>, last edited by <a class="url fn confluence-userlink userlink-1" title="" href="http://confluence.atlassian.com/display/~amyers" jquery1284000845122="11" data-processed="true" data-username="amyers">Andrew Myers [Atlassian]</a> on Jun 16, 2010 <span class="noprint" sizset="47" sizcache="3"> (<a id="view-change-link" href="http://confluence.atlassian.com/pages/diffpages.action?pageId=165609660&amp;originalId=218277603">view change</a>)</span></li>
						<li class="show-hide-comment-link" sizset="48" sizcache="3">
								<a class="inline-control-link" id="show-version-comment" href="http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory#" jquery1284000845122="45">show comment</a>
								<a class="inline-control-link" id="hide-version-comment" style="DISPLAY: none" href="http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory#" jquery1284000845122="46">hide comment</a>
						</li>
				</ul>
				<div class="noteMacro" id="version-comment" style="DISPLAY: none">
						<strong>Comment:</strong> 256m is now the default MaxPermSize<br /></div>
		</div>
		<a class="assistive" href="http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory#page-metadata-start">Go to start of metadata</a>
		<div class="assistive" id="page-metadata-end">
		</div>
		<fieldset class="hidden parameters" sizset="75" sizcache="0">
				<input title="browsePageTreeMode" type="hidden" value="view" />
		</fieldset>
		<div class="wiki-content" sizset="51" sizcache="3">
				<!-- wiki content -->
				<p>
						<font color="#006699">
								<b>I am getting Out of Memory errors, how can I allocate more memory to FishEye?</b>
						</font>
				</p>
				<p>Since the default memory setting usually is around 64MB or 128MB, you might have to adjust the settings to run a bigger FishEye instance with sufficient memory. <br /><b>On this page:</b><br /></p>
				<div sizset="51" sizcache="3">
						<ul sizset="51" sizcache="3">
								<li sizset="51" sizcache="3">
										<a href="http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory#FixOutofMemoryerrorsbyincreasingavailablememory-OutOfMemoryErrors">Out Of Memory Errors</a>
										<ul sizset="52" sizcache="3">
												<li sizset="52" sizcache="3">
														<a href="http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory#FixOutofMemoryerrorsbyincreasingavailablememory-OutOfMemoryError%3AJavaHeapSpace">OutOfMemoryError: Java Heap Space</a>
												</li>
												<li sizset="53" sizcache="3">
														<a href="http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory#FixOutofMemoryerrorsbyincreasingavailablememory-OutOfMemoryError%3APermGenspace%2CorPermanentGenerationSize">OutOfMemoryError: PermGen space, or Permanent Generation Size</a>
												</li>
												<li sizset="54" sizcache="3">
														<a href="http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory#FixOutofMemoryerrorsbyincreasingavailablememory-OutOfMemoryError%3Aunabletocreatenewnativethread">OutOfMemoryError: unable to create new native thread</a>
												</li>
												<li sizset="55" sizcache="3">
														<a href="http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory#FixOutofMemoryerrorsbyincreasingavailablememory-OutOfMemoryError%3AGCoverheadlimitexceeded">OutOfMemoryError: GC overhead limit exceeded</a>
												</li>
												<li sizset="56" sizcache="3">
														<a href="http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory#FixOutofMemoryerrorsbyincreasingavailablememory-java.lang.OutOfMemoryError%3Arequested32756bytesforChunkPool%3A%3Aallocate.Outofswapspace%3F">java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. Out of swap space?</a>
												</li>
										</ul>
								</li>
						</ul>
				</div>
				<br class="atl-forced-newline" />
				<p>
				</p>
				<h3 sizset="57" sizcache="3">
						<a name="FixOutofMemoryerrorsbyincreasingavailablememory-OutOfMemoryErrors">
						</a>Out Of Memory Errors</h3>
				<p sizset="58" sizcache="3">There are a number of different memory errors that the JVM will throw. The most common are listed as follows.<br />In the following, you will be required to set your memory settings via your FISHEYE_OPTS <a class="external-link" href="http://confluence.atlassian.com/x/l4CDBQ" rel="nofollow">Environment Variables</a>.<br />You will need to restart your server after setting your FISHEYE_OPTS.</p>
				<p>After having set the FISHEYE_OPTS and restarting your server, go to Administration &gt; Sys Info/Support &gt; System Info, and check your JVM Input Arguments to ensure that your server is picking up your FISHEYE_OPTS as expected. <br class="atl-forced-newline" /></p>
				<h4 sizset="59" sizcache="3">
						<a name="FixOutofMemoryerrorsbyincreasingavailablememory-OutOfMemoryError%3AJavaHeapSpace">
						</a>OutOfMemoryError: Java Heap Space</h4>
				<div class="panelMacro" sizset="60" sizcache="3">
						<table class="noteMacro" sizset="60" sizcache="3">
								<colgroup>
										<col width="24" />
										<col />
								</colgroup>
								<tbody sizset="60" sizcache="3">
										<tr sizset="60" sizcache="3">
												<td valign="top">
														<img height="16" alt="" src="http://confluence.atlassian.com/images/icons/emoticons/warning.gif" width="16" align="absMiddle" border="0" />
												</td>
												<td sizset="60" sizcache="3">If you are running Fisheye/Crucible as a windows service, increasing memory needs to be done in the wrapper.conf file. Refere to the <a class="external-link" href="http://confluence.atlassian.com/pages/viewpage.action?pageId=91554194" rel="nofollow">Can Fisheye be run as a Windows Service</a> for instructions.</td>
										</tr>
								</tbody>
						</table>
				</div>
				<p sizset="61" sizcache="3">To solve this error, you will need to add the argument <tt>-Xmx1024m</tt> to <a class="external-link" href="http://confluence.atlassian.com/x/l4CDBQ" rel="nofollow">FISHEYE_OPTS</a>, in addition to any argument you use to set the heap size. Often you need to increase the amount of memory allocated to fisheye during the initial scan and period and once this is completed you can reduce back down.</p>
				<div class="panel" style="BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-WIDTH: 1px">
						<div class="panelContent">
								<p>FISHEYE_OPTS="-Xms128m <font color="red">-Xmx1024m</font> -XX:MaxPermSize=256m"</p>
						</div>
				</div>
				<p>After having set the FISHEYE_OPTS and restarting your server, go to Administration &gt; Sys Info/Support &gt; System Info, and check your JVM Input Arguments to ensure that your server is picking up your FISHEYE_OPTS as expected. <br class="atl-forced-newline" /></p>
				<h4 sizset="62" sizcache="3">
						<a name="FixOutofMemoryerrorsbyincreasingavailablememory-OutOfMemoryError%3APermGenspace%2CorPermanentGenerationSize">
						</a>OutOfMemoryError: PermGen space, or Permanent Generation Size</h4>
				<p sizset="63" sizcache="3">
						<a name="FixOutofMemoryerrorsbyincreasingavailablememory-permgen">
						</a>If you get the error message: <tt>java.lang.OutOfMemoryError: PermGen space</tt> this means that you have exceeded Java's fixed 64MB block for loading class files. You will need to add the argument <tt>-XX:MaxPermSize=256m</tt> to <a class="external-link" href="http://confluence.atlassian.com/x/l4CDBQ" rel="nofollow">FISHEYE_OPTS</a>, in addition to any argument you use to set the heap size.</p>
				<div class="panel" style="BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-WIDTH: 1px">
						<div class="panelContent">
								<p>FISHEYE_OPTS="-Xms128m -Xmx512m <font color="red">-XX:MaxPermSize=256m</font>"</p>
						</div>
				</div>
				<p>After having set the FISHEYE_OPTS and restarting your server, go to Administration &gt; Sys Info/Support &gt; System Info, and check your JVM Input Arguments to ensure that your server is picking up your FISHEYE_OPTS as expected. <br class="atl-forced-newline" /></p>
				<h4 sizset="65" sizcache="3">
						<a name="FixOutofMemoryerrorsbyincreasingavailablememory-OutOfMemoryError%3Aunabletocreatenewnativethread">
						</a>OutOfMemoryError: unable to create new native thread</h4>
				<p>This error occurs when the operating system is unable to create new threads. This is due to the JVM Heap taking up the available RAM.<br /></p>
				<blockquote>
						<p>
								<cite>Big heaps take away from the space that can be allocated for the stack of a new thread</cite>
						</p>
				</blockquote>For Linux the maximum heap size of the JVM cannot be greater than 2GB. If you only have 2GB RAM in your server, it is <b>not</b> recommended to set the Max size of the JVM that high.<br />The size of the stack per thread can also contribute to this problem. The stack size can reduce the number of threads that can be created. 
<p></p><p sizset="66" sizcache="3">To fix this problem, you should reduce the size of your JVM Heap and also the size of the stack per thread.<br />The stack size can be changed with the following (example) parameter being added to your <a class="external-link" href="http://confluence.atlassian.com/x/l4CDBQ" rel="nofollow">FISHEYE_OPTS</a>:</p><div class="panel" style="BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-WIDTH: 1px"><div class="panelContent"><p>FISHEYE_OPTS="-Xms128m -Xmx1024m -XX:MaxPermSize=256m <font color="red">-Xss512k</font>"</p></div></div><p sizset="67" sizcache="3">Please refer to <a class="external-link" href="http://goobsoft.homeip.net/Wiki.jsp?page=JavaDebianTuning" rel="nofollow">this guide</a> as a reference for JVM tuning.</p><p>After having set the FISHEYE_OPTS and restarting your server, go to Administration &gt; Sys Info/Support &gt; System Info, and check your JVM Input Arguments to ensure that your server is picking up your FISHEYE_OPTS as expected. <br class="atl-forced-newline" /><br class="atl-forced-newline" /></p><h4 sizset="68" sizcache="3"><a name="FixOutofMemoryerrorsbyincreasingavailablememory-OutOfMemoryError%3AGCoverheadlimitexceeded"></a>OutOfMemoryError: GC overhead limit exceeded</h4><p>This error indicates that the JVM took too long to free up memory during its GC process. This error can be thrown from the Parallel or Concurrent collectors.<br /></p><blockquote><p>The parallel collector will throw an OutOfMemoryError if too much time is being spent in garbage collection: if more than 98% of the total time is spent in garbage collection and less than 2% of the heap is recovered, an OutOfMemoryError will be thrown. This feature is designed to prevent applications from running for an extended period of time while making little or no progress because the heap is too small. If necessary, this feature can be disabled by adding the option -XX:-UseGCOverheadLimit to the command line.</p></blockquote>This kind of OutOfMemoryError can be caused if your java process is starting to use swapped memory for its heap. This will cause the JVM to take a lot longer than normal to perform normal GC operations. This can eventually cause a timeout to occur and cause this error. 
<p></p><p>To overcome this issue, you need to make sure that all processes can't allocate more memory than there is system memory. In practice this is impossible to do for all processes. At a minimum you should make sure that all your jvm's do not have a total maximum memory allocation than your normally available system memory.</p><p sizset="69" sizcache="3">Please refer to <a class="external-link" href="http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html" rel="nofollow">this guide</a> for more information. <br class="atl-forced-newline" /><br class="atl-forced-newline" /></p><h4 sizset="70" sizcache="3"><a name="FixOutofMemoryerrorsbyincreasingavailablememory-java.lang.OutOfMemoryError%3Arequested32756bytesforChunkPool%3A%3Aallocate.Outofswapspace%3F"></a>java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. Out of swap space?</h4><p sizset="71" sizcache="3">Essentially the native objects does not have enough memory to use. This is usually because you have allocated too much memory to your heap reducing the amount available for native objects. See <a class="external-link" href="http://www.codingthearchitecture.com/2008/01/14/jvm_lies_the_outofmemory_myth.html" rel="nofollow">this article</a>.</p><p>The solution is to reduce the amount of heap memory you have allocated. For example if you have set -Xmx4096, you should consider reducing this to -Xmx2048m.</p><p sizset="72" sizcache="3">Remember if you are using a 32bit JVM you cannot allocate more than -Xmx2048m for linux (and even less for windows). Using a 64 bit JVM can resolve this problem, but is not recommended for fisheye/crucible instances (refer to <a class="external-link" href="http://confluence.atlassian.com/display/FISHEYE/System+Requirements" rel="nofollow">System Requirements</a>).</p><p sizset="73" sizcache="3"><br class="atl-forced-newline" /><br class="atl-forced-newline" />Read the <a title="Tuning FishEye" href="http://confluence.atlassian.com/display/FISHEYE/Tuning+FishEye">Tuning FishEye</a> page for more detail on adjusting resource limits and performance settings in FishEye.<br /></p></div>
		<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
         <rdf:Description
    rdf:about="http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory"
    dc:identifier="http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory"
    dc:title="Fix Out of Memory errors by increasing available memory"
    trackback:ping="http://confluence.atlassian.com/rpc/trackback/165609660"/>
</rdf:RDF>
-->
		<br />源自 ：<a href="http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory#FixOutofMemoryerrorsbyincreasingavailablememory-OutOfMemoryError%3Aunabletocreatenewnativethread">http://confluence.atlassian.com/display/FISHEYE/Fix+Out+of+Memory+errors+by+increasing+available+memory#FixOutofMemoryerrorsbyincreasingavailablememory-OutOfMemoryError%3Aunabletocreatenewnativethread</a>,<br /><br /><img src ="http://www.blogjava.net/nikita/aggbug/331477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nikita/" target="_blank">picture talk</a> 2010-09-09 10:56 <a href="http://www.blogjava.net/nikita/archive/2010/09/09/331477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Problems Opening an Editor in Eclipse</title><link>http://www.blogjava.net/nikita/archive/2010/06/21/324030.html</link><dc:creator>picture talk</dc:creator><author>picture talk</author><pubDate>Mon, 21 Jun 2010 01:55:00 GMT</pubDate><guid>http://www.blogjava.net/nikita/archive/2010/06/21/324030.html</guid><wfw:comment>http://www.blogjava.net/nikita/comments/324030.html</wfw:comment><comments>http://www.blogjava.net/nikita/archive/2010/06/21/324030.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nikita/comments/commentRss/324030.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nikita/services/trackbacks/324030.html</trackback:ping><description><![CDATA[
		<div class="postText">
				<p>I used to be able to open *.sql files in my Eclipse text editor. For some reason that stopped working this morning: </p>
				<p>    Invalid menu handle. </p>
				<p>
						<a href="http://www.davestone.net/blog/image.axd?picture=WindowsLiveWriter/ProblemsOpeninganEditorinEclipse_7B37/InvalidMenuHandle_2.png">
								<img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="64" alt="InvalidMenuHandle" src="http://www.davestone.net/blog/image.axd?picture=WindowsLiveWriter/ProblemsOpeninganEditorinEclipse_7B37/InvalidMenuHandle_thumb.png" width="244" border="0" />
						</a>
				</p>
				<p>    Problems opening an editor... unable to open external editor. </p>
				<p>
						<a href="http://www.davestone.net/blog/image.axd?picture=WindowsLiveWriter/ProblemsOpeninganEditorinEclipse_7B37/ProblemsOpeningEditor_2.png">
								<img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="121" alt="ProblemsOpeningEditor" src="http://www.davestone.net/blog/image.axd?picture=WindowsLiveWriter/ProblemsOpeninganEditorinEclipse_7B37/ProblemsOpeningEditor_thumb.png" width="244" border="0" />
						</a>
				</p>
				<p>To fix this behavior for ALL files of a certain extension: </p>
				<p>    Window &gt; Preferences - </p>
				<p>... and on the Preferences Tree: </p>
				<p>    General &gt; Editors &gt; File Associations - </p>
				<p>... add your File Type extension, for example *.sql </p>
				<p>... and finally add your Associated Editor. I chose "internal editors" - "text editor" </p>
				<p>
						<a href="http://www.davestone.net/blog/image.axd?picture=WindowsLiveWriter/ProblemsOpeninganEditorinEclipse_7B37/TextEditorPreferences_2.png">
								<img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="244" alt="TextEditorPreferences" src="http://www.davestone.net/blog/image.axd?picture=WindowsLiveWriter/ProblemsOpeninganEditorinEclipse_7B37/TextEditorPreferences_thumb.png" width="233" border="0" />
						</a>
				</p>
				<p>You can also change the behavior "temporarily" for a single file. Right click the file, click "Open With..." and select the editor... </p>
				<p>
						<a href="http://www.davestone.net/blog/image.axd?picture=WindowsLiveWriter/ProblemsOpeninganEditorinEclipse_7B37/OpenWith_2.png">
								<img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="244" alt="OpenWith" src="http://www.davestone.net/blog/image.axd?picture=WindowsLiveWriter/ProblemsOpeninganEditorinEclipse_7B37/OpenWith_thumb.png" width="187" border="0" />
						</a>
				</p>
		</div>
<img src ="http://www.blogjava.net/nikita/aggbug/324030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nikita/" target="_blank">picture talk</a> 2010-06-21 09:55 <a href="http://www.blogjava.net/nikita/archive/2010/06/21/324030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自行车</title><link>http://www.blogjava.net/nikita/articles/317967.html</link><dc:creator>picture talk</dc:creator><author>picture talk</author><pubDate>Sat, 10 Apr 2010 15:59:00 GMT</pubDate><guid>http://www.blogjava.net/nikita/articles/317967.html</guid><wfw:comment>http://www.blogjava.net/nikita/comments/317967.html</wfw:comment><comments>http://www.blogjava.net/nikita/articles/317967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nikita/comments/commentRss/317967.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nikita/services/trackbacks/317967.html</trackback:ping><description><![CDATA[2010年的4月份，9号， 我买了一辆新的自行车， 心情有点激动 。<br /><img src ="http://www.blogjava.net/nikita/aggbug/317967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nikita/" target="_blank">picture talk</a> 2010-04-10 23:59 <a href="http://www.blogjava.net/nikita/articles/317967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>The Java serialization algorithm revealed</title><link>http://www.blogjava.net/nikita/archive/2010/04/10/317951.html</link><dc:creator>picture talk</dc:creator><author>picture talk</author><pubDate>Sat, 10 Apr 2010 09:20:00 GMT</pubDate><guid>http://www.blogjava.net/nikita/archive/2010/04/10/317951.html</guid><wfw:comment>http://www.blogjava.net/nikita/comments/317951.html</wfw:comment><comments>http://www.blogjava.net/nikita/archive/2010/04/10/317951.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nikita/comments/commentRss/317951.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nikita/services/trackbacks/317951.html</trackback:ping><description><![CDATA[
		<p>
				<em>Serialization</em> is the process of saving an object's state to a sequence of bytes; <em>deserialization</em> is the process of rebuilding those bytes into a live object. The Java Serialization API provides a standard mechanism for developers to handle object serialization. In this tip, you will see how to serialize an object, and why serialization is sometimes necessary. You'll learn about the serialization algorithm used in Java, and see an example that illustrates the serialized format of an object. By the time you're done, you should have a solid knowledge of how the serialization algorithm works and what entities are serialized as part of the object at a low level.</p>
		<h2>Why is serialization required?</h2>
		<p>In today's world, a typical enterprise application will have multiple components and will be distributed across various systems and networks. In Java, everything is represented as objects; if two Java components want to communicate with each other, there needs be a mechanism to exchange data. One way to achieve this is to define your own protocol and transfer an object. This means that the receiving end must know the protocol used by the sender to re-create the object, which would make it very difficult to talk to third-party components. Hence, there needs to be a generic and efficient protocol to transfer the object between components. Serialization is defined for this purpose, and Java components use this protocol to transfer objects.</p>
		<p>Figure 1 shows a high-level view of client/server communication, where an object is transferred from the client to the server through serialization.</p>
		<a href="http://www.javaworld.com/javaworld/jw-05-2009/images/jtip050709-fig1.gif">
				<img height="156" alt="A high-level view of serialization in action" src="http://www.javaworld.com/javaworld/jw-05-2009/images/jtip050709-fig1_thumb.gif" width="350" />
		</a>
		<h4>Figure 1. A high-level view of serialization in action (click to enlarge)</h4>
		<h2>How to serialize an object</h2>
		<p>In order to serialize an object, you need to ensure that the class of the object implements the <code>java.io.Serializable</code> interface, as shown in Listing 1.</p>
		<h4>Listing 1. Implementing Serializable</h4>
		<pre>
				<div class="codeblock">
						<code>import java.io.Serializable;<br /><br />class TestSerial implements Serializable {<br />	public byte version = 100;<br />	public byte count = 0;<br />}</code>
				</div>
		</pre>
		<p>In Listing 1, the only thing you had to do differently from creating a normal class is implement the <code>java.io.Serializable</code> interface. The <code>Serializable</code> interface is a marker interface; it declares no methods at all. It tells the serialization mechanism that the class can be serialized.</p>
		<p>Now that you have made the class eligible for serialization, the next step is to actually serialize the object. That is done by calling the <code>writeObject()</code> method of the <code>java.io.ObjectOutputStream</code> class, as shown in Listing 2.</p>
		<h4>Listing 2. Calling writeObject()</h4>
		<pre>
				<div class="codeblock">
						<code>public static void main(String args[]) throws IOException {<br />	FileOutputStream fos = new FileOutputStream("temp.out");<br />	ObjectOutputStream oos = new ObjectOutputStream(fos);<br />	TestSerial ts = new TestSerial();<br />	oos.writeObject(ts);<br />	oos.flush();<br />	oos.close();<br />}</code>
				</div>
		</pre>
		<p>Listing 2 stores the state of the <code>TestSerial</code> object in a file called <code>temp.out</code>. <code>oos.writeObject(ts);</code> actually kicks off the serialization algorithm, which in turn writes the object to <code>temp.out</code>.</p>
		<p>To re-create the object from the persistent file, you would employ the code in Listing 3.</p>
		<h4>Listing 3. Recreating a serialized object</h4>
		<pre>
				<div class="codeblock">
						<code>public static void main(String args[]) throws IOException {<br />	FileInputStream fis = new FileInputStream("temp.out");<br />	ObjectInputStream oin = new ObjectInputStream(fis);<br />	TestSerial ts = (TestSerial) oin.readObject();<br />	System.out.println("version="+ts.version);<br />}</code>
				</div>
		</pre>
		<p>In Listing 3, the object's restoration occurs with the <code>oin.readObject()</code> method call. This method call reads in the raw bytes that we previously persisted and creates a live object that is an exact replica of the original object graph. Because <code>readObject()</code> can read any serializable object, a cast to the correct type is required. </p>
		<p>Executing this code will print <code>version=100</code> on the standard output.</p>
		<h2>The serialized format of an object</h2>
		<p>What does the serialized version of the object look like? Remember, the sample code in the previous section saved the serialized version of the <code>TestSerial</code> object into the file <code>temp.out</code>. Listing 4 shows the contents of <code>temp.out</code>, displayed in hexadecimal. (You need a hexadecimal editor to see the output in hexadecimal format.)</p>
		<h4>Listing 4. Hexadecimal form of TestSerial</h4>
		<pre>
				<div class="codeblock">
						<code>AC ED 00 05 73 72 00 0A 53 65 72 69 61 6C 54 65<br />73 74 A0 0C 34 00 FE B1 DD F9 02 00 02 42 00 05<br />63 6F 75 6E 74 42 00 07 76 65 72 73 69 6F 6E 78<br />70 00 64</code>
				</div>
		</pre>
		<p>If you look again at the actual <code>TestSerial</code> object, you'll see that it has only two byte members, as shown in Listing 5.</p>
		<h4>Listing 5. TestSerial's byte members</h4>
		<pre>
				<div class="codeblock">
						<code>	public byte version = 100;<br />	public byte count = 0;</code>
				</div>
		</pre>
		<p>The size of a byte variable is one byte, and hence the total size of the object (without the header) is two bytes. But if you look at the size of the serialized object in Listing 4, you'll see 51 bytes. Surprise! Where did the extra bytes come from, and what is their significance? They are introduced by the serialization algorithm, and are required in order to to re-create the object. In the next section, you'll explore this algorithm in detail.</p>
		<h2>Java's serialization algorithm</h2>
		<p>By now, you should have a pretty good knowledge of how to serialize an object. But how does the process work under the hood? In general the serialization algorithm does the following:</p>
		<ul>
				<li>It writes out the metadata of the class associated with an instance. 
</li>
				<li>It recursively writes out the description of the superclass until it finds <code>java.lang.object</code>. 
</li>
				<li>Once it finishes writing the metadata information, it then starts with the actual data associated with the instance. But this time, it starts from the topmost superclass. 
</li>
				<li>It recursively writes the data associated with the instance, starting from the least superclass to the most-derived class. </li>
		</ul>
		<p>I've written a different example object for this section that will cover all possible cases. The new sample object to be serialized is shown in Listing 6.</p>
		<h4>Listing 6. Sample serialized object</h4>
		<pre>
				<div class="codeblock">
						<code>class parent implements Serializable {<br />	int parentVersion = 10;<br />}<br /><br />class contain implements Serializable{<br />	int containVersion = 11;<br />}<br />public class SerialTest extends parent implements Serializable {<br />	int version = 66;<br />	contain con = new contain();<br /><br />	public int getVersion() {<br />		return version;<br />	}<br />	public static void main(String args[]) throws IOException {<br />		FileOutputStream fos = new FileOutputStream("temp.out");<br />		ObjectOutputStream oos = new ObjectOutputStream(fos);<br />		SerialTest st = new SerialTest();<br />		oos.writeObject(st);<br />		oos.flush();<br />		oos.close();<br />	}<br />}</code>
				</div>
		</pre>
		<p>This example is a straightforward one. It serializes an object of type <code>SerialTest</code>, which is derived from <code>parent</code> and has a container object, <code>contain</code>. The serialized format of this object is shown in Listing 7.</p>
		<h4>Listing 7. Serialized form of sample object</h4>
		<pre>
				<div class="codeblock">
						<code>AC ED 00 05 73 72 00 0A 53 65 72 69 61 6C 54 65<br />73 74 05 52 81 5A AC 66 02 F6 02 00 02 49 00 07<br />76 65 72 73 69 6F 6E 4C 00 03 63 6F 6E 74 00 09<br />4C 63 6F 6E 74 61 69 6E 3B 78 72 00 06 70 61 72<br />65 6E 74 0E DB D2 BD 85 EE 63 7A 02 00 01 49 00<br />0D 70 61 72 65 6E 74 56 65 72 73 69 6F 6E 78 70<br />00 00 00 0A 00 00 00 42 73 72 00 07 63 6F 6E 74<br />61 69 6E FC BB E6 0E FB CB 60 C7 02 00 01 49 00<br />0E 63 6F 6E 74 61 69 6E 56 65 72 73 69 6F 6E 78<br />70 00 00 00 0B</code>
				</div>
		</pre>
		<p>Figure 2 offers a high-level look at the serialization algorithm for this scenario.</p>
		<img height="711" alt="An outline of the serialization algorithm" src="http://www.javaworld.com/javaworld/jw-05-2009/images/jtip050709-fig2.gif" width="350" />
		<h4>Figure 2. An outline of the serialization algorithm</h4>
		<p>Let's go through the serialized format of the object in detail and see what each byte represents. Begin with the serialization protocol information:</p>
		<ul>
				<li>
						<code>AC ED</code>: <code>STREAM_MAGIC</code>. Specifies that this is a serialization protocol. 
</li>
				<li>
						<code>00 05</code>: <code>STREAM_VERSION</code>. The serialization version. 
</li>
				<li>
						<code>0x73</code>: <code>TC_OBJECT</code>. Specifies that this is a new <code>Object</code>. </li>
		</ul>
		<p>The first step of the serialization algorithm is to write the description of the class associated with an instance. The example serializes an object of type <code>SerialTest</code>, so the algorithm starts by writing the description of the <code>SerialTest</code> class.</p>
		<ul>
				<li>
						<code>0x72</code>: <code>TC_CLASSDESC</code>. Specifies that this is a new class. 
</li>
				<li>
						<code>00 0A</code>: Length of the class name. 
</li>
				<li>
						<code>53 65 72 69 61 6c 54 65 73 74</code>: <code>SerialTest</code>, the name of the class. 
</li>
				<li>
						<code>05 52 81 5A AC 66 02 F6</code>: <code>SerialVersionUID</code>, the serial version identifier of this class. 
</li>
				<li>
						<code>0x02</code>: Various flags. This particular flag says that the object supports serialization. 
</li>
				<li>
						<code>00 02</code>: Number of fields in this class. </li>
		</ul>
		<p>Next, the algorithm writes the field <code>int version = 66;</code>.</p>
		<ul>
				<li>
						<code>0x49</code>: Field type code. 49 represents "I", which stands for <code>Int</code>. 
</li>
				<li>
						<code>00 07</code>: Length of the field name. 
</li>
				<li>
						<code>76 65 72 73 69 6F 6E</code>: <code>version</code>, the name of the field. </li>
		</ul>
		<p>And then the algorithm writes the next field, <code>contain con = new contain();</code>. This is an object, so it will write the canonical JVM signature of this field.</p>
		<ul>
				<li>
						<code>0x74</code>: <code>TC_STRING</code>. Represents a new string. 
</li>
				<li>
						<code>00 09</code>: Length of the string. 
</li>
				<li>
						<code>4C 63 6F 6E 74 61 69 6E 3B</code>: <code>Lcontain;</code>, the canonical JVM signature. 
</li>
				<li>
						<code>0x78</code>: <code>TC_ENDBLOCKDATA</code>, the end of the optional block data for an object. </li>
		</ul>
		<p>The next step of the algorithm is to write the description of the <code>parent</code> class, which is the immediate superclass of <code>SerialTest</code>.</p>
		<ul>
				<li>
						<code>0x72</code>: <code>TC_CLASSDESC</code>. Specifies that this is a new class. 
</li>
				<li>
						<code>00 06</code>: Length of the class name. 
</li>
				<li>
						<code>70 61 72 65 6E 74</code>: <code>SerialTest</code>, the name of the class 
</li>
				<li>
						<code>0E DB D2 BD 85 EE 63 7A</code>: <code>SerialVersionUID</code>, the serial version identifier of this class. 
</li>
				<li>
						<code>0x02</code>: Various flags. This flag notes that the object supports serialization. 
</li>
				<li>
						<code>00 01</code>: Number of fields in this class. </li>
		</ul>
		<p>Now the algorithm will write the field description for the <code>parent</code> class. <code>parent</code> has one field, <code>int parentVersion = 100;</code>.</p>
		<ul>
				<li>
						<code>0x49</code>: Field type code. 49 represents "I", which stands for <code>Int</code>. 
</li>
				<li>
						<code>00 0D</code>: Length of the field name. 
</li>
				<li>
						<code>70 61 72 65 6E 74 56 65 72 73 69 6F 6E</code>: <code>parentVersion</code>, the name of the field. 
</li>
				<li>
						<code>0x78</code>: <code>TC_ENDBLOCKDATA</code>, the end of block data for this object. 
</li>
				<li>
						<code>0x70</code>: <code>TC_NULL</code>, which represents the fact that there are no more superclasses because we have reached the top of the class hierarchy. </li>
		</ul>
		<p>So far, the serialization algorithm has written the description of the class associated with the instance and all its superclasses. Next, it will write the actual data associated with the instance. It writes the parent class members first:</p>
		<ul>
				<li>
						<code>00 00 00 0A</code>: 10, the value of <code>parentVersion</code>. </li>
		</ul>
		<p>Then it moves on to <code>SerialTest</code>.</p>
		<ul>
				<li>
						<code>00 00 00 42</code>: 66, the value of <code>version</code>. </li>
		</ul>
		<p>The next few bytes are interesting. The algorithm needs to write the information about the <code>contain</code> object, shown in Listing 8.</p>
		<h4>Listing 8. The contain object</h4>
		<pre>
				<div class="codeblock">
						<code>contain con = new contain();</code>
				</div>
		</pre>
		<p>Remember, the serialization algorithm hasn't written the class description for the <code>contain</code> class yet. This is the opportunity to write this description.</p>
		<ul>
				<li>
						<code>0x73</code>: <code>TC_OBJECT</code>, designating a new object. 
</li>
				<li>
						<code>0x72</code>: <code>TC_CLASSDESC</code>. 
</li>
				<li>
						<code>00 07</code>: Length of the class name. 
</li>
				<li>
						<code>63 6F 6E 74 61 69 6E</code>: <code>contain</code>, the name of the class. 
</li>
				<li>
						<code>FC BB E6 0E FB CB 60 C7</code>: <code>SerialVersionUID</code>, the serial version identifier of this class. 
</li>
				<li>
						<code>0x02</code>: Various flags. This flag indicates that this class supports serialization. 
</li>
				<li>
						<code>00 01</code>: Number of fields in this class. </li>
		</ul>
		<p>Next, the algorithm must write the description for <code>contain</code>'s only field, <code>int containVersion = 11;</code>.</p>
		<ul>
				<li>
						<code>0x49</code>: Field type code. 49 represents "I", which stands for <code>Int</code>. 
</li>
				<li>
						<code>00 0E</code>: Length of the field name. 
</li>
				<li>
						<code>63 6F 6E 74 61 69 6E 56 65 72 73 69 6F 6E</code>: <code>containVersion</code>, the name of the field. 
</li>
				<li>
						<code>0x78</code>: <code>TC_ENDBLOCKDATA</code>. </li>
		</ul>
		<p>Next, the serialization algorithm checks to see if <code>contain</code> has any parent classes. If it did, the algorithm would start writing that class; but in this case there is no superclass for <code>contain</code>, so the algorithm writes <code>TC_NULL</code>.</p>
		<ul>
				<li>
						<code>0x70</code>: <code>TC_NULL</code>. </li>
		</ul>
		<p>Finally, the algorithm writes the actual data associated with <code>contain</code>.</p>
		<ul>
				<li>
						<code>00 00 00 0B</code>: 11, the value of <code>containVersion</code>. </li>
		</ul>
		<h2>Conclusion</h2>
		<p>In this tip, you have seen how to serialize an object, and learned how the serialization algorithm works in detail. I hope this article gives you more detail on what happens when you actually serialize an object.<br /><br />From  ： <a href="http://www.javaworld.com/community/node/2915">http://www.javaworld.com/community/node/2915</a></p>
<img src ="http://www.blogjava.net/nikita/aggbug/317951.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nikita/" target="_blank">picture talk</a> 2010-04-10 17:20 <a href="http://www.blogjava.net/nikita/archive/2010/04/10/317951.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CDT with launch failed,binary not found problem</title><link>http://www.blogjava.net/nikita/archive/2010/01/16/309799.html</link><dc:creator>picture talk</dc:creator><author>picture talk</author><pubDate>Sat, 16 Jan 2010 14:10:00 GMT</pubDate><guid>http://www.blogjava.net/nikita/archive/2010/01/16/309799.html</guid><wfw:comment>http://www.blogjava.net/nikita/comments/309799.html</wfw:comment><comments>http://www.blogjava.net/nikita/archive/2010/01/16/309799.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nikita/comments/commentRss/309799.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nikita/services/trackbacks/309799.html</trackback:ping><description><![CDATA[1. 把 c:/minGW\bin\mingw-make.exe 改成make.exe<br />2. 在cmd 里面运行make.exe<br />3. 在path 里面加安装路径/bin<br />4. 还有加WXWIN环境变量 （WXWIN就像java home一样）<br />5. 打开cmd，转换到项目的目录下面， 执行make.exe，这样就创建一个项 目的执行文件<br />6. 在CDT里面执行BUILD时， Browse这个执行文件， 运行就可以了。<img src ="http://www.blogjava.net/nikita/aggbug/309799.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nikita/" target="_blank">picture talk</a> 2010-01-16 22:10 <a href="http://www.blogjava.net/nikita/archive/2010/01/16/309799.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>