锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久综合免费视频,最新亚洲视频,美女脱光内衣内裤视频久久网站http://m.shnenglu.com/keigoliye/category/11700.html涓鍒囬兘鏄焊鑰佽檸zh-cnWed, 09 Dec 2009 13:29:16 GMTWed, 09 Dec 2009 13:29:16 GMT60erlang緹?009-12-7鏃ュ叧浜庣敤鍏朵粬璇█瀹炵幇erlang妯″紡鐨勮亰澶╄褰?/title><link>http://m.shnenglu.com/keigoliye/archive/2009/12/07/102764.html</link><dc:creator>鏆楀鏁欑埗</dc:creator><author>鏆楀鏁欑埗</author><pubDate>Mon, 07 Dec 2009 15:49:00 GMT</pubDate><guid>http://m.shnenglu.com/keigoliye/archive/2009/12/07/102764.html</guid><wfw:comment>http://m.shnenglu.com/keigoliye/comments/102764.html</wfw:comment><comments>http://m.shnenglu.com/keigoliye/archive/2009/12/07/102764.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/keigoliye/comments/commentRss/102764.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/keigoliye/services/trackbacks/102764.html</trackback:ping><description><![CDATA[2009-12-7 22:19:36 LinkTalk.NET(909327571)<br>鏆楀鏁欑埗錛?浣犺鐨?涓囪繛鎺ワ紝姣忎釜榪炴帴姣忕鍙?K鍖呭悧錛?br><br>2009-12-7 22:19:49 鏆楀鏁欑埗(199033)<br>en <br><br>2009-12-7 22:19:49 jack(357794482)<br>灝辨槸鍚庨潰鍑芥暟鎵ц瀹屾垚涔嬪悗鐨勭粨鏋滅粰鍓嶉潰鐨勫師瀛愬悧 <br><br>2009-12-7 22:20:54 LinkTalk.NET(909327571)<br>鏈哄櫒閰嶇疆濡備綍錛熻繕鏈?涓囦釜瀹㈡埛绔浣曟ā鎷熺殑錛?br><br>2009-12-7 22:21:41 鏆楀鏁欑埗(199033)<br>鏈哄櫒鏄疉MD 鍙屾牳 3200+<br><br>2009-12-7 22:21:50 LinkTalk.NET(909327571)<br>鍙﹀灝辨槸姣忎釜榪炴帴涓婄殑鏃墮棿闂撮殧涓?縐掞紝娌℃湁寤惰繜鍚楋紵<br><br>2009-12-7 22:22:12 鏆楀鏁欑埗(199033)<br>鍐呭瓨鏄?G錛屾搷浣滅郴緇焨buntu 9.10<br><br>2009-12-7 22:22:53 鏆楀鏁欑埗(199033)<br>鎴戜漢涓虹殑娌″仛榪欑寤惰繜<br><br>2009-12-7 22:23:04 鏆楀鏁欑埗(199033)<br>鏈嶅姟鍣ㄥ拰瀹㈡埛绔兘鏄繖涓厤緗?br><br>2009-12-7 22:23:16 鏆楀鏁欑埗(199033)<br>瀹㈡埛绔槸鐢╡rlang妯℃嫙騫跺彂<br><br>2009-12-7 22:23:39 鏆楀鏁欑埗(199033)<br>涓嶈繃鍒涘緩6W涓繛鎺ヨ姳璐逛簡涓瀹氱殑鏃墮棿<br><br>2009-12-7 22:24:09 鏆楀鏁欑埗(199033)<br>瀵瑰摝錛岃繖鏍峰氨涓嶆槸6涓囦釜涓璧峰茍鍙戝嚭鏉ョ殑<br><br>2009-12-7 22:24:09 LinkTalk.NET(909327571)<br>澶ф澶氫箙錛?br><br>2009-12-7 22:24:19 鏆楀鏁欑埗(199033)<br>娌$粺璁℃椂闂?br><br>2009-12-7 22:24:42 鏆楀鏁欑埗(199033)<br>榪欓噷瀛樺湪闂浜?br><br>2009-12-7 22:25:27 鏆楀鏁欑埗(199033)<br>鍏跺疄騫跺彂搴旇鏄?榪炴帴鏁?/ 鍒涘緩騫跺彂鐨勬椂闂?br><br>2009-12-7 22:25:27 LinkTalk.NET(909327571)<br>浠涔堥棶棰橈紵<br><br>2009-12-7 22:25:49 LinkTalk.NET(909327571)<br>榪欎釜鏃犳墍璋?br><br>2009-12-7 22:26:08 LinkTalk.NET(909327571)<br>鍙浣犲叏閮ㄨ繛鎺ュ垱寤哄ソ鍚庝竴鐩翠繚鎸佷綇灝卞彲浠ヤ簡<br><br>2009-12-7 22:26:23 鏆楀鏁欑埗(199033)<br>涓鐩翠繚鎸佷篃涓嶆槸6涓囧悓鏃?br><br>2009-12-7 22:26:32 鏆楀鏁欑埗(199033)<br>鍒涘緩榪炴帴鏈夋椂宸?br><br>2009-12-7 22:26:35 LinkTalk.NET(909327571)<br>6涓囦釜濡傛灉鑳藉1k/s鐨勪繚鎸?8灝忔椂鐨勮瘽錛岄潪甯哥墰閫間簡<br><br>2009-12-7 22:26:38 鏆楀鏁欑埗(199033)<br>閭d箞鍙戠敓鏁版嵁涔熸湁鏃跺樊<br><br>2009-12-7 22:27:53 LinkTalk.NET(909327571)<br>浣犻氳繃浠涔堟柟寮忓仛鍒伴棿闅斾竴縐掑彂涓嬈℃暟鎹殑錛?br><br>2009-12-7 22:28:32 LinkTalk.NET(909327571)<br>sleep鍚楋紵<br><br>2009-12-7 22:29:19 LinkTalk.NET(909327571)<br>浣犳湁娌℃湁鐪嬩竴涓嬬綉鍗$殑甯﹀娑堣?br><br>2009-12-7 22:29:37 LinkTalk.NET(909327571)<br>鎸夐亾鐞嗗簲璇?k * 6涓?= 60M/s<br><br>2009-12-7 22:30:12 LinkTalk.NET(909327571)<br>濡傛灉杈懼埌60M浠ヤ笂鍩烘湰綆楁槸鐪熸鐨勭ǔ瀹氱殑瀹炵幇浜?涓囧茍鍙?br><br>2009-12-7 22:30:34 鏆楀鏁欑埗(199033)<br>client閭h竟鏄垜鍚屼簨鍐欑殑<br><br>2009-12-7 22:30:39 鏆楀鏁欑埗(199033)<br>鎴戜笉鐭ラ亾鏄笉鏄痵leep<br><br>2009-12-7 22:30:52 鏆楀鏁欑埗(199033)<br>甯﹀娑堣楁垜榪樹篃鐪熸病鐪?br><br>2009-12-7 22:30:53 LinkTalk.NET(909327571)<br>erlang閲岄潰濂藉儚涔熷氨鍙湁sleep浜?br><br>2009-12-7 22:31:06 鏆楀鏁欑埗(199033)<br>鎴戜及璁′笉鏄?br><br>2009-12-7 22:31:52 LinkTalk.NET(909327571)<br>鍙﹀鎴戞鐤戝綋騫跺彂楂樹簡浠ュ悗錛宻leep浼氫笉鍑嗭紝鐪熸鐨勯棿闅旇偗瀹氫細澶т簬sleep鐨勬椂闂?br><br>2009-12-7 22:32:50 鏆楀鏁欑埗(199033)<br>鎭╋紝紜疄鏈夊緟楠岃瘉<br><br>2009-12-7 22:33:04 鏆楀鏁欑埗(199033)<br>涓嶈繃鍙湁鐢ㄥ簲鐢ㄦ潵楠岃瘉浜?br><br>2009-12-7 22:33:14 鏆楀鏁欑埗(199033)<br>絳夐」鐩笂綰夸簡錛岀湅鐪嬪疄闄呮儏鍐?br><br>2009-12-7 22:33:17 LinkTalk.NET(909327571)<br>鍡紝鍛靛懙<br><br>2009-12-7 22:33:24 LinkTalk.NET(909327571)<br>浣犱滑榪欎釜鐢ㄥ湪浠涔堥」鐩笂椹紵<br><br>2009-12-7 22:33:27 LinkTalk.NET(909327571)<br>涓婇潰<br><br>2009-12-7 22:33:30 LinkTalk.NET(909327571)<br>娓告垙鍚楋紵<br><br>2009-12-7 22:33:31 鏆楀鏁欑埗(199033)<br>鎭╋紝娓告垙鐨?br><br>2009-12-7 22:34:48 LinkTalk.NET(909327571)<br>[琛ㄦ儏]<br><br>2009-12-7 22:34:59 鏆楀鏁欑埗(199033)<br>涓嶈繃椋庨櫓涔熷緢澶?br><br>2009-12-7 22:35:15 LinkTalk.NET(909327571)<br>涓轟粈涔堬紵<br><br>2009-12-7 22:35:24 鏆楀鏁欑埗(199033)<br>娌″仛榪?br><br>2009-12-7 22:35:28 鏆楀鏁欑埗(199033)<br>娌℃湁鎴愮啛欏圭洰鐨勭粡楠?br><br>2009-12-7 22:35:29 LinkTalk.NET(909327571)<br>鍛靛懙<br><br>2009-12-7 22:35:32 鏆楀鏁欑埗(199033)<br>浠涔堥兘鏈夊彲鑳藉彂鐢?br><br>2009-12-7 22:35:45 LinkTalk.NET(909327571)<br>浼犵粺鐨勬父鎴忔湇鍔″櫒錛屽崟鍙板埌涓や笁涓囧茍鍙戝凡緇忓緢鐗沊浜?br><br>2009-12-7 22:35:50 鏆楀鏁欑埗(199033)<br>鏈煡鍥犵礌澶<br><br>2009-12-7 22:36:00 鏆楀鏁欑埗(199033)<br>鎴戜及璁?W榪樿兘涓?br><br>2009-12-7 22:36:00 LinkTalk.NET(909327571)<br>鑰屼笖紜歡榪樹笉宸殑鎯呭喌涓?br><br>2009-12-7 22:36:11 LinkTalk.NET(909327571)<br>娓告垙鐨勬暟鎹氫俊閲忔瘮杈冨ぇ<br><br>2009-12-7 22:36:22 LinkTalk.NET(909327571)<br>鍡?br><br>2009-12-7 22:36:30 鏆楀鏁欑埗(199033)<br>娌¤繃6W鏄洜涓哄鎴風鐨勭鍙e熀鏈笂娌′簡<br><br>2009-12-7 22:36:45 LinkTalk.NET(909327571)<br>榪欎釜涓嶄細鍟?br><br>2009-12-7 22:36:51 LinkTalk.NET(909327571)<br>瀹㈡埛绔鍙f病鏈夊叧緋葷殑<br><br>2009-12-7 22:36:55 鏆楀鏁欑埗(199033)<br>鏈夊惂<br><br>2009-12-7 22:36:59 LinkTalk.NET(909327571)<br>鍥犱負IP涓嶄竴鏍?br><br>2009-12-7 22:37:11 鏆楀鏁欑埗(199033)<br>涓嶆槸銆傛垜嫻嬭瘯鐨勬椂鍊?br><br>2009-12-7 22:37:15 LinkTalk.NET(909327571)<br>鍚屼竴涓狪P鏈?5535涓鍙g殑闄愬埗<br><br>2009-12-7 22:37:18 鏆楀鏁欑埗(199033)<br>6涓囦釜榪炴帴浠庝竴鍙版満鍣ㄦ潵鐨?br><br>2009-12-7 22:37:18 LinkTalk.NET(909327571)<br>鍝︼紝浜嗚В<br><br>2009-12-7 22:37:23 LinkTalk.NET(909327571)<br>鍡?br><br>2009-12-7 22:37:54 david(258667581)<br>鏈嶅姟鍣ㄧ鍙洃鍚竴涓鍙?搴旇涓嶄細鏈夌鍙f暟闄愬埗鍚э紵<br><br>2009-12-7 22:38:24 LinkTalk.NET(909327571)<br>鏈嶅姟鍣ㄧ涓嶄細<br><br>2009-12-7 22:38:50 david(258667581)<br>鍋氭父鎴忕殑璇?涓嶆槸閮介泹鍜屽鏈嶅姟鍣ㄥ悧<br><br>2009-12-7 22:38:55 david(258667581)<br>閮藉仛鐨勬湇鍔″櫒鍚?br><br>2009-12-7 22:39:24 鏆楀鏁欑埗(199033)<br>銆傘傘?br><br>2009-12-7 22:39:32 鏆楀鏁欑埗(199033)<br>鎴戞槸鍋氭祴璇?br><br>2009-12-7 22:39:36 david(258667581)<br>鍙﹀ 濡傛灉绔彛socket灞炴ц緗畆euse涓簍rue 鏄惁鍙互瓚呰繃6W绔彛<br><br>2009-12-7 22:39:48 LinkTalk.NET(909327571)<br>涓嶄細<br><br>2009-12-7 22:39:53 鏆楀鏁欑埗(199033)<br>鏈嶅姟鍣ㄧ鏄竴鍙版満鍣紝瀹㈡埛绔篃鏄竴鍙版満鍣?br><br>2009-12-7 22:39:56 LinkTalk.NET(909327571)<br>閭d釜鏄拡瀵逛笉鍚岀殑protocol<br><br>2009-12-7 22:40:02 鏆楀鏁欑埗(199033)<br>瀹㈡埛绔彂璧?W涓繛鎺?br><br>2009-12-7 22:40:19 鏆楀鏁欑埗(199033)<br>灝辮鍗犵敤6W澶氫釜绔彛<br><br>2009-12-7 22:40:18 david(258667581)<br>涓嶅悓鐨刾rotocol鏄粈涔堟剰鎬?br><br>2009-12-7 22:40:35 LinkTalk.NET(909327571)<br>tcp 鍜?udp 鍙互reuse鍚屼竴涓猵ort<br><br>2009-12-7 22:41:09 LinkTalk.NET(909327571)<br>erlang鍏跺疄鎴戝彧鏄ぇ姒傜殑浜嗚В<br><br>2009-12-7 22:41:22 LinkTalk.NET(909327571)<br>鎴戞墦綆楃敤C#鍜孞ava妯℃嫙erlang<br><br>2009-12-7 22:41:26 david(258667581)<br>紼嬪簭a璇曠敤绔彛2000 tcp榪?鐒跺悗 紼嬪簭b鐢?000绔彛udp鍐嶈繛鎺ュ彟澶栦竴涓▼搴忥紵<br><br>2009-12-7 22:41:36 david(258667581)<br>妯℃嫙錛?br><br>2009-12-7 22:41:40 LinkTalk.NET(909327571)<br>鍡?br><br>2009-12-7 22:41:47 LinkTalk.NET(909327571)<br>鎴戝凡緇忕敤C#瀹炵幇浜?br><br>2009-12-7 22:41:47 david(258667581)<br>鎬庝箞妯℃嫙錛?br><br>2009-12-7 22:41:59 LinkTalk.NET(909327571)<br>灝辨槸Actor妯″紡<br><br>2009-12-7 22:42:07 LinkTalk.NET(909327571)<br>鑷繁瀹炵幇娑堟伅鐨勮皟搴?br><br>2009-12-7 22:42:15 LinkTalk.NET(909327571)<br>榪樻湁瀹炵幇寮傛緙栫▼鎺ュ彛<br><br>2009-12-7 22:42:41 david(258667581)<br>actor妯″紡鏄粈涔堟剰鎬?br><br>2009-12-7 22:42:59 LinkTalk.NET(909327571)<br>涓縐嶈蔣浠惰璁℃ā寮?br><br>2009-12-7 22:43:16 LinkTalk.NET(909327571)<br>erlang/scala絳夊茍鍙戝鉤鍙伴兘鏄痑ctor妯″紡<br><br>2009-12-7 22:44:06 david(258667581)<br>涓嶆噦<br><br>2009-12-7 22:44:25 david(258667581)<br>涓轟粈涔堣鐢╟#妯℃嫙錛?br><br>2009-12-7 22:44:33 LinkTalk.NET(909327571)<br>鍥犱負鎴戠啛鎮(zhèn)塁#<br><br>2009-12-7 22:44:39 LinkTalk.NET(909327571)<br>涔熸墦綆楃敤java妯℃嫙<br><br>2009-12-7 22:45:01 LinkTalk.NET(909327571)<br>鍚屾椂涔熷洜涓篊#/Java鏈夊ぇ閲忕殑寮鍙戜漢鍛樺拰涓板瘜鐨勭涓夋柟鎵╁睍<br><br>2009-12-7 22:45:25 LinkTalk.NET(909327571)<br>鍚屾椂涔熸湁寰堢埥鐨処DE<br><br>2009-12-7 22:45:26 LinkTalk.NET(909327571)<br>錛氾級<br><br>2009-12-7 22:45:42 david(258667581)<br>鏄?浣嗘槸鎰熻濡傛灉浣犳槸瑕佹祴鎬ц兘鐨勮瘽 c#鐨勬ц兘鍙兘璺熶笉涓奺rlang鍟?br><br>2009-12-7 22:45:49 david(258667581)<br>鐢╟鐨勯兘浼氬ソ浜?br><br>2009-12-7 22:46:01 LinkTalk.NET(909327571)<br>鍏跺疄erlang璇█鏈韓鎬ц兘涓嶈寰楅珮錛屽洜涓烘槸鑴氭湰璇█<br><br>2009-12-7 22:46:15 LinkTalk.NET(909327571)<br>楂樺茍鍙戞槸鍥犱負綰秷鎭紶閫掞紝鍙互鏈夋晥鐨勯伩鍏嶆閿?br><br>2009-12-7 22:46:27 LinkTalk.NET(909327571)<br>浼犵粺璇█姣斿c/c++瑕侀伩鍏嶆閿佹瘮杈冮毦<br><br>2009-12-7 22:46:49 LinkTalk.NET(909327571)<br>緇欏ぇ瀹剁湅鑰佸鐨勪竴涓祴璇曟暟鎹?br><br>2009-12-7 22:46:57 LinkTalk.NET(909327571)<br>erlang鍏跺疄綆楁槸鎵ц鏁堢巼鐩稿姣旇緝宸殑<br><br>2009-12-7 22:47:20 david(258667581)<br>鍝噷 erlang鐨勬ц兘搴旇鏄彲浠ヨ窡c鍙澘鐨?br><br>2009-12-7 22:48:04 LinkTalk.NET(909327571)<br>http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=csharp&lang2=hipe&box=1<br><br>2009-12-7 22:48:16 LinkTalk.NET(909327571)<br>榪欎釜閲岄潰鏈夊緢澶氳璦鐨勬ц兘嫻嬭瘯姣旇緝<br><br>2009-12-7 22:48:23 LinkTalk.NET(909327571)<br>erlang綆楁槸姣旇緝宸殑<br><br>2009-12-7 22:49:02 LinkTalk.NET(909327571)<br>浼犵粺璇█杈句笉鍒伴珮騫跺彂鏄洜涓烘棤娉曟湁鏁堢殑閬垮厤姝婚攣錛岃繕鏈塩pu璋冨害鍋氬緱涓嶅ソ<br><br>2009-12-7 22:50:17 鏆楀鏁欑埗(199033)<br>鎭╋紝C濡傛灉浣跨敤erlang鐨勬ā寮?br><br>2009-12-7 22:50:26 鏆楀鏁欑埗(199033)<br>緇濆涓嶄細杈?br><br>2009-12-7 22:50:29 LinkTalk.NET(909327571)<br>鍡?br><br>2009-12-7 22:50:37 LinkTalk.NET(909327571)<br>erlang鏈韓灝辨槸C鍐欑殑<br><br>2009-12-7 22:50:41 鏆楀鏁欑埗(199033)<br>鎭?br><br>2009-12-7 22:50:54 LinkTalk.NET(909327571)<br>鎴戣寰楀浗鍐呭ソ鍍忔湁涓墰浜哄湪鐮旂┒鐢–++妯℃嫙erlang<br><br>2009-12-7 22:51:00 LinkTalk.NET(909327571)<br>濂藉儚鏄洓澶х殑涓涓灦鏋勫笀<br><br>2009-12-7 22:51:13 鏆楀鏁欑埗(199033)<br>璨屼技鐜板湪鍋歭inux涓嬪仛鏈嶅姟鍣ㄧ寰楋紝C姣擟++澶氫簡<br><br>2009-12-7 22:51:20 LinkTalk.NET(909327571)<br>鍡?br><br>2009-12-7 22:51:29 LinkTalk.NET(909327571)<br>linux涓媍澶?br><br>2009-12-7 22:51:36 鏆楀鏁欑埗(199033)<br>鎴戣寰楀ソ鍍忎簯椋庢妸澶ц瘽瑗挎父鐨勬湇鍔″櫒绔敼鎴怌浜?br><br>2009-12-7 22:52:28 灝忕敓鍟婄墮(86753957)<br>51.com鐨勬湇鍔″櫒灝辨槸鐢–++妯℃嫙erlang鐨?br><br>2009-12-7 22:52:50 灝忕敓鍟婄墮(86753957)<br>浣跨敤鍗忕▼<br><br>2009-12-7 22:53:59 LinkTalk.NET(909327571)<br>鍡紝鍗忕▼鍙互鍦ㄤ紶緇熺殑闈㈠悜榪囩▼鐨勭嚎紼嬩笂妯℃嫙寮傛鎿嶄綔<br><br>2009-12-7 22:55:05 LinkTalk.NET(909327571)<br>鍏跺疄楂樺茍鍙戝彧鏄竴縐嶈璁℃ā寮?br><br>2009-12-7 22:55:19 LinkTalk.NET(909327571)<br>erlang鎶婅繖涓璁℃ā寮忓浐鍖栧茍寮哄埗鍒拌娉曢噷浜?br><br>2009-12-7 22:56:22 LinkTalk.NET(909327571)<br>C#2.0寮濮嬫湁涓柊鐨勭壒鎬э紝鍙玦terator錛岄氳繃yield鍏抽敭瀛楁潵瀹炵幇coroutine錛堝崗紼嬶級<br><br>2009-12-7 22:56:39 LinkTalk.NET(909327571)<br>騫朵笖鍦ㄨ娉曚笂涔熷彲浠ョ敤榪炶瘡鐨勫艦寮忔潵瀹炵幇寮傛鐨勬搷浣?br><br>2009-12-7 22:56:49 LinkTalk.NET(909327571)<br>鍜宔rlang鐨勫艦寮忕被浼?br><br>2009-12-7 22:57:10 LinkTalk.NET(909327571)<br>java閲岄潰鐩墠鍙湁anonymous class鍙互瀹炵幇寮傛璋冪敤<br><br>2009-12-7 22:57:44 LinkTalk.NET(909327571)<br>浣嗘槸閭d釜璇硶鍐欒搗鏉ユ湁浜涚壍寮猴紝鑺辨嫭鍙蜂細瓚婂祵瓚婃繁<br><br>2009-12-7 22:59:19 LinkTalk.NET(909327571)<br>鎴戠敤C#瀹炵幇鐨刟ctor妯″紡涔熷彲浠ュ鐞嗘瘡鍒嗛挓澶ф200涓囨潯娑堟伅錛堝湪PC涓婏級<br><br>2009-12-7 22:59:24 LinkTalk.NET(909327571)<br>AMD鍙屾牳<br><br>2009-12-7 23:00:28 LinkTalk.NET(909327571)<br>涔熸祴璇曡繃HTTP 璇鋒眰錛屽ぇ姒傚彲浠ヨ揪鍒?涓囧騫跺彂錛屼笉榪囨槸6縐掍竴涓姹傦紙sleep6縐掞紝瀹為檯浼氬歡榪熷埌10縐掍互涓婏級錛宑pu鍗犵敤40-60<br><br>2009-12-7 23:01:54 LinkTalk.NET(909327571)<br>姣忓垎閽?00涓囨秷鎭槸鏈綆鍗曠殑ping/pong嫻嬭瘯<br><br>2009-12-7 23:06:12 david(258667581)<br>浠ュ墠娌″惉璇磋繃 鍗忕▼ 鍛靛懙<br><br>2009-12-7 23:06:33 LinkTalk.NET(909327571)<br>鏄惁鏈夊崗紼嬫棤鎵璋撶殑<br><br>2009-12-7 23:07:14 LinkTalk.NET(909327571)<br>鍏抽敭鏄函娑堟伅浼犻掞紙閬垮厤姝婚攣錛夎繕鏈夌嚎紼嬪悎鐞嗘湁鏁堢殑璋冨害錛堝疄鐜伴珮鏁堢殑寮傛澶勭悊錛?br><br>2009-12-7 23:07:35 david(258667581)<br>鎭?鍏抽敭鏄伩寮閿?br><br>2009-12-7 23:08:04 LinkTalk.NET(909327571)<br>騫舵渶濂藉啀鑳藉鍦ㄨ娉曚笂灝嗗紓姝ユ搷浣滅敤欏哄簭鍖栫殑浠g爜鏉ヨ〃紺?br><br>2009-12-7 23:08:22 LinkTalk.NET(909327571)<br>瀹炲湪涓嶈涔熸棤鎵璋擄紝鍙互鐢╡vent handler鐨勬柟寮?br><br>2009-12-7 23:08:48 david(258667581)<br>鑳藉惁涓句竴涓紓姝ユ搷浣滅殑鍏蜂綋搴旂敤鍦烘櫙錛?br><br>2009-12-7 23:09:08 LinkTalk.NET(909327571)<br>寰堝閮芥槸寮傛鎿嶄綔錛堥偅鏍稩O鎵嶅彲浠ュ仛鍒伴珮鏁堬級<br><br>2009-12-7 23:09:19 LinkTalk.NET(909327571)<br>姣斿epoll鍜寃indows鐨刬ocp<br><br>2009-12-7 23:09:22 LinkTalk.NET(909327571)<br>閮芥槸寮傛鐨?br><br>2009-12-7 23:09:44 LinkTalk.NET(909327571)<br>綆鍗曠殑鍘熺悊灝辨槸璋冪敤鍑芥暟閫掍氦鎴栨敞鍐屼竴涓狪O璇鋒眰鍒扮郴緇熷唴鏍?br><br>2009-12-7 23:09:45 david(258667581)<br>鏄笉鏄兘鏄簳灞傜殑<br><br>2009-12-7 23:09:55 LinkTalk.NET(909327571)<br>鐒跺悗涓嶉渶瑕侀樆濉烇紝绔嬪嵆榪斿洖<br><br>2009-12-7 23:10:17 LinkTalk.NET(909327571)<br>緋葷粺IO鍐呮牳鏀跺埌鏁版嵁鎴栫浉鍏崇殑浜嬩歡浼氳Е鍙戝綋鍒濇敞鍐岀殑鍥炶皟鍑芥暟<br><br>2009-12-7 23:10:59 LinkTalk.NET(909327571)<br>璋冪敤璇鋒眰 鍜?鏁版嵁榪斿洖鎴栦簨浠惰Е鍙?涓嶅湪鍚屼竴涓搷浣滅郴緇熺嚎紼嬩笂瀹屾垚錛屽氨縐頒負寮傛<br><br>2009-12-7 23:11:13 LinkTalk.NET(909327571)<br>寮傛鐨処O鎵嶆瘮杈冮珮鏁?br><br>2009-12-7 23:11:37 LinkTalk.NET(909327571)<br>鎿嶄綔緋葷粺鐨勭嚎紼嬫暟鏈夐檺鍒?br><br>2009-12-7 23:11:42 david(258667581)<br>榪欎簺閮戒笉闅?鏃犺鏄痡ava鍜宑#榪樻槸c錛岄兘宸茬粡鏈変笓闂ㄧ殑api鏀拺浜?br><br>2009-12-7 23:11:51 david(258667581)<br>鍏抽敭鏄笟鍔′笂鐨勬搷浣?<br><br>2009-12-7 23:11:55 LinkTalk.NET(909327571)<br>涓鑸笂浜嗗崈浠ュ悗錛岀嚎紼嬬殑鏁堢巼灝辨瘮杈冨樊浜?br><br>2009-12-7 23:11:58 david(258667581)<br>閿佺殑閮芥槸涓氬姟<br><br>2009-12-7 23:12:02 LinkTalk.NET(909327571)<br>鑰屼笖寰堣梒pu鍜屽唴瀛?br><br>2009-12-7 23:12:23 LinkTalk.NET(909327571)<br>鎵浠ヨ閫氳繃鍚堢悊鐨勮皟搴﹀拰寮傛鎿嶄綔鏉ュ垎浜疂璐電殑鎿嶄綔緋葷粺綰跨▼<br><br>2009-12-7 23:12:51 LinkTalk.NET(909327571)<br>涓ユ牸閬靛畧actor妯″紡鍙互鏈夋晥鐨勯伩鍏嶆閿?<br><br>2009-12-7 23:13:04 david(258667581)<br>[琛ㄦ儏]<br><br>2009-12-7 23:14:34 LinkTalk.NET(909327571)<br>鎴戜篃鍦ㄦ懜绱㈠拰灝濊瘯錛宔rlang鐨勬秷鎭皟搴﹀拰鍒嗗竷寮忔敮鎸佹槸鐩墠鏈濂界殑<br><br>2009-12-7 23:14:49 LinkTalk.NET(909327571)<br>scala涔熶笉閿欙紝twitter灝辨斁寮僥rlang杞悜scala<br><br>2009-12-7 23:15:00 LinkTalk.NET(909327571)<br>浣嗘槸scala鍦ㄥ垎甯冨紡鏀寔鏂歸潰涓嶅強erlang<br><br>2009-12-7 23:15:30 LinkTalk.NET(909327571)<br>浣嗘槸scala鏈夋渶澶х殑濂藉灝辨槸鍩轟簬JVM錛屽彲浠ュ埄鐢╦ava鐨勫悇縐嶅ソ澶?br><br>2009-12-7 23:15:33 david(258667581)<br>鍒嗗竷寮忎互鍚庢槸瓚嬪娍 鎵浠ユ劅瑙塭rlang鐨勭敓鍛藉姏搴旇榪樻槸寰堝己鐨?br><br>2009-12-7 23:15:44 LinkTalk.NET(909327571)<br>鍡紝鍒嗗竷寮忓叾瀹炲叾浠栬璦涔熷彲浠ュ仛鐨?br><br>2009-12-7 23:16:05 LinkTalk.NET(909327571)<br>鍙槸erlang宸茬粡鍋氫簡鍗佸嚑騫翠簡<br><br>2009-12-7 23:16:19 LinkTalk.NET(909327571)<br>鍏朵粬璇█涔熻偗瀹氫細閫愭笎鏀寔鐨?br><br>2009-12-7 23:16:25 david(258667581)<br>鎭?br><br>2009-12-7 23:16:43 LinkTalk.NET(909327571)<br>浣嗘槸鎴戜釜浜烘瘮杈冭寰楅仐鎲劇殑鏄痚rlang鐨勮娉曞拰緙栫▼妯″紡<br><br>2009-12-7 23:17:08 LinkTalk.NET(909327571)<br>濡傛灉erlang浠g爜涓婂埌涓瀹氱殑閲忎互鍚庣淮鎶ゅ拰璋冭瘯灝辯浉褰撻夯鐑︿簡<br><br>2009-12-7 23:17:11 david(258667581)<br>璇硶涔犳儻浜嗗氨濂?鍏抽敭鏄浜庣粨鏋勭殑鏀寔<br><br>2009-12-7 23:17:17 david(258667581)<br>鍙鎬уお宸?br><br>2009-12-7 23:17:31 LinkTalk.NET(909327571)<br>鍡紝鏁版嵁緇撴瀯琛ㄧ幇鍔涗篃涓嶅涓板瘜<br><br>2009-12-7 23:17:35 LinkTalk.NET(909327571)<br>閮芥槸tuple<br><br>2009-12-7 23:17:43 LinkTalk.NET(909327571)<br>鐪肩潧瑕佺湅鑺變簡<br><br>2009-12-7 23:19:09 david(258667581)<br>寮鍙戠幆澧冧篃娌¤窡涓?娌℃湁寰堝ソ鐨処DE<br><br>2009-12-7 23:19:16 LinkTalk.NET(909327571)<br>鍡?br><br>2009-12-7 23:19:37 LinkTalk.NET(909327571)<br>鑴氭湰璇█閲嶆瀯璧鋒潵灝辯浉褰撻夯鐑︿簡<br><br>2009-12-7 23:19:57 T.t.T!Ck.錕?(121787333)<br>鏈変竴涓佸涔熺敤C#鏉ユā鎷焑rlang鐨勬ā寮?br><br>2009-12-7 23:20:06 LinkTalk.NET(909327571)<br>鍥犱負鏃犵被鍨嬶紝鏃犳硶鍙嶅皠鍏冩暟鎹紝娌℃湁鍔炴硶鑷姩鐢熸垚鏂囨。錛屾洿闅鵑噸鏋?br><br>2009-12-7 23:20:07 Lenn(28663)<br>ERLANG璺烰ava涓鏍鋒槸緙栬瘧鎬佽璦錛屾庝箞鎴愯剼鏈璦浜?br><br>2009-12-7 23:20:22 LinkTalk.NET(909327571)<br>erlang涓ユ牸鏉ヨ鏄剼鏈?br><br>2009-12-7 23:20:31 LinkTalk.NET(909327571)<br>寮辯被鍨嬬殑鍩烘湰閮芥槸鑴氭湰<br><br>2009-12-7 23:20:44 LinkTalk.NET(909327571)<br>鍖呮嫭php涔熷彿縐版敮鎸佺紪璇?br><br>2009-12-7 23:20:47 LinkTalk.NET(909327571)<br>鍏跺疄榪樻槸鑴氭湰<br><br>2009-12-7 23:21:16 Lenn(28663)<br>bin code鍙湁200澶氭潯鎸囦護錛屽睘浜庡吀鍨嬬殑涓棿澶璦錛屾晥鐜囦笉浼氭瘮Java宸灝?br><br>2009-12-7 23:21:34 LinkTalk.NET(909327571)<br>鍡?br><br>2009-12-7 23:21:48 LinkTalk.NET(909327571)<br>鎴戣寰椾換浣曚笢瑗塊兘鏈夊緱蹇呮湁澶?br><br>2009-12-7 23:21:57 LinkTalk.NET(909327571)<br>涓鏂歸潰澶己浜嗭紝姣斿鏈夊叾浠栫殑緙洪櫡<br><br>2009-12-7 23:22:06 LinkTalk.NET(909327571)<br>灝辯湅鑷繁鐨勫枩濂藉拰鍏蜂綋鐨勫簲鐢ㄥ満鏅簡<br><br>2009-12-7 23:22:08 Lenn(28663)<br>鍥懼艦澶急<br><br>2009-12-7 23:22:47 Lenn(28663)<br>璋冭瘯璧鋒潵鏈鐖斤紝涓氬姟鎯沖浜嗗熀鏈笉浼氱紪紼嬩粠鍑洪敊<br><br>2009-12-7 23:23:16 LinkTalk.NET(909327571)<br>鍡?br><br>2009-12-7 23:24:26 Lenn(28663)<br>鎴戜滑灝辨槸涓涓渚嬶紝鐢吉錛★級錛″仛鐨勪笢瑗匡紝鐜板湪榪樹笉鍋滄敼浠g爜錛岋譏锝掞綄锝侊綆锝囬偅涓鍧楋紝瑕佹敼涔熷彧鏄嚑琛屼竴浼氱殑浜嬫儏<br><br>2009-12-7 23:25:17 jack(357794482)<br>鍏跺疄榪欑浜嬫儏瑕佺湅浣犲璇█鐨勫鐞嗚兘鍔?<br><br>2009-12-7 23:25:20 LinkTalk.NET(909327571)<br>鍡?br><br>2009-12-7 23:25:35 LinkTalk.NET(909327571)<br>google鐨勯甯灦鏋勫笀鏄悶java鐨?br><br>2009-12-7 23:25:41 LinkTalk.NET(909327571)<br>鍏跺疄榪欎釜鐪嬪叿浣撴儏鍐電殑<br><br>2009-12-7 23:26:17 Lenn(28663)<br>鐢ㄤ粈涔堣繕鏈夊巻鍙插師鍥狅紝姣斿鏂扮殑facebook寰堝鐢‥rlang<br><br>2009-12-7 23:26:33 Lenn(28663)<br>鍥犱負鍋氬ソ鐨勪笢瑗挎洿鏀硅璦鏄釜澶ч棶棰?br><br>2009-12-7 23:26:36 LinkTalk.NET(909327571)<br>浣嗘槸鏇存柊鐨則witter鐢眅rlang杞悜浜唖cala<br><br>2009-12-7 23:26:58 LinkTalk.NET(909327571)<br>鍙﹀erlang鍗佸嚑騫翠簡錛屽埌浠婂ぉ鎵嶇孩錛屼篃鏄湁涓瀹氱殑鍘熷洜鐨?br><br>2009-12-7 23:27:13 LinkTalk.NET(909327571)<br>erlang鏈夐潪甯哥獊鍑虹殑浼樺娍錛屼絾鏄篃瀛樺湪涓浜涗笉澶熷畬緹庣殑鍦版柟<br><br>2009-12-7 23:29:04 Lenn(28663)<br>鐜板湪紺懼尯涔熸尯媧昏穬錛屼笟鍔℃湁姣旇緝寮虹殑浼樺娍<br><br>2009-12-7 23:29:37 LinkTalk.NET(909327571)<br>鍡紝鏄殑錛涳級<br><br>2009-12-7 23:29:57 LinkTalk.NET(909327571)<br>鎵浠ュ氨綆楀叾浠栬璦鐨勫紑鍙戜漢鍛樹篃寮濮嬩簡瑙?br><br>2009-12-7 23:30:02 LinkTalk.NET(909327571)<br>瀛︿範銆?br><br>2009-12-7 23:30:04 Lenn(28663)<br>鍥懼艦鏂歸潰鍗翠笣姣笉琛?br><br>2009-12-7 23:30:05 LinkTalk.NET(909327571)<br>鎴栨ā鎷焑rlang<br><br>2009-12-7 23:30:08 LinkTalk.NET(909327571)<br>鍡?br><img src ="http://m.shnenglu.com/keigoliye/aggbug/102764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/keigoliye/" target="_blank">鏆楀鏁欑埗</a> 2009-12-07 23:49 <a href="http://m.shnenglu.com/keigoliye/archive/2009/12/07/102764.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Patch Mnesia 浣跨敤TokyoCabinet寮曟搸紿佺牬2G瀛樺偍闄愬埗http://m.shnenglu.com/keigoliye/archive/2009/09/29/97547.html鏆楀鏁欑埗鏆楀鏁欑埗Tue, 29 Sep 2009 07:12:00 GMThttp://m.shnenglu.com/keigoliye/archive/2009/09/29/97547.htmlhttp://m.shnenglu.com/keigoliye/comments/97547.htmlhttp://m.shnenglu.com/keigoliye/archive/2009/09/29/97547.html#Feedback0http://m.shnenglu.com/keigoliye/comments/commentRss/97547.htmlhttp://m.shnenglu.com/keigoliye/services/trackbacks/97547.html涓哄暐瑕丳ATCH錛?/p>

    Mnesia鏈澶х殑緙洪櫡鏄瓨鍌ㄩ檺鍒躲傝繖涓嶆槸鏁版嵁搴撶郴緇熺殑閿欒錛屽洜涓篗nesia鑳藉鎺у埗铏氭嫙鏁版嵁鐨勫ぇ灝忋備富瑕佺殑闂鍦ㄤ簬榪囨椂鐨凟rlang DETS瀛樺偍寮曟搸錛岄熷害鎱㈠茍涓斾嬌鐢ㄧ殑32浣嶅亸縐婚噺錛堥檺鍒跺崟鏂囦歡澶у皬涓?GB錛夈?

