﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-黑灵客栈-随笔分类-乱七八糟</title><link>http://www.blogjava.net/mstar/category/1427.html</link><description>搞软件开发就像被强奸,如果不能反抗,就享受它吧！</description><language>zh-cn</language><lastBuildDate>Tue, 21 Aug 2012 02:31:54 GMT</lastBuildDate><pubDate>Tue, 21 Aug 2012 02:31:54 GMT</pubDate><ttl>60</ttl><item><title>HTTP Methods Every Web Developer Must Know</title><link>http://www.blogjava.net/mstar/archive/2012/08/21/385902.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Tue, 21 Aug 2012 01:27:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2012/08/21/385902.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/385902.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2012/08/21/385902.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/385902.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/385902.html</trackback:ping><description><![CDATA[
		<h2>The Four (Plus One) Elements</h2>
		<p>Two of them are probably the 
most frequently used by you and two (plus one) of them are rarely use 
even though most of programmers are aware of their existence.</p>
		<p>
				<strong>GET</strong>
		</p>
		<p>“I get something!”</p>
		<p>“Get the data and back off!”</p>
		<p>As you might know, GET should always only getting the data from the specified resources and <em>should not</em>
 create any action other than retrieval. If you want to save the data to
 database, modify files, etc., do not use GET. This is important as GET 
(and HEAD, see below) is considered “safe”.</p>
		<p>
				<strong>HEAD</strong>
		</p>
		<p>We can say that this is the 
