﻿<?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-期待更好更稳定的开源FrameWork的出现,让我们一起努力吧!</title><link>http://www.blogjava.net/itwangxinli/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 21:12:44 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 21:12:44 GMT</pubDate><ttl>60</ttl><item><title>SVN</title><link>http://www.blogjava.net/itwangxinli/archive/2009/09/03/293748.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Thu, 03 Sep 2009 08:10:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2009/09/03/293748.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/293748.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2009/09/03/293748.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/293748.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/293748.html</trackback:ping><description><![CDATA[<p>SVN相信大家都有使用过或者听说过吧？它的好处我这里就不说了，网上介绍多的是。因为是版本控制，所以个人认为其设计的原理不需要懂得太多，只需要了解常识即可。小弟google了许久，也没找到一篇介绍快速入门的文章。无奈之下，看了几篇长篇大论，终于学了点点的皮毛。下面我将写一个svn快速入门系列，因为是快速入门，所以一般只讲操作。（这里有些内容都是参考 深入浅出系列之二_SubVersion） </p>
<p>&nbsp;&nbsp;&nbsp; 首先，我们下载svn安装文件，输入网址：<a href="http://subversion.tigris.org/">http://subversion.tigris.org</a> ，找到<a href="http://subversion.tigris.org/getting.html#binary-packages">...more downloads...</a>，然后找到windows那一块下载，注意，有两个版本<a href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91">Apache 2.0</a> or <a href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100">Apache 2.2</a> ，可以选择和你电脑里面apache服务器同样的版本下载。</p>
<p>&nbsp;&nbsp;&nbsp; 安装完成后，可在命令行输入svn --version查看是否安装成功,以及在系统变量里查看path是否增加了svn的安装目录。如下图：</p>
<p><img title="未命名" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="98" alt="未命名" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/%E6%9C%AA%E5%91%BD%E5%90%8D_thumb.jpg" width="578" border="0" /></p>
<p>&nbsp;&nbsp;&nbsp; 接着，在服务器端创立创库（repository）。a.手动在硬盘上创建一个文件夹。</p>
<p>&nbsp;&nbsp;&nbsp; <a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_4.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="195" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_thumb_1.png" width="339" border="0" /></a></p>
<p>&nbsp;&nbsp;&nbsp; b.在命令行输入svnadmin create + 仓库目录。&nbsp; 创建版本库。如图：</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_6.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="115" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_thumb_2.png" width="584" border="0" /></a> </p>
<p>&nbsp;&nbsp;&nbsp; 此时。仓库所在文件夹会多出几个文件，说明仓库创建成功。</p>
<p>&nbsp;&nbsp;&nbsp; SVN此时已经在你的电脑里准备就绪，下面将介绍SVN的几个常用命令：import ，checkout，commit，update以及mkdir。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 在执行import，commit，update，mkdir的时候，svn需要记录操作日志，方法一：在系统环境变量增加一个SVN_EDITOR变量，该变量的值取为系统自带的记事本：notepad。方法二，建立一个log.txt，作为日志。（一般建议用方法二，所以我下面将用方法二）。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 为了便于在命令行下的操作，先设置svn为允许匿名帐号进行读写的操作：在仓库的conf目录下有一个文件svnserve.conf，用记事本打开，可以看到一行：#anon-access = read，意思为匿名用户有读的权限。将其前面的注释符#去掉。这一行即生效。再加上一行：anon-access = write，赋予匿名用户写的操作。如图：
<p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_10.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="246" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_thumb_4.png" width="518" border="0" /></a>
<p>&nbsp;&nbsp;&nbsp; 首先，启动服务： svnserve &#8211;d &#8211;r k:\repository，该命令含义为让SVN将此目录作为仓库，并侦听客户端的请求。其中-d的作用为后台模式，而-r的作用为指定服务器的仓库路径。
<p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_26.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="104" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_thumb.png" width="620" border="0" /></a>
<p>&nbsp;&nbsp;&nbsp; 建立新的命令提示符，执行mkdir命令在svn创建一个test的虚拟目录：&nbsp; svn mkdir svn://localhost/test1 &#8211;F k:\log.txt&nbsp;&nbsp; 如图
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_12.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="125" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_thumb_5.png" width="601" border="0" /></a> </p>
<p>&nbsp; 接着，创建一个test目录，里面新建一个text1.txt文件。：</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_14.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="260" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_thumb_6.png" width="453" border="0" /></a> </p>
<p>&nbsp;&nbsp;&nbsp; 命令行转到test目录，执行import命令，将test上传到svn服务器。</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_16.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="142" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_thumb_7.png" width="584" border="0" /></a></p>
<p>&nbsp;&nbsp; 下面讲述checkout命令。</p>
<p>&nbsp;&nbsp; 首先新建一个文件夹test2，在命令行转到这个文件夹，执行：&nbsp; svn checkout svn://localhost/test1。注意，check操作不需要写入log</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_18.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="147" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_thumb_8.png" width="588" border="0" /></a>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp; 接着讲述commit命令.</p>
<p>&nbsp;&nbsp; 如图,更改checkout下来的text1.txt文件</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_20.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="232" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_thumb_9.png" width="431" border="0" /></a>&nbsp;</p>
<p>在命令行执行commit命令:&nbsp; svn commit text1.txt &#8211;F k:\log.txt</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_22.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="136" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_thumb_10.png" width="590" border="0" /></a> </p>
<p>&nbsp;&nbsp;&nbsp; 最后讲述update命令:执行svm update text1.txt 取出text1.txt的最新版本。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_24.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="82" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN1SVN_4BB/image_thumb_11.png" width="592" border="0" /></a></p>
<img src ="http://www.blogjava.net/itwangxinli/aggbug/293748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2009-09-03 16:10 <a href="http://www.blogjava.net/itwangxinli/archive/2009/09/03/293748.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于TR-069 协议的开发(一)</title><link>http://www.blogjava.net/itwangxinli/archive/2009/01/07/250375.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Wed, 07 Jan 2009 09:06:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2009/01/07/250375.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/250375.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2009/01/07/250375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/250375.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/250375.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TR 069是DSL Fourm提出来的一种协议，即CWMP协议，主要是对 用户终端设备的管理。<br />
其功能主要有两块组成ACS(Auto Config Server)和CPE(Customer Pression Equalment)。其具体功能请参考<br />
TR-069协议，网络上也有介绍，在此不再多说了。<br />
&nbsp;&nbsp;&nbsp; &nbsp;最近公司接到了一个项目，主要是对电信的AP(Access Point)设备进行性能监控和管理。我也是项目组的开发人员，主要是负责ACS的搭建。<br />
&nbsp;&nbsp;&nbsp;&nbsp; CPE会定时呼叫ACS,ACS也可以呼叫CPE。根据协议的描述，其实ACS和CPE之间的通信其实类似与WebService,在HTTP的基础上通过RCP远程过程调用CPE的方法。说白了，就是通过HTTP发送XML或者解析xml。那么ACS就很简单了，只需要支持HTTP就可了，所以Servlet是ACS实现的一种选择。<br />
<br />
&nbsp;&nbsp; 在进行开发之前，必须确定你的CPE 支持TR-069协议，这个是基础，否则本文也就没有写下去的必要了。<br />
目前测试的CPE是H3C的AP。由于我以前也没接触TR-069,这次是摸索这前进。<br />
既然是基于HTTP传输XML的通信，那么先写个Servlet来接收XML消息了，第一次接触，看了协议只知道规则，也不知道到底有啥，既然TR-069说AP会定时呼叫ACS,那么先接收消息了，看看能收到啥情报。<br />
第一，创建ACSServlet,准备接收消息。<br />
代码如下：<br />
</p>
<p><br />
&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.BufferedReader;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.InputStream;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.InputStreamReader;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.OutputStream;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.HashMap;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletException;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpServlet;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpServletRequest;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpServletResponse;<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpSession;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.seahigh.tyt.acs.util.AcsUtil;<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img id="Codehighlighter1_431_535_Open_Image" onclick="this.style.display='none'; Codehighlighter1_431_535_Open_Text.style.display='none'; Codehighlighter1_431_535_Closed_Image.style.display='inline'; Codehighlighter1_431_535_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_431_535_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_431_535_Closed_Text.style.display='none'; Codehighlighter1_431_535_Open_Image.style.display='inline'; Codehighlighter1_431_535_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_431_535_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_431_535_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
</span><span style="color: #008080">18</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;ACS&nbsp;serverImp<br />
</span><span style="color: #008080">19</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;<br />
</span><span style="color: #008080">20</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;汪心利<br />
</span><span style="color: #008080">21</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;@Create&nbsp;Time&nbsp;2009-1-4下午04:34:42&nbsp;(c)copy&nbsp;right&nbsp;seahigh&nbsp;2009<br />
</span><span style="color: #008080">22</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img id="Codehighlighter1_581_1344_Open_Image" onclick="this.style.display='none'; Codehighlighter1_581_1344_Open_Text.style.display='none'; Codehighlighter1_581_1344_Closed_Image.style.display='inline'; Codehighlighter1_581_1344_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_581_1344_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_581_1344_Closed_Text.style.display='none'; Codehighlighter1_581_1344_Open_Image.style.display='inline'; Codehighlighter1_581_1344_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ACSServlet&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;HttpServlet&nbsp;</span><span id="Codehighlighter1_581_1344_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_581_1344_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;serialVersionUID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1L</span><span style="color: #000000">;<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;doGet(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img id="Codehighlighter1_739_743_Open_Image" onclick="this.style.display='none'; Codehighlighter1_739_743_Open_Text.style.display='none'; Codehighlighter1_739_743_Closed_Image.style.display='inline'; Codehighlighter1_739_743_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_739_743_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_739_743_Closed_Text.style.display='none'; Codehighlighter1_739_743_Open_Image.style.display='inline'; Codehighlighter1_739_743_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException&nbsp;</span><span id="Codehighlighter1_739_743_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_739_743_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;doPost(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)<br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img id="Codehighlighter1_864_1342_Open_Image" onclick="this.style.display='none'; Codehighlighter1_864_1342_Open_Text.style.display='none'; Codehighlighter1_864_1342_Closed_Image.style.display='inline'; Codehighlighter1_864_1342_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_864_1342_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_864_1342_Closed_Text.style.display='none'; Codehighlighter1_864_1342_Open_Image.style.display='inline'; Codehighlighter1_864_1342_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException,&nbsp;IOException&nbsp;</span><span id="Codehighlighter1_864_1342_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_864_1342_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;session&nbsp;记住已执行的method</span><span style="color: #008000"><br />
</span><span style="color: #008080">35</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;InputStream&nbsp;in&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getInputStream();<br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;String&nbsp;ip&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getRemoteAddr();<br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;InputStreamReader&nbsp;ir&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;InputStreamReader(request.getInputStream());<br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;input&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BufferedReader(ir);<br />
</span><span style="color: #008080">41</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;String&nbsp;line;<br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;String&nbsp;xml&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">""</span><span style="color: #000000">;<br />
</span><span style="color: #008080">43</span><span style="color: #000000"><img id="Codehighlighter1_1186_1278_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1186_1278_Open_Text.style.display='none'; Codehighlighter1_1186_1278_Closed_Image.style.display='inline'; Codehighlighter1_1186_1278_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1186_1278_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1186_1278_Closed_Text.style.display='none'; Codehighlighter1_1186_1278_Open_Image.style.display='inline'; Codehighlighter1_1186_1278_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;((line&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;input.readLine())&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_1186_1278_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1186_1278_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">44</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(line.trim().length()&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)<br />
</span><span style="color: #008080">45</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">continue</span><span style="color: #000000">;<br />
</span><span style="color: #008080">46</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xml&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;line;<br />
</span><span style="color: #008080">47</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">48</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;in.close();<br />
</span><span style="color: #008080">49</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(ip</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">Post:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">xml);<br />
</span><span style="color: #008080">50</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">51</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">52</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">53</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">54</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">55</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p>&nbsp;</p>
<p>不知道大家是怎么贴代码的，感觉这样贴代码很不好看。呵呵。。。。。<br />
然后在web.xml中配置Servlet了，这个过程就不多说了。<br />
既然服务器写好了，那么下一步就让AP给我发Inform吧,当然AP并不知道ACS的地址<br />
所以下一步就需要配置AP了。<br />
再次申明：使用的是H3C的AP,不一定是通用的，具体请参考不同的CPE。<br />
Windows Command Window中输入：<br />
//telent 到AP<br />
telnet 192.168.1.200<br />
&nbsp;//出现授权框，输入用户名和密码<br />
system-view<br />
cwmp<br />
</p>
<img src ="http://www.blogjava.net/itwangxinli/aggbug/250375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2009-01-07 17:06 <a href="http://www.blogjava.net/itwangxinli/archive/2009/01/07/250375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Connection Reset的解决与DHCP的使用技巧</title><link>http://www.blogjava.net/itwangxinli/archive/2008/12/23/247874.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Tue, 23 Dec 2008 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2008/12/23/247874.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/247874.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2008/12/23/247874.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/247874.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/247874.html</trackback:ping><description><![CDATA[<div><br />
<span style="color: red">说明：在解决问题的时候，参考了以下文章<br />
http://blog.csdn.net/wuqingyong/archive/2006/09/07/1187293.aspx<br />
http://jayenho.blog.51cto.com/37194/91556<br />
作为对问题的总结，特写本文。</span><br />
<br />
最近总是遇到tomcat的log File报Connection reset的问题，使用的是JNDI的方式来使用DataSource。<br />
Apache Tomcat使用org.apache.naming.factory.DbcpDataSourceFactory作为默认的数据源工厂。<br />
<br />
<br />
Tomcat的DBCP使用Apache的ObjectPool作为Connection Pool的实现，在构造GenericObjectPool的时候，会生成一个Inner Class Evictor，实现Runnable的接口。如果属性_timeBetweenEvictionRunsMillis &gt; 0，每过_timeBetweenEvictionRunsMillis毫秒后Evictor会调用evict method，检查Object的idle time是否大于属性_minEvictableIdleTimeMillis毫秒（如果_minEvictableIdleTimeMillis设置为&lt;=0则忽略，使用default value 30分钟），如果是则销毁该Object，否则就激活并进行Validate，然后调用ensureMinIdle method检查确保Connection Pool中的Object个数不小于属性_minIdle。在调用returnObject method把Object放回ObjectPool时候，需要检查该Object是否有效，然后调用PoolableObjectFactory的passivateObject method使Object处于inactive状态，再检查ObjectPool中的对象个数是否小于属性_maxIdle，是则可以把该Object放回到ObjectPool，否则销毁此Object。</div>
<div>&nbsp;</div>
<div>除此之外，还有几个比较重要的属性，_testOnBorrow，_testOnReturn，_testWhileIdle，这些属性的意思是取得，返回对象，空闲时候是否进行Valiadte，检查对象是否有效。默认都为False，只有把这些属性设为True，再提供_validationQuery语句就可以保证DBCP始终有效了，例如，Oracle中就完全可以使用select 1 from dual来进行验证，这里要注意的是，DBCP要求_validationQuery语句查询的Result Set必须为非空。</div>
<div>&nbsp;</div>
<div>在Tomcat的Server.xml，我们可以看看下面的这个例子：</div>
<div>&nbsp;</div>
<div>&lt;Resource name="lda/raw"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="javax.sql.DataSource"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; password="lda_master"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; driverClassName="oracle.jdbc.driver.OracleDriver"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxIdle="30" minIdle="2" maxWait="60000" maxActive="1000" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testOnBorrow="true" testWhileIdle="true" validationQuery="select 1 from dual"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; username="lda_master" url="jdbc:oracle:thin:@192.160.100.107:15537:lcststd"/&gt;</div>
<div>&nbsp;这样的话，就可以避免产生Connection Reset的错误了.</div>
<div>这样一来，就能够解决Connect Reset的问题了。刚才说了，其实很多App Server都会有相应的配置地方，只是大型的服务器正好提供了Admin Console，上面可以显式的配置Connection Pool，也有明显的属性选择，这里就不一一详述了，都是眼见的功夫。</div>
<img src ="http://www.blogjava.net/itwangxinli/aggbug/247874.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-12-23 10:19 <a href="http://www.blogjava.net/itwangxinli/archive/2008/12/23/247874.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：java基础 </title><link>http://www.blogjava.net/itwangxinli/archive/2008/12/09/245211.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Tue, 09 Dec 2008 04:46:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2008/12/09/245211.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/245211.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2008/12/09/245211.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/245211.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/245211.html</trackback:ping><description><![CDATA[<div class="posttitle"><a class="singleposttitle" id="viewpost1_TitleUrl" href="http://www.blogjava.net/xiexin80/archive/2008/12/06/244730.html">Object中的特殊类String（toString()、equals、==）</a> </div>
<p><span style="font-size: 14pt"><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 12pt">我有很多概念都没明白，现在反过头来认识。</span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 12pt">Object是所有类的父类。<br />
java.lang.String也是继承自java.lang.Object中。</span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 12pt">先比较一下2个类的toString()、equals()、= = （很多面试题都有），再来说一下String 的特殊。</span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 12pt; color: red">2个类toString()的比较：</span></span></span></span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: small; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff"><span style="font-size: 12pt">class</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;Test&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;main(String&nbsp;[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;obj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;Object();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dog&nbsp;d&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;Dog();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(</span><span style="color: #000000">"</span><span style="color: #000000">abc</span><span style="color: #000000">"</span></span><span style="font-size: 12pt"><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">obj&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;obj);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">d&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;d);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">s&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;s);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
</span><span style="color: #0000ff">class</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;Dog&nbsp;{}<br />
<br />
结果：<br />
<br />
obj&nbsp;</span><span style="color: #000000">=</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;java.lang.Object@c17164<br />
d&nbsp;</span><span style="color: #000000">=</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;Dog@1fb8ee3<br />
s&nbsp;</span><span style="color: #000000">=</span></span><span style="color: #000000"><span style="font-size: 12pt">&nbsp;abc<br />
</span></span></div>
<p><br />
<span style="font-size: 14pt"><span style="font-size: 12pt">查阅API文档：<br />
</span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: small; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><span style="color: #000000">Object类的&nbsp;</span><span style="color: #0000ff">public</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;String&nbsp;toString()&nbsp;&nbsp;&nbsp;returns&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getClass().getName()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">@</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;Integer.toHexString(hashCode())<br />
String类的&nbsp;&nbsp;</span><span style="color: #0000ff">public</span></span><span style="color: #000000"><span style="font-size: 12pt">&nbsp;String&nbsp;toString()&nbsp;&nbsp;&nbsp;returns&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;string&nbsp;itself.</span></span></div>
<p><br />
<span style="font-size: 12pt">说明String类重写了Object的toString方法。<br />
</span></span><br />
<span style="font-size: 14pt"><span style="font-size: 12pt; color: red">2个类equals()、= =比较：</span></span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: small; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff"><span style="font-size: 12pt">class</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;Test&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;main(String&nbsp;[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">比较equals()和==</span></span><span style="color: #008000"><br />
</span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dog&nbsp;d1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Dog(</span><span style="color: #000000">1</span></span><span style="font-size: 12pt"><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dog&nbsp;d2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Dog(</span><span style="color: #000000">1</span></span><span style="font-size: 12pt"><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">d1&nbsp;==&nbsp;d2&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;(d1&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;d2));&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">false</span></span><span style="color: #008000"><br />
</span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">d1.equals(d2)&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;d1.equals(d2));&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">false</span></span><span style="color: #008000"><br />
</span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(</span><span style="color: #000000">"</span><span style="color: #000000">abc</span><span style="color: #000000">"</span></span><span style="font-size: 12pt"><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(</span><span style="color: #000000">"</span><span style="color: #000000">abc</span><span style="color: #000000">"</span></span><span style="font-size: 12pt"><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s3&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">abc</span><span style="color: #000000">"</span></span><span style="font-size: 12pt"><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">s1&nbsp;==&nbsp;s2&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;(s1&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;s2));&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">false</span></span><span style="color: #008000"><br />
</span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">s1.equals(s2)&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;s1.equals(s2));&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">ture</span></span><span style="color: #008000"><br />
</span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">s1&nbsp;==&nbsp;s3&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;(s1&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;s3));&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">false</span></span><span style="color: #008000"><br />
</span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">s1.equals(s3)&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;s1.equals(s3));&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">true</span></span><span style="color: #008000"><br />
</span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
</span><span style="color: #0000ff">class</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;Dog&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Dog(){}<br />
&nbsp;&nbsp;&nbsp;&nbsp;Dog(</span><span style="color: #0000ff">int</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;i){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.i&nbsp;</span><span style="color: #000000">=</span></span><span style="color: #000000"><span style="font-size: 12pt">&nbsp;i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></span></div>
<p><span style="font-size: 12pt">&nbsp;</span></p>
<p><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt">"=="是比较2个对象的引用是否指向同一个地址，如果是比较2个基本类型，那么就是比较2个值是否相等。<br />
我new了2个Dog类，他们2个对象的栈引用肯定不能指向同一个堆地址。第二个String对象"=="的比较也是同样道理。所以都返回了false(第三个比较体现了String的特殊类，等下说明)。</span></span></span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 12pt">查阅jdk的源代码："equals"在Object中定义为<br />
<br />
</span></span></span></span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: small; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">boolean</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;equals(Object&nbsp;obj)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">==</span></span><span style="color: #000000"><span style="font-size: 12pt">&nbsp;obj);<br />
}</span></span></div>
<br />
<p><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 12pt">这就表示一个类如果没有重写该方法的话，它就是比较两个的引用是否指向了同一个地址（和"=="比较是一致的）。<br />
类库里的类基本都重写的该方法，所以是比较2个对象的内容是否一样的（String方法重写了该方法，所以第二个equals比较返回ture），对于外面自己自定义的类，则需要自己重写该方法来达到内容是否相等的逻辑。</span><br />
</span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 12pt"><br />
<span style="color: red">特殊对象String的equals()、= =比较</span>：<br />
<br />
String s = newString("abc");和String s = "abc";<br />
首先2个对象在内存分布上是不一样的。第2个对象是s的栈引用指向数据片段区的地址（存放字符串常量，静态成员变量）。第1个new出来的对象是s的栈引用指向堆中的地址（存放在堆中）。通过API文档：新创建的字符串对象s是该参数字符串（"abc"）的副本。<br />
<br />
所以如代码所表示："=="比较是不一样的，equals方法由于String重写了，比较是字符序列。</span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 12pt">&nbsp;</span></span></p>
<p><span style="font-size: 14pt"><span style="font-size: 14pt"><span style="font-size: 12pt">String s1 = "abc"&nbsp;&nbsp;&nbsp; 和&nbsp; String s2 = "abc"比较；<br />
<br />
"=="和equals方法都返回ture；<br />
s1分配了字符常量"abc"，那么再有"abc"要引用给对象，都不会再分配内存空间了。<br />
所以s1 和s2 指向的空间相同，内容也相同。</span></span></span></p>
<img src ="http://www.blogjava.net/itwangxinli/aggbug/245211.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-12-09 12:46 <a href="http://www.blogjava.net/itwangxinli/archive/2008/12/09/245211.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>辞职了，没有工作了</title><link>http://www.blogjava.net/itwangxinli/archive/2008/12/04/244421.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Thu, 04 Dec 2008 10:29:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2008/12/04/244421.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/244421.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2008/12/04/244421.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/244421.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/244421.html</trackback:ping><description><![CDATA[<p>找了很久还没有找着工作，感觉很失望啊，我的未来在哪里？</p>
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/244421.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-12-04 18:29 <a href="http://www.blogjava.net/itwangxinli/archive/2008/12/04/244421.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>盛大面试</title><link>http://www.blogjava.net/itwangxinli/archive/2008/11/25/242618.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Tue, 25 Nov 2008 10:50:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2008/11/25/242618.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/242618.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2008/11/25/242618.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/242618.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/242618.html</trackback:ping><description><![CDATA[<p>好久以前的一个同学，给我介绍了一家外包公司，最近外包公司把我的简历推荐给了盛大网络，没想到盛大居然通知我面试了，呵呵，去就去吧，说不定能成呢。。。。。<br />
&nbsp;&nbsp; 下午13:24到盛大的门口，来的太早了，路上也不堵车，坐大桥六线到的，在盛大门口等了N就，然后进去了，居然把联系人的分机号记错了，还好一热心的盛大MM给我查了正确的分机号，终于联系上了。<br />
从保安那领了个临时出入证，搞笑的是，那个保安联系面试官的时候，居然说有位女士要找她，狂汗。。。<br />
(虽然俺长的不咋滴，但也不是中性人啊)<br />
&nbsp;在盛大的大厅里坐了一会，面试官过来了，然后带着我到小房间去了，先是做了一套题，Java基础题和一些问答题，比较简单，30分钟做完。然后就开始面试了，<br />
&nbsp;第一个面试的人，是位女士，首先都是自我介绍了，然后谈谈在以前的公司做的项目，最有成就感的，然后跟着项目提出了很多问题，问了对Spring的理解啊，啥的，感觉谈的蛮好，谈了大概有半个小时。然后下来了继续等。<br />
大概几分钟后，又过来一个面试官，有点胖，但是态度还很不错，也是跟第一次差不多，对简历上的每一个项目都问了下，然后提出了一些问题，感觉也还可以。<br />
然后就是第三个轮了，这次像是个项目经理，问了问我的技术，然后问了下我对薪水的要求，我说大概6k<br />
左右吧（金融危机来了，不敢要高，工作不好找啊）,然后跟我说，既然是外包，来了盛大，就要把自己当做是盛大的人来看(估计算是要通过了)，然后对着我的简历看了看，<br />
问：南阳理工是重点大学吗?<br />
答：不是，是一般普通的大学。<br />
问：你是学士学位吗？<br />
答：不是(我以为要看我的学士学位呢，因为我是大专毕业啊，所以就说了真话，但是简历上写的是本科)<br />
问：什么原因？是没有获得还是别的？<br />
答：（既然到这份了，干脆就实话实说了吧），没有获得<br />
问：哪你是？<br />
答：大专<br />
然后就是你这边还有什么要问的吗？<br />
。。。。。。。。<br />
然后谈了一会，结束了。<br />
本来蛮有希望的，都是最后一关了，结果被我弄杂了<br />
难道学历真的有这么重要吗？<br />
上天啊，赐给我一份工作吧<br />
总体感觉：盛大还是一家蛮不错的公司，面试官还比较亲切，呵呵<br />
希望能够进去，学历不代表过去，不代表未来，能力最重要。<br />
希望感紧能找到工作吧，要不就要破产了,hehe</p>
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/242618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-11-25 18:50 <a href="http://www.blogjava.net/itwangxinli/archive/2008/11/25/242618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux vi </title><link>http://www.blogjava.net/itwangxinli/archive/2008/11/10/239656.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Mon, 10 Nov 2008 06:00:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2008/11/10/239656.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/239656.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2008/11/10/239656.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/239656.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/239656.html</trackback:ping><description><![CDATA[<p><span style="color: red">本文转载，原文出处：<br />
<strong>http://www.linuxsir.org/main/?q=node/206#3.2</strong></span><strong><br />
作者：</strong>北南南北<br />
<strong>来自：</strong>LinuxSir.Org<br />
<strong>摘要：</strong>vi 编辑器是最常用的文档创建和编辑工具，初学者应该学会简单应用vi ，学会在vi 中做简单的修改、删除、插入、搜索及替换作业；如果您是新手，不妨看看本文，或许这篇文档能让您在最短的时间内学会vi的简单操作；</p>
<p><font size="4"><strong>目录</strong></font></p>
<ul><a href="http://www.linuxsir.org/main/?q=node/206#1">1、关于文本编辑器；</a><br />
    <a href="http://www.linuxsir.org/main/?q=node/206#2">2、vi 编辑器；</a><br />
    <a href="http://www.linuxsir.org/main/?q=node/206#3">3、vi 编辑器的使用方法；</a>
    <p>&nbsp;</p>
    <ul><a href="http://www.linuxsir.org/main/?q=node/206#3.1">3.1 如何调用vi ；</a><br />
        <a href="http://www.linuxsir.org/main/?q=node/206#3.2">3.2 vi 的三种命令模式；</a><br />
        <a href="http://www.linuxsir.org/main/?q=node/206#3.3">3.3 文件的保存和退出；</a><br />
        <a href="http://www.linuxsir.org/main/?q=node/206#3.4">3.4 光标移动；</a><br />
        <a href="http://www.linuxsir.org/main/?q=node/206#3.5">3.5 插入模式（文本的插入）；</a><br />
        <a href="http://www.linuxsir.org/main/?q=node/206#3.6">3.6 文本内容的删除操作；</a><br />
        <a href="http://www.linuxsir.org/main/?q=node/206#3.7">3.7 恢复修改及恢复删除操作；</a><br />
        <a href="http://www.linuxsir.org/main/?q=node/206#3.8">3.8 可视模式；</a><br />
        <a href="http://www.linuxsir.org/main/?q=node/206#3.9">3.9 复制和粘帖的操作；</a><br />
        <a href="http://www.linuxsir.org/main/?q=node/206#3.10">3.10 关于行号；</a><br />
        <a href="http://www.linuxsir.org/main/?q=node/206#3.11">3.11 查找和替换功能；</a>
        <p>&nbsp;</p>
        <ul><a href="http://www.linuxsir.org/main/?q=node/206#3.11.1">3.11.1 查找；</a><br />
            <a href="http://www.linuxsir.org/main/?q=node/206#3.11.2">3.11.2 替换；</a> </ul>
        </ul>
        <p><a href="http://www.linuxsir.org/main/?q=node/206#4">4、关于本文；</a><br />
        <a href="http://www.linuxsir.org/main/?q=node/206#5">5、后记；</a><br />
        <a href="http://www.linuxsir.org/main/?q=node/206#6">6、参考文档；</a><br />
        <a href="http://www.linuxsir.org/main/?q=node/206#7">7、相关文档；</a> </p>
    </ul>
    <p><font color="blue"><strong><br />
    +++++++++++++++++++++++++++++++++++++<br />
    正文<br />
    +++++++++++++++++++++++++++++++++++++<br />
    </strong></font></p>
    <p><font id="1" size="4"><strong><br />
    1、关于文本编辑器；<br />
    </strong></font></p>
    <p>文本编辑器有很多，比如图形模式的gedit、kwrite、OpenOffice ... ... ，文本模式下的编辑器有vi、vim（vi的增强版本）和nano ... ... vi和vim是我们在Linux中最常用的编辑器。我们有必要介绍一下vi（vim）最简单的用法，以让Linux入门级用户在最短的时间内学会使用它。</p>
    <p>nano 工具和DOS操作系统下的edit操作相似，使用简单，我们不作介绍了，如果您有兴趣，不妨尝试一下；</p>
    <p><font id="2" size="4"><strong><br />
    2、vi 编辑器；<br />
    </strong></font></p>
    <p><strong>为什么要学会简单应用vi</strong></p>
    <p>vi或vim是Linux最基本的文本编辑工具，vi或vim虽然没有图形界面编辑器那样点鼠标的简单操作，但vi编辑器在系统管理、服务器管理中，永远不是图形界面的编辑器能比的。当您没有安装X-windows桌面环境或桌面环境崩溃时，我们仍需要字符模式下的编辑器vi；</p>
    <p>vi或vim 编辑器在创建和编辑简单文档最高效的工具；</p>
    <p><font id="3" size="4"><strong><br />
    3、vi 编辑器的使用方法；<br />
    </strong></font></p>
    <p><font id="3.1" size="3"><strong><br />
    3.1 如何调用vi ；<br />
    </strong></font></p>
    <p>
    <div class="codeblock"><code>[root@localhost ~]# vi&nbsp; filename</code></div>
    <p>&nbsp;</p>
    <p>
    <div class="codeblock"><code>~<br />
    ~<br />
    ~<br />
    ~<br />
    ~<br />
    ~<br />
    ~<br />
    ~</code></div>
    <p>&nbsp;</p>
    <p><font id="3.2" size="3"><strong><br />
    3.2 vi 的三种命令模式；<br />
    </strong></font></p>
    <p>
    <div class="codeblock"><code>Command（命令）模式，用于输入命令；<br />
    Insert（插入）模式，用于插入文本；<br />
    Visual（可视）模式，用于视化的的高亮并选定正文；</code></div>
    <p>&nbsp;</p>
    <p><font id="3.3" size="3"><strong><br />
    3.3 文件的保存和退出；<br />
    </strong></font></p>
    <p>Command 模式是vi或vim的默认模式，如果我们处于其它命令模式时，要通过ESC键切换过来。</p>
    <p>当我们按ESC键后，接着再输入:号时，vi会在屏幕的最下方等待我们输入命令；</p>
    <p>
    <div class="codeblock"><code>:w&nbsp; 保存；<br />
    :w&nbsp; filename 另存为filename；<br />
    :wq! 保存退出；<br />
    :wq! filename 注：以filename为文件名保存后退出；<br />
    :q! 不保存退出；<br />
    :x 应该是保存并退出 ，功能和:wq!相同</code></div>
    <p>&nbsp;</p>
    <p><font id="3.4" size="3"><strong><br />
    3.4 光标移动；<br />
    </strong></font></p>
    <p>当我们按ESC进入Command模式后，我们可以用下面的一些键位来移动光标；</p>
    <p>
    <div class="codeblock"><code>j 向下移动一行；<br />
    k 向上移动一行；<br />
    <br />
    h 向左移动一个字符；<br />
    l 向右移动一个字符；<br />
    <br />
    ctrl+b&nbsp; 向上移动一屏；<br />
    ctrl+f&nbsp; 向下移动一屏；<br />
    <br />
    向上箭头&nbsp;&nbsp;&nbsp; 向上移动；<br />
    向下箭头&nbsp;&nbsp;&nbsp; 向下移动；<br />
    向左箭头&nbsp;&nbsp;&nbsp; 向左移动；<br />
    向右箭头&nbsp;&nbsp;&nbsp; 向右移动；</code></div>
    <p>&nbsp;</p>
    <p>我们编辑一个文件时，对于 j、k、l和h键，还能在这些动作命令的前面加上数字，比如 3j，表示向下移动3行。</p>
    <p><font id="3.5" size="3"><strong><br />
    3.5 插入模式（文本的插入）；<br />
    </strong></font></p>
    <p>
    <div class="codeblock"><code>i&nbsp; 在光标之前插入；<br />
    a&nbsp; 在光标之后插入；<br />
    <br />
    I 在光标所在行的行首插入；<br />
    A&nbsp; 在光标所在行的行末插入；<br />
    <br />
    o&nbsp; 在光标所在的行的上面插入一行；<br />
    O&nbsp; 在光标所在的行的下面插入一行；<br />
    <br />
    s&nbsp; 删除光标后的一个字符，然后进入插入模式；<br />
    S&nbsp; 删除光标所在的行，然后进入插入模式；</code></div>
    <p>&nbsp;</p>
    <p><font id="3.6" size="3"><strong><br />
    3.6 文本内容的删除操作；<br />
    </strong></font></p>
    <p>
    <div class="codeblock"><code>x 一个字符；<br />
    #x 删除几个字符，#表示数字，比如3x；<br />
    dw 删除一个单词；<br />
    #dw 删除几个单词，#用数字表示，比如3dw表示删除三个单词；<br />
    dd 删除一行；<br />
    #dd 删除多个行，#代表数字，比如3dd 表示删除光标行及光标的下两行；<br />
    d$ 删除光标到行尾的内容；<br />
    <br />
    J 清除光标所处的行与上一行之间的空格，把光标行和上一行接在一起；<br />
    </code></div>
    <p>&nbsp;</p>
    <p><font id="3.7" size="3"><strong><br />
    3.7 恢复修改及恢复删除操作；<br />
    </strong></font></p>
    <p>
    <div class="codeblock"><code>u&nbsp; 撤消修改或删除操作；</code></div>
    <p>&nbsp;</p>
    <p>按ESC键返回Command（命令）模式，然后按u键来撤消删除以前的删除或修改；如果您想撤消多个以前的修改或删除操作，请按多按几次u。这和Word的撤消操作没有太大的区别；</p>
    <p><font id="3.8" size="3"><strong><br />
    3.8 可视模式；<br />
    </strong></font></p>
    <p>在最新的Linux发行版本中，vi提供了可视模式，因为这个功能是vim才有的。如果您用的vi没有这个功能，就换成vim就有了。打开可视模式，按ESC键，然后按v就进入可视模式；</p>
    <p>可视模式为我们提供了极为友好的选取文本范围，以高亮显示；在屏幕的最下方显示有；</p>
    <p>
    <div class="codeblock"><code>-- 可视 --&nbsp;&nbsp; <br />
    <br />
    或<br />
    <br />
    --VISUAL--</code></div>
    <p>&nbsp;</p>
    <p><strong>如图：</strong></p>
    <p><a href="http://www.linuxsir.org/main/files/viphotolinuxsir.jpg" target="_blank"><img height="200" src="http://www.linuxsir.org/main/files/viphotolinuxsir.jpg" weight="200"  alt="" /></a></p>
    <p>进入可视模式，我们就可以用前面所说的命令行模式中的光标移动指令，可以进行文本范围的选取。</p>
    <p><strong>选取文本范围有何用？</strong></p>
    <p>我们可以对某部份删除作业，按d键就删除了我们选中的内容。<br />
    选中内容后，我们按y就表示复制；按d表示删除；</p>
    <p>值得一提是的删除的同时，也表示复制。我们返回到命令模式，然后移动光标到某个位置，然后按shift+p键，就把刚才删除的内容贴上了。我们先在这里提一句，在后文，我们还得详细说说。</p>
    <p><strong>退出可视模式，还是用ESC键；</strong></p>
    <p><font id="3.9" size="3"><strong><br />
    3.9 复制和粘帖的操作；<br />
    </strong></font></p>
    <p>其实删除也带有剪切的意思，当我们删除文字时，可以把光标移动到某处，然后按shift+p键就把内容贴在原处，然后再移动光标到某处，然后再按p或shift+p又能贴上；</p>
    <p>
    <div class="codeblock"><code>p 在光标之后粘帖；<br />
    shift+p 在光标之前粘帖</code></div>
    <p>&nbsp;</p>
    <p><strong>来举一例：</strong></p>
    <p>比如我们想把一个文档的第三行复制下来，然后帖到第五行的后面，我们应该怎么做呢？</p>
    <p><strong>有两种方法；</strong></p>
    <p><font color="blue">第一种方法：</font></p>
    <p>先把第三行删除，把光标移动到第三行处，然后用dd动作，接着再按一下shift+p键。这样就把刚才删除的第三行帖在原处了。</p>
    <p>接着我们再用k键移动光标到第五行，然后再按一下p键，这样就把第三行的内容又帖到第五行的后面了；</p>
    <p><font color="blue">第二种方法；</font></p>
    <p>进入可视模式，按ESC键，然后按v键。移动鼠标指针，选中第三行的内容，然后按y键复制；再移动指针到第五行，最后按p键；</p>
    <p><strong>所以复制和粘贴操作，是命令模式、插入模式及可视模式的综合运用；我们要学会各种模式之间的切换，要常用ESC键；更为重要的学会在命令模式下移动光标；</strong></p>
    <p><font id="3.10" size="3"><strong><br />
    3.10 关于行号；<br />
    </strong></font></p>
    <p>有时我们配置一个程序运行时，会出现配置文件X行出现错误 。这时我们要用到行号相关的操作；</p>
    <p><strong><br />
    为所有内容添加行号；<br />
    </strong></p>
    <p>按ESC键，然后输入：</p>
    <p>
    <div class="codeblock"><code>:set number</code></div>
    <p>&nbsp;</p>
    <p><strong>光标所处位置</strong></p>
    <p>在屏幕的右下角，有类似如下的；</p>
    <p>
    <div class="codeblock"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 57,8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 27%</code></div>
    <p>&nbsp;</p>
    <p>在这之中，57表示第57行，8表示第8个字符；</p>
    <p><font id="3.11" size="3"><strong><br />
    3.11 查找和替换功能；<br />
    </strong></font></p>
    <p><font id="3.11.1" size="2"><strong><br />
    3.11.1 查找；<br />
    </strong></font></p>
    <p>首先，我们要进入ESC键，进入命令模式；我们输入/或?就进入查找模式了；</p>
    <p>
    <div class="codeblock"><code>/SEARCH&nbsp; 注：正向查找，按n键把光标移动到下一个符合条件的地方；<br />
    ?SEARCH&nbsp; 注：反向查找，按shift+n 键，把光标移动到下一个符合条件的</code></div>
    <p>&nbsp;</p>
    <p><strong>举一例：</strong>比如我想在一个文件中找到swap单词，我应该如下做；</p>
    <p>首先按ESC键，进入命令模式，然后输入；</p>
    <p>
    <div class="codeblock"><code>/swap <br />
    或<br />
    ?swap</code></div>
    <p>&nbsp;</p>
    <p><font id="3.11.2" size="2"><strong><br />
    3.11.2 替换；<br />
    </strong></font></p>
    <p>按ESC键进入命令模式；</p>
    <p>
    <div class="codeblock"><code>:s /SEARCH/REPLACE/g&nbsp; 注：把当前光标所处的行中的SEARCH单词，替换成REPLACE，并把所有SEARCH高亮显示；<br />
    :%s /SEARCH/REPLACE&nbsp; 注：把文档中所有SEARCH替换成REPLACE；<br />
    :#,# s /SEARCH/REPLACE/g&nbsp; 注：＃号表示数字，表示从多少行到多少行，把SEARCH替换成REPLACE；</code></div>
    <p>&nbsp;</p>
    <p>注：在这之中，g表示全局查找；我们注意到，就是没有替换的地方，也会把SEARCH高亮显示；</p>
    <p><strong>举例说明：</strong></p>
    <p>比如我们有一篇文档要修改；</p>
    <p>我们把光标所在的行，把所有单词the，替换成THE，应该是：</p>
    <p>
    <div class="codeblock"><code>:s /the/THE/g</code></div>
    <p>&nbsp;</p>
    <p>我们把整篇文档的所有的the都替换成THE，应该是： </p>
    <p>
    <div class="codeblock"><code>:%s /the/THE</code></div>
    <p>&nbsp;</p>
    <p>我们仅仅是把第1行到第10行中的the，替换成THE，应该是；</p>
    <p>
    <div class="codeblock"><code>:1,10&nbsp; s /the/THE/g</code></div>
    <p>&nbsp;</p>
    <p><font id="4" size="4"><strong><br />
    4、关于本文；<br />
    </strong></font></p>
    <p>我写本文的目的是让新手在最短的时间内用vi或vim创建、编辑和修改文件，所以说这篇文档并不是大而全的vi手册。如果把vi所有的功能都说全了，至少得写一本千页的手册；本也没有涉及更为高级的vi用法。如果想了解的更多，请查找man和help；</p>
    <p><font id="5" size="4"><strong><br />
    5、后记；<br />
    </strong></font></p>
    <p>到目前为止，关于目录和文件的操作，我写过有几篇了，从文件和目录的创建、删除、复制到属性操作，最后到文件修改等系列文档。这些文档都是有相关性的，如果把这些相关性的文档连起来，就是一个整体知识块。我们只有掌握了这些知识，才能实现文件系统的管理。</p>
    <p>在以后我会写什么内容呢？？？？可能会补充一下文件的查找，其实以前有类似文档，到时我总结一下，贴出来给大家看看就行了。</p>
    <p>下一步是准备网络基础文档建设中，网络基础比较重要，这是我计划的下一个重点。。。。。。。。</p>
    ，
<img src ="http://www.blogjava.net/itwangxinli/aggbug/239656.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-11-10 14:00 <a href="http://www.blogjava.net/itwangxinli/archive/2008/11/10/239656.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux archive and compressed file</title><link>http://www.blogjava.net/itwangxinli/archive/2008/11/10/239652.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Mon, 10 Nov 2008 05:56:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2008/11/10/239652.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/239652.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2008/11/10/239652.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/239652.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/239652.html</trackback:ping><description><![CDATA[<span style="font-weight: bold">一.tar命令</span><br />
<div style="margin-left: 40px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tar可以为文件和目录创建档案。利用tar，用户可以为某一特定文件创建档案（备份文件），也可以在档案中改变文件，或者向档案中加入新的文件。tar 最初被用来在磁带上创建档案，现在，用户可以在任何设备上创建档案，如软盘。利用tar命令，可以把一大堆的文件和目录全部打包成一个文件，这对于备份文 件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。<br />
</div>
<div style="margin-left: 40px"><span style="font-weight: bold">语法</span>：tar [主选项+辅选项] 文件或者目录<br />
</div>
<div style="margin-left: 40px">使用该命令时，主选项是必须要有的，它告诉tar要做什么事情，辅选项是辅助使用的，可以选用。<br />
</div>
<div style="margin-left: 40px">主选项：<br />
</div>
<div style="margin-left: 40px">c 创建新的档案文件。如果用户想备份一个目录或是一些文件，就要选择这个选项。<br />
r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件，又发现还有一个目录或是一些文件忘记备份了，这时可以使用该选项，将忘记的目录或文件追加到备份文件中。<br />
t 列出档案文件的内容，查看已经备份了哪些文件。<br />
u 更新文件。就是说，用新增的文件取代原备份文件，如果在备份文件中找不到要更新的文件，则把它追加到备份文件的最后。<br />
x 从档案文件中释放文件。<br />
</div>
<div style="margin-left: 40px">辅助选项：<br />
b 该选项是为磁带机设定的。其后跟一数字，用来说明区块的大小，系统预设值为20（20*512 bytes）。<br />
f 使用档案文件或设备，<span style="color: rgb(255,0,0)">这个选项通常是必选的</span>。<br />
k 保存已经存在的文件。例如我们把某个文件还原，在还原的过程中，遇到相同的文件，不会进行覆盖。<br />
m 在还原文件时，把所有文件的修改时间设定为现在。<br />
M 创建多卷的档案文件，以便在几个磁盘中存放。<br />
v 详细报告tar处理的文件信息。如无此选项，tar不报告文件信息。<br />
w 每一步都要求确认。<br />
z 用gzip来压缩/解压缩文件，加上该选项后可以将档案文件进行压缩，但还原时也一定要使用该选项进行解压缩。<br />
</div>
<br />
<span style="font-weight: bold">二.Linux下的压缩文件剖析</span>
<p style="margin-left: 40px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于刚刚接触Linux的人来说，一定会给Linux下一大堆各式各样的文件名 给搞晕。别个不说，单单就压缩文件为例，我们知道在Windows下最常见的压缩文件就只有两种，一是,zip，另一个是.rar。可是Linux就不同 了，它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名，此外windows下的.zip和.rar也可以在Linux下使 用，不过在Linux使用.zip和.rar的人就太少了。本文就来对这些常见的压缩文件进行一番小结，希望你下次遇到这些文件时不至于被搞晕:)</p>
<div style="margin-left: 40px">　 　在具体总结各类压缩文件之前，首先要 弄清两个概念：打包和压缩。打包是指将一大堆文件或目录什么的变成一个总的文件，压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这 两个概念呢？<span style="color: rgb(255,0,0)">其实这源于Linux中的很多压缩程序只能针对一个文件进行压缩</span>，这样当你想要压缩一大堆文件时，你就得先借助另外的工具将这一大堆文件先打 成一个包，然后再就原来的压缩程序进行压缩。<br />
</div>
<div style="margin-left: 40px">　　Linux下最常用的打包程序就是tar了，使用tar程序打出来的包我们常称为tar包，tar包文件的命令通常都是以.tar结尾的。生成tar包后，就可以用其它的程序来进行压缩了，所以首先就来讲讲tar命令的基本用法：<br />
</div>
<p>　　tar命令的选项有很多(用man tar可以查看到)，但常用的就那么几个选项，下面来举例说明一下：<br />
　　# tar -cf all.tar *.jpg<br />
　　这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包，-f指定包的文件名。<br />
　　# tar -rf all.tar *.gif<br />
　　这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # tar -uf all.tar logo.gif<br />
　　这条命令是更新原来tar包all.tar中logo.gif文件，-u是表示更新文件的意思。 </p>
<p>　　# tar -tf all.tar<br />
　　这条命令是列出all.tar包中所有文件，-t是列出文件的意思<br />
　　# tar -xf all.tar<br />
　　这条命令是解出all.tar包中所有文件，-x是解包的意思<br />
　　以上就是tar的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压文件，tar提供了一种特殊的功能。这就是tar可以在打包或解包的同时调用其它的压缩程序，比如调用gzip、bzip2等。<br />
　　1) tar调用gzip<br />
　　gzip是GNU组织开发的一个压缩程序，.gz结尾的文件就是gzip压缩的结果。与gzip相对的解压程序是gunzip。tar中使用-z这个参数来调用gzip。下面来举例说明一下：<br />
　　# tar -czf all.tar.gz *.jpg<br />
　　这条命令是将所有.jpg的文件打成一个tar包，并且将其用gzip压缩，生成一个gzip压缩过的包，包名为all.tar.gz<br />
　　# tar -xzf all.tar.gz<br />
　　这条命令是将上面产生的包解开。<br />
　　2) tar调用bzip2<br />
　　bzip2是一个压缩能力更强的压缩程序，.bz2结尾的文件就是bzip2压缩的结果。与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用bzip2。下面来举例说明一下：<br />
　　# tar -cjf all.tar.bz2 *.jpg<br />
　　这条命令是将所有.jpg的文件打成一个tar包，并且调用bzip2压缩，生成一个bzip2压缩过的包，包名为all.tar.bz2<br />
　　# tar -xjf all.tar.bz2<br />
　　这条命令是将上面产生的包解开。<br />
&nbsp;&nbsp;&nbsp; 3)tar调用compress <br />
</p>
<div style="margin-left: 40px">compress也是一个压缩程序，但是好象使用compress的人不如gzip和bzip2的人多。.Z结尾的文件就是bzip2压缩的结果。与compress相对的解压程序是uncompress。tar中使用-Z这个参数来调用gzip。下面来举例说明一下：<br />
</div>
<p>　　# tar -cZf all.tar.Z *.jpg<br />
　　这条命令是将所有.jpg的文件打成一个tar包，并且调用compress压缩，生成一个uncompress压缩过的包，包名为all.tar.Z<br />
　　# tar -xZf all.tar.Z<br />
　　这条命令是将上面产生的包解开<br />
　　有了上面的知识，你应该可以解开多种压缩文件了，下面对于tar系列的压缩文件作一个小结：<br />
　　1)对于.tar结尾的文件<br />
　　tar -xf all.tar<br />
　　2)对于.gz结尾的文件<br />
　　gzip -d all.gz<br />
　　gunzip all.gz<br />
　　3)对于.tgz或.tar.gz结尾的文件<br />
　　tar -xzf all.tar.gz<br />
　　tar -xzf all.tgz<br />
　　4)对于.bz2结尾的文件<br />
　　bzip2 -d all.bz2<br />
　　bunzip2 all.bz2<br />
　　5)对于tar.bz2结尾的文件<br />
　　tar -xjf all.tar.bz2<br />
　　6)对于.Z结尾的文件<br />
　　uncompress all.Z<br />
　　7)对于.tar.Z结尾的文件<br />
　　tar -xZf all.tar.z<br />
　　另外对于Window下的常见压缩文件.zip和.rar，Linux也有相应的方法来解压它们：<br />
　　1)对于.zip<br />
　　linux下提供了zip和unzip程序，zip是压缩程序，unzip是解压程序。它们的参数选项很多，这里只做简单介绍，依旧举例说明一下其用法：<br />
　　# zip all.zip *.jpg<br />
　　这条命令是将所有.jpg的文件压缩成一个zip包</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(255,0,0)">注意：如果要压缩的是个文件夹，则要加上-r参数，表示调用递归压缩</span>，如：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zip -r temp.zip temp<br />
</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # unzip all.zip<br />
　　这条命令是将all.zip中的所有文件解压出来 </p>
<p>　　2)对于.rar<br />
　　要在linux下处理.rar文件，需要安装RAR for Linux，可以从网上下载，但要记住，RAR for Linux<br />
不是免费的；然后安装：<br />
　　# tar -xzpvf rarlinux-3.2.0.tar.gz<br />
　　# cd rar<br />
　　# make<br />
　　这样就安装好了，安装后就有了rar和unrar这两个程序，rar是压缩程序，unrar是解压程序。它们的参数选项很多，这里只做简单介绍，依旧举例说明一下其用法：<br />
　　# rar a all *.jpg<br />
　　这条命令是将所有.jpg的文件压缩成一个rar包，名为all.rar，该程序会将.rar 扩展名将自动附加到包名后。<br />
　　# unrar e all.rar<br />
　　这条命令是将all.rar中的所有文件解压出来<br />
　 　到此为至，我们已经介绍过linux下的tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、 zip、unzip、rar、unrar等程式，你应该已经能够使用它们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、. Z、.tar.Z、.zip、.rar这10种压缩文件进行解压了，以后应该不需要为下载了一个软件而不知道如何在Linux下解开而烦恼了。而且以上方 法对于Unix也基本有效。<br />
　　本文介绍了linux下的压缩程式tar、gzip、gunzip、bzip2、bunzip2、 compress、uncompress、zip、unzip、rar、unrar等程式，以及如何使用它们对.tar、.gz、.tar.gz、. tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip、.rar这10种压缩文件进行操作。<br />
<br />
</p>
<p><strong>tar命令</strong>：tar [-cxtzjvfpPN] 文件与目录 &#8230;.</p>
<p><strong>tar命令参数</strong>：</p>
<p>-c ：建立一个压缩文件的参数指令(create 的意思)；<br />
-x ：解开一个压缩文件的参数指令！<br />
-t ：查看 tarfile 里面的文件！<br />
特别注意，在参数的下达中， c/x/t 仅能存在一个！不可同时存在！<br />
因为不可能同时压缩与解压缩。<br />
-z ：是否同时具有 gzip 的属性？亦即是否需要用 gzip 压缩？<br />
-j ：是否同时具有 bzip2 的属性？亦即是否需要用 bzip2 压缩？<br />
-v ：压缩的过程中显示文件！这个常用，但不建议用在背景执行过程！<br />
-f ：使用档名，请留意，在 f 之后要立即接档名喔！不要再加参数！<br />
　　　例如使用『 tar -zcvfP tfile sfile』就是错误的写法，要写成<br />
　　　『 tar -zcvPf tfile sfile』才对喔！<br />
-p ：使用原文件的原来属性（属性不会依据使用者而变）<br />
-P ：可以使用绝对路径来压缩！<br />
-N ：比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中！<br />
&#8211;exclude FILE：在压缩的过程中，不要将 FILE 打包！<br />
范例：<br />
范例一：将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar<br />
[root@linux ~]# tar -cvf /tmp/etc.tar /etc&lt;==仅打包，不压缩！<br />
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc&lt;==打包后，以 gzip 压缩<br />
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc&lt;==打包后，以 bzip2 压缩<br />
# 特别注意，在参数 f 之后的文件档名是自己取的，我们习惯上都用 .tar 来作为辨识。<br />
# 如果加 z 参数，则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ～<br />
# 如果加 j 参数，则以 .tar.bz2 来作为附档名啊～<br />
# 上述指令在执行的时候，会显示一个警告讯息：<br />
# 『tar: Removing leading `/&#8221; from member names』那是关於绝对路径的特殊设定。</p>
<p>范例二：查阅上述 /tmp/etc.tar.gz 文件内有哪些文件？<br />
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz<br />
# 由於我们使用 gzip 压缩，所以要查阅该 tar file 内的文件时，<br />
# 就得要加上 z 这个参数了！这很重要的！</p>
<p>范例三：将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下<br />
[root@linux ~]# cd /usr/local/src<br />
[root@linux src]# tar -zxvf /tmp/etc.tar.gz<br />
# 在预设的情况下，我们可以将压缩档在任何地方解开的！以这个范例来说，<br />
# 我先将工作目录变换到 /usr/local/src 底下，并且解开 /tmp/etc.tar.gz ，<br />
# 则解开的目录会在 /usr/local/src/etc 呢！另外，如果您进入 /usr/local/src/etc<br />
# 则会发现，该目录下的文件属性与 /etc/ 可能会有所不同喔！</p>
<p>范例四：在 /tmp 底下，我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已<br />
[root@linux ~]# cd /tmp<br />
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd<br />
# 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称，如果单只要一个文件，<br />
# 就可以透过这个方式来下达！注意到！ etc.tar.gz 内的根目录 / 是被拿掉了！</p>
<p>范例五：将 /etc/ 内的所有文件备份下来，并且保存其权限！<br />
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc<br />
# 这个 -p 的属性是很重要的，尤其是当您要保留原本文件的属性时！</p>
<p>范例六：在 /home 当中，比 2005/06/01 新的文件才备份<br />
[root@linux ~]# tar -N &#8220;2005/06/01&#8243; -zcvf home.tar.gz /home</p>
<p>范例七：我要备份 /home, /etc ，但不要 /home/dmtsai<br />
[root@linux ~]# tar &#8211;exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc</p>
<p>范例八：将 /etc/ 打包后直接解开在 /tmp 底下，而不产生文件！<br />
[root@linux ~]# cd /tmp<br />
[root@linux tmp]# tar -cvf - /etc | tar -xvf -<br />
# 这个动作有点像是 cp -r /etc /tmp 啦～依旧是有其有用途的！<br />
# 要注意的地方在於输出档变成 - 而输入档也变成 - ，又有一个 | 存在～<br />
# 这分别代表 standard output, standard input 与管线命令啦！</p>
<img src ="http://www.blogjava.net/itwangxinli/aggbug/239652.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-11-10 13:56 <a href="http://www.blogjava.net/itwangxinli/archive/2008/11/10/239652.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>求职 Java</title><link>http://www.blogjava.net/itwangxinli/archive/2008/11/04/238568.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Tue, 04 Nov 2008 05:36:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2008/11/04/238568.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/238568.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2008/11/04/238568.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/238568.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/238568.html</trackback:ping><description><![CDATA[<p>两年工作经验，<br />
熟悉SSH,DWR,Lucene等开源框架,</p>
熟悉Oracle 10g SqlServer 2005<br />
工作地点 上海<br />
如果有需要，可以加MSN对话<br />
MSN:itwangxinli@hotmail.com
<img src ="http://www.blogjava.net/itwangxinli/aggbug/238568.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-11-04 13:36 <a href="http://www.blogjava.net/itwangxinli/archive/2008/11/04/238568.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面试感想</title><link>http://www.blogjava.net/itwangxinli/archive/2008/10/27/236952.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Mon, 27 Oct 2008 11:54:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2008/10/27/236952.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/236952.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2008/10/27/236952.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/236952.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/236952.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp; 昨天周末，下午收到一条短信，是碧波路456号A301的一家公司，通知我周一上午九点四十五去面试。感觉面试时间蛮奇怪的，但还是去了。九点左右到了公司门口，等了10分钟，实在不想浪费时间了，就进去了。<br />
&nbsp;进去了问前台，前台给了一套题和一张求职表格，一共是12道题，都是Java基础，感觉还行吧，就那样，一个小时后交卷。四十分钟做完了，然后做了一套上机题，也没啥，很快搞定了。笔试+上机考试做完了，然后一个女的告诉我，让我等会，然后再面试，我就等了，等了大概将近20分钟，突然告诉我，说让我先回去，然后下午通知我复试。&nbsp;（ 居然还有这样的公司？？简直不是浪费人的时间吗？？）<br />
&nbsp;&nbsp; 大概12点左右，回到家，还没吃午饭，通知我下午五点过来复试，彻底无语了，这不是耍人吗？<br />
&nbsp; 但是还是答应了，然后到一点多，又收到一个电话，通知我下午三点半复试，(咋右变了)？他们解释说五点要开会，然后让我提前过去。想想上午也不能白跑一趟，然后就答应了。<br />
&nbsp;下午三点10分到了，然后进去一看，居然有四个人在那复试，呵呵，然后又让我们继续等待面试，说主管开会严重超时，等了大概到四点半，才轮到我面试，此时我早就想离开了。面试也没啥，拿了上午做的试题，随便问，其中问道了这个：<br />
&nbsp;大概是这个意思 try{return 。。。}finally {},finally代码块的语句会执行吗？ 会<br />
然后问了下一个sql语句的，题目上说以a.id=b.up_id作为连接，用一个oracle语句，我使用了其中 部分语句 <br />
left join a.id=b.id ，然后他说所有的默认链接都是内连接，你怎么使用了做链接，我说肯能是看题的时候领会错误了吧，其实我在SQL语句方面很一般，然后他就抓着这个我不放，我说了句，这个我不会。<br />
在谈到int 与Integer的关系的时候，问了一个这样的问题 int a=-8;Integer a1=new Integer(a); a1.intValue()==?我说-8<br />
他说你确定吗？我说我确定，他说结果是8？我无语了。。。。。。。<br />
然后告诉他，对不起，我还有事请，不想再谈了<br />
这就是所谓的Java主管，可以看出这个公司的水平了<br />
大家以后去这家公司面试，要注意啊，我实在无话可说<br />
ps:说下面试的感想，觉得这家公司不是很好，上午去面试，然后等---&gt;然后告诉你，可以回家了，下午通知你过来复试---&gt;还没到家&nbsp; ---》五点过来复试&nbsp; -----&gt;下午三点半过来复试吧（俺们主管很忙）----&gt;等到四点半的时候，面试开始----居然能问出那样没水平的问题，强烈鄙视<br />
管理混乱，对面试人员及其不尊重，Java面试主管死要面子，犯错了也不肯承认，这样的公司 还是不要去了为好 这家公司 捷一软件技术<br />
</p>
<img src ="http://www.blogjava.net/itwangxinli/aggbug/236952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-10-27 19:54 <a href="http://www.blogjava.net/itwangxinli/archive/2008/10/27/236952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>辞职后的那段时间</title><link>http://www.blogjava.net/itwangxinli/articles/232819.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Tue, 07 Oct 2008 01:41:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/232819.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/232819.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/232819.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/232819.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/232819.html</trackback:ping><description><![CDATA[<p>八月二十九号，周五是在金鑫公司的最后一天了。其实今天也没啥事可作，到公司让找了N个部门的领导在离职单上签字，然后去财务那边结算下工资，就算是离开了金鑫公司。<br />
&nbsp;在公司的两年的时间里，最高兴的是遇上了开发部经理计岩平，那时候他还是个PM，当时做纺织的时候他带着刚刚毕业的我开始做纺织的项目。老计是一个很不错的人，性格随和，做事仔细，对我这个新手也算是很照顾，也算是在他的带领下慢慢的成长起来的。如今，离开公司，还真的有点舍不得他，呵呵，但是我也得要为自己考虑下了，如果我是个上海人，我一定会跟随老纪，但是我还要养活自己的父母，为了更高的salary，我决定离开金鑫。跟老纪还是朋友嘛<br />
<br />
在家休息了半个月，开始在网上投简历了，但是要过中秋节了，没几家公司通知去面试，郁闷。在家呆了几天，一看要到十一了，还是先回家看看再说吧，等过了十一在找吧。<br />
&nbsp;这次找公司，希望能找个好一点的，大小无所谓，关键是跟大家一起开开心心的，最好能经历几个大项目，能多学点知识。当然了，薪水也不能太低，上次面试，居然有个公司开的工资比我离职的时候还要低，郁闷死了，也许工作不大好找吧，但是我会继续找的，go on </p>
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/232819.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-10-07 09:41 <a href="http://www.blogjava.net/itwangxinli/articles/232819.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>广告与创意</title><link>http://www.blogjava.net/itwangxinli/articles/231040.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Thu, 25 Sep 2008 01:30:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/231040.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/231040.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/231040.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/231040.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/231040.html</trackback:ping><description><![CDATA[<p><img alt="" src="http://b9.ac-images.cdnmyspace.cn/cnimages01/2/l_6f8aca8f7d1da183899b79a60622054f.jpg" /><img alt="" src="http://b1.ac-images.cdnmyspace.cn/cnimages01/2/l_8d7a78c238a2ec58b1b3f7ad46c733eb.jpg" /><img alt="" src="http://b0.ac-images.cdnmyspace.cn/cnimages01/1/l_949e0c2fffc6c88e4c794cae330b3d50.jpg" /><img alt="" src="http://b2.ac-images.cdnmyspace.cn/cnimages01/1/l_0dca89220b10293796531081f311aa66.jpg" /><img alt="" src="http://b6.ac-images.cdnmyspace.cn/cnimages01/1/l_91543db781077890bc6bc02048f3d2a0.jpg" /><img alt="" src="http://b4.ac-images.cdnmyspace.cn/cnimages01/2/l_8b506fec08dab0e3da0f6735295ccc68.jpg" /><img alt="" src="http://b0.ac-images.cdnmyspace.cn/cnimages01/1/l_c037012b9eafbcf6e149cabd0182ab30.jpg" /><img alt="" src="http://b9.ac-images.cdnmyspace.cn/cnimages01/1/l_94b012599ba14da67b8549eccde2ff37.jpg" /><img alt="" src="http://b7.ac-images.cdnmyspace.cn/cnimages01/2/l_5c233bc733355307cde208cad7022c45.jpg" /><img alt="" src="http://b5.ac-images.cdnmyspace.cn/cnimages01/1/l_36801ce657a4e98aad1175d1fad6a7a9.jpg" /><img alt="" src="http://b6.ac-images.cdnmyspace.cn/cnimages01/1/l_0727059c207611dc36bca7539909cc18.jpg" /><img alt="" src="http://b7.ac-images.cdnmyspace.cn/cnimages01/2/l_f9128c984ba951ade21b6ebdf60d3681.jpg" /><img alt="" src="http://b2.ac-images.cdnmyspace.cn/cnimages01/2/l_913f026f80dd58973f8ffc14304746f6.jpg" /><img alt="" src="http://b6.ac-images.cdnmyspace.cn/cnimages01/1/l_29602667f0cba351935e2d6af54824da.jpg" /><img alt="" src="http://b8.ac-images.cdnmyspace.cn/cnimages01/2/l_d8c9fb431fca998838d2f76bcf3559ce.jpg" /><img alt="" src="http://b7.ac-images.cdnmyspace.cn/cnimages01/1/l_9d2e4f2c187657daf9d1ff004743319f.jpg" /><img alt="" src="http://b5.ac-images.cdnmyspace.cn/cnimages01/2/l_52df38d743c19b5c3dc7c64c48f69bab.jpg" /><img alt="" src="http://b9.ac-images.cdnmyspace.cn/cnimages01/2/l_52b8ae58d70b3abb0e3d2b471f2dae9b.jpg" /><img alt="" src="http://b1.ac-images.cdnmyspace.cn/cnimages01/2/l_e613534d22d9d9f2b3b70646cfd3688d.jpg" /><img alt="" src="http://b4.ac-images.cdnmyspace.cn/cnimages01/2/l_22922d674131f90bc96ad3b33cfccd1e.jpg" /><img alt="" src="http://b8.ac-images.cdnmyspace.cn/cnimages01/2/l_2d94ad491c401c46aed15cc217ed9820.jpg" /><img alt="" src="http://b8.ac-images.cdnmyspace.cn/cnimages01/2/l_88f41f7c396d02dada9568e7d59522f0.jpg" /> </p>
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/231040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-09-25 09:30 <a href="http://www.blogjava.net/itwangxinli/articles/231040.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：那一刻，我真实的被日本人感动着</title><link>http://www.blogjava.net/itwangxinli/articles/223649.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Fri, 22 Aug 2008 01:09:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/223649.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/223649.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/223649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/223649.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/223649.html</trackback:ping><description><![CDATA[<p><span style="color: red">本文出自：</span><span style="color: red"><br />
http://meiying861020.blog.163.com/blog/static/767861332008718114822717/?fromTodayFocus<br />
</span></p>
<p class="g_w_100 g_t_wrap g_t_center g_t_bold g_t_24 g_c_pdin c07" id="blogtitle_fks_085067081081089065082084086095083080086075082087085064">那一刻，我真实的被日本人感动着</p>
<div class="g_blog_list">
<div class="g_t_center g_c_pdin g_p_center c07 content" id="blogtext_fks_085067081081089065082084086095083080086075082087085064" style="width: 760px">
<p><font color="#000000" size="4"><strong>必须说明，我所说的感动，并非情感上的拉近，而是一种很深的情感触动。<br />
</strong></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2008年8月13日，奥运会足球小组赛日本对荷兰，日本零比一告负。整场比赛很平淡，但近四万的东北球迷却激情澎湃，荷兰加油，荷兰进一个的喊声，响彻沈阳奥体中心五里河体育场。中国人对日本人是没有好感的，而中国人中的东北人，尤其对日本人仇恨，这是历史的渊源。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;比赛结束了，作为胜方的荷兰队只是在中场向人们挥手致谢，而后离去，这时零我震动的一幕发生了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 日本的教练和随行官员走上足球场，和队员整齐的站在一起，开始绕场一周行走，每走到一个看台，向未给予他们一次掌声，一次呐喊的中国人，整齐的深深的一鞠躬！我震动了，随之是感动，我从来没有看到过这样的失败的球队，我第一次看到这样的失败的球队！<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;我不想再做赘述，我想说我的想法。单就足球，日本人是中国的徒弟，可为什么，近几年中国足球离日本原来越远！?我想，日本人的鞠躬，更多的是在尊重足球本身！有这样的精神，足球怎么能踢不好！？<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我不是社会学家，也不是历史学家，但我深深的感到，有这样的精神的一个民族，他的强大，是一种必然！最近在外交上，在政治上，在人道主义上，我们和日本走的很进，我不想说所谓的威胁论，但日本在二战后迅速崛起，应该给我们一些启示吧，我们可是他一衣带水的邻居啊！<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 都说中国是礼仪之邦，文明大国，都说日韩的谦恭是学的我们，可斗胆一问，我们自己呢!?忘记历史是一种背叛，可更重要的是我们能看清现实！如果我们只是沉迷在历史的坑坑洼洼之中，有一天我们抬起头来，会发现我们身边都是强大的巨人！<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我不知道，我用感动这个词是否会遭到国人的唾弃，可如果我们清醒了，奋起直追，感动一次又何妨！？ </p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;在开幕式上日本人让我震撼的一刻：当看到白天红日旗徐徐而来时，我条件反射，一贯的反感油然而生，但当后面的队伍影入我的眼帘时，我的想法有了巨大的改变，我发现这个代表队在我的印象中是唯一的所有人手拿本国国旗和中国国旗的队伍，我的心灵受到了深深的一激。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还有我在看羽毛球女双日本组合淘汰中国的杨维/张洁雯那场球时，镜头切换到一个场边最前排在加油的日本妇女时，我第一眼看到她拿着日本国旗时，反感又一次油然而生，但我又发现她另一只手拿的扇子竟是红色的，上面点缀着黄色五星时，我猛悟，那不是中国国旗吗？</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当我第一次在评论席看到日本评论员的时候，他们对工作认真负责的态度，谦逊对待所有人的态度，让我对他们充满了好感。而当我好奇他们来到评论席后，第一件事情是集体到CCR向我们所有CCR的工作人员问好的时候，我对他们充满了谢意——那一刻，我知道了，还是有很多人能注意到，能重视这些在后方为他们服务的工作人员。当我看到他们的嘉宾大林素子将一个横幅拉开，举在头顶，不断喊着：&#8220;中国加油&#8221;的时候，我才发现，面朝观众的那面，是中国的五星红旗，背面，是日本的太阳旗&#8230;&#8230;在那一时刻，我心里充满的，是一种尊敬！</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但是，当作为一个评论席助理，观看16号晚上日本男排的比赛时，居然发现，场内的观众非但没有公平的对比赛进行加油或者助威，反而用类似嘘声来对待发球的日本选手，用雷鸣般的掌声和欢呼声来&#8220;庆祝&#8221;日本队的丢分和失误&#8230;&#8230;&nbsp;&nbsp;&nbsp; 这样的发现让我在内心里不得不摇头叹息。这样毫无根据地针对某个国家的运动员——尤其是他们对待我们是很友善很真诚的，是一个高素质的人应有的表现么？是一个要飞速发展的国家应有的表现么？</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;面对不友善的大家，日本的评论员们在比赛结束后，只是回过头，对我们尴尬地笑了笑，说了声：辛苦了，谢谢你们，然后就收拾东西离开了&#8230;&#8230;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然而，他们不知道的是，那时的我，比他们更加尴尬。我很想告诉他们：谢谢你们对中国的支持，谢谢你们对那些不友善的人们的宽容和忍耐，谢谢&#8230;&#8230;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我不知道这种感觉大家是否能够理解，是否能够认同。不过，在我心里，我真实的被日本人感动着！！！</p>
</div>
</div>
   <img src ="http://www.blogjava.net/itwangxinli/aggbug/223649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-08-22 09:09 <a href="http://www.blogjava.net/itwangxinli/articles/223649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UML入门（转载IBM）</title><link>http://www.blogjava.net/itwangxinli/archive/2008/06/26/210968.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Thu, 26 Jun 2008 14:42:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2008/06/26/210968.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/210968.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2008/06/26/210968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/210968.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/210968.html</trackback:ping><description><![CDATA[<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr valign="top">
            <td width="100%">
            <h1><span style="color: #999999">UML基础: </span>统一建模语言简介</h1>
            <img class="display-img" height="6" alt="" src="http://www.ibm.com/i/c.gif" width="1" /></td>
            <td class="no-print" width="192"><img height="18" alt="developerWorks" src="http://www.ibm.com/developerworks/i/dw.gif" width="192" /></td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr valign="top">
            <td width="10"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /></td>
            <td width="100%">
            <table class="no-print" cellspacing="0" cellpadding="0" width="160" align="right" border="0">
                <tbody>
                    <tr>
                        <td width="10"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /></td>
                        <td>
                        <table cellspacing="0" cellpadding="0" width="150" border="0">
                            <tbody>
                                <tr>
                                    <td class="v14-header-1-small">文选项</td>
                                </tr>
                            </tbody>
                        </table>
                        <table class="v14-gray-table-border" cellspacing="0" cellpadding="0" border="0">
                            <tbody>
                                <tr>
                                    <td class="no-padding" width="150">
                                    <table cellspacing="0" cellpadding="0" width="143" border="0">
                                        <img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="8" />&nbsp;
                                        <tbody>
                                            <tr valign="top">
                                                <td width="8"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="8" /></td>
                                                <td width="122"></td>
                                            </tr>
                                            <noscript></noscript>
                                        </tbody>
                                    </table>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            <p>级别： 初级</p>
            <p><a href="http://www.ibm.com/developerworks/cn/rational/r-uml/#author" cmimpressionsent="1">Donald Bell</a>, IBM 全球服务, IBM <br />
            </p>
            <p>2004 年 2 月 01 日</p>
            <blockquote>回顾20世纪晚期--准确地说是1997年，OMG组织（Object Management Group对象管理组织）发布了统一建模语言（Unified Modeling Language，UML）。UML的目标之一就是为开发团队提供标准通用的设计语言来开发和构建计算机应用。UML提出了一套IT专业人员期待多年的统一的标准建模符号。通过使用UML，这些人员能够阅读和交流系统架构和设计规划--就像建筑工人多年来所使用的建筑设计图一样。</blockquote><!--start RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--end RESERVED FOR FUTURE USE INCLUDE FILES-->
            <p>到了21世纪--准确地说是2003年，UML已经获得了业界的认同。在我所见过的专业人员的简历中，75%都声称具备UML的知识。然而，在同绝大多数求职人员面谈之后，可以明显地看出他们并不真正了解UML。通常地，他们将UML用作一个术语，或对UML一知半解。大家对UML缺乏理解的这种状况，促进我撰写这篇关于UML 1.4的快速入门文章。当阅读完本文时，您还不具备足够的知识可以在简历上声称自己掌握了UML，但是您已具有了进一步钻研该语言的良好起点。 </p>
            <table align="right" border="0">
                <tbody>
                    <tr>
                        <td width="10"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /></td>
                        <td>正如前面曾提到过的，UML的本意是要成为一种标准的统一语言，使得IT专业人员能够进行计算机应用程序的建模。UML的主要创始人是Jim Rumbaugh、Ivar Jacobson和Grady Booch，他们最初都有自己的建模方法（OMT、OOSE和Booch），彼此之间存在着竞争。最终，他们联合起来创造了一种开放的标准。（听起来是不是很熟悉？这个现象类似J2EE、SOAP和Linux的诞生。）UML成为"标准"建模语言的原因之一在于，它与程序设计语言无关。（IBM Rational的UML建模工具被广泛应用于J2EE和.NET开发。）而且，UML符号集只是一种语言而不是一种方法学。这点很重要，因为语言与方法学不同，它可以在不做任何更改的情况下很容易地适应任何公司的业务运作方式。
                        <p>&nbsp;</p>
                        <p>既然UML不是一种方法学，它就不需要任何正式的工作产品（即IBM Rational Unified Process?术语中所定义的"工件"）。而且它还提供了多种类型的模型描述图（diagram），当在某种给定的方法学中使用这些图时，它使得开发中的应用程序的更易理解。UML的内涵远不只是这些模型描述图，但是对于入门来说，这些图对这门语言及其用法背后的基本原理提供了很好的介绍。通过把标准的UML图放进您的工作产品中，精通UML的人员就更加容易加入您的项目并迅速进入角色。最常用的UML图包括：用例图、类图、序列图、状态图、活动图、组件图和部署图。</p>
                        <p>深入讨论每类图的细节问题已超出了这篇入门文章的范围。因此，下面仅给出了每类图的简要说明，更详细的信息将在以后的文章中探讨。 序列图显示具体用例（或者是用例的一部分）的详细流程。它几乎是自描述的，并且显示了流程中中不同对象之间的调用关系，同时还可以很详细地显示对不同对象的不同调用。 </p>
                        <p>序列图有两个维度：垂直维度以发生的时间顺序显示消息/调用的序列；水平维度显示消息被发送到的对象实例。 </p>
                        <p>序列图的绘制非常简单。横跨图的顶部，每个框（参见图4）表示每个类的实例（对象）。在框中，类实例名称和类名称之间用空格/冒号/空格来分隔，例如，myReportGenerator : ReportGenerator。如果某个类实例向另一个类实例发送一条消息，则绘制一条具有指向接收类实例的开箭头的连线，并把消息/方法的名称放在连线上面。对于某些特别重要的消息，您可以绘制一条具有指向发起类实例的开箭头的虚线，将返回值标注在虚线上。就我而言，我总喜欢绘制出包括返回值的虚线，这些额外的信息可以使得序列图更易于阅读。 </p>
                        <p>阅读序列图也非常简单。从左上角启动序列的"驱动"类实例开始，然后顺着每条消息往下阅读。记住：虽然图4所示的例子序列图显示了每条被发送消息的返回消息，但这只是可选的。 </p>
                        <br />
                        <img alt="一个示例序列图" src="http://www.ibm.com/developerworks/cn/rational/r-uml/image004.gif" /> <br />
                        <p><strong>图4：一个示例序列图</strong> </p>
                        <p>通过阅读图4中的示例序列图，您可以明白如何创建一个CD销售报告（CD Sales Report）。其中的aServlet对象表示驱动类实例。aServlet向名为gen的ReportGenerator类实例发送一条消息。该消息被标为generateCDSalesReport，表示ReportGenerator对象实现了这个消息处理程序。进一步理解可发现，generateCDSalesReport消息标签在括号中包括了一个cdId，表明aServlet随该消息传递一个名为cdId的参数。当gen实例接收到一条generateCDSalesReport消息时，它会接着调用CDSalesReport类，并返回一个aCDReport的实例。然后gen实例对返回的aCDReport实例进行调用，在每次消息调用时向它传递参数。在该序列的结尾，gen实例向它的调用者aServlet返回一个aCDReport。 </p>
                        <p>请注意：图4中的序列图相对于典型的序列图来说太详细了。然而，我认为它才是足够易于理解的，并且它显示了如何表示嵌套的调用。对于初级开发人员来说，有时把一个序列分解到这种详细程度是很有必要的，这有助于他们理解相关的内容。 </p>
                        状态图表示某个类所处的不同状态和该类的状态转换信息。有人可能会争论说每个类都有状态，但不是每个类都应该有一个状态图。只对"感兴趣的"状态的类（也就是说，在系统活动期间具有三个或更多潜在状态的类）才进行状态图描述。
                        <p>&nbsp;</p>
                        <p>如图5所示，状态图的符号集包括5个基本元素：初始起点，它使用实心圆来绘制；状态之间的转换，它使用具有开箭头的线段来绘制；状态，它使用圆角矩形来绘制；判断点，它使用空心圆来绘制；以及一个或者多个终止点，它们使用内部包含实心圆的圆来绘制。要绘制状态图，首先绘制起点和一条指向该类的初始状态的转换线段。状态本身可以在图上的任意位置绘制，然后只需使用状态转换线条将它们连接起来。 </p>
                        <br />
                        <img alt="显示类通过某个功能系统的各种状态的状态图" src="http://www.ibm.com/developerworks/cn/rational/r-uml/image005.gif" /> <br />
                        <p><strong>图5：显示类通过某个功能系统的各种状态的状态图</strong> </p>
                        <p>图5中的状态图显示了它们可以表达的一些潜在信息。例如，从中可以看出贷款处理系统最初处于Loan Application状态。当批准前（pre-approval）过程完成时，根据该过程的结果，或者转到Loan Pre-approved状态，或者转到Loan Rejected状态。这个判断（它是在转换过程期间做出的）使用一个判断点来表示--即转换线条间的空心圆。通过该状态图可知，如果没有经过Loan Closing状态，贷款不可能从Loan Pre-Approved状态进入Loan in Maintenance状态。而且，所有贷款都将结束于Loan Rejected或者Loan in Maintenance状态。 </p>
                        <p><a name="6"><span class="atitle">活动图</span></a></p>
                        <p><br />
                        活动图表示在处理某个活动时，两个或者更多类对象之间的过程控制流。活动图可用于在业务单元的级别上对更高级别的业务过程进行建模，或者对低级别的内部类操作进行建模。根据我的经验，活动图最适合用于对较高级别的过程建模，比如公司当前在如何运作业务，或者业务如何运作等。这是因为与序列图相比，活动图在表示上"不够技术性的"，但有业务头脑的人们往往能够更快速地理解它们。 </p>
                        <p>活动图的符号集与状态图中使用的符号集类似。像状态图一样，活动图也从一个连接到初始活动的实心圆开始。活动是通过一个圆角矩形（活动的名称包含在其内）来表示的。活动可以通过转换线段连接到其他活动，或者连接到判断点，这些判断点连接到由判断点的条件所保护的不同活动。结束过程的活动连接到一个终止点（就像在状态图中一样）。作为一种选择，活动可以分组为泳道（swimlane），泳道用于表示实际执行活动的对象，如图6所示。</p>
                        <p><a name="7"><span class="atitle">组件图</span></a></p>
                        组件图提供系统的物理视图。它的用途是显示系统中的软件对其他软件组件（例如，库函数）的依赖关系。组件图可以在一个非常高的层次上显示，从而仅显示粗粒度的组件，也可以在组件包层次2上显示。
                        <p>&nbsp;</p>
                        <p>组件图的建模最适合通过例子来描述。图7显示了4个组件：Reporting Tool、Billboard Service、Servlet 2.2 API和JDBC API。从Reporting Tool组件指向Billboard Service、Servlet 2.2 API和JDBC API组件的带箭头的线段，表示Reporting Tool依赖于那三个组件。 </p>
                        <br />
                        <img alt="组件图显示了系统中各种软件组件的依赖关系" src="http://www.ibm.com/developerworks/cn/rational/r-uml/image007.gif" /> <br />
                        <p><strong>图7：组件图显示了系统中各种软件组件的依赖关系</strong> </p>
                        <p><a name="8"><span class="atitle">部署图</span></a></p>
                        <p><br />
                        部署图表示该软件系统如何部署到硬件环境中。它的用途是显示该系统不同的组件将在何处物理地运行，以及它们将如何彼此通信。因为部署图是对物理运行情况进行建模，系统的生产人员就可以很好地利用这种图。 </p>
                        <p>部署图中的符号包括组件图中所使用的符号元素，另外还增加了几个符号，包括节点的概念。一个节点可以代表一台物理机器，或代表一个虚拟机器节点（例如，一个大型机节点）。要对节点进行建模，只需绘制一个三维立方体，节点的名称位于立方体的顶部。所使用的命名约定与序列图中相同：[实例名称] : [实例类型]（例如，"w3reporting.myco.com : Application Server"）。 </p>
                        <br />
                        <img alt="部署图" src="http://www.ibm.com/developerworks/cn/rational/r-uml/image007.gif" /> <br />
                        <p><strong>图8：部署图。由于Reporting Tool组件绘制在IBM WebSphere内部，后者又绘制在节点w3.reporting.myco.com内部，因而我们知道，用户将通过运行在本地机器上的浏览器来访问Reporting Tool，浏览器通过公司intranet上的HTTP协议与Reporting Tool建立连接。 </strong></p>
                        <p>图8中的部署图表明，用户使用运行在本地机器上的浏览器访问Reporting Tool，并通过公司intranet上的HTTP协议连接到Reporting Tool组件。这个工具实际运行在名为w3reporting.myco.com的Application Server上。这个图还表明Reporting Tool组件绘制在IBM WebSphere内部，后者又绘制在w3.reporting.myco.com节点内部。Reporting Tool使用Java语言通过IBM DB2数据库的JDBC接口连接到它的报告数据库上，然后该接口又使用本地DB2通信方式，与运行在名为db1.myco.com的服务器上实际的DB2数据库通信。除了与报告数据库通信外，Report Tool组件还通过HTTPS上的SOAP与Billboard Service进行通信。 </p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
   <img src ="http://www.blogjava.net/itwangxinli/aggbug/210968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-06-26 22:42 <a href="http://www.blogjava.net/itwangxinli/archive/2008/06/26/210968.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java虚拟机深入研究 </title><link>http://www.blogjava.net/itwangxinli/archive/2008/05/25/202781.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Sun, 25 May 2008 14:07:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2008/05/25/202781.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/202781.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2008/05/25/202781.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/202781.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/202781.html</trackback:ping><description><![CDATA[<div class="postTitle">&nbsp;</div>