鎬濊礬錛?/p>

    瓚呬箮鎯寵薄鐨?mnesia 琛ヤ竵鍖?mnesiaex 銆傝繖涓笢瑗胯В闄や簡鍔犲湪 mnesia 鏁版嵁搴撶郴緇熶笂鎵鏈夌殑闄愬埗(铏借涓婇潰宸茬粡鎻愬埌錛屽疄闄呬笂 mnesia 浠g爜鏈韓娌℃湁浠涔堢湡姝g殑闄愬埗)鈥斺斾綘鐜板湪鍙互鐢?SleepyCat/BerkeleyDB/MySQL/Amazon S3/Tokyo Cabinet/… 鐢氳嚦鏄綘鑷繁鍠滄鐨勬煇縐嶄笢瑗挎潵褰撲綔 mnesia 鐨勫悗绔紝灝卞儚 ets/dets 涓鏍楓傝岃闂殑鎺ュ彛浠嶄繚鎸佷笉鍙樷斺旂戶緇部鐢?mnesia 鐨勬帴鍙o紝涓琛屼篃涓嶇敤鏀廣?DIY 榪欑鎵╁睍涔熷彉寰楃浉褰撳鏄擄紝鍐欎竴涓?behavior 灝辨垚浜嗐?/p>

瀹炵幇榪囩▼

1錛氫笌浠庢簮浠g爜緙栬瘧鐨勬柟寮忓畨瑁匛rlang

tar xvf otp_src_R12B-5.tar.gz

cd otp_src_R12B-5

./configure & make & make install

娉ㄦ剰錛氭垜鐨勭郴緇熸槸RHEL 5.3錛岄粯璁ゅ畨瑁呯洰褰曚負/usr/local/erlang

2錛氬畨瑁匨nesiaex

tar xvf mnesia-4.4.7.6.tar.gz

cd mnesia-4.4.7.6

./configure --prefix=/usr/local

make

make check

make install

娉ㄦ剰錛氳繖閲屼竴瀹氳鎸囧畾prefix錛屼笉鐒跺氨瑁呭埌/usr鐩綍鍘諱簡

3錛氬畨瑁匱okyo Cabinet

tar xvf  tokyocabinet-1.4.10.tar.gz

cd tokyocabinet-1.4.10

./configure --prefix=/usr

make & make install

3錛氬畨瑁卼cerl

tar xvf tcerldrv-1.3.1e.tar.gz

cd tcerldrv-1.3.1e

./configure --prefix=/usr

make & make install

tar xvf tcerl-1.3.1e.tar.gz

cd tcerl-1.3.1e

./configure --prefix=/usr/local

make & make install

 

鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/jimmychou/archive/2009/03/13/3988468.aspx



鏆楀鏁欑埗 2009-09-29 15:12 鍙戣〃璇勮
]]>
鍏充簬Erlang鍜孲MP鐨勪竴浜涜鏄?/title><link>http://m.shnenglu.com/keigoliye/archive/2009/09/24/97172.html</link><dc:creator>鏆楀鏁欑埗</dc:creator><author>鏆楀鏁欑埗</author><pubDate>Thu, 24 Sep 2009 14:23:00 GMT</pubDate><guid>http://m.shnenglu.com/keigoliye/archive/2009/09/24/97172.html</guid><wfw:comment>http://m.shnenglu.com/keigoliye/comments/97172.html</wfw:comment><comments>http://m.shnenglu.com/keigoliye/archive/2009/09/24/97172.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/keigoliye/comments/commentRss/97172.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/keigoliye/services/trackbacks/97172.html</trackback:ping><description><![CDATA[<div id="hvzpftn" class=entry-content> <p><a ><u><font color=#0000ff>http://shiningray.cn/some-facts-about-<span id="hvzpftn" class=hilite1>erlang</span>-and-smp.html</font></u></a></p> <p>鍘熸枃錛?a ><u><font color=#0000ff>http://groups.google.com/group/<span id="hvzpftn" class=hilite1>erlang</span>-questions/browse_thread/thread/7827f5e32681ca8e</font></u></a> </p> <p>by.Kenneth <span id="hvzpftn" class=hilite1>Erlang</span>/OTP team, Ericsson<br>璇戯細<a ><u><font color=#0000ff>ShiningRay <br></font></u></a></p> <p> </p> <p>浠ヤ笅鏄竴浜?span class=hilite1>Erlang</span> SMP瀹炵幇鐨勭粏鑺傚拰涓庢ц兘涓庝幾緙╂х浉鍏充竴浜涚畝鍗曚粙緇嶃?/p> <p>鍑犲懆涔嬪唴榪樻湁鏈変竴涓叧浜庡鏍稿浣曡繍浣滀互鍙婃湭鏉ュ浣曞彂灞曠殑鏇磋緇嗙殑浠嬬粛銆傛垜鎵撶畻灝嗕竴浜涘唴瀹規(guī)斁鍦ㄦ垜鐨勬姤鍛婁腑錛屽皢浜?鏈?7鏃ョ殑ICFP2008錛?span class=hilite1>Erlang</span> Workshop鍦╒ictoria BC灞曠ず緇欏ぇ瀹躲?/p> <p>娌℃湁SMP鏀寔鐨?span class=hilite1>Erlang</span> VM鍙湁1涓繍琛屽湪涓誨鐞嗙嚎紼嬩腑鐨勮皟搴﹀櫒銆傝璋冨害鍣ㄤ粠榪愯闃熷垪錛坮un-queue錛変腑鍙栧嚭鍙互榪愯鐨?span class=hilite1>Erlang</span>榪涚▼浠ュ強IO浠誨姟錛岃屼笖鍥犱負鍙湁涓涓嚎紼嬭闂粬浠墍浠ユ棤欏婚攣瀹氫換浣曟暟鎹?/p> <p>鑰屽甫鏈塖MP鏀寔鐨?span class=hilite1>Erlang</span> VM鍙互鏈変竴涓垨澶氫釜璋冨害鍣紝姣忎釜榪愯鍦ㄤ竴涓嚎紼嬩腑銆傝皟搴﹀櫒浠庡悓涓涓叕鍏辮繍琛岄槦鍒椾腑鍙栧嚭鍙繍琛岀殑<span id="hvzpftn" class=hilite1>Erlang</span>榪涚▼鍜孖O浠誨姟銆傚湪SMP VM涓墍鏈夌殑鍏變韓鏁版嵁緇撴瀯閮戒細鐢遍攣榪涜淇濇姢錛岃繍琛岄槦鍒楀氨鏄繖鏍蜂竴涓敱閿佷繚鎶ょ殑鏁版嵁緇撴瀯銆?/p> <p>浠嶰TP R12B寮濮嬶紝濡傛灉鎿嶄綔緋葷粺鎶ュ憡鏈夊浜?涓殑CPU錛堟垨鑰呮牳蹇冿級VM鐨凷MP鐗堟湰浼氳嚜鍔ㄥ惎鍔紝騫朵笖鏍規(guī)嵁CPU鎴栬呮牳蹇冪殑鏁伴噺鍚姩鍚屾牱鏁伴噺鐨勮皟搴﹀櫒銆?/p> <p>浣犲彲浠ヤ粠“erl”鍛戒護鎵撳嵃鍑烘潵鐨勭涓琛岀湅鍒板畠閫夋嫨浜嗗摢浜涘弬鏁般備緥濡傦細</p> <pre><code> <span id="hvzpftn" class=hilite1>Erlang</span> (BEAM) emulator version 5.6.4 [source] [smp:4] [asynch-threads:0] ….. 鍏朵腑“[smp:4]”琛ㄧずSMP VM榪愯浜?涓皟搴﹀櫒銆?/code> </pre> <p>榛樿鍊煎彲浠ョ敤“-smp [enable|disable|auto]”鏉ユ浛鎹紝auto鏄粯璁ょ殑銆傚鏋渟mp琚惎鐢ㄤ簡錛?smp enable錛夛紝瑕佽緗皟搴﹀櫒鐨勬暟閲忓彲浠ヤ嬌鐢?#8220;+S Number”鍏朵腑Number鏄皟搴﹀櫒鐨勬暟閲忥紙1鍒?024錛?/p> <p>娉ㄦ剰1錛氳繍琛屽浜嶤PU鎴栨牳蹇冩繪暟鐨勮皟搴﹀櫒涓嶄細鏈変換浣曟彁鍗囥?/p> <p>娉ㄦ剰2錛氬湪鏌愪簺鎿嶄綔緋葷粺涓竴涓繘紼嬪彲浣跨敤鐨凜PU鎴栬呮牳蹇冪殑鏁伴噺鍙互琚檺鍒躲備緥濡傦紝鍦↙inux涓紝鍛戒護“taskset”灝卞彲浠ュ疄鐜拌繖涓姛鑳姐?<span id="hvzpftn" class=hilite1>Erlang</span> VM鐩墠榪樺彧鑳芥帰嫻婥PU鎴栬呮牳蹇冪殑鎬繪暟錛屼笉浼氳冭檻“taskset”鎵璁劇疆鐨勬帺鐮併傛鍥犲姝わ紝渚嬪鍙兘浼氬嚭鐜幫紙宸茬粡鍑虹幇榪囦簡錛夊嵆浣?span class=hilite1>Erlang</span> VM榪愯浜?涓皟搴﹀櫒錛屼篃鍙嬌鐢ㄤ簡2涓牳蹇冦侽S浼氳繘琛岄檺鍒跺洜涓哄畠瑕佽冭檻“taskset”鎵璁劇疆鐨勬帺鐮併?/p> <p>姣忎釜<span id="hvzpftn" class=hilite1>Erlang</span> VM鐨勮皟搴﹀櫒閮借繍琛屼簬涓涓狾S綰跨▼涓婏紝鏄疧S鏉ュ喅瀹氱嚎紼嬫槸鍚︽墽琛屽湪涓嶅悓鐨勬牳蹇冧笂銆備竴鑸潵璇碠S浼氬緢濂藉湴澶勭悊榪欎釜闂騫朵笖浼氫繚璇佺嚎紼嬪湪鎵ц鏈熼棿榪愯浜庡悓涓涓牳蹇冧笂銆?/p> <p><span id="hvzpftn" class=hilite1>Erlang</span>榪涚▼浼氳涓嶅悓鐨勮皟搴﹀櫒榪愯錛屽洜涓轟粬浠槸浠庝竴涓叕鍏辮繍琛岄槦鍒椾腑琚彇鍑猴紝鐢遍鍏堝彲鐢ㄧ殑璋冨害鍣ㄨ繍琛屻?/p> <h3>鎬ц兘鍜屼幾緙╂?/h3> <p>鍙湁涓涓皟搴﹀櫒鐨凷MP VM瑕佹瘮闈濻MP鐨刅M紼嶅井鎱㈤偅涔堜竴鐐圭偣銆係MP VM鍐呴儴闇瑕佺敤鍒板悇縐嶉攣錛屼笉榪囧彧瑕佷笉瀛樺湪閿佺殑浜夌敤錛岄偅涔堢敱閿佸紩璧風殑寮閿涓嶄細闈炲父澶э紙灝辨槸閿佷簤鐢ㄤ笂闈㈤渶瑕佽姳鏃墮棿錛夈傝繖涔熻В閲婁簡涓轟綍鍦ㄦ煇浜涙儏鍐典笅錛岃繍琛屽涓彧鏈変竴涓皟搴﹀櫒鐨凷MP VM瑕佹瘮鍖呭惈澶氫釜璋冨害鍣ㄧ殑鍗曚竴SMP VM鏇村姞楂樻晥銆傚綋鐒惰繍琛屽涓猇M瑕佹眰搴旂敤鍙互鎸夌収澶氫釜騫惰浠誨姟鐨勬柟寮忚繍琛屽茍涓斾箣闂存病鏈夋垨鑰呭嚑涔庝笉閫氳銆?/p> <p>涓涓▼搴忔槸鍚﹁兘鍦ㄥ鏍鎬笂鐨凷MP VM涓壇濂藉湴榪涜鎻愬崌寰堝ぇ紼嬪害涓婂彇鍐充簬紼嬪簭鐨勬ц川錛屾煇浜涚▼搴忓彲浠ヤ繚鎸佺嚎鎬ф彁鍗囪嚦8鏍哥敋鑷?6鏍革紝鍚屾椂鍏朵粬鏌愪簺紼嬪簭鍩烘湰涓嶈兘鎻愬崌錛岃繛2鏍擱兘涓嶈銆傚疄闄呭簲鐢ㄤ腑寰堝紼嬪簭閮借兘鍦ㄤ富嫻佸競鍦虹殑鏍稿績鏁頒笂寰楀埌鎻愬崌錛岃涓嬫枃銆?/p> <p>鑻ュ茍琛岀殑鎸佺畫“閫氳瘽”鐢辨瘡涓牳蹇冧竴涓垨澶氫釜<span id="hvzpftn" class=hilite1>Erlang</span>榪涚▼鏉ヨ〃紺猴紝瀹為檯鐨勬敮鎸佸ぇ閲忛氳瘽鐨勭數(shù)淇′駭鍝佸凡緇忓厛鐜板嚭鍦ㄥ弻鏍稿拰鍥涙牳澶勭悊鍣ㄤ笂涓嶄織鐨勪幾緙╂с傛敞鎰忥紝榪欎簺浜у搧鏄湪SMP VM鍜屽鏍稿鐞嗗櫒鍑虹幇寰堜箙浠ュ墠鎸夌収鏅氱殑<span id="hvzpftn" class=hilite1>Erlang</span>椋庢牸鏉ュ啓鐨勶紝浠栦滑涔熻兘鏃犻』浠諱綍淇敼鐢氳嚦涓嶉渶閲嶆柊緙栬瘧浠g爜灝辮兘浠?span class=hilite1>Erlang</span> SMP VM涓幏鐩娿?/p> <h3>SMP鎬ц兘寰楀埌鎸佺畫鏀硅繘</h3> <p>SMP瀹炵幇姝h涓嶆柇鏀硅繘浠ヤ究鑳藉緱鍒版洿濂界殑鎬ц兘鍜屼幾緙╂с傚湪姣忎釜鏈嶅姟鍙戝竷鐗圧12B-1,2,3,4,5…,R13B絳夌瓑涓紝浣犻兘鑳藉彂鐜版柊鐨勪紭鍖栥?/p> <h3>涓浜涘凡鐭ョ殑鐡墮</h3> <p>鍗曚竴鐨勫父瑙佽繍琛岄槦鍒楅殢鐫CPU鎴栨牳蹇冪殑鏁伴噺鐨勫鍔犱細鎴愪負涓涓樉钁楃殑鐡墮銆?/p> <p>榪欎粠4鏍稿紑濮嬪線涓婂氨浼氭樉鐜板嚭鏉ワ紝涓嶈繃4鏍鎬粛鐒跺彲浠ヤ負澶氭暟搴旂敤紼嬪簭鎻愪緵涓嶉敊鐨勬ц兘銆傛垜浠鍦ㄤ粠浜嬩竴涓瘡涓皟搴﹀櫒涓涓繍琛岄槦鍒楃殑瑙e喅鏂規(guī)硶浣滀負鐩墠鏈閲嶈鐨勬敼榪涖?/p> <p>Ets琛ㄦ牸浼氬紩鍏ラ攣銆傚湪R12B-4涔嬪墠鍦ㄦ瘡嬈″涓涓猠ts-table鐨勮闂腑浼氱敤鍒頒袱涓攣錛屼絾鏄湪R12B-4涓璵eta-table鐨勯攣琚紭鍖栬繃錛屽彲浠ユ樉钁楀噺灝戜簤鐢紙鍓嶉潰宸茬粡鎻愬埌浜夌敤鏄湁寰堝ぇ浠d環(huán)鐨勶級銆傚鏋滃緢澶?span class=hilite1>Erlang</span>榪涚▼璁塊棶鍚屼竴涓〃鏍鹼紝灝變細鏈夊緢澶氶攣浜夌敤閫犳垚鎬ц兘闄嶄綆灝ゅ叾褰撹繖浜涜繘紼嬩富瑕佸伐浣滄槸璁塊棶ets-table銆傞攣瀛樺湪浜庤〃綰ц岄潪璁板綍綰с傛敞鎰忥紒榪欎篃浼氬獎鍝嶅埌Mnesia鍥犱負Mnesia鐢ㄥ埌浜嗗緢澶歟ts-table銆?/p> <h3>鎴戜滑鍏充簬SMP鐨勭瓥鐣?/h3> <p>褰撴垜浠紑濮嬪疄鐜癝MP VM鐨勬渶鍒濓紝鎴戜滑灝辯‘瀹氫簡絳栫暐錛?#8220;棣栧厛璁╁畠鍙互榪愯錛岀劧鍚庢祴閲忥紝鐒跺悗浼樺寲”銆傝嚜浠?006騫翠簲鏈堟垜浠彂甯冧簡絎竴涓ǔ瀹氱殑SMP VM錛圧11B錛変互鏉ワ紝鎴戜滑涓鐩撮伒寰潃榪欎釜絳栫暐銆?/p> <p>榪樻湁鏇村宸茬煡鐨勪笢瑗垮彲浠ユ敼榪涳紝鎴戜滑浼氭寜鐓фц兘鐨勬敹鐩婂ぇ灝忓厛鍚庡悇涓嚮鐮淬?/p> <p>鎴戜滑灝嗕富瑕佺殑綺懼姏鏀懼湪澶氭牳錛堝ぇ浜?錛変笂鏇村ソ鐨勮繛緇幾緙╂т笂銆?/p> <h3>鍗撹秺鍏歌寖</h3> <p>鍗充嬌SMP緋葷粺鏈夎繕鏈変竴浜涘凡鐭ョ殑鐡墮涓嶈繃宸茬粡鏈変笉閿欑殑鏁翠綋鎬ц兘鍜屼幾緙╂э紝鍚屾椂鎴戠浉淇″湪璁╃▼搴忓憳鍒╃敤澶氭牳鏈哄櫒浜嬪崐鍔熷嶆柟闈紝鎴戜滑鏄竴涓崜瓚婄殑鍏歌寖銆?/p> </div> <img src ="http://m.shnenglu.com/keigoliye/aggbug/97172.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/keigoliye/" target="_blank">鏆楀鏁欑埗</a> 2009-09-24 22:23 <a href="http://m.shnenglu.com/keigoliye/archive/2009/09/24/97172.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Erlang寮鍙戝緩璁?鏉傝鐗?http://m.shnenglu.com/keigoliye/archive/2009/09/24/97082.html鏆楀鏁欑埗鏆楀鏁欑埗Wed, 23 Sep 2009 17:00:00 GMThttp://m.shnenglu.com/keigoliye/archive/2009/09/24/97082.htmlhttp://m.shnenglu.com/keigoliye/comments/97082.htmlhttp://m.shnenglu.com/keigoliye/archive/2009/09/24/97082.html#Feedback0http://m.shnenglu.com/keigoliye/comments/commentRss/97082.htmlhttp://m.shnenglu.com/keigoliye/services/trackbacks/97082.htmlerlang欏圭洰寮鍙戜腑鐨勪竴浜涜褰曪紝鍗沖寘鍚緢澶氶氫織鏄撴噦鐨勫師鍒欙紝涔熷寘鍚竴浜涗技鏄岄潪鐨勫緩璁紝姣旇緝娣蜂貢錛岃繕娌℃湁縐瘡鍒頒竴涓彲浠ュ垎闂ㄥ埆綾葷殑鍦版錛屽悇浣嶅氨灝嗗氨鐪嬪惂..
:)

* 紜繚娌℃湁浠諱綍緙栬瘧璀﹀憡

* Erlang涓璖tring閲囩敤list瀹炵幇錛?2浣嶇郴緇熶腑錛屽叾1涓瓧絎︾敤8涓瓧鑺傜殑絀洪棿錛?涓繚瀛榲alue, 4涓繚瀛樻寚閽?銆傚洜姝tring閫熷害杈冩參錛岀┖闂村崰鐢ㄨ緝澶?

* 鍦⊿erver涓紝鎬繪槸灝藉姏涔﹀啓灝鵑掑綊(tail-recursive)鐨勫嚱鏁?

* 浣跨敤'++'鏃訛紝left list浼氳鎷瘋礉錛岀劧鍚庢坊鍔犲埌right list鐨勫ご閮紝鍥犳鏈濂芥妸length杈冪煭鐨刲ist鏀懼湪宸︿晶

* 閬垮厤浣跨敤regexp錛屽鏋滈渶瑕佹鍒欒〃杈懼紡錛岃浣跨敤re

* timer妯″潡鐨勫ぇ閮ㄥ垎鍑芥暟瀹炵幇錛屼緷璧栦簬涓涓猵rocess錛屽鏋滆繃澶氫嬌鐢╰imer錛屼細瀵艱嚧榪欎釜process璐熻澆榪囧ぇ錛屽獎鍝嶆晥鐜囥?
  鎺ㄨ崘浣跨敤erlang:send_after/3鍙?span class="hilite1">erlang:start_timer/3

* 閬垮厤浣跨敤list_to_atom/1錛屽洜涓?span class="hilite1">erlang涓璦tom鏁伴噺鏈澶т負1048576, 涓斾笉榪涜GC鎺у埗銆傚洜姝ゅ鏋滄寔緇х殑璋冪敤list_to_atom/1
  鍙兘寰堝鏄撹揪鍒扮郴緇熶笂闄愶紝浠庤屽鑷磂mulator terminate銆傝浣跨敤list_to_existing_atom/1銆?

* list鍐呴儴瀹炵幇涓轟竴涓垪琛紝鍥犳length(List), 闇瑕侀亶鍘嗘暣涓猯ist姣旇緝鑰楁椂

* 瀵逛簬涓嶅悓鐨勬暟鎹被鍨嬶紝浣跨敤涓嶅悓鐨剆ize鍑芥暟錛歵uple_size/1, byte_size/1, bit_size/1

* 浣跨敤binary match鏉ヨ繘琛宐inary鐨勫垎鍓詫紝鑰屼笉浣跨敤split_binary/2

* 濡傛灉涓や釜list閮芥嫢鏈夊緢澶氭暟鎹紝閭d箞璇蜂笉瑕佷嬌鐢?--'錛岃屾槸灝嗘暟鎹漿鍖栧埌ordsets錛岀劧鍚庤皟鐢╫rdsets:substract/2.

* 瀵逛簬binary鐩稿叧鎿嶄綔鍙互榪涜binary浼樺寲錛坆in_opt_info緙栬瘧閫夐」錛変唬鐮佹鏋訛細

*   f(<<Pattern1,...,Rest/bits>>,...) -> 
       ... % Rest is not used here 
       f(Rest,...); 
    f(<<Pattern2,...,Rest/bits>>,...) -> 
      ... % Rest is not used here 
      f(Rest,...); 
    ... 
    f(<<>>, ...) -> 
      ReturnValue.

* 璋冪敤lists:flatten/1鍙互灝唋ist鎵佸鉤鍖栵紝榪欎釜鎿嶄綔浠d環(huán)寰堝ぇ錛屾瘮'++'榪樿鏄傝吹銆備笅闈㈣繖浜涙椂鍊欐垜浠彲浠ラ伩鍏嶏細
    灝嗘暟鎹彂閫佺粰port鏃?
    璋冪敤list_bo_binary/1鍜宨olist_to_binary鍓?

* 灝忕殑鍑芥暟鍙互璁╂?zhèn)ㄦ柟渚跨殑鎵惧嚭閿欒鐨勫嚱鏁板拰浠g?

