锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美成人午夜剧场免费观看,午夜欧美大片免费观看,国产精品国产一区二区http://www.shnenglu.com/skyscribe/zh-cnFri, 03 Oct 2025 20:12:30 GMTFri, 03 Oct 2025 20:12:30 GMT60杞Щ鍒癵ithubhttp://www.shnenglu.com/skyscribe/archive/2012/02/29/move-to-octopress.htmlskyscribeskyscribeWed, 29 Feb 2012 14:52:00 GMThttp://www.shnenglu.com/skyscribe/archive/2012/02/29/move-to-octopress.htmlhttp://www.shnenglu.com/skyscribe/comments/166817.htmlhttp://www.shnenglu.com/skyscribe/archive/2012/02/29/move-to-octopress.html#Feedback0http://www.shnenglu.com/skyscribe/comments/commentRss/166817.htmlhttp://www.shnenglu.com/skyscribe/services/trackbacks/166817.html
鎰熷叴瓚g殑璇風Щ姝? http://skyscribe.github.com

skyscribe 2012-02-29 22:52 鍙戣〃璇勮
]]>
ruby瀛︿範絎旇銆婁簩銆?/title><link>http://www.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-1.html</link><dc:creator>skyscribe</dc:creator><author>skyscribe</author><pubDate>Sun, 19 Feb 2012 11:29:00 GMT</pubDate><guid>http://www.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-1.html</guid><wfw:comment>http://www.shnenglu.com/skyscribe/comments/165993.html</wfw:comment><comments>http://www.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-1.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/skyscribe/comments/commentRss/165993.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/skyscribe/services/trackbacks/165993.html</trackback:ping><description><![CDATA[ruby鐨刡locks鍜宑losure鐗規ф槑鏄炬湁鍒簬鍏跺畠鐨勮璦錛屽叾closure鏈韓鏄痳eal closure錛屾墍緇戝畾鐨刢ontext鏄叡浜殑鑰岄潪copy錛屽叾璁捐鎬濊礬鍜宭isp鐨勭浉鍚岋紱blocks鏈韓鍒欏彲浠ョ敤浜庡疄鐜癱losure銆備簩鑰呯殑鍏崇郴濡備笅鎵榪?錛?a >鏉ユ簮</a>錛?br /> <blockquote><br /> <div><strong>Yukihiro Matsumoto</strong>: You can reconvert a closure back into a block, so a closure can be used anywhere a block can be used. Often, closures are used to store the status of a block into an instance variable, because once you convert a block into a closure, it is an object that can by referenced by a variable. And of course closures can be used like they are used in other languages, such as passing around the object to customize behavior of methods. If you want to pass some code to customize a method, you can of course just pass a block. But if you want to pass the same code to more than two methods -- this is a very rare case, but if you really want to do that -- you can convert the block into a closure, and pass that same closure object to multiple methods.<br /> </div> </blockquote> <div> <ul> <li> <h2>7縐嶇粨鏋?/h2> </li> </ul> <blockquote> <ul> <li>block鏂瑰紡3縐?/li> </ul> <blockquote> <ul> <li>闅愬紡浼犲叆錛屽唴閮ㄧ敤yield璋冪敤</li> </ul> <blockquote>   <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000FF; ">def</span><span style="color: #000000; "> thrice<br />   </span><span style="color: #0000FF; ">yield</span><span style="color: #000000; "><br />   </span><span style="color: #0000FF; ">yield</span><span style="color: #000000; "><br />   </span><span style="color: #0000FF; ">yield</span><span style="color: #000000; "><br /> end<br /> <br /> x</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br /> thrice {x</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">2</span><span style="color: #000000; ">}</span></div> <span style="color: #000000; "></span></div> </blockquote> <ul> <li>&block鍙傛暟浼犲叆錛屽唴閮ㄧ洿鎺ユ搷浣?amp;block</li> </ul> <blockquote> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000FF; ">def</span><span style="color: #000000; "> six_times(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">block)<br />   thrice(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">block)<br />   thrice(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">block)<br /> end<br />  <br /> x </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">4</span><span style="color: #000000; "><br /> six_times { x </span><span style="color: #000000; ">+=</span><span style="color: #000000; "> </span><span style="color: #000000; ">10</span><span style="color: #000000; "> }</span></div> </blockquote> <ul> <li>&block浼犲叆錛屼繚瀛榖lock涓哄彉閲忥紝鐒跺悗璋冪敤block.call</li> </ul> <blockquote> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000FF; ">def</span><span style="color: #000000; "> save_for_later(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">b)<br />   @saved </span><span style="color: #000000; ">=</span><span style="color: #000000; "> b  </span><span style="color: #008000; ">#</span><span style="color: #008000; "> Note: no ampersand! This turns a block into a closure of sorts.</span><span style="color: #008000; "><br /> </span><span style="color: #000000; ">end<br />  <br /> save_for_later { puts </span><span style="color: #800000; ">"</span><span style="color: #800000; ">Hello!</span><span style="color: #800000; ">"</span><span style="color: #000000; "> }<br /> puts </span><span style="color: #800000; ">"</span><span style="color: #800000; ">Deferred execution of a block:</span><span style="color: #800000; ">"</span><span style="color: #000000;"><br /> @saved.call<br /> @saved.call<br /> </span></div> </blockquote><blockquote>榪欓噷鐨剆aved淇濆瓨涓簃ain瀵硅薄鐨勪竴涓垚鍛橈紝鍚庤竟瀹炵幇寤惰繜璋冪敤銆?br /> </blockquote></blockquote> <ul> <li>Proc.new/proc</li> </ul> <blockquote> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000; ">@saved_proc_new </span><span style="color: #000000; ">=</span><span style="color: #000000; "> Proc.new { puts </span><span style="color: #800000; ">"</span><span style="color: #800000; ">I'm declared with Proc.new.</span><span style="color: #800000; ">"</span><span style="color: #000000; "> }<br /> @saved_proc </span><span style="color: #000000; ">=</span><span style="color: #000000; "> proc { puts </span><span style="color: #800000; ">"</span><span style="color: #800000; ">I'm declared with proc.</span><span style="color: #800000; ">"</span><span style="color: #000000; "> }<br /> <br /> @saved_proc_new.call<br /> @saved_proc.call</span></div> </blockquote> <ul> <li>lambda</li> </ul> <blockquote> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000; ">@saved_lambda </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">lambda</span><span style="color: #000000; "> { puts </span><span style="color: #800000; ">"</span><span style="color: #800000; ">I'm declared with lambda.</span><span style="color: #800000; ">"</span><span style="color: #000000; "> }<br /> @saved_lambda.call</span></div> </blockquote> <ul> <li>method</li> </ul> <blockquote> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000FF; ">def</span><span style="color: #000000; "> some_method<br />   puts </span><span style="color: #800000; ">"</span><span style="color: #800000; ">I'm declared as a method.</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /> end<br /> @method_as_closure </span><span style="color: #000000; ">=</span><span style="color: #000000;"> method(:some_method)<br /> <br /> </span></div> </blockquote></blockquote> <ul> <li> <h2>鐗圭偣鍜屽樊寮?/h2> </li> <ul> <li> <h2>return琛屼負</h2> </li> </ul> </ul> <blockquote><blockquote>褰撳搴旂殑block閲岃竟鍖呭惈return鐨勬椂鍊欙紝涓婅堪7涓柟寮忔湁浜涜鐨勪笉鍚岋細<br /> <ul> <li>lambda/method琛ㄧ幇鍑虹湡姝g殑closure琛屼負錛屼粎浠呰繑鍥瀋losure鏈韓錛涘閮ㄨ皟鐢ㄦ帶鍒舵祦涓嶅彈褰卞搷錛岀戶緇瓂ield鎴栬卌all鐨勪笅涓璇彞鎵ц</li> <li>鍏跺畠鍑犵浼氳煩鍑哄閮ㄨ皟鐢ㄨ呯殑鎺у埗嫻侊紝鍗硆eturn鍑鴻皟鐢ㄨ咃紝yield/call涔嬪悗鐨勪篃涓嶄細鍐嶆墽琛岋紝鐩存帴璺沖嚭鍒版渶榪戠殑end澶?/li> </ul> <p><br /> </p> </blockquote> <ul> <li> <h3>arity - 鍙傛暟涓暟鏍¢獙</h3> </li> </ul> <blockquote>瀵逛簬璋冪敤鐐圭殑鍙傛暟媯鏌ワ紝鍛堢幇濡備笅琛屼負錛?br /> <ul> <li>lambda/method涓ユ牸鏍¢獙鍙傛暟鐨勪釜鏁幫紝濡傛灉涓嶅尮閰嶅洖鎶涘嚭寮傚父</li> <li>鍏跺畠鍑犱釜涓嶆鏌ュ弬鏁頒釜鏁?/li> </ul> <p><br /> </p> </blockquote></blockquote> <ul> <li> <h2>鎬葷粨</h2> </li> </ul> <blockquote>lambda/method鏂瑰紡鍛堢幇瀹屽鐨刢losure琛屼負錛宺eturn涔嬪悗緇х畫涓嬩竴嫻佺▼錛屽浜庡疄闄呬紶鍏ュ弬鏁頒釜鏁頒細鍦ㄨ皟鐢ㄧ偣媯鏌ワ紱proc/blocks鏂瑰紡鍦╮eturn鐨勬椂鍊欑洿鎺ヨ繑鍥炰簡澶栭儴鐨勫嚱鏁版垨鑰卋lock錛屽浜庝紶鍏ョ殑鍙傛暟涓暟涔熸病鏈夋墽琛屾鏌ャ?br /> <br /> </blockquote>鍙傝冿細<a >http://innig.net/software/ruby/closures-in-ruby</a> <br />浠ヤ笂緇撹楠岃瘉浜庢渶鏂扮殑ruby1.9.3錛屽拰閾炬帴涓殑緇撹鏈変簺璁鎬笉鍚岋紱ruby1.8涓殑proc鍑芥暟鍙兘鏈変笉鍚岀殑琛屼負銆?br /> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #000000;"></span></div> </div><img src ="http://www.shnenglu.com/skyscribe/aggbug/165993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/skyscribe/" target="_blank">skyscribe</a> 2012-02-19 19:29 <a href="http://www.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-1.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>ruby瀛︿範絎旇銆婁竴銆?/title><link>http://www.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-0.html</link><dc:creator>skyscribe</dc:creator><author>skyscribe</author><pubDate>Sun, 19 Feb 2012 07:58:00 GMT</pubDate><guid>http://www.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-0.html</guid><wfw:comment>http://www.shnenglu.com/skyscribe/comments/165976.html</wfw:comment><comments>http://www.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-0.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/skyscribe/comments/commentRss/165976.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/skyscribe/services/trackbacks/165976.html</trackback:ping><description><![CDATA[鐪嬪緱鍐嶅涔熶笉濡傝嚜宸卞姩鎵嬭瘯錛屾渶榪戞湁闂插氨鎵撶畻璁ょ湡鐮旂┒涓涓媟uby璇█浜嗐?a >Pragmatic programmer</a>涓錛岄渶瑕佷竴騫村涓闂ㄦ柊璇█涓閬嶆敼閫犳濇兂錛屽幓騫存祬嫻呯殑瀛︿簡javascript鐨勭毊姣涳紝浠婂勾鍙互鐪嬬湅ruby榪? 涓湁lisp涔嬮鐨凮O璇█浜嗐?br /> <br /> <ul> <li>瀹夎鐜</li> </ul> 絎竴涓兂鍒扮殑鏄痑pt-get鏉ヤ笅杞戒簡錛屽緱鍒扮殑鏄竴涓氦浜掑紡瑙f瀽鍣ㄥ拰緙栬瘧鍣ㄣ傚拰python鐨勬瘮杈冪被浼鹼紝涓嶈繃ruby鐨勪氦浜掔▼搴忔槸涓崟鐙殑紼嬪簭鍙仛irb銆?br /> <blockquote> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000; ">skyscribe:</span><span style="color: #000000; ">~</span><span style="color: #000000; ">$ ruby </span><span style="color: #000000; ">--</span><span style="color: #000000; ">version<br /> ruby </span><span style="color: #000000; ">1.8</span><span style="color: #000000; ">.</span><span style="color: #000000; ">7</span><span style="color: #000000; "> (</span><span style="color: #000000; ">2011</span><span style="color: #000000; ">-</span><span style="color: #000000; ">06</span><span style="color: #000000; ">-</span><span style="color: #000000; ">30</span><span style="color: #000000; "> patchlevel </span><span style="color: #000000; ">352</span><span style="color: #000000; ">) [i686</span><span style="color: #000000; ">-</span><span style="color: #000000; ">linux]<br /> skyscribe:</span><span style="color: #000000; ">~</span><span style="color: #000000; ">$ irb<br /> irb(main):</span><span style="color: #000000; ">001</span><span style="color: #000000; ">:</span><span style="color: #000000; ">0</span><span style="color: #000000; ">></span><span style="color: #000000; "> puts </span><span style="color: #000000; ">"</span><span style="color: #000000; ">hello</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br /> hello<br /> </span><span style="color: #000000; ">=></span><span style="color: #000000;"> nil<br /> <br /> </span></div> </blockquote>鍙儨寰楀埌鐨勪笉鏄瘮杈冩柊鐨勭増鏈?br /> <br /> 涓? 榪囧緢蹇兂璧風炕緲?a > wiki</a>錛岃繕鏄敤rvm鏂逛究鐨勫銆傛暀紼嬫瘮杈冪畝鍗曪紝鍙傝冨畠鐨?a >quick installation guide</a>灝卞彲銆傜涓嬈″皾璇曠殑鏃跺欑敤apt-get瀹夎浜嗘病鏈塸urge錛屽鑷存繪槸瀹夎鍒皉oot鐢ㄦ埛閫? 鎴?#8220;permission denied"鐨勯棶棰樸?br /> <br /> 瀹夎濂戒箣鍚庯紝鎵鏈夌殑涓滆タ閮藉湪$HOME/.rvm涓嬭竟錛屾瘮杈冨共鑴嗐?br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;"><br /> </span><blockquote><span style="color: #000000; ">skyscribe:</span><span style="color: #000000; ">~</span><span style="color: #000000; ">$ rvm install </span><span style="color: #000000; ">1.9</span><span style="color: #000000; ">.</span><span style="color: #000000; ">3</span><span style="color: #000000;"></span><br /> <span style="color: #000000; ">skyscribe:</span><span style="color: #000000; ">~</span><span style="color: #000000;">$ rvm list</span><br /> <span style="color: #000000;"></span><br /> <span style="color: #000000;">rvm rubies</span><br /> <span style="color: #000000;"></span><br /> <span style="color: #000000; ">   ruby</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1.9</span><span style="color: #000000; ">.</span><span style="color: #000000; ">3</span><span style="color: #000000; ">-</span><span style="color: #000000;">p125 [ i686 ]</span><br /> <span style="color: #000000;"></span><br /> <span style="color: #000000; "># Default ruby not </span><span style="color: #0000FF; ">set</span><span style="color: #000000; ">. Try </span><span style="color: #000000; ">'</span><span style="color: #000000; ">rvm alias create default <ruby></span><span style="color: #000000; ">'</span><span style="color: #000000;">.</span><br /> <span style="color: #000000;"></span><br /> <span style="color: #000000; "># </span><span style="color: #000000; ">=></span><span style="color: #000000; "> </span><span style="color: #000000; ">-</span><span style="color: #000000;"> current</span><br /> <span style="color: #000000; "># </span><span style="color: #000000; ">=*</span><span style="color: #000000; "> </span><span style="color: #000000; ">-</span><span style="color: #000000; "> current </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">default</span><span style="color: #000000;"></span><br /> <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: #0000FF; ">default</span><span style="color: #000000;"></span><br /> <span style="color: #000000;"></span><br /> <span style="color: #000000; ">skyscribe:</span><span style="color: #000000; ">~</span><span style="color: #000000; ">$ rvm alias create </span><span style="color: #0000FF; ">default</span><span style="color: #000000; "> ruby</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1.9</span><span style="color: #000000; ">.</span><span style="color: #000000; ">3</span><span style="color: #000000; ">-</span><span style="color: #000000;">p125</span><br /> <span style="color: #000000; ">Creating alias </span><span style="color: #0000FF; ">default</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> ruby</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1.9</span><span style="color: #000000; ">.</span><span style="color: #000000; ">3</span><span style="color: #000000; ">-</span><span style="color: #000000;">p125.</span><br /> <span style="color: #000000; ">Recording alias </span><span style="color: #0000FF; ">default</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> ruby</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1.9</span><span style="color: #000000; ">.</span><span style="color: #000000; ">3</span><span style="color: #000000; ">-</span><span style="color: #000000;">p125.</span><br /> <span style="color: #000000; ">Creating </span><span style="color: #0000FF; ">default</span><span style="color: #000000; "> links</span><span style="color: #000000; ">/</span><span style="color: #000000;">files</span><br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; "></span><span style="color: #000000; "><div>skyscribe:~$ cat >> ~/.bashrc <br />[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM into a shell session.<br />^C<br />skyscribe:~$ bash<br />skyscribe:~$ rvm use 1.9.3<br />Using /home/skyscribe/.rvm/gems/ruby-1.9.3-p125<br />skyscribe:~$ ruby -v<br />ruby 1.9.3p125 (2012-02-16 revision 34643) [i686-linux]</div></span></div><br /> <span style="color: #000000; "></span></blockquote></div> <br /> <ul> <li>鐔熸倝鍜屼笂鎵?/li> </ul> 瀹樻柟鐨勬枃妗f槸鏈濂界殑鍙傝冿紝鎺ㄨ崘<a >ruby koans</a>,涓嬭澆涓嬫潵錛岃В鍘嬪悗錛屾槸涓吀鍨嬬殑TDD瀛︿範鏉愭枡錛屼笉鏂繍琛?br /> <blockquote> <div> <div> ruby path_to_enlightenment.rb</div></div></blockquote><div><div>koans 浼氶亶鍘嗘瘡涓涓猼est case鐩村埌鍏ㄩ儴瀹屾瘯錛屽ぇ姒傞渶瑕?涓皬鏃朵互涓婄殑鏃墮棿鏂瑰彲鍏ㄩ儴瀹屽伐銆備腑闂寸殑娉ㄩ噴鍜孴HINK ABOUT鐨勯儴鍒嗘瘮杈冩湁鎰忔濓紝鎰熸偀姣旇緝娣卞埢鐨勬槸浠ヤ笅涓浜涚偣錛?br /><blockquote><ul><li>瀹屽畬鍏ㄥ叏鐨凮O錛屾墍鏈変笢瑗跨殕涓哄璞?/li><li>涓ょ鍩烘湰鐨刢ollection錛宧ash鍜宎rray鍩烘湰瀵瑰簲浜巔ython鐨刣ict鍜宎rray</li><li>鍑芥暟璋冪敤鍙互涓嶅繀娣誨姞鎷彿錛岄櫎闈炲彲鑳藉紩鍙戞涔夋垨鑰呰В鏋愰敊璇?/li><li>鍑芥暟鍙傛暟鍙互鍖呭惈block錛屾敮鎸乴ambda鍜宑losure<br /></li><li>bool綾誨瀷鏇寸畝鍗曪紝鍙湁false鍜宯il涓巉alse絳変環錛屽叾浣欏叏閮ㄦ槸true</li><li>鎺у埗緇撴瀯鏈塽nless</li><li>綾誨畾涔夋槸寮鏀懼紡鐨勶紝渚夸簬闈炰鏡鍏ュ紡璁捐錛屽綋鐒朵篃鍙互鍏佽淇敼builtin</li><li>姣忎竴涓璞¢兘鏈塷bject id</li><li>symbol鍜宻tring鍙互浜掔浉杞寲鏋勯?/li><li>method鐨勮皟鐢ㄥ彲浠ョ敤send 鐨勬柟娉曞彂閫乵essage - proxy鍙樺緱鏋佸害瀹規槗</li><li>module鍙互琚玞lass include浠庤屽寘鍚柟娉曪紝 渚夸簬mixin璁捐</li><li>instance variable鍜宑lass variable 瀹氫箟鏂逛究蹇嵎</li><li>regular expresion鐨勫拰python鏋佷負鐩鎬技<br /></li></ul></blockquote></div></div><blockquote><div> </div> </blockquote><img src ="http://www.shnenglu.com/skyscribe/aggbug/165976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/skyscribe/" target="_blank">skyscribe</a> 2012-02-19 15:58 <a href="http://www.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-0.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Unix鏂囨湰澶勭悊涔嬪埄鍣紞awk/gawkhttp://www.shnenglu.com/skyscribe/archive/2011/01/02/awk.htmlskyscribeskyscribeSun, 02 Jan 2011 12:32:00 GMThttp://www.shnenglu.com/skyscribe/archive/2011/01/02/awk.htmlhttp://www.shnenglu.com/skyscribe/comments/137894.htmlhttp://www.shnenglu.com/skyscribe/archive/2011/01/02/awk.html#Feedback0http://www.shnenglu.com/skyscribe/comments/commentRss/137894.htmlhttp://www.shnenglu.com/skyscribe/services/trackbacks/137894.htmlsince 1977錛夈備綔鑰呬腑鏈寮曚漢娉ㄧ洰鐨勫綋灞為紟榧庡ぇ鍚嶇殑Brian W. Kernighan (鍗矺鐨勭畝縐版潵婧愶級銆傜洰鍓嶆墍鐢ㄧ殑鐗堟湰澶у鏄痝awk鎴栬卬awk.