<span style="color: red">文章来自：http://www.qqread.com/java</span><br />
<br />
　　说起Java，人们首先想到的是<a href="http://www.qqread.com/z/p/java/index.html" target="_blank">Java编程</a>语言，然而事实上，Java是一种技术，它由四方面组成：Java编程语言、Java类<a href="http://www.qqread.com/keys/file-format/index.html" target="_blank">文件格式</a>、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示：<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><a href="http://www.qqread.com/ArtImage/20060214/pp5_1.gif" target="_blank"><img alt="Java虚拟机深入研究（图一）" src="http://www.qqread.com/ArtImage/20060214/pp5_1.gif" border="0" /></a><br />
            图1 Java四个方面的关系</div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　运行期环境代表着Java平台，开发人员编写Java代码(.java文件)，然后将之编译成字节码(.class文件)。最后字节码被装入内存，一旦字节码进入虚拟机，它就会被解释器解释执行，或者是被即时代码发生器有选择的转换成机器码执行。从上图也可以看出Java平台由Java虚拟机和Java应用程序接口搭建，Java语言则是进入这个平台的通道，用Java语言编写并编译的程序可以运行在这个平台上。这个平台的结构如下图所示：<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><a href="http://www.qqread.com/ArtImage/20060214/pp5_2.gif" target="_blank"><img alt="Java虚拟机深入研究（图二）" src="http://www.qqread.com/ArtImage/20060214/pp5_2.gif" width="590" border="0" /> <br />
            (点击查看原图)</a><br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　在Java平台的结构中, 可以看出，Java虚拟机(JVM) 处在核心的位置，是程序与底层<a href="http://www.qqread.com/tag/1182/index.html" target="_blank">操作系统</a>和硬件无关的关键。它的下方是移植接口，移植接口由两部分组成：适配器和Java操作系统, 其中依赖于平台的部分称为适配器；JVM 通过移植接口在具体的平台和操作系统上实现；在JVM 的上方是Java的基本类库和扩展类库以及它们的API， 利用Java API编写的应用程序(application) 和小程序(Java applet) 可以在任何Java平台上运行而无需考虑底层平台, 就是因为有Java虚拟机(JVM)实现了程序与操作系统的分离，从而实现了Java 的平台无关性。 <br />
