HTML5¼¼Êõ

ÍòÄܵÄÁÖÏô˵£ºÎÒÀ´¸æËßÄ㣬һ¸ö²Ý¸ù³ÌÐòÔ±ÈçºÎ½øÈëBAT¡£ - ×óäìÁú(2)

×ÖºÅ+ ×÷ÕߣºH5Ö®¼Ò À´Ô´£ºH5Ö®¼Ò 2016-10-31 16:00 ÎÒÒªÆÀÂÛ( )

Ö»ÓаÑÕâЩ¸ÅÄ¸ãÃ÷°×ÁË£¬Äã²Å»áÖªµÀvolatileµÄÕæÕý×÷Óõ½µ×ÊÇʲô¡£²»¹ýÓÐÒ»µãÒªÌáÐÑÄãµÄÊÇ£¬volatile²¢²»±£Ö¤Í¬²½£¬ÕâÒ»µãÒ»¶¨Òª¼Ç× £²»¹âÊÇÓ¦¸¶ÃæÊÔ¹Ù£¬ÔÚÕæÕýʹÓÃvolatileµÄʱºò£¬Ò²Òª×¢ÒâÕâÒ»µã£¬·ñÔòºÜÈÝÒ×

¡¡¡¡Ö»ÓаÑÕâЩ¸ÅÄ¸ãÃ÷°×ÁË£¬Äã²Å»áÖªµÀvolatileµÄÕæÕý×÷Óõ½µ×ÊÇʲô¡£²»¹ýÓÐÒ»µãÒªÌáÐÑÄãµÄÊÇ£¬volatile²¢²»±£Ö¤Í¬²½£¬ÕâÒ»µãÒ»¶¨Òª¼Çס¡£²»¹âÊÇÓ¦¸¶ÃæÊÔ¹Ù£¬ÔÚÕæÕýʹÓÃvolatileµÄʱºò£¬Ò²Òª×¢ÒâÕâÒ»µã£¬·ñÔòºÜÈÝÒ׳öÏÖÎÊÌâ¡£

¡¡¡¡ºÃÁË£¬»ù´¡²¿·Ö¾Í˵Õâô¶à°É£¬LZÌôÁËһЩÓдú±íÐÔµÄ˵ÁËÏ£¬¹é¸ù½áµ×£¬ÕâÒ»²¿·Ö¾ÍÊÇÒªÄã·Ç³£ÇåÎúµÄÁ˽âJavaµ±ÖеĹؼü×ÖºÍÓï·¨£¬ÕâÀïËùνµÄÁ˽⣬ÊÇÇåÎúµÄÁ˽âÆäʵÏÖÔ­Àí£¬¶ø·Ç¼òµ¥µÄ»áÓöøÒÑ¡£

¡¡¡¡

¡¡¡¡2£©JavaÔËÐÐʱ»·¾³

¡¡¡¡JavaÔËÐÐʱ»·¾³¾ÍÊÇJREµÄÖÐÎÄ·­Ò룬±¾ÖÊÉÏÆäʵ¾ÍÊÇÖ¸JVM¡£

¡¡¡¡Ê×ÏȶÔÓÚJVM±ØÐëÒªÖªµÀµÄÊÇ£¬JVMÓëHotspotµÄ¹Øϵ¡£JVM¸ü¶àµÄÊÇÖ¸JVM¹æ·¶£¬¶øHotspotÊÇJVMµÄÒ»ÖÖʵÏÖ£¬Ò²ÊÇÎÒÃÇ×î³£ÓõÄJVMʵÏÖ¡£Äã¿ÉÒÔ°ÑJVM¹æ·¶µ±×ö½Ó¿Ú£¬Hotspotµ±×öʵÏÖÀ࣬ÕâÑùÈ¥Àí½â»á±È½Ï¼òµ¥Ò»Ð©¡£