浣滀負涓闂ㄥ井鍨嬩笖瀹屾暣鐨勭紪紼嬭璦錛宎wk鍙互鐢ㄦ暟琛屼唬鐮佸氨瀹屾垚鍏朵粬璇█闇瑕佹暟鍊嶇殑LOC鎵嶈兘瀹屾垚鐨勫伐浣溿傚叾璁捐鍝插涔熸槸姣旇緝鐗規畩鐨勶紝鏍稿績鏄痙ata錛峝riven鐨勶紝騫朵笖閲囩敤浜嗗拰C綾諱技鐨勮娉曟潵緇勭粐銆傚畠鏈鏍稿績鐨勬濇兂搴旇鏄涓嬩袱鐐癸細
  • pattern-action 緇撴瀯 鍊熺敱寮哄ぇ鐨勬鍒欒〃杈懼紡鏉ュ尮閰峱attern錛岀劧鍚庢墽琛宲attern瀵瑰簲鐨勬搷浣?/li>
  • Record/Field 澶勭悊妯″瀷  鎵鏈夌殑杈撳叆鏁版嵁閮芥牴鎹埗瀹氱殑record separator 鍒嗗壊鎴?record, 鐒跺悗娌′竴涓猺ecord鍐嶆牴鎹甪ield separator 鍒嗗壊涓篺ields. POSIX 瀹氫箟鐨?field separator鍙互涓烘鍒欒〃杈懼紡錛岃実awk鍙互鍏佽record separator鍚屾椂涓烘鍒欒〃杈懼紡
