﻿<?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-自写自看-随笔分类-Java</title><link>http://www.blogjava.net/mphome/category/17139.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 03 Mar 2008 19:05:18 GMT</lastBuildDate><pubDate>Mon, 03 Mar 2008 19:05:18 GMT</pubDate><ttl>60</ttl><item><title>&lt;java pitfalls 中文版&gt;读书笔记</title><link>http://www.blogjava.net/mphome/archive/2008/03/03/183563.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 03 Mar 2008 13:32:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2008/03/03/183563.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/183563.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2008/03/03/183563.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/183563.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/183563.html</trackback:ping><description><![CDATA[
		<p>1.父类的静态方法和最终方法不能被覆盖。<br />2.用静态方法覆盖实例方法是通不过编译的<br />3.String 的intern函数是将该String放入JVM的常量池中，避免出现String类型的多处应用。<br />  例如 b=a.intern();<br />       a==b 等于TRUE<br />4.访问被覆盖的方法，只能用super<br />5.只能通过传递数组来达到，基本数据类型数据引用的效果。<br />6.注意clone的深度，当要克隆一个对象时，若该对象的内部有对象，则需要将内部对象也clone，也就是主要写clone对象。<br />  <br />  <br />7.若以对象作为hashmap的索引值，需要重写该对象的equal，和hashcode函数。        </p>
		<p>8.异常，如果对try{}catch(exception o){}的所有catch情况都考虑到了的话，调用者就不需要添加catch或throw exception啦</p>
		<p>9.文件流： 分为字节流（ 带Input）和字符流（带reader）<br />              例如FileInputStream    例如FileReader<br />           字符流不依赖於编码，全部采用unicode编码<br />           如果需要支持国际化的话就需要采用直接流啦 。<br />           示例：  FileInputStream is=new FileInputStream(f);<br />                   InputStreamReader r=new InputSteamReader(is,"utf-8");</p>
		<p>  另外可以使用System.getProperty("file.endcoding")来获得系统的默认编码<br />10，数组和矢量Vector比较  遍历Vector比较慢，因为Vector是线程安全的，获取值时采用了同步化，解决方法在遍历是toArray（）<br />    例外ArrayList具有vector的动态增加长度的特点，但ArrayList是非同步的矢量。<br />11.在循环体内链接字符串，使用StringBuffer效率更高；其他情况下使用+。</p>
