??xml version="1.0" encoding="utf-8" standalone="yes"?>成人一二三区视频,99这里只有精品,91在线国产福利http://www.aygfsteel.com/Jody/category/9257.htmlzh-cnThu, 08 Mar 2007 02:30:52 GMTThu, 08 Mar 2007 02:30:52 GMT60java多线E?/title><link>http://www.aygfsteel.com/Jody/archive/2006/08/03/61539.html</link><dc:creator>zhaofei1394</dc:creator><author>zhaofei1394</author><pubDate>Thu, 03 Aug 2006 09:02:00 GMT</pubDate><guid>http://www.aygfsteel.com/Jody/archive/2006/08/03/61539.html</guid><wfw:comment>http://www.aygfsteel.com/Jody/comments/61539.html</wfw:comment><comments>http://www.aygfsteel.com/Jody/archive/2006/08/03/61539.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Jody/comments/commentRss/61539.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Jody/services/trackbacks/61539.html</trackback:ping><description><![CDATA[首先要理解线E首先需要了解一些基本的东西Q我们现在所使用的大多数操作pȝ都属于多dQ分时操作系l。正是由于这U操作系l的出现才有了多U程q个概念。我们用的windows,linux属于此列。什么是分时操作pȝ呢,通俗一点与是可以同一旉执行多个E序的操作系l,在自q电脑上面Q你是不是一边听歌,一边聊天还一边看|页呢?但实际上Qƈ不上cpu在同时执行这些程序,cpu只是时间切割ؓ旉片,然后时间片分配l这些程序,获得旉片的E序开始执行,不等执行完毕Q下个程序又获得旉片开始执行,q样多个E序轮流执行一D|_׃现在cpu的高速计能力,lh的感觉就像是多个E序在同时执行一栗?br />一般可以在同一旉内执行多个程序的操作pȝ都有q程的概?一个进E就是一个执行中的程?而每一个进E都有自q立的一块内存空?一l系l资?在进E概念中,每一个进E的内部数据和状态都是完全独立的.因此可以惛_创徏q执行一个进E的pȝ开像是比较大的Q所以线E出C。在java中,E序通过控制来执行E序?E序中单个顺序的控制称为线E?多线E则指的是在单个E序中可以同时运行多个不同的U程,执行不同的Q?多线E意味着一个程序的多行语句可以看上d乎在同一旉内同时运?Q你可以前面一句话的程序换成进E,q程是程序的一ơ执行过E?是系l运行程序的基本单位Q?br /><br />U程与进E相?是一D完成某个特定功能的代码,是程序中单个序的流控制;但与q程不同的是,同类的多个线E是׃n一块内存空间和一l系l资?而线E本w的数据通常只有微处理器的寄存器数据,以及一个供E序执行时用的堆栈.所以系l在产生一个线E?或者在各个U程之间切换?负担要比q程的?正因如此,U程也被UCؓ轻负药E?light-weight process).一个进E中可以包含多个U程.<br /><br />多Q务是指在一个系l中可以同时q行多个E序,x多个独立q行的Q?每个d对应一个进E,同进E一?一个线E也有从创徏,q行到消亡的q程,UCؓU程的生命周?用线E的状?state)表明U程处在生命周期的哪个阶D?U程有创?可运?q行?d,M五中状?通过U程的控制与调度可ɾU程在这几种状态间转化每个E序臛_自动拥有一个线E?UCؓȝE?当程序加载到内存?启动ȝE?<br /><br />[U程的运行机制以及调度模型] <br />java中多U程是一个类或一个程序执行或理多个U程执行d的能力,每个U程可以独立于其他线E而独立运行,当然也可以和其他U程协同q行Q一个类控制着它的所有线E,可以军_哪个U程得到优先U,哪个U程可以讉K其他cȝ资源Q哪个线E开始执行,哪个保持休眠状态?br />下面是线E的机制图:<br /><img onmouseover="javascript:imgShowTip(this);" style="DISPLAY: inline" onclick="javascript:imgClick(this);" alt="" src="http://java.chinaitlab.com/UploadFiles_8734/200604/20060404144316962.jpg" onload="javascript:imgLoad(this);" border="0" resized="0" /><br /><br />U程的状态表C线E正在进行的zd以及在此旉D内所能完成的d.U程有创?可运?q行?d,M五中状?一个具有生命的U程,L处于q五U状态之一Q?br /><b>1.创徏状?/b><br />使用newq算W创Z个线E后,该线E仅仅是一个空对象,pȝ没有分配资源,U该U程处于创徏状?new thread)<br /><b>2.可运行状?/b><br />使用start()Ҏ启动一个线E后,pȝU程分配了除CPU外的所需资源,使该U程处于可运行状?Runnable)<br /><b>3.q行中状?/b><br />Javaq行pȝ通过调度选中一个Runnable的线E?使其占有CPUq{行中状?Running).此时,pȝ真正执行U程的run()Ҏ.<br /><b>4.d状?/b><br />一个正在运行的U程因某U原因不能l运行时,q入d状?Blocked)<br /><b>5.M状?/b><br />U程l束后是M状?Dead)<br /><br />同一时刻如果有多个线E处于可q行状?则他们需要排队等待CPU资源.此时每个U程自动获得一个线E的优先U?priority),优先U的高低反映U程的重要或紧急程?可运行状态的U程按优先排队,U程调度依据优先U基上的"先到先服?原则.<br />U程调度理器负责线E排队和CPU在线E间的分?q由U程调度法q行调度.当线E调度管理器选种某个U程?该线E获得CPU资源而进入运行状?<br /><br />U程调度是先占式调度,卛_果在当前U程执行q程中一个更高优先的线E进入可q行状?则这个线E立卌调度执行.先占式调度分?独占式和分时方式.<br />独占方式?当前执行U程一直执行下??到执行完毕或׃某种原因d攑ּCPU,或CPU被一个更高优先的线E抢?br />分时方式?当前q行U程获得一个时间片,旉到时,即没有执行完也要让出CPU,q入可运行状?{待下一个时间片的调?pȝ选中其他可运行状态的U程执行<br />分时方式的系l每个U程工作若干?实现多线E同时运?br /><br />另外h意下面的U程调度规则Q如果有不理解,不急,往下看Q:<br />①如果两个或是两个以上的U程都修改一个对象,那么把执行修改的Ҏ定义同步的(SynchronizedQ?如果对象更新影响到只L法,那么只度Ҏ也应该定义ؓ同步?br />②如果一个线E必ȝ待一个对象状态发生变化,那么它应该在对象内部{待Q而不是在外部{待Q它可以调用一个被同步的方法,q让q个Ҏ调用wait()<br />③每当一个方法改变某个对象的状态的时候,它应该调用notifyAll()ҎQ这l等待队列的U程提供Z来看一看执行环境是否已发生改变<br />④记住wait(),notify(),notifyAll()Ҏ属于Objectc,而不是Threadc,仔细查看是否每次执行wait()Ҏ都有相应的notify()或notifyAll()ҎQ且它们作用与相同的对象 在java中每个类都有一个主U程Q要执行一个程序,那么q个cd中一定要有mainҎQ这个manҎ也就是java class中的ȝE。你可以自己创徏U程Q有两种ҎQ一是承Threadc,或是实现Runnable接口。一般情况下Q最好避免承,因ؓjava中是单根l承Q如果你选用l承Q那么你的类失MҎ,当然也不能全然否定承Thread,该方法编写简?可以直接操作U程,适用于单重承情c至于选用那一U,具体情况具体分析?br /><br /><br /><b>eg.l承Thread</b><br /><pre class="overflow">public class MyThread_1 extends Thread<br />{<br />public void run()<br />{<br />//some code <br />}<br />}</pre><br /><br /><b>eg.实现Runnable接口</b><br /><pre class="overflow">public class MyThread_2 implements Runnable<br />{<br />public void run()<br />{<br />//some code <br />}<br />}</pre><br /><br /><br />当用承创建线E,q样启动U程Q?br /><pre class="overflow">new MyThread_1().start()</pre><br /><br />当用实现接口创建线E,q样启动U程Q?br /><pre class="overflow">new Thread(new MyThread_2()).start()</pre><br /><br />注意Q其实是创徏一个线E实例,q以实现了Runnable接口的类为参C入这个实例,当执行这个线E的时候,MyThread_2中run里面的代码将被执行?br />下面是完成的例子Q?br /><br /><pre class="overflow">public class MyThread implements Runnable<br />{ <br /><br />public void run()<br />{ <br />System.out.println("My Name is "+Thread.currentThread().getName()); <br />} <br />public static void main(String[] args)<br />{<br />new Thread(new MyThread()).start(); <br />}<br />} </pre><br /><br /><br />执行后将打印出:<br /><span style="COLOR: blue">My Name is Thread-0</span><br /><br />你也可以创徏多个U程Q像下面q样<br /><pre class="overflow">new Thread(new MyThread()).start();<br />new Thread(new MyThread()).start();<br />new Thread(new MyThread()).start();</pre><br /><br /><br />那么会打印出Q?br /><span style="COLOR: blue">My Name is Thread-0<br />My Name is Thread-1<br />My Name is Thread-2</span><br /><br />看了上面的结果,你可能会认ؓU程的执行顺序是依次执行的,但是那只是一般情况,千万不要用以为是U程的执行机Ӟ影响U程执行序的因素有几点Q首先看看前面提到的优先U别<br /><br /><br /><pre class="overflow">public class MyThread implements Runnable<br />{ <br /><br />public void run()<br />{ <br />System.out.println("My Name is "+Thread.currentThread().getName()); <br />} <br />public static void main(String[] args)<br />{<br />Thread t1=new Thread(new MyThread());<br />Thread t2=new Thread(new MyThread());<br />Thread t3=new Thread(new MyThread());<br />t2.setPriority(Thread.MAX_PRIORITY);//赋予最高优先<br />t1.start();<br />t2.start();<br />t3.start();<br />}<br />} </pre><br /><br />再看看结果:<br /><span style="COLOR: blue">My Name is Thread-1<br />My Name is Thread-0<br />My Name is Thread-2</span><br /><br /><br />U程的优先分ؓ10U,分别??0的整C表,默认情况?。上面的t2.setPriority(Thread.MAX_PRIORITY){h与t2.setPriority(10Q?br />然后是线E程序本w的设计Q比如用sleep,yield,joinQwait{方法(详情LJDKDocument)<br /><br /><pre class="overflow">public class MyThread implements Runnable<br />{ <br />public void run()<br />{ <br />try<br />{<br />int sleepTime=(int)(Math.random()*100);//产生随机数字Q?br />Thread.currentThread().sleep(sleepTime);//让其休眠一定时_旉又上面sleepTime军_<br />//public static void sleep(long millis)throw InterruptedException QAPIQ?br />System.out.println(Thread.currentThread().getName()+" 睡了 "+sleepTime);<br />}catch(InterruptedException ie)//׃U程在休眠可能被中断Q所以调用sleepҎ的时候需要捕捉异?br />{<br />ie.printStackTrace();<br />} <br />} <br />public static void main(String[] args)<br />{<br />Thread t1=new Thread(new MyThread());<br />Thread t2=new Thread(new MyThread());<br />Thread t3=new Thread(new MyThread());<br />t1.start();<br />t2.start();<br />t3.start();<br />}<br />}</pre><br /><br />执行后观察其输出Q?br /><br /><span style="COLOR: blue">Thread-0 睡了 11<br />Thread-2 睡了 48<br />Thread-1 睡了 69</span><br /><br /><br /><br />上面的执行结果是随机的,再执行很可能出现不同的结果。由于上面我在run中添加了休眠语句Q当U程休眠的时候就会让出cpuQcpu会选择执行处于runnable状态中的其他线E,当然也可能出现这U情况,休眠的Thread立即q入了runnable状态,cpu再次执行它?br />[U程l概念]<br />U程是可以被l织的,java中存在线E组的概念,每个U程都是一个线E组的成?U程l把多个U程集成Z个对?通过U程l可以同时对其中的多个线E进行操?如启动一个线E组的所有线E等.Java的线E组由java.lang包中的Thread——Groupcd?<br />ThreadGroupcȝ来管理一l线E?包括:U程的数?U程间的关系,U程正在执行的操?以及U程要启动或终止时间等.U程l还可以包含U程l?在Java的应用程序中,最高层的线E组是名位main的线E组,在main中还可以加入U程或线E组,在mian的子U程l中也可以加入线E和U程l?形成U程l和U程之间的树状承关pR像上面创徏的线E都是属于mainq个U程l的?br />借用上面的例子,main里面可以q样写:<br /><br /><pre class="overflow">public static void main(String[] args)<br />{<br />/***************************************<br />ThreadGroup(String name) <br />ThreadGroup(ThreadGroup parent, String name) <br />***********************************/<br />ThreadGroup group1=new ThreadGroup("group1");<br />ThreadGroup group2=new ThreadGroup(group1,"group2");<br />Thread t1=new Thread(group2,new MyThread());<br />Thread t2=new Thread(group2,new MyThread());<br />Thread t3=new Thread(group2,new MyThread());<br />t1.start();<br />t2.start();<br />t3.start();<br />}</pre><br /><br /><br />U程l的嵌套Qt1,t2,t3被加入group2,group2加入group1?br />另外一个比较多是关于U程同步斚w的,试想q样一U情况,你有一W存Ƒ֜银行Q你在一安行ؓ你的账户存款Q而你的妻子在另一安行从q个账户提款Q现在你?000块在你的账户里面。你存入?000Q但是由于另一方也在对q笔存款q行操作Qh家开始执行的时候只看到账户里面原来?000元,当你的妻子提?000元后Q你d所在的银行pZ的̎户里面没有钱了,而你所在的银行却认Zq有2000元?br />看看下面的例子:<br /><br /><pre class="overflow">class BlankSaving //储蓄账户<br />{<br />private static int money=10000;<br />public void add(int i)<br />{<br />money=money+i;<br />System.out.println("Husband 向银行存入了 [K?+i+"]");<br />}<br />public void get(int i)<br />{<br />money=money-i;<br />System.out.println("Wife 向银行取C [K?+i+"]");<br />if(money<0)<br />System.out.println("余额不Q?); <br />}<br />public int showMoney()<br />{<br />return money;<br />}<br />} <br /><br /><br />class Operater implements Runnable<br />{<br />String name;<br />BlankSaving bs;<br />public Operater(BlankSaving b,String s)<br />{<br />name=s;<br />bs=b;<br /><br /><br /><br />}<br />public static void oper(String name,BlankSaving bs)<br />{<br /><br /><br /><br />if(name.equals("husband"))<br />{<br />try<br />{<br />for(int i=0;i<10;i++)<br />{<br />Thread.currentThread().sleep((int)(Math.random()*300));<br />bs.add(1000);<br />}<br />}catch(InterruptedException e){}<br />}else<br />{<br />try<br />{<br /><br /><br /><br />for(int i=0;i<10;i++)<br />{<br />Thread.currentThread().sleep((int)(Math.random()*300));<br />bs.get(1000);<br />}<br />}catch(InterruptedException e){}<br />}<br />}<br />public void run()<br />{<br />oper(name,bs);<br />} <br />}<br />public class BankTest <br />{<br />public static void main(String[] args)throws InterruptedException<br />{<br />BlankSaving bs=new BlankSaving();<br />Operater o1=new Operater(bs,"husband");<br />Operater o2=new Operater(bs,"wife");<br />Thread t1=new Thread(o1);<br />Thread t2=new Thread(o2);<br />t1.start();<br />t2.start();<br />Thread.currentThread().sleep(500);<br />}<br /><br /><br /><br />}</pre><br /><br /><br />下面是其中一ơ的执行l果Q?br /><br /><br /><br /><span style="COLOR: blue">---------first--------------<br />Husband 向银行存入了 [K?000]<br />Wife 向银行取C [K?000]<br />Wife 向银行取C [K?000]<br />Husband 向银行存入了 [K?000]<br />Wife 向银行取C [K?000]<br />Husband 向银行存入了 [K?000]<br />Wife 向银行取C [K?000]<br />Husband 向银行存入了 [K?000]<br />Wife 向银行取C [K?000]<br />Husband 向银行存入了 [K?000]<br />Husband 向银行存入了 [K?000]<br />Wife 向银行取C [K?000]<br />Husband 向银行存入了 [K?000]<br />Husband 向银行存入了 [K?000]<br />Wife 向银行取C [K?000]<br />Wife 向银行取C [K?000]<br />Husband 向银行存入了 [K?000]<br />Wife 向银行取C [K?000]<br />Wife 向银行取C [K?000]<br />Husband 向银行存入了 [K?000]</span><br /><br />看到了吗Q这可不是正的需求,在husbandq没有结束操作的时候,wife插了进来,q样很可能导致意外的l果。解军_法很单,是对数据q行操作Ҏ声明为synchronized,当方法被该关键字声明后,也就意味着Q如果这个数据被加锁Q只有一个对象得到这个数据的锁的时候该对象才能对这个数据进行操作。也是当你存款的时候,q笔账户在其他地Ҏ不能q行操作的,只有你存Ƒ֮毕,银行理人员̎戯锁,其他人才能对q个账户q行操作?br />修改public static void oper(String name,BlankSaving bs)为public static void oper(String name,BlankSaving bs)Q再看看l果:<br /><br /><span style="COLOR: blue">Husband 向银行存入了 [K?000]<br />Husband 向银行存入了 [K?000]<br />Husband 向银行存入了 [K?000]<br />Husband 向银行存入了 [K?000]<br />Husband 向银行存入了 [K?000]<br />Husband 向银行存入了 [K?000]<br />Husband 向银行存入了 [K?000]<br />Husband 向银行存入了 [K?000]<br />Husband 向银行存入了 [K?000]<br />Husband 向银行存入了 [K?000]<br />Wife 向银行取C [K?000]<br />Wife 向银行取C [K?000]<br />Wife 向银行取C [K?000]<br />Wife 向银行取C [K?000]<br />Wife 向银行取C [K?000]<br />Wife 向银行取C [K?000]<br />Wife 向银行取C [K?000]<br />Wife 向银行取C [K?000]<br />Wife 向银行取C [K?000]<br />Wife 向银行取C [K?000]</span><br /><br /><br /><br />当丈夫完成操作后Q妻子才开始执行操作,q样的话Q对׃n对象的操作就不会有问题了?br />[wait and notify]<br />你可以利用这两个Ҏ很好的控制线E的执行程Q当U程调用waitҎ后,U程被挂vQ直到被另一U程唤醒QnotifyQ或则是如果waitҎ指定有时间得话,在没有被唤醒的情况下Q指定时间时间过后也自动被唤醒。但是要注意一定,被唤醒ƈ不是指马上执行,而是从组塞状态变为可q行状态,其是否运行还要看cpu的调度?br />事例代码Q?br /><br /><pre class="overflow">class MyThread_1 extends Thread<br />{<br />Object lock;<br />public MyThread_1(Object o)<br />{<br />lock=o;<br />}<br />public void run()<br />{<br />try<br />{<br />synchronized(lock)<br />{<br />System.out.println("Enter Thread_1 and wait");<br />lock.wait();<br />System.out.println("be notified");<br />}<br />}catch(InterruptedException e){}<br />}<br />}<br />class MyThread_2 extends Thread<br />{<br />Object lock;<br />public MyThread_2(Object o)<br />{<br />lock=o;<br />}<br />public void run()<br />{<br />synchronized(lock)<br />{<br />System.out.println("Enter Thread_2 and notify");<br />lock.notify();<br />}<br />}<br />}<br />public class MyThread<br />{ <br />public static void main(String[] args)<br />{<br />int[] in=new int[0];//notice<br />MyThread_1 t1=new MyThread_1(in);<br />MyThread_2 t2=new MyThread_2(in);<br />t1.start();<br />t2.start();<br />}<br />}</pre><br /><br /><br /><br />执行l果如下Q?br /><span style="COLOR: blue">Enter Thread_1 and wait<br />Enter Thread_2 and notify<br />Thread_1 be notified</span><br /><br />可能你注意到了在使用wait and notifyҎ得时候我使用了synchronized块来包装q两个方法,q是׃调用q两个方法的时候线E必获得锁Q也是上面代码中的lock[]Q如果你不用synchronized包装q两个方法的得话Q又或则锁不一是同一把,比如在MyThread_2中synchronized(lock)改ؓsynchronized(this),那么执行q个E序的时候将会抛出java.lang.IllegalMonitorStateException执行期异常。另外wait and notifyҎ是Object中的Qƈ不在Threadq个cM。最后你可能注意Cq点Qint[] in=new int[0];Z么不是创建new Object而是一?长度的数l,那是因ؓ在java中创Z?长度的数l来充当锁更加高效?br /><br />Thread作ؓjava中一重要l成部分Q当然还有很多地斚w要更深刻的认识,上面只是对Thread的一些常识和易错问题做了一个简要的ȝQ若要真正的掌握java的线E,q需要自己多做ȝ <img src ="http://www.aygfsteel.com/Jody/aggbug/61539.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Jody/" target="_blank">zhaofei1394</a> 2006-08-03 17:02 <a href="http://www.aygfsteel.com/Jody/archive/2006/08/03/61539.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript 实用的一些技?http://www.aygfsteel.com/Jody/archive/2006/07/25/59972.htmlzhaofei1394zhaofei1394Tue, 25 Jul 2006 04:53:00 GMThttp://www.aygfsteel.com/Jody/archive/2006/07/25/59972.htmlhttp://www.aygfsteel.com/Jody/comments/59972.htmlhttp://www.aygfsteel.com/Jody/archive/2006/07/25/59972.html#Feedback0http://www.aygfsteel.com/Jody/comments/commentRss/59972.htmlhttp://www.aygfsteel.com/Jody/services/trackbacks/59972.html