寮曞彂鎴戣姳鐐規椂闂存潵浠旂粏鐮旂┒awk鐨勮搗鍥犳槸榪欐牱鐨勶紝鎴戜滑鐨勭▼搴忓湪鍋歱rofiling鐨勬椂鍊欙紝鍙戠幇鍘熸潵鐢╯hell鍐欑殑鑴氭湰鍒嗘瀽涓嬈¤瘽璐圭殑鏃墮棿澶暱銆傚垵鐪嬩簡涓嬮偅涓剼鏈紝澶ф鐨勯昏緫鏄鎵悕鎵鏈夌殑log鏂囦歡錛屾寜鐓ф椂闂存埑灝嗗叧娉ㄧ殑鏃墮棿鎵鑰楄垂鐨勬椂闂存彁鍙栧嚭鏉ワ紝璁$畻騫沖潎鍊鹼紝娉㈠姩絳夋渶緇堢敾鍑烘洸綰垮浘銆?br>
鏁翠綋鐨勮剼鏈湁鍑犱釜閮ㄥ垎錛坧ython錛媌ash錛夛紝澶勭悊涓嬈?0MB鐨刲og鏂囦歡闇瑕佽楄垂40鍒嗛挓锝?涓皬鏃訛紝榪欐樉鐒惰秴鍑轟簡棰勬湡錛涗腑闂翠竴涓鐞嗗緢闀跨殑閮ㄥ垎鏄痝rep鏌愪釜鏃墮棿孌電殑淇℃伅鐒跺悗鎸夌収鎶ヨ〃鏍煎紡鍐欏叆鍒頒腑闂存枃浠朵腑銆傚湪鎯寵兘鍚︿紭鍖栬繖涓鑺傜殑鏃跺欙紝蹇界劧灝辨兂璧蜂簡妯″紡鍖歸厤鏉ワ紙瀛︿範Haskell鐨勬渶娣卞嵃璞★級錛屼簬鏄ぇ鑷寸炕浜嗕竴涓媋wk錛屽彂鐜板緢瀹規槗閫氳繃妯″紡鍖歸厤浣垮緱鎸夎澶勭悊錛屽悓鏃惰褰曚腑闂寸殑淇℃伅錛岃屼竴涓椂闂存鎭板ソ鍜宎wk鐨剅ecord姒傚康鍚誨悎銆?br>
鑺變簡2涓皬鏃剁爺璇諱簡涓媋wk鐨勫嚱鏁拌娉曪紝鑷畾涔夎嚜宸辯殑鏃墮棿鎴彇鍑芥暟錛坓awk鐨剆trftime寰堟湁鐢紝灝ゅ叾鎴戜滑鍙戠幇璁板綍鏈夎煩璺冭鑷姩琛ュ叏涓棿鐨勬暟鎹褰曟椂錛夛紝閫氳繃涓変釜pattern鎴彇闇瑕佺殑淇℃伅錛?0鍒嗛挓鍐欏嚭鏉wk鐨勪唬鐮佹潵銆?br>
鎵騫哥殑鏄紝鍏跺畠鐨剆hell鑴氭湰閮戒笉闇瑕佷換浣曟敼鍔紝閲嶆柊璺戜竴嬈★紝3s灝卞鐞嗗畬浜嗗師鏉?0MB鐨勬枃浠訛紝鐪嬫潵榪欑偣鏃墮棿鎶曞叆榪樻槸鐩稿綋鍊煎緱鐨勩?br>
鏈夊叴瓚g殑鍙弬鑰冿細
     http://www.gnu.org/manual/gawk/gawk.html

PS錛歛wk鐨勫彟涓浣滆?a >Winberger 渚涜亴浜巊oogle銆?br> 



skyscribe 2011-01-02 20:32 鍙戣〃璇勮
]]>
GCC4.5鐨刾rofile modehttp://www.shnenglu.com/skyscribe/archive/2010/05/09/GCC4_5ProfileMode.htmlskyscribeskyscribeSun, 09 May 2010 07:16:00 GMThttp://www.shnenglu.com/skyscribe/archive/2010/05/09/GCC4_5ProfileMode.htmlhttp://www.shnenglu.com/skyscribe/comments/114920.htmlhttp://www.shnenglu.com/skyscribe/archive/2010/05/09/GCC4_5ProfileMode.html#Feedback0http://www.shnenglu.com/skyscribe/comments/commentRss/114920.htmlhttp://www.shnenglu.com/skyscribe/services/trackbacks/114920.html榪欓噷錛夛紝
榪樺鍔犱簡涓涓柊鐨刾rofile妯″紡錛堝皻澶勪簬璇曢獙闃舵錛夛紝鍙互鏍規嵁紼嬪簭榪愯鐘舵佺粰鍑哄叧浜嶴TL浣跨敤鐨勪竴浜涗紭鍖栧緩璁?br>
鍙傜湅濡備笅鐨勬弿榪幫細
  • An experimental profile mode has been added. This is an implementation of many C++ standard library constructs with an additional analysis layer that gives performance improvement advice based on recognition of suboptimal usage patterns. For example,

    #include <vector>
    int main()
    {
    std::vector<int> v;
    for (int k = 0; k < 1024; ++k)
    v.insert(v.begin(), k);
    }

    When instrumented via the profile mode, can return suggestions about the initial size and choice of the container used as follows:

    vector-to-list: improvement = 5: call stack = 0x804842c ...
    : advice = change std::vector to std::list
    vector-size: improvement = 3: call stack = 0x804842c ...
    : advice = change initial container size from 0 to 1024

    These constructs can be substituted for the normal libstdc++ constructs on a piecemeal basis, or all existing components can be transformed via the -D_GLIBCXX_PROFILE macro.

榪欎釜profile mode鐨勪富瑕佷綔鐢ㄥ氨鏄牴鎹唬鐮佸疄闄呰繍琛岀姸鍐電粰鍑哄叧浜嶴TL鐨勪嬌鐢ㄤ紭鍖栧緩璁傛湁鐐歸仐鎲劇殑鏄紝璇rofile鏂規硶鏄痠ntrusive鐨勶紝蹇呴』娣誨姞-D_GLBCXX_PROFILE鏉ラ噸鏂扮紪璇戞墍鏈夌殑浠g爜銆?br>
Profile mode鐨勬彁鍑烘簮浜?9騫碈GO鐨勪竴綃?a >paper錛屼綔鑰呴噷杈瑰嚭鐜頒簡鍗庝漢鐨勫悕瀛楋紙鏍規嵁鎷奸煶鏉ュ垽鏂級;浣滆呭湴鍧濉殑鏄劇劧鏄疨urdue澶у鐨勶細
    Dept. of Comput. Sci., Purdue Univ., West銆?br>
GCC鐨凱rofiler瀵笴++鐨勬敮鎸佷竴璐仠鐣欏湪鍜孋鍚屾牱鐨勬按騫籌紱鐢變簬C++妯℃澘鏈哄埗鍜孫O鐨勫瓨鍦ㄤ嬌寰楀緢澶氭椂鍊欏垎鏋恜rofiling緇撴灉鐨勬剰涔夎澶уぇ鍓婂急銆?br>榪欎釜閽堝STL鐨刾rofile mode榪樻槸寰堝煎緱鏈熷緟鐨勩?br>