* 涓嶈鍦ㄥ悓涓琛屽嚭鐜扮浉鍚岀殑絎﹀彿
20    some_fun() ->
21       L = [{key1, v1}, {key2, [some_record#v21, v22]}],
22      ...
緙栬瘧鏃訛紝浼氭彁紺簂ine 21 '[' 璇硶閿欒錛? 鍥犱負21琛屾湁澶氫釜 '[' 錛屾墍浠ヨ繖涓猙ug涓嶈兘鍑嗙‘瀹氫綅錛屼綘闇瑕佽姳鏃墮棿鍘繪帓鏌ヤ唬鐮併?
濂界殑鍋氭硶鏄細
20 some_fun() ->
21      L = [{key1, v1},
22            {key2, [some_record#v21, v22]}
23            ],
      ...
榪欐牱錛岀紪璇戝叾浼氭彁紺轟綘 line 22 '[' 璇硶閿欒錛屼綘寰堝紑灝辯煡閬撴槸閭d釜鍦版柟閿欎簡銆?

* 浣跨敤 CTRL 錛?\ 鎴?init:stop()錛?鍙互閫鍑?span class="hilite1">Erlang錛?浣跨敤CTRL 錛?G 鍙?CTRL + C 寮瑰嚭鑿滃崟閫夐」錛屽彲浠ラ夋嫨鏄惁閫鍑?span class="hilite1">Erlang銆?
鍏朵腑CTRL 錛?G鍙互鐢ㄦ潵榪炴帴鍏朵粬鐨剆hell錛?CTRL 錛?C鍙互鏌ョ湅鍏朵粬涓浜涚郴緇熶俊鎭?
Ctrl + C abort 鏄噹铔殑閫鍑烘柟寮?

* use "open_port({fd,0,2}, [out])" make erlang program write standard error to unix system

* If you don't run experiments before you start designing a new system, your entire system will be an experiment!

* standard data structure desc:

Module Description
sets sets, i.e. a collection of unique elements.
gb_sets sets, but based on a general balanced data structure
gb_tree a general balanced tree
dict maps, also called associative arrays
ets hash tables and ordered sets (trees)
dets on-disk hash tables

Suggestion錛?
elments count: 0 錛?100 | 100 - 10000  |  10000 -
our select   :  list   |      ets     |  gb_tree

* 閫氳繃code:clash/0 媯嫻嬩唬鐮佷腑鏄惁鏈塵odule鍐茬獊鐜拌薄錛坰ticky)

* epmd -d -d 鍚姩 epmd 鍙互鏌ョ湅erlang node涔嬮棿鐨勯氳

* 灝嗘甯哥殑閫昏緫浠g爜鍜岄敊璇鐞嗕唬鐮佸垎紱伙紝鍙戠敓閿欒鏃訛紝灝界閿欒銆傜敱鍙︿竴涓敊璇鐞嗘ā鍧楄繘琛屽鐞?

* 綾諱技浜庢搷浣滅郴緇燂紝鎴戜滑鐨勭▼搴忎篃鍙互鍒嗕負kernel 鍜? user 涓ゅ眰錛?瀵逛簬kernel緇濆涓嶈兘鍑虹幇閿欒錛?瀵逛簬user鍙互鍑虹幇閿欒錛岃繘琛屾仮澶?

* process欏跺眰loop娑夊強鐨勪唬鐮佸強鍑芥暟錛屾渶濂藉湪涓涓猰odule涓疄鐜?

* process 鐨剅egister name鍜宮odule鍚嶇О涓鑷達紝 渚夸簬瀵繪壘浠g爜

* 姣忎釜process鍏鋒湁涓涓崟涓鐨勮鑹詫紝姣斿錛歴upervisor 鐢ㄦ潵榪涜閿欒鎭㈠錛? work 宸ヤ綔鑰咃紝鍙互鍑虹幇閿欒錛?trusted worker 涓嶄細鍑虹幇閿欒

* 閫氳繃鍑芥暟璋冪敤鍙互瀹炵幇鐨勫姛鑳斤紝灝變笉瑕佷嬌鐢╯ever瀹炵幇錛堝gen_server, 鍙婄被浼肩殑loop 瀹炵幇錛?

* 緇欐秷鎭姞涓涓猼ag錛屽湪鍙戠敓閿欒鐨勬椂鍊欙紝鍙互瀹氫綅鍒版秷鎭紝鍚屾椂涔熸湁鍒╀簬紼嬪簭鐨勭ǔ鍋?

* 鍦ㄦ秷鎭驚鐜腑錛屽浜巙nknown鐨勬秷鎭紝璇瘋皟鐢╨ib:flush_receive/0 灝嗗叾娓呴櫎錛屽噺杞籶rocess msg queue鐨勯暱搴?

* server涓繪槸涔﹀啓灝鵑掑綊鐨勫驚鐜?

* 灝介噺浣跨敤record錛?鑰屼笉鏄師濮嬬殑tuple鏉ヨ〃鐜版暟鎹粨鏋勶紝 鍦ㄤ嬌鐢╮ecord鏃訛紝浣跨敤select match錛?
#person{name = Name, age = Age} = Person

* 瀵逛簬榪斿洖鍊鹼紝鏈濂戒篃娣誨姞涓涓猼ag錛岀敤鏉ヨ鏄庤繑鍥炲肩被鍨嬶紝鎴栬呮墽琛屾垚鍔熶笌鍚?

* 灝藉彲鑳藉皯鐨勪嬌鐢╟atch鍜宼ry錛屽湪erlang紼嬪簭涓紝涓嶆帹鑽愪富鍔ㄦ崟鑾峰紓甯搞傚彧鏈夊綋鎴戜滑鐨勯昏緫鐗瑰埆澶嶆潅錛屾垜浠彲浠ヤ嬌鐢╰hrow鏉ヨ繑鍥炴暟鎹紝浣跨敤catch鏉ヨ幏鍙栬繑鍥炲箋?

* 褰撶劧紼嬪簭涓庡鐣屼氦浜掞紝澶栫晫鏁版嵁涓嶅彲闈犳椂錛岄渶瑕佷嬌鐢╟atch鍜宼ry

* 鎱庨噸浣跨敤process dictory錛? 褰撲綘浣跨敤get/1, put/1鏃訛紝浣犵殑搴旂敤浼氬叿鏈夊緢澶х殑slide effect銆傚彲浠ラ氳繃鍔犲叆涓涓柊鐨勫弬鏁版潵淇濆瓨鍘熸湰闇瑕佸瓨鍌ㄥ埌process dictory涓暟鎹?

* 濡傛灉涓嶆兂浣胯嚜宸辯硦娑傦紝璇蜂笉瑕佷嬌鐢╥mport

* 浣跨敤export鏃訛紝灝嗗姛鑳界被浼肩殑鎺ュ彛緇勫悎鍦ㄤ竴璧鳳紝騫舵坊鍔犲悎鐞嗙殑娉ㄨ錛岃繖鏍蜂綘鐨勬帴鍙f洿娓呮櫚錛屽埆浜轟嬌鐢ㄨ搗鏉ユ洿鏂逛究

* 涓嶈涔﹀啓宓屽澶繁鐨勪唬鐮?

* 涓嶈涔﹀啓澶暱鐨刴odule

* 涓嶈涔﹀啓澶暱鐨勫嚱鏁?

* 姣忚浠g爜涓嶈兘澶暱

* 閬垮厤浣跨敤 "_" 鍖垮悕鍙橀噺錛岃涓烘瘡涓彉閲忛夋嫨鏈夋剰涔夌殑鍚嶇О錛屽澶熸煇涓彉閲忔殏鏃朵笉浣跨敤錛岃浠ヤ笅鍒掔嚎 "_" 寮濮?

* {error, enfile} enfile error in socket 鏄互涓哄唴linux緋葷粺涓?ulimit 闄愬埗錛?鍦╮oot涓嬩慨鏀癸細ulimit -n 25000

* {error, enotconn} 琛ㄧずsocket宸茬粡鍏抽棴

* 鍦?span class="hilite1">erlang寮鍙戞椂錛屾厧閲嶄嬌鐢╩acro錛屽洜涓?span class="hilite1">erlang鐨剆ingle assign鐨勭紭鏁咃紝鍚屾椂璋冪敤鏌愪釜marco錛岃宮acro鍙堝畾涔変簡鏌愪釜鍙橀噺錛屽彲鑳藉鑷碽admatch閿欒銆?
姣斿錛?
-define(ADDLINEINFO1(F),
        (
        begin
        Str1 = lists:concat(["[Mod:", ?MODULE, " Line:", ?LINE, "]"]),
        Str1 ++ F
        end
        )).
-define(WARN(Log, F, D), log4erl:warn(Log, ?ADDLINEINFO(F), D)).
濡傛灉榪炵畫浣跨敤 WARN, 浼氬嚭鐜版閿欒

* erlang涓彲浠ュ畾涔夊緢澶氱幆澧冨彉閲忥細
ERL_MAX_ETS_TABLES 璁劇疆鏈澶х殑ets鏁扮洰 榛樿1400
ERL_MAX_PORTS erlang鏈澶х殑port鏁扮洰 榛樿1024

* .app鏂囦歡涓殑start_phases錛?閫夐」鏃㈠彲浠ョ敤鏉ヤ綔涓篿nclude applications涔嬮棿鐨勫悓姝ュ惎鍔紝涔熷彲浠ョ敤鏉ュ鍗曚釜application榪涜鍒嗗竷鍚姩銆?
欏哄簭濡備笅
鍖呭惈included app:

application:start(prim_app)
=> prim_app_cb:start(normal, [])
=> prim_app_cb:start_phase(init, normal, [])
=> prim_app_cb:start_phase(go, normal, [])
=> incl_app_cb:start_phase(go, normal, [])
ok

鏃爄ncluded app:
application:start(prim_app)
=> prim_app_cb:start(normal, [])
=> prim_app_cb:start_phase(init, normal, [])
=> prim_app_cb:start_phase(go, normal, [])
ok

* 浠諱綍鏃跺欙紝閮借閲嶈鍑芥暟鐨勮繑鍥炲鹼紝閫氳繃match紜繚鎮(zhèn)ㄧ殑棰勬湡錛屽鏋滃彂鐢熼敊璇紝閭d箞灝卞ぇ鑳嗙殑琛ㄨ揪鍑烘潵銆?

鏆楀鏁欑埗 2009-09-24 01:00 鍙戣〃璇勮
]]>
鍦∕acOSX涓婃祴璇昅ochiweb閬囧埌鐨勪竴浜涢棶棰?/title><link>http://m.shnenglu.com/keigoliye/archive/2009/09/24/97081.html</link><dc:creator>鏆楀鏁欑埗</dc:creator><author>鏆楀鏁欑埗</author><pubDate>Wed, 23 Sep 2009 16:59:00 GMT</pubDate><guid>http://m.shnenglu.com/keigoliye/archive/2009/09/24/97081.html</guid><wfw:comment>http://m.shnenglu.com/keigoliye/comments/97081.html</wfw:comment><comments>http://m.shnenglu.com/keigoliye/archive/2009/09/24/97081.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/keigoliye/comments/commentRss/97081.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/keigoliye/services/trackbacks/97081.html</trackback:ping><description><![CDATA[<a target="_blank">A Million-user Comet Application with Mochiweb, Part 1</a> <br>鍦∕acOSX騫沖彴涓婇亣鍒扮殑涓浜涢棶棰橈細 <br><br>涓. IPv6瀵艱嚧鐨勯棶棰? <br>鍦∕acOS涓嬫祴璇曟椂鎶ラ敊econnrefused錛宮ochi-urls.txt鏂囦歡鐨剈rl涓嶈兘鐢╨ocalhost錛屽緱鐢?27.0.0.1鎵嶈 <br><br>鍦‥rlang鐨勯偖浠跺垪琛ㄤ腑鎵懼埌浜嗚В閲婏細 <br>We have seen the same issue with CouchDB. What we found out <br>is that in our case localhost was not only resolving to 127.0.0.1 (IPv4) <br>but also ::1 (IPv6) and that http:request() would try to connect to <br>::1 where no service was listening. <br><br>Erlang鐨刪ttp妯″潡緙虹渷鏄墦寮IPv6妯″紡鐨勶紝褰撴祴璇曠▼搴忛氳繃http妯″潡榪炴帴localhost鏃訛紝榪炴帴鐨勫湴鍧鏄疘Pv6鐨?:1鍦板潃錛屼絾鏄痬ochi娌℃湁鍦ㄦ鐩戝惉錛屾墍浠ヨ繛鎺ュ嚭閿? {error,econnrefused} <br><br>瑙e喅鏂規(guī)硶涓ょ錛?<br>1. 灝唌ochi-urls.txt涓殑鍦板潃閮芥敼鎴?27.0.0.1 <br>2. 鍦╤ttp:request(…)榪愯涔嬪墠璋冪敤http:set_options([{ipv6,disabled}])錛屽叧闂祴璇曠▼搴忕殑IPv6妯″紡錛屼嬌鐢↖Pv4妯″紡 <br><br>鐞嗚涓婅繕鏈変竴縐嶆柟娉曪細璁﹎ochi鏈嶅姟鍣ㄥ紑鍚疘Pv6妯″紡鐩戝惉錛岃繖涓垜涓嶇煡閬撹繖涔堝紑錛?<br>鍙傝?<br>You should teach Yaws to listen also on IPv6 - “localhost” resolves not <br>only to IPv4 127.0.0.1, but also to IPv6 ::1. <br><br><br>浜? 榪涚▼鑳芥墦寮鐨勬枃浠舵弿榪扮鏁伴噺鐨勯檺鍒? <br>MacOSX涓嬬己鐪佽兘鍚屾椂鎵撳紑鐨勬枃浠舵弿榪扮鏈澶ф暟鏄?56涓紝浣跨敤 ulimit -a鍛戒護鏌ョ湅 <br>$ ulimit -a <br>core file size          (blocks, -c) 0 <br>data seg size           (kbytes, -d) 6144 <br>file size               (blocks, -f) unlimited <br>max locked memory       (kbytes, -l) unlimited <br>max memory size         (kbytes, -m) unlimited <br><strong>open files                      (-n) 256 <br></strong>pipe size            (512 bytes, -p) 1 <br>stack size              (kbytes, -s) 8192 <br>cpu time               (seconds, -t) unlimited <br>max user processes              (-u) 266 <br>virtual memory          (kbytes, -v) unlimited <br>浣跨敤ulimit -n XXXX璁劇疆錛屼絾鏈澶ф暟閲忚繕鏄笉鑳借秴榪?0240 <br><br>鏌ョ湅鍐呮牳姣忚繘紼嬫渶澶ф枃浠舵暟錛?<br>$ sysctl kern.maxfiles kern.maxfilesperproc <br>kern.maxfiles: 12288 <br>kern.maxfilesperproc: 10240 <br><br>澧炲ぇ姣忚繘紼嬫渶澶ф枃浠舵暟錛?<br>$ sudo sysctl -w kern.maxfilesperproc=20480 kern.maxfiles=22528 <br><br>鐒跺悗璁劇疆 <br>$ ulimit -n 20480 <br>娉ㄦ剰ulimit鍙湪姣忎釜shell紿楀彛鐢熷懡鍛ㄦ湡鍐呮湁鏁堬紝褰撴柊寮涓涓猻hell鍚庯紝寰楀啀嬈¤緗?<br>sysctl鍋氱殑淇敼娌℃湁榪欎釜闂 <br><br>涓夈佽皟鑺侷P绔彛鍙瘋寖鍥達紝涓嶇劧鏈澶氬彧鑳芥湁15K涓繛鎺?<br>緙虹渷鍔ㄦ佺鍙e彿浠?9152寮濮嬶紝鏀規(guī)垚2000鍚庢渶澶氬彲浠ユ湁63K涓繛鎺? <br>sysctl -w net.inet.ip.portrange.hifirst=2000 net.inet.ip.portrange.first=2000 <br><img src ="http://m.shnenglu.com/keigoliye/aggbug/97081.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/keigoliye/" target="_blank">鏆楀鏁欑埗</a> 2009-09-24 00:59 <a href="http://m.shnenglu.com/keigoliye/archive/2009/09/24/97081.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>ubuntu涓嬬紪璇戝畨瑁匛rlanghttp://m.shnenglu.com/keigoliye/archive/2009/09/18/96660.html鏆楀鏁欑埗鏆楀鏁欑埗Fri, 18 Sep 2009 11:12:00 GMThttp://m.shnenglu.com/keigoliye/archive/2009/09/18/96660.htmlhttp://m.shnenglu.com/keigoliye/comments/96660.htmlhttp://m.shnenglu.com/keigoliye/archive/2009/09/18/96660.html#Feedback0http://m.shnenglu.com/keigoliye/comments/commentRss/96660.htmlhttp://m.shnenglu.com/keigoliye/services/trackbacks/96660.html鍏堣榪欐牱
apt-get install build-essential  
apt-get install libncurses5-dev  
apt-get install m4  
apt-get install libssl-dev 


鐒跺悗瑕佺敤鏂扮珛寰楄濡備笅搴擄細
libc6
unixodbc
unixodbc-dev
gcj

freeglut3-dev
libwxgtk2.8-dev
g++


鐒跺悗涓嬭澆婧愪唬鐮?
tar -xvf otp-src-R12B-0.tar.gz  
cd otp-src-R12B-0 
sudo ./configure --prefix=/otp/erlang  
sudo make  
sudo make install 


瀹夎瀹屾瘯錛屽彲浠m -fr opt-src-R12B-0鍒犻櫎婧愪唬鐮?

鐒跺悗鏀規(guī)敼/etc/profile
export PATH=/opt/erlang/bin:$PATH
alias ls='ls -color=auto'
alias ll='ll -lht'

鍙互source /etc/profile涓涓嬶紝鍙婃椂淇敼PATH



鏆楀鏁欑埗 2009-09-18 19:12 鍙戣〃璇勮
]]>
Erlang涓嶢ctionScript3閲囩敤JSON鏍煎紡榪涜Socket閫氳http://m.shnenglu.com/keigoliye/archive/2009/09/18/96649.html鏆楀鏁欑埗鏆楀鏁欑埗Fri, 18 Sep 2009 08:07:00 GMThttp://m.shnenglu.com/keigoliye/archive/2009/09/18/96649.htmlhttp://m.shnenglu.com/keigoliye/comments/96649.htmlhttp://m.shnenglu.com/keigoliye/archive/2009/09/18/96649.html#Feedback0http://m.shnenglu.com/keigoliye/comments/commentRss/96649.htmlhttp://m.shnenglu.com/keigoliye/services/trackbacks/96649.html闇瑕佷笅杞?a target=_blank>as3corelib鏉ヤ負ActionScript3澶勭悊JSON codec

server.erl
-module(server).   
-export([start/0,start/1,process/1]).   
-define(defPort, 8888).   
  
start() 
-> start(?defPort).   
  
start(Port) 
->   
  
case gen_tcp:listen(Port, [binary, {packet, 0}, {active, false}]) of   
    {ok, LSock} 
-> server_loop(LSock);   
    {error, Reason} 
-> exit({Port,Reason})   
  end.   
  
%% main server loop - wait for next connection, spawn child to process it   
server_loop(LSock) 
->   
  
case gen_tcp:accept(LSock) of   
    {ok, Sock} 
->   
      spawn(
?MODULE,process,[Sock]),   
      server_loop(LSock);   
    {error, Reason} 
->   
      exit({accept,Reason})   
  end.   
  
%% process current connection   
process(Sock) 
->   
  Req 
= do_recv(Sock),   
  io:format(
"~p~n", [Req]),   
  {ok, D, []} 
= rfc4627:decode(Req),   
  {obj, [{
"name", _Name}, {"age", Age}]} = D,   
  Name 
= binary_to_list(_Name),   
  io:format(
"Name: ~p, Age: ~p~n", [Name, Age]),   
  Resp 
= rfc4627:encode({obj, [{"name"'Hideto2'}, {"age"24}]}),   
  do_send(Sock,Resp),   
  gen_tcp:close(Sock).   
  
%% send a line of text to the socket   
do_send(Sock,Msg) 
->   
  
case gen_tcp:send(Sock, Msg) of   
    ok 
-> ok;   
    {error, Reason} 
-> exit(Reason)   
  end.   
  
%% receive data from the socket   
do_recv(Sock) 
->   
  
case gen_tcp:recv(Sock, 0) of   
    {ok, Bin} 
-> binary_to_list(Bin);   
    {error, closed} 
-> exit(closed);   
    {error, Reason} 
-> exit(Reason)   
  end.  

Person.as
package  
{   
    
public class Person   
    {   
        
public var name:String;   
        
public var age:int;   
        
public function Person()   
        {   
        }   
    }   
}  

Client.as
package {   
    
import com.adobe.serialization.json.JSON;   
       
    
import flash.display.Sprite;   
    
import flash.events.*;   
    
import flash.net.Socket;   
    
import flash.text.*;   
       
    
public class Client extends Sprite   
    {   
        
private var socket:Socket;   
        
private var myField:TextField;   
        
private var send_data:Person;   
        
public function Client()   
        {   
            socket 
= new Socket();   
            myField 
= new TextField();   
            send_data 
= new Person();   
            send_data.name 
= "Hideto";   
            send_data.age 
= 23;   
            socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData);   
            socket.connect(
"localhost"8888);   
            socket.writeUTFBytes(JSON.encode(send_data));   
            socket.flush();   
            myField.x 
= 20;   
            myField.y 
= 30;   
            myField.text 
= "test";   
            myField.autoSize 
= TextFieldAutoSize.LEFT;   
            addChild(myField);   
        }   
        
private function onSocketData(event:ProgressEvent):void {   
            
while(socket.bytesAvailable) {   
                var recv_data:
* = JSON.decode(socket.readUTFBytes(socket.bytesAvailable));   
                myField.text 
= "Name: " + recv_data.name + ", age: " + recv_data.age.toString();   
            }   
        }   
    }   

榪愯Erlang鏈嶅姟鍣ㄧ錛?br>
Eshell> c(server).   
Eshell
> server:start().   
"{\"name\":\"Hideto\",\"age\":23}"  
Name: 
"Hideto", Age: 23 

榪欓噷鎵撳嵃鍑轟簡Erlang Socket Server鎺ユ敹鍒扮殑AS3 Client鍙戣繃鏉ョ殑JSON decode榪囩殑涓涓猵erson瀵硅薄

榪愯AS3瀹㈡埛绔細
client.html涓婇鍏堟樉紺?#8220;test”錛岀劧鍚庡紓姝ュ鐞嗗畬Socket娑堟伅鍙戦佸拰鎺ュ彈鍚庯紝decode Erlang Server绔彂榪囨潵鐨刾erson瀵硅薄錛屽皢欏甸潰涓婄殑TextField鏇挎崲涓?#8220;Name: Hideto2, age: 24”

鏆楀鏁欑埗 2009-09-18 16:07 鍙戣〃璇勮
]]>
Erlang鐨凧SON搴?/title><link>http://m.shnenglu.com/keigoliye/archive/2009/09/18/96647.html</link><dc:creator>鏆楀鏁欑埗</dc:creator><author>鏆楀鏁欑埗</author><pubDate>Fri, 18 Sep 2009 07:38:00 GMT</pubDate><guid>http://m.shnenglu.com/keigoliye/archive/2009/09/18/96647.html</guid><wfw:comment>http://m.shnenglu.com/keigoliye/comments/96647.html</wfw:comment><comments>http://m.shnenglu.com/keigoliye/archive/2009/09/18/96647.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/keigoliye/comments/commentRss/96647.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/keigoliye/services/trackbacks/96647.html</trackback:ping><description><![CDATA[浣跨敤涓嬪垪JSON搴擄細 <br><a target=_blank><u><font color=#810081>http://www.lshift.net/blog/2007/02/17/json-and-json-rpc-for-erlang</font></u></a> <br><br>璇SON搴撻噰鐢?a target=_blank><u><font color=#0000ff>Joe Armstrong prefered Data type mapping</font></u></a> <br>鍗籌細 <br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_29_51_Open_Image onclick="this.style.display='none'; Codehighlighter1_29_51_Open_Text.style.display='none'; Codehighlighter1_29_51_Closed_Image.style.display='inline'; Codehighlighter1_29_51_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_29_51_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_29_51_Closed_Text.style.display='none'; Codehighlighter1_29_51_Open_Image.style.display='inline'; Codehighlighter1_29_51_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">JSON Obj    </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> type obj()   </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span id=Codehighlighter1_29_51_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_29_51_Open_Text><span style="COLOR: #000000">{obj, [</span><span id=Codehighlighter1_36_49_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_36_49_Open_Text><span style="COLOR: #000000">{key(), val()}</span></span><span style="COLOR: #000000">]}</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>JSON Array  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> type array() </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> [val()]   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>JSON Number </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> type num()   </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">() </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">float</span><span style="COLOR: #000000">()    <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>JSON String </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> type str()   </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> bin()   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>JSON </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">       </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000"> (atoms)   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>With Type val() </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> obj() </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> array() </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> num() </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> str() </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">  <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>and key() being a str(). (Or a binary or atom, during JSON encoding.)  </span></div> <br>嫻嬭瘯濡備笅錛?<br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">Eshell V5.</span><span style="COLOR: #000000">6.3</span><span style="COLOR: #000000">  (abort with </span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">G)   <br><img id=Codehighlighter1_56_89_Open_Image onclick="this.style.display='none'; Codehighlighter1_56_89_Open_Text.style.display='none'; Codehighlighter1_56_89_Closed_Image.style.display='inline'; Codehighlighter1_56_89_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_56_89_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_56_89_Closed_Text.style.display='none'; Codehighlighter1_56_89_Open_Image.style.display='inline'; Codehighlighter1_56_89_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> O </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rfc4627:encode(</span><span id=Codehighlighter1_56_89_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_56_89_Open_Text><span style="COLOR: #000000">{obj, [</span><span id=Codehighlighter1_63_76_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_63_76_Open_Text><span style="COLOR: #000000">{name, hideto}</span></span><span style="COLOR: #000000">, </span><span id=Codehighlighter1_79_87_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_79_87_Open_Text><span style="COLOR: #000000">{age, </span><span style="COLOR: #000000">23</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">]}</span></span><span style="COLOR: #000000">).   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">{\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">name\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hideto\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">age\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:23}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> rfc4627:decode(O).   <br><img id=Codehighlighter1_164_211_Open_Image onclick="this.style.display='none'; Codehighlighter1_164_211_Open_Text.style.display='none'; Codehighlighter1_164_211_Closed_Image.style.display='inline'; Codehighlighter1_164_211_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_164_211_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_164_211_Closed_Text.style.display='none'; Codehighlighter1_164_211_Open_Image.style.display='inline'; Codehighlighter1_164_211_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_164_211_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_164_211_Open_Text><span style="COLOR: #000000">{ok,</span><span id=Codehighlighter1_168_207_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_168_207_Open_Text><span style="COLOR: #000000">{obj,[</span><span id=Codehighlighter1_174_194_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_174_194_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hideto</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">>></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">,</span><span id=Codehighlighter1_196_205_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_196_205_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">age</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">23</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">]}</span></span><span style="COLOR: #000000">,[]}</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> A </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rfc4627:encode([</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">]).   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">[1,2,3,4,5]</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> rfc4627:decode(A).   <br><img id=Codehighlighter1_296_314_Open_Image onclick="this.style.display='none'; Codehighlighter1_296_314_Open_Text.style.display='none'; Codehighlighter1_296_314_Closed_Image.style.display='inline'; Codehighlighter1_296_314_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_296_314_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_296_314_Closed_Text.style.display='none'; Codehighlighter1_296_314_Open_Image.style.display='inline'; Codehighlighter1_296_314_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_296_314_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_296_314_Open_Text><span style="COLOR: #000000">{ok,[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">],[]}</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> N </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rfc4627:encode(</span><span style="COLOR: #000000">12345</span><span style="COLOR: #000000">).   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">12345</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> rfc4627:decode(N).   <br><img id=Codehighlighter1_387_399_Open_Image onclick="this.style.display='none'; Codehighlighter1_387_399_Open_Text.style.display='none'; Codehighlighter1_387_399_Closed_Image.style.display='inline'; Codehighlighter1_387_399_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_387_399_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_387_399_Closed_Text.style.display='none'; Codehighlighter1_387_399_Open_Image.style.display='inline'; Codehighlighter1_387_399_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_387_399_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_387_399_Open_Text><span style="COLOR: #000000">{ok,</span><span style="COLOR: #000000">12345</span><span style="COLOR: #000000">,[]}</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> S </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rfc4627:encode(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">12345</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">).   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">[49,50,51,52,53]</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> rfc4627:decode(S).   <br><img id=Codehighlighter1_485_499_Open_Image onclick="this.style.display='none'; Codehighlighter1_485_499_Open_Text.style.display='none'; Codehighlighter1_485_499_Closed_Image.style.display='inline'; Codehighlighter1_485_499_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_485_499_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_485_499_Closed_Text.style.display='none'; Codehighlighter1_485_499_Open_Image.style.display='inline'; Codehighlighter1_485_499_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_485_499_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_485_499_Open_Text><span style="COLOR: #000000">{ok,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">12345</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,[]}</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> T </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rfc4627:encode(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">).   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">true</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> rfc4627:decode(T).   <br><img id=Codehighlighter1_571_582_Open_Image onclick="this.style.display='none'; Codehighlighter1_571_582_Open_Text.style.display='none'; Codehighlighter1_571_582_Closed_Image.style.display='inline'; Codehighlighter1_571_582_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_571_582_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_571_582_Closed_Text.style.display='none'; Codehighlighter1_571_582_Open_Image.style.display='inline'; Codehighlighter1_571_582_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_571_582_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_571_582_Open_Text><span style="COLOR: #000000">{ok,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">,[]}</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> F </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rfc4627:encode(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">).   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">false</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> rfc4627:decode(F).   <br><img id=Codehighlighter1_657_669_Open_Image onclick="this.style.display='none'; Codehighlighter1_657_669_Open_Text.style.display='none'; Codehighlighter1_657_669_Closed_Image.style.display='inline'; Codehighlighter1_657_669_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_657_669_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_657_669_Closed_Text.style.display='none'; Codehighlighter1_657_669_Open_Image.style.display='inline'; Codehighlighter1_657_669_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_657_669_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_657_669_Open_Text><span style="COLOR: #000000">{ok,</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">,[]}</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> Null </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rfc4627:encode(</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">).   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">null</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">14</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> rfc4627:decode(Null).   <br><img id=Codehighlighter1_748_759_Open_Image onclick="this.style.display='none'; Codehighlighter1_748_759_Open_Text.style.display='none'; Codehighlighter1_748_759_Closed_Image.style.display='inline'; Codehighlighter1_748_759_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_748_759_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_748_759_Closed_Text.style.display='none'; Codehighlighter1_748_759_Open_Image.style.display='inline'; Codehighlighter1_748_759_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_748_759_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_748_759_Open_Text><span style="COLOR: #000000">{ok,</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">,[]}</span></span><span style="COLOR: #000000">  <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span></div> <br> <img src ="http://m.shnenglu.com/keigoliye/aggbug/96647.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/keigoliye/" target="_blank">鏆楀鏁欑埗</a> 2009-09-18 15:38 <a href="http://m.shnenglu.com/keigoliye/archive/2009/09/18/96647.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Flash Socket 鍜?Erlang Socket 閫氫俊鐨勬敞鎰忎簨欏?/title><link>http://m.shnenglu.com/keigoliye/archive/2009/09/18/96634.html</link><dc:creator>鏆楀鏁欑埗</dc:creator><author>鏆楀鏁欑埗</author><pubDate>Fri, 18 Sep 2009 04:40:00 GMT</pubDate><guid>http://m.shnenglu.com/keigoliye/archive/2009/09/18/96634.html</guid><wfw:comment>http://m.shnenglu.com/keigoliye/comments/96634.html</wfw:comment><comments>http://m.shnenglu.com/keigoliye/archive/2009/09/18/96634.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/keigoliye/comments/commentRss/96634.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/keigoliye/services/trackbacks/96634.html</trackback:ping><description><![CDATA[<p>杞嚜<a >http://www.javaeye.com/topic/401041</a><br><br><br>瀛rlang鏈変竴孌墊椂闂翠簡錛岀幇鍦ㄥ湪緇存姢涓濂梬ebim緋葷粺 <br>騫舵墦綆楁墿灞曟垚 webgame 鐨勬湇鍔$▼搴?/p> <p>鍦ㄦ病鏈変嬌鐢ㄥ寘鍗忚鐨勬椂鍊欙紝閬囧埌濂藉綺樺寘闂錛屽疄鍦ㄦ伡鐏?/p> <p>鏌ラ槄浜嗙浉鍏寵祫鏂欙細</p> <p>Flash Socket 鐨?writeUTF() 浼氳嚜鍔ㄥ鍔犲寘澶撮暱搴︾殑鍗忚錛屽垰濂藉搴斾簡 <br>Erlang鐨凷ocket閫夐」 {packet,2} <br><br>榪欎嬌寰椾袱鑰呯殑閫氫俊闈炲父瀹岀編錛屽啀涔熶笉鐢ㄦ媴蹇冪矘鍖呬粈涔堢殑闂浜?/p> <p> </p> <p>涓嬮潰鏄垜鍐欑殑涓涓狥lash Socket 鎺ュ彛錛歋ocketBridge.as</p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_8_2502_Open_Image onclick="this.style.display='none'; Codehighlighter1_8_2502_Open_Text.style.display='none'; Codehighlighter1_8_2502_Closed_Image.style.display='inline'; Codehighlighter1_8_2502_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_8_2502_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_8_2502_Closed_Text.style.display='none'; Codehighlighter1_8_2502_Open_Image.style.display='inline'; Codehighlighter1_8_2502_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> </span><span id=Codehighlighter1_8_2502_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_8_2502_Open_Text><span style="COLOR: #000000">{   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> flash.display.Sprite;   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> flash.events.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> flash.net.Socket;   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> flash.utils.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> flash.external.ExternalInterface;   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> flash.system.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;   <br><img id=Codehighlighter1_263_2497_Open_Image onclick="this.style.display='none'; Codehighlighter1_263_2497_Open_Text.style.display='none'; Codehighlighter1_263_2497_Closed_Image.style.display='inline'; Codehighlighter1_263_2497_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_263_2497_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_263_2497_Closed_Text.style.display='none'; Codehighlighter1_263_2497_Open_Image.style.display='inline'; Codehighlighter1_263_2497_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> SocketBridge </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> Sprite </span><span id=Codehighlighter1_263_2497_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_263_2497_Open_Text><span style="COLOR: #000000">{   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        Socket.prototype.timeout    </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">3000</span><span style="COLOR: #000000">;   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> var socket:Socket;   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> function SocketBridge()   <br><img id=Codehighlighter1_402_1096_Open_Image onclick="this.style.display='none'; Codehighlighter1_402_1096_Open_Text.style.display='none'; Codehighlighter1_402_1096_Closed_Image.style.display='inline'; Codehighlighter1_402_1096_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_402_1096_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_402_1096_Closed_Text.style.display='none'; Codehighlighter1_402_1096_Open_Image.style.display='inline'; Codehighlighter1_402_1096_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span id=Codehighlighter1_402_1096_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_402_1096_Open_Text><span style="COLOR: #000000">{   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            socket </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Socket();   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            socket.addEventListener( Event.CONNECT, onConnect );   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            socket.addEventListener( ProgressEvent.SOCKET_DATA, onDataRecevice);   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            socket.addEventListener( Event.CLOSE, onClose);   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            socket.addEventListener( IOErrorEvent.IO_ERROR, onError);    <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>               <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(ExternalInterface.available)   <br><img id=Codehighlighter1_809_1083_Open_Image onclick="this.style.display='none'; Codehighlighter1_809_1083_Open_Text.style.display='none'; Codehighlighter1_809_1083_Closed_Image.style.display='inline'; Codehighlighter1_809_1083_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_809_1083_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_809_1083_Closed_Text.style.display='none'; Codehighlighter1_809_1083_Open_Image.style.display='inline'; Codehighlighter1_809_1083_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>            </span><span id=Codehighlighter1_809_1083_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_809_1083_Open_Text><span style="COLOR: #000000">{   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                ExternalInterface.addCallback(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">socket_connect</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,socket_connect);   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                ExternalInterface.addCallback(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">socket_send</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,socket_send);   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                ExternalInterface.addCallback(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">load_policy</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,load_policy);   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>            }</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> function onError(e):</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">  <br><img id=Codehighlighter1_1151_1255_Open_Image onclick="this.style.display='none'; Codehighlighter1_1151_1255_Open_Text.style.display='none'; Codehighlighter1_1151_1255_Closed_Image.style.display='inline'; Codehighlighter1_1151_1255_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1151_1255_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1151_1255_Closed_Text.style.display='none'; Codehighlighter1_1151_1255_Open_Image.style.display='inline'; Codehighlighter1_1151_1255_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span id=Codehighlighter1_1151_1255_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_1151_1255_Open_Text><span style="COLOR: #000000">{   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            ExternalInterface.call(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sb_onerror</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,e.text);   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            socket.close();   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> function load_policy(host:String,port):</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">  <br><img id=Codehighlighter1_1329_1414_Open_Image onclick="this.style.display='none'; Codehighlighter1_1329_1414_Open_Text.style.display='none'; Codehighlighter1_1329_1414_Closed_Image.style.display='inline'; Codehighlighter1_1329_1414_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1329_1414_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1329_1414_Closed_Text.style.display='none'; Codehighlighter1_1329_1414_Open_Image.style.display='inline'; Codehighlighter1_1329_1414_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span id=Codehighlighter1_1329_1414_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_1329_1414_Open_Text><span style="COLOR: #000000">{   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            Security.loadPolicyFile(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">xmlsocket://</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">host</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">port);     <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>           <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> function socket_connect(host:String,port):</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">  <br><img id=Codehighlighter1_1503_1689_Open_Image onclick="this.style.display='none'; Codehighlighter1_1503_1689_Open_Text.style.display='none'; Codehighlighter1_1503_1689_Closed_Image.style.display='inline'; Codehighlighter1_1503_1689_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1503_1689_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1503_1689_Closed_Text.style.display='none'; Codehighlighter1_1503_1689_Open_Image.style.display='inline'; Codehighlighter1_1503_1689_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span id=Codehighlighter1_1503_1689_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_1503_1689_Open_Text><span style="COLOR: #000000">{   <br><img id=Codehighlighter1_1523_1586_Open_Image onclick="this.style.display='none'; Codehighlighter1_1523_1586_Open_Text.style.display='none'; Codehighlighter1_1523_1586_Closed_Image.style.display='inline'; Codehighlighter1_1523_1586_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1523_1586_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1523_1586_Closed_Text.style.display='none'; Codehighlighter1_1523_1586_Open_Image.style.display='inline'; Codehighlighter1_1523_1586_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>            </span><span style="COLOR: #0000ff">try</span><span id=Codehighlighter1_1523_1586_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_1523_1586_Open_Text><span style="COLOR: #000000">{   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                socket.connect(host,port);   <br><img id=Codehighlighter1_1595_1676_Open_Image onclick="this.style.display='none'; Codehighlighter1_1595_1676_Open_Text.style.display='none'; Codehighlighter1_1595_1676_Closed_Image.style.display='inline'; Codehighlighter1_1595_1676_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1595_1676_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1595_1676_Closed_Text.style.display='none'; Codehighlighter1_1595_1676_Open_Image.style.display='inline'; Codehighlighter1_1595_1676_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>            }</span></span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(e)</span><span id=Codehighlighter1_1595_1676_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_1595_1676_Open_Text><span style="COLOR: #000000">{   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                ExternalInterface.call(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sb_onerror</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,e.text);   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>            }</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>           <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> function socket_send(msg:String)   <br><img id=Codehighlighter1_1765_1849_Open_Image onclick="this.style.display='none'; Codehighlighter1_1765_1849_Open_Text.style.display='none'; Codehighlighter1_1765_1849_Closed_Image.style.display='inline'; Codehighlighter1_1765_1849_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1765_1849_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1765_1849_Closed_Text.style.display='none'; Codehighlighter1_1765_1849_Open_Image.style.display='inline'; Codehighlighter1_1765_1849_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span id=Codehighlighter1_1765_1849_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_1765_1849_Open_Text><span style="COLOR: #000000">{      <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            socket.writeUTF(msg);   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            socket.flush();   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>           <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> function onConnect(event:Event):</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">    <br><img id=Codehighlighter1_1931_2004_Open_Image onclick="this.style.display='none'; Codehighlighter1_1931_2004_Open_Text.style.display='none'; Codehighlighter1_1931_2004_Closed_Image.style.display='inline'; Codehighlighter1_1931_2004_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1931_2004_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1931_2004_Closed_Text.style.display='none'; Codehighlighter1_1931_2004_Open_Image.style.display='inline'; Codehighlighter1_1931_2004_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span id=Codehighlighter1_1931_2004_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_1931_2004_Open_Text><span style="COLOR: #000000">{   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            ExternalInterface.call(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sb_onconnect</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>           <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> function onClose(event:Event):</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">    <br><img id=Codehighlighter1_2084_2186_Open_Image onclick="this.style.display='none'; Codehighlighter1_2084_2186_Open_Text.style.display='none'; Codehighlighter1_2084_2186_Closed_Image.style.display='inline'; Codehighlighter1_2084_2186_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_2084_2186_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2084_2186_Closed_Text.style.display='none'; Codehighlighter1_2084_2186_Open_Image.style.display='inline'; Codehighlighter1_2084_2186_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span id=Codehighlighter1_2084_2186_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_2084_2186_Open_Text><span style="COLOR: #000000">{   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            socket.close();   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            ExternalInterface.call(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sb_onclose</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>  <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> function onDataRecevice( eventrogressEvent ):</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">  <br><img id=Codehighlighter1_2270_2485_Open_Image onclick="this.style.display='none'; Codehighlighter1_2270_2485_Open_Text.style.display='none'; Codehighlighter1_2270_2485_Closed_Image.style.display='inline'; Codehighlighter1_2270_2485_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_2270_2485_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2270_2485_Closed_Text.style.display='none'; Codehighlighter1_2270_2485_Open_Image.style.display='inline'; Codehighlighter1_2270_2485_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span id=Codehighlighter1_2270_2485_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_2270_2485_Open_Text><span style="COLOR: #000000">{   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            var sdata:String;   <br><img id=Codehighlighter1_2348_2472_Open_Image onclick="this.style.display='none'; Codehighlighter1_2348_2472_Open_Text.style.display='none'; Codehighlighter1_2348_2472_Closed_Image.style.display='inline'; Codehighlighter1_2348_2472_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_2348_2472_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2348_2472_Closed_Text.style.display='none'; Codehighlighter1_2348_2472_Open_Image.style.display='inline'; Codehighlighter1_2348_2472_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>            </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(socket.bytesAvailable)</span><span id=Codehighlighter1_2348_2472_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_2348_2472_Open_Text><span style="COLOR: #000000">{   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                sdata </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> socket.readUTF();   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                ExternalInterface.call(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sb_ondata</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,sdata);   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>            }</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>  <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</span></span><span style="COLOR: #000000">   <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">  <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span></div> <img src ="http://m.shnenglu.com/keigoliye/aggbug/96634.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/keigoliye/" target="_blank">鏆楀鏁欑埗</a> 2009-09-18 12:40 <a href="http://m.shnenglu.com/keigoliye/archive/2009/09/18/96634.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>erlang緗戠粶緙栫▼鐨勫嚑涓ц兘璋冧紭鍜屾敞鎰忕偣http://m.shnenglu.com/keigoliye/archive/2009/09/14/96106.html鏆楀鏁欑埗鏆楀鏁欑埗Mon, 14 Sep 2009 04:25:00 GMThttp://m.shnenglu.com/keigoliye/archive/2009/09/14/96106.htmlhttp://m.shnenglu.com/keigoliye/comments/96106.htmlhttp://m.shnenglu.com/keigoliye/archive/2009/09/14/96106.html#Feedback0http://m.shnenglu.com/keigoliye/comments/commentRss/96106.htmlhttp://m.shnenglu.com/keigoliye/services/trackbacks/96106.html
鍓嶄簺澶╃粰echo_server鍐欎簡涓潪甯哥畝鍗曠殑榪炴帴鍘嬪姏嫻嬭瘯紼嬪簭,

   1.  -module(stress_test).  
   
2.   
   
3-export([start/0, tests/1]).  
   
4.   
   
5. start() ->  
   
6.     tests(12345).  
   
7.   
   
8. tests(Port) ->  
   
9.     io:format("starting~n"),  
  
10.     spawn(fun() -> test(Port) end),  
  