¡¡¡¡´ËÍ⣬JVM×îÖØÒªµÄÈý¸ö²¿·Ö±ØÐëÒª·Ç³£Çå³þ£¬ÄÚ´æ»®·Ö¡¢class¼ÓÔØ»úÖÆÒÔ¼°GC²ßÂÔ¡£¸ãÇå³þÕâÈý²¿·Ö²»½ö½öÊÇΪÁËÃæÊÔ£¬Ò²ÊÇΪÁËÈÃÄã¶ÔÓÚJavaÓиüÉî¿ÌµÄÀí½â£¬Õâ¶ÔÓÚÄãµÄJavaÉúÑķdz£ÓаïÖú¡£

¡¡¡¡¶øÇÒ£¬¹ØÓÚÄÚ´æ»®·Ö£¬»¹ÓÐÒ»µãҪעÒ⣬ÔÛÃdz£ËµµÄ»®·Ö·½Ê½£¬ÆäʵÊÇÖ¸µÄHotspotµÄ»®·Ö·½Ê½£¬¶ø·ÇJVM¹æ·¶Ëù¹æ¶¨µÄ¡£

¡¡¡¡HotspotµÄÄÚ´æ»®·Ö¼òµ¥Ëµ·ÖΪÈý¸ö²¿·Ö£¬Young Generation£¨ÄêÇá´ú£©¡¢Old Generation£¨ÄêÀÏ´ú£©ÒÔ¼°Perm Generation£¨ÓÀ¾Ã´ú£©¡£ÆäÖеÄYoung Generation£¨ÄêÇá´ú£©£¬ÓÖ·ÖΪEden¡¢FromºÍTo£¬ÆäÖÐFromºÍToÓÖͳ³ÆΪSurvivor Spaces£¨ÐÒ´æÇø£©¡£

¡¡¡¡Õý³£Çé¿öÏ£¬Ò»¸ö¶ÔÏó´Ó´´½¨µ½Ïú»Ù£¬Ó¦¸ÃÊÇ´ÓEden£¬È»ºóµ½Survivor Spaces£¨ÐÒ´æÇø£©£¬ÔÙµ½Old Generation£¨ÄêÀÏ´ú£©£¬×îºóÔÚij´ÎGCÏÂÏûʧ¡£

¡¡¡¡µ±È»£¬Ò»¸ö¶ÔÏóÒ²¿ÉÄÜÖ±½ÓÔÚEdenÀïËÀµô£¬Ò²¿ÉÄÜÒ»Ö±ÔÚOld Generation£¨ÄêÀÏ´ú£©´æ»î£¬ÕâЩ¶¼ÊÇÓпÉÄܵġ£

¡¡¡¡¹ØÓÚÄÚ´æ»®·Ö£¬¿ÉÒÔ×Ô¼ºÃ»ÊÂÓÃÄÚ´æ·ÖÎö¹¤¾ß¿´¿´£¬±ÈÈçjmap¡¢jvisualvmµÈµÈ£¬¹Û²ìһϸ÷¸öÇøÓòµÄÄÚ´æ±ä»¯£¬½áºÏʵ¼ÊÈ¥Á˽âһϡ£

¡¡¡¡¹ØÓÚclassloader»úÖƵÄѧϰ£¬¿ÉÒÔ½áºÏtomcatȥѧϰ£¬Á˽âÇå³þtomcatµÄclassloader»úÖÆ£¬¿´tomcatÊÇÈçºÎ±£Ö¤¸÷¸öAPPÖ®¼äµÄÀà¸ôÀëµÄ¡£Èç¹û¿ÉÄܵĻ°£¬¿´Ò»ÏÂtomcatÖÐclassloaderµÄÔ´Â룬»òÕß¿´Ò»ÏÂLZµÄÒ»¸ö¿ªÔ´ÏîÄ¿niubi-job£¬µ±ÖÐÒ²°üº¬ÁËÓëtomcatÀà¼ÓÔØ»úÖÆÏàËƵIJ¿·Ö¡£