skyscribe 2010-05-09 15:16 鍙戣〃璇勮
]]>
boost.cmake: 鏂逛究瑙e喅boost鐨勫崌綰ч棶棰?/title><link>http://www.shnenglu.com/skyscribe/archive/2010/05/09/114919.html</link><dc:creator>skyscribe</dc:creator><author>skyscribe</author><pubDate>Sun, 09 May 2010 06:59:00 GMT</pubDate><guid>http://www.shnenglu.com/skyscribe/archive/2010/05/09/114919.html</guid><wfw:comment>http://www.shnenglu.com/skyscribe/comments/114919.html</wfw:comment><comments>http://www.shnenglu.com/skyscribe/archive/2010/05/09/114919.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/skyscribe/comments/commentRss/114919.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/skyscribe/services/trackbacks/114919.html</trackback:ping><description><![CDATA[浠ュ墠甯哥敤boost鐨勪竴浜涘簱錛岀敱浜庨」鐩嚜韜敤cmake緇勭粐build銆?br>boost姣忔鍗囩駭涔嬪悗錛岄噸鏂扮敤bjam緙栬瘧涓嬈¢兘寰堟槸涓嶄究錛堟煇浜涘鉤鍙幫紝鐢ㄩ粯璁ら夐」緙栬瘧鏈変簺闂錛屽熀鏈畨瑁呬笉鎴愬姛錛夈?br><br>鏈榪戞墠鍙戠幇boost鐨刢make鐗堟湰宸茬粡鐙珛鍑烘潵浜嗭紝瀵逛簬浣跨敤cmake鐨勭敤鎴瘋岃█錛岃繖閲屾槸涓笉閿欑殑閫夋嫨銆?br>欏圭洰<a >涓婚〉</a>鐨勬枃妗e緢鏄竻鏅幫紝鏈鏂扮殑鐗堟湰鏄?.41 (鐗堟湰鍙峰搴旂殑鍩烘湰灝辨槸鍏秛pstream鐨刡oost鐗堟湰鍙?銆?br>婧愪唬鐮佹槸鐢╣it緇勭粐鐨勶紝瀵逛簬Linux鐢ㄦ埛鑰岃█鏇村姞鏂逛究銆?br><br>寮曠敤鍏朵富欏典笂鐨勪竴鍙ヨ瘽錛?br> <div style="margin-left: 40px;">Boost.<a class="reference external" >CMake</a> (or <a class="reference internal" ><em> alt.boost</em> </a>) is the boost distribution that all the cool kids are using. </div> <br>CMake + <a >GIT</a> +<a >Spinx</a> 紜疄澶熼叿浜嗐?br><br><span style="font-family: 寰蔣闆呴粦;">緙栬瘧璧鋒潵鍙互鍏呭垎鍒╃敤寮哄ぇ鐨凜Make浜嗭細</span><br> <div style="margin-left: 40px;"> <pre>git clone git://gitorious.org/boost/cmake.git src<br>cd src<br>git checkout <TAG>    //TAG==1.41.0.cmake0<br>mkdir bld<br>cd bld/<br>cmake ../<br></pre> </div> <pre>濡傛灉闇瑕佹寜闇緙栬瘧鏌愪簺搴擄紝鍙渶鐢╩ake edit_cache淇敼cache鍗沖彲銆?br></pre> <div style="margin-left: 40px;"> </div><img src ="http://www.shnenglu.com/skyscribe/aggbug/114919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/skyscribe/" target="_blank">skyscribe</a> 2010-05-09 14:59 <a href="http://www.shnenglu.com/skyscribe/archive/2010/05/09/114919.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>VIM涓嬪疄鐜板C++ STL鐨処ntelliSensehttp://www.shnenglu.com/skyscribe/archive/2010/01/10/105346.htmlskyscribeskyscribeSun, 10 Jan 2010 10:28:00 GMThttp://www.shnenglu.com/skyscribe/archive/2010/01/10/105346.htmlhttp://www.shnenglu.com/skyscribe/comments/105346.htmlhttp://www.shnenglu.com/skyscribe/archive/2010/01/10/105346.html#Feedback0http://www.shnenglu.com/skyscribe/comments/commentRss/105346.htmlhttp://www.shnenglu.com/skyscribe/services/trackbacks/105346.html浠ュ墠灝濊瘯榪囧湪vim涓嬮厤緗甋TL鐨処ntellisense鏇劇粡娌℃湁鎴愬姛錛涙渶榪戞湁絀哄垰濂戒粩緇嗙湅浜嗕笅vim鐨勪竴浜涚浉瀵歸珮綰х殑manual錛?/p>

鎬葷畻灝?a >OmniCppComplete涓婚〉涓婄殑鏁堟灉緇欏紕浜嗗嚭鏉ワ紙榪欓噷錛夈?/p>

鏍規嵁鍏秇elp鎻愮ず涓姝ヤ竴姝ユ潵(瑁呭畬浜唎mnicppcomplete涔嬪悗錛屽彲浠?help omnicppcomplete)錛?/p>

  • 棣栧厛闇瑕佹湁ctags錛屽茍涓斿繀欏繪槸Exuberant ctags錛屾垜鐨刄buntu涓婂凡緇忔槸鏈鏂扮増浜嗭細

  • skyscribe@skyscribe:~/study/vim/pics$ ctags --version
    
    Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
    
      Compiled: Aug  6 2009, 17:06:22
    
      Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net
    
      Optional compiled features: +wildcards, +regex
    
  • 鍦?~/.vimrc 閲岃竟鍔犲叆autoload taglist鍔熻兘錛屼負浜嗘柟渚胯嚜鍔ㄦ洿鏂板綋鍓峵ags錛岃緗竴涓揩鎹烽敭錛?a >榪欓噷錛夛細

map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
source ~/.vim/my.vim

 

榪欓噷鐨勮嚜鍔ㄥ姞杞藉凡鏈塿im鐨勫姛鑳斤紝灝辯敤涓涓獀im鑴氭鏉ュ疄鐜?(鍙傝?vim :help glob緇欑殑渚嬪瓙)錛?/p>

cat ~/.vim/my.vim 
let tagfiles = glob("`find ~/.vim/tagfiles -name tags -print`")
let &tags = substitute(tagfiles, "\n", ",", "g")

 

浠ュ悗闇瑕佹柊鐨則aglist錛屽彧闇瑕佹斁鍦▇/.vim/tagfiles鐩綍涓嬪氨濂戒簡銆?/p>

vim鍚姩鐨勬椂鍊欙紝浼氳嚜鍔ㄦ墽琛寏/.vimrc錛屼粠鑰岃皟鐢╩y.vim錛屽皢浜嬪厛鍑嗗濂界殑taglist鏇存柊榪涘幓錛涜繖閲屼竴鑸斁涓浜涗笉澶彉鍖栫殑闈欐佸ご鏂囦歡tag灝卞彲浠ヤ簡銆?/p>

  • 瑕佹湁STL鐨刬ntelliSense錛岃嚜鐒惰鏈塖TL C++鐨則ags database浜嗭紝榪欓噷闇瑕佺敓鎴愪箣銆?/h1>

鏍規嵁涓婁竴姝ョ殑鎯緥錛岄渶瑕佺敓鎴愪竴涓猼ags鏂囦歡錛屾斁鍦▇/.vim/tagfiles/鐨勬煇涓瓙鐩綍涓嬶細

mkdir -p ~/.vim/tagfiles/gcc<ver>/
ls 鈥搇 /usr/include/c++/

 

榪欓噷闇瑕佸皢ver鎹㈡垚褰撳墠緋葷粺鐨刲ibstdc++鐗堟湰錛孶buntu 9.10涓婄殑鏄?.4.1.

  • 鐢ㄤ笂杈圭殑鍛戒護鐢熸垚瀵瑰簲鐨則ags鏂囦歡錛?/h1>

ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . -o ~/.vim/tagfiles/gcc4.4/tags /usr/include/c++/4.4

鍐欎竴涓畝鍗曠殑c++紼嬪簭錛屽湪Insert Mode涓嬶紝Ctrl+X錛?Ctrl+P錛屽彂鐜板茍涓嶈兘宸ヤ綔錛屼粈涔堟彁紺轟篃娌℃湁錛涘垵姝ユ鐤戞槸瀵瑰簲鐨則ag鏂囦歡涓嶅銆?/p>

騫稿ソ鏃╂湁浜哄皾璇曡繃浜嗭紝緇欏嚭浜嗕竴縐嶅姙娉?榪樻槸榪欓噷錛夛紝鍙儨浠栫殑鏂規硶鎴戣瘯浜嗕笉琛岋紝涓嶈繃宸茬粡鍙互鍊熺敤浠栫殑鎬濊礬浜嗭細

    • 灝?usr/include/c++/4.4.1/鐨勫唴瀹瑰叏閮ㄦ嫹璐濆埌涓涓洰褰曚笅錛?/li>
      mkdir gcc4.4
      cp -R /usr/include/c++/4.4 ./
    • 鍐欎竴涓剼姝ユ浛鎹㈡墍鏈夌殑NAMESPACE瀹忓畾涔?榪欓噷鐢╯ed瀹屾垚瀹忔浛鎹紝涓轟簡閬垮厤榪囦簬鏅︽訂錛岃繕鏄斁鍦ㄤ竴涓復鏃剁殑鑴氭鏂囦歡閲岃竟鏉ワ紝渚夸簬璋冭瘯鍚?錛?/li>