<img src ="http://www.blogjava.net/mphome/aggbug/183563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2008-03-03 21:32 <a href="http://www.blogjava.net/mphome/archive/2008/03/03/183563.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库master/slave模式</title><link>http://www.blogjava.net/mphome/archive/2007/12/12/167327.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Wed, 12 Dec 2007 12:40:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/12/167327.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/167327.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/12/167327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/167327.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/167327.html</trackback:ping><description><![CDATA[mysql的master/slave模式：<br />采用ReplicationConnection链接后，设置Connection.setReadOnly(true)时，读写可以从master,slave中任意读写。<br />设置Connection.setReadOnly(false)只能从master中读取。<br />采用此方法可以做到只在master上更新数据，利用slave来读取数据。<br />详细介绍<br /><a href="http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-replication-connection.html">http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-replication-connection.html</a><br /><br /><br /><img src ="http://www.blogjava.net/mphome/aggbug/167327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-12 20:40 <a href="http://www.blogjava.net/mphome/archive/2007/12/12/167327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中double运算的问题</title><link>http://www.blogjava.net/mphome/archive/2007/12/10/166783.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 10 Dec 2007 12:47:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/10/166783.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/166783.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/10/166783.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/166783.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/166783.html</trackback:ping><description><![CDATA[
		<p>double t1=34.0;<br />double t2=2.55<br />System.out.println(t1*t2);<br />结果不等于 86.7 <br /><br />解决方案 采用 java.math.BigDecimal<br />此处有一个通用类<br /></p>
		<ol class="dp-j">
				<li class="alt">
						<span>
								<span class="keyword">import</span>
								<span> java.math.BigDecimal;   </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 由于Java的简单类型不能够精确的对浮点数进行运算，这个工具类提供精 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 确的浮点数运算，包括加减乘除和四舍五入。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">class</span>
						<span> Arith{   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">//默认除法运算精度 </span>
						<span>  </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">private</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">final</span>
						<span> </span>
						<span class="keyword">int</span>
						<span> DEF_DIV_SCALE = </span>
						<span class="number">10</span>
						<span>;   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">//这个类不能实例化 </span>
						<span>  </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">private</span>
						<span> Arith(){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 提供精确的加法运算。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v1 被加数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v2 加数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @return 两个参数的和 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">double</span>
						<span> add(</span>
						<span class="keyword">double</span>
						<span> v1,</span>
						<span class="keyword">double</span>
						<span> v2){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b1 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v1));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b2 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v2));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">return</span>
						<span> b1.add(b2).doubleValue();   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 提供精确的减法运算。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v1 被减数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v2 减数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @return 两个参数的差 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">double</span>
						<span> sub(</span>
						<span class="keyword">double</span>
						<span> v1,</span>
						<span class="keyword">double</span>
						<span> v2){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b1 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v1));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b2 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v2));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">return</span>
						<span> b1.subtract(b2).doubleValue();   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 提供精确的乘法运算。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v1 被乘数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v2 乘数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @return 两个参数的积 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">double</span>
						<span> mul(</span>
						<span class="keyword">double</span>
						<span> v1,</span>
						<span class="keyword">double</span>
						<span> v2){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b1 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v1));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b2 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v2));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">return</span>
						<span> b1.multiply(b2).doubleValue();   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 提供（相对）精确的除法运算，当发生除不尽的情况时，精确到 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 小数点以后10位，以后的数字四舍五入。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v1 被除数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v2 除数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @return 两个参数的商 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">double</span>
						<span> div(</span>
						<span class="keyword">double</span>
						<span> v1,</span>
						<span class="keyword">double</span>
						<span> v2){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">return</span>
						<span> div(v1,v2,DEF_DIV_SCALE);   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 提供（相对）精确的除法运算。当发生除不尽的情况时，由scale参数指 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 定精度，以后的数字四舍五入。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v1 被除数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v2 除数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param scale 表示表示需要精确到小数点以后几位。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @return 两个参数的商 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">double</span>
						<span> div(</span>
						<span class="keyword">double</span>
						<span> v1,</span>
						<span class="keyword">double</span>
						<span> v2,</span>
						<span class="keyword">int</span>
						<span> scale){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">if</span>
						<span>(scale&lt;</span>
						<span class="number">0</span>
						<span>){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">throw</span>
						<span> </span>
						<span class="keyword">new</span>
						<span> IllegalArgumentException(   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="string">"The scale must be a positive integer or zero"</span>
						<span>);   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b1 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v1));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b2 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v2));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">return</span>
						<span> b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 提供精确的小数位四舍五入处理。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v 需要四舍五入的数字 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param scale 小数点后保留几位 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @return 四舍五入后的结果 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">double</span>
						<span> round(</span>
						<span class="keyword">double</span>
						<span> v,</span>
						<span class="keyword">int</span>
						<span> scale){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">if</span>
						<span>(scale&lt;</span>
						<span class="number">0</span>
						<span>){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">throw</span>
						<span> </span>
						<span class="keyword">new</span>
						<span> IllegalArgumentException(   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="string">"The scale must be a positive integer or zero"</span>
						<span>);   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal one = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(</span>
						<span class="string">"1"</span>
						<span>);   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">return</span>
						<span> b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
		</ol>
<img src ="http://www.blogjava.net/mphome/aggbug/166783.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-10 20:47 <a href="http://www.blogjava.net/mphome/archive/2007/12/10/166783.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：JAVA如何调用DOS命令 </title><link>http://www.blogjava.net/mphome/archive/2007/12/03/165019.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 03 Dec 2007 14:02:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/03/165019.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/165019.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/03/165019.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/165019.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/165019.html</trackback:ping><description><![CDATA[
		<p>用Java编写应用时，有时需要在程序中调用另一个现成的可执行程序或系统命令，这时可以通过组合使用Java提供的Runtime类和Process类的方法实现。下面是一种比较典型的程序模式： <br />... <br />Process process = Runtime.getRuntime().exec(".\\p.exe"); <br />process.waitfor( ); <br />... <br />在上面的程序中，第一行的“.\\p.exe”是要执行的程序名，Runtime.getRuntime()返回当前应用程序的Runtime对象，该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序，并返回与该子进程对应的Process对象实例。通过Process可以控制该子进程的执行或获取该子进程的信息。第二条语句的目的等待子进程完成再往下执行。 <br />但在windows平台上，如果处理不当，有时并不能得到预期的结果。下面是笔者在实际编程中总结的几种需要注意的情况： <br />1、执行DOS的内部命令 <br />如果要执行一条DOS内部命令，有两种方法。一种方法是把命令解释器包含在exec()的参数中。例如，执行dir命令，在NT上， 可写成exec("cmd.exe /c dir")，在windows 95/98下，可写成“command.exe /c dir”，其中参数“/c”表示命令执行后关闭Dos立即关闭窗口。另一种方法是，把内部命令放在一个批命令my_dir.bat文件中，在Java程序中写成exec("my_dir.bat")。如果仅仅写成exec("dir")，Java虚拟机则会报运行时错误。前一种方法要保证程序的可移植性，需要在程序中读取运行的操作系统平台，以调用不同的命令解释器。后一种方法则不需要做更多的处理。 <br />2、打开一个不可执行的文件 <br />打开一个不可执行的文件，但该文件存在关联的应用程序，则可以有两种方式。 以打开一个word文档a.doc文件为例，Java中可以有以下两种写法： <br />exec("start .\\a.doc"); <br />exec(" c:\\Program Files\\Microsoft Office\\office\\winword.exe .\\a.doc"); <br />显然，前一种方法更为简捷方便。 <br />3、执行一个有标准输出的DOS可执行程序 <br />在windows平台上，运行被调用程序的DOS窗口在程序执行完毕后往往并不会自动关闭，从而导致Java应用程序阻塞在waitfor( )。导致该现象的一个可能的原因是，该可执行程序的标准输出比较多，而运行窗口的标准输出缓冲区不够大。解决的办法是，利用Java提供的Process类提供的方法让Java虚拟机截获被调用程序的DOS运行窗口的标准输出，在waitfor()命令之前读出窗口的标准输出缓冲区中的内容。一段典型的程序如下： <br />... <br />String ls_1; <br />Process process = Runtime.getRuntime().exec("cmd /c dir \\windows"); <br />BufferedReader bufferedReader = new BufferedReader( \ <br />new InputStreamReader(process.getInputStream()); <br />while ( (ls_1=bufferedReader.readLine()) != null) <br />System.out.println(ls_1); <br /> <br />process.waitfor( ); <br />...</p>
		<p>以上内容为转载~下面内容为原创！</p>
		<p>今天在做客户端程序的自动更新，简单描述一下，就是从服务器上将更新包下载下来，然后在本地解压缩，最后删掉~功能很简单~</p>
		<p>但是问题出在使用JAVA的ZIP模块做文件的解压缩不是想象的那么简单，资源需要释放，一个不小心就没有办法删除掉原有ZIP文件了~资源的占用确实是个大问题，但是好在，客户端程序更新完是要重启的，一切都烟消云散了~对于删除不掉ZIP文件的问题，我也流氓一下~用DEL硬删除~此处一定要注意！</p>
		<p>Process process = Runtime.getRuntime().exec("cmd /c del f:\\aaa.doc"); <br />这样的调用是没有问题~</p>
		<p>Process process = Runtime.getRuntime().exec("del f:\\aaa.doc"); <br />这样写是不可能对的~</p>
		<p>记录一下，警告一下后人！<br /><br /><br />Ref from：<a href="/leeguannan/archive/2007/11/29/164044.html">http://www.blogjava.net/leeguannan/archive/2007/11/29/164044.html</a></p>
<img src ="http://www.blogjava.net/mphome/aggbug/165019.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-03 22:02 <a href="http://www.blogjava.net/mphome/archive/2007/12/03/165019.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>点滴11月21日</title><link>http://www.blogjava.net/mphome/archive/2006/11/21/82475.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Tue, 21 Nov 2006 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2006/11/21/82475.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/82475.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2006/11/21/82475.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/82475.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/82475.html</trackback:ping><description><![CDATA[关于　split分割＼<br />String s="c:\\dir\\file.txt";<br />System.out.println(s.split(<a>\\\\</a>));<br />得到c:   dir   file.txt<br /><br />终于找到了一片好的AOP教程拉，以前看的教程都是一上来就讲Spring关于AOP的支持，根本看不明白．<br /><br />我认为讲Sping关于AOP的支持的话最好先学习一下ApestJ．个人建议，哈哈！<br /><br />贴上教程地址：<a href="http://www.easyjf.com/spring/spring2-aop.pdf">http://www.easyjf.com/spring/spring2-aop.pdf</a><br /><br /><img src ="http://www.blogjava.net/mphome/aggbug/82475.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2006-11-21 11:25 <a href="http://www.blogjava.net/mphome/archive/2006/11/21/82475.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>