<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>相信明天会更好 &#187; java</title>
	<atom:link href="http://www.sunnyweiwei2008.cn/category/java/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sunnyweiwei2008.cn</link>
	<description>Tomorrow will be better</description>
	<lastBuildDate>Thu, 25 Feb 2010 08:20:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>linux下切换不同版本的jdk</title>
		<link>http://www.sunnyweiwei2008.cn/2009/09/linux%e4%b8%8b%e5%88%87%e6%8d%a2%e4%b8%8d%e5%90%8c%e7%89%88%e6%9c%ac%e7%9a%84jdk.html</link>
		<comments>http://www.sunnyweiwei2008.cn/2009/09/linux%e4%b8%8b%e5%88%87%e6%8d%a2%e4%b8%8d%e5%90%8c%e7%89%88%e6%9c%ac%e7%9a%84jdk.html#comments</comments>
		<pubDate>Fri, 04 Sep 2009 02:10:44 +0000</pubDate>
		<dc:creator>sunny</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[jdk]]></category>
		<category><![CDATA[版本切换]]></category>

		<guid isPermaLink="false">http://www.sunnyweiwei2008.cn/?p=332</guid>
		<description><![CDATA[如果linux下面安装了两个不同版本的jdk，我们可以通过命令来实现让系统使用自己想用的版本。 ln -s /usr/java/jdk1.6.0/bin/java    /usr/bin/java制作一个软连接把自己安装在/usr/java中的java链接到/usr/bin/java命令上，这样当使用java命令的时候，就会自动去找6.0版本。 ln -s /usr/java/jdk1.6.0/bin/javac /usr/bin/javac这个也一样，实现了把javac命令链接到指定版本的jdk上。 执行完以上操作以后，我们可以利用java -version来查看现在java的版本号。]]></description>
			<content:encoded><![CDATA[<p>如果linux下面安装了两个不同版本的jdk，我们可以通过命令来实现让系统使用自己想用的版本。</p>
<ul>
<li>ln -s /usr/java/jdk1.6.0/bin/java    /usr/bin/java制作一个软连接把自己安装在/usr/java中的java链接到/usr/bin/java命令上，这样当使用java命令的时候，就会自动去找6.0版本。</li>
</ul>
<ul>
<li> ln -s /usr/java/jdk1.6.0/bin/javac /usr/bin/javac这个也一样，实现了把javac命令链接到指定版本的jdk上。</li>
</ul>
<p>执行完以上操作以后，我们可以利用java -version来查看现在java的版本号。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunnyweiwei2008.cn/2009/09/linux%e4%b8%8b%e5%88%87%e6%8d%a2%e4%b8%8d%e5%90%8c%e7%89%88%e6%9c%ac%e7%9a%84jdk.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>java修改ip地址</title>
		<link>http://www.sunnyweiwei2008.cn/2009/08/java%e4%bf%ae%e6%94%b9ip%e5%9c%b0%e5%9d%80.html</link>
		<comments>http://www.sunnyweiwei2008.cn/2009/08/java%e4%bf%ae%e6%94%b9ip%e5%9c%b0%e5%9d%80.html#comments</comments>
		<pubDate>Tue, 25 Aug 2009 01:31:16 +0000</pubDate>
		<dc:creator>sunny</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[.bat]]></category>
		<category><![CDATA[ip]]></category>

		<guid isPermaLink="false">http://www.sunnyweiwei2008.cn/?p=321</guid>
		<description><![CDATA[首先写一个批处理文件，然后再java中调用即可。步骤如下： 假设批处理文件为changeip.bat,内容如下： Codee#5104 @echo off netsh interface ip set address &#8220;本地连接&#8221; static 222.195.151.47 255.255.254.0 netsh interface ip set address name=&#8220;本地连接&#8221; gateway=222.195.151.254 gwmetric=0 netsh interface ip set dns name=&#8220;本地连接&#8221; source=static addr=211.64.142.6 register=PRIMARY exit   然后我们在java程序里面调用即可，调用语句如下： Java语言: Codee#5105 Process comm=Runtime.getRuntime().exec(&#8220;cmd /c start c:/changeip.bat&#8221;); 这样我们就可以实现更改本机ip了。]]></description>
			<content:encoded><![CDATA[<p>首先写一个批处理文件，然后再java中调用即可。步骤如下：</p>
<ol>
<li>假设批处理文件为changeip.bat,内容如下：</li>
</ol>
<div style="background:#fdfdfd;color:black;"><a href="http://fayaa.com/code/view/5104/">Codee#5104</a></div>
<div class="source" style="color: #000000; background-color: #cdeb8b; font-family: 'Courier New', 'Lucida Console', 'Bitstream Vera Sans Mono'; "><span style="color: #000000; ">@</span><span style="color: #0000aa; ">echo</span> <span style="color: #0000aa; ">off</span><br />
<span style="color: #000000; ">netsh interface ip </span><span style="color: #0000aa; ">set</span> <span style="color: #aa0000; ">address</span> <span style="color: #aa5500; ">&#8220;本地连接&#8221;</span><span style="color: #000000; "> static </span><span style="color: #009999; ">222</span><span style="color: #000000; ">.</span><span style="color: #009999; ">195</span><span style="color: #000000; ">.</span><span style="color: #009999; ">151</span><span style="color: #000000; ">.</span><span style="color: #009999; ">47</span> <span style="color: #009999; ">255</span><span style="color: #000000; ">.</span><span style="color: #009999; ">255</span><span style="color: #000000; ">.</span><span style="color: #009999; ">254</span><span style="color: #000000; ">.</span><span style="color: #009999; ">0</span><br />
<span style="color: #000000; ">netsh interface ip </span><span style="color: #0000aa; ">set</span> <span style="color: #aa0000; ">address</span><span style="color: #000000; "> name</span><span style="color: #000000; ">=</span><span style="color: #aa5500; ">&#8220;本地连接&#8221;</span><span style="color: #000000; "> gateway</span><span style="color: #000000; ">=</span><span style="color: #009999; ">222</span><span style="color: #000000; ">.</span><span style="color: #009999; ">195</span><span style="color: #000000; ">.</span><span style="color: #009999; ">151</span><span style="color: #000000; ">.</span><span style="color: #009999; ">254</span><span style="color: #000000; "> gwmetric</span><span style="color: #000000; ">=</span><span style="color: #009999; ">0</span><br />
<span style="color: #000000; ">netsh interface ip </span><span style="color: #0000aa; ">set</span> <span style="color: #aa0000; ">dns</span><span style="color: #000000; "> name</span><span style="color: #000000; ">=</span><span style="color: #aa5500; ">&#8220;本地连接&#8221;</span><span style="color: #000000; "> source</span><span style="color: #000000; ">=</span><span style="color: #000000; ">static addr</span><span style="color: #000000; ">=</span><span style="color: #009999; ">211</span><span style="color: #000000; ">.</span><span style="color: #009999; ">64</span><span style="color: #000000; ">.</span><span style="color: #009999; ">142</span><span style="color: #000000; ">.</span><span style="color: #009999; ">6</span><span style="color: #000000; "> register</span><span style="color: #000000; ">=</span><span style="color: #000000; ">PRIMARY</span><br />
<span style="color: #000000; ">exit</span></div>
<p>  然后我们在java程序里面调用即可，调用语句如下：</p>
<ol>
<div style="background:#fdfdfd;color:black;"><span style="text-decoration: underline;">Java语言</span>: <a href="http://fayaa.com/code/view/5105/">Codee#5105</a></div>
<div class="source" style="font-family: 'Courier New', 'Lucida Console', 'Bitstream Vera Sans Mono'; color: #000000; background-color: #cdeb8b; "><span style="color: #000000; ">Process</span> <span style="color: #000000; ">comm</span><span style="color: #000000; ">=</span><span style="color: #000000; ">Runtime</span><span style="color: #000000; ">.</span><span style="color: #1e90ff; ">getRuntime</span><span style="color: #000000; ">().</span><span style="color: #1e90ff; ">exec</span>(<span style="color: #aa5500; ">&#8220;cmd /c start c:/changeip.bat&#8221;</span>);</div>
</ol>
<p>这样我们就可以实现更改本机ip了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunnyweiwei2008.cn/2009/08/java%e4%bf%ae%e6%94%b9ip%e5%9c%b0%e5%9d%80.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux下不同版本的jdk冲突解决方法</title>
		<link>http://www.sunnyweiwei2008.cn/2009/02/conflict-in-jdk.html</link>
		<comments>http://www.sunnyweiwei2008.cn/2009/02/conflict-in-jdk.html#comments</comments>
		<pubDate>Thu, 26 Feb 2009 09:27:37 +0000</pubDate>
		<dc:creator>sunny</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[jdk]]></category>

		<guid isPermaLink="false">http://www.sunnyweiwei.cn/?p=170</guid>
		<description><![CDATA[装linux时系统自带的jdk版本过低，于是自己去官网上下载了一个，但是环境变量设置完毕以后，在终端输入java  -version显示的版本时1.4，这里就出现了冲突，那么怎样让高版本的jdk生效呢？ alternatives  &#8211;install  /usr/bin/java   java    /usr/java/jdk1.6.0_12/bin/java   3000（红色代表的是安装jdk的路径，3000代表自己给该版本的jdk设置的优先级应该与系统自带的优先级不同） alternatives  &#8211;display  java alternatives  &#8211;config  java alternatives  &#8211;install  /usr/bin/javac   javac  /usr/java/jdk1.6.0_12/bin/javac    3000 alternatives  &#8211;display   javac //显示当前系统中的javac共有几个版本 alternatives  &#8211;config  javac//配置javac选择较高版本的javac生效]]></description>
			<content:encoded><![CDATA[<p>装linux时系统自带的jdk版本过低，于是自己去官网上下载了一个，但是环境变量设置完毕以后，在终端输入java  -version显示的版本时1.4，这里就出现了冲突，那么怎样让高版本的jdk生效呢？<span id="more-170"></span></p>
<p>alternatives  &#8211;install  /usr/bin/java   java    <span style="color: #ff0000;">/usr/java/jdk1.6.0_12</span>/bin/java   <span style="color: #ff0000;">3000</span><span style="color: #00ff00;">（<strong>红色代表的是安装jdk的路径，3000代表自己给该版本的jdk设置的优先级应该与系统自带的优先级不同）</strong></span></p>
<p><span style="color: #000000;">alternatives  &#8211;display  java</span></p>
<p>alternatives  &#8211;config  java</p>
<p>alternatives  &#8211;install  /usr/bin/javac   javac  <span style="color: #ff0000;">/usr/java/jdk1.6.0_12</span><span style="color: #000000;">/bin/javac    3000</span></p>
<p>alternatives  &#8211;display   javac //<strong>显示当前系统中的javac共有几个版本</strong></p>
<p>alternatives  &#8211;config  javac//<strong>配置javac选择较高版本的javac生效</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunnyweiwei2008.cn/2009/02/conflict-in-jdk.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xp开机自动启动特定的java程序</title>
		<link>http://www.sunnyweiwei2008.cn/2009/02/run-java.html</link>
		<comments>http://www.sunnyweiwei2008.cn/2009/02/run-java.html#comments</comments>
		<pubDate>Mon, 23 Feb 2009 07:15:15 +0000</pubDate>
		<dc:creator>sunny</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[开机自动加载java]]></category>

		<guid isPermaLink="false">http://www.sunnyweiwei.cn/?p=158</guid>
		<description><![CDATA[首先写一个批处理文件设为startup.bat内容为： java  checkDB 然后把编译好的java程序与批处理文件.bat文件放在同一个目录下面（如果批处理文件与.class文件不在同一个文件夹下面，那么批处理文件首先用cd进入.class的存放目录然后再运行java checkDB即可) 进入“C:\Documents and Settings\Administrator\「开始」菜单\程序\启动”菜单项，把startuup的快捷方式加入到文件夹下面 这样就可以做到开机同时加载checkDB的类了。]]></description>
			<content:encoded><![CDATA[<p>首先写一个批处理文件设为startup.bat内容为：</p>
<p>java  checkDB</p>
<p>然后把编译好的java程序与批处理文件.bat文件放在同一个目录下面（如果批处理文件与.class文件不在同一个文件夹下面，那么批处理文件首先用cd进入.class的存放目录然后再运行java checkDB即可)</p>
<p>进入“C:\Documents and Settings\Administrator\「开始」菜单\程序\启动”菜单项，把startuup的快捷方式加入到文件夹下面</p>
<p>这样就可以做到开机同时加载checkDB的类了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunnyweiwei2008.cn/2009/02/run-java.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>java获取系统时间并转化为&#8221;-&#8221;相连接的形式</title>
		<link>http://www.sunnyweiwei2008.cn/2009/02/systemtime-java.html</link>
		<comments>http://www.sunnyweiwei2008.cn/2009/02/systemtime-java.html#comments</comments>
		<pubDate>Wed, 18 Feb 2009 12:12:53 +0000</pubDate>
		<dc:creator>sunny</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[系统时间]]></category>

		<guid isPermaLink="false">http://www.sunnyweiwei.cn/?p=155</guid>
		<description><![CDATA[Calendar c=Calendar.getInstance(); String s=c.get(Calendar.YEAR)+&#8221;-&#8221;+(c.get(Calendar.MONTH)+1)+&#8221;-&#8221;+c.get(Calendar.DATE)+&#8221;-&#8221;+c.get(Calendar.HOUR_OF_DAY)+&#8221;:&#8221;+c.get(Calendar.MINUTE+&#8221;:&#8221;+c.get(Calendar.SECOND));]]></description>
			<content:encoded><![CDATA[<p><span> </span>Calendar c=Calendar.getInstance();</p>
<p><span> </span>String s=c.get(Calendar.YEAR)+&#8221;-&#8221;+(c.get(Calendar.MONTH)+1)+&#8221;-&#8221;+c.get(Calendar.DATE)+&#8221;-&#8221;+c.get(Calendar.HOUR_OF_DAY)+&#8221;:&#8221;+c.get(Calendar.MINUTE+&#8221;:&#8221;+c.get(Calendar.SECOND));</p>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunnyweiwei2008.cn/2009/02/systemtime-java.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>java中的数据存储细节</title>
		<link>http://www.sunnyweiwei2008.cn/2008/12/date-save.html</link>
		<comments>http://www.sunnyweiwei2008.cn/2008/12/date-save.html#comments</comments>
		<pubDate>Tue, 02 Dec 2008 06:53:50 +0000</pubDate>
		<dc:creator>sunny</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[堆内存]]></category>
		<category><![CDATA[数据存储]]></category>
		<category><![CDATA[栈内存]]></category>

		<guid isPermaLink="false">http://www.sunnyweiwei.cn/?p=116</guid>
		<description><![CDATA[计算机的物理内存在os和jvm中使用时分为堆内存和栈内存两种方式： 堆内存：（Heap Memory）由所有的应用程序公用，存储空间不连续，存储容量大。在堆内存中分配存储空间和进行存取操作速度慢。 栈内存（Stack Heap）由特定的应用程序专用，存储空间是连续的，以栈的方式（后进先出）进行管理，存储容量小，但是访问速度快。 java程序运行时，局部变量是保存在栈内存中，而对象及其成员变量保存在堆内存中。]]></description>
			<content:encoded><![CDATA[<p>计算机的物理内存在os和jvm中使用时分为堆内存和栈内存两种方式：</p>
<ul>
<li>堆内存：（Heap Memory）由所有的应用程序公用，存储空间不连续，存储容量大。在堆内存中分配存储空间和进行存取操作速度慢。</li>
<li>栈内存（Stack Heap）由特定的应用程序专用，存储空间是连续的，以栈的方式（后进先出）进行管理，存储容量小，但是访问速度快。</li>
</ul>
<p>java程序运行时，局部变量是保存在栈内存中，而对象及其成员变量保存在堆内存中。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunnyweiwei2008.cn/2008/12/date-save.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>java中的滚动条和菜单</title>
		<link>http://www.sunnyweiwei2008.cn/2008/11/scrollandbar.html</link>
		<comments>http://www.sunnyweiwei2008.cn/2008/11/scrollandbar.html#comments</comments>
		<pubDate>Tue, 18 Nov 2008 14:04:54 +0000</pubDate>
		<dc:creator>sunny</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[JMenu]]></category>
		<category><![CDATA[JScrollBar]]></category>

		<guid isPermaLink="false">http://www.sunnyweiwei.cn/?p=95</guid>
		<description><![CDATA[滚动条（JScrollBar) 因为滚动条要实现能够左右,上下移动.所以就要有相应的监听器,所以在当图形界面中有滚动条时,不要忘了在程序开头加上import java.awt.event.*；JScrollBar对象会产生一个AdjustmentEvent事件，所以要在程序中继承接口AdjustmentListener其监听器方法是adjustmentValueChanged(AdjustmentEvent e). 其属性有：orientation指定滚动条的方向 jsbHort=new JScrollBar(); jsbVert=new JScrollBar(); jsbHort.setOrientation(Adjustable.HORIZONTAL);//设置为水平滚动条 jsbVert.setOrientation(Adjustable.VERTICAL);//为垂直滚动条 jsbHort.addAdjustmentListener(this);//加上监听器 jsbVert.addAdjustmentListener(this);//同上 double value=jsbVert.getValue();//获得滚动条的当前水平滚动值 double maximumValue=jsbVert.getMaximum();//获得滚动条水平滚动最大值 菜单（JMenu） 它要实现的监听器接口是ActionListener,监听器方法为actionPerformed(ActionEvent e) Java语言: 创建菜单 JFrame frame=new JFrame(); JMenuBar jmb=new JMenuBar();//新建一个菜单栏 frame.setJMenuBar(jmb);//把菜单栏与框架产生关联 JMenu fileMenu=new JMenu(&#8220;File&#8221;);//新建一个一个菜单File jmb.add(fileMenu);//把菜单项加到菜单栏中 fileMenu.add(new JMenuItem(&#8220;new&#8221;));//给File菜单添加菜单项 fileMenu.addSeperator();//添加一条分隔线 具体的可以查看相应的API]]></description>
			<content:encoded><![CDATA[<ul>
<li>滚动条（JScrollBar)</li>
</ul>
<ol>
<li> 因为滚动条要实现能够左右,上下移动.所以就要有相应的监听器,所以在当图形界面中有滚动条时,不要忘了在程序开头加上import java.awt.event.*；JScrollBar对象会产生一个AdjustmentEvent事件，所以要在程序中继承接口AdjustmentListener其监听器方法是adjustmentValueChanged(AdjustmentEvent e).</li>
<li>其属性有：orientation指定滚动条的方向</li>
</ol>
<p>jsbHort=new JScrollBar();<br />
jsbVert=new JScrollBar();<br />
jsbHort.setOrientation(Adjustable.HORIZONTAL);//设置为水平滚动条<br />
jsbVert.setOrientation(Adjustable.VERTICAL);//为垂直滚动条</p>
<p>jsbHort.addAdjustmentListener(this);//加上监听器<br />
jsbVert.addAdjustmentListener(this);//同上</p>
<p>double value=jsbVert.getValue();//获得滚动条的当前水平滚动值</p>
<p>double maximumValue=jsbVert.getMaximum();//获得滚动条水平滚动最大值</p>
<p><span id="more-95"></span></p>
<ul>
<li>菜单（JMenu）</li>
</ul>
<p>它要实现的监听器接口是ActionListener,监听器方法为actionPerformed(ActionEvent e)</p>
<div style="background: #fdfdfd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="text-decoration: underline;">Java语言</span>: <a href="http://www.fayaa.com/code/view//">创建菜单</a></div>
<div class="source" style="font-family: ">JFrame frame<span style="color: #666666;">=</span><span style="font-weight: bold; color: #007020;">new</span> JFrame<span style="color: #666666;">();</span><br />
JMenuBar jmb<span style="color: #666666;">=</span><span style="font-weight: bold; color: #007020;">new</span> JMenuBar<span style="color: #666666;">();</span><span style="font-style: italic; color: #60a0b0;">//新建一个菜单栏</span><br />
frame<span style="color: #666666;">.</span><span style="color: #4070a0;">setJMenuBar</span><span style="color: #666666;">(</span>jmb<span style="color: #666666;">);</span><span style="font-style: italic; color: #60a0b0;">//把菜单栏与框架产生关联</span><br />
JMenu fileMenu<span style="color: #666666;">=</span><span style="font-weight: bold; color: #007020;">new</span> JMenu<span style="color: #666666;">(</span><span style="color: #4070a0;">&#8220;File&#8221;</span><span style="color: #666666;">);</span><span style="font-style: italic; color: #60a0b0;">//新建一个一个菜单File</span><br />
jmb<span style="color: #666666;">.</span><span style="color: #4070a0;">add</span><span style="color: #666666;">(</span>fileMenu<span style="color: #666666;">);</span><span style="font-style: italic; color: #60a0b0;">//把菜单项加到菜单栏中</span><br />
fileMenu<span style="color: #666666;">.</span><span style="color: #4070a0;">add</span><span style="color: #666666;">(</span><span style="font-weight: bold; color: #007020;">new</span> JMenuItem<span style="color: #666666;">(</span><span style="color: #4070a0;">&#8220;new&#8221;</span><span style="color: #666666;">));</span><span style="font-style: italic; color: #60a0b0;">//给File菜单添加菜单项</span><br />
fileMenu<span style="color: #666666;">.</span><span style="color: #4070a0;">addSeperator</span><span style="color: #666666;">();</span><span style="font-style: italic; color: #60a0b0;">//添加一条分隔线</span></div>
<p>具体的可以查看相应的API</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunnyweiwei2008.cn/2008/11/scrollandbar.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>只言片语&#8211;java中的文件读写</title>
		<link>http://www.sunnyweiwei2008.cn/2008/11/fileio.html</link>
		<comments>http://www.sunnyweiwei2008.cn/2008/11/fileio.html#comments</comments>
		<pubDate>Sun, 16 Nov 2008 14:19:25 +0000</pubDate>
		<dc:creator>sunny</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[InputStream]]></category>
		<category><![CDATA[OutPutStream]]></category>
		<category><![CDATA[Reader]]></category>
		<category><![CDATA[Writer]]></category>
		<category><![CDATA[文件读写]]></category>

		<guid isPermaLink="false">http://www.sunnyweiwei.cn/?p=93</guid>
		<description><![CDATA[在文件读写部分中,我们如果要读取格式化数据.可以使用DataInputStream,它是以俄国面向字节的I/O类,因此我们必须使用InputStream类,而不是Reader类,当然我们可以用InputStream以字节的形式读取任何数据(例如一个文件),不过.在这里我们用的是字符串,为了能将字符串转化成适用于ByteArrayInputStream的字节数组,String包含了一个可以将字符串转化为字节数组的getByte（）方法。所以我们就持有了一个可传递给DataInputStream的InputStream。 try{ DataInputStream in3=new DataInputStream(new ByteArrayInputStream(s2.getBytes()));//s2是String类型的 System.out.print((char) in3.readByte()); }cacth(EOFException e) {System.out.println(&#8220;End of stream&#8221;);//此时我们是通过捕获异常来检测输入的末尾，但是使用异常进行流控制，被认为是对异常特性的错误使用 } 我们还可以通过available()方法查看还有多少可供存取的字符。例如 Java语言: available()判断文件是否是否到末尾 import java.io.*; public class TestEOF{ public static void main(String[] args) throws IOException { DataInputStream in=new DateInputSteam(new BufferedInputStream(new FileInputStream(&#8220;TestEOF.java&#8221;))); while(in.available()!=0) { System.out.print((char)in.readByte()); } } } 关于文件输出： 首先创建与制定文件连接的FileWriter，但是为了显著增加I/O操作的性能，我们通常会用BufferedWriter将其包装起来用一缓冲输出，然后为了格式化，将它转化成PrintWriter。按照这种方式创建数据文件可作为普通文本文件读取。 标准I/O： JAVA提供了System.out,System.in,System.err.其中System.out已经事先被包装成了printStream对象。System.err同样也是PrintStream对象。但是System.in却是一个没有包装过的未经加工的InputStream，这就意味着我们可以立即使用System.out和System.err,但是在读取System.in之前必须对其进行包装。 通常我们会用readLine()一次一行的读取输入，因此我们会将Sysetem.in包装成BufferReader来使用。所以我们必须用InputStreamReader把System.in转化成Reader 注：readLine()会抛出IOException所以要注意声明。 将System.out转化成PrintWriter System.out是一个PrintStream而PrintStream是一个OutputStream。PrintWriter有一个可以接受OutputStream作为参数的构造器。 PrintWriter out=new PrintWriter(System.out,true);]]></description>
			<content:encoded><![CDATA[<p>在文件读写部分中,我们如果要读取格式化数据.可以使用DataInputStream,它是以俄国面向<span style="color: #ff0000;">字节</span>的I/O类,因此我们必须使用InputStream类,而不是Reader类,当然我们可以用InputStream以字节的形式读取任何数据(例如一个文件),不过.在这里我们用的是字符串,为了能将字符串转化成适用于ByteArrayInputStream的字节数组,String包含了一个可以将字符串转化为字节数组的getByte（）方法。所以我们就持有了一个可传递给DataInputStream的InputStream。</p>
<p>try{</p>
<p>DataInputStream in3=new DataInputStream(new ByteArrayInputStream(s2.getBytes()));//s2是String类型的</p>
<p>System.out.print((char) in3.readByte());</p>
<p>}cacth(EOFException e)</p>
<p>{System.out.println(&#8220;End of stream&#8221;);//<span style="color: #ff0000;">此时我们是通过捕获异常来检测输入的末尾，但是使用异常进行流控制，被认为是对异常特性的错误使用</span></p>
<p>}</p>
<p><span id="more-93"></span></p>
<p>我们还可以通过available()方法查看还有多少可供存取的字符。例如</p>
<div style="background: #fdfdfd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="text-decoration: underline;">Java语言</span>: <a href="http://www.fayaa.com/code/view//">available()判断文件是否是否到末尾</a></div>
<div class="source" style="font-family: ">import <span style="font-weight: bold; color: #0e84b5;">java.io.*</span><span style="color: #666666;">;</span><br />
<span style="font-weight: bold; color: #007020;">public</span> <span style="font-weight: bold; color: #007020;">class</span> <span style="font-weight: bold; color: #0e84b5;">TestEOF</span><span style="color: #666666;">{</span><br />
<span style="font-weight: bold; color: #007020;">public</span> <span style="font-weight: bold; color: #007020;">static</span> <span style="color: #902000;">void</span> <span style="color: #06287e;">main</span><span style="color: #666666;">(</span>String<span style="color: #666666;">[]</span> args<span style="color: #666666;">)</span> <span style="font-weight: bold; color: #007020;">throws</span> IOException<br />
<span style="color: #666666;">{</span><br />
DataInputStream in<span style="color: #666666;">=</span><span style="font-weight: bold; color: #007020;">new</span> DateInputSteam<span style="color: #666666;">(</span><span style="font-weight: bold; color: #007020;">new</span> BufferedInputStream<span style="color: #666666;">(</span><span style="font-weight: bold; color: #007020;">new</span> FileInputStream<span style="color: #666666;">(</span><span style="color: #4070a0;">&#8220;TestEOF.java&#8221;</span><span style="color: #666666;">)));</span><br />
<span style="font-weight: bold; color: #007020;">while</span><span style="color: #666666;">(</span>in<span style="color: #666666;">.</span><span style="color: #4070a0;">available</span><span style="color: #666666;">()!=</span><span style="color: #40a070;">0</span><span style="color: #666666;">)</span><br />
<span style="color: #666666;">{</span><br />
System<span style="color: #666666;">.</span><span style="color: #4070a0;">out</span><span style="color: #666666;">.</span><span style="color: #4070a0;">print</span><span style="color: #666666;">((</span><span style="color: #902000;">char</span><span style="color: #666666;">)</span>in<span style="color: #666666;">.</span><span style="color: #4070a0;">readByte</span><span style="color: #666666;">());</span><br />
<span style="color: #666666;">}</span><br />
<span style="color: #666666;">}</span><br />
<span style="color: #666666;">}</span></div>
<p>关于文件输出：</p>
<p>首先创建与制定文件连接的FileWriter，但是为了显著增加I/O操作的性能，我们通常会用BufferedWriter将其包装起来用一缓冲输出，然后为了格式化，将它转化成PrintWriter。按照这种方式创建数据文件可作为普通文本文件读取。</p>
<p><span style="color: #ff0000;"><strong>标准I/O：</strong></span></p>
<p>JAVA提供了System.out,System.in,System.err.其中System.out已经事先被包装成了printStream对象。System.err同样也是PrintStream对象。但是System.in却是一个没有包装过的未经加工的InputStream，这就意味着我们可以立即使用System.out和System.err,但是在读取System.in之前必须对其进行包装。</p>
<p>通常我们会用readLine()一次一行的读取输入，因此我们会将Sysetem.in包装成BufferReader来使用。所以我们必须用InputStreamReader把System.in转化成Reader</p>
<p>注：readLine()会抛出IOException所以要注意声明。</p>
<p><span style="color: #ff0000;">将System.out转化成PrintWriter</span></p>
<p>System.out是一个PrintStream而PrintStream是一个OutputStream。PrintWriter有一个可以接受OutputStream作为参数的构造器。</p>
<p>PrintWriter out=new PrintWriter(System.out,true);</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunnyweiwei2008.cn/2008/11/fileio.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>java中的异常</title>
		<link>http://www.sunnyweiwei2008.cn/2008/11/exception-in-java.html</link>
		<comments>http://www.sunnyweiwei2008.cn/2008/11/exception-in-java.html#comments</comments>
		<pubDate>Tue, 11 Nov 2008 12:46:09 +0000</pubDate>
		<dc:creator>sunny</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[异常处理]]></category>

		<guid isPermaLink="false">http://www.sunnyweiwei.cn/?p=79</guid>
		<description><![CDATA[在java中不要求在方法中显式的声明Error和RuntimeException,如果要抛出其他异常必须提前声明我们可以用throws来声明抛出的异常,当要抛出多个异常时,用逗号隔开. 注意: 一个方法是不能抛出一个没有声明的异常. 抛出异常: 在声明了异常的方法中.如果出现了异常,就可以抛出一个异常对象例如: throw  new  TheException(); 等价于TheException  ex=new TheException(); throw  ex; 捕获异常 ：当调用一个显式声明的异常的方法时，必须使用try-catch块括住抛出异常的语句，如： Java语言: 捕获异常 try { statements that may throw exceptions } catch(Exception1 e) { handle for exception1 } cacth(Exception2 e) { handle for exception2 } &#8230; &#8230; 如果try中抛出的异常没有被任何一个catch捕获则java就会退出这个方法,并将异常传递给调用该方法的方法,继续重复寻找时间处理器的过程,如果一直没有找到,程序就会终止,并在控制台打印出错误信息. 异常对象中包含异常的有用信息,可以利用java.lang.Throwable类中的下列实例方法获取异常： public string getMessage() 返回此 Throwable或Exception 的详细消息字符串。 public string toString() 返回此 Throwable或Exception  的简短描述。 [...]]]></description>
			<content:encoded><![CDATA[<p>在java中不要求在方法中显式的声明Error和RuntimeException,如果要抛出其他异常必须提前声明我们可以用throws来声明抛出的异常,当要抛出多个异常时,用逗号隔开.</p>
<p><span style="color: #ff0000;">注意:</span> 一个方法是不能抛出一个没有声明的异常.</p>
<p>抛出异常: 在声明了异常的方法中.如果出现了异常,就可以抛出一个异常对象例如: throw  new  TheException();</p>
<p>等价于TheException  ex=new TheException();</p>
<p>throw  ex;</p>
<p><span id="more-79"></span></p>
<p>捕获异常 ：当调用一个显式声明的异常的方法时，必须使用try-catch块括住抛出异常的语句，如：</p>
<div style="background: #fdfdfd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="text-decoration: underline;">Java语言</span>: <a href="http://www.fayaa.com/code/view//">捕获异常</a></div>
<div class="source" style="font-family: "><span style="font-weight: bold; color: #007020;">try</span><br />
<span style="color: #666666;">{</span><br />
statements that may <span style="font-weight: bold; color: #007020;">throw</span> exceptions<br />
<span style="color: #666666;">}</span><br />
<span style="font-weight: bold; color: #007020;">catch</span><span style="color: #666666;">(</span>Exception1 e<span style="color: #666666;">)</span><br />
<span style="color: #666666;">{</span><br />
handle <span style="font-weight: bold; color: #007020;">for</span> exception1<br />
<span style="color: #666666;">}</span><br />
cacth<span style="color: #666666;">(</span>Exception2 e<span style="color: #666666;">)</span><br />
<span style="color: #666666;">{</span><br />
handle <span style="font-weight: bold; color: #007020;">for</span> exception2<br />
<span style="color: #666666;">}</span><br />
<span style="color: #666666;">&#8230;</span> <span style="color: #666666;">&#8230;</span></div>
<p>如果try中抛出的异常没有被任何一个catch捕获则java就会退出这个方法,并将异常传递给调用该方法的方法,继续重复寻找时间处理器的过程,如果一直没有找到,程序就会终止,并在控制台打印出错误信息.</p>
<p>异常对象中包含异常的有用信息,可以利用java.lang.Throwable类中的下列实例方法获取异常：</p>
<ul>
<li>public string getMessage()</li>
</ul>
<p>返回此 Throwable或Exception 的详细消息字符串。</p>
<ul>
<li>public string toString()</li>
</ul>
<p>返回此 Throwable或Exception  的简短描述。</p>
<p>如果此 Throwable或Exception  对象是利用非空详细消息字符串创建的，则结果是三个字符串的串联：</p>
<p>1)此对象的实际类的名称</p>
<p>2)&#8221;: &#8220;（冒号和空格）</p>
<p>3)此对象的 getMessage() 方法的结果<br />
如果此 Throwable或Exception  对象利用 null 详细消息字符串创建，则返回此对象的实际类的名称。</p>
<ul>
<li>public void printStackTrace()</li>
</ul>
<p>将此 throwable 及其追踪输出至标准错误流。<br />
此方法将此 Throwable或Exception 对象的堆栈跟踪输出至错误输出流，作为字段 System.err 的值。<br />
输出的第一行包含此对象的 toString() 方法的结果。剩余行表示以前由方法 fillInStackTrace() 记录的数据。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunnyweiwei2008.cn/2008/11/exception-in-java.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>不同语言的垃圾回收机制（转）</title>
		<link>http://www.sunnyweiwei2008.cn/2008/11/garbage.html</link>
		<comments>http://www.sunnyweiwei2008.cn/2008/11/garbage.html#comments</comments>
		<pubDate>Tue, 11 Nov 2008 08:01:21 +0000</pubDate>
		<dc:creator>sunny</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[计算机相关]]></category>
		<category><![CDATA[垃圾回收]]></category>

		<guid isPermaLink="false">http://www.sunnyweiwei.cn/?p=78</guid>
		<description><![CDATA[不同语言和系统的垃圾回收机制是不同的。 C语言实际没有垃圾回收机制，一切依赖程序员和操作系统。如果编写的程序忘记释放内存而又长时 间的运行，麻烦就来了。而如果编译器本身的库函数有问题，那就更可怕了。Borland的C/C++编译器经常有这个问题，业界很多人都知道的，因此很少 有人敢用它来做大的软件。 C++语言在类的析构函数中提供垃圾回收，由程序员决定释放那些资源，当程序调用某个类的析构函数时，垃圾回收工作执行并完成。这实际上任然是程序员控制的方式。 Java则提供了独立的垃圾回收机制，它无需程序员的介入，由Java虚拟机来决定何时进行垃圾回收。当然程序员在一定情况下可以强制垃圾回收机制立即工作，方法是调用system.gc下面的几个方法（具体查书）。 具体的实现分为两大部分，一部分是如何确定哪些是垃圾，另一部分是如何回收。 在 第一部分中有两大类方法，第一种是所谓的引用计数法，引用计数为零的自然是垃圾了，这种方法很简单，但是无法处理相互引用的问题；第二种是所谓的顺藤摸瓜 法，因为Java所有的东西无非两大类，目标和非目标，目标存在堆中，非目标存在栈中，栈的先进后出方式决定了不会有垃圾问题，而所有的目标都是 Object的某代后代。从头摸起，就可以确定谁是好人（有人要的，有领导的），谁是坏蛋（没有人要的，没有领导的），将坏蛋处理就是了。 第二部分又分成两大类，同步和异步。 所谓同步就是在某一时刻所有的处理暂停，作垃圾回收，然后再继续暂停的处理。这种方法很简单，但是会造成系统性能的颠簸。 所谓异步就是分成两步走，先暂停处理，进行标记；然后将系统分区，按分区分别处理坏蛋，这种方法的好处是系统性能的颠簸会减少，缺点是由于同步的问题，可能放过坏人。 PC 上一般使用同步的方法，因为PC上的应用一般不太大，系统颠簸的影响不大。AS/400上一般使用异步的方法，和AS/400的系统特点（多个子系统）相 结合，可以将不足降到最小，当然AS/400也可以使用同步的方法，这可以在WebSphere for AS/400中进行设置。 .Net的垃圾回收机制和Java的非常相似，这里就不赘述了。]]></description>
			<content:encoded><![CDATA[<p>不同语言和系统的垃圾回收机制是不同的。</p>
<p>C语言实际没有垃圾回收机制，一切依赖程序员和操作系统。如果编写的程序忘记释放内存而又长时 间的运行，麻烦就来了。而如果编译器本身的库函数有问题，那就更可怕了。Borland的C/C++编译器经常有这个问题，业界很多人都知道的，因此很少 有人敢用它来做大的软件。</p>
<p>C++语言在类的析构函数中提供垃圾回收，由程序员决定释放那些资源，当程序调用某个类的析构函数时，垃圾回收工作执行并完成。这实际上任然是程序员控制的方式。</p>
<p>Java则提供了独立的垃圾回收机制，它无需程序员的介入，由Java虚拟机来决定何时进行垃圾回收。当然程序员在一定情况下可以强制垃圾回收机制立即工作，方法是调用system.gc下面的几个方法（具体查书）。</p>
<p>具体的实现分为两大部分，一部分是如何确定哪些是垃圾，另一部分是如何回收。</p>
<p>在 第一部分中有两大类方法，第一种是所谓的引用计数法，引用计数为零的自然是垃圾了，这种方法很简单，但是无法处理相互引用的问题；第二种是所谓的顺藤摸瓜 法，因为Java所有的东西无非两大类，目标和非目标，目标存在堆中，非目标存在栈中，栈的先进后出方式决定了不会有垃圾问题，而所有的目标都是 Object的某代后代。从头摸起，就可以确定谁是好人（有人要的，有领导的），谁是坏蛋（没有人要的，没有领导的），将坏蛋处理就是了。</p>
<p><span id="more-78"></span></p>
<p>第二部分又分成两大类，同步和异步。</p>
<p>所谓同步就是在某一时刻所有的处理暂停，作垃圾回收，然后再继续暂停的处理。这种方法很简单，但是会造成系统性能的颠簸。</p>
<p>所谓异步就是分成两步走，先暂停处理，进行标记；然后将系统分区，按分区分别处理坏蛋，这种方法的好处是系统性能的颠簸会减少，缺点是由于同步的问题，可能放过坏人。</p>
<p>PC 上一般使用同步的方法，因为PC上的应用一般不太大，系统颠簸的影响不大。AS/400上一般使用异步的方法，和AS/400的系统特点（多个子系统）相 结合，可以将不足降到最小，当然AS/400也可以使用同步的方法，这可以在WebSphere for AS/400中进行设置。</p>
<p>.Net的垃圾回收机制和Java的非常相似，这里就不赘述了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunnyweiwei2008.cn/2008/11/garbage.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