cat generate_sed.sh 
#!/bin/bash
if [ $# -eq 0 ];then
    dir=.
else
    dir=$1
fi
#Substitute scripts
cat > .edit.sed <<- EOF
s/\b_GLIBCXX_BEGIN_NAMESPACE\b\s*\(\s*(\w+)\s*\)/namespace \1{/g
s/_GLIBCXX_BEGIN_NESTED_NAMESPACE\s*\(\s*std\s*,\s*_GLIBCXX_STD_[DP]\s*\)/namespace std{/g
s/\b_GLIBCXX_END_NAMESPACE\b/}/g
s/\b_GLIBCXX_END_(NESTED_\?NAMESPACE\b/}/g
EOF
count=0
cols=`tput cols`
cols=`echo "$cols - 8"|bc`
for file in `find $dir -type f`;do
    if [ "T"$file != "T"$0 ];then
        sed -nf ".edit.sed" $file
        count=`echo "$count+1"|bc`
        echo -ne "="
        if [ `echo "$count%$cols"|bc` -eq 0 ];then
            echo " $count"
        fi
    fi
done
echo "Processed $count files!"
rm -fr .edit.sed
# Generate ctag file
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q 
echo "generated tag file!"
    • 鍐嶇敓鎴恡ag錛?/li>
skyscribe@skyscribe:~/libstdc++/gcc4.4$ ./generate_sed.sh . 
==================================================================================================== 100
==================================================================================================== 200
==================================================================================================== 300
==================================================================================================== 400
==================================================================================================== 500
==================================================================================================== 600
===============================================================Processed 663 files!
generated tag file!
ls tags -lh

-rw-r--r-- 1 skyscribe skyscribe 4.2M 2010-01-10 18:21 tags

cp tags ~/.vim/tagfiles/gcc4.4/

 

  • 鍒拌繖閲屾晥鏋滅粓浜庡嚭鏉ヤ簡錛?/h1>

涓婅竟鐨剅eview紿楀彛鏄劇ず褰撳墠璋冪敤鐨勫嚱鏁頒俊鎭?杈撳叆./->/:: 鐨勬椂鍊欎細鑷姩鎻愮ず錛屼篃鍙互鐢–TRL+X CTRL+O 鏉ヨ皟鍑烘彁紺虹獥鍙o紝鏂瑰悜閿垯鍙互閫夋嫨銆?/p>

omni_comp

vec_insert

vec_insert_sel

 

 

 
 
 
 
 


skyscribe 2010-01-10 18:28 鍙戣〃璇勮
]]>
cmake鐨勪竴浜涘皬緇忛獙http://www.shnenglu.com/skyscribe/archive/2009/12/14/103208.htmlskyscribeskyscribeMon, 14 Dec 2009 12:39:00 GMThttp://www.shnenglu.com/skyscribe/archive/2009/12/14/103208.htmlhttp://www.shnenglu.com/skyscribe/comments/103208.htmlhttp://www.shnenglu.com/skyscribe/archive/2009/12/14/103208.html#Feedback1http://www.shnenglu.com/skyscribe/comments/commentRss/103208.htmlhttp://www.shnenglu.com/skyscribe/services/trackbacks/103208.html鍒濈敤CMake鎴栬呭鍏朵簡瑙d笉澶繁鐨勪漢錛屽彲鑳界粡甯鎬細琚礬寰勫寘鍚佸簱鎼滅儲璺緞銆侀摼鎺ヨ礬寰勩丷Path榪欎簺闂鎵緇婂掞紝鍥犱負榪欎簺涓滆タ鍦ㄦ墜宸ユ墽琛実cc鎴栬呯紪鍐檓akefile鐨勬椂鍊欐槸寰堣交鑰屾槗涓劇殑浠誨姟銆?/font>

鍏跺疄鎴戝綋鍒濅篃鏈変笉灝戠枒鎯戯紝涓嶈繃閫氳繃杈冮暱鏃墮棿鐨勫疄璺靛拰闃呰manual錛屾葷畻鏈変簡涓浉瀵瑰緢娓呮櫚鐨勮璇嗐?/font>

  • 濡備綍浣跨敤鍏秏anual

cmake鐨勫府鍔╃粍緇囩殑榪樻槸寰堟湁瑙勫緥鐨勶紝浜嗚В浜嗗叾瑙勫緥錛屾壘鑷繁鎯寵鐨勪笢瑗垮氨浼氬緢綆鍗曪紝鎵浠ヤ釜浜鴻寰楄繖涓鐐瑰彲鑳芥槸鏈閲嶈鐨勩傚叾help緋葷粺澶ф鏄繖涔堝嚑綾伙細

    • command

榪欎釜鏄疄鐢ㄨ繃紼嬩腑鏈闀跨敤鍒扮殑錛岀浉褰撲簬涓鑸剼姝ヨ璦涓殑鍩烘湰璇硶錛屽寘鎷畾涔夊彉閲忥紝foreach錛宻tring錛宨f錛宐uiltin command閮藉湪榪欓噷銆?/font>

鍙互鐢ㄥ涓嬭繖浜涘懡浠よ幏鍙栧府鍔╋細

cmake --help-commands

榪欎釜鍛戒護灝嗙粰鍑烘墍鏈塩make鍐呯疆鐨勫懡浠ょ殑璇︾粏甯姪錛屼竴鑸笉鐭ラ亾鑷繁瑕佹壘浠涔堟垨鑰呮兂闅忔満緲葷炕寰楁椂鍊欙紝鍙互鐢ㄨ繖涓?/p>

鎴戜竴鑸洿甯哥敤鐨勬柟娉曟槸灝嗗叾閲嶅畾鍚戝埌less閲岃竟錛岀劧鍚庡湪緙栬緫鍣ㄩ噷杈規悳绱㈠叧閿瓧銆?/p>

 

鍙﹀涔熷彲浠ョ敤濡備笅鐨勫姙娉曞眰灞傜緝灝忔悳绱㈣寖鍥達細

cmake --help-command-list

cmake --help-command-list | grep find

skyscribe@skyscribe:~/program/ltesim/bld$ cmake --help-command-list | grep find
find_file
find_library
find_package
find_path
find_program

cmake --help-command find_library

cmake version 2.6-patch 4
------------------------------------------------------------------------------
SingleItem

  find_library
       Find a library.

          find_library(<VAR> name1 [path1 path2 ...])

       This is the short-hand signature for the command that is sufficient in
       many cases.  It is the same as find_library(<VAR> name1 [PATHS path1
       path2 ...])

          find_library(
                    <VAR>
                    name | NAMES name1 [name2 ...]
                    [HINTS path1 [path2 ... ENV var]]
                    [PATHS path1 [path2 ... ENV var]]
                    [PATH_SUFFIXES suffix1 [suffix2 ...]]
                    [DOC "cache documentation string"]
                    [NO_DEFAULT_PATH]
                    [NO_CMAKE_ENVIRONMENT_PATH]
                    [NO_CMAKE_PATH]
                    [NO_SYSTEM_ENVIRONMENT_PATH]
                    [NO_CMAKE_SYSTEM_PATH]
                    [CMAKE_FIND_ROOT_PATH_BOTH |
                     ONLY_CMAKE_FIND_ROOT_PATH |
                     NO_CMAKE_FIND_ROOT_PATH]
                   )

    • variable

鍜宑ommand鐨勫府鍔╂瘮杈冪被浼鹼紝鍙笉榪囪繖閲屽彲浠ユ煡鎵綾make鑷繁瀹氫箟浜嗛偅浜涘彉閲忎綘鍙互鐩存帴浣跨敤錛岃濡侽SName錛屾槸鍚︽槸Windows錛孶nix絳夈?/font>

鎴戞渶甯哥敤鐨勪竴涓緥瀛愶細

cmake --help-variable-list  | grep CMAKE | grep HOST
CMAKE_HOST_APPLE
CMAKE_HOST_SYSTEM
CMAKE_HOST_SYSTEM_NAME
CMAKE_HOST_SYSTEM_PROCESSOR
CMAKE_HOST_SYSTEM_VERSION
CMAKE_HOST_UNIX
CMAKE_HOST_WIN32

榪欓噷鏌ユ壘鎵鏈塁Make鑷繁瀹氫箟鐨刡uiltin鍙橀噺錛涗竴鑸拰緋葷粺騫沖彴鐩稿叧銆?/p>

濡傛灉甯屾湜灝嗘墍鏈夌敓鎴愮殑鍙墽琛屾枃浠躲佸簱鏀懼湪鍚屼竴鐨勭洰褰曚笅錛屽彲浠ュ姝ゅ仛錛?/p>

榪欓噷鐨則arget_dir鏄竴涓疄鐜拌緗ソ鐨勭粷瀵硅礬寰勩傦紙CMake閲岃竟緇濆璺緞姣旂浉瀵硅礬寰勬洿灝戝嚭闂錛屽鏋滃彲鑳藉敖閲忕敤緇濆璺緞錛?/p>

# Targets directory
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${target_dir}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${target_dir}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${target_dir}/bin)
    • property

Property涓鑸緢灝戦渶瑕佺洿鎺ユ敼鍔紝闄ら潪浣犳兂淇敼涓浜涢粯璁ょ殑琛屼負錛岃濡備慨鏀圭敓鎴愮殑鍔ㄦ佸簱鏂囦歡鐨剆oname絳夈?/font>

璀闇瑕佸湪鍚屼竴涓洰褰曚笅鏃㈢敓鎴愬姩鎬佸簱錛屼篃鐢熸垚闈欐佸簱錛岄偅涔堥粯璁ょ殑鎯呭喌涓嬶紝cmake鏍規嵁浣犳彁渚涚殑target鍚嶅瓧鑷姩鐢熸垚綾諱技鐨刲ibtarget.so, libtarget.a錛屼絾鏄悓涓涓猵roject鍙兘鍚屾椂鏈変竴涓紝鍥犱負target蹇呴』鍞竴銆?/font>

榪欐椂鍊欙紝灝卞彲浠ラ氳繃淇敼taget瀵瑰簲鐨勬枃浠跺悕錛屼粠鑰岃揪鍒版棦鐢熸垚鍔ㄦ佸簱涔熶駭鐢熼潤鎬佸簱鐨勭洰鐨勩?/font>

璀錛?/font>

cmake --help-property-list | grep NAME
GENERATOR_FILE_NAME
IMPORTED_SONAME
IMPORTED_SONAME_<CONFIG>
INSTALL_NAME_DIR
OUTPUT_NAME
VS_SCC_PROJECTNAME
skyscribe@skyscribe:~$ cmake --help-property OUTPUT_NAME
cmake version 2.6-patch 4
------------------------------------------------------------------------------
SingleItem
  OUTPUT_NAME
       Sets the real name of a target when it is built.
       Sets the real name of a target when it is built and can be used to
       help create two targets of the same name even though CMake requires
       unique logical target names.  There is also a <CONFIG>_OUTPUT_NAME
       that can set the output name on a per-configuration basis.
    • module