¡¡¡¡ÖÁÓÚGC£¬ÐèÒªÇå³þGC Roots¶¼ÓÐÄÄЩ£¬ÒÔ¼°ÈçºÎÅжÏÒ»¸ö¶ÔÏó¿ÉÒÔ±»»ØÊÕ¡£´ËÍ⣬GCµÄËã·¨ºÍ²ßÂÔÒ²ÒªÓдó¸ÅµÄÁ˽⣬¾ßÌåµÄ¿ÉÒԲμûLZ¹ØÓÚÕâһϵÁеÄÎÄÕ£¬µØַΪ¡£

¡¡¡¡

¡¡¡¡3£©²¢·¢ÖªÊ¶Óëconcurrent°ü

¡¡¡¡ÒªÏë½øÈëÒ»Ïß»¥ÁªÍø¹«Ë¾£¬Õⲿ·ÖÄÚÈݱØÐëÒª»á£¬·ñÔòµÄ»°£¬ÄãʼÖÕ¶¼Ö»ÄÜÍ£ÁôÔڱȽÏlowµÄ¶Îλ¡£

¡¡¡¡¹ØÓÚ²¢·¢ÖªÊ¶£¬×îÖØÒªµÄÁ½¸ö¸ÅÄîÒ»¶¨Òª¸ãÇå³þ£¬ÄǾÍÊǿɼûÐÔºÍÔ­×ÓÐÔ¡£ÆäÖпɼûÐÔÓëÇ°ÃæÌáµ½µÄvolatile¹Ø¼ü×ÖÊÇϢϢÏà¹ØµÄ£¬¿É¼ûÐÔÖ»ÊDz¢·¢ÁìÓòÀïµÄÒ»¸ö¸ÅÄ¶øvolatileÔòÊÇJavaÓïÑÔÖУ¬ÊµÊµÔÚÔÚ±£Ö¤±äÁ¿¿É¼ûÐԵĹؼü×Ö¡£

¡¡¡¡Ç°Ãæ˵ÁË£¬ÒªÅªÇå³þ¿É¼ûÐÔ£¬¾ÍÐèÒª¸ãÇå³þÖ÷´æºÍ¹¤×÷ÄÚ´æ¡£¹ØÓÚÖ÷´æºÍ¹¤×÷Äڴ棬ÆäʵÓÖÊôÓÚJVMµÄ֪ʶ·¶³ë¡£ËùÒÔ´ÓÕâÀï¾Í¿ÉÒÔ¿´³öÀ´£¬ÖªÊ¶¶¼ÊÇÓйØÁªÐԵġ£

¡¡¡¡Ô­×ÓÐÔÆäʵÏà¶ÔÓڿɼûÐÔÀ´Ëµ£¬·´µ¹¸üºÃÀí½âһЩ£¬ÏàÐÅÄǸöÍòÄê²»±äµÄÒøÐлã¿îµÄ¹ØÓÚÊÂÎñµÄÀý×Ó£¬¾Í×ãÒԴ󲿷ÖÈËÀí½âÔ­×ÓÐÔÕâ¸ö¸ÅÄîÁË£¬ËüÆäʵ¾ÍÊÇÒ»¸ö»ò¶à¸ö²Ù×÷£¬±»ÊÓ×÷Ò»¸öÕûÌåµÄÒâ˼¡£

¡¡¡¡ÓÐÁ˲¢·¢µÄ»ù´¡ÖªÊ¶ÒÔºó£¬Äã¾ÍÐèÒªÑо¿Ò»ÏÂconcurrent°üÁË¡£ÕâÀïÃæµÄ¶«Î÷ÆäʵÊÇÒ»¸ö±¦²Ø£¬Ò»µ©ÄãÐèҪд²¢·¢Ïà¹ØµÄ¹¦ÄÜ£¬Äã»á·¢ÏÖÕâÀïÃæµÄ¶«Î÷·Ç³£ÊµÓá£

¡¡¡¡ÆäÖÐConcurrentHashMapÊÇÃæÊÔ×îÈÝÒ×±»Îʵ½µÄÒ»¸öÀ࣬¼¸ºõËùÓеÄÃæÊÔ¶¼»áÎÊÄ㣬ConcurrentHashMapºÍÆÕͨµÄͬ²½HashMapÓÐʲôÇø±ð¡£

