ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>丁香婷婷在线,日本不卡一二三,中文字幕中文字幕一区三区http://www.aygfsteel.com/Jody/zh-cnThu, 12 Jun 2025 08:07:42 GMTThu, 12 Jun 2025 08:07:42 GMT60爱和被爱的成ç†?/title><link>http://www.aygfsteel.com/Jody/archive/2006/11/30/84542.html</link><dc:creator>zhaofei1394</dc:creator><author>zhaofei1394</author><pubDate>Thu, 30 Nov 2006 05:53:00 GMT</pubDate><guid>http://www.aygfsteel.com/Jody/archive/2006/11/30/84542.html</guid><wfw:comment>http://www.aygfsteel.com/Jody/comments/84542.html</wfw:comment><comments>http://www.aygfsteel.com/Jody/archive/2006/11/30/84542.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Jody/comments/commentRss/84542.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Jody/services/trackbacks/84542.html</trackback:ping><description><![CDATA[從前有個書ç”?和未婚妻約好在某òq´æŸæœˆæŸæ—¥çµå©?<br /><br /> 到那一å¤?未婚å¦Õd»å«çàäº†åˆ¥äº?br /><br /> 書生受此打擊,一病不èµ?<br /><br /> 家äh用盡各種辦法都無能為åŠ?眼看書生奄奄一æ?<br /><br /> 這時,路過一游方僧äh,得知情況,決定點化一下他.<br /><br /> 僧ähåˆîC»–床前,從懷裡摸å‡ÞZ¸€é¢é¡å­å«æ›¸ç”Ÿçœ?<br /> <br /><br /> 書生看到茫茫大æ“v,一名遇害的奛_­ä¸€¾i²ä¸æŽ›åœ°íwºåœ¨‹¹ïL˜ä¸?.<br /><br /> <br /> 路過一äº?看一çœ?搖搖é ?èµîCº†....<br /><br /> 又èµ\過一äº?ž®‡è¡£æœè„«ä¸?¾i¦å¥³å±è“‹ä¸?èµîCº†....<br /><br /> 再èµ\過一äº?過去,挖個坑,ž®å¿ƒ¾˜¼ç¿¼æŠŠå±é«”掩埋了............<br /><br /> <br /> 疑惑é–?畫面切換.書生看到自己的未婚妻.<br /><br /> ‹zžæˆ¿èŠÞq‡­,被她丈夫掀赯‚“‹é ­çš„瞬間...<br /><br /> <br /> 書生不明所ä»?<br /> <br /><br /> 僧äh解釋é?那具‹¹ïL˜ä¸Šçš„奛_±ž®±æ˜¯ä½ æœªå©šå¦»çš„前ä¸?<br /><br /> 你是½W?個èµ\過的äº?曄¡àéŽä»–一件衣æœ?<br /><br /> <br /> 她今生和你相戀,只為還你一個情.<br /><br /> 但是å¥ÒŽœ€¾i‚要å Þq­”一生一世的äº?<br /><br /> 是最後那個把å¥ÒŽŽ©åŸ‹çš„äº?é‚£ähž®±æ˜¯ä»–現在的丈夫<br /><br /> <br /> 書生大悟,唰地從床上坐èµ?ç—…ç™’.<br /><br /> <br /> <br /><br /> : ¾~˜è¿™ä¸œè¥¿,是最不可思议çš?<br /><br /> 电媄"不见不散"的主™åŒæ­Œé‡Œè¿™æ ·å”±é?˜q™ä¸–界说大就å¤?<br /><br /> 说小ž®±å°.ž®Þq®—是我们今生的¾U¦å®š,也要用一生去å¯ÀL‰¾...."<br /><br /> 我們在熙熙攘攘的äh¾Ÿ¤é‡Œ,寻觅着,渴望着....<br /> <br /> ½{‰å¾…着一个阳光灿烂的日子åQ?br /> <br /> 抑或一个灯火阑珊的夜晚åQ?br /><br /> 一‹Æ¡é‚‚逅,或者一个回眸来唤醒.<br /><br /><br /> 這之å‰?我們都惶惑着,<br /><br /> 惶惑的甚至不知道自己需要的½I¶ç«Ÿæ˜¯ä»€ä¹?<br /><br /> 直到你遇åˆîC¸€å€‹äh,<br /> <br /> 才恍焉™–“了解了自å·ÞqœŸæ­£æƒ³è¦çš„.<br /><br /> 从此改写了整个的人生.<br /><br /><br /> 一‹Æ¡çš„¾~˜è“v¾~˜ç­åQŒæˆ–è®æ€¼šéä½“鳞伤åQ?br /> <br /> 但缘份是一¿Uæ— ä»Žé€‰æ‹©ä¹Ÿæ— ä»Žå›žé¿çš„å¿…ç„¶.<br /><br /> 眼泪与欢½W‘都注定了要在缘份的天空中去开放 <br /> <br /> 也许选择了会¾lˆç”Ÿç—›è‹¦åQŒä½†æ˜¯é”™˜q‡äº†è‚¯å®šä¼šç»ˆç”Ÿé—æ†?<br /><br /><br /> 可无è®ÞZ“Q何時å€?我們都不能¾læœ›.<br /><br /> 不要攑ּƒè‡ªå·±å¯¹çœŸ,å–?¾ŸŽçš„˜q½æ±‚.<br /><br /> <br /> 人生的ä­hå€?在某¿Uæ„ä¹‰ä¸Šè®?ž®±æ˜¯çˆ±å’Œè¢«çˆ±çš„æˆç†?<br /><br /> 当真çˆ×ƒ¾†ä¸´æ—¶,果实也就成熟äº?<br /><img src ="http://www.aygfsteel.com/Jody/aggbug/84542.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-11-30 13:53 <a href="http://www.aygfsteel.com/Jody/archive/2006/11/30/84542.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Insert text file into MySQLhttp://www.aygfsteel.com/Jody/archive/2006/09/13/69337.htmlzhaofei1394zhaofei1394Wed, 13 Sep 2006 03:33:00 GMThttp://www.aygfsteel.com/Jody/archive/2006/09/13/69337.htmlhttp://www.aygfsteel.com/Jody/comments/69337.htmlhttp://www.aygfsteel.com/Jody/archive/2006/09/13/69337.html#Feedback0http://www.aygfsteel.com/Jody/comments/commentRss/69337.htmlhttp://www.aygfsteel.com/Jody/services/trackbacks/69337.html import  java.io.File;
import  java.io.FileInputStream;
import  java.sql.Connection;
import  java.sql.DriverManager;
import  java.sql.PreparedStatement;