<br />
　　那么到底什么是Java虚拟机(JVM)呢？通常我们谈论JVM时，我们的意思可能是： <br />
<br />
　　对JVM规范的的比较抽象的说明； <br />
　　对JVM的具体实现； <br />
　　在程序运行期间所生成的一个JVM实例。 <br />
<br />
　　对JVM规范的的抽象说明是一些概念的集合，它们已经在书《The Java Virtual Machine Specification》（《Java虚拟机规范》）中被详细地描述了；对JVM的具体实现要么是软件，要么是软件和硬件的组合，它已经被许多生产厂商所实现，并存在于多种平台之上；运行Java程序的任务由JVM的运行期实例单个承担。在本文中我们所讨论的Java虚拟机(JVM)主要针对第三种情况而言。它可以被看成一个想象中的机器，在实际的计算机上通过软件模拟来实现，有自己想象中的硬件，如处理器、堆栈、寄存器等，还有自己相应的指令系统。<br />
<br />
　　JVM在它的生存周期中有一个明确的任务，那就是运行Java程序，因此当Java程序启动的时候，就产生JVM的一个实例；当程序运行结束的时候，该实例也跟着消失了。下面我们从JVM的体系结构和它的运行过程这两个方面来对它进行比较深入的研究。<br />
<div class="line"></div>
<strong>Java虚拟机的体系结构</strong><br />
<br />
　　刚才已经提到，JVM可以由不同的厂商来实现。由于厂商的不同必然导致JVM在实现上的一些不同，然而JVM还是可以实现跨平台的特性，这就要归功于设计JVM时的体系结构了。<br />
<br />
　　我们知道，一个JVM实例的行为不光是它自己的事，还涉及到它的子系统、存储区域、数据类型和指令这些部分，它们描述了JVM的一个抽象的内部体系结构，其目的不光规定实现JVM时它内部的体系结构，更重要的是提供了一种方式，用于严格定义实现时的外部行为。每个JVM都有两种机制，一个是装载具有合适名称的类(类或是接口)，叫做类装载子系统；另外的一个负责执行包含在已装载的类或接口中的指令，叫做运行引擎。每个JVM又包括方法区、堆、Java栈、程序计数器和本地方法栈这五个部分，这几个部分和类装载机制与运行引擎机制一起组成的体系结构图为：<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><a href="http://www.qqread.com/ArtImage/20060214/pp5_3.gif" target="_blank"><img alt="Java虚拟机深入研究（图三）" src="http://www.qqread.com/ArtImage/20060214/pp5_3.gif" border="0" /></a><br />
            图3 JVM的体系结构<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　JVM的每个实例都有一个它自己的方法域和一个堆，运行于JVM内的所有的线程都共享这些区域；当虚拟机装载类文件的时候，它解析其中的二进制数据所包含的类信息，并把它们放到方法域中；当程序运行的时候，JVM把程序初始化的所有对象置于堆上；而每个线程创建的时候，都会拥有自己的程序计数器和Java栈，其中程序计数器中的值指向下一条即将被执行的指令，线程的Java栈则存储为该线程调用Java方法的状态；本地方法调用的状态被存储在本地方法栈，该方法栈依赖于具体的实现。<br />