¡¡¡¡Õâ¸öÎÊÌâÆäʵÐèÒªÄãÖªµÀÁ½¸ö֪ʶ¾Í¿ÉÒÔÁË£¬Ò»¸öÊÇHashMapµÄÊý¾Ý½á¹¹£¬Ò»¸öÊÇËø·Ö¶ÎµÄ¼¼Êõ£¬¾ßÌåµÄLZÕâÀï¾Í²»½âÊÍÁË£¬´ó¼Ò×Ô¼ºÏÂÈ¥ÕÒÏà¹Ø×ÊÁÏ¿´°É¡£

¡¡¡¡´ËÍ⣬concurrent°üÀïÓÐÒ»¸ö·Ç³£ÖØÒªµÄÀ࣬½Ð×öAbstractQueuedSynchronizer£¬¼¸ºõËùÓеÄconcurrent°üÄڵIJ¢·¢¹¤¾ßÀ࣬¶¼ÊÇ»ùÓÚÕâ¸ö³éÏóÀàÀ©Õ¹³öÀ´µÄ¡£Òò´Ë£¬°ÑAbstractQueuedSynchronizerÕâ¸öÀàÑо¿Í¸³¹£¬·Ç³£ÓÐÖúÓÚÄãÀí½âconcurrent°ü¡£

¡¡¡¡×îºóÒ»µã£¬ÃæÊÔµÄʱºò»¹¾­³£»á±»Îʵ½µÄÒ»¸öÎÊÌ⣬¾ÍÊÇReentrantLockºÍsynchronized¹Ø¼ü×ÖÓÐʲôÇø±ð¡£

¡¡¡¡¼ÇµÃLZ֮ǰ×éÖ¯¹ýµÄYYÃæÊԻÀLZÎʹýºÜ¶à´ÎÕâ¸öÎÊÌ⣬µ«¼¸ºõËùÓÐÈ˶¼´ð²»³öÀ´¡£ÕâÖ»ÄÜ˵Ã÷Ò»¸öÎÊÌ⣬ÄǾÍÊǴ󲿷ÖÈËÔÚÓÃsynchronizedºÍReentrantLockµÄʱºò£¬²¢²»»á¿¼ÂÇÕâÁ½Õßµ½µ×ÓÃÄĸöºÃһЩ¡£

¡¡¡¡ÆäʵËüÃǵÄÇø±ðºÜ¼òµ¥£¬¼òµ¥µÄ˵£¬¾ÍÊÇsynchronizedÓÉÓÚÊǵײãJVMʵÏֵĻ¥³â£¬Òò´ËЧÂÊ»á¸ßһЩ¡£¶øReentrantLockµÄ¹¦ÄÜÔò±Èsynchronized¸ü¶à£¬±ÈÈ綨ʱ»ñȡij¸öËø£¬¶à¸öµÈ´ýÌõ¼þµÈ¡£

¡¡¡¡²¢·¢ÕâÒ»²¿·ÖÊÇÒ»¸ö³ÌÐòÔ±½ø½×µÄÖØÒª²¿·Ö£¬Ï£ÍûËùÓÐJava³ÌÐòÔ±¶¼¿ÉÒÔÖØÊÓÕâÒ»²¿·Ö¡£

¡¡¡¡

¡¡¡¡4£©Éè¼ÆģʽºÍ·´Éä

¡¡¡¡Éè¼ÆģʽºÍ·´ÉäÕⲿ·ÖÄÚÈÝ£¬LZ¸öÈ˾õµÃÊÇÒ»¸ö¸ß½×³ÌÐòÔ±±ØÐ뾫ͨµÄ²¿·Ö¡£

¡¡¡¡ÓúÃÁËÕⲿ·Ö֪ʶ£¬¿ÉÒÔÈÃÄãÔÚʵ¼Ê¿ª·¢ÖÐÉÙдN¶à´úÂ룬¶øÇÒ»¹¿ÉÒÔʹµÃ³ÌÐòµÄ½á¹¹¸ü¼ÓÁ¼ºÃ¡£