鐢ㄤ簬鏌ユ壘甯哥敤鐨勬ā鍧楋紝璀boost錛宐zip2, python絳夈傞氳繃綆鍗曠殑include鍛戒護鍖呭惈棰勫畾涔夌殑妯″潡錛屽氨鍙互寰楀埌涓浜涙ā鍧楁墽琛屽悗瀹氫箟濂界殑鍙橀噺錛岄潪甯告柟渚褲?/font>

璀甯哥敤鐨刡oost搴擄紝鍙互閫氳繃濡備笅鏂瑰紡錛?/font>

# Find boost 1.40
INCLUDE(FindBoost)
find_package(Boost 1.40.0 COMPONENTS thread unit_test_framework)
if(NOT Boost_FOUND)
    message(STATUS "BOOST not found, test will not succeed!")
endif()
涓鑸紑澶撮儴鍒嗙殑瑙i噴閮界浉褰撴湁鐢紝鍙弧瓚?0%闇姹傦細
cmake --help-module FindBoost | head -40
cmake version 2.6-patch 4
------------------------------------------------------------------------------
SingleItem
  FindBoost
       Try to find Boost include dirs and libraries
       Usage of this module as follows:
       == Using Header-Only libraries from within Boost: ==
          find_package( Boost 1.36.0 )
          if(Boost_FOUND)
             include_directories(${Boost_INCLUDE_DIRS})
             add_executable(foo foo.cc)
          endif()
       
       
       == Using actual libraries from within Boost: ==
          set(Boost_USE_STATIC_LIBS   ON)
          set(Boost_USE_MULTITHREADED ON)
          find_package( Boost 1.36.0 COMPONENTS date_time filesystem system ... )
       
          if(Boost_FOUND)
             include_directories(${Boost_INCLUDE_DIRS})
             add_executable(foo foo.cc)
             target_link_libraries(foo ${Boost_LIBRARIES})
          endif()
       
       
       The components list needs to contain actual names of boost libraries
  • 濡備綍鏍規嵁鍏剁敓鎴愮殑涓棿鏂囦歡鏌ョ湅涓浜涘叧閿俊鎭?/strong>

CMake鐩告瘮杈冧簬autotools鐨勪竴涓紭鍔垮氨鍦ㄤ簬鍏剁敓鎴愮殑涓棿鏂囦歡緇勭粐鐨勫緢鏈夊簭錛屽茍涓旀竻鏅版槗鎳傦紝涓嶅儚autotools浼氱敓鎴愬ぉ涔︿竴鏍風殑搴炵劧澶х墿錛?0000+鐨勪笉椴滆錛夈?/p>

涓鑸珻Make瀵瑰簲鐨凪akefile閮芥槸鏈夊眰綰х粨鏋勭殑錛屽茍涓斾細鏍規嵁浣犵殑CMakeLists.txt闂寸殑鐩稿緇撴瀯鍦╞inary directory閲岃竟鐢熸垚鐩稿簲鐨勭洰褰曠粨鏋勩?/p>

璀瀵逛簬鏌愪竴涓猼arget錛屼竴鑸琤inary tree涓嬪彲浠ユ壘鍒頒竴涓枃浠跺す:  CMakeFiles/<targentName>.dir/,姣斿錛?/p>

skyscribe@skyscribe:~/program/ltesim/bld/dev/simcluster/CMakeFiles/SIMCLUSTER.dir$ ls -l
total 84
-rw-r--r-- 1 skyscribe skyscribe 52533 2009-12-12 12:20 build.make
-rw-r--r-- 1 skyscribe skyscribe  1190 2009-12-12 12:20 cmake_clean.cmake
-rw-r--r-- 1 skyscribe skyscribe  4519 2009-12-12 12:20 DependInfo.cmake
-rw-r--r-- 1 skyscribe skyscribe    94 2009-12-12 12:20 depend.make
-rw-r--r-- 1 skyscribe skyscribe   573 2009-12-12 12:20 flags.make
-rw-r--r-- 1 skyscribe skyscribe  1310 2009-12-12 12:20 link.txt
-rw-r--r-- 1 skyscribe skyscribe   406 2009-12-12 12:20 progress.make
drwxr-xr-x 2 skyscribe skyscribe  4096 2009-12-12 12:20 src
榪欓噷錛屾瘡涓涓枃浠墮兘鏄釜寰堢煭灝忕殑鏂囨湰鏂囦歡錛屽唴瀹圭浉褰撴竻鏅版槑浜嗐俠uild.make涓鑸寘鍚腑闂寸敓鎴愭枃浠剁殑渚濊禆瑙勫垯錛孌ependInfo.cmake涓鑸寘鍚簮浠g爜鏂囦歡鑷韓鐨勪緷璧栬鍒欍?/pre>
姣旇緝閲嶈鐨勬槸flags.make鍜宭ink.txt錛屽墠鑰呬竴鑸寘鍚簡綾諱技浜嶨CC鐨?I鐨勭浉鍏充俊鎭紝濡傛悳绱㈣礬寰勶紝瀹忓畾涔夌瓑錛涘悗鑰呭垯鍖呭惈浜嗘渶緇堢敓鎴恡arget鏃跺欑殑linkage淇℃伅錛屽簱鎼滅儲璺緞絳夈?/pre>
榪欎簺淇℃伅鍦ㄥ嚭鐜伴棶棰樼殑鏃跺欐槸涓緢濂界殑杈呭姪璋冭瘯鎵嬫銆?/pre>
  • 鏂囦歡鏌ユ壘銆佽礬寰勭浉鍏?/strong>
    • include

涓鑸父鐢ㄧ殑鏄細