light version of GET because HEAD is actually the same as GET but 
ignoring the response body. When do we use HEAD instead of GET? Testing 
links, check for modifications, etc., that is for something that you 
didn’t need to read the response body and just okay with the response 
header.</p>
		<p>
				<strong>POST</strong>
		</p>
		<p>If GET retrieved the data then POST is a method to store data, create new resources, etc. <em>POST to GET is like “write” to “read”</em>. Pretty simple. (You might be wondering why I simplify things and not telling the truth about the vary responses, whether it’s <em>200</em>, <em>201</em>, or <em>204</em>. If you’re really curious about those response codes, please refer to <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html" target="_blank" title="Status Code Definitions">RFC2616: HTTP Status Code Definitions</a>. ).</p>
		<p>
				<strong>PUT</strong>
		</p>
		<p>PUT, simply put, is practically the same with POST. The difference between PUT and POST is in its behavior. <a href="http://stackoverflow.com/questions/630453/put-vs-post-in-rest/630475#630475" target="_blank" title="PUT vs POST">Read this explanation</a> for a brief and easy-to-understand answer.</p>
		<p>
				<strong>DELETE</strong>
		</p>
		<p>As the name suggests, DELETE is the “opposite” of PUT. Again, <em>DELETE to PUT is like “erase” to “write”</em>. No big deal. (I know some people who use POST to delete or destroy the data/resource but that should not happened).</p>
		<p>“<em>So if PUT and DELETE are identical with POST, why we would do something using PUT and DELETE instead of POST?</em>“, you asked.</p>
		<p>PUT and DELETE is <a href="http://en.wikipedia.org/wiki/Idempotence" title="Idempotency">idempotency</a>.
 I repeat, idempotency. No matter how much you use PUT or DELETE, if you
 do that more than one within the same resource, it will be counted as 
one. This rule is not applicable for POST as everytime you do the POST, 
the (same) data will be stored/created over and over again. <a href="http://www.artima.com/lejava/articles/why_put_and_delete.html">Elliotte Rusty Harold explained about this in an interview six years ago</a>.</p>
		<p>There’s more than this. You can see another three methods: <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html"><strong>TRACE</strong></a>, <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html"><strong>CONNECT</strong></a>, and <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html"><strong>OPTIONS</strong></a> and the relatively new method: <strong><a href="http://tools.ietf.org/html/rfc5789" title="PATCH">PATCH</a></strong>.</p>
		<p>
				<br />
		</p>
		<p>原文:http://css.dzone.com/articles/http-methods-every-web<br /></p>
<img src ="http://www.blogjava.net/mstar/aggbug/385902.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2012-08-21 09:27 <a href="http://www.blogjava.net/mstar/archive/2012/08/21/385902.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>当客户端和服务器都在自己的机器上时,用wireshark拦截packet</title><link>http://www.blogjava.net/mstar/archive/2012/04/12/373898.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Thu, 12 Apr 2012 01:22:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2012/04/12/373898.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/373898.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2012/04/12/373898.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/373898.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/373898.html</trackback:ping><description><![CDATA[当客户端和服务器都在自己的机器上时,用wireshark是看不到发送和接受到的数据包的.<br /><br />一种方法是创建一个loopback网卡. 这个比较麻烦而且不一定有效.. 参见http://wiki.wireshark.org/CaptureSetup/Loopback<br /><br />如果你的电脑再局域网中, 也就是说是有网关服务器的情况下, 你可以通过改变路由设置. 把客户端发往服务的包指定到网关服务器上.<br />这样数据包就是通过网关饶了一圈再回来, wireshark就能拦截到数据包了. 路由设定配置如下: 我在win7上试过是可以的. 其他的os不清楚<br /><br />假设你的ip是172.17.8.32(不是127.0.0.1是实际的网卡地址), 网关服务器是172.17.8.253<br /><br />通过下面的命令把数据包指向网关服务器<br /><br />route add 172.17.8.32 mask 255.255.255.255 172.17.8.253 metric 1<br /><br />要想再设置回来可以用下面的命令<br /><br />route delete 172.17.8.32<br />route add 172.17.8.32 mask 255.255.255.255 172.17.8.32 metric 1<br /><br />ip地址和网关地址可以通过 ipconfig来查看.<br /><img src ="http://www.blogjava.net/mstar/aggbug/373898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2012-04-12 09:22 <a href="http://www.blogjava.net/mstar/archive/2012/04/12/373898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>The Zen of Python</title><link>http://www.blogjava.net/mstar/archive/2010/08/30/330309.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Mon, 30 Aug 2010 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2010/08/30/330309.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/330309.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2010/08/30/330309.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/330309.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/330309.html</trackback:ping><description><![CDATA[总是会忘记, 所以干脆几个随笔.<br />
<br />
<h1>The Zen of Python</h1>
import this<br />
<br />
<p>Beautiful is better than ugly.</p>
<p>Explicit is better than implicit.<br />
Simple is better than complex.<br />
Complex is better than complicated.<br />
Flat is better than nested.<br />
Sparse is better than dense.<br />
Readability counts.<br />
Special cases aren't special enough to break the rules.<br />
Although practicality beats purity.<br />
Errors should never pass silently.<br />
Unless explicitly silenced.<br />
In the face of ambiguity, refuse the temptation to guess.<br />
There should be one-- and preferably only one --obvious way to do it.<br />
Although that way may not be obvious at first unless you're Dutch.<br />
Now is better than never.<br />
Although never is often better than *right* now.<br />
If the implementation is hard to explain, it's a bad idea.<br />
If the implementation is easy to explain, it may be a good idea.<br />
Namespaces are one honking great idea -- let's do more of those!</p>
<br />
<pre></pre>
<p><br />
</p>
<pre></pre>
<br />
<img src ="http://www.blogjava.net/mstar/aggbug/330309.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2010-08-30 17:05 <a href="http://www.blogjava.net/mstar/archive/2010/08/30/330309.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASCII Characters Table</title><link>http://www.blogjava.net/mstar/archive/2009/09/18/295548.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Fri, 18 Sep 2009 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2009/09/18/295548.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/295548.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2009/09/18/295548.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/295548.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/295548.html</trackback:ping><description><![CDATA[<table style="width: 620px;" cellpadding="2" cellspacing="2">
    <tbody>
        <tr>
            <th style="width: 60px;" align="left">Decimal</th>
            <th style="width: 60px;" align="left">Hexademical</th>
            <th style="width: 60px;" align="left">Octal</th>
            <th style="width: 80px;" align="left">ASCII Character</th>
            <th style="width: 120px;" align="left">HTML Entity Code</th>
            <th align="left">Description</th>
        </tr>
        <tr>
            <td>0</td>
            <td>0</td>
            <td>000</td>
            <td>NUL</td>
            <td>&#00;</td>
            <td>null character</td>
        </tr>
        <tr>
            <td>1</td>
            <td>1</td>
            <td>001</td>
            <td>SOH</td>
            <td>&#01;</td>
            <td>start of header</td>
        </tr>
        <tr>
            <td>2</td>
            <td>2</td>
            <td>002</td>
            <td>STX</td>
            <td>&#02;</td>
            <td>start of text</td>
        </tr>
        <tr>
            <td>3</td>
            <td>3</td>
            <td>003</td>
            <td>ETX</td>
            <td>&#03;</td>
            <td>end of text</td>
        </tr>
        <tr>
            <td>4</td>
            <td>4</td>
            <td>004</td>
            <td>EOT</td>
            <td>&#04;</td>
            <td>end of transmission</td>
        </tr>
        <tr>
            <td>5</td>
            <td>5</td>
            <td>005</td>
            <td>ENQ</td>
            <td>&#05;</td>
            <td>enquiry</td>
        </tr>
        <tr>
            <td>6</td>
            <td>6</td>
            <td>006</td>
            <td>ACK</td>
            <td>&#06;</td>
            <td>acknowledge</td>
        </tr>
        <tr>
            <td>7</td>
            <td>7</td>
            <td>007</td>
            <td>BEL</td>
            <td>&#07;</td>
            <td>bell (ring)</td>
        </tr>
        <tr>
            <td>8</td>
            <td>8</td>
            <td>010</td>
            <td>BS</td>
            <td>&#08;</td>
            <td>backspace</td>
        </tr>
        <tr>
            <td>9</td>
            <td>9</td>
            <td>011</td>
            <td>HT</td>
            <td>&#09;</td>
            <td>horizontal tab</td>
        </tr>
        <tr>
            <td>10</td>
            <td>A</td>
            <td>012</td>
            <td>LF</td>
            <td>&#10;</td>
            <td>line feed</td>
        </tr>
        <tr>
            <td>11</td>
            <td>B</td>
            <td>013</td>
            <td>VT</td>
            <td>&#11;</td>
            <td>vertical tab</td>
        </tr>
        <tr>
            <td>12</td>
            <td>C</td>
            <td>014</td>
            <td>FF</td>
            <td>&#12;</td>
            <td>form feed</td>
        </tr>
        <tr>
            <td>13</td>
            <td>D</td>
            <td>015</td>
            <td>CR</td>
            <td>&#13;</td>
            <td>carriage return</td>
        </tr>
        <tr>
            <td>14</td>
            <td>E</td>
            <td>016</td>
            <td>SO</td>
            <td>&#14;</td>
            <td>shift out</td>
        </tr>
        <tr>
            <td>15</td>
            <td>F</td>
            <td>017</td>
            <td>SI</td>
            <td>&#15;</td>
            <td>shift in</td>
        </tr>
        <tr>
            <td>16</td>
            <td>10</td>
            <td>020</td>
            <td>DLE</td>
            <td>&#16;</td>
            <td>data link escape</td>
        </tr>
        <tr>
            <td>17</td>
            <td>11</td>
            <td>021</td>
            <td>DC1</td>
            <td>&#17;</td>
            <td>device control 1</td>
        </tr>
        <tr>
            <td>18</td>
            <td>12</td>
            <td>022</td>
            <td>DC2</td>
            <td>&#18;</td>
            <td>device control 2</td>
        </tr>
        <tr>
            <td>19</td>
            <td>13</td>
            <td>023</td>
            <td>DC3</td>
            <td>&#19;</td>
            <td>device control 3</td>
        </tr>
        <tr>
            <td>20</td>
            <td>14</td>
            <td>024</td>
            <td>DC4</td>
            <td>&#20;</td>
            <td>device control 4</td>
        </tr>
        <tr>
            <td>21</td>
            <td>15</td>
            <td>025</td>
            <td>NAK</td>
            <td>&#21;</td>
            <td>negative acknowledge</td>
        </tr>
        <tr>
            <td>22</td>
            <td>16</td>
            <td>026</td>
            <td>SYN</td>
            <td>&#22;</td>
            <td>synchronize</td>
        </tr>
        <tr>
            <td>23</td>
            <td>17</td>
            <td>027</td>
            <td>ETB</td>
            <td>&#23;</td>
            <td>end transmission block</td>
        </tr>
        <tr>
            <td>24</td>
            <td>18</td>
            <td>030</td>
            <td>CAN</td>
            <td>&#24;</td>
            <td>cancel</td>
        </tr>
        <tr>
            <td>25</td>
            <td>19</td>
            <td>031</td>
            <td>EM</td>
            <td>&#25;</td>
            <td>end of medium</td>
        </tr>
        <tr>
            <td>26</td>
            <td>1A</td>
            <td>032</td>
            <td>SUB</td>
            <td>&#26;</td>
            <td>substitute</td>
        </tr>
        <tr>
            <td>27</td>
            <td>1B</td>
            <td>033</td>
            <td>ESC</td>
            <td>&#27;</td>
            <td>escape</td>
        </tr>
        <tr>
            <td>28</td>
            <td>1C</td>
            <td>034</td>
            <td>FS</td>
            <td>&#28;</td>
            <td>file separator</td>
        </tr>
        <tr>
            <td>29</td>
            <td>1D</td>
            <td>035</td>
            <td>GS</td>
            <td>&#29;</td>
            <td>group separator</td>
        </tr>
        <tr>
            <td>30</td>
            <td>1E</td>
            <td>036</td>
            <td>RS</td>
            <td>&#30;</td>
            <td>record separator</td>
        </tr>
        <tr>
            <td>31</td>
            <td>1F</td>
            <td>037</td>
            <td>US</td>
            <td>&#31;</td>
            <td>unit separator</td>
        </tr>
        <tr>
            <td>32</td>
            <td>20</td>
            <td>040</td>
            <td>&nbsp;</td>
            <td>&#32;</td>
            <td>space</td>
        </tr>
        <tr>
            <td>33</td>
            <td>21</td>
            <td>041</td>
            <td>!</td>
            <td>&#33;</td>
            <td>exclamation mark</td>
        </tr>
        <tr>
            <td>34</td>
            <td>22</td>
            <td>042</td>
            <td>"</td>
            <td>&#34;</td>
            <td>quotation mark</td>
        </tr>
        <tr>
            <td>35</td>
            <td>23</td>
            <td>043</td>
            <td>#</td>
            <td>&#35;</td>
            <td>number sign</td>
        </tr>
        <tr>
            <td>36</td>
            <td>24</td>
            <td>044</td>
            <td>$</td>
            <td>&#36;</td>
            <td>dollar sign</td>
        </tr>
        <tr>
            <td>37</td>
            <td>25</td>
            <td>045</td>
            <td>%</td>
            <td>&#37;</td>
            <td>percent sign</td>
        </tr>
        <tr>
            <td>38</td>
            <td>26</td>
            <td>046</td>
            <td>&amp;</td>
            <td>&#38;</td>
            <td>ampersand</td>
        </tr>
        <tr>
            <td>39</td>
            <td>27</td>
            <td>047</td>
            <td>'</td>
            <td>&#39;</td>
            <td>apostrophe</td>
        </tr>
        <tr>
            <td>40</td>
            <td>28</td>
            <td>050</td>
            <td>(</td>
            <td>&#40;</td>
            <td>left parenthesis</td>
        </tr>
        <tr>
            <td>41</td>
            <td>29</td>
            <td>051</td>
            <td>)</td>
            <td>&#41;</td>
            <td>right parenthesis</td>
        </tr>
        <tr>
            <td>42</td>
            <td>2A</td>
            <td>052</td>
            <td>*</td>
            <td>&#42;</td>
            <td>asterisk</td>
        </tr>
        <tr>
            <td>43</td>
            <td>2B</td>
            <td>053</td>
            <td>+</td>
            <td>&#43;</td>
            <td>plus sign</td>
        </tr>
        <tr>
            <td>44</td>
            <td>2C</td>
            <td>054</td>
            <td>,</td>
            <td>&#44;</td>
            <td>comma</td>
        </tr>
        <tr>
            <td>45</td>
            <td>2D</td>
            <td>055</td>
            <td>-</td>
            <td>&#45;</td>
            <td>hyphen</td>
        </tr>
        <tr>
            <td>46</td>
            <td>2E</td>
            <td>056</td>
            <td>.</td>
            <td>&#46;</td>
            <td>period</td>
        </tr>
        <tr>
            <td>47</td>
            <td>2F</td>
            <td>057</td>
            <td>/</td>
            <td>&#47;</td>
            <td>slash</td>
        </tr>
        <tr>
            <td>48</td>
            <td>30</td>
            <td>060</td>
            <td>0</td>
            <td>&#48;</td>
            <td>digit 0</td>
        </tr>
        <tr>
            <td>49</td>
            <td>31</td>
            <td>061</td>
            <td>1</td>
            <td>&#49;</td>
            <td>digit 1</td>
        </tr>
        <tr>
            <td>50</td>
            <td>32</td>
            <td>062</td>
            <td>2</td>
            <td>&#50;</td>
            <td>digit 2</td>
        </tr>
        <tr>
            <td>51</td>
            <td>33</td>
            <td>063</td>
            <td>3</td>
            <td>&#51;</td>
            <td>digit 3</td>
        </tr>
        <tr>
            <td>52</td>
            <td>34</td>
            <td>064</td>
            <td>4</td>
            <td>&#52;</td>
            <td>digit 4</td>
        </tr>
        <tr>
            <td>53</td>
            <td>35</td>
            <td>065</td>
            <td>5</td>
            <td>&#53;</td>
            <td>digit 5</td>
        </tr>
        <tr>
            <td>54</td>
            <td>36</td>
            <td>066</td>
            <td>6</td>
            <td>&#54;</td>
            <td>digit 6</td>
        </tr>
        <tr>
            <td>55</td>
            <td>37</td>
            <td>067</td>
            <td>7</td>
            <td>&#55;</td>
            <td>digit 7</td>
        </tr>
        <tr>
            <td>56</td>
            <td>38</td>
            <td>070</td>
            <td>8</td>
            <td>&#56;</td>
            <td>digit 8</td>
        </tr>
        <tr>
            <td>57</td>
            <td>39</td>
            <td>071</td>
            <td>9</td>
            <td>&#57;</td>
            <td>digit 9</td>
        </tr>
        <tr>
            <td>58</td>
            <td>3A</td>
            <td>072</td>
            <td>:</td>
            <td>&#58;</td>
            <td>colon</td>
        </tr>
        <tr>
            <td>59</td>
            <td>3B</td>
            <td>073</td>
            <td>;</td>
            <td>&#59;</td>
            <td>semicolon</td>
        </tr>
        <tr>
            <td>60</td>
            <td>3C</td>
            <td>074</td>
            <td>&lt;</td>
            <td>&#60;</td>
            <td>less-than</td>
        </tr>
        <tr>
            <td>61</td>
            <td>3D</td>
            <td>075</td>
            <td>=</td>
            <td>&#61;</td>
            <td>equals-to</td>
        </tr>
        <tr>
            <td>62</td>
            <td>3E</td>
            <td>076</td>
            <td>&gt;</td>
            <td>&#62;</td>
            <td>greater-than</td>
        </tr>
        <tr>
            <td>63</td>
            <td>3F</td>
            <td>077</td>
            <td>?</td>
            <td>&#63;</td>
            <td>question mark</td>
        </tr>
        <tr>
            <td>64</td>
            <td>40</td>
            <td>100</td>
            <td>@</td>
            <td>&#64;</td>
            <td>at sign</td>
        </tr>
        <tr>
            <td>65</td>
            <td>41</td>
            <td>101</td>
            <td>A</td>
            <td>&#65;</td>
            <td>uppercase A</td>
        </tr>
        <tr>
            <td>66</td>
            <td>42</td>
            <td>102</td>
            <td>B</td>
            <td>&#66;</td>
            <td>uppercase B</td>
        </tr>
        <tr>
            <td>67</td>
            <td>43</td>
            <td>103</td>
            <td>C</td>
            <td>&#67;</td>
            <td>uppercase C</td>
        </tr>
        <tr>
            <td>68</td>
            <td>44</td>
            <td>104</td>
            <td>D</td>
            <td>&#68;</td>
            <td>uppercase D</td>
        </tr>
        <tr>
            <td>69</td>
            <td>45</td>
            <td>105</td>
            <td>E</td>
            <td>&#69;</td>
            <td>uppercase E</td>
        </tr>
        <tr>
            <td>70</td>
            <td>46</td>
            <td>106</td>
            <td>F</td>
            <td>&#70;</td>
            <td>uppercase F</td>
        </tr>
        <tr>
            <td>71</td>
            <td>47</td>
            <td>107</td>
            <td>G</td>
            <td>&#71;</td>
            <td>uppercase G</td>
        </tr>
        <tr>
            <td>72</td>
            <td>48</td>
            <td>110</td>
            <td>H</td>
            <td>&#72;</td>
            <td>uppercase H</td>
        </tr>
        <tr>
            <td>73</td>
            <td>49</td>
            <td>111</td>
            <td>I</td>
            <td>&#73;</td>
            <td>uppercase I</td>
        </tr>
        <tr>
            <td>74</td>
            <td>4A</td>
            <td>112</td>
            <td>J</td>
            <td>&#74;</td>
            <td>uppercase J</td>
        </tr>
        <tr>
            <td>75</td>
            <td>4B</td>
            <td>113</td>
            <td>K</td>
            <td>&#75;</td>
            <td>uppercase K</td>
        </tr>
        <tr>
            <td>76</td>
            <td>4C</td>
            <td>114</td>
            <td>L</td>
            <td>&#76;</td>
            <td>uppercase L</td>
        </tr>
        <tr>
            <td>77</td>
            <td>4D</td>
            <td>115</td>
            <td>M</td>
            <td>&#77;</td>
            <td>uppercase M</td>
        </tr>
        <tr>
            <td>78</td>
            <td>4E</td>
            <td>116</td>
            <td>N</td>
            <td>&#78;</td>
            <td>uppercase N</td>
        </tr>
        <tr>
            <td>79</td>
            <td>4F</td>
            <td>117</td>
            <td>O</td>
            <td>&#79;</td>
            <td>uppercase O</td>
        </tr>
        <tr>
            <td>80</td>
            <td>50</td>
            <td>120</td>
            <td>P</td>
            <td>&#80;</td>
            <td>uppercase P</td>
        </tr>
        <tr>
            <td>81</td>
            <td>51</td>
            <td>121</td>
            <td>Q</td>
            <td>&#81;</td>
            <td>uppercase Q</td>
        </tr>
        <tr>
            <td>81</td>
            <td>52</td>
            <td>122</td>
            <td>R</td>
            <td>&#82;</td>
            <td>uppercase R</td>
        </tr>
        <tr>
            <td>83</td>
            <td>53</td>
            <td>123</td>
            <td>S</td>
            <td>&#83;</td>
            <td>uppercase S</td>
        </tr>
        <tr>
            <td>84</td>
            <td>54</td>
            <td>124</td>
            <td>T</td>
            <td>&#84;</td>
            <td>uppercase T</td>
        </tr>
        <tr>
            <td>85</td>
            <td>55</td>
            <td>125</td>
            <td>U</td>
            <td>&#85;</td>
            <td>uppercase U</td>
        </tr>
        <tr>
            <td>86</td>
            <td>56</td>
            <td>126</td>
            <td>V</td>
            <td>&#86;</td>
            <td>uppercase V</td>
        </tr>
        <tr>
            <td>87</td>
            <td>57</td>
            <td>127</td>
            <td>W</td>
            <td>&#87;</td>
            <td>uppercase W</td>
        </tr>
        <tr>
            <td>88</td>
            <td>58</td>
            <td>130</td>
            <td>X</td>
            <td>&#88;</td>
            <td>uppercase X</td>
        </tr>
        <tr>
            <td>89</td>
            <td>59</td>
            <td>131</td>
            <td>Y</td>
            <td>&#89;</td>
            <td>uppercase Y</td>
        </tr>
        <tr>
            <td>90</td>
            <td>5A</td>
            <td>132</td>
            <td>Z</td>
            <td>&#90;</td>
            <td>uppercase Z</td>
        </tr>
        <tr>
            <td>91</td>
            <td>5B</td>
            <td>133</td>
            <td>[</td>
            <td>&#91;</td>
            <td>left square bracket</td>
        </tr>
        <tr>
            <td>92</td>
            <td>5C</td>
            <td>134</td>
            <td>"</td>
            <td>&#92;</td>
            <td>backslash</td>
        </tr>
        <tr>
            <td>93</td>
            <td>5D</td>
            <td>135</td>
            <td>]</td>
            <td>&#93;</td>
            <td>right square bracket</td>
        </tr>
        <tr>
            <td>94</td>
            <td>5E</td>
            <td>136</td>
            <td>^</td>
            <td>&#94;</td>
            <td>caret</td>
        </tr>
        <tr>
            <td>95</td>
            <td>5F</td>
            <td>137</td>
            <td>_</td>
            <td>&#95;</td>
            <td>underscore</td>
        </tr>
        <tr>
            <td>96</td>
            <td>60</td>
            <td>140</td>
            <td>`</td>
            <td>&#96;</td>
            <td>grave accent</td>
        </tr>
        <tr>
            <td>97</td>
            <td>61</td>
            <td>141</td>
            <td>a</td>
            <td>&#97;</td>
            <td>lowercase a</td>
        </tr>
        <tr>
            <td>98</td>
            <td>62</td>
            <td>142</td>
            <td>b</td>
            <td>&#98;</td>
            <td>lowercase b</td>
        </tr>
        <tr>
            <td>99</td>
            <td>63</td>
            <td>143</td>
            <td>c</td>
            <td>&#99;</td>
            <td>lowercase c</td>
        </tr>
        <tr>
            <td>100</td>
            <td>64</td>
            <td>144</td>
            <td>d</td>
            <td>&#100;</td>
            <td>lowercase d</td>
        </tr>
        <tr>
            <td>101</td>
            <td>65</td>
            <td>145</td>
            <td>e</td>
            <td>&#101;</td>
            <td>lowercase e</td>
        </tr>
        <tr>
            <td>102</td>
            <td>66</td>
            <td>146</td>
            <td>f</td>
            <td>&#102;</td>
            <td>lowercase f</td>
        </tr>
        <tr>
            <td>103</td>
            <td>67</td>
            <td>147</td>
            <td>g</td>
            <td>&#103;</td>
            <td>lowercase g</td>
        </tr>
        <tr>
            <td>104</td>
            <td>68</td>
            <td>150</td>
            <td>h</td>
            <td>&#104;</td>
            <td>lowercase h</td>
        </tr>
        <tr>
            <td>105</td>
            <td>69</td>
            <td>151</td>
            <td>i</td>
            <td>&#105;</td>
            <td>lowercase i</td>
        </tr>
        <tr>
            <td>106</td>
            <td>6A</td>
            <td>152</td>
            <td>j</td>
            <td>&#106;</td>
            <td>lowercase j</td>
        </tr>
        <tr>
            <td>107</td>
            <td>6B</td>
            <td>153</td>
            <td>k</td>
            <td>&#107;</td>
            <td>lowercase k</td>
        </tr>
        <tr>
            <td>108</td>
            <td>6C</td>
            <td>154</td>
            <td>l</td>
            <td>&#108;</td>
            <td>lowercase l</td>
        </tr>
        <tr>
            <td>109</td>
            <td>6D</td>
            <td>155</td>
            <td>m</td>
            <td>&#109;</td>
            <td>lowercase m</td>
        </tr>
        <tr>
            <td>110</td>
            <td>6E</td>
            <td>156</td>
            <td>n</td>
            <td>&#110;</td>
            <td>lowercase n</td>
        </tr>
        <tr>
            <td>111</td>
            <td>6F</td>
            <td>157</td>
            <td>o</td>
            <td>&#111;</td>
            <td>lowercase o</td>
        </tr>
        <tr>
            <td>112</td>
            <td>70</td>
            <td>160</td>
            <td>p</td>
            <td>&#112;</td>
            <td>lowercase p</td>
        </tr>
        <tr>
            <td>113</td>
            <td>71</td>
            <td>161</td>
            <td>q</td>
            <td>&#113;</td>
            <td>lowercase q</td>
        </tr>
        <tr>
            <td>114</td>
            <td>72</td>
            <td>162</td>
            <td>r</td>
            <td>&#114;</td>
            <td>lowercase r</td>
        </tr>
        <tr>
            <td>115</td>
            <td>73</td>
            <td>163</td>
            <td>s</td>
            <td>&#115;</td>
            <td>lowercase s</td>
        </tr>
        <tr>
            <td>116</td>
            <td>74</td>
            <td>164</td>
            <td>t</td>
            <td>&#116;</td>
            <td>lowercase t</td>
        </tr>
        <tr>
            <td>117</td>
            <td>75</td>
            <td>165</td>
            <td>u</td>
            <td>&#117;</td>
            <td>lowercase u</td>
        </tr>
        <tr>
            <td>118</td>
            <td>76</td>
            <td>166</td>
            <td>v</td>
            <td>&#118;</td>
            <td>lowercase v</td>
        </tr>
        <tr>
            <td>119</td>
            <td>77</td>
            <td>167</td>
            <td>w</td>
            <td>&#119;</td>
            <td>lowercase w</td>
        </tr>
        <tr>
            <td>120</td>
            <td>78</td>
            <td>170</td>
            <td>x</td>
            <td>&#120;</td>
            <td>lowercase x</td>
        </tr>
        <tr>
            <td>121</td>
            <td>79</td>
            <td>171</td>
            <td>y</td>
            <td>&#121;</td>
            <td>lowercase y</td>
        </tr>
        <tr>
            <td>122</td>
            <td>7A</td>
            <td>172</td>
            <td>z</td>
            <td>&#122;</td>
            <td>lowercase z</td>
        </tr>
        <tr>
            <td>123</td>
            <td>7B</td>
            <td>173</td>
            <td>{</td>
            <td>&#123;</td>
            <td>left curly brace</td>
        </tr>
        <tr>
            <td>124</td>
            <td>7C</td>
            <td>174</td>
            <td>|</td>
            <td>&#124;</td>
            <td>vertical bar</td>
        </tr>
        <tr>
            <td>125</td>
            <td>7D</td>
            <td>175</td>
            <td>}</td>
            <td>&#125;</td>
            <td>right curly brace</td>
        </tr>
        <tr>
            <td>126</td>
            <td>7E</td>
            <td>176</td>
            <td>~</td>
            <td>&#126;</td>
            <td>tilde</td>
        </tr>
        <tr>
            <td>127</td>
            <td>7F</td>
            <td>177</td>
            <td>DEL</td>
            <td>&#127;</td>
            <td>delete (rubout)</td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/mstar/aggbug/295548.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2009-09-18 10:52 <a href="http://www.blogjava.net/mstar/archive/2009/09/18/295548.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Don't trust any library that doesn't have a test suite</title><link>http://www.blogjava.net/mstar/archive/2008/10/04/232276.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Fri, 03 Oct 2008 16:49:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2008/10/04/232276.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/232276.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2008/10/04/232276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/232276.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/232276.html</trackback:ping><description><![CDATA[
		<div style="width:425px;text-align:left" id="__ss_93987">
				<a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/jeresig/building-a-javascript-library?type=powerpoint" title="Building a JavaScript Library">Building a JavaScript Library</a>
				<object style="margin:0px" width="425" height="355">
						<param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=building-a-javascript-library2560&amp;stripped_title=building-a-javascript-library" />
						<param name="allowFullScreen" value="true" />
						<param name="allowScriptAccess" value="always" />
						<embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=building-a-javascript-library2560&amp;stripped_title=building-a-javascript-library" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355">
						</embed>
				</object>
				<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View SlideShare <a style="text-decoration:underline;" href="http://www.slideshare.net/jeresig/building-a-javascript-library?type=powerpoint" title="View Building a JavaScript Library on SlideShare">presentation</a> or <a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint">Upload</a> your own. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/firefox">firefox</a><a style="text-decoration:underline;" href="http://slideshare.net/tag/library">library</a>)</div>
		</div>
<img src ="http://www.blogjava.net/mstar/aggbug/232276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2008-10-04 00:49 <a href="http://www.blogjava.net/mstar/archive/2008/10/04/232276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Chart的开源库</title><link>http://www.blogjava.net/mstar/archive/2008/06/10/OpenSource_Charting_Lib.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Tue, 10 Jun 2008 06:26:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2008/06/10/OpenSource_Charting_Lib.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/206920.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2008/06/10/OpenSource_Charting_Lib.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/206920.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/206920.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 收集的一些用于绘制图表的库.&nbsp;&nbsp;<a href='http://www.blogjava.net/mstar/archive/2008/06/10/OpenSource_Charting_Lib.html'>阅读全文</a><img src ="http://www.blogjava.net/mstar/aggbug/206920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2008-06-10 14:26 <a href="http://www.blogjava.net/mstar/archive/2008/06/10/OpenSource_Charting_Lib.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Regression testing </title><link>http://www.blogjava.net/mstar/archive/2007/07/31/133663.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Tue, 31 Jul 2007 14:27:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2007/07/31/133663.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/133663.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2007/07/31/133663.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/133663.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/133663.html</trackback:ping><description><![CDATA[Regression testing is any type of software testing which seeks to uncover regression bugs. Regression bugs occur whenever software functionality that previously worked as desired stops working or no longer works in the same way that was previously planned. Typically regression bugs occur as an unintended consequence of program changes. <br /><br />Common methods of regression testing include re-running previously run tests and checking whether previously-fixed faults have reemerged. <br /><br />Experience has shown that as software is developed, this kind of reemergence of faults is quite common. Sometimes it occurs because a fix gets lost through poor revision control practices (or simple human error in revision control), but just as often a fix for a problem will be "fragile" - if some other change is made to the program, the fix no longer works. Finally, it has often been the case that when some feature is redesigned, the same mistakes will be made in the redesign that were made in the original implementation of the feature. <br /><br />Therefore, in most software development situations it is considered good practice that when a bug is located and fixed, a test that exposes the bug is recorded and regularly retested after subsequent changes to the program. Although this may be done through manual testing procedures using programming techniques, it is often done using automated testing tools, frequently, a 'test suite', software tools that allows the testing environment to execute all the regression test cases automatically; some projects even set up automated systems to automatically re-run all regression tests at specified intervals and report any regressions. Common strategies are to run such a system after every successful compile (for small projects), every night, or once a week. <br /><br />Regression testing is an integral part of the extreme programming software development methodology. In this methodology, design documents are replaced by extensive, repeatable, and automated testing of the entire software package at every stage in the software development cycle.<img src ="http://www.blogjava.net/mstar/aggbug/133663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2007-07-31 22:27 <a href="http://www.blogjava.net/mstar/archive/2007/07/31/133663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>什么是BNF范式,什么又是EBNF范式?</title><link>http://www.blogjava.net/mstar/archive/2007/07/16/130577.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Mon, 16 Jul 2007 06:55:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2007/07/16/130577.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/130577.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2007/07/16/130577.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/130577.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/130577.html</trackback:ping><description><![CDATA[
		<h4 style="margin-bottom: 0px;" class="TextColor1" id="subjcns!838BE88BC5E4CDA3!778">什么是BNF范式,什么又是EBNF范式?</h4>
		<div>
				<p>
						<font face="黑体" size="4">巴科斯范式及其扩展<br /></font>
						<font face="Arial Black">BNF &amp; Augmented BNF</font>    <br />      <br />  <strong><font color="#dd55c2">   什么是巴科斯范式？ <br /></font></strong>   <br />　　巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。<br />　　现在，几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。    <br />      <br />     <font color="#dd55c2"><strong>巴科斯范式的内容</strong></font>   
</p>
				<p>在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。<br />在双引号外的字（有可能有下划线）代表着语法部分。 <br />尖括号( &lt; &gt; )内包含的为必选项。 <br />方括号( [ ] )内包含的为可选项。 <br />大括号( { } )内包含的为可重复0至无数次的项。 <br />竖线( | )表示在其左右两边任选一项，相当于"OR"的意思。 <br />::= 是“被定义为”的意思。 <br />   <br />     <strong><font color="#dd55c2">巴科斯范式示例</font></strong>   
</p>
				<p>         这是用BNF来定义的Java语言中的For语句的实例： 
</p>
				<table bgcolor="#97d1e0" border="1" width="100%">
						<tbody>
								<tr>
										<td>FOR_STATEMENT ::= <br />      "for" "(" ( variable_declaration | <br />  ( expression ";" ) | ";" ) <br />      [ expression ] ";" <br />      [ expression ] ";" <br />      ")" statement </td>
								</tr>
						</tbody>
				</table>
				<p>         这是Oracle packages的BNF定义： 
</p>
				<table bgcolor="#97d1e0" border="1" width="100%">
						<tbody>
								<tr>
										<td>package_body ::= "package" package_name "is" <br />package_obj_body { package_obj_body } <br />[ "begin" seq_of_statements ] <br />"end" [ package_name ] ";" 
<p></p><p>package_obj_body ::= variable_declaration <br />| subtype_declaration <br />| cursor_declaration <br />| cursor_body <br />| exception_declaration <br />| record_declaration <br />| plsql_table_declaration <br />| procedure_body <br />| function_body 
</p><p>procedure_body ::= "procedure" procedure_name <br />[ "(" argument { "," argument } ")" ] <br />"return" return_type <br />"is" <br />[ "declare" declare_spec ";" { declare_spec ";" } ] <br />"begin" <br />seq_of_statements <br />[ "exception" exception_handler { exception_handler } ] <br />"end" [ procedure_name ] ";" 
</p><p>statement ::= comment <br />| assignment_statement <br />| exit_statement <br />| goto_statement <br />| if_statement <br />| loop_statement <br />| null_statement <br />| raise_statement <br />| return_statement <br />| sql_statement <br />| plsql_block </p></td>
								</tr>
						</tbody>
				</table>
				<p>    这是用BNF来定义的BNF本身的例子： 
</p>
				<table bgcolor="#97d1e0" border="1" width="100%">
						<tbody>
								<tr>
										<td>
												<p>syntax     ::=  { rule }<br />rule       ::=  identifier  "::="  expression<br />expression ::=  term { "|" term }<br />term       ::=  factor { factor }<br />factor     ::=  identifier |<br />                quoted_symbol |<br />                "("  expression  ")" |<br />                "["  expression  "]" |<br />                "{"  expression  "}"<br />identifier ::=  letter { letter | digit }<br />quoted_symbol ::= """ { any_character } """</p>
										</td>
								</tr>
						</tbody>
				</table>
				<p>     <br />     <strong><font color="#dd55c2">扩展的巴科斯范式 Augmented BNF</font></strong>  <br />  <br />　　RFC2234 定义了扩展的巴科斯范式(ABNF)。近年来在Internet的定义中ABNF被广泛使用。ABNF做了更多的改进，比如说，在ABNF中，尖括号不再需要。 </p>
		</div>
		<div> </div>
		<div> </div>
		<div>什么是EBNF?</div>
		<div>
				<span lang="zh-cn">基本</span> (EBNF) <span lang="zh-cn">定义</span><span lang="zh-cn">有关</span> EBNF <span lang="zh-cn">协定的详细情况，可以参看 </span><a href="http://www.instantweb.com/foldoc/foldoc.cgi?Backus-Naur+Form"><u><font color="#800080">Computing Dictionary</font></u></a>. <br /><span lang="zh-cn">这里是要点一览</span>: 
<table border="2"><tbody><tr><td bgcolor="#efffff"><pre>  "..." : <font face="Courier New"><span lang="zh-cn">术语符号</span><br />  [...] : <span lang="zh-cn">选项:</span><span lang="zh-cn">最多出现一次</span><br />  {...} : <span lang="zh-cn">重复项</span>: <span lang="zh-cn">任意次数，包括 0 次</span><br />  (...) : <span lang="zh-cn">分组</span><br />    |   : <span lang="zh-cn">并列选项，只能选一个</span><br /><span lang="zh-cn"><i>斜体字</i></span>: <span lang="zh-cn">参数，在其它地方有解释</span></font></pre></td></tr></tbody></table></div>
		<div> </div>
		<div>
				<a href="http://estone.nease.net/sgf/sgf4.html#2">http://estone.nease.net/sgf/sgf4.html#2</a> 里会给出一个EBNF在棋牌类的应用.</div>
		<div> </div>
		<div>--------------------------------------------------------------------------------------------</div>
		<div> </div>
		<div>&lt;BNF&gt;::=     &lt;非终结符&gt;::=&lt;或项列表&gt;   <br />  &lt;或项列表&gt;::=     &lt;项&gt;     |     &lt;或项列表&gt;|&lt;项&gt;   <br />  &lt;项&gt;::=     &lt;非终结符&gt;     |     &lt;终结符&gt;   |   &lt;项&gt;&lt;非终结符&gt;   |   &lt;项&gt;&lt;终结符&gt;   <br />  &lt;非终结符&gt;::=       &lt;非终结符名&gt;   <br />    <br />  （   但愿能有人看得懂:-)   )   <br />    <br />  BNF就是巴科特·瑙尔式的缩写，   <br />  在计算机的史前时代（1950s)，曾有一位大师，他奠定了现代计算机的基础   <br />  在他老人家的诸多成就之中，包括了对形式语言的研究，和发明了高级语言：   <br />  FORTRAN。   <br />  为了纪念他老人家，我们把他提出的一套描述语言的方法叫做BNF   <br />    <br />  其实BNF很简单::=表示定义   |表示或   尖括号(&lt;&gt;)括起来的是非终结符   <br />  所谓非终结符就是语言中某些抽象的概念，终结符就是可以直接出现在   <br />  语言中的符号   <br />    <br />  比如：C语言的声明语句可以用BNF这样描述：   <br />  &lt;声明语句&gt;   ::=   &lt;类型&gt;&lt;标识符&gt;;   |   &lt;类型&gt;&lt;标识符&gt;[&lt;数字&gt;];   <br />  这一句中&lt;声明语句&gt;这个非终结符被定义成了两种形式（上面用|隔开的两部分）   <br />  在这里引入了三个终结符:   分号;     左右方括号[   ]   <br />    <br />  &lt;类型&gt;   ::=   &lt;简单类型&gt;   |   &lt;指针类型&gt;   |   &lt;自定义类型&gt;   <br />  &lt;指针类型&gt;   ::=   &lt;简单类型&gt;   *   |   &lt;自定义类型&gt;   *   <br />  &lt;简单类型&gt;   ::=   int|char|double|float|long|short|void   <br />  &lt;自定义类型&gt;   ::=   enum&lt;标识符&gt;|struct&lt;标识符&gt;|union&lt;标识符&gt;|&lt;标识符&gt;   <br />  到这里就基本上把&lt;类型&gt;定义清楚了   <br />    <br />  &lt;数字&gt;   ::=   0X&lt;十六进制数字串&gt;   |   0&lt;八进制数字串&gt;   |   &lt;十进制数字串&gt;   <br />  &lt;十六进制数字串&gt;   ::=   &lt;十六进制数字&gt;   |   &lt;十六进制数字串&gt;&lt;十六进制数字&gt;     <br />  &lt;八进制数字串&gt;   ::=   &lt;八进制数字&gt;   |   &lt;八进制数字串&gt;&lt;八进制数字&gt;     <br />  &lt;十进制数字串&gt;   ::=   &lt;十进制数字&gt;   |   &lt;十进制数字串&gt;&lt;十进制数字&gt;     <br />  &lt;十六进制数字&gt;   ::=   &lt;十进制数字&gt;   |   A   |   B   |   C   |   D   |   E   |   F   <br />  &lt;十进制数字&gt;     ::=   &lt;八进制数字&gt;   |   8   |   9     <br />  &lt;八进制数字&gt;   ::=   0   |   1   |   2   |   3   |   4   |   5   |   6   |   7   <br />  到这里就把&lt;数字&gt;定义清楚了   <br />    <br />  &lt;标识符&gt;   ::=   &lt;字母&gt;   |   &lt;标识符&gt;   &lt;字母数字串&gt;   <br />  &lt;字母数字串&gt;   ::=   &lt;字母&gt;|&lt;十进制数字&gt;|&lt;字母数字串&gt;&lt;字母&gt;|&lt;字母数字串&gt;&lt;十进制数字&gt;     <br />  &lt;字母&gt;   ::=   _   |   &lt;大写字母&gt;   |   &lt;小写字母&gt;   <br />  &lt;小写字母&gt;   ::=   a|b|c|d|e|f|g|h|i|j   ……   （偷个懒）   <br />  &lt;大写字母&gt;   ::=   A|B|C|D|E|F|G|H|I|J   ……   <br />    <br />  到此为止整个声明语句就定义完了（就是说已经没有非终结符了），虽然看起来很   <br />  繁，但前面定义的各种非终结符都可以很容易的在别的地方重用比如，函数声明   <br />  可以定义成下面的样子：   <br />  &lt;函数声明语句&gt;   ::=   &lt;类型&gt;&lt;标识符&gt;(&lt;形参表&gt;);   <br />  &lt;形参表&gt;   ::=   &lt;类型&gt;&lt;标识符&gt;   |   &lt;形参表&gt;,&lt;形参表&gt;   <br />  只用两句就描述完了，所以BNF实际上比用自然语言要简练得多   <br />  （整个C语言只用一二百句就可以描述清楚）   <br />  而且相当的精确，不会有自然语言中那种模棱两可的表达   <br />  如果你对BNF比较敏感的话，会发现C里面的标识符不能由数字开头   <br />  而且在C里面下划线是被当做字母看待的（也就是说能用字母的地方   <br />  都可以用下划线）比如：（最好用老一点的编译器比如PDP11上的cc）   <br />  #define   ____   main   <br />  #define   ___   for   <br />  typedef   char*   _____;   <br />  int   (*______)(char   *,   ...)   =   printf;   //如果这一句不灵，就用下面这句   <br />  //#define   ______   printf                         //如果你用的是C++可以试一下下面这个   <br />  //int   (*______)(const   char   *,   ...)   =   printf;     <br />    <br />  ____(_,char*   __[])   //要是你编译器不吃，可以改成int   ____(int   _,char*__[])   <br />  {   <br />      ___(   ;   _   ;   _   --)   <br />      {   <br />            ______("%s\n",   __[_]);   <br />      }   <br />  }   <br />    <br />  另外，还有一种EBNF就没有正宗的BNF这么爽了，也有很多人在用，前面的   <br />  那些递归的定义被写成了{}   <br />    <br />  有一段时间PASCAL爱好者们喜欢用一个叫语法图的东西，画出来很难看，但   <br />  功能和BNF差不多，现在好象已经没多少人用了   <br />    <br />  近几年流行另一种东西：   <br />  digit   =   one   of   <br />                  0   1   2   3   4   5   6   7   8   9   <br />  这里非终结符digit用斜体表示，one   of是这种方法里定义的一个量词（常用斜黑体）   <br />  我不喜欢这个，因为我眼神不好，常常分不清那个是斜体，那个是正体   </div>
<img src ="http://www.blogjava.net/mstar/aggbug/130577.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2007-07-16 14:55 <a href="http://www.blogjava.net/mstar/archive/2007/07/16/130577.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>批量安装windows系统补丁</title><link>http://www.blogjava.net/mstar/archive/2007/05/24/119720.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Thu, 24 May 2007 06:54:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2007/05/24/119720.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/119720.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2007/05/24/119720.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/119720.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/119720.html</trackback:ping><description><![CDATA[非常喜欢像safe360这样的工具很贴心，一些维护系统安全的工作其实原来也可以手动去做的，但是有了safe360这些工作变得简单了。比如安装系统补丁。<br />用windows的人一定对这玩意不陌生 隔几天就会出一个但是你又不敢不按。<br />于是每次从装机器首先就是让windows自动更新，慢的要死而且要重启好几次才能全部安装好。<br />有了safe360速度快多了，所有下载的补丁文件都被放在hotfix的文件夹下。<br />但是safe360只能“下载并安装”如果你的系统没安装某个补丁，即使你手动把补丁copy到hotfix的文件夹下safe360也会从网络下载。。。。郁闷。<br />怎么才能批量安装这些补丁呢？难道要一个一个的去双击？<br />当然不会，<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">echo off<br />::关闭显示信息<br /><br />del list.log /q<br />::删除上次运行后留下的文件<br /><br />echo 正在检测已经的安装补丁<br /><br />for /f </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">delims=- tokens=2</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> %%i in ('dir *-kb*.exe /b /on') do REG QUERY </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\%%i</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> &gt;nul || dir /b *%%i*.exe &gt;&gt;list.log &amp;&amp; cls &amp;&amp; echo checking installed service pack<br />::从文件中取出一个补丁的名字，截取中间的补丁标号（如KB873339），到注册表查询这个是否已经安装了，没有就将其存放到list.log文件里<br /><br />cls<br />::清屏<br /><br />for /f </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">eol=o eol=O </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> %%j in (list.log) do echo installing service pack %%j  &amp;&amp; %%j /quiet /norestart<br />::从list.log文件中取出一个补丁的名字，利用参数（/quiet /norestart）进行安装无人安装<br /><br />cls<br /><br />echo these service pack are installed（list.log）：&amp; type list.log | more<br />::显示安装了的补丁的列表，more是用来防止补丁过多，分屏显示用的<br /><br />pause<br />::暂停让别人看列表<br /><br />del list1.log /q<br />::删除使用过的list1.log文件</span></div>将这段代码保存成xxx.bat并和补丁放在同一目录下，双击即可。<br /><img src ="http://www.blogjava.net/mstar/aggbug/119720.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2007-05-24 14:54 <a href="http://www.blogjava.net/mstar/archive/2007/05/24/119720.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZZ]挺有意思!</title><link>http://www.blogjava.net/mstar/archive/2007/05/11/116796.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Fri, 11 May 2007 08:58:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2007/05/11/116796.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/116796.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2007/05/11/116796.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/116796.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/116796.html</trackback:ping><description><![CDATA[        1.某人墓碑上刻着——感谢go-vern-ment为我解决了住房…… <br />　　 <br />　　2..如果没有毛片，中国的性教育简直就是一片空白！ <br />　　 <br />　　3.发现大家看A片时最急的是抢凳子，然后都不自觉地翘起二郎腿……（北科大） <br />　　 <br />　　4..金正日发表电视讲话说：“中秋节刚过，我爆个核弹算给大家拜个晚年……”（科苑星空） <br />　　 <br />　　5.如果上天再给我一次重生的机会，我一定要选择在唐朝，这样既不用学英语，也不 <br />用减肥 <br />　　 <br />　　6.处女和处男就好象木板和钉子：木板被钉了个窟窿就不是好板子了，而钉子钉过几个木板却不会有人在意……（天涯开心乐园） <br />　　 <br />　　7.老子开始学好了，替人画像！一人30，两人50，去痣，添酒窝不另收费~（饮水思源） <br />　　 <br />　　8.大便的离去，是马桶的召唤，还是肛门的不留？-_-#（天涯开心乐园） <br />　　 <br />　　9.张三丰的武功有多厉害，谁也不知道，因为当年和他交过手的都已经死绝了，所以，长寿才是最强武功！（饮水思源） <br />　　 <br />　　10.假如请一个人来帮我数钱，那就等于判了他终身监禁！（猫扑） <br />　　 <br />　　11.最近又胖了，打电话时一笑脸蛋子就碰能到挂机键……（北大未名） <br />　　 <br />　　12.通知：我宿舍最帅的要去洗澡了，他说将会有很多人去争相目睹他出浴后的样子，请途径澡堂上自习的同学绕行，避免交通拥堵……（北大未名） <br />　　 <br />　　13.时有风吹裙动，一光棍曰风动，一光棍曰裙动。吾进曰：是非风动，是非裙动，色者心动~（放鹤亭） <br />　　 <br />　　 <br />　　14.如果电脑是妓/女，那么U盘就是嫖/客~ <br />　　 <br />　　15.最后一个是颁奖仪式——（天涯管理论坛） <br />　　如果不是考虑政治因素，2006年诺贝尔文学奖应授予天涯诗会的赵丽华，因为她让世界人口最多的国家的所有人都变成了诗人…… <br />　　 <br />　　16.人家常说饭后吸烟不好，所以为了健康，我干脆就不吃饭了！（天涯开心乐园） <br /><br />　　 <br />　　17.北大学生亲切地管自己的校医院叫做“小西天”……（我爱南开） <br />　　 <br />　　18.一个农民拿着上/访材料走在大街上，走着走着就死了……（水木社区） <br />　　 <br />　　19.叹息点儿背——跑快了撵上穷，跑慢了被穷撵上！ <br />　　 <br />　　20.我真想亲口管你爷爷叫声：爹！（天涯开心乐园） <br />　　 <br />　　21.临渊羡实习，不如退而学点习！（日月光华） <br />　　 <br />　　22.你们尽管来践踏我吧，因为我就是一陀屎！（天涯大学校园） <br />　　 <br />　　23.从猴子到人需要一万年，从人到猴子只需一瓶酒~（猫扑） <br />　　 <br />　　24.心中有爱，看街上美女都是情人~（天涯开心乐园） <br />　　 <br />　　25.哪里有美女，哪里就有幻想；哪里有幻想，哪里就有流氓！（饮水思源） <br />　　 <br />　　26.怀揣两块，胸怀500万！（天涯开心乐园） <br />　　 <br />　　27..想做二奶并不是你的错，可来大学念书就是你的不对了！！（天涯开心乐园） <br /><br />　　 <br />　　28.“秋昆社”被取缔后，我们又成立了“心生研究会”，没想到还没挂牌就又给取缔了……（四见隐讳，五色土） <br />　　 <br />　　29.　我发现我已经成天使了，因为我天天上课都在听天书~（搜狐成都理工） <br />　　 <br />　　30.我的自行车左闸是虚拟的，右闸是随机的，车龙头是不可控的，车筐是奇异的，车座是非平稳的，车链与车身是无连接的，车胎是不饱和的，脚踏板与轴是互不相关的，挡泥板是可转置的，车锁与钥匙是相互独立的，整个自行车系统是离散的！（水木社区） <br /><br />　　 <br />　　31　.中国人比较注重隐讳。 <br />　　自孔夫子始，他老人家东游见两小儿便日；杜牧在《山行》中又教育我们要注意意境，比如“停车做爱枫林晚”；就连古人包办婚姻也强调说是“日”久生情。当然，数风流人物嘛，还得“坐地日行八万里”~（天涯开心乐园） <br />　　 <br />　　33.火车上，一个女孩靠在男孩肩膀上睡着了，这是一个故事；一个男孩靠在女孩肩膀上睡着了，这是一个事故；我就纳了闷，为什么我的生活中处处充斥着事故而不是故事！ <br />（北大未名） <br />　　 <br />　　34.我是一个贪玩的孩子，除了放风筝，什么也不会，我只知道无论如何我都不可以放手，我只知道我必须微笑着跑向前方……（济南大学虚拟社区） <br />　　 <br />　　35.让一个男人爱你也许不是难事，让一个男人娶你才是难事；让一个女人嫁你不是难事，让一个女人爱你才是难事……（水木社区） <br />　　 <br />　　36..我早早就跟女友立下毒誓：“以后我们孩子要是敢学生物，老子就打折他的狗腿！要是还敢到川大来学生物学，老子就直接扭断他的脖子！！！（蓝色星空） <br />　　 <br />　　37..当齐达内用少林铁头功撞向马特拉奇，同时马特拉奇以第一宇宙速度飞出去的时候，我深深为中华武学所折服！（天涯大学校园） <br />　　 <br />　　38.见到色狼，我也不怕不怕啦，我是女博士，不怕不怕不怕啦~~~（饮水思源） <br />　　 <br />　　39..北科大骗了我大学四年，所以我打算用北科大教我的知识骗社会一辈子！（北科大） <br />　　 <br />　　40..母氏系族人类住洞穴，父氏系族人类住高楼——这就是生/殖/器崇拜！（蓝色星空） <br />　　 <br />　　41.幸福掌握在自己的手里，而不是在别人的嘴里！（一见隐讳，水木社区）<img src ="http://www.blogjava.net/mstar/aggbug/116796.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2007-05-11 16:58 <a href="http://www.blogjava.net/mstar/archive/2007/05/11/116796.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>体内缺乏有益菌生物的表现</title><link>http://www.blogjava.net/mstar/archive/2006/06/13/52571.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Tue, 13 Jun 2006 12:48:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2006/06/13/52571.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/52571.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2006/06/13/52571.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/52571.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/52571.html</trackback:ping><description><![CDATA[今天看《Newton科学世界》，记录下面一段<br /><br />体内缺乏有益菌生物的最明显表现是经常的空腔溃疡、呼吸道或消化道中有不愉快的气味、粪便恶臭、长期便秘或腹泻、情绪容易失控，中医里所说的“上火”。<br /><br />看来，我又点缺乏有益菌生物。<img src ="http://www.blogjava.net/mstar/aggbug/52571.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2006-06-13 20:48 <a href="http://www.blogjava.net/mstar/archive/2006/06/13/52571.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>整天做办公室的我们要注意饮食啊</title><link>http://www.blogjava.net/mstar/archive/2006/06/05/50427.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Mon, 05 Jun 2006 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2006/06/05/50427.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/50427.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2006/06/05/50427.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/50427.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/50427.html</trackback:ping><description><![CDATA[摘至《齐国力教授养生保健知识讲座》<br /><br />国际会议上定出了6种保健品：第一绿茶；第二红葡萄酒；第三豆浆；第四酸奶；第五骨头汤；第六蘑菇汤。 <br />蘑菇能提高免疫功能。 <br />骨头汤里含琬胶，琬胶是延年益寿的。 <br />酸奶维持细菌平衡。 <br />绿茶里面含有茶坨酚，而茶坨酚是抗癌的。绿茶里含有氟，坚固牙齿，消灭虫牙，消灭菌斑。绿茶本身含茶甘宁，茶甘宁是提高血管韧性的，使血管不容易破裂。 <br />红葡萄的皮上有种东西，叫逆转醇，它还是抗氧化剂，常喝红葡萄酒的人不得心脏病。红葡萄酒还有个作用是能降血压、降血脂。 <br />  <br />大家知道，什么情况下心脏可以停搏，第一原来有心脏病的，第二有高血压的，第三跟食物有关系。什么食物呢？过大、过硬、过粘、过热的食物可以使心脏停搏，血脂高可以使心脏停搏。 <br />  <br />人体需要弱碱。什么是弱碱？蔬菜、水果。 <br />  <br />亚洲金字塔最好。什么叫金字塔？谷类、豆类、菜类。 <br />  <br />谷，人家在国际会议上从来不提大米、白面，也不提麦当劳。 <br />谷类里第一提的是老玉米，说是黄金作物。老玉米的来历，美国医学会作了个普查，发现原始的美国人、印第安人没一个高血压，没一个动脉硬化。原来是吃老玉米吃的。后来发现老玉米里含有大量的卵磷脂、亚油酸、谷物醇、VE，所以不发生高血压和动脉硬化。从此以后，美国就改了，美洲、非洲、欧洲、日本、香港、中国的广州，早上都吃玉米羹了。 <br />  <br />谷的第二是荞麦。为什么提荞麦？现在人都三高，即高血压、高血脂、高血糖。荞麦是三降，它降血压、降血脂、降血糖。吃荞麦的人不得胃肠道癌症，直肠癌、结肠癌都不得。我们坐办公室的人，得病有20%是直肠癌、结肠癌。 <br />  <br />谷的第三是薯类，白薯、红薯、山药、土豆。原来它三吸收：吸收水份，吸收脂肪、糖类，吸收毒素。吸收水份，润滑肠道，不得直肠癌、结肠癌。吸收脂肪、糖类，不得糖尿病。吸收毒素，不发生胃肠道炎症。 <br />  <br />谷里面还有燕麦，你要是血压高，一定要吃燕麦，燕麦粥、燕麦片。它能降血脂、降血压。能降甘油三脂，使你的血脂降下来。 <br />  <br />谷最后一个是小米！小米能除湿、健脾、镇静。 <br />  <br />大豆优质蛋白含量高，整个中国老百姓缺乏优质蛋白。大豆中起码有5种抗癌物质，特别是饴黄酮，它能预防、治疗乳腺癌，但只在大豆中才有。 <br />  <br />国际会议上第一个提的菜是胡萝卜，第一，它养粘膜，不容易感冒；第二，它健美；第三，它有点抗癌作用，而且对眼睛特别好。 <br />  <br />菜中第二提的是南瓜。为什么提南瓜呢？它刺激维生素细胞，产生胰岛素。所以常吃南瓜的人不得糖尿病。 <br />  <br />国际会议上还提到蕃茄，就是西红柿。不得子宫癌、卵巢癌、胰腺癌、膀胱癌、前列腺癌。西红柿炒鸡蛋最值钱了。 <br />  <br />还有大蒜。大蒜是抗癌之王。大蒜本身不抗癌，大蒜素才抗癌，而且是抗癌之王。必须先把它切成片，一片一片的薄片放在空气里15分钟，它跟氧气结合以后产生大蒜素。 <br />  <br />吃两口虾，这两口比你一肚子牛肉的蛋白都要多 <br />  <br />黑木耳(使血不粘稠，治疗心脏病) <br />  <br />花粉(美容，清除肠道杂物，维持体型。注意，要到正规大商店买花粉) <br />  <br />螺旋藻(百病全治，平衡饮食，补充能量；治百病如糖尿病、胃炎、肝炎。提高免疫力；抵抗各种辐射，预防白血病，对抗原子弹) <br />  <br />肉类(总原则：越小的东西越好，海洋的比陆地的好。虾米比小鱼好，大鱼比鸡肉好，鸡肉比羊肉好，羊肉比猪肉好，猪肉比牛肉好。最好的是跳蚤) <br />  <br />饭前喝汤，苗条健康；饭后喝汤，大腹便便。 <br />  <br />  <br />我们主张若头一天晚上没有睡好就应该午睡。午睡时间是午饭后半小时，而且最好睡一个小时，睡的太长对身体没有好处。不要盖大被子。晚上什么时间睡觉？我们从来不提倡早睡早起。早睡早起的概念要清楚，如果7点就睡，12点就起来瞎折腾，那没有用。我们主张10点到10:30睡觉，因为国际会议上定的，一小时到一个半小时进入深睡眠是最科学的，这就是12点到3点，这3小时雷打不动，什么也别干。这3小时是深睡眠。如果这3小时谁好了，第二天起来一定精神焕发。如果你4点以后睡觉，那是浅睡眠。会睡和不会睡不一样。我们主张12点至凌晨3点雷打不动，而且睡前洗个热水澡，水温40～50度，这会使睡眠质量高。<img src ="http://www.blogjava.net/mstar/aggbug/50427.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2006-06-05 10:06 <a href="http://www.blogjava.net/mstar/archive/2006/06/05/50427.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[备份]Windows操作系统常用网络命令使用技巧详解</title><link>http://www.blogjava.net/mstar/archive/2005/11/10/19094.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Thu, 10 Nov 2005 02:41:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/11/10/19094.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/19094.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/11/10/19094.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/19094.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/19094.html</trackback:ping><description><![CDATA[<STRONG>Windows操作系统常用网络命令使用技巧详解！！！<BR><BR></STRONG>我想大家不会忘记Windows是从简单的DOS字符界面发展过来的。虽然我们平时在使用Windows操作系统的时候，主要是对图形界面进行操作，但是DOS命令我们仍然非常有用，下面就让我看来看看这些命令到底有那些作用，同时学习如何使用这些命令的技巧。 
<P></P>
<P>　　一、Ping命令的使用技巧</P>
<P>　　Ping是个使用频率极高的实用程序，用于确定本地主机是否能与另一台主机交换（发送与接收）数据报。根据返回的信息，我们就可以推断TCP/IP参数是否设置得正确以及运行是否正常。需要注意的是：成功地与另一台主机进行一次或两次数&nbsp;据报交换并不表示TCP/IP配置就是正确的，我们必须执行大量的本地主机与远程主机的数据报交换，才能确信TCP/IP的正确性。</P>
<P>　　简单的说，Ping就是一个测试程序，如果Ping运行正确，我们大体上就可以排除网络访问层、网卡、MODEM的输入输出线路、电缆和路由器等存在的故障，从而减小了问题的范围。但由于可以自定义所发数据报的大小及无休止的高速发送，Ping也被某些别有用心的人作为DDOS（拒绝服务攻击）的工具，例如许多大型的网站就是被黑客利用数百台可以高速接入互联网的电脑连续发送大量Ping数据报而瘫痪的。</P>
<P>　　按照缺省设置，Windows上运行的Ping命令发送4个ICMP（网间控制报文协议）回送请求，每个32字节数据，如果一切正常，我们应能得到4个回送应答。&nbsp;Ping能够以毫秒为单位显示发送回送请求到返回回送应答之间的时间量。如果应答时间短，表示数据报不必通过太多的路由器或网络连接速度比较快。Ping还能显示TTL（Time&nbsp;To&nbsp;Live存在时间）值，我们可以通过TTL值推算一下数据包已经通过了多少个路由器：源地点TTL起始值（就是比返回TTL略大的一个2的乘方数）-返回时TTL值。例如，返回TTL值为119，那么可以推算数据报离开源地址的TTL起始值为128，而源地点到目标地点要通过9个路由器网段（128-119）；如果返回TTL值为246，TTL起始值就是256，源地点到目标地点要通过9个路由器网段。</P>
<P>　　1、通过Ping检测网络故障的典型次序</P>
<P>　　正常情况下，当我们使用Ping命令来查找问题所在或检验网络运行情况时，我们需要使用许多Ping命令，如果所有都运行正确，我们就可以相信基本的连通性和配置参数没有问题；如果某些Ping命令出现运行故障，它也可以指明到何处去查找问题。下面就给出一个典型的检测次序及对应的可能故障：</P>
<P>　　·ping&nbsp;127.0.0.1<BR>　　这个Ping命令被送到本地计算机的IP软件，该命令永不退出该计算机。如果没有做到这一点，就表示TCP/IP的安装或运行存在某些最基本的问题。</P>
<P>　　·ping&nbsp;本机IP<BR>　　这个命令被送到我们计算机所配置的IP地址，我们的计算机始终都应该对该Ping命令作出应答，如果没有，则表示本地配置或安装存在问题。出现此问题时，局域网用户请断开网络电缆，然后重新发送该命令。如果网线断开后本命令正确，则表示另一台计算机可能配置了相同的IP地址。</P>
<P>　　·ping&nbsp;局域网内其他IP<BR>　　这个命令应该离开我们的计算机，经过网卡及网络电缆到达其他计算机，再返回。收到回送应答表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答，那么表示子网掩码（进行子网分割时，将IP地址的网络部分与主机部分分开的代码）不正确或网卡配置错误或电缆系统有问题。</P>
<P>　　·ping&nbsp;网关IP<BR>　　这个命令如果应答正确，表示局域网中的网关路由器正在运行并能够作出应答。</P>
<P>　　·ping&nbsp;远程IP<BR>　　如果收到4个应答，表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet（但不排除ISP的DNS会有问题）。</P>
<P>　　·ping&nbsp;localhost<BR>　　localhost是个作系统的网络保留名，它是127.0.0.1的别名，每太计算机都应该能够将该名字转换成该地址。如果没有做到这一带内，则表示主机文件（/Windows/host）中存在问题。</P>
<P>　　·ping&nbsp;<IMG src="http://bbs.cfanclub.net/pic/url.gif" align=absMiddle border=0><A href="http://www.xxx.com/" target=_blank><FONT color=#000000>www.xxx.com</FONT></A>（<IMG src="http://bbs.cfanclub.net/pic/url.gif" align=absMiddle border=0><A href="http://www.yesky.com/" target=_blank><FONT color=#000000>www.yesky.com</FONT></A>&nbsp;天极网）<BR>　　对这个域名执行Ping&nbsp;<IMG src="http://bbs.cfanclub.net/pic/url.gif" align=absMiddle border=0><A href="http://www.xxx.com/" target=_blank><FONT color=#000000>www.xxx.com</FONT></A>&nbsp;地址，通常是通过DNS&nbsp;服务器&nbsp;如果这里出现故障，则表示DNS服务器的IP地址配置不正确或DNS服务器有故障（对于拨号上网用户，某些ISP已经不需要设置DNS服务器了）。顺便说一句：我们也可以利用该命令实现域名对IP地址的转换功能。</P>
<P>　　如果上面所列出的所有Ping命令都能正常运行，那么我们对自己的计算机进行本地和远程通信的功能基本上就可以放心了。但是，这些命令的成功并不表示我们所有的网络配置都没有问题，例如，某些子网掩码错误就可能无法用这些方法检测到。</P>
<P>　　2、Ping命令的常用参数选项</P>
<P>　　·ping&nbsp;IP&nbsp;–t<BR>　　连续对IP地址执行Ping命令，直到被用户以Ctrl+C中断。</P>
<P>　　·ping&nbsp;IP&nbsp;-l&nbsp;3000<BR>　　指定Ping命令中的数据长度为3000字节，而不是缺省的32字节。</P>
<P>　　·ping&nbsp;IP&nbsp;–n<BR>　　执行特定次数的Ping命令。</P>
<P>　　二、Netstat&nbsp;命令的使用技巧</P>
<P>　　Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据，一般用于检验本机各端口的网络连接情况。</P>
<P>　　如果我们的计算机有时候接受到的数据报会导致出错数据删除或故障，我们不必感到奇怪，TCP/IP可以容许这些类型的错误，并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比，或者它的数目正迅速增加，那么我们就应该使用Netstat查一查为什么会出现这些情况了。</P>
<P>　　1、netstat&nbsp;的一些常用选项</P>
<P>　　·netstat&nbsp;–s</P>
<P>　　本选项能够按照各个协议分别显示其统计数据。如果我们的应用程序（如Web浏览器）运行速度比较慢，或者不能显示Web页之类的数据，那么我们就可以用本选项来查看一下所显示的信息。我们需要仔细查看统计数据的各行，找到出错的关键字，进而确定问题所在。</P>
<P>　　·netstat&nbsp;–e</P>
<P>　　本选项用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量，也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量）。</P>
<P>　　·netstat&nbsp;–r</P>
<P>　　本选项可以显示关于路由表的信息，类似于后面所讲使用route&nbsp;print命令时看到的&nbsp;信息。除了显示有效路由外，还显示当前有效的连接。</P>
<P>　　·netstat&nbsp;–a</P>
<P>　　本选项显示一个所有的有效连接信息列表，包括已建立的连接（ESTABLISHED），也包括监听连接请求（LISTENING）的那些连接。</P>
<P>　　·netstat&nbsp;–n</P>
<P>　　显示所有已建立的有效连接。</P>
<P>　　下面是&nbsp;netstat&nbsp;的输出示例：</P>
<P>　　C:\&gt;netstat&nbsp;-e</P>
<P>　　Interface&nbsp;Statistics</P>
<P>　　ReceivedSent</P>
<P>　　Bytes399583794047224622</P>
<P>　　Unicast&nbsp;packets120099131015</P>
<P>　　Non-unicast&nbsp;packets7579544&nbsp;3823</P>
<P>　　Discards&nbsp;0&nbsp;0</P>
<P>　　Errors&nbsp;0&nbsp;0</P>
<P>　　Unknown&nbsp;protocols363054211</P>
<P>　　C:\&gt;netstat&nbsp;-a</P>
<P>　　Active&nbsp;Connections</P>
<P>　　Proto&nbsp;Local&nbsp;AddressForeign&nbsp;Address&nbsp;State</P>
<P>　　TCPCORP1:1572&nbsp;172.16.48.10:nbsession&nbsp;ESTABLISHED</P>
<P>　　TCPCORP1:1589&nbsp;172.16.48.10:nbsession&nbsp;ESTABLISHED</P>
<P>　　TCPCORP1:1606&nbsp;172.16.105.245:nbsession&nbsp;ESTABLISHED</P>
<P>　　TCPCORP1:1632&nbsp;172.16.48.213:nbsessionESTABLISHED</P>
<P>　　TCPCORP1:1659&nbsp;172.16.48.169:nbsessionESTABLISHED</P>
<P>　　TCPCORP1:1714&nbsp;172.16.48.203:nbsessionESTABLISHED</P>
<P>　　TCPCORP1:1719&nbsp;172.16.48.36:nbsession&nbsp;ESTABLISHED</P>
<P>　　TCPCORP1:1241&nbsp;172.16.48.101:nbsessionESTABLISHED</P>
<P>　　UDPCORP1:1025&nbsp;*:*</P>
<P>　　UDPCORP1:snmp&nbsp;*:*</P>
<P>　　UDPCORP1:nbname&nbsp;*:*</P>
<P>　　UDPCORP1:nbdatagram&nbsp;*:*</P>
<P>　　UDPCORP1:nbname&nbsp;*:*</P>
<P>　　UDPCORP1:nbdatagram&nbsp;*:*</P>
<P>　　C:\&gt;netstat&nbsp;-s</P>
<P>　　IP&nbsp;Statistics</P>
<P>　　Packets&nbsp;Received&nbsp;=&nbsp;5378528</P>
<P>　　Received&nbsp;Header&nbsp;Errors&nbsp;=&nbsp;738854</P>
<P>　　Received&nbsp;Address&nbsp;Errors=&nbsp;23150</P>
<P>　　Datagrams&nbsp;Forwarded=&nbsp;0</P>
<P>　　Unknown&nbsp;Protocols&nbsp;Received&nbsp;=&nbsp;0</P>
<P>　　Received&nbsp;Packets&nbsp;Discarded&nbsp;=&nbsp;0</P>
<P>　　Received&nbsp;Packets&nbsp;Delivered&nbsp;=&nbsp;4616524</P>
<P>　　Output&nbsp;Requests=&nbsp;132702</P>
<P>　　Routing&nbsp;Discards&nbsp;=&nbsp;157</P>
<P>　　Discarded&nbsp;Output&nbsp;Packets&nbsp;=&nbsp;0</P>
<P>　　Output&nbsp;Packet&nbsp;No&nbsp;Route&nbsp;=&nbsp;0</P>
<P>　　Reassembly&nbsp;Required=&nbsp;0</P>
<P>　　Reassembly&nbsp;Successful&nbsp;=&nbsp;0</P>
<P>　　Reassembly&nbsp;Failures&nbsp;=</P>
<P>　　Datagrams&nbsp;Successfully&nbsp;Fragmented&nbsp;=&nbsp;0</P>
<P>　　Datagrams&nbsp;Failing&nbsp;Fragmentation&nbsp;=&nbsp;0</P>
<P>　　Fragments&nbsp;Created&nbsp;=&nbsp;0</P>
<P>　　ICMP&nbsp;Statistics</P>
<P>　　ReceivedSent</P>
<P>　　Messages&nbsp;693&nbsp;4</P>
<P>　　Errors&nbsp;0&nbsp;0</P>
<P>　　Destination&nbsp;Unreachable685&nbsp;0</P>
<P>　　Time&nbsp;Exceeded0&nbsp;0</P>
<P>　　Parameter&nbsp;Problems&nbsp;0&nbsp;0</P>
<P>　　Source&nbsp;Quenches0&nbsp;0</P>
<P>　　Redirects0&nbsp;0</P>
<P>　　Echoes&nbsp;4&nbsp;0</P>
<P>　　Echo&nbsp;Replies&nbsp;0&nbsp;4</P>
<P>　　Timestamps&nbsp;0&nbsp;0</P>
<P>　　Timestamp&nbsp;Replies0&nbsp;0</P>
<P>　　Address&nbsp;Masks0&nbsp;0</P>
<P>　　Address&nbsp;Mask&nbsp;Replies&nbsp;0&nbsp;0</P>
<P>　　TCP&nbsp;Statistics</P>
<P>　　Active&nbsp;Opens&nbsp;=&nbsp;597</P>
<P>　　Passive&nbsp;Opens=&nbsp;135</P>
<P>　　Failed&nbsp;Connection&nbsp;Attempts&nbsp;=&nbsp;107</P>
<P>　　Reset&nbsp;Connections=&nbsp;91</P>
<P>　　Current&nbsp;Connections=&nbsp;8</P>
<P>　　Segments&nbsp;Received=&nbsp;106770</P>
<P>　　Segments&nbsp;Sent=&nbsp;118431</P>
<P>　　Segments&nbsp;Retransmitted&nbsp;=&nbsp;461</P>
<P>　　UDP&nbsp;Statistics</P>
<P>　　Datagrams&nbsp;Received&nbsp;=&nbsp;4157136</P>
<P>　　No&nbsp;Ports&nbsp;=&nbsp;351928</P>
<P>　　ReceiveErrors&nbsp;=&nbsp;2</P>
<P>　　Datagrams&nbsp;Sent&nbsp;=&nbsp;13809</P>
<P>　　2、Netstat的妙用</P>
<P>　　经常上网的人一般都使用ICQ的，不知道我们有没有被一些讨厌的人骚扰，想投诉却又不知从和下手？其实，我们只要知道对方的IP，就可以向他所属的ISP投诉了。但怎样才能通过ICQ知道对方的IP呢？如果对方在设置ICQ时选择了不显示IP地址，那我们是无法在信息栏中看到的。其实，我们只需要通过Netstat就可以很方便的做到这一点：当他通过ICQ或其他的工具与我们相连时（例如我们给他发一条ICQ信息或他给我们发一条信息），我们立刻在DOS&nbsp;命令提示符下输入netstat&nbsp;-n或netstat&nbsp;-a就可以看到对方上网时所用的IP或ISP域名了，甚至连所用Port都完全暴露了。</P>
<P>　　三、IPConfig命令的使用技巧</P>
<P>　　IPConfig实用程序和它的等价图形用户界面----Windows&nbsp;95/98中的WinIPCfg可用于显示当前的TCP/IP配置的设置值。这些信息一般用来检验人工配置的TCP/IP设置是否正确。但是，如果我们的计算机和所在的局域网使用了动态主机配置协议（DHCP），这个程序所显示的信息也许更加实用。这时，IPConfig可以让我们了解自己的计算机是否成功的租用到一个IP地址，如果租用到则可以了解它目前分配到的是什么地址。了解计算机当前的IP地址、子网掩码和缺省网关实际上是进行测试和故障分析的必要项目。</P>
<P>　　1、IPConfig最常用的选项</P>
<P>　　·ipconfig</P>
<P>　　当使用IPConfig时不带任何参数选项，那么它为每个已经配置了的接口显示IP地址、子网掩码和缺省网关值。</P>
<P>　　·ipconfig&nbsp;/all</P>
<P>　　当使用all选项时，IPConfig能为DNS和WINS服务器显示它已配置且所要使用的附加信息（如IP地址等），并且显示内置于本地网卡中的物理地址（MAC）。如果IP地址是从DHCP服务器租用的，IPConfig将显示DHCP服务器的IP地址和租用地址预计失效的日期。</P>
<P>　　·ipconfig&nbsp;/release和ipconfig&nbsp;/renew</P>
<P>　　这是两个附加选项，只能在向DHCP服务器租用其IP地址的计算机上起作用。如果我们输入ipconfig&nbsp;/release，那么所有接口的租用IP地址便重新交付给DHCP服务器（归还IP地址）。如果我们输入ipconfig&nbsp;/renew，那么本地计算机便设法与DHCP服务器取得联系，并租用一个IP地址。请注意，大多数情况下网卡将被重新赋予和以前所赋予的相同的IP地址。</P>
<P>　　下面的范例是&nbsp;ipconfig&nbsp;/all&nbsp;命令输出，该计算机配置成使用&nbsp;DHCP&nbsp;服务器动态配置&nbsp;TCP/IP，并使用&nbsp;WINS&nbsp;和&nbsp;DNS&nbsp;服务器解析名称。</P>
<P>　　Windows&nbsp;2000&nbsp;IP&nbsp;Configuration</P>
<P>　　Node&nbsp;Type..&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;Hybrid</P>
<P>　　IP&nbsp;Routing&nbsp;Enabled..&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;No</P>
<P>　　WINS&nbsp;Proxy&nbsp;Enabled..&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;No</P>
<P>　　Ethernet&nbsp;adapter&nbsp;Local&nbsp;Area&nbsp;Connection:</P>
<P>　　Host&nbsp;Name..&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;corp1.microsoft.com</P>
<P>　　DNS&nbsp;Servers&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;10.1.0.200</P>
<P>　　Description.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;3Com&nbsp;3C90x&nbsp;Ethernet&nbsp;Adapter</P>
<P>　　Physical&nbsp;Address.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;00-60-08-3E-46-07</P>
<P>　　DHCP&nbsp;Enabled..&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;Yes</P>
<P>　　Autoconfiguration&nbsp;Enabled.:&nbsp;Yes</P>
<P>　　IP&nbsp;Address.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;192.168.0.112</P>
<P>　　Subnet&nbsp;Mask.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;255.255.0.0</P>
<P>　　Default&nbsp;Gateway.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;192.168.0.1</P>
<P>　　DHCP&nbsp;Server.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;10.1.0.50</P>
<P>　　Primary&nbsp;WINS&nbsp;Server.&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;10.1.0.101</P>
<P>　　Secondary&nbsp;WINS&nbsp;Server.&nbsp;.&nbsp;.&nbsp;:&nbsp;10.1.0.102</P>
<P>　　Lease&nbsp;Obtained..&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;Wednesday,&nbsp;September&nbsp;02,&nbsp;1998&nbsp;10:32:13&nbsp;AM</P>
<P>　　Lease&nbsp;Expires..&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;.&nbsp;:&nbsp;Friday,&nbsp;September&nbsp;18,&nbsp;1998&nbsp;10:32:13&nbsp;AM</P>
<P>　　如果我们使用的是Windows&nbsp;95/98，那么我们应该更习惯使用winipcfg而不是ipconfig，因为它是一个图形用户界面，而且所显示的信息与ipconfig相同，并且也提供发布和更新动态IP地址的选项。</P>
<P>　　四、ARP（地址转换协议）的使用技巧</P>
<P>　　ARP是一个重要的TCP/IP协议，并且用于确定对应IP地址的网卡物理地址。实用arp命令，我们能够查看本地计算机或另一台计算机的ARP高速缓存中的当前内容。此外，使用arp命令，也可以用人工方式输入静态的网卡物理/IP地址对，我们可能会使用这种方式为缺省网关和本地服务器等常用主机进行这项作，有助于减少网络上的信息量。</P>
<P>　　按照缺省设置，ARP高速缓存中的项目是动态的，每当发送一个指定地点的数据报且高速缓存中不存在当前项目时，ARP便会自动添加该项目。一旦高速缓存的项目被输入，它们就已经开始走向失效状态。例如，在Windows&nbsp;NT/2000网络中，如果输入项目后不进一步使用，物理/IP地址对就会在2至10分钟内失效。因此，如果ARP高速缓存中项目很少或根本没有时，请不要奇怪，通过另一台计算机或路由器的ping命令即可添加。所以，需要通过arp命令查看高速缓存中的内容时，请最好先ping&nbsp;此台计算机（不能是本机发送ping命令）。</P>
<P>　　ARP常用命令选项：</P>
<P>　　·arp&nbsp;-a或arp&nbsp;–g</P>
<P>　　用于查看高速缓存中的所有项目。-a和-g参数的结果是一样的，多年来-g一直是UNIX平台上用来显示ARP高速缓存中所有项目的选项，而Windows用的是arp&nbsp;-a（-a可被视为all，即全部的意思），但它也可以接受比较传统的-g选项。</P>
<P>　　·arp&nbsp;-a&nbsp;IP</P>
<P>　　如果我们有多个网卡，那么使用arp&nbsp;-a加上接口的IP地址，就可以只显示与该接口相关的ARP缓存项目。</P>
<P>　　·arp&nbsp;-s&nbsp;IP&nbsp;物理地址</P>
<P>　　我们可以向ARP高速缓存中人工输入一个静态项目。该项目在计算机引导过程中将保持有效状态，或者在出现错误时，人工配置的物理地址将自动更新该项目。</P>
<P>　　·arp&nbsp;-d&nbsp;IP</P>
<P>　　使用本命令能够人工删除一个静态项目。</P>
<P>　　例如我们在命令提示符下，键入&nbsp;Arp&nbsp;–a；如果我们使用过&nbsp;Ping&nbsp;命令测试并验证从这台计算机到&nbsp;IP&nbsp;地址为&nbsp;10.0.0.99&nbsp;的主机的连通性，则&nbsp;ARP&nbsp;缓存显示以下项：&nbsp;</P>
<P>　　Interface:10.0.0.1&nbsp;on&nbsp;interface&nbsp;0x1</P>
<P>　　Internet&nbsp;AddressPhysical&nbsp;AddressType</P>
<P>　　10.0.0.99&nbsp;00-e0-98-00-7c-dc&nbsp;dynamic</P>
<P><BR>　　在此例中，缓存项指出位于&nbsp;10.0.0.99&nbsp;的远程主机解析成&nbsp;00-e0-98-00-7c-dc&nbsp;的媒体访问控制地址，它是在远程计算机的网卡硬件中分配的。媒体访问控制地址是计算机用于与网络上远程&nbsp;TCP/IP&nbsp;主机物理通讯的地址。</P>
<P>　　至此我们可以用ipconfig和ping命令来查看自己的网络配置并判断是否正确、可以用netstat查看别人与我们所建立的连接并找出ICQ使用者所隐藏的IP信息、可以用arp查看网卡的MAC地址。</P>
<P>　　五、Tracert、Route&nbsp;与&nbsp;NBTStat的使用技巧</P>
<P>　　1、Tracert的使用技巧</P>
<P>　　如果有网络连通性问题，可以使用&nbsp;tracert&nbsp;命令来检查到达的目标&nbsp;IP&nbsp;地址的路径并记录结果。tracert&nbsp;命令显示用于将数据包从计算机传递到目标位置的一组&nbsp;IP&nbsp;路由器，以及每个跃点所需的时间。如果数据包不能传递到目标，tracert&nbsp;命令将显示成功转发数据包的最后一个路由器。当数据报从我们的计算机经过多个网关传送到目的地时，Tracert命令可以用来跟踪数据报使用的路由（路径）。该实用程序跟踪的路径是源计算机到目的地的一条路径，不能保证或认为数据报总遵循这个路径。如果我们的配置使用DNS，那么我们常常会从所产生的应答中得到城市、地址和常见通信公司的名字。Tracert是一个运行得比较慢的命令（如果我们指定的目标地址比较远），每个路由器我们大约需要给它15秒钟。</P>
<P>　　Tracert的使用很简单，只需要在tracert后面跟一个IP地址或URL，Tracert会进行相应的域名转换的。</P>
<P>　　tracert&nbsp;最常见的用法：</P>
<P>　　tracert&nbsp;IP&nbsp;address&nbsp;[-d]&nbsp;该命令返回到达&nbsp;IP&nbsp;地址所经过的路由器列表。通过使用&nbsp;-d&nbsp;选项，将更快地显示路由器路径，因为&nbsp;tracert&nbsp;不会尝试解析路径中路由器的名称。</P>
<P>　　Tracert一般用来检测故障的位置，我们可以用tracert&nbsp;IP在哪个环节上出了问题，虽然还是没有确定是什么问题，但它已经告诉了我们问题所在的地方，我们也就可以很有把握的告诉别人----某某地方出了问题。</P>
<P>　　2、Route&nbsp;的使用技巧</P>
<P>　　大多数主机一般都是驻留在只连接一台路由器的网段上。由于只有一台路由器，因此不存在使用哪一台路由器将数据报发表到远程计算机上去的问题，该路由器的IP地址可作为该网段上所有计算机的缺省网关来输入。</P>
<P>　　但是，当网络上拥有两个或多个路由器时，我们就不一定想只依赖缺省网关了。实际上我们可能想让我们的某些远程IP地址通过某个特定的路由器来传递，而其他的远程IP则通过另一个路由器来传递。</P>
<P>　　在这种情况下，我们需要相应的路由信息，这些信息储存在路由表中，每个主机和每个路由器都配有自己独一无二的路由表。大多数路由器使用专门的路由协议来交换和动态更新路由器之间的路由表。但在有些情况下，必须人工将项目添加到路由器和主机上的路由表中。Route就是用来显示、人工添加和修改路由表项目的。</P>
<P>　　一般使用选项：</P>
<P>　　·route&nbsp;print</P>
<P>　　本命令用于显示路由表中的当前项目，在单路由器网段上的输出；由于用IP地址配置了网卡，因此所有的这些项目都是自动添加的。</P>
<P>　　·route&nbsp;add</P>
<P>　　使用本命令，可以将信路由项目添加给路由表。例如，如果要设定一个到目的网络209.98.32.33的路由，其间要经过5个路由器网段，首先要经过本地网络上的一个路由器，器IP为202.96.123.5，子网掩码为255.255.255.224，那么我们应该输入以下命令：</P>
<P>　　route&nbsp;add&nbsp;209.98.32.33&nbsp;mask&nbsp;255.255.255.224&nbsp;202.96.123.5&nbsp;metric&nbsp;5</P>
<P>　　·route&nbsp;change</P>
<P>　　我们可以使用本命令来修改数据的传输路由，不过，我们不能使用本命令来改变数据的目的地。下面这个例子可以将数据的路由改到另一个路由器，它采用一条包含3个网段的更直的路径：</P>
<P>　　route&nbsp;add&nbsp;209.98.32.33&nbsp;mask&nbsp;255.255.255.224&nbsp;202.96.123.250&nbsp;metric&nbsp;3</P>
<P>　　·route&nbsp;delete</P>
<P>　　使用本命令可以从路由表中删除路由。例如：route&nbsp;delete&nbsp;209.98.32.33</P>
<P>　　3、NBTStat的使用技巧</P>
<P>　　使用&nbsp;nbtstat&nbsp;命令释放和刷新&nbsp;NetBIOS&nbsp;名称。NBTStat（TCP/IP上的NetBIOS统计数据）实用程序用于提供关于关于NetBIOS的统计数据。运用NetBIOS，我们可以查看本地计算机或远程计算机上的NetBIOS名字表格。</P>
<P>　　常用选项：</P>
<P>　　·nbtstat&nbsp;–n</P>
<P>　　显示寄存在本地的名字和服务程序。</P>
<P>　　·nbtstat&nbsp;–c</P>
<P>　　本命令用于显示NetBIOS名字高速缓存的内容。NetBIOS名字高速缓存用于寸放与本计算机最近进行通信的其他计算机的NetBIOS名字和IP地址对。</P>
<P>　　·nbtstat&nbsp;–r</P>
<P>　　本命令用于清除和重新加载NetBIOS名字高速缓存。</P>
<P>　　·nbtstat&nbsp;-a&nbsp;IP</P>
<P>　　通过IP显示另一台计算机的物理地址和名字列表，我们所显示的内容就像对方计算机自己运行nbtstat&nbsp;-n一样。</P>
<P>　　·nbtstat&nbsp;-s&nbsp;IP</P>
<P>　　显示实用其IP地址的另一台计算机的NetBIOS连接表。</P>
<P>　　例如我们在命令提示符下，键入：nbtstat&nbsp;–RR&nbsp;释放和刷新过程的进度以命令行输出的形式显示。该信息表明当前注册在该计算机的&nbsp;WINS&nbsp;中的所有本地&nbsp;NetBIOS&nbsp;名称是否已经使用&nbsp;WINS&nbsp;服务器释放和续订了注册。</P><img src ="http://www.blogjava.net/mstar/aggbug/19094.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-11-10 10:41 <a href="http://www.blogjava.net/mstar/archive/2005/11/10/19094.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>把你做的Java程序变成Windows系统服务。</title><link>http://www.blogjava.net/mstar/archive/2005/11/04/18078.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Fri, 04 Nov 2005 01:38:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/11/04/18078.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/18078.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/11/04/18078.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/18078.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/18078.html</trackback:ping><description><![CDATA[<P>最近买了一台机器做个source服务器和异地的几个朋友一起做点东西玩玩。但是由于用的是电信的ADSL，所以地址是动态的，每天机器自动重起的时候就会变化。于是我就用3322的域名绑定，但是3322提供的windows更新dns的客户端运行时不是作为系统服务运行的，所以没有用户登录时它是没有运行的，所以还是没有解决问题。后来下了一个Windows Resource Kit Tools（这个工具windows server默认是没有的，需要到微软的网站上下载，具体地址我没有记住，google一下肯定能找到），里面有一些工具可以把普通的win32程序变成系统服务。<BR>&nbsp;instsrv: 这个工具是把win32程序变成系统服务，但是并不是所有程序都适合做系统服务的，如CN99的客户端，注册成系统服务后就是无法启动的。<BR>基本用法：instsrv [服务名] [应用程序绝对路径]<BR>srvany: 这个工具就是用来解决上面的工具中的问题，你注册的时候把它当作你要的服务，在用它来启动你的应用程序。<BR>instsrv&nbsp; [服务名] [srvany的绝对路径]<BR>注册成功后，到服务管理器中把刚才注册的服务打开，在启动参数中填上你的应用程序绝对路径，启动服务就可以了。<BR>这种方式可以解决更新域名地址的问题了。<BR><BR>但是心里不爽，作为一个程序员如此受制于人总是不爽的，其实CN99的动态域名更新协议很简单，编个简单的程序就实现的。无奈只会Java，对于C或C++程序员来说，做一个系统服务实在是小Case啊，后悔当初没有好好学C和C++。但是难道就没有办法把Java程序变成windows系统服务吗？在Java的世界里基本上是没有不可能的事，ObjectWeb Forge上有个项目叫JavaService就是用来把Java程序注册成系统服务的。于是下来看了一下：<BR>一试--失败<BR>二试--不成功<BR>三试--...<BR>...<BR>...<BR>放弃！<BR>老子自己做了，其实有了上面的instsrv和srvany其实就差一个可执行文件了。于是我用JBuilder把我的jar包做成了一个假的exe文件。<BR>我的DNS更新程序如下：<BR></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: #0000ff">package</SPAN><SPAN style="COLOR: #000000">&nbsp;org.mstar.dns;<BR><BR></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;java.util.TimerTask;<BR></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;org.apache.commons.httpclient.HttpClient;<BR></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;org.apache.commons.httpclient.methods.GetMethod;<BR></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;org.apache.commons.httpclient.HttpStatus;<BR></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;org.apache.commons.httpclient.HttpException;<BR></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;java.io.IOException;<BR></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;java.util.</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;org.apache.commons.logging.</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;org.apache.commons.httpclient.Credentials;<BR></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;org.apache.commons.httpclient.UsernamePasswordCredentials;<BR></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;org.apache.commons.httpclient.auth.AuthScope;<BR></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;java.text.SimpleDateFormat;<BR><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;Refresher&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&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;Log&nbsp;LOG&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;LogFactory.getLog(Refresher.</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;Refresher()&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Timer&nbsp;timer&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Timer();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.schedule(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;RefreshTask(),&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">60000</SPAN><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;RefreshTask&nbsp;</SPAN><SPAN style="COLOR: #0000ff">extends</SPAN><SPAN style="COLOR: #000000">&nbsp;TimerTask&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;String&nbsp;URL&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">http://members.3322.org/dyndns/update?system=dyndns&amp;hostname=zjumty.3322.org</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;run()&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpClient&nbsp;client&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;HttpClient();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client.getParams().setAuthenticationPreemptive(</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Credentials&nbsp;defaultcreds&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;UsernamePasswordCredentials(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">username</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"password</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">); //此处我要保密<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client.getState().setCredentials(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;AuthScope(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">members.3322.org</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">80</SPAN><SPAN style="COLOR: #000000">,&nbsp;AuthScope.ANY_REALM),&nbsp;defaultcreds);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetMethod&nbsp;method&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;GetMethod(URL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN style="COLOR: #000000">&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;statusCode&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;client.executeMethod(method);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(statusCode&nbsp;</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">&nbsp;HttpStatus.SC_OK)&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.error(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Method&nbsp;failed:&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;method.getStatusLine());<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;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;date&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Calendar.getInstance().getTime();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SimpleDateFormat&nbsp;fmt&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;SimpleDateFormat(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">yyyy/MM/dd&nbsp;HH:mm:ss</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">byte</SPAN><SPAN style="COLOR: #000000">[]&nbsp;responseBody&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;method.getResponseBody();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.info(fmt.format(date)&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;--&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&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(responseBody));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000">&nbsp;(HttpException&nbsp;e)&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.error(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Fatal&nbsp;protocol&nbsp;violation:&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;e.getMessage());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000">&nbsp;(IOException&nbsp;e)&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.error(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Fatal&nbsp;transport&nbsp;error:&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;e.getMessage());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</SPAN><SPAN style="COLOR: #0000ff">finally</SPAN><SPAN style="COLOR: #000000">&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.releaseConnection();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR><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 style="COLOR: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Refresher&nbsp;refresher&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Refresher();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}</SPAN></DIV>
<P><BR>其实就是用Jakarta的HttpClient来请求一个URL就可以了。<BR>于是我现在有了我的Refresher.exe。当然你的系统上一定要有JVM才能运行（废话）。为了运行方便我是把运行时的jar包，如logger.jar,httpclient.jar等打在我的jar包里了。<BR><BR>现在就是把它搞成系统服务了。<BR><STRONG>第一步：instsrv Refrehser C:\Program Files\Windows Resource Kits\Tools\srvany.exe<BR>第二步：regedit打开注册表<BR>第三步：进入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Refrehser<BR>第四步：右键-新建-项&nbsp; 填入 Parameters<BR>第五步：打开Parameters，右键-新建-字符串值 Application <BR>第六步：双击Application 填入 c:\refresher.exe<BR>弟七步：启动Refresher服务。</STRONG><BR>一切都OK了。<BR>在Parameters里还可以添加很多键值：<BR><STRONG>AppDirectory&nbsp;&nbsp;&nbsp; 工作目录<BR>AppParameters 你的应用程序的参数。（我可以把我上面程序做成可以接受参数的，就更通用了）<BR>AppEnvironment 运行环境变量。</STRONG></P>
<P>值现在作为Java程序员的你也可以为自己系统添加一些动能了，赶快去做吧！</P><img src ="http://www.blogjava.net/mstar/aggbug/18078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-11-04 09:38 <a href="http://www.blogjava.net/mstar/archive/2005/11/04/18078.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>轻松的生活，轻松的写程序</title><link>http://www.blogjava.net/mstar/archive/2005/10/28/17264.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Fri, 28 Oct 2005 12:35:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/10/28/17264.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/17264.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/10/28/17264.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/17264.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/17264.html</trackback:ping><description><![CDATA[<font size="4"><span style="font-family: arial;">   
现在来谈梦想可能会遭到很多人的鄙视,因为这是一个缺乏梦想的时代. 大家每天清早会准时被闹钟闹醒, 胡乱的洗把脸,再对付一口早饭,匆匆上路了~
每天大家都好像很忙,
拼命维护系统运转正常,拼命的写代码,拼命的写脚本,拼命的找寻bug,拼命的迎合领导执行命令,再拼命的安抚下级拉拢人心,最后拼命的告诉自己,自己真
的很拼命,以此结束一天的"拼命"生活. 你可能认为我疯了,干嘛用那么多"拼命"? 可是你静下心来想一下,你不也是这样拼命的活着么?
有人说:"中国的程序员很浮躁, 中国的Java程序员更浮躁!" 试问,在这种近乎"拼命"的状态下,中国的程序员怎能不浮躁,
中国的Java程序员怎能不更加浮躁!?  </span><br style="font-family: arial;">
<span style="font-family: arial;">   
大家被一个个框架弄得眼花缭乱,头晕目眩. Struts充分实现了MVC的设计模式,真牛! 看了十几页"Struts in
Action",突然项目来了,要求你使用Struts实现Presentation层的代码,你欣喜若狂因为你看过"一大本书",正好可以"理论联系实
际". 你被委派任务实现几个Action, 照着书上的样子,两个星期后,这几个Action被你照猫画虎的画了出来,
你心里极有成就感,认为自己对Struts,甚至MVC结构了解的相当透彻了,然后在自己的blog上写下一篇介绍Struts的文章,
大家都尊你为Struts专家, 你自己也认为是这样的. 过了一阵子,你又发现了Hibernate框架,
学了几天后,正巧一个项目又来了,这回要求你用Hibernate实现数据持久层O/R Mapping部分的代码,你被分配到了几个类,
为了安全性考虑,这几个类被包装的很好,连Hibernate的Session都没有暴露给你,你用这几个类的方法,
迅速的提取数据，查询数据，追加,
好爽好爽!　你心里琢磨"Hibernate也就是这么回事"　然后你又在自己的ｂｌｏｇ上鼓吹Hibernate是如何好用，可以完全取代JDBC.
就这样你拼命的遍历着一个又一个框架，你拼命的完成着一个又一个项目，怪不得你这么忙，怪不得你得这么拼命，怪不得你对梦想如此鄙视！</span><br style="font-family: arial;">
<span style="font-family: arial;">　　我始终不想把写程序作为我自己赖以谋生的手段，因为任何事物，即使再美好，如
果这样被极端的使用或者被极端的看待都会未免产生极端的后果．我想把写程序作为自己的爱好，作为自己生活的一部分，作为自己的一种生活方式．我看技术书籍
总是很慢，总在仔细斟酌某种技术的闪光点，总在品味作者的创作意图（呵呵，有点像在看小说）．我不喜欢追捧红得发紫的技术，虽然每一样我都在耐心的研究，
ｈｏｈｏ，虽然在一直努力，对Hibernate　Spring 
Ajax还是一支半解，在我的ｂｌｏｇ上我从来没写过关于它们的技术性文章，不是不想，实在是因为自己真的还比较糊涂，根本没话可说．我不喜欢摒弃旧的技
术，至今我还在看"The art and science of C language",
还在研究shell,perl等脚本语言，因为我认为大多数的新技术都是在旧技术的基础上演化而来，Ａｊａｘ的基础实则Java
Script；现在无所不能xml的理论核心，来源于UNIX下的配置文件思想；真正想搞懂Hibernate实际上要求你有非常扎实的数据库理论的基本
功；已经成为标准的ａｎｔ，我始终认为是编译Java的ｍａｋｅ，其实如果你愿意，同样可以用ｍａｋｅ来编译任何复杂的J2EE项目；Groovy,
Jpython实际上是一种脚本语言的回归，就技术先进性来说他们的前辈perl，python丝毫不比他们差．整天口若悬河新技术，不如将经典的旧技术
烂醉于心．把浮躁的心情放下，不要用"拼命"的状态去做设计，去写程序,这样写不好程序，这样更做不好设计．认真地审视每项技术，但千万不要盲从这些技术
更不要为这些技术所累．享受编程的乐趣，享受用计算机解决问题的乐趣～　</span><br style="font-family: arial;">
<span style="font-family: arial;">　　放下种种负担，轻松的生活，轻松的写程序～～</span><br style="font-family: arial;">
<span style="font-family: arial;">　　</span><br style="font-family: arial;">
<br style="font-family: arial;">
<span style="font-family: arial;">　　　</span><br style="font-family: arial;">
</font>






 <img src ="http://www.blogjava.net/mstar/aggbug/17264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-10-28 20:35 <a href="http://www.blogjava.net/mstar/archive/2005/10/28/17264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于指定的Tomcat 404画面被IE替代的问题的解决。</title><link>http://www.blogjava.net/mstar/archive/2005/10/26/16907.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Wed, 26 Oct 2005 10:17:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/10/26/16907.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/16907.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/10/26/16907.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/16907.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/16907.html</trackback:ping><description><![CDATA[<P>在我现在做的项目中要指定自己的404，403等错误界面，但是由于这些页面的能容较少（小于512bytes，就会被IE认为是不友好的错误显示页面，而用自己的“友好的界面”代替你的）。郁闷了我好长时间，终于在一个台湾的论坛上找到了答案（感谢台湾的同行）。<BR>把错误页面做成jsp，然后在里面加上<BR>&lt;%response.setStatus(200);%&gt;<BR>这样IE得到的消息就是这个Response是正常的，所以就不会用它的“友好的界面”了。这是在欺骗IE，呵呵。但是不知道有没有负面影响。<BR>当然，你也可以让你的页面多一些废话，以便满足IE的长度要求。<BR>哎~~，真不知道说IE什么好……<BR></P><img src ="http://www.blogjava.net/mstar/aggbug/16907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-10-26 18:17 <a href="http://www.blogjava.net/mstar/archive/2005/10/26/16907.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OReilly.Beyond.Java.Sep.2005</title><link>http://www.blogjava.net/mstar/archive/2005/10/19/16061.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Wed, 19 Oct 2005 15:11:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/10/19/16061.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/16061.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/10/19/16061.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/16061.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/16061.html</trackback:ping><description><![CDATA[<A HREF="/Files/mstar/OReilly.Beyond.Java.Sep.2005.rar"><BR>
<TABLE cellSpacing=0 cellPadding=0 width=627 border=0>
<TBODY>
<TR vAlign=top>
<TD class=v2 align=left height=20>
<TABLE style="MARGIN-LEFT: 15px" cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD class=v2 colSpan=3 height=20><B>Beyond Java</B></TD></TR>
<TR>
<TD class=v2 colSpan=3 height=18>By <A class=v1 target=_new>Bruce A.&nbsp;Tate</A></TD></TR>
<TR>
<TD class=aCells align=left colSpan=3>...............................................</TD></TR>
<TR>
<TD class=aCells colSpan=3>Publisher: <B>O'Reilly</B></TD></TR>
<TR>
<TD class=aCells colSpan=3>Pub Date: <B>September 2005</B></TD></TR>
<TR>
<TD class=aCells colSpan=3>ISBN: <B>0-596-10094-9</B></TD></TR>
<TR>
<TD class=aCells colSpan=3>Pages: <B>200</B></TD></TR>
<TR>
<TD class=aCells></TD>
<TD class=aCells align=right width="75%" colSpan=2>&nbsp;</TD></TR></TBODY></TABLE></TD>
<TD align=middle></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width=627 border=0>
<TBODY>
<TR>
<TD class=aTopMenu><A class=aTopMenu title="Table of Contents" href="mk:@MSITStore:I:\book\Java\OReilly.Beyond.Java.Sep.2005.chm::/0596100949/toc.html">Table of Contents</A> &nbsp;|&nbsp;<A class=aTopMenu title=Index href="mk:@MSITStore:I:\book\Java\OReilly.Beyond.Java.Sep.2005.chm::/0596100949/index.html">Index</A></TD>
<TD vAlign=bottom align=right></TD>
<TD vAlign=bottom align=right></TD></TR></TBODY></TABLE>
<TABLE cellPadding=3 border=0>
<TBODY>
<TR>
<TD class=v2 vAlign=top><IMG alt=Overview src="mk:@MSITStore:I:\book\Java\OReilly.Beyond.Java.Sep.2005.chm::/0596100949/images/overview_hed.gif" align=absMiddle border=0></TD></TR>
<TR>
<TD class=v2 vAlign=top>
<P class=docText>Bruce Tate, author of the Jolt Award-winning <SPAN class=docEmphasis>Better, Faster, Lighter Java</SPAN> has an intriguing notion about the future of Java, and it's causing some agitation among Java developers. Bruce believes Java is abandoning its base, and conditions are ripe for an alternative to emerge. <BR></P>
<P class=docText><BR>In <SPAN class=docEmphasis>Beyond Java</SPAN>, Bruce chronicles the rise of the most successful language of all time, and then lays out, in painstaking detail, the compromises the founders had to make to establish success. Then, he describes the characteristics of likely successors to Java. He builds to a rapid and heady climax, presenting alternative languages and frameworks with productivity and innovation unmatched in Java. He closes with an evaluation of the most popular and important programming languages, and their future role in a world beyond Java.<BR></P>
<P class=docText><BR>If you are agree with the book's premise--that Java's reign is coming to an end--then this book will help you start to build your skills accordingly. You can download some of the frameworks discussed and learn a few new languages. This book will teach you what a new language needs to succeed, so when things do change, you'll be more prepared. And even if you think Java is here to stay, you can use the best techniques from frameworks introduced in this book to improve what you're doing in Java today.</P></TD></TR></TBODY></TABLE><BR>http://www.blogjava.net/Files/mstar/OReilly.Beyond.Java.Sep.2005.rar</A><img src ="http://www.blogjava.net/mstar/aggbug/16061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-10-19 23:11 <a href="http://www.blogjava.net/mstar/archive/2005/10/19/16061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>花了几天时间终于把JMeter的bug给抓出来了</title><link>http://www.blogjava.net/mstar/archive/2005/10/19/16059.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Wed, 19 Oct 2005 14:50:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/10/19/16059.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/16059.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/10/19/16059.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/16059.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/16059.html</trackback:ping><description><![CDATA[<font size="3"><span style="font-family: courier new;">&nbsp;&nbsp; 一个项目进行到了QA阶段, 要大规模测试程序与JMS(Sonic MQ)交互的性能.
经"上面"研究决定, 要用到传说中性能测试很牛叉的JMeter. 由于我是TRG(Technical Research Group)
Jmeter小组的组长(其实也就是混事,没什么事情写个report吹嘘一下研究结果,如此而已), 所以被临时调过来充当QA.
不测不知道,一测吓一跳,虽说JMeter的官方网站上鼓吹JMeter支持对于JMS的性能测试, 但我们发现根本不是那么回事,
消息能被发出也可以被接接收,但GUI上没有丝毫数据显示(包括发送接收时间,发送接收内容等信息), 没有这些数据让我怎么写报告?
难不成让我的项目经理过来,我拿秒表记录每条信息发送和接收的时间? 开源的东西就是这点害人,遇到问题了,跟本没人搭理你.
我跑到JMeter的bugzilla上去察看, 我k, 一堆bug post在上面,没有一个有response的, 我赶快闪开了~~</span><br style="font-family: courier new;">
<span style="font-family: courier new;">
&nbsp;&nbsp; 和项目经理汇报了这个情况后,
他的指示是"不管怎么样,JMeter作为测试工具是美国那边指定的,不论采取什么办法,一定得给我整出来!"
我点头答应,但心里不断嘀咕"我k,怎么整出来啊~" 幸好项目经理还比较有人性, 给我也配了个两个"小弟"(准确的说是一男一女),
刚进来实习的所以比较听话, 恩, 我喜欢.
我给他们的指示是"不管怎么样,JMeter作为测试工具是美国那边指定的,不论采取什么办法,一定得给我整出来!" 他们纷纷点头,
我心里那叫一爽. 花了三天的时间, 我们通读了一遍JMeter(version 1.10) JMS 部分的代码:
org.apache.jmeter.protocol.jms.
又经过两天痛苦的煎熬,终于发现问题出现在逻辑层(PulisherSampler.java
SubsriberSampler.java)在向表现层(ResultSample.java)中set message时居然没有指定数据的类型,
ResultSample得不到message的具体类型, 自然什么东西的显示不出来. 一直拖到今天, 重新编译了代码, 重新运行,
结果正确的显示到了GUI上, 我长出了一口气, 问题终于解决了. 被我压榨了若干天的两个小弟, 更是长出了一口气,
终于可以从我的魔爪中挣脱了~~~ </span><br style="font-family: courier new;">
<span style="font-family: courier new;">
&nbsp;&nbsp; 问题解决当然免不了写个报告, 邀一下功了, 记得在报告中我写道:"We feel the strong
sense of freedom which open softwares bring with us."
这种freedom对于我们这些凡夫俗子从某种程度上讲,实在是件遭罪的事.
但反过来想想,我感觉莫名的兴奋,因为不知不觉间我为开源软件做出了自己的一点微薄的贡献,
可能就是千千万万的这样的微薄的贡献才成就了现在的开源软件. 成也开源, 败也开源. 把原代码暴露在所有开发者的面前, 会造成两种局面: 其一,
代码被滥用, 软件的质量越来越差; 其二, 所有关心开源软件的程序员都贡献出自己的力量,不断提高软件的质量.
使我欣喜的是,大多数程序员都是完美主义者,不约而同的选择了后者, 在他们的眼中, "建设带来的乐趣远远大于破坏".</span><br style="font-family: courier new;">
<span style="font-family: courier new;">
&nbsp;&nbsp; 唠唠叨叨了这么大一砣,回头再看,真是不知所云~~~ 天一, 求求你, 不要删我的贴</span><br style="font-family: courier new;">
<span style="font-family: courier new;">
&nbsp;&nbsp; 最后希望所有的程序员,都来支持开源软件,虽然有时他很不成熟, 但正是这种不成熟才给了我们发挥自己创造力的机会. 毕竟"软件就像性交, 不要钱的更好!"</span><br style="font-family: courier new;">&nbsp;&nbsp;&nbsp;
<span style="font-family: courier new;">
 <br>
&nbsp;&nbsp; <br style="font-family: courier new;">
</span>
</font>
<img src ="http://www.blogjava.net/mstar/aggbug/16059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-10-19 22:50 <a href="http://www.blogjava.net/mstar/archive/2005/10/19/16059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Manning.WebWork.in.Action.Sep.2005.pdf</title><link>http://www.blogjava.net/mstar/archive/2005/10/10/15183.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Mon, 10 Oct 2005 15:02:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/10/10/15183.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/15183.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/10/10/15183.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/15183.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/15183.html</trackback:ping><description><![CDATA[<P>等了好久终于出来了，快下啊！<BR></P><A HREF="/Files/mstar/WebWork.in.Action.part1.rar">http://www.blogjava.net/Files/mstar/WebWork.in.Action.part1.rar</A><BR><A HREF="/Files/mstar/WebWork.in.Action.part2.rar">http://www.blogjava.net/Files/mstar/WebWork.in.Action.part2.rar</A><img src ="http://www.blogjava.net/mstar/aggbug/15183.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-10-10 23:02 <a href="http://www.blogjava.net/mstar/archive/2005/10/10/15183.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Exadel.Studio.Pro.v3.0.4的破解终于出来了。</title><link>http://www.blogjava.net/mstar/archive/2005/10/06/14872.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Thu, 06 Oct 2005 06:01:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/10/06/14872.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/14872.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/10/06/14872.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/14872.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/14872.html</trackback:ping><description><![CDATA[前面发了个说Exadel.Studio很好用的贴，N多人向我要Exadel.Studio.Pro.v3.0.4的破解，当时还没有出来，由于要的人太多我不得不把那个贴给删掉。现在终于出来了。昨天弄到的，把它放在这里想要的人就下吧。<BR>再次强调一下，如果是玩玩，弄个破解也无妨，如果是商业开发，希望你不要用。<BR>PS.我没有试过，现在已经很少用Exadel.Studio了，感觉那东西没什么实际用途。<BR><A HREF="/Files/mstar/ExadelStudioPro-3.0.4.crack.zip">http://www.blogjava.net/Files/mstar/ExadelStudioPro-3.0.4.crack.zip</A><img src ="http://www.blogjava.net/mstar/aggbug/14872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-10-06 14:01 <a href="http://www.blogjava.net/mstar/archive/2005/10/06/14872.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>catalina</title><link>http://www.blogjava.net/mstar/archive/2005/10/05/14798.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Tue, 04 Oct 2005 16:24:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/10/05/14798.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/14798.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/10/05/14798.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/14798.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/14798.html</trackback:ping><description><![CDATA[catalina<BR>远程轰炸机<BR><BR>真应该好好的把apache中命名好好研究一下<img src ="http://www.blogjava.net/mstar/aggbug/14798.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-10-05 00:24 <a href="http://www.blogjava.net/mstar/archive/2005/10/05/14798.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>来上海两个多月了，谈谈感想</title><link>http://www.blogjava.net/mstar/archive/2005/09/17/13200.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Sat, 17 Sep 2005 02:29:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/09/17/13200.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/13200.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/09/17/13200.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/13200.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/13200.html</trackback:ping><description><![CDATA[<P>来上海两个多月了，谈谈感想：<BR>在上海两个多月的生活是我倍加的喜欢杭州，怀念杭州。<BR>初到上海，感觉上海的人有些别扭，原以为是新到一个城市，所以不习惯。但是经过两个多月的生活，我渐渐的感觉到了一些东西。总体上来说就是上海的生活不如在杭州舒服。究竟哪里不舒服呢？人多，拥挤？太大，去个地方都特别麻烦？卫生情况不好，走在街上经常飘来阵阵异味？物价太贵，买不起东西？等等等等。原来以为是这些细微上的差异使我不喜欢上海的生活。但是最近我越发的感觉，上海和杭州存在着一个巨大的差异，这也应该是我感觉上海生活不如杭州舒服的主要原因。经过两个多月的“充实”的工作，我的身心积累了大量的疲劳，我该如果去化解它呢？如果在杭州，我会找几个朋友，周末一起出去，到西溪湿地，找片树荫下面的草坪，铺上野餐布，大家吃着零食，打打牌，聊聊天，有说有笑，将这在工作中积累下来的疲惫无声无息的散发给大自然。即便朋友不能陪我，我也可以自己到西湖边遛达遛达，到曲院风荷散散步，自己骑着自行车穿越于九溪的山林、树木、花草、溪流之间。等等等等，这一切可以接触到大自然的地方，都可以把我身心中的疲惫净化的干干净净。然而在上海，我却找不到这样的地方，当然也许是我来的时间还太短。但是看公司里的前辈，无论是上海本地人还是外地的，好像也没什么去处，在周末唯一解脱的方法就是睡觉，看电视，打打球。这种生活我不知道我能忍受多久。来上海之前我早就听说上海的生活很累，我对自己说：我不怕累，天将降降大任于斯人也，必先……，世上哪有不经过一番努力就得到成功的人！但是却没有想到，上海没有一个可以让身心得到片刻舒展的地方。都说上海是女人的天堂，因为上海的男人对自己的女人特别好，我当然不是反对男人把自己的女人当成宝贝，而是想说，在上海对于男人来说，似乎除了找个心爱的女人在身边陪伴，也没有其他的使自己的身心得到安慰的方式了。现在我知道为什么到上海感觉上海的人有些别扭，尤其是上海的中年男人，不论是本地人，还是外地人，都或多或少有些畸形，大概就是长期压抑的结果。上海的男人好可怜，而我也要成为这可怜人中一员了。而且现在是最可怜的状态，初来工作最辛苦，工资又低，既无法投入大自然的怀抱，也无法投入女人的怀抱，还好就是还没有积累太多的疲惫，使我看上去很畸形。<BR><BR>也许在看这篇随笔的你就是上海人，所以要提出异议，那可能是你在上海生活久了所以习惯了。但是我刚从杭州到上海确实不太习惯。</P>
<P>PS.<BR>System.out.println(上海人.equals(上海的人))；<BR>〉false</P><img src ="http://www.blogjava.net/mstar/aggbug/13200.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-09-17 10:29 <a href="http://www.blogjava.net/mstar/archive/2005/09/17/13200.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse4.0 出来了</title><link>http://www.blogjava.net/mstar/archive/2005/09/03/11861.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Fri, 02 Sep 2005 16:49:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/09/03/11861.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/11861.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/09/03/11861.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/11861.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/11861.html</trackback:ping><description><![CDATA[MyEclipse 4.0功能很强大，支持的东西也多了很多<BR>
<UL>
<LI>
<DIV>6&nbsp;UML Diagrams: Use-case, Class, Collaboration, State, Activity, Deployment,</DIV>
<LI>
<DIV>Integrated Diagram Editor, Outline View, and Properties View</DIV>
<LI>
<DIV>UML Perspective</DIV>
<LI>
<DIV>Free-form figure drawing tools</DIV>
<LI>
<DIV>Direct edit of Node and Connection details&nbsp;via Hot-Zones</DIV>
<LI>
<DIV>Diagrams stored in UML Model Repository File (e.g., cardemo.umr)</DIV>
<LI>
<DIV>No restriction on location or project type that may contain UML Model Repository files</DIV>
<LI>
<DIV>Generate Java code from models</DIV>
<LI>
<DIV>Export models as XMI 1.0 format</DIV>
<LI>
<DIV>Export diagrams&nbsp;in image format: GIF, PNG, PS, EPS, SVG</DIV></LI></UL>
<P><A href="http://www.myeclipseide.com/ContentExpress-display-ceid-66.html">http://www.myeclipseide.com/ContentExpress-display-ceid-66.html</A><BR><BR>小弟下到了一个破解。<BR>但是希望各位如果在商业项目中要使用的话，还是去买正版的吧。毕竟大家都是做软件的。<BR>对于J2EE的初学者，我还是觉得不要过多地使用IDE，还是多自己动动手，多写写Ant。<BR>当然如果只是想尝试一下新东西，偶尔用一下D版也无妨。<BR><A href="http://www.blogjava.net/Files/mstar/crack.zip">http://www.blogjava.net/Files/mstar/crack.zip</A></P><img src ="http://www.blogjava.net/mstar/aggbug/11861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-09-03 00:49 <a href="http://www.blogjava.net/mstar/archive/2005/09/03/11861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在ant中用native2ascii</title><link>http://www.blogjava.net/mstar/archive/2005/08/26/11199.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Fri, 26 Aug 2005 04:34:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/08/26/11199.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/11199.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/08/26/11199.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/11199.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/11199.html</trackback:ping><description><![CDATA[&lt;native2ascii&nbsp;encoding="Shift_JIS"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src="${props}/"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dest="${dest.xact}/WEB-INF/classes"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;includes="**/*_ja.properties" <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ext="_JP.properties"/&gt;<img src ="http://www.blogjava.net/mstar/aggbug/11199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-08-26 12:34 <a href="http://www.blogjava.net/mstar/archive/2005/08/26/11199.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>原来tomcat是这个意思！！</title><link>http://www.blogjava.net/mstar/archive/2005/08/21/10621.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Sun, 21 Aug 2005 09:16:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/08/21/10621.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/10621.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/08/21/10621.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/10621.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/10621.html</trackback:ping><description><![CDATA[<BR>&nbsp;&nbsp;&nbsp;&nbsp;今天在金山词霸上查tomcat,晕：<BR>&nbsp;&nbsp;&nbsp; 雄猫<BR>&nbsp;&nbsp;&nbsp;&nbsp;tom.cat.ted， tom.cat.ting， tom.cats【俚语】 <BR>&nbsp;&nbsp;&nbsp; To be sexually active with more than one partner. Used of men.<BR>&nbsp;&nbsp;&nbsp; 滥交：与不止一个对象进行性活动，用于男人<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; 不禁让我想到，现在tomcat已经被很多应用服务器作为内置的WebContainer。<img src ="http://www.blogjava.net/mstar/aggbug/10621.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-08-21 17:16 <a href="http://www.blogjava.net/mstar/archive/2005/08/21/10621.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>查看自己上网IP</title><link>http://www.blogjava.net/mstar/archive/2005/07/18/7897.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Mon, 18 Jul 2005 00:59:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/07/18/7897.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/7897.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/07/18/7897.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/7897.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/7897.html</trackback:ping><description><![CDATA[<A href="http://ipseeker.cn/">http://ipseeker.cn/</A><img src ="http://www.blogjava.net/mstar/aggbug/7897.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-07-18 08:59 <a href="http://www.blogjava.net/mstar/archive/2005/07/18/7897.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>穿学士服好傻</title><link>http://www.blogjava.net/mstar/archive/2005/06/22/6567.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Wed, 22 Jun 2005 12:22:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/06/22/6567.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/6567.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/06/22/6567.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/6567.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/6567.html</trackback:ping><description><![CDATA[<img src="http://www.blogjava.net/images/blogjava_net/mstar/pics/IMG_0047.JPG" alt="IMG_0047.JPG" border="0" height="480" width="640"><br>
<img src="http://www.blogjava.net/images/blogjava_net/mstar/pics/IMG_0074.JPG" alt="IMG_0074.JPG" border="0" height="480" width="640"><br>
<img src ="http://www.blogjava.net/mstar/aggbug/6567.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-06-22 20:22 <a href="http://www.blogjava.net/mstar/archive/2005/06/22/6567.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>请问如何通过Webservice访问到我的blog？</title><link>http://www.blogjava.net/mstar/archive/2005/06/21/6420.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Tue, 21 Jun 2005 01:35:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/06/21/6420.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/6420.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/06/21/6420.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/6420.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/6420.html</trackback:ping><description><![CDATA[<P>.Text 的blog应该可以通过WebService 访问的。我想在我的个人网站中把我的blog内容加进去。但是我找了半天也找不到wsdl的访问地址啊！<BR>有谁知道吗？</P><img src ="http://www.blogjava.net/mstar/aggbug/6420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-06-21 09:35 <a href="http://www.blogjava.net/mstar/archive/2005/06/21/6420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TheServerSide.com turns 5</title><link>http://www.blogjava.net/mstar/archive/2005/06/04/5546.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Fri, 03 Jun 2005 18:18:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/06/04/5546.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/5546.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/06/04/5546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/5546.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/5546.html</trackback:ping><description><![CDATA[TSS已经五岁了。<BR>越来越喜欢这个网站了。<BR>猛然发现：<!--StartFragment --> <SPAN style="FONT-SIZE: 120%">469065 </SPAN>members <BR><BR>全世界的Java技术人员都在上面混了！偶尔也能看到中国人发的帖子。<BR>偶只是潜水，还没发过帖呢！<img src ="http://www.blogjava.net/mstar/aggbug/5546.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-06-04 02:18 <a href="http://www.blogjava.net/mstar/archive/2005/06/04/5546.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>今天的项目进展比较大</title><link>http://www.blogjava.net/mstar/archive/2005/06/04/5545.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Fri, 03 Jun 2005 18:09:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2005/06/04/5545.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/5545.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2005/06/04/5545.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/5545.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/5545.html</trackback:ping><description><![CDATA[1、客户价值分析的公式终于实现玩了，并且可以产生图表。<BR>2、表现曾有JSF-RI转移到了MyFaces，加之JSR的东西就是好，转移没有费太大的事。<BR>3、原来一个需要生成好几条SQL语句的HQL，被我该写了，现在一条SQL就够了，不过这条SQL语句比较长，不知还能不能改进。感觉还是没有JDBC用这放心。<BR><BR>ps.一个不算Bug的bug，不知是什么原因，每次运行JSF，系统都要验证JSF配置文件的完整性，这就需要寻找DTD，而默认的DTD是在外网的，我的电脑有不是直接联到外网上，所以每次运行都发生异常。不得已，我就把每个jar包中配置文件都改了，让他们不找DTD（很多jar包中都是默认配置文件，都得改！）<img src ="http://www.blogjava.net/mstar/aggbug/5545.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2005-06-04 02:09 <a href="http://www.blogjava.net/mstar/archive/2005/06/04/5545.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>