11.     spawn(fun() -> test(Port) end),  
  
12.     spawn(fun() -> test(Port) end),  
  
13.     spawn(fun() -> test(Port) end).  
  
14.   
  
15. test(Port) ->  
  
16.      case gen_tcp:connect("192.168.0.217", Port, [binary,{packet, 0}]) of  
  
17.     {ok, _} ->  
  
18.             test(Port);  
  
19.     _ ->  
  
20.         test(Port)  
  
21.     end.  
涓寮濮嬫垜鐨勮繖涓猻tress_test瀹㈡埛绔繍琛屽湪windows涓婇潰, echo_server鏈嶅姟鍣ㄧ榪愯鍦╨inux涓婇潰銆? 緇撴灉鎺ュ彈浜?016涓繛鎺ュ氨鍋滄浜? 浜庢槸鎴戠敤ulimit -n 鏀逛簡鏈嶅姟鍣ㄧ鐨勬枃浠舵弿榪扮鏁伴噺涓?0240. 鎺ョ潃榪樻槸濡傛,鎶樿吘浜嗗嚑澶?鏈緇堣繕鏄病鏈夋悶鏄庣櫧銆?

浜庢槸灝辨眰鍔╀簬鍏徃鐨刲inux緙栫▼鐗涗漢,緇撴灉璁╂垜涓鍊?..  瀹㈡埛绔病鏈変慨鏀規(guī)枃浠舵弿榪扮涓暟. windows涓婂緱鍦ㄦ敞鍐岃〃閲岄潰鏀?
鐗涗漢寮濮嬪榪欎笢瑗跨殑鎬ц兘鎰熷叴瓚d簡,鍒氬ソ鎴戞懜浜嗕竴闃靛瓙erlang鐨勬枃妗?浜庢槸鎴戜咯灝辮蛋鍚戜簡erlang緗戠粶榪炴帴鐨勬ц兘璋冧紭涔嬫梾鍟~榪囩▼鐪熸槸璁╀漢鍏村銆?鎴戜滑寰堝揩閫氳繃浜?024榪欎竴鍏硚~鍒頒簡4999涓繛鎺?寰堝叴濂?

浣嗕負浠涔?999涓繛鎺ュ憿, 媯鏌ヤ竴涓嬩唬鐮佺粓浜庡彂鐜癳cho_server.erl瀹氫箟浜嗕竴涓畯, 鏈澶ц繛鎺ユ暟涓?000. 鎴戝張鍊拁~
淇敼緙栬瘧涔嬪悗, 榪炴帴鏁拌窇鍒?01xx澶氫簡, 澶搱鐨簡!
鍐嶆祴102400涓繛鎺ユ椂,鍒?2767涓繛鎺ユ暟erl鎸備簡~璇存槸榪涚▼寮寰楀お澶氫簡. 濂藉湪璁板緱榪欎釜erl鐨勫弬鏁?P,鍙互瀹氫箟erlang鑳界敓鎴愮殑榪涚▼鏁? 榛樿鏄?2768. 鏀逛簡!

鍚庨潰涓嶇煡鎬庝箞鐫,鍦?1231涓繛鎺ュ仠姝簡. 鏂扮殑鎬ц兘鐡墮鍙堝崱浜嗘垜浠?  濂藉湪鐗涗漢瀵筶inux鐔? 鐢╯trace(榪欎笢瑗夸細鑾悕鍦伴鍑?, stap鏌ュ嚭涓浜涜嫍澶?   鎴戜篃鎯沖埌鍦╫tp鏂囨。濂藉儚鎻愯繃鍙︿竴涓猯imit,閭e氨鏄鍙f暟...鍦ㄦ鍚屾椂鎴戜滑鍙戠幇erlang鍦╨inux涓婃槸鐢ㄧ殑浼犵粺poll妯″瀷. 浣嗘煡erlang鐨勬簮浠g爜鍙戠幇鏄敮鎸乪poll鐨? 鍦ㄧ綉涓婃悳浜嗗崐澶?緇堜簬鎼滃埌浜嗕釜maillist鐨勫笘瀛?

浠g爜
  1. $./configure --enable-kernel-poll  

鐢變簬鎴戜滑鐨勬祴璇曟湇鍔″櫒鏄弻鏍哥殑,鎴戜滑鍦ㄩ厤緗殑鏃跺欎篃鎵撳紑浜唖mp鏀寔.  嬈㈠揩鐨刴ake  & make install涔嬪悗....
鎶?/proc/sys/net/ipv4/ip_local_port_range 鐨勫唴瀹規(guī)敼鎴愪簡1024鍒?5535.  鏈澶氫篃涔熻兘鏀規(guī)垚65535 :)

浠g爜
  1. $echo 1024 65535 > ip_local_port_range  

鍙﹀鍐嶆坊鍔犱竴涓猠rl鐨勭幆澧冨彉閲?br>
浠g爜
  1. $export ERL_MAX_PORTS=102400  

浜庢槸寮濮嬭窇浜?涓嶈繃榪欐璺戜笉涓鏍蜂簡
echo_server
 
  1. $erl -noshell  +P 102400 +K true +S 2 -smp -s echo_server start  
   
stress_test
 
  1. $erl -noshell  +P 102400 +K true +S 2 -smp -s stress_test start  
榪欓噷鐨?K true,琛ㄧず浣跨敤鍐呮牳poll,+S 2 琛ㄧず涓や釜鏍? 榪欐牱鍙蹇暒~~~ 10w澶у叧榪囧挴! 鑰屼笖姣斿垰鎵嶆病鐢╡poll鐨勯熷害蹇毚澶殈~
浜庢槸鎴戜滑鍙堝紑濮嬩簡204800涓繛鎺ュ彂嫻嬭瘯浜唦~~

鐢╰op涓鐪媍pu鍗犵敤鐜囨瀬浣?鏈嶅姟鍣ㄥ彧鍦?%宸﹀彸銆?鍐呭瓨涔熶笉鏄緢澶~



鏆楀鏁欑埗 2009-09-14 12:25 鍙戣〃璇勮
]]>
echo_server http://m.shnenglu.com/keigoliye/archive/2009/09/14/96105.html鏆楀鏁欑埗鏆楀鏁欑埗Mon, 14 Sep 2009 04:24:00 GMThttp://m.shnenglu.com/keigoliye/archive/2009/09/14/96105.htmlhttp://m.shnenglu.com/keigoliye/comments/96105.htmlhttp://m.shnenglu.com/keigoliye/archive/2009/09/14/96105.html#Feedback0http://m.shnenglu.com/keigoliye/comments/commentRss/96105.htmlhttp://m.shnenglu.com/keigoliye/services/trackbacks/96105.html
   1.  -module(echo_server).  
   
2-export([start/0,stop/0]).  
   
3.   
   
4-define(LISTEN_PORT,12345).     % 寮鏀劇鍙?nbsp; 
   
5-define(MAX_CONN, 5000).        % 鏈澶ц繛鎺ユ暟  
   
6.   
   
7. start() ->  
   
8.     process_flag(trap_exit, true), % 璁劇疆閫鍑洪櫡闃?nbsp; 
   
9.     tcp_server:start_raw_server(?LISTEN_PORT,  
  
10.                 fun(Socket) -> socket_handler(Socket,self()) end,  
  
11.                 ?MAX_CONN,   
  
12.                 0).  
  
13.   
  
14%% 澶勭悊鏁版嵁  
  
15. socket_handler(Socket,Controller) ->  
  
16.     receive  
  
17.         {tcp, Socket, Bin} ->  
  
18.             gen_tcp:send(Socket, Bin); % echo  
  
19.         {tcp_closed, Socket} ->  
  
20.             ok;  
  
21.         _ ->  
  
22.             socket_handler(Socket,Controller)  
  
23.     end.  
  
24.   
  
25. stop() ->  
  
26.     tcp_server:stop(?LISTEN_PORT).  

鍩轟簬Joe Armstrong 鐨則cp_server妯″潡鏉ュ仛鐨? 璇曡瘯鍏?:)

緙栬瘧
    erl -noshell -s make all -s init stop
榪愯
    erl -noshell -sname coderplay -s echo_server start


鏆楀鏁欑埗 2009-09-14 12:24 鍙戣〃璇勮
]]>
erlang 緗戠粶璋冧紭瀹炴垬http://m.shnenglu.com/keigoliye/archive/2009/09/14/96096.html鏆楀鏁欑埗鏆楀鏁欑埗Mon, 14 Sep 2009 03:20:00 GMThttp://m.shnenglu.com/keigoliye/archive/2009/09/14/96096.htmlhttp://m.shnenglu.com/keigoliye/comments/96096.htmlhttp://m.shnenglu.com/keigoliye/archive/2009/09/14/96096.html#Feedback0http://m.shnenglu.com/keigoliye/comments/commentRss/96096.htmlhttp://m.shnenglu.com/keigoliye/services/trackbacks/96096.htmlerlang緗戠粶緙栫▼鐨勫嚑涓ц兘璋冧紭鍜屾敞鎰忕偣
鍘熸枃浣滆咃細coderplay
鍓嶄簺澶╃粰echo_server鍐欎簡涓潪甯哥畝鍗曠殑榪炴帴鍘嬪姏嫻嬭瘯紼嬪簭,
涓嬭澆: stress_test.erl
  • -module(stress_test).  

  • -export([start/0, tests/1]).  

  • start() ->  

  • tests(12345).  

  • tests(Port) ->  

  • io:format("starting~n"),  

  • spawn(fun() -> test(Port)
    end),  

  • spawn(fun() -> test(Port)
    end),  

  • spawn(fun() -> test(Port)
    end),  

  • spawn(fun() -> test(Port)
    end).  

  • test(Port) ->  

  • case
    gen_tcp:connect("192.168.0.217", Port, [binary,{packet, 0}])
    of
  •     {ok, _} ->  

  • test(Port);  

  • _ ->  

  • test(Port)

  • end.

涓寮濮嬫垜鐨勮繖涓猻tress_test瀹㈡埛绔繍琛屽湪windows涓婇潰,echo_server鏈嶅姟鍣ㄧ榪愯鍦╨inux涓婇潰銆傜粨鏋滄帴鍙椾簡1016涓繛鎺ュ氨鍋滄浜? 浜庢槸鎴戠敤ulimit -n鏀逛簡鏈嶅姟鍣ㄧ鐨?span onclick="tagshow(event)" class="t_tag">鏂囦歡鎻忚堪絎︽暟閲忎負10240. 鎺ョ潃榪樻槸濡傛,鎶樿吘浜嗗嚑澶?鏈緇堣繕鏄病鏈夋悶鏄庣櫧銆?br> 浜庢槸灝辨眰鍔╀簬鍏徃鐨刲inux緙栫▼鐗涗漢,緇撴灉璁╂垜涓鍊?#8230;  瀹㈡埛绔病鏈変慨鏀規(guī)枃浠舵弿榪扮涓暟. windows涓婂緱鍦ㄦ敞鍐岃〃閲岄潰鏀?

鐗涗漢寮濮嬪榪欎笢瑗跨殑鎬ц兘鎰熷叴瓚d簡,鍒氬ソ鎴戞懜浜嗕竴闃靛瓙erlang鐨?span onclick="tagshow(event)" class="t_tag">鏂囨。,浜庢槸鎴戜咯灝辮蛋鍚戜簡erlang緗戠粶榪炴帴鐨勬ц兘璋冧紭涔嬫梾鍟~榪囩▼鐪熸槸璁╀漢鍏村銆?鎴戜滑寰堝揩閫氳繃浜?024榪欎竴鍏硚~鍒頒簡4999涓繛鎺?寰堝叴濂?
浣嗕負浠涔?999涓繛鎺ュ憿, 媯鏌ヤ竴涓嬩唬鐮佺粓浜庡彂鐜癳cho_server.erl瀹氫箟浜嗕竴涓畯, 鏈澶ц繛鎺ユ暟涓?000. 鎴戝張鍊拁~
淇敼緙栬瘧涔嬪悗, 榪炴帴鏁拌窇鍒?01xx澶氫簡, 澶搱鐨簡!
鍐嶆祴102400涓繛鎺ユ椂,鍒?2767涓繛鎺ユ暟erl鎸備簡~璇存槸榪涚▼寮寰楀お澶氫簡. 濂藉湪璁板緱榪欎釜erl鐨勫弬鏁?P,鍙互瀹氫箟erlang鑳界敓鎴愮殑榪涚▼鏁? 榛樿鏄?2768. 鏀逛簡!
鍚庨潰涓嶇煡鎬庝箞鐫,鍦?1231涓繛鎺ュ仠姝簡. 鏂扮殑鎬ц兘鐡墮鍙堝崱浜嗘垜浠? 濂藉湪鐗涗漢瀵筶inux鐔? 鐢╯trace(榪欎笢瑗夸細鑾悕鍦伴鍑?,stap鏌ュ嚭涓浜涜嫍澶?鎴戜篃鎯沖埌鍦╫tp鏂囨。濂藉儚鎻愯繃鍙︿竴涓猯imit,閭e氨鏄鍙f暟…鍦ㄦ鍚屾椂鎴戜滑鍙戠幇 erlang鍦╨inux涓婃槸鐢ㄧ殑浼犵粺poll妯″瀷.浣嗘煡erlang鐨勬簮浠g爜鍙戠幇鏄敮鎸乪poll鐨? 鍦ㄧ綉涓婃悳浜嗗崐澶?緇堜簬鎼滃埌浜嗕釜maillist鐨勫笘瀛?
  • $./configure --enable-kernel-poll

鐢變簬鎴戜滑鐨勬祴璇曟湇鍔″櫒鏄弻鏍哥殑,鎴戜滑鍦ㄩ厤緗殑鏃跺欎篃鎵撳紑浜唖mp鏀寔. 嬈㈠揩鐨刴ake  & make install涔嬪悗….
鎶?/proc/sys/net/ipv4/ip_local_port_range 鐨勫唴瀹規(guī)敼鎴愪簡1024鍒?5535. 鏈澶氫篃涔熻兘鏀規(guī)垚65535
  • $echo 1024 65535 > ip_local_port_range

鍙﹀鍐嶆坊鍔犱竴涓猠rl鐨勭幆澧?span onclick="tagshow(event)" class="t_tag">鍙橀噺
  • $export ERL_MAX_PORTS=102400

浜庢槸寮濮嬭窇浜?涓嶈繃榪欐璺戜笉涓鏍蜂簡
echo_server
  • $erl -noshell  +P 102400 +K true +S 2 -smp -s echo_server start

stress_test
  • $erl -noshell  +P 102400 +K true +S 2 -smp -s stress_test start

榪欓噷鐨?K true,琛ㄧず浣跨敤鍐呮牳poll,+S 2 琛ㄧず涓や釜鏍? 榪欐牱鍙蹇暒~~~ 10w澶у叧榪囧挴! 鑰屼笖姣斿垰鎵嶆病鐢╡poll鐨勯熷害蹇毚澶殈~
浜庢槸鎴戜滑鍙堝紑濮嬩簡204800涓繛鎺ュ彂嫻嬭瘯浜唦~~
鐢╰op涓鐪媍pu鍗犵敤鐜囨瀬浣?鏈嶅姟鍣ㄥ彧鍦?%宸﹀彸銆傚唴瀛樹篃涓嶆槸寰堝ぇ~~

鏆楀鏁欑埗 2009-09-14 11:20 鍙戣〃璇勮
]]>
ErLang璇硶鎻愯http://m.shnenglu.com/keigoliye/archive/2009/09/11/95894.html鏆楀鏁欑埗鏆楀鏁欑埗Fri, 11 Sep 2009 03:04:00 GMThttp://m.shnenglu.com/keigoliye/archive/2009/09/11/95894.htmlhttp://m.shnenglu.com/keigoliye/comments/95894.htmlhttp://m.shnenglu.com/keigoliye/archive/2009/09/11/95894.html#Feedback0http://m.shnenglu.com/keigoliye/comments/commentRss/95894.htmlhttp://m.shnenglu.com/keigoliye/services/trackbacks/95894.html
ErLang鐨勬敞閲婄敤%寮澶淬侲rLang鐢ㄤ笅鍒掔嚎“_”琛ㄧず浠繪剰鍙橀噺錛岀被浼間簬Java鐨剆witch璇硶閲岄潰鐨刣efault閫夐」銆?

ErLang鑴辮儙浜嶱rolog錛屼笉榪囷紝鎴戣寰楋紝ErLang璇硶鍜孒askell璇硶姣旇緝璞★紝閮芥槸閲囩敤 -> 瀹氫箟鍑芥暟銆?

ErLang璇彞涓殑鏍囩偣絎﹀彿鐢ㄦ硶寰堣薄鏂囩珷鐨勬爣鐐圭鍙楓?

鏁翠釜鍑芥暟瀹氫箟緇撴潫鐢ㄤ竴涓彞鍙?#8220;.”錛涘悓涓涓嚱鏁頒腑錛屽茍鍒楃殑閫昏緫鍒嗘敮涔嬮棿錛岀敤鍒嗗彿“;”鍒嗙晫錛涢『搴忚鍙ヤ箣闂達紝鐢ㄩ楀彿“,”鍒嗛殧銆?

ErLang涓紝{ }涓嶆槸琛ㄧず紼嬪簭鍧楃殑寮澶村拰緇撳熬錛岃屾槸琛ㄧず涓縐嶇壒孌婄殑鏁版嵁緇撴瀯綾誨瀷鈥斺擳uple錛堝厓緇勶級錛屾瘮濡傦紝{12, 3, ok}銆傛垜浠彲浠ユ妸Tuple鐞嗚В涓哄畾闀挎暟緇勩?

[ ] 鍒欒〃紺烘渶鍩烘湰鐨勫嚱鏁板紡緙栫▼鐨勬暟鎹粨鏋勭被鍨嬧斺擫ist銆侺ist鏁版嵁緇撴瀯寰堝熀鏈紝鍐欐硶鍜岀敤娉曚篃鏈変竴瀹氱殑澶嶆潅搴︼紝涓嶆槸琛ㄩ潰涓婄湅璧鋒潵閭d箞綆鍗曪紝鍚庨潰璁茶ВClosure鐨勭珷鑺備細璇︾粏浠嬬粛List鐨勬渶鍩烘湰鐨勬瀯閫犲師鐞嗐?

涓嬮潰鎴戜滑鏉ョ湅涓涓畝鍗曠殑渚嬪瓙銆?

鎴戜滑棣栧厛瀹氫箟涓涓渶綆鍗曠殑鍑芥暟錛屾妸涓涓弬鏁頒箻浠?0錛岀劧鍚庡姞1銆?
times10( Number ) –>
Temp = 10 * Number,
Temp + 1.

涓轟簡璇存槑闂錛屼笂闈㈢殑浠g爜鎶婁箻娉曟搷浣滃拰鍔犳硶鎿嶄綔鍒嗘垚涓や釜姝ラ銆俆emp = 10 * Number璇彞鍚庨潰鏄楀彿錛屽洜涓鴻繖鏄袱鏉¢『搴忔墽琛岀殑璇彞銆俆emp + 1璇彞鍚庨潰鏄彞鍙鳳紝琛ㄧず鏁翠釜鍑芥暟瀹氫箟緇撴潫銆傝屼笖錛屽彲浠ョ湅鍑猴紝ErLang娌℃湁return璇彞錛屾渶鍚庢墽琛岀殑閭f潯璇彞鐨勬墽琛岀粨鏋滃氨鏄繑鍥炲箋?

涓嬮潰錛屾垜浠妸榪欎釜鍑芥暟浼樺寲涓涓嬨傚綋鍙傛暟絳変簬0鐨勬椂鍊欙紝鐩存帴榪?錛涘惁鍒欙紝灝變箻浠?0錛岀劧鍚庡姞1錛岀劧鍚庤繑鍥炪傝繖鏃跺欙紝鎴戜滑灝辮鐢ㄥ埌case of閫昏緫鍒嗘敮璇彞錛岀浉褰撲簬java鐨剆witch璇彞銆?

times10( Number ) –>
case Number of
0 -> 1;
_ ->
Temp = 10 * Number,
Temp + 1
end.

鎴戜滑鏉ヤ粩緇嗚瀵熻繖孌礒rLang紼嬪簭銆?

褰揘umber絳変簬0鐨勬椂鍊欙紝鐩存帴榪斿洖1銆傜敱浜庤繖鏄竴鏉″垎鏀鍙ワ紝鍜屽悗闈㈢殑鍒嗘敮鏄茍鍒楃殑鍏崇郴錛屾墍浠ワ紝1鐨勫悗闈㈢殑鏍囩偣絎﹀彿鏄垎鍙楓傚悗闈㈣繖涓垎鏀紝涓嬪垝綰?#8220;_”琛ㄧず浠諱綍鍏跺畠鍊鹼紝榪欓噷灝辮〃紺洪櫎浜?涔嬪鐨勪換浣曞叾瀹冩暟鍊箋?

闇瑕佹敞鎰忕殑涓鐐規(guī)槸錛宑ase of璇彞闇瑕佺敤end緇撳熬錛宔nd涔嬪墠涓嶉渶瑕佹湁鏍囩偣絎﹀彿銆?

涓婅堪浠g爜涓殑case of 璇彞錛屽叾瀹炲氨鏄疨attern Match鐨勪竴縐嶃侲rLang鐨凱attern Match寰堝己澶э紝鑳藉澶у箙搴︾畝鍖栫▼搴忛昏緫錛屽悗闈㈣繘琛屼笓闂ㄤ粙緇嶃?
Pattern Match
Pattern Match涓昏鏈変袱涓姛鑳解斺旀瘮杈冨垎媧懼拰鍙橀噺璧嬪箋?
鍏朵腑錛屾瘮杈冨垎媧炬槸鏈涓昏鐨勫姛鑳姐傛瘮杈冨垎媧劇殑鎰忔濇槸錛屾牴鎹弬鏁板艱繘琛屾潯浠跺垎鏀殑鍒嗘淳銆傚彲浠ユ妸姣旇緝鍒嗘淳鍔熻兘鐪嬩綔鏄竴縐嶇被浼間簬if, else絳夋潯浠跺垎鏀鍙ョ殑綆媧佸己澶у啓娉曘?
涓婇潰鐨勪緥瀛愪腑錛宑ase Number of 灝辨槸鏍規(guī)嵁Number鐨勫艱繘琛屾瘮杈冨垎媧俱傛洿甯歌鐨勫啓娉曟槸錛屽彲浠ユ妸Pattern Match閮ㄥ垎鎻愬埌鍑芥暟瀹氫箟鍒嗘敮鐨勯珮搴︺備簬鏄紝涓婅堪浠g爜鍙互鍐欐垚涓嬮潰鐨勫艦寮忥細
times10( 0 ) –> 1;
times10( Number ) –>
Temp = 10 * Number,
Temp + 1.

榪欐浠g爜鐢變袱涓嚱鏁板畾涔夊垎鏀瀯鎴愶紝鐢變簬涓や釜鍑芥暟鍒嗘敮鐨勫嚱鏁板悕鐩稿悓錛岃屼笖鍙傛暟涓暟鐩稿悓錛岃屼笖涓や釜鍑芥暟瀹氫箟鍒嗘敮涔嬮棿閲囩敤鍒嗗彿“;”鍒嗛殧錛岃鏄庤繖鏄悓涓涓嚱鏁扮殑瀹氫箟銆傚嚱鏁板紡緙栫▼璇█涓紝榪欑瀹氫箟鏂瑰紡寰堝父瑙侊紝鐪嬭搗鏉ュ艦寮忓緢鏁撮綈錛屽疀濡傛暟瀛﹀叕寮忋?

榪欐浠g爜鐨勫惈涔夋槸錛屽綋鍙傛暟鍊肩瓑浜?鐨勬椂鍊欙紝閭d箞錛岀▼搴忚蛋絎竴涓嚱鏁板畾涔夊垎鏀紙鍗沖垎鍙?#8220;;”緇撳熬鐨?#8220;times10( 0 ) –> 1;”錛夛紝鍚﹀垯錛岃蛋涓嬮潰鐨勫嚱鏁板畾涔夊垎鏀紙鍗?#8220;times10( Number ) –>…”錛夈?

絎簩涓垎鏀腑鐨勫弬鏁頒笉鏄竴涓父鏁幫紝鑰屾槸涓涓彉閲廚umber錛岃〃紺鴻繖涓垎鏀彲浠ユ帴鍙椾換浣曢櫎浜?涔嬪鐨勫弬鏁板鹼紝姣斿錛?銆?銆?2絳夌瓑錛岃繖浜涘煎皢璧嬬粰鍙橀噺Number銆?
鍥犳錛岃繖涓湴鏂逛篃浣撶幇浜哖attern Match鐨勭浜屼釜鍔熻兘鈥斺斿彉閲忚祴鍊箋?

Pattern Match鐨勫艦寮忓彲浠ュ緢澶嶆潅錛屼笅闈婦鍑犱釜鍏稿瀷鐨勪緥瀛愩?
錛?錛夋暟鎹粨鏋勬媶瑙h祴鍊?
鍓嶉潰灝嗗埌浜咵rLang璇█鏈変竴縐嶇浉褰撲簬瀹氶暱鏁扮粍鐨凾uple綾誨瀷錛屾垜浠彲浠ュ緢鏂逛究鍦版牴鎹厓绱犵殑浣嶇疆榪涜騫惰璧嬪箋傛瘮濡傦紝
{First, Second} = {1, 2}
鎴戜滑榪樺彲浠ュ澶嶅悎Tuple鏁版嵁緇撴瀯榪涜璧嬪鹼紝姣斿
{A, {B, C}, D} = { 1, {2, 3}, 4 }
List鏁版嵁緇撴瀯鐨勮祴鍊間篃鏄被浼箋傜敱浜嶭ist鐨勫啓娉曞拰鐢ㄦ硶涓嶆槸閭d箞綆鍗曪紝涓夎█涓よ涔熻涓嶆竻妤氾紝榪樺緬澧炲洶鎵幫紝榪欓噷涓嶅啀璧樿堪銆?
錛?錛塧ssertEquals璇彞
鍦↗ava絳夎璦涓紝鎴戜滑鍐欏崟鍏冩祴璇曠殑鏃跺欙紝浼氬啓涓浜沘ssert璇彞錛岄獙璇佺▼搴忚繍琛岀粨鏋溿傝繖浜沘ssert璇彞閫氬父鏄互API鐨勬柟寮忔彁渚涳紝姣斿錛宎ssertTrue()銆乤ssertEquals()絳夈?
鍦‥rLang涓紝鍙互鐢ㄧ畝鍗曠殑璇彞杈懼埌綾諱技浜巃ssertTrue()銆乤ssertEquals()絳堿PI鐨勬晥鏋溿?
姣斿錛孍rLang涓紝true = testA() 榪欐牱鐨勮鍙ヨ〃紺簍estA鐨勮繑鍥炵粨鏋滃繀欏繪槸true錛屽惁鍒欏氨浼氭姏鍑哄紓甯搞傝繖涓敤娉曞緢宸у銆傝繖閲岃В閲婁竴涓嬨?
鍓嶉潰璁茶繃錛孍rLang璇硶綰﹀畾錛屽皬鍐欏瓧姣嶅紑澶寸殑鍚嶅瓧錛岄兘鏄父閲忓悕銆傝繖閲岀殑true鑷劧涔熸槸涓涓父閲忥紝鏃㈢劧鏄父閲忥紝鎴戜滑涓嶅彲鑳藉瀹冭祴鍊鹼紝閭d箞true = testA()鐨勬剰鎬濆氨涓嶆槸璧嬪鹼紝鑰屾槸榪涜鍖歸厤姣旇緝銆?
錛?錛夊尮閰嶅拰璧嬪煎悓鏃惰繘琛?
鎴戜滑鏉ョ湅榪欐牱涓孌典唬鐮併?
case Result of
{ok, Message} -> save(Message);
{error, ErrorMessage} -> log(ErrorMessage)
end.

榪欐浠g爜涓紝Result鏄竴涓猅uple綾誨瀷錛屽寘鍚袱涓厓绱狅紝絎竴涓厓绱犺〃紺烘垚鍔燂紙ok錛夋垨鑰呭け璐ワ紙error錛夛紝絎簩涓厓绱犺〃紺哄叿浣撶殑淇℃伅銆?
鍙互鐪嬪埌錛岃繖涓や釜鏉′歡鍒嗘敮涓紝鍚屾椂鍑虹幇浜嗗父閲忓拰鍙橀噺銆傜涓涓潯浠跺垎鏀腑鐨刼k鏄父閲忥紝Message鏄彉閲忥紱絎簩涓潯浠跺垎鏀腑鐨別rror鏄父閲忥紝ErrorMessage鏄彉閲忋?
榪欎袱涓潯浠跺垎鏀兘鏃㈡湁姣旇緝鍒ゆ柇錛屼篃鏈夊彉閲忚祴鍊箋傞鍏堬紝鍒ゆ柇ResultTuple涓殑絎竴涓厓绱犲拰鍝竴涓垎鏀殑絎竴涓厓绱犲尮閰嶏紝濡傛灉鐩擱厤錛岄偅涔堟妸ResultTuple涓殑絎簩涓厓绱犺祴緇欒繖涓垎鏀殑絎簩涓彉閲忓厓绱犮傚嵆錛屽鏋淩esult鐨勭涓涓厓绱犳槸ok錛岄偅涔堣蛋絎竴涓潯浠跺垎鏀紝騫朵笖鎶奟esult鐨勭浜屼釜鍏冪礌璧嬬粰Message鍙橀噺錛涘鏋淩esult鐨勭浜屼釜鍏冪礌鏄痚rror錛岄偅涔堣蛋絎簩涓潯浠跺垎鏀紝騫朵笖鎶奟esult鐨勭浜屼釜鍏冪礌璧嬬粰ErrorMessage鍙橀噺銆?

鍦↗ava絳夎璦涓紝瀹炵幇涓婅堪鐨勬潯浠跺垎鏀昏緫錛屽垯闇瑕佸鍐欏嚑鏉¤鍙rLang璇硶鍙互浠庡艦寮忎笂緹庡寲鍜岀畝鍖栭昏緫鍒嗘敮鍒嗘淳澶嶆潅鐨勭▼搴忋?
闄や簡鏀寔鏁扮浉絳夋瘮杈冿紝Pattern Match榪樺彲浠ヨ繘琛岃寖鍥存瘮杈冦佸ぇ灝忔瘮杈冪瓑錛岄渶瑕佺敤鍒板叧閿瓧when錛屼笉榪囩敤鍒皐hen鐨勬儏鍐碉紝灝辨瘮if else綆媧佷笉浜嗗灝戯紝榪欓噷涓嶅啀璧樿堪銆?
鍖垮悕鍑芥暟
ErLang鍏佽鍦ㄤ竴涓嚱鏁頒綋鍐呴儴瀹氫箟鍙︿竴涓尶鍚嶅嚱鏁幫紝榪欐槸鍑芥暟寮忕紪紼嬬殑鏈鍩烘湰鐨勫姛鑳姐傝繖鏍鳳紝鍑芥暟寮忚璦鎵嶅彲浠ユ敮鎸丆losure銆傛垜浠潵鐪嬩竴涓狤rLang鐨勫尶鍚嶅嚱鏁扮殑渚嬪瓙銆?
outer( C ) –>
Inner = fun(A, B) -> A + B + C end,
Inner(2, 3).

榪欐浠g爜棣栧厛瀹氫箟浜嗕竴涓懡鍚嶅嚱鏁皁uter錛岀劧鍚庡湪outer鍑芥暟鍐呴儴瀹氫箟浜嗕竴涓尶鍚嶅嚱鏁般傚彲浠ョ湅鍒幫紝榪欎釜鍖垮悕鍑芥暟閲囩敤鍏抽敭瀛梖un鏉ュ畾涔夈傚墠闈㈣榪囷紝鍑芥暟寮忕紪紼嬬殑鍑芥暟灝辯浉褰撲簬闈㈠悜瀵硅薄緙栫▼鐨勭被瀹炰緥瀵硅薄錛屽尶鍚嶅嚱鏁拌嚜鐒朵篃鏄繖鏍鳳紝涔熺浉褰撲簬綾誨疄渚嬶紝鎴戜滑鍙互鎶婅繖涓尶鍚嶅嚱鏁拌祴緇欎竴涓彉閲廔nner錛岀劧鍚庢垜浠繕鍙互鎶婅繖涓彉閲忓綋浣滃嚱鏁版潵璋冪敤錛屾瘮濡傦紝Inner(2, 3)銆?
fun鏄疎rLang鐢ㄦ潵瀹氫箟鍖垮悕鍑芥暟鐨勫叧閿瓧銆傝繖涓叧閿瓧寰堥噸瑕併俧un瀹氫箟鍖垮悕鍑芥暟鐨勭敤娉曚笉鏄緢澶嶆潅錛屽拰鍛藉悕鍑芥暟瀹氫箟綾諱技銆?
鍑芥暟鍒嗘敮鐨勫畾涔変篃鏄被浼鹼紝鍙槸闇瑕佺敤end緇撳熬錛岃屼笉鏄敤鍙ュ彿“.”緇撳熬錛岃屼笖fun鍙渶瑕佸啓涓嬈★紝涓嶉渶瑕佸悜鍛藉悕鍑芥暟閭f牱錛屾瘡涓垎鏀兘瑕佸啓銆傛瘮濡傦紝
MyFunction = fun(0) -> 0;
(Number) -> Number * 10 + 1 end,
MyFunction(3),
鍑芥暟浣滀負鍙橀噺
鍖垮悕鍑芥暟鍙互褰撲綔瀵硅薄璧嬬粰鍙橀噺錛屽懡鍚嶅嚱鏁板悓鏍蜂篃鍙互璧嬬粰鍙橀噺銆傚叿浣撶敤娉曡繕鏄渶瑕佸熷姪閲嶈鐨刦un鍏抽敭瀛椼傛瘮濡傦紝
MyFunction = fun outer / 1

