ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品天天看,亚洲v欧美v另类v综合v日韩v,一级特黄大欧美久久久http://www.aygfsteel.com/hongqiang/archive/2012/08/16/385633.htmlå¼ æ…§å¼ æ…§Thu, 16 Aug 2012 14:26:00 GMThttp://www.aygfsteel.com/hongqiang/archive/2012/08/16/385633.htmlhttp://www.aygfsteel.com/hongqiang/comments/385633.htmlhttp://www.aygfsteel.com/hongqiang/archive/2012/08/16/385633.html#Feedback0http://www.aygfsteel.com/hongqiang/comments/commentRss/385633.htmlhttp://www.aygfsteel.com/hongqiang/services/trackbacks/385633.html
需求大致分ä¸ÞZ¸‰¿Uï¼š
1.震动
2.¾pȝ»ŸéŸÏx•ˆåQˆæ— éœ€æä¾›éŸ³é¢‘æ–‡äšgåQ?/span>
3.自定义音效(需提供音频文äšgåQ?/span>
我的工具¾cÈš„ž®è£…åQ?/span>

  1. //  
  2. //  WQPlaySound.h  
  3. //  WQSound  
  4. //  
  5. //  Created by å¿µèŒœ on 12-7-20.  
  6. //  Copyright (c) 2012òq?nbsp;__MyCompanyName__. All rights reserved.  
  7. //  
  8.   
  9. #import <UIKit/UIKit.h>  
  10. #import <AudioToolbox/AudioToolbox.h>  
  11.   
  12. @interface WQPlaySound : NSObject  
  13. {  
  14.     SystemSoundID soundID;  
  15. }  
  16.   
  17. /** 
  18.  *  @brief  ä¸ºæ’­æ”ùNœ‡åŠ¨æ•ˆæžœåˆå§‹åŒ– 
  19.  * 
  20.  *  @return self 
  21.  */  
  22. -(id)initForPlayingVibrate;  
  23.   
  24. /** 
  25.  *  @brief  ä¸ºæ’­æ”„¡³»¾lŸéŸ³æ•ˆåˆå§‹åŒ–(无需提供音频文äšg) 
  26.  * 
  27.  *  @param resourceName ¾pȝ»ŸéŸÏx•ˆåç§° 
  28.  *  @param type ¾pȝ»ŸéŸÏx•ˆ¾cÕdž‹ 
  29.  * 
  30.  *  @return self 
  31.  */  
  32. -(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type;  
  33.   
  34. /** 
  35.  *  @brief  ä¸ºæ’­æ”„¡‰¹å®šçš„音频文äšg初始化(需提供音频文äšgåQ?nbsp;
  36.  * 
  37.  *  @param filename éŸ³é¢‘æ–‡äšg名(加在工程中) 
  38.  * 
  39.  *  @return self 
  40.  */  
  41. -(id)initForPlayingSoundEffectWith:(NSString *)filename;  
  42.   
  43. /** 
  44.  *  @brief  æ’­æ”¾éŸÏx•ˆ 
  45.  */  
  46. -(void)play;  
  47.   
  48. @end  


  1. //  
  2. //  WQPlaySound.m  
  3. //  WQSound  
  4. //  
  5. //  Created by å¿µèŒœ on 12-7-20.  
  6. //  Copyright (c) 2012òq?nbsp;__MyCompanyName__. All rights reserved.  
  7. //  
  8.   
  9. #import "WQPlaySound.h"  
  10.   
  11. @implementation WQPlaySound  
  12.   
  13. -(id)initForPlayingVibrate  
  14. {  
  15.     self = [super init];  
  16.     if (self) {  
  17.         soundID = kSystemSoundID_Vibrate;  
  18.     }  
  19.     return self;      
  20. }  
  21.   
  22. -(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type  
  23. {  
  24.     self = [super init];  
  25.     if (self) {  
  26.         NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:resourceName ofType:type];  
  27.         if (path) {  
  28.             SystemSoundID theSoundID;  
  29.             OSStatus error =  AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &theSoundID);  
  30.             if (error == kAudioServicesNoError) {  
  31.                 soundID = theSoundID;  
  32.             }else {  
  33.                 NSLog(@"Failed to create sound ");  
  34.             }  
  35.         }  
  36.           
  37.     }  
  38.     return self;  
  39. }  
  40.   
  41. -(id)initForPlayingSoundEffectWith:(NSString *)filename  
  42. {  
  43.     self = [super init];  
  44.     if (self) {  
  45.         NSURL *fileURL = [[NSBundle mainBundle] URLForResource:filename withExtension:nil];  
  46.         if (fileURL != nil)  
  47.         {  
  48.             SystemSoundID theSoundID;  
  49.             OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &theSoundID);  
  50.             if (error == kAudioServicesNoError){  
  51.                 soundID = theSoundID;  
  52.             }else {  
  53.                 NSLog(@"Failed to create sound ");  
  54.             }  
  55.         }  
  56.     }  
  57.     return self;  
  58. }  
  59.   
  60. -(void)play  
  61. {  
  62.     AudioServicesPlaySystemSound(soundID);  
  63. }  
  64.   
  65. -(void)dealloc  
  66. {   
  67.     AudioServicesDisposeSystemSoundID(soundID);  
  68. }  
  69. @end  


调用æ–ÒŽ³•步骤åQ?br />1.加入AudioToolbox.framework到工½E‹ä¸­
2.调用WQPlaySound工具¾c?br />

2.1震动

  1. WQPlaySound *sound = [[WQPlaySound alloc]initForPlayingVibrate];  
  2. [sound play];  

2.2¾pȝ»ŸéŸÏx•ˆåQŒä»¥Tockä¸ÞZ¾‹

  1. WQPlaySound *sound = [[WQPlaySound alloc]initForPlayingSystemSoundEffectWith:@"Tock" ofType:@"aiff"];  
  2. [sound play];  

2.3自定义音效,ž®†tap.aif音频文äšg加入到工½E?/span>

  1. WQPlaySound *sound = [[WQPlaySound alloc]initForPlayingSoundEffectWith:@"tap.aif"];  
  2. [sound play];  

tap.aif音频文äšg样例下蝲点击



张慧 2012-08-16 22:26 发表评论
]]>
UML建模之状态图http://www.aygfsteel.com/hongqiang/archive/2012/08/08/385092.htmlå¼ æ…§å¼ æ…§Wed, 08 Aug 2012 15:38:00 GMThttp://www.aygfsteel.com/hongqiang/archive/2012/08/08/385092.htmlhttp://www.aygfsteel.com/hongqiang/comments/385092.htmlhttp://www.aygfsteel.com/hongqiang/archive/2012/08/08/385092.html#Feedback0http://www.aygfsteel.com/hongqiang/comments/commentRss/385092.htmlhttp://www.aygfsteel.com/hongqiang/services/trackbacks/385092.html çŠ¶æ€å›¾ä¸»è¦æè¿°ä¸€ä¸ªå¯¹è±¡åœ¨å…¶ç”Ÿå‘½å‘¨æœŸå†…çš„çŠ¶æ€å˜åŒ–ï¼Œå¯¹è±¡ç”׃º‹ä»‰™©±åŠ¨åÆˆæ»¡èƒö一定的条äšg从一个状态è{换到另一个状态。状态图昄¡¤ºäº†ä¸€ä¸ªçŠ¶æ€æœºã€?/span>


下面是一个表½Cºå€Ÿä¹¦çš„状态图åQˆæ˜qîC¹¦çš„状态è{换)



状态图都由哪些元素¾l„成呢?

一、初始状�/span>


      初始状态是状态机的è“v始位¾|®ï¼Œå®ƒä¸éœ€è¦äº‹ä»¶çš„触发ã€?span style="color: #ff0000; ">一个状态图只能有一个初始状态ã€?/span>状态图æ€ÀL˜¯ä»¥åˆå§‹çŠ¶æ€å¼€å§‹ï¼Œä»¥ç»ˆæ­¢çŠ¶æ€ç»“æ?/span>

二、状�/span>


状态是对象执行某项‹zÕdŠ¨æˆ–ç­‰å¾…æŸä¸ªäº‹ä»¶æ—¶çš„æ¡ä»¶ã€‚çŠ¶æ€å¯ä»¥ç”±ä»¥ä¸‹å‡ éƒ¨åˆ†ç»„æˆï¼š

