锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产午夜久久影院,欧洲精品久久久av无码电影,久久久久中文字幕http://www.shnenglu.com/flagman/category/15576.html 鍞愪寒鐨勪釜浜烘妧鏈崥瀹? 銆愭榪庤漿杞斤紝浣嗚鏍囨槑鍘熶綔鑰呫?/description>zh-cnSat, 12 Feb 2011 11:12:19 GMTSat, 12 Feb 2011 11:12:19 GMT60鍙嶅皠鐨勭壒鎬ф槸緇忓父浼氫嬌鐢ㄥ埌鐨?/title><link>http://www.shnenglu.com/flagman/archive/2011/02/12/reflection_feature_used_in_daily_dev.html</link><dc:creator>flagman</dc:creator><author>flagman</author><pubDate>Sat, 12 Feb 2011 09:21:00 GMT</pubDate><guid>http://www.shnenglu.com/flagman/archive/2011/02/12/reflection_feature_used_in_daily_dev.html</guid><wfw:comment>http://www.shnenglu.com/flagman/comments/139944.html</wfw:comment><comments>http://www.shnenglu.com/flagman/archive/2011/02/12/reflection_feature_used_in_daily_dev.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flagman/comments/commentRss/139944.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flagman/services/trackbacks/139944.html</trackback:ping><description><![CDATA[<p><em>銆?鏌愮綉鍙嬭璁洪亾: 銆?br>: RT錛屽弽灝勭殑鐗規у彂鐜板緢灝戠敤鍟?/em><br></p> <p><br><br>鎭版伆鐩稿弽錛屾湁浜涘弽灝勭殑鐗規ф槸緇忓父浼氳浣跨敤鍒扮殑銆?/p> <p>鍙嶅皠鎬諱綋涓婂垎鎴愪袱澶х壒鎬э紝涓鏄嚜鐪侊紝浜屾槸鍙戝皠錛?/p> <p>鑷渷鐨勮兘鍔涙瀬涓洪噸瑕侊紝鑰屼笖鍑犱箮浼氬ぉ澶╃敤鍒幫紝寰堝皯瑙佸埌榪囧摢涓?net搴旂敤涓笉浣跨敤attribute鐨勶紝鑰宎ttribute鐗規у氨鏄痬etadata閫氳繃鍦ㄨ嚜鐪佽兘鍔涙敮鎾戜笅瀹炵幇鐨勶紱褰撶劧鑷渷涓嶅崟鍗曟槸attribute鐗規х殑榪愮敤錛屽彧瑕佹槸鍦ㄨ繍琛屾椂鍔ㄦ佹瑙嗙▼搴忚嚜韜殑鐗規ч兘瑕佺敱鍙嶅皠鐨勮嚜鐪佽兘鍔涙潵鏀寔錛屾瘮濡俈isual Studio鐨処DE錛堣繖涓泦鎴愬紑鍙戠幆澧冩湰韜氨鏄?net搴旂敤鐨勫ソ妗堜緥錛夊浜?net緇勪歡鐨勮嚜鍔ㄦ帰嫻嬪姛鑳斤紱鍚屾椂錛岃嚜鐪佺殑鑳藉姏涔熸槸鍩轟簬铏氭嫙鏈哄鉤鍙扮殑璇█錛屾瘮濡俢#鍜宩ava錛屽尯鍒簬浼犵粺璇█姣斿c鍜宑++鐨勯噸瑕佺壒鎬т箣涓錛岃繖鎻愪緵浜嗙▼搴忚璁″紑鍙戞洿涓轟究鍒╁拰瀹夊叏鐨勮繍琛屾椂鐜錛涚浉瀵硅岃█錛屽湪c++錛堝綋鐒舵槸native鑰屼笉鏄痬anaged錛夌殑鐜涓嬶紝闄や簡RTTI鏋佷負鍗曡杽鐨勮繍琛屾椂鑷渷錛屼篃灝辨槸QT榪欎釜搴撻氳繃meta-object system閮ㄥ垎妯℃嫙浜嗚嚜鐪佺殑鐗規э紱</p> <p>鍙嶅皠鐨勫彟澶栦竴涓噸瑕佺壒鎬у氨鏄彂灝勶紝瀹冭“紼嬪簭鍙互鍐欑▼搴?#8221;浜嗭紝綆瑕佺殑璇村氨鏄湪榪愯鏃跺姩鎬佺敓鎴怣SIL騫跺姞杞借繍琛屼互鍙婃寔涔呭寲鍔ㄦ佺敓鎴愮殑MSIL鐨勮兘鍔涳紱鐢辮繖涓壒鎬х殑鏀寔錛岃鍘熷厛涓浜涚▼搴忚璁″拰寮鍙戦鍩熺浉瀵瑰洶闅懼拰綣佺悙鐨勫伐浣滐紝姣斿鍏冪紪紼媘eta programming錛屾瘮濡傚姩鎬佷唬鐞哾ynamic proxy錛屾瘮濡侫OP涓殑鍩虹璁炬柦weaver鐨勫疄鐜幫紝鍙樺緱鍙兘鎴栫浉瀵規槗浜庡疄鐜幫紱鍙嶅皠鐨勭壒鎬э紝涔熸槸鍩轟簬铏氭嫙鏈哄鉤鍙癈LR鐨勬敮鎸侊紝浠etadata涓哄熀紜鏉ュ疄鐜扮殑錛屾墍浠ヨ繖涔熸槸铏氭嫙鏈哄鉤鍙拌璦鐨勭壒鏈変紭鍔匡紝鑰屽湪浼犵粺璇█騫沖彴涓婏紝榪欐槸闅句互瀹炵幇鐨勶紱姣斿鍏充簬meta programming錛宑++灝辨槸閫氳繃妯℃澘鐗規у疄鐜扮殑緙栬瘧鏈焟eta programming錛岃繖涓庤櫄鎷熸満騫沖彴涓婂疄鐜扮殑榪愯鏃秏eta programming榪樻槸鏈夋瘮杈冨ぇ鐨勫樊璺濓紙姣斿鍓嶈呭浣曚繚璇佺敓鎴愮殑浠g爜鐨則ype-safe錛夛紱</p> <p>浠ヤ笂榪欎袱涓壒鎬э紝鑷渷鍜屽彂灝勶紝閮芥湁涓叡鍚岀偣錛屼粬浠兘鏄洿緇曠潃metadata鏈哄埗錛屽茍鍦ㄨ櫄鎷熸満騫沖彴榪愯鏃剁幆澧僀LR鏀寔涓嬪疄鐜扮殑錛屽墠鑰呮槸榪愯鏃舵瑙嗙浉鍏崇殑metadata錛屽悗鑰呮槸榪愯鏃跺姩鎬佺敓鎴愮浉鍏崇殑metadata鍜孧SIL錛涗粠榪欑偣涔熷氨鍙互鐪嬪嚭錛岃鎯蟲繁鍏ョ悊瑙h繖浜涚壒鎬э紝灝遍渶瑕佺爺絀秏etadata鍜孧SIL鐨勫疄鐜幫紝浠ュ強铏氭嫙鏈鴻繍琛屾椂鐜鐨勫疄鐜幫紙鍦╦ava騫沖彴涓婏紝灝辨槸bytecode鍜孞VM錛夛紱</p> <p>鎵浠ワ紝鍙嶅皠錛屽彲鑳芥槸铏氭嫙鏈哄鉤鍙版墍鎻愪緵鐨勭浉瀵規渶涓哄己鍔詫紝鏈涓哄鏉傦紝鍜屽鉤鍙拌繍琛屾椂鏈韓鍏崇郴鏈瀵嗗垏錛屼篃鏄尯鍒簬浼犵粺璇█鍜岃繍琛屾椂鏈椴滄槑鐨勭壒鎬с?/p> <img src ="http://www.shnenglu.com/flagman/aggbug/139944.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flagman/" target="_blank">flagman</a> 2011-02-12 17:21 <a href="http://www.shnenglu.com/flagman/archive/2011/02/12/reflection_feature_used_in_daily_dev.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍏充簬COM鍜?net鐨勬濊?/title><link>http://www.shnenglu.com/flagman/archive/2010/12/19/AboutComAndDotNet.html</link><dc:creator>flagman</dc:creator><author>flagman</author><pubDate>Sun, 19 Dec 2010 03:04:00 GMT</pubDate><guid>http://www.shnenglu.com/flagman/archive/2010/12/19/AboutComAndDotNet.html</guid><wfw:comment>http://www.shnenglu.com/flagman/comments/136922.html</wfw:comment><comments>http://www.shnenglu.com/flagman/archive/2010/12/19/AboutComAndDotNet.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.shnenglu.com/flagman/comments/commentRss/136922.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flagman/services/trackbacks/136922.html</trackback:ping><description><![CDATA[<p><em>銆?鏌愭煇鎻愬埌: 銆?br>: 涓鑸COM澶嶆潅錛岄鍏堟槸鍚嶈瘝澶錛屽叾嬈℃槸鍩轟簬ATL鐨勫疄鐜版瘮杈冮毦鎳?br>: 榪欏茍涓嶆槸COM鏈韓澶嶆潅錛岃屾槸C++宸茬粡钀藉悗浜庢椂浠d簡銆傛墍浠TL鐪嬭搗鏉ユ墠浼氬儚澶╀功涓鑸?/em></p> <p><br>铏界劧瀵逛簬鍏ㄦ柊鐨勫伐紼嬮」鐩紝鎺ㄨ崘閫氳繃.net瀹炵幇錛屼絾鏄紝鍙浣犲伐浣滃湪Windows騫沖彴涓婏紝蹇呯劧浼氶亣鍒板拰COM鐩稿叧鐨勬妧鏈拰鏈哄埗錛屾棤璁烘槸澶ч噺鐨刲egacy鐨勫伐紼嬪拰浠g爜錛岃繕鏄綔涓篛S閲嶈鍔熻兘浠ュ強native緇勪歡鐨勯閫変氦浜掑艦寮忓拰鎺ュ彛鏆撮湶鏂瑰紡錛屾瘮濡侱irectX API錛屾瘮濡備竴浜沇MI鐨凙PI錛涙渶鏈夎叮鐨勬槸錛屽嵆浣挎槸.net鐨勬牳蹇僀LR鏈韓涔熸槸涓涓狢OM緇勪歡錛屽彲浠ラ氳繃Host鐩稿叧鎺ュ彛璁﹏ative搴旂敤鏉ュ姞杞斤紝浠ュ湪褰撳墠榪涚▼涓惎鍔ㄦ暣涓狢LR鐨勮櫄鎷熸墽琛岀幆澧冩垨鑰呭彨鎵樼鎵ц鐜(managed executive environment)銆?/p> <p>鎶婃彙COM鏈変袱鐐瑰緢鍏抽敭錛?br>1錛塈nterface-based design錛屼粠璁捐鍜岀紪鐮佹濊礬涓婂氨鏄瀹屽叏鍩轟簬鎺ュ彛錛?br>2錛塚irtualTable-based binary compatibility, 瀹炵幇涓婃棤璁轟綍縐嶈璦鎴栬呮満鍒訛紝鍙絎﹀悎鍩轟簬铏氳〃鐨勪簩榪涘埗鍏煎瑙勮寖錛屽氨閮藉彲浠ュ疄鏂斤紱</p> <p>COM浠呬粎鏄釜瑙勮寖錛屽熀浜嶤OM鐨勫叿浣撴妧鏈潪甯鎬箣澶氾紝OLE錛孉utomation錛孲tructural storage錛孉ctiveX...姹楃墰鍏呮爧錛岃繕鏈塁OM+錛岃繖涓槸鎻愪緵浼佷笟綰у紑鍙戝繀澶囩殑涓浜涘熀紜鍔熻兘鍜岃鏂斤紝姣斿錛屼簨鍔$鐞嗘満鍒訛紝瀵硅薄姹狅紝瀹夊叏綆$悊錛屾秷鎭槦鍒?..闇瑕佹寚鍑猴紝鐩墠鍗充究鏄?net Framework涔熸病鏈夊疄鐜癈OM+鎵鎻愪緵榪欎簺鏈哄埗錛屽彧鏄畝鍗曠殑灝佽浜嗗悗鑰呫?/p> <p>COM鎶鏈腑鍙兘鏈変竴浜涙瘮杈冨洶闅劇殑鍦版柟錛屾帴鍙g殑涓鑷存э紝瀵硅薄鐨勮仛鍚堝拰鐢熷懡鍛ㄦ湡錛屽闂達紝璺ㄥ闂寸殑鎺ュ彛璁塊棶錛屽悕瀛楀璞★紝絳夌瓑錛涜繖浜涘茍涓嶆槸COM瑙勮寖浜轟負鍒墮犵殑鍥伴毦錛岃屾槸涓轟簡璁捐鍜屾彁渚涳紝鍙互璺ㄨ繘紼嬪拰鏈哄櫒杈圭晫錛岃法寮傛瀯騫沖彴錛堝綋鐒跺繀欏誨疄鐜頒簡COM鎵瑙勫畾鐨勫熀紜鏈嶅姟錛夛紝閫忔槑鍖栧叿浣撳璞$被鍨嬪強瀵硅薄鐢熷懡鍛ㄦ湡錛屼究浜庣粺涓閮ㄧ講鍜岀増鏈鐞嗙殑緇勪歡鎶鏈紝鎵蹇呴』浠樺嚭鐨勪唬浠鳳紝榪欎釜浠d環浠庡紑鍙戜漢鍛樿搴︾湅鍏蜂綋琛ㄧ幇涓猴紝姒傚康鐞嗚В鐨勫洶闅句互鍙婂叿浣撲簩榪涘埗瀹炵幇鐨勫洶闅撅紱</p> <p>涓嶈繃浠庡彟涓涓搴︾湅錛孋OM宸茬粡寰堝鏄撲簡錛?br>a) COM瑙勮寖宸叉妸瑕佽揪鑷磋繖浜涚洰鏍囩殑緋葷粺錛屾墍蹇呴』鎻愪緵鐨勬帴鍙e拰鐗規ф娊璞′簡鍑烘潵錛屽彧涓嶈繃涓轟簡琛ㄨ揪榪欎簺鎶借薄鐨勬蹇佃屾柊閫犵殑鏈鍚嶈瘝鏈変簺闄岀敓鍜岀獊鍏錛涘鏋滆閬囧埌鐩鎬技闂鐨勬瘡涓涓璁″拰寮鍙戜漢鍛橀兘鑷繁鏉ュ仛鎶借薄錛屾湭蹇呬細鐢熸垚鏇村ソ鐨勬柟妗堬紱</p> <p>b) 涓轟簡甯姪璁捐鍜屽紑鍙戜漢鍛橈紝浜轟滑鎻愪緵浜嗗緢澶氱殑寮鍙戝簱錛屼互鎻愰珮COM寮鍙戠殑姝g‘鎬у拰鏁堢巼錛涙渶鏄捐憲鐨勫氨鏄疢FC涓叧浜嶤OM/OLE鐨勮緟鍔╃被鍜屽嚱鏁幫紝浠ュ強涓轟簡COM鑰岀敓鐨凙TL錛涗粠鏈川涓婄湅錛岃繖浜涚被搴撻兘鏄妸COM瑙勮寖涓繀欏誨疄鐜扮殑錛學indows騫沖彴鏈韓娌℃湁鎻愪緵錛屽叿浣撹璁″拰寮鍙戜漢鍛樺疄闄呭疄鏂芥椂浼氶噸澶嶅疄鐜扮殑錛屽悓鏃跺張闈炲父瀹規槗鍑洪敊鐨勯偅閮ㄥ垎鍔熻兘錛岄泦涓埌浜嗚繖浜涚被搴撻噷緇熶竴瀹炵幇錛岃鍏蜂綋璁捐鍜屽紑鍙戜漢鍛樹互浠g爜閲嶇敤鐨勫艦寮忔潵瀹炵幇COM瑙勮寖錛?/p> <p>褰撶劧浜轟滑涔熸剰璇嗗埌浜咰OM榪欐牱鐨勪竴浜涢棶棰橈紝鐗瑰埆鏄叿浣撳疄鐜版椂璁捐鍜屽紑鍙戜漢鍛樺繀欏昏鍏蟲敞鍑犱箮鎵鏈夌殑浜岃繘鍒剁粏鑺傦紝浜庢槸.net灝辮癁鐢熶簡錛屾妸榪欎簺瑙勮寖鐨勮澶氬鏉傛ч兘灝佽鍦ㄤ簡铏氭嫙鏈洪噷闈紝鎶婅繖浜涚洰鏍囧姛鑳斤紙璺ㄨ竟鐣屻侀忔槑鎬х瓑絳夛級閫氳繃涓鑷磋屽張騫蟲粦鐨勫鉤鍙版帴鍙e拰鑷弿榪扮殑meta data錛屼互涓縐嶈璁捐鍜屽紑鍙戜漢鍛樻洿鏄撴帴鍙楃殑椋庢牸寮鏀句簡鍑烘潵錛?/p> <p>COM鐨勫獎鍝嶆槸闈炲父騫垮ぇ鐨勶紝姣斿XPCOM 錛孎irefox涓婄殑涓縐嶆彃浠舵妧鏈爣鍑嗭紝灝辨槸鏍規嵁COM鐨勬濇兂鍜屽師鍒欏埗瀹氱殑錛涜澶氳瘎璁鴻錛孎irefox鐨勬垚鍔熸槸鍥犱負瀹冩彃浠舵槸濡傛鐨勬垚鍔燂紝榪欎篃綆楁槸COM鏈韓鎵鎰忔枡涓嶅埌鐨勮礎鐚箣涓銆?/p> <p>鍦?net鐨勫鉤鍙頒笂錛屽嵆浣挎槸.net CLR/SSCLI鐨勫叿浣撳疄鐜頒篃澶ч噺榪愮敤浜咰OM鐨勬濇兂鍜屾満鍒訛紝鍙互璇?net灝辨槸鎼緩鍦–OM浜岃繘鍒剁粍浠跺鉤鍙頒箣涓婄殑铏氭嫙鏈烘墭綆″鉤鍙般?/p> <p>鏈鍚庯紝.net寮濮嬫椂鐨勫唴閮ㄧ紪鍙鋒槸COM 2.0</p> <p> </p> <p>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</p> <p>*) 鍏充簬“鍚嶈瘝澶”<br>榪欐槸瑕佸疄鐜板彲浠ヨ法榪涚▼鍜屾満鍣ㄨ竟鐣岋紝璺ㄥ紓鏋勫鉤鍙幫紙褰撶劧蹇呴』瀹炵幇浜咰OM鎵瑙勫畾鐨勫熀紜鏈嶅姟錛夛紝閫忔槑鍖栧叿浣撳璞$被鍨嬪強瀵硅薄鐢熷懡鍛ㄦ湡錛屼究浜庣粺涓閮ㄧ講鍜岀増鏈鐞嗙殑緇勪歡鎶鏈紝鎵蹇呴』浠樺嚭鐨勪唬浠楓?/p> <p>COM瑙勮寖宸叉妸瑕佽揪鑷磋繖浜涚洰鏍囩殑緋葷粺錛屾墍蹇呴』鎻愪緵鐨勬帴鍙e拰鐗規ф娊璞′簡鍑烘潵錛屽彧涓嶈繃涓轟簡琛ㄨ揪榪欎簺鎶借薄鐨勬蹇佃屾柊閫犵殑鏈鍚嶈瘝鏈変簺闄岀敓鍜岀獊鍏錛涘鏋滆閬囧埌鐩鎬技闂鐨勬瘡涓涓璁″拰寮鍙戜漢鍛橀兘鑷繁鏉ュ仛鎶借薄錛屾湭蹇呬細鐢熸垚鏇村ソ鐨勬柟妗堬紱</p> <p>涓句釜渚嬪瓙錛宎partment錛屽闂達紝灝辨槸涓轟簡鎶借薄浼犵粺OS涓繘紼嬪拰綰跨▼鐨勫疄鐜拌屾柊閫犵殑鏈鍚嶈瘝鍜屾蹇碉紱浠諱綍浜鴻鎶借薄榪欐牱鐨勪竴浜涙蹇碉紝涓嶆柊閫犳湳璇紝鏄潪甯稿洶闅劇殑錛屽姣?net錛屽悗鑰呯敤浜咰LR铏氭嫙鏈烘潵灝佽浜嗗ぇ澶氭暟鐨勫疄鐜扮粏鑺傦紝騫剁敤璁╀漢鏇村鏄撴帴鍙楃殑椋庢牸鏉ュ紑鏀炬帴鍙o紝鍙簨瀹炰笂浠嶇劧鏂伴犱簡涓浜涘悕璇嶅拰姒傚康錛屽綾諱技鑼冪暣鐨凙ppDomain錛?/p> <p>*) 鍏充簬“鍩轟簬ATL鐨勫疄鐜版瘮杈冮毦鎳?#8221;<br>ATL涓昏浣跨敤浜唗emplate鎶鏈紝COM鎺ュ彛鏅鴻兘鎸囬拡錛岀敤闈欐佽漿鎹㈡潵妯℃嫙鍔ㄦ佺粦瀹氾紝絳夌瓑錛屽疄闄呭茍涓嶆槸寰堝鏉傦紝鍙兘綆梒++瀹炵幇鏈哄埗鐨勪腑絳夐毦搴︼紝涓昏娑夊強Modern C++ design涓涔︿腑涓浜涚浉鍏寵璁$悊蹇電殑榪愮敤銆傚姣擝oost涓煇浜涘簱鐨勫疄鐜幫紝ATL寰堜漢閬撲簡銆?/p> <p>*) 鍏充簬“榪欏茍涓嶆槸COM鏈韓澶嶆潅錛岃屾槸C++宸茬粡钀藉悗浜庢椂浠d簡”<br>棣栧厛COM鐨勮鑼冪殑紜槸澶嶆潅鐨勶紝涓哄暐錛熺涓鐐瑰凡緇忚浜嗭紝灝辨槸涓轟簡瑕佹娊璞″嚭璺ㄨ竟鐣屽拰瀵硅薄閫忔槑鐨勭粍浠舵妧鏈紱.net琛ㄨ薄涓婄湅姣旇緝“綆鍗曞鏄?#8221;錛岄鏍間翰榪戣璁″拰寮鍙戜漢鍛橈紝瀹為檯涓婂鏉備簨鍔″拰瀹炵幇緇嗚妭閮借鍒掑垎鍒癈LR閭d釜灞傞潰涓婂幓瀹炵幇浜嗭紱鍘葷湅涓涓婥LR鐨勫紑婧愬疄鐜癝SCLI錛屼綘浼氬彂鐜幫紝鏁翠釜铏氭嫙鏈哄鉤鍙扮殑瀹炵幇錛屽ぇ閲忚繍鐢ㄤ簡COM鐨勬濇兂鍜屾満鍒訛紝灝辨槸涓涓法鍨嬬郴緇熷鉤鍙扮駭鐨凜OM server錛?/p> <p>鍏舵錛孋OM瑙勮寖鏈韓鏄嫭绔嬩簬瀹炵幇璇█鐨勶紝鍙鏋勫緩鍑虹殑緇勪歡絎﹀悎瑙勮寖鍒跺畾鐨勪簩榪涘埗鍏煎錛岀郴緇熷氨鍙互榪愪綔錛岃繖鍜孋++鏄惁钀藉悗鏃朵唬娌℃湁鍏崇郴銆傚鏋滃紑鍙戜漢鍛樿涓猴紝.net鎵嶅鍏堣繘錛屼篃瀹屽叏鍙互鐢?net涓殑鎵樼璇█錛屽C#鏉ュ疄鐜癈OM緇勪歡錛?/p> <p>鏈鍚庯紝姣忕璇█閮芥湁鍏墮傜敤鐨勮寖鍥達紝鐜板湪鍙互榪欎箞璇?#8220;濡傛灉鏈変竴涓叏鏂扮殑欏圭洰闇姹傦紝瑕佽揪鑷磋法杈圭晫鍜屽璞¢忔槑緇勪歡錛屽茍涓旀病鏈夊お榪囦弗鑻涚殑鎬ц兘闇姹傦紝閭d箞.net騫沖彴鍙婂叾涓婄殑鎵樼璇█鏉ュ疄鐜幫紝姣旂敤C++鍙婄浉鍏寵緟鍔╃被搴撴潵浠OM緇勪歡褰㈠紡鏉ュ疄鐜幫紝瑕佹洿鍚堥傦紝涔熸洿蹇熶究鎹峰拰鑺傜渷棰勭畻銆?#8221;浣嗘槸錛屽湪榪欎釜鍒ゆ柇涓婃垜浠姞浜嗗緢澶氫弗鏍肩殑綰︽潫錛屼竴鏃﹂渶姹傚彉鏇達紝鐗瑰埆鏄」鐩殑闈炲姛鑳芥ч渶姹傦紝瑕佹眰楂樻ц兘榪愮畻鎴栬呮洿欏虹晠鐨勪笌legacy鐨刵ative緋葷粺鐩鎬簰錛岄偅涔?#8220;浣跨敤native璇█鏉ュ疄鐜版ц兘鍏抽敭浠ュ強legacy浜や簰鍔熻兘錛岄氳繃COM灝佽錛屽啀鐢盋OMInterop浜?net鎵樼搴旂敤璋冪敤”鍙兘鏄洿鐜板疄鐨勬柟妗堛侰++鏄竴闂ㄦ椿鐨勮璦錛屼笉鏂彂灞曠殑璇█錛屽嵆浣垮湪鏈鏂扮殑鎵樼鏃朵唬閲岋紝C#鎴愪負鏍囧噯涓繪祦錛屼絾C++/CLI浠嶇劧鏄墭綆¤璦閲屽姛鑳芥渶瀹屾暣鐨勮璦銆?/p> <p> </p> <img src ="http://www.shnenglu.com/flagman/aggbug/136922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flagman/" target="_blank">flagman</a> 2010-12-19 11:04 <a href="http://www.shnenglu.com/flagman/archive/2010/12/19/AboutComAndDotNet.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>CLR緋誨垪--鎺㈢儲SSCLI銆?銆?/title><link>http://www.shnenglu.com/flagman/archive/2010/12/13/136255.html</link><dc:creator>flagman</dc:creator><author>flagman</author><pubDate>Mon, 13 Dec 2010 01:02:00 GMT</pubDate><guid>http://www.shnenglu.com/flagman/archive/2010/12/13/136255.html</guid><wfw:comment>http://www.shnenglu.com/flagman/comments/136255.html</wfw:comment><comments>http://www.shnenglu.com/flagman/archive/2010/12/13/136255.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flagman/comments/commentRss/136255.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flagman/services/trackbacks/136255.html</trackback:ping><description><![CDATA[<p>Fusion is one of the most importants features among ones in the runtime implementation of CLI.</p> <p>In the fusion, or any other components or modules, how to retrieve the execution engine instance and how to generate such engine?</p> <p>UtilExecutionEngine, implemented as COM object, support Queryinterface/AddRef/Release, and exposed via interface IExecutionEngine.</p> <p>With SELF_NO_HOST defined, <br>BYTE g_ExecutionEngineInstance[sizeof(UtilExecutionEngine)];<br>g_ExecutionEngineInstance would be the singleton instance of current execution engine,</p> <p>otherwise, without SELF_NO_HOST, the 'sscoree' dll would be loaded and try to get the exported function, which is named 'IEE' from such dll. Here, it is the well-known shim, in .net CLR, such module is named 'mscoree'. Further, if 'IEE' could not be found in such dll, system would try to locate another exported function, named 'LoadLibraryShim', and use such function to load the 'mscorwks' module, and try to locate the 'IEE' exportd functionin it.</p> <p>It's very obvious that Rotor has implemented its own execution engine, but it also gives or make space for implementation of execution engine from 3rd party. Here, .net CLR is a good candidate definitely, Rotor might load the mscorwks.dll module for its usage.</p> <p>PAL, PALAPI, for example, HeapAlloc, one famous WIN32 API, has been implemented as one PALAPI (defined in Heap.c), to make it possible that the CLI/Rotor be ported smoothly to other OS, such freebsd/mac os.</p> <p>CRT routines are also reimplemented, such as memcpy, it has been implemented as GCSafeMemCpy</p> <p>There're many macros in fuctions, such as SCAN_IGNORE_FAULT/STATIC_CONTRACT_NOTHROW/STATIC_CONTRACT_NOTRIGGER, they are for static analysis tool to scan, analyse and figour out the potential issues in code.</p> <p>From view point of the execution model by CLI, the act of compiling (including JIT) high-level type descriptions would be separated from the act of turning these type descriptions into processor-specific code and memory structures.</p> <p>And such executino model, in other word, the well-known 'managed execution', would defer the loading, verification and compilation of components until runtime really needs; At the same time, the type-loading is the key trigger that causes CLI's tool chain to be engaged at runtime. Deferred compilation(lead to JIT)/linking/loading would get better portability to different target platform and be ready for version change; The whole deferred process would driven by well-defined metadata and policy, and it would be very robust for building a virtual execution environment;</p> <p>At the top of such CLI tool chain, fusion is reponsible for not only finding and binding related assemblies, which are via assembly reference defined in assembly, fusion also takes another important role, loader, and its part of functionality is implemented in PEAssembly, ClassLoader classes. For example, ClassLoader::LoadTypeHandleForTypeKey.</p> <p>For types in virtual execution environment of CLI, rotor defines four kinds of elements for internal conducting, <br>ELEMENT_TYPE_CLASS for ordinary classes and generic instantiations(including value types);<br>ELEMENT_TYPE_ARRAY AND ELEMENT_TYPE_SZARRAY for array types<br>ELEMENT_TYPE_PRT and ELEMENT_TYPE_BYREF for pointer types<br>ELEMENT_TYPE_FNPTR for function pointer types</p> <p>every type would be assigned unique ulong-typed token, and such token would be used to look up in m_TypeDefToMethodTableMap (Linear mapping from TypeDef token to MethodTable *)which is maintained by current module; If there it is, the pointer to method table of such type would be retrieved, or it would look up in the loader module, where the method table should exist in while it's JIT loaded, not launched from NGEN image;</p> <p>And all the unresolved typed would be maintained in a hash table, PendingTypeLoadTable; Types and only those types that are needed, such as dependencies, including parent types, are loaded in runtime, such type is fully loaded and ready for further execution, and other unresolved types would be kept in the previous hash table.</p> <img src ="http://www.shnenglu.com/flagman/aggbug/136255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flagman/" target="_blank">flagman</a> 2010-12-13 09:02 <a href="http://www.shnenglu.com/flagman/archive/2010/12/13/136255.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鎬濊冪郴緇烝PI璁捐鐨勯棶棰?/title><link>http://www.shnenglu.com/flagman/archive/2010/12/01/Thinking_Of_API_Design.html</link><dc:creator>flagman</dc:creator><author>flagman</author><pubDate>Wed, 01 Dec 2010 13:28:00 GMT</pubDate><guid>http://www.shnenglu.com/flagman/archive/2010/12/01/Thinking_Of_API_Design.html</guid><wfw:comment>http://www.shnenglu.com/flagman/comments/135191.html</wfw:comment><comments>http://www.shnenglu.com/flagman/archive/2010/12/01/Thinking_Of_API_Design.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flagman/comments/commentRss/135191.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flagman/services/trackbacks/135191.html</trackback:ping><description><![CDATA[<p>鏈榪戞濂藉湪鎬濊冪郴緇烝PI璁捐涓冮噺鐨勪竴浜涢棶棰橈紝<br><br>銆愭煇緗戝弸璁ㄨ鍒般?br><em>: 閭e湴鍧鏄笉鏄悓涓涓湴鍧鍛€傛垜鐜板湪鐨勭悊瑙f槸榪欐牱鐨勶紝鍋囪鏈夊法澶х殑鐪熷疄鍐呭瓨銆倃indows棣栧厛灝嗛珮2G鐨勫唴瀛樿嚜宸卞崰浜嗭紝鐢ㄤ綔鍚勭鍐呮牳瀵硅薄銆傝繖2G鍐呭瓨鍏變韓緇欐瘡涓繘紼嬶紝浣嗚繘紼嬩笉鑳界洿鎺ヨ闂紝鍙兘閫氳繃windows緇欏畾鐨勫嚱鏁拌闂?br>: 鐒跺悗姣忎釜榪涚▼閮界粰浠?G鍐呭瓨錛岃繘紼嬪鏋滃垱寤鴻嚜宸辯殑瀵硅薄灝辨斁鍒拌嚜宸遍偅2G鍐呭瓨閲岄潰錛屽鏋滆寤虹珛鍐呮牳瀵硅薄灝辨斁鍒板叡浜殑閭i珮2G閲岄潰鍘匯?br>: 鎵浠ヤ笉鍚岃繘紼嬪鏋滃彲浠ヨ闂珮2G鍐呭瓨鐨勮瘽錛屼換浣曡繘紼嬭闂埌鍚屼竴涓珮鍦板潃瀹為檯涓婇兘鏄闂埌鍚屼竴涓璞°備絾濡傛灉璁塊棶浣?G鍦板潃鐨勮瘽錛屼笉鍚岃繘紼嬫槸瀵瑰簲涓嶅悓鐨勫璞$殑銆?br></em><br><br><br>鍦ㄤ笉鍚岀殑榪涚▼涓紝璇㈤棶鍚屼竴涓唴鏍稿璞$殑瀹為檯鍦板潃錛堟棤璁烘槸綰挎у湴鍧榪樻槸鐗╃悊鍦板潃錛夛紝鏄棤鎰忎箟鐨勶細</p> <p>棣栧厛錛屽唴鏍稿璞″彧鑳界敱鍦ㄥ唴鏍告佷笅鐨勪緥紼嬫墠鑳界洿鎺ヨ闂紝鍦ㄦ垜浠棩甯哥殑浠g爜涓紝鎵璋冪敤鐨刉indows API錛屾瘮濡侰reateFile, 錛堟敞鎰忚皟鐢ㄥ垰寮濮嬫椂鏄浜庣敤鎴鋒佷笅鐨勶級錛屼竴鑸兘浼氬湪ntdll.dll涓壘鍒板搴旂殑鍐呮牳鍑芥暟鎴栦緥紼嬶紝鎺ョ潃緋葷粺鍒囨崲鍒板唴鏍告侊紝寮濮嬭皟鐢ㄥ疄闄呭搴旂殑鍐呮牳鍑芥暟(KiCreateFile)錛岃繖涓椂鍊欐墠浼氬幓璁塊棶鍐呮牳瀵硅薄鐨勫疄闄呭湴鍧錛岀劧鍚庡緩绔嬩竴涓鍐呮牳瀵硅薄瀵瑰簲褰撳墠榪涚▼鐨凥andle錛屽茍鎶婂畠榪斿洖緇檆aller錛屽悓鏃跺垏鎹㈠洖鐢ㄦ埛鎬侊紱鍥犳錛屽浜庣敤鎴鋒佺▼搴忔潵璇達紝鍙涓斿彧鑳界煡閬撹鍐呮牳瀵硅薄鍦ㄥ綋鍓嶈繘紼嬩腑鐨勫搴旂殑Handle灝卞彲浠ュ鍏惰繘琛屾搷浣滀簡錛?/p> <p>鍏舵錛岃繖鏍風殑璁捐鏄嚭浜庡OS鏍稿績鏁版嵁緇撴瀯錛堝綋鐒跺寘鎷垜浠鍦ㄨ璁虹殑鍐呮牳瀵硅薄錛夌殑淇濇姢錛涘鏋滅敤鎴鋒佺▼搴忓彲浠ヨ交鏄撶殑鑾峰彇鍐呮牳鏁版嵁緇撴瀯鐨勫疄闄呭湴鍧錛岄偅涔堝浜庢暣涓狾S鐨勫畨鍏ㄥ拰紼沖畾鏄劇劧鏋勬垚寰堝ぇ鐨勯棶棰橈紱涓涓敤鎴鋒佺殑璇搷浣滃彲浠ヨ交鏄撶殑寮曡搗鏁翠釜OS鐨勫穿婧冿紝鑰屾湁浜嗚繖涓灞傜殑淇濇姢錛屽穿婧冪殑鍙槸褰撳墠榪涚▼鑰屼笉鏄暣涓郴緇燂紱</p> <p>鎺ョ潃涓婇潰榪欑偣錛屼篃鍙互鐪嬪嚭錛屽唴鏍稿璞$殑濡傛璁捐杈懼埌浜嗘帴綰砄S鏈韓鐨勫鉤婊戞紨榪涚殑鐩殑銆備粠Windows 3.0鍒?5/98錛屼粠NT鍒癢in2k/XP錛屽啀鍒扮溂涓嬬殑Vista/Win7錛學indows鎿嶄綔緋葷粺鏈韓鍙戠敓浜嗗法澶х殑鍙樺寲鍜岃繘姝ワ紝閲囩撼浜嗘棤鏁扮殑鏂版妧鏈柊鏂規硶錛屼絾鏄畠鍩烘湰鐨勭郴緇熷簲鐢ㄧ紪紼嬫帴鍙o紝涔熷氨鏄垜浠墍鐔熺煡鐨剋indows API錛屽嵈騫舵病鏈夊彂鐢熷お澶х殑鏀瑰彉錛屽緢澶歐in 3.0 榪欎釜16浣峅S鏃朵唬鐨勭▼搴忎唬鐮佸彧瑕佸綋鍒濊璁¤鑼冪紪鐮佽鑼冿紝紼嶈淇敼灝卞彲浠ュ湪鏈鏂扮増鐨凮S涓婅繍琛屽椋烇紱鏄粈涔堝仛鍒頒簡榪欎簺錛熶篃灝辨槸鎵璋撶殑鏋佷負閲嶈鐨勫悜鍚庡吋瀹規э紝鎴戜釜浜鴻涓猴紝鎶婃搷浣滅郴緇熺殑閲嶈/涓昏鍔熻兘鎶借薄鎴愬唴鏍稿璞★紝騫墮氳繃涓濂楁瀬涓簊olid鐨凙PI鏆撮湶鍑烘潵錛岃揪鎴愪簡榪欎釜鐩爣銆?/p> <p>榪欐槸涓縐嶆洿楂樺眰嬈′笂鐨勯潰鍚戝璞★紝鎶婂疄鐜扮殑緇嗚妭錛屾妸緋葷粺鐨勫鏉傦紝綆鍗曡屼紭闆呯殑灝佽浜嗚搗鏉ャ備綘鍙璋冪敤CreateFile鍘誨緩涓枃浠舵垨綆¢亾鎴栭偖妲斤紝涓嶇敤鎷呭績褰撳墠OS鏄疻indows 3.0榪樻槸Win7錛岃幏寰楃殑Handle錛屼綘涔熶笉鐢ㄥ幓鍏沖績瀹冧互鍙婂畠鎵鎸囧悜鐨勫唴鏍稿璞℃槸Windows 3.0鐨勫疄鐜拌繕鏄疻in7鐨勫疄鐜般?/p> <p>Windows涓婃墍鏈夌殑綺懼僵鍑犱箮閮芥槸鍩轟簬榪欏閫氳繃鍐呮牳瀵硅薄姒傚康鎶借薄騫舵毚闇茬殑API鍩虹涔嬩笂錛孋OM/OLE錛岃繖涓簩鍗佸勾鍓嶉渿鎾兼х殑ABI鍜孖PC鑼冪暣鐨勬妧鏈鑼冿紝鍏朵腑寰堝鐨勮璁℃濊礬涔熸槸妞嶆牴浜庡唴鏍稿璞$殑璁捐鐞嗗康錛屽COM瀵硅薄鐨勫紩鐢ㄨ鏁板拰鍐呮牳瀵硅薄寮曠敤璁℃暟錛孖Unknown鍜學indows Handle(鍓嶈呮槸鎸囧悜鏌愪釜浜岃繘鍒跺吋瀹圭殑緇勪歡瀵硅薄錛屽悗鑰呭紩鐢ㄦ垨闂存帴鎸囧悜鏌愪釜鍐呮牳瀵硅薄錛岄兘鏄浜庢煇涓鏉傛蹇電殑涓鑷存ф娊璞¤〃榪?錛岀瓑絳夛紱</p> <p>鍗佸勾鍓嶇殑.net錛屾湰鏉ユ槸浣滀負COM鐨勫崌綰х増鏈帹鍑猴紝鎶奀OM/OLE鐨勫疄鐜板鏉傛у皝瑁呭湪浜嗚櫄鎷熸満騫沖彴CLR閲岄潰錛岃屼粠榪欎釜铏氭嫙鏈虹殑寮婧愬疄鐜癝SCLI錛屾垜浠彲浠ョ湅鍒板ぇ閲忕殑COM鏈哄埗鍦?net鐨勫叿浣撳疄鐜伴噷闈㈣搗浜嗕婦瓚寵交閲嶇殑浣滅敤銆傚湪榪欎簺VM涓ぇ閲弒ymbol鏈夌潃COR鐨勫墠緙鎴栬呭悗緙錛孋OR鎸囦唬浠涔堬紵Common Object Runtime, 鍘熸潵CLR/SSCLI鐨勮璁℃濊礬涔熸槸鎶奜S閫氳繃铏氭嫙鏈篤M鐨勫艦寮忥紝騫墮氳繃common object鍚戝簲鐢ㄧ▼搴忔毚闇插姛鑳姐?/p> <p>灝忕粨涓涓嬶紝<br>OS鍐呮牳瀵硅薄API錛屼笁鍗佸勾鍓嶇郴緇熺駭鍒殑瀵硅薄鎶借薄錛?br>COM/OLE錛屼簩鍗佸勾鍓嶄簩榪涘埗緇勪歡綰у埆鐨勫璞℃娊璞★紱<br>.net/CLR, 鍗佸勾鍓嶈櫄鎷熸満騫沖彴綰у埆鐨勫璞℃娊璞★紱</p> <p>鍐欏埌榪欓噷鍊掓槸寮曡搗浜嗘垜鍏朵粬鐨勪竴浜涙濊冿紝杞歡宸ヤ笟鐣屼竴鐩翠互鏉ュ闈㈠悜瀵硅薄OO鏄儹鐏湞澶╋紝鐗瑰埆鏄璦灞傞潰錛屼粠C++/Java/C#鍒癙ython/JScript錛屼笉涓鑰岃凍錛?/p> <p>浣嗘槸鎴戜滑鏈夋病鏈変粠鏍規湰鎬х殑璁捐鐞嗗康涓婂闈㈠悜瀵硅薄錛屽療綰抽泤璦浜嗗憿錛?/p> <p>濡傛灉鐜板湪璁捐Windows榪欏API鐨勪換鍔℃斁鍦ㄥぇ瀹墮潰鍓嶏紝浼氶噰鐢ㄥ唴鏍稿璞?Handle鏂規榪樻槸鐩存帴鎸囧悜OS鍐呴儴鏁版嵁緇撴瀯鐨勬柟寮忔潵鏆撮湶鍔熻兘錛?/p> <p>浠庝笁鍗佸勾鍓嶇殑榪欏API鐨勮璁′腑錛屾垜浠湡鐨勫彲浠ュ鍒板緢澶氥?/p> <p><br> </p> <img src ="http://www.shnenglu.com/flagman/aggbug/135191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flagman/" target="_blank">flagman</a> 2010-12-01 21:28 <a href="http://www.shnenglu.com/flagman/archive/2010/12/01/Thinking_Of_API_Design.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.buy162.cn" target="_blank">久久久久无码精品</a>| <a href="http://www.xiaoruhua.cn" target="_blank">久久亚洲精品国产亚洲老地址</a>| <a href="http://www.wenmeiclass.cn" target="_blank">思思久久好好热精品国产</a>| <a href="http://www.ntysjx.cn" target="_blank">色欲综合久久躁天天躁</a>| <a href="http://www.517down.cn" target="_blank">国产免费久久精品丫丫</a>| <a href="http://www.laobianjing.cn" target="_blank">麻豆亚洲AV永久无码精品久久</a>| <a href="http://www.6dou.net.cn" target="_blank">久久成人18免费网站</a>| <a href="http://www.huating.net.cn" target="_blank">精品久久久久久中文字幕人妻最新</a>| <a href="http://www.atlasbl.cn" target="_blank">人妻丰满?V无码久久不卡</a>| <a href="http://www.lueyi.com.cn" target="_blank">亚洲成色WWW久久网站</a>| <a href="http://www.zhuangzhua.cn" target="_blank">中文字幕无码久久人妻</a>| <a href="http://www.yjtrade.cn" target="_blank">久久国产热这里只有精品</a>| <a href="http://www.zhouyangla.cn" target="_blank">国产精品成人久久久</a>| <a href="http://www.hjpz333.cn" target="_blank">久久亚洲中文字幕精品一区</a>| <a href="http://www.ycsxw.cn" target="_blank">精品人妻伦九区久久AAA片69 </a>| <a href="http://www.axtea2007.cn" target="_blank">99国内精品久久久久久久 </a>| <a href="http://www.ltbhs.com.cn" target="_blank">久久精品无码一区二区三区</a>| <a href="http://www.ncysjz.cn" target="_blank">久久久久高潮毛片免费全部播放</a>| <a href="http://www.u33w.cn" target="_blank">亚洲AV无码1区2区久久</a>| <a href="http://www.ghzu.cn" target="_blank">久久久久综合中文字幕 </a>| <a href="http://www.tonghuaguan.cn" target="_blank">热re99久久精品国产99热</a>| <a href="http://www.020rj.cn" target="_blank">久久九九有精品国产23百花影院</a>| <a href="http://www.phatmedia.cn" target="_blank">久久久久综合国产欧美一区二区 </a>| <a href="http://www.aann8.cn" target="_blank">久久夜色精品国产亚洲</a>| <a href="http://www.bitpter.cn" target="_blank">色狠狠久久AV五月综合</a>| <a href="http://www.nyvgcd.cn" target="_blank">久久亚洲精品国产亚洲老地址</a>| <a href="http://www.lovebuyhome.com.cn" target="_blank">国产AⅤ精品一区二区三区久久</a>| <a href="http://www.qp8978.cn" target="_blank">奇米影视7777久久精品</a>| <a href="http://www.fjart.cn" target="_blank">亚洲精品无码久久久久去q</a>| <a href="http://www.www008tt.cn" target="_blank">亚洲国产高清精品线久久 </a>| <a href="http://www.tjywmc.cn" target="_blank">久久亚洲2019中文字幕</a>| <a href="http://www.dmc-dz.cn" target="_blank">91麻豆精品国产91久久久久久 </a>| <a href="http://www.ksxhsd.cn" target="_blank">久久精品一区二区三区不卡</a>| <a href="http://www.air-walk.com.cn" target="_blank">香蕉久久夜色精品升级完成</a>| <a href="http://www.west-data.cn" target="_blank">久久乐国产综合亚洲精品</a>| <a href="http://www.sang423.cn" target="_blank">久久久久九国产精品</a>| <a href="http://www.yozang.cn" target="_blank">久久久青草青青国产亚洲免观 </a>| <a href="http://www.nyoh.cn" target="_blank">久久99久久99精品免视看动漫</a>| <a href="http://www.37000.com.cn" target="_blank">久久午夜福利电影</a>| <a href="http://www.gnkk.net.cn" target="_blank">亚洲国产精品狼友中文久久久</a>| <a href="http://www.wldyl.com.cn" target="_blank">久久99精品国产麻豆婷婷</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>