public class  InsertTextFileToMySQL  {

   public static  Connection getConnection ()  throws  Exception  {
     String driver =  "org.gjt.mm.mysql.Driver" ;
     String url =  "jdbc:mysql://localhost/databaseName" ;
     String username =  "root" ;
     String password =  "root" ;

     Class .forName ( driver ) ;
     Connection conn = DriverManager.getConnection ( url, username, password ) ;
     return  conn;
   }

   public static  void  main ( String []  args ) throws  Exception  {
     String id =  "001" ;
     String fileName =  "fileName.txt" ;
    
     FileInputStream fis =  null ;
     PreparedStatement pstmt =  null ;
     Connection conn =  null ;
     try  {
       conn = getConnection () ;
       conn.setAutoCommit ( false ) ;
       File file =  new  File ( fileName ) ;
       fis =  new  FileInputStream ( file ) ;
       pstmt = conn.prepareStatement ( "insert into DataFiles(id, fileName, fileBody) values (?, ?, ?)" ) ;
       pstmt.setString ( 1 , id ) ;
       pstmt.setString ( 2 , fileName ) ;
       pstmt.setAsciiStream ( 3 , fis,  ( int )  file.length ()) ;
       pstmt.executeUpdate () ;
       conn.commit () ;
     }  catch  ( Exception e ) {
       System.err.println ( "Error: "  + e.getMessage ()) ;
       e.printStackTrace () ;
     }  finally  {
       pstmt.close () ;
       fis.close () ;
       conn.close () ;
     }
   }
}


]]>
java多线½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ȝ»Ÿéƒ½å±žäºŽå¤šä»ÕdŠ¡åQŒåˆ†æ—¶æ“ä½œç³»¾lŸã€‚正是由于这¿Uæ“ä½œç³»¾lŸçš„出现才有了多¾U¿ç¨‹˜q™ä¸ªæ¦‚念。我们ä‹É用的windows,linuxž®±å±žäºŽæ­¤åˆ—。什么是分时操作¾pȝ»Ÿå‘¢ï¼Œé€šä¿—一点与ž®±æ˜¯å¯ä»¥åŒä¸€æ—‰™—´æ‰§è¡Œå¤šä¸ª½E‹åºçš„æ“ä½œç³»¾lŸï¼Œåœ¨è‡ªå·Þqš„电脑上面åQŒä½ æ˜¯ä¸æ˜¯ä¸€è¾¹å¬æ­Œï¼Œä¸€è¾¹èŠå¤©è¿˜ä¸€è¾¹çœ‹¾|‘页呢?但实际上åQŒåƈ不上cpu在同时执行这些程序,cpu只是ž®†æ—¶é—´åˆ‡å‰²äؓ旉™—´ç‰‡ï¼Œç„¶åŽž®†æ—¶é—´ç‰‡åˆ†é…¾l™è¿™äº›ç¨‹åºï¼ŒèŽ·å¾—æ—‰™—´ç‰‡çš„½E‹åºå¼€å§‹æ‰§è¡Œï¼Œä¸ç­‰æ‰§è¡Œå®Œæ¯•åQŒä¸‹ä¸ªç¨‹åºåˆèŽ·å¾—æ—‰™—´ç‰‡å¼€å§‹æ‰§è¡Œï¼Œ˜q™æ ·å¤šä¸ª½E‹åºè½®æµæ‰§è¡Œä¸€ŒD‰|—¶é—ß_¼Œç”׃ºŽçŽ°åœ¨cpu的高速计½Ž—能力,¾l™äh的感觉就像是多个½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¿ç¨‹ä¹Ÿè¢«¿UîCؓ轻负药‚¿›½E?light-weight process).一个进½E‹ä¸­å¯ä»¥åŒ…含多个¾U¿ç¨‹.<br /><br />多ä“Q务是指在一个系¾lŸä¸­å¯ä»¥åŒæ—¶˜qè¡Œå¤šä¸ª½E‹åº,åÏxœ‰å¤šä¸ªç‹¬ç«‹˜qè¡Œçš„ä“QåŠ?每个ä»ÕdŠ¡å¯¹åº”ä¸€ä¸ªè¿›½E‹ï¼ŒåŒè¿›½E‹ä¸€æ ?一个线½E‹ä¹Ÿæœ‰ä»Žåˆ›å¾,˜qè¡Œåˆ°æ¶ˆäº¡çš„˜q‡ç¨‹,¿UîCØ“¾U¿ç¨‹çš„生命周æœ?用线½E‹çš„状æ€?state)表明¾U¿ç¨‹å¤„在生命周期的哪个阶ŒD?¾U¿ç¨‹æœ‰åˆ›å»?可运è¡?˜qè¡Œä¸?é˜Õd¡ž,æ­ÖMº¡äº”中状æ€?通过¾U¿ç¨‹çš„æŽ§åˆ¶ä¸Žè°ƒåº¦å¯ä‹É¾U¿ç¨‹åœ¨è¿™å‡ ç§çŠ¶æ€é—´è½¬åŒ–æ¯ä¸ª½E‹åºè‡›_°‘自动拥有一个线½E?¿UîCØ“ä¸Èº¿½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‹æ­£åœ¨è¿›è¡Œçš„‹zÕdŠ¨ä»¥åŠåœ¨æ­¤æ—‰™—´ŒDµå†…所能完成的ä»ÕdŠ¡.¾U¿ç¨‹æœ‰åˆ›å»?可运è¡?˜qè¡Œä¸?é˜Õd¡ž,æ­ÖMº¡äº”中状æ€?一个具有生命的¾U¿ç¨‹,æ€ÀL˜¯å¤„于˜q™äº”¿UçŠ¶æ€ä¹‹ä¸€åQ?br /><b>1.创徏状æ€?/b><br />使用new˜qç®—½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 />Java˜qè¡Œ¾pȝ»Ÿé€šè¿‡è°ƒåº¦é€‰ä¸­ä¸€ä¸ªRunnable的线½E?使其占有CPUòq¶è{䏸™¿è¡Œä¸­çжæ€?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¿ç¨‹éƒ½ä¿®æ”¹ä¸€ä¸ªå¯¹è±¡ï¼Œé‚£ä¹ˆæŠŠæ‰§è¡Œä¿®æ”¹çš„æ–ÒŽ³•å®šä¹‰ä¸ø™¢«åŒæ­¥çš„(SynchronizedåQ?如果对象更新影响到只è¯ÀL–¹æ³•,那么只度æ–ÒŽ³•ä¹Ÿåº”è¯¥å®šä¹‰äØ“åŒæ­¥çš?br />②如果一个线½E‹å¿…™åȝ­‰å¾…一个对象状态发生变化,那么它应该在对象内部½{‰å¾…åQŒè€Œä¸æ˜¯åœ¨å¤–部½{‰å¾…åQŒå®ƒå¯ä»¥è°ƒç”¨ä¸€ä¸ªè¢«åŒæ­¥çš„æ–¹æ³•,òq¶è®©˜q™ä¸ªæ–ÒŽ³•调用wait()<br />③每当一个方法改变某个对象的状态的时候,它应该调用notifyAll()æ–ÒŽ³•åQŒè¿™¾l™ç­‰å¾…队列的¾U¿ç¨‹æä¾›æœÞZ¼šæ¥çœ‹ä¸€çœ‹æ‰§è¡ŒçŽ¯å¢ƒæ˜¯å¦å·²å‘ç”Ÿæ”¹å˜<br />④记住wait(),notify(),notifyAll()æ–ÒŽ³•属于Object¾c»ï¼Œè€Œä¸æ˜¯Thread¾c»ï¼Œä»”细‹‚€æŸ¥çœ‹æ˜¯å¦æ¯æ¬¡æ‰§è¡Œwait()æ–ÒŽ³•都有相应的notify()或notifyAll()æ–ÒŽ³•åQŒä¸”它们作用与相同的对象 在java中每个类都有一个主¾U¿ç¨‹åQŒè¦æ‰§è¡Œä¸€ä¸ªç¨‹åºï¼Œé‚£ä¹ˆ˜q™ä¸ª¾cÕd½“中一定要有mainæ–ÒŽ³•åQŒè¿™ä¸ªmanæ–ÒŽ³•也就是java class中的ä¸Èº¿½E‹ã€‚你可以自己创徏¾U¿ç¨‹åQŒæœ‰ä¸¤ç§æ–ÒŽ³•åQŒä¸€æ˜¯ç‘ô承Thread¾c»ï¼Œæˆ–是实现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¿ç¨‹çš„优先çñ”åˆ†äØ“10¾U§ï¼Œåˆ†åˆ«ç”?åˆ?0的整æ•îC»£è¡¨ï¼Œé»˜è®¤æƒ…况æ˜?。上面的t2.setPriority(Thread.MAX_PRIORITY)½{‰ä­h与t2.setPriority(10åQ?br />然后是线½E‹ç¨‹åºæœ¬íw«çš„设计åQŒæ¯”如ä‹É用sleep,yield,joinåQŒwait½{‰æ–¹æ³•(详情è¯ïLœ‹JDKDocument)<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 åQˆAPIåQ?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¿ç¨‹ä¼‘眠的时候就会让出cpuåQŒcpuž®†ä¼šé€‰æ‹©æ‰§è¡Œå¤„于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——Group¾cÕd®žçŽ?<br />ThreadGroup¾cȝ”¨æ¥ç®¡ç†ä¸€¾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¿ç¨‹ä¹‹é—´çš„æ ‘状ç‘ô承关¾p…R€‚像上面创徏的线½E‹éƒ½æ˜¯å±žäºŽmain˜q™ä¸ª¾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„的嵌套åQŒt1,t2,t3被加入group2,group2加入group1ã€?br />另外一个比较多ž®±æ˜¯å…³äºŽ¾U¿ç¨‹åŒæ­¥æ–šw¢çš„,试想˜q™æ ·ä¸€¿Uæƒ…况,你有一½W”å­˜‹Æ‘Öœ¨é“¶è¡ŒåQŒä½ åœ¨ä¸€å®‰™“¶è¡Œäؓ你的账户存款åQŒè€Œä½ çš„妻子在另一安™“¶è¡Œä»Ž˜q™ä¸ªè´¦æˆ·ææ¬¾åQŒçŽ°åœ¨ä½ æœ?000块在你的账户里面。你存入äº?000åQŒä½†æ˜¯ç”±äºŽå¦ä¸€æ–¹ä¹Ÿåœ¨å¯¹˜q™ç¬”存款˜q›è¡Œæ“ä½œåQŒäh家开始执行的时候只看到账户里面原来çš?000元,当你的妻子提‹Æ?000元后åQŒä½ å¦Õd­æ‰€åœ¨çš„银行ž®Þp®¤ä¸ÞZ½ çš„è̎户里面没有钱了,而你所在的银行却认ä¸ÞZ½ ˜q˜æœ‰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Œè¿™å¯ä¸æ˜¯æ­£¼‹®çš„需求,在husband˜q˜æ²¡æœ‰ç»“束操作的时候,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¿ç¨‹ž®†è¢«æŒ‚è“våQŒç›´åˆ°è¢«å¦ä¸€¾U¿ç¨‹å”¤é†’åQˆnotifyåQ‰æˆ–则是如果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Œåƈ不在Thread˜q™ä¸ª¾cÖM¸­ã€‚最后你可能注意åˆîCº†˜q™ç‚¹åQšint[] 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键可以让光标¿UÕdˆ°ä¸‹ä¸€ä¸ªè¾“入框
<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 åQšI形光æ ?br />vertical-text åQšæ°´òq³I形光æ ?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 以上22¿Uéšæœºé€‰æ‹©ä¸€¿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>



]]>
Linux¾pȝ»Ÿä»ÕdŠ¡å®šæ—¶æ‰§è¡Œhttp://www.aygfsteel.com/Jody/archive/2006/07/14/58132.htmlzhaofei1394zhaofei1394Fri, 14 Jul 2006 03:40:00 GMThttp://www.aygfsteel.com/Jody/archive/2006/07/14/58132.htmlhttp://www.aygfsteel.com/Jody/comments/58132.htmlhttp://www.aygfsteel.com/Jody/archive/2006/07/14/58132.html#Feedback0http://www.aygfsteel.com/Jody/comments/commentRss/58132.htmlhttp://www.aygfsteel.com/Jody/services/trackbacks/58132.html ¾lå¸¸æœ‰åº”用写好后åQŒè¦ç”±æœåŠ¡å™¨è‡ªåŠ¨å®šæ—¶˜qè¡Œã€‚所以这是一个很常用的东西,其中都是我自å·×ƒº²è‡ªä‹É用的˜q‡ç¨‹ã€‚以此作ä¸ÞZ¾‹å­ï¼Œä¸ÞZ»¥åŽé‡å¤ä‹É用时留下资料ã€?/font>

1、认识Cron

cron是一个linux下的定时执行工具åQŒå¯ä»¥åœ¨æ— éœ€äººå·¥òq²é¢„的情况下˜qè¡Œä½œä¸šã€‚由于Cron 是Linux的内¾|®æœåŠ¡ï¼Œä½†å®ƒä¸è‡ªåŠ¨è“v来,可以用以下的æ–ÒŽ³•启动、关闭这个服务:

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置


你也可以ž®†è¿™ä¸ªæœåŠ¡åœ¨¾pȝ»Ÿå¯åŠ¨çš„æ—¶å€™è‡ªåŠ¨å¯åŠ¨ï¼š

åœ?etc/rc.d/rc.local˜q™ä¸ªè„šæœ¬çš„æœ«ž®‘ÖŠ ä¸Šï¼š
/sbin/service crond start

2、Cron服务

1)直接用crontab命ä×o¾~–辑

cron服务提供crontab命ä×o来设定cron服务的,以下是这个命令的一些参æ•îC¸Žè¯´æ˜ŽåQ?/p>

crontab -u //è®‘Ö®šæŸä¸ªç”¨æˆ·çš„cron服务åQŒä¸€èˆ¬root用户在执行这个命令的时候需要此参数

crontab -l //列出某个用户cron服务的详¾l†å†…å®?/p>

crontab -r //删除没个用户的cron服务

crontab -e //¾~–辑某个用户的cron服务

比如说root查看自己的cron讄¡½®åQšcrontab -u root -l

再例如,root惛_ˆ é™¤fredçš„cron讄¡½®åQšcrontab -u fred -r

在编辑cron服务æ—Óž¼Œ¾~–辑的内å®ÒŽœ‰ä¸€äº›æ ¼å¼å’Œ¾U¦å®šåQŒè¾“入:crontab -u root -e

åQˆæ³¨åQšå¤§å“¥å¤§å§ï¼Œçœ‹æ–‡ç« æ—¶åˆ«å¿˜è®°å…³æ³¨æˆ‘哟,嘿嘿åQ?/font>

˜q›å…¥vi¾~–辑模式åQŒç¼–辑的内容一定要½W¦åˆä¸‹é¢çš„æ ¼å¼ï¼š*/1 * * * * ls >> /tmp/ls.txt

˜q™ä¸ªæ ¼å¼çš„前一部分是对旉™—´çš„设定,后面一部分是要执行的命令,如果要执行的命ä×o太多åQŒå¯ä»¥æŠŠ˜q™äº›å‘½ä×oå†™åˆ°ä¸€ä¸ªè„šæœ¬é‡Œé¢ï¼Œç„¶åŽåœ¨è¿™é‡Œç›´æŽ¥è°ƒç”¨è¿™ä¸ªè„šæœ¬å°±å¯ä»¥äº†ï¼Œè°ƒç”¨çš„æ—¶å€™è®°å¾—å†™å‡ºå‘½ä»¤çš„å®Œæ•´è·¯å¾„ã€‚æ—¶é—´çš„è®‘Ö®šæˆ‘ä»¬æœ‰ä¸€å®šçš„¾U¦å®šåQŒå‰é¢äº”ä¸?å·ä»£è¡¨äº”ä¸ªæ•°å­—ï¼Œæ•°å­—çš„å–å€ÆDŒƒå›´å’Œå«ä¹‰å¦‚下åQ?/p>

分钟 åQ?-59åQ?/p>

ž®æ™‚ åQ?-23åQ?/p>

日期 åQ?-31åQ?/p>

月䆾 åQ?-12åQ?/p>

星期 åQ?-6åQ?/0代表星期å¤?/p>

除了数字˜q˜æœ‰å‡ ä¸ªä¸ªç‰¹ŒDŠçš„½W¦å·ž®±æ˜¯"*"ã€?/"å’?-"ã€?,"åQ?ä»£è¡¨æ‰€æœ‰çš„å–å€ÆDŒƒå›´å†…的数字,"/"代表每的意æ€?"*/5"表示æ¯?个单位,"-"代表从某个数字到某个数字,","分开几个¼›ÀL•£çš„æ•°å­—。以下ä‹D几个例子说明问题åQ?/p>

每天早上6�/p>

0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echoåQŒä»Žå±å¹•上看不到ä»ÖM½•输出åQŒå› ä¸ºcron把ä“Q何输出都email到root的信½Ž×ƒº†ã€?/p>

每两个小�/p>

0 */2 * * * echo "Have a break now." >> /tmp/test.txt

晚上11点到早上8点之间每两个ž®æ—¶åQŒæ—©ä¸Šå…«ç‚?/p>

0 23-7/2åQ? * * * echo "Have a good dreamåQšï¼‰" >> /tmp/test.txt

每个月的4号和每个½C¼æ‹œçš„礼拜一到礼拜三的早ä¸?1ç‚?/p>

0 11 4 * 1-3 command line

1�日早��/p>

0 4 1 1 * command line

每次¾~–辑完某个用æˆïLš„cron讄¡½®åŽï¼Œcron自动åœ?var/spool/cron下生成一个与此用户同名的文äšgåQŒæ­¤ç”¨æˆ·çš„cron信息都记录在˜q™ä¸ªæ–‡äšg中,˜q™ä¸ªæ–‡äšg是不可以直接¾~–辑的,只可以用crontab -e 来编辑。cron启动后每˜q‡ä¸€ä»½é’Ÿè¯ÖM¸€‹Æ¡è¿™ä¸ªæ–‡ä»Óž¼Œ‹‚€æŸ¥æ˜¯å¦è¦æ‰§è¡Œé‡Œé¢çš„命令。因此此文äšg修改后不需要重新启动cron服务ã€?/p>

åQˆæœ‰äº†ä½ ä»¬çš„å…Ïx³¨åQŒæ‰æœ‰æˆ‘¾l§ç®‹å†™ä¸‹åŽÈš„动力åQï¼‰è¯ïL‚¹ä¸‹é¢çš„广告吧åQ?/font>


2)¾~–辑/etc/crontab æ–‡äšg配置cron

cron服务每分钟不仅要è¯ÖM¸€‹Æ?var/spool/cron内的所有文ä»Óž¼Œ˜q˜éœ€è¦è¯»ä¸€‹Æ?etc/crontab,因此我们配置˜q™ä¸ªæ–‡äšg也能˜qç”¨cron服务做一些事情。用crontab配置是针å¯ÒŽŸä¸ªç”¨æˆïLš„åQŒè€Œç¼–è¾?etc/crontab是针对系¾lŸçš„ä»ÕdŠ¡ã€‚æ­¤æ–‡äšg的文件格式是åQ?/p>

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误åQŒæˆ–者有数据输出åQŒæ•°æ®ä½œä¸ºé‚®ä»¶å‘¾l™è¿™ä¸ªå¸å?br />HOME=/ //使用者运行的路径,˜q™é‡Œæ˜¯æ ¹ç›®å½•
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小时执�etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期执�etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每月åŽÀL‰§è¡?etc/cron.monthly内的脚本

3、实�/p>

我在/etc/crontab æ–‡äšg中配¾|®cronåQ?/p>

#product price trend picture
0 1 * * * root sh /home1/picture/myconfig.sh    åQˆæ¯å¤?炚w’Ÿæ—¶æ‰§è¡Œroot用户中的/home1/picture/myconfig.sh åQ?/p>

我的myconfig.shåQ?/p>

JAVA_HOME=/home1/jdk1.5.0_03;export JAVA_HOME

JAVA_OPTS="-server -Djava.awt.headless=true";export JAVA_OPTS 

åQˆç”±äºŽæˆ‘的应用是一个绘囑ֺ”用,所以要以上两段åQŒæŒ‡å®šJDK½{‰ï¼‰

cd /home1/picture/lib  åQˆæŒ‡å®šæˆ‘çš„JARæ–‡äšg所在位åQ?br />/home1/jdk1.5.0_03/bin/java -cp /home1/picture/lib/PriceTrendPicture.jar:/home1/picture/lib/classes12.jar:/home1/picture/lib/ibatis-common-2.jar:/home1/picture/lib/ibatis-dao-2.jar:/home1/picture/lib/ibatis-sqlmap-2.jar:log4j-1.2.8.jar:/home1/picture/lib/xmlparserv2.jar:/home1/picture/lib/commons-logging.jar com.yesky.run.PriceTrendPicture

/home1/jdk1.5.0_03/bin/java -cp ˜q™æ˜¯æˆ‘çš„JDK位置  随后加上所有ä‹É用的JARæ–‡äšg 最后是有main()的执行类



]]>
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对于WEB½E‹åºæ¥è¯´åQŒå‰ç«¯ï¼ˆJavaScriptåQ‰å’ŒåŽç«¯åQˆJSP/ServletåQ‰æ˜¯æ²¡æ³•å…Þq”¨æ•°æ®çš„,只能是后端程序(JSPåQ‰æŠŠæ•°æ®è¾“出åQŒç”Ÿæˆé¡µé¢åˆ°å‰ç«¯åQŒè¿™æ—¶å€™ç”Ÿæˆçš„™åµé¢ä¸­çš„JavaScript代码才有可能得到所谓jsp的数据。同æ ïLš„åQŒåªæœ‰æŠŠJavaScript里的数据提交¾l™åŽç«¯JSP代码åQŒJSP½E‹åºä¸­æ‰èƒ½å¾—到JavaScript的数据ã€?

    那如何实现在™åµé¢çš„JavaScript中ä‹É用jsp中的数据或是在jsp中ä‹É用页面的JavaScript数据呢?

一、页面中的JavaScript的数据如何提交给后台的jsp½E‹åº
    â‘?可以ž®†JavaScript的数据以xxx.JSP?var1=aaa&var2=bbbçš„åŞ式作为URL的参æ•îC¼ ¾l™JSP½E‹åºåQŒæ­¤æ—¶åœ¨jsp中用
<%String strVar1=request.getParameter("var1");%>ž®±å¯ä»¥èŽ·å–åˆ°JavaScript脚本传递过来的数据åQ?

    â‘?使用JavaScript通过在表单里加入隐藏域信息,然后用表单提交的方式把数据传递给JSP½E‹åºã€?


 
 

二、页面中的JavaScript的数据如何ä‹É用后台的JSP½E‹åºçš„æ•°æ?
    ˜q™ä¸ªæ¯”较½Ž€å•,直接在JavaScript脚本中用<%åQstrVar1%>ž®±å¯ä»¥æŠŠjsp½E‹åºä¸­çš„æ•°æ®ä¼ é€’ç»™JavaScript脚本使用了ã€?

三、参考下面例子:

1、test.jsp

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

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

<script language="JavaScript">
<!--
/***************************************************************
* JavaScript脚本åQŒæ”¾¾|®åœ¨™åµé¢ä¸­çš„ä»ÖM½•位置都可ä»?
* insertclick()函数获取JSP传递到™åµé¢ä¸­çš„变量s1åQ?
* 然后ž®±å¯ä»¥åœ¨JavaScript中修改这个变量的å€û|¼Œå†é€šè¿‡
* post的方式提交给JSP½E‹åºæ¥ä‹É用ã€?
***************************************************************/
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™ä¸€å¥æ˜¯èŽ·å–JSP½E‹åºä¸­ä¼ é€’过来的变量å€?-->
<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);
%>



]]>
一个简单的存储˜q‡ç¨‹åQ?/title><link>http://www.aygfsteel.com/Jody/archive/2006/06/26/55148.html</link><dc:creator>zhaofei1394</dc:creator><author>zhaofei1394</author><pubDate>Mon, 26 Jun 2006 06:23:00 GMT</pubDate><guid>http://www.aygfsteel.com/Jody/archive/2006/06/26/55148.html</guid><wfw:comment>http://www.aygfsteel.com/Jody/comments/55148.html</wfw:comment><comments>http://www.aygfsteel.com/Jody/archive/2006/06/26/55148.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Jody/comments/commentRss/55148.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Jody/services/trackbacks/55148.html</trackback:ping><description><![CDATA[ <p>create procedure wap_data_content_zf as<br />declare @data_0 varchar(100)<br />declare @date_1 varchar(100)<br />declare @date_2 varchar(100)<br />declare @yvisit integer<br />declare @yadd integer<br />declare @mvisit integer<br />declare @madd integer</p> <p> <br />set @data_0=convert(char(8),getdate(),112)<br />set @data_1=convert(char(8),dateadd(day,-1,getdate()),112)<br />set @date_2=left(convert(char(30),dateadd(day,-1,getdate()),121),10)</p> <p>print @temp_0<br />print @temp_1<br />print @temp_2</p> <p>select @yvisit=count(distinct(mid)) from dbo.wap_log_access_2006_6 where uri='/wap/pd/yysl_yk/index.jsp'<br />and mid != ''<br />and create_time >= '2006-06-06 00:00:00' <br />and create_time <= '2006-06-06 23:59:59'</p> <p>select @mvisit=count(distinct(mid)) from dbo.wap_log_access_2006_6 where uri='/wap/pd/mlmhc_yk/index.jsp'<br />and mid != ''<br />and create_time >= '2006-06-06 00:00:00' <br />and create_time <= '2006-06-06 23:59:59'</p> <p>select @yadd=count(distinct(mid)) from dbo.wap_log_fee_2006_6 as a<br />where a.uri='/wap/pd/yysl_yk/get.jsp'<br />and a.mid != ''<br />and a.portal_id=0 <br />and a.create_time >= '2006-06-06 00:00:00' <br />and a.create_time <= '2006-06-06 23:59:59'<br />and exists(select * from dbo.wapuser as b where a.mid = b.mid and b.serviceid='30050631'<br />and b.firsttime >= '2006-06-06 00:00:00' <br />and b.firsttime <= '2006-06-06 23:59:59')</p> <p>select @madd=count(distinct(mid)) from dbo.wap_log_fee_2006_6 as a<br />where a.uri='/wap/pd/mlmhc_yk/get.jsp'<br />and a.mid != ''<br />and a.portal_id=0 <br />and a.create_time >= '2006-06-06 00:00:00' <br />and a.create_time <= '2006-06-06 23:59:59'<br />and exists(select * from dbo.wapuser as b where a.mid = b.mid and b.serviceid='02011095'<br />and b.firsttime >= '2006-06-06 00:00:00' <br />and b.firsttime <= '2006-06-06 23:59:59')</p> <p>insert into wap_data_content_zf wap(date,mvisit,madd,yvisit,yadd)<br />       values(@temp_2,@mvisit,@madd,@yvisit,@yadd)</p> <img src ="http://www.aygfsteel.com/Jody/aggbug/55148.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-06-26 14:23 <a href="http://www.aygfsteel.com/Jody/archive/2006/06/26/55148.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CREATE PROCEDUREhttp://www.aygfsteel.com/Jody/archive/2006/05/29/48732.htmlzhaofei1394zhaofei1394Mon, 29 May 2006 05:24:00 GMThttp://www.aygfsteel.com/Jody/archive/2006/05/29/48732.htmlhttp://www.aygfsteel.com/Jody/comments/48732.htmlhttp://www.aygfsteel.com/Jody/archive/2006/05/29/48732.html#Feedback0http://www.aygfsteel.com/Jody/comments/commentRss/48732.htmlhttp://www.aygfsteel.com/Jody/services/trackbacks/48732.htmlCREATE PROCEDURE birdincome_zf
AS
declare @actionid integer
declare @mid varchar(100)
declare @service_id varchar(100)