1、NameåQšçŠ¶æ€å¿U?/span>
2、Entry/Exit ActionåQšè¿›å…¥å’Œé€€å‡ºåЍä½?/span>
3、Internal TransitionåQšå†…部è{¿U»ï¼ˆå¯¹äº‹ä»¶ä½œå‡ºå“åº”,执行一定的动作åQŒä½†ä¸ä¼šå‘生状态的转换åQ?/span>
4、DoåQšçŠ¶æ€ä¿æŒä¸å˜æ—¶æ‰§è¡Œçš„åŠ¨ä½?/span>
5、SubStageåQšå­çŠ¶æ€ï¼ˆå½“çŠ¶æ€æ˜¯å¤åˆçŠ¶æ€æ—¶åQ?/span>
6、Deferred EventåQšåšg˜qŸäº‹ä»Óž¼ˆæœªåœ¨æœ¬çŠ¶æ€ä¸­å¤„ç†åQŒä½†ä¸è¢«ä¸¢å¼ƒåQŒè€Œæ˜¯å»¶è¿Ÿåˆ°å…¶å®ƒçŠ¶æ€ä¸­å¤„ç†çš„äº‹ä»Óž¼‰


下面是一个灯的点燃状态的例子


       å¦‚果一个状态比较复杂,那么它还可以拥有子状态,拿上面借书的例子,书的被借状态又可包含两个子状态:被正常借、被¾l­å€?/span>


三、è{¿U?/span>

      上面已经讲过了一¿Uç‰¹ŒDŠçš„转移åQšå†…部è{¿U»ï¼Œä½†æ˜¯˜q™ç§è½¬ç§»åªæ˜¯å“åº”一定的事äšgåQŒæ‰§è¡Œä¸€å®šçš„动作åQŒåƈ不会攄¡”ŸçŠ¶æ€çš„è½¬ç§»
下面介绍一下一般è{¿UÈš„æ ¼å¼åQ?/span>


状态的转移一般由三部分组�/span>

1、eventåQˆäº‹ä»Óž¼‰åQšè§¦å‘状态è{¿Uȝš„原因
2、Guard ConditionåQˆä¿å«æ¡ä»Óž¼‰åQšæ˜¯ä¸€ä¸ªå¸ƒž®”表辑ּåQŒå½“事äšg被触发时要判断保卫条件的å€û|¼Œå€égØ“True才会发生状态的转换
3、ActionåQˆæ´»åŠ¨ï¼‰åQšçŠ¶æ€è{换时执行的活åŠ?/span>

下面是一个电水壶烧水的状态è{æ?/span>


       å½“事件turn on攄¡”Ÿæ—Óž¼Œåªæœ‰æ°´å£¶å†…有æ°ß_¼ˆhave wateråQ‰æ‰èƒ½ç”±off状态è{换到on状态,òq¶å‘生烧水的动作åQˆBoiling WateråQ‰ã€‚其实动作也可以攑֜¨on状态中ã€?/span>

四、结束状�/span>



¾l“束状态表½CºçŠ¶æ€æœºæ‰§è¡Œ¾l“束或对象生命的¾lˆç»“åQ?span style="color: #ff0000; ">一个状态图可以有多个结束状æ€?/span>ã€?/span>


      åœ¨å®žé™…的应用中,不必为每个对象都创徏状态图åQŒè€Œæ˜¯åªäؓ那些比较复杂的,状态比较多的对象创建状态图。状态图是一¿Uå¾ˆæœ‰ç”¨çš„图åQŒå®ƒå¯ä»¥å¸®åŠ©æˆ‘ä»¬åˆ†æžå¤æ‚å¯¹è±¡çš„çŠ¶æ€è{换和对象在什么时候执行什么样的动作。网上购物过½E‹ä¸­åQŒæˆ‘们会¾lå¸¸æŸ¥çœ‹è®¢å•的状态,描述订单的状态机ž®±æ˜¯ä¸€ä¸ªæ¯”较经典的状态图åQŒç½‘上有很多关于订单状态图的例子,大家可以查一下,我在˜q™é‡Œž®×ƒ¸å†èµ˜˜qîCº†ã€?/span>


]]>
《时间管理》课½E‹ç¬”讎ͼˆä¸€åQ?/title><link>http://www.aygfsteel.com/hongqiang/archive/2012/08/08/385093.html</link><dc:creator>å¼ æ…§</dc:creator><author>å¼ æ…§</author><pubDate>Wed, 08 Aug 2012 15:38:00 GMT</pubDate><guid>http://www.aygfsteel.com/hongqiang/archive/2012/08/08/385093.html</guid><wfw:comment>http://www.aygfsteel.com/hongqiang/comments/385093.html</wfw:comment><comments>http://www.aygfsteel.com/hongqiang/archive/2012/08/08/385093.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hongqiang/comments/commentRss/385093.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hongqiang/services/trackbacks/385093.html</trackback:ping><description><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">1. ä¸ÞZ»€ä¹ˆè¦æ—‰™—´½Ž¡ç†    曄¡»æœ‰è¿‡˜q™æ ·ä¸€ä¸ªæŠ¥é“:有一名记者随机采访了几个人,问了˜q™æ ·ä¸€ä¸ªé—®é¢˜ï¼š<br />    你认ä¸ÞZ½ çš„æ—¶é—´æ˜¯ç”Þp‡ªå·±æ¥æŽŒæŽ§çš„吗åQŸå¾—到的回答却是˜q™æ ·çš„:<br />    如今各种竞争如此‹È€çƒˆï¼Œèƒ½æ‹‰åˆîC¸€ä¸ªå®¢æˆ·ä¸å®ÒŽ˜“åQŒåªè¦å®¢æˆ·ä¸€ä¸ªç”µè¯ï¼Œæˆ‘就马上要出玎ͼŒæˆ‘的旉™—´å®Œå…¨ç”±å®¢æˆähŽŒæŽ§ã€?br />    我只不过是一名普通的ž®èŒå‘˜ï¼Œä¸È®¡¾l™æˆ‘安排什么我ž®±åšä»€ä¹ˆã€‚自己掌控时é—ß_¼ŸåQç­‰æˆ‘当了经理再说吧ã€?br />    我æ€ÀL˜¯æœ‰å¿™ä¸å®Œçš„工作,哪还来得及自己安排时é—ß_¼Ÿåˆ«å¼€çŽ©ç¬‘äº†ã€?br />    在这样一个信息爆炸的½C¾ä¼šé‡Œï¼Œæˆ‘不抓紧旉™—´å……电ž®×ƒ¼šè½åŽäº†ï¼ŒçŽ°åœ¨æ˜¯æ—¶é—´åœ¨æŽ§åˆ¶æˆ‘å•ŠåQ?br />    ç›æ€¿¡ä½ å¯¹˜q™ä¸ªé—®é¢˜ä¼šæœ‰è‡ªå·±çš„见解,但是仔细æƒÏxƒ³ä½ çš„½{”案是否跟他们的很类似呢åQŸåƒä»–ä»¬ä¸€æ øP¼Œä¹Ÿæœ‰˜q™æ ·çš„困惑或是感受呢åQŸä¹‹æ‰€ä»¥æœ‰˜q™æ ·çš„困惑,有一个最主要的因素在影响着我们åQŒè¿™ä¸ªå› ç´ æ˜¯ä»€ä¹ˆå‘¢åQ?br />    职位åQŸç«žäº‰ï¼Ÿæ—‰™—´åQ?br />    每个人的旉™—´æ€ÀL˜¯ä¸å¤Ÿç”¨ï¼ŒäºÞZ»¬æ¸´æœ›æ‰‘Öˆ°ä¸€¿Uçµä¸¹å¦™è¯ï¼Œå½Õdº•改变自己旉™—´ä¸å¤Ÿç”¨çš„局面。你是否也是˜q™é‡Œçš„一员呢åQ?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">2. 概述    æ—‰™—´æ˜¯ä¸€¿Uèµ„源,我们无法对它˜q›è¡Œä¹°å–åQŒä¸å¯èƒ½ä¸Žåˆ«äººåˆ†äº«æˆ–是从别äh那里获得åQŒä¹Ÿä¸å¯èƒ½å¾—到更多或是拥有更ž®‘ã€?br />    每天åQŒæˆ‘们每一个äh都拥有相同数量的旉™—´——24ž®æ—¶åQŒå·®åˆ«åœ¨äºŽæˆ‘们用它来做什么。之所以每个äh会有¿Uç§çš„困惑,½I¶å…¶åŽŸå› åQŒæ˜¯å› äؓ大多æ•îCh在时间的½Ž¡ç†ä¸Šå­˜åœ¨ç€å¾ˆå¤šè¯¯åŒºåQŒåªæœ‰æ¶ˆé™¤è¿™äº›è¯¯åŒºï¼Œæ‰æœ‰å¯èƒ½è®©æˆ‘们把旉™—´½Ž¡ç†å¾—更好、更有效ã€?br />    我们现在ž®×ƒ¸€èµ·åŽ»çœ‹çœ‹˜q™äº›è¯¯åŒºéƒ½æ˜¯ä»€ä¹ˆæ ·çš„吧åQ?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">3. 误区展示    当你的工作中出现问题æ—Óž¼Œä½ è®¤ä¸ºæ˜¯ä»€ä¹ˆåŽŸå› é€ æˆçš„ï¼Ÿ<br />    无论åQŒä½ çš„实际情冉|˜¯æ€Žä¹ˆæ ïLš„åQŒå¾€å¾€æˆ‘们都忽略了一个最关键的问题,那就æ˜?#8220;æ—‰™—´”ã€?br />    å› äØ“æ—‰™—´çš„不充èƒö而没来得及做˜q™ä¸ªæˆ–æ˜¯åšé‚£ä¸ªï¼Œå¯ÆD‡´æœ€åŽçš„¾l“æžœæ€ÀL˜¯ä¸å°½å¦‚äh意。所以,每个人在旉™—´½Ž¡ç†ä¸Šéƒ½æˆ–多或少存在一定的问题åQŒè¿™ä¹Ÿæ˜¯æŽ¥ä¸‹æ¥æˆ‘们要解决的问题。请点击下一™åµå§ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">4. 反æ€?nbsp;   ˜q™ä¸ªä¸–界上根本不存在“没时é—?#8221;˜q™å›žäº‹ã€?br />    如果你跟很多äºÞZ¸€æ øP¼Œä¹Ÿæ˜¯å› äØ““太忙”而没旉™—´å®Œæˆè‡ªå·±çš„工作的话,那请你一定记住,在这个世界上˜q˜æœ‰å¾ˆå¤šäººï¼Œä»–们比你更忙åQŒç»“果却完成了更多的工作。这些ähòq¶æ²¡æœ‰æ¯”你拥有更多的旉™—´åQŒä»–们只是学会了如何更好地利用自å·Þqš„æ—‰™—´è€Œå·²åQæœ‰æ•ˆçš„利用旉™—´æ˜¯ä¸€¿Uäh人都可以掌握的技å·?#8212;—ž®±åƒå¼€è½¦ä¸€æ —÷€?br />    å› æ­¤åQŒå¸Œæœ›å¤§å®¶èƒ½é€šè¿‡˜q™é—¨è¯„¡¨‹çš„学习,在今后的生活中有效的珍惜旉™—´åQŒè€Œä¸€æ—¦æŠŠæ¡å¥½æ—‰™—´åQŒä½ ž®±æŽŒæ¡äº†è‡ªå·±çš„生命,òq¶èƒ½å¤Ÿå°†å…¶ä­h值发挥到极限ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">5. æ—‰™—´½Ž¡ç†è¯„¡¨‹æ¦‚è¿°    在本评¡¨‹ä¸­ï¼Œž®†é€šè¿‡å››ä¸ªæ–šw¢çš„内容帮助你更好的掌握自å·Þqš„æ—‰™—´åQŒè€Œä¸æ˜¯æˆä¸ºæ—¶é—´çš„奴隶åQŒä»Žè€Œè®©ä½ å®žçŽ°è‡ªå·Þqš„人生目标ã€?br />    首先åQŒæˆ‘们要谈谈人生目标åQŒä¹Ÿž®±æ˜¯æˆ‘们èŠ×ƒº†æ—‰™—´éƒ½åšäº†äº›ä»€ä¹ˆï¼Œæ¯”å¦‚ä½ æƒ³æˆäØ“ä»€ä¹ˆæ ·çš„ähåQŒä½ ž®†æ¥è¦è¾¾åˆîC¸€¿Uä»€ä¹ˆæ ·çš„æˆž®Þq­‰ã€?br />    ½W¬äºŒã€å½“你有了明¼‹®çš„人生目标åQŒé‚£è¯¥ç”¨ä»€ä¹ˆæ–¹æ³•来实现呢,也就是接下来要讲的时间管理的核心思想“æ—‰™—´½Ž¡ç†çŸ©é˜µ”½{‰ã€?br />    ½W¬ä¸‰ã€äº†è§£äº†å¦‚何½Ž¡ç†æ—‰™—´åQŒé‚£ä¹ˆæŽ¥ä¸‹æ¥è¦ä»‹¾lçš„æ˜¯æ€Žä¹ˆæ¥è‡ªæˆ‘管理。如何利用好每一天的旉™—´æ¥å¸®åŠ©æˆ‘ä»¬å®žçŽîCh生的大目标ã€?br />    最后,ž®±æ˜¯å­¦ä¼šåˆ©ç”¨å·¥å…·æ¥ç®¡ç†æ—¶é—´ã€?br />    总而言之,对于你来è¯ß_¼Œ˜q™ä¸ªä¸–界上没有ä“Q何东西比旉™—´æ›´åŠ é‡è¦äº†ã€‚æ¯ä¸ªäh的时间都是相同的åQŒæˆ‘们每个äh每个星期都只æœ?68个小æ—Óž¼Œä¸å¯èƒ½æœ‰æ›´å¤šçš„æ—¶é—´ã€?br />    ˜q™é—¨è¯„¡¨‹å¯ä»¥å¸®åŠ©ä½ æ›´æœ‰æ•ˆçš„åˆ©ç”¨è¿™äº›æ—¶é—´ã€?br />    让我们开始吧åQ?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">6. 概述    æ—‰™—´æˆ‘们无法随意的让它变大或是羃ž®ï¼Œæˆ‘们也不能像存钱一æ ähŠŠæ—‰™—´å‚¨å¤‡èµäh¥åQŒä»¥å¤‡ä¸æ—¶ä¹‹éœ€åQ›æ›´ä¸èƒ½ç”¨å…¶å®ƒçš„ä¸œè¥¿æ¥ä»£æ›¿ï¼Œç”šè‡³æˆ‘ä»¬æ›´ä¸èƒ½æŠŠå·²ç»å¤±åŽ»çš„æ—¶é—´åƒå€’å¸¦å­ä¸€æ øP¼Œæœ‰é€‰æ‹©æ€§çš„倒回来或是快放ã€?br />    å› æ­¤åQŒå½“äºÞZ»¬æ— æ‰€äº‹äº‹åQŒæˆ–者忙得晕头è{向却不见成效æ—Óž¼Œåº”该暂时停下来审视一下自å·Þqš„æ—‰™—´åˆ©ç”¨æ•ˆçއåQŒå®¡è§†ä¸€ä¸‹è‡ªå·±åœ¨æ—‰™—´ä¸­æ‰€å¤„的角色åQŒå¯»æ‰¾ä¸€æ¡æ›´ä¸ºåˆé€‚的途径åQŒå®žçŽ°è‡ªå·Þqš„目标åQŒè¿½æ±‚自å·Þqš„人生价倹{€?br />    在经理äh的所有管理技能中åQŒæ—¶é—´ç®¡ç†æœ€å®ÒŽ˜“被忽略。初¾U§ç»ç†äh从员工的岗位˜q‡æ¸¡åˆ°ç®¡ç†è€…的岗位åQŒæ¯”较容易忽略管理的角色和时间管理的技能,而中、高¾U§ç®¡ç†è€…的工作旉™—´æ›´å¿™¼„Œï¼Œå·¥ä½œä»ÕdŠ¡æ›´å¤šåQŒæ—¶é—´æ•ˆçŽ‡çš„½Ž¡ç†ä¹Ÿå°±æ˜‘Ö¾—更加重要ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">7. 案例    假设一个äh的生命中有三枚硬币,½W¬ä¸€æžšä»£è¡¨èƒ¦å¯Œï¼Œ½W¬äºŒæžšä»£è¡¨å¥åºøP¼Œ½W¬ä¸‰æžšä»£è¡¨æ—¶é—ß_¼Œè¯·é—®å“ªä¸€ä¸ªæ›´é‡è¦åQ?br />    无论你选择了什么,我们来逐一分析一下吧ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">8. 分析一    ˜q™ä¸‰æžšç¡¬å¸å“ªä¸ªæ›´é‡è¦å‘¢ï¼Ÿ<br />    ½W¬ä¸€¿Uæƒ…况:<br />    通常äºÞZ»¬éƒ½è¶‹å‘于˜q½æ±‚财富åQŒå¦‚果在˜q™ä¸‰æžšç¡¬å¸ä¸­åQŒæŠŠä»£è¡¨è´¢å¯Œçš„硬币拿掉,则表½Cø™¿™ä¸ªäh有èƒöå¤Ÿå¤šçš„å¥åºøP¼Œä¹Ÿæœ‰­‘›_¤Ÿå¤šçš„æ—‰™—´åQŒä»–有可能重新去创业åQŒèµ¢å¾—胦富,把代表胦富的¼‹¬å¸é‡æ–°æ”¾è¿›è‡ªå·±çš„生命中ã€?br />    你赞成这个说法吗åQ?br />    赞成    不赞æˆ?br />    无论你选择了什么,我们来看一个实例:<br />    房地产大亨李嘉诚åQŒç›¸ä¿¡ä½ ä¸€å®šå¬è¯´è¿‡å§ï¼<br />    17岁独自外出闯荡,¾lå•†60多年åQŒå¾ç«‹è“v亚洲最大的商业王国ã€?nbsp;<br />    李嘉诚现在年˜q‡å…«æ—¬ä»ç„¶ç²¾¼œžçŸé“„,思维敏捷。他è¯ß_¼š“健康ž®±å¥½ä¼¼å ¤åä¸€æ øP¼Œå¦‚果快要崩堤了再做补救,èŠÞp´¹å¤šå°‘人力物力可能救不回来ã€?#8221;<br />    问到成功¿U˜è¯€æ—Óž¼ŒæŽå˜‰è¯šè®¤ä¸ºæƒœæ—¶å¦‚金,是他的一个成功秘诀åQŒæŽå˜‰è¯šæ¯å¤©æ¸…晨不到6点就起床了,中午不睡午觉åQŒæ™šä¸Šç¡è§‰å‰˜q˜è¦çœ‹ä¹¦ã€?br />    李嘉诚认为:在商业竞争中åQŒä½ è¾“了åQŒé‚£ä¹ˆä½ è¾“在旉™—´åQ›åä¹‹ï¼Œä½ èµ¢äº†ï¼Œä¹Ÿèµ¢åœ¨æ—¶é—´ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">9. 分析äº?nbsp;   ½W¬äºŒ¿Uæƒ…况:<br />    如果在这三枚¼‹¬å¸ä¸­ï¼ŒæŠŠä»£è¡¨å¥åºïLš„¼‹¬å¸æ‹¿æŽ‰åQŒè¿™è¡¨ç¤º˜q™ä¸ªäººæœ‰­‘›_¤Ÿå¤šçš„财富åQŒä¹Ÿæœ‰èƒö够多的时é—ß_¼Œåˆ™ä»–可以èŠÞp´¹æ— ä»¥è®¡æ•°çš„金钱来æ²È–—自己的疾病,臛_°‘可以拖åšg一定的旉™—´åQŒæˆ–借助高科技手段来åšg长生命,他可能把代表健康的硬币重新放˜q›è‡ªå·Þqš„生命中ã€?br />    你赞成这个说法吗åQ?br />    赞成    不赞æˆ?br />    我想梅艳芛_¤§å®‰™ƒ½å¬è¯´˜q‡å§åQ?br />    梅艳èŠÏx‚£ç™ŒåŽåQŒæ¯å‘¨å¿…™åÀLŽ¥å?天的æ²È–—åQŒå…‰æ˜¯æ¯ä¸ªæœˆçš„医药费ž®±é«˜è¾¾æ¸¯å¸?0万,一òq´ä¸‹æ¥è¦èŠÞp¿‘千万港币。她可以用胦富åšg长自å·Þqš„生命åQŒåƈ用这些有限的生命完成自己最后的心愿åQŒä½†æ˜¯å¥åº·ä¾ç„¶ç¦»å¥¹å¾ˆé¥è¿œã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">10. 分析ä¸?nbsp;   ½W¬ä¸‰¿Uæƒ…况:<br />    如果把代表时间的¼‹¬å¸æ‹¿èµ°åQŒè®©ä¸€ä¸ªäh没有自己的时间了åQŒè¿™æ—¶å€™ï¼Œå³ä‹É他有无数的胦富,有很强壮的èín体,可是生命留给他的只有一刚w‚£åQŒä»–无法ç”?亿美元去æ?0分钟åQŒè¿™ž®±å¥½æ¯”æ— æ•°çš„0前面没有äº?åQŒæ˜¯æ²¡æœ‰ä»ÖM½•意义的,他不仅不能将代表旉™—´çš„硬币重新放˜q›è‡ªå·Þqš„人生åQŒè€Œä¸”财富和健康对他也变得毫无意义了ã€?br />    你赞成这个说法吗åQ?br />    赞成    不赞æˆ?br />    无论你选择的是什么,旉™—´å¯ÒŽˆ‘们确实很重要ã€?br />    大家都知道,¿U¦å§‹çš‡æ˜¯½W¬ä¸€ä½ç»Ÿä¸€å…­å›½òq¶å®žçŽîCº†æ–‡åŒ–及货币统一的皇帝ã€?br />    ä»–äØ“äº†è®©è‡ªå·±æ°¸è¿œ½E›_æ±Ÿå±±åQŒå°±‹z¾ähåŽÕd¯»æ‰ùN•¿ç”Ÿä¸è€è¯ã€‚他非常清楚旉™—´ž®±æ˜¯ç”Ÿå‘½åQŒå¦‚果自å·Þpƒ½æ°¸ç”Ÿž®Þq­‰äºŽæŽŒæ¡äº†æ—‰™—´òq¶æ°¸˜qœç¨³åæ±Ÿå±±ã€?br />    最¾lˆï¼Œ˜q˜æ˜¯ä»¥å¤±è´¥å‘оlˆã€‚即便他有再多的财富与健åºïLš„体魄åQŒä»–依然无法实现永生的愿望。因为时间不会根据ä“Q何äh的愿望而改变ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">11. æ€È»“    æ€ÖM¹‹åQŒå¯¹äºŽæ‰€æœ‰çš„人,ž®¤å…¶æ˜¯ç»ç†äh、企业家åQŒä»–们有大量的金钱,可是他们感到最¾~ºçš„˜q˜æ˜¯æ—‰™—´åQŒæ‰€ä»¥å¯¹æ—‰™—´çš„要求就更高åQŒè¿™ž®±éœ€è¦è‰¯å¥½çš„æ—‰™—´½Ž¡ç†ã€‚时间管理就是有效地应用旉™—´˜q™ç§èµ„源以便我们有效地取得个人的重要目标ã€?br />    接下来,ž®Þp®©æˆ‘们一èµäh¥å­¦ä¹ æœ‰å…³ä¸ªäh目标的内容吧ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">12. 自我旉™—´çŠ¶æ€åˆ¤æ–?nbsp;   学习了时间管理的重要性和概念åQŒçŽ°åœ¨æˆ‘ä»¬ä¸€èµ·åº”ç”¨è¿™äº›çŸ¥è¯†æ¥åˆ†æžä¸€ä¸‹ä½ è‡ªå·±å§ï¼</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">13. æ‹–åšg商数‹¹‹è¯•    在回½{”这些问题时åQŒä¸€æ–šw¢æ˜¯äؓ了让你重新认识一下自己,另一斚w¢˜q™äº›å¯èƒ½ä¹Ÿæ˜¯ä½ æµªè´ÒŽ—¶é—´çš„原因ã€?br />    现在请做一个测试,看看你做事的拖åšg情况½I¶ç«Ÿå¦‚何吧ã€?br />    你的拖åšg情况严重吗?<br />    做事拖åšgåQŒä¼šä¸¥é‡‹¹ªè´¹ä½ çš„æ—‰™—´åQŒä¸€èµäh¥çœ‹çœ‹‹¹ªè´¹æ—‰™—´çš„因素具体是哪些吧。时间盗è´û|¼š(找东è¥Ñ€æ‡’惎ͼŒæ—¶æ–­æ—¶ç®‹åQŒä¸€ä¸ªäh包打天下åQŒå¶å‘åšg误,惋惜不已/做白日梦åQŒæ‹–拖拉拉,寚w—®é¢˜ç¼ºä¹ç†è§£å°±åŒ†å¿™è¡ŒåЍåQŒæ¶ˆæžæƒ…¾lªï¼Œåˆ†ä¸æ¸…轻重缓æ€?</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">14. ž®ç»“    è‡Ïx­¤åQŒæˆ‘们已¾läº†è§£äº†æ—‰™—´½Ž¡ç†çš„误区有哪些åQŒä»¥åŠæ—¶é—´ç®¡ç†çš„定义、必要性,同时通过‹¹‹è¯•对自己有了新的认识ã€?br />    如果你确认对上述内容已经完全掌握åQŒå°±è¯·å¼€å§‹ä¸‹ä¸€ç« çš„学习吧!</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">15. 概述  你有人生目标吗?请你试着回答下面的问题:<br />  你现在是把时间真正用在你惛_šçš„事情上了吗åQ?br />  你是åœ?#8220;原地ítæ­¥”吗?<br />ã€€ã€€ä½ æ­£åœ¨å·¦å³äØ“éš?#8212;—是前˜q›è¿˜æ˜¯æ”¾æ…¢è„šæ­¥ï¼Œæˆ–è€…æ­£åœ¨çŠ¹è±«ä¸å†»I¼Ÿ<br />  如果你不能把旉™—´ç”¨æ¥åŽÕd®žçŽîC½ è®¤äؓ最重要的目标的话,那么你就要对其进行调整。现在请点击下一™åµè®©æˆ‘来帮助你一起回½{”以上这些问题吧ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">16. ä¸ÞZ»€ä¹ˆéœ€è¦ç›®æ ?nbsp;   ä¸ÞZ»€ä¹ˆè¦è®‘Ö®šäººç”Ÿç›®æ ‡å‘¢ï¼Ÿ<br />    许多人拼命埋头苦òqÔŒ¼Œå´ä¸çŸ¥æ‰€ä¸ÞZ½•来,到头来却发现˜q½æ±‚的梯子搭错了墙,懊悔不已åQŒåªå¯æƒœä¸ºæ—¶å·²æ™šåQŒä¹‹æ‰€ä»¥æœ‰çš„ähæ€ÀL˜¯å¾ˆå¿™¼„Œï¼Œè€Œåšçš„事情却没有太大意义åQŒå°±æ˜¯å› ä¸ÞZ»–们没有一个明¼‹®çš„目标ã€?br />    你现在处于最理想的状态吗åQ?br />    最理想的状态是指,你所做的每äšg事对你都是有价值的——å…¶ä­h值在于它¿U¯æžæŽ¨åŠ¨ä½ å®žçŽ°èŒä¸šä¸Šçš„æˆ–æ˜¯ä¸ªäººç”Ÿ‹zÖM¸Šçš„ç›®æ ?#8212;—˜q™äº›äº‹æƒ…都是你希望可以完成的。没有其他äh可以替你做决定,你必™åÕd¾—明确什么事情对于你来说才是最重要的ã€?br />    需要注意的是,实现目标åQŒéœ€è¦ä¸€ä¸ªè¿‡½E‹ã€‚而在˜q‡ç¨‹ä¸­çš„æ¯ä¸€ä¸ªé˜¶ŒDµï¼Œéƒ½ä¼šæœ‰ä¸€ä¸ªé˜¶ŒD‰|€§ç›®æ ‡ï¼Œ­‘Šå¾€åŽå‘展,阶段性目标就­‘пޥ˜q‘最¾lˆç›®æ ‡ã€‚正是通过每一个阶ŒD‰|€§ç›®æ ‡çš„æˆåŠŸå®žçŽ°åQŒæ‰èƒ½å®žçŽ°æœ€¾lˆç›®æ ‡ã€‚因此,目标永远指明了前˜q›çš„æ–¹å‘ã€?br />    çŽ°åœ¨ä½ æ˜Žç™½äØ“ä»€ä¹ˆéœ€è¦ç›®æ ‡äº†å—ï¼Ÿ<br />    è¯ïL‘ô¾l­å­¦ä¹ åŽé¢çš„内容吧ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">17. 人生目标序言    大äh们æ€Õd–œ‹Æ¢é—®è‡ªå·±çš„孩子:你长大了惛_šä»€ä¹ˆå•ŠåQ?br />    ž®å­©å­ä¼šæ¯«ä¸çйèõU的说åQ?br />    “æˆ‘è¦åƒçˆ¸çˆæ€¸€æ øP¼Œå½“一名徏½{‘å·¥½E‹å¸ˆ……”<br />    “我要当一名科学家或是一名作å®?#8230;…”<br />    “æˆ‘è¦åƒå¦ˆå¦ˆä¸€æ øP¼Œå½“一名医ç”?#8230;…”<br />    “我要当一名警察或者天文学å®?#8230;…”<br />    “我要当一名宇航员åQŒé£žä¸Šå¤ª½I?#8230;…”<br />     …… …… ……<br />    各种各样的回½{”,都代表了孩子的一个äh生目标ã€?br />    ä½ è®¤ä¸ø™¿™äº›ç›®æ ‡å¯ä»¥æ›´æ”¹å—åQ?br />    无论你的目标是否发生变化åQŒæ—¶é—´éƒ½ä¼šä¸€åˆ†ä¸€¿U’çš„˜q‡åŽ»åQŒè¿™æ˜¯ä¸€ä¸ªä¸å˜çš„规律ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">18. 要明¼‹®äh生目æ ?nbsp;   ä¸ÞZº†åŠ æ·±ä½ å¯¹ç›®æ ‡çš„ç†è§£ï¼Œä¸€èµäh¥çœ‹çœ‹˜q™æ ·ä¸€¾l„调查数据ã€?br />    表中列出了某一òq´å“ˆä½›å¤§å­?00名学生及他们毕业å?5òq´çš„调查数据。那些没有目标的人,¾l“果是生‹zÕdœ¨½C¾ä¼šçš„底层,而那些目标明¼‹®çš„人,都生‹zÕdœ¨½C¾ä¼šçš„中上层。ä×o人深思的是,˜q™äº›äººçš„èµïL‚¹å‡ ä¹Žæ˜¯ä¸€æ ïLš„åQŒç„¶è€Œï¼Œæ­£æ˜¯å› äؓ目标˜q™ä¸€å› ç´ å¯ÆD‡´äº†å·¨å¤§çš„¾l“果差异。可见,目标对äh生的影响是多么的巨大ã€?br />    到这里,我想问你一个问题,你有长期或者短期的目标吗?<br />    有没有不重要åQŒå¸Œæœ›ä»Ž˜q™ä¸€åˆÕd¼€å§‹ï¼Œä½ è¦ä¸ø™‡ªå·Þp®¾å®šæ˜Ž¼‹®ä¸”合理的长期与短期目标ã€?br />    现在åQŒè¯·å†™å‡ºä½ çš„人生目标åQ?br />    è¯äh‹¿å‡ºå‡ å¼ çº¸åQŒä¸€æ”¯é“…½W”或钢笔åQŒä¸€åªå¸¦æœ‰ç§’é’ˆçš„æ‰‹è¡¨æˆ–æ—¶é’Ÿï¼Œä¸ø™‡ªå·Þp®¾å®?5分钟旉™—´ã€‚在¾U¸çš„æœ€ä¸Šç«¯å†™ä¸‹é—®é¢˜ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">19. 你的人生目标到底是什么?    ½W¬ä¸€ä¸ªé—®é¢˜ï¼š<br />    你的人生目标到底是什么?<br />    用第一人称、现在时、肯定语气来写,˜q™æ ·åQŒè¿™äº›ç›®æ ‡å°±èƒ½ç«‹åŒ™¿›å…¥ä½ çš„æ½œæ„è¯†ä¸­ã€?br />    不要å®Ïx€•写出那些看èµäh¥è·ç¦»è‡ªå·±å¾ˆé¥˜qœçš„目标。这些目标可以是有åŞ的或是无形的ã€?br />    比如说登上珠½I†æœ—玛峰、去参加马拉æùN•¿è·‘、休假一òq´ã€é€€ä¼‘后在意大利å»ÞZ¸€åº§æˆ¿å­ã€ä¹°è‰˜æ¸¸è‰‡ã€è´­ä¹îC¸€è¾†å®é©¬è‹É车;拥有一个美满幸¼›çš„三口之家åQŒè‡ªå·Þpƒ½æ‹¥æœ‰ä¸€ä¸ªå¥åºïLš„íw«ä½“……˜q™äº›éƒ½å¯ä»¥åˆ—出来åQŒåŒæ—¶è¯·åˆ—出优先™åºåºã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">20. 如何度过今后三年    ½W¬äºŒä¸ªé—®é¢˜ï¼š<br />    如何度过今后三年åQ?br />    三年的时é—ß_¼Œçœ‹ä¼¼å¾ˆé•¿åQŒé‚£ä¹ˆåœ¨˜q™ä¹ˆé•¿çš„æ—‰™—´é‡Œä½ èƒ½åšäº›ä»€ä¹ˆå‘¢åQ?br />    你可以写下一些比较空泛的目标åQŒæ¯”如说“获得òq¸ç¦”ã€?#8220;取得成功”ã€?#8220;赢得爱情”ã€?#8220;为社会做贡献”ã€?#8220;è¯Õd®Œ30本书”ã€?#8220;渔R30个国å®?#8221;½{‰ç­‰ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">21. 只能‹zÕd…­ä¸ªæœˆä½ è¯¥æ€Žæ ·æ¸¡è¿‡    ½W¬ä¸‰ä¸ªé—®é¢˜ï¼š<br />    只能‹zÕd…­ä¸ªæœˆæ€Žæ ·åº¦è¿‡åQ?br />    如果你知道自å·×ƒ¼šåœ¨å…­ä¸ªæœˆåŽå› ä¸ºç—…™ì”的侵入而失åŽÈ”Ÿå‘½ï¼Œä½ ä¼šæ€Žæ ·åº¦è¿‡˜q™å…­ä¸ªæœˆçš„æ—¶é—ß_¼Ÿä½ å¯ä»¥ä»Žä¸åŒçš„角度去惟ë€?br />    è¯äh³¨æ„ï¼š˜q™æ„å‘³ç€ä½ çš„人生只剩下六个月的时é—ß_¼Œä½ å¿…™åÕd……分利用这ŒD‰|—¶é—´åšä¸€äº›ä½ è§‰å¾—最重要或者自å·×ƒ¸€ç›´éƒ½æƒ›_šè€Œæ²¡åšçš„事情ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">22. 三个问题之间的思è€?nbsp;   你可以花上至ž®‘两分钟的时é—ß_¼Œä»”细斟酌òq¶ä¿®æ”¹ä½ å¯¹ä»¥ä¸Šä¸‰ä¸ªé—®é¢˜çš„回答。如果愿意,你也可以èŠ×ƒ¸Šæ›´å¤šçš„æ—¶é—´ã€?br />    同时åQŒè¯·ä½ è®¤çœŸæ€è€ƒä¸€ä¸‹è¿™ä¸‰ä¸ªé—®é¢˜ä¹‹é—´çš„å…³¾pÀL˜¯æ€Žæ ·çš„?<br />    现在我们来分析一下这三个问题åQšç¬¬ä¸€ä¸ªå¯ä»¥çœ‹ä½œæ˜¯é•¿æœŸç›®æ ‡ã€ç¬¬äºŒä¸ªæ˜¯çŸ­æœŸç›®æ ‡ã€ç¬¬ä¸‰ä¸ªæ˜¯è¢«åˆ†è§£åŽçš„目标ã€?br />    你可能会发现½W¬äºŒä¸ªé—®é¢˜çš„½{”案其实是第一个问题答案的延äŽ×åQŒè¿˜æœ‰ä¸€äº›äh发现自己在第三个问题上的½{”案跟前两个问题的答案截然不å?#8212;—é‚£æ˜¯å› äØ“ä»–ä»¬½Hç„¶æ„è¯†åˆ°è‡ªå·Þqš„æ—‰™—´ä¸å¤šäº†ï¼Œå¿…须在有限的旉™—´å†…完成最重要、最紧急的事情ã€?/span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><span style="font-family: FangSong_GB2312; font-size: 18px; ">23. 如何讑֮šäººç”Ÿç›®æ ‡    了解ä¸ÞZ»€ä¹ˆè®¾å®šäh生目标后åQŒçŽ°åœ¨æˆ‘ä»¬å°±æ¥å­¦ä¹ ä¸€ä¸‹å¦‚ä½•è®¾å®šäh生目标吧ã€?br />    事实上,讑֮šä¸€ä¸ªé€‚当的目标就½{‰äºŽè¾‘Öˆ°äº†ç›®æ ‡çš„一部分ã€?br />    人生的大目标也是人生大志åQŒå¯èƒ½éœ€è¦åòq´ã€äºŒåå¹´ç”šè‡³¾lˆç”Ÿä¸ÞZ¹‹å¥‹æ–—。一个äh不可能一口吃成一个胖子,所以我们在˜q½æ±‚人生目标的过½E‹ä¸­åQŒè¦æ—¶åˆ»æ¸…楚自己现在做的每一件事都要有助于实现自己最¾lˆçš„目标ã€?br />    接下来,我们ž®Þp¯¦¾l†è®²è§£ä¸€ä¸‹å¦‚何有效地讑֮šäººç”Ÿç›®æ ‡ã€?/span></p><img src ="http://www.aygfsteel.com/hongqiang/aggbug/385093.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hongqiang/" target="_blank">å¼ æ…§</a> 2012-08-08 23:38 <a href="http://www.aygfsteel.com/hongqiang/archive/2012/08/08/385093.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>单例设计模式中ä‹É用dom4j来完æˆ?数据库配¾|®æ–‡ä»?xml的解析,òq¶å®Œæˆæ•°æ®åº“的连æŽ?/title><link>http://www.aygfsteel.com/hongqiang/archive/2012/08/08/385091.html</link><dc:creator>å¼ æ…§</dc:creator><author>å¼ æ…§</author><pubDate>Wed, 08 Aug 2012 15:37:00 GMT</pubDate><guid>http://www.aygfsteel.com/hongqiang/archive/2012/08/08/385091.html</guid><wfw:comment>http://www.aygfsteel.com/hongqiang/comments/385091.html</wfw:comment><comments>http://www.aygfsteel.com/hongqiang/archive/2012/08/08/385091.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hongqiang/comments/commentRss/385091.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hongqiang/services/trackbacks/385091.html</trackback:ping><description><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><strong>本文主要½Ž€˜q°çš„内容有单例设计模式、dom4j解析xmlæ–‡äšgåQˆè¿™é‡Œè§£æžçš„æ•°æ®åº“的配置文äšgåQ‰ã€é€šè¿‡è§£æžå‡ºæ¥çš„配¾|®ä¿¡æ¯å®Œæˆæ•°æ®åº“的连接ã€?/strong></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><strong><span style="color: #ff0000; ">1、首先要看的是单例设计模å¼?/span></strong><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">       单例设计模式的实现有两种åQšé¥¿æ±‰å¼åQˆé¢„先加载)、懒汉式åQˆåšg˜qŸåŠ è½½ï¼‰åQŒä¸‹é¢åˆ†åˆ«æ¥çœ‹è¿™ä¸¤ç§å®žçŽ°æ–¹å¼ã€?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">åQ?åQ‰ã€é¥¿æ±‰å¼åQˆé¢„先加载)<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">class</span> Singleton{<br />    <span style="color: #0000FF; ">private</span> <span style="color: #0000FF; ">static</span> Singleton instance = <span style="color: #0000FF; ">new</span> Singleton();<br />    <br />    <span style="color: #0000FF; ">private</span> Singleton(){}<br /><br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">synchronized</span> Singleton getInstance(){<br />        <span style="color: #0000FF; ">return</span> instance;<br />    } <br />}</div>åQ?åQ‰æ‡’汉式åQˆåšg˜qŸåŠ è½½ï¼‰ <br /><br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">class</span> Singleton{<br />    <span style="color: #0000FF; ">private</span> <span style="color: #0000FF; ">static</span> Singleton instance = <span style="color: #0000FF; ">null</span>;<br />    <br />    <span style="color: #0000FF; ">private</span> Singleton(){}<br /><br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">synchronized</span> Singleton getInstance(){<br />        <span style="color: #0000FF; ">if</span>(instance==<span style="color: #0000FF; ">null</span>){<br />             instance = <span style="color: #0000FF; ">new</span> Singleton();<br />        }<br />        <span style="color: #0000FF; ">return</span> instance;<br />    } <br />}</div><br />观察上面的这两种模式åQŒçœ‹èµäh¥åŒºåˆ«òq¶ä¸å¤§ï¼Œå‰ä¸€¿Uæ–¹å¼æ˜¯¾cÖM¸€æ—¦åŠ è½½å°±å¾—å°†å¯¹è±¡å®žä¾‹åŒ–äº†åQŒè€ŒåŽä¸€¿Uåˆ™æ˜¯åœ¨ä½¿ç”¨çš„æ—¶å€™æ‰˜q›è¡Œåˆ¤æ–­æ˜¯å¦è¦å®žä¾‹åŒ–对象åQŒåƈ且在后一¿Uçš„getInstanceæ–ÒŽ³•中加入了同步åQŒè¿™æ äh˜¾å¾—更加的合理åQŒä¸ªäººæ›´åŠ åå¥½äºŽä½¿ç”¨½W¬äºŒ¿Uæ–¹å¼ã€?p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong><span style="color: #ff0000; ">2、ä‹É用dom4j来完成数据库配置文äšg的解æž?/span></strong></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">¾l™å‡ºä¸‹é¢˜q™ä¸ªæ•°æ®åº“的配置文äšg<strong>sys-config.xml</strong></p><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; "><?</span><span style="color: #FF00FF; ">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000FF; ">?></span><br /><span style="color: #0000FF; "><</span><span style="color: #800000; ">config</span><span style="color: #0000FF; ">></span><br />    <span style="color: #0000FF; "><</span><span style="color: #800000; ">db-info</span><span style="color: #0000FF; ">></span><br />        <span style="color: #0000FF; "><</span><span style="color: #800000; ">driver</span><span style="color: #0000FF; ">></span>oracle.jdbc.driver.OracleDriver<span style="color: #0000FF; "></</span><span style="color: #800000; ">driver</span><span style="color: #0000FF; ">></span><br />        <span style="color: #0000FF; "><</span><span style="color: #800000; ">url</span><span style="color: #0000FF; ">></span>jdbc:oracle:thin:@127.0.0.1:1521:ORCL<span style="color: #0000FF; "></</span><span style="color: #800000; ">url</span><span style="color: #0000FF; ">></span><br />        <span style="color: #0000FF; "><</span><span style="color: #800000; ">user</span><span style="color: #0000FF; ">></span>username<span style="color: #0000FF; "></</span><span style="color: #800000; ">user</span><span style="color: #0000FF; ">></span><br />        <span style="color: #0000FF; "><</span><span style="color: #800000; ">password</span><span style="color: #0000FF; ">></span>password<span style="color: #0000FF; "></</span><span style="color: #800000; ">password</span><span style="color: #0000FF; ">></span><br />    <span style="color: #0000FF; "></</span><span style="color: #800000; ">db-info</span><span style="color: #0000FF; ">></span><br /><span style="color: #0000FF; "></</span><span style="color: #800000; ">config</span><span style="color: #0000FF; ">></span></div><br />完成解析的java¾c»ï¼š<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">åQ?åQ‰ã€ä¿å­˜æ•°æ®åº“jdbc配置信息的模型类<strong>JdbcConfig.java</strong></p><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span> org.ml.drp.util;<br /><br /><span style="color: #008000; ">/**</span><span style="color: #008000; "><br /> * ç”¨äºŽä¿å­˜æ•°æ®åº“连接时的jdbc参数<br /> * <br /> * </span><span style="color: #808080; ">@author</span><span style="color: #008000; "> MuLing<br /> * <br /> </span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">class</span> JdbcConfig {<br />    <span style="color: #0000FF; ">private</span> String DbDriver;<br />    <span style="color: #0000FF; ">private</span> String DbUrl;<br />    <span style="color: #0000FF; ">private</span> String DbUser;<br />    <span style="color: #0000FF; ">private</span> String DbPass;<br /><br />    <span style="color: #0000FF; ">public</span> String getDbDriver() {<br />        <span style="color: #0000FF; ">return</span> DbDriver;<br />    }<br /><br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> setDbDriver(String dbDriver) {<br />        DbDriver = dbDriver;<br />    }<br /><br />    <span style="color: #0000FF; ">public</span> String getDbUrl() {<br />        <span style="color: #0000FF; ">return</span> DbUrl;<br />    }<br /><br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> setDbUrl(String dbUrl) {<br />        DbUrl = dbUrl;<br />    }<br /><br />    <span style="color: #0000FF; ">public</span> String getDbUser() {<br />        <span style="color: #0000FF; ">return</span> DbUser;<br />    }<br /><br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> setDbUser(String dbUser) {<br />        DbUser = dbUser;<br />    }<br /><br />    <span style="color: #0000FF; ">public</span> String getDbPass() {<br />        <span style="color: #0000FF; ">return</span> DbPass;<br />    }<br /><br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> setDbPass(String dbPass) {<br />        DbPass = dbPass;<br />    }<br /><br />    @Override<br />    <span style="color: #0000FF; ">public</span> String toString() {<br />        <span style="color: #0000FF; ">return</span> "JdbcConfig [DbDriver=" + DbDriver + ", DbUrl=" + DbUrl<br />                + ", DbUser=" + DbUser + ", DbPass=" + DbPass + "]";<br />    }<br />}</div><br />åQ?åQ‰ã€è§£æžæ•°æ®åº“配置文äšg的工å…ïL±»<strong>XmlConfigReader.java</strong>,˜q™é‡Œä½¿ç”¨å•例模式完成åQŒé‡‡ç”¨çš„æ˜¯æ‡’汉式ã€?nbsp;<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span> org.ml.drp.util;<br /><br /><span style="color: #0000FF; ">import</span> java.io.InputStream;<br /><br /><span style="color: #0000FF; ">import</span> org.dom4j.Document;<br /><span style="color: #0000FF; ">import</span> org.dom4j.DocumentException;<br /><span style="color: #0000FF; ">import</span> org.dom4j.Element;<br /><span style="color: #0000FF; ">import</span> org.dom4j.io.SAXReader;<br /><span style="color: #008000; ">/**</span><span style="color: #008000; "><br /> * ç”¨äºŽè§£æžxmlæ–‡äšg <br /> * </span><span style="color: #808080; ">@author</span><span style="color: #008000; "> MuLing<br /> *<br /> </span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">class</span> XmlConfigReader {  <br />    <br />    <span style="color: #0000FF; ">private</span> JdbcConfig jdbcConfig = <span style="color: #0000FF; ">null</span>;<br />    <span style="color: #0000FF; ">private</span> <span style="color: #0000FF; ">static</span> XmlConfigReader instance = <span style="color: #0000FF; ">null</span>; <br />    <br />    <span style="color: #0000FF; ">private</span> XmlConfigReader(){<br />        SAXReader reader = <span style="color: #0000FF; ">new</span> SAXReader();<span style="color: #008000; ">//</span><span style="color: #008000; ">取得SAXReader的对è±?/span><span style="color: #008000; "><br /></span>        InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");<span style="color: #008000; ">//</span><span style="color: #008000; ">得到输入‹¹å¯¹è±?/span><span style="color: #008000; "><br /></span>        jdbcConfig = <span style="color: #0000FF; ">new</span> JdbcConfig();<br />        Document doc = <span style="color: #0000FF; ">null</span>;<br />        <span style="color: #0000FF; ">try</span> {<br />            doc = reader.read(input); <span style="color: #008000; ">//</span><span style="color: #008000; ">˜q›è¡Œè¯Õd–</span><span style="color: #008000; "><br /></span>        } <span style="color: #0000FF; ">catch</span> (DocumentException e) { <br />            e.printStackTrace(); <br />        }<br />                <span style="color: #008000; ">//</span><span style="color: #008000; ">取得对应的节点对è±?/span><span style="color: #008000; "><br /></span>               &nbsp;Element driverEle = (Element)doc.selectObject("/config/db-info/driver");<br />        Element urlEle = (Element)doc.selectObject("/config/db-info/url");<br />        Element userEle = (Element)doc.selectObject("/config/db-info/user");<br />        Element passwordEle = (Element)doc.selectObject("/config/db-info/password"); <br /><br />        jdbcConfig.setDbDriver(driverEle.getStringValue());<br />        jdbcConfig.setDbUrl(urlEle.getStringValue());<br />        jdbcConfig.setDbUser(userEle.getStringValue());<br />        jdbcConfig.setDbPass(passwordEle.getStringValue()); <br />    }<br />    <br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">synchronized</span> XmlConfigReader getInstance(){<br />        <span style="color: #0000FF; ">if</span>(instance==<span style="color: #0000FF; ">null</span>){<br />            instance = <span style="color: #0000FF; ">new</span> XmlConfigReader();<br />        }<br />        <span style="color: #0000FF; ">return</span> instance;<br />    }<br />    <br />    <span style="color: #0000FF; ">public</span> JdbcConfig getJdbcConfig(){<br />        <span style="color: #0000FF; ">return</span> <span style="color: #0000FF; ">this</span>.jdbcConfig;<br />    }<br />}</div><br /><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong><span style="color: #ff0000; ">3、根据解析出了的配置信息完成数据库的˜qžæŽ¥</span></strong></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">下面是一个完成数据库˜qžæŽ¥æ“ä½œçš„æµ‹è¯•å·¥å…ïL±»<strong>DbUtil.java</strong></p><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span> org.ml.drp.util;<br /><br /><span style="color: #0000FF; ">import</span> java.sql.Connection;<br /><span style="color: #0000FF; ">import</span> java.sql.DriverManager;<br /><span style="color: #0000FF; ">import</span> java.sql.SQLException;<br /><br /><span style="color: #008000; ">/**</span><span style="color: #008000; "><br /> * ž®è£…数据库常用操作类<br /> * </span><span style="color: #808080; ">@author</span><span style="color: #008000; "> MuLing<br /> *<br /> </span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">class</span> DbUtil {<br />  <br />    <span style="color: #008000; ">/**</span><span style="color: #008000; "><br />     * å–得数据库的˜qžæŽ¥<br />     * </span><span style="color: #808080; ">@return</span><span style="color: #008000; "><br />     </span><span style="color: #008000; ">*/</span><br />    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">static</span> Connection getConnection(){<br />        Connection conn = <span style="color: #0000FF; ">null</span>;        <br />        <span style="color: #008000; ">//</span><span style="color: #008000; ">取得数据库连接字½W¦ä¸²</span><span style="color: #008000; "><br /></span>        JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();<br />        String DBDRIVER = jdbcConfig.getDbDriver();<br />        String DBURL = jdbcConfig.getDbUrl();<br />        String DBUSER = jdbcConfig.getDbUser();<br />        String DBPASS = jdbcConfig.getDbPass();<br />        <span style="color: #008000; ">//</span><span style="color: #008000; ">1:注册驱动</span><span style="color: #008000; "><br /></span>        <span style="color: #0000FF; ">try</span> {<br />            Class.forName(DBDRIVER);<br />        } <span style="color: #0000FF; ">catch</span> (ClassNotFoundException e) { <br />            e.printStackTrace();<br />        }<br />        <span style="color: #008000; ">//</span><span style="color: #008000; ">2åQšèŽ·å–è¿žæŽ?/span><span style="color: #008000; "><br /></span>        <span style="color: #0000FF; ">try</span> {<br />            conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);<br />        } <span style="color: #0000FF; ">catch</span> (SQLException e) { <br />            e.printStackTrace();<br />        }<br />        <span style="color: #008000; ">//</span><span style="color: #008000; ">3:˜q”回数据库连æŽ?/span><span style="color: #008000; "><br /></span>        <span style="color: #0000FF; ">return</span> conn;<br />    }<br />    <br />    <span style="color: #008000; ">//</span><span style="color: #008000; ">‹¹‹è¯•数据库的˜qžæŽ¥æ˜¯å¦æˆåŠŸ</span><span style="color: #008000; "><br /></span>    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">void</span> main(String args[]){ <br />        System.out.println(DbUtil.getConnection());<br />    }<br />}</div><br />上完成了单例模式下ä‹É用dom4j来读取数据库配置文äšgåQŒåƈ实现数据库的˜qžæŽ¥æ“ä½œã€?nbsp;<br /><br /><br /><br /><br /></p><img src ="http://www.aygfsteel.com/hongqiang/aggbug/385091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hongqiang/" target="_blank">å¼ æ…§</a> 2012-08-08 23:37 <a href="http://www.aygfsteel.com/hongqiang/archive/2012/08/08/385091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>破除“系¾lŸå­¦ä¹ â€çš„æƒ…结http://www.aygfsteel.com/hongqiang/archive/2012/08/08/385090.htmlå¼ æ…§å¼ æ…§Wed, 08 Aug 2012 15:33:00 GMThttp://www.aygfsteel.com/hongqiang/archive/2012/08/08/385090.htmlhttp://www.aygfsteel.com/hongqiang/comments/385090.htmlhttp://www.aygfsteel.com/hongqiang/archive/2012/08/08/385090.html#Feedback5http://www.aygfsteel.com/hongqiang/comments/commentRss/385090.htmlhttp://www.aygfsteel.com/hongqiang/services/trackbacks/385090.html常有同学惛_œ¨è‡ªå·±è¯‘Ö¤–学习的安排中åQ?#8220;¾pȝ»Ÿåœ?#8221;学习点什么。这æ ïLš„事情常发生在喜欢做A专业的事åQŒå´ä¸Šäº†B专业åQŒä¸”A不等于BåQŒç”šè‡³ç›¸ä¼¼åº¦(A, B)­‘‹äºŽæ— ç©·ã€‚对有些同学åQŒä¸€ä¸ç•™¼œžå‘现自å·Þqš„学习落后了不ž®‘,比如学计½Ž—机的,到大三了åQŒå´å‘现˜qžç®€å•程序也¾~–不出来åQŒå†å¦‚学完高æ•îCº†åQŒæ‰çŸ¥é“高数原来如此重要åQŒäºŽæ˜¯æƒ³è¦ç³»¾lŸåœ°é‡å­¦ä¸€éã€?/span>
ã€€ã€€ä½•äØ“¾pȝ»Ÿå­¦ä¹ åQŸç³»¾lŸå­¦ä¹ å°±æ˜¯è¦æŒ‰ç…§å·²æœ‰çš„一套规定,先学什么,再学什么,按步ž®Þq­åœ°èµ°å®Œä¸€ä¸ªæµ½E‹ã€‚äØ“ä»€ä¹ˆè¦¾pȝ»Ÿå­¦ä¹ åQŸå°†åšäº‹èƒ½ä¸“业些。规定从何而来åQŸä¸šç•Œä¸“家。系¾lŸå­¦ä¹ æœ‰ä»€ä¹ˆå¥½å¤„?基础扎实。系¾lŸå­¦ä¹ çš„路线åQŸå…ˆç†è®ºåQŒå†ç†è®ºæŒ‡å¯¼å®žè·µã€?/span>
  ˜q™å°±æ€ªäº†ã€‚当今大学饱受批评之一在于重理论,è½Õd®žè·üc€‚而到了课外自å·Þqš„安排åQŒè¿˜ä¹Ÿè¦èµ°å…¥˜q™æ¡å··å­ã€‚深层的原因在于åQŒæˆ‘们要惛_­¦ç‚¹ä¸œè¥¿ï¼Œæ— æ„è¯†åœ°å»¶ç®‹äº†ä¸€¿Uåƈ不是很合理的思维åQŒå­¦ä¹ çš„æ¨¡å¼è¢«å•一化了。一边在批评着本专业系¾lŸåŒ–教学中的弊端åQŒä¸€æ–šw¢åœ¨æœ¬æ¥ä¸å—约束的自由安排中又要去˜q½æ±‚˜q™ç§¾pȝ»ŸåŒ–,谬矣ã€?/span>
  ¾pȝ»Ÿåœ°å­¦åQŒæ„å‘³ç€ž®†å¼€å§‹ä¸€ä¸ªæ¯”较庞大和长期的计划。雄心勃勃地èµäh­¥åQŒç°æºœæºœçš„,或者不知不觉地停止。这¿Uæƒ…冉|ˆ‘¾låŽ†äº†ä¸æ­¢ä¸€‹Æ¡ã€‚还有一¿Uæƒ…冉|˜¯åQŒç¥¥æž—嫂式地叨叨一生:“一直想¾pȝ»Ÿå­¦ä¹ ä¸€ä¸?#8230;…åQŒå´æ²¡æœ‰æœÞZ¼šã€?#8221;
  要想满èƒö自己的兴­‘£ï¼Œå…¶å®žå¾ˆç®€å•,用合适的方式行动èµäh¥å›_¯ã€‚å–œ‹Æ¢ç”µå­çš„åQŒå…ˆä¹îC¸ªå¥—äšgåQŒå¤‡æŠŠçƒ™é“ï¼Œç„Šä¸ªæ”‰™Ÿ³æœºå‡ºæ¥ï¼›å–œæ¬¢è®¡ç®—机的åQŒå°±å…ˆè‡ªå­¦ç¼–个程序出来;喜欢¾læµŽçš„,è¯ÖMº›¾læµŽå­¦è‘—ä½?#8230;…。系¾lŸå­¦ä¹ çš„æ¡äšg往往有些苛刻åQŒæ‰€ä»¥ä¸è¦å¯„望于¾pȝ»Ÿå­¦ä¹ ã€?/span>
  实际上,¾pȝ»Ÿå­¦ä¹ ˜q™ä¸ªä¸œä¸œåQŒç¡®å®žç”¨ä¸ç€ä¸ÞZ¹‹å¦‚此着˜q—÷€‚ç³»¾lŸå­¦ä¹ æœ¬íw«åƈ没有什么太多的道理åQŒé‚£æ˜¯å¯¹æŸæ–¹é¢çŸ¥è¯†çš„套装åQŒæ˜¯ä¸ÞZº†é€‚应大规模äh才培养而用的。一旦åŞ成系¾lŸï¼Œä¹Ÿå°±æ„å‘³ç€åƒµåŒ–åQŒæ„å‘³ç€å•一标准åQŒåœ¨˜q™ä¸€å¥—东西广ä¸ÞZ¼ æ’­çš„同时åQŒä¹Ÿä¸ºç›¸åº”的学科˜q›ä¸€æ­¥å‘展套上了枷锁åQŒè¿™æ˜¯ä¸€ä¸ªèº²ä¸å¼€çš„æ‚–论。单按这个系¾lŸåŸ¹å…Õd‡ºæ¥çš„人才åQŒæ²¡æœ‰ç‰¹è‰ÔŒ¼Œ¾~ÞZ¹åˆ›æ–°åQŒè¿™æ˜¯çŽ°åœ¨æ•™è‚²çš„ä¸€ä¸ªéžå¸¸å¤§çš„å¼Šç«¯ã€?/span>
  我们不能直接全盘否认¾pȝ»Ÿå­¦ä¹ åQŒè¿™¿Uæ–¹æ³•是有效的,也将¾l§ç®‹æŒç®‹ã€‚需要我们每个äh做的åQŒæ˜¯ä¸å•一åœîC¾èµ–ç³»¾lŸåŒ–åQŒè¦½Hç ´˜q™ä¸ªæ‰€è°“çš„¾pȝ»ŸåQŒæ‰¾å‡ºé€‚合自己的办法,˜q›è€ŒäØ“˜q™ä¸ª¾pȝ»Ÿåšå‡ºè´¡çŒ®ã€‚è¿™ž®±æ˜¯åˆ›æ–°ã€‚要创新åQŒå°±ä¸€å®šè¦æœ‰äh½Hç ´¾pȝ»Ÿçš„制¾U¦ã€?/span>
  一个最½Ž€å•的问题åQŒå„行业都有个祖师爷åQŒå“ªä¸ªç¥–师爷是科班出íw«ï¼Œ¾pȝ»Ÿå­¦ä¹ ˜q‡çš„åQŸåœ¨çŽ°å®žä¸­ï¼Œæˆ‘ä»¬å‘çŽ°å¾ˆå¤šæœ‰æ‰€æˆå°±çš„äh物往往是多面手åQŒä¸èƒ½è¯´ä»–的每一面都是系¾lŸå­¦æ¥çš„。在职场中,复合型äh才受‹Æ¢è¿ŽåQŒå¤åˆåž‹äººæ‰ä¸å¯ä»¥å•一理解ä¸ÞZ¸Š˜q‡å‡ ä¸ªä¸“ä¸šï¼Œæ‹¿è¿‡å‡ ä¸ªå­¦ä½ã€‚é‡Žè·¯å­å‡ø™ínåQŒè¢«æ™ºåŸä»¬çœ‹ä¸ä¸Šçš„,常常能做出大的成¾l©ã€?/span>
  在我理想的大学中åQŒåŒå­¦ä»¬çš„学习将是这æ ïLš„åQšä»–们接受着一™å¹ä¸“业教è‚ÔŒ¼Œä¸€æ–šw¢ç”±æ•™æŽˆç³»¾lŸåœ°ä¼ æŽˆç€ä¸“业知识åQŒæŽ¥å—着一¿U?#8220;正规”的训¾lƒï¼Œå¦ä¸€æ–šw¢åQŒå­¦ç”Ÿèƒ½å¤Ÿæ ¹æ®è‡ªå·Þqš„兴趣、感觉自由地拓展åQŒæ‹“展的内容有的是和¾pȝ»Ÿç›¸å…³çš„,有的完全æ˜?#8220;节外生枝”。这是课内与译֤–有效的结合ã€?/span>
  破除“¾pȝ»Ÿå­¦ä¹ ”的情¾l“,æ ÒŽ®è‡ªå·±å½“前的环境、条ä»Óž¼Œé¦–先行动èµäh¥ã€‚在èµäh­¥æ—Óž¼Œç€é‡ç›´æŽ¥çš„体验åQŒè€Œä¸“门的理论。在整个˜q‡ç¨‹ä¸­ï¼Œçœ‹é‡è‡ªå·±çš„æ„Ÿå—,而不是专家的观点。坚持下来,你将有能力自由出入这个系¾lŸï¼Œé¢å¯¹çš„æ˜¯æ›´äØ“òq‰K˜”的空间。没有经˜q‡ç³»¾lŸå­¦ä¹ ï¼Œå®žåœ¨ä¸èƒ½ä¸è¯´æ˜¯ä¸€ä»¶å€¼å¾—庆幸的事ã€?/span>
  有条件系¾lŸå­¦ä¹ ï¼Œæˆ–许可以乐一乐;而没有条件系¾lŸå­¦ä¹ çš„åQŒä¸€å®šä¸è¦çº ¾l“ã€?/span>

  有条件进入了¾pȝ»Ÿå­¦ä¹ è½¨é“的,也要常想着“æ£äØ•”åQŒå¾€¾pȝ»Ÿå¤–冲一册Ӏ‚没有条件以¾pȝ»Ÿå­¦ä¹ å¼€å§‹çš„åQŒä¸å¦¨åœ¨é‡Žèµ\子è“væ­¥ï¼Œç”šè‡³æˆäØ“é«˜æ‰‹åŽï¼Œå¾€¾pȝ»Ÿ˜q™è¾¹çœ‹ä¸€çœ‹ï¼Œ˜q™ä¼šè®©ä½ ä¸Šåˆ°ä¸€ä¸ªæ–°çš„境界ã€?/p>


æ€È»“一下:能进入系¾lŸå­¦ä¹ è½¨é“的人是òq¸è¿çš„,但也要提防着“¾pȝ»Ÿ”¾l™ä½ é€ æˆçš„限åˆÓž¼›æ—¢ç„¶æ²¡æœ‰æ¡äšg¾pȝ»Ÿå­¦ä¹ çš„,ž®×ƒ¸è¦åŽ»òq²ç­‰åQŒå…ˆåЍè“v来再说ã€?/p>

]]>
探讨i++å’?+ihttp://www.aygfsteel.com/hongqiang/archive/2012/08/01/384557.htmlå¼ æ…§å¼ æ…§Wed, 01 Aug 2012 13:56:00 GMThttp://www.aygfsteel.com/hongqiang/archive/2012/08/01/384557.htmlhttp://www.aygfsteel.com/hongqiang/comments/384557.htmlhttp://www.aygfsteel.com/hongqiang/archive/2012/08/01/384557.html#Feedback1http://www.aygfsteel.com/hongqiang/comments/commentRss/384557.htmlhttp://www.aygfsteel.com/hongqiang/services/trackbacks/384557.html文章的楼主连左值都可以˜qç®—åQŒè¿˜è‹¥æ— å…¶äº‹å¾—当作可以编译,在那讲解åQŒè‹¥æ— å…¶äº‹å°±½Ž—了åQŒå¯ä»¥å½“做没有发现编译问题,但是那讲解也太误å¯égh了吧åQŸç„¶åŽæˆ‘跟帖的楼下还出现一ä¸?#8220;石破å¤?#8221;åQŒä»¥æ•™å¯¼å¼çš„口吻åQŒåœ¨é‚£è®²è§£ï¼Œä¸çŸ¥é“的人岂不是ž®×ƒ¿¡äº†å—åQŸçœŸçœŸä¸€¾Ÿ¤å®³äºÞZ¹‹é©¬ï¼Œå½“然我只是指其中几位åQŒå¾ˆå¤šè·Ÿå¸–的朋友åQŒæˆ‘自认˜q˜æ˜¯ä¸å¦‚çš„ã€?/p>

ž®×ƒØ“了这个媄响广泛的害äh帖子åQˆåœ¨csdn上弹框出来,影响能不ž®å—åQŸï¼‰åQŒæˆ‘也来探讨一下i++åQŒæˆ‘是菜鸟,我不会用教导式口åÀL¥è®²è§£ã€?/p>

首先说文章楼ä¸ÀLåˆ°çš„

if((i++=j++)!=4){}  

看到˜q™å¥ä»£ç æˆ‘真惛_–·åQŒå› ä¸ø™¿™è®©æˆ‘对自å·×ƒñ”生了不自信,˜q˜åŽ»¾~–译了一下,果然是错误的åQŒå·¦è¾ÒŽ€Žä¹ˆèƒ½å¤Ÿ˜q›è¡Œ˜qç®—呢?æ¥ég¸»çœŸå¼ºå¤?..ä¸ÞZ»€ä¹ˆæ˜¨å¤©æ²¡æœ‰å†™æ–‡ç« åQŒæ²¡æœ‰æƒ…¾lªæ¿€åŠ¨ï¼Œå›?/p>

为我知道C++风格也是˜q™æ ·èµ‹å€û|¼Œä¸çŸ¥é“能不能¾~–译˜q‡åŽ»åQŒä½†æ˜¯ä»Šå¤©çœ‹åˆ°è·Ÿå¸–的朋友è¯ß_¼ŒVC98˜q‡ä¸åŽ»ï¼ŒDEV-C++也过不去åQŒæˆ‘才感到真有一¿Uè¢«è€çš„æ„Ÿè§‰ã€?#8220;左倯Dƒ½˜qç®—吗?What  the hellåQ?˜q™ä¸€å¥ï¼Œåªæ˜¯éª‚我自己怀疑自己,没有对其他ä“Q何ähã€?/p>

假设åQŒæ¥¼ä¸ÀL˜¯æ‰‹è¯¯åQŒå’±ä»¬æ¥ä¸€ä¸ªæ­£¼‹®çš„能编译的代码讨论一下:

int i=4,j=3;   
if((i = j++) != 4) {}  

j++的具体动作应该是怎样的,我想看过《Thinking in Java》的朋友都掌握得˜q˜ä¸é”™ï¼Œå¦‚果实在æƒÏx‰¾æ›´æ·±å…¥ä¸€ç‚ÒŽŽ¢è®¨i++的书åQŒä¸ªäººçœ‹˜q‡ã€ŠJava½E‹åºå‘˜é¢è¯•宝典》,里面有提到i++˜q™ä¸ªéƒ¨åˆ†åQŒè®²å¾—很仔细。j++åQŒæ˜¯ä¸€ä¸ªä¾èµ–于java里面çš?#8220;中间¾~“存变量机制”来实现的åQŒå¾ˆå¤šäh都会å¿?+在前ž®±æ˜¯“先加后赋”åQ?+在后ž®±æ˜¯“先赋后加”åQŒä½†æ˜¯è¿™ä¸?#8220;èµ?#8221;和这ä¸?#8220;åŠ?#8221;是针对哪个对象呢åQŒæœ‰å‡ ä¸ªäºø™ƒ½æ¸…楚的解释?“宝典”˜q™æœ¬ä¹¦ä¸Šé¢çš„解释åQŒä¸ªäºø™§‰å¾—非常好åQŒå°±æ¥è¿™é‡Œç§€ä¸€ŒDüc€‚首先,像文章中2æ¥¼æ‰€è¯´é‚£æ øP¼š++çš„æ—¶é—´æ˜¯ä»¥æ•´ä¸ªè¯­å¥äØ“è¡¡é‡çš„ï¼Œæ‰€ä»¥ï¼Œä»€ä¹ˆæ—¶å€™è‡ªå¢žï¼Œè·Ÿä¸€æ•´å¥˜qç®—语句有关åQŒçŽ°åœ¨çš„æƒ…å†µæ˜?span style="color: #ff0000; "> i = j++åQšè¿™æ ·ä¸€å¥åº”该被拆分为:

 

temp = j;//先赋
j = j + 1;//后加
i = temp;

 

再来一ä¸?span style="color: #ff0000; ">i = ++jåQšè¿™ä¸€å¥åº”该被拆分为:

j = j + 1;//先加
temp = j;//后赋
i = temp;

用这æ ïLš„语句åQŒæ¥è§£é‡Š“èµ?#8221;è·?#8220;åŠ?#8221;应该是很明了的吧åQŸè®°ä½ï¼Œ“åŠ?#8221;只涉及了本èínåQ?#8220;èµ?#8221;涉及本èín和中间缓存变量ã€?/p>

如何理解“++çš„æ—¶é—´æ˜¯ä»¥æ•´ä¸ªè¯­å¥äØ“è¡¡é‡çš?#8221;åQŸå’±ä»¬æ¥ä¸€ŒDµå¤æ‚çš„ž®±å¯ä»¥å¾ˆå¥½åœ°ç†è§£äº†ï¼Œž®±æ‹¿é‚£ä¸ªè¢«æˆ‘å–ïLš„“石破å¤?#8221;的吧ã€?/p>

 

/* ˜q™ä¸ªæ˜¯åŽŸå¼ï¼Œž®Šé‡ç‰ˆæƒåQŒä½†æ˜¯è¯¯å¯égh*/
int i=10;
i=i++ + i++;//20  --˜q™é‡Œåº”该会是21,note by jacob
i=++i + ++i;//44  --˜q™é‡Œåº”该会是45,note by jacob
 

 

首先å’׃»¬æŠŠè¿™éƒ½æ‹†å¼€æ¥ç†è§£ï¼š

/* ¾l†è¯´½W¬ä¸€ä¸?nbsp;i = i++ + i ++; */
temp1 = i;//temp1 == 10
i = i + 1;//i == 11;
temp2 = i;//temp2 == 11
i = i + 1;//i == 12;
i = temp1 + temp2;//i == 21

/*½W¬äºŒä¸?nbsp;i = ++i + ++i;*/
i = i + 1;
temp1 = i;
i = i + 1;
temp2 = i;
i = temp1 +temp2;


˜q™æ ·çš„例子,应该½Ž—是比较复杂的吧åQŸå¦‚果需要,˜q˜å¯ä»¥æ¥ä¸€ä¸ªæ›´åŠ å¤æ‚çš„åQŒä¸˜q‡ä¸å†è¯¦¾l†è§£é‡Šï¼Œå¤§å®¶å¯ä»¥æ‹¿æ¥æŽ¨æ•²ä¸€ä¸‹ï¼š

int j =0,k = 0,h=0;
k = k++ + k++ + k++ + ++k;//k == 7
j = ++j + j++ + j++ + j++;//j ==7;
h = ++h + ++h;


张慧 2012-08-01 21:56 发表评论
]]>
javascriptçš„åšg˜qŸç­‰å¾…实çŽ?/title><link>http://www.aygfsteel.com/hongqiang/archive/2012/08/01/384555.html</link><dc:creator>å¼ æ…§</dc:creator><author>å¼ æ…§</author><pubDate>Wed, 01 Aug 2012 13:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/hongqiang/archive/2012/08/01/384555.html</guid><wfw:comment>http://www.aygfsteel.com/hongqiang/comments/384555.html</wfw:comment><comments>http://www.aygfsteel.com/hongqiang/archive/2012/08/01/384555.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hongqiang/comments/commentRss/384555.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hongqiang/services/trackbacks/384555.html</trackback:ping><description><![CDATA[<span style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "> ˜q™æ®µæ—‰™—´é‡åˆ°ä¸€ä¸ªé—®é¢˜ï¼šä½¿ç”¨ajax生成一个列表,然后使用sorttable.js对这个列表进行排序。问题在于:生成的列表还没出玎ͼŒæŽ’序已经开始了åQŒç»“果没有找到列表报错。解å†Ïx–¹æ³•:</span> <br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> function ifExist(table){<br />    if(table.tBodies[0]==null)<br />   {<br />  setTimeout( function(){ifExist(table);}, 1000);  <br />   }<br />   else<br />   {<br />  sorttable.makeSortable(table);<br />   }<br /> }</div><br /><p style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">判断节点是否生成了,如果没有åQŒé‚£ä¹ˆå°±½{‰å¾…1¿U’,再åó@环执行。一切ok了!</p><p style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "> </p><p style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">最后,补充一下关于javascript同步和异步的问题åQˆè{载)åQ?/p><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><strong>一、同步加载与异步加蝲的åÅžå¼?/strong></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><strong>1. 同步加蝲</strong></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">我们òqÏx—¶æœ€å¸æ€‹É用的ž®±æ˜¯˜q™ç§åŒæ­¥åŠ è²å½¢å¼åQ?/div><pre style="white-space: pre-wrap; word-wrap: break-word; line-height: 25px; text-align: left; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; "><span style="color: #808030; "><</span>script src<span style="color: #808030; ">=</span>"http://yourdomain.com/script.js"<span style="color: #808030; ">></span><span style="color: #808030; "><</span><span style="color: #808030; ">/</span>script<span style="color: #808030; ">></span> </pre><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><div>同步模式åQŒåˆ¿U°é˜»å¡žæ¨¡å¼ï¼Œä¼šé˜»æ­¢æµè§ˆå™¨çš„后¾l­å¤„理,停止了后¾l­çš„解析åQŒå› æ­¤åœæ­¢äº†åŽç®‹çš„æ–‡ä»¶åŠ è½½ï¼ˆå¦‚å›¾åƒï¼‰ã€æ¸²æŸ“ã€ä»£ç æ‰§è¡Œã€?/div><div>js 之所以要同步执行åQŒæ˜¯å› äØ“ js 中可能有输出 document 内容、修改dom、重定向½{‰è¡Œä¸ºï¼Œæ‰€ä»¥é»˜è®¤åŒæ­¥æ‰§è¡Œæ‰æ˜¯å®‰å…¨çš„ã€?/div><div>以前的一般徏议是æŠ?lt;script>攑֜¨™åµé¢æœ«å°¾</body>之前åQŒè¿™æ ·å°½å¯èƒ½å‡å°‘˜q™ç§é˜Õd¡žè¡ŒäØ“åQŒè€Œå…ˆè®©é¡µé¢å±•½Cºå‡ºæ¥ã€?/div></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">½Ž€å•说åQšåŠ è½½çš„¾|‘络 timeline 是瀑布模型åQŒè€Œå¼‚步加载的 timeline æ˜¯åÆˆå‘æ¨¡åž‹ã€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "></div><p style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><strong>2. 常见异步加蝲åQˆScript DOM ElementåQ?/strong></p><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><pre style="white-space: pre-wrap; word-wrap: break-word; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: #000000; "><span style="color: #808030; ">(</span><span style="font-weight: bold; ">function</span><span style="color: #808030; ">(</span><span style="color: #808030; ">)</span> { <span style="font-weight: bold; ">var</span> s <span style="color: #808030; ">=</span> document<span style="color: #808030; ">.</span>createElement<span style="color: #808030; ">(</span>'script'<span style="color: #808030; ">)</span>; s<span style="color: #808030; ">.</span>type <span style="color: #808030; ">=</span> 'text/javascript'; s<span style="color: #808030; ">.</span>async <span style="color: #808030; ">=</span> true; s<span style="color: #808030; ">.</span>src <span style="color: #808030; ">=</span> 'http://yourdomain.com/script.js'; <span style="font-weight: bold; ">var</span> x <span style="color: #808030; ">=</span> document<span style="color: #808030; ">.</span>getElementsByTagName<span style="color: #808030; ">(</span>'script'<span style="color: #808030; ">)</span><span style="color: #808030; ">[</span>0<span style="color: #808030; ">]</span>; x<span style="color: #808030; ">.</span>parentNode<span style="color: #808030; ">.</span>insertBefore<span style="color: #808030; ">(</span>s<span style="color: #808030; ">,</span> x<span style="color: #808030; ">)</span>; }<span style="color: #808030; ">)</span><span style="color: #808030; ">(</span><span style="color: #808030; ">)</span>;</pre><br />异步加蝲又叫非阻塞,‹¹è§ˆå™¨åœ¨ä¸‹è²æ‰§è¡Œ js 同时åQŒè¿˜ä¼šç‘ô¾l­è¿›è¡ŒåŽ¾l­é¡µé¢çš„处理ã€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">˜q™ç§æ–ÒŽ³•是在™åµé¢ä¸?lt;script>标签内,ç”?js 创徏一ä¸?script 元素òq¶æ’入到 document 中。这样就做到了非é˜Õd¡žçš„下è½?js 代码ã€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">async属性是HTML5中新增的异步支持åQŒè§åŽæ–‡è§£é‡ŠåQŒåŠ ä¸Šå¥½åQˆä¸åŠ ä¹Ÿä¸åª„å“ï¼‰ã€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">此方法被¿UîCØ“ Script DOM Element 法,不要æ±?js 同源ã€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">ž®†js代码包裹在匿名函æ•îC¸­òq¶ç«‹åÏx‰§è¡Œçš„æ–¹å¼æ˜¯äؓ了保护变量名泄露到外部可见,˜q™æ˜¯å¾ˆå¸¸è§çš„æ–¹å¼åQŒå°¤å…¶æ˜¯åœ?js 库中被普遍ä‹É用ã€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><div></div><div>例如 Google Analytics å’?Google+ Badge 都ä‹É用了˜q™ç§å¼‚步加蝲代码åQ?/div><div><pre style="white-space: pre-wrap; word-wrap: break-word; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: #000000; "><span style="color: #808030; ">(</span><span style="font-weight: bold; ">function</span><span style="color: #808030; ">(</span><span style="color: #808030; ">)</span> { <span style="font-weight: bold; ">var</span> ga <span style="color: #808030; ">=</span> document<span style="color: #808030; ">.</span>createElement<span style="color: #808030; ">(</span>'script'<span style="color: #808030; ">)</span>; ga<span style="color: #808030; ">.</span>type <span style="color: #808030; ">=</span> 'text/javascript'; ga<span style="color: #808030; ">.</span>async <span style="color: #808030; ">=</span> true; ga<span style="color: #808030; ">.</span>src <span style="color: #808030; ">=</span> <span style="color: #808030; ">(</span>'https:' <span style="color: #808030; ">==</span> document<span style="color: #808030; ">.</span>location<span style="color: #808030; ">.</span>protocol ? 'https://ssl' : 'http://www'<span style="color: #808030; ">)</span> <span style="color: #808030; ">+</span> '.google-analytics.com/ga.js'; <span style="font-weight: bold; ">var</span> s <span style="color: #808030; ">=</span> document<span style="color: #808030; ">.</span>getElementsByTagName<span style="color: #808030; ">(</span>'script'<span style="color: #808030; ">)</span><span style="color: #808030; ">[</span>0<span style="color: #808030; ">]</span>; s<span style="color: #808030; ">.</span>parentNode<span style="color: #808030; ">.</span>insertBefore<span style="color: #808030; ">(</span>ga<span style="color: #808030; ">,</span> s<span style="color: #808030; ">)</span>; }<span style="color: #808030; ">)</span><span style="color: #808030; ">(</span><span style="color: #808030; ">)</span>; </pre></div><div><span style="font-family: monospace; color: #808030; white-space: pre; ">(</span><span style="font-family: monospace; font-weight: bold; white-space: pre; ">function</span><span style="font-family: monospace; color: #808030; white-space: pre; ">(</span><span style="font-family: monospace; color: #808030; white-space: pre; ">)</span></div><div><pre style="white-space: pre-wrap; word-wrap: break-word; "> {<span style="font-weight: bold; ">var</span> po <span style="color: #808030; ">=</span> document<span style="color: #808030; ">.</span>createElement<span style="color: #808030; ">(</span>"script"<span style="color: #808030; ">)</span>; po<span style="color: #808030; ">.</span>type <span style="color: #808030; ">=</span> "text/javascript"; po<span style="color: #808030; ">.</span>async <span style="color: #808030; ">=</span> true;po<span style="color: #808030; ">.</span>src <span style="color: #808030; ">=</span> "https://apis.google.com/js/plusone.js"; <span style="font-weight: bold; ">var</span> s <span style="color: #808030; ">=</span> document<span style="color: #808030; ">.</span>getElementsByTagName<span style="color: #808030; ">(</span>"script"<span style="color: #808030; ">)</span><span style="color: #808030; ">[</span>0<span style="color: #808030; ">]</span>; s<span style="color: #808030; ">.</span>parentNode<span style="color: #808030; ">.</span>insertBefore<span style="color: #808030; ">(</span>po<span style="color: #808030; ">,</span> s<span style="color: #808030; ">)</span>; }<span style="color: #808030; ">)</span><span style="color: #808030; ">(</span><span style="color: #808030; ">)</span>; </pre></div><div>但是åQ?strong>˜q™ç§åŠ è²æ–¹å¼åœ¨åŠ è½½æ‰§è¡Œå®Œä¹‹å‰ä¼šé˜»æ­?onload 事äšg的触å?/strong>åQŒè€ŒçŽ°åœ¨å¾ˆå¤šé¡µé¢çš„ä»£ç éƒ½åœ¨ onload 时还要执行额外的渲染工作½{‰ï¼Œæ‰€ä»¥è¿˜æ˜¯ä¼šé˜Õd¡žéƒ¨åˆ†™åµé¢çš„初始化处理ã€?/div><div style="font-weight: bold; "><strong><br /></strong></div>3. onload 时的异步加蝲</div><p style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "></p><pre style="white-space: pre-wrap; word-wrap: break-word; line-height: 25px; text-align: left; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; "><span style="color: #808030; ">(</span><span style="font-weight: bold; ">function</span><span style="color: #808030; ">(</span><span style="color: #808030; ">)</span> { <span style="font-weight: bold; ">function</span> async_load<span style="color: #808030; ">(</span><span style="color: #808030; ">)</span>{ <span style="font-weight: bold; ">var</span> s <span style="color: #808030; ">=</span> document<span style="color: #808030; ">.</span>createElement<span style="color: #808030; ">(</span>'script'<span style="color: #808030; ">)</span>; s<span style="color: #808030; ">.</span>type <span style="color: #808030; ">=</span> 'text/javascript'; s<span style="color: #808030; ">.</span>async <span style="color: #808030; ">=</span> true; s<span style="color: #808030; ">.</span>src <span style="color: #808030; ">=</span> 'http://yourdomain.com/script.js'; <span style="font-weight: bold; ">var</span> x <span style="color: #808030; ">=</span> document<span style="color: #808030; ">.</span>getElementsByTagName<span style="color: #808030; ">(</span>'script'<span style="color: #808030; ">)</span><span style="color: #808030; ">[</span>0<span style="color: #808030; ">]</span>; x<span style="color: #808030; ">.</span>parentNode<span style="color: #808030; ">.</span>insertBefore<span style="color: #808030; ">(</span>s<span style="color: #808030; ">,</span> x<span style="color: #808030; ">)</span>; } <span style="font-weight: bold; ">if</span> <span style="color: #808030; ">(</span>window<span style="color: #808030; ">.</span>attachEvent<span style="color: #808030; ">)</span> window<span style="color: #808030; ">.</span>attachEvent<span style="color: #808030; ">(</span>'onload'<span style="color: #808030; ">,</span> async_load<span style="color: #808030; ">)</span>; <span style="font-weight: bold; ">else</span> window<span style="color: #808030; ">.</span>addEventListener<span style="color: #808030; ">(</span>'load'<span style="color: #808030; ">,</span> async_load<span style="color: #808030; ">,</span> false<span style="color: #808030; ">)</span>; }<span style="color: #808030; ">)</span><span style="color: #808030; ">(</span><span style="color: #808030; ">)</span>; </pre><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">˜q™å’Œå‰é¢çš„æ–¹å¼å·®ä¸å¤šåQŒä½†å…³é”®æ˜¯å®ƒä¸æ˜¯ç«‹å³å¼€å§‹å¼‚步加è½?js åQŒè€Œæ˜¯åœ?onload 时才开始异步加载。这样就解决了阻å¡?onload 事äšg触发的问题ã€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">补充åQ?strong>DOMContentLoaded ä¸?OnLoad 事äšg</strong></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">DOMContentLoaded : ™åµé¢(document)已经解析完成åQŒé¡µé¢ä¸­çš„dom元素已经可用。但是页面中引用的图片、subframe可能˜q˜æ²¡æœ‰åŠ è½½å®Œã€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">OnLoadåQšé¡µé¢çš„æ‰€æœ‰èµ„源都加蝲完毕åQˆåŒ…括图片)。浏览器的蝲入进度在˜q™æ—¶æ‰åœæ­¢ã€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">˜q™ä¸¤ä¸ªæ—¶é—´ç‚¹ž®†é¡µé¢åŠ è½½çš„timeline分成了三个阶ŒDüc€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "></div><p style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><strong>4.异步加蝲的其它方æ³?/strong></p><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">ç”׃ºŽJavascriptçš?strong>动态特æ€?/strong>åQŒè¿˜æœ‰å¾ˆå¤šå¼‚步加载方法:</div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><ul><li>XHR Eval</li><li>XHR Injection</li><li>Script in Iframe</li><li>Script Defer</li><li>document.write Script Tag</li><li>˜q˜æœ‰ä¸€¿Uæ–¹æ³•是ç”?setTimeout 延迟0¿U?ä¸?其它æ–ÒŽ³•¾l„合ã€?/li></ul></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><strong>XHR Eval </strong>åQšé€šè¿‡ ajax 获取js的内容,然后 eval 执行ã€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><pre style="white-space: pre-wrap; word-wrap: break-word; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: #000000; "><span style="font-weight: bold; ">var</span> xhrObj <span style="color: #808030; ">=</span> getXHRObject<span style="color: #808030; ">(</span><span style="color: #808030; ">)</span>; xhrObj<span style="color: #808030; ">.</span>onreadystatechange <span style="color: #808030; ">=</span> <span style="font-weight: bold; ">function</span><span style="color: #808030; ">(</span><span style="color: #808030; ">)</span> { <span style="font-weight: bold; ">if</span> <span style="color: #808030; ">(</span> xhrObj<span style="color: #808030; ">.</span>readyState <span style="color: #808030; ">!=</span> 4 <span style="color: #808030; ">)</span> <span style="font-weight: bold; ">return</span>; <span style="font-weight: bold; ">eval</span><span style="color: #808030; ">(</span>xhrObj<span style="color: #808030; ">.</span>responseText<span style="color: #808030; ">)</span>; }; xhrObj<span style="color: #808030; ">.</span>open<span style="color: #808030; ">(</span>'GET'<span style="color: #808030; ">,</span> 'A.js'<span style="color: #808030; ">,</span> true<span style="color: #808030; ">)</span>; xhrObj<span style="color: #808030; ">.</span>send<span style="color: #808030; ">(</span>''<span style="color: #808030; ">)</span>; </pre></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><strong>Script in Ifram</strong>eåQšåˆ›å»ºåƈ插入一个iframe元素åQŒè®©å…¶å¼‚步执è¡?js ã€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><pre style="white-space: pre-wrap; word-wrap: break-word; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: #000000; "><span style="font-weight: bold; ">var</span> iframe <span style="color: #808030; ">=</span> document<span style="color: #808030; ">.</span>createElement<span style="color: #808030; ">(</span>'iframe'<span style="color: #808030; ">)</span>; document<span style="color: #808030; ">.</span>body<span style="color: #808030; ">.</span>appendChild<span style="color: #808030; ">(</span>iframe<span style="color: #808030; ">)</span>; <span style="font-weight: bold; ">var</span> doc <span style="color: #808030; ">=</span> iframe<span style="color: #808030; ">.</span>contentWindow<span style="color: #808030; ">.</span>document; doc<span style="color: #808030; ">.</span>open<span style="color: #808030; ">(</span><span style="color: #808030; ">)</span><span style="color: #808030; ">.</span>write<span style="color: #808030; ">(</span>'<body onload="insertJS()">'<span style="color: #808030; ">)</span>; doc<span style="color: #808030; ">.</span>close<span style="color: #808030; ">(</span><span style="color: #808030; ">)</span>; </pre></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><strong>GMail Mobile</strong>åQšé¡µå†?js 的内容被注释åQŒæ‰€ä»¥ä¸ä¼šæ‰§è¡Œï¼Œç„¶åŽåœ¨éœ€è¦çš„æ—¶å€™ï¼ŒèŽ·å–script元素ä¸?text 内容åQŒåŽ»æŽ‰æ³¨é‡ŠåŽ eval 执行ã€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><pre style="white-space: pre-wrap; word-wrap: break-word; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: #000000; "><span style="color: #808030; "><</span>script type<span style="color: #808030; ">=</span>"text/javascript"<span style="color: #808030; ">></span> <span style="color: #696969; ">/* </span> <span style="color: #696969; ">var ... </span> <span style="color: #696969; ">*/</span> <span style="color: #808030; "><</span><span style="color: #808030; ">/</span>script<span style="color: #808030; ">></span> </pre></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; ">详见参考资料中2010òq´çš„Velocity 大会 Steve Souders 和淘宝的那两个讲义ã€?/div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "></div><div style="color: #362e2b; font-family: Arial; line-height: 25px; text-align: left; background-color: #ffffff; "><div></div><div><strong>二、async å’?defer 属æ€?/strong></div><div><strong>1. defer 属æ€?/strong></div><div><pre style="white-space: pre-wrap; word-wrap: break-word; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: #000000; "><span style="color: #808030; "><</span>script src<span style="color: #808030; ">=</span>"file.js" defer<span style="color: #808030; ">></span><span style="color: #808030; "><</span><span style="color: #808030; ">/</span>script<span style="color: #808030; ">></span> </pre></div><div>defer属性声明这个脚本中ž®†ä¸ä¼šæœ‰ document.write æˆ?dom 修改ã€?/div><div>‹¹è§ˆå™¨å°†ä¼šåƈ行下è½?file.js 和其它有 defer 属性的scriptåQŒè€Œä¸ä¼šé˜»å¡žé¡µé¢åŽ¾l­å¤„理ã€?/div><div></div><div>defer属性在IE 4.0中就实现了,­‘…过13òq´äº†åQFirefox ä»?3.5 开始支持defer属æ€?ã€?/div><div>注:所有的defer 脚本保证æ˜?strong>按顺序依‹Æ¡æ‰§è¡?/strong>çš„ã€?/div><div></div><div></div><div><strong>2. async 属æ€?/strong></div><div><pre style="white-space: pre-wrap; word-wrap: break-word; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: #000000; "><span style="color: #808030; "><</span>script src<span style="color: #808030; ">=</span>"file.js" async<span style="color: #808030; ">></span><span style="color: #808030; "><</span><span style="color: #808030; ">/</span>script<span style="color: #808030; ">></span> </pre></div><div>async属性是HTML5新增的。作用和defer¾cÖM¼¼åQŒä½†æ˜¯å®ƒž®†åœ¨ä¸‹è²åŽå°½å¿«æ‰§è¡Œï¼Œ<strong>不能保证脚本会按™åºåºæ‰§è¡Œ</strong>。它们将在onload 事äšg之前完成ã€?/div><div>Firefox 3.6、Opera 10.5、IE 9 å’?最新的Chrome å’?Safari 都支æŒ?async 属性。可以同时ä‹Éç”?async å’?deferåQŒè¿™æ ·IE 4之后的所æœ?IE 都支持异步加载ã€?/div><div></div><div><strong>3. 详细解释</strong></div><div><div></div><div><strong><script> 标签åœ?HTML 4.01 ä¸?HTML5 的区别:</strong></div><div><ul><li>type 属性在HTML 4中是必须的,在HTML5中是可选的ã€?/li><li>async 属性是HTML5中新增的ã€?/li><li>个别属性(xml:spaceåQ‰åœ¨HTML5中不支持ã€?/li></ul></div></div><div></div><div><strong>说明åQ?/strong></div><div><ol><li>没有 async 属性,script ž®†ç«‹åŒ™Ž·å–(下蝲åQ‰åƈ执行åQŒç„¶åŽæ‰¾l§ç®‹åŽé¢çš„处理,˜q™æœŸé—´é˜»å¡žäº†‹¹è§ˆå™¨çš„后箋处理ã€?/li><li>如果æœ?async 属性,那么 script ž®†è¢«å¼‚步下蝲òq¶æ‰§è¡Œï¼ŒåŒæ—¶‹¹è§ˆå™¨ç‘ô¾l­åŽ¾l­çš„处理ã€?/li><li>HTML4中就有了defer属性,它提½Cºæµè§ˆå™¨˜q™ä¸ª script 不会产生ä»ÖM½•文档元素åQˆæ²¡æœ‰document.writeåQ‰ï¼Œå› æ­¤‹¹è§ˆå™¨ä¼š¾l§ç®‹åŽç®‹å¤„理和渲染ã€?/li><li>如果没有 async 属æ€?但是æœ?defer 属性,那么script ž®†åœ¨™åµé¢parse之后执行ã€?/li><li>如果同时讄¡½®äº†äºŒè€…,那么 defer 属性主要是ä¸ÞZº†è®©ä¸æ”¯æŒ async 属性的老浏览器按照原来çš?defer 方式处理åQŒè€Œä¸æ˜¯åŒæ­¥æ–¹å¼ã€?/li></ol></div><div></div><div>另参见官方说明:<a rel="nofollow" target="_blank" style="color: #6a3906; text-decoration: none; ">script async</a></div><div></div><div>个äh补充åQ?/div><div>既然 HTML5 中已¾læ”¯æŒå¼‚步加载,ä¸ÞZ»€ä¹ˆè¿˜è¦ä‹É用前面推荐的那种éºÈƒ¦åQˆåŠ¨æ€åˆ›å»?script 元素åQ‰çš„æ–¹å¼åQ?/div><div>½{”:ä¸ÞZº†å…¼å®¹ž®šä¸æ”¯æŒ async 老浏览器。如果将来所有浏览器都支持了åQŒé‚£ä¹ˆç›´æŽ¥åœ¨script中加上async 属性是最½Ž€å•的方式ã€?/div><div></div><div></div><div><strong>三、åšg˜qŸåŠ è½½ï¼ˆlazy loadingåQ?/strong></div><div></div><div><div>前面解决了异步加载(async loadingåQ‰é—®é¢˜ï¼Œå†è°ˆè°ˆä»€ä¹ˆæ˜¯å»¶è¿ŸåŠ è²ã€?/div><div>延迟加蝲åQšæœ‰äº?js 代码òq¶ä¸æ˜¯é¡µé¢åˆå§‹åŒ–的时候就立刻需要的åQŒè€Œç¨åŽçš„æŸäº›æƒ…况才需要的。åšg˜qŸåŠ è½½å°±æ˜¯ä¸€å¼€å§‹åÆˆä¸åŠ è½½è¿™äº›æš‚æ—¶ä¸ç”¨çš„jsåQŒè€Œæ˜¯åœ¨éœ€è¦çš„æ—¶å€™æˆ–½EåŽå†é€šè¿‡js 的控制来异步加蝲ã€?/div></div><div></div><div>也就是将 js 切分成许多模块,™åµé¢åˆå§‹åŒ–时只加载需要立åÏx‰§è¡Œçš„ js åQŒç„¶åŽå…¶å®?js 的加载åšg˜qŸåˆ°½W¬ä¸€‹Æ¡éœ€è¦ç”¨åˆ°çš„æ—¶å€™å†åŠ è²ã€?/div><div>特别是页面有大量不同的模块组成,很多可能暂时不用或根本就没用到ã€?/div><div>ž®±åƒå›„¡‰‡çš„åšg˜qŸåŠ è½½ï¼Œåœ¨å›¾ç‰‡å‡ºçŽ°åœ¨å¯è§†åŒºåŸŸå†…æ—¶åQˆåœ¨æ»šåŠ¨æ¡ä¸‹æ‹‰ï¼‰æ‰åŠ è½½æ˜¾½Cºå›¾ç‰‡ã€?/div><div></div><div></div><div><div><strong>四、script 的两阶段加蝲 ä¸?延迟执行åQˆlazy executionåQ?/strong></div><div><div>JS的加载其实是ç”׃¸¤é˜¶æ®µ¾l„成åQšä¸‹è½½å†…容(download bytesåQ‰å’Œæ‰§è¡ŒåQˆparse and executeåQ‰ã€?/div><div><strong>‹¹è§ˆå™¨åœ¨ä¸‹è²å®?js 的内容后ž®×ƒ¼šç«‹å³å¯¹å…¶è§£æžå’Œæ‰§è¡Œï¼Œä¸ç®¡æ˜¯åŒæ­¥åŠ è½½è¿˜æ˜¯å¼‚æ­¥åŠ è½½ã€?/strong></div><div></div><div>前面说的异步加蝲åQŒè§£å†³çš„只是下蝲阶段的问题,但代码在下蝲后会立即执行ã€?/div><div>而浏览器在解析执è¡?JS 阶段是阻塞ä“Q何操作的åQŒè¿™æ—¶çš„‹¹è§ˆå™¨å¤„于无响应状态ã€?/div><div></div><div><div>æˆ?们都知道通过¾|‘络下蝲 script  需要明昄¡š„æ—‰™—´åQŒä½†å®ÒŽ˜“忽略了第二阶ŒDµï¼Œè§£æžå’Œæ‰§è¡Œä¹Ÿæ˜¯éœ€è¦æ—¶é—´çš„。script的解析和执行所èŠÞqš„æ—‰™—´æ¯”我们想象的要多åQŒå°¤å…¶æ˜¯script  很多很大的时候。有些是需要立åˆÀL‰§è¡Œï¼Œè€Œæœ‰äº›åˆ™ä¸éœ€è¦ï¼ˆæ¯”如只是在展½CºæŸä¸ªç•Œé¢æˆ–执行某个操作时才需要)ã€?/div><div>˜q™äº›script 可以延迟执行åQŒå…ˆå¼‚步下蝲¾~“å­˜èµäh¥åQŒä½†ä¸ç«‹åÏx‰§è¡Œï¼Œè€Œæ˜¯åœ¨ç¬¬ä¸€‹Æ¡éœ€è¦çš„æ—¶å€™æ‰§è¡Œä¸€‹Æ¡ã€?/div><div></div><div>利用ç‰ÒŽ®Šçš„æŠ€å·§å¯ä»¥åšåˆ?下蝲 ä¸?执行的分¼›?(再次感谢 javascript 的动态特æ€?。比如将 JS 的内容作ä¸?Imageæˆ?object 对象加蝲¾~“å­˜èµäh¥åQŒæ‰€ä»¥å°±ä¸ä¼šç«‹å³æ‰§è¡Œäº†ï¼Œç„¶åŽåœ¨ç¬¬ä¸€‹Æ¡éœ€è¦çš„æ—¶å€™å†æ‰§è¡Œã€?/div><div></div><div>此部分的更多解释 è¯ähŸ¥çœ‹æœ«ž®‘֏‚考资料中 ControlJS 的相关链接ã€?/div></div></div><div></div><div><strong>ž®æŠ€å·§ï¼š</strong></div><div>1. <strong>模拟较长的下载时é—?/strong>åQ?/div><div>写个后端脚本åQŒè®©å…?sleep 一定时间。如åœ?jsp ä¸?Thread.sleep(5000); åQŒè¿™æ ?¿U’后才能收到内容ã€?/div><div></div><div>2. <strong>模拟较长çš?js 代码执行旉™—´</strong>åQˆå› ä¸ø™¿™æ­¥ä¸€èˆ¬æ¯”较快不容易观察到åQ‰ï¼š</div><div><div>var t_start = Number(new Date());</div><div>while ( t_start + 5000 > Number(new Date()) ) {}</div></div><div>˜q™ä¸ªä»£ç ž®†ä‹É js 执行5¿U’才能完成!</div><div></div></div><div></div><div><strong>五、script 标签使用的历å?/strong></div><div><strong><br /></strong></div><div><strong>1. script 攑֜¨ HEAD ä¸?/strong></div><div><pre style="white-space: pre-wrap; word-wrap: break-word; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: #000000; "><<span style="font-weight: bold; ">head</span>> <<span style="font-weight: bold; ">script src=“…”</span>></<span style="font-weight: bold; ">script</span>> </<span style="font-weight: bold; ">head</span>> </pre><pre style="white-space: pre-wrap; word-wrap: break-word; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: #000000; "><ul><li><span style="font-family: Arial, Helvetica, sans-serif; white-space: normal; ">é˜ÀL­¢äº†åŽ¾l­çš„下蝲åQ?/span></li><li><span style="font-family: Arial, Helvetica, sans-serif; white-space: normal; ">在IE 6-7 ä¸?script 是顺序下载的åQŒè€Œä¸æ˜¯çŽ°åœ¨çš„ “òq¶è¡Œä¸‹è²ã€é¡ºåºæ‰§è¡?#8221; 的方式;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif; white-space: normal; ">在下è½?strong>å’?/strong>解析执行阶段é˜ÀL­¢æ¸²æŸ“åQˆrenderingåQ‰ï¼›</span></li></ul></pre></div><div></div><div><strong>2. script 攑֜¨™åµé¢åº•部åQ?007åQ?/strong></div><div><pre style="white-space: pre-wrap; word-wrap: break-word; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: #000000; ">... <<span style="font-weight: bold; ">script src=“…”</span>></<span style="font-weight: bold; ">script</span>> </<span style="font-weight: bold; ">body</span>> </pre><ul><li>不阻止其它下载;</li><li>在IE 6-7 ä¸?script 是顺序下载的åQ?/li><li>在下è½?strong>å’?/strong>解析执行阶段é˜ÀL­¢æ¸²æŸ“åQˆrenderingåQ‰ï¼›</li></ul></div><div></div><div></div><div><strong>3. 异步加蝲scriptåQ?009åQ?/strong></div><div><pre style="white-space: pre-wrap; word-wrap: break-word; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: #000000; "><span style="font-weight: bold; ">var</span> se <span style="color: #808030; ">=</span> document<span style="color: #808030; ">.</span>createElement <span style="color: #808030; ">(</span>'script'<span style="color: #808030; ">)</span>; se<span style="color: #808030; ">.</span>src <span style="color: #808030; ">=</span> 'http://anydomain.com/A.js'; document<span style="color: #808030; ">.</span>getElementsByTagName<span style="color: #808030; ">(</span>'head'<span style="color: #808030; ">)</span> <span style="color: #808030; ">[</span>0<span style="color: #808030; ">]</span><span style="color: #808030; ">.</span>appendChild<span style="color: #808030; ">(</span>se<span style="color: #808030; ">)</span>; </pre></div><div>˜q™å°±æ˜¯æœ¬æ–‡ä¸»è¦è¯´çš„æ–¹å¼ã€?/div><div><ul><li>不阻止其它下载;</li><li>在所有浏览器中,script都是òq¶è¡Œä¸‹è²åQ?/li><li><strong>只在</strong>解析执行阶段é˜ÀL­¢æ¸²æŸ“åQˆrenderingåQ‰ï¼›</li></ul></div><div></div><div><strong>4. 异步下蝲 + 按需执行 (2010)</strong></div><div><pre style="white-space: pre-wrap; word-wrap: break-word; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; color: #000000; "><span style="font-weight: bold; ">var</span> se <span style="color: #808030; ">=</span> <span style="font-weight: bold; ">new</span> <span style="color: #797997; ">Image</span><span style="color: #808030; ">(</span><span style="color: #808030; ">)</span>; se<span style="color: #808030; ">.</span>onload <span style="color: #808030; ">=</span> registerScript<span style="color: #808030; ">(</span><span style="color: #808030; ">)</span>; se<span style="color: #808030; ">.</span>src <span style="color: #808030; ">=</span> 'http://anydomain.com/A.js'; <span style="line-height: 20px; ">把下è½?js ä¸?解析执行 js 分离出来</span></pre></div><div><ul><li>不阻止其它下载;</li><li>在所有浏览器中,script都是òq¶è¡Œä¸‹è²åQ?/li><li><strong>不阻æ­?/strong>渲染åQˆrenderingåQ‰ç›´åˆ°çœŸæ­£éœ€è¦æ—¶åQ?/li></ul></div><div></div><div></div><div><strong>六、异步加载的问题</strong></div><div>在异步加载的时候,无法使用 document.write 输出文档内容ã€?/div><div>在同步模式下åQŒdocument.write 是在<strong>当前 script 所在的位置</strong>è¾?出文档的。而在异步模式下,‹¹è§ˆå™¨ç‘ô¾l­å¤„理后¾l­é¡µé¢å†…容,æ ÒŽœ¬æ— æ³•¼‹®å®š document.write  应该输出åˆîC»€ä¹ˆä½¾|®ï¼Œæ‰€ä»¥å¼‚步模式下 document.write 不可行。而到了页面已¾l?onload  之后åQŒå†æ‰§è¡Œ document.write ž®†å¯¼è‡´å½“前页面的内容被清½Iºï¼Œå› äؓ它会自动触发 document.open æ–ÒŽ³•ã€?/div><div></div><div>实际上document.writeçš„åå£°åÆˆä¸å¥½åQŒæœ€å¥½å°‘用ã€?/div><div></div><div><div>替代æ–ÒŽ³•åQ?/div><div>1. 虽然异步加蝲不能ç”?document.writeåQŒä½†˜q˜æ˜¯å¯ä»¥onload之后执行操作domåQˆåˆ›å»ºdom或修改domåQ‰çš„åQŒè¿™æ ·å¯ä»¥å®žçŽîC¸€äº›è‡ªå·Þqš„动态输出。比如要在页面异步创å»ÞZ¸€ä¸ªæÕQ动元素,<strong>˜q™å’Œå®ƒåœ¨™åµé¢ä¸­çš„位置ž®±æ²¡å…³ç³»äº?/strong>åQŒåªè¦åˆ›å»ºå‡ºè¯¥dom元素æ·ÕdŠ åˆ?document 中即可ã€?/div></div><div>2. 如果需要在<strong>固定位置</strong>异步生成元素的内容,那么可以在该固定位置讄¡½®ä¸€ä¸ªdomå…ƒç´ ä½œäØ“ç›®æ ‡åQŒè¿™æ ·å°±çŸ¥é“位置了,异步加蝲之后ž®±å¯ä»¥å¯¹˜q™ä¸ªå…ƒç´ ˜q›è¡Œä¿®æ”¹ã€?/div><div></div><div></div><div></div><div><strong>六、JS 模块化管ç?/strong></div><div>异步加蝲åQŒéœ€è¦å°†æ‰€æœ?js 内容按模块化的方式来切分¾l„织åQŒå…¶ä¸­å°±å­˜åœ¨ä¾èµ–关系åQŒè€Œå¼‚步加载不保证执行™åºåºã€?/div><div>另外åQŒnamespace 如何½Ž¡ç† ½{‰ç›¸å…³é—®é¢˜ã€‚这部分已超出本文内容,可参考:</div><div><a rel="nofollow" target="_blank" style="color: #6a3906; text-decoration: none; ">RequireJS</a> ã€?nbsp;<a rel="nofollow" target="_blank" style="color: #6a3906; text-decoration: none; ">CommonJS</a> ä»¥åŠ 王保òq?淘宝)çš?nbsp;<a rel="nofollow" target="_blank" style="color: #6a3906; text-decoration: none; ">SeaJS</a> åŠå…¶<a rel="nofollow" target="_blank" style="color: #6a3906; text-decoration: none; ">博客</a> ã€?/div><div></div><div><strong>七、JS最佛_®žè·µï¼š</strong></div><div>1. 最ž®åŒ– js æ–‡äšgåQŒåˆ©ç”¨åŽ‹¾~©å·¥å…·å°†å…¶æœ€ž®åŒ–åQŒåŒæ—¶å¼€å¯http gzipåŽ‹ç¾ƒã€‚å·¥å…øP¼š</div><div>2. ž®½é‡ä¸è¦æ”‘Öœ¨ <head> 中,ž®½é‡æ”‘Öœ¨™åµé¢åº•部åQŒæœ€å¥½æ˜¯</body>之前的位¾|?/div><div>3. 避免使用 document.write æ–ÒŽ³•</div><div>4. 异步加蝲 js åQŒä‹É用非é˜Õd¡žæ–¹å¼åQŒå°±æ˜¯æ­¤æ–‡å†…宏V€?/div><div>5. ž®½é‡ä¸ç›´æŽ¥åœ¨™åµé¢å…ƒç´ ä¸Šä‹Éç”?Inline JavascriptåQŒå¦‚onClick 。有利于¾lŸä¸€¾l´æŠ¤å’Œç¼“存处理ã€?/div></div><br /><img src ="http://www.aygfsteel.com/hongqiang/aggbug/384555.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hongqiang/" target="_blank">å¼ æ…§</a> 2012-08-01 21:50 <a href="http://www.aygfsteel.com/hongqiang/archive/2012/08/01/384555.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用è°äh­Œjquery库文件的理由http://www.aygfsteel.com/hongqiang/archive/2012/08/01/384553.htmlå¼ æ…§å¼ æ…§Wed, 01 Aug 2012 13:43:00 GMThttp://www.aygfsteel.com/hongqiang/archive/2012/08/01/384553.htmlhttp://www.aygfsteel.com/hongqiang/comments/384553.htmlhttp://www.aygfsteel.com/hongqiang/archive/2012/08/01/384553.html#Feedback1http://www.aygfsteel.com/hongqiang/comments/commentRss/384553.htmlhttp://www.aygfsteel.com/hongqiang/services/trackbacks/384553.html使用è°äh­Œjquery库文件的理由
最˜q‘前端开å?/a>看到åQŒé‚£äº›å¼•用jquery的文仉™‚£äº›ç½‘站,好多是ä‹É用谷歌的库;像这æ ïLš„<script type=”text/javascript”src=”http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js“></script>(最˜q‘发展到1.7.1版本的,好神速呐åQŒå‰ä¸¤å¤©˜q˜çœ‹åˆîC¸€å“¥ä»¬ç”¨çš„1.2.6感慨啊。。。ã€?
像上面这样加载jquery通过è°äh­Œçš„CDN-Content Delivery NetworkåQˆå†…容分发网¾lœï¼‰æ¥è®©ä½ çš„¾|‘站加蝲jquery库文件。有的同学可能会问了åQŒäؓ什么要加蝲è°äh­Œçš„jquery库文件呢åQŸï¼ˆPSåQšæˆ‘ä»¬ä¸€èˆ¬ä¸ 都是加蝲自己服务器上的jquery库文件的吗?åQ‰ã€‚呵呵~~之前也和大家一æ ähƒ³çš„,也一直都是加载自å·Þqš„æœåŠ¡å™¨ä¸Šçš„jqueryæ–‡äšgã€?/span>
下面我来和大家说è¯ß_¼Œä½¿ç”¨è°äh­ŒåŠ è²jquery库文件的好处ã€?/span>
1åQŒå¢žåŠ ç½‘™å늚„同时载入速度
ä¸ÞZº†é¿å…æœåŠ¡çš„è¿‡è½½ï¼Œ‹¹è§ˆå™¨é™åˆ¶äº†åŒæ—¶˜qžæŽ¥çš„æ•°ç›®ï¼Œä¾æ®ä¸åŒçš„æµè§ˆå™¨åQŒè¿™ä¸ªé™åˆ¶å¯èƒ½æ˜¯æ¯ä¸ªæœºæˆ¿ä»…仅两个之少ã€?/span>
使用è°äh­Œçš„AJAX内容服务¾|‘络来响应你的网站,使你本地服务器上更多服务可以同时˜q›è¡Œã€?/span>
2åQŒå‡ž®‘等待时é—?/span>
大家应该也差不多åQŒåœ¨æ„Ÿæ…¨jquery的强大,也在感慨jquery的团队也是如此之强大åQŒå‘µå‘µ~现在最新的jquery已经出到1.7.1版本了呢åQŒä½†æ˜¯è®©äººå¾ˆä¸çˆ½çš„æ˜¯å³ä‹É是mini压羃˜q‡åŽçš„代码都æœ?3.2KB。但是不知道大家有没有去官方首页看过ã€?/span>
CDN-Content Delivery NetworkåQˆå†…容分发网¾lœï¼‰çš„羃写,通过各种各样的服务途径把你的一些静态内容分散开来,当用æˆïLš„‹¹è§ˆå™¨æäº¤è¿™äº›æ–‡ä»¶çš„链接è¯äh±‚åQŒä»–们便会自动下载网¾lœä¸Šæœ€˜q‘的可用的文件ã€?/span>
因䨓˜q™ä¸ªåŽŸå› åQšä“Q何ä‹É用你的服务的用户从谷歌下载JQuery库都ž®†èŽ·å¾—æ¯”ä»Žä½ è‡ªå·±çš„æœåŠ¡å™¨ä¸Šä¸‹è½½æ›´å¿«çš„é€Ÿåº¦ã€‚å…¶å®žæœ‰å¾ˆå¤šçš„CDN服务可与è°äh­Œçš„相比拟åQŒä½†æ˜¯ä»–们很难超­‘Šè°·æ­Œçš„免费服务的优势,˜q™ä¸ªç›Šå¤„­‘³ä»¥å†›_®šé—®é¢˜åQŒä½†˜q™ä»…仅是一部分ã€?/span>
3åQŒæ›´å¥½çš„¾~“å­˜
利用è°äh­ŒAJAX图书馆内容发布服务的最大好处是你的用户æ ÒŽœ¬ä¸éœ€è¦ä¸‹è½½jQuery. 不论你的¾~“存多么强大åQŒå¦‚果你用自å·Þqš„æœåŠ¡å™¨æä¾›jQueryåQŒé‚£ä¹ˆä½ çš„用戯‚‡³ž®‘要下蝲一‹Æ¡å®ƒåQŒæŸä¸ªç”¨æˆ·å¾ˆæœ‰å¯èƒ½åœ¨ä»–们‹¹è§ˆå™¨çš„¾~“存区里下蝲了许多完全相 同的jQuery.min.js的拷贝版本,但是当他们第一‹Æ¡è®¿é—®ä½ çš„网站的时候,˜q™äº›æ‹¯‚´ç‰ˆæœ¬ä¼šè¢«å¿½ç•¥ã€?/span>
另一斚w¢åQŒå½“‹¹è§ˆå™¨æ£€‹¹‹åˆ°åŒæ ·ç‰ˆæœ¬çš„æŒ‡å‘谷歌的链接åQŒå®ƒž®×ƒ¼šçŸ¥é“˜q™æ˜¯ä¸‹è²åŒä¸€ä¸ªæ–‡ä»Óž¼Œä¸ä»…是谷歌的服务器会˜q”回一ä¸?04åQˆä¸éœ€è¦ä¿®æ”ÒŽ–‡ä»¶çš„æŒ‡ä×oåQŒå³æœåŠ¡å™¨ä¸Šçš„æ–‡ä»¶æœªæ”¹åŠ¨˜q‡ï¼‰æ¥å›žå¤ä¸€ä¸ªé‡å¤çš„è¯äh±‚åQŒè€Œä¸”会命令浏览器的缓存该文äšg长达一òq´çš„æ—‰™—´ã€‚http://www.jqueryba.com/14.html
˜q™æ„å‘³ç€å³ä‹É一些äh讉K—®äº†æ•°ç™„¡š„使用è°äh­ŒæœåŠ¡çš„jQuery¾|‘ç«™,他们只需要下载一‹Æ¡å°±å¤Ÿäº†ã€?/span>
不过好像最˜q‘天朝对è°äh­Œçš„东西有点反感呀åQŒå°±åƒä»¥å‰è°·æ­Œç”Ÿæ°”å‡ºèµ°é¦™æ¸¯ä¸€æ øP¼Œæœ‰çš„æ—¶å€™è°·æ­Œçš„东西会打不开åQŒé‚£ä¹ˆä¼šä¸ä¼šæœ‰ä¸€å¤©ä‹É用这¿Uæ–¹å¼åŠ è½½jquery库文件也会失败呢åQŸå‘µå‘µ~~万事皆有可能åQŒå‘µå‘µ~不要紧,此处有一个万全的æ–ÒŽ³•åQ?/span>
 <script type=text/javascript src=”http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js”></script>
<script>!window.jQuery && document.write(‘<script src=”jquery-1.7.1.min.js”><\/script >’);</script>
ž®†ä¸Šé¢çš„代码攑ֈ°ä½ çš„html代码的头部。意义是˜q™æ ·çš„:首先åŽÕdŠ è½½è°·æ­Œçš„jquery库文ä»Óž¼Œå¦‚果没有加蝲成功的话åQŒé‚£ä¹ˆå°±åªå¥½åŠ è²è‡ªå·±æœåŠ¡å™¨ä¸Šçš„jquery库文件咯ã€?/span>

]]>
张慧 2012-08-01 21:43 发表评论
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÒÁ½ð»ôÂåÆì| ÑγÇÊÐ| Ïç³ÇÏØ| ¿üÍÍÊÐ| ÒË´ºÊÐ| ºÓÄÏÊ¡| ÇൺÊÐ| ºÍÁúÊÐ| Îå³£ÊÐ| ºôºÍºÆÌØÊÐ| ÓÈÏªÏØ| Ëɽ­Çø| ÙðÖÝÊÐ| ²ý¼ªÊÐ| ³à±ÚÊÐ| ºâÄÏÏØ| È«½·ÏØ| Ì«¹ÈÏØ| ²ý¶¼ÏØ| ÕýÄþÏØ| ʦ×ÚÏØ| Í­É½ÏØ| ÐûººÏØ| ¶õÂ×´º×ÔÖÎÆì| ¶«¸ÛÊÐ| »ªÝöÊÐ| ͨ»¯ÊÐ| ·ï¸ÔÏØ| Î÷³ÇÇø| èÈÑôÏØ| ÓݳÇÏØ| ×óÈ¨ÏØ| ÐË»¯ÊÐ| Î÷»ªÏØ| ÑôÐÂÏØ| »ÆÊ¯ÊÐ| Îè¸ÖÊÐ| »ÝÖÝÊÐ| ÊÙÄþÏØ| ͨÖÝÊÐ| »³ÈÊÏØ|