灝卞彲浠ユ妸涓婅堪瀹氫箟鐨刼uter鍑芥暟璧嬬粰MyFunction鍙橀噺銆傚悗闈㈢殑 / 0琛ㄧず榪欎釜outer鍑芥暟鍙湁涓涓弬鏁般傚洜涓篍rLang鍏佽鏈夊涓悓鍚嶅嚱鏁扮殑瀹氫箟錛屽彧瑕佸弬鏁頒釜鏁頒笉鍚岋紝灝辨槸涓嶅悓鐨勫嚱鏁般?
鎴戜滑鍙互鐪嬪埌錛屼換浣曞嚱鏁伴兘鍙互浣滀負鍙橀噺錛屼篃鍙互浣滀負鍙傛暟鍜岃繑鍥炲間紶鏉ヤ紶鍘伙紝榪欎簺鍙橀噺涔熷彲浠ラ殢鏃朵綔涓哄嚱鏁拌繘琛岃皟鐢紝浜庢槸灝卞叿鏈変簡涓瀹氱殑鍔ㄦ佹с?
鍑芥暟鐨勫姩鎬佽皟鐢?
ErLang鏈変竴涓猘pply鍑芥暟錛屽彲浠ュ姩鎬佽皟鐢ㄦ煇涓涓嚱鏁板彉閲忋?
鍩烘湰鐢ㄦ硶鏄?apply( 鍑芥暟鍙橀噺錛屽嚱鏁板弬鏁板垪琛?)銆傛瘮濡傦紝涓婇潰鐨凪yFunciton鍑芥暟鍙橀噺錛屽氨鍙互榪欎箞璋冪敤錛宎pply( MyFunction, [ 5 ])銆?
閭d箞鎴戜滑鑳藉惁鏍規(guī)嵁涓涓瓧絎︿覆浣滀負鍑芥暟鍚嶈幏鍙栦竴涓嚱鏁板彉閲忓憿錛熻繖鏍鋒垜浠氨鍙互鏍規(guī)嵁涓涓瓧絎︿覆鏉ュ姩鎬佽皟鐢ㄦ煇涓嚱鏁頒簡銆?
ErLang涓紝鍋氬埌榪欎竴鐐瑰緢綆鍗曘傚墠闈㈣榪囷紝鍑芥暟鍚嶄竴鏃﹀畾涔変簡錛岃嚜鐒跺氨鍥哄畾浜嗭紝榪欎篃綾諱技浜庡父閲忓悕錛屽睘浜庝笉鍙彉鐨刟tom錛堝師瀛愶級銆傛墍鏈夌殑atom閮藉彲浠ヨ漿鎹㈡垚瀛楃涓詫紝涔熷彲浠ヤ粠瀛楃涓茶漿鎹㈣繃鏉ャ侲rLang涓殑瀛楃涓插疄璐ㄤ笂閮芥槸List銆傚瓧絎︿覆鍜宎tom涔嬮棿鐨勮漿鎹㈤氳繃list_to_atom鍜宎tom_to_list鏉ヨ漿鎹€?
浜庢槸鎴戜滑鍙互榪欐牱鑾峰彇MyFunciton錛歁yFunction = list_to_atom(“outer”)
濡傛灉outer鍑芥暟宸茬粡瀹氫箟錛岄偅涔圡yFucntion灝辯瓑浜巓uter鍑芥暟錛屽鏋渙uter鍑芥暟娌℃湁瀹氫箟錛岄偅涔坙ist_to_atom(“outer”)浼氫駭鐢熶竴涓柊鐨勫彨鍋歰uter鐨刟tom錛孧yFucntion灝辯瓑浜庤繖涓柊浜х敓鐨刟tom銆?
濡傛灉闇瑕佸己鍒朵駭鐢熶竴涓凡緇忓瓨鍦ㄧ殑atom錛岄偅涔堟垜浠渶瑕佽皟鐢╨ist_to_existing_atom杞崲鍑芥暟錛岃繖涓嚱鏁頒笉浼氫駭鐢熸柊鐨刟tom錛岃屾槸榪斿洖涓涓凡緇忓瓨鍦ㄤ簡鐨刟tom銆?
Tuple浣滀負鏁版嵁鎴愬憳闆嗗悎
鍓嶉潰璁茶В鍑芥暟寮忕紪紼嬬壒鎬х殑鏃跺欙紝鎻愬埌浜嗗嚱鏁板紡緙栫▼娌℃湁闈㈠悜瀵硅薄緙栫▼鐨勬垚鍛樺彉閲忥紝榪欐槸涓涓檺鍒躲?
ErLang鐨凾uple綾誨瀷鍙互涓瀹氱▼搴﹀厠鏈嶈繖涓檺鍒躲俆uple鍙互涓瀹氱▼搴︿笂鎷呭綋瀹圭撼鎴愬憳鍙橀噺鐨勮亴璐c?
闈㈠悜瀵硅薄鐨勭被瀹氫箟錛屽叾瀹炲氨鏄竴緹ゆ暟鎹拰鍑芥暟鐨勯泦鍚堬紝鍙槸闆嗗悎鐨勬垚鍛樹箣闂撮兘鏈変竴涓猼his鎸囬拡鐩稿叧鑱旓紝鍙互鐩鎬簰鎵懼埌銆?
ErLang鐨凾uple綾誨瀷灝辨槸鏁版嵁鐨勯泦鍚堬紝鍙互寰堣嚜鐒跺湴鍙戞尌鎴愬憳鍙橀噺鐨勪綔鐢紝姣斿錛寋Member1, Member2}銆?
璇昏呭彲鑳戒細璇達紝ErLang鐨勫嚱鏁頒篃鍙互浣滀負鍙橀噺錛屼篃鍙互鏀懼埌Tuple閲岄潰錛屾瘮濡傦紝 { Memer1, Member2, Funtion1, Function2}銆傝繖涓嶅氨鍜岄潰鍚戝璞$紪紼嬩竴鏍蜂簡鍚楋紵
閬楁喚鐨勬槸錛岃繖鏍峰仛鏄緱涓嶅伩澶辯殑銆傚洜涓哄嚱鏁板紡緙栫▼娌℃湁闈㈠悜瀵硅薄鐨勯偅縐嶅唴鍦ㄧ殑this鎸囬拡鏀寔錛岃嚜鐒朵篃娌℃湁鍐呭湪鐨勫鎬佸拰緇ф壙鏀寔錛岀‖鎶婃暟鎹拰鍑芥暟緋呭悎鍦ㄤ竴涓猅uple閲岄潰錛屼竴鐐瑰ソ澶勯兘娌℃湁錛岃屼笖榪樹撫澶變簡鍑芥暟浣滀負瀹炰緥瀵硅薄鐨勭伒媧繪с?
鎵浠ワ紝鍑芥暟寮忕紪紼嬬殑鏈浣?jīng)_疄璺碉紙Best Practice錛夊簲璇ユ槸錛歍uple鐢ㄦ潵瀹圭撼鎴愬憳鏁版嵁錛屽嚱鏁版搷浣淭uple銆俆uple瀹氫箟鍜屽嚱鏁板畾涔夊姞鍦ㄤ竴璧鳳紝灝辨瀯鎴愪簡鏉炬暎鐨勬暟鎹粨鏋勶紝鍔熻兘涓婄被浼間簬闈㈠悜瀵硅薄鐨勭被瀹氫箟銆俆uple + 鍑芥暟鐨勬暟鎹粨鏋勶紝鍏鋒湁澶氭佺殑鐗規(guī)э紝鍥犱負鍑芥暟鏈韓鑳藉浣滀負鍙橀噺鏇挎崲錛涗絾鏄笉鍏鋒湁緇ф壙鐨勭壒鎬э紝鍥犱負娌℃湁this鎸囬拡鐨勫唴鍦ㄦ敮鎸併?
姝f槸鍥犱負Tuple鍦ㄦ暟鎹被鍨嬫瀯閫犳柟闈㈢殑閲嶅ぇ浣滅敤錛屾墍浠ワ紝ErLang涓撻棬寮曞叆浜嗕竴縐嶅彨鍋歊ecord鐨勫畯瀹氫箟錛屽彲浠ュTuple鐨勬暟緇勪笅鏍囦綅緗懡鍚嶃傛瘮濡傦紝鎶婄涓涓厓绱犲彨鍋欰ddress錛岀浜屼釜鍏冪礌鍙仛Zipcode錛岃繖鏍風▼搴忓憳灝卞彲浠ヨ繖浜涘悕瀛楄闂甌uple閲岄潰鐨勫厓绱狅紝鑰屼笉闇瑕佹寜鐓ф暟緇勪笅鏍囦綅緗潵璁塊棶銆?
Tuple鍜孯ecord鐨勫叿浣撶敤娉曡繕鏄湁涓瀹氬鏉傚害錛岄檺浜庣瘒騫咃紝鏈珷娌℃湁灞曞紑璇存槑錛屽彧鎻愪簡涓浜涘師鐞嗘柟闈㈢殑瑕佺偣銆?
鍏跺畠
ErLang榪樻湁鍏跺畠璇硶鐗規(guī)у拰緇嗚妭錛屼笉鍐嶄竴涓璧樿堪銆傛湁鍏磋叮鐨勮鑰咃紝鍙互鑷鍘籈rLang緗戠珯錛坵ww.erlang.org錛夎繘琛岀爺絀躲?

鏆楀鏁欑埗 2009-09-11 11:04 鍙戣〃璇勮
]]>
Erlang鍏ラ棬錛堜簲錛夆斺旇ˉ閬?/title><link>http://m.shnenglu.com/keigoliye/archive/2009/09/11/95888.html</link><dc:creator>鏆楀鏁欑埗</dc:creator><author>鏆楀鏁欑埗</author><pubDate>Fri, 11 Sep 2009 02:16:00 GMT</pubDate><guid>http://m.shnenglu.com/keigoliye/archive/2009/09/11/95888.html</guid><wfw:comment>http://m.shnenglu.com/keigoliye/comments/95888.html</wfw:comment><comments>http://m.shnenglu.com/keigoliye/archive/2009/09/11/95888.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/keigoliye/comments/commentRss/95888.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/keigoliye/services/trackbacks/95888.html</trackback:ping><description><![CDATA[<span style="FONT-WEIGHT: bold">1銆侲rlang鐨勪繚鐣欏瓧</span>鏈夛細<br> <p>after and andalso band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse query receive rem try when xor<a name=1.6><!----></a> </p> 鍩烘湰閮芥槸浜涚敤浜庨昏緫榪愮畻銆佷綅榪愮畻浠ュ強鐗規(guī)畩琛ㄨ揪寮忕殑絎﹀彿<br><br><span style="FONT-WEIGHT: bold">2.Erlang鐨勭被鍨?/span>錛岄櫎浜嗗湪鍓嶉潰鍏ラ棬涓鎻愬埌鐨勭被鍨嬪錛岃繕鍖呮嫭錛?br>1)Binary錛岀敤浜庤〃紺烘煇孌墊湭鐭ョ被鍨嬬殑鍐呭瓨鍖哄煙<br>姣斿錛?br>1> <strong><<10,20>>.</strong> <br><<10,20>> <br>2> <strong><<"ABC">>.</strong><br> <<65,66,67>> <br><br>2錛塕eference錛岄氳繃璋冪敤mk_ref/0浜х敓鐨勮繍琛屾椂鐨剈nique term<br><br>3)String錛屽瓧絎︿覆錛孍rlang涓殑瀛楃涓茬敤鍙屽紩鍙峰寘鎷搗鏉ワ紝鍏跺疄涔熸槸list銆傜紪璇戞椂鏈燂紝涓や釜閭昏繎鐨勫瓧絎︿覆灝嗚榪炴帴璧鋒潵錛屾瘮濡?string" "42" 絳変環(huán)浜?"string42"<br><br>4)Record錛岃褰曠被鍨嬶紝涓巆璇█涓殑struct綾諱技錛屾ā鍧楀彲浠ラ氳繃-record灞炴у0鏄庯紝姣斿錛?br>-module(person). <br>-export([new/2]).<br>-record(person, {name, age}). <br>new(Name, Age) -><br>     #person{name=Name, age=Age}. <br>1> <strong>person:new(dennis, 44).</strong> <br>{person,dennis,44} <br> 鍦ㄧ紪璇戝悗鍏跺疄宸茬粡琚漿鍖栦負tuple銆傚彲浠ラ氳繃Name#person.name鏉ヨ闂甆ame Record鐨刵ame灞炴с?br><br><span style="FONT-WEIGHT: bold">3.妯″潡鐨勯瀹氫箟灞炴?/span>錛?br><code>-module(Module).</code>    澹版槑妯″潡鍚嶇О錛屽繀欏諱笌鏂囦歡鍚嶇浉鍚?br><code>-export(Functions).</code>   鎸囧畾鍚戝鐣屽鍑虹殑鍑芥暟鍒楄〃<br><code>-import(Module,Functions).</code>   寮曞叆鍑芥暟錛屽紩鍏ョ殑鍑芥暟鍙互琚綋浣滄湰鍦板畾涔夌殑鍑芥暟浣跨敤<br><code>-compile(Options).</code>     璁劇疆緙栬瘧閫夐」錛屾瘮濡俥xport_all<br>-vsn(Vsn).         妯″潡鐗堟湰錛岃緗簡姝ら」錛屽彲浠ラ氳繃<code>beam_lib:version/1</code> 鑾峰彇姝ら」淇℃伅<br>鍙互閫氳繃-include鍜?include_lib鏉ュ寘鍚枃浠訛紝涓よ呯殑鍖哄埆鏄痠nclude-lib涓嶈兘閫氳繃緇濆璺緞鏌ユ壘鏂囦歡錛岃屾槸鍦ㄤ綘褰撳墠Erlang鐨刲ib鐩綍榪涜鏌ユ壘銆?br><br><span style="FONT-WEIGHT: bold">4.try琛ㄨ揪寮?/span>錛宼ry琛ㄨ揪寮忓彲浠ヤ笌catch緇撳悎浣跨敤錛屾瘮濡傦細<br> <pre>try Expr<br>catch<br> throw:Term -> Term;<br> exit:Reason -> {'EXIT',Reason}<br> error:Reason -> {'EXIT',{Reason,erlang:get_stacktrace()}}<br>end<br><br>涓嶄粎濡傛錛宼ry榪樺彲浠ヤ笌after緇撳悎浣跨敤錛岀被浼糺ava涓殑try..finally錛岀敤浜庤繘琛屾竻闄や綔鐢紝姣斿錛?br>termize_file(Name) -><br>{ok,F} = file:open(Name, [read,binary]),<br>try<br>{ok,Bin} = file:read(F, 1024*1024),<br>binary_to_term(Bin)<br>after<br>file:close(F)<br>end.<br><br><br><span style="FONT-WEIGHT: bold">5.鍒楄〃鎺ㄦ柇</span>錛圠ist Comprehensions錛夛紝鍑芥暟寮忚璦鐗規(guī)т箣涓錛孍rlang涓殑璇硶綾諱技錛?br>[Expr || Qualifier1,...,QualifierN]<br>Expr鍙互鏄換鎰忕殑琛ㄨ揪寮忥紝鑰孮ualifier鏄痝enerator鎴栬協(xié)ilter銆傝繕鏄悇涓句緥瀛愯鏄庝笅銆?br>1> <strong> [X*2 || X <- [1,2,3]].</strong><br>[2,4,6]<br><br>2> L=[1,2,3,4,5,6,7].<br>[1,2,3,4,5,6,7]<br><br> <pre>3> <span style="FONT-WEIGHT: bold">[X|X<-L,X>=3].</span><br>[3,4,5,6,7]<br><br> <pre>鍐嶇湅鍑犱釜姣旇緝閰風殑渚嬪瓙錛屾潵鑷狿rogramming <a title="" ><u><font color=#000000>Erlang</font></u></a>錛?br>姣斿<span style="FONT-WEIGHT: bold">蹇熸帓搴?/span>錛?br>-module(qsort).<br>-export([qsort/1]).<br>qsort([])->[];<br>qsort([Pivot|T])-><br>  qsort([X||X<-T,X</pre> <br> <br> <span style="FONT-WEIGHT: bold">6.瀹?/span>錛屽畾涔夊父閲忔垨鑰呭嚱鏁扮瓑絳夛紝璇硶濡備笅錛?br> -define(Const, Replacement).<br> -define(Func(Var1,...,VarN), Replacement).<br> <br> 浣跨敤鐨勬椂鍊欏湪瀹忓悕鍓嶅姞涓棶鍙鳳紵錛屾瘮濡?Const錛孯eplacement灝嗘彃鍏ュ畯鍑虹幇鐨勪綅緗傜郴緇熼瀹氫箟浜嗕竴浜涘畯:<br> <code><span style="FONT-WEIGHT: bold">?MODULE </span> 琛ㄧず褰撳墠妯″潡鍚?br> <br> <span style="FONT-WEIGHT: bold">?MODULE_STRING</span> 鍚屼笂錛屼絾鏄互瀛楃涓插艦寮?br> </code><span style="FONT-WEIGHT: bold">?FILE</span> 褰撳墠妯″潡鐨勬枃浠跺悕<br> <span style="FONT-WEIGHT: bold">?LINE</span> 璋冪敤鐨勫綋鍓嶄唬鐮佽鏁?br> <span style="FONT-WEIGHT: bold">?MACHINE</span> 鏈哄櫒鍚?br> <br> Erlang鐨勫畯涓嶤璇█鐨勫畯寰堢浉浼鹼紝鍚屾牱鏈夊畯鎸囩ず絎︼紝鍖呮嫭錛?br> <dl><dt><code>-undef(Macro).</code> <dd>鍙栨秷瀹忓畾涔?br> <dt><code>-ifdef(Macro).</code> <dd>褰撳畯Macro鏈夊畾涔夌殑鏃跺欙紝鎵ц浠ヤ笅浠g爜<br> <dt><code>-ifndef(Macro).</code> <dd>鍚屼笂錛屽弽涔?br> <dt><code>-else.</code> <dd>鎺ュ湪ifdef鎴栬卛fndef涔嬪悗錛岃〃紺轟笉婊¤凍鍓嶈呮潯浠舵椂鎵ц浠ヤ笅浠g爜<br> <br> <dt><code>-endif.</code> <dd>if緇堟絎?/dd></dl>鍋囪瀹?define(Square(X),X*X).鐢ㄤ簬璁$畻騫蟲柟錛岄偅涔??X灝嗚繑鍥瀀琛ㄨ揪寮忕殑瀛楃涓插艦寮忥紝綾諱技C璇█涓?arg<br> <br> 涓涓畝鍗曠殑瀹忎緥瀛愶細<br> <div id="hvzpftn" class=code_title>ruby 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-rb> <li id="hvzpftn" class=alt><span><span>-</span><span id="hvzpftn" class=keyword><strong><font color=#7f0055>module</font></strong></span><span>(macros_demo).  </span></span> <li id="hvzpftn" class=""><span>-ifdef(debug).  </span> <li id="hvzpftn" class=alt><span>-define(LOG(X), io<span id="hvzpftn" class=symbol>:format</span><span>(</span><span id="hvzpftn" class=string><font color=#0000ff>"{~p,~p}: ~p~n"</font></span><span>, [?MODULE,?LINE,X])).  </span></span> <li id="hvzpftn" class=""><span>-<span id="hvzpftn" class=keyword><strong><font color=#7f0055>else</font></strong></span><span>.  </span></span> <li id="hvzpftn" class=alt><span>-define(LOG(X), <span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>).  </span></span> <li id="hvzpftn" class=""><span>-endif.  </span> <li id="hvzpftn" class=alt><span>-define(Square(X),X*X).  </span> <li id="hvzpftn" class=""><span>-compile(export_all).  </span> <li id="hvzpftn" class=alt><span>test()->  </span> <li id="hvzpftn" class=""><span>    A=3,  </span> <li id="hvzpftn" class=alt><span>    ?LOG(A),  </span> <li id="hvzpftn" class=""><span>    B=?Square(A),  </span> <li id="hvzpftn" class=alt><span>    io<span id="hvzpftn" class=symbol>:format</span><span>(</span><span id="hvzpftn" class=string><font color=#0000ff>"square(~w) is ~w~n"</font></span><span>,[A,B]).  </span></span> </li> </ol> </div> <br> 褰撶紪璇戞椂涓嶅紑鍚痙ebug閫夐」鐨勬椂鍊欙細<br> 17> c(macros_demo).<br> {ok,macros_demo}<br> 18> macros_demo:test().<br> square(3) is 9<br> <br> 褰撶紪璇戞椂寮鍚痙ebug涔嬪悗錛?br> <br> 19> c(macros_demo,{d,debug}).<br> {ok,macros_demo}<br> 20> macros_demo:test().<br> <span style="FONT-WEIGHT: bold">{macros_demo,11}: 3</span><br> square(3) is 9<br> ok<br> <br> 鍙互鐪嬪埌LOG鐨勮緭鍑轟簡錛岃鏁般佹ā鍧楀悕浠ュ強鍙傛暟<br> <br> 7銆?span style="FONT-WEIGHT: bold">Process Dictionary</span>錛屾瘡涓繘紼嬮兘鏈夎嚜宸辯殑process dictionary錛岀敤浜庡瓨鍌ㄨ繖涓繘紼嬪唴鐨勫叏灞鍙橀噺錛屽彲浠ラ氳繃涓嬪垪<br> BIFs鎿嶄綔錛?br> put(Key, Value)<br> get(Key)<br> get()<br> get_keys(Value)<br> erase(Key)<br> erase()<br> <br> <span style="FONT-WEIGHT: bold">8銆佸叧浜庡垎甯冨紡緙栫▼</span>錛岄渶瑕佽ˉ鍏呯殑鍑犵偣<br> 1錛夎妭鐐逛箣闂寸殑榪炴帴榛樿鏄痶ransitive錛屼篃灝辨槸褰撹妭鐐笰榪炴帴浜嗚妭鐐笲錛岃妭鐐笲榪炴帴浜嗚妭鐐笴錛岄偅涔堣妭鐐笰涔熶笌鑺傜偣C浜掔浉榪炴帴<br> 鍙互閫氳繃鍚姩鑺傜偣鏃舵寚瀹氬弬鏁?connect_all false鏉ュ彇娑堥粯璁よ涓?br> <br> 2錛夐殣钘忚妭鐐癸紝鏌愪簺鎯呭喌涓嬶紝浣犲笇鏈涜繛鎺ヤ竴涓妭鐐硅屼笉鍘昏繛鎺ュ叾浠栬妭鐐癸紝浣犲彲浠ラ氳繃鍦ㄨ妭鐐瑰惎鍔ㄦ椂鎸囧畾-hidden閫夐」<br> 鏉ュ惎鍔ㄤ竴涓猦idden node銆傚湪姝ゆ儏鍐典笅錛岄氳繃nodes()鏌ョ湅鎵鏈夎繛鎺ョ殑鑺傜偣灝嗕笉浼氬嚭鐜伴殣钘忕殑鑺傜偣錛屾兂鐪嬪埌闅愯棌鐨勮妭鐐?br> 鍙互閫氳繃nodes(hidden)鎴栬卬odes(connected)鏉ユ煡鐪嬨?br> <br> 瀹屾暣鐨別rl閫夐」濡備笅錛?br> <br> <table cellSpacing=0 cellPadding=2 border=1> <tbody> <tr> <td vAlign=center align=left><code>-connect_all false</code> </td> <td vAlign=center align=left>涓婇潰宸茬粡瑙i噴銆?</td> </tr> <tr> <td vAlign=center align=left><code>-hidden</code> </td> <td vAlign=center align=left>鍚姩涓涓猦idden node<br></td> </tr> <tr> <td vAlign=center align=left><code>-name Name</code> </td> <td vAlign=center align=left>鍚姩涓涓郴緇熸垚涓鴻妭鐐癸紝浣跨敤long name. </td> </tr> <tr> <td vAlign=center align=left><code>-setcookie Cookie</code> </td> <td vAlign=center align=left>涓?code><a title="" ><u><font color=#000000>Erlang</font></u></a>:set_cookie(node(), Cookie)</code>.鐩稿悓錛岃緗甿agic cookie<br></td> </tr> <tr> <td vAlign=center align=left><code>-sname Name</code> </td> <td vAlign=center align=left>鍚姩涓涓狤rlang緋葷粺浣滀負鑺傜偣錛屼嬌鐢╯hort name <br></td> </tr> </tbody> </table> <br> <br> 娉ㄦ剰,<span style="FONT-WEIGHT: bold">short name鍚姩鐨勮妭鐐規(guī)槸鏃犳硶涓巐ong name鑺傜偣閫氫俊鐨?/span>銆?br> <br> <pre><span style="FONT-WEIGHT: bold">.涓涓皬緇嗚妭錛屽湪Erlang涓皬浜庣瓑浜庢槸鐢?<琛ㄧず錛岃屼笉鏄竴鑸璦涓殑<=璇硶錛屾垜鐘繃閿欒鐨勫湴鏂癸紝鍚屾牱錛屼笉絳変簬閮芥槸鐢?鍙鳳紝鑰屼笉鏄?/span><br style="FONT-WEIGHT: bold"><span style="FONT-WEIGHT: bold">!,姣斿/=銆?/=銆?/span><br><br><span style="FONT-WEIGHT: bold">10.and or 鍜宎ndalso orelse鐨勫尯鍒?/span><br><br>and鍜宱r浼氳綆椾袱杈圭殑琛ㄨ揪寮忥紝鑰宎ndalso鍜宱relse鐨勬眰鍊奸噰鐢ㄧ煭璺満鍒訛紝姣斿exp1 andalso exp2錛屽綋exp1榪斿洖false涔嬪悗錛屽氨涓嶄細鍘繪眰鍊?br>exp2錛岃屾槸鐩存帴榪斿洖false錛岃宔xp1 and exp2浼氬exp1鍜宔xp2閮借繘琛屾眰鍊鹼紝or涓巓relse涔熺被浼箋?/pre> </pre> </pre> <img src ="http://m.shnenglu.com/keigoliye/aggbug/95888.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/keigoliye/" target="_blank">鏆楀鏁欑埗</a> 2009-09-11 10:16 <a href="http://m.shnenglu.com/keigoliye/archive/2009/09/11/95888.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Erlang鍏ラ棬錛堜笁錛夆斺斿垎甯冨紡緙栫▼http://m.shnenglu.com/keigoliye/archive/2009/09/11/95886.html鏆楀鏁欑埗鏆楀鏁欑埗Fri, 11 Sep 2009 02:13:00 GMThttp://m.shnenglu.com/keigoliye/archive/2009/09/11/95886.htmlhttp://m.shnenglu.com/keigoliye/comments/95886.htmlhttp://m.shnenglu.com/keigoliye/archive/2009/09/11/95886.html#Feedback0http://m.shnenglu.com/keigoliye/comments/commentRss/95886.htmlhttp://m.shnenglu.com/keigoliye/services/trackbacks/95886.html涓銆佸垎甯冨紡鏈哄埗
涓嬪垪鐨凚IFs鏄敤浜庡垎甯冨紡緙栫▼錛?br>spawn(Node, Mod, Func, Args)
鍚姩榪滅▼鑺傜偣鐨勪竴涓繘紼?br>
spawn_link(Node, Mod, Func, Args)
鍚姩榪滅▼鑺傜偣鐨勪竴涓繘紼嬪茍鍒涘緩榪炴帴鍒拌榪涚▼

monitor_node(Node, Flag)
濡傛灉Flag鏄痶rue,榪欎釜鍑芥暟灝嗕嬌璋冪敤錛堣鍑芥暟錛夌殑榪涚▼鍙互鐩戞帶鑺傜偣Node銆傚鏋滆妭鐐瑰凡緇忚垗寮冩垨鑰呭茍涓嶅瓨鍦紝璋冪敤鐨勮繘紼嬪皢鏀跺埌涓涓獅nodedown,Node}鐨勬秷鎭傚鏋淔lag鏄痜alse,鐩戞帶灝嗚鍏抽棴

node()
榪斿洖鎴戜滑鑷繁鐨勮繘紼媙ame

nodes()
榪斿洖鍏朵粬宸茬煡鐨勮妭鐐筺ame鍒楄〃

node(Item)
榪斿洖鍘熸潵Item鐨勮妭鐐瑰悕縐幫紝Item鍙互鏄疨id,寮曠敤錛坮eference錛夋垨鑰呯鍙?port)

disconnect_node(Nodename)
浠庤妭鐐筃odename鏂紑銆?br>
    鑺傜偣鏄垎甯冨紡Erlang鐨勬牳蹇冩蹇點傚湪涓涓垎甯冨紡Erlang搴旂敤涓紝鏈錛坱erm)鑺傜偣(node錛夋剰鍛崇潃涓涓彲浠ュ姞鍏ュ垎甯冨紡 transactions鐨勮繍琛岀郴緇熴傞氳繃涓涓О涓簄et kernal鐨勭壒孌婅繘紼嬶紝涓涓嫭绔嬬殑Erlang緋葷粺鍙互鎴愪負涓涓垎甯冨紡Erlang緋葷粺鐨勪竴閮ㄥ垎銆傚綋net kernal榪涚▼鍚姩鐨勬椂鍊欙紝鎴戜滑縐扮郴緇熸槸alive鐨勩?br>
    涓庤繙紼嬭妭鐐逛笂鐨勮繘紼嬭繘琛岄氫俊錛屼笌鍚屼竴鑺傜偣鍐呯殑榪涚▼閫氫俊鍙湁涓鐐逛笉鍚岋細
java 浠g爜
  1. {Name, Node} ! Mess.  
  
鏄劇劧錛岄渶瑕佹帴鏀舵柟澧炲姞涓涓弬鏁癗ode鐢ㄤ簬鎸囧畾鎺ュ彈榪涚▼鎵鍦ㄧ殑鑺傜偣銆傝妭鐐圭殑name涓鑸槸鐢ˊ闅斿紑鐨刟tom綾誨瀷錛屾瘮濡俻ong@dennis錛岃〃紺鴻綆楁満鍚嶄負dennis涓婄殑pong鑺傜偣銆傞氳繃鎵ц:
java 浠g爜
  1. erl -sname pong  

灝嗗湪鎵ц鐨勮綆楁満涓垱寤轟竴涓妭鐐筽ong銆備負浜嗚繍琛屼笅闈㈢殑渚嬪瓙錛屼綘鍙兘闇瑕佷袱鍙拌綆楁満錛屽鏋滃彧鏈変竴鍙幫紝鍙鍚屾椂寮涓や釜Erlang緋葷粺騫朵互涓嶅悓鐨勮妭鐐瑰悕縐拌繍琛屼篃鍙互銆?br>
浜屻佷竴浜涗緥瀛愩?br>    榪欎釜渚嬪瓙瀹屽叏鏉ヨ嚜涓婇潰鎻愬埌鐨勭炕璇戠殑榪炴帴錛屽叧浜庡垎甯冨紡緙栫▼鐨勭珷鑺傘傛垜澧炲姞浜嗘埅鍥懼拰璇存槑銆?br>棣栧厛鏄唬鐮侊細
java 浠g爜
 
  1. -module(tut17).  
  2.   
  3. -export([start_ping/1, start_pong/0,  ping/2, pong/0]).  
  4.   
  5. ping(0, Pong_Node) ->  
  6.     {pong, Pong_Node} ! finished,  
  7.     io:format("ping finished~n", []);  
  8.   
  9. ping(N, Pong_Node) ->  
  10.     {pong, Pong_Node} ! {ping, self()},  
  11.     receive  
  12.         pong ->  
  13.             io:format("Ping received pong~n", [])  
  14.     end,  
  15.     ping(N - 1, Pong_Node).  
  16.   
  17. pong() ->  
  18.     receive  
  19.         finished ->  
  20.             io:format("Pong finished~n", []);  
  21.         {ping, Ping_PID} ->  
  22.             io:format("Pong received ping~n", []),  
  23.             Ping_PID ! pong,  
  24.             pong()  
  25.     end.  
  26.   
  27. start_pong() ->  
  28.     register(pong, spawn(tut17, pong, [])).  
  29.   
  30. start_ping(Pong_Node) ->  
  31.     spawn(tut17, ping, [3, Pong_Node]).  

    浠g爜鏄垱寤轟袱涓浉浜掗氫俊鐨勮繘紼嬶紝鐩鎬簰鍙戦佹秷鎭茍閫氳繃io鏄劇ず鍦ㄥ睆騫曚笂錛屾湰鏉ユ槸涓涓崟涓緋葷粺鐨勪緥瀛愶紝鐜板湪鎴戜滑璁╀袱涓繘紼嬭繍琛屽湪涓嶅悓鐨勪袱涓妭鐐逛笂銆傛敞鎰?start_ping鏂規(guī)硶錛屽垱寤虹殑榪涚▼璋冪敤ping鏂規(guī)硶錛宲ing鏂規(guī)硶鏈変袱涓弬鏁幫紝涓涓槸鍙戦佹秷鎭殑嬈℃暟錛屼竴涓氨鏄繙紼嬭妭鐐圭殑name浜嗭紝涔熷氨鏄垜浠皢瑕?鍒涘緩鐨勮繘紼媝ong鐨勬墍鍦ㄨ妭鐐廣俿tart_pong鍒涘緩涓涓皟鐢ㄥ嚱鏁皃ong鐨勮繘紼嬶紝騫舵敞鍐屼負鍚嶅瓧pong錛堝洜姝ゅ湪ping鏂規(guī)硶涓彲浠ョ洿鎺ュ彂閫佹秷鎭粰 pong)銆?br>    鎴戞槸鍦╳indows鏈哄櫒涓婃祴璇曪紝棣栧厛鎵撳紑涓や釜cmd紿楀彛錛屽茍cd鍒癊rlang鐨勫畨瑁呯洰褰曚笅鐨刡in鐩綍錛屾瘮濡侰:\Program Files\erl5.5.3\bin,灝嗕笂闈㈢殑紼嬪簭瀛樹負tut17.erl錛屽茍鎷瘋礉鍒板悓涓涓洰褰曚笅銆傛垜浠皢鍒涘緩涓や釜鑺傜偣錛屼竴涓彨 ping@dennis,涓涓彨pong@dennis,鍏朵腑dennis鏄垜鐨勬満鍣ㄥ悕銆傝涓嬪浘錛?br>
閲囩敤鍚屾牱鐨勫懡浠?br>
erl 
-sname ping

鍒涘緩ping鑺傜偣銆傜劧鍚庡湪pong鑺傜偣涓嬫墽琛宻tart_pong()錛?br>

OK,榪欐牱灝卞湪鑺傜偣pong涓婂惎鍔ㄤ簡pong榪涚▼錛岀劧鍚庡湪ping鑺傜偣璋冪敤start_ping錛屼紶鍏ュ弬鏁板氨鏄痯ong@dennis
java 浠g爜
 
  1. tut17:start_ping(pong@dennis).  

鎵ц緇撴灉濡備笅鍥撅細

鍚屾牱鍦╬ong鑺傜偣涓婁篃鍙互鐪嬪埌錛?br>

    緇撴灉濡傛垜浠鏈熺殑閭f牱錛屼笉鍚岃妭鐐逛笂鐨勪袱涓繘紼嬬浉浜掗氫俊濡傛綆鍗曘傛垜浠粰妯″潡tut17澧炲姞涓涓柟娉曪紝鐢ㄤ簬鍚姩榪滅▼榪涚▼錛屼篃灝辨槸璋冪敤spawn(Node,Module,Func,Args)鏂規(guī)硶錛?br>
java 浠g爜
 
  1. start(Ping_Node) ->  
  2.     register(pong, spawn(tut17, pong, [])),  
  3.     spawn(Ping_Node, tut17, ping, [3, node()]).  

pong榪涚▼鍚姩Ping_Node鑺傜偣涓婄殑榪涚▼ping銆傚叿浣撶粨鏋滀笉鍐嶇粰鍑恒?br>