1. oncontextmenu="window.event.returnValue=false" 彻底屏蔽鼠标右?br /><table border oncontextmenu=return(false)><td>no</table> 可用于Table

2. <body onselectstart="return false"> 取消选取、防止复?br />
3. onpaste="return false" 不准_脓

4. oncopy="return false;" oncut="return false;" 防止复制

5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图?/p>

6. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夹中显C出你的图标

7. <input style="ime-mode:disabled"> 关闭输入?/p>

8. 永远都会带着框架
<script language="JavaScript"><!--
if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网?br />// --></script>

9. 防止被hframe
<SCRIPT LANGUAGE=JAVASCRIPT><!--
if (top.location != self.location)top.location=self.location;
// --></SCRIPT>

10. |页不能被另存?br /><noscript><iframe src=*.html></iframe></noscript>

11. <input type=button value=查看|页源代?
onclick="window.location = "view-source:"+ "

12.删除时确?br /><a href="javascript:if(confirm("实要删除吗?"))location="boos.asp?&areyou=删除&page=1"">删除</a>

13. 取得控g的绝对位|?br />//Javascript
<script language="Javascript">
function getIE(e){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert("top="+t+"/nleft="+l);
}
</script>

//VBScript
<script language="VBScript"><!--
function getIE()
dim t,l,a,b
set a=document.all.img1
t=document.all.img1.offsetTop
l=document.all.img1.offsetLeft
while a.tagName<>"BODY"
set a = a.offsetParent
t=t+a.offsetTop
l=l+a.offsetLeft
wend
msgbox "top="&t&chr(13)&"left="&l,64,"得到控g的位|?
end function
--></script>

