??xml version="1.0" encoding="utf-8" standalone="yes"?>91精品国产综合久久蜜臀 ,97电影在线观看,精品久久毛片http://www.aygfsteel.com/fourlee/我就是我Q我不是我,我还是我zh-cnSat, 17 May 2025 12:02:49 GMTSat, 17 May 2025 12:02:49 GMT60Struts 2 (1) - setuphttp://www.aygfsteel.com/fourlee/archive/2008/05/21/201792.html李四飞刀李四飞刀Tue, 20 May 2008 17:27:00 GMThttp://www.aygfsteel.com/fourlee/archive/2008/05/21/201792.htmlhttp://www.aygfsteel.com/fourlee/comments/201792.htmlhttp://www.aygfsteel.com/fourlee/archive/2008/05/21/201792.html#Feedback0http://www.aygfsteel.com/fourlee/comments/commentRss/201792.htmlhttp://www.aygfsteel.com/fourlee/services/trackbacks/201792.html开发环境:eclipse 3.3 jee?/p>
  1. 下蝲
  2. 新徏web project
  3. 复制*.jar文g到lib目录
  4. 修改web.xml文g
  5. 新徏q编辑struts.xml文g
  6. HelloAction

下蝲

Struts2的下载地址是: http://struts.apache.org/download.cgi

到现在ؓ止:最新版本是2.0.11.1。把下蝲后的文g解压~到一个目录中。在解压~后的apps目录中,有个struts2-blank-2.0.11.war。这是搭Z个新的struts2目的很好的参考。本文就参考这个?/p>

新徏web工程

新徏一个web project。这里假设project 名称为struts2

复制*.jar文g

臛_需?个jar文g?/p>

struts2.jpg

修改web.xml文g

在web.xml文g中加入下面的内容。(在web-app节点中)

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

新徏q编辑struts.xml文g

struts.xml文g的骨架是下面q样的:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" >
<struts>
    <package name="struts" extends="struts-default">

        <!--action is here-->

    </package>
</struts>

到现在ؓ止,struts环境已经搭徏好了。下面可以编写一个HelloAction来运行测试一下环境?/p>

HelloAction

Action的一般流E是q样?/p>

  1. input.jsp文g
  2. 配置action?/li>
  3. 执行HelloAction
  4. 辑ֈresult.jsp文g


李四飞刀 2008-05-21 01:27 发表评论
]]>
W?6 天: 解答 -- 16q制的趣事, 问题 -- 转型http://www.aygfsteel.com/fourlee/archive/2008/05/17/201128.html李四飞刀李四飞刀Sat, 17 May 2008 09:52:00 GMThttp://www.aygfsteel.com/fourlee/archive/2008/05/17/201128.htmlhttp://www.aygfsteel.com/fourlee/comments/201128.htmlhttp://www.aygfsteel.com/fourlee/archive/2008/05/17/201128.html#Feedback2http://www.aygfsteel.com/fourlee/comments/commentRss/201128.htmlhttp://www.aygfsteel.com/fourlee/services/trackbacks/201128.htmlW?5 天的问题

下面的程序是对两个十六进ӞhexQ字面常量进行相加,然后打印出十六进制的l果。这个程序会打印Z么呢Q?/p>

public class JoyOfHex {
    public static void main(String[] args) {
        System.out.println(Long.toHexString(0x100000000L + 0xcafebabe));
    }
}

W?5 天问题的解答

看v来很明显Q该E序应该打印?cafebabe。毕竟,q确实就是十六进制数?0000000016与cafebabe16的和。该E序使用的是long型运,它可以支?6位十六进制数Q因此运溢出是不可能的?/p>

遗憾的告诉你Q结果是cafebabeQƈ没有M前导?。这个输C的是正结果的?2位,但是不知何故Q第33位丢׃?/p>

原因

十进制字面常量具有一个很好的属性,x有的十进制字面常量都是正的,而十六进制或是八q制字面帔Rq不具备q个属性?/p>

要想书写一个负的十q制帔RQ可以用一元取反操作符Q?Q连接一个十q制字面帔R。以q种方式Q你可以用十q制来书写Q何int或long型的数|不管它是正的q是负的Qƈ且负的十q制常数可以很明地用一个减Lh标识?/p>