鏆楀鏁欑埗 2009-09-11 10:13 鍙戣〃璇勮
]]>
Erlang鍏ラ棬錛堝洓錛夆斺旈敊璇鐞嗗拰椴佹鎬?/title><link>http://m.shnenglu.com/keigoliye/archive/2009/09/11/95887.html</link><dc:creator>鏆楀鏁欑埗</dc:creator><author>鏆楀鏁欑埗</author><pubDate>Fri, 11 Sep 2009 02:13:00 GMT</pubDate><guid>http://m.shnenglu.com/keigoliye/archive/2009/09/11/95887.html</guid><wfw:comment>http://m.shnenglu.com/keigoliye/comments/95887.html</wfw:comment><comments>http://m.shnenglu.com/keigoliye/archive/2009/09/11/95887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/keigoliye/comments/commentRss/95887.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/keigoliye/services/trackbacks/95887.html</trackback:ping><description><![CDATA[  浠諱綍涓闂ㄨ璦閮芥湁鑷繁鐨勯敊璇鐞嗘満鍒訛紝Erlang涔熶笉渚嬪錛岃娉曢敊璇紪璇戝櫒鍙互甯綘鎸囧嚭錛岃岄昏緫閿欒鍜岃繍琛屾椂閿欒灝卞彧鏈夐潬紼嬪簭鍛樺埄鐢‥rlang鎻愪緵鐨勬満鍒舵潵濡ュ杽澶勭悊錛屾斁緗▼搴忕殑宕╂簝銆?br>    Erlang鐨勬満鍒舵湁錛?br>1)鐩戞帶鏌愪釜琛ㄨ揪寮忕殑鎵ц<br>2錛夌洃鎺у叾浠栬繘紼嬬殑琛屼負<br>3錛夋崟鎹夋湭瀹氫箟鍑芥暟鎵ц閿欒絳?br><br><span style="FONT-WEIGHT: bold">涓銆乧atch鍜宼hrow璇彞</span><br>    璋冪敤鏌愪釜浼氫駭鐢熼敊璇殑琛ㄨ揪寮忎細瀵艱嚧璋冪敤榪涚▼鐨勯潪姝e父閫鍑猴紝姣斿閿欒鐨勬ā寮忓尮閰嶏紙2=3錛夛紝榪欑鎯呭喌涓嬪彲浠ョ敤catch璇彞錛?br>                                      <span style="COLOR: rgb(0,0,0)">catch expression</span><br>    璇曠湅涓涓緥瀛愶紝涓涓嚱鏁癴oo錛?br><br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>foo(</span><span id="hvzpftn" class=number>1</span><span>) ->  </span></span> <li id="hvzpftn" class=""><span>hello;  </span> <li id="hvzpftn" class=alt><span>foo(<span id="hvzpftn" class=number>2</span><span>) ->  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=keyword><strong><font color=#7f0055>throw</font></strong></span><span>({myerror, abc});  </span></span> <li id="hvzpftn" class=alt><span>foo(<span id="hvzpftn" class=number>3</span><span>) ->  </span></span> <li id="hvzpftn" class=""><span>tuple_to_list(a);  </span> <li id="hvzpftn" class=alt><span>foo(<span id="hvzpftn" class=number>4</span><span>) ->  </span></span> <li id="hvzpftn" class=""><span>exit({myExit, <span id="hvzpftn" class=number>222</span><span>}).  </span></span> </li> </ol> </div> <br>褰撴病鏈変嬌鐢╟atch鐨勬椂鍊欙紝鍋囪鏈変竴涓爣璇嗙涓篜id鐨勮繘紼嬭皟鐢ㄥ嚱鏁癴oo錛堝湪涓涓ā鍧椾腑錛夛紝閭d箞錛?br>foo(1) - 榪斿洖hello<br>foo(2) - 璇彞throw({myerror, abc})鎵ц錛屽洜涓烘垜浠病鏈夊湪涓涓猚atch涓皟鐢╢oo(2),鍥犳榪涚▼Pid灝嗗洜涓洪敊璇岀粓姝€?br><br>foo(3) - tuple_to_list灝嗕竴涓厓緇勮漿鍖栦負鍒楄〃錛屽洜涓篴涓嶆槸鍏冪粍錛屽洜姝よ繘紼婸id鍚屾牱鍥犱負閿欒鑰岀粓姝?br><br>foo(4) - 鍥犱負娌℃湁浣跨敤catch錛屽洜姝oo(4)璋冪敤浜唀xit鍑芥暟灝嗕嬌榪涚▼Pid緇堟錛寋myExit, 222} 鍙傛暟鐢ㄤ簬璇存槑閫鍑虹殑鍘熷洜銆?br><br>foo(5) - 榪涚▼Pid灝嗗洜涓篺oo(5)鐨勮皟鐢ㄨ岀粓姝紝鍥犱負娌℃湁鍜宖oo(5)鍖歸厤鐨勫嚱鏁癴oo/1銆?br><br>    璁╂垜浠湅鐪嬬敤catch涔嬪悗鏄粈涔堟牱錛?br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>demo(X) ->  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=keyword><strong><font color=#7f0055>case</font></strong></span><span> </span><span id="hvzpftn" class=keyword><strong><font color=#7f0055>catch</font></strong></span><span> foo(X) of  </span></span> <li id="hvzpftn" class=alt><span>  {myerror, Args} ->  </span> <li id="hvzpftn" class=""><span>       {user_error, Args};  </span> <li id="hvzpftn" class=alt><span>  {'EXIT', What} ->  </span> <li id="hvzpftn" class=""><span>       {caught_error, What};  </span> <li id="hvzpftn" class=alt><span>  Other ->  </span> <li id="hvzpftn" class=""><span>       Other  </span> <li id="hvzpftn" class=alt><span>end.  </span> </li> </ol> </div> <br>鍐嶇湅鐪嬬粨鏋滐紝<br>demo(1) - 娌℃湁閿欒鍙戠敓錛屽洜姝atch璇彞灝嗚繑鍥炶〃杈懼紡緇撴灉hello<br>demo(2) - foo(2)鎶涘嚭閿欒{myerror, abc}錛岃catch榪斿洖錛屽洜姝ゅ皢榪斿洖{user_error,abc}<br><br>demo(3) - foo(3)鎵ц澶辮觸錛屽洜涓哄弬鏁伴敊璇紝鍥犳catch榪斿洖{'EXIT',badarg'},鏈鍚庤繑鍥瀧caught_error,badarg}<br><br>demo(4) - 榪斿洖{caught_error,{myexit,222}}<br>demo(5) - 榪斿洖{caught_error,function_clause}<br><br>    浣跨敤catch鍜宼hrow鍙互灝嗗彲鑳戒駭鐢熼敊璇殑浠g爜鍖呰璧鋒潵錛宼hrow鍙互鐢ㄤ簬灝鵑掑綊鐨勯鍑虹瓑絳夈侲rlang鏄拰scheme涓鏍瘋繘琛屽熬閫掑綊浼樺寲鐨勶紝瀹冧滑閮芥病鏈夋樉寮忕殑榪唬緇撴瀯錛堟瘮濡俧or寰幆錛?br><br><span style="FONT-WEIGHT: bold">浜屻佽繘紼嬬殑緇堟</span><br>    鍦ㄨ繘紼嬩腑璋冪敤exit鐨凚IFs灝卞彲浠ユ樉寮忓湴緇堟榪涚▼錛宔xit(normal)琛ㄧず姝e父緇堟錛宔xit(Reason)閫氳繃Reason緇欏嚭闈炴甯哥粓姝㈢殑鍘熷洜銆傝繘紼嬬殑緇堟涔熷畬鍏ㄦ湁鍙兘鏄洜涓鴻繍琛屾椂閿欒寮曡搗鐨勩?br><br><span style="FONT-WEIGHT: bold">涓夈佽繛鎺ョ殑榪涚▼</span><br>    榪涚▼涔嬮棿鐨勮繛鎺ユ槸鍙屽悜鐨勶紝涔熷氨鏄榪涚▼A鎵撳紑涓涓繛鎺ュ埌B,涔熸剰鍛崇潃鏈変竴涓粠B鍒癆鐨勮繛鎺ャ傚綋榪涚▼緇堟鐨勬椂鍊欙紝鏈変竴涓狤XIT淇″彿灝嗗彂緇欐墍鏈変笌瀹冭繛鎺ョ殑榪涚▼銆備俊鍙風殑鏍煎紡濡備笅錛?br>               {'EXIT', Exiting_Process_Id, Reason} <br>Exiting_Process_Id 鏄寚緇堟鐨勮繘紼嬫爣璁扮<br>Reason 鏄繘紼嬬粓姝㈢殑鍘熷洜銆傚鏋淩eason鏄痭ormal錛屾帴鍙楄繖涓俊鍙風殑榪涚▼鐨勯粯璁よ涓烘槸蹇界暐榪欎釜淇″彿銆傞粯璁ゅExit淇″彿鐨勫鐞嗗彲浠ヨ閲嶅啓錛屼互鍏佽榪涚▼瀵笶xit淇″彿鐨勬帴鍙楀仛鍑轟笉鍚岀殑鍙嶅簲銆?br>1.榪炴帴榪涚▼錛?br>閫氳繃link(Pid)錛屽氨鍙互鍦ㄨ皟鐢ㄨ繘紼嬩笌榪涚▼Pid涔嬮棿寤虹珛榪炴帴<br>2.鍙栨秷榪炴帴<br>鍙嶄箣閫氳繃unlink(Pid)鍙栨秷榪炴帴銆?<br>3.鍒涚珛榪涚▼騫惰繛鎺ワ細<br>閫氳繃spawn_link(Module, Function, ArgumentList)鍒涘緩榪涚▼騫惰繛鎺ワ紝璇ユ柟娉曡繑鍥炴柊鍒涘緩鐨勮繘紼婸id<br><br>    閫氳繃榪涚▼鐨勭浉浜掕繛鎺ワ紝璁稿鐨勮繘紼嬪彲浠ョ粍緇囨垚涓涓綉鐘剁粨鏋勶紝EXIT淇″彿錛堥潪normal)浠庢煇涓繘紼嬪彂鍑猴紙璇ヨ繘紼嬬粓姝級錛屾墍鏈変笌瀹冪浉榪炵殑榪涚▼浠ュ強涓庤繖浜涜繘 紼嬬浉榪炵殑鍏朵粬榪涚▼錛岄兘灝嗘敹鍒拌繖涓俊鍙峰茍緇堟錛岄櫎闈炲畠浠疄鐜頒簡鑷畾涔夌殑EXIT淇″彿澶勭悊鏂規(guī)硶銆備竴涓繘紼嬮摼鐘剁粨鏋勭殑渚嬪瓙錛?br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>-module(normal).  </span></span> <li id="hvzpftn" class=""><span>-export([start/<span id="hvzpftn" class=number>1</span><span>, p1/</span><span id="hvzpftn" class=number>1</span><span>, test/</span><span id="hvzpftn" class=number>1</span><span>]).  </span></span> <li id="hvzpftn" class=alt><span>start(N) ->  </span> <li id="hvzpftn" class=""><span>register(start, spawn_link(normal, p1, [N - <span id="hvzpftn" class=number>1</span><span>])).  </span></span> <li id="hvzpftn" class=alt><span> p1(<span id="hvzpftn" class=number>0</span><span>) ->  </span></span> <li id="hvzpftn" class=""><span>   top1();  </span> <li id="hvzpftn" class=alt><span> p1(N) ->  </span> <li id="hvzpftn" class=""><span>   top(spawn_link(normal, p1, [N - <span id="hvzpftn" class=number>1</span><span>]),N).  </span></span> <li id="hvzpftn" class=alt><span>top(Next, N) ->  </span> <li id="hvzpftn" class=""><span>receive  </span> <li id="hvzpftn" class=alt><span>X ->  </span> <li id="hvzpftn" class=""><span>Next ! X,  </span> <li id="hvzpftn" class=alt><span>io:format(<span id="hvzpftn" class=string><font color=#0000ff>"Process ~w received ~w~n"</font></span><span>, [N,X]),  </span></span> <li id="hvzpftn" class=""><span>top(Next,N)  </span> <li id="hvzpftn" class=alt><span>end.  </span> <li id="hvzpftn" class=""><span>top1() ->  </span> <li id="hvzpftn" class=alt><span>receive  </span> <li id="hvzpftn" class=""><span>stop ->  </span> <li id="hvzpftn" class=alt><span>io:format(<span id="hvzpftn" class=string><font color=#0000ff>"Last process now exiting ~n"</font></span><span>, []),  </span></span> <li id="hvzpftn" class=""><span>exit(finished);  </span> <li id="hvzpftn" class=alt><span>X ->  </span> <li id="hvzpftn" class=""><span>io:format(<span id="hvzpftn" class=string><font color=#0000ff>"Last process received ~w~n"</font></span><span>, [X]),  </span></span> <li id="hvzpftn" class=alt><span>top1()  </span> <li id="hvzpftn" class=""><span>end.  </span> <li id="hvzpftn" class=alt><span>test(Mess) ->  </span> <li id="hvzpftn" class=""><span>start ! Mess.  </span> </li> </ol> </div> <br>鎵ц錛?br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>> normal:start(</span><span id="hvzpftn" class=number>3</span><span>).  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>  </span></span> <li id="hvzpftn" class=alt><span>> normal:test(<span id="hvzpftn" class=number>123</span><span>).  </span></span> <li id="hvzpftn" class=""><span>Process <span id="hvzpftn" class=number>2</span><span> received </span><span id="hvzpftn" class=number>123</span><span>  </span></span> <li id="hvzpftn" class=alt><span>Process <span id="hvzpftn" class=number>1</span><span> received </span><span id="hvzpftn" class=number>123</span><span>  </span></span> <li id="hvzpftn" class=""><span>Last process received <span id="hvzpftn" class=number>123</span><span>  </span></span> <li id="hvzpftn" class=alt><span>  </span> <li id="hvzpftn" class=""><span>> normal:test(stop).  </span> <li id="hvzpftn" class=alt><span>Process <span id="hvzpftn" class=number>2</span><span> received stop  </span></span> <li id="hvzpftn" class=""><span>Process <span id="hvzpftn" class=number>1</span><span> received stop  </span></span> <li id="hvzpftn" class=alt><span>Last process now exiting  </span> <li id="hvzpftn" class=""><span>stop  </span> </li> </ol> </div> <br><span style="FONT-WEIGHT: bold">鍥涖佽繍琛屾椂澶辮觸</span><br>    涓涓繍琛屾椂閿欒灝嗗鑷磋繘紼嬬殑闈炴甯哥粓姝紝浼撮殢鐫闈炴甯哥粓姝XIT淇″彿灝嗗彂鍑虹粰鎵鏈夎繛鎺ョ殑榪涚▼錛孍XIT淇″彿涓湁Reason騫朵笖Reason涓寘鍚竴涓猘tom綾誨瀷鐢ㄤ簬璇存槑閿欒鐨勫師鍥狅紝甯歌鐨勫師鍥犲涓嬶細<br><br><span style="FONT-WEIGHT: bold">badmatch</span> - 鍖歸厤澶辮觸錛屾瘮濡備竴涓繘紼嬭繘琛?=3鐨勫尮閰嶏紝榪欎釜榪涚▼灝嗙粓姝紝騫跺彂鍑簕'EXIT', From, badmatch}淇″彿緇欒繛鎺ョ殑榪涚▼<br><br><span style="FONT-WEIGHT: bold">badarg</span>  - 欏懼悕鎬濅箟錛屽弬鏁伴敊璇紝姣斿atom_to_list(123),鏁板瓧涓嶆槸atom錛屽洜姝ゅ皢鍙戝嚭{'EXIT', From, badarg}淇″彿緇欒繛鎺ヨ繘紼?br><br><span style="FONT-WEIGHT: bold">case_clause</span> - 緙哄皯鍒嗘敮鍖歸厤錛屾瘮濡?br>    <br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>M = </span><span id="hvzpftn" class=number>3</span><span>,  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=keyword><strong><font color=#7f0055>case</font></strong></span><span> M of  </span></span> <li id="hvzpftn" class=alt><span>  <span id="hvzpftn" class=number>1</span><span> ->  </span></span> <li id="hvzpftn" class=""><span>    yes;  </span> <li id="hvzpftn" class=alt><span>  <span id="hvzpftn" class=number>2</span><span> ->  </span></span> <li id="hvzpftn" class=""><span>    no  </span> <li id="hvzpftn" class=alt><span>end.  </span> </li> </ol> </div> <br>娌℃湁鍒嗘敮3錛屽洜姝ゅ皢鍙戝嚭{'EXIT', From, case_clause}緇欒繛鎺ヨ繘紼?br><br><span style="FONT-WEIGHT: bold">if_clause</span> - 鍚岀悊錛宨f璇彞緙哄皯鍖歸厤鍒嗘敮<br><br><span style="FONT-WEIGHT: bold">function_clause</span> - 緙哄皯鍖歸厤鐨勫嚱鏁幫紝姣斿錛?br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>foo(</span><span id="hvzpftn" class=number>1</span><span>) ->  </span></span> <li id="hvzpftn" class=""><span>  yes;  </span> <li id="hvzpftn" class=alt><span>foo(<span id="hvzpftn" class=number>2</span><span>) ->  </span></span> <li id="hvzpftn" class=""><span>  no.  </span> </li> </ol> </div> <br>濡傛灉鎴戜滑璋冪敤foo(3)錛屽洜涓烘病鏈夊尮閰嶇殑鍑芥暟錛屽皢鍙戝嚭{'EXIT', From, function_clause} 緇欒繛鎺ョ殑榪涚▼銆?br><br><span style="FONT-WEIGHT: bold">undef</span> - 榪涚▼鎵ц涓涓笉瀛樺湪鐨勫嚱鏁?br><br><span style="FONT-WEIGHT: bold">badarith</span> - 闈炴硶鐨勭畻鏈繍綆楋紝姣斿1+foo銆?br><br><span style="FONT-WEIGHT: bold">timeout_value</span> - 闈炴硶鐨勮秴鏃舵椂闂磋緗紝蹇呴』鏄暣鏁版垨鑰卛nfinity<br><br><span style="FONT-WEIGHT: bold">nocatch</span> - 浣跨敤浜唗hrow錛屾病鏈夌浉搴旂殑catch鍘婚氳銆?br><br><span style="FONT-WEIGHT: bold">浜斻佷慨鏀歸粯璁ょ殑淇″彿鎺ユ敹action</span><br>   褰撹繘紼嬫帴鏀跺埌EXIT淇″彿錛屼綘鍙互閫氳繃process_flag/2鏂規(guī)硶鏉ヤ慨鏀歸粯璁ょ殑鎺ユ敹琛屼負銆傛墽琛宲rocess_flag(trap_exit, true)璁劇疆鎹曡幏EXIT淇″彿涓虹湡鏉ユ敼鍙橀粯璁よ涓猴紝涔熷氨鏄皢EXIT淇″彿浣滀負涓鑸殑榪涚▼闂撮氫俊鐨勪俊鍙瘋繘琛屾帴鍙楀茍澶勭悊錛沺rocess_flag (trap_exit,false)灝嗛噸鏂板紑鍚粯璁よ涓恒?br>   渚嬪瓙錛?br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>-module(link_demo).  </span></span> <li id="hvzpftn" class=""><span>-export([start/<span id="hvzpftn" class=number>0</span><span>, demo/</span><span id="hvzpftn" class=number>0</span><span>, demonstrate_normal/</span><span id="hvzpftn" class=number>0</span><span>, demonstrate_exit/</span><span id="hvzpftn" class=number>1</span><span>,  </span></span> <li id="hvzpftn" class=alt><span>demonstrate_error/<span id="hvzpftn" class=number>0</span><span>, demonstrate_message/</span><span id="hvzpftn" class=number>1</span><span>]).  </span></span> <li id="hvzpftn" class=""><span>start() ->  </span> <li id="hvzpftn" class=alt><span>  register(demo, spawn(link_demo, demo, [])).  </span> <li id="hvzpftn" class=""><span>demo() ->  </span> <li id="hvzpftn" class=alt><span>  process_flag(trap_exit, <span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>),  </span></span> <li id="hvzpftn" class=""><span>demo1().  </span> <li id="hvzpftn" class=alt><span>  demo1() ->  </span> <li id="hvzpftn" class=""><span>  receive  </span> <li id="hvzpftn" class=alt><span>    {'EXIT', From, normal} ->  </span> <li id="hvzpftn" class=""><span>      io:format(<span id="hvzpftn" class=string><font color=#0000ff>"Demo process received normal exit from ~w~n"</font></span><span>,[From]),  </span></span> <li id="hvzpftn" class=alt><span>     demo1();  </span> <li id="hvzpftn" class=""><span>    {'EXIT', From, Reason} ->  </span> <li id="hvzpftn" class=alt><span>      io:format(<span id="hvzpftn" class=string><font color=#0000ff>"Demo process received exit signal ~w from ~w~n"</font></span><span>,[Reason, From]),  </span></span> <li id="hvzpftn" class=""><span>     demo1();  </span> <li id="hvzpftn" class=alt><span>    finished_demo ->  </span> <li id="hvzpftn" class=""><span>      io:format(<span id="hvzpftn" class=string><font color=#0000ff>"Demo finished ~n"</font></span><span>, []);  </span></span> <li id="hvzpftn" class=alt><span>    Other ->  </span> <li id="hvzpftn" class=""><span>      io:format(<span id="hvzpftn" class=string><font color=#0000ff>"Demo process message ~w~n"</font></span><span>, [Other]),  </span></span> <li id="hvzpftn" class=alt><span>     demo1()  </span> <li id="hvzpftn" class=""><span>  end.  </span> <li id="hvzpftn" class=alt><span>demonstrate_normal() ->  </span> <li id="hvzpftn" class=""><span>  link(whereis(demo)).  </span> <li id="hvzpftn" class=alt><span>demonstrate_exit(What) ->  </span> <li id="hvzpftn" class=""><span>  link(whereis(demo)),  </span> <li id="hvzpftn" class=alt><span>  exit(What).  </span> <li id="hvzpftn" class=""><span>demonstrate_message(What) ->  </span> <li id="hvzpftn" class=alt><span>  demo ! What.  </span> <li id="hvzpftn" class=""><span>demonstrate_error() ->  </span> <li id="hvzpftn" class=alt><span>  link(whereis(demo)),  </span> <li id="hvzpftn" class=""><span>  <span id="hvzpftn" class=number>1</span><span> = </span><span id="hvzpftn" class=number>2</span><span>.  </span></span> <li id="hvzpftn" class=alt><span>   </span> </li> </ol> </div> <br>    鍒涘緩鐨勮繘紼嬫墽琛宒emo鏂規(guī)硶錛宒emo鏂規(guī)硶涓緗簡trap_exit涓簍rue,鍥犳錛屽湪receive涓彲浠ュ儚瀵瑰緟涓鑸殑淇℃伅涓鏍峰鐞咵XIT淇″彿錛岃繖涓▼搴忔槸寰堢畝鍗曚簡錛屾祴璇曠湅鐪嬶細<br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>> link_demo:start().  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>  </span></span> <li id="hvzpftn" class=alt><span>> link_demo:demonstrate_normal().  </span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>  </span></span> <li id="hvzpftn" class=alt><span>Demo process received normal exit from <<span id="hvzpftn" class=number>0.13</span><span>.</span><span id="hvzpftn" class=number>1</span><span>>  </span></span> <li id="hvzpftn" class=""><span>> link_demo:demonstrate_exit(hello).  </span> <li id="hvzpftn" class=alt><span>Demo process received exit signal hello from <<span id="hvzpftn" class=number>0.14</span><span>.</span><span id="hvzpftn" class=number>1</span><span>>  </span></span> <li id="hvzpftn" class=""><span>** exited: hello **  </span> <li id="hvzpftn" class=alt><span>  </span> <li id="hvzpftn" class=""><span>> link_demo:demonstrate_exit(normal).  </span> <li id="hvzpftn" class=alt><span>Demo process received normal exit from <<span id="hvzpftn" class=number>0.13</span><span>.</span><span id="hvzpftn" class=number>1</span><span>>  </span></span> <li id="hvzpftn" class=""><span>** exited: normal **  </span> <li id="hvzpftn" class=alt><span>  </span> <li id="hvzpftn" class=""><span>> link_demo:demonstrate_error().  </span> <li id="hvzpftn" class=alt><span>!!! Error in process <<span id="hvzpftn" class=number>0.17</span><span>.</span><span id="hvzpftn" class=number>1</span><span>> in function  </span></span> <li id="hvzpftn" class=""><span>!!! link_demo:demonstrate_error()  </span> <li id="hvzpftn" class=alt><span>!!! reason badmatch  </span> <li id="hvzpftn" class=""><span>** exited: badmatch **  </span> <li id="hvzpftn" class=alt><span>Demo process received exit signal badmatch from <<span id="hvzpftn" class=number>0.17</span><span>.</span><span id="hvzpftn" class=number>1</span><span>>  </span></span> </li> </ol> </div> <br><span style="FONT-WEIGHT: bold">鍏佹湭瀹氫箟鍑芥暟鍜屾湭娉ㄥ唽鍚嶅瓧</span><br>1.褰撹皟鐢ㄤ竴涓湭瀹氫箟鐨勫嚱鏁版椂錛孧od:Func(Arg0,...,ArgN)錛岃繖涓皟鐢ㄥ皢琚漿涓猴細<br>error_handler:undefined_function(Mod, Func, [Arg0,...,ArgN]) <br>鍏朵腑鐨別rror_handler妯″潡鏄郴緇熻嚜甯︾殑閿欒澶勭悊妯″潡<br><br>2.褰撶粰涓涓湭娉ㄥ唽鐨勮繘紼嬪悕鍙戦佹秷鎭椂錛岃皟鐢ㄥ皢琚漿涓猴細<br>error_handler:unregistered_name(Name,Pid,Message) <br><br>3.濡傛灉涓嶄嬌鐢ㄧ郴緇熻嚜甯︾殑error_handler錛屽彲浠ラ氳繃process_flag(error_handler, MyMod) 璁劇疆鑷繁鐨勯敊璇鐞嗘ā鍧椼?br><br><span style="FONT-WEIGHT: bold">涓冦丆atch Vs. Trapping Exits</span><br>榪欎袱鑰呯殑鍖哄埆鍦ㄤ簬搴旂敤鍦烘櫙涓嶅悓錛孴rapping Exits搴旂敤浜庡綋鎺ユ敹鍒板叾浠栬繘紼嬪彂閫佺殑EXIT淇″彿鏃訛紝鑰宑atch浠呯敤浜庤〃杈懼紡鐨勬墽琛屻?br><br>絎?绔犱粙緇嶄簡濡備綍鍒╃敤閿欒澶勭悊鏈哄埗鍘繪瀯閫犱竴涓仴澹殑緋葷粺錛岀敤浜嗗嚑涓緥瀛愶紝鎴戝皢8.2鑺傜殑渚嬪瓙瀹屾暣鍐欎簡涓嬶紝騫舵坊鍔犲鎴風榪涚▼鐢ㄤ簬嫻嬭瘯錛?br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>-module(allocator).  </span></span> <li id="hvzpftn" class=""><span>-export([start/<span id="hvzpftn" class=number>1</span><span>,server/</span><span id="hvzpftn" class=number>2</span><span>,allocate/</span><span id="hvzpftn" class=number>0</span><span>,free/</span><span id="hvzpftn" class=number>1</span><span>,start_client/</span><span id="hvzpftn" class=number>0</span><span>,loop/</span><span id="hvzpftn" class=number>0</span><span>]).  </span></span> <li id="hvzpftn" class=alt><span>start(Resources) ->  </span> <li id="hvzpftn" class=""><span>   Pid = spawn(allocator, server, [Resources,[]]),  </span> <li id="hvzpftn" class=alt><span>register(resource_alloc, Pid).  </span> <li id="hvzpftn" class=""><span>%鍑芥暟鎺ュ彛  </span> <li id="hvzpftn" class=alt><span>allocate() ->  </span> <li id="hvzpftn" class=""><span>   request(alloc).  </span> <li id="hvzpftn" class=alt><span>free(Resource) ->  </span> <li id="hvzpftn" class=""><span>  request({free,Resource}).  </span> <li id="hvzpftn" class=alt><span>request(Request) ->  </span> <li id="hvzpftn" class=""><span>  resource_alloc ! {self(),Request},  </span> <li id="hvzpftn" class=alt><span>  receive  </span> <li id="hvzpftn" class=""><span>    {resource_alloc, error} ->  </span> <li id="hvzpftn" class=alt><span>      exit(bad_allocation); % exit added here  </span> <li id="hvzpftn" class=""><span>    {resource_alloc, Reply} ->  </span> <li id="hvzpftn" class=alt><span>      Reply  </span> <li id="hvzpftn" class=""><span> end.  </span> <li id="hvzpftn" class=alt><span>% The server.  </span> <li id="hvzpftn" class=""><span>server(Free, Allocated) ->  </span> <li id="hvzpftn" class=alt><span> process_flag(trap_exit, <span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>),  </span></span> <li id="hvzpftn" class=""><span> receive  </span> <li id="hvzpftn" class=alt><span>   {From,alloc} ->  </span> <li id="hvzpftn" class=""><span>         allocate(Free, Allocated, From);  </span> <li id="hvzpftn" class=alt><span>   {From,{free,R}} ->  </span> <li id="hvzpftn" class=""><span>        free(Free, Allocated, From, R);  </span> <li id="hvzpftn" class=alt><span>   {'EXIT', From, _ } ->  </span> <li id="hvzpftn" class=""><span>       check(Free, Allocated, From)  </span> <li id="hvzpftn" class=alt><span> end.  </span> <li id="hvzpftn" class=""><span>allocate([R|Free], Allocated, From) ->  </span> <li id="hvzpftn" class=alt><span>   link(From),  </span> <li id="hvzpftn" class=""><span>   io:format(<span id="hvzpftn" class=string><font color=#0000ff>"榪炴帴瀹㈡埛绔繘紼媬w~n"</font></span><span>,[From]),  </span></span> <li id="hvzpftn" class=alt><span>   From ! {resource_alloc,{yes,R}},  </span> <li id="hvzpftn" class=""><span>   server(Free, [{R,From}|Allocated]);  </span> <li id="hvzpftn" class=alt><span>allocate([], Allocated, From) ->  </span> <li id="hvzpftn" class=""><span>   From ! {resource_alloc,no},  </span> <li id="hvzpftn" class=alt><span>   server([], Allocated).  </span> <li id="hvzpftn" class=""><span>free(Free, Allocated, From, R) ->  </span> <li id="hvzpftn" class=alt><span>  <span id="hvzpftn" class=keyword><strong><font color=#7f0055>case</font></strong></span><span> lists:member({R,From}, Allocated) of  </span></span> <li id="hvzpftn" class=""><span>   <span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span> ->  </span></span> <li id="hvzpftn" class=alt><span>              From ! {resource_alloc,ok},  </span> <li id="hvzpftn" class=""><span>              Allocated1 = lists:delete({R, From}, Allocated),  </span> <li id="hvzpftn" class=alt><span>              <span id="hvzpftn" class=keyword><strong><font color=#7f0055>case</font></strong></span><span> lists:keysearch(From,</span><span id="hvzpftn" class=number>2</span><span>,Allocated1) of  </span></span> <li id="hvzpftn" class=""><span>                     <span id="hvzpftn" class=keyword><strong><font color=#7f0055>false</font></strong></span><span>->  </span></span> <li id="hvzpftn" class=alt><span>                            unlink(From),  </span> <li id="hvzpftn" class=""><span>                        io:format(<span id="hvzpftn" class=string><font color=#0000ff>"浠庤繘紼媬w鏂紑~n"</font></span><span>,[From]);  </span></span> <li id="hvzpftn" class=alt><span>                     _->  </span> <li id="hvzpftn" class=""><span>                            <span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>  </span></span> <li id="hvzpftn" class=alt><span>              end,  </span> <li id="hvzpftn" class=""><span>             server([R|Free],Allocated1);  </span> <li id="hvzpftn" class=alt><span>   <span id="hvzpftn" class=keyword><strong><font color=#7f0055>false</font></strong></span><span> ->  </span></span> <li id="hvzpftn" class=""><span>           From ! {resource_alloc,error},  </span> <li id="hvzpftn" class=alt><span>         server(Free, Allocated)  </span> <li id="hvzpftn" class=""><span> end.  </span> <li id="hvzpftn" class=alt><span>  </span> <li id="hvzpftn" class=""><span>check(Free, Allocated, From) ->  </span> <li id="hvzpftn" class=alt><span>   <span id="hvzpftn" class=keyword><strong><font color=#7f0055>case</font></strong></span><span> lists:keysearch(From, </span><span id="hvzpftn" class=number>2</span><span>, Allocated) of  </span></span> <li id="hvzpftn" class=""><span>         <span id="hvzpftn" class=keyword><strong><font color=#7f0055>false</font></strong></span><span> ->  </span></span> <li id="hvzpftn" class=alt><span>           server(Free, Allocated);  </span> <li id="hvzpftn" class=""><span>        {value, {R, From}} ->  </span> <li id="hvzpftn" class=alt><span>           check([R|Free],  </span> <li id="hvzpftn" class=""><span>           lists:delete({R, From}, Allocated), From)  </span> <li id="hvzpftn" class=alt><span>end.  </span> <li id="hvzpftn" class=""><span>start_client()->  </span> <li id="hvzpftn" class=alt><span>    Pid2=spawn(allocator,loop,[]),  </span> <li id="hvzpftn" class=""><span>    register(client, Pid2).  </span> <li id="hvzpftn" class=alt><span>loop()->  </span> <li id="hvzpftn" class=""><span>    receive  </span> <li id="hvzpftn" class=alt><span>        allocate->  </span> <li id="hvzpftn" class=""><span>            allocate(),  </span> <li id="hvzpftn" class=alt><span>            loop();  </span> <li id="hvzpftn" class=""><span>        {free,Resource}->  </span> <li id="hvzpftn" class=alt><span>            free(Resource),  </span> <li id="hvzpftn" class=""><span>            loop();  </span> <li id="hvzpftn" class=alt><span>        stop->  </span> <li id="hvzpftn" class=""><span>            <span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>;  </span></span> <li id="hvzpftn" class=alt><span>        _->  </span> <li id="hvzpftn" class=""><span>            loop()  </span> <li id="hvzpftn" class=alt><span>    end.  </span> <li id="hvzpftn" class=""><span>      </span> </li> </ol> </div> <br>鍥炲浜嗭紝鏈夌┖鍐嶈緇嗚鏄庝笅榪欎釜渚嬪瓙鍚с傛墽琛岋細<br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>1</span><span>> c(allocator).  </span></span> <li id="hvzpftn" class=""><span>{ok,allocator}  </span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>2</span><span>> allocator:start([</span><span id="hvzpftn" class=number>1</span><span>,</span><span id="hvzpftn" class=number>2</span><span>,</span><span id="hvzpftn" class=number>3</span><span>,</span><span id="hvzpftn" class=number>4</span><span>,</span><span id="hvzpftn" class=number>5</span><span>,</span><span id="hvzpftn" class=number>6</span><span>]).  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>  </span></span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>3</span><span>> allocator:start_client().  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>  </span></span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>4</span><span>> client!allocate  </span></span> <li id="hvzpftn" class=""><span>.  </span> <li id="hvzpftn" class=alt><span>allocate榪炴帴瀹㈡埛绔繘紼?lt;<span id="hvzpftn" class=number>0.37</span><span>.</span><span id="hvzpftn" class=number>0</span><span>>  </span></span> <li id="hvzpftn" class=""><span>  </span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>5</span><span>> client!allocate.  </span></span> <li id="hvzpftn" class=""><span>allocate榪炴帴瀹㈡埛绔繘紼?lt;<span id="hvzpftn" class=number>0.37</span><span>.</span><span id="hvzpftn" class=number>0</span><span>>  </span></span> <li id="hvzpftn" class=alt><span>  </span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=number>6</span><span>> client!allocate.  </span></span> <li id="hvzpftn" class=alt><span>allocate榪炴帴瀹㈡埛绔繘紼?lt;<span id="hvzpftn" class=number>0.37</span><span>.</span><span id="hvzpftn" class=number>0</span><span>>  </span></span> <li id="hvzpftn" class=""><span>  </span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>7</span><span>> allocator:allocate().  </span></span> <li id="hvzpftn" class=""><span>榪炴帴瀹㈡埛绔繘紼?lt;<span id="hvzpftn" class=number>0.28</span><span>.</span><span id="hvzpftn" class=number>0</span><span>>  </span></span> <li id="hvzpftn" class=alt><span>{yes,<span id="hvzpftn" class=number>4</span><span>}  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=number>8</span><span>> client!{free,</span><span id="hvzpftn" class=number>1</span><span>}.  </span></span> <li id="hvzpftn" class=alt><span>{free,<span id="hvzpftn" class=number>1</span><span>}  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=number>9</span><span>> client!{free,</span><span id="hvzpftn" class=number>2</span><span>}.  </span></span> <li id="hvzpftn" class=alt><span>{free,<span id="hvzpftn" class=number>2</span><span>}  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=number>10</span><span>> client!allocate.  </span></span> <li id="hvzpftn" class=alt><span>allocate榪炴帴瀹㈡埛绔繘紼?lt;<span id="hvzpftn" class=number>0.37</span><span>.</span><span id="hvzpftn" class=number>0</span><span>>  </span></span> <li id="hvzpftn" class=""><span>  </span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>11</span><span>> client!allocate.  </span></span> <li id="hvzpftn" class=""><span>allocate榪炴帴瀹㈡埛绔繘紼?lt;<span id="hvzpftn" class=number>0.37</span><span>.</span><span id="hvzpftn" class=number>0</span><span>>  </span></span> <li id="hvzpftn" class=alt><span>  </span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=number>12</span><span>> client!stop.  </span></span> <li id="hvzpftn" class=alt><span>stop  </span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=number>13</span><span>> allocator:allocate().  </span></span> <li id="hvzpftn" class=alt><span>榪炴帴瀹㈡埛绔繘紼?lt;<span id="hvzpftn" class=number>0.28</span><span>.</span><span id="hvzpftn" class=number>0</span><span>>  </span></span> <li id="hvzpftn" class=""><span>{yes,<span id="hvzpftn" class=number>3</span><span>}  </span></span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>14</span><span>> allocator:allocate().  </span></span> <li id="hvzpftn" class=""><span>榪炴帴瀹㈡埛绔繘紼?lt;<span id="hvzpftn" class=number>0.28</span><span>.</span><span id="hvzpftn" class=number>0</span><span>>  </span></span> <li id="hvzpftn" class=alt><span>{yes,<span id="hvzpftn" class=number>2</span><span>}  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=number>15</span><span>> allocator:allocate().  </span></span> <li id="hvzpftn" class=alt><span>榪炴帴瀹㈡埛绔繘紼?lt;<span id="hvzpftn" class=number>0.28</span><span>.</span><span id="hvzpftn" class=number>0</span><span>>  </span></span> <li id="hvzpftn" class=""><span>{yes,<span id="hvzpftn" class=number>1</span><span>}  </span></span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>16</span><span>>  </span></span> </li> </ol> </div> <br> <img src ="http://m.shnenglu.com/keigoliye/aggbug/95887.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/keigoliye/" target="_blank">鏆楀鏁欑埗</a> 2009-09-11 10:13 <a href="http://m.shnenglu.com/keigoliye/archive/2009/09/11/95887.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Erlang鍏ラ棬錛堜簩錛夆斿茍鍙戠紪紼?/title><link>http://m.shnenglu.com/keigoliye/archive/2009/09/11/95885.html</link><dc:creator>鏆楀鏁欑埗</dc:creator><author>鏆楀鏁欑埗</author><pubDate>Fri, 11 Sep 2009 02:12:00 GMT</pubDate><guid>http://m.shnenglu.com/keigoliye/archive/2009/09/11/95885.html</guid><wfw:comment>http://m.shnenglu.com/keigoliye/comments/95885.html</wfw:comment><comments>http://m.shnenglu.com/keigoliye/archive/2009/09/11/95885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/keigoliye/comments/commentRss/95885.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/keigoliye/services/trackbacks/95885.html</trackback:ping><description><![CDATA[<div id="hvzpftn" class=blog_content>    Erlang涓殑process鈥斺旇繘紼嬫槸杞婚噺綰х殑錛屽茍涓旇繘紼嬮棿鏃犲叡浜傛煡浜嗗緢澶氳祫鏂欙紝浼間箮娌′漢璇存竻妤氳交閲忕駭榪涚▼綆楁槸浠涔堟蹇碉紝緇х畫鏌ユ壘涓傘傘傞棽璇濅笉 鎻愶紝榪涘叆騫跺彂緙栫▼鐨勪笘鐣屻傛湰鏂囩畻鏄涔犵瑪璁幫紝涔熷彲浠ヨ鏄奀oncurrent Programming in ERLANG銆嬬浜斿紶鐨勭畝鐣ョ炕璇戙?<br><span style="FONT-WEIGHT: bold">1.榪涚▼鐨勫垱寤?/span><br>    榪涚▼鏄竴縐嶈嚜鍖呭惈鐨勩佸垎闅旂殑璁$畻鍗曞厓錛屽茍涓庡叾浠栬繘紼嬪茍鍙戣繍琛屽湪緋葷粺涓紝鍦ㄨ繘紼嬮棿騫舵病鏈変竴涓戶鎵夸綋緋伙紝褰撶劧錛屽簲鐢ㄥ紑鍙戣呭彲浠ヨ璁¤繖鏍蜂竴涓戶鎵夸綋緋匯?br>    榪涚▼鐨勫垱寤轟嬌鐢ㄥ涓嬭娉曪細<br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>Pid = spawn(Module, FunctionName, ArgumentList)  </span></span> </li> </ol> </div> <br>spawn鎺ュ彈涓変釜鍙傛暟錛氭ā鍧楀悕錛屽嚱鏁板悕浠ュ強鍙傛暟鍒楄〃錛屽茍榪斿洖涓涓唬琛ㄥ垱寤虹殑榪涚▼鐨勬爣璇嗙錛圥id錛夈?br>濡傛灉鍦ㄤ竴涓凡鐭ヨ繘紼婸id1涓墽琛岋細<br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>Pid2 = spawn(Mod, Func, Args)  </span></span> </li> </ol> </div> <br>閭d箞錛孭id2浠呬粎鑳借Pid1鍙錛孍rlang緋葷粺鐨勫畨鍏ㄦу氨鏋勫緩鍦ㄩ檺鍒惰繘紼嬫墿灞曠殑鍩虹涓娿?br><br><span style="FONT-WEIGHT: bold">2.榪涚▼闂撮氫俊</span><br>    Erlang榪涚▼闂寸殑閫氫俊鍙兘閫氳繃鍙戦佹秷鎭潵瀹炵幇錛屾秷鎭殑鍙戦佷嬌鐢?絎﹀彿錛?br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>Pid ! Message  </span></span> </li> </ol> </div> <br>    鍏朵腑Pid鏄帴鍙楁秷鎭殑榪涚▼鏍囪絎︼紝Message灝辨槸娑堟伅銆傛帴鍙楁柟鍜屾秷鎭彲浠ユ槸浠諱綍鐨勬湁鏁堢殑Erlang緇撴瀯錛屽彧瑕佷粬浠殑緇撴灉榪斿洖鐨勬槸榪涚▼鏍囪絎﹀拰娑堟伅銆?br>    娑堟伅鐨勬帴鍙楁槸浣跨敤receive鍏抽敭瀛楋紝璇硶濡備笅錛?br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>receive  </span></span> <li id="hvzpftn" class=""><span>      Message1 [when Guard1] ->  </span> <li id="hvzpftn" class=alt><span>          Actions1 ;  </span> <li id="hvzpftn" class=""><span>      Message2 [when Guard2] ->  </span> <li id="hvzpftn" class=alt><span>          Actions2 ;  </span> <li id="hvzpftn" class=""><span>  </span> <li id="hvzpftn" class=alt><span>end  </span> </li> </ol> </div> <br>    姣忎竴涓狤rlang榪涚▼閮芥湁涓涓?#8220;閭”錛屾墍鏈夊彂閫佸埌榪涚▼鐨勬秷鎭兘鎸夌収鍒拌揪鐨勯『搴忓瓨鍌ㄥ湪“閭”閲岋紝涓婇潰鎵紺虹殑娑堟伅Message1,Message2錛?褰撳畠浠笌“閭”閲岀殑娑堟伅鍖歸厤錛屽茍涓旂害鏉燂紙Guard錛夐氳繃錛岄偅涔堢浉搴旂殑ActionN灝嗘墽琛岋紝騫朵笖receive榪斿洖鐨勬槸ActionN鐨勬渶鍚庝竴鏉℃墽琛?璇彞鐨勭粨鏋溿侲rlang瀵?#8220;閭”閲岀殑娑堟伅鍖歸厤鏄湁閫夋嫨鎬х殑錛屽彧鏈夊尮閰嶇殑娑堟伅灝嗚瑙﹀彂鐩稿簲鐨凙ction錛岃屾病鏈夊尮閰嶇殑娑堟伅灝嗕粛鐒朵繚鐣欏湪“閭”閲屻傝繖 涓鏈哄埗淇濊瘉浜嗘病鏈夋秷鎭細闃誨鍏朵粬娑堟伅鐨勫埌杈俱?br>    娑堟伅鍒拌揪鐨勯『搴忓茍涓嶅喅瀹氭秷鎭殑浼樺厛綰э紝榪涚▼灝嗚疆嫻佹鏌?#8220;閭”閲岀殑娑堟伅榪涜灝濊瘯鍖歸厤銆傛秷鎭殑浼樺厛綰у埆涓嬫枃鍐嶈銆?br><br>    濡備綍鎺ュ彈鐗瑰畾榪涚▼鐨勬秷鎭憿錛熺瓟妗堝緢綆鍗曪紝灝嗗彂閫佹柟(sender)涔熼檮閫佸湪娑堟伅褰撲腑錛屾帴鏀舵柟閫氳繃妯″紡鍖歸厤鍐沖畾鏄惁鎺ュ彈錛屾瘮濡傦細<br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>Pid ! {self(),abc}  </span></span> </li> </ol> </div> <br>緇欒繘紼婸id鍙戦佹秷鎭瘂self(),abc}錛屽埄鐢╯elf榪囩▼寰楀埌鍙戦佹柟浣滀負娑堟伅鍙戦併傜劧鍚庢帴鏀舵柟錛?br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>receive  </span></span> <li id="hvzpftn" class=""><span>  {Pid1,Msg} ->  </span> <li id="hvzpftn" class=alt><span>  </span> <li id="hvzpftn" class=""><span>end  </span> </li> </ol> </div> <br>閫氳繃妯″紡鍖歸厤鍐沖畾鍙湁Pid1榪涚▼鍙戦佺殑娑堟伅鎵嶆帴鍙椼?br><br><span style="FONT-WEIGHT: bold">3.涓浜涗緥瀛?/span><br>    浠呰鏄庝笅涔︿腑璁℃暟鐨勮繘紼嬩緥瀛?鎴戞坊鍔犱簡綆鍗曟敞閲婏細<br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>-module(counter).  </span></span> <li id="hvzpftn" class=""><span>-compile(export_all).  </span> <li id="hvzpftn" class=alt><span>% start()錛岃繑鍥炰竴涓柊榪涚▼錛岃繘紼嬫墽琛屽嚱鏁發(fā)oop  </span> <li id="hvzpftn" class=""><span>start()->spawn(counter, loop,[<span id="hvzpftn" class=number>0</span><span>]).  </span></span> <li id="hvzpftn" class=alt><span>% 璋冪敤姝ゆ搷浣滈掑璁℃暟  </span> <li id="hvzpftn" class=""><span>increment(Counter)->  </span> <li id="hvzpftn" class=alt><span>    Counter!increament.  </span> <li id="hvzpftn" class=""><span>% 榪斿洖褰撳墠璁℃暟鍊?nbsp; </span> <li id="hvzpftn" class=alt><span>value(Counter)->  </span> <li id="hvzpftn" class=""><span>    Counter!{self(),value},  </span> <li id="hvzpftn" class=alt><span>    receive  </span> <li id="hvzpftn" class=""><span>        {Counter,Value}->  </span> <li id="hvzpftn" class=alt><span>            %榪斿洖緇欒皟鐢ㄦ柟  </span> <li id="hvzpftn" class=""><span>            Value  </span> <li id="hvzpftn" class=alt><span>        end.  </span> <li id="hvzpftn" class=""><span>  %鍋滄璁℃暟        </span> <li id="hvzpftn" class=alt><span> stop(Counter)->  </span> <li id="hvzpftn" class=""><span>     Counter!{self(),stop}.  </span> <li id="hvzpftn" class=alt><span> loop(Val)->  </span> <li id="hvzpftn" class=""><span>     receive  </span> <li id="hvzpftn" class=alt><span>         %鎺ュ彈涓嶅悓鐨勬秷鎭紝鍐沖畾榪斿洖緇撴灉  </span> <li id="hvzpftn" class=""><span>         increament->  </span> <li id="hvzpftn" class=alt><span>             loop(Val+<span id="hvzpftn" class=number>1</span><span>);  </span></span> <li id="hvzpftn" class=""><span>         {From,value}->  </span> <li id="hvzpftn" class=alt><span>             From!{self(),Val},  </span> <li id="hvzpftn" class=""><span>             loop(Val);  </span> <li id="hvzpftn" class=alt><span>         stop->  </span> <li id="hvzpftn" class=""><span>             <span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>;  </span></span> <li id="hvzpftn" class=alt><span>         %涓嶆槸浠ヤ笂<span id="hvzpftn" class=number>3</span><span>縐嶆秷鎭紝灝辯戶緇瓑寰?nbsp; </span></span> <li id="hvzpftn" class=""><span>         Other->  </span> <li id="hvzpftn" class=alt><span>             loop(Val)  </span> <li id="hvzpftn" class=""><span>      end.     </span> <li id="hvzpftn" class=alt><span>               </span> <li id="hvzpftn" class=""><span>                          </span> <li id="hvzpftn" class=alt><span>          </span> </li> </ol> </div> <br>璋冪敤鏂瑰紡錛?br><br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>1</span><span>> Counter1=counter:start().  </span></span> <li id="hvzpftn" class=""><span><<span id="hvzpftn" class=number>0.30</span><span>.</span><span id="hvzpftn" class=number>0</span><span>>  </span></span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>2</span><span>> counter:value(Counter1).  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=number>0</span><span>  </span></span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>3</span><span>> counter:increment(Counter1).  </span></span> <li id="hvzpftn" class=""><span>increament  </span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>4</span><span>> counter:value(Counter1).  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=number>1</span><span>  </span></span> </li> </ol> </div> <br>鍩轟簬榪涚▼鐨勬秷鎭紶閫掓満鍒跺彲浠ュ緢瀹規(guī)槗鍦板疄鐜版湁闄愮姸鎬佹満錛團SM錛夛紝鐘舵佷嬌鐢ㄥ嚱鏁拌〃紺猴紝鑰屼簨浠跺氨鏄秷鎭傚叿浣撲笉鍐嶅睍寮<br><br><span style="FONT-WEIGHT: bold">4.瓚呮椂璁劇疆</span><br>    Erlang涓殑receive璇硶鍙互娣誨姞涓涓澶栭夐」錛歵imeout錛岀被浼鹼細<br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>receive  </span></span> <li id="hvzpftn" class=""><span>   Message1 [when Guard1] ->  </span> <li id="hvzpftn" class=alt><span>     Actions1 ;  </span> <li id="hvzpftn" class=""><span>   Message2 [when Guard2] ->  </span> <li id="hvzpftn" class=alt><span>     Actions2 ;  </span> <li id="hvzpftn" class=""><span>     </span> <li id="hvzpftn" class=alt><span>   after  </span> <li id="hvzpftn" class=""><span>      TimeOutExpr ->  </span> <li id="hvzpftn" class=alt><span>         ActionsT  </span> <li id="hvzpftn" class=""><span>end  </span> </li> </ol> </div> <br>after涔嬪悗鐨凾imeOutExpr琛ㄨ揪寮忚繑鍥炰竴涓暣鏁皌ime錛堟縐掔駭鍒級錛屾椂闂寸殑綺劇‘紼嬪害渚濊禆浜嶦rlang鍦ㄦ搷浣滅郴緇熸垨鑰呯‖浠剁殑瀹炵幇銆傚鏋滃湪time姣鍐咃紝娌℃湁涓涓秷鎭閫変腑錛岃秴鏃惰緗皢鐢熸晥錛屼篃灝辨槸ActionT灝嗘墽琛屻倀ime鏈変袱涓壒孌婂鹼細<br>1)<span style="FONT-WEIGHT: bold">infinity</span>(鏃犵┓澶?錛宨nfinity鏄竴涓猘tom錛屾寚瀹氫簡瓚呮椂璁劇疆灝嗘案榪滀笉浼氳鎵ц銆?br>2) <span style="FONT-WEIGHT: bold">0</span>錛岃秴鏃跺鏋滆瀹氫負0鎰忓懗鐫瓚呮椂璁劇疆灝嗙珛鍒繪墽琛岋紝浣嗘槸緋葷粺灝嗛鍏堝皾璇曞綋鍓?#8220;閭”閲岀殑娑堟伅銆?br><br>    瓚呮椂鐨勫父瑙佸嚑涓簲鐢紝姣斿鎸傝搗褰撳墠榪涚▼澶氬皯姣錛?br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>sleep(Time) ->  </span></span> <li id="hvzpftn" class=""><span>  receive  </span> <li id="hvzpftn" class=alt><span>    after Time ->  </span> <li id="hvzpftn" class=""><span>    <span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>  </span></span> <li id="hvzpftn" class=alt><span>end.  </span> </li> </ol> </div> <br>    姣斿娓呯┖榪涚▼鐨?#8220;閭”,涓㈠純“閭”閲岀殑鎵鏈夋秷鎭細<br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>flush_buffer() ->  </span></span> <li id="hvzpftn" class=""><span>  receive  </span> <li id="hvzpftn" class=alt><span>    AnyMessage ->  </span> <li id="hvzpftn" class=""><span>      flush_buffer()  </span> <li id="hvzpftn" class=alt><span>  after <span id="hvzpftn" class=number>0</span><span> ->  </span></span> <li id="hvzpftn" class=""><span>    <span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>  </span></span> <li id="hvzpftn" class=alt><span>end.  </span> </li> </ol> </div>     <br>    灝嗗綋鍓嶈繘紼嬫案榪滄寕璧鳳細<br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>suspend() ->  </span></span> <li id="hvzpftn" class=""><span>    receive  </span> <li id="hvzpftn" class=alt><span>    after  </span> <li id="hvzpftn" class=""><span>        infinity ->  </span> <li id="hvzpftn" class=alt><span>            <span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>  </span></span> <li id="hvzpftn" class=""><span>    end.  </span> </li> </ol> </div> <br><span style="COLOR: rgb(0,0,0)">  </span><span style="COLOR: rgb(0,0,0)">     瓚呮椂涔熷彲浠ュ簲鐢ㄤ簬瀹炵幇瀹氭椂鍣紝姣斿涓嬮潰榪欎釜渚嬪瓙錛屽垱寤轟竴涓繘紼嬶紝榪欎釜榪涚▼灝嗗湪璁懼畾鏃墮棿鍚庡悜鑷繁鍙戦佹秷鎭細<br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>-module(timer).  </span></span> <li id="hvzpftn" class=""><span>-export([timeout/<span id="hvzpftn" class=number>2</span><span>,cancel/</span><span id="hvzpftn" class=number>1</span><span>,timer/</span><span id="hvzpftn" class=number>3</span><span>]).  </span></span> <li id="hvzpftn" class=alt><span>timeout(Time, Alarm) ->  </span> <li id="hvzpftn" class=""><span>   spawn(timer, timer, [self(),Time,Alarm]).  </span> <li id="hvzpftn" class=alt><span>cancel(Timer) ->  </span> <li id="hvzpftn" class=""><span>   Timer ! {self(),cancel}.  </span> <li id="hvzpftn" class=alt><span>timer(Pid, Time, Alarm) ->  </span> <li id="hvzpftn" class=""><span>   receive  </span> <li id="hvzpftn" class=alt><span>    {Pid,cancel} ->  </span> <li id="hvzpftn" class=""><span>       <span id="hvzpftn" class=keyword><strong><font color=#7f0055>true</font></strong></span><span>  </span></span> <li id="hvzpftn" class=alt><span>   after Time ->  </span> <li id="hvzpftn" class=""><span>       Pid ! Alarm  </span> <li id="hvzpftn" class=alt><span>end.  </span> </li> </ol> </div> <br>    <br><span style="FONT-WEIGHT: bold">5銆佹敞鍐岃繘紼?/span><br>    涓轟簡緇欒繘紼嬪彂閫佹秷鎭紝鎴戜滑闇瑕佺煡閬撹繘紼嬬殑Pid錛屼絾鏄湪鏌愪簺鎯呭喌涓嬶細鍦ㄤ竴涓緢澶х郴緇熼噷闈㈡湁寰堝鐨勫叏灞servers錛屾垨鑰呬負浜嗗畨鍏ㄨ冭檻闇瑕侀殣钘忚繘紼?Pid銆備負浜嗚揪鍒板彲浠ュ彂閫佹秷鎭粰涓涓笉鐭ラ亾Pid鐨勮繘紼嬬殑鐩殑錛屾垜浠彁渚涗簡娉ㄥ唽榪涚▼鐨勫姙娉曪紝緇欒繘紼嬩滑娉ㄥ唽鍚嶅瓧錛岃繖浜涘悕瀛楀繀欏繪槸atom銆?br>    鍩烘湰鐨勮皟鐢ㄥ艦寮忥細<br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>register(Name, Pid)  </span></span> <li id="hvzpftn" class=""><span>灝哊ame涓庤繘紼婸id鑱旂郴璧鋒潵  </span> <li id="hvzpftn" class=alt><span>  </span> <li id="hvzpftn" class=""><span>unregister(Name)  </span> <li id="hvzpftn" class=alt><span>鍙栨秷Name涓庣浉搴旇繘紼嬬殑瀵瑰簲鍏崇郴銆?nbsp; </span> <li id="hvzpftn" class=""><span>  </span> <li id="hvzpftn" class=alt><span>whereis(Name)  </span> <li id="hvzpftn" class=""><span>榪斿洖Name鎵鍏寵仈鐨勮繘紼嬬殑Pid錛屽鏋滄病鏈夎繘紼嬩笌涔嬪叧鑱旓紝灝辮繑鍥瀉tom:undefined  </span> <li id="hvzpftn" class=alt><span>  </span> <li id="hvzpftn" class=""><span>registered()  </span> <li id="hvzpftn" class=alt><span>榪斿洖褰撳墠娉ㄥ唽鐨勮繘紼嬬殑鍚嶅瓧鍒楄〃  </span> </li> </ol> </div> <br><span style="FONT-WEIGHT: bold">6.榪涚▼鐨勪紭鍏堢駭</span><br>璁懼畾榪涚▼鐨勪紭鍏堢駭鍙互浣跨敤BIFs:<br><span style="FONT-WEIGHT: bold">process_flag(priority, Pri)</span> <br><br>Pri鍙互鏄痭ormal銆乴ow,榛樿閮芥槸normal<br>浼樺厛綰ч珮鐨勮繘紼嬪皢鐩稿浣庣殑鎵ц澶氫竴鐐廣?br><br><span style="FONT-WEIGHT: bold">7.榪涚▼緇勶紙process group)</span><br>    鎵鏈夌殑ERLANG榪涚▼閮芥湁涓涓狿id涓庝竴涓粬浠叡鏈夌殑縐頒負Group Leader鐩稿叧鑱旓紝褰撲竴涓柊鐨勮繘紼嬭鍒涘緩鐨勬椂鍊欏皢琚姞鍏ュ悓涓涓繘紼嬬粍銆傛渶鍒濈殑緋葷粺榪涚▼鐨凣roup Leader灝辨槸瀹冭嚜韜紝鍥犳瀹冧篃鏄墍鏈夎鍒涘緩榪涚▼鍙婂瓙榪涚▼鐨凣roup Leader銆傝繖灝辨剰鍛崇潃Erlang鐨勮繘紼嬭緇勭粐涓轟竴媯礣ree錛屽叾涓殑鏍硅妭鐐瑰氨鏄涓涓鍒涘緩鐨勮繘紼嬨備笅闈㈢殑BIFs琚敤浜庢搷綰佃繘紼嬬粍錛?br><span style="FONT-WEIGHT: bold">group_leader()</span><br>榪斿洖鎵ц榪涚▼鐨凣roup Leader鐨凱id<br><span style="FONT-WEIGHT: bold">group_leader(Leader, Pid)</span><br>璁劇疆榪涚▼Pid鐨凣roup Leader涓鴻繘紼嬬殑Leader <br><br><span style="FONT-WEIGHT: bold">8.</span>Erlang鐨勮繘紼嬫ā鍨嬪緢瀹規(guī)槗鍘繪瀯寤篊lient-Server鐨勬ā鍨嬶紝涔︿腑鏈変竴鑺備笓闂ㄨ璁轟簡榪欎竴鐐癸紝鐫閲嶅己璋冧簡鎺ュ彛鐨勮璁′互鍙婃娊璞″眰嬈$殑闅旂闂錛屼笉緲昏瘧浜嗐?/span> </div> <img src ="http://m.shnenglu.com/keigoliye/aggbug/95885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/keigoliye/" target="_blank">鏆楀鏁欑埗</a> 2009-09-11 10:12 <a href="http://m.shnenglu.com/keigoliye/archive/2009/09/11/95885.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Erlang鍏ラ棬錛堜竴錛?/title><link>http://m.shnenglu.com/keigoliye/archive/2009/09/11/95884.html</link><dc:creator>鏆楀鏁欑埗</dc:creator><author>鏆楀鏁欑埗</author><pubDate>Fri, 11 Sep 2009 02:11:00 GMT</pubDate><guid>http://m.shnenglu.com/keigoliye/archive/2009/09/11/95884.html</guid><wfw:comment>http://m.shnenglu.com/keigoliye/comments/95884.html</wfw:comment><comments>http://m.shnenglu.com/keigoliye/archive/2009/09/11/95884.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/keigoliye/comments/commentRss/95884.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/keigoliye/services/trackbacks/95884.html</trackback:ping><description><![CDATA[<p>   璇籩rlang.org涓婇潰鐨凟rlang Course鍥涘ぉ鏁欑▼<br><span style="FONT-WEIGHT: bold">1.</span>鏁板瓧綾誨瀷錛岄渶瑕佹敞鎰忎袱鐐?br>1錛塀#Val琛ㄧず浠榪涘埗瀛樺偍鐨勬暟瀛梀al錛屾瘮濡?br></p> <div id="hvzpftn" class=code_title>ruby 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-rb> <li id="hvzpftn" class=alt><span><span>7> 2</span><span id="hvzpftn" class=comment><font color=#008200>#101.</font></span><span>  </span></span> <li id="hvzpftn" class=""><span>5  </span> </li> </ol> </div> <p><span style="COLOR: rgb(128,0,0)"><span style="COLOR: rgb(128,0,0)"><span style="COLOR: rgb(0,0,0)"><span style="FONT-WEIGHT: bold">浜?/span>榪涘埗瀛樺偍鐨?01灝辨槸10榪涘埗鐨?浜?br>2錛?Char琛ㄧず瀛楃Char鐨刟scii緙栫爜錛屾瘮濡?A琛ㄧず65<br><br><span style="FONT-WEIGHT: bold"></span><span style="FONT-WEIGHT: bold">2.</span>姣旇緝闅句互緲昏瘧鐨勬蹇碘斺攁tom錛屽彲浠ョ悊瑙f垚甯擱噺錛屽畠鍙互鍖呭惈浠諱綍瀛楃錛屼互灝忓啓瀛楁瘝寮澶達紝濡傛灉涓嶆槸浠ュ皬鍐欏瓧姣嶅紑澶存垨鑰呮槸瀛楁瘝涔嬪鐨勭鍙鳳紝闇瑕佺敤鍗曞紩鍙峰寘鎷搗鏉ワ紝姣斿abc,'AB'<span style="COLOR: rgb(128,0,0)"><span style="FONT-WEIGHT: bold"><br><br><span style="FONT-WEIGHT: bold">3.</span>鍙︿竴涓蹇碘斺擳uple,鏈変漢緲昏瘧鎴愬厓緇勶紝鍙互鐞嗚В鎴愬畾闀挎暟緇勶紝鏄疎rlang鐨勫熀紜鏁版嵁緇撴瀯涔嬩竴錛?br></p> <div id="hvzpftn" class=code_title>ruby 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-rb> <li id="hvzpftn" class=alt><span><span><font color=#000000>8> {1,2,3,4,5}.  </font></span></span> <li id="hvzpftn" class=""><span><font color=#000000>{1,2,3,4,5}  </font></span> <li id="hvzpftn" class=alt><span><font color=#000000>9> {a,b,c,1,2}.  </font></span> <li id="hvzpftn" class=""><span><font color=#000000>{a,b,c,1,2}  </font></span> <li id="hvzpftn" class=alt><span><font color=#000000>10> size({1,2,3,a,b,c}).  </font></span> <li id="hvzpftn" class=""><span><font color=#000000>6  </font></span> </li> </ol> </div> <p><br>鍐呯疆鍑芥暟size姹傞暱搴︼紝鍏冪粍鍙互宓屽鍏冪粍鎴栬呭叾浠栫粨鏋勩備笅闈㈡墍璁茬殑鍒楄〃涔熶竴鏍楓?br><br><span style="FONT-WEIGHT: bold">4.</span>鍙﹀涓涓熀紜鏁版嵁緇撴瀯灝辨槸鍚勪釜璇█閮芥湁鐨刲ist錛堝垪琛級錛屽湪[]鍐呬互,闅斿紑錛屽彲浠ュ姩鎬佹敼鍙樺ぇ灝忥紝 <br></p> <div id="hvzpftn" class=code_title>python 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-py> <li id="hvzpftn" class=alt><span><span><font color=#000000>[123, xyz]  </font></span></span> <li id="hvzpftn" class=""><span><font color=#000000>[123, </font><span id="hvzpftn" class=keyword><font color=#7f0055>def</font></span><span><font color=#000000>, abc]  </font></span></span> <li id="hvzpftn" class=alt><span><font color=#000000>[{person, 'Joe', 'Armstrong'},  </font></span> <li id="hvzpftn" class=""><span><font color=#000000>    {person, 'Robert', 'Virding'},  </font></span> <li id="hvzpftn" class=alt><span><font color=#000000>    {person, 'Mike', 'Williams'}  </font></span> <li id="hvzpftn" class=""><span><font color=#000000>]  </font></span> </li> </ol> </div> <p><br>鍙互浣跨敤鍐呯疆鍑芥暟l(fā)ength姹傚垪琛ㄥぇ灝忋備互""鍖呭惈鐨刟scii瀛楁瘝浠h〃涓涓垪琛紝閲岄潰鐨勫厓绱犲氨鏄繖浜涘瓧姣嶇殑ascii鍊鹼紝姣斿"abc"琛ㄧず鍒楄〃[97,98,99]銆?br><br><span style="FONT-WEIGHT: bold">5.</span>閫氳繃榪欎袱涓暟鎹粨鏋勫彲浠ョ粍鍚堟垚鍚勭澶嶆潅緇撴瀯錛屼笌Lisp鐨刢ons銆乴ist婕斿寲鍑哄悇縐嶇粨鏋勪竴鏍風殑濂囧銆?br><br><span style="FONT-WEIGHT: bold">6.</span>Erlang涓彉閲忔湁涓や釜鐗圭偣錛?br>1錛夊彉閲忓繀欏諱互澶у啓瀛楁瘝寮澶?br>2錛夊彉閲忓彧鑳界粦瀹氫竴嬈★紝鎴栬呬互涓鑸殑璇存硶灝辨槸鍙兘璧嬪間竴嬈★紝鍏跺疄Erlang騫舵病鏈夎祴鍊艱繖鏍風殑姒傚康,=鍙蜂篃鏄敤浜庨獙璇佸尮閰嶃?br><br><span style="FONT-WEIGHT: bold">7.</span>妯″紡鍖歸厤鈥斺擯attern Matching錛孍rlang鐨勬ā寮忓尮閰嶉潪甯稿己澶э紝鐪嬩簡<strong>buaawhl</strong>鐨勩?a ><u><font color=#000000>Erlang璇硶鎻愯</font></u></a>銆嬬殑浠嬬粛錛屾ā寮忓尮閰嶇殑鍔熻兘涓嶄粎浠呭湪璇劇▼涓粙緇嶇殑鏁版嵁緇撴瀯鐨勬媶瑙o紝鍦ㄧ▼搴忕殑鍒嗘淳涔熸壆婕旈噸瑕佽鑹詫紝鎴栬呰Erlang鐨勬帶鍒剁殑嫻佽漿鏄氳繃妯″紡鍖歸厤鏉ュ疄鐜扮殑銆傚叿浣撳姛鑳藉弬瑙侀摼鎺ワ紝緇欏嚭涔︿腑鎷嗚В鍒楄〃鐨勪緥瀛愶細<br></p> <div id="hvzpftn" class=code_title>python 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-py> <li id="hvzpftn" class=alt><span><span><font color=#000000>[A,B|C] = [1,2,3,4,5,6,7]  </font></span></span> <li id="hvzpftn" class=""><span><font color=#000000>     Succeeds - binds A = 1, B = 2,  </font></span> <li id="hvzpftn" class=alt><span><font color=#000000>     C = [3,4,5,6,7]  </font></span> <li id="hvzpftn" class=""><span><font color=#000000>   </font></span> <li id="hvzpftn" class=alt><span><font color=#000000> [H|T] = [1,2,3,4]  </font></span> <li id="hvzpftn" class=""><span><font color=#000000>     Succeeds - binds H = 1, T = [2,3,4]  </font></span> <li id="hvzpftn" class=alt><span><font color=#000000>   </font></span> <li id="hvzpftn" class=""><span><font color=#000000> [H|T] = [abc]  </font></span> <li id="hvzpftn" class=alt><span><font color=#000000>     Succeeds - binds H = abc, T = []  </font></span> <li id="hvzpftn" class=""><span><font color=#000000>   </font></span> <li id="hvzpftn" class=alt><span><font color=#000000> [H|T] = []  </font></span> <li id="hvzpftn" class=""><span><font color=#000000>     Fails  </font></span> </li> </ol> </div> <p><!----><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)"> <br>涓嬮潰浼氱粰鍑烘洿澶氭ā寮忓尮閰嶇殑渚嬪瓙錛岀粰鍑轟竴涓ā鍧楃敤鏉ヨ綆楀垪琛ㄧ瓑<br><br><span style="FONT-WEIGHT: bold">8.</span>Erlang涓嚱鏁扮殑瀹氫箟蹇呴』鍦ㄤ竴涓ā鍧楀唴錛圡odule錛夛紝騫朵笖妯″潡鍜屽嚱鏁扮殑鍚嶇О閮藉繀欏繪槸atom錛屽嚱鏁扮殑鍙傛暟鍙互鏄換浣曠殑Erlang綾誨瀷鎴栬呮暟鎹粨鏋勶紝鍑芥暟瑕佽璋冪敤闇瑕佷粠妯″潡涓鍑猴紝鍑芥暟璋冪敤鐨勫艦寮忕被浼鹼細<br>moduleName:funcName(Arg1,Arg2,...).<br>鍐欐垜浠殑絎竴涓狤rlang紼嬪簭錛屼漢瑙佷漢鐖辯殑Hello World錛?br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>-module(helloWorld).  </span></span> <li id="hvzpftn" class=""><span>-export([run/<span id="hvzpftn" class=number>1</span><span>]).  </span></span> <li id="hvzpftn" class=alt><span>run(Name)->  </span> <li id="hvzpftn" class=""><span>    io:format(<span id="hvzpftn" class=string><font color=#0000ff>"Hello World ~w~n"</font></span><span>,[Name]).  </span></span> </li> </ol> </div> <p><br>瀛樹負helloWorld.erl錛屽湪Erlang Shell涓墽琛岋細<br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>2</span><span>> c(helloWorld).  </span></span> <li id="hvzpftn" class=""><span>{ok,helloWorld}  </span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>3</span><span>> helloWorld:run(dennis).  </span></span> <li id="hvzpftn" class=""><span>Hello World dennis  </span> <li id="hvzpftn" class=alt><span>ok  </span> </li> </ol> </div> <p><br>鎵撳嵃鍑烘潵浜嗭紝鐜板湪瑙i噴涓嬬▼搴忔瀯閫狅紝<br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>-module(helloWorld).  </span></span> </li> </ol> </div> <p><br>榪欎竴琛屽0鏄庝簡妯″潡helloWorld錛屽嚱鏁板繀欏誨畾涔夊湪妯″潡鍐咃紝騫朵笖妯″潡鍚嶇О蹇呴』涓庢簮鏂囦歡鍚嶇浉鍚屻?br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>-export([run/</span><span id="hvzpftn" class=number>1</span><span>]).  </span></span> </li> </ol> </div> <p><br>鑰岃繖涓琛屽0鏄庡鍑虹殑鍑芥暟錛宺un/1鎸囩殑鏄湁涓涓弬鏁扮殑run鍑芥暟錛屽洜涓篍rlang鍏佽瀹氫箟鍚屽悕鐨勬湁涓嶅悓鍙傛暟鐨勫涓嚱鏁幫紝閫氳繃鎸囧畾/1鏉ヨ鏄庤瀵煎嚭鐨勬槸鍝釜鍑芥暟銆?br>鎺ヤ笅鏉ュ氨鏄嚱鏁板畾涔変簡錛?br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>run(Name)->  </span></span> <li id="hvzpftn" class=""><span>    io:format(<span id="hvzpftn" class=string><font color=#0000ff>"Hello World ~w~n"</font></span><span>,[Name]).  </span></span> </li> </ol> </div> <p><br>澶у啓寮澶寸殑鏄彉閲廚ame錛岃皟鐢╥o妯″潡鐨刦ormat鏂規(guī)硶杈撳嚭錛寏w鍙互鐞嗚В鎴愬崰浣嶇錛屽皢琚疄闄匩ame鍙栦唬錛寏n灝辨槸鎹㈣浜嗐傛敞鎰忥紝鍑芥暟瀹氫箟瀹屼簡瑕佷互鍙ュ彿.緇撴潫銆傜劧鍚庢墽琛宑(helloWorld).緙栬瘧婧愪唬鐮侊紝鎵ц錛?br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>helloWorld:run(dennis);  </span></span> </li> </ol> </div> <p><br><span style="FONT-WEIGHT: bold">9.</span>鍐呯疆鐨勫父鐢ㄥ嚱鏁幫細<br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>date()  </span></span> <li id="hvzpftn" class=""><span>time()  </span> <li id="hvzpftn" class=alt><span>length([<span id="hvzpftn" class=number>1</span><span>,</span><span id="hvzpftn" class=number>2</span><span>,</span><span id="hvzpftn" class=number>3</span><span>,</span><span id="hvzpftn" class=number>4</span><span>,</span><span id="hvzpftn" class=number>5</span><span>])  </span></span> <li id="hvzpftn" class=""><span>size({a,b,c})  </span> <li id="hvzpftn" class=alt><span>atom_to_list(an_atom)  </span> <li id="hvzpftn" class=""><span>list_to_tuple([<span id="hvzpftn" class=number>1</span><span>,</span><span id="hvzpftn" class=number>2</span><span>,</span><span id="hvzpftn" class=number>3</span><span>,</span><span id="hvzpftn" class=number>4</span><span>])  </span></span> <li id="hvzpftn" class=alt><span>integer_to_list(<span id="hvzpftn" class=number>2234</span><span>)  </span></span> <li id="hvzpftn" class=""><span>tuple_to_list({})  </span> <li id="hvzpftn" class=alt><span>hd([<span id="hvzpftn" class=number>1</span><span>,</span><span id="hvzpftn" class=number>2</span><span>,</span><span id="hvzpftn" class=number>3</span><span>,</span><span id="hvzpftn" class=number>4</span><span>])  %杈撳嚭</span><span id="hvzpftn" class=number>1</span><span>錛屼篃灝辨槸鍒楄〃鐨刪ead  </span></span> <li id="hvzpftn" class=""><span>tl([<span id="hvzpftn" class=number>1</span><span>,</span><span id="hvzpftn" class=number>2</span><span>,</span><span id="hvzpftn" class=number>3</span><span>,</span><span id="hvzpftn" class=number>4</span><span>])  %杈撳嚭[</span><span id="hvzpftn" class=number>2</span><span>,</span><span id="hvzpftn" class=number>3</span><span>,</span><span id="hvzpftn" class=number>4</span><span>],涔熷氨鏄垪琛ㄧ殑tail  </span></span> </li> </ol> </div> <p><br><span style="FONT-WEIGHT: bold">10.</span>甯歌Shell鍛戒護錛?br>1錛?span style="FONT-WEIGHT: bold">h().</span> 鐢ㄦ潵鎵撳嵃鏈榪戠殑20鏉″巻鍙插懡浠?br>2錛?span style="FONT-WEIGHT: bold">b().</span> 鏌ョ湅鎵鏈夌粦瀹氱殑鍙橀噺<br>3) <span style="FONT-WEIGHT: bold">f().</span> 鍙栨秷錛堥仐蹇橈級鎵鏈夌粦瀹氱殑鍙橀噺銆?br>4) <span style="FONT-WEIGHT: bold">f(Val).</span>  鍙栨秷鎸囧畾鐨勭粦瀹氬彉閲?br>5) <span style="FONT-WEIGHT: bold">e(n).</span>   鎵ц絎琻鏉″巻鍙插懡浠?br>6) <span style="FONT-WEIGHT: bold">e(-1).</span>  鎵ц涓婁竴鏉hell鍛戒護<br><br><span style="FONT-WEIGHT: bold">11.</span>鍙堜竴涓笉鐭ラ亾鎬庝箞緲昏瘧鐨勬蹇碘斺擥uard銆傜炕璇戞垚綰︽潫錛熷懙鍛點傜敤浜庨檺鍒跺彉閲忕殑綾誨瀷鍜岃寖鍥達紝姣斿錛?br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>number(X)    - X 鏄暟瀛?nbsp; </span></span> <li id="hvzpftn" class=""><span>integer(X)    - X 鏄暣鏁?nbsp; </span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=keyword><font color=#7f0055>float</font></span><span>(X)    - X 鏄誕鐐規(guī)暟  </span></span> <li id="hvzpftn" class=""><span>atom(X)        - X 鏄竴涓猘tom  </span> <li id="hvzpftn" class=alt><span>tuple(X)    - X 鏄竴涓厓緇?nbsp; </span> <li id="hvzpftn" class=""><span>list(X)        - X 鏄竴涓垪琛?nbsp; </span> <li id="hvzpftn" class=alt><span>  </span> <li id="hvzpftn" class=""><span>length(X) == <span id="hvzpftn" class=number>3</span><span>    - X 鏄竴涓暱搴︿負</span><span id="hvzpftn" class=number>3</span><span>鐨勫垪琛?nbsp; </span></span> <li id="hvzpftn" class=alt><span>size(X) == <span id="hvzpftn" class=number>2</span><span>    - X 鏄竴涓暱搴︿負</span><span id="hvzpftn" class=number>2</span><span>鐨勫厓緇?nbsp; </span></span> <li id="hvzpftn" class=""><span>  </span> <li id="hvzpftn" class=alt><span>X > Y + Z    - X >Y+Z  </span> <li id="hvzpftn" class=""><span>X == Y        - X 涓嶻鐩哥瓑  </span> <li id="hvzpftn" class=alt><span>X =:= Y        - X 鍏ㄧ瓑浜嶻  </span> <li id="hvzpftn" class=""><span>(姣斿錛?nbsp;<span id="hvzpftn" class=number>1</span><span> == </span><span id="hvzpftn" class=number>1.0</span><span> 鎴愬姛  </span></span> <li id="hvzpftn" class=alt><span>           <span id="hvzpftn" class=number>1</span><span> =:= </span><span id="hvzpftn" class=number>1.0</span><span> 澶辮觸)  </span></span> </li> </ol> </div> <p><br>涓轟簡鏂逛究姣旇緝錛孍rlang瑙勫畾濡備笅鐨勬瘮杈冮『搴忥細<br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>number < atom < reference < port < pid < tuple < list  </span></span> </li> </ol> </div> <p><br><br><span style="FONT-WEIGHT: bold">12.</span>蹇樹簡浠嬬粛apply鍑芥暟錛岃繖涓嚱鏁板浜庣啛鎮(zhèn)塲avascript鐨勪漢鏉ヨ寰堜翰鍒囷紝javascript瀹炵幇mixin灝卞緱闈犲畠錛屽畠鐨勮皟鐢ㄦ柟寮忓涓嬶細<br></p> <pre>apply(Mod, Func, Args),涓変釜鍙傛暟鍒嗗埆鏄ā鍧椼佸嚱鏁頒互鍙婂弬鏁板垪琛紝姣斿璋冪敤鎴戜滑鐨勭涓涓狤rlang紼嬪簭錛?br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>apply(helloWorld,run,[dennis]).  </span></span></li> </ol> </div> <br><span style="FONT-WEIGHT: bold">13.</span>if鍜宑ase璇彞錛宨f璇彞鐨勭粨鏋勫涓嬶細<br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=keyword><font color=#7f0055>if</font></span><span>  </span></span> <li id="hvzpftn" class=""><span>   Guard1 ->  </span> <li id="hvzpftn" class=alt><span>        Sequence1 ;  </span> <li id="hvzpftn" class=""><span>   Guard2 ->  </span> <li id="hvzpftn" class=alt><span>        Sequence2 ;  </span> <li id="hvzpftn" class=""><span>...  </span> <li id="hvzpftn" class=alt><span>end  </span></li> </ol> </div> <br>鑰宑ase璇彞鐨勭粨鏋勫涓嬶細<br> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=keyword><font color=#7f0055>case</font></span><span> Expr of  </span></span> <li id="hvzpftn" class=""><span>   Pattern1 [when Guard1] -> Seq1;  </span> <li id="hvzpftn" class=alt><span>   Pattern2 [when Guard2] -> Seq2;  </span> <li id="hvzpftn" class=""><span>  </span> <li id="hvzpftn" class=alt><span>   PatternN [when GuardN] -> SeqN  </span> <li id="hvzpftn" class=""><span>end  </span></li> </ol> </div> </pre> <p>if鍜宑ase璇彞閮芥湁涓涓棶棰橈紝灝辨槸褰撴病鏈夋ā寮忓尮閰嶆垨鑰匞rard閮芥槸false鐨勬椂鍊欎細瀵艱嚧error錛岃繖涓棶棰榗ase鍙互澧炲姞涓涓被浼糺ava涓璬efault鐨勶細<br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=keyword><font color=#7f0055>case</font></span><span> Fn of  </span></span> <li id="hvzpftn" class=""><span>  </span> <li id="hvzpftn" class=alt><span>   _ ->  </span> <li id="hvzpftn" class=""><span>   <span id="hvzpftn" class=keyword><font color=#7f0055>true</font></span><span>  </span></span> <li id="hvzpftn" class=alt><span>end  </span> </li> </ol> </div> <p><br>閫氳繃_鎸囦唬浠繪剰鐨凟xpr錛岃繑鍥瀟rue,鑰宨f鍙互榪欐牱錛?br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=keyword><font color=#7f0055>if</font></span><span>  </span></span> <li id="hvzpftn" class=""><span>    </span> <li id="hvzpftn" class=alt><span>  <span id="hvzpftn" class=keyword><font color=#7f0055>true</font></span><span> ->  </span></span> <li id="hvzpftn" class=""><span>   <span id="hvzpftn" class=keyword><font color=#7f0055>true</font></span><span>  </span></span> <li id="hvzpftn" class=alt><span>end  </span> </li> </ol> </div> <p><br>涓鏍風殑閬撶悊銆俢ase璇彞鍙︿竴涓渶瑕佹敞鎰忕殑闂灝辨槸鍙橀噺鑼冨洿錛屾瘡涓猚ase鍒嗘敮涓畾涔夌殑鍙橀噺閮藉皢榛樿瀵煎嚭case璇彞錛屼篃灝辨槸鍦╟ase璇彞緇撴潫鍚庡彲浠ヨ寮曠敤錛屽洜姝や竴涓鍒欏氨鏄瘡涓猚ase鍒嗘敮瀹氫箟鐨勫彉閲忓簲璇ヤ竴鑷達紝涓嶇劧綆楁槸闈炴硶鐨勶紝緙栬瘧鍣ㄤ細緇欏嚭璀﹀憡錛屾瘮濡傦細<br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>f(X) ->  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=keyword><font color=#7f0055>case</font></span><span> g(X) of  </span></span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=keyword><font color=#7f0055>true</font></span><span> -> A = h(X), B = A + </span><span id="hvzpftn" class=number>7</span><span>;  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=keyword><font color=#7f0055>false</font></span><span> -> B = </span><span id="hvzpftn" class=number>6</span><span>  </span></span> <li id="hvzpftn" class=alt><span>end,  </span> <li id="hvzpftn" class=""><span>h(A).  </span> </li> </ol> </div> <p><br>濡傛灉鎵цtrue鍒嗘敮錛屽彉閲廇鍜屽彉閲廈閮借瀹氫箟錛岃屽鏋滄墽琛岀殑false鍒嗘敮錛屽彧鏈夊彉閲廈琚紩鐢紝鍙湪case璇彞鎵ц鍚庯紝h(A)璋冪敤浜嗗彉閲廇錛岃繖鏄笉瀹夊叏鐨勶紝鍥犱負鍙橀噺A瀹屽叏鍙兘娌℃湁琚畾涔夛紝緙栬瘧鍣ㄥ皢緇欏嚭璀﹀憡<br><span style="FONT-WEIGHT: bold">variable 'A' unsafe in 'case' (line 10)</span><br><br><br><br><span style="FONT-WEIGHT: bold">14.</span>緇欏嚭涓浜涚◢寰鏉傜殑妯″瀷鍖歸厤渚嬪瓙錛屾瘮濡傜敤浜庤綆楁暟瀛楀垪琛ㄧ殑鍜屻佸鉤鍧囧箋侀暱搴︺佹煡鎵炬煇鍏冪礌鏄惁鍦ㄥ垪琛ㄤ腑錛屾垜浠妸榪欎釜妯″潡瀹氫箟涓簂ist:<br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>-module(list).  </span></span> <li id="hvzpftn" class=""><span>-export([average/<span id="hvzpftn" class=number>1</span><span>,sum/</span><span id="hvzpftn" class=number>1</span><span>,len/</span><span id="hvzpftn" class=number>1</span><span>,</span><span id="hvzpftn" class=keyword><font color=#7f0055>double</font></span><span>/</span><span id="hvzpftn" class=number>1</span><span>,member/</span><span id="hvzpftn" class=number>2</span><span>]).  </span></span> <li id="hvzpftn" class=alt><span>average(X)->sum(X)/len(X).  </span> <li id="hvzpftn" class=""><span>sum([H|T]) when number(H)->H+sum(T);  </span> <li id="hvzpftn" class=alt><span>sum([])-><span id="hvzpftn" class=number>0</span><span>.  </span></span> <li id="hvzpftn" class=""><span>len([_|T])-><span id="hvzpftn" class=number>1</span><span>+len(T);  </span></span> <li id="hvzpftn" class=alt><span>len([])-><span id="hvzpftn" class=number>0</span><span>.  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=keyword><font color=#7f0055>double</font></span><span>([H|T]) -> [</span><span id="hvzpftn" class=number>2</span><span>*H|</span><span id="hvzpftn" class=keyword><font color=#7f0055>double</font></span><span>(T)];  </span></span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=keyword><font color=#7f0055>double</font></span><span>([]) -> [].  </span></span> <li id="hvzpftn" class=""><span>member(H, [H|_]) -> <span id="hvzpftn" class=keyword><font color=#7f0055>true</font></span><span>;  </span></span> <li id="hvzpftn" class=alt><span>member(H, [_|T]) -> member(H, T);  </span> <li id="hvzpftn" class=""><span>member(_, []) -> <span id="hvzpftn" class=keyword><font color=#7f0055>false</font></span><span>.  </span></span> <li id="hvzpftn" class=alt><span>                  </span> </li> </ol> </div> <p><br>緇嗙粏浣撲細錛屽埄鐢ㄩ掑綊鏉ュ疄鐜幫紝姣旇緝鏈夎叮銆俖鐢ㄤ簬鎸囦唬浠繪剰鐨勫彉閲忥紝褰撴垜浠彧鍏蟲敞姝ゅ鏈夊彉閲忥紝浣嗗茍涓嶅叧蹇冨彉閲忕殑鍊肩殑鏃跺欎嬌鐢ㄣ傜敤鍒嗗彿;鏉ヨ鏄庢槸鍚屼竴涓嚱鏁板畾涔夛紝鍙槸涓嶅悓鐨勫畾涔夊垎鏀紝閫氳繃妯″紡鍖歸厤鏉ュ喅瀹氳皟鐢ㄥ摢涓嚱鏁板畾涔夊垎鏀?br>鍙︿竴涓緥瀛愶紝璁$畻鍚勭鍥懼艦鐨勯潰縐紝涔熸槸璇劇▼涓粰鍑虹殑渚嬪瓙錛?br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span>-module(mathStuff).  </span></span> <li id="hvzpftn" class=""><span>-export([factorial/<span id="hvzpftn" class=number>1</span><span>,area/</span><span id="hvzpftn" class=number>1</span><span>]).  </span></span> <li id="hvzpftn" class=alt><span>factorial(<span id="hvzpftn" class=number>0</span><span>)-></span><span id="hvzpftn" class=number>1</span><span>;  </span></span> <li id="hvzpftn" class=""><span>factorial(N) when N><span id="hvzpftn" class=number>0</span><span>->N*factorial(N-</span><span id="hvzpftn" class=number>1</span><span>).  </span></span> <li id="hvzpftn" class=alt><span>%璁$畻姝f柟褰㈤潰縐紝鍙傛暟鍏冪粍鐨勭涓涓尮閰峴quare      </span> <li id="hvzpftn" class=""><span>area({square, Side}) ->  </span> <li id="hvzpftn" class=alt><span>    Side * Side;  </span> <li id="hvzpftn" class=""><span>%璁$畻鍦嗙殑闈㈢Н錛屽尮閰峜ircle    </span> <li id="hvzpftn" class=alt><span>area({circle, Radius}) ->  </span> <li id="hvzpftn" class=""><span>   % almost :-)  </span> <li id="hvzpftn" class=alt><span>   <span id="hvzpftn" class=number>3</span><span> * Radius * Radius;  </span></span> <li id="hvzpftn" class=""><span>%璁$畻涓夎褰㈢殑闈㈢Н錛屽埄鐢ㄦ搗浼﹀叕寮忥紝鍖歸厤triangle   </span> <li id="hvzpftn" class=alt><span>area({triangle, A, B, C}) ->  </span> <li id="hvzpftn" class=""><span>   S = (A + B + C)/<span id="hvzpftn" class=number>2</span><span>,  </span></span> <li id="hvzpftn" class=alt><span>math:sqrt(S*(S-A)*(S-B)*(S-C));  </span> <li id="hvzpftn" class=""><span>%鍏朵粬  </span> <li id="hvzpftn" class=alt><span>area(Other) ->  </span> <li id="hvzpftn" class=""><span>   {invalid_object, Other}.  </span> </li> </ol> </div> <p><br>鎵ц涓涓嬬湅鐪嬶細<br></p> <div id="hvzpftn" class=code_title>java 浠g爜</div> <div id="hvzpftn" class=dp-highlighter> <div id="hvzpftn" class=bar> </div> <ol class=dp-j> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>1</span><span>> c(mathStuff).  </span></span> <li id="hvzpftn" class=""><span>{ok,mathStuff}  </span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>2</span><span>> mathStuff:area({square,</span><span id="hvzpftn" class=number>2</span><span>}).  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=number>4</span><span>  </span></span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>3</span><span>> mathStuff:area({circle,</span><span id="hvzpftn" class=number>2</span><span>}).  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=number>12</span><span>  </span></span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>4</span><span>> mathStuff:area({triangle,</span><span id="hvzpftn" class=number>2</span><span>,</span><span id="hvzpftn" class=number>3</span><span>,</span><span id="hvzpftn" class=number>4</span><span>}).  </span></span> <li id="hvzpftn" class=""><span><span id="hvzpftn" class=number>2.90474</span><span>  </span></span> <li id="hvzpftn" class=alt><span><span id="hvzpftn" class=number>5</span><span>> mathStuff:area({other,</span><span id="hvzpftn" class=number>2</span><span>,</span><span id="hvzpftn" class=number>3</span><span>,</span><span id="hvzpftn" class=number>4</span><span>}).  </span></span> <li id="hvzpftn" class=""><span>{invalid_object,{other,<span id="hvzpftn" class=number>2</span><span>,</span><span id="hvzpftn" class=number>3</span><span>,</span><span id="hvzpftn" class=number>4</span><span>}}  </span></span> </li> </ol> </div> <p><br>Erlang浣跨敤%寮濮嬪崟琛屾敞閲娿?br></span></span></span></span></span></span></p> <img src ="http://m.shnenglu.com/keigoliye/aggbug/95884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/keigoliye/" target="_blank">鏆楀鏁欑埗</a> 2009-09-11 10:11 <a href="http://m.shnenglu.com/keigoliye/archive/2009/09/11/95884.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://hhhh19.com" target="_blank">久久久久九九九</a>| <a href="http://13789a.com" target="_blank">久久免费观看视频</a>| <a href="http://uuclassroom.com" target="_blank">欧美亚洲日本国产</a>| <a href="http://aa56789.com" target="_blank">亚洲欧美色婷婷</a>| <a href="http://977764.com" target="_blank">欧美综合激情网</a>| <a href="http://zztto7.com" target="_blank">老鸭窝91久久精品色噜噜导演</a>| <a href="http://3188m.com" target="_blank">欧美一区二区精品在线</a>| <a href="http://152mu.com" target="_blank">久久精品国产2020观看福利</a>| <a href="http://7171152.com" target="_blank">久久久人成影片一区二区三区</a>| <a href="http://123273.com" target="_blank">久久久欧美精品sm网站</a>| <a href="http://www92444.com" target="_blank">欧美国产三级</a>| <a href="http://jiarenlady.com" target="_blank">国产精品视频久久</a>| <a href="http://by3180.com" target="_blank">亚洲激情亚洲</a>| <a href="http://340996.com" target="_blank">久久精品国产99国产精品澳门</a>| <a href="http://176sfsf.com" target="_blank">美女黄毛**国产精品啪啪 </a>| <a href="http://86311ib.com" target="_blank">国产精品一区亚洲</a>| <a href="http://ridenimbus.com" target="_blank">国语自产在线不卡</a>| <a href="http://zyjxyx.com" target="_blank">亚洲香蕉伊综合在人在线视看</a>| <a href="http://48655aa.com" target="_blank">亚洲欧美日韩在线一区</a>| <a href="http://7115866.com" target="_blank">欧美国产在线观看</a>| <a href="http://t3gg.com" target="_blank">亚洲欧美日本国产专区一区</a>| <a href="http://928uc.com" target="_blank">国产精品99久久久久久人</a>| <a href="http://0855123.com" target="_blank">欧美一区二区精品久久911</a>| <a href="http://3dmh145.com" target="_blank">亚洲国产精品一区二区www在线 </a>| <a href="http://67idid.com" target="_blank">久久天天躁狠狠躁夜夜爽蜜月</a>| <a href="http://270909.com" target="_blank">亚洲激情校园春色</a>| <a href="http://75yyyy.com" target="_blank">欧美极品一区</a>| <a href="http://saobi6.com" target="_blank">亚洲黄色成人</a>| <a href="http://bjygp.com" target="_blank">免费亚洲一区二区</a>| <a href="http://sdxinqi.com" target="_blank">久久国产精品99国产精</a>| <a href="http://jsgf444.com" target="_blank">国产亚洲一级高清</a>| <a href="http://344230.com" target="_blank">久久影院亚洲</a>| <a href="http://www49966.com" target="_blank">久久久97精品</a>| <a href="http://www92994.com" target="_blank">亚洲激情一区二区</a>| <a href="http://thisisfil.com" target="_blank">亚洲激情偷拍</a>| <a href="http://1323666.com" target="_blank">欧美日韩一区在线视频</a>| <a href="http://maiiyou.com" target="_blank">亚洲性图久久</a>| <a href="http://jjoo4.com" target="_blank">亚洲欧美一区二区三区极速播放</a>| <a href="http://hzjqkj.com" target="_blank">国产精品入口</a>| <a href="http://www33444.com" target="_blank">久久久亚洲高清</a>| <a href="http://hsxinbao.com" target="_blank">免费亚洲电影</a>| <a href="http://www9797abc.com" target="_blank">亚洲欧美韩国</a>| <a href="http://kk8586.com" target="_blank">久久精视频免费在线久久完整在线看</a>| <a href="http://www123720a.com" target="_blank">国产在线成人</a>| <a href="http://376524.com" target="_blank">亚洲人成网站777色婷婷</a>| <a href="http://47b8.com" target="_blank">久久综合九色</a>| <a href="http://www18bbav.com" target="_blank">欧美日韩国产在线一区</a>| <a href="http://929889.com" target="_blank">欧美亚洲免费电影</a>| <a href="http://dgxinshidai.com" target="_blank">久久亚洲欧美</a>| <a href="http://mishangmi.com" target="_blank">亚洲欧美日韩久久精品</a>| <a href="http://613by.com" target="_blank">久久影院午夜论</a>| <a href="http://7213523.com" target="_blank">欧美一区二区三区四区在线观看地址</a>| <a href="http://www4411n.com" target="_blank">久久久久久久综合日本</a>| <a href="http://www-ty177.com" target="_blank">一本一道久久综合狠狠老精东影业 </a>| <a href="http://by3180.com" target="_blank">欧美激情国产日韩</a>| <a href="http://cao3636.com" target="_blank">亚洲综合色噜噜狠狠</a>| <a href="http://787282.com" target="_blank">久久er精品视频</a>| <a href="http://bjzgmember.com" target="_blank">宅男精品视频</a>| <a href="http://fcponteggi.com" target="_blank">毛片一区二区三区</a>| <a href="http://555888666.com" target="_blank">久久久久久999</a>| <a href="http://yanuoxun.com" target="_blank">国产精品多人</a>| <a href="http://66688811.com" target="_blank">日韩视频一区二区三区</a>| <a href="http://yyds16.com" target="_blank">亚洲国产婷婷综合在线精品</a>| <a href="http://cnlbogs.com" target="_blank">一本一本久久</a>| <a href="http://wwzz3.com" target="_blank">亚洲天堂男人</a>| <a href="http://www333444123.com" target="_blank">欧美日韩午夜视频在线观看</a>| <a href="http://www333393.com" target="_blank">久久久精彩视频</a>| <a href="http://www381818.com" target="_blank">国产香蕉97碰碰久久人人</a>| <a href="http://wzsl8.com" target="_blank">亚洲欧美精品伊人久久</a>| <a href="http://www-kj8777.com" target="_blank">一区二区三区精品视频</a>| <a href="http://8x588.com" target="_blank">欧美精品一区二区高清在线观看</a>| <a href="http://987gqb.com" target="_blank">久久蜜桃香蕉精品一区二区三区</a>| <a href="http://tv-miya188.com" target="_blank">国产精品视频网</a>| <a href="http://aqd072.com" target="_blank">午夜久久电影网</a>| <a href="http://8888590.com" target="_blank">久久99伊人</a>| <a href="http://13751144594.com" target="_blank">伊人狠狠色j香婷婷综合</a>| <a href="http://767296.com" target="_blank">午夜一区二区三区在线观看</a>| <a href="http://1000kongbao.com" target="_blank">午夜在线精品</a>| <a href="http://521nb.com" target="_blank">国产一区二区三区精品欧美日韩一区二区三区 </a>| <a href="http://227c7.com" target="_blank">国模叶桐国产精品一区</a>| <a href="http://mimi78.com" target="_blank">亚洲在线一区二区</a>| <a href="http://482896.com" target="_blank">国产精品成人午夜</a>| <a href="http://go1818.com" target="_blank">亚洲午夜精品17c</a>| <a href="http://3233328.com" target="_blank">欧美呦呦网站</a>| <a href="http://scptw.com" target="_blank">亚洲精品乱码久久久久久黑人</a>| <a href="http://www-45553.com" target="_blank">欧美不卡三区</a>| <a href="http://k91cm.com" target="_blank">午夜国产欧美理论在线播放</a>| <a href="http://987527.com" target="_blank">噜噜噜久久亚洲精品国产品小说</a>| <a href="http://heyzo1031.com" target="_blank">激情自拍一区</a>| <a href="http://bckxy.com" target="_blank">欧美性色视频在线</a>| <a href="http://ximaimicro.com" target="_blank">久久久噜噜噜久噜久久</a>| <a href="http://9876666.com" target="_blank">亚洲精选久久</a>| <a href="http://hbzbjxzz.com" target="_blank">欧美成人自拍</a>| <a href="http://obatshaka.com" target="_blank">欧美制服丝袜</a>| <a href="http://666675com.com" target="_blank">一区二区三区精品国产</a>| <a href="http://xwsj2020.com" target="_blank">国产一级一区二区</a>| <a href="http://www-77537.com" target="_blank">欧美三区不卡</a>| <a href="http://xian369.com" target="_blank">欧美大片va欧美在线播放</a>| <a href="http://6168138.com" target="_blank">亚洲欧美高清</a>| <a href="http://56701sy.com" target="_blank">在线中文字幕不卡</a>| <a href="http://4bbbbb.com" target="_blank">亚洲精品国产精品国自产观看浪潮 </a>| <a href="http://44o77.com" target="_blank">国产日韩精品视频一区</a>| <a href="http://avjj80.com" target="_blank">欧美日韩精品久久</a>| <a href="http://01xxtv.com" target="_blank">久久久久久久综合日本</a>| <a href="http://oksousou.com" target="_blank">中日韩男男gay无套</a>| <a href="http://787282.com" target="_blank">亚洲国产婷婷综合在线精品</a>| <a href="http://7776701.com" target="_blank">久久精品视频免费观看</a>| <a href="http://679776.com" target="_blank">午夜在线成人av</a>| <a href="http://995688.com" target="_blank">午夜久久tv</a>| <a href="http://330310c.com" target="_blank">国内外成人免费视频</a>| <a href="http://7782y.com" target="_blank">国产精品一区亚洲</a>| <a href="http://bcjianyan.com" target="_blank">一区免费视频</a>| <a href="http://ktt2048.com" target="_blank">在线中文字幕日韩</a>| <a href="http://339505.com" target="_blank">一区二区三区视频免费在线观看</a>| <a href="http://5566kan.com" target="_blank">99视频日韩</a>| <a href="http://387www.com" target="_blank">午夜精品一区二区三区在线</a>| <a href="http://874805.com" target="_blank">久久亚洲欧美</a>| <a href="http://59jf.com" target="_blank">久久xxxx精品视频</a>| <a href="http://342008.com" target="_blank">欧美另类一区</a>| <a href="http://0359222.com" target="_blank">另类天堂av</a>| <a href="http://x946.com" target="_blank">亚洲国产高潮在线观看</a>| <a href="http://csjtzn.com" target="_blank">正在播放欧美视频</a>| <a href="http://dzyhjx.com" target="_blank">免费成人av在线看</a>| <a href="http://jivbus.com" target="_blank">亚洲男同1069视频</a>| <a href="http://dkmcjc.com" target="_blank">欧美日韩国产高清视频</a>| <a href="http://613609.com" target="_blank">国语自产偷拍精品视频偷</a>| <a href="http://5917t.com" target="_blank">中文在线不卡视频</a>| <a href="http://ssni888.com" target="_blank">亚洲黄色片网站</a>| <a href="http://sikixixw12.com" target="_blank">亚洲欧美国产视频</a>| <a href="http://137177.com" target="_blank">久久久久国产精品一区</a>| <a href="http://z10669.com" target="_blank">国产精品卡一卡二</a>| <a href="http://tutu80.com" target="_blank">日韩亚洲欧美中文三级</a>| <a href="http://51jieyanla.com" target="_blank">久久久久久69</a>| <a href="http://avtb2120.com" target="_blank">午夜精品一区二区三区在线视 </a>| <a href="http://yc7878.com" target="_blank">久久不射2019中文字幕</a>| <a href="http://aijiashe.com" target="_blank">免费欧美高清视频</a>| <a href="http://689558.com" target="_blank">欧美永久精品</a>| <a href="http://414670.com" target="_blank">国产精品日韩在线一区</a>| <a href="http://sdsankeguo.com" target="_blank">午夜精品久久久</a>| <a href="http://www-14333.com" target="_blank">欧美专区日韩专区</a>| <a href="http://shiyoudiban.com" target="_blank">91久久亚洲</a>| <a href="http://baostat.com" target="_blank">欧美一级精品大片</a>| <a href="http://xzvaz.com" target="_blank">在线综合视频</a>| <a href="http://9xxpp.com" target="_blank">国产精品国产三级国产专区53</a>| <a href="http://4123123.com" target="_blank">亚洲电影第三页</a>| <a href="http://www-8438.com" target="_blank">免费人成精品欧美精品</a>| <a href="http://qkspvip.com" target="_blank">一道本一区二区</a>| <a href="http://335848.com" target="_blank">欧美日韩一区二区三区</a>| <a href="http://7776701.com" target="_blank">制服丝袜激情欧洲亚洲</a>| <a href="http://aqxiangtai.com" target="_blank">亚洲激情视频网</a>| <a href="http://223zzz.com" target="_blank">欧美精品日韩精品</a>| <a href="http://10669p.com" target="_blank">亚洲综合日本</a>| <a href="http://cpddddcc.com" target="_blank">亚洲欧美在线x视频</a>| <a href="http://hicao32.com" target="_blank">国产日韩一区欧美</a>| <a href="http://y87b.com" target="_blank">久久九九久久九九</a>| <a href="http://xxdd51.com" target="_blank">久久精品一区四区</a>| <a href="http://www19898.com" target="_blank">亚洲电影免费在线观看</a>| <a href="http://xianqyd.com" target="_blank">欧美福利一区二区</a>| <a href="http://poqsoft.com" target="_blank">欧美日韩一区二区在线播放</a>| <a href="http://xy3977.com" target="_blank">亚洲天堂av高清</a>| <a href="http://tom3958.com" target="_blank">亚洲伊人色欲综合网</a>| <a href="http://xy3977.com" target="_blank">麻豆精品在线播放</a>| <a href="http://smdzs.com" target="_blank">免费91麻豆精品国产自产在线观看</a>| <a href="http://www278999.com" target="_blank">国产乱理伦片在线观看夜一区</a>| <a href="http://1392266.com" target="_blank">久久成人精品视频</a>| <a href="http://quanfadq.com" target="_blank">蜜桃av噜噜一区</a>| <a href="http://www-14333.com" target="_blank">一本色道久久综合</a>| <a href="http://3dmh133.com" target="_blank">久久er精品视频</a>| <a href="http://nmbgbc.com" target="_blank">一二三四社区欧美黄</a>| <a href="http://www-yh6.com" target="_blank">香蕉久久国产</a>| <a href="http://785448.com" target="_blank">99亚洲视频</a>| <a href="http://www433ad.com" target="_blank">久久亚洲精品视频</a>| <a href="http://5767j.com" target="_blank">久久久国产一区二区</a>| <a href="http://yssnlp.com" target="_blank">欧美精品导航</a>| <a href="http://www-37277.com" target="_blank">久久在线免费观看视频</a>| <a href="http://603445.com" target="_blank">国产精品一区=区</a>| <a href="http://y65o.com" target="_blank">最新国产成人在线观看</a>| <a href="http://huaihuaihuai.com" target="_blank">国产欧美日韩不卡</a>| <a href="http://wanshunpu.com" target="_blank">日韩小视频在线观看</a>| <a href="http://my7877.com" target="_blank">亚洲成在线观看</a>| <a href="http://cabenn.com" target="_blank">香蕉久久久久久久av网站</a>| <a href="http://azaz7.com" target="_blank">宅男精品视频</a>| <a href="http://2061851.com" target="_blank">欧美另类高清视频在线</a>| <a href="http://bocai4488.com" target="_blank">欧美1区免费</a>| <a href="http://www-90567.com" target="_blank">国产一区二区日韩精品欧美精品</a>| <a href="http://917729.com" target="_blank">亚洲免费av片</a>| <a href="http://haochen072.com" target="_blank">亚洲视频1区</a>| <a href="http://hlyjh.com" target="_blank">欧美日韩一区二区视频在线</a>| <a href="http://c7lc.com" target="_blank">亚洲国产日韩欧美在线动漫</a>| <a href="http://zw1019.com" target="_blank">亚洲高清在线</a>| <a href="http://244223.com" target="_blank">欧美大胆a视频</a>| <a href="http://fobdoer.com" target="_blank">夜久久久久久</a>| <a href="http://avtt0.com" target="_blank">午夜久久一区</a>| <a href="http://302262.com" target="_blank">黄色亚洲精品</a>| <a href="http://jybiotek.com" target="_blank">久久久综合网站</a>| <a href="http://www-988900.com" target="_blank">亚洲高清免费视频</a>| <a href="http://951738.com" target="_blank">99国产精品久久久久久久成人热</a>| <a href="http://56qn.com" target="_blank">欧美高清视频免费观看</a>| <a href="http://394141.com" target="_blank">亚洲欧洲在线看</a>| <a href="http://ydpszcn.com" target="_blank">亚洲一区二区久久</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>