14. 光标是停在文本框文字的最?br /><script language="javascript">
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart("character",e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value="123" onfocus="cc()">

15. 判断上一늚来源
javascript:
document.referrer

16. 最化、最大化、关闭窗?br /><object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" VALUE="Close"></OBJECT>
<input type=button value=最化 onclick=hh1.Click()>
<input type=button value=最大化 onclick=hh2.Click()>
<input type=button value=关闭 onclick=hh3.Click()>
本例适用于IE

17.屏蔽功能键Shift,Alt,Ctrl
<script>
function look(){
if(event.shiftKey)
alert("止按Shift?"); //可以换成ALT CTRL
}
document.onkeydown=look;
</script>

18. |页不会被缓?br /><META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
或?lt;META HTTP-EQUIV="expires" CONTENT="0">

19.怎样让表单没有凹凸感Q?br /><input type=text style="border:1 solid #000000">
?br /><input type=text style="border-left:none; border-right:none; border-top:none; border-bottom:
1 solid #000000"></textarea>

20.<div><span>&<layer>的区别?
<div>(division)用来定义大段的页面元素,会生{?
<span>用来定义同一行内的元素,?lt;div>的唯一区别是不产生转行
<layer>是ns的标讎ͼie不支持,相当?lt;div>

21.让弹出窗口L在最上面:
<body onblur="this.focus();">

22.不要滚动?
让竖条没?
<body style="overflow:scroll;overflow-y:hidden">
</body>
让横条没?
<body style="overflow:scroll;overflow-x:hidden">
</body>
两个都去掉?更简单了
<body scroll="no">
</body>

23.怎样L囄链接点击后,囄周围的虚U?
<a href="#" onFocus="this.blur()"><img src="logo.jpg" border=0></a>

24.电子邮g处理提交表单
<form name="form1" method="post" action="mailto:****@***.com" enctype="text/plain">
<input type=submit>
</form>

25.在打开的子H口h父窗口的代码里如何写Q?br />window.opener.location.reload()

26.如何讑֮打开面的大?br /><body onload="top.resizeTo(300,200);">
打开面的位|?lt;body onload="top.moveBy(300,200);">

27.在页面中如何加入不是满铺的背景图?拉动面时背景图不动
<STYLE>
body
{background-image:url(logo.gif); background-repeat:no-repeat;
background-position:center;background-attachment: fixed}
</STYLE>

28. 查一D字W串是否全由数字l成
<script language="Javascript"><!--
function checkNum(str){return str.match(//D/)==null}
alert(checkNum("1232142141"))
alert(checkNum("123214214a1"))
// --></script>

29. 获得一个窗口的大小
document.body.clientWidth; document.body.clientHeight

30. 怎么判断是否是字W?br />if (/[^/x00-/xff]/g.test(s)) alert("含有汉字");
else alert("全是字符");

31.TEXTAREA自适应文字行数的多?br /><textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight">
</textarea>

32. 日期减去天数{于W二个日?br /><script language=Javascript>
function cc(dd,dadd)
{
//可以加上错误处理
var a = new Date(dd)
a = a.valueOf()
a = a - dadd * 24 * 60 * 60 * 1000
a = new Date(a)
alert(a.getFullYear() + "q? + (a.getMonth() + 1) + "? + a.getDate() + "?)
}
cc("12/23/2002",2)
</script>

33. 选择了哪一个Radio
<HTML><script language="vbscript">
function checkme()
for each ob in radio1
if ob.checked then window.alert ob.value
next
end function
</script><BODY>
<INPUT name="radio1" type="radio" value="style" checked>Style
<INPUT name="radio1" type="radio" value="barcode">Barcode
<INPUT type="button" value="check" onclick="checkme()">
</BODY></HTML>

34.脚本怸出错
<SCRIPT LANGUAGE="JavaScript">
<!-- Hide
function killErrors() {
return true;
}
window.onerror = killErrors;
// -->
</SCRIPT>

35.ENTER键可以让光标Ud下一个输入框
<input onkeydown="if(event.keyCode==13)event.keyCode=9">

36. 某个网站的链接速度Q?br />把如下代码加?lt;body>区域?
<script language=Javascript>
tim=1
setInterval("tim++",100)
b=1
var autourl=new Array()
autourl[1]="www.njcatv.net"
autourl[2]="javacool.3322.net"
autourl[3]="www.sina.com.cn"
autourl[4]="www.nuaa.edu.cn"
autourl[5]="www.cctv.com"
function butt(){
document.write("<form name=autof>")
for(var i=1;i<autourl.length;i++)
document.write("<input type=text name=txt"+i+" size=10 value=试中…?gt; =?lt;input type=text
name=url"+i+" size=40> =?lt;input type=button value=GO

onclick=window.open(this.form.url"+i+".value)><br>")
document.write("<input type=submit value=h></form>")
}
butt()
function auto(url){
document.forms[0]["url"+b].value=url
if(tim>200)
{document.forms[0]["txt"+b].value="链接时"}
else
{document.forms[0]["txt"+b].value=""+tim/10+"U?}
b++
}
function run(){for(var i=1;i<autourl.length;i++)document.write("<img src=http://"+autourl+"/"+Math.random()+" width=1 height=1

onerror=auto("http://"+autourl+"")>")}
run()</script>

37. 各种样式的光?br />auto Q标准光?br />default Q标准箭?br />hand Q手形光?br />wait Q等待光?br />text QI形光?br />vertical-text Q水qI形光?br />no-drop Q不可拖动光?br />not-allowed Q无效光?br />help Q?帮助光标
all-scroll Q三角方向标
move Q移动标
crosshair Q十字标
e-resize
n-resize
nw-resize
w-resize
s-resize
se-resize
sw-resize

38.面q入和退出的Ҏ
q入面<meta http-equiv="Page-Enter" content="revealTrans(duration=x, transition=y)">
推出面<meta http-equiv="Page-Exit" content="revealTrans(duration=x, transition=y)">
q个是页面被载入和调出时的一些特效。duration表示Ҏ的持l时_以秒为单位。transition表示使用哪种ҎQ取gؓ1-23:
  0 矩Ş~小
  1 矩Ş扩大
  2 圆Ş~小
  3 圆Ş扩大
  4 下到上刷?
  5 上到下刷?br />  6 左到叛_?
  7 叛_左刷?
  8 竖百叶窗
  9 横百叶窗
  10 错位横百叶窗
  11 错位竖百叶窗
  12 Ҏ?
  13 左右C间刷?
  14 中间到左叛_?br />  15 中间C?br />  16 上下C?
  17 右下到左?br />  18 右上到左?
  19 左上到右?
  20 左下到右?br />  21 横条
  22 竖条
  23 以上22U随机选择一U?br />
39.在规定时间内跌{
<META http-equiv=V="REFRESH" content="5;URL=http://www.51js.com">

40.|页是否被检?br /><meta name="ROBOTS" content="属性?>
  其中属性值有以下一?
  属性gؓ"all": 文g被索,且页上链接可被查询;
  属性gؓ"none": 文g不被索,而且不查询页上的链接Q?br />  属性gؓ"index": 文g被索;
  属性gؓ"follow": 查询上的链接;
  属性gؓ"noindex": 文g不检索,但可被查询链接;
  属性gؓ"nofollow": 文g不被索,但可查询上的链接?/p>



zhaofei1394 2006-07-25 12:53 发表评论
]]>
JSP和JavaScirpt数据交互http://www.aygfsteel.com/Jody/archive/2006/07/13/58003.htmlzhaofei1394zhaofei1394Thu, 13 Jul 2006 08:17:00 GMThttp://www.aygfsteel.com/Jody/archive/2006/07/13/58003.htmlhttp://www.aygfsteel.com/Jody/comments/58003.htmlhttp://www.aygfsteel.com/Jody/archive/2006/07/13/58003.html#Feedback0http://www.aygfsteel.com/Jody/comments/commentRss/58003.htmlhttp://www.aygfsteel.com/Jody/services/trackbacks/58003.html对于WEBE序来说Q前端(JavaScriptQ和后端QJSP/ServletQ是没法q数据的,只能是后端程序(JSPQ把数据输出Q生成页面到前端Q这时候生成的面中的JavaScript代码才有可能得到所谓jsp的数据。同LQ只有把JavaScript里的数据提交l后端JSP代码QJSPE序中才能得到JavaScript的数据?

    那如何实现在面的JavaScript中用jsp中的数据或是在jsp中用页面的JavaScript数据呢?

一、页面中的JavaScript的数据如何提交给后台的jspE序
    ?可以JavaScript的数据以xxx.JSP?var1=aaa&var2=bbb的Ş式作为URL的参ClJSPE序Q此时在jsp中用
<%String strVar1=request.getParameter("var1");%>可以获取到JavaScript脚本传递过来的数据Q?

    ?使用JavaScript通过在表单里加入隐藏域信息,然后用表单提交的方式把数据传递给JSPE序?


 
 

二、页面中的JavaScript的数据如何用后台的JSPE序的数?
    q个比较单,直接在JavaScript脚本中用<%QstrVar1%>可以把jspE序中的数据传递给JavaScript脚本使用了?

三、参考下面例子:

1、test.jsp

<%@ page contentType="text/html; charset=gb2312" %>

<%
  String s1="Hello ";
  String s2="World!!";
%>

<script language="JavaScript">
<!--
/***************************************************************
* JavaScript脚本Q放|在面中的M位置都可?
* insertclick()函数获取JSP传递到面中的变量s1Q?
* 然后可以在JavaScript中修改这个变量的|再通过
* post的方式提交给JSPE序来用?
***************************************************************/
function insertclick(){
  var1 ="<%=s1 %>";
  document.forms["insertForm"].mc.value = var1 + document.forms["insertForm"].mc.value ;
  document.insertForm.submit();
}
//-->
</script>

<!-- html面form表单Q放|在html面中的位置不限 -->
<form name="insertForm" method="post" action="get.jsp">
<!-- 下面q一句是获取JSPE序中传递过来的变量?-->
<input type="hidden" name="mc" value="<%=s2 %>">
<input type="button" value="提交" onclick="insertclick()">
</form>

2、get.jsp

<%
  String strVar1=request.getParameter("mc");
  out.print(strVar1);
%>


zhaofei1394 2006-07-13 16:17 发表评论
]]>
Java的“异常?/title><link>http://www.aygfsteel.com/Jody/archive/2006/04/20/42190.html</link><dc:creator>zhaofei1394</dc:creator><author>zhaofei1394</author><pubDate>Thu, 20 Apr 2006 08:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/Jody/archive/2006/04/20/42190.html</guid><wfw:comment>http://www.aygfsteel.com/Jody/comments/42190.html</wfw:comment><comments>http://www.aygfsteel.com/Jody/archive/2006/04/20/42190.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Jody/comments/commentRss/42190.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Jody/services/trackbacks/42190.html</trackback:ping><description><![CDATA[ <p align="center"> <big> <strong> <font size="3">Java的“异常?/font> </strong> </big> </p> <div align="right">                     </div> <p>??常????E??q??????????c???传统 ??a ~?E?Ӟ E??????q????q?????出错 ??息?q????????误, ????????需 要知 ????????l?节??常, ??局 ?量errno??储??常??c?型?q??????用, ??一 个errno????能在 ????reg; ?????????掉???最 ??的C语言 E?序, ???理??常??况, ????于goto?句?Java对??常?????????的?一 个Java的Exception?一 ??q??常?????象???现??常???Ӟ 一 个Exception对象 ???了, q?????q?个??常??????里?</p> <h4 align="center">8.1 基础 </h4> <p>Java的??常?????q????????的:try, catch, throw, throws和finally?用try ???一 D?E?序, ???现?异常”, p?l??出(throws?copy; 一 个??常”, ????q??的类 ???捉(catch?copy; 它, ?最 后(finally?copy; ?~??处理 ???理???是??常???E??????式: </p> <p>try { //E???} catch (ExceptionType1 e) { // 对ExceptionType1的处 ?} catch (ExceptionType2 e) { // 对ExceptionType2???throw(e); //???q?个??常?} finally { } </p> <h4 align="center">8.2 "?常??c??/h4> <p>在??常?c????最 ???一 ????c??做Throwable。这 ?c????C?所 ?的??常??c??个??常?c??都是Throwable??cRThrowable???????cR?一 c?是ExceptionQ是 ??E???????的??常??c?????q??生它 ??c??????的??常”??一 c?是ErrorQ????了那 ?copy; ???????的??常”?????用Error?c,??????????????败?在Exception??一 ?子类RuntimeExceptionQ???E??q?????????copy; ?误作 ??????的?</p> <h4 align="center">8.3 ??捉??常?</h4> <p>??常???是Java?q??????copy;??常???作出 ?????的??如, ??q???E????一 ????除的??常”?</p> <p>class Exc0 { public static void main(String args[]) { int d = 0; int a = 42/d; } } </p> <p>当Java??q????Ӟ ?????Q?????一 个?异常?????E?????q???q?????况, ?q??时??出”(throw?copy; q?个??常”?说??出??????一??????薯, ???????q????理?E???会 ?????W????断, ?? ????????来查 䏀??常”?一 个??常??????????理??常???的??q????里, ????~?一 个??常???器,所 ?~???????????了?~???????印Exception的字 W??reg; ??????常???炏V????????例子 ??出?</p> <p>C:\>java Exc0 java.lang.arithmeticException: / by zero at Exc0.main(Exc0.java:4) </p> <h4 align="center">8.4 try与catch </h4> <p>??????????理??常?q?l?l?q?行???用try来指 ?一 ???所 有??常???E?序???在tryE???面,???一 个catch??????????的??常??c?型。例 如, ?????????????基础???的, ?它包 ?一 个tryE????一 个catch?句?</p> <p>class exc1 { public static void main(string args[]) { try { int d = 0; int a = 42 / d; } catch (arithmeticexception e) { system.out.println("division by zero"); } } } </p> <p>catch???????决??常??况, ?一 ?copy; ??讑ֈ ????态, q??????一 ?l?l?q?行???一 ?子程 ?????个??常”, ?q???一 U??理, ??最 外一 U?</p> <h4 align="center">8.5 ?个catch??/h4> <p>???copy; ??下, ?一 D?E????????一 U?异常??c?????|??个catch?句, ???一 U??常?c????? 查, W?一 ???reg; ???????行?如果 一 ?c????c????话, ???c????面, ??永 q??????cR????一 ???个catch???E??的例 子?</p> <p>class MultiCatch { public static void main(String args[]) { try { int a = args.length; System.out.println("a = " + a); int b = 42/a; int c[] = {1}; c[42] = 99; } catch(ArithmeticException e) { System.out.println("div by 0: " + e); } catch(ArrayIndexOutOfBoundsException e) { system.out.println("array index oob: " + e); } } } </p> <p>???E??q??????敎ͼ ????一 ????的??常”, ?为a??????????copy; 一 ?????敎ͼ?????q?个??常”, ?为a?????????一 ?ArrayIndexOutOfBoundexception的??常”, ?????lc??度是1Q??lc[42]?倹{???????U????q??l?果?</p> <p>C:\>java MultiCatch a = 0 div by 0: java.lang.arithmeticexception: / by zero C:\>java MutiCatch 1 a = 1 array index oob: java.lang.ArrayIndexOutOfBoundsException:42 </p> <h4 align="center">8.6 try?????</h4> <p>????一 ???????????一 个try?句, ?q个 ?????部, ??一 个try???????码???遇到 一 个try?句,??常??????????面, ??所 有的try????成????一 U?的try??????U??常?q???理, ?????开Q????????q?U??常?的try?句????一 个try??????子?</p> <p>class MultiNest { static void procedure() { try { int c[] = { 1 }: c[42] = 99; } catch(ArrayIndexOutOfBoundsexception e) { System.out.println("array index oob: " + e); } } public static void main(String args[]) { try { int a = args.length; system.out.println("a = " + a); int b = 42/a; procedure(); } catch(arithmeticException e) { System.out.println("div by 0: " + e); } } } </p> <p>???数procedure????的try/catch?Ӟ 所 以main??d ?ArrayIndexOutOfBoundsException?</p> <h4 align="center">8.7 throw??/h4> <p>throw?????????一 个??常”??先, ???得到 一 个Throwable??????柄, ?q????到catch?句, 或?用new??W????一 个???是throw??????式?</p> <p>throw ThrowableInstance; </p> <p>E???在throw?????l?止, ?????????刎ͼ???????所 有try?????????????配的catch??的try块????一 ??有throw????子?</p> <p>class ThrowDemo { static void demoproc() { try { throw new NullPointerException("de3mo"); } catch(NullPointerException e) { System.out.println("caught inside demoproc"); throw e; } } public static void main(String args[]) { try { demoproc(); } catch(NullPointerException e) { system.out.println("recaught: " + e); } } } </p> <h4 align="center">8.8 throws??</h4> <p>throws????一 ???????????U??常”。对 ??数Exception?c??_Java ~?????q?????一????????的??常??c?型??果??常??c?型是Error?RuntimeExceptionQ??????c, q???????用,??q??copy; ?E??????????????的??果你 ??????一 个RuntimeExceptionQ????用throws??来声 ???c?型?q???????????????法: </p> <p>type method-name(arg-list) throws exception-list { } </p> <p>???一 D?E?序, ????一 个??常”, ????捕捉 它, ???用throws??明?q??~???????q?</p> <p>class ThrowsDemo1 { static void procedure( ) [ System.out.println("inside procedure"); throw new IllegalAccessException("demo"); } public static void main(String args[]) { procedure( ); } } </p> <p>???q????~??q?去, ??需 ??????数procedure抛出 了IllegalAccessExceptionQ?q??????????数main?捕捉 它????????子: </p> <p>class ThrowsDemo { static void procedure( ) throws IllegalAccessException { System.out.println("inside procedure"); throw new IllegalAccessException("demo"); } public static void main(String args[]) { try { procedure( ); } catch (IllegalAccessException e) { System.out.println("caught " + e); } } } </p> <p>?????l?果: </p> <p>C:\>java ThrowsDemo inside procedure caught java.lang.IllegalAccessException: demo </p> <h4 align="center">8.9 finally </h4> <p>?一 个??常????Ӟ E?????????U??的,?q???copy; 行, ?????????reg; ??的catch?句?q???q?回?????一 D???????什 么??常?????????的, ??词finally??????q??一D???的?????有catch?句,finallyE????????tryE?????E???reg; ??行??个try???需 ??一 ???reg; ??的catch??或finally?句?一 ?????q回 ????????敎ͼ ???q?一 ?????的??常”,???q?一 ???的return?句,finally????????员函 ?q????行????一 ??子, ???????敎ͼ????????????退 出, ???了finally?句?</p> <p>class FinallyDemo { static void procA( ) { try { System.out.println("inside procA"); throw new RuntimeException("demo"); } finally { System.out.println("procA's finally"); } } static void procB( ) { try { System.out.println("inside procB"); return; } finally { System.out.println("procB's finally"); } } public static void main(String args[]) { try { procA( ); } catch (Exception e); procB( ); } } </p> <p>???q?????q??l?果: </p> <p>C:\>java FinallyDemo inside procA procA's finally inside procB procB's finally </p> <h4 align="center">???l?</h4> <p>1. ??常????E??q??????????c?2. 在??常?c????最 ???c?叫ThrowableQ????????子类QException和Error?3. Java的??常????q??????实现QtryQcatchQthrowQthrows和finally?</p> <img src ="http://www.aygfsteel.com/Jody/aggbug/42190.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Jody/" target="_blank">zhaofei1394</a> 2006-04-20 16:41 <a href="http://www.aygfsteel.com/Jody/archive/2006/04/20/42190.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java日期格式转换试http://www.aygfsteel.com/Jody/archive/2006/04/06/39617.htmlzhaofei1394zhaofei1394Thu, 06 Apr 2006 08:39:00 GMThttp://www.aygfsteel.com/Jody/archive/2006/04/06/39617.htmlhttp://www.aygfsteel.com/Jody/comments/39617.htmlhttp://www.aygfsteel.com/Jody/archive/2006/04/06/39617.html#Feedback0http://www.aygfsteel.com/Jody/comments/commentRss/39617.htmlhttp://www.aygfsteel.com/Jody/services/trackbacks/39617.html

java日期格式转换试

来源Q?span id="SourceLabel">  作者: [字体Q?a href="javascript:ContentSize(16)">?/a>?/a>?/a>]

[更多内容误?http://www.heci.net |!]
java日期格式转换试

用到的包
//import java.util.Locale;

支持一鸣,q一下↓

import java.text.*;
import java.util.*;

1.-----------------------------------------
得到pȝ当前旉Q?br />
java.util.Date dt=new java.util.Date();
System.out.print(dt);  //输出l果是:Wed Aug 10 11:29:11 CST 2005

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
System.out.print(sdf.format(dt));  //输出l果是:2005-08-10

2.-----------------------------------------
把字W串转化为java.util.Date
Ҏ一Q?br />SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
java.util.Date dt=sdf.parse("2005-2-19");
System.out.print(sdf.format(dt));    //输出l果是:2005-2-19

Ҏ二:
java.util.Date dt=null;
DateFormat df=DateFormat.getDateInstance();
dt=df.parse("2005-12-19");
System.out.println(dt);              //输出l果为:Mon Dec 19 00:00:00 CST 2005
System.out.println(df.format(dt));  //输出l果为:2005-2-19

3.-----------------------------------------
把字W串转化为java.sql.Date
字符串必L"yyyy-mm-dd"格式Q否则会抛出IllegalArgumentException异常
java.sql.Date sdt=java.sql.Date.valueOf("2005-9-6");
System.out.println(sdt);          //输出l果为:2005-9-6

4.-----------------------------------------
TestApp.java

public class TestApp {

    public static void main(String[] args) {
        System.out.println("Hello World!");
        Date d=new Date();
       
        //System.out.println(d.toLocaleString());
       
        //Calendar cld=Calendar.getInstance();
        System.out.println("Calendar.get(Calendar.DATE)"+(Calendar.getInstance().get(Calendar.DATE)));
       
        Date dt=new Date();//Date(103,-5,-6);
        System.out.println("getNowYear(Date dt)"+getYear(dt));
        System.out.println("getNowMonth(Date dt)"+getMonth(dt));
        System.out.println("getNowDate(Date dt)"+getDate(dt));
    }
   

    /**
    * 获得当前日期的年份?br />    * @return int q䆾
    */
    public static int getNowYear(){
        return Calendar.getInstance().get(Calendar.YEAR);
    }

    /**
    * 获得l定日期的年?br />    * @param dt l定日期
    * @return int q䆾
    * @throws NullPointerException 如果参数q䆾为nullQ抛出异常?br />    */
    public static int getYear(Date dt)throws NullPointerException{
        if(dt==null){
            throw new NullPointerException("日期参数为null");
        }else{
            Calendar cld=Calendar.getInstance();
            cld.setTime(dt);
            return cld.get(Calendar.YEAR);
        }
    }
   
    /**
    * 获得当前日期的月份?br />    * @return int 月䆾
    */
    public static int getNowMonth(){
        return 1+Calendar.getInstance().get(Calendar.MONTH);
    }
   
    /**
    * 获得l定日期的月?br />    * @param dt l定日期
    * @return int 月䆾Q?-12Q?br />    * @throws NullPointerException 如果参数q䆾为nullQ抛出异常?br />    */
    public static int getMonth(Date dt)throws NullPointerException{
        if(dt==null){
            throw new NullPointerException("日期参数为null");
        }else{
            Calendar cld=Calendar.getInstance();
            cld.setTime(dt);
            return 1+cld.get(Calendar.MONTH);
        }
    }
    /**
    * 获得当前日期的当月的天数?br />    * @return int 当月的天?br />    */
    public static int getNowDate(){
        return 1+Calendar.getInstance().get(Calendar.DATE);
    }
   
    /**
    * 获得l定日期的当月的天数
    * @param dt l定日期
    * @return int 当月的天?br />    * @throws NullPointerException 如果参数q䆾为nullQ抛出异常?br />    */
    public static int getDate(Date dt)throws NullPointerException{
        if(dt==null){
            throw new NullPointerException("日期参数为null");
        }else{
            Calendar cld=Calendar.getInstance();
            cld.setTime(dt);
            return cld.get(Calendar.DATE);
        }
    }
}


zhaofei1394 2006-04-06 16:39 发表评论
]]>
վ֩ģ壺 | ˮ| | | | | ʯȪ| | | | | ľ| Դ| | γ| Դ| | | | Т| | | | | | ɽ| ΢| ľ| ӽ| غ| | | | | | ʯɽ| Ϻӿ| | ɽ| | ˮ|