include_directories錛堬級鐢ㄤ簬娣誨姞澶存枃浠剁殑鍖呭惈鎼滅儲璺緞
cmake --help-command include_directories
cmake version 2.6-patch 4
------------------------------------------------------------------------------
SingleItem
  include_directories
       Add include directories to the build.
         include_directories([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...)
       Add the given directories to those searched by the compiler for
       include files.  By default the directories are appended onto the
       current list of directories.  This default behavior can be changed by
       setting CMAKE_include_directories_BEFORE to ON.  By using BEFORE or
       AFTER you can select between appending and prepending, independent
       from the default.  If the SYSTEM option is given the compiler will be
       told that the directories are meant as system include directories on
       some platforms.
link_directories()鐢ㄤ簬娣誨姞鏌ユ壘搴撴枃浠剁殑鎼滅儲璺緞
cmake --help-command link_directories
cmake version 2.6-patch 4
------------------------------------------------------------------------------
SingleItem
  link_directories
       Specify directories in which the linker will look for libraries.
         link_directories(directory1 directory2 ...)
       Specify the paths in which the linker should search for libraries.
       The command will apply only to targets created after it is called.
       For historical reasons, relative paths given to this command are
       passed to the linker unchanged (unlike many CMake commands which
       interpret them relative to the current source directory).
    • library search

涓鑸閮ㄥ簱鐨刲ink鏂瑰紡鍙互閫氳繃涓ょ鏂規硶鏉ュ仛錛屼竴縐嶆槸鏄劇ず娣誨姞璺緞錛岄噰鐢╨ink_directories()錛?涓縐嶆槸閫氳繃find_library()鍘繪煡鎵懼搴旂殑搴撶殑緇濆璺緞銆?/p>

鍚庝竴縐嶆柟娉曟槸鏇村ソ鐨勶紝鍥犱負瀹冨彲浠ュ噺灝戜笉灝戞綔鍦ㄧ殑鍐茬獊銆?/p>

        涓鑸琭ind_library浼氭牴鎹竴浜涢粯璁よ鍒欐潵鎼滅儲鏂囦歡錛屽鏋滄壘鍒幫紝灝嗕細set浼犲叆鐨勭涓涓彉閲忓弬鏁般佸惁鍒欙紝瀵瑰簲鐨勫弬鏁頒笉琚畾涔夛紝騫朵笖鏈変竴涓獂xx-NOTFOUND琚畾涔夛紱鍙互閫氳繃榪欑鏂瑰紡鏉ヨ皟璇曞簱鎼滅儲鏄惁鎴愬姛銆?/p>

        瀵逛簬搴撴枃浠剁殑鍚嶅瓧鑰岃█錛屽姩鎬佸簱鎼滅儲鐨勬椂鍊欎細鑷姩鎼滅儲libxxx.so (xxx.dll),闈欐佸簱鍒欐槸libxxx.a錛坸xx.lib錛夛紝瀵逛簬鍔ㄦ佸簱鍜岄潤鎬佸簱娣風敤鐨勬儏鍐碉紝鍙兘浼氬嚭鐜頒竴浜涙販涔憋紝闇瑕佹牸澶栧皬蹇冿紱涓鑸敖閲忓仛鍖歸厤榪炴帴銆?/p>

    • rpath

鎵璋撶殑rpath鏄拰鍔ㄦ佸簱鐨勫姞杞借繍琛岀浉鍏崇殑銆傛垜涓鑸噰鐢ㄥ涓嬬殑鏂瑰紡鍙栦唬榛樿娣誨姞鐨剅path錛?/p>

# RPATH and library search setting
SET(CMAKE_SKIP_BUILD_RPATH  FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) 
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/nesim/lib")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 

 



skyscribe 2009-12-14 20:39 鍙戣〃璇勮
]]>
pipeline浼氬惎鍔ㄥ灝戜釜榪涚▼錛?/title><link>http://www.shnenglu.com/skyscribe/archive/2009/12/14/103205.html</link><dc:creator>skyscribe</dc:creator><author>skyscribe</author><pubDate>Mon, 14 Dec 2009 11:46:00 GMT</pubDate><guid>http://www.shnenglu.com/skyscribe/archive/2009/12/14/103205.html</guid><wfw:comment>http://www.shnenglu.com/skyscribe/comments/103205.html</wfw:comment><comments>http://www.shnenglu.com/skyscribe/archive/2009/12/14/103205.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/skyscribe/comments/commentRss/103205.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/skyscribe/services/trackbacks/103205.html</trackback:ping><description><![CDATA[<p>鏈榪戝湪TL鐨?a >璁ㄨ涓?/a>蹇界劧鏈変漢鎸戣搗浜唒erl鍜宲ython錛堜竴鍦哄叧浜巆++鐨勮璁烘壇鍒拌剼姝ヤ笂榪樻湁涓嶅皯鐨勭鎾烇紝鍊掓槸鎸烘湁鎰忔濓級錛屾垜鍒欐湁鎰熻屽彂鐨勬兂璧蜂簡鍓嶅嚑澶╅潰璇曠殑鏃跺欓棶鍒漢鐨勪竴涓熀鏈殑shell闂錛?/p> <blockquote><pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"><p><font size="4">cat xxx.txt | grep "<span style="color: #8b0000">yyy</span>" | wc 鈥搇</font></p></pre></pre></blockquote> <p>闂鏄繖涓父瑙佺殑pipeline鎿嶄綔涓鑸渶灝戜細璧峰灝戜釜榪涚▼錛熺粨鏋滈偅浣嶈佸厔鍊掓槸鎰d簡鍗婂ぉ鐒跺悗鐩棤琛ㄦ儏銆?/p> <p>鎴戝彧濂界戶緇敔鍙ㄧ殑瑙i噴浜嗕竴涓嬩竴鑸琾ipe鐨勬搷浣滈渶瑕佽鍙栦竴涓繘紼嬬殑杈撳叆錛岀劧鍚庡皢杈撳嚭閫佺粰涓嬩竴涓繘紼嬶紱鍏跺疄鎴戝笇鏈涘鏂瑰共鑴嗗埄钀界殑鍥炵瓟鏄湁3涓紝榪欎釜闂灝辯畻鏄彲浠ヤ簡錛涙垜浠富瑕佷笉鏄敤鑴氭湰寮鍙戯紝浣嗘槸濡傛灉鏈夎繖涓妧鑳芥槸鑳藉緱鍒伴澶栫殑璁ゅ彲鐨勩?/p> <p> </p> <p>TL涓婄殑澶ц櫨浠灉鐒舵槸鎯蟲硶浼楀錛岀珛椹湁浜虹珯鍑烘潵闂細鎴戞兂鐭ラ亾絳旀鏄嚑涓紵鐩存帴璁╂垜鎬鐤戞槸涓嶆槸鎴戠殑鑴戣鏈夐棶棰樸傚悗鏉ユ湁浜虹粰鍑轟簡鍙兘鏄?涓殑鎯呭艦錛?/p> <p>      鏌愪釜鍙樻佺殑shell鍙兘鍐呯疆浜哻at,浣垮叾鎴愪負涓涓猙uiltin錛岀劧鍚庤嚜宸辮秺淇庝唬搴栫殑璇誨彇鏍囧噯杈撳叆錛屽茍涓斿皢鍐呭鏂囨湰杈撳嚭錛岄偅涔堣繘紼嬪氨灝戜竴涓?/p> <p>璧峰垵鎴戣寰楄繖涓В閲婂茍涓嶈兘鎴愮珛錛屼絾鏄粡榪囧嚑涓佸ぇ鐨勮В閲婅繕鏄槑鐧戒簡浠栨墍璇寸殑鎯呭喌鏄痵hell鐨刡uiltin銆?/p> <p> </p> <p>涓棿鍙堣璁鴻搗閭d簺鍙兘鏄痓uiltin鐨刢ommand錛屼婦鍑虹殑渚嬪瓙鏄痗d/kill/time錛屼絾鏄垜鏌ヤ簡涓涓婼olaris涓婄殑錛屽悗涓や釜閮芥槸executable錛宑d鎵懼埌涓涓?usr/bin/cd 鐨刱sh錛屽唴瀹瑰涓嬶細</p><pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff">#!/bin/ksh </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"></pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff">command = `basename $0` </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff">$command $@</pre></pre><pre>榪欎釜緇撴灉鏈潵榪樻槸鎸哄嚭涔庢垜鐨勬剰鏂欑殑錛屼簬鏄垜涔熸兂褰撶劧鐨勮涓猴紝shell閲岃竟涓嶈兘鐩存帴璋冪敤syscall錛?/pre><pre>寰堝揩灝卞緱璇佽繖涓彛嫻嬬函綺規槸閿欒鐨勶紱浠ュ墠榪樼湡娌℃兂榪囪繖涓棶棰橈紝鏌ヤ簡涓媤ikipedia銆乬oogle涔嬪悗寰楀埌寰堝鎰忔枡涔嬪鐨勬敹鑾楓?/pre><pre> </pre><pre>鏈鍚庡眳鐒舵湁浜烘惉鍑轟簡busybox榪欎釜澶ф棗錛堝仛榪囧祵鍏ュ紡鐨勫ぇ澶氶兘鐭ラ亾浜涳級錛屽茍澹扮О瀹冩妸vi涔焍uiltin浜嗐?/pre><pre>榪欎笅涔熷緢鍑轟箮鎴戠殑鎰忔枡錛屼笉欏炬垜娌℃湁浠旂粏鐮旂┒榪囷紝娌℃湁浠涔堝彂璦鏉冦?/pre><pre>涓嶈繃鏈鍚庢湁浜虹珯鍑烘潵璇達紝busybox騫舵病鏈夊唴緗繖浜涙兂褰撶劧鐨剉i錛岃屾槸澶ч儴鍒嗕篃鍗曠嫭璧瘋繘紼嬩簡錛涘湪Unix鐨勫摬瀛﹂噷杈癸紝鍋氳繖浜涘ぇ鑰屽叏鐨勪笢瑗垮叾瀹炴槸涓嶈榧撳姳鐨勶紝鍥犱負瀹冭繚鍙島nix鐨勫摬瀛︺?/pre><pre> </pre><pre>璇濊鍥炴潵錛岄潰璇曠殑鏃跺欙紝鎴戜箣鎵浠ヤ細闂埌榪欐牱鐨勯棶棰橈紝涔熸槸鏈夊緢鐪熷疄鐨刡ackground鐨勩傛浘緇忔垜浠煡榪囩殑涓涓緢璇″紓鐨刾erformance bottleneck灝辨槸鐢變簬shell鑴氭鐨勯棶棰樺紩璧風殑銆?/pre><pre>====================================================================================================</pre><pre>闂鏈韓涔熸槸姣旇緝鐩磋鐨勶紙褰撶劧鏄滀簨鍚庤钁涒濅簡錛夛細</pre><pre> 鏌愭紼嬪簭鐨勫惎鍔ㄨ剼鏈嬌鐢ㄥ涓嬬殑涓滀笢鏉ユ嫻嬬幆澧冿細</pre><pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff">exists=`netstat -rn | grep "<span style="color: #8b0000">xx.xx.xx.xx</span>" | wc -l` </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"><span style="color: #0000ff">if</span> [ $exists -eq 0 ];then </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"> idx=`ifconfig -an | grep bge0 | awk -F"<span style="color: #8b0000">:</span>" '{print $2}' | uniq | sort | tail`"<span style="color: #8b0000"> </span></pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"> ifconfig bge0:`echo $idx + 1 | bc` plumb up </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"> ifconfig bge0:`echo $idx + 1 | bc` xx.xx.xx.xx netmask 255.255.255.0 </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff">fi </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"> </pre></pre> <p>褰撴湁寰堝涓悓鏍風殑榪涚▼錛?gt;500)鎭板ソ浜庡悓涓鏃跺埢璺戝埌榪欎釜鍒濆鍖栫偣鐨勬椂鍊欙紝濡傛灉緋葷粺涓婂凡緇忓瓨鍦ㄧ殑IP鍦板潃寰堝錛堝綋鏃剁殑鍦烘櫙澶ф鏈?000+錛夛紝閭d箞netstat銆乮fconfig鏈韓閮藉彉寰楅潪甯歌楁椂錛屽姞涓婂涓繘紼嬬殑鍘熷洜錛岀郴緇熶腑浼氭湁N澶氫釜榪涚▼鍦ㄦ秷鑰楃潃璧勬簮錛?/p> <p>鍚庢灉鐨勪弗閲嶇▼搴︽槸浠諱綍shell閮藉仠姝㈠搷搴旓紝鏁板崄鍒嗛挓閮介櫡鍏ュ亣姝伙紝涓嶅緱涓嶉噸鍚數婧愪簡浜嬨?/p> <p>褰撶劧鐨勫垎鏋愮粨鏋滃彂鐜幫紝鐪熸鍗犵敤鐨凜PU閮芥槸澶勪簬kernel鐘舵佺殑錛屽茍涓斾嬌鐢ㄧ巼瓚呰繃99%錛岄暱闀跨殑pipeline甯︽潵鐨勫紑閿錛岀浉褰撲竴閮ㄥ垎鍙兘鏉ユ簮浜庝簰鐩哥瓑寰匔PU鐨勮繘紼嬬殑浜掔浉鎶㈠崰銆?/p> <p>瑙e喅鐨勬柟娉曡嚜鐒朵篃寰堢畝鍗曪紝榪欓噷涓嶈禈榪頒簡銆?/p> <p>=========================================================================</p> <p>褰撴椂浠ヤ負瀵硅繖涓棶棰樻悶寰楃畻鏄瘮杈冩槑鐧戒簡錛岀粨鏋滄嬁鍑烘潵涓璁ㄨ錛屽彂鐜拌嚜宸變笉浜嗚В鐨勮繕鐪熶笉灝戙?/p><img src ="http://www.shnenglu.com/skyscribe/aggbug/103205.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/skyscribe/" target="_blank">skyscribe</a> 2009-12-14 19:46 <a href="http://www.shnenglu.com/skyscribe/archive/2009/12/14/103205.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Popen涓鎬殑OSError錛歵oo many open fileshttp://www.shnenglu.com/skyscribe/archive/2009/10/19/98970.htmlskyscribeskyscribeMon, 19 Oct 2009 11:31:00 GMThttp://www.shnenglu.com/skyscribe/archive/2009/10/19/98970.htmlhttp://www.shnenglu.com/skyscribe/comments/98970.htmlhttp://www.shnenglu.com/skyscribe/archive/2009/10/19/98970.html#Feedback0http://www.shnenglu.com/skyscribe/comments/commentRss/98970.htmlhttp://www.shnenglu.com/skyscribe/services/trackbacks/98970.html榪戞潵鐢≒ython鐨剈nittest妗嗘灦鏉ュ仛涓涓猺egression test 宸ュ叿錛岄獙璇佷竴浜涘鏉傜殑紼嬪簭鍔熻兘錛屾湡鏈涘仛鍒拌嚜鍔ㄥ寲嫻嬭瘯瀹屾垚涓閮ㄥ垎闇瑕佺箒鐞愮殑鐣岄潰鐐瑰嚮鍜岀瓑寰呮墠鑳藉畬鎴愮殑楠岃瘉宸ヤ綔銆?/font>