¡¡¡¡¹ØÓÚÉè¼ÆģʽLZÕâÀï¾Í²»¶à×ö½éÉÜÁË£¬¾ßÌåµÄ¿ÉÒÔ¿´LZµÄÉè¼ÆģʽϵÁÐÎÄÕ£¬µØÖ·ÊÇ¡£

¡¡¡¡¹ØÓÚ·´É䣬Æäʵ¾ÍÊÇreflect°üÀïµÄÄÚÈÝ£¬Õâ¸ö°üÀïµÄÀàÆäʵ²¢²»ÄÑ£¬Ö÷ÒªÊǵöàÓ㬶࿴¡£±ÈÈçJavaÁìÓòÀï×î³£ÓõÄspring¿ò¼Ü£¬ÀïÃæÆäʵ´óÁ¿³ä³â×ÅÉè¼ÆģʽºÍ·´ÉäµÄÕæʵʹÓó¡¾°£¬Ã»Ê¶àÑо¿Ò»Ï£¬¾ø¶ÔÈÃÄãÊÜÒæ·Ëdz¡£

¡¡¡¡

¡¡¡¡5£©ÎļþIO¡¢NIO¡¢ÍøÂçIOÒÔ¼°ÍøÂçЭÒé

¡¡¡¡ÎļþIO¡¢NIOÒÔ¼°ÍøÂçIOÕâÒ»²¿·ÖÒ²Êǹ¤×÷µ±ÖÐÒª¾­³£Óõ½µÄ²¿·Ö£¬Òò´ËÒ²±ØÐëÒªÕÆÎÕ¡£

¡¡¡¡ÆäÖÐNIO¸ü¶àµÄÊÇÁ˽âÆäÔ­Àí£¬´ËÍ⣬tomcatÖÐÓжàÖÖЭÒéµÄʵÏÖ£¬ÆäÖаüÀ¨ÁËBIO¡¢NIOºÍAPR£¬ÕâÈýÕßÒ»¶¨·Ç³£Çå³þËüÃǵÄÇø±ð£¬Õâ¸ö¿ÉÒÔÔÚconnectorµÄprotocolÊôÐÔÅäÖá£

¡¡¡¡ÖÁÓÚÍøÂçIO²¿·Ö£¬Æäʵ¾ÍÊÇnet°üÀïµÄÄÚÈÝ¡£ÕâÀïÃæµÄÄÚÈÝÊǷdz£³£ÓõĶ«Î÷£¬±ÈÈçÄãµ÷ÓÃHTTP-API£¬ÄÇô¾ÍÐèҪʹÓÃÕâÀïÃæµÄÀà¡£ÔÚÕâ¸örestful-API·ºÀĵÄʱ´ú£¬ÄãÉÙ²»ÁËҪʹÓÃHTTPЭÒéµ÷ÓÃAPI¡£

¡¡¡¡´ËÍ⣬ÔÚÁ˽âÕⲿ·ÖµÄʱºò£¬ÍøÂçЭÒéÒ²ÒªÊʵ±µÄÁ˽âһϣ¬×îµäÐ͵ÄTCPºÍHTTPЭÒéÊÇÒ»¶¨ÒªÁ˽âµÄ¡£

¡¡¡¡ÔÚLZ²Î¼ÓµÄÃæÊÔÖУ¬»ù±¾ÉÏTCPЭÒéÊÇÒ»¶¨»áÎʵģ¬ËäÈ»Õâ¿ÉÄܺÍLZµÄ¼òÀúдÁËTCPЭÒéÓйأ¬µ«±ÈÈçTCPЭÒéµÄÖØÊÔ»úÖÆ£¬Èý´ÎÎÕÊֵĹý³Ì£¬TCPÓëUDPµÄÇø±ðÕâÒ»ÀàµÄ֪ʶ£¬»¹ÊÇÒªÁ˽âһϵġ£

¡¡¡¡ÖÁÓÚHTTPЭÒ飬Ïà¶ÔÀ´Ëµ¾Í¼òµ¥ºÜ¶àÁË£¬Ó¦ÓòãµÄЭÒéÖ÷ÒªÊÇÖªµÀÆäЭÒé¸ñʽ¼´¿É£¬±ÈÈ綼֧³ÖÄÄЩheader¡¢Ã¿¸öheader¶¼ÊÇʲôº¬ÒåµÈµÈ¡£