<br />
　　下面分别对这几个部分进行说明。<br />
<br />
　　执行引擎处于JVM的核心位置，在Java虚拟机规范中，它的行为是由指令集所决定的。尽管对于每条指令，规范很详细地说明了当JVM执行字节码遇到指令时，它的实现应该做什么，但对于怎么做却言之甚少。Java虚拟机支持大约248个字节码。每个字节码执行一种基本的<a href="http://www.qqread.com/keys/cpu/index.html" target="_blank">CPU</a>运算,例如,把一个整数加到寄存器,子程序转移等。Java指令集相当于Java程序的<a href="http://www.qqread.com/tag/1461/index.html" target="_blank">汇编语言</a>。<br />
<br />
　　Java指令集中的指令包含一个单字节的操作符,用于指定要执行的操作,还有0个或多个操作数,提供操作所需的参数或数据。许多指令没有操作数,仅由一个单字节的操作符构成。<br />
<br />
　　虚拟机的内层循环的执行过程如下: <br />
<br />
do{ <br />
取一个操作符字节; <br />
根据操作符的值执行一个动作; <br />
}while(程序未结束)<br />
<br />
　　由于指令系统的简单性,使得虚拟机执行的过程十分简单,从而有利于提高执行的效率。指令中操作数的数量和大小是由操作符决定的。如果操作数比一个字节大,那么它存储的顺序是高位字节优先。例如,一个16位的参数存放时占用两个字节,其值为: <br />
<br />
　　第一个字节*256+第二个字节字节码。 <br />
<br />
　　指令流一般只是字节对齐的。指令tableswitch和lookup是例外,在这两条指令内部要求强制的4字节边界对齐。 <br />
<br />
　　对于本地方法接口，实现JVM并不要求一定要有它的支持，甚至可以完全没有。Sun公司实现Java本地接口(JNI)是出于可移植性的考虑，当然我们也可以设计出其它的本地接口来代替Sun公司的JNI。但是这些设计与实现是比较复杂的事情，需要确保垃圾回收器不会将那些正在被本地方法调用的对象释放掉。 <br />
<br />
　　Java的堆是一个运行时数据区,类的实例(对象)从中分配空间，它的管理是由垃圾回收来负责的:不给程序员显式释放对象的能力。Java不规定具体使用的垃圾回收算法,可以根据系统的需求使用各种各样的算法。 <br />
<br />
　　Java方法区与传统语言中的编译后代码或是<a href="http://www.qqread.com/keys/unix/index.html" target="_blank">Unix</a>进程中的正文段类似。它保存方法代码(编译后的java代码)和符号表。在当前的Java实现中,方法代码不包括在垃圾回收堆中,但计划在将来的版本中实现。每个类文件包含了一个Java类或一个Java界面的编译后的代码。可以说类文件是Java语言的执行代码文件。为了保证类文件的平台无关性,Java虚拟机规范中对类文件的格式也作了详细的说明。其具体细节请参考Sun公司的Java虚拟机规范。 <br />
<br />
　　Java虚拟机的寄存器用于保存机器的运行状态,与微处理器中的某些专用寄存器类似。Java虚拟机的寄存器有四种: <br />
<br />
　　pc: Java程序计数器； <br />
　　optop: 指向操作数栈顶端的指针； <br />
　　frame: 指向当前执行方法的执行环境的指针；。 <br />
　　vars: 指向当前执行方法的局部变量区第一个变量的指针。 <br />
<br />
　　在上述体系结构图中，我们所说的是第一种，即程序计数器，每个线程一旦被创建就拥有了自己的程序计数器。当线程执行Java方法的时候，它包含该线程正在被执行的指令的地址。但是若线程执行的是一个本地的方法，那么程序计数器的值就不会被定义。 <br />
<br />
　　Java虚拟机的栈有三个区域:局部变量区、运行环境区、操作数区。<br />
<br />
　　局部变量区<br />
<br />
　　每个Java方法使用一个固定大小的局部变量集。它们按照与vars寄存器的字偏移量来寻址。局部变量都是32位的。长整数和双精度浮点数占据了两个局部变量的空间,却按照第一个局部变量的索引来寻址。(例如,一个具有索引n的局部变量,如果是一个双精度浮点数,那么它实际占据了索引n和n+1所代表的存储空间)虚拟机规范并不要求在局部变量中的64位的值是64位对齐的。虚拟机提供了把局部变量中的值装载到操作数栈的指令,也提供了把操作数栈中的值写入局部变量的指令。<br />
<br />
　　运行环境区<br />
<br />
　　在运行环境中包含的信息用于动态链接,正常的方法返回以及异常捕捉。 <br />
<br />
　　动态链接 <br />
<br />
　　运行环境包括对指向当前类和当前方法的解释器符号表的指针,用于支持方法代码的动态链接。方法的class文件代码在引用要调用的方法和要访问的变量时使用符号。动态链接把符号形式的方法调用翻译成实际方法调用,装载必要的类以解释还没有定义的符号,并把变量访问翻译成与这些变量运行时的存储结构相应的偏移地址。动态链接方法和变量使得方法中使用的其它类的变化不会影响到本程序的代码。 <br />
<br />
　　正常的方法返回 <br />
<br />
　　如果当前方法正常地结束了,在执行了一条具有正确类型的返回指令时,调用的方法会得到一个返回值。执行环境在正常返回的情况下用于恢复调用者的寄存器,并把调用者的程序计数器增加一个恰当的数值,以跳过已执行过的方法调用指令,然后在调用者的执行环境中继续执行下去。 <br />
<br />
　　异常捕捉 <br />
<br />
　　异常情况在Java中被称作Error(错误)或Exception(异常),是Throwable类的子类,在程序中的原因是:①动态链接错,如无法找到所需的class文件。②运行时错,如对一个空指针的引用。程序使用了throw语句。 <br />
<br />
　　当异常发生时,Java虚拟机采取如下措施: <br />
<br />
　　检查与当前方法相联系的catch子句表。每个catch子句包含其有效指令范围,能够处理的异常类型,以及处理异常的代码块地址。 <br />
<br />
　　与异常相匹配的catch子句应该符合下面的条件:造成异常的指令在其指令范围之内,发生的异常类型是其能处理的异常类型的子类型。如果找到了匹配的catch子句,那么系统转移到指定的异常处理块处执行;如果没有找到异常处理块,重复寻找匹配的catch子句的过程,直到当前方法的所有嵌套的catch子句都被检查过。 <br />
<br />
　　由于虚拟机从第一个匹配的catch子句处继续执行,所以catch子句表中的顺序是很重要的。因为Java代码是结构化的,因此总可以把某个方法的所有的异常处理器都按序排列到一个表中,对任意可能的程序计数器的值,都可以用线性的顺序找到合适的异常处理块,以处理在该程序计数器值下发生的异常情况。 <br />
<br />
　　如果找不到匹配的catch子句,那么当前方法得到一个"未截获异常"的结果并返回到当前方法的调用者,好像异常刚刚在其调用者中发生一样。如果在调用者中仍然没有找到相应的异常处理块,那么这种错误将被传播下去。如果错误被传播到最顶层,那么系统将调用一个缺省的异常处理块。 <br />
<br />
　　操作数栈区<br />
<br />
　　机器指令只从操作数栈中取操作数,对它们进行操作,并把结果返回到栈中。选择栈结构的原因是:在只有少量寄存器或非通用寄存器的机器(如Intel486)上,也能够高效地模拟虚拟机的行为。操作数栈是32位的。它用于给方法传递参数,并从方法接收结果,也用于支持操作的参数,并保存操作的结果。例如,iadd指令将两个整数相加。相加的两个整数应该是操作数栈顶的两个字。这两个字是由先前的指令压进堆栈的。这两个整数将从堆栈弹出、相加,并把结果压回到操作数栈中。 <br />
<br />
　　每个原始数据类型都有专门的指令对它们进行必须的操作。每个操作数在栈中需要一个存储位置,除了long和double型,它们需要两个位置。操作数只能被适用于其类型的操作符所操作。例如,压入两个int类型的数,如果把它们当作是一个long类型的数则是非法的。在Sun的虚拟机实现中,这个限制由字节码验证器强制实行。但是,有少数操作(操作符dupe和swap),用于对运行时数据区进行操作时是不考虑类型的。 <br />
<br />
　　本地方法栈，当一个线程调用本地方法时，它就不再受到虚拟机关于结构和安全限制方面的约束，它既可以访问虚拟机的运行期数据区，也可以使用本地处理器以及任何类型的栈。例如，本地栈是一个<a href="http://www.qqread.com/keywords/c-language.html" target="_blank">C语言</a>的栈，那么当C程序调用C函数时，函数的参数以某种顺序被压入栈，结果则返回给调用函数。在实现Java虚拟机时，本地方法接口使用的是C语言的模型栈，那么它的本地方法栈的调度与使用则完全与C语言的栈相同。<br />
<br />
<div class="line"></div>
<strong>Java虚拟机的运行过程</strong><br />
<br />
　　上面对虚拟机的各个部分进行了比较详细的说明，下面通过一个具体的例子来分析它的运行过程。<br />
<br />
　　虚拟机通过调用某个指定类的方法main启动，传递给main一个字符串数组参数，使指定的类被装载，同时链接该类所使用的其它的类型，并且初始化它们。例如对于程序：<br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1">
    <tbody>
        <tr>
            <td>class HelloApp <br />
            {<br />
            　public static void main(String[] args) <br />
            　{<br />
            　　System.out.println("Hello World!"); <br />
            　　for (int i = 0; i &lt; args.length; i++ )<br />
            　　{<br />
            　　　System.out.println(args[i]);<br />
            　　}<br />
            　}<br />
            }</td>
        </tr>
    </tbody>
</table>
<br />
　　编译后在命令行模式下键入： java HelloApp run virtual machine <br />
<br />
　　将通过调用HelloApp的方法main来启动java虚拟机，传递给main一个包含三个字符串"run"、"virtual"、"machine"的数组。现在我们略述虚拟机在执行HelloApp时可能采取的步骤。 <br />
<br />
　　开始试图执行类HelloApp的main方法，发现该类并没有被装载，也就是说虚拟机当前不包含该类的二进制代表，于是虚拟机使用ClassLoader试图寻找这样的二进制代表。如果这个<a href="http://www.qqread.com/z/windows/process/index.html" target="_blank">进程</a>失败，则抛出一个异常。类被装载后同时在main方法被调用之前，必须对类HelloApp与其它类型进行链接然后初始化。链接包含三个阶段：检验，准备和解析。检验检查被装载的主类的符号和语义，准备则创建类或接口的静态域以及把这些域初始化为标准的默认值，解析负责检查主类对其它类或接口的符号引用，在这一步它是可选的。类的初始化是对类中声明的静态初始化函数和静态域的初始化构造方法的执行。一个类在初始化之前它的父类必须被初始化。整个过程如下：<br />
<br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><a href="http://www.qqread.com/ArtImage/20060214/pp5_4.gif" target="_blank"><img alt="Java虚拟机深入研究（图四）" src="http://www.qqread.com/ArtImage/20060214/pp5_4.gif" width="590" border="0" /> <br />
            (点击查看原图)</a><br />
            图4：虚拟机的运行过程<br />
            </div>
            </td>
        </tr>
    </tbody>
</table>
　　<strong>结束语</strong><br />
<br />
　　本文通过对JVM的体系结构的深入研究以及一个Java程序执行时虚拟机的运行过程的详细分析，意在剖析清楚Java虚拟机的机理。
  <img src ="http://www.blogjava.net/itwangxinli/aggbug/202781.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-05-25 22:07 <a href="http://www.blogjava.net/itwangxinli/archive/2008/05/25/202781.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 关于四川地震</title><link>http://www.blogjava.net/itwangxinli/articles/202780.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Sun, 25 May 2008 14:01:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/202780.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/202780.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/202780.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/202780.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/202780.html</trackback:ping><description><![CDATA[2008年5月12日14时28分，四川汶川发生八级地震，震惊了中国，震惊了世界。从电视的直播里，我们看到了及其悲惨的场面，现场的救援感动着每一个人，看着这样的场面，我哭了，感觉个人的生命如沧海一粟，那一刻我觉得我们真的很幸运，看见明媚的阳光，坐在公司里幸福的工作着，有吃有喝的，真是幸福啊。人要学会知足，像我们这样每天都很幸福的，我们就满足吧，看看地震中苦难的同胞，你就会觉得我们真的很幸福。
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/202780.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-05-25 22:01 <a href="http://www.blogjava.net/itwangxinli/articles/202780.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Applet签名与打包</title><link>http://www.blogjava.net/itwangxinli/archive/2008/03/27/189008.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Thu, 27 Mar 2008 06:57:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2008/03/27/189008.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/189008.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2008/03/27/189008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/189008.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/189008.html</trackback:ping><description><![CDATA[<div class="postbody clearfix"><span style="color: red"><a style="color: red" href="http://www.javaeye.com/topic/154531">本文摘自：http://www.javaeye.com/topic/154531</a><br />
作者：ferreousbox<br />
最实用的部分就是打包跟签名</span><br />
最近在研究applet,打算使用applet来开发一个上传文件上传控件,之前因为一直觉得applet的沙箱控制导致applet不能主动的访问客户端的资源,所以也曾因此而放弃.不过最近在研究applet的签名后,有了点收获,可以通过签名jar文档来达到这样的控制策略,下面是我在实际实验过程中的一些心得和体会,跟大家一起分享下.(<strong>注:如果转载此文,请注明出处和作者,尊重作者的劳动成果,谢谢</strong>) <br />
<br />
<strong>一、压缩你的class类文件为jar包</strong> <br />
1.假设你的需要压缩的类文件存在的包为：cn.mbq.test1和cn.mbq.test2 <br />
2.进入你的classes目录，在DOS窗口中执行命令：jar cf mytest.jar cn.mbq.test1 cn.mbq.test2 <br />
3.执行命令后你会在当前目录中找到mytest.jar文件，这个就是刚才生成的档案文件。你可以修改它的后缀为rar，然后使用winrar压缩程序打开它查看看是否正确。 <br />
（说明：正确的方法应该是 jar cf mytest.jar cn/mbq/test1 cn/mbq/test2 ）<br />
<br />
<strong>二、使用keytool工具生成密匙库</strong> <br />
1.keytool工具位于${java_home}/bin目录下； <br />
2.在DOS窗口中执行命令：keytool -genkey -keystore mytest.store -alias mbq&nbsp;<br />
<font size="2">&nbsp;</font>注意：mytest.store 是你的密匙库的名称，可以随意修改，后缀请不要修改！ <br />
<span style="color: red">如果需要可以添加参数DOS命令<br />
keytool -genkey -keystore mytest.store -alias mbq&nbsp;-validity 3650<br />
&nbsp;<br />
-validity 3650 表示的是有效期是3650天，默认情况是六个月有效期。<br />
</span>mbq 为别名，这个也可以改成自己的名称 <br />
3.执行上述命令后，DOS窗口中会提示你输入keystore的密码、你的姓名、组织单位等等信息。这里要注意的是输入密码请记住，后面要用到的。在最后，我们输入y确认信息。然后再直接回车设置mbq的主密码和store密码一致即可！ <br />
<br />
<br />
<strong>三、使用keytool工具导出签名时用到的证书</strong> <br />
1.在DOS窗口中执行命令：keytool -export -keystore mytest.store -alias mbq -file mbq.cert <br />
注意：mytest.store 就是第二步生成的密匙库名称 <br />
mbq 也是在第二步中我们指定的别名 <br />
mbq.cert 为我们生成的证书的名称，可以自己修改名称，注意后缀不要改 <br />
2.命令执行成功，我们会在当前目录下找到一个mbq.cert文件，这个就是我们刚才生成的证书。 <br />
<br />
<br />
<strong>四、使用jarsigner工具签名jar压缩文档</strong> <br />
1.jarsigner工具位于${java_home}/bin目录下； <br />
2.在当前DOS窗口中执行命令：jarsigner -keystore mytest.store mytest.jar mbq <br />
注意：mytest.store 就是我们在第二步中生成的密匙库名称 <br />
mytest.jar 就是我们这第一步压缩的jar文档 <br />
mbq 是提供者的名称，我们这里设置为我们的别名 <br />
<span style="color: red">修改客户端的程序是需要重新打包和签名。</span><br />
<br />
<strong>五、创建mytest.policy文件</strong> <br />
1.在当前目录下创建一个mytest.policy文件，其内容如下： <br />
keystore"file:mytest.store","JKS"; <br />
grantsignedBy"mbq" <br />
{ <br />
permission java.io.FilePermission"&lt;&lt;ALLFILES&gt;&gt;","read"; <br />
}; <br />
2.这个文件的意思就是说让所有由mbq签名的applet都可以对本地的所有文件进行读操作。 <br />
<br />
<br />
<strong>六、归档文件</strong> <br />
通过上述的五个操作后，我们会在当前目录中找到如下几个文件：mytest.jar-签名后的jar文档、mytest.store-密匙库、 mbq.cert-证书、mytest.policy-访问策略文件。如果没有这些文件，那么你的applet数字签名过程就没有正确的完成，请检查上述的操作。以后，如果对打包的java文件做了修改，那么就需要重新签名一次才可以！ <br />
<br />
<br />
<strong>七、在网页中运行applet</strong> <br />
1.假设你的applet中的主启动类为：cn.test.TestApplet.class；整个前面生成的档案文件、证书啊存储在目录：d:\test\myapplet下； <br />
2.建立一applet_test.html文件存放在任何目录下都可以，然后内容如下： <br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/154531#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="number">1</span><span>&nbsp;&lt;HTML&gt;...&lt;/HTML&gt;&lt;HTML&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">2</span><span>&nbsp;&lt;BODY&gt;...&lt;/BODY&gt;&lt;BODY&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">3</span><span>&nbsp;&lt;APPLET&nbsp;CODEBASE=</span><span class="string">"d:\test\myapplet"</span><span>&nbsp;CODE=</span><span class="string">"cn.test.TestApplet.class"</span><span>&nbsp;ARCHIVE=</span><span class="string">"mytest.jar"</span><span>&nbsp;WIDTH=</span><span class="number">200</span><span>&nbsp;HEIGHT=</span><span class="number">100</span><span>&nbsp;name=</span><span class="string">"myapp"</span><span>&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">4</span><span>&nbsp;&lt;/APPLET&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">5</span><span>&nbsp;&lt;/BODY&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">6</span><span>&nbsp;&lt;/HTML&gt;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">1 &lt;HTML&gt;...&lt;/HTML&gt;&lt;HTML&gt;
2 &lt;BODY&gt;...&lt;/BODY&gt;&lt;BODY&gt;
3 &lt;APPLET CODEBASE="d:\test\myapplet" CODE="cn.test.TestApplet.class" ARCHIVE="mytest.jar" WIDTH=200 HEIGHT=100 name="myapp"&gt;
4 &lt;/APPLET&gt;
5 &lt;/BODY&gt;
6 &lt;/HTML&gt;</pre>
<br />
<br />
注意：其中的CODEBASE就是你的类的基础目录，CODE也就是你的APPLET的启动主类，ARCHIVE也就是签名后的JAR文档。 <br />
2.然后在IE中打开该html文件，那么会看到IE提示你是否信任该插件，也就是说我们的证书起作用了，然后确定运行后，就可以在页面上看到applet的运行效果了。 <br />
<br />
但是由于SUN和MS的问题，目前IE并不支持最新的JRE，而是使用MS自己开发的JRE，所以这个也是影响APPLET发展壮大的一个原因。而且正是由于这个原因，SUN的java-plugin技术才会出现。使用SUN的java-plugin技术我们就可以在applet中使用最新的JAVA类库了。由于IE在遇到APPLET标签的时候会调用自己的JRE，但是如果客户机器上安装的JRE不是我们想要的版本，那么就会出错了。所谓java- plugin技术就是利用IE的插件机制来制定我们想要的JRE，我们可以在IE中使用OBJECT标签来调用APPLET，这样就不会引用MS的JRE 了，从而达到我们想要的效果，而且java-plugin技术不仅仅支持IE，还支持Navigator等浏览器。不过我们需要编写比较复杂的HTML代码了，但是这一且SUN已经帮我们做到了，呵呵，在JDK1.4或更高的版本中SUN提供了一个HtmlConverter.exe工具来帮助将包含 applet标签的html转换成包含OBJECT和EMBED标签的html代码，该工具位于${java_home}/bin目录下，对于1.4以前的版本该工具则是单独提供的，不过现在几乎都是1.4或1.5甚至更高版本的JDK了吧，呵呵。 <br />
<br />
该工具很简单，是图形化的工具，我们直接运行即可。比如我将上面的包含applet的html转换后(比如我选择只支持IE的)，其代码变成了如下： <br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/154531#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="number">01</span><span>&nbsp;&lt;HTML&gt;...&lt;/HTML&gt;&lt;HTML&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">02</span><span>&nbsp;&lt;BODY&gt;...&lt;/BODY&gt;&lt;BODY&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">03</span><span>&nbsp;&lt;!--</span><span class="string">"CONVERTED_APPLET"</span><span>--&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">04</span><span>&nbsp;&lt;!--&nbsp;HTML&nbsp;CONVERTER&nbsp;--&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">05</span><span>&nbsp;&lt;object&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">06</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classid&nbsp;=&nbsp;</span><span class="string">"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"</span><span>&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">07</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;codebase&nbsp;=&nbsp;</span><span class="string">"http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=5,0,0,3"</span><span>&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">08</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WIDTH&nbsp;=&nbsp;</span><span class="number">200</span><span>&nbsp;HEIGHT&nbsp;=&nbsp;</span><span class="number">100</span><span>&nbsp;NAME&nbsp;=&nbsp;</span><span class="string">"myapp"</span><span>&nbsp;&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">09</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;PARAM&nbsp;NAME&nbsp;=&nbsp;CODE&nbsp;VALUE&nbsp;=&nbsp;</span><span class="string">"cn.test.TestApplet.class"</span><span>&nbsp;&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">10</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;PARAM&nbsp;NAME&nbsp;=&nbsp;CODEBASE&nbsp;VALUE&nbsp;=&nbsp;</span><span class="string">"d:\test\myapplet"</span><span>&nbsp;&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">11</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;PARAM&nbsp;NAME&nbsp;=&nbsp;ARCHIVE&nbsp;VALUE&nbsp;=&nbsp;</span><span class="string">"mytest.jar"</span><span>&nbsp;&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">12</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;PARAM&nbsp;NAME&nbsp;=&nbsp;NAME&nbsp;VALUE&nbsp;=&nbsp;</span><span class="string">"myapp"</span><span>&nbsp;&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">13</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param&nbsp;name&nbsp;=&nbsp;</span><span class="string">"type"</span><span>&nbsp;value&nbsp;=&nbsp;</span><span class="string">"application/x-java-applet;version=1.5"</span><span>&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">14</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param&nbsp;name&nbsp;=&nbsp;</span><span class="string">"scriptable"</span><span>&nbsp;value&nbsp;=&nbsp;</span><span class="string">"false"</span><span>&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">15</span><span>&nbsp;&lt;/object&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">16</span><span>&nbsp;&lt;!--&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">17</span><span>&nbsp;&lt;APPLET&nbsp;CODEBASE=</span><span class="string">"d:\test\myapplet"</span><span>&nbsp;CODE=</span><span class="string">"cn.test.TestApplet.class"</span><span>&nbsp;ARCHIVE=</span><span class="string">"mytest.jar"</span><span>&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">18</span><span>&nbsp;WIDTH=</span><span class="number">200</span><span>&nbsp;HEIGHT=</span><span class="number">100</span><span>&nbsp;name=</span><span class="string">"myapp"</span><span>&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">19</span><span>&nbsp;&lt;/APPLET&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">20</span><span>&nbsp;--&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">21</span><span>&nbsp;&lt;!--</span><span class="string">"END_CONVERTED_APPLET"</span><span>--&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">22</span><span>&nbsp;&lt;/BODY&gt;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">23</span><span>&nbsp;&lt;/HTML&gt;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">01 &lt;HTML&gt;...&lt;/HTML&gt;&lt;HTML&gt;
02 &lt;BODY&gt;...&lt;/BODY&gt;&lt;BODY&gt;
03 &lt;!--"CONVERTED_APPLET"--&gt;
04 &lt;!-- HTML CONVERTER --&gt;
05 &lt;object
06     classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
07     codebase = "http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=5,0,0,3"
08     WIDTH = 200 HEIGHT = 100 NAME = "myapp" &gt;
09     &lt;PARAM NAME = CODE VALUE = "cn.test.TestApplet.class" &gt;
10     &lt;PARAM NAME = CODEBASE VALUE = "d:\test\myapplet" &gt;
11     &lt;PARAM NAME = ARCHIVE VALUE = "mytest.jar" &gt;
12     &lt;PARAM NAME = NAME VALUE = "myapp" &gt;
13     &lt;param name = "type" value = "application/x-java-applet;version=1.5"&gt;
14     &lt;param name = "scriptable" value = "false"&gt;
15 &lt;/object&gt;
16 &lt;!--
17 &lt;APPLET CODEBASE="d:\test\myapplet" CODE="cn.test.TestApplet.class" ARCHIVE="mytest.jar"
18 WIDTH=200 HEIGHT=100 name="myapp"&gt;
19 &lt;/APPLET&gt;
20 --&gt;
21 &lt;!--"END_CONVERTED_APPLET"--&gt;
22 &lt;/BODY&gt;
23 &lt;/HTML&gt;</pre>
<br />
<br />
注意其中的OBJECT标签，可以看到APPLET标签已经被注释掉了。其中PARAM NAME=NAME这一行中的myapp就是我们applet应用程序的名称，在IE提示的确认运行中显示的就是这个名称了，我们可以改为自己的公司或组织的名称。然后提示的提供者也就是我们在签名时用到的名称了。 <br />
<br />
另外，还要特别注意的就是这个包含OBJECT标签的html页面必须和你的mytest.jar压缩文档放在同一个目录下，这样才可以正确的加载，否则会一直报ClassNotFound的异常的，即使我们在OBJECT标签中指定了CODEBASE也不行，这个是我在测试的时候遇到的问题！ <br />
<br />
<br />
<strong>八、在Internet上应用签名的applet</strong> <br />
如果要把applet部署在网络上，那么最好是采用OBJECT标签的形式，同时也要兼顾采用EMBED标签来支持诸如FF等浏览器。我们把已签名了的 mytest.jar和我们的网页放在同一个目录下，至于其他的如mytest.store和mbq.cert可以不用放在一起，至少我在测试的过程中没有放到一起也不会出错，而且在不同的机器上运行的也非常好，可以读取客户端机器的资源！另外，也发现mytest.policy其实也没什么用处，因为这是参考网络上的，而且他们的版本都是1.3左右，所以估计是版本低的缘故吧！ <br />
<br />
<br />
到此，我们就已经完成了applet的签名到部署，以及到实际的网络应用中了。这样我们使用applet来开发控件时就不会因为无法读取客户端资源而放弃了，呵呵~~ <br />
<br />
<span style="color: red">说明：根据实际应用，其实最 有用的就是将程序打成jar包，并对jar包进行数字签名。</span></div>
</td>
</tr>
<tr>
    <td class="postauthor"></td>