declare  case1    cursor for 
    SELECT mid,service_id from bird_user_2006_03 where type=0 
declare  case2    cursor for 
    SELECT mid,service_id from bird_user_2006_03 where type=1
 
open case1
  fetch next from case1 into @mid,@service_id
  while (@@fetch_status=0)
    begin
        select top 1  @actionid=bb.actionid from  operation_temp_0526 as bb
               where bb.serviceid=@service_id and bb.mid=@mid
        order by bb.id desc

     if (@actionid=1)        
        insert into bird_user_2006_04(mid,service_id,type,portal_id) values(@mid,@service_id,'1','10000')
     else
         print 'ooooooo'     
        fetch next from case1 into @mid,@service_id
   end
deallocate case1

open case2
  fetch next from case2 into @mid,@service_id
  while (@@fetch_status=0)
    begin
        select  top 1 @actionid=bb.actionid from  operation_temp_0526 as bb
               where bb.serviceid=@service_id and bb.mid=@mid
        order by bb.id desc

     if (@actionid != 2)          
        insert into bird_user_2006_04(mid,service_id,type,portal_id) values(@mid,@service_id,'2','10000')
        fetch next from case2 into @mid,@service_id
   end
deallocate case2
GO



]]>
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çš?å­?¾c…R€‚Throwableæœ?ä¸?ä¸?ç›?æŽ?çš?å­?¾c…R€?一 ¾c?是ExceptionåQŒæ˜¯ ç”?æˆ?½E?åº?èƒ?å¤?æ?æ?åˆ?çš„â€?å¼?常â€?æƒ?å†üc€?æˆ?ä»?ž®?é€?˜q?äº?生它 çš?å­?¾c?æ?åˆ?å»?è‡?å·?çš„â€?å¼?常”ã€?å?一 ¾c?是ErroråQ?å®?å®?ä¹?了那 ?copy; é€?å¸?æ—?æ³?æ?æ?åˆ?çš„â€?å¼?常”ã€?è¦?è°?æ…?ä½?用Errorå­?¾c»ï¼Œå›?ä¸?å®?ä»?é€?å¸?ä¼?å¯?è‡?ç?éš?æ€?çš?å¤?è´¥ã€?在Exceptionä¸?æœ?一 ä¸?子类RuntimeExceptionåQ?å®?æ˜?½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?序ã€?ç´?è·?在try½E?åº?å?面,åº?åŒ?å?一 个catchå­?å?æ?æŒ?å®?ä½?æƒ?è¦?æ?æ?çš„â€?å¼?常â€?çš?¾c?型。例 如, ä¸?é?çš?ä¾?å­?æ˜?åœ?å‰?é?çš?ä¾?å­?çš?基础ä¸?æž?é€?的, ä½?它包 å?一 个try½E?åº?å?å’?一 个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?ä¸?ä¼?åˆ?è¾?å­?¾c…R€?ä¸?é?æ˜?一 ä¸?æœ?ä¸?个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çš„â€?å¼?常”, å›?ä¸?æ•?åž?æ•?¾l„cçš?é•?度是1åQ?å?¾l™c[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æˆ?RuntimeExceptionåQ?æˆ?å®?ä»?çš?å­?¾c»ï¼Œ ˜q?ä¸?è§?åˆ?ä¸?èµ?ä½?用,å›?ä¸?˜q??copy; åœ?½E?åº?çš?æ­?å¸?éƒ?åˆ?ä¸?æ˜?ä¸?æœ?å¾?å‡?çŽ?çš„ã€?å¦?果你 æƒ?æ˜?¼‹?åœ?æŠ?å‡?一 个RuntimeExceptionåQ?ä½?å¿?™å?用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抛出 了IllegalAccessExceptionåQ?ò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å­?句,finally½E?åº?å?ä¹?ä¼?åœ?æ‰?è¡?try½E?åº?å?å?çš?½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?叫ThrowableåQ?å®?æœ?ä¸?ä¸?ç›?æŽ?çš?子类åQšExceptionå’ŒErrorã€?3. Javaçš„â€?å¼?常â€?å¤?ç?é€?˜q?ä¸?å…?é”?è¯?æ?实现åQštryåQŒcatchåQŒthrowåQŒthrowså’Œ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>在SQL中ä‹É用convert函数˜q›è¡Œæ—¥æœŸçš„æŸ¥è¯?/title><link>http://www.aygfsteel.com/Jody/archive/2006/04/19/41931.html</link><dc:creator>zhaofei1394</dc:creator><author>zhaofei1394</author><pubDate>Wed, 19 Apr 2006 08:10:00 GMT</pubDate><guid>http://www.aygfsteel.com/Jody/archive/2006/04/19/41931.html</guid><wfw:comment>http://www.aygfsteel.com/Jody/comments/41931.html</wfw:comment><comments>http://www.aygfsteel.com/Jody/archive/2006/04/19/41931.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Jody/comments/commentRss/41931.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Jody/services/trackbacks/41931.html</trackback:ping><description><![CDATA[         曄¡»é‡åˆ°˜q™æ ·çš„æƒ…å†?在数据库的Meeting表中有PublishTime (DateTime,8)字段,用来存储一个开会时é—?在存入时ç”׃ºŽè¦æŒ‡æ˜Žå¼€ä¼šå…·ä½“æ—¶é—?æ•…æ ¼å¼äØ“yyyy-mm-dd hh:mm:ss,而我们查询时是通过yyyy-mm-dd来进行的,åÏxŸ¥è¯¢æŸä¸€å¤©çš„æ‰€æœ‰ä¼šè®®ä¿¡æ?˜q™æ ·å¦‚果通过select * from Meeting where PublishTime=@PublishTime (参数@PublishTime为yyyy-mm-dd格式)语句˜q›è¡ŒæŸ¥è¯¢ž®†æ— æ³•得到正¼‹®ç»“æž?比如我们要查è¯?004òq?2æœ?日的会议信息,在输å…?004-12-01时就不能得到查询¾l“æžœ,而这¿UæŸ¥è¯¢åˆä¸èƒ½è¦æ±‚输入具体的hh:mm:ss. <p>此时我们需要ä‹É用convert函数,它可以将一¿Uæ•°æ®ç±»åž‹çš„表达式è{æ¢äØ“å¦ä¸€¿Uæ•°æ®ç±»åž‹çš„表达å¼?此处我们先将数据库内的datetime¾cÕdž‹è½¬æ¢ä¸ºchar¾cÕdž‹,ç”׃ºŽè¾“入的参数是10位的,所以写æˆ?/p><p>select * from Meeting where convert(varchar(10),PublishTime,121))=@PublishTime,˜q™æ ·åœ¨æŸ¥è¯¢æ—¶æ•°æ®åº“得到参数后先自动将数据库内的信息è{æ¢äØ“yyyy-mm-dd格式çš?0位字½W?只要与参数相同即可返回查询结æž?而convert中的121是指ž®†datetime¾cÕdž‹è½¬æ¢ä¸ºchar¾cÕdž‹æ—¶èŽ·å¾—åŒ…æ‹¬ä¸–¾Uªä½æ•°çš„4位年ä»?br /><br />格式:<br /><b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">CONVERT</b>(data_type,expression[,style])<br /><br />说明:<br />此样式一般在旉™—´¾cÕdž‹(datetime,smalldatetime)与字½W¦ä¸²¾cÕdž‹(nchar,nvarchar,char,varchar)<br />ç›æ€º’转换的时候才用到.<br /><br />例子:<br />Select <b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">CONVERT</b>(varchar(30),getdate(),101) now<br />¾l“æžœä¸?br />now<br />---------------------------------------<br />09/15/2001<br /><br />/////////////////////////////////////////////////////////////////////////////////////<br /><br />style数字在è{换时间时的含义如ä¸?br /><br />-------------------------------------------------------------------------------------------------<br />Style(2位表½Cºå¹´ä»? | Style(4位表½Cºå¹´ä»? | 输入输出格式 <br />-------------------------------------------------------------------------------------------------<br />- | 0 or 100 | mon dd yyyy hh:miAM(或PM) <br />-------------------------------------------------------------------------------------------------<br />1 | 101 | mm/dd/yy <br />-------------------------------------------------------------------------------------------------<br />2 | 102 | yy-mm-dd <br />-------------------------------------------------------------------------------------------------<br />3 | 103 | dd/mm/yy <br />-------------------------------------------------------------------------------------------------<br />4 | 104 | dd-mm-yy <br />-------------------------------------------------------------------------------------------------<br />5 | 105 | dd-mm-yy <br />-------------------------------------------------------------------------------------------------<br />6 | 106 | dd mon yy <br />-------------------------------------------------------------------------------------------------<br />7 | 107 | mon dd,yy <br />-------------------------------------------------------------------------------------------------<br />8 | 108 | hh:mm:ss <br />-------------------------------------------------------------------------------------------------<br />- | 9 or 109 | mon dd yyyy hh:mi:ss:mmmmAM(或PM)<br />-------------------------------------------------------------------------------------------------<br />10 | 110 | mm-dd-yy <br />-------------------------------------------------------------------------------------------------<br />11 | 111 | yy/mm/dd <br />-------------------------------------------------------------------------------------------------<br />12 | 112 | yymmdd <br />-------------------------------------------------------------------------------------------------<br />- | 13 or 113 | dd mon yyyy hh:mi:ss:mmm(24ž®æ—¶åˆ? <br />-------------------------------------------------------------------------------------------------<br />14 | 114 | hh:mi:ss:mmm(24ž®æ—¶åˆ? <br />-------------------------------------------------------------------------------------------------<br />- | 20 or 120 | yyyy-mm-dd hh:mi:ss(24ž®æ—¶åˆ? <br />-------------------------------------------------------------------------------------------------<br />- | 21 or 121 | yyyy-mm-dd hh:mi:ss:mmm(24ž®æ—¶åˆ? <br />-------------------------------------------------------------------------------------------------<br /><br /><br /><br />以上是我在开发中遇到的小困难的æ€È»“,如果写的有不正确的地æ–ÒŽ¬¢˜qŽå¤§å®¶æŒ‡æ•? </p><img src ="http://www.aygfsteel.com/Jody/aggbug/41931.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-19 16:10 <a href="http://www.aygfsteel.com/Jody/archive/2006/04/19/41931.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">ÇúÎÖÏØ</a>| <a href="http://" target="_blank">Ëɽ­Çø</a>| <a href="http://" target="_blank">»³¼¯ÏØ</a>| <a href="http://" target="_blank">ÒÀÀ¼ÏØ</a>| <a href="http://" target="_blank">¼ªÁÖÊÐ</a>| <a href="http://" target="_blank">·î½ÚÏØ</a>| <a href="http://" target="_blank">캵ÂÏØ</a>| <a href="http://" target="_blank">¸ßÖÝÊÐ</a>| <a href="http://" target="_blank">¸Õ²ìÏØ</a>| <a href="http://" target="_blank">ÆÕÀ¼µêÊÐ</a>| <a href="http://" target="_blank">ÌÒÔ°ÊÐ</a>| <a href="http://" target="_blank">ɽÎ÷Ê¡</a>| <a href="http://" target="_blank">ÄϰÄÏØ</a>| <a href="http://" target="_blank">À­×ÎÏØ</a>| <a href="http://" target="_blank">³ÐµÂÊÐ</a>| <a href="http://" target="_blank">ÃçÀõÊÐ</a>| <a href="http://" target="_blank">ÒÁÄþÏØ</a>| <a href="http://" target="_blank">äÒÖÐÏØ</a>| <a href="http://" target="_blank">°ËËÞÏØ</a>| <a href="http://" target="_blank">³¤°×</a>| <a href="http://" target="_blank">Æ½É½ÏØ</a>| <a href="http://" target="_blank">ÂÔÑôÏØ</a>| <a href="http://" target="_blank">µÂ¸ñÏØ</a>| <a href="http://" target="_blank">½¨ÑôÊÐ</a>| <a href="http://" target="_blank">Î÷ÎÚÖéÄÂÇ߯ì</a>| <a href="http://" target="_blank">ÐûÍþÊÐ</a>| <a href="http://" target="_blank">·Ê³ÇÊÐ</a>| <a href="http://" target="_blank">Ã×ÁÖÏØ</a>| <a href="http://" target="_blank">ÇåÐÂÏØ</a>| <a href="http://" target="_blank">ʯÖù</a>| <a href="http://" target="_blank">¼ª°²ÊÐ</a>| <a href="http://" target="_blank">ºÓÇúÏØ</a>| <a href="http://" target="_blank">ÓÀÖÝÊÐ</a>| <a href="http://" target="_blank">¹¢Âí</a>| <a href="http://" target="_blank">·ÊÎ÷ÏØ</a>| <a href="http://" target="_blank">²ýÒØÊÐ</a>| <a href="http://" target="_blank">ÐûººÏØ</a>| <a href="http://" target="_blank">×ÓÖÞÏØ</a>| <a href="http://" target="_blank">ÓñÃÅÊÐ</a>| <a href="http://" target="_blank">°²ÔóÏØ</a>| <a href="http://" target="_blank">ÐË»¯ÊÐ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>