¡¡¡¡

¡¡¡¡6£©Ð¡½á

¡¡¡¡ºÃÁË£¬µ½´ËΪֹ£¬»ù±¾ÒªÇó¾Í²î²»¶à½éÉÜÍêÁË¡£Ï¸ÐĵÄÔ³ÓÑ¿ÉÄÜ»á×¢Òâµ½£¬ÕâЩÄÚÈÝÆäʵºÍLZÉÏһƪÎÄÕ¡¶ÍòÄܵÄÁÖÏô˵£ºÒ»ÆªÎÄÕ½̻áÄ㣬ÈçºÎ×öµ½ÕÐƸҪÇóÖеġ°ÒªÓÐÔúʵµÄJava»ù´¡¡±¡£¡·£¬Óв»ÉÙµÄÏà֮ͨ´¦¡£

¡¡¡¡Ã»´í£¬Æäʵ»ù±¾ÒªÇóÕⲿ·Ö£¬²î²»¶à¾ÍÊÇÒªÇóÄãÓÐÔúʵµÄJava»ù´¡¡£ÕâÒ²ÊÇËùÓÐÒ»Ïß»¥ÁªÍø¹«Ë¾£¬»ù±¾¶¼»áдÔÚÕÐƸҪÇóµØÇ°¼¸ÌõµÄÒªÇó¡£

¡¡¡¡Òò´Ë£¬ÒªÏë½øÈëBAT£¬ÄÇôÕâÒ»²¿·ÖµÄÄÚÈÝÒ»¶¨ÒªÁ˽⣬¶øÇÒÕⲿ·ÖµÄÄÚÈݶÔÄãʵ¼Ê¿ª·¢Ò²ÊǷdz£ÓаïÖúµÄ£¬²¢²»½ö½öÊÇΪÁËÓ¦¸¶ÃæÊÔ¡£

¡¡¡¡

¶þ¡¢¿ÉÑ¡ÒªÇó

¡¡¡¡

¡¡¡¡¿´µ½¿ÉÑ¡ÒªÇóËĸö×Ö£¬»òÐí²»ÉÙÈË»áÈÏΪÕⲿ·Ö²»Ì«ÖØÒª¡£µ«ÊÇLZ¿ÉÒԺܸºÔðµÄ¸æËßÄ㣬Õⲿ·ÖÍùÍù²ÅÊǾö¶¨¹«Ë¾Òª²»ÒªÄãµÄÖØÒªÖ¸±ê¡£

¡¡

1.±¾Õ¾×ñÑ­ÐÐÒµ¹æ·¶£¬ÈκÎתÔصĸå¼þ¶¼»áÃ÷È·±ê×¢×÷ÕߺÍÀ´Ô´£»2.±¾Õ¾µÄÔ­´´ÎÄÕ£¬ÇëתÔØʱÎñ±Ø×¢Ã÷ÎÄÕÂ×÷ÕߺÍÀ´Ô´£¬²»×ðÖØÔ­´´µÄÐÐΪÎÒÃǽ«×·¾¿ÔðÈΣ»3.×÷ÕßͶ¸å¿ÉÄܻᾭÎÒÃDZ༭Ð޸Ļò²¹³ä¡£

Ïà¹ØÎÄÕÂ
  • è¸çÍøÂç±à³ÌϵÁУºHTTP PEM ÍòÄܵ÷ÊÔ·¨ - è¸ç_kaiye

    è¸çÍøÂç±à³ÌϵÁУºHTTP PEM ÍòÄܵ÷ÊÔ·¨ - è¸ç_kaiye

    2015-12-19 18:54

  • ¸úÎÒÀ´Á˽âHTML5ÊÇʲô

    ¸úÎÒÀ´Á˽âHTML5ÊÇʲô

    2014-11-17 18:29

ÍøÓѵãÆÀ
)