但是十六q制和八q制字面帔Rq不是这么回事,它们可以h正的以及负的数倹{如果十六进制和八进制字面常量的最高位被置位了Q那么它们就是负数。在q个E序中,数字0xcafebabe是一个int帔RQ它的最高位被置位了Q所以它是一个负数。它{于十进制数?889275714?/p>

该程序执行的q个加法是一U?混合cd的计(mixed-type computationQ。左操作数是 long cd的,而右操作数是 int cd的。ؓ了执行该计算QJavaintcd的数值用拓宽原始cd转换提升Z个longcdQ然后对两个longcd数值相加。因为int是一个有W号的整数类型,所以这个{换执行的是符合扩展,它将负的intcd的数值提升ؓ一个在数g相等的longcd数倹{?/p>

解决办法

System.out.println(Long.toHexString(0x100000000L + 0xcafebabeL));

q个加法的右操作?xcafebabe被提升ؓ了longcd的数?xffffffffcafebabeL。这个数g后被加到了左操作?x100000000L上。当作ؓintcd来被审视Ӟl过W号扩展之后的右操作数的?2位是-1Q而左操作数的?2位是1Q将q两个数值相加就得到?Q这也就解释了ؓ什么在E序输出中前?丢失了?/p>

W?5 天问题的ȝ

q个题给我们的教训是Q?strong>混合cd的计可能会产生hQ尤其是十六q制和八q制字面帔R无需昑ּ的减L号就可以表示负的数倹{ؓ了避免这U窘境,通常最好是避免混合cd的计?/strong>?/p>

对于语言的设计者们来说Q应该考虑支持无符L整数cdQ从而根除符h展的可能性。可能会有这L争辩Q负的十六进制和八进制字面常量应该被用Q但是这可能会挫伤程序员Q他们经怋用十六进制字面常量来表示那些W号没有M重要含义的数倹{?/p>


今天的问?/h2>

转型被用来将一个数g一U类型{换到另一U类型。下面的E序q箋使用了三个{型。那么它到底会打印出什么呢Q?/p>

public class Multicast {
    public static void main(String[] args) {
        System.out.println((int) (char) (byte) -1);
    }
}



李四飞刀 2008-05-17 17:52 发表评论
]]>W?5 天: 解答 -- D~ؕQ?问题 -- 16q制的趣?/title><link>http://www.aygfsteel.com/fourlee/archive/2008/05/17/201025.html</link><dc:creator>李四飞刀</dc:creator><author>李四飞刀</author><pubDate>Fri, 16 May 2008 16:33:00 GMT</pubDate><guid>http://www.aygfsteel.com/fourlee/archive/2008/05/17/201025.html</guid><wfw:comment>http://www.aygfsteel.com/fourlee/comments/201025.html</wfw:comment><comments>http://www.aygfsteel.com/fourlee/archive/2008/05/17/201025.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fourlee/comments/commentRss/201025.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fourlee/services/trackbacks/201025.html</trackback:ping><description><![CDATA[ <h2>W?4 天的问题 -- D~ؕ</h2> <p>它又会打印出什么呢Q?/p> <pre> <code class="java"> <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">class</span> <span id="wmqeeuq" class="title">Elementary</span>{ <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">void</span> main(String[] args){ System.out.println(<span id="wmqeeuq" class="number">12345</span> + <span id="wmqeeuq" class="number">5432</span>l); } } </code> </pre> <h2>W?4 天问题的解答</h2> <p>q个题看hg太简单了。结果不是66666吗?</p> <p>遗憾的告诉你Q结果是17777?/p> <h3>原因</h3> <p>事物往往有别于它的表象。就以这个问题ؓ例,它ƈ没有打印出我们想要的输出。请仔细观察 + 操作W的两个操作敎ͼ 我们是将一个intcd?2345加到了longcd?432l上。请注意左操作数开头的数字1和右操作数结写字母l之间的细微差异?数字1的水q笔划(UCؓ"臂(armQ?Q和垂直W划Q称?茎(stemQ?Q之间是一个锐角,而与此相对照的是Q小写字母l的臂和茎之间是一个直角?/p> <h3>解决办法</h3> <pre> <code class="java">System.out.println(<span id="wmqeeuq" class="number">12345</span>+<span id="wmqeeuq" class="number">5432</span>L);</code> </pre> <p>用大写的L替换写字母l?/p> <h2>W?4 天问题的ȝ</h2> <p>在你大喊"恶心Q?之前Q你应该注意到这个问题确实已l引起了混ؕQ这里确实有一个教训: <strong>在long型字面常量中Q一定要用大写的LQ千万不要用写的l</strong>。这样就可以完全掐断q个谜题所产生的؜q源头?/p> <p>相类似的Q要避免使用单独的一个l字母作ؓ变量名。例如,我们很难通过观察下面的代码段来判断它到底是打印出列表lq是数字1?/p> <pre> <code class="java"><span id="wmqeeuq" class="comment">//不良代码-使用了l作ؓ变量?/span> List l = <span id="wmqeeuq" class="keyword">new</span> ArrayList<String>(); l.add(<span id="wmqeeuq" class="string">"Foo"</span>); System.out.println(<span id="wmqeeuq" class="number">1</span>);</code> </pre> <p>也许当初允许用小写的l来编写long型字面常量本w就是一个错误?/p> <hr id="hr"/> <h2>今天的问?/h2> <p>下面的程序是对两个十六进ӞhexQ字面常量进行相加,然后打印出十六进制的l果。这个程序会打印Z么呢Q?/p> <pre> <code class="java"><span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="class"><span id="wmqeeuq" class="keyword">class</span> <span id="wmqeeuq" class="title">JoyOfHex</span> {</span> <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">void</span> main(String[] args) { System.out.println(Long.toHexString(<span id="wmqeeuq" class="number">0x100000000L</span> + <span id="wmqeeuq" class="number">0xcafebabe</span>)); } }</code> </pre> <img src ="http://www.aygfsteel.com/fourlee/aggbug/201025.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fourlee/" target="_blank">李四飞刀</a> 2008-05-17 00:33 <a href="http://www.aygfsteel.com/fourlee/archive/2008/05/17/201025.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>W?4 天: 解答 -- 长整敎ͼ 问题 -- D~ؕhttp://www.aygfsteel.com/fourlee/archive/2008/05/16/201018.html李四飞刀李四飞刀Fri, 16 May 2008 15:41:00 GMThttp://www.aygfsteel.com/fourlee/archive/2008/05/16/201018.htmlhttp://www.aygfsteel.com/fourlee/comments/201018.htmlhttp://www.aygfsteel.com/fourlee/archive/2008/05/16/201018.html#Feedback1http://www.aygfsteel.com/fourlee/comments/commentRss/201018.htmlhttp://www.aygfsteel.com/fourlee/services/trackbacks/201018.htmlW?3 天的问题

被除数表C的是一天里的微U数Q而除数表C的是一天里的毫U数。这个程序会打印Z么呢Q?/p>


public class LongDivision{
    public static void main(String args[]){ 
        final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000; 
        final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000; 
        System.out.println(MICROS_PER_DAY/MILLIS_PER_DAY); 
    } 
} 

W?3 天问题的解答

q个题看h相当直观。每天的毫秒数和每天的微U数都是帔R。ؓ清楚赯Q它们都被表C成U的形式。你可能想都没想Q就脱口而出Q结果是1000?遗憾的是Q它打印的是5。这里到底发生了什么呢Q?/p>

原因

问题在于常数MICROS_PER_DAY的计?实"溢出了。尽计的l果适合攑օlong中,q且其空间还有富余,但是q个l果q不适合攑օint中?q个计算完全是以intq算来执行的Qƈ且只有在q算完成之后Q其l果才被提升到longQ而此时已l太q了Q计已l溢ZQ?它返回的是一个小?00倍的数倹{从int提升到long是一U拓宽原始类型{换(widening primitive conversionQ, 它保留了Q不正确的)数倹{这个g后被MILLIS_PER_DAY整除Q而MILLIS_PER_DAY的计是正确的,因ؓ它适合intq算。这h除的l果得C5

那么Z么计会是以intq算来执行的呢?因ؓ所有乘在一L因子都是int数倹{当你将两个int数值相乘时Q?你将得到另一个int数倹{?strong>Java不具有目标确定类型的Ҏ,q是一U语aҎ,其含义是指存储结果的变量的类型会影响到计所使用的类?/strong>

解决办法


public class LongDivision{
    public static void main(String args[ ]){
        final long MICROS_PER_DAY = 24L * 60 * 60 * 1000 * 1000;
        final long MILLIS_PER_DAY = 24L * 60 * 60 * 1000;
        System.out.println(MICROS_PER_DAY/MILLIS_PER_DAY);
    }
}

通过使用long帔R来替代int帔R作ؓ每一个乘U的W一个因子,我们可以很Ҏ地订正这个程序。这样做可以强制表达式中所有的后箋计算都用longq作来完成?管q么做只在MICROS_PER_DAY表达式中是必需的,但是在两个乘U中都这么做是一U很好的方式。相似地Q用long作ؓ乘积?W一?数gq不L必需的, 但是q么做也是一U很好的形式。在两个计算中都以long数值开始可以很清楚地表明它们都不会溢出。下面的E序打印出我们所期望?000

W?3 天问题的ȝ

q个教训很简单:当你在操作很大的数字Ӟ千万要提防溢?/strong>--它可是一个缄默杀手?即用来保存l果的变量已昑־_大,也ƈ不意味着要生结果的计算h正确的类型。当你拿不准Ӟ׃用longq算来执行整个计?/p>

语言设计者从中可以吸取的教训是:也许降低~默溢出产生的可能性确实是值得做的一件事。这可以通过对不会生缄默溢出的q算提供支持来实现?E序可以抛出一个异常而不是直接溢出,像Ada所作的那样Q或者它们可以在需要的时候自动地切换C个更大的内部表示上以防止溢出Q就像Lisp所作的那样?q两U方式都可能会遭受与其相关的性能斚w的损失?降低~默溢出的另一U方式是支持目标定cdQ但是这么做会显著地增加cdpȝ的复杂度


今天的问?/h2>

它又会打印出什么呢Q?/p>


public class Elementary{
    public static void main(String[] args){
        System.out.println(12345+5432l);
    }
}



李四飞刀 2008-05-16 23:41 发表评论
]]>W?3 天: 解答 -- N钱, 问题 -- 长整?/title><link>http://www.aygfsteel.com/fourlee/archive/2008/05/16/201016.html</link><dc:creator>李四飞刀</dc:creator><author>李四飞刀</author><pubDate>Fri, 16 May 2008 14:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/fourlee/archive/2008/05/16/201016.html</guid><wfw:comment>http://www.aygfsteel.com/fourlee/comments/201016.html</wfw:comment><comments>http://www.aygfsteel.com/fourlee/archive/2008/05/16/201016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fourlee/comments/commentRss/201016.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fourlee/services/trackbacks/201016.html</trackback:ping><description><![CDATA[ <h2>W?2 天的问题</h2> <p>误虑下面q段话所描述的问题:</p> <p>明在超市购C一个h|E1.10的东西,但是他钱包中只有两元一张的钞票。如果他用一张两元的钞票支付Q那么应该找l他多少雉呢?</p> <p>下面是一个试图解决上q问题的E序Q它会打印出什么呢Q?/p> <pre> <code class="java"> <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">class</span> <span id="wmqeeuq" class="title">Change</span>{ <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">void</span> main(String args[]){ System.out.println(<span id="wmqeeuq" class="number">2.00</span> - <span id="wmqeeuq" class="number">1.10</span>); } } </code> </pre> <h2>W?2 天问题的解答</h2> <p>你可能会_q不是很单嘛Q输?.90。但实际的输出确实:0.8999999999999999?/p> <h3>原因</h3> <p>一、程序如何才能知道你惌打印数点后两位数呢?</p> <p>JDK API文档中关于Double.toString的部分指出:</p> <blockquote> <p>Double.toString的返回|是以将doublecd的g最靠近它的临近值区分出来的最短的数Q它在小数点之前和之后都臛_有一位?/p> </blockquote> <p>因此Q看hQ该E序应该打印0.9是合理的?/p> <p>二、ƈ不是所有的数都可以用二进制QҎ来精表C的?/p> <p>问题在于1.1q个数字不能被精表C成Z个doubleQ因此它被表C成为最接近它的double倹{?该程序从2中减ȝ是q个倹{?遗憾的是Q这个计的l果q不是最接近0.9的double倹{?表示l果的double值的最短表C就是你所看到的打印出来的那个可恶的数字?/p> <h2>W?2 天问题的解决办法</h2> <h3>Ҏ一</h3> <pre> <code class="java"> <span id="wmqeeuq" class="comment">//拙劣的解x?-仍旧是用二q制点?/span> System.out.printf(<span id="wmqeeuq" class="string">"%.2f%n"</span>,<span id="wmqeeuq" class="number">2.00</span> - <span id="wmqeeuq" class="number">1.10</span>);</code> </pre> <p>q条语句打印的是正确的结果,但是qƈ不表C它是对底层问题的通用解决Ҏ。它使用的仍旧是二进制QҎ的doubleq算?点q算在一个范围很q的值域上提供了很好的近|但是它通常不能产生_的结果?<strong>二进制Q点对于货币计是非常不适合?/strong>Q因为它不可能将0.1--或?0的其它Q何次负幂--_表示Z个长度有限的二进制小?/p> <h3>Ҏ?/h3> <pre> <code class="java">System.out.println((<span id="wmqeeuq" class="number">200</span> - <span id="wmqeeuq" class="number">110</span>) + <span id="wmqeeuq" class="string">"?</span>);</code> </pre> <p>q是在Java中一U简单的解决Ҏ。在Java标准库中Q有一个类似的范例Datec,Datecȝ对于旉的内部表C就是一个以毫秒为单位的long整数?对于像货币这L数|可以用int或long来表C。如果你采纳了解x法,<strong>L保该整数cd大到_表示在程序中你将要用到的所有?/strong>?/p> <h3>Ҏ?/h3> <pre> <code class="java"> <span id="wmqeeuq" class="keyword">import</span> java.math.BigDecimal; <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">class</span> <span id="wmqeeuq" class="title">Change1</span>{ <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">void</span> main(String args[]){ System.out.println(<span id="wmqeeuq" class="keyword">new</span> BigDecimal(<span id="wmqeeuq" class="string">"2.00"</span>).subtract(<span id="wmqeeuq" class="keyword">new</span> BigDecimal(<span id="wmqeeuq" class="string">"1.10"</span>))); } } </code> </pre> <p>解决该问题的另一U方式是使用执行_数q算的BigDecimal?<strong>q里要告诫你一点: 一定要用BigDecimal(String)构造器Q而千万不要用BigDecimal(double)?后一个构造器用它的参数?_"值来创徏一个实例:new BigDecimal(1.1)返回一个表C?.100000000000000055511151231257827021181583404541015625 的BigDecimal?/strong> </p> <p>q个版本q不是十分地完美Q因为Javaq没有ؓBigDecimal提供M语言上的支持。原因:</p> <ul> <li>使用BigDecimal的计很有可能比那些使用原始cd的计要慢一些,Ҏ些大量用小数计的E序来说Q这可能会成为问题,而对大多数程序来_q显得一点也不重要?/li> <li>Java不允许运符重蝲。得代码不够直观?/li> </ul> <h2>ȝ</h2> <p>在需要精答案的地方Q要避免使用float和double?/p> <p>对于货币计算Q要使用int、long或BigDecimal?/p> <p>对于语言设计者来_应该考虑对小数运提供语a支持。可以支持下列方式中的一U?/p> <ul> <li>提供Ҏ作符重蝲的有限支持, 以得运符可以被塑造ؓ能够Ҏ值引用类型v作用Q?例如BigDecimal?/li> <li>提供原始的小数类型,像 COBOL ?PL/I 所作的一栗?/li> </ul> <hr id="hr"/> <h2>今天的问?/h2> <p>被除数表C的是一天里的微U数Q而除数表C的是一天里的毫U数。这个程序会打印Z么呢Q?/p> <pre> <code class="java"> <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">class</span> <span id="wmqeeuq" class="title">LongDivision</span>{ <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">void</span> main(String args[]){ <span id="wmqeeuq" class="keyword">final</span> <span id="wmqeeuq" class="keyword">long</span> MICROS_PER_DAY = <span id="wmqeeuq" class="number">24</span> * <span id="wmqeeuq" class="number">60</span> * <span id="wmqeeuq" class="number">60</span> * <span id="wmqeeuq" class="number">1000</span> * <span id="wmqeeuq" class="number">1000</span>; <span id="wmqeeuq" class="keyword">final</span> <span id="wmqeeuq" class="keyword">long</span> MILLIS_PER_DAY = <span id="wmqeeuq" class="number">24</span> * <span id="wmqeeuq" class="number">60</span> * <span id="wmqeeuq" class="number">60</span> * <span id="wmqeeuq" class="number">1000</span>; System.out.println(MICROS_PER_DAY/MILLIS_PER_DAY); } } </code> </pre> <img src ="http://www.aygfsteel.com/fourlee/aggbug/201016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fourlee/" target="_blank">李四飞刀</a> 2008-05-16 22:50 <a href="http://www.aygfsteel.com/fourlee/archive/2008/05/16/201016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>W?2 天: 解答 -- 判断是否为奇敎ͼ 问题 -- N?/title><link>http://www.aygfsteel.com/fourlee/archive/2008/05/16/200996.html</link><dc:creator>李四飞刀</dc:creator><author>李四飞刀</author><pubDate>Fri, 16 May 2008 13:38:00 GMT</pubDate><guid>http://www.aygfsteel.com/fourlee/archive/2008/05/16/200996.html</guid><wfw:comment>http://www.aygfsteel.com/fourlee/comments/200996.html</wfw:comment><comments>http://www.aygfsteel.com/fourlee/archive/2008/05/16/200996.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fourlee/comments/commentRss/200996.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fourlee/services/trackbacks/200996.html</trackback:ping><description><![CDATA[ <h2>W?1 天的问题</h2> <p>下面的方法意囄定它那唯一的参数是否是一个奇数。这个方法能够正运转吗Q?/p> <pre> <code class="java"> <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">boolean</span> odd(<span id="wmqeeuq" class="keyword">int</span> number) { <span id="wmqeeuq" class="keyword">return</span> number % <span id="wmqeeuq" class="number">2</span> == <span id="wmqeeuq" class="number">1</span>; } </code> </pre> <h2>W?1 天问题的解答</h2> <p>?/4的情况下Q答案是错误的。比如:odd(-3) 表达式得到的l果是 fasle。对于所有的负奇敎ͼ上面的方法都会得到错误的l果?/p> <h3>原因</h3> <p>问题的原因在于求余操作符(%)Q在Java中该操作W被定义?/p> <blockquote> <p>对于所有的 int 数?a 和所有的非零 int 数?bQ都满下面的恒{式 <br/> (a / b) * b + (a % b) == a</p> </blockquote> <p>换句话说Q?a % b) = a - (a / b) * b</p> <p>由数学推理运可知,a % b 的符h操作数a军_Q要么ؓ0Q要么和a一_。也是_ -5 % 3 => -2Q?-5 % -3 => -2?/p> <p>因此Q对于所有的负奇数nQ?n % 2 => -1。问题中的方法自然有问题啦?/p> <h3>解决办法</h3> <p>要判断一个整数是否ؓ奇数的解军_法有两种?/p> <pre> <code class="java"> <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">boolean</span> odd(<span id="wmqeeuq" class="keyword">int</span> number) { <span id="wmqeeuq" class="keyword">return</span> number % <span id="wmqeeuq" class="number">2</span> != <span id="wmqeeuq" class="number">0</span>; } </code> </pre> <pre> <code class="java"> <span id="wmqeeuq" class="javadoc">/** * q种Ҏ的性能更好? */</span> <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">boolean</span> odd(<span id="wmqeeuq" class="keyword">int</span> number) { <span id="wmqeeuq" class="keyword">return</span> (number & <span id="wmqeeuq" class="number">1</span>) != <span id="wmqeeuq" class="number">0</span>; } </code> </pre> <h2>ȝ</h2> <p> <strong>无论你何时用到了取余操作符Q都要考虑到操作数和结果的W号?/strong> </p> <p>该操作符的行为在其操作数非负时是一目了然的Q但是当一个或两个操作数都是负数时Q它的行为就不那么显而易见了?/p> <hr id="hr"/> <h2>今天的问?/h2> <p>误虑下面q段话所描述的问题:</p> <p>明在超市购C一个h|E1.10的东西,但是他钱包中只有两元一张的钞票。如果他用一张两元的钞票支付Q那么应该找l他多少雉呢?</p> <p>下面是一个试图解决上q问题的E序Q它会打印出什么呢Q?/p> <pre> <code class="java"> <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">class</span> <span id="wmqeeuq" class="title">Change</span>{ <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">void</span> main(String args[]){ System.out.println(<span id="wmqeeuq" class="number">2.00</span> - <span id="wmqeeuq" class="number">1.10</span>); } } </code> </pre> <img src ="http://www.aygfsteel.com/fourlee/aggbug/200996.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fourlee/" target="_blank">李四飞刀</a> 2008-05-16 21:38 <a href="http://www.aygfsteel.com/fourlee/archive/2008/05/16/200996.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>W?1 天: 判断是否为奇?/title><link>http://www.aygfsteel.com/fourlee/archive/2008/05/16/200989.html</link><dc:creator>李四飞刀</dc:creator><author>李四飞刀</author><pubDate>Fri, 16 May 2008 12:53:00 GMT</pubDate><guid>http://www.aygfsteel.com/fourlee/archive/2008/05/16/200989.html</guid><wfw:comment>http://www.aygfsteel.com/fourlee/comments/200989.html</wfw:comment><comments>http://www.aygfsteel.com/fourlee/archive/2008/05/16/200989.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fourlee/comments/commentRss/200989.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fourlee/services/trackbacks/200989.html</trackback:ping><description><![CDATA[ <p> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">下面的方法意囄定它那唯一的参数是否是一个奇数。这个方法能够正运转吗Q?/span> </p> <pre> <code class="java"> <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">boolean</span> odd(<span id="wmqeeuq" class="keyword">int</span> number) { <span id="wmqeeuq" class="keyword">return</span> number % <span id="wmqeeuq" class="number">2</span> == <span id="wmqeeuq" class="number">1</span>; } </code> </pre> <img src ="http://www.aygfsteel.com/fourlee/aggbug/200989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fourlee/" target="_blank">李四飞刀</a> 2008-05-16 20:53 <a href="http://www.aygfsteel.com/fourlee/archive/2008/05/16/200989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTTP(一)http://www.aygfsteel.com/fourlee/archive/2008/02/04/179305.html李四飞刀李四飞刀Mon, 04 Feb 2008 10:57:00 GMThttp://www.aygfsteel.com/fourlee/archive/2008/02/04/179305.htmlhttp://www.aygfsteel.com/fourlee/comments/179305.htmlhttp://www.aygfsteel.com/fourlee/archive/2008/02/04/179305.html#Feedback0http://www.aygfsteel.com/fourlee/comments/commentRss/179305.htmlhttp://www.aygfsteel.com/fourlee/services/trackbacks/179305.html

HTTP

HTTP是一U请?响应模式?/p>

HTTP事务

  1. q接 建立和服务器的连?
  2. 查询 h服务器上的资?
  3. 处理 服务器接受和处理h
  4. 响应 服务器将h的资源发送回客户?
  5. l止 事务完成后,关闭q接Q除非客h与服务器之间立即发生另一事务?

用telnetE序验证q个q程

q接

telnet www.baidu.com 80

80是HTTP协议默认的端口?/p>

查询

GET / HTTP/1.0?br>?/p>

↙表C回车?/p>
GET / HTTP/1.0
查询Ҏ名,有GET和POST
GETҎ不支持消息体
服务器资?/td> HTTP版本

在telnet中测试HTTP的POST是很ȝ的事。这里就不讲了,何况GET和POST很类伹{?/p>

处理

Baidu服务器根据请求,处理h。如果用的是ServletQ就是执行那个Servlet的doGetҎ?/p>

响应



HTTP/1.1 200 OK
Date: Sun, 03 Feb 2008 08:08:44 GMT
Server: BWS/1.0
Content-Length: 3022
Content-Type: text/html
Cache-Control: private
Expires: Sun, 03 Feb 2008 08:08:44 GMT
Set-Cookie: BAIDUID=2BB1B837C8EC6794A132C5D8DDD76721:FG=1; expires=Sun, 03-Feb-38 08:08:44 GMT; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "

<html><head><meta http-equiv=Content-Type content="text/html;charset=gb2312"><title>癑ֺ一下,你就知道 </title><style>body{margin:4px 0}p{margin:0;padding:0}img{border:0}td,p,#u{font-size:12px}#b,#u,#l td,a{font-family:arial}#kw{font:16px Verdana;height:1.78em;padding-top:2px}#b{height:30px;padding-top:4px}#b,#b a{color:#77c;font-size:12px}#u{padding-right:10px;line-height:19px;text-align:right;margin-bottom:3px !important;margin-bottom:10px}#sb{height:2em;width:5.6em}#km{height:50px}#km a{font-family:宋体}#l{margin-bottom:5px}#m{margin-left:100px;width:22.1em;text-align:center}p,#b,table{width:600px;border:0}#sb,#km,#l,#m{font-size:14px}#m a,#m b{margin-right:1.14em}a{color:#00c}a:active{color:#f60}</style></head>
<body><div id=u></div><center><a href=http://hi.baidu.com/baidu target=_blank><img src=http://www.baidu.com/img/logo.gif width=174 height=59 alt="Ҏq入 癑ֺI间"></a><br><br><br><br><table cellpadding=0 cellspacing=0 id=l><tr><td align=left><div id=m><a onclick=s(this) href=http://news.baidu.com>?amp;nbsp;?lt;/a><b>|?amp;nbsp;?lt;/b><a onclick=s(this) href=http://tieba.baidu.com>?amp;nbsp;?lt;/a><a onclick=s(this) href=http://zhidao.baidu.com>?amp;nbsp;?lt;/a><a onclick=s(this) href=http://mp3.baidu.com>MP3</a><a onclick=s(this) href=http://image.baidu.com>?amp;nbsp;?lt;/a></div></td></tr></table>
<table cellpadding=0 cellspacing=0><tr valign=top><td width=92></td><td height=62 nowrap><form name=f action=/s><input type=text name=wd id=kw size=36 maxlength=100><script>var w=document.f.wd;w.focus();document.getElementById("u").innerHTML='<a ;function s(o){if(w.value.length>0){var h=o.href;var q=encodeURIComponent(w.value);if(h.indexOf("q=")!=-1){o.href=h.replace(new RegExp("q=[^&$]*"),"q="+q)}else{o.href+="?q="+q}}};(function(){if(new RegExp("q=([^&]+)").test(location.search)){w.value=decodeURIComponent(RegExp.$1)}})()</script><input type=hidden name=cl value=3> <input type=submit value=癑ֺ一?id=sb><br><br></form></td><td width=100><a href=/search/jiqiao.html>帮助</a><br><a href=/gaoji/advanced.html>高</a></td></tr></table>
<p id=km>&nbsp;<a href=http://hi.baidu.com>I间</a>&nbsp;|&nbsp;<a href=http://www.baidu.com/more>更多>></a></p>
<p style=height:60px></p>
<p style=height:30px><a onClick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.baidu.com')" href=http://utility.baidu.com/traf/click.php?id=215&url=http://www.baidu.com>把百度设为首?lt;/a></p><p style=height:14px><a href=http://jingjia.baidu.com>企业推广</a> | <a href=http://top.baidu.com>搜烦风云?lt;/a> | <a href=/home.html>关于癑ֺ</a> | <a href=http://ir.baidu.com>About Baidu</a></p><p id=b>&copy;2008 Baidu <a href=http://www.baidu.com/duty>使用癑ֺ前必?lt;/a> <a href=http://www.miibeian.gov.cn target=_blank>京ICP?30173?lt;/a> <a href=http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001092500412><img src=http://gimg.baidu.com/img/gs.gif></a></p></center></body></html><!--4eca38de351397c2-->

失去了跟L的连接?br>

l止

用telnetq接web服务器,q接会立马终止。如果用览器访问,览器会取得与页面有关的所有图像、样式表和脚本文件等Q才l止q接?/p>

HTTP查询和响应的消息格式

HTTP查询和响应的消息格式差不多?/p>
格式
initliaze line
key1:value1
key2:value2

[Optional message body]
查询格式
GET /newaddr?name=jack&email=2 HTTP/1.0
accept:*/*
accept-language:zh-cn
... ...


响应格式
(具体见上?
HTTP/1.1 200 OK
Date: Sun, 03 Feb 2008 08:08:44 GMT
Server: BWS/1.0
... ...

<html>...</html>

后记

HTTP定义了查询和响应的消息格式。但每个览器和服务器在q种格式下,有自己定义的内容。服务器通过览器请求的消息Q知道浏览器具体是什么型LQ是什么操作系l。这些具体怎么做的Q下文分?/p>

李四飞刀 2008-02-04 18:57 发表评论
]]>
CSS实现的控制台效果http://www.aygfsteel.com/fourlee/archive/2008/02/04/179302.html李四飞刀李四飞刀Mon, 04 Feb 2008 09:45:00 GMThttp://www.aygfsteel.com/fourlee/archive/2008/02/04/179302.htmlhttp://www.aygfsteel.com/fourlee/comments/179302.htmlhttp://www.aygfsteel.com/fourlee/archive/2008/02/04/179302.html#Feedback11http://www.aygfsteel.com/fourlee/comments/commentRss/179302.htmlhttp://www.aygfsteel.com/fourlee/services/trackbacks/179302.html

摘要

我们在写blog或写文档说明的时候,有时候说明在控制C怎样使用Q在windows xp/2000中就是cmd命o?Z表达q种在控制台中的操作Q我写了?CSS来呈现效果?/p>

需求和设计要求

  1. 在网|档中(blog或用h?Q呈C个控制台的样式,有边框和标题栏,黑色背景。如下图
  2. q个控制台可以真实的控制台那样可以,在适当的时候,有上下或左右滚动?
  3. 控制台里允许加入的元素有<p>块?
  4. Z区分控制台里的输入和输出字符Ԍ分别可以?lt;kbd>?lt;samp>括v来,然后讄他们的CSS样式
  5. 当前目录提示W,?lt;span>元素表达?
  6. <kbd>?lt;samp>?lt;span>元素只能包含?lt;p>元素中,不能直接在“控制台”中?

控制台效果图

实现

  • 控制台标题用背景囄实现
  • 因ؓ同时有标题和滚动条,所以ؓ了不让滚动条覆盖部分标题Q控制台臛_要用两个<div>来表达,一个表C控制台ҎQ一个表C控制台里内?
  • 控制台的宽度是固定的Q高度有控制台的内容层表?

CSS

@charset "utf-8";

/**
* Copyright (c) 李四 fourlee@live.cn
*/

/* 控制台边框层 */
.console_box {
background: #000000 url(Command_heading.jpg) no-repeat;
width: 660px; /* windows 控制台默认宽?*/
margin: 0px;
padding-top: 23px; /* 控制台标题栏高度 */
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px;
border: 4px outset #FFFFFF;
}

/* 控制台内容层 */
.console_box .console {
background-color: #000000;
font-family: "Courier New", Courier, "宋体", monospace;
font-size: 12px;
color: #CCCCCC;
width: 656px;
height: 396px;
margin: 0px;
padding: 0px;
border: 2px inset #666666;
overflow: auto; /* 自动加入滚动?*/
}

.console_box .console p {
line-height: 120%;
margin: 0px;
padding-bottom: 1em; /* D落下面留一I的高?*/
padding-top: 0px;
padding-right: 0px;
padding-left: 0px;
}

HTML

<div class="console_box">
<div class="console" style="height:200px;">
<p>此处昄 class "console_box" 的内Ҏ处显C?class "console_box" 的内Ҏ处显C?class "console_box" 的内Ҏ处显C?class "console_box" 的内Ҏ处显C?class "console_box" 的内Ҏ处显C?class "console_box" 的内Ҏ处显C?class "console_box" 的内Ҏ处显C?class "console_box" 的内Ҏ处显C?class "console_box" 的内Ҏ处显C?class "console_box" 的内Ҏ处显C?class "console_box" 的内?lt;/p>
<p>此处昄 class &quot;console_box&quot; 的内?lt;/p>
<p>此处昄 class &quot;console_box&quot; 的内?lt;/p>
<p>此处昄 class &quot;console_box&quot; 的内?lt;/p>
<p>此处昄 class &quot;console_box&quot; 的内?lt;/p>
<p>此处昄 class &quot;console_box&quot; 的内?lt;/p>
<p>此处昄 class &quot;console_box&quot; 的内?lt;/p>
<p>此处昄 class &quot;console_box&quot; 的内?lt;/p>
<p>此处昄 class &quot;console_box&quot; 的内?lt;/p>
<p>此处昄 class &quot;console_box&quot; 的内?lt;/p>
<p>此处昄 class &quot;console_box&quot; 的内?lt;/p>
<p>此处昄 class &quot;console_box&quot; 的内?lt;/p>
<p>此处昄 class &quot;console_box&quot; 的内?lt;/p>
</div>
</div>

可以?lt;div class="console" ...>中设|高度来讄控制台的高度?/p>

后记

一个控制台的效果基本出来了。在IE6和Firefox中测试通过。还有工作可?/p>

  • Z区分控制C的输入和输出Q徏议用<kbd>?lt;samp>标签Qƈ讄q写标签的CSS样式?
  • 更改标题栏图标和讄一下CSS样式Q就可以实现Linux或Mac{操作系l中的控制台效果
  • q有一些没遇到和想到的问题

q是我第一ơ用BlogQ还不知道上传。这些源代码和图片的Q请留下EMailQ或{我熟悉了Blog再下载?/p>

李四飞刀 2008-02-04 17:45 发表评论
]]>
վ֩ģ壺 | | | | ׸| | | | | | | | | ɽ| | | | | ƽ| ʡ| | | | | н| | | | º| | лͨ| | ɽ| | | | ԭ| | ɽ| ǡ| |