鍏朵腑鏍稿績鐨勯儴鍒嗘槸閫氳繃python鐨剆ubproces module涓殑Popen鏉ヨ皟鐢╯hell鑴氭瀹屾垚鍔熻兘鎬ц姹傦紝騫舵姄鍙栨墽琛岀殑緇撴灉銆?/font>

 

鍒濅竴寮濮嬶紝test case姣旇緝灝戠殑鏃跺欙紙100涓互鍐咃級閮芥病鏈変換浣曢棶棰橈紱浣嗕粠鏌愪竴鍒昏搗錛屽綋瓚呰繃120涓殑鏃跺欙紝鏈鍚庝竴涓猼est case鎵ц鐨勬椂鍊欙紝鎬繪槸鎶ュ憡

                OSError錛?too many open files

緇欏嚭鐨剆tack trace鎸囧悜浜哖open鐨刢ommunicate鏂規硶銆?/font>

 

鏈綆鍗曠殑鎬鐤戣嚜鐒舵槸鎵撳紑鏂囦歡鏁扮殑闄愬埗浜嗭紝 ulimit  -a 鍙戠幇榛樿鐨凷hell鐨勭‘鍙湁256錛岃櫧鐒舵劅瑙夊簲璇ヤ篃澶熺敤浜嗭紙鍥犱負姣忎竴涓猚ase閮芥槸鐢ㄥ崟鐙殑Popen鏉ユ墽琛屾搷浣?瀹屾瘯灝卞簲璇ヨ鍥炴敹浜嗭級錛屼絾榪樻槸鑷劧灝嗗叾寮澶т竴浜涳紱

                      ulimit –n 1024

閲嶆柊鎵ц錛岃繕鏄渶鍚庝竴涓猚ase澶辮觸錛岄敊璇緷鐒躲?/font>

 

Google浜嗕竴涓嬶紝鏆傛椂娌℃湁澶寸華錛屽彧鏈夊緟鏈夋椂闂村啀璇︾粏鐩樻煡涓涓嬪師濮斾簡銆備笉榪囧湪鎼滅儲絳旀鐨勮繃紼嬩腑鍙戠幇浜嗕竴涓湁鎰忔濈殑鐜拌薄錛?/font>

   鏈変漢鍦ㄨ闂庢牱灝唒ython鐨勫瓧絎︿覆quote鎴愪負涓涓彲浠ュ啀shell涓畨鍏ㄤ嬌鐢ㄧ殑瀛楃涓詫紝灝辨湁浜哄洖澶嶈Subprocess涓湁涓涓被浼肩殑鏂規硶鍙互瀹屾垚綾諱技鐨勫伐浣滀負浠涔堜笉鐢紱椹笂鏈夌墰浜虹珯鍑烘潵璇達紝榪欎釜妯″潡鐨勪綔鑰呭ぇ姒備笉鎯崇淮鎶よ繃澶氱殑涓滆タ錛屽洜鑰屽皢鍏墮殣钘忎簡璧鋒潵錛岃屼笉鏄斁寮浜嗙粰澶у鐢紝鍥犱負瀹冪殑doc閲岃竟閮芥病鏈夌洿鎺ヨ鏄庯紝鐢ㄧ殑浜烘槸鐪嬩簡浠栫殑浠g爜鎵嶇煡閬撴湁榪欎釜鍑芥暟錛堝弬鑰?/font>榪欓噷錛?/font>



skyscribe 2009-10-19 19:31 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              久久亚洲一区二区| 国内精品伊人久久久久av一坑| 亚洲网站在线看| 亚洲国产精品v| 久久久久高清| 久热精品视频在线免费观看| 噜噜噜噜噜久久久久久91 | 性久久久久久久| 香蕉国产精品偷在线观看不卡| 欧美亚洲在线播放| 久久三级福利| 亚洲人久久久| 久久国产免费看| 亚洲欧美日韩精品久久久| 99re6热只有精品免费观看| 日韩一区二区免费高清| 雨宫琴音一区二区在线| 能在线观看的日韩av| 免费亚洲一区| 欧美日韩国语| 国产亚洲精品久久飘花| 亚洲国产精品999| 亚洲视频专区在线| 久久夜精品va视频免费观看| 欧美电影在线免费观看网站| 日韩一级免费| 久久久久国产免费免费| 亚洲人成在线观看网站高清| 99国产精品私拍| 久久av在线| 日韩视频在线一区二区| 性娇小13――14欧美| 欧美承认网站| 免费日韩视频| 亚洲日韩视频| 久久久久成人精品| 国产精品毛片在线| 在线观看视频欧美| 午夜久久久久久| 91久久亚洲| 久久久五月婷婷| 国产嫩草一区二区三区在线观看| 亚洲国产精品va在线看黑人 | 国产日韩欧美日韩大片| 亚洲美女91| 免费成人高清在线视频| 午夜精品久久久久久久久 | 亚洲精品国产精品国自产观看浪潮 | 99国产精品久久久久久久| 久久一二三区| 午夜精品一区二区三区在线视| 欧美精品一二三| 一区二区三区在线不卡| 久久成人18免费观看| 亚洲视频欧美在线| 欧美三级第一页| 一区二区三区四区蜜桃| 最新中文字幕一区二区三区| 欧美成人精品激情在线观看| 亚洲国产岛国毛片在线| 老司机午夜免费精品视频| 午夜精品免费| 在线观看成人网| 欧美一级播放| 欧美激情国产高清| 亚洲国产欧美一区| 免费中文日韩| 老司机精品导航| 亚洲电影免费| 欧美激情久久久久久| 麻豆av福利av久久av| 在线观看一区二区视频| 欧美/亚洲一区| 欧美大成色www永久网站婷| 一本色道88久久加勒比精品 | 亚洲大胆av| 欧美顶级少妇做爰| 亚洲美女色禁图| 99热免费精品| 亚洲电影激情视频网站| 欧美日韩一区二区三| 亚洲一线二线三线久久久| 亚洲性图久久| 韩国成人福利片在线播放| 欧美成人免费在线观看| 欧美精品乱码久久久久久按摩| 亚洲午夜国产一区99re久久| 中文精品一区二区三区| 国产日韩欧美三区| 亚洲第一黄色网| 国产精品久久久久永久免费观看| 欧美影片第一页| 免费成年人欧美视频| 亚洲一区日本| 久久久欧美精品| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲高清在线精品| 亚洲国产日韩一区二区| 欧美99久久| 亚洲欧美日韩视频一区| 乱码第一页成人| 亚洲一区中文| 欧美成人免费观看| 久久国产视频网| 欧美精品在线一区二区| 欧美在线观看视频在线| 欧美成人a∨高清免费观看| 欧美一区二区观看视频| 欧美超级免费视 在线| 欧美专区在线播放| 欧美日韩国产成人在线| 欧美va亚洲va香蕉在线| 国产精品一级久久久| 最新日韩中文字幕| 亚洲尤物精选| 亚洲国产精品www| 国产精品一二一区| 老牛影视一区二区三区| 欧美网站在线观看| 毛片av中文字幕一区二区| 欧美三级视频在线播放| 久久er精品视频| 欧美日韩中文字幕在线视频| 欧美高清视频www夜色资源网| 久久躁狠狠躁夜夜爽| 久久久久网站| 国产日韩在线一区| 午夜性色一区二区三区免费视频| 亚洲欧美国产日韩天堂区| 欧美理论在线播放| 91久久久久| 亚洲午夜激情网页| 欧美国产综合视频| 欧美不卡三区| 久久久99精品免费观看不卡| 国产精品亚洲人在线观看| 一区二区三区三区在线| 日韩一级片网址| 亚洲电影成人| 久久一区二区三区国产精品| 国产精品女同互慰在线看| 亚洲人成欧美中文字幕| 日韩视频在线永久播放| 欧美.www| 亚洲日本在线观看| 亚洲视频福利| 欧美日韩一区二区国产| 夜夜爽99久久国产综合精品女不卡| 夜夜躁日日躁狠狠久久88av| 欧美日韩国产一区二区| 亚洲美女啪啪| 亚洲欧美日韩综合一区| 欧美午夜视频在线观看| 一本大道久久a久久精二百| 亚洲欧美在线免费观看| 国产无遮挡一区二区三区毛片日本| 亚洲在线成人精品| 久久久久久久一区二区三区| 国产午夜精品久久久久久久| 久久亚洲国产精品日日av夜夜| 欧美专区在线观看| 国内在线观看一区二区三区| 另类亚洲自拍| 亚洲免费观看视频| 欧美一级久久久| 黄色av成人| 欧美日韩mv| 欧美在线影院| 亚洲精品小视频在线观看| 久久福利影视| 99成人精品| 黄色国产精品| 欧美视频观看一区| 久久久久九九视频| 99精品99| 欧美不卡三区| 欧美一区二区福利在线| 亚洲九九精品| 狠狠色综合色区| 国产精品久久久久婷婷| 欧美成人午夜激情视频| 亚洲一区三区在线观看| 亚洲福利小视频| 久久久久久网站| 亚洲一区一卡| 亚洲精品美女在线| 狠狠噜噜久久| 国产日产亚洲精品系列| 欧美伦理一区二区| 久久综合国产精品台湾中文娱乐网| 亚洲午夜电影网| 亚洲精品一级| 亚洲精品1234| 欧美成人国产va精品日本一级| 亚洲午夜久久久久久久久电影网| 久久久久中文| 亚洲欧美高清| 亚洲婷婷在线| 一区二区三区欧美在线观看| 在线日韩成人|