<?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>博客园-antony－－异域空间</title><link>http://www.cnblogs.com/antony1029/</link><description>性格左右命运，气度影响格局！
学习.NET - JAVA 技术---- 深圳向左，我向右


</description><language>zh-cn</language><lastBuildDate>Sat, 30 Aug 2008 12:02:39 GMT</lastBuildDate><pubDate>Sat, 30 Aug 2008 12:02:39 GMT</pubDate><ttl>60</ttl><item><title>javascript---类的构建</title><link>http://www.cnblogs.com/antony1029/archive/2008/07/14/1242882.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Mon, 14 Jul 2008 12:34:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2008/07/14/1242882.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/1242882.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2008/07/14/1242882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/1242882.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/1242882.html</trackback:ping><description><![CDATA[<h3 class="" title=""><a href="http://ttitfly.javaeye.com/blog/193663">javascript---类的构建</a></h3>
<p class="" title="">转自 （<font face="Verdana"><a href="http://ttitfly.javaeye.com/blog/193663#comments">http://ttitfly.javaeye.com/blog/193663#comments</a>）</font></p>
<strong>关键字: javascript---类的构建</strong>
<div class="blog_content">javascript里构建类主要有4种方式 <br />
1.构造方式定义类 <br />
2.原型方式定义类 <br />
3.构造和原型结合方式创建类 <br />
4.动态的原型方式 <br />
<br />
各有优缺点,具体如下 <br />
1.<span style="color: red">构造方式定义类，优点:多个实例对象不共享类的属性值，缺点:每个实例对象都会产生出一个函数say</span> <br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ttitfly.javaeye.com/blog/193663#"><img alt="复制代码" src="http://ttitfly.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="comment">//构造方式定义类，优点:多个实例对象不共享类的属性值，缺点:每个实例对象都会产生出一个函数say </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>function&nbsp;User(){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.username&nbsp;=&nbsp;</span><span class="string">"zhangsan"</span><span>;</span><span class="comment">//this.不能丢 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.say&nbsp;=&nbsp;function(){</span><span class="comment">//this.不能丢 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">"username:"</span><span>&nbsp;+&nbsp;</span><span class="keyword">this</span><span>.username&nbsp;);</span><span class="comment">//this.不能丢 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//下面注释的这种写法不对 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span class="comment">//&nbsp;&nbsp;function&nbsp;say(){ </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span class="comment">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("username:"&nbsp;+&nbsp;this.username&nbsp;); </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span class="comment">//&nbsp;&nbsp;} </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>var&nbsp;user&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;User(); &nbsp;&nbsp;</span></span></li>
    <li><span>user.username&nbsp;=&nbsp;</span><span class="string">"lisi"</span><span>; &nbsp;&nbsp;</span></span></li>
    <li><span>user.say();</span><span class="comment">//username:lisi </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>var&nbsp;user1&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;User(); &nbsp;&nbsp;</span></span></li>
    <li><span>user1.say();</span><span class="comment">//username:zhangsan,不受user对象的影响</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">//构造方式定义类，优点:多个实例对象不共享类的属性值，缺点:每个实例对象都会产生出一个函数say
function User(){
this.username = "zhangsan";//this.不能丢
this.say = function(){//this.不能丢
alert("username:" + this.username );//this.不能丢
}
//下面注释的这种写法不对
//	function say(){
//		alert("username:" + this.username );
//	}
}
var user = new User();
user.username = "lisi";
user.say();//username:lisi
var user1 = new User();
user1.say();//username:zhangsan,不受user对象的影响
</pre>
<br />
<br />
//多个实例对象不共享类的属性值: <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ttitfly.javaeye.com/blog/193663#"><img alt="复制代码" src="http://ttitfly.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="comment">//多个实例对象不共享类的属性值，如下: </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>function&nbsp;User(){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.username&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Array();</span><span class="comment">//this.不能丢 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.say&nbsp;=&nbsp;function(){</span><span class="comment">//this.不能丢 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">"username:"</span><span>&nbsp;+&nbsp;</span><span class="keyword">this</span><span>.username&nbsp;);</span><span class="comment">//this.不能丢 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>var&nbsp;user&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;User(); &nbsp;&nbsp;</span></span></li>
    <li><span>user.username.push(</span><span class="string">"zhangsan"</span><span>); &nbsp;&nbsp;</span></span></li>
    <li><span>user.say();</span><span class="comment">//username:zhangsan </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>var&nbsp;user1&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;User(); &nbsp;&nbsp;</span></span></li>
    <li><span>user1.say();</span><span class="comment">//user1的username为空，不为zhangsan,因为user1的属性值不受user影响</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">//多个实例对象不共享类的属性值，如下:
function User(){
this.username = new Array();//this.不能丢
this.say = function(){//this.不能丢
alert("username:" + this.username );//this.不能丢
}
}
var user = new User();
user.username.push("zhangsan");
user.say();//username:zhangsan
var user1 = new User();
user1.say();//user1的username为空，不为zhangsan,因为user1的属性值不受user影响
</pre>
<br />
<br />
2.<span style="color: red">原型方式定义类,缺点:类的属性值如果是引用类型的(非Number和String类型)，则多个实例对象共享</span> <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ttitfly.javaeye.com/blog/193663#"><img alt="复制代码" src="http://ttitfly.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="comment">//原型方式定义类,缺点:类的属性值如果是引用类型的(非Number和String类型)，则多个实例对象共享 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>function&nbsp;User(){ &nbsp;&nbsp;</span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li><span>User.prototype.username&nbsp;=&nbsp;</span><span class="string">"zhangsan"</span><span>; &nbsp;&nbsp;</span></span></li>
    <li><span>User.prototype.say&nbsp;=&nbsp;function(){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">"username:&nbsp;"</span><span>&nbsp;+&nbsp;</span><span class="keyword">this</span><span>.username&nbsp;); &nbsp;&nbsp;</span></span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>var&nbsp;user&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;User(); &nbsp;&nbsp;</span></span></li>
    <li><span>user.username&nbsp;=&nbsp;</span><span class="string">"lisi"</span><span>; &nbsp;&nbsp;</span></span></li>
    <li><span>user.say();</span><span class="comment">//username:lisi </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>var&nbsp;user1&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;User(); &nbsp;&nbsp;</span></span></li>
    <li><span>user1.say();</span><span class="comment">//username:zhangsan</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">//原型方式定义类,缺点:类的属性值如果是引用类型的(非Number和String类型)，则多个实例对象共享
function User(){
}
User.prototype.username = "zhangsan";
User.prototype.say = function(){
alert("username: " + this.username );
}
var user = new User();
user.username = "lisi";
user.say();//username:lisi
var user1 = new User();
user1.say();//username:zhangsan
</pre>
<br />
<br />
类的属性值如果是引用类型的(非Number和String类型)，则多个实例对象共享： <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ttitfly.javaeye.com/blog/193663#"><img alt="复制代码" src="http://ttitfly.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="comment">//类的属性值如果是引用类型的(非Number和String类型)，则多个实例对象共享,如下 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>function&nbsp;User(){ &nbsp;&nbsp;</span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li><span>User.prototype.username&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Array(); &nbsp;&nbsp;</span></span></li>
    <li><span>User.prototype.say&nbsp;=&nbsp;function(){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">"username:&nbsp;"</span><span>&nbsp;+&nbsp;</span><span class="keyword">this</span><span>.username&nbsp;); &nbsp;&nbsp;</span></span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>var&nbsp;user&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;User(); &nbsp;&nbsp;</span></span></li>
    <li><span>user.username.push(</span><span class="string">"zhangsan"</span><span>)&nbsp;; &nbsp;&nbsp;</span></span></li>
    <li><span>user.say();</span><span class="comment">//username:zhangsan </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>var&nbsp;user1&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;User(); &nbsp;&nbsp;</span></span></li>
    <li><span>user1.say();</span><span class="comment">//username:zhangsan,因为user1属性也会受到user的影响，user1和user指向同一引用，即共享同一属性</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">//类的属性值如果是引用类型的(非Number和String类型)，则多个实例对象共享,如下
function User(){
}
User.prototype.username = new Array();
User.prototype.say = function(){
alert("username: " + this.username );
}
var user = new User();
user.username.push("zhangsan") ;
user.say();//username:zhangsan
var user1 = new User();
user1.say();//username:zhangsan,因为user1属性也会受到user的影响，user1和user指向同一引用，即共享同一属性
</pre>
<br />
<br />
3.<span style="color: red">构造和原型结合方式创建类:优点:类的方法只会产生一个，不会产生大量方法,同时属性还不共享;缺点:属性和方法分开定义不是太好。</span> <br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ttitfly.javaeye.com/blog/193663#"><img alt="复制代码" src="http://ttitfly.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="comment">//构造和原型结合方式创建类:优点:类的方法只会产生一个，不会产生大量方法,同时属性还不共享;缺点:属性和方法分开定义不是太好。 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>function&nbsp;User(){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.username&nbsp;=&nbsp;</span><span class="string">"zhangsan"</span><span>; &nbsp;&nbsp;</span></span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li><span>User.prototype.say&nbsp;=&nbsp;function(){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">"username:&nbsp;"</span><span>&nbsp;+&nbsp;</span><span class="keyword">this</span><span>.username&nbsp;); &nbsp;&nbsp;</span></span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li><span>var&nbsp;user&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;User(); &nbsp;&nbsp;</span></span></li>
    <li><span>alert(user.username);&nbsp;&nbsp;</span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">//构造和原型结合方式创建类:优点:类的方法只会产生一个，不会产生大量方法,同时属性还不共享;缺点:属性和方法分开定义不是太好。
function User(){
this.username = "zhangsan";
}
User.prototype.say = function(){
alert("username: " + this.username );
}
var user = new User();
alert(user.username);
</pre>
<br />
<br />
4.<span style="color: red">动态的原型方式:优点:类的方法只会产生一个，不会产生大量方法,同时属性还不共享,同时属性和方法不是分开定义的</span> <br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://ttitfly.javaeye.com/blog/193663#"><img alt="复制代码" src="http://ttitfly.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="comment">////动态的原型方式:优点:类的方法只会产生一个，不会产生大量方法,同时属性还不共享,同时属性和方法不是分开定义的 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>function&nbsp;User(){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.username&nbsp;=&nbsp;</span><span class="string">"zhangsan"</span><span>; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(typeof&nbsp;User.flag&nbsp;==&nbsp;</span><span class="string">"undefined"</span><span>){ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">"execute..."</span><span>); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User.prototype.say&nbsp;=&nbsp;function(){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">"username:&nbsp;"</span><span>&nbsp;+&nbsp;</span><span class="keyword">this</span><span>.username&nbsp;); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User.flag&nbsp;=&nbsp;</span><span class="keyword">true</span><span>; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>var&nbsp;user1&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;User();</span><span class="comment">//execute... </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>var&nbsp;user2&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;User();</span><span class="comment">//不会打印出execute...，则说明方法只创建了一次，即方法只会产生一个 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>user1.say();</span><span class="comment">//username</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">////动态的原型方式:优点:类的方法只会产生一个，不会产生大量方法,同时属性还不共享,同时属性和方法不是分开定义的
function User(){
this.username = "zhangsan";
if(typeof User.flag == "undefined"){
alert("execute...");
User.prototype.say = function(){
alert("username: " + this.username );
}
User.flag = true;
}
}
var user1 = new User();//execute...
var user2 = new User();//不会打印出execute...，则说明方法只创建了一次，即方法只会产生一个
user1.say();//username
</pre>
<br />
<br />
总结: <br />
<span style="color: red">构造方式定义类:缺点:类里的方法，每个实例对象都会产生一个，导致产生大量方法;优点:所有实例对象都单独拥有一份类里的属性，即属性不共享 <br />
原型方法定义类:缺点:所有实例对象都共同拥有一份类里的属性，即属性共享。优点:类的方法只会产生一个，不会产生大量方法 <br />
构造和原型结合方式创建类:优点:类的方法只会产生一个，不会产生大量方法,同时属性还不共享;缺点:属性和方法分开定义不是太好。 <br />
动态的原型方式:优点:类的方法只会产生一个，不会产生大量方法,同时属性还不共享,同时属性和方法不是分开定义的</span> </div>
<img src ="http://www.cnblogs.com/antony1029/aggbug/1242882.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41966/" target="_blank">[新闻]Google推出Android Market挑战App Store</a>]]></description></item><item><title>petshop 的sqlhelp</title><link>http://www.cnblogs.com/antony1029/archive/2008/07/13/1241675.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Sat, 12 Jul 2008 16:05:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2008/07/13/1241675.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/1241675.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2008/07/13/1241675.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/1241675.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/1241675.html</trackback:ping><description><![CDATA[摘要: //===============================================================================//ThisfileisbasedontheMicrosoftDataAccessApplicationBlockfor.NET//Formoreinformationpleasegoto//http://msdn.microsoft.c&nbsp;&nbsp;<a href='http://www.cnblogs.com/antony1029/archive/2008/07/13/1241675.html'>阅读全文</a><img src ="http://www.cnblogs.com/antony1029/aggbug/1241675.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41965/" target="_blank">[新闻]美国年轻人最喜欢的15大网站</a>]]></description></item><item><title>执行多条SQL语句，实现数据库事务。</title><link>http://www.cnblogs.com/antony1029/archive/2008/06/17/1224124.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Tue, 17 Jun 2008 08:47:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2008/06/17/1224124.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/1224124.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2008/06/17/1224124.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/1224124.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/1224124.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_0_144_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_0_144_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_0_144_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_0_144_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_0_144_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_0_144_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_0_144_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_0_144_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span id="Codehighlighter1_0_144_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_0_144_Open_Text"><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;summary&gt;</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;执行多条SQL语句，实现数据库事务。<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/summary&gt;</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;param&nbsp;name="SQLStringList"&gt;</span><span style="color: #008000">SQL语句的哈希表（key为sql语句，value是该语句的SqlParameter[]）</span><span style="color: #808080">&lt;/param&gt;</span></span><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;ExecuteSqlTran(Hashtable&nbsp;SQLStringList)<br />
<img id="Codehighlighter1_201_923_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_201_923_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_201_923_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_201_923_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_201_923_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_201_923_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_201_923_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_201_923_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_201_923_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_201_923_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;(SqlConnection&nbsp;conn</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SqlConnection(</span><span style="color: #0000ff">this</span><span style="color: #000000">.ConnectionString))<br />
<img id="Codehighlighter1_280_919_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_280_919_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_280_919_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_280_919_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_280_919_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_280_919_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_280_919_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_280_919_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_280_919_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_280_919_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.Open();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;(SqlTransaction&nbsp;trans&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;conn.BeginTransaction())&nbsp;<br />
<img id="Codehighlighter1_363_910_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_363_910_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_363_910_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_363_910_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_363_910_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_363_910_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_363_910_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_363_910_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_363_910_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_363_910_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 />
<img id="Codehighlighter1_386_837_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_386_837_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_386_837_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_386_837_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_386_837_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_386_837_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_386_837_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_386_837_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_386_837_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_386_837_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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: #008000">//</span><span style="color: #008000">循环</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&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: #0000ff">foreach</span><span style="color: #000000">&nbsp;(DictionaryEntry&nbsp;myDE&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;SQLStringList)<br />
<img id="Codehighlighter1_459_808_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_459_808_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_459_808_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_459_808_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_459_808_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_459_808_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_459_808_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_459_808_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&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 id="Codehighlighter1_459_808_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_459_808_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlCommand&nbsp;cmd&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SqlCommand();<br />
<img id="Codehighlighter1_564_571_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_564_571_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_564_571_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_564_571_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_564_571_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_564_571_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_564_571_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_564_571_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&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: #0000ff">string</span><span style="color: #000000">[]&nbsp;tmp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;myDE.Key.ToString&nbsp;().Split(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">[]&nbsp;</span><span id="Codehighlighter1_564_571_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_564_571_Open_Text"><span style="color: #000000">{&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">|</span><span style="color: #800000">'</span><span style="color: #000000">&nbsp;}</span></span><span style="color: #000000">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&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: #0000ff">string</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdText</span><span style="color: #000000">=</span><span style="color: #000000">tmp[</span><span style="color: #800080">1</span><span style="color: #000000">];<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlParameter[]&nbsp;cmdParms</span><span style="color: #000000">=</span><span style="color: #000000">(SqlParameter[])myDE.Value;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrepareCommand(cmd,conn,trans,cmdText,&nbsp;cmdParms);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&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: #0000ff">int</span><span style="color: #000000">&nbsp;val&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;cmd.ExecuteNonQuery();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.Parameters.Clear();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&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><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trans.Commit();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000"><br />
<img id="Codehighlighter1_854_904_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_854_904_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_854_904_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_854_904_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_854_904_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_854_904_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_854_904_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_854_904_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_854_904_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_854_904_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trans.Rollback();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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: #0000ff">throw</span><span style="color: #000000">;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<img src ="http://www.cnblogs.com/antony1029/aggbug/1224124.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41964/" target="_blank">[新闻]2008年8月30日IT博客精选</a>]]></description></item><item><title>存储过程 解密</title><link>http://www.cnblogs.com/antony1029/archive/2008/05/07/1186807.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Wed, 07 May 2008 06:10:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2008/05/07/1186807.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/1186807.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2008/05/07/1186807.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/1186807.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/1186807.html</trackback:ping><description><![CDATA[<font face="Verdana">
<p>--用<font face="Verdana">&nbsp;With Encryption 加密 ，</font>objectname&nbsp; 存储过程名 <br />
create proc decrypt <br />
@objectname varchar(100)<br />
as<br />
begin tran</p>
<p>declare @objectname1 varchar(100),@orgvarbin varbinary(8000)<br />
declare @sql1 nvarchar(4000),@sql2 varchar(8000),@sql3 nvarchar(4000),@sql4 nvarchar(4000)<br />
DECLARE @OrigSpText1 nvarchar(4000), @OrigSpText2 nvarchar(4000) , @OrigSpText3 nvarchar(4000), @resultsp nvarchar(4000)<br />
declare @i int,@status int,@type varchar(10),@parentid int<br />
declare @colid int,@n int,@q int,@j int,@k int,@encrypted int,@number int<br />
--set @objectname='TmSp_Purch_An_Crd_Grp_Y'/*添入存储过程名称*/<br />
select @type=xtype,@parentid=parent_obj from sysobjects where id=object_id(@ObjectName)</p>
<p>create table #temp(number int,colid int,ctext varbinary(8000),encrypted int,status int)<br />
insert #temp SELECT number,colid,ctext,encrypted,status FROM syscomments WHERE id = object_id(@objectName)<br />
select @number=max(number) from #temp<br />
set @k=0</p>
<p>while @k&lt;=@number <br />
begin<br />
if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)<br />
begin<br />
if @type='P'<br />
set @sql1=(case when @number&gt;1 then 'ALTER PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '<br />
else 'ALTER PROCEDURE '+ @objectName+' WITH ENCRYPTION AS '<br />
end)</p>
<p>if @type='TR'<br />
begin<br />
declare @parent_obj varchar(255),@tr_parent_xtype varchar(10)<br />
select @parent_obj=parent_obj from sysobjects where id=object_id(@objectName)<br />
select @tr_parent_xtype=xtype from sysobjects where id=@parent_obj<br />
if @tr_parent_xtype='V'<br />
begin<br />
set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTERD OF INSERT AS PRINT 1 '<br />
end<br />
else<br />
begin<br />
set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '<br />
end</p>
<p>end<br />
if @type='FN' or @type='TF' or @type='IF'<br />
set @sql1=(case @type when 'TF' then <br />
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '<br />
when 'FN' then<br />
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'<br />
when 'IF' then<br />
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'<br />
end)</p>
<p>if @type='V'<br />
set @sql1='ALTER VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f'</p>
<p>set @q=len(@sql1)<br />
set @sql1=@sql1+REPLICATE('-',4000-@q)<br />
select @sql2=REPLICATE('-',8000)<br />
set @sql3='exec(@sql1'<br />
select @colid=max(colid) from #temp where number=@k <br />
set @n=1<br />
while @n&lt;=CEILING(1.0*(@colid-1)/2) and len(@sQL3)&lt;=3996<br />
begin <br />
set @sql3=@sql3+'+@'<br />
set @n=@n+1<br />
end<br />
set @sql3=@sql3+')'<br />
exec sp_executesql @sql3,N'@Sql1 nvarchar(4000),@ varchar(8000)',@sql1=@sql1,@=@sql2</p>
<p>end<br />
set @k=@k+1<br />
end</p>
<p>set @k=0<br />
while @k&lt;=@number <br />
begin<br />
if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)<br />
begin<br />
select @colid=max(colid) from #temp where number=@k <br />
set @n=1</p>
<p>while @n&lt;=@colid<br />
begin<br />
select @OrigSpText1=ctext,@encrypted=encrypted,@status=status FROM #temp WHERE colid=@n and number=@k</p>
<p>SET @OrigSpText3=(SELECT ctext FROM syscomments WHERE id=object_id(@objectName) and colid=@n and number=@k)<br />
if @n=1<br />
begin<br />
if @type='P'<br />
SET @OrigSpText2=(case when @number&gt;1 then 'CREATE PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '<br />
else 'CREATE PROCEDURE '+ @objectName +' WITH ENCRYPTION AS '<br />
end)</p>
<p><br />
if @type='FN' or @type='TF' or @type='IF'<br />
SET @OrigSpText2=(case @type when 'TF' then <br />
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '<br />
when 'FN' then<br />
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'<br />
when 'IF' then<br />
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'<br />
end)</p>
<p>if @type='TR' <br />
begin</p>
<p>if @tr_parent_xtype='V'<br />
begin<br />
set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTEAD OF INSERT AS PRINT 1 '<br />
end<br />
else<br />
begin<br />
set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '<br />
end</p>
<p>end</p>
<p>if @type='V'<br />
set @OrigSpText2='CREATE VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f'</p>
<p>set @q=4000-len(@OrigSpText2)<br />
set @OrigSpText2=@OrigSpText2+REPLICATE('-',@q)<br />
end<br />
else<br />
begin<br />
SET @OrigSpText2=REPLICATE('-', 4000)<br />
end<br />
SET @i=1</p>
<p>SET @resultsp = replicate(N'A', (datalength(@OrigSpText1) / 2))</p>
<p>WHILE @i&lt;=datalength(@OrigSpText1)/2<br />
BEGIN</p>
<p>SET @resultsp = stuff(@resultsp, @i, 1, NCHAR(UNICODE(substring(@OrigSpText1, @i, 1)) ^<br />
(UNICODE(substring(@OrigSpText2, @i, 1)) ^<br />
UNICODE(substring(@OrigSpText3, @i, 1)))))<br />
SET @i=@i+1<br />
END<br />
set @orgvarbin=cast(@OrigSpText1 as varbinary(8000))<br />
set @resultsp=(case when @encrypted=1 <br />
then @resultsp <br />
else convert(nvarchar(4000),case when @status&amp;2=2 then uncompress(@orgvarbin) else @orgvarbin end)<br />
end)<br />
print @resultsp</p>
<p>set @n=@n+1</p>
<p>end</p>
<p>end<br />
set @k=@k+1<br />
end</p>
<p>drop table #temp<br />
rollback tran<br />
</font></p>
<img src ="http://www.cnblogs.com/antony1029/aggbug/1186807.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41963/" target="_blank">[新闻]《极品飞车12》最新真人照片、游戏截图</a>]]></description></item><item><title>一个计算周次和本周时间范围的代码(c#) </title><link>http://www.cnblogs.com/antony1029/archive/2008/02/17/1071612.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Sun, 17 Feb 2008 14:36:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2008/02/17/1071612.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/1071612.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2008/02/17/1071612.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/1071612.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/1071612.html</trackback:ping><description><![CDATA[//当天与该周星期一相差的天数<br />
&nbsp;&nbsp;private int getModdayNum(System.DayOfWeek dw)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;int weeknow = Convert.ToInt32(dw);<br />
&nbsp;&nbsp;&nbsp;int moddayNum = (-1) * weeknow+1;<br />
&nbsp;&nbsp;&nbsp;return moddayNum;<br />
&nbsp;&nbsp;}
<p><span style="color: #339966">&nbsp;&nbsp;//当天与该周星期日相差的天数</span><br />
&nbsp;&nbsp;private int getSundayNum(System.DayOfWeek dw)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;int weeknow = Convert.ToInt32(dw);<br />
&nbsp;&nbsp;&nbsp;int sundayNum = 7-weeknow;<br />
&nbsp;&nbsp;&nbsp;return sundayNum;<br />
&nbsp;&nbsp;}</p>
<p><span style="color: #339966">&nbsp;&nbsp;//该周星期一的日期</span><br />
&nbsp;&nbsp;private string getWeekMonday(System.DayOfWeek dw,string timeFormateStr)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;int weeknow = Convert.ToInt32(dw);<br />
&nbsp;&nbsp;&nbsp;int moddayNum = (-1) * weeknow+1;<br />
&nbsp;&nbsp;&nbsp;string weekMonday = System.DateTime.Now.AddDays(moddayNum).Date.ToString(timeFormateStr);<br />
&nbsp;&nbsp;&nbsp;return weekMonday;<br />
&nbsp;&nbsp;}</p>
<p><span style="color: #339966">&nbsp;&nbsp;//该周星期日的日期</span><br />
&nbsp;&nbsp;private string getWeekSunday(System.DayOfWeek dw,string timeFormateStr)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;int weeknow = Convert.ToInt32(dw);<br />
&nbsp;&nbsp;&nbsp;int sundayNum = 7-weeknow;<br />
&nbsp;&nbsp;&nbsp;string weekSunday = System.DateTime.Now.AddDays(sundayNum).Date.ToString(timeFormateStr);<br />
&nbsp;&nbsp;&nbsp;return weekSunday;<br />
&nbsp;&nbsp;}</p>
<p><span style="color: #339966">&nbsp;&nbsp;//本周是本年第几周</span><br />
&nbsp;&nbsp;private int weekNum(System.DayOfWeek dw)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;int weeknow = Convert.ToInt32(dw);//今天星期几<br />
&nbsp;&nbsp;&nbsp;int daydiff = (-1) * (weeknow+1);//今日与上周末的天数差<br />
&nbsp;&nbsp;&nbsp;int days = System.DateTime.Now.AddDays(daydiff).DayOfYear;//上周末是本年第几天<br />
&nbsp;&nbsp;&nbsp;int weeks = days/7;<br />
&nbsp;&nbsp;&nbsp;if(days%7 != 0)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;weeks++;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;return (weeks+2);<br />
&nbsp;&nbsp;}<br />
</p>
<p><span style="color: #339966">&nbsp;&nbsp; //调用方法</span><br />
&nbsp;&nbsp; string datetime = getWeekMonday(System.DateTime.Now.DayOfWeek,"yyyy-MM-dd");<br />
</p>
一个计算周次和本周时间范围的代码(c#)&nbsp;&nbsp; <script src="http://blog.csdn.net/count.aspx?ID=1353132&amp;Type=Rank"></script><span title="文章指数:30"><img src="http://blog.csdn.net/images/star.gif" border="0"  alt="" /><img src="http://blog.csdn.net/images/star_half.gif" border="0"  alt="" /></span>&nbsp;&nbsp;<img title="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" alt="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" src="http://blog.csdn.net/images/ask.gif" border="0" /> 
<img src ="http://www.cnblogs.com/antony1029/aggbug/1071612.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41962/" target="_blank">[新闻]IBM正在开发超强性能4TB固态硬盘阵列</a>]]></description></item><item><title>ASP计算周开始和一年有多少周及某年第一周开始日期</title><link>http://www.cnblogs.com/antony1029/archive/2008/02/17/1071609.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Sun, 17 Feb 2008 14:31:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2008/02/17/1071609.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/1071609.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2008/02/17/1071609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/1071609.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/1071609.html</trackback:ping><description><![CDATA[<div class="title"><span class="addtime">&lt;%<br />
Temp_F=firstday(2006)<br />
response.Write Temp_F&amp;"&lt;br&gt;"<br />
response.Write DateDiff("ww","2006-1-1","2006-12-31")&amp;"&lt;br&gt;" '计算一年有多少天<br />
Temp_N=getfst(2006,52)<br />
response.Write Temp_N&amp;"&lt;br&gt;"<br />
%&gt;</div>
<div class="logtxt">
<p>&lt;%</p>
<p>'计算某年第一周开始日期<br />
function firstday(inputyear)<br />
&nbsp;for i=cdate(inputyear&amp;"-1-1") to cdate(inputyear&amp;"-1-7")<br />
&nbsp; if weekday(i)=2 then<br />
&nbsp;&nbsp; firstday=i<br />
&nbsp;&nbsp; exit for<br />
&nbsp; end if<br />
&nbsp;next<br />
end function</p>
<p>'计算输入日期是该年第几周的函数<br />
Function CalcWeekNo(InputDate)<br />
&nbsp;toyear=year(inputdate)<br />
&nbsp;fday=firstday(toyear)<br />
&nbsp;if datediff("d",fday,inputdate)&lt;0 then<br />
&nbsp; fday=firstday(toyear-1)<br />
&nbsp;end if<br />
&nbsp;'calcweekno=fday<br />
&nbsp;daynum=datediff("d",fday,inputdate)<br />
&nbsp;calcweekno=int(daynum/7) 1<br />
end function</p>
<p>'根据周数和年份，计算该周第一天<br />
function getfst(inputyear,weekno)<br />
&nbsp;fday=firstday(inputyear)<br />
&nbsp;getfst=dateadd("d",(weekno-1)*7,fday)<br />
end function <br />
%&gt;</p>
</div>
</span>
<img src ="http://www.cnblogs.com/antony1029/aggbug/1071609.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41962/" target="_blank">[新闻]IBM正在开发超强性能4TB固态硬盘阵列</a>]]></description></item><item><title>如何控制在DataGrid中不能输入全角数字,符号,字母？ </title><link>http://www.cnblogs.com/antony1029/archive/2007/12/10/989457.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Mon, 10 Dec 2007 06:53:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2007/12/10/989457.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/989457.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2007/12/10/989457.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/989457.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/989457.html</trackback:ping><description><![CDATA[<p><font face="Courier New"><font face="Courier New">如何控制在DataGrid中不能输入全角数字,符号,字母？&nbsp;</font><br />
&nbsp; ===============================================&nbsp;&nbsp; <br />
&nbsp; 1.屏蔽全角&nbsp;&nbsp; <br />
&nbsp; 2.把全角转为半角&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp; private&nbsp;&nbsp; string&nbsp;&nbsp; ToDBS(string&nbsp;&nbsp; str)//全角转半角&nbsp;&nbsp; <br />
&nbsp; {&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; Regex.Replace(str,"[\\w]",new&nbsp;&nbsp; MatchEvaluator(RegReplace));&nbsp;&nbsp; <br />
&nbsp; }&nbsp;&nbsp; <br />
&nbsp; private&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp; RegReplace(Match&nbsp;&nbsp; m)&nbsp;&nbsp; <br />
&nbsp; {&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((int)m.Value[0]&gt;=65281&amp;(int)m.Value[0]&lt;=65374)return&nbsp;&nbsp; ((char)((int)m.Value[0]-65248)).ToString();&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((int)m.Value[0]==12288)return&nbsp;&nbsp; ((char)32).ToString();;&nbsp;&nbsp; <br />
&nbsp; return&nbsp;&nbsp; m.Value;&nbsp;&nbsp; <br />
&nbsp; }<br />
Top</font></p>
<p><font face="Courier New">&nbsp; ///&nbsp;&nbsp; 半角转全角&nbsp;&nbsp; <br />
&nbsp; ///&nbsp;&nbsp; &lt;/summary&gt;&nbsp;&nbsp; <br />
&nbsp; ///&nbsp;&nbsp; &lt;param&nbsp;&nbsp; name="BJstr"&gt;&lt;/param&gt;&nbsp;&nbsp; <br />
&nbsp; ///&nbsp;&nbsp; &lt;returns&gt;&lt;/returns&gt;&nbsp;&nbsp; <br />
&nbsp; static&nbsp;&nbsp; public&nbsp;&nbsp; string&nbsp;&nbsp; GetQuanJiao(string&nbsp;&nbsp; BJstr)&nbsp;&nbsp; <br />
&nbsp; {&nbsp;&nbsp; <br />
&nbsp; #region&nbsp;&nbsp; <br />
&nbsp; char[]&nbsp;&nbsp; c&nbsp;&nbsp; =&nbsp;&nbsp; BJstr.ToCharArray();&nbsp;&nbsp; <br />
&nbsp; for&nbsp;&nbsp; (int&nbsp;&nbsp; i&nbsp;&nbsp; =&nbsp;&nbsp; 0;&nbsp;&nbsp; i&nbsp;&nbsp; &lt;&nbsp;&nbsp; c.Length;&nbsp;&nbsp; i++)&nbsp;&nbsp; <br />
&nbsp; {&nbsp;&nbsp; <br />
&nbsp; byte[]&nbsp;&nbsp; b&nbsp;&nbsp; =&nbsp;&nbsp; System.Text.Encoding.Unicode.GetBytes(c,&nbsp;&nbsp; i,&nbsp;&nbsp; 1);&nbsp;&nbsp; <br />
&nbsp; if&nbsp;&nbsp; (b.Length&nbsp;&nbsp; ==&nbsp;&nbsp; 2)&nbsp;&nbsp; <br />
&nbsp; {&nbsp;&nbsp; <br />
&nbsp; if&nbsp;&nbsp; (b[1]&nbsp;&nbsp; ==&nbsp;&nbsp; 0)&nbsp;&nbsp; <br />
&nbsp; {&nbsp;&nbsp; <br />
&nbsp; b[0]&nbsp;&nbsp; =&nbsp;&nbsp; (byte)(b[0]&nbsp;&nbsp; -&nbsp;&nbsp; 32);&nbsp;&nbsp; <br />
&nbsp; b[1]&nbsp;&nbsp; =&nbsp;&nbsp; 255;&nbsp;&nbsp; <br />
&nbsp; c[i]&nbsp;&nbsp; =&nbsp;&nbsp; System.Text.Encoding.Unicode.GetChars(b)[0];&nbsp;&nbsp; <br />
&nbsp; }&nbsp;&nbsp; <br />
&nbsp; }&nbsp;&nbsp; <br />
&nbsp; }&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp; string&nbsp;&nbsp; strNew&nbsp;&nbsp; =&nbsp;&nbsp; new&nbsp;&nbsp; string(c);&nbsp;&nbsp; <br />
&nbsp; return&nbsp;&nbsp; strNew;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp; #endregion&nbsp;&nbsp; <br />
&nbsp; }&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp; ///&nbsp;&nbsp; &lt;summary&gt;&nbsp;&nbsp; <br />
&nbsp; ///&nbsp;&nbsp; 全角转半角&nbsp;&nbsp; <br />
&nbsp; ///&nbsp;&nbsp; &lt;/summary&gt;&nbsp;&nbsp; <br />
&nbsp; ///&nbsp;&nbsp; &lt;param&nbsp;&nbsp; name="QJstr"&gt;&lt;/param&gt;&nbsp;&nbsp; <br />
&nbsp; ///&nbsp;&nbsp; &lt;returns&gt;&lt;/returns&gt;&nbsp;&nbsp; <br />
&nbsp; static&nbsp;&nbsp; public&nbsp;&nbsp; string&nbsp;&nbsp; GetBanJiao(string&nbsp;&nbsp; QJstr)&nbsp;&nbsp; <br />
&nbsp; {&nbsp;&nbsp; <br />
&nbsp; #region&nbsp;&nbsp; <br />
&nbsp; char[]&nbsp;&nbsp; c&nbsp;&nbsp; =&nbsp;&nbsp; QJstr.ToCharArray();&nbsp;&nbsp; <br />
&nbsp; for&nbsp;&nbsp; (int&nbsp;&nbsp; i&nbsp;&nbsp; =&nbsp;&nbsp; 0;&nbsp;&nbsp; i&nbsp;&nbsp; &lt;&nbsp;&nbsp; c.Length;&nbsp;&nbsp; i++)&nbsp;&nbsp; <br />
&nbsp; {&nbsp;&nbsp; <br />
&nbsp; byte[]&nbsp;&nbsp; b&nbsp;&nbsp; =&nbsp;&nbsp; System.Text.Encoding.Unicode.GetBytes(c,&nbsp;&nbsp; i,&nbsp;&nbsp; 1);&nbsp;&nbsp; <br />
&nbsp; if&nbsp;&nbsp; (b.Length&nbsp;&nbsp; ==&nbsp;&nbsp; 2)&nbsp;&nbsp; <br />
&nbsp; {&nbsp;&nbsp; <br />
&nbsp; if&nbsp;&nbsp; (b[1]&nbsp;&nbsp; ==&nbsp;&nbsp; 255)&nbsp;&nbsp; <br />
&nbsp; {&nbsp;&nbsp; <br />
&nbsp; b[0]&nbsp;&nbsp; =&nbsp;&nbsp; (byte)(b[0]&nbsp;&nbsp; +&nbsp;&nbsp; 32);&nbsp;&nbsp; <br />
&nbsp; b[1]&nbsp;&nbsp; =&nbsp;&nbsp; 0;&nbsp;&nbsp; <br />
&nbsp; c[i]&nbsp;&nbsp; =&nbsp;&nbsp; System.Text.Encoding.Unicode.GetChars(b)[0];&nbsp;&nbsp; <br />
&nbsp; }&nbsp;&nbsp; <br />
&nbsp; }&nbsp;&nbsp; <br />
&nbsp; }&nbsp;&nbsp; <br />
&nbsp; string&nbsp;&nbsp; strNew&nbsp;&nbsp; =&nbsp;&nbsp; new&nbsp;&nbsp; string(c);&nbsp;&nbsp; <br />
&nbsp; return&nbsp;&nbsp; strNew;&nbsp;&nbsp; <br />
&nbsp; #endregion&nbsp;&nbsp; <br />
&nbsp; }<br />
</font></p>
<img src ="http://www.cnblogs.com/antony1029/aggbug/989457.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41961/" target="_blank">[新闻]Microsoft F# CTP(2008年9月)</a>]]></description></item><item><title>各类在线文档</title><link>http://www.cnblogs.com/antony1029/archive/2007/07/23/828480.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Mon, 23 Jul 2007 08:26:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2007/07/23/828480.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/828480.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2007/07/23/828480.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/828480.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/828480.html</trackback:ping><description><![CDATA[<a title="Permanent Link: 各类在线文档" href="http://bloglife.blogsome.com/2006/04/11/manual/" rel=bookmark>
<h3 class=storytitle>各类在线文档</a> <font color=#ff0000 size=16><strong>C/C++</strong></font></h3>
<div class=storycontent>
<p><a href="http://bloglife.blogsome.com/go.php?http://www.huihoo.com/gnu/c-basics/c_tutorial.html">C Language Tutorial</a>（英文）<br><a href="http://bloglife.blogsome.com/go.php?http://cplusplus.com/doc/tutorial/">C++ Language Tutorial</a>（英文）<br><a href="http://bloglife.blogsome.com/go.php?http://www.huihoo.com/gnu/c++-tutorial/tutorial/index.html">The cplusplus.com tutorial</a>（英文）</p>
<p><a href="http://bloglife.blogsome.com/go.php?http://www.relisoft.com/book/">C++ In Action</a>（英文）</p>
<p><font color=#ff0000 size=16><strong>Tools</strong></font></p>
<p><a href="http://bloglife.blogsome.com/go.php?http://www.huihoo.com/gnu/vim/vimum.html">VIM USER MANUAL</a>（英文）</p>
<p><a href="http://bloglife.blogsome.com/go.php?http://www.soforge.com/cvsdoc/zh_CN/">CVS 中文手册</a>（简体中文）<br><a href="http://bloglife.blogsome.com/go.php?http://ir.hit.edu.cn/~car/programming/cvs/cvs%20manual.htm">CVS 客户端使用手册</a>（简体中文）</p>
<p>Mozilla Cross-Reference<br><a href="http://bloglife.blogsome.com/go.php?http://lxr.mozilla.org/">http://lxr.mozilla.org/</a>（英文）</p>
<p><font color=#ff0000 size=16><strong>Python</strong></font></p>
<p>Python Documentation<br><a href="http://bloglife.blogsome.com/go.php?http://www.huihoo.com/python/Python-Docs-2.4.2/">http://www.huihoo.com/python/Python-Docs-2.4.2/</a>（英文）</p>
<p><font color=#ff0000 size=16><strong>Java家族</strong></font></p>
<p><a href="http://bloglife.blogsome.com/go.php?http://java.sun.com/docs/books/tutorial/index.html">The Java Tutorial</a>（英文）</p>
<p><a href="http://bloglife.blogsome.com/go.php?http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Code Conventions for the Java Programming Language</a>（英文）<br><a href="http://bloglife.blogsome.com/go.php?http://morningspace.51.net/resource/javacodeconv.html">Java语言编码规范(Java Code Conventions)</a>（简体中文）<br><a href="http://bloglife.blogsome.com/go.php?http://www.niufish.com/books/Pattern/">Java版模式速查手册</a>（英文）</p>
<p><a href="http://bloglife.blogsome.com/go.php?http://www.novocode.com/doc/servlet-essentials/">Servlet Essentials</a>（英文）</p>
<p>JDK SDK Docs<br><a href="http://bloglife.blogsome.com/go.php?http://java.sun.com/j2se/1.3/docs/index.html">http://java.sun.com/j2se/1.3/docs/index.html</a>（英文）<br><a href="http://bloglife.blogsome.com/go.php?http://java.sun.com/j2se/1.4.2/docs/index.html">http://java.sun.com/j2se/1.4.2/docs/index.html</a>（英文）<br><a href="http://bloglife.blogsome.com/go.php?http://java.sun.com/j2se/1.5.0/docs/index.html">http://java.sun.com/j2se/1.5.0/docs/index.html</a>（英文）</p>
<p>JavaTM 2 Platform, Standard Edition API Specification<br><a href="http://bloglife.blogsome.com/go.php?http://java.sun.com/j2se/1.3/docs/api/index.html">http://java.sun.com/j2se/1.3/docs/api/index.html</a>（英文）<br><a href="http://bloglife.blogsome.com/go.php?http://java.sun.com/j2se/1.4.2/docs/api/index.html">http://java.sun.com/j2se/1.4.2/docs/api/index.html</a>（英文）<br><a href="http://bloglife.blogsome.com/go.php?http://java.sun.com/j2se/1.5.0/docs/api/index.html">http://java.sun.com/j2se/1.5.0/docs/api/index.html</a>（英文）<br><a href="http://bloglife.blogsome.com/go.php?http://gceclub.sun.com.cn/download/Java_Docs/html/zh_CN/api/index.html">http://gceclub.sun.com.cn/download/Java_Docs/html/zh_CN/api/index.html</a>（简体中文）</p>
<p>JavaTM 2 Platform Enterprise Edition API Specification<br><a href="http://bloglife.blogsome.com/go.php?http://java.sun.com/j2ee/1.4/docs/api/index.html">http://java.sun.com/j2ee/1.4/docs/api/index.html</a>（英文）</p>
<p>Java ME<br><a href="http://bloglife.blogsome.com/go.php?http://java.sun.com/j2me/docs/index.html">http://java.sun.com/j2me/docs/index.html</a>（英文）</p>
<p>JavaServer Pages<br><a href="http://bloglife.blogsome.com/go.php?http://java.sun.com/products/jsp/docs.html">JavaServer Pages Technology - Documentation</a>（英文）</p>
<p>JSF<br><a href="http://bloglife.blogsome.com/go.php?http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630">http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630</a>（繁体中文）<br><a href="http://bloglife.blogsome.com/go.php?http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2637">http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2637</a>（繁体中文）</p>
<p>Spring<br><a href="http://bloglife.blogsome.com/go.php?http://www.springframework.org/docs/reference/index.html">http://www.springframework.org/docs/reference/index.html</a>（英文）<br><a href="http://bloglife.blogsome.com/go.php?http://www.jactiongroup.net/reference/html/index.html">http://www.jactiongroup.net/reference/html/index.html</a>（简体中文）</p>
<p>JBoss 3.0<br><a href="http://bloglife.blogsome.com/go.php?http://www.huihoo.com/jboss/online_manual/3.0/index.html">http://www.huihoo.com/jboss/online_manual/3.0/index.html</a>（英文）</p>
<p><font color=#ff0000 size=16><strong>Apache家族</strong></font></p>
<p>Apache HTTP Server<br><a href="http://bloglife.blogsome.com/go.php?http://www.phpx.com/man/apache/">Apache HTTP Server Version 1.3</a>（英文）<br><a href="http://bloglife.blogsome.com/go.php?http://www.phpx.com/man/apache2/">Apache HTTP Server Version 2.0 Documentation</a>（英文）<br><a href="http://bloglife.blogsome.com/go.php?http://w.yi.org/ftp/FAPM/apache/Apache/en/index.html">Apache HTTP Server Version 1.3</a>（英文）<br><a href="http://bloglife.blogsome.com/go.php?http://w.yi.org/ftp/FAPM/apache/Apache/zh/index.html">Apache 1.3 用户指南</a>（简体中文）<br><a href="http://bloglife.blogsome.com/go.php?http://w.yi.org/ftp/FAPM/apache/Apache2/en/index.html">Apache HTTP Server Version 2.0 Documentation</a>（英文）<br><a href="http://bloglife.blogsome.com/go.php?http://i18n.linux.net.cn/others/ApacheManual/">Apache HTTP服务器 2.0版本文档</a>（简体中文）</p>
<p><font color=#ff0000 size=16><strong>其它</strong></font></p>
<p>Movable Type<br><a href="http://bloglife.blogsome.com/go.php?http://w.yi.org/ftp/FAPM/apache/Apache/zh/index.html">Movable Type完全手冊</a>（繁体中文）</p>
<p><a href="http://bloglife.blogsome.com/go.php?http://www.phpeye.com/zf">Zend Framework手册 中文版</a>（简体中文）</p>
<p><a href="http://bloglife.blogsome.com/go.php?http://www.nyphp.org/content/presentations/svn/">Tools for Writing Better PHP Code Version Control with Subversion</a>（英文）</p>
<p><a href="http://bloglife.blogsome.com/go.php?http://bloglife.blogsome.com/wp-admin/post.php?action=edit&amp;post=57">PEAR Manual</a>（英文）</p>
<p>pet store<br><a href="https://blueprints.dev.java.net/petstore">https://blueprints.dev.java.net/petstore<br></a><a href="https://blueprints.dev.java.net/servlets/ProjectDocumentList?folderID=5315&amp;expandFolder=5315&amp;folderID=7201">https://blueprints.dev.java.net/servlets/ProjectDocumentList?folderID=5315&amp;expandFolder=5315&amp;folderID=7201</a><br>java：<a href="http://wjun530.cnblogs.com/">http://wjun530.cnblogs.com/</a></p>
</div><img src ="http://www.cnblogs.com/antony1029/aggbug/828480.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41960/" target="_blank">[新闻]微软4.86亿美元收购Greenfield</a>]]></description></item><item><title>关于VS.NET中多个项目的工程相互引用和多个dll引用的问题！ </title><link>http://www.cnblogs.com/antony1029/archive/2007/06/15/785082.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Fri, 15 Jun 2007 10:57:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2007/06/15/785082.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/785082.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2007/06/15/785082.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/785082.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/785082.html</trackback:ping><description><![CDATA[<div class=postText>
<p><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">（使用反射将业务对象绑定到 ASP.NET 窗体控件）</span><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/aspformbinding.mspx?mfr=true">http://www.microsoft.com/china/msdn/library/webservices/asp.net/aspformbinding.mspx?mfr=true</a><br></p>
<p>VS.NET的web解决方案中，一个解决方案里可能有很多工程，除了&#8220;表现层（UI层）工程以外&#8221;，其它工程都是dll工程。如果各个工程之间随便引用dll，经常会发生dll之间的引用冲突，导致工程无法编译。可以有2种解决方法：<br></p>
<p>1.如果把所有的工程都放在一个大的解决方案里，那么就要设置工程的编译顺序。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把只引用系统dll的工程最先编译，总有一些工程，只是引用System、System.Data、System.Xml等系统dll，这些工程就先编译。类推，引用到上面编译好的dll的工程后一步编译&#8230;&#8230;直到最后一个工程。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如何设置工程的编译顺序呢？在&#8220;解决方案&#8220;图标上点右键－&gt;&#8220;项目依赖项...&#8221;，在里面把各个项目的依赖项目设置好，在&#8220;项目生成顺序&#8221;里，项目的编译顺序就自动调整好了，这样编译的时候就不会出现dll冲突的问题了！<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这种方法的好处是，每次只要编译一遍，就能把所有的工程都编译好，保证从vss里签出的文件都能被编译。缺点是，要是编译很大的解决方案要n长时间！</p>
<p>2.把各个工程单独编译，并把dll输出到同一个指定的目录下，所有的工程都引用改目录下的dll。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果你同时打开了2个以上的VS.NET并相互的工程，那么，有可能在编译时，系统会报错，说指定的dll正被占用。</p>
<p>该种方式要做的事是：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.指定输出目录，在工程图标上点右键－&gt;&#8220;配置属性&#8221;里的&#8220;生成&#8221;、&#8220;输出&#8221;，设置好输出路径，再在&#8220;通用属性&#8221;里把&#8220;引用路径&#8221;里的错误dll引用路径删除。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b.不把引用的dll拷贝到本地目录。把项目引用dll全选中，在属性里的&#8220;复制本地&#8221;设为false就可以了，不设的话有可能发生&#8220;变量已在多处重复定义&#8221;的错误。主要，对于UI层工程（就是能运行的工程），一定要把所有改工程引用到的dll都拷贝到其bin目录下，因为&#8220;能运行的工程&#8221;在运行时只会到bin目录下寻找dll，没有的话，就会报找不到dll的运行时错误！<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这种方法的好处是各个项目组只要编译自己的dll，然后提交给配置管理员，由配置管理员统一编译整个解决方案，速度比较快。缺点是，如果某个项目组只更新了源代码文件，没有提交编译好的dll，那么解决方案里引用的就不是最新的dll。</p>
<p>以上2种方法可以解决dll之间引用冲突的问题！</p>
</div><img src ="http://www.cnblogs.com/antony1029/aggbug/785082.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41959/" target="_blank">[新闻]苹果已然取代微软地位成行业众矢之的</a>]]></description></item><item><title>把192.168.1.23 换成192.168.1.* </title><link>http://www.cnblogs.com/antony1029/archive/2007/05/12/744021.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Sat, 12 May 2007 08:17:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2007/05/12/744021.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/744021.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2007/05/12/744021.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/744021.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/744021.html</trackback:ping><description><![CDATA[<p><br>&nbsp;string tarIP = srcIP.Substring(0, srcIP.LastIndexOf(".") + 1) + "*";<br></p>
<p>&nbsp;string[] temp = s.Split(new char[] { '.' });<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string tt = temp[0] + "." + temp[1] + "." + temp[2] + ".*";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(tt);</p>
<p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Text = Regex.Replace("196.168.16.23", @"(\d+.\d+.\d+.)(\d+)", "$1*");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(Text);</p><img src ="http://www.cnblogs.com/antony1029/aggbug/744021.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41958/" target="_blank">[新闻]Intel 收购 Poky Linux ,为 MID 注入新的动力</a>]]></description></item><item><title>JSP的对象</title><link>http://www.cnblogs.com/antony1029/archive/2007/04/30/732928.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Sun, 29 Apr 2007 17:05:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2007/04/30/732928.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/732928.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2007/04/30/732928.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/732928.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/732928.html</trackback:ping><description><![CDATA[一、page&nbsp;对象<br>&nbsp;&nbsp;&nbsp;&nbsp;page对象代表JSP本身，更准确地说它代表JSP被转译后的Servlet，它可以调用Servlet类所定义的方法。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>二、config&nbsp;对象<br>&nbsp;&nbsp;&nbsp;&nbsp;config&nbsp;对象里存放着一些Servlet&nbsp;初始的数据结构。<br>&nbsp;&nbsp;&nbsp;&nbsp;config&nbsp;对象实现于javax.servlet.ServletConfig&nbsp;接口，它共有下列四种方法：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;String&nbsp;getInitParameter(name)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;java.util.Enumeration&nbsp;getInitParameterNames(&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;ServletContext&nbsp;getServletContext(&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Sring&nbsp;getServletName(&nbsp;)<br><br>三、request&nbsp;对象<br>&nbsp;&nbsp;&nbsp;&nbsp;request&nbsp;对象包含所有请求的信息，如：请求的来源、标头、cookies和请求相关的参数值等等。<br>&nbsp;&nbsp;&nbsp;&nbsp;request&nbsp;对象实现javax.servlet.http.HttpServletRequest接口的，所提供的方法可以将它分为四大类：<br>&nbsp;&nbsp;&nbsp;&nbsp;1.储存和取得属性方法；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;setAttribute(String&nbsp;name,&nbsp;Object&nbsp;value)&nbsp;&nbsp;&nbsp;&nbsp;设定name属性的值为value<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enumeration&nbsp;getAttributeNamesInScope(int&nbsp;scope)&nbsp;&nbsp;&nbsp;&nbsp;取得所有scope&nbsp;范围的属性<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;getAttribute(String&nbsp;name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得name&nbsp;属性的值<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;removeAttribute(String&nbsp;name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;移除name&nbsp;属性的值<br>&nbsp;&nbsp;&nbsp;&nbsp;2.取得请求参数的方法<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getParameter(String&nbsp;name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得name&nbsp;的参数值<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enumeration&nbsp;getParameterNames(&nbsp;)&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;String&nbsp;[]&nbsp;getParameterValues(String&nbsp;name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得所有name&nbsp;的参数值<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&nbsp;getParameterMap(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得一个要求参数的Map<br>&nbsp;&nbsp;&nbsp;&nbsp;3.能够取得请求HTTP&nbsp;标头的方法<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getHeader(String&nbsp;name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得name&nbsp;的标头<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enumeration&nbsp;getHeaderNames()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;Enumeration&nbsp;getHeaders(String&nbsp;name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得所有name&nbsp;的标头<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;getIntHeader(String&nbsp;name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得整数类型name&nbsp;的标头<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;getDateHeader(String&nbsp;name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得日期类型name&nbsp;的标头<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cookie&nbsp;[]&nbsp;getCookies(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得与请求有关的cookies<br>&nbsp;&nbsp;&nbsp;&nbsp;4.其他的方法<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getContextPath(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得Context&nbsp;路径(即站台名称)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getMethod(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得HTTP&nbsp;的方法(GET、POST)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getProtocol(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得使用的协议&nbsp;(HTTP/1.1、HTTP/1.0&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getQueryString(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得请求的参数字符串，不过，HTTP的方法必须为GET<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getRequestedSessionId(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得用户端的Session&nbsp;ID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getRequestURI(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得请求的URL，但是不包括请求的参数字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getRemoteAddr(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得用户的IP&nbsp;地址<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getRemoteHost(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;int&nbsp;getRemotePort(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;String&nbsp;getRemoteUser(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;void&nbsp;etCharacterEncoding(String&nbsp;&nbsp;&nbsp;&nbsp;encoding)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设定编码格式，用来解决窗体传递中文的问题<br><br>四、response&nbsp;对象<br>&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;对象主要将JSP&nbsp;处理数据后的结果传回到客户端。<br>&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;对象是实现javax.servlet.http.HttpServletResponse&nbsp;接口。response对象所提供的方法。<br>&nbsp;&nbsp;&nbsp;&nbsp;1.设定表头的方法<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;addCookie(Cookie&nbsp;cookie)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;新增cookie<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;addDateHeader(String&nbsp;name,&nbsp;long&nbsp;date)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;新增long类型的值到name标头<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;addHeader(String&nbsp;name,&nbsp;String&nbsp;value)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;新增String类型的值到name标头<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;addIntHeader(String&nbsp;name,&nbsp;int&nbsp;value)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;新增int类型的值到name标头<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;setDateHeader(String&nbsp;name,&nbsp;long&nbsp;date)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定long类型的值到name标头<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;setHeader(String&nbsp;name,&nbsp;String&nbsp;value)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定String类型的值到name标头<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;setIntHeader(String&nbsp;name,&nbsp;int&nbsp;value)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定int类型的值到name标头<br>&nbsp;&nbsp;&nbsp;&nbsp;2.设定响应状态码的方法<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;sendError(int&nbsp;sc)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;传送状态码(status&nbsp;code)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;sendError(int&nbsp;sc,&nbsp;String&nbsp;msg)&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;void&nbsp;setStatus(int&nbsp;sc)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设定状态码<br>&nbsp;&nbsp;&nbsp;&nbsp;3.用来URL&nbsp;重写(rewriting)的方法&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;encodeRedirectURL(String&nbsp;&nbsp;&nbsp;&nbsp;url)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对使用sendRedirect(&nbsp;)方法的URL予以编码<br><br>五、out&nbsp;对象<br>&nbsp;&nbsp;&nbsp;&nbsp;out&nbsp;对象能把结果输出到网页上。<br>&nbsp;&nbsp;&nbsp;&nbsp;out主要是用来控制管理输出的缓冲区(buffer)和输出流(output&nbsp;stream)。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;clear(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;void&nbsp;clearBuffer(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;void&nbsp;close(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;int&nbsp;getBufferSize(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得目前缓冲区的大小(KB)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;getRemaining(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得目前使用后还剩下的缓冲区大小(KB)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;isAutoFlush(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回传true表示缓冲区满时会自动清除；false表示不会自动清除并且产生异常处理<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>六、session&nbsp;对象<br>&nbsp;&nbsp;&nbsp;&nbsp;session对象表示目前个别用户的会话(session)状况。<br>&nbsp;&nbsp;&nbsp;&nbsp;session对象实现javax.servlet.http.HttpSession接口，HttpSession接口所提供的方法<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;getCreationTime()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得session产生的时间，单位是毫秒<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getId()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得session&nbsp;的ID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;getLastAccessedTime()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得用户最后通过这个session送出请求的时间<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;getMaxInactiveInterval()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得最大session不活动的时间，若超过这时间，session&nbsp;将会失效<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;invalidate()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取消session&nbsp;对象，并将对象存放的内容完全抛弃<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;isNew()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;判断session&nbsp;是否为"新"的<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;setMaxInactiveInterval(int&nbsp;&nbsp;&nbsp;&nbsp;interval)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设定最大session不活动的时间，若超过这时间，session&nbsp;将会失效<br><br>七、application对象<br>&nbsp;&nbsp;&nbsp;&nbsp;application对象最常被使用在存取环境的信息。<br>&nbsp;&nbsp;&nbsp;&nbsp;因为环境的信息通常都储存在ServletContext中，所以常利用application对象来存取ServletContext中的信息。<br>&nbsp;&nbsp;&nbsp;&nbsp;application&nbsp;对象实现javax.servlet.ServletContext&nbsp;接口，ServletContext接口容器所提供的方法<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;getMajorVersion(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得Container主要的Servlet&nbsp;API版本<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;getMinorVersion(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得Container次要的Servlet&nbsp;API&nbsp;版本<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getServerInfo(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得Container的名称和版本<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getMimeType(String&nbsp;file)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得指定文件的MIME&nbsp;类型<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletContext&nbsp;getContext(String&nbsp;uripath)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得指定Local&nbsp;URL的Application&nbsp;context<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;getRealPath(String&nbsp;path)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取得本地端path的绝对路径<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;log(String&nbsp;message)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将信息写入log文件中<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;log(String&nbsp;message,&nbsp;Throwable&nbsp;throwable)&nbsp;&nbsp;&nbsp;&nbsp;将stack&nbsp;trace&nbsp;所产生的异常信息写入log文件中<br><br>八、pageContext对象<br>&nbsp;&nbsp;&nbsp;&nbsp;pageContext对象能够存取其他隐含对象。<br>&nbsp;&nbsp;&nbsp;&nbsp;1.pageContext对象存取其他隐含对象属性的方法，此时需要指定范围的参数。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;getAttribute(String&nbsp;name,&nbsp;int&nbsp;scope)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enumeration&nbsp;getAttributeNamesInScope(int&nbsp;scope)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;removeAttribute(String&nbsp;name,&nbsp;int&nbsp;scope)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;setAttribute(String&nbsp;name,&nbsp;Object&nbsp;value,&nbsp;int&nbsp;scope)<br>&nbsp;&nbsp;&nbsp;&nbsp;范围参数有四个，分别代表四种范围：PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、APPLICATION_SCOPE<br>&nbsp;&nbsp;&nbsp;&nbsp;2.PageContext对象取得其他隐含对象的方法<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exception&nbsp;getException(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回传目前网页的异常，不过此网页要为error&nbsp;page，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JspWriter&nbsp;getOut(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回传目前网页的输出流，例如：out&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;getPage(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回传目前网页的Servlet&nbsp;实体(instance)，例如：page<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletRequest&nbsp;getRequest(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回传目前网页的请求，例如：request<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletResponse&nbsp;getResponse(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回传目前网页的响应，例如：response<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletConfig&nbsp;getServletConfig(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回传目前此网页的ServletConfig&nbsp;对象，例如：config<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletContext&nbsp;getServletContext(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回传目前此网页的执行环境(context)，例如：application<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpSession&nbsp;getSession(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回传和目前网页有联系的会话(session)，例如：session<br>&nbsp;&nbsp;&nbsp;&nbsp;3.PageContext对象提供取得属性的方法<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;getAttribute(String&nbsp;name,&nbsp;int&nbsp;scope)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回传name&nbsp;属性，范围为scope的属性对象，回传类型为Object<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enumeration&nbsp;getAttributeNamesInScope(int&nbsp;scope)&nbsp;&nbsp;&nbsp;&nbsp;回传所有属性范围为scope&nbsp;的属性名称，回传类型为Enumeration<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;getAttributesScope(String&nbsp;name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回传属性名称为name&nbsp;的属性范围<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;removeAttribute(String&nbsp;name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;移除属性名称为name&nbsp;的属性对象<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;removeAttribute(String&nbsp;name,&nbsp;int&nbsp;scope)&nbsp;&nbsp;&nbsp;&nbsp;移除属性名称为name，范围为scope&nbsp;的属性对象<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;setAttribute(String&nbsp;name,&nbsp;Object&nbsp;value,&nbsp;int&nbsp;scope)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定属性对象的名称为name、值为value、范围为scope<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;findAttribute(String&nbsp;name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;寻找在所有范围中属性名称为name&nbsp;的属性对象<br><br>九、exception对象<br>&nbsp;&nbsp;&nbsp;&nbsp;若要使用exception&nbsp;对象时，必须在page&nbsp;指令中设定。&lt;%@&nbsp;page&nbsp;isErrorPage="true"&nbsp;%&gt;才能使用。<br>&nbsp;&nbsp;&nbsp;&nbsp;exception提供的三个方法：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getMessage(&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getLocalizedMessage(&nbsp;)、<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printStackTrace(new&nbsp;java.io.PrintWriter(out))&nbsp;&nbsp;<img src ="http://www.cnblogs.com/antony1029/aggbug/732928.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41957/" target="_blank">[新闻]雅虎将关闭社交网站Mash</a>]]></description></item><item><title>三种方法在局域网中自由散发信息 </title><link>http://www.cnblogs.com/antony1029/archive/2007/04/25/727337.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Wed, 25 Apr 2007 13:04:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2007/04/25/727337.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/727337.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2007/04/25/727337.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/727337.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/727337.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>很多人也许都有过这样的经历：正在机房使用电脑时，屏幕上突然弹出一个消息窗口，把你吓了一跳！这些消息窗口通常都是机房或公司的网管发送过来的，目的大多是向使用者公布一些重要事项，例如通知下课啦、或是机房即将关闭等消息。你想知道如何发布这些消息吗？本文可以告诉你！其实发送这样的消息并不难，你可以采用以下三种方法： </p>
<p>　　一、利用Microsoft管理控制台(MMC)发消息 </p>
<p>　　Windows XP中有一个Microsoft管理控制台(MMC)，可以让你向工作组或域中的每一台计算机发送消息，你发送的消息将在对方的桌面上显示，以便网管向全体用户广播消息。使用MMC发送消息的方法如下： </p>
<p>　　在Windows XP中，依次点击菜单&#8220;开始&#8221;/设置/控制面版，在控制面板中单击&#8220;Administrative Tools(管理工具)&#8221;，双击Computer Management(计算机管理)；在计算机管理窗口中，点击&#8220;操作&#8221;菜单，选择&#8220;All Tasks(所有任务)&#8221;/发送控制台消息；然后在弹出的窗口，输入要发送的消息，按&#8220;添加&#8221;按钮，选中要接收该消息的电脑，最后按&#8220;发送&#8221;按钮即可。以后你发送的消息，将在对方桌面上Messenger Service(消息服务)框中予以显示。 </p>
<p>　　如果对方不在收件人列表中，你可以单击&#8220;添加&#8221;按钮，创建新的计算机；随之会弹出&#8220;选择计算机&#8221;对话框，然后在其中选择要访问的工作组或域，点击相应的计算名称，把它们添加到收件人列表中。 </p>
<p>　　小提示：只有你具备本地计算机上的管理权限，才能访问Microsoft管理控制台(MMC)、利用MMC发送消息，如果当前账户没有管理权限，请换用一个管理员账户重新登录Windows系统，以上技巧已在Windows XP Professional上测试成功。 </p>
<p>　　二、使用net send命令发消息 </p>
<p>　　Windows XP/2000中提供了一条发送网络消息的命令net send，使用该命令也可以向局域网/广域网发送一条消息，注意不能跨网段！命令格式为：net send计算机名/IP地址 &#8220;消息内容&#8221;。 </p>
<p>　　例如：要给IP地址为192.192.192.1的电脑，发送&#8220;还有5分钟就下班关闭服务器了&#8221;这条消息，可以这样操作：单击菜单&#8220;开始&#8221;/程序/附件/命令提示符，键入以下命令： </p>
<p>　　net send 192.192.192.1 "还有5分钟就下班关闭服务器了" </p>
<p>　　稍等片刻，192.192.192.1电脑桌面上将会弹出一个标题为&#8220;信使服务&#8221;的窗口，里面显示你发送的消息。 </p>
<p>　　小提示：假如对方关闭了Messenger服务，这条消息就不会显示了。如果你不想收到该类消息，也可以点击菜单&#8220;开始&#8221;／设置／控制面板／管理工具／服务，在服务中关闭&#8220;Messenger服务&#8221;；如果想启动Messenger服务，你可以在服务中操作。当然也可以使用以下命令启动或禁止Messenger服务： </p>
<p>　　net stopMessenger 停止Messenger服务； </p>
<p>　　net startMessenger开始Messenger服务 </p>
<p>　　三、使用软件net send GUI发消息 </p>
<p>　　以上方法发送消息，实际上是利用了微软Windows的Messenger服务，使用生硬的指令发送信息其实并不容易，除了要记得指令外还要选择信息广播的范围，用起来实在有点不顺手。如果对公司的 MIS 人员来说，有时候要广播的对象可能只是某一个部门或楼层，那么选择范围时就更加困难了，这时候，Net Send GUI软件就派上了用场，使用它发消息易如反掌。 </p>
<p>　　net send GUI小档案 </p>
<p>　　软件大小：106 K </p>
<p>　　适用平台：Windows XP/2000/NT </p>
<p>　　下载地址：<a href="http://www.snapfiles.com/get/netsendgui.html">www.snapfiles.com/get/netsendgui.html</a> </p>
<p>　　Net Send GUI是一款免费的小工具，它可以让你在图形界面上发送消息，一改过去用命令发消息的不便，让你操作起来更加简单。你可以利用 Net Send GUI 来指定所要广播的范围、消息，甚至还可以指定仅广播某个 domain 的范围喔。 </p>
<p>　　Net Send GUI是一款绿色软件，无需安装，运行后只有一个画面。如果你要对当前域中所有的电脑广播消息，可以勾选&#8220;This Domin&#8221;；如果要指定广播特定的域，则勾选&#8220;Specific Domin&#8221;，然后在Domin Name栏输入该域的名称，在Message中输入要广播的信息。 </p>
<p>　　如果要给某一个IP地址的电脑发消息，你就不要勾选&#8220;This Domin&#8221;和&#8220;Specific Domin&#8221;，在&#8220;Message To&#8221;栏输入该电脑的IP，然后在Message中输入要广播的信息，按&#8220;Send&#8221;按钮即可发送。 </p>
<p>　　此外，Net Send GUI 也不只是一款消息广播器，它还能够提供探测功能(Ping)，点击&#8220;Ping&#8221;按钮，可以帮助网络管理人员确认有哪些计算机还没有关机，方便网管人员的管理。&nbsp; <br></p>
<p>&nbsp;</p><img src ="http://www.cnblogs.com/antony1029/aggbug/727337.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41956/" target="_blank">[新闻]中国互联网战争局势图</a>]]></description></item><item><title>Java试题</title><link>http://www.cnblogs.com/antony1029/archive/2007/03/15/675313.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Wed, 14 Mar 2007 23:35:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2007/03/15/675313.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/675313.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2007/03/15/675313.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/675313.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/675313.html</trackback:ping><description><![CDATA[<div class=tpc_content><a href="http://community.csdn.net/Expert/topic/5267/5267215.xml?temp=.9871485">http://community.csdn.net/Expert/topic/5267/5267215.xml?temp=.9871485</a><br><a href="http://bbs.mirway.cn/">http://bbs.mirway.cn</a><br><a href="http://community.csdn.net/Expert/topic/5394/5394426.xml?temp=.8871729">http://community.csdn.net/Expert/topic/5394/5394426.xml?temp=.8871729</a><br><a href="http://tag.csdn.net/Article/03e37e65-f6d3-4534-9d75-ea0f73b069ef.html">http://tag.csdn.net/Article/03e37e65-f6d3-4534-9d75-ea0f73b069ef.html</a><br>1、 &nbsp; &nbsp;概述struts，以及struts如何实现MVC架构的？<br>答：struts framework是一种基于java的技术，Web应用程序开发人员通过struts framework即可充分利用面向对象设计、代码重用以及&#8220;编写一次、到处运行&#8221;的优点。Struts提供了一种创建Web应用程序的框架，其中对应用程序的显示、表示和数据的后端代码进行了抽象。Struts采用jsp作为MVC的视图,由ActionServlet具体指定的action动作类作为控制器即MVC中的C，负责视图与模型之间的交互。控制器的每个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的JAVA类以进行相应的处理，控制器还指定下一个视图的位置。Struts中的模型主要指的就是javabean，它是模型的代表，主要封装数据和业务逻辑。<br>Struts的处理流程：<br> &nbsp; &nbsp;控制器进行初始化工作，读取配置文件，为不同的Struts模块初始化相应的ModulConfig对象。<br> &nbsp; &nbsp;控制器接收Http请求，并从ActionConfig中找出对应于该请求的Action子类，如果没有对应的Action，控制器直接将请求转发给JSP或者静态页面，否则控制器将请求分发至具体的Action类进行处理。<br> &nbsp; &nbsp;在控制器调用具体的Action的Execute方法之前，ActionForm对象将利用Http请求中的参数来填充自已。还可以在ActionForm类中调用Validate方法来检查请求参数的合法性，并且可以返回一个包含所有错误信息的ActionErrors对象。<br> &nbsp; &nbsp;执行具体的的Execute的方法，它负责执行相应的业务逻辑。执行完后，返回一个ActionForward对象，控制器通过该ActionForward对象来进行转发工作。也可以把Action要处理的业务逻辑封装在JavaBean中，如果系统中还有EJB，那么通过JavaBean调用EJB以完成业务处理；如果没有EJB，那么就直接在JavaBean中连接数据库，进行数据库相关的操作。<br><br>2、 &nbsp; &nbsp;概述MVC体系结构<br>答：MVC包括三类对象，model是应用对象，view是视图，controller是控制器，它定义用户界面对用户输入的响应方式。<br>在MVC体系中，模型通常被称为&#8220;业务逻辑&#8221;，是真正完成任务的代码，视图就是使用界面，反映数据的变化。控制器控制着模型和视图之间的交互过程，它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型<br>在MVC中，表示层和逻辑层分离，各部分可相互独立进行开发，便于开发和维护，提高了开发效率。<br><br>3、 &nbsp; &nbsp;多线程的优点<br>答：可分两方面来答：<br> &nbsp; &nbsp;相对于单线程而言 ：<br>可以响应多任务的并发操作。<br>多线程取消了主循环和轮流检测机制，一个线程可以暂停而不阻止系统其他的部分的执行，而且当程序中一个线程阻塞时，只有那个被阻塞的线程暂停，所有其他的线程继续执行。<br> &nbsp; &nbsp;相对于进程而言：(可以答也可以不答)<br>它所要求的开销比较小，转换成本较小。<br>所有线程共享同一地址空间，相互协作。<br>彼此之间通信很容易。<br><br>4、 &nbsp; &nbsp;EJB概述<br>答：EJB是企业级的JavaBean，它提供了构建企业级业务逻辑的一种组件模型。<br>&nbsp; EJB分为三种：Session Bean Entity Bean Message-Driven Bean 三种，其中Session Bean分为有状态和无状态Session Bean两种,Entity Bean分为容器管理的Entity Bean ( CMP ) 和 Bean管理的 Entity Bean ( BMP )。每一个EJB由一个远程接口、一个本地接口和一个EJB容器实现组成，远程接口声明了提供给EJB客户调用的各种应用方法，本地接口声明了创建新的EJB实例的create方法、寻找EJB实例的查找(finder)方法以及刪除EJB实例的remove方法。EJB容器提供了EJB的运行环境和生命周期的管理。<br>5、 &nbsp; &nbsp;用java访问Oracle数据库、取得记录并输出到界面<br>答：&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<br>&nbsp; Class.forName(&#8220;oracle.jdbc.driver.OracleDriver&#8221;);<br>&nbsp; Connection conn=DriverManager.getConnection( url , username , password );<br>&nbsp; Statement stmt=conn.createStatement();<br>&nbsp; String str=&#8221;select * from [table]&#8221;;<br>&nbsp; ResultSet rs=stmt.executeQuery(str);<br>&nbsp; While(rs.next())<br>&nbsp; {<br>&nbsp; &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br>&nbsp; }<br>&nbsp; rs.close();<br>&nbsp; stmt.close();<br>&nbsp; conn.close();<br><br>6、 &nbsp; &nbsp;概述java垃圾回收机制<br>答：它的工作原理如下：<br>&nbsp; 当不存在对一个对象的引用时，我们就假定不再需要那个对象，那个对象所占有的存储单元可以被收回，可通过System.gc()方法回收，但一般要把不再引用的对象标志为null为佳。<br><br>7、 &nbsp; &nbsp;java类是否可以多继承，怎么实现多继承？<br>答：java没有多继承，但可以通过接口的形式来达到多继承的目地。<br><br>8、 &nbsp; &nbsp;面向对象的特点<br>答：面向对象有三大特点：封装、继承、多态。(如果要回答四个，可加上 抽象性 这一特点)<br><br>9、接口有什么优点<br>答：接口有以下优点：<br> &nbsp; &nbsp;接口只是一个框架而没有实现，因此在接口定义时不需要考虑接口中的方法如何实现。<br> &nbsp; &nbsp;利用接口可达到实现多继承的目地。<br> &nbsp; &nbsp;可以在不暴露对象的类的前提下，暴露对象的编程接口。<br> &nbsp; &nbsp;不用强迫类关系在无关类中截获相似处(采用适配器就可以了)。<br> &nbsp; &nbsp;声明想执行的一个或多个方法。<br><br>10、 &nbsp; &nbsp;ayList 与 Vector 的区别<br>答：主要从两个方面来说明：<br> &nbsp; &nbsp;安全、效率方面<br>如果要实现同步安全，则要用Vector，否则则用ArrayList，因为ArrayList不考虑同步安全的问题，所以效率要高些。<br> &nbsp; &nbsp;资源方面<br>当两者的容量已满时，它们都会自动增长其容量，但Vector是按其容量的一倍增长，而ArrayList则按其容量的50%增加，所以Vector更能节省资源。<br><br>11、MVC结构在Jtable中怎样实现的，这种结构有什么好处？<br>答、在Jtable中不存储它的单元数据，它的所有实例把它们的单元值交给实现了TableModel接口的对象来维护和管理，所以在MVC结构中，Jtable的表格主要体现了一个V的作用，其表格将数据变化体现出来，而数据模型则体现了M的作用，封装数据和业务逻辑。<br>&nbsp; &nbsp;注：详细解说见第二题<br>12、在控制台中输入一个字符串，然后按照逆序打印出来<br>答：import java.io.*;<br>&nbsp; <br>public class test{<br>&nbsp; &nbsp;public static void main(String args[]){<br>&nbsp; String A=&#8221;&#8221;;<br>&nbsp; String B=&#8221;&#8221;;<br>&nbsp; String C=&#8221;&#8221;;<br>&nbsp; Try{<br>&nbsp; &nbsp; BufferedReader br=new BufferedReader(new InputStreamReader(System.in));<br>&nbsp; &nbsp; If ((B=br.readLine())!=null){<br>&nbsp; &nbsp; &nbsp; A=A+B;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; <br>&nbsp; &nbsp; for(int I=str.length()-1;I&gt;=0;I--){<br>&nbsp; &nbsp; &nbsp; C=C+A.substring(I,I+1);<br>}<br>System.out.println(C);<br>&nbsp; }<br>&nbsp; catch(Exception e){<br>&nbsp; &nbsp; System.out.println(e.getMessage());<br>&nbsp; }<br>}<br>}<br><br>13、java是否存在内存泄露<br>答：存在，当一个对象引用另一对象后，当另一对象为空时，会出现内存泄露。<br><br>14、String类的值是否可以改变<br>答：String类的值在初始后不能改变，如果要改变，可转换为StringBuffer类，这个类的值是可以动态改变的。(这里主要考String 和 StringBuffer 的区别)<br><br>15、Corba概述<br>答：通用对象请求代理，它的主要目标是解决面向对象的异构应用之间的互操作问题，并提供分布式计算所需的一些其他的服务。ORB是CORBA的核心。<br>&nbsp; CORBA重新调整了客户与服务器之间的关系。客户可以向服务器提出事务请求，同时也可以为下一个请求充当服务器角色。由于CORBA系统引入了中间件的概念，即事件代理，由中间件完成客户机与服务器之间的通信，使得服务器对于科户机的位置相对透明，取消了原有分布式计算机模型中客户机----服务器之间的一一对应关系，CORBA客户机可以在运行时动态获得服务对象的位置，并且可以对多个服务对象提交事务请求，所以它极大的推动了分布计算的发展。另外，CORBA规范约束采用面向对象的分布式方法，以接口定义语言的形式实现对象内部细节的完整封装，从而降低了软件系统的复杂度，增加了软件功能的可重用性。CORBA提供到C C++ JAVA 等高级语言的映射，极大程度地减小了程序设计语言的依赖性。<br>&nbsp; (有待扩展)<br>&nbsp; <br><br>16、jsp的内置对象、功能以及主要方法<br>Jsp内置对象 &nbsp; &nbsp;功能 &nbsp; &nbsp;主要方法<br>out &nbsp; &nbsp;向客户端输出数据 &nbsp; &nbsp;print() println() flush() clear() isAutoFlush() getBufferSize() &nbsp; close() &#8230;&#8230;&#8230;&#8230;<br>request &nbsp; &nbsp;向客户端请求数据 &nbsp; &nbsp;getAttributeNames() getCookies() getParameter() getParameterValues() setAttribute() getServletPath() &#8230;&#8230;&#8230;&#8230;..<br>response &nbsp; &nbsp;封装了jsp产生的响应，然后被发送到客户端以响应客户的请求 &nbsp; &nbsp;addCookie() sendRedirect() setContentType()<br>flushBuffer() getBufferSize() getOutputStream()<br>sendError() containsHeader()&#8230;&#8230;&#8230;&#8230;&#8230;<br>application &nbsp; &nbsp; &nbsp; &nbsp;<br>config &nbsp; &nbsp;表示Servlet的配置，当一个Servlet初始化时，容器把某些信息通过此对象传递给这个Servlet &nbsp; &nbsp;getServletContext() getServletName() getInitParameter() &nbsp; getInitParameterNames()&#8230;&#8230;&#8230;&#8230;&#8230;<br>page &nbsp; &nbsp;Jsp实现类的实例，它是jsp本身，通过这个可以对它进行访问 &nbsp; &nbsp;flush()&#8230;&#8230;&#8230;<br>pagecontext &nbsp; &nbsp;为JSP页面包装页面的上下文。管理对属于JSP中特殊可见部分中己经命名对象的该问 &nbsp; &nbsp;forward() getAttribute() getException() getRequest() getResponse() &nbsp; getServletConfig()<br>getSession() getServletContext() setAttribute()<br>removeAttribute() findAttribute() &#8230;&#8230;&#8230;&#8230;&#8230; <br>session &nbsp; &nbsp;用来保存每个用户的信息，以便跟踪每个用户的操作状态 &nbsp; &nbsp;getAttribute() getId() &nbsp; getAttributeNames() getCreateTime() getMaxInactiveInterval()<br>invalidate() isNew()<br>exception &nbsp; &nbsp;反映运行的异常 &nbsp; &nbsp;getMessage()&#8230;&#8230;&#8230;&#8230;<br><br>17、java 有几种修饰符？默认的是什么？<br>答：(注：修饰符是影响类、变量及成员方法的生存空间和可访问性的关键字)<br>修饰符 &nbsp; &nbsp;类 &nbsp; &nbsp;成员方法 &nbsp; &nbsp;成员变量 &nbsp; &nbsp;局部变量<br>abstract &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;－ &nbsp; &nbsp;－<br>static &nbsp; &nbsp;－ &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;－<br>public &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;－<br>protected &nbsp; &nbsp;－ &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;－<br>private &nbsp; &nbsp;－ &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;－<br>private protected &nbsp; &nbsp;－ &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;－<br>synchronized &nbsp; &nbsp;－ &nbsp; &nbsp;&#8730; &nbsp; &nbsp;－ &nbsp; &nbsp;－<br>native &nbsp; &nbsp;－ &nbsp; &nbsp;&#8730; &nbsp; &nbsp;－ &nbsp; &nbsp;－<br>volatile &nbsp; &nbsp;－ &nbsp; &nbsp;－ &nbsp; &nbsp;&#8730; &nbsp; &nbsp;－<br>final &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;－<br>transient &nbsp; &nbsp;－ &nbsp; &nbsp;－ &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730;<br><br>以下是访问控制修饰符： 默认为friendly <br>修饰符 &nbsp; &nbsp;同类 &nbsp; &nbsp;同包 &nbsp; &nbsp;子孙类 &nbsp; &nbsp;不同包<br>public &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730;<br>protected &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;－<br>friendly &nbsp; &nbsp;&#8730; &nbsp; &nbsp;&#8730; &nbsp; &nbsp;－ &nbsp; &nbsp;－<br>private &nbsp; &nbsp;&#8730; &nbsp; &nbsp;－ &nbsp; &nbsp;－ &nbsp; &nbsp;－<br><br>18、toString方法的概述 <br>答：因为每个类都继承了Object类，所以都实现了toString()方法。<br>&nbsp; 通过toString()方法可以决定所创建对象的字符串表达形式。<br><br>19、Object类的概述<br>答：Object类是所有其他的类的超类，Object的一个变量可以引用任何其他类的对象。因为数组是作为类实现的，所以Object的一个变量也可以引用任何数组，它包括以下几种方法：<br>&nbsp; clone() equals() finalize() getClass() hashCode() notify() notifyAll() toString() wait()<br><br>20、java特点<br>答：java具有以下几个主要特点：<br> &nbsp; &nbsp;简单性<br> &nbsp; &nbsp;面向对象：JAVA是完全面向对象的，它支持静态和动态风格的代码继承及重用<br> &nbsp; &nbsp;分布式：包括数据分布和操作分布<br> &nbsp; &nbsp;健壮性：java系统仔细检测对内存的每次访问，确认它是否合法，而且在编译和运行程序时，都要对可能出现的问题进行检查，以消除错误的产生。<br> &nbsp; &nbsp;结构中立<br> &nbsp; &nbsp;安全性：java不支持指针，一切对内存的访问都必须通过对象的实例变量来实现，这样就防止程序员使用木马等欺骗手段访问对象的私有成员，同时也避免了指针操作中容易产生的错误。<br> &nbsp; &nbsp;与平台无关：java写的应用程序不用修改就可在不同的软硬平台上运行。平台无关性有两种：源代码级和目标代码级。 Java主要靠JAVA虚拟机在目标代码级上实现平台无关性<br> &nbsp; &nbsp;解释执性：运行JAVA程序时，它首先被编译成字节代码，字节代码非常类似机器码，执行效率非常高。<br> &nbsp; &nbsp;高性能<br> &nbsp; &nbsp;多性程<br> &nbsp; &nbsp;动态性：它允许程序动态的装入运行时需要的类。<br><br>21、什么叫抽象类？抽象类跟接口有什么区别？为什么引进数据接口概念？<br>答：具有关键字abstract ，在实现内容上没有完全定义的类就叫抽象类。<br>抽象类和接口的区别如下：<br>① 在类来继承抽象类时，只需实现部分具体方法和全部抽象方法，而实现接口则要实现里面的全部方法。<br>②在接口中无成员变量，而抽象类中可有成员变量。<br>在Java中引进接口主要是为了解决多继承的问题。<br><br>22、doGet与doPut的区别？<br>答： doPut会把地址作为一个文件写到服务器，而doGet不会，而只显示在地址栏。<br><br>23、多线程实现有那几种方法，同步有哪几种方法？<br>答：实现同步主要有两种方法：1.synchronized &nbsp; 2.wait notify <br>实现多线程主要继承Thread 类和实现Runnable接口。<br><br>24、JSP页面的跳转？<br>答：jsp页面实现跳转主要有jsp:forward 和 sendRedirect 两种方法<br>jsp:forward：在本容器内跳转 。 跳转后，地址栏地址不变 。效率高。跳转后立即结束本页的内容。<br>sendRedirect：在容器之间的跳转，跳转后地址栏地址为跳转后的地址，效率较低。<br>通常采用jsp:forward方式跳转。<br>25、类变量的初始化<br>答：在Java中类变量在局部中一定要初始化，因为局部变量会覆盖全局变量，否则会报错：变量未初始化。全局变量则可以不初始化，而到具体的内部方法或其他的类成员中初始化。<br>26、数组的定义<br>答：数组是作为一种对象实现的。数组元素可以包含作何类型值，但数组里面的每个元素的类型必须一致创建数组步聚如下：<br> &nbsp; &nbsp;声明<br> &nbsp; &nbsp;构造<br> &nbsp; &nbsp;初始化<br>27、Hastable 与HashMap的区别？<br>答：Hashtable和Hashmap的主要区别如下：<br> &nbsp; &nbsp;Hashtable是同步的，而HashMap不是同步的。所以不要求同步的时候，用HashMap的效率较高<br> &nbsp; &nbsp;Hashtable版本较HashMap版本低。<br>28、说明List和Set的区别<br>答：两者主要区别如下：<br> &nbsp; &nbsp;List用来处理序列，而Set用来处理集。<br> &nbsp; &nbsp;List中的内容可以重复，而Set则不行。</div><img src ="http://www.cnblogs.com/antony1029/aggbug/675313.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41955/" target="_blank">[新闻]开源多点触摸技术试运行</a>]]></description></item><item><title>http://www.lancen.net/</title><link>http://www.cnblogs.com/antony1029/archive/2007/03/09/669140.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Fri, 09 Mar 2007 04:00:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2007/03/09/669140.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/669140.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2007/03/09/669140.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/669140.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/669140.html</trackback:ping><description><![CDATA[<a href="http://www.lancen.net/">http://www.lancen.net/</a><img src ="http://www.cnblogs.com/antony1029/aggbug/669140.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41954/" target="_blank">[新闻]国内软件外包高管集聚大连 探讨竞争与应对策略</a>]]></description></item><item><title>实例分析 equals 和 == </title><link>http://www.cnblogs.com/antony1029/archive/2007/02/03/638966.html</link><dc:creator>antony.net</dc:creator><author>antony.net</author><pubDate>Sat, 03 Feb 2007 08:05:00 GMT</pubDate><guid>http://www.cnblogs.com/antony1029/archive/2007/02/03/638966.html</guid><wfw:comment>http://www.cnblogs.com/antony1029/comments/638966.html</wfw:comment><comments>http://www.cnblogs.com/antony1029/archive/2007/02/03/638966.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/antony1029/comments/commentRss/638966.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/antony1029/services/trackbacks/638966.html</trackback:ping><description><![CDATA[<div class=postText>
<ol>
    <li>基本类型、引用存于内存的栈中。 <br>对象存于内存的堆中。<br>
    <li>基本类型、引用的比较用 ==<br>对象间的比较用 equals </li>
</ol>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面就以一个实例来分析equals和==的异同，先请看一段程序和它的运行结果：</p>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/CenturyMagus/Image00000.jpg" twffan="done"></p>
<ul>
    <li>结果中a=b，很容易理解，数据基本类型的a、b相等。<br>
    <li>&nbsp;结果中未出现c=d，这是因为c，d为引用类型，且都指向了由new创建的两个对象(注意，这是两个不同的对象)，而c，d存的是这两个不同的对象的地址，所以c不等于d。<br>
    <li>结果中出现c equals d，这是因为equals比的是c和d这两个引用所String的内容。<br><font color=#ff0000>注意:</font>equals()是Object类的一个方法，所以每个对象都会有equals()方法，而默认的equals是比较两个对象的内存地址。而String覆盖了这个方法，用于比较两个字符串的内容是否相等。<br>
    <li>结果中出现e=f，而e，f是两个引用，这说明指向了同一块内存(即"ccc"所在的内存)，即e和f存的内存地址值相等，故而它们相等。<br>
    <li>e equals f 也比较好理解，同一块内存的值当然相等了。<br>
    <li>c，d，e，f 的hashCode值都是98307，而Object默认是用内