</tr>
  <img src ="http://www.blogjava.net/itwangxinli/aggbug/189008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-03-27 14:57 <a href="http://www.blogjava.net/itwangxinli/archive/2008/03/27/189008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>累</title><link>http://www.blogjava.net/itwangxinli/articles/188584.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Tue, 25 Mar 2008 13:00:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/188584.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/188584.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/188584.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/188584.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/188584.html</trackback:ping><description><![CDATA[好久没有更新blog了，哎，现在感觉真累啊。早上上班走的时候，看到外边阳光明媚，想想在家，多好啊。家里的油菜花开了，草芷也开花了吧，绿油油的，看着就让人舒服。家门口的那条小河沟，鱼儿应该浮出水面，偷吃水草了吧。真的想在家里呆着，牵着家里的水牛，在小河边上钓钓鱼，享受着暖洋洋的阳光，真的是件很幸福的事情，可是，生活中有很多不如意的事情，并不象想象中的那么完美。有时候，上班的早上，走在马路上，看着这么好的天，我们却为了一点点可怜的工资，把自己给出卖了，卖掉的时间，青春，阳光，幸福，换来的是可怜的几张钞票，伤心，失落。为了工作，失去了太多；为了生活，错过了太多；一个小小的胆怯，让自己和幸福擦肩而过，与自己最爱的人擦肩而过，有时候感觉活着真的太累。<br />
&nbsp;想想我们为了什么呢？房子太贵，辛辛苦苦一年也只能买到两三平米巴掌大的一块地方。感觉自己都养不活自己了，还好老家有块地。不知道，十年之后，那块地是否依然等待着我去开垦，真的害怕等自己回家了，发现土地没了，那样，真的去讨饭了<br />
好想回家，回家种着一亩三分地，怀念上山放牛，下河摸鱼的日子...............
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/188584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-03-25 21:00 <a href="http://www.blogjava.net/itwangxinli/articles/188584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HttpSession</title><link>http://www.blogjava.net/itwangxinli/archive/2008/03/17/186756.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Mon, 17 Mar 2008 06:16:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2008/03/17/186756.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/186756.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2008/03/17/186756.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/186756.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/186756.html</trackback:ping><description><![CDATA[<p><span style="color: red">说明：本文是从网络上转摘过来的，目的是方便大家学习交流，如果有版权，请通知我，我会及时的删除。<br />
Mail:itangxinli@gmail.com<br />
</span>作者：郎云鹏（dev2dev ID: hippiewolf）<br />
(<a href="http://dev2dev.bea.com.cn/bbs/jishudata/ArticleShow.jsp?Id=10">http://dev2dev.bea.com.cn/bbs/jishudata/ArticleShow.jsp?Id=10</a>)</p>
<p>摘要：虽然session机制在web应用程序中被采用已经很长时间了，但是仍然有很多人不清楚session机制的本质，以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答。</p>
<p>目录：<br />
<a href="http://blog.csdn.net/zhoubin_java/archive/2005/10/08/497418.aspx#1">一、术语session</a><br />
<a href="http://blog.csdn.net/zhoubin_java/archive/2005/10/08/497418.aspx#2">二、HTTP协议与状态保持</a><br />
<a href="http://blog.csdn.net/zhoubin_java/archive/2005/10/08/497418.aspx#3">三、理解cookie机制</a><br />
<a href="http://blog.csdn.net/zhoubin_java/archive/2005/10/08/497418.aspx#4">四、理解session机制</a><br />
<a href="http://blog.csdn.net/zhoubin_java/archive/2005/10/08/497418.aspx#5">五、理解javax.servlet.http.HttpSession</a><br />
<a href="http://blog.csdn.net/zhoubin_java/archive/2005/10/08/497418.aspx#6">六、HttpSession常见问题</a><br />
<a href="http://blog.csdn.net/zhoubin_java/archive/2005/10/08/497418.aspx#7">七、跨应用程序的session共享</a><br />
<a href="http://blog.csdn.net/zhoubin_java/archive/2005/10/08/497418.aspx#8">八、总结</a><br />
<a href="http://blog.csdn.net/zhoubin_java/archive/2005/10/08/497418.aspx#9">参考文档</a></p>
<p id="#1"><strong>一、术语session</strong><br />
在我的经验里，session这个词被滥用的程度大概仅次于transaction，更加有趣的是transaction与session在某些语境下的含义是相同的。</p>
<p>session，中文经常翻译为会话，其本来的含义是指有始有终的一系列动作/消息，比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个 session。有时候我们可以看到这样的话&#8220;在一个浏览器会话期间，...&#8221;，这里的会话一词用的就是其本义，是指从一个浏览器窗口打开到关闭这个期间 ①。最混乱的是&#8220;用户（客户端）在一次会话期间&#8221;这样一句话，它可能指用户的一系列动作（一般情况下是同某个具体目的相关的一系列动作，比如从登录到选购商品到结账登出这样一个网上购物的过程，有时候也被称为一个transaction），然而有时候也可能仅仅是指一次连接，也有可能是指含义①，其中的差别只能靠上下文来推断②。</p>
<p>然而当session一词与网络协议相关联时，它又往往隐含了&#8220;面向连接&#8221;和/或&#8220;保持状态&#8221;这样两个含义，&#8220;面向连接&#8221;指的是在通信双方在通信之前要先建立一个通信的渠道，比如打电话，直到对方接了电话通信才能开始，与此相对的是写信，在你把信发出去的时候你并不能确认对方的地址是否正确，通信渠道不一定能建立，但对发信人来说，通信已经开始了。&#8220;保持状态&#8221;则是指通信的一方能够把一系列的消息关联起来，使得消息之间可以互相依赖，比如一个服务员能够认出再次光临的老顾客并且记得上次这个顾客还欠店里一块钱。这一类的例子有&#8220;一个TCP session&#8221;或者&#8220;一个POP3 session&#8221;③。</p>
<p>而到了web服务器蓬勃发展的时代，session在web开发语境下的语义又有了新的扩展，它的含义是指一类用来在客户端与服务器之间保持状态的解决方案④。有时候session也用来指这种解决方案的存储结构，如&#8220;把xxx保存在session里&#8221;⑤。由于各种用于web开发的语言在一定程度上都提供了对这种解决方案的支持，所以在某种特定语言的语境下，session也被用来指代该语言的解决方案，比如经常把Java里提供的javax.servlet.http.HttpSession简称为session⑥。</p>
<p>鉴于这种混乱已不可改变，本文中session一词的运用也会根据上下文有不同的含义，请大家注意分辨。<br />
在本文中，使用中文&#8220;浏览器会话期间&#8221;来表达含义①，使用&#8220;session机制&#8221;来表达含义④，使用&#8220;session&#8221;表达含义⑤，使用具体的&#8220;HttpSession&#8221;来表达含义⑥</p>
<p id="#2"><strong>二、HTTP协议与状态保持</strong><br />
HTTP 协议本身是无状态的，这与HTTP协议本来的目的是相符的，客户端只需要简单的向服务器请求下载某些文件，无论是客户端还是服务器都没有必要纪录彼此过去的行为，每一次请求之间都是独立的，好比一个顾客和一个自动售货机或者一个普通的（非会员制）大卖场之间的关系一样。</p>
<p>然而聪明（或者贪心？）的人们很快发现如果能够提供一些按需生成的动态信息会使web变得更加有用，就像给有线电视加上点播功能一样。这种需求一方面迫使HTML逐步添加了表单、脚本、DOM等客户端行为，另一方面在服务器端则出现了CGI规范以响应客户端的动态请求，作为传输载体的HTTP协议也添加了文件上载、 cookie这些特性。其中cookie的作用就是为了解决HTTP协议无状态的缺陷所作出的努力。至于后来出现的session机制则是又一种在客户端与服务器之间保持状态的解决方案。</p>
<p>让我们用几个例子来描述一下cookie和session机制之间的区别与联系。笔者曾经常去的一家咖啡店有喝5杯咖啡免费赠一杯咖啡的优惠，然而一次性消费5杯咖啡的机会微乎其微，这时就需要某种方式来纪录某位顾客的消费数量。想象一下其实也无外乎下面的几种方案：<br />
1、该店的店员很厉害，能记住每位顾客的消费数量，只要顾客一走进咖啡店，店员就知道该怎么对待了。这种做法就是协议本身支持状态。<br />
2、发给顾客一张卡片，上面记录着消费的数量，一般还有个有效期限。每次消费时，如果顾客出示这张卡片，则此次消费就会与以前或以后的消费相联系起来。这种做法就是在客户端保持状态。<br />
3、发给顾客一张会员卡，除了卡号之外什么信息也不纪录，每次消费时，如果顾客出示该卡片，则店员在店里的纪录本上找到这个卡号对应的纪录添加一些消费信息。这种做法就是在服务器端保持状态。</p>
<p>由于HTTP协议是无状态的，而出于种种考虑也不希望使之成为有状态的，因此，后面两种方案就成为现实的选择。具体来说cookie机制采用的是在客户端保持状态的方案，而session机制采用的是在服务器端保持状态的方案。同时我们也看到，由于采用服务器端保持状态的方案在客户端也需要保存一个标识，所以session机制可能需要借助于cookie机制来达到保存标识的目的，但实际上它还有其他选择。</p>
<p id="#3"><strong>三、理解cookie机制</strong> <br />
cookie机制的基本原理就如上面的例子一样简单，但是还有几个问题需要解决：&#8220;会员卡&#8221;如何分发；&#8220;会员卡&#8221;的内容；以及客户如何使用&#8220;会员卡&#8221;。</p>
<p>正统的cookie分发是通过扩展HTTP协议来实现的，服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。</p>
<p>而cookie 的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie，如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置，则把该cookie附在请求资源的HTTP请求头上发送给服务器。意思是麦当劳的会员卡只能在麦当劳的店里出示，如果某家分店还发行了自己的会员卡，那么进这家店的时候除了要出示麦当劳的会员卡，还要出示这家店的会员卡。</p>
<p>cookie的内容主要包括：名字，值，过期时间，路径和域。<br />
其中域可以指定某一个域比如.google.com，相当于总店招牌，比如宝洁公司，也可以指定一个域下的具体某台机器比如www.google.com或者froogle.google.com，可以用飘柔来做比。<br />
路径就是跟在域名后面的URL路径，比如/或者/foo等等，可以用某飘柔专柜做比。<br />
路径与域合在一起就构成了cookie的作用范围。<br />
如果不设置过期时间，则表示这个cookie的生命期为浏览器会话期间，只要关闭浏览器窗口，cookie就消失了。这种生命期为浏览器会话期的 cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里，当然这种行为并不是规范规定的。如果设置了过期时间，浏览器就会把cookie保存到硬盘上，关闭后再次打开浏览器，这些cookie仍然有效直到超过设定的过期时间。</p>
<p>存储在硬盘上的cookie可以在不同的浏览器进程间共享，比如两个IE窗口。而对于保存在内存里的cookie，不同的浏览器有不同的处理方式。对于IE，在一个打开的窗口上按 Ctrl-N（或者从文件菜单）打开的窗口可以与原窗口共享，而使用其他方式新开的IE进程则不能共享已经打开的窗口的内存cookie；对于 Mozilla Firefox0.8，所有的进程和标签页都可以共享同样的cookie。一般来说是用javascript的window.open打开的窗口会与原窗口共享内存cookie。浏览器对于会话cookie的这种只认cookie不认人的处理方式经常给采用session机制的web应用程序开发者造成很大的困扰。</p>
<p>下面就是一个goolge设置cookie的响应头的例子<br />
HTTP/1.1 302 Found<br />
Location: http://www.google.com/intl/zh-CN/<br />
Set-Cookie: PREF=ID=0565f77e132de138:NW=1:TM=1098082649:LM=1098082649:S=KaeaCFPo49RiA_d8; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com<br />
Content-Type: text/html</p>
<p align="center"><img height="293" alt="" src="http://dev2dev.bea.com.cn/images/paihang_article/041020/image002.jpg" width="408" /></p>
<p><br />
这是使用HTTPLook这个HTTP Sniffer软件来俘获的HTTP通讯纪录的一部分</p>
<p align="center"><img height="344" alt="" src="http://dev2dev.bea.com.cn/images/paihang_article/041020/image004.jpg" width="432" /></p>
<p><br />
浏览器在再次访问goolge的资源时自动向外发送cookie</p>
<p align="center"><img height="305" alt="" src="http://dev2dev.bea.com.cn/images/paihang_article/041020/image006.jpg" width="421" /> </p>
<p><br />
使用Firefox可以很容易的观察现有的cookie的值<br />
使用HTTPLook配合Firefox可以很容易的理解cookie的工作原理。</p>
<p align="center"><img height="248" alt="" src="http://dev2dev.bea.com.cn/images/paihang_article/041020/image008.jpg" width="324" /></p>
<p><br />
IE也可以设置在接受cookie前询问</p>
<p align="center"><img height="249" alt="" src="http://dev2dev.bea.com.cn/images/paihang_article/041020/image010.jpg" width="239" /> </p>
<p><br />
这是一个询问接受cookie的对话框。</p>
<p id="#4"><strong>四、理解session机制</strong><br />
session机制是一种服务器端的机制，服务器使用一种类似于散列表的结构（也可能就是使用散列表）来保存信息。</p>
<p>当程序需要为某个客户端的请求创建一个session的时候，服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session id，如果已包含一个session id则说明以前已经为此客户端创建过session，服务器就按照session id把这个session检索出来使用（如果检索不到，可能会新建一个），如果客户端请求不包含session id，则为此客户端创建一个session并且生成一个与此session相关联的session id，session id的值应该是一个既不会重复，又不容易被找到规律以仿造的字符串，这个session id将被在本次响应中返回给客户端保存。</p>
<p>保存这个 session id的方式可以采用cookie，这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于 SEEESIONID，而。比如weblogic对于web应用程序生成的cookie，JSESSIONID= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764，它的名字就是 JSESSIONID。</p>
<p>由于cookie可以被人为的禁止，必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一种技术叫做URL重写，就是把session id直接附加在URL路径的后面，附加方式也有两种，一种是作为URL路径的附加信息，表现形式为http://...../xxx; jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764<br />
另一种是作为查询字符串附加在URL后面，表现形式为http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764<br />
这两种方式对于用户来说是没有区别的，只是服务器在解析的时候处理的方式不同，采用第一种方式也有利于把session id的信息和正常程序参数区分开来。<br />
为了在整个交互过程中始终保持状态，就必须在每个客户端可能请求的路径后面都包含这个session id。</p>
<p>另一种技术叫做表单隐藏字段。就是服务器会自动修改表单，添加一个隐藏字段，以便在表单提交时能够把session id传递回服务器。比如下面的表单<br />
&lt;form name="testform" action="/xxx"&gt;<br />
&lt;input type="text"&gt;<br />
&lt;/form&gt;<br />
在被传递给客户端之前将被改写成<br />
&lt;form name="testform" action="/xxx"&gt;<br />
&lt;input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"&gt;<br />
&lt;input type="text"&gt;<br />
&lt;/form&gt;<br />
这种技术现在已较少应用，笔者接触过的很古老的iPlanet6(SunONE应用服务器的前身)就使用了这种技术。<br />
实际上这种技术可以简单的用对action应用URL重写来代替。</p>
<p>在谈论session机制的时候，常常听到这样一种误解&#8220;只要关闭浏览器，session就消失了&#8221;。其实可以想象一下会员卡的例子，除非顾客主动对店家提出销卡，否则店家绝对不会轻易删除顾客的资料。对session来说也是一样的，除非程序通知服务器删除一个session，否则服务器会一直保留，程序一般都是在用户做log off的时候发个指令去删除session。然而浏览器从来不会主动在关闭之前通知服务器它将要关闭，因此服务器根本不会有机会知道浏览器已经关闭，之所以会有这种错觉，是大部分session机制都使用会话cookie来保存session id，而关闭浏览器后这个session id就消失了，再次连接服务器时也就无法找到原来的session。如果服务器设置的cookie被保存到硬盘上，或者使用某种手段改写浏览器发出的 HTTP请求头，把原来的session id发送给服务器，则再次打开浏览器仍然能够找到原来的session。</p>
<p>恰恰是由于关闭浏览器不会导致session被删除，迫使服务器为seesion设置了一个失效时间，当距离客户端上一次使用session的时间超过这个失效时间时，服务器就可以认为客户端已经停止了活动，才会把session删除以节省存储空间。</p>
<p id="#5"><strong>五、理解javax.servlet.http.HttpSession</strong><br />
HttpSession是Java平台对session机制的实现规范，因为它仅仅是个接口，具体到每个web应用服务器的提供商，除了对规范支持之外，仍然会有一些规范里没有规定的细微差异。这里我们以BEA的Weblogic Server8.1作为例子来演示。</p>
<p>首先，Weblogic Server提供了一系列的参数来控制它的HttpSession的实现，包括使用cookie的开关选项，使用URL重写的开关选项，session持久化的设置，session失效时间的设置，以及针对cookie的各种设置，比如设置cookie的名字、路径、域，cookie的生存时间等。</p>
<p>一般情况下，session都是存储在内存里，当服务器进程被停止或者重启的时候，内存里的session也会被清空，如果设置了session的持久化特性，服务器就会把session保存到硬盘上，当服务器进程重新启动或这些信息将能够被再次使用，Weblogic Server支持的持久性方式包括文件、数据库、客户端cookie保存和复制。</p>
<p>复制严格说来不算持久化保存，因为session实际上还是保存在内存里，不过同样的信息被复制到各个cluster内的服务器进程中，这样即使某个服务器进程停止工作也仍然可以从其他进程中取得session。</p>
<p>cookie生存时间的设置则会影响浏览器生成的cookie是否是一个会话cookie。默认是使用会话cookie。有兴趣的可以用它来试验我们在第四节里提到的那个误解。</p>
<p>cookie的路径对于web应用程序来说是一个非常重要的选项，Weblogic Server对这个选项的默认处理方式使得它与其他服务器有明显的区别。后面我们会专题讨论。</p>
<p>关于session的设置参考[5] http://e-docs.bea.com/wls/docs70/webapp/weblogic_xml.html#1036869</p>
<p id="#6"><strong>六、HttpSession常见问题</strong><br />
（在本小节中session的含义为⑤和⑥的混合）</p>
<p><br />
1、session在何时被创建<br />
一个常见的误解是以为session在有客户端访问时就被创建，然而事实是直到某server端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建，注意如果JSP没有显示的使用 &lt;%@page session="false"%&gt; 关闭session，则JSP文件在编译成Servlet时将会自动加上这样一条语句HttpSession session = HttpServletRequest.getSession(true);这也是JSP中隐含的session对象的来历。</p>
<p>由于session会消耗内存资源，因此，如果不打算使用session，应该在所有的JSP中关闭它。</p>
<p>2、session何时被删除<br />
综合前面的讨论，session在下列情况下被删除a.程序调用HttpSession.invalidate();或b.距离上一次收到客户端发送的session id时间间隔超过了session的超时设置;或c.服务器进程被停止（非持久session）</p>
<p>3、如何做到在浏览器关闭时删除session<br />
严格的讲，做不到这一点。可以做一点努力的办法是在所有的客户端页面里使用javascript代码window.oncolose来监视浏览器的关闭动作，然后向服务器发送一个请求来删除session。但是对于浏览器崩溃或者强行杀死进程这些非常规手段仍然无能为力。</p>
<p>4、有个HttpSessionListener是怎么回事<br />
你可以创建这样的listener去监控session的创建和销毁事件，使得在发生这样的事件时你可以做一些相应的工作。注意是session的创建和销毁动作触发listener，而不是相反。类似的与HttpSession有关的listener还有 HttpSessionBindingListener，HttpSessionActivationListener和 HttpSessionAttributeListener。</p>
<p>5、存放在session中的对象必须是可序列化的吗<br />
不是必需的。要求对象可序列化只是为了session能够在集群中被复制或者能够持久保存或者在必要时server能够暂时把session交换出内存。在 Weblogic Server的session中放置一个不可序列化的对象在控制台上会收到一个警告。我所用过的某个iPlanet版本如果session中有不可序列化的对象，在session销毁时会有一个Exception，很奇怪。</p>
<p>6、如何才能正确的应付客户端禁止cookie的可能性<br />
对所有的URL使用URL重写，包括超链接，form的action，和重定向的URL，具体做法参见[6]<br />
http://e-docs.bea.com/wls/docs70/webapp/sessions.html#100770</p>
<p>7、开两个浏览器窗口访问应用程序会使用同一个session还是不同的session<br />
参见第三小节对cookie的讨论，对session来说是只认id不认人，因此不同的浏览器，不同的窗口打开方式以及不同的cookie存储方式都会对这个问题的答案有影响。</p>
<p>8、如何防止用户打开两个浏览器窗口操作导致的session混乱<br />
这个问题与防止表单多次提交是类似的，可以通过设置客户端的令牌来解决。就是在服务器每次生成一个不同的id返回给客户端，同时保存在session里，客户端提交表单时必须把这个id也返回服务器，程序首先比较返回的id与保存在session里的值是否一致，如果不一致则说明本次操作已经被提交过了。可以参看《J2EE核心模式》关于表示层模式的部分。需要注意的是对于使用javascript window.open打开的窗口，一般不设置这个id，或者使用单独的id，以防主窗口无法操作，建议不要再window.open打开的窗口里做修改操作，这样就可以不用设置。</p>
<p>9、为什么在Weblogic Server中改变session的值后要重新调用一次session.setValue<br />
做这个动作主要是为了在集群环境中提示Weblogic Server session中的值发生了改变，需要向其他服务器进程复制新的session值。</p>
<p>10、为什么session不见了<br />
排除session正常失效的因素之外，服务器本身的可能性应该是微乎其微的，虽然笔者在iPlanet6SP1加若干补丁的Solaris版本上倒也遇到过；浏览器插件的可能性次之，笔者也遇到过3721插件造成的问题；理论上防火墙或者代理服务器在cookie处理上也有可能会出现问题。<br />
出现这一问题的大部分原因都是程序的错误，最常见的就是在一个应用程序中去访问另外一个应用程序。我们在下一节讨论这个问题。</p>
<p id="#7">七、跨应用程序的session共享<br />
<br />
常常有这样的情况，一个大项目被分割成若干小项目开发，为了能够互不干扰，要求每个小项目作为一个单独的web应用程序开发，可是到了最后突然发现某几个小项目之间需要共享一些信息，或者想使用session来实现SSO(single sign on)，在session中保存login的用户信息，最自然的要求是应用程序间能够访问彼此的session。</p>
<p>然而按照Servlet规范，session的作用范围应该仅仅限于当前应用程序下，不同的应用程序之间是不能够互相访问对方的session的。各个应用服务器从实际效果上都遵守了这一规范，但是实现的细节却可能各有不同，因此解决跨应用程序session共享的方法也各不相同。</p>
<p>首先来看一下Tomcat是如何实现web应用程序之间session的隔离的，从Tomcat设置的cookie路径来看，它对不同的应用程序设置的cookie路径是不同的，这样不同的应用程序所用的session id是不同的，因此即使在同一个浏览器窗口里访问不同的应用程序，发送给服务器的session id也可以是不同的。<br />
</p>
<p align="center"><img height="219" alt="" src="http://dev2dev.bea.com.cn/images/paihang_article/041020/image012.jpg" width="288" /> <img height="215" alt="" src="http://dev2dev.bea.com.cn/images/paihang_article/041020/image014.jpg" width="257" /> </p>
<p>根据这个特性，我们可以推测Tomcat中session的内存结构大致如下。<br />
</p>
<p align="center"><img height="278" alt="" src="http://dev2dev.bea.com.cn/images/paihang_article/041020/image016.jpg" width="444" /> </p>
<p>笔者以前用过的iPlanet也采用的是同样的方式，估计SunONE与iPlanet之间不会有太大的差别。对于这种方式的服务器，解决的思路很简单，实际实行起来也不难。要么让所有的应用程序共享一个session id，要么让应用程序能够获得其他应用程序的session id。</p>
<p>iPlanet中有一种很简单的方法来实现共享一个session id，那就是把各个应用程序的cookie路径都设为/（实际上应该是/NASApp，对于应用程序来讲它的作用相当于根）。<br />
&lt;session-info&gt;<br />
&lt;path&gt;/NASApp&lt;/path&gt;<br />
&lt;/session-info&gt;</p>
<p>需要注意的是，操作共享的session应该遵循一些编程约定，比如在session attribute名字的前面加上应用程序的前缀，使得setAttribute("name", "neo")变成setAttribute("app1.name", "neo")，以防止命名空间冲突，导致互相覆盖。</p>
<p><br />
在Tomcat 中则没有这么方便的选择。在Tomcat版本3上，我们还可以有一些手段来共享session。对于版本4以上的Tomcat，目前笔者尚未发现简单的办法。只能借助于第三方的力量，比如使用文件、数据库、JMS或者客户端cookie，URL参数或者隐藏字段等手段。</p>
<p>我们再看一下Weblogic Server是如何处理session的。<br />
</p>
<p align="center"><img height="208" alt="" src="http://dev2dev.bea.com.cn/images/paihang_article/041020/image018.jpg" width="288" /> <img height="207" alt="" src="http://dev2dev.bea.com.cn/images/paihang_article/041020/image020.jpg" width="269" /> </p>
<p>从截屏画面上可以看到Weblogic Server对所有的应用程序设置的cookie的路径都是/，这是不是意味着在Weblogic Server中默认的就可以共享session了呢？然而一个小实验即可证明即使不同的应用程序使用的是同一个session，各个应用程序仍然只能访问自己所设置的那些属性。这说明Weblogic Server中的session的内存结构可能如下<br />
</p>
<p align="center"><img height="290" alt="" src="http://dev2dev.bea.com.cn/images/paihang_article/041020/image022.jpg" width="420" /> </p>
<p>对于这样一种结构，在session机制本身上来解决session共享的问题应该是不可能的了。除了借助于第三方的力量，比如使用文件、数据库、JMS或者客户端cookie，URL参数或者隐藏字段等手段，还有一种较为方便的做法，就是把一个应用程序的session放到ServletContext 中，这样另外一个应用程序就可以从ServletContext中取得前一个应用程序的引用。示例代码如下，</p>
<p>应用程序A<br />
context.setAttribute("appA", session); </p>
<p>应用程序B<br />
contextA = context.getContext("/appA");<br />
HttpSession sessionA = (HttpSession)contextA.getAttribute("appA"); </p>
<p>值得注意的是这种用法不可移植，因为根据ServletContext的JavaDoc，应用服务器可以处于安全的原因对于context.getContext("/appA");返回空值，以上做法在Weblogic Server 8.1中通过。</p>
<p>那么Weblogic Server为什么要把所有的应用程序的cookie路径都设为/呢？原来是为了SSO，凡是共享这个session的应用程序都可以共享认证的信息。一个简单的实验就可以证明这一点，修改首先登录的那个应用程序的描述符weblogic.xml，把cookie路径修改为/appA访问另外一个应用程序会重新要求登录，即使是反过来，先访问cookie路径为/的应用程序，再访问修改过路径的这个，虽然不再提示登录，但是登录的用户信息也会丢失。注意做这个实验时认证方式应该使用FORM，因为浏览器和web服务器对basic认证方式有其他的处理方式，第二次请求的认证不是通过session来实现的。具体请参看[7] secion 14.8 Authorization，你可以修改所附的示例程序来做这些试验。</p>
<p id="#8">八、总结<br />
session机制本身并不复杂，然而其实现和配置上的灵活性却使得具体情况复杂多变。这也要求我们不能把仅仅某一次的经验或者某一个浏览器，服务器的经验当作普遍适用的经验，而是始终需要具体情况具体分析。</p>
<p>关于作者：<br />
郎云鹏（dev2dev ID: hippiewolf），软件工程师，从事J2EE开发<br />
电子邮件：langyunpeng@yahoo.com.cn<br />
地址：大连软件园路31号科技大厦A座大连博涵咨询服务有限公司</p>
<p id="#9">参考文档：<br />
[1] Preliminary Specification http://wp.netscape.com/newsref/std/cookie_spec.html<br />
[2] RFC2109 http://www.rfc-editor.org/rfc/rfc2109.txt<br />
[3] RFC2965 http://www.rfc-editor.org/rfc/rfc2965.txt<br />
[4] The Unofficial Cookie FAQ http://www.cookiecentral.com/faq/<br />
[5] http://e-docs.bea.com/wls/docs70/webapp/weblogic_xml.html#1036869<br />
[6] http://e-docs.bea.com/wls/docs70/webapp/sessions.html#100770<br />
[7] RFC2616 http://www.rfc-editor.org/rfc/rfc2616.txt<br />
</p>
<p>代码下载：<a href="http://dev2dev.bea.com.cn/images/paihang_article/041020/sampleApp.zip">sampleApp.zip</a></p>
  <img src ="http://www.blogjava.net/itwangxinli/aggbug/186756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-03-17 14:16 <a href="http://www.blogjava.net/itwangxinli/archive/2008/03/17/186756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>免费的网络电话 ---8分钱一分钟</title><link>http://www.blogjava.net/itwangxinli/articles/181652.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Sat, 23 Feb 2008 14:02:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/181652.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/181652.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/181652.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/181652.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/181652.html</trackback:ping><description><![CDATA[<h1 id="post-632310"><a title="Permanent Link: Shutter:快门免费网络电话" href="http://bestfree.yo2.cn/freecalling/shutter-free-calls.html" rel="bookmark">Shutter:快门免费网络电话</a></h1>
<div class="auth">&nbsp;注册地址：<a href="http://shutter.cdream.com/register.php?linkid=40025" target="_blank"><strong><font color="#ff0000"><u>http://shutter.cdream.com/register.php?linkid=40025</u></font></strong></a><br />
<br />
<a href="http://update.shutter.cdream.com/software/Shutter_4.6.4.5565.exe">软件下载地址：http://update.shutter.cdream.com/software/Shutter_4.6.4.5565.exe</a><br />
<br />
本人保证以下信息绝对真实可靠。</div>
<div class="clearboth"></div>
<!--content with more link-->
<p>值得向大家推介，这是一个可以拨打免费网络电话的软件&nbsp;。</p>
<p>快门（Shutter）是校园梦网全新推出的&#8220;校园新媒体桌面终端&#8221;,使用快门可以免费拨打网络电话。成功注册后，赠送5分钟免费通话时间，操作简单，推荐使用。</p>
<p>》功能：</p>
<ul>
    <li><strong>快联络：</strong>网络通讯无处不在，快捷，文字、语音、视频，无论身在何方，总有合适的方式畅快沟通。
    <li><strong>快下载：</strong>绿色、正版、免费，安全、翻译、文字编辑、杀毒软件，应有尽有。
    <li><strong>快影视：</strong>网络电视台，精彩影视，一网打尽。
    <li><strong>快乐营：</strong>不断更新的快乐指南，小说、游戏，手机天地，快乐无限！ </li>
</ul>
<p align="left">》如何实现&#8220;永久免费&#8221;：</p>
<p align="left"><em><font size="+0">看广告、免费打电话</font><br />
</em>在快门上，点击赞助商广告，参与赞助商的广告互动，您是可以获得一定免费分钟数的，广告商会为您的电话付费。如果您参与得足够多，您就能获得更多的免费分钟数，直至永久免费的打电话。</p>
<p align="left"><em><font color="#000000">参与快门本身不间断的优惠政策和推广活动</font><br />
</em>您可以参加快门在重大节假日推出的一系列优惠活动，另外您可以可以通过成为快门推广员和推广站，根据业绩来兑换充值卡和现金。</p>
<p align="left"><font color="#000000"><em>快门近期的免费活动 —— 电话免费三次方</em></font></p>
<blockquote>
<p align="left">1、<font color="#0000ff">注册快门即赠送15分钟国内通话时长<br />
</font>在快门客户端和主题网站上注册并正确激活的用户，将赠送1.8元话费，用户可以点点通方式拨打15分钟国内通话。</p>
<p align="left">2、<font color="#0000ff">国内通话前三分钟免费</font><br />
从9月10日起，在快门产品推广期内，无论使用快门直接拨打还是以点点通的方式拨打国内电话，前三分钟都将是不计费的。</p>
<p align="left">3、<font color="#0000ff">每周与快门好友绑定的国内电话号码间通话享受15分钟话费返还</font><br />
每一个用户都可以将自己的一个号码与自己的账户绑定在一起（绑定办法见常见问题），当另外一个快门TM用户拨打这个绑定号码的时候，无论使用的是何种拨打方式，用户每周都有15分钟的话费返还，超过15分钟的部分，系统按正常计费，不再返还。</p>
</blockquote>
<p align="left">》如何使用：</p>
<p align="left">1.先下载Shutter并安装，如果有防火墙阻止，一概取消即可。</p>
<p align="left">2.注册成为会员，可以在软件中注册，也可以在官网上注册，方式可以用手机跟信箱，手机注册是完全免费的，请放心使用。</p>
<p align="left">3.要填写正确的电子邮件地址，Shutter会发一封激活信给你，如下图：</p>
<p align="center"><img height="168" alt="" src="http://www.atgoo.com/attachments/2007/11/2_200711051449451.jpg" width="450" border="0" /></p>
<p align="left">成功激活后，就拥有你自己的Shutter号了。Shutter会送给你1.8元电话费，可以打15分钟国内电话，如图：</p>
<p align="center"><img height="105" alt="" src="http://www.atgoo.com/attachments/2007/11/2_200711051507301.jpg" width="322" border="0" /></p>
<p align="left">4.动态演示下如何注册：</p>
<p align="center"><img height="409" alt="" src="http://www.atgoo.com/attachments/2007/11/2_200711051516091.gif" width="297" border="0" /></p>
<p align="left">5.电话简单使用方法：</p>
<p align="center"><img height="551" alt="" src="http://www.atgoo.com/attachments/2007/11/2_200711051536151.gif" width="422" border="0" /></p>
<p align="left">接通的速度非常快，打电话的时候也很简单，在你安装的时候，Shutter就会检测到你所在的地域，本地手机、直线电话可直接打，外地需要加区号，手机前加&#8220;0&#8221;。接通后显示的电话是空，或是：09997827006。</p>
<p align="left">非常好的国内电话软件，希望网友们多多支持Shutter。</p>
  <img src ="http://www.blogjava.net/itwangxinli/aggbug/181652.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-02-23 22:02 <a href="http://www.blogjava.net/itwangxinli/articles/181652.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>快过年了</title><link>http://www.blogjava.net/itwangxinli/articles/175259.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Mon, 14 Jan 2008 09:33:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/175259.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/175259.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/175259.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/175259.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/175259.html</trackback:ping><description><![CDATA[时间如流水般消逝，不知不觉，一年 又过去了，过去的一年里，有悲伤，但是更多的是快乐，因为有了你。。。。。<br />
想你，爱你，偶的丫头
<img src ="http://www.blogjava.net/itwangxinli/aggbug/175259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2008-01-14 17:33 <a href="http://www.blogjava.net/itwangxinli/articles/175259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>渴望长胖</title><link>http://www.blogjava.net/itwangxinli/articles/168937.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Thu, 20 Dec 2007 01:43:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/168937.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/168937.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/168937.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/168937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/168937.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/itwangxinli/articles/168937.html'>阅读全文</a><img src ="http://www.blogjava.net/itwangxinli/aggbug/168937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-12-20 09:43 <a href="http://www.blogjava.net/itwangxinli/articles/168937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个炒股老公写的年终总结</title><link>http://www.blogjava.net/itwangxinli/articles/168505.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Tue, 18 Dec 2007 07:35:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/168505.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/168505.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/168505.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/168505.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/168505.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt; font-family: 新宋体">
<p><span style="font-size: 16pt; color: black; font-family: 宋体"><span style="font-size: 12pt"><span style="color: black; font-family: 宋体">最敬爱的夫人</span><font face="Times New Roman"><span style="color: black">:&nbsp;</span></font></span></span><font face="Times New Roman"><span style="font-size: 16pt; color: black"><br />
<br />
</span><span style="font-size: 16pt; color: #335683"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size: 12pt"><font face="Times New Roman"></font><span style="color: black; font-family: 宋体">过去的一年中，我在您的直接领导下，在岳父岳母的英明指导下，在大小姨子的集体关怀下，遵照您的指示，按照您的部署，兢兢业业、恪尽职守，摸爬滚打、积极进取，各项家庭工作均取得显著成效。据统计，至去年底，咱家的银行存款、股票市值、固定资产三项指标分别比前年增长了</span><span style="color: black"><font face="Times New Roman">18</font></span><span style="color: black; font-family: 宋体">％、</span><span style="color: black"><font face="Times New Roman">19</font></span><span style="color: black; font-family: 宋体">％、</span><span style="color: black"><font face="Times New Roman">20</font></span><span style="color: black; font-family: 宋体">％。超额完成了去年初制定的</span><span style="color: black"><font face="Times New Roman">&#8220;</font></span><span style="color: black; font-family: 宋体">三项指标增幅要达到</span><span style="color: black"><font face="Times New Roman">12</font></span><span style="color: black; font-family: 宋体">％</span><span style="color: black"><font face="Times New Roman">&#8221;</font></span><span style="color: black; font-family: 宋体">的任务，同时咱家还被本胡同评为</span><span style="color: black"><font face="Times New Roman">&#8220;</font></span><span style="color: black; font-family: 宋体">五好家庭</span><span style="color: black"><font face="Times New Roman">&#8221;</font></span><span style="color: black; font-family: 宋体">，我被本楼道评为</span><span style="color: black"><font face="Times New Roman">&#8220;</font></span><span style="color: black; font-family: 宋体">最称职老公</span><span style="color: black"><font face="Times New Roman">&#8221;</font></span><span style="color: black; font-family: 宋体">，您则光荣当选</span><span style="color: black"><font face="Times New Roman">&#8220;</font></span><span style="color: black; font-family: 宋体">最幸福太太</span><span style="color: black"><font face="Times New Roman">&#8221;</font></span><span style="color: black; font-family: 宋体">，实现了物质文明、精神文明的双丰收。</span></span></span></span></font><span style="font-size: 16pt; color: black; font-family: 宋体"><span style="font-size: 12pt"><span style="color: black; font-family: 宋体">现将本人一</span></span><span style="font-size: 12pt"><span style="color: black; font-family: 宋体">年来的工作情况总结如下</span><span style="color: black"><font face="Times New Roman">: <br />
</font></span><span style="color: black; font-family: 宋体">一、以</span><span style="color: black"><font face="Times New Roman">&#8220;</font></span><span style="color: black; font-family: 宋体">服务夫人</span><span style="color: black"><font face="Times New Roman">&#8221;</font></span><span style="color: black; font-family: 宋体">为工作重心，抓好家庭日常工作</span><span style="color: black"><br />
</span><span style="color: black; font-family: 宋体">二、以</span><span style="color: black"><font face="Times New Roman">&#8220;</font></span><span style="color: black; font-family: 宋体">夫人旨意</span><span style="color: black"><font face="Times New Roman">&#8221;</font></span><span style="color: black; font-family: 宋体">为工作重点，抓好家庭经济建设。过去的一年中，我认真贯彻夫人去年初作出</span><span style="color: black"><font face="Times New Roman">&#8220;</font></span><span style="color: black; font-family: 宋体">要把家庭经济搞上去</span><span style="color: black"><font face="Times New Roman">&#8221;</font></span><span style="color: black; font-family: 宋体">的重要指示，采取得力措施，加大工作力度，狠抓经济建设，终有所成，家庭三项经济指标均比前年大幅度增长。</span></span></span><span style="font-size: 16pt; color: black; font-family: 宋体"><span style="font-size: 12pt"><span style="color: black; font-family: 宋体">我的主要做法是</span><span style="color: black"><font face="Times New Roman">:<br />
</font></span></span></span><span style="font-size: 16pt; color: black"><span><font face="Times New Roman"><span style="font-size: 12pt"><span style="color: black"><font face="Times New Roman">1、<span style="font-weight: normal; line-height: normal; font-style: normal; font-family: 'Times New Roman'; font-variant: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="color: black; font-family: 宋体">严格遵守财经纪律。去年，我不折不扣地执行了工资、奖金等主营收入悉数上交，再由夫人回拨零用钱的收支两条线政策，其余副业收入纳入预算资金管理，向夫人打报告审批使用，在过去的一年中，由于我财经纪律做到了不截留挪用，不挤占乱花，不隐瞒收入，不设小金库，使夫人总揽大权的地位得到了进一步巩固，家庭收入管理规范，资金专项使用。</span></span></font></span></span></p>
<p style="text-indent: -18pt"><span style="font-size: 16pt; color: black"><span><font face="Times New Roman">2、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size: 12pt"><span style="color: black"><font face="Times New Roman"><span style="font-weight: normal; line-height: normal; font-style: normal; font-family: 'Times New Roman'; font-variant: normal"></font></span></span><span style="color: black; font-family: 宋体">厉行个人节约，注重自我节流。过去的一年中，我戒烟、戒酒、戒茶、戒零食、戒请客，总之，将个人吃穿用度费用降至最底，每月零用钱均有剩余，积蓄一定时日，购买首饰、衣物若干赠于夫人，既增加家庭固定资产，又给夫人带来惊喜，一举两得。<br />
</span></span></span></font></span></span><span style="font-size: 16pt; color: #335683"><span><font face="Times New Roman"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size: 12pt"><span style="color: #335683"><font face="Times New Roman"><span style="font-weight: normal; line-height: normal; font-style: normal; font-family: 'Times New Roman'; font-variant: normal"></font></span></span><span style="color: black; font-family: 宋体">　</span><span style="color: black"><font face="Times New Roman">3</font></span><span style="color: black; font-family: 宋体">、积极探索，广开财路。一是充分发挥自身所长，笔耕不辍，投稿报刊、杂志赚取稿费。二是深入领会《麻将致胜大全》要点，掌握致胜技艺，与同事亲友小赌怡情，胜多负少，小有收获。三是苦心钻研炒股方法，向夫人申请专项资金投身股海，一级市场守株待兔，二级市场低买高卖，一年下来赢利颇多。</span></span></span></font></span></span></p>
<p><span style="font-size: 16pt; color: black"><br />
</span><span style="font-size: 16pt; color: black; font-family: 宋体">　<span style="font-size: 12pt"><span style="color: black; font-family: 宋体">三、以</span><span style="color: black"><font face="Times New Roman">&#8220;</font></span><span style="color: black; font-family: 宋体">夫人喜好</span><span style="color: black"><font face="Times New Roman">&#8221;</font></span><span style="color: black; font-family: 宋体">为出发点，抓好家庭安定团结。过去的一年，我始终以</span><span style="color: black"><font face="Times New Roman">&#8220;</font></span><span style="color: black; font-family: 宋体">夫人喜好</span><span style="color: black"><font face="Times New Roman">&#8221;</font></span><span style="color: black; font-family: 宋体">为标准，一切听从夫人，听从夫人一切，不断规范自身行为，搞好家庭安定团结，主要有</span><span style="color: black"><font face="Times New Roman">: <br />
</font></span></span></span><span style="font-size: 16pt; color: black"><font face="Times New Roman"><span style="font-size: 12pt"><span style="color: black"><font face="Times New Roman"><br />
</font></span><span style="color: black; font-family: 宋体">　　</span><span style="color: black"><font face="Times New Roman">1</font></span><span style="color: black; font-family: 宋体">、婚前死党小黄、小李、小谢、小军、小杨诸人一向好吃懒做，行事全无章法，经常来家骗吃骗喝，以夫人不喜，我遂将彼等列入损友名单，遂一割袍断义，中断往来（注：小李因欠我债务的缘故，暂还保持联系）。</span></span></font></span><span style="font-size: 16pt; color: black"><font face="Times New Roman"> <br />
<br />
</font></span><span style="font-size: 16pt; color: black; font-family: 宋体">　　</span><span style="font-size: 16pt; color: black"><font face="Times New Roman"><span style="font-size: 12pt"><span style="color: black"><font face="Times New Roman">2</font></span><span style="color: black; font-family: 宋体">、过去我好吸烟，一天两包不在话下，夫人恶之，去年伊始，我便痛下决心，誓与烟绝。如今，瘾来时，我至多点蚊香一支嗅其味以解馋。</span></span></font></span><span style="font-size: 16pt; color: black"><font face="Times New Roman"> <br />
<br />
</font></span><span style="font-size: 16pt; color: black; font-family: 宋体">　　</span><span style="font-size: 16pt; color: black"><font face="Times New Roman"><span style="font-size: 12pt"><span style="color: black"><font face="Times New Roman">3</font></span><span style="color: black; font-family: 宋体">、前年我看望父母次数多于看望岳父岳母一次，夫人不悦，去年我遂积极整改，以实际行动纠正偏差，据统计，至去年底</span><span style="color: black"><font face="Times New Roman">'</font></span><span style="color: black; font-family: 宋体">我看望岳父岳母次数超出看望父母次数两次，在时间总量上超出</span><span style="color: black"><font face="Times New Roman">45</font></span><span style="color: black; font-family: 宋体">分钟，在孝敬财物总额上超出</span><span style="color: black"><font face="Times New Roman">21</font></span><span style="color: black; font-family: 宋体">元人民币。</span><span style="color: black"><font face="Times New Roman"> <br />
</font></span></span></font></span><span style="font-size: 16pt; color: black"><font face="Times New Roman"><br />
</font></span><span style="font-size: 16pt; color: black; font-family: 宋体">　　</span><span style="font-size: 16pt; color: black"><font face="Times New Roman"><span style="font-size: 12pt"><span style="color: black"><font face="Times New Roman">4</font></span><span style="color: black; font-family: 宋体">、央视主持人刘仪伟，风格清新，厨艺一绝</span><span style="color: black"><font face="Times New Roman">'</font></span><span style="color: black; font-family: 宋体">夫人爱甚，视为新好男人，我遂理一板寸头，学一口鸟腔普通话，苦研《天天厨艺》菜谱，每日推出一样特色小菜。</span><span style="color: black"><font face="Times New Roman"> <br />
</font></span></span></font></span><span style="font-size: 16pt; color: black"><font face="Times New Roman"><br />
</font></span><span style="font-size: 16pt; color: black; font-family: 宋体"><span style="font-size: 12pt"><span style="color: black; font-family: 宋体">　　由于我紧紧把握</span><span style="color: black"><font face="Times New Roman">&#8220;</font></span><span style="color: black; font-family: 宋体">夫人永远是对的</span><span style="color: black"><font face="Times New Roman">'</font></span><span style="color: black; font-family: 宋体">如果夫人错了，我请参照上句执行</span><span style="color: black"><font face="Times New Roman">&#8221;</font></span><span style="color: black; font-family: 宋体">的方针，认真贯彻</span><span style="color: black"><font face="Times New Roman">&#8220;</font></span><span style="color: black; font-family: 宋体">打不还手，骂不还口，夫人一脚踹过来，我就躲着走</span><span style="color: black"><font face="Times New Roman">&#8221;</font></span><span style="color: black; font-family: 宋体">的基本原则，家庭安定团结局面一派大好，夫妻相敬如宾，居家气氛温馨。在过去的一年里，我主持家庭日常工作虽取得一定成绩，但离夫人的要求仍存在大小差距，如：工作主观能动性还有待加强，工作前瞻性不足；工作尚存在畏难情绪等，在新的一年中，我将克服缺点、发扬优点，在巩固去年成绩的基础上，百尺竿头更进一步，使咱家的生活水准芝麻开花节节高，夫妻恩爱此情绵绵无绝期。</span><span style="color: black"><font face="Times New Roman"> <br />
</font></span></span></span><span style="font-size: 16pt; color: black"><font face="Times New Roman"><br />
</font></span><span style="font-size: 16pt; color: black; font-family: 宋体">　　<span style="font-size: 12pt"><span style="color: black; font-family: 宋体">抄报：岳父、岳母</span><span style="color: black"><font face="Times New Roman"> <br />
<br />
</font></span><span style="color: black; font-family: 宋体">　</span><span style="color: black; font-family: 宋体">抄送：大姨子、大舅子、小姨子、小舅子、各位连</span></span></span></p>
</span>
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/168505.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-12-18 15:35 <a href="http://www.blogjava.net/itwangxinli/articles/168505.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>想你的十个瞬间</title><link>http://www.blogjava.net/itwangxinli/articles/166513.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Sun, 09 Dec 2007 13:27:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/166513.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/166513.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/166513.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/166513.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/166513.html</trackback:ping><description><![CDATA[一．深夜 <br />
当深夜我无法入睡时，你的影子总在我脑海里飘来漂去，我想与你说说话，但总捉不到你的声音。 <br />
二．发呆 <br />
常常会在做事的间隙，坐在<nobr oncontextmenu="return false;" onmousemove="kwM(5);" id="key2" onmouseover="kwE(event,5, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">办公</nobr>桌前发呆，是你的灵魂进入控制了我的思维？使我的思想只指向一个地方：想你此时此刻正在做什么？ <br />
三．无聊 <br />
无聊时真想有你的陪伴，与你聊几句，但我不想用我的无聊打扰你，我只有无聊的继续狠狠的想念你。 <br />
四．幻想 <br />
我常幻想我们的未来，是怎样的风景？我幻想我们一起万水千山走遍，笑看日出月落、云聚云散，听风声水起、涛起涛落。此生如做不到，我愿一直等你到来生。 <br />
五．梦里 <br />
在我的梦里你的身影总是捉摸不定，无法清晰的定格，是你在梦里和我嬉戏玩耍？有过这样的梦后，第二天我的心情一天都会充满喜悦。 <br />
六．照片 <br />
在<nobr oncontextmenu="return false;" onmousemove="kwM(6);" id="key3" onmouseover="kwE(event,6, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">电脑</nobr>上翻阅你的照片，是我的一个秘密，一种乐趣。你永恒的微笑在我眼里在我心里翻过，在思绪中我仿佛与你经历&#8230;&#8230;忽然惊醒，惆怅的心情便在空气中蔓延。 <br />
七．<nobr oncontextmenu="return false;" onmousemove="kwM(0);" id="key0" onmouseover="kwE(event,0, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">信息</nobr> <br />
每天，我都会收你的信息。没有，我就会给觉得心很空，有的话，觉得拥有一切，很幸福，幸福一整天。哪怕只有只言片语，心里总是欢喜，静静的读，慢慢的想，回味。 <br />
八．<nobr oncontextmenu="return false;" onmousemove="kwM(7);" id="key4" onmouseover="kwE(event,7, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">音乐</nobr> <br />
某些旋律响起时心里总是有些伤感，某些歌曲播发时总会引起心中的伤通，脑海里，随着音乐，你带给我的一切印象不可阻挡的出现在我面前，凝视的目光、甜美的声音、催人泪流的倾诉、轻轻而深情的吻&#8230;&#8230;那一刻永远定格在我的心里了。 <br />
九．种子 <br />
你悄悄在我心里种下了一颗爱的种子，思念的芽就这样慢慢在我身体里蔓延，甜蜜、忧郁、喜悦、惆怅、惊奇、无奈、&#8230;&#8230;你让我体会了这世界上最美妙的<nobr oncontextmenu="return false;" onmousemove="kwM(1);" id="key1" onmouseover="kwE(event,1, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">情感</nobr>。它什么时候能自由的长成参天大树呢？ <br />
十．心痛 <br />
心痛的时候我一定是在想你了，岁月在不断磨砺去我青春的柔软情怀，尤其是遇见了你，我的心居然从厚厚茧子的包裹下不断长出新芽，心中会痛，说明自己还不曾麻木到无药可救。更使我心痛的是，我居然错过了你最美好的年华&#8230;&#8230;这是我一生的痛。 <br />
<br />
<img src="http://img.bbs.163.com:88/lot/ji/jinlangsha/398x298_43190.gif" border="0"  alt="" />
<div class="sign"><span>------------------<br />
</span>过错是一时的遗憾,错过是一生的遗憾!</div>
  <img src ="http://www.blogjava.net/itwangxinli/aggbug/166513.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-12-09 21:27 <a href="http://www.blogjava.net/itwangxinli/articles/166513.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>喜欢你，是什么样的感觉</title><link>http://www.blogjava.net/itwangxinli/articles/166507.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Sun, 09 Dec 2007 12:57:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/166507.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/166507.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/166507.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/166507.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/166507.html</trackback:ping><description><![CDATA[<br />
　　<img src="http://bbsimg.qq.com/2007/02/02/002/295.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/02/02/002/385.gif" border="0"  alt="" /> <br />
<br />
　　有一个人， <br />
　　时时萦绕在心头； <br />
　　有一份牵挂， <br />
　　时时不能放下。 <br />
　　在暮色淡淡的夜晚， <br />
　　面对浓浓的相思， <br />
　　我独自遥望着你的方向， <br />
　　体会与你心心交融的一刻。 <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/01/22/000/84.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg1.qq.com/2007/02/02/002/214.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/02/02/002/385.gif" border="0"  alt="" /> <br />
<br />
　　多少次以为， <br />
　　可以不再想你； <br />
　　多少次以为， <br />
　　已经忘了你； <br />
　　可每次思念却轻轻漾起心底的故事， <br />
　　让纷扬的记忆丝丝缕缕飘洒 <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/01/22/000/84.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/02/02/002/331.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/02/02/002/385.gif" border="0"  alt="" /> <br />
<br />
　　遇见你之前， <br />
　　我花了太多时间的沉吟， <br />
　　太多时间的跋涉， <br />
　　曾经以为， <br />
　　那前世美丽的相约， <br />
　　再也不能在今世<nobr oncontextmenu="return false;" onmousemove="kwM(0);" id="key0" onmouseover="kwE(event,0, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">温柔</nobr>的相逢。 <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/01/22/000/84.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg1.qq.com/2007/02/02/002/244.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/02/02/002/385.gif" border="0"  alt="" /> <br />
<br />
　　你悄悄地走入我的生命， <br />
　　那一声问候， <br />
　　一抹微笑， <br />
　　一个手势， <br />
　　一片话语， <br />
　　轻轻的撞击着我微微虚掩的心扉， <br />
　　我平静的心底， <br />
　　盈出蜜蜜的欢喜 <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/01/22/000/84.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg1.qq.com/2007/02/02/002/260.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/02/02/002/385.gif" border="0"  alt="" /> <br />
<br />
　　眼前不时闪烁着一个个数过星星的夜晚， <br />
　　宁静的沙滩上， <br />
　　月光如水， <br />
　　静静的笼罩着相依相偎的身影， <br />
　　捡拾起一枚枚紫色的贝壳， <br />
　　慢慢聆听那轻微温柔的低语 <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/01/22/000/84.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg1.qq.com/2007/02/02/002/250.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/02/02/002/385.gif" border="0"  alt="" /> <br />
<br />
　　浪漫和<nobr oncontextmenu="return false;" onmousemove="kwM(1);" id="key1" onmouseover="kwE(event,1, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">惊喜</nobr>还清新如昨， <br />
　　你和时光交织着， <br />
　　在我心底挥之不去. <br />
　　<nobr oncontextmenu="return false;" onmousemove="kwM(3);" id="key2" onmouseover="kwE(event,3, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">喜欢</nobr>一个人的感觉真美， <br />
　　我的心因思念你而绽放花朵。 <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/01/22/000/84.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg1.qq.com/2007/02/02/002/253.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/02/02/002/385.gif" border="0"  alt="" /> <br />
<br />
　　尤其是在这样的曰子， <br />
　　柔柔的细雨， <br />
　　甜甜的微风， <br />
　　一扫那如烟缥缈的忧郁， <br />
　　纷纷飘扬的风絮如同一个个<nobr oncontextmenu="return false;" onmousemove="kwM(4);" id="key3" onmouseover="kwE(event,4, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">美丽</nobr>的故事， <br />
　　拥挤在依然熟悉的风景， <br />
　　紧紧地系往心的深处 <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/01/22/000/84.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/02/02/002/375.gif" border="0"  alt="" /> <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/02/02/002/385.gif" border="0"  alt="" /> <br />
<br />
　　沉湎的心情在美丽的夜色中， <br />
　　显得如此缤纷， <br />
　　如此温馨。 <br />
　　此刻， <br />
　　好想依偎在你的怀中， <br />
　　倾听你的呼吸， <br />
　　触摸你的心跳， <br />
　　一起静静的聆听心曲， <br />
　　双目对视浅浅一笑。 <br />
<br />
　　<img src="http://bbsimg.qq.com/2007/01/22/000/84.gif" border="0"  alt="" />
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/166507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-12-09 20:57 <a href="http://www.blogjava.net/itwangxinli/articles/166507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生活的艰辛</title><link>http://www.blogjava.net/itwangxinli/articles/166488.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Sun, 09 Dec 2007 11:41:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/166488.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/166488.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/166488.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/166488.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/166488.html</trackback:ping><description><![CDATA[　<strong>每个人都生活在得失之间，当你失去一些东西的时候，也许你得到了更多，当你得到某些东西的时候，你也许正失去最宝贵的东西，回家后，坐在电脑前，心里却不平静。什么是生活？看着他们，我们还有什么好抱怨的呢？</strong> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x409_85100.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x421_101688.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x409_84509.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/380x602_76333.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x409_80437.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x445_103078.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x409_73930.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x423_87063.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x409_59742.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x409_81863.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x409_78596.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x466_79854.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x409_77865.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/408x602_68442.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x409_60838.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x453_81506.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x409_65130.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x409_68202.jpg" border="0"  alt="" /> <br />
<br />
　　<img src="http://img.bbs.163.com:88/photo/yg/yggood10/601x409_75473.jpg" border="0"  alt="" />
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/166488.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-12-09 19:41 <a href="http://www.blogjava.net/itwangxinli/articles/166488.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的‘窝‘</title><link>http://www.blogjava.net/itwangxinli/articles/165539.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Wed, 05 Dec 2007 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/165539.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/165539.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/165539.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/165539.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/165539.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 来上海将近2年了，现在都记不清搬了多少次家乐，最后和班上的几个同学住在火车站附近的小旅馆里。6个人一间屋，每个人除了一张床以外，就剩下一条过道了。没有桌椅，没有家具，只有一台电视，平时都是大家在一起，感觉好开心。就是夜晚睡觉的时候，屋里空气很浑浊，有股臭味，而且还很吵，旅馆里什么样的人都有，感觉很不安全。一直想换个地方，上海的房租死贵死贵的，交三压一，大概要四五千块钱，最后找了一个朋友跟我一起合租了一间房。<br />
&nbsp;&nbsp; 于是我搬到了现在住的地方，条件不错，最主要的是有自己独立的空间了。电视，空调，洗衣机，冰箱，微波炉都有了，还有就是邻居是老上海人，对我们2个小伙很照顾，天然气忘记关了什么的，都会帮我们关上，呵呵，感觉上海人还不错。在那住了几个月，这个朋友找到了自己的幸福了，搬走了，剩下我一个人了，后来就拉了一个同班的兄弟过来，跟我一起住，嘿嘿，主要是分担房租了，毕竟一个月一千多的房租还是不小的数字。<br />
&nbsp;&nbsp; 现在的窝有2个窗，一个朝东，一个朝南，我的床就靠近朝东的窗户。冬天的时候，懒床了，九点上班，我7.40才起床，起来后的第一件事就是拉开窗帘，让太阳照进来，暖暖我的被窝，还可以杀菌。对面是个电影院，夜晚的灯景很漂亮，无数个一闪一闪的小灯，象天上的星星一样，调皮的眨眨眼。每个月初的时候，还可以看见月亮，这几天醒的早，还可以看见启明星。。。。。真的很幸运，在上海高楼林立的空间中，居然还能看见星星和月亮，还有免费的阳光。我的床，真象龙床一样，集天地之精华，取日月之灵气，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很爱很爱我的窝，最近有段时间老是睡不着，可能是受朋友打游戏的影响吧。一个人趟在那就爱乱想，把想的事情给俺家的丫头说了，她总是说我是个坏家伙，哎，我怎么可以这样呢，坚决不能这样了。可能别人开始讨厌我了，包括自己。有我最喜欢的人，还有 集天地之精华，取日月之灵气 的 龙床， 俺的幸福小窝，这就是最大的幸福。。。。。。</p>
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/165539.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-12-05 15:49 <a href="http://www.blogjava.net/itwangxinli/articles/165539.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个民工的故事 </title><link>http://www.blogjava.net/itwangxinli/articles/165317.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Tue, 04 Dec 2007 14:34:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/165317.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/165317.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/165317.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/165317.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/165317.html</trackback:ping><description><![CDATA[<br />
　　前几天听到了这样一个故事：说的是一个民工的遭遇，有点好笑，但笑过以后是满脸的泪水&#8230;&#8230; <br />
<br />
　　在开往西安的火车上，一个很漂亮的乘务员，盯着一个民工摸样的中年人，大声说道&#8220;查票&#8221;。中年人浑身上下一阵翻找，终于找到了，却摄在手里。列车员朝他怪怪地笑了笑，说：&#8220;这是<nobr oncontextmenu="return false;" onmousemove="kwM(1);" id="key1" onmouseover="kwE(event,1, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">儿童</nobr>。&#8221;中年人憋红了脸，嗫嚅着说：&#8220;儿童票不是跟残疾人票价一样吗？&#8221;列车员打量了中年人一番，问道：&#8220;你是残疾人？&#8221;&#8220;我是残疾人！&#8221;&#8220;那你把残疾证给我看看。&#8221;中年人紧张起来，说：&#8220;我没有残疾证，买票的时候，售票员就向我要残疾证，我没办法才买的儿童票。列车员冷笑了一下：&#8220;没有残疾证，怎么能证明你是残疾人啊？&#8221;中年人没有做声，只是轻轻地将鞋子脱下，又将裤腿挽了起来———他只有半个脚掌。列车员斜眼看了看，说：&#8220;我要看的是证件！是残联盖的钢印。&#8221;中年人一副苦瓜脸，解释说：&#8220;我没有当地户口，人家不给办理残疾证。而且我是在私人工地干活，出了事之后老板就跑了，我也没钱到医院做评定&#8230;&#8230;&#8221; <br />
<br />
　　列车长闻讯赶来，询问情况。中年人再一次向列车长说明，自己是一个残疾人，买了一张和残疾人票一样价格的票&#8230;&#8230;列车长也问：&#8220;你的残疾证呢？&#8221;中年人说他没有残疾证，接着就让列车长看他的半个脚掌。列车长连看都没看，他不耐烦地说：&#8220;我们只认证不认人！有残疾证就是残疾人，有残疾证才能享受残疾人票的待遇。你赶快补票吧！&#8221;中年人一下就蔫了。他翻遍了全身的口袋和<nobr oncontextmenu="return false;" onmousemove="kwM(3);" id="key3" onmouseover="kwE(event,3, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">行李</nobr>，只有几块钱，根本不够补票的。他带着哭腔对列车长说：&#8220;我的脚掌被机器轧掉一半之后，就再也打不了工了，没有钱，连老家也回不去了，这张半价票还是老乡们凑钱给我买的呢。求您高抬贵手，放过我吧！&#8221;列车长坚决地说：&#8220;那不行。&#8221;那个女列车员趁机对列车长说：&#8220;让他去车头铲煤吧，算做义务<nobr oncontextmenu="return false;" onmousemove="kwM(7);" id="key5" onmouseover="kwE(event,7, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">劳动</nobr>。列车长想了想说：&#8220;好！&#8221; <br />
<br />
　　中年人对面的一个老同志看不惯了，他站起来盯着列车长的眼睛，说：&#8220;你是不是男人？&#8221;列车长不解地说：&#8220;这跟我是不是男人有什么<nobr oncontextmenu="return false;" onmousemove="kwM(2);" id="key2" onmouseover="kwE(event,2, this);" style="color: #6600ff; border-bottom: 0px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">关系</nobr>啊！&#8221;&#8220;你就告诉我，你是不是男人！&#8221;&#8220;我当然是男人。&#8221;&#8220;你用什么证明你是男人呢？把你的男人证拿出来给大家看看！&#8221;周围的人一下笑起来。列车长愣了愣，说：&#8220;我一个大男人在这儿站着，难道还是假的不成？&#8221;老同志摇了摇头说：&#8220;我和你们一样，只<nobr oncontextmenu="return false;" onmousemove="kwM(4);" id="key4" onmouseover="kwE(event,4, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">认证</nobr>不认人，有男人证就是男人，没男人证就不是男人。&#8221;列车长卡了壳，一时想不出什么话来应对。那个女列车员站出来替列车长解围，她对老同志说：&#8220;我不是男人，你有什么话跟我说好了。&#8221;老同志指着她的鼻子，说：&#8220;你根本就不是人！&#8221;列车员一下暴跳如雷，尖声叫道：&#8220;你嘴巴干净点！你说，我不是人是什么？！&#8221;老同志一脸平静，狡黠地笑了笑，说：&#8220;你是人？那好，把你的人证拿出来看看&#8230;&#8230;&#8221;四周的人再一次哄笑起来。 <br />
<br />
　　只有一个人没笑，他是那个只有半个脚掌的中年人，他定定地望着眼前的这一切，不知何时，眼里噙满了泪水，不知道是委屈，是感激，还是仇恨。 <br />
<br />
　　故事看完了，你觉得好笑吗？你能笑得出来吗？善待残疾人，善待民工，是我们全社会共同的责任，<nobr oncontextmenu="return false;" onmousemove="kwM(0);" id="key0" onmouseover="kwE(event,0, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">生活</nobr>的艰辛已经让他们喘不过气来，不要再在伤口上撒盐啦。 <br />
<br />
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/165317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-12-04 22:34 <a href="http://www.blogjava.net/itwangxinli/articles/165317.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>别因为寂寞爱上别人</title><link>http://www.blogjava.net/itwangxinli/articles/159024.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Thu, 08 Nov 2007 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/159024.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/159024.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/159024.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/159024.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/159024.html</trackback:ping><description><![CDATA[<font color="#bf005f" size="2">&lt;一&gt; 寂寞 <br />
<br />
　　别因寂寞爱上谁，有时想想，寂寞真可怕。它会改变一个人的看法，它会去伤害很多人。网络等于寂寞？谁都无法找到答案。在网络中，我们可以随时的说出爱，说出感觉。网络爱情能维持多久？我曾经问过朋友，他给我的回答是那么的贴切。保质期最多三个月。因为过了三个月，如果还在一起，是因为彼此没找到更好的，所以无法离开。是因为彼此的习惯，习惯了彼此的陪伴，而不想再去寂寞的一个人生活。寂寞时的感情</font><font color="#bf005f" size="2">，只想要有人陪伴的感情，能维持多久呢？能爱多久呢？ <br />
<br />
<br />
<br />
&lt;二&gt;爱 <br />
<br />
　　一直以来都认为爱是唯一，因为感情都是自私的，不可能和别人分享。看多了三角恋爱，最后受伤害的却是三个人。无奈的爱，谁能去说什么呢？爱不应该是随便说出口，随便承诺的。如果在三天前你可以爱别人，三天后你可以爱上另一个人，这真的是爱吗？也许是我不懂得什么是爱。并不是因为要为一个人伤心多久才算是爱，可是如果忘记一个人这么容易，那么世界上就没有那么多痛苦和悲哀了。昨天的我，怀疑感情，不知道怎样的感情才算是爱，而今天，我却知道，只能坚定自己的想法走下去。我并不是要刻意的去悲伤，刻意的去记住什么，只不过，我不想因为寂寞爱上谁。 <br />
<br />
<br />
<br />
&lt;三&gt;习惯 <br />
<br />
　　当习惯成自然，当习惯成了生活不可缺少的一部分。当你们彼此成为习惯，是否就证明你们彼此分不开了呢？网络中，习惯占据了感情。网络中，相处久了，认识久了，难免有不可割舍的感情，不可磨灭的习惯。可是，就因为这些习惯，我们就要一直陷入网络吗？因为习惯就必须去爱上某一个人吗？当一切成为习惯时，当你习惯了别人的关心时，当你无法再独自一个人面对时，是不是一切都难以改变。必须去爱上它呢？其实习惯可以改变，一切都只是时间的问题。时间久了，你们之间有了习惯。同意的时间久了，你们之间也会没任何依赖的。时间决定了彼此之间的依赖、习惯、爱。其实，不能放开的是一直的宠爱，一直的陪伴，你害怕一个人面对孤独，面对没人宠爱的日子。 <br />
<br />
<br />
<br />
&lt;四&gt;真实 <br />
<br />
　　什么是真实的？网络、现实？通过冰冷的显示器，通过冰冷电话线。所知道的，所听说的，都是真实的吗？有时，连自己亲眼看见的都未必是真实的，何况是网络呢？凭感觉？有时候感觉也会骗人的。所以，相信自己，别让自己因为寂寞而去刻意的去信什么。有人告诉我，其实网络和现实一样，一样的复杂，只要做到淡然。那么你就会快乐点。是的，现在的我懂得怎样去淡然的看待一切。我不能接受的，我可以不用去理会，我可以不用去在乎。如果是朋友，我会祝福，如果不是，那么我会当用陌生的眼光去淡然一笑。不管怎样的真实，怎样的不真实，我只想真心的去对待每一个人。问心无愧，是最快乐的。没有欺骗，没有利诱的感情，是最纯真的，我希望自己一直拥有这些。因为懂得，所以珍惜。 <br />
<br />
　　当爱变成习惯，这不是你想要的。是呀，当爱变成习惯了，那么一切的一切都没任何意义了。在虚幻的网络中，让我们好好珍惜自己，珍惜自己的感情，为值得付出的付出，我们都要没任何权利去伤害别人，去争取什么。因为一切都只是网络而已。何必在虚幻的世界中去伤害什么呢？ <br />
<br />
　　即使再多的诺言，也无法阻止现实和网络的区别；即使再多的山盟海誓，也无法阻止现实和网络的距离，那么，请你好好珍爱自己，珍惜自己的感情。因为我们没必要为不值得的事，不值得的人去努力什么。争取幸福，是相对于现实的。<br />
&nbsp;<br />
</font>
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/159024.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-11-08 10:19 <a href="http://www.blogjava.net/itwangxinli/articles/159024.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>老公，爱情没有对不起</title><link>http://www.blogjava.net/itwangxinli/articles/159013.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Thu, 08 Nov 2007 01:58:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/159013.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/159013.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/159013.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/159013.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/159013.html</trackback:ping><description><![CDATA[<font size="3">&nbsp;<font color="#990099">老公，昨晚你和几个朋友喝酒，大概七八分醉时，你拉着我的手，向你一帮朋友说对不起我，说你没钱没房子没车子，这些年来，我跟着你吃苦受累了。说着说着你眼圈都要红了。或许，你的朋友们跟着感动的时候，我也应该感动，至少应该装作感动。但是，我只会在人前笑你像个女人，只会追问你当初明明知道自己家境并不好，而我不知道，你为什么追求我？老公，我知道你肯定照样会说：&#8220;因为我爱你啊，情难自禁呀！&#8221;</font></font><font color="#990099">&nbsp;</font><br />
<font color="#990099"><font style="font-size: small">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok！既然你爱我，那么就无须对我说：&#8220;sorry！&#8221;你老婆我是傻瓜吗？如果我不爱你，我会跟你一起吃苦吗？我会放着一群有钱有家世的有为青年爱慕者不要，非要在你这一棵树上吊死吗？如果我不爱你，我会和你租住在出租房子里，天天闻你的脚臭，替你洗你扔的东一只西一只的臭袜子吗？如果我不爱你，我会坚守着你学生时代许下的诺言，说你以后一定会成为大款的理想而死心塌地地跟着你吗？还不早&#8220;改旗易帜&#8221;，弃暗投明了？哈哈，你老婆我是这样的人吗？！</font>&nbsp;</font><br />
<font color="#990099"><font style="font-size: small">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;老公，爱情真的没有对不起。茫茫人海中，于千千万万个都可能成为我丈夫的男人中，遇见你，真的不容易；而你，不也是从千千万万的都也可能成为你妻子的女人中走过，独独来到我的身边爱上我吗？没有早一步没有晚一步，在恰当的时间遇见恰当的人，轻轻地说一声：&#8220;嗨！你也在这里啊？&#8221;老公，这份机缘，你说是不是已经足够我们很好地相爱？</font>&nbsp;</font><br />
<font color="#990099"><font style="font-size: small">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;物质真的不是那么重要！没钱，你我不都在努力地赚取吗？没房子，我们没有安身的住所吗？而且，现在银行那么多那么好，只要我们愿意偿还高额的利率，愿意用我们的青春去换取贷款，还怕以后在这座城市里没有属于我们自己的房子吗？没车子，这点最可笑，我都怀疑你说这话时是不是真的醉了，你平衡感那么差，而我天生是&#8220;路痴&#8221;，一出门就分不清东南西北，就算以后真的买了汽车，谁开啊？你肯定又会说，那就雇个司机呗！老公，你见谁家单独雇个司机开车的，夫妻两个都不会做生意又不开公司的？</font>&nbsp;</font><br />
<font color="#990099"><font style="font-size: small">老公，不是我太乐观，可你也不要太悲观，我们这代人活得真不容易，我们生存的成本越来越高，可是，我们不能因此不快乐。</font>&nbsp;</font><br />
<font style="font-size: small"><font color="#990099"><font style="font-size: small">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;老公，我不想再听你说对不起，我们每个人都应该对自己的选择坚定不移，既然我们已经牵手一路走来，你的爱和温柔，对我而言，比什么都重要；对了，你说对不起是什么意思？难道你想在我二十一岁时追求我，在我二十二岁时就娶了我，在我二十六岁时想把我转手&#8220;卖&#8221;给别人？还&#8220;美其名曰&#8221;是为了更好地爱我？？</font>&nbsp;</font><br />
<font color="#990099"><font style="font-size: small">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你以为那些几年来一直还在爱慕我的有为青年们，真的会像你一样把我捧在手心吗？老公，他们爱慕的是我依然年轻美丽的容颜，喜欢是我乐观豁达宽容的心性，而如花的女人终有一天芳华老去，心胸的豁达只是对朋友的态度，只有在你面前，我才是最真实的我。你亲爱的老婆大人，如果对外人也像对你一样有暴力倾向，早就不是吓走爱慕者那么简单了，可能早被人打成&#8220;震动的脑袋，彩屏的脸&#8221;啦！嘿，因为爱你，所以偶尔会&#8220;虐待&#8221;你。</font>&nbsp;</font><br />
<font color="#990099"><font style="font-size: small">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;亲爱的老公大人，只是你，可以有孩子的纯真，可以有女人般细腻的心思，可以有男人的坚强韧性的品质；可以孝顺我的父母比得亲生的儿子，可以待我的年幼的弟弟妹妹犹如亲生的兄长，可以宠爱我像对待你想象中无比可爱娇美的小女儿；也只是你，值得我托付一生，钟爱一生，牵手一生！</font>&nbsp;</font><br />
<font color="#990099"><font style="font-size: small">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;老公，请你以后再喝酒时，不要再说对不起我好吗？如果你真的爱我，可以更努力地赚钱，还有，如果你真的爱我，可以不让我再给你洗你那些其臭无比的袜子吗？拜托了，就算还是我洗，麻烦你把两只扔在一起好吗？</font>&nbsp;</font><br />
</font>
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/159013.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-11-08 09:58 <a href="http://www.blogjava.net/itwangxinli/articles/159013.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>爱一个人</title><link>http://www.blogjava.net/itwangxinli/articles/158954.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Wed, 07 Nov 2007 15:33:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/158954.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/158954.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/158954.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/158954.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/158954.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/itwangxinli/articles/158954.html'>阅读全文</a><img src ="http://www.blogjava.net/itwangxinli/aggbug/158954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-11-07 23:33 <a href="http://www.blogjava.net/itwangxinli/articles/158954.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>选择</title><link>http://www.blogjava.net/itwangxinli/articles/158807.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Wed, 07 Nov 2007 06:09:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/158807.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/158807.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/158807.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/158807.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/158807.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 觉得这首歌不错，呵呵&nbsp;&nbsp;<a href='http://www.blogjava.net/itwangxinli/articles/158807.html'>阅读全文</a><img src ="http://www.blogjava.net/itwangxinli/aggbug/158807.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-11-07 14:09 <a href="http://www.blogjava.net/itwangxinli/articles/158807.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Take Me to Your Heart,Take Me To You Soul</title><link>http://www.blogjava.net/itwangxinli/articles/156838.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Tue, 30 Oct 2007 01:16:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/156838.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/156838.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/156838.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/156838.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/156838.html</trackback:ping><description><![CDATA[<br />
一直很喜欢这首歌，但是对歌词不是很清楚，所有就找了个个机会，看看，感觉不错..........<br />
Hiding from the rain and snow<br />
Trying to forget but I won't let go<br />
Looking at a crowded street<br />
Listening to my own heart beat<br />
<br />
So many people all around the world<br />
Tell me where do I find someone like you girl<br />
<br />
(Chorus)<br />
<br />
Take me to your heart take me to your soul<br />
Give me your hand before I'm old<br />
Show me what love is - haven't got a clue<br />
Show me that wonders can be true<br />
They say nothing lasts forever<br />
We're only here today<br />
Love is now or never<br />
Bring me far away<br />
Take me to your heart take me to your soul<br />
Give me your hand and hold me<br />
Show me what love is - be my guiding star<br />
It's easy take me to your heart<br />
Standing on a mountain high<br />
Looking at the moon through a clear blue sky<br />
I should go and see some friends<br />
But they don't really comprehend<br />
Don't need too much talking without saying anything<br />
All I need is someone who makes me wanna sing<br />
<br />
Take me to your heart take me to your soul<br />
Give me your hand before I'm old<br />
Show me what love is - haven't got a clue<br />
Show me that wonders can be true<br />
<br />
<br />
They say nothing lasts forever<br />
We're only here today<br />
Love is now or never<br />
Bring me far away<br />
Take me to your heart take me to your soul<br />
Give me your hand and hold me<br />
Show me what love is - be my guiding star<br />
It's easy take me to your heart<br />
<br />
Take me to your heart take me to your soul<br />
Give me your hand and hold me<br />
Show me what love is - be my guiding star<br />
It's easy take me to your heart<br />
(Chorus)<br />
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/156838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-10-30 09:16 <a href="http://www.blogjava.net/itwangxinli/articles/156838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>你还好吗</title><link>http://www.blogjava.net/itwangxinli/articles/150276.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Wed, 03 Oct 2007 09:25:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/150276.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/150276.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/150276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/150276.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/150276.html</trackback:ping><description><![CDATA[本文转载花花猪的QQ空间
<div class="lh3" id="veryContent" style="overflow: hidden; width: 100%">
<table class="contentTable" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td style="font-size: 12px"><font style="line-height: 1.3em" face="楷体_GB2312">你还好<br />
            吗？&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">当春走到了冬，又走过了夏！&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">你还好吗？&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">当另一种生活方式延伸在你的脚下！&nbsp;</font><wbr><br />
            <br />
            <font style="line-height: 1.3em" face="楷体_GB2312">又是一个相似的日子，&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">只是人各在天涯，&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">只是一个相似的场景，&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">只是面孔有些尴尬。&nbsp;</font><wbr><br />
            <br />
            <font style="line-height: 1.3em" face="楷体_GB2312">真的遗憾，&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">相似的冬季，今年竟没有雪花。&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">凝望着依旧晴朗的天空，&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">似乎又嗅到了那种冷冷的，但又好像很温暖的味道。&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">凝望着那片土地的方向，&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">你熟悉的，而且又清晰的面孔，在慢慢放大！&nbsp;</font><wbr><br />
            <br />
            <font style="line-height: 1.3em" face="楷体_GB2312">笔记本上依旧留着那些话，&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">总叫我有种恍若当年的错觉，&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">又让记起了你的真，你的诚，&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">你的度和你的潇洒。&nbsp;</font><wbr><br />
            <br />
            <font style="line-height: 1.3em" face="楷体_GB2312">异地的风又吹过我的面颊，&nbsp;</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">异地的路你是否能够顺利的走，</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">不知你能否幸运的寻找到一个真正属于你的幸福的家。</font><wbr><br />
            &nbsp;<br />
            <font style="line-height: 1.3em" face="楷体_GB2312">你还好吗？</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">当我又一次向天空问这些话，</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">无数为你祈祷，</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">只愿你今生能够阔达。</font><wbr><br />
            &nbsp;<br />
            <font style="line-height: 1.3em" face="楷体_GB2312">不知你也是否想起我，</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">不知你是否会在同样的季节，</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">问着同样的话，</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">只知道拥有的那些回忆</font><wbr><br />
            <font style="line-height: 1.3em" face="楷体_GB2312">是我今生永不褪色的图画！</font></td>
        </tr>
    </tbody>
</table>
</div>
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/150276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-10-03 17:25 <a href="http://www.blogjava.net/itwangxinli/articles/150276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>十一长假</title><link>http://www.blogjava.net/itwangxinli/articles/150274.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Wed, 03 Oct 2007 09:04:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/150274.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/150274.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/150274.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/150274.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/150274.html</trackback:ping><description><![CDATA[哎,这个十一长假过的好郁闷啊.十一一共放了八天的假,在家呆了四天,郁闷死了.
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/150274.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-10-03 17:04 <a href="http://www.blogjava.net/itwangxinli/articles/150274.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>女人不幸福的十二个开始(图)</title><link>http://www.blogjava.net/itwangxinli/articles/147566.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Sun, 23 Sep 2007 06:51:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/147566.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/147566.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/147566.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/147566.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/147566.html</trackback:ping><description><![CDATA[<div class="theTitle">&nbsp;</div>
<div id="endText">
<div class="endSummary">
<ul>
    <li>　　如果你到现在还没有和他的家庭中的每个成员有过沟通的话，那么，可以断言：女人的不幸从此开始&#8230;&#8230; </li>
</ul>
</div>
<p style="text-indent: 2em">
<center><img src="http://cimg2.163.com/catchpic/A/AC/AC3A945B1E8B52A2F65FCF7F6336EA0F.jpg" border="0"  alt="" /></center>
<p>&nbsp;</p>
<p style="text-indent: 2em"><strong>一、女人的不幸从男人的身高开始</strong></p>
<p style="text-indent: 2em">现今社会的一个怪现象，身高仅1米6几的女<nobr oncontextmenu="return false;" onmousemove="kwM(0);" id="key0" onmouseover="kwE(event,0, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">孩子</nobr>，择偶的条件之一，就是，要求男方的身高要1米75以上。</p>
<p style="text-indent: 2em">我想不明白的是，照结婚照的时候，男人是不是要蹲着？</p>
<p style="text-indent: 2em">身材高大的男人会带来安全感吗？</p>
<p style="text-indent: 2em">从科学的角度讲，人的身材越高，脑供血越慢，患病的几率越高&#8230;&#8230;</p>
<p style="text-indent: 2em">可以断言：女人的不幸从此开始&#8230;&#8230;</p>
<p style="text-indent: 2em"><strong>二、女人的不幸从<nobr oncontextmenu="return false;" onmousemove="kwM(9);" id="key7" onmouseover="kwE(event,9, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">男人</nobr>的相貌开始</strong></p>
<p style="text-indent: 2em">女人在结婚前，(即便是在结婚后)，多半看中的是男人的长相。</p>
<p style="text-indent: 2em">男人要帅，不是刘德华，也得是周润发&#8230;&#8230;</p>
<p style="text-indent: 2em">长的好看的男人能当饭吃吗？</p>
<p style="text-indent: 2em">我了解的情况是，不论男人或女人，只要是长的漂亮的，他的应酬也多。</p>
<p style="text-indent: 2em">要想他把感情放在一个人身上，那绝不可能。而且，他们多只是花瓶，没半点能力可言。</p>
<p style="text-indent: 2em">那么，你是不是决定了，要养着他呢？</p>
<p style="text-indent: 2em">可以断言：女人的不幸从此开始&#8230;&#8230;</p>
<p style="text-indent: 2em"><strong>三、女人的不幸从男人的年龄开始。</strong></p>
<p style="text-indent: 2em">经验一再告诉我们，同年龄的女人要比男人成熟。</p>
<p style="text-indent: 2em">而社会的普遍认为是，结婚就应该找个同年龄的人。</p>
<p style="text-indent: 2em">往往，<nobr oncontextmenu="return false;" onmousemove="kwM(1);" id="key1" onmouseover="kwE(event,1, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">男女</nobr>年龄差很多，就被看成是异类。</p>
<p style="text-indent: 2em">可笑的是，结了婚以后，这个弊端才显现出来&#8230;&#8230;真的是两个孩子，什么都不懂。</p>
<p style="text-indent: 2em">更可笑的是，现在的父母仍然强迫他的孩子们和同龄的人结婚&#8230;&#8230;</p>
<p style="text-indent: 2em">可以断言：女人的不幸从此开始&#8230;&#8230;</p>
<p style="text-indent: 2em"><strong>四、女人的不幸从男人的事业开始</strong></p>
<p style="text-indent: 2em">因为大多数女人不会<nobr oncontextmenu="return false;" onmousemove="kwM(4);" id="key4" onmouseover="kwE(event,4, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">成功</nobr>，因此，他们希望自己的男人成功。</p>
<p style="text-indent: 2em">不管是即将要成功还是已经成功的男人，他们的应酬都很多，因此，女人们一定会变得很孤独，</p>
<p style="text-indent: 2em">可以断言：女人的不幸从此开始&#8230;&#8230;</p>
<p style="text-indent: 2em"><strong>五、 女人的不幸从男人的收入开始</strong></p>
<p style="text-indent: 2em">现在养一个孩子要多少钱？你认真的算过吗？</p>
<p style="text-indent: 2em">现在两个孩子养四个老人要多少钱？你认真的算过吗？</p>
<p style="text-indent: 2em">当然，每个人有每个人的活法，不必为别人操心。</p>
<p style="text-indent: 2em">可是我一定要<nobr oncontextmenu="return false;" onmousemove="kwM(2);" id="key2" onmouseover="kwE(event,2, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">提醒</nobr>你：贫困夫妻百日哀&#8230;&#8230;</p>
<p style="text-indent: 2em">换个角度，你觉得有钱人都过的很快乐吗？</p>
<p style="text-indent: 2em">可以断言：女人的不幸从此开始&#8230;&#8230;</p>
<p style="text-indent: 2em"><strong>六、女人的不幸从男人的爱开始</strong></p>
<p style="text-indent: 2em">我从来不避讳性，所谓食色性也。毕竟一生的多数时间是在床上度过。</p>
<p style="text-indent: 2em">夫妻和谐给双方带来的好处不是今天要讲的话题。</p>
<p style="text-indent: 2em">可是，谁能告诉我，你怎么能从一个男人的身高，长相，年龄和收入上看出，你和他是和谐的呢？</p>
<p style="text-indent: 2em">当你发现，你和他不同步的时候，</p>
<p style="text-indent: 2em">可以断言：女人的不幸从此开始&#8230;&#8230;</p>
<p style="text-indent: 2em"><strong>七、女人的不幸从男人的性格开始</strong></p>
<p style="text-indent: 2em"><nobr oncontextmenu="return false;" onmousemove="kwM(3);" id="key3" onmouseover="kwE(event,3, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">思维</nobr>决定习惯，习惯决定性格，性格决定命运&#8230;&#8230;被无限的证明过是正确的一句话。</p>
<p style="text-indent: 2em">人的思维的养成是和他所处的环境有关，当然，大部分和他的家庭环境有关系。</p>
<p style="text-indent: 2em">如果你选择的男人的性格有问题，或者他有些不好的习惯，(比如，喝酒，赌博)</p>
<p style="text-indent: 2em">那么，他能改掉吗？决不可能！</p>
<p style="text-indent: 2em">可以断言：女人的不幸从此开始&#8230;&#8230;</p>
<p style="text-indent: 2em"><strong>八、女人的不幸从男人的谎言开始</strong></p>
<p style="text-indent: 2em">男人是视觉动物，女人是听觉动物，这种物种的差异说明，女人听到的，就会去相信。</p>
<p style="text-indent: 2em">这正是大多数女人的悲哀。也正是为什么会有那么多女人被男人骗的原因。</p>
<p style="text-indent: 2em">谎言就是谎言，只不过他美丽动人。看到的都未必是真的，何况是听到的呢。</p>
<p style="text-indent: 2em">可以断言：女人的不幸从此开始&#8230;&#8230;</p>
<p style="text-indent: 2em"><strong>九、女人的不幸从男人的交际圈开始</strong></p>
<p style="text-indent: 2em">坏男人也不是一出生就是坏蛋。所谓物以类聚，人与群分。</p>
<p style="text-indent: 2em">当一个男人的交际圈里的人都有问题，那么这个只在你眼中完美的男人真的不可靠。</p>
<p style="text-indent: 2em">就是说，近墨者一定黑。如果你发现他的朋友们互相在为对方撒谎，那么，</p>
<p style="text-indent: 2em">可以断言：女人的不幸从此开始&#8230;&#8230;</p>
<p style="text-indent: 2em"><strong>十、女人的不幸从男人的<nobr oncontextmenu="return false;" onmousemove="kwM(6);" id="key5" onmouseover="kwE(event,6, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">家庭</nobr>开始</strong></p>
<p style="text-indent: 2em">大多数年轻人可笑的认为，只要彼此相爱，就能维持婚姻。</p>
<p style="text-indent: 2em">婚姻决不是两个人的事，只要你有父母和孩子，你慢慢会明白。</p>
<p style="text-indent: 2em">中国人的婚姻多半是嫁鸡随鸡的，因此，男方的家庭关系就很重要。</p>
<p style="text-indent: 2em">如果你到现在还没有和他的家庭中的每个成员有过沟通的话，那么，可以断言：女人的不幸从此开始&#8230;&#8230;</p>
<p style="text-indent: 2em"><strong>十一、女人的不幸从男人的不幸开始</strong></p>
<p style="text-indent: 2em">如果你到现在还在幻想，两个人会恩爱的走完一生。那么，你真的是很幼稚。</p>
<p style="text-indent: 2em">很多为年轻人拍的<nobr oncontextmenu="return false;" onmousemove="kwM(8);" id="key6" onmouseover="kwE(event,8, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">电影</nobr>之所以感人，就是因为，多半是有一方先去了。</p>
<p style="text-indent: 2em">正所谓生老病死，人这一生不可能不得病，得病还可以接受。</p>
<p style="text-indent: 2em">如果你的男人遭受意外先你而去，而你又不是那种见异思迁的人，可以断言：女人的不幸从此开始&#8230;&#8230;</p>
<p style="text-indent: 2em"><strong>十二、女人的不幸从男人的不成熟开始</strong></p>
<p style="text-indent: 2em">成熟是一种品质，尤其男人，因为这是社会付与他们的责任。</p>
<p style="text-indent: 2em">成熟男人有以下必不可少的特征：自信，宽容，坚持，果敢，博爱&#8230;&#8230;</p>
<p style="text-indent: 2em">如果连和小孩子说话都没什么耐心的话，这个男人可以成功，但决不成熟。</p>
<p style="text-indent: 2em">不成熟的东西都用不了多久。</p>
<p style="text-indent: 2em">既然婚姻是每个女人一生最大的赌注，那么，你选择如何下注呢？</p>
<p style="text-indent: 2em">如果，你身边的男人不具备以上品质，可以断言：女人的不幸从此开始&#8230;&#8230;</p>
<p style="text-indent: 2em"><a href="http://lady.163.com/"><img class="icon" height="11" alt="灰灰" src="http://cimg2.163.com/lady/newimg/arc_icon.gif" width="12" border="0" /></a> </p>
</div>
 <img src ="http://www.blogjava.net/itwangxinli/aggbug/147566.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-09-23 14:51 <a href="http://www.blogjava.net/itwangxinli/articles/147566.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>随机数字验证码的生成 </title><link>http://www.blogjava.net/itwangxinli/archive/2007/09/21/147200.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Fri, 21 Sep 2007 12:01:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2007/09/21/147200.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/147200.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2007/09/21/147200.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/147200.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/147200.html</trackback:ping><description><![CDATA[<span style="color: #0000ff">
<p><br />
&nbsp;</p>
<p><br />
&nbsp;</p>
<div class="postTitle"><a class="postTitle2" id="viewpost1_TitleUrl" href="http://www.blogjava.net/hadeslee/archive/2007/09/21/147067.html">随机数字验证码的生成</a> </div>
<p>有时候在我们的网络应用中，防止程序自动登录搞破坏，我们一般都会加上验证码，这些验证码一般来说都是由人来识别的，当然，如果验证码很有规律，或者说很清楚，漂亮，那么也是可能被程序识别的，我以前就识别过某网站的验证码，因为比较有规律，所以被识别了，并且识别率达到99%左右，其实我们可以制作很复杂一点的验证码，添加一些干扰的线条或者字体变形，使程序识别的难度加大，这样，我们的目的也就达到了.<br />
<br />
下面是生成的图片：<br />
<img height="57" alt="" src="http://www.blogjava.net/images/blogjava_net/hadeslee/ss.jpg" width="202" border="0" /><br />
</p>
<p>package</span><span style="color: #000000">&nbsp;com.hadeslee;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.BasicStroke;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.Color;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.Font;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.GradientPaint;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.Graphics2D;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.GraphicsEnvironment;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.Paint;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.Point;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.Stroke;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.image.BufferedImage;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.ArrayList;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.List;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Locale;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Random;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.imageio.ImageIO;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<br />
</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;*<br />
&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;lbf<br />
&nbsp;*&nbsp;</span><span style="color: #808080">@version</span><span style="color: #008000"><br />
&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Code&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;HttpServlet&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000">&nbsp;Processes&nbsp;requests&nbsp;for&nbsp;both&nbsp;HTTP&nbsp;&lt;code&gt;GET&lt;/code&gt;&nbsp;and&nbsp;&lt;code&gt;POST&lt;/code&gt;&nbsp;methods.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;request&nbsp;servlet&nbsp;request<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;response&nbsp;servlet&nbsp;response<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;fonts</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Code(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initFonts();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;initFonts(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GraphicsEnvironment.getLocalGraphicsEnvironment().preferLocaleFonts();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;names</span><span style="color: #000000">=</span><span style="color: #000000">GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(Locale.CHINA);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(String&nbsp;s:names){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;c</span><span style="color: #000000">=</span><span style="color: #000000">s.charAt(</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(Character.isLowerCase(c)</span><span style="color: #000000">||</span><span style="color: #000000">Character.isUpperCase(c)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fonts.add(s);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;processRequest(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException,&nbsp;IOException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(</span><span style="color: #000000">"</span><span style="color: #000000">image/jpeg;charset=UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;out</span><span style="color: #000000">=</span><span style="color: #000000">response.getOutputStream();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;bi</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BufferedImage(</span><span style="color: #000000">200</span><span style="color: #000000">,</span><span style="color: #000000">50</span><span style="color: #000000">,BufferedImage.TYPE_INT_RGB);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Graphics2D&nbsp;g</span><span style="color: #000000">=</span><span style="color: #000000">bi.createGraphics();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">[]&nbsp;cs</span><span style="color: #000000">=</span><span style="color: #000000">{</span><span style="color: #000000">'</span><span style="color: #000000">0</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">1</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">2</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">3</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">4</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">5</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">6</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">7</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">8</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">9</span><span style="color: #000000">'</span><span style="color: #000000">};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">[]&nbsp;use</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">[</span><span style="color: #000000">4</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Color(</span><span style="color: #000000">240</span><span style="color: #000000">,</span><span style="color: #000000">240</span><span style="color: #000000">,</span><span style="color: #000000">240</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.fillRect(</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">200</span><span style="color: #000000">,</span><span style="color: #000000">50</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">4</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">getPoint(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;size</span><span style="color: #000000">=</span><span style="color: #000000">getSize();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use[i]</span><span style="color: #000000">=</span><span style="color: #000000">cs[(</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">cs.length)];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;g.setColor(new&nbsp;Color((int)(Math.random()*256),0,(int)(Math.random()*256)));</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setPaint(getPaint(p,size));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setFont(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Font(fonts.get((</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">fonts.size())),getFace(),size));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.drawString(</span><span style="color: #000000">""</span><span style="color: #000000">+</span><span style="color: #000000">use[i],p.x,p.y);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setStroke(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BasicStroke(</span><span style="color: #000000">1.0f</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setPaint(</span><span style="color: #0000ff">null</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">4</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Color((</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">0x00FFFFFFF</span><span style="color: #000000">)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.drawLine((</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">200</span><span style="color: #000000">),(</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">50</span><span style="color: #000000">),(</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">200</span><span style="color: #000000">),(</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">50</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Random&nbsp;random&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Random();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">88</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;random.nextInt(</span><span style="color: #000000">200</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;random.nextInt(</span><span style="color: #000000">50</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Color((</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">0x00FFFFFFF</span><span style="color: #000000">)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setStroke(getStroke());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.drawLine(x,y,x,y);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ImageIO.write(bi,</span><span style="color: #000000">"</span><span style="color: #000000">JPEG</span><span style="color: #000000">"</span><span style="color: #000000">,out);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.dispose();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Stroke&nbsp;getStroke(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BasicStroke&nbsp;bs</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BasicStroke((</span><span style="color: #0000ff">float</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">3</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;bs;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Point&nbsp;getPoint(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;index){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Point(</span><span style="color: #000000">5</span><span style="color: #000000">+</span><span style="color: #000000">(index</span><span style="color: #000000">*</span><span style="color: #000000">((</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">10</span><span style="color: #000000">)</span><span style="color: #000000">+</span><span style="color: #000000">40</span><span style="color: #000000">)),</span><span style="color: #000000">40</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Paint&nbsp;getPaint(Point&nbsp;p,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;size){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GradientPaint&nbsp;gp</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;GradientPaint(p.x,p.y,</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Color((</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">256</span><span style="color: #000000">),</span><span style="color: #000000">0</span><span style="color: #000000">,(</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">256</span><span style="color: #000000">)),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.x,p.y</span><span style="color: #000000">-</span><span style="color: #000000">size,</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Color((</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">256</span><span style="color: #000000">),(</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">256</span><span style="color: #000000">),(</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">256</span><span style="color: #000000">)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;gp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getFace(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">10</span><span style="color: #000000">&gt;</span><span style="color: #000000">5</span><span style="color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;Font.BOLD;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;Font.ITALIC;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getSize(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[]&nbsp;sizes</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[</span><span style="color: #000000">20</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">20</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sizes[i]</span><span style="color: #000000">=</span><span style="color: #000000">30</span><span style="color: #000000">+</span><span style="color: #000000">i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;sizes[(</span><span style="color: #0000ff">int</span><span style="color: #000000">)(Math.random()</span><span style="color: #000000">*</span><span style="color: #000000">sizes.length)];<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&lt;editor-fold&nbsp;defaultstate="collapsed"&nbsp;desc="HttpServlet&nbsp;methods.&nbsp;Click&nbsp;on&nbsp;the&nbsp;+&nbsp;sign&nbsp;on&nbsp;the&nbsp;left&nbsp;to&nbsp;edit&nbsp;the&nbsp;code."&gt;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000">&nbsp;Handles&nbsp;the&nbsp;HTTP&nbsp;&lt;code&gt;GET&lt;/code&gt;&nbsp;method.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;request&nbsp;servlet&nbsp;request<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;response&nbsp;servlet&nbsp;response<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;doGet(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException,&nbsp;IOException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;processRequest(request,&nbsp;response);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000">&nbsp;Handles&nbsp;the&nbsp;HTTP&nbsp;&lt;code&gt;POST&lt;/code&gt;&nbsp;method.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;request&nbsp;servlet&nbsp;request<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;response&nbsp;servlet&nbsp;response<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;doPost(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException,&nbsp;IOException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;processRequest(request,&nbsp;response);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000">&nbsp;Returns&nbsp;a&nbsp;short&nbsp;description&nbsp;of&nbsp;the&nbsp;servlet.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getServletInfo()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Short&nbsp;description</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&lt;/editor-fold&gt;</span><span style="color: #008000"><br />
</span><span style="color: #000000">}<br />
</span><br />
</p>
<p>&nbsp;</p>
   <img src ="http://www.blogjava.net/itwangxinli/aggbug/147200.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-09-21 20:01 <a href="http://www.blogjava.net/itwangxinli/archive/2007/09/21/147200.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring Quartz 的使用</title><link>http://www.blogjava.net/itwangxinli/archive/2007/09/07/143355.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Fri, 07 Sep 2007 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/archive/2007/09/07/143355.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/143355.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/archive/2007/09/07/143355.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/143355.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/143355.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近忙于项目，一直没有更新blog，请大家见谅。在项目中使用了Lucene全文检索，考虑到系统的特性，把Lucene的全文检索索引创建时间放在夜晚，已减轻系统的压力。首先，需要写一个类，这个类是用来执行具体的操作。也就是你想做什么事情，这个类需要extends org.springframework.scheduling.quartz.QuartzJobBean 类。比如：&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/itwangxinli/archive/2007/09/07/143355.html'>阅读全文</a><img src ="http://www.blogjava.net/itwangxinli/aggbug/143355.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-09-07 11:42 <a href="http://www.blogjava.net/itwangxinli/archive/2007/09/07/143355.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>水果也疯狂</title><link>http://www.blogjava.net/itwangxinli/articles/137994.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Sun, 19 Aug 2007 14:41:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/137994.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/137994.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/137994.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/137994.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/137994.html</trackback:ping><description><![CDATA[<table class=blueaa cellSpacing=1 cellPadding=8 width="100%" bgColor=#a4b6d7 border=0>
    <tbody>
        <tr bgColor=#ddecfa>
            <td class=f14></td>
        </tr>
        <tr vAlign=top bgColor=#f2f8ff>
            <td width=100>
            <p>&nbsp;</p>
            </td>
            <td class="f14 imgzoom">
            <p>本文<nobr oncontextmenu="return false;" onmousemove=kwM(1); id=key1 onmouseover="kwE(event,1, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">网址</nobr>:<a class=f14 href="http://bbs6.news.163.com/board/happy/16/1319016.html" target=_blank><font color=#666666>http://bbs6.news.163.com/board/happy/16/1319016.html</font> </a>&nbsp;&nbsp;<a onclick="clipboardData.setData('Text','http://bbs6.news.163.com/board/happy/16/1319016.html \n'+document.title)" href="javascript:">复制</a> </p>
            <p><img src="http://img.bbs.163.com:88/zipai/xd/xdqk/550x641_90546.image" border=0> <br><br><img src="http://img.bbs.163.com:88/zipai/xd/xdqk/550x633_98236.image" border=0> <br><br><img src="http://img.bbs.163.com:88/zipai/xd/xdqk/550x402_62033.image" border=0> <br><br><img src="http://img.bbs.163.com:88/zipai/xd/xdqk/550x421_63303.image" border=0> <br><br><img src="http://img.bbs.163.com:88/zipai/xd/xdqk/550x414_67446.image" border=0><br></p>
            </td>
        </tr>
    </tbody>
</table>
   <img src ="http://www.blogjava.net/itwangxinli/aggbug/137994.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-08-19 22:41 <a href="http://www.blogjava.net/itwangxinli/articles/137994.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>这样的男人才有资格当你的老公</title><link>http://www.blogjava.net/itwangxinli/articles/137850.html</link><dc:creator>BlueSky_itwangxinli</dc:creator><author>BlueSky_itwangxinli</author><pubDate>Sat, 18 Aug 2007 12:06:00 GMT</pubDate><guid>http://www.blogjava.net/itwangxinli/articles/137850.html</guid><wfw:comment>http://www.blogjava.net/itwangxinli/comments/137850.html</wfw:comment><comments>http://www.blogjava.net/itwangxinli/articles/137850.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/itwangxinli/comments/commentRss/137850.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itwangxinli/services/trackbacks/137850.html</trackback:ping><description><![CDATA[<h1>&nbsp;</h1>
<div id=endText>
<p class=endSummary>&nbsp;</p>
<center><img alt="" src="http://cimg2.163.com/lady/2007/8/17/200708170932453820c.jpg" border=0><br></center>
<p style="TEXT-INDENT: 2em">老公，就是那个你将碗里吃剩的饭像倒垃圾一样倒进他碗里，而他还吃得像小猪一样欢天喜地的&#8220;傻男人&#8221; .</p>
<p style="TEXT-INDENT: 2em">老公，就是那个白天吵架不理你、闹得不可开交，而半夜为你拉好踢开的被角的&#8220;小气男人&#8221; .</p>
<p style="TEXT-INDENT: 2em">老公，就是那个<nobr oncontextmenu="return false;" onmousemove=kwM(1); id=key1 onmouseover="kwE(event,1, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">钱包</nobr>里只剩300大洋，却全力劝你买下700大洋你看中的一件衣服，帮你刷卡而自己顾不得买条领带的&#8220;笨男人&#8221;。</p>
<p style="TEXT-INDENT: 2em">老公，就是那个你偷懒跟他撒娇，要他为你倒水洗脚而明知中计还乐不可滋中套的&#8220;可爱男人&#8221; .</p>
<p style="TEXT-INDENT: 2em">老公，就是那个冬天怕你脚冷，而将你一双没有洗的脚紧紧抱在怀里的那个不怕臭的男人，简称&#8220;臭男人&#8221; .</p>
<p style="TEXT-INDENT: 2em">老公，就是那个吃了你放多了盐和辣椒的菜一边擤鼻涕一边猛喝茶，还不忘流着泪摇头晃脑说：老婆做的菜真好吃的&#8220;可怜男人&#8221; .</p>
<p style="TEXT-INDENT: 2em">老公，就是那个星期六早晨你睡眼蒙胧去卫生间，他突然从门角跳出来抱你将你吓一大跳的&#8220;可恨男人&#8221; .</p>
<p style="TEXT-INDENT: 2em">老公，就是那个你&#8220;老朋友&#8221;来时，默默为你泡好红糖水，帮你买卫生巾时怕被熟人看见而匆忙间抓错东西抱头鼠蹿回来挨骂的&#8220;倒霉男人&#8221;.</p>
<p style="TEXT-INDENT: 2em">老公，就是那个陪你吃饭、陪你逛街、陪你回家、过马路紧紧牵着你小手的&#8220;三陪男人&#8221; .</p>
<p style="TEXT-INDENT: 2em">老公，就是那个下雨时将自己<nobr oncontextmenu="return false;" onmousemove=kwM(7); id=key4 onmouseover="kwE(event,7, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">外套</nobr>脱下，用胳膊为你遮风挡雨自己一身湿的&#8220;大男人&#8221; .</p>
<p style="TEXT-INDENT: 2em">女人，记住：老公，就是那个不让你吃亏的男人。</p>
<p style="TEXT-INDENT: 2em">老公，就是那个让你有了他而不屑看其他男人一眼的男人。</p>
<p style="TEXT-INDENT: 2em">老公，就是那个一向吝啬的你，舍得在他身上花钱而竟然不心痛的男人。</p>
<p style="TEXT-INDENT: 2em">老公，就是那个让你星期六早晨放弃睡懒觉，而甘愿起床为他和他家人做早餐的男人。</p>
<p style="TEXT-INDENT: 2em">老公，就是那个让从前心高气傲不食人间烟火的你，变成现在单位、<nobr oncontextmenu="return false;" onmousemove=kwM(3); id=key2 onmouseover="kwE(event,3, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">家庭</nobr>两点一线贤妻良母的男人。</p>
<p style="TEXT-INDENT: 2em">老公，就是那个看到别人的脏衣服都觉恶心，却将他穿一星期未换黑不见底的臭袜子洗得雪白而毫无怨言的男人。</p>
<p style="TEXT-INDENT: 2em">老公，就是那个你不顾一切阻力，为他受尽一切屈辱再穷再苦也心甘情愿跟他厮守一生的男人。</p>
<p style="TEXT-INDENT: 2em">老公，就是那个让从不懂节约大手大脚的你，变成现在和菜贩子坦然砍价，宁愿多走二站路赶公共汽车的男人。</p>
<p style="TEXT-INDENT: 2em">老公，就是那个让你每个空余时间都希望有他陪伴，出差后让你掰着指头数归期的男人。</p>
<p style="TEXT-INDENT: 2em">老公，就是那个让你因为他<nobr oncontextmenu="return false;" onmousemove=kwM(0); id=key0 onmouseover="kwE(event,0, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">感冒</nobr>而心痛得流泪， 看到他多吃一碗饭而开心的男人。</p>
<p style="TEXT-INDENT: 2em">老公，就是那个让在家烧饭你看到天外下了雨，而丢下一切拿起伞去给他送伞的男人。</p>
<p style="TEXT-INDENT: 2em">女人，记住：老公，就是那个你舍不得给他亏吃的男人。</p>
</div>
   <img src ="http://www.blogjava.net/itwangxinli/aggbug/137850.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itwangxinli/" target="_blank">BlueSky_itwangxinli</a> 2007-08-18 20:06 <a href="http://www.blogjava.net/itwangxinli/articles/137850.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>