1import{_ as l,c,b as i,a,e as s,d as t,w as e,r as o,o as u}from"./app-BNAFTfp7.js";const r={};function k(d,n){const p=o("RouteLink");return u(),c("div",null,[n[11]||(n[11]=i(`<h1 id="_02-codex-æ ¸å¿ç¹ç¹è¯¦è§£" tabindex="-1"><a class="header-anchor" href="#_02-codex-æ ¸å¿ç¹ç¹è¯¦è§£"><span>02 - Codex æ ¸å¿ç¹ç¹è¯¦è§£</span></a></h1><blockquote><p>æ·±å ¥çè§£ Codex çæ ¸å¿è½åï¼ææ¡ AI 代ç çæçææ¯æ¬è´¨</p></blockquote><h2 id="ð-æ¬ç« ç®æ " tabindex="-1"><a class="header-anchor" href="#ð-æ¬ç« ç®æ "><span>ð æ¬ç« ç®æ </span></a></h2><p>å¦å®æ¬ç« ,ä½ å°è½å¤ï¼</p><ul><li>çè§£ Codex çæ ¸å¿ææ¯ç¹ç¹</li><li>ææ¡ä¸å代ç çææ¨¡å¼çåºç¨åºæ¯</li><li>äºè§£å¤è¯è¨æ¯æç深度å广度</li><li>çè§£ä¸ä¸æç®¡ççéè¦æ§</li><li>åºå Codex ä¸ä¼ ç»å·¥å ·çæ¬è´¨å·®å¼</li></ul><hr><h2 id="ð¯-æ ¸å¿è½åæ¦è§" tabindex="-1"><a class="header-anchor" href="#ð¯-æ ¸å¿è½åæ¦è§"><span>ð¯ æ ¸å¿è½åæ¦è§</span></a></h2><h3 id="codex-çå å¤§æ ¸å¿è½å" tabindex="-1"><a class="header-anchor" href="#codex-çå å¤§æ ¸å¿è½å"><span>Codex çå å¤§æ ¸å¿è½å</span></a></h3><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre><code class="language-text"><span class="line">âââââââââââââââââââââââââââââââââââââââââââ</span> 2<span class="line">â Codex æ ¸å¿è½åç©éµ â</span> 3<span class="line">âââââââââââââââââââââââââââââââââââââââââââ¤</span> 4<span class="line">â â</span> 5<span class="line">â 1ï¸â£ 代ç çæ 2ï¸â£ 代ç çè§£ â</span> 6<span class="line">â â â â</span> 7<span class="line">â æè¿°â代ç 代ç âè§£é â</span> 8<span class="line">â â</span> 9<span class="line">â 3ï¸â£ 代ç è¡¥å ¨ 4ï¸â£ 代ç è½¬æ¢ â</span> 10<span class="line">â â â â</span> 11<span class="line">â èªå¨ç»å è·¨è¯è¨ç¿»è¯ â</span> 12<span class="line">â â</span> 13<span class="line">â 5ï¸â£ Bugä¿®å¤ 6ï¸â£ æµè¯çæ â</span> 14<span class="line">â â â â</span> 15<span class="line">â éè¯¯è¯æ èªå¨åæµè¯ â</span> 16<span class="line">â â</span> 17<span class="line">âââââââââââââââââââââââââââââââââââââââââââ</span> 18<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><hr><h2 id="_1ï¸â£-代ç çæè½å" tabindex="-1"><a class="header-anchor" href="#_1ï¸â£-代ç çæè½å"><span>1ï¸â£ 代ç çæè½å</span></a></h2><h3 id="ä»ä¹æ¯ä»£ç çæ" tabindex="-1"><a class="header-anchor" href="#ä»ä¹æ¯ä»£ç çæ"><span>ä»ä¹æ¯ä»£ç çæï¼</span></a></h3><p><strong>å®ä¹</strong>ï¼æ ¹æ®èªç¶è¯è¨æè¿°æç®åæç¤ºï¼çæå®æ´ç坿§è¡ä»£ç ã</p><h3 id="çæèå´" tabindex="-1"><a class="header-anchor" href="#çæèå´"><span>çæèå´</span></a></h3><table><thead><tr><th>
18èå´</th><th>说æ</th><th>é¾åº¦</th><th>åç¡®ç</th></tr></thead><tbody><tr><td><strong>åè¡ä»£ç </strong></td><td>ä¸è¡ç®åè¯å¥</td><td>â</td><td>95%+</td></tr><tr><td><strong>彿°/æ¹æ³</strong></td><td>宿´å½æ°å®ç°</td><td>ââ</td><td>90%+</td></tr><tr><td><strong>ç±»/模å</strong></td><td>宿´ç±»ææ¨¡å</td><td>âââ</td><td>85%+</td></tr><tr><td><strong>夿件项ç®</strong></td><td>项ç®çº§å«ä»£ç </td><td>ââââ</td><td>75%+</td></tr><tr><td><strong>宿´åºç¨</strong></td><td>端å°ç«¯åºç¨</td><td>âââââ</td><td>60%+</td></tr></tbody></table><h3 id="å®æç¤ºä¾" tabindex="-1"><a class="header-anchor" href="#å®æç¤ºä¾"><span>å®æç¤ºä¾</span></a></h3><h4 id="示ä¾-1-彿°çº§çæ" tabindex="-1"><a class="header-anchor" href="#示ä¾-1-彿°çº§çæ"><span>ç¤ºä¾ 1ï¼å½æ°çº§çæ</span></a></h4><p><strong>è¾å ¥</strong>ï¼</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre><code class="language-text"><span class="line">å建ä¸ä¸ª Python 彿°ï¼å° RGB é¢è²è½¬æ¢ä¸ºåå è¿å¶æ ¼å¼</span> 19<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><strong>è¾åº</strong>ï¼</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line"><span class="token keyword">def</span> <span class="token function">rgb_to_hex</span><span class="token punctuation">(</span>r<span class="token punctuation">,</span> g<span class="token punctuation">,</span> b<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 20<span class="line"> <span class="token triple-quoted-string string">"""</span> 21<span class="line"> å° RGB é¢è²å¼è½¬æ¢ä¸ºåå è¿å¶æ ¼å¼</span> 22<span class="line"> </span> 23<span class="line"> Args:</span> 24<span class="line"> r (int): 红è²å¼ (0-255)</span> 25<span class="line"> g (int): 绿è²å¼ (0-255)</span> 26<span class="line"> b (int): èè²å¼ (0-255)</span> 27<span class="line"> </span> 28<span class="line"> Returns:</span> 29<span class="line"> str: åå è¿å¶é¢è²ä»£ç (å¦ '#FF5733')</span> 30<span class="line"> </span> 31<span class="line"> Raises:</span> 32<span class="line"> ValueError: 妿任ä½å¼ä¸å¨ 0-255 èå´å </span> 33<span class="line"> """</span></span> 34<span class="line"> <span class="token comment"># éªè¯è¾å ¥èå´</span></span> 35<span class="line"> <span class="token keyword">if</span> <span class="token keyword">not</span> <span class="token builtin">all</span><span class="token punctuation">(</span><span class="token number">0</span> <span class="token operator"><=</span> val <span class="token operator"><=</span> <span class="token number">255</span> <span class="token keyword">for</span> val <span class="token keyword">in</span> <span class="token punctuation">[</span>r<span class="token punctuation">,</span> g<span class="token punctuation">,</span> b<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 36<span class="line"> <span class="token keyword">raise</span> ValueError<span class="token punctuation">(</span><span class="token string">"RGB å¼å¿ é¡»å¨ 0-255 èå´å "</span><span class="token punctuation">)</span></span> 37<span class="line"> </span> 38<span class="line"> <span class="token comment"># 转æ¢ä¸ºåå è¿å¶å¹¶æ ¼å¼å</span></span> 39<span class="line"> <span class="token keyword">return</span> <span class="token string-interpolation"><span class="token string">f'#</span><span class="token interpolation"><span class="token punctuation">{</span>r<span class="token punctuation">:</span><span class="token format-spec">02x</span><span class="token punctuation">}</span></span><span class="token interpolation"><span class="token punctuation">{</span>g<span class="token punctuation">:</span><span class="token format-spec">02x</span><span class="token punctuation">}</span></span><span class="token interpolation"><span class="token punctuation">{</span>b<span class="token punctuation">:</span><span class="token format-spec">02x</span><span class="token punctuation">}</span></span><span class="token string">'</span></span><span class="token punctuation">.</span>upper<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 40<span class="line"></span> 41<span class="line"><span class="token comment"># æµè¯</span></span> 42<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span>rgb_to_hex<span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">87</span><span class="token punctuation">,</span> <span class="token number">51</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment"># #FF5733</span></span> 43<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span>rgb_to_hex<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
43 <span class="token comment"># #000000</span></span> 44<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span>rgb_to_hex<span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment"># #FFFFFF</span></span> 45<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="示ä¾-2-类级çæ" tabindex="-1"><a class="header-anchor" href="#示ä¾-2-类级çæ"><span>ç¤ºä¾ 2ï¼ç±»çº§çæ</span></a></h4><p><strong>è¾å ¥</strong>ï¼</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre><code class="language-text"><span class="line">å建ä¸ä¸ª TypeScript ç±»ï¼å®ç° LRU ç¼åï¼æ¯æ get å put æä½</span> 46<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><strong>è¾åº</strong>ï¼</p><div class="language-typescript line-numbers-mode" data-highlighter="prismjs" data-ext="ts"><pre><code class="language-typescript"><span class="line"><span class="token keyword">class</span> <span class="token class-name">LRUCache<span class="token operator"><</span><span class="token constant">K</span><span class="token punctuation">,</span> <span class="token constant">V</span><span class="token operator">></span></span> <span class="token punctuation">{</span></span> 47<span class="line"> <span class="token keyword">private</span> capacity<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span></span> 48<span class="line"> <span class="token keyword">private</span> cache<span class="token operator">:</span> Map<span class="token operator"><</span><span class="token constant">K</span><span class="token punctuation">,</span> <span class="token constant">V</span><span class="token operator">></span><span class="token punctuation">;</span></span> 49<span class="line"></span> 50<span class="line"> <span class="token function">constructor</span><span class="token punctuation">(</span>capacity<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 51<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span>capacity <span class="token operator"><=</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 52<span class="line"> <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">Error</span><span class="token punctuation">(</span><span class="token string">'Capacity must be positive'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 53<span class="line"> <span class="token punctuation">}</span></span> 54<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>capacity <span class="token operator">=</span> capacity<span class="token punctuation">;</span></span> 55<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>cache <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Map<span class="token operator"><</span><span class="token constant">K</span><span class="token punctuation">,</span> <span class="token constant">V</span><span class="token operator">></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 56<span class="line"> <span class="token punctuation">}</span></span> 57<span class="line"></span> 58<span class="line"> <span class="token doc-comment comment">/**</span> 59<span class="line"> * è·åç¼åå¼</span> 60<span class="line"> * <span class="token keyword">@param</span> <span class="token parameter">key</span> é®</span> 61<span class="line"> * <span class="token keyword">@returns</span> å¼ï¼å¦æä¸åå¨è¿å undefined</span> 62<span class="line"> */</span></span> 63<span class="line"> <span class="token function">
63get</span><span class="token punctuation">(</span>key<span class="token operator">:</span> <span class="token constant">K</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token constant">V</span> <span class="token operator">|</span> <span class="token keyword">undefined</span> <span class="token punctuation">{</span></span> 64<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">this</span><span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">has</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 65<span class="line"> <span class="token keyword">return</span> <span class="token keyword">undefined</span><span class="token punctuation">;</span></span> 66<span class="line"> <span class="token punctuation">}</span></span> 67<span class="line"></span> 68<span class="line"> <span class="token comment">// ç§»å¨å°ææ°ä½ç½®ï¼å é¤åéæ°æå ¥ï¼</span></span> 69<span class="line"> <span class="token keyword">const</span> value <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token operator">!</span><span class="token punctuation">;</span></span> 70<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">delete</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 71<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>key<span class="token punctuation">,</span> value<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 72<span class="line"></span> 73<span class="line"> <span class="token keyword">return</span> value<span class="token punctuation">;</span></span> 74<span class="line"> <span class="token punctuation">}</span></span> 75<span class="line"></span> 76<span class="line"> <span class="token doc-comment comment">/**</span> 77<span class="line"> * 设置ç¼åå¼</span> 78<span class="line"> * <span class="token keyword">@param</span> <span class="token parameter">key</span> é®</span> 79<span class="line"> * <span class="token keyword">@param</span> <span class="token parameter">value</span> å¼</span> 80<span class="line"> */</span></span> 81<span class="line"> <span class="token function">put</span><span class="token punctuation">(</span>key<span class="token operator">:</span> <span class="token constant">K</span><span class="token punctuation">,</span> value<span class="token operator">:</span> <span class="token constant">V</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token keyword">void</span> <span class="token punctuation">{</span></span> 82<span class="line"> <span class="token comment">// 妿é®å·²åå¨ï¼å å é¤</span></span> 83<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">has</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 84<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">delete</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 85<span class="line"> <span class="token punctuation">}</span></span> 86<span class="line"></span> 87<span class="line"> <span class="token comment">// æ·»å æ°é®å¼å¯¹</span></span> 88<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>key<span class="token punctuation">,</span> value<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 89<span class="line"></span> 90<span class="line"> <span class="token comment">// å¦æè¶ åºå®¹éï¼å 餿æ§ç项ï¼Map ç第ä¸é¡¹ï¼</span></span> 91<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>cache<span class="token punctuation">.</span>
91size <span class="token operator">></span> <span class="token keyword">this</span><span class="token punctuation">.</span>capacity<span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 92<span class="line"> <span class="token keyword">const</span> oldestKey <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">keys</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>value<span class="token punctuation">;</span></span> 93<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">delete</span><span class="token punctuation">(</span>oldestKey<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 94<span class="line"> <span class="token punctuation">}</span></span> 95<span class="line"> <span class="token punctuation">}</span></span> 96<span class="line"></span> 97<span class="line"> <span class="token doc-comment comment">/**</span> 98<span class="line"> * è·åå½åç¼å大å°</span> 99<span class="line"> */</span></span> 100<span class="line"> <span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token builtin">number</span> <span class="token punctuation">{</span></span> 101<span class="line"> <span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">.</span>cache<span class="token punctuation">.</span>size<span class="token punctuation">;</span></span> 102<span class="line"> <span class="token punctuation">}</span></span> 103<span class="line"></span> 104<span class="line"> <span class="token doc-comment comment">/**</span> 105<span class="line"> * æ¸ ç©ºç¼å</span> 106<span class="line"> */</span></span> 107<span class="line"> <span class="token function">clear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token keyword">void</span> <span class="token punctuation">{</span></span> 108<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>cache<span class="token punctuation">.</span><span class="token function">clear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 109<span class="line"> <span class="token punctuation">}</span></span> 110<span class="line"><span class="token punctuation">}</span></span> 111<span class="line"></span> 112<span class="line"><span class="token comment">// 使ç¨ç¤ºä¾</span></span> 113<span class="line"><span class="token keyword">const</span> cache <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">LRUCache<span class="token operator"><</span><span class="token builtin">string</span><span class="token punctuation">,</span> <span class="token builtin">number</span><span class="token operator">></span></span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 114<span class="line">cache<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 115<span class="line">cache<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">'b'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 116<span class="line">cache<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">'c'</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 117<span class="line"><span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>cache<span class="token punctuation">.</span><span class="token function">
117get</span><span class="token punctuation">(</span><span class="token string">'a'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 1</span></span> 118<span class="line">cache<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">'d'</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// æ·æ±° 'b'</span></span> 119<span class="line"><span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>cache<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'b'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// undefined</span></span> 120<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="示ä¾-3-模å级çæ" tabindex="-1"><a class="header-anchor" href="#示ä¾-3-模å级çæ"><span>ç¤ºä¾ 3ï¼æ¨¡å级çæ</span></a></h4><p><strong>è¾å ¥</strong>ï¼</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre><code class="language-text"><span class="line">å建ä¸ä¸ª Node.js 模åï¼å®ç°éæµä¸é´ä»¶ï¼ä»¤çæ¡¶ç®æ³ï¼</span> 121<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><strong>è¾åº</strong>ï¼</p><div class="language-javascript line-numbers-mode" data-highlighter="prismjs" data-ext="js"><pre><code class="language-javascript"><span class="line"><span class="token doc-comment comment">/**</span> 122<span class="line"> * ä»¤çæ¡¶éæµä¸é´ä»¶</span> 123<span class="line"> * <span class="token keyword">@module</span> rate-limiter</span> 124<span class="line"> */</span></span> 125<span class="line"></span> 126<span class="line"><span class="token keyword">class</span> <span class="token class-name">TokenBucket</span> <span class="token punctuation">{</span></span> 127<span class="line"> <span class="token function">constructor</span><span class="token punctuation">(</span><span class="token parameter">capacity<span class="token punctuation">,</span> refillRate</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 128<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>capacity <span class="token operator">=</span> capacity<span class="token punctuation">;</span>
128 <span class="token comment">// 桶容é</span></span> 129<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>tokens <span class="token operator">=</span> capacity<span class="token punctuation">;</span> <span class="token comment">// å½åä»¤çæ°</span></span> 130<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>refillRate <span class="token operator">=</span> refillRate<span class="token punctuation">;</span> <span class="token comment">// æ¯ç§è¡¥å çä»¤çæ°</span></span> 131<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>lastRefill <span class="token operator">=</span> Date<span class="token punctuation">.</span><span class="token function">now</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 䏿¬¡è¡¥å æ¶é´</span></span> 132<span class="line"> <span class="token punctuation">}</span></span> 133<span class="line"></span> 134<span class="line"> <span class="token doc-comment comment">/**</span> 135<span class="line"> * å°è¯æ¶èä¸ä¸ªä»¤ç</span> 136<span class="line"> * <span class="token keyword">@returns</span> <span class="token class-name"><span class="token punctuation">{</span>boolean<span class="token punctuation">}</span></span> æ¯å¦æåè·å令ç</span> 137<span class="line"> */</span></span> 138<span class="line"> <span class="token function">consume</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 139<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">refill</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 140<span class="line"></span> 141<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>tokens <span class="token operator">>=</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 142<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>tokens <span class="token operator">-=</span> <span class="token number">1</span><span class="token punctuation">;</span></span> 143<span class="line"> <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span></span> 144<span class="line"> <span class="token punctuation">}</span></span> 145<span class="line"></span> 146<span class="line"> <span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span></span> 147<span class="line"> <span class="token punctuation">}</span></span> 148<span class="line"></span> 149<span class="line"> <span class="token doc-comment comment">/**</span> 150<span class="line"> * è¡¥å 令ç</span> 151<span class="line"> */</span></span> 152<span class="line"> <span class="token function">refill</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 153<span class="line"> <span class="token keyword">const</span> now <span class="token operator">=</span> Date<span class="token punctuation">.</span><span class="token function">now</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 154<span class="line"> <span class="token keyword">const</span> timePassed <span class="token operator">=</span> <span class="token punctuation">(</span>now <span class="token operator">-</span> <span class="token keyword">this</span><span class="token punctuation">.</span>lastRefill<span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">1000</span><span class="token punctuation">;</span> <span class="token comment">// 转æ¢ä¸ºç§</span></span> 155<span class="line"> <span class="token keyword">const</span> tokensToAdd <span class="token operator">=</span> timePassed <span class="token operator">*</span> <span class="token keyword">this</span><span class="token punctuation">.</span>refillRate<span class="token punctuation">;</span></span> 156<span class="line"></span> 157<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>tokens <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">min</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>capacity<span class="token punctuation">,</span> <span class="token keyword">this</span><span class="token punctuation">.</span>tokens <span class="token operator">+</span> tokensToAdd<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 158<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>lastRefill <span class="token operator">=</span> now<span class="token punctuation">;</span></span> 159<span class="line"> <span class="token punctuation">}</span></span> 160<span class="line"><span class="token punctuation">}</span></span> 161<span class="line"></span> 162<span class="line"><span class="token doc-comment comment">/**</span> 163<span class="line"> * åå»ºéæµä¸é´ä»¶</span> 164<span class="line"> * <span class="token keyword">@param</span> <span class="token class-name"><span class="token punctuation">{</span>Object<span class="token punctuation">}</span></span> <span class="token parameter">options</span> é ç½®é项</span> 165<span class="line"> * <span class="token keyword">@param</span> <span class="token class-name"><span class="token punctuation">{</span>number<span class="token punctuation">}</span></span> <span class="token parameter">options<span class="token punctuation">.</span>capacity</span> 桶容éï¼æå¤§çªåè¯·æ±æ°ï¼</span> 166<span class="line"> * <span class="token keyword">@param</span> <span class="token class-name"><span class="token punctuation">{</span>number<span class="token punctuation">}</span></span> <span class="token parameter">options<span class="token punctuation">.</span>refillRate</span> æ¯ç§è¡¥å çä»¤çæ°</span> 167<span class="line"> * <span class="token keyword">@returns</span> <span class="token class-name"><span class="token punctuation">{</span>Function<span class="token punctuation">}</span></span> Express ä¸é´ä»¶å½æ°</span> 168<span class="line"> */</span></span> 169<span class="line"><span class="token keyword">function</span> <span class="token function">createRateLimiter</span><span class="token punctuation">(</span><span class="token parameter">options <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span></span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 170<span class="line"> <span class="token keyword">const</span> <span class="token punctuation">{</span></span> 171<span class="line"> capacity <span class="token operator">=</span> <span class="token number">10</span><span class="token punctuation">,</span></span> 172<span class="line"> refillRate <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span></span> 173<span class="line"> <span class="token function-variable function">keyGenerator</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter">req</span><span class="token punctuation">)</span> <span class="token operator">=></span> req<span class="token punctuation">.</span>ip<span class="token punctuation">,</span></span> 174<span class="line"> <span class="token function-variable function">onRateLimitExceeded</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter">req<span class="token punctuation">,</span> res</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 175<span class="line"> res<span class="token punctuation">.</span><span class="token function">status</span><span class="token punctuation">(</span><span class="token number">429</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">json</span><span class="token punctuation">(</span><span class="token punctuation">{</span></span> 176<span class="line">
176 <span class="token literal-property property">error</span><span class="token operator">:</span> <span class="token string">'Too Many Requests'</span><span class="token punctuation">,</span></span> 177<span class="line"> <span class="token literal-property property">message</span><span class="token operator">:</span> <span class="token string">'请æ±è¿äºé¢ç¹ï¼è¯·ç¨ååè¯'</span></span> 178<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 179<span class="line"> <span class="token punctuation">}</span></span> 180<span class="line"> <span class="token punctuation">}</span> <span class="token operator">=</span> options<span class="token punctuation">;</span></span> 181<span class="line"></span> 182<span class="line"> <span class="token comment">// å卿¯ä¸ª IP çä»¤çæ¡¶</span></span> 183<span class="line"> <span class="token keyword">const</span> buckets <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Map</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 184<span class="line"></span> 185<span class="line"> <span class="token keyword">return</span> <span class="token keyword">function</span> <span class="token function">rateLimiter</span><span class="token punctuation">(</span><span class="token parameter">req<span class="token punctuation">,</span> res<span class="token punctuation">,</span> next</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 186<span class="line"> <span class="token keyword">const</span> key <span class="token operator">=</span> <span class="token function">keyGenerator</span><span class="token punctuation">(</span>req<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 187<span class="line"></span> 188<span class="line"> <span class="token comment">// è·åæåå»ºä»¤çæ¡¶</span></span> 189<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>buckets<span class="token punctuation">.</span><span class="token function">has</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 190<span class="line"> buckets<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>key<span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">TokenBucket</span><span class="token punctuation">(</span>capacity<span class="token punctuation">,</span> refillRate<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 191<span class="line"> <span class="token punctuation">}</span></span> 192<span class="line"></span> 193<span class="line"> <span class="token keyword">const</span> bucket <span class="token operator">=</span> buckets<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 194<span class="line"></span> 195<span class="line"> <span class="token comment">// å°è¯æ¶è令ç</span></span> 196<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span>bucket<span class="token punctuation">.</span><span class="token function">consume</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 197<span class="line"> <span class="token comment">// æ·»å éçéå¶ä¿¡æ¯å°ååºå¤´</span></span> 198<span class="line"> res<span class="token punctuation">.</span><span class="token function">setHeader</span><span class="token punctuation">(</span><span class="token string">'X-RateLimit-Limit'</span><span class="token punctuation">,</span> capacity<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 199<span class="line"> res<span class="token punctuation">.</span><span class="token function">setHeader</span><span class="token punctuation">(</span><span class="token string">'X-RateLimit-Remaining'</span><span class="token punctuation">,</span> Math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span>bucket<span class="token punctuation">.</span>tokens<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 200<span class="line">
200 <span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 201<span class="line"> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span></span> 202<span class="line"> <span class="token function">onRateLimitExceeded</span><span class="token punctuation">(</span>req<span class="token punctuation">,</span> res<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 203<span class="line"> <span class="token punctuation">}</span></span> 204<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">;</span></span> 205<span class="line"><span class="token punctuation">}</span></span> 206<span class="line"></span> 207<span class="line">module<span class="token punctuation">.</span>exports <span class="token operator">=</span> <span class="token punctuation">{</span> createRateLimiter<span class="token punctuation">,</span> TokenBucket <span class="token punctuation">}</span><span class="token punctuation">;</span></span> 208<span class="line"></span> 209<span class="line"><span class="token comment">// 使ç¨ç¤ºä¾</span></span> 210<span class="line"><span class="token comment">/*</span> 211<span class="line">const express = require('express');</span> 212<span class="line">const { createRateLimiter } = require('./rate-limiter');</span> 213<span class="line"></span> 214<span class="line">const app = express();</span> 215<span class="line"></span> 216<span class="line">// åºç¨éæµä¸é´ä»¶</span> 217<span class="line">app.use(createRateLimiter({</span> 218<span class="line"> capacity: 20, // æå¤ 20 个令ç</span> 219<span class="line"> refillRate: 5 // æ¯ç§è¡¥å 5 个令ç</span> 220<span class="line">}));</span> 221<span class="line"></span> 222<span class="line">app.get('/api/data', (req, res) => {</span> 223<span class="line"> res.json({ message: 'Success' });</span> 224<span class="line">});</span> 225<span class="line"></span> 226<span class="line">app.listen(3000);</span> 227<span class="line">*/</span></span> 228<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><hr><h2 id="_2ï¸â£-代ç çè§£è½å" tabindex="-1"><a class="header-anchor" href="#_2ï¸â£-代ç çè§£è½å"><span>2ï¸â£ 代ç çè§£è½å</span></a></h2><h3 id="ä»ä¹æ¯ä»£ç çè§£" tabindex="-1"><a class="header-anchor" href="#ä»ä¹æ¯ä»£ç çè§£"><span>ä»ä¹æ¯ä»£ç çè§£ï¼</span></a></h3><p><strong>å®ä¹</strong>ï¼åæç°æä»£ç ï¼çè§£å ¶åè½ãé»è¾åæå¾ï¼å¹¶æä¾è§£éæææ¡£ã</p><h3 id="ç解维度" tabindex="-1"><a class="header-anchor" href="#ç解维度"><span>ç解维度</span></a></h3><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre><code class="language-text"><span class="line">代ç çè§£çåä¸ªå±æ¬¡ï¼</span> 229<span class="line"></span> 230<span class="line">ââââââââââââââââââââââââââââââââââââ</span> 231<span class="line">â 4. æ¶æçè§£ â</span> 232<span class="line">â ââ ç³»ç»è®¾è®¡ã模åå ³ç³» â</span> 233<span class="line">ââââââââââââââââââââââââââââââââââââ¤</span> 234<span class="line">â 3. ä¸å¡é»è¾çè§£ â</span> 235<span class="line">â ââ åè½ç®çãä¸å¡æµç¨ â</span> 236<span class="line">ââââââââââââââââââââââââââââââââââââ¤</span> 237<span class="line">â 2. ç®æ³çè§£ â</span> 238<span class="line">â ââ ç®æ³åçãæ¶é´å¤æåº¦ â</span> 239<span class="line">ââââââââââââââââââââââââââââââââââââ¤</span> 240<span class="line">â 1. è¯æ³çè§£ â</span> 241<span class="line">â ââ 代ç ç»æãè¯æ³è§å â</span> 242<span class="line">ââââââââââââââââââââââââââââââââââââ</span> 243<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="å®æç¤ºä¾-1" tabindex="-1"><a class="header-anchor" href="#å®æç¤ºä¾-1"><span>å®æç¤ºä¾</span></a></h3><h4 id="示ä¾-1-å¤æç®æ³è§£é" tabindex="-1"><a class="header-anchor" href="#示ä¾-1-å¤æç®æ³è§£é"><span>ç¤ºä¾ 1ï¼å¤æç®æ³è§£é</span></a></h4><p><strong>è¾å ¥ä»£ç </strong>ï¼</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line"><span class="token keyword">def</span> <span class="token function">quick_select</span><span class="token punctuation">(</span>arr<span class="token punctuation">,</span> k<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 244<span class="line"> <span class="token keyword">if</span> <span class="token builtin">len</span><span class="token punctuation">(</span>arr<span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">:</span></span> 245<span class="line">
245 <span class="token keyword">return</span> arr<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span></span> 246<span class="line"> </span> 247<span class="line"> pivot <span class="token operator">=</span> arr<span class="token punctuation">[</span><span class="token builtin">len</span><span class="token punctuation">(</span>arr<span class="token punctuation">)</span> <span class="token operator">//</span> <span class="token number">2</span><span class="token punctuation">]</span></span> 248<span class="line"> left <span class="token operator">=</span> <span class="token punctuation">[</span>x <span class="token keyword">for</span> x <span class="token keyword">in</span> arr <span class="token keyword">if</span> x <span class="token operator"><</span> pivot<span class="token punctuation">]</span></span> 249<span class="line"> mid <span class="token operator">=</span> <span class="token punctuation">[</span>x <span class="token keyword">for</span> x <span class="token keyword">in</span> arr <span class="token keyword">if</span> x <span class="token operator">==</span> pivot<span class="token punctuation">]</span></span> 250<span class="line"> right <span class="token operator">=</span> <span class="token punctuation">[</span>x <span class="token keyword">for</span> x <span class="token keyword">in</span> arr <span class="token keyword">if</span> x <span class="token operator">></span> pivot<span class="token punctuation">]</span></span> 251<span class="line"> </span> 252<span class="line"> <span class="token keyword">if</span> k <span class="token operator"><</span> <span class="token builtin">len</span><span class="token punctuation">(</span>left<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 253<span class="line"> <span class="token keyword">return</span> quick_select<span class="token punctuation">(</span>left<span class="token punctuation">,</span> k<span class="token punctuation">)</span></span> 254<span class="line"> <span class="token keyword">elif</span> k <span class="token operator"><</span> <span class="token builtin">len</span><span class="token punctuation">(</span>left<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token builtin">len</span><span class="token punctuation">(</span>mid<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 255<span class="line"> <span class="token keyword">return</span> mid<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span></span> 256<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 257<span class="line"> <span class="token keyword">return</span> quick_select<span class="token punctuation">(</span>right<span class="token punctuation">,</span> k <span class="token operator">-</span> <span class="token builtin">len</span><span class="token punctuation">(</span>left<span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token builtin">len</span><span class="token punctuation">(</span>mid<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 258<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>让 Codex è§£é</strong>ï¼</p><p><strong>è¾åº</strong>ï¼</p><div class="language-markdown line-numbers-mode" data-highlighter="prismjs" data-ext="md"><pre><code class="language-markdown"><span class="line"><span class="token title important"><span class="token punctuation">#</span> Quick Select ç®æ³è§£é</span></span> 259<span class="line"></span> 260<span class="line"><span class="token title important"><span class="token punctuation">##</span> åè½</span></span> 261<span class="line">卿ªæåºçæ°ç»ä¸æ¾å°ç¬¬ k å°çå ç´ ï¼k ä» 0 å¼å§ï¼ã</span> 262<span class="line"></span> 263<span class="line"><span class="token title important"><span class="token punctuation">##</span> ç®æ³åç</span></span> 264<span class="line">使ç¨å¿«éæåºçååºææ³ï¼</span> 265<span class="line"></span> 266<span class="line"><span class="token list punctuation">1.</span> <span class="token bold"><span class="token punctuation">**</span><span class="token content">éæ©åºåå¼ï¼pivotï¼</span><span class="token punctuation">**</span></span></span> 267<span class="line"> <span class="token list punctuation">-</span> éæ©æ°ç»ä¸é´ä½ç½®çå ç´ ä½ä¸ºåºå</span> 268<span class="line"></span> 269<span class="line"><span class="token list punctuation">2.</span> <span class="token bold"><span class="token punctuation">**</span><span class="token content">ååº</span><span class="token punctuation">**</span></span></span> 270<span class="line"> <span class="token list punctuation">-</span> left: ææå°äº pivot çå ç´ </span> 271<span class="line"> <span class="token list punctuation">-</span> mid: ææçäº pivot çå ç´ </span> 272<span class="line"> <span class="token list punctuation">-</span> right: ææå¤§äº pivot çå ç´ </span> 273<span class="line"></span> 274<span class="line"><span class="token list punctuation">3.</span> <span class="token bold"><span class="token punctuation">**</span><span class="token content">é彿¥æ¾</span><span class="token punctuation">**</span></span></span> 275<span class="line"> <span class="token list punctuation">-</span> 妿 k < len(left)ï¼ç¬¬ k å°çå ç´ å¨ left ä¸</span> 276<span class="line"> <span class="token list punctuation">-</span> 妿 k < len(left) + len(mid)ï¼pivot å°±æ¯çæ¡</span> 277<span class="line"> <span class="token list punctuation">-</span> å¦åï¼å¨ right 䏿¥æ¾ç¬¬ (k - len(left) - len(mid)) å°çå ç´ </span> 278<span class="line"></span> 279<span class="line"><span class="token title important"><span class="token punctuation">##</span> æ¶é´å¤æåº¦</span></span> 280<span class="line"><span class="token list punctuation">-</span> <span class="token bold"><span class="token punctuation">**</span><span class="token content">å¹³åæ åµ</span><span class="token punctuation">**</span></span>ï¼O(n) - æ¯æ¬¡éå½å¤ç约ä¸åçå ç´ </span> 281<span class="line"><span class="token list punctuation">-</span> <span class="token bold"><span class="token punctuation">**</span><span class="token content">æåæ åµ</span><span class="token punctuation">**</span></span>ï¼O(n²) - æ¯æ¬¡åªåå°ä¸ä¸ªå ç´ </span> 282<span class="line"></span> 283<span class="line"><span class="token title important"><span class="token punctuation">##</span> 空é´å¤æåº¦</span></span> 284<span class="line">
284O(n) - ç±äºåå»ºäºæ°çå表</span> 285<span class="line"></span> 286<span class="line"><span class="token title important"><span class="token punctuation">##</span> 使ç¨ç¤ºä¾</span></span> 287<span class="line">\`\`\`python</span> 288<span class="line">arr = [3, 2, 1, 5, 6, 4]</span> 289<span class="line">print(quick_select(arr, 2)) # è¾åº: 3 (第3å°çå ç´ )</span> 290<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="ä¼å建议" tabindex="-1"><a class="header-anchor" href="#ä¼å建议"><span>ä¼å建议</span></a></h2><ul><li>使ç¨åå°ååºå¯ä»¥éä½ç©ºé´å¤æåº¦å° O(log n)</li><li>使ç¨éæºå pivot å¯ä»¥é¿å æåæ åµ</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre><code class="language-text"><span class="line"></span> 291<span class="line">#### ç¤ºä¾ 2ï¼çæä»£ç ææ¡£</span> 292<span class="line"></span> 293<span class="line">**è¾å ¥**ï¼</span> 294<span class="line">\`\`\`javascript</span> 295<span class="line">function memoize(fn) {</span> 296<span class="line"> const cache = new Map();</span> 297<span class="line"> return function(...args) {</span> 298<span class="line"> const key = JSON.stringify(args);</span> 299<span class="line"> if (cache.has(key)) {</span> 300<span class="line"> return cache.get(key);</span> 301<span class="line"> }</span> 302<span class="line"> const result = fn.apply(this, args);</span> 303<span class="line"> cache.set(key, result);</span> 304<span class="line"> return result;</span> 305<span class="line"> };</span> 306<span class="line">}</span> 307<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>让 Codex çæ JSDoc</strong>ï¼</p><p><strong>è¾åº</strong>ï¼</p><div class="language-javascript line-numbers-mode" data-highlighter="prismjs" data-ext="js"><pre><code class="language-javascript"><span class="line"><span class="token doc-comment comment">/**</span> 308<span class="line"> * å建ä¸ä¸ªå¸¦ç¼ååè½ç彿°å è£ å¨ï¼è®°å¿åï¼</span> 309<span class="line"> * </span> 310<span class="line"> * <span class="token keyword">@template</span> <span class="token class-name">T</span> - 彿°çè¿åç±»å</span> 311<span class="line"> * <span class="token keyword">@param</span> <span class="token class-name"><span class="token punctuation">{</span>Function<span class="token punctuation">}</span></span> <span class="token parameter">fn</span> - éè¦ç¼åç»æç彿°</span> 312<span class="line"> * <span class="token keyword">@returns</span> <span class="token class-name"><span class="token punctuation">{</span>Function<span class="token punctuation">}</span></span> å è£ åç彿°ï¼ä¼èªå¨ç¼åç¸ååæ°ç计ç®ç»æ</span> 313<span class="line"> * </span> 314<span class="line"> * <span class="token keyword">@description</span></span> 315<span class="line"> * è¯¥å½æ°ä½¿ç¨ Map æ¥ç¼å彿°è°ç¨çç»æã</span> 316<span class="line"> * å½ä½¿ç¨ç¸ååæ°è°ç¨æ¶ï¼ç´æ¥è¿åç¼åçç»æï¼é¿å éå¤è®¡ç®ã</span> 317<span class="line"> * </span> 318<span class="line"> * <span class="token keyword">@example</span></span> 319<span class="line"> <span class="token example">* <span class="token code language-javascript"><span class="token comment">// å建ä¸ä¸ªææ³¢é£å¥å½æ°</span></span></span> 320<span class="line"> * <span class="token code language-javascript"><span class="token keyword">const</span> fibonacci <span class="token operator">=</span> <span class="token function">memoize</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">n</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span></span> 321<span class="line"> * <span class="token code language-javascript"><span class="token keyword">if</span> <span class="token punctuation">(</span>n <span class="token operator"><=</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token keyword">return</span> n<span class="token punctuation">;</span></span></span> 322<span class="line"> * <span class="token code language-javascript"><span class="token keyword">return</span> <span class="token function">fibonacci</span><span class="token punctuation">(</span>n <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token function">fibonacci</span><span class="token punctuation">(</span>n <span class="token operator">-</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span></span> 323<span class="line"> * <span class="token code language-javascript"><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span></span> 324<span class="line"> * </span> 325<span class="line"> <span class="token code language-javascript"><span class="token operator">*</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token function">fibonacci</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// ç¬¬ä¸æ¬¡è®¡ç®</span></span></span> 326<span class="line"> * <span class="token code language-javascript">console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token function">fibonacci</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// ç´æ¥ä»ç¼åè¿å</span></span></span> 327<span class="line"> <span class="token code language-javascript"><span class="token operator">*</span></span></span> </span> 328<span class="line"> * <span class="token keyword">@performance</span></span> 329<span class="line"> * - æ¶é´å¤æåº¦ï¼O(1) 对äºç¼åå½ä¸çæ åµ</span> 330<span class="line"> * - 空é´å¤æåº¦ï¼O(n) n 为ä¸ååæ°ç»åçæ°é</span> 331<span class="line"> * </span> 332<span class="line"> * <span class="token keyword">@note</span></span> 333<span class="line"> * - åæ°ä½¿ç¨ JSON.stringify åºåå为ç¼åé®</span> 334<span class="line"> * - ä¸éç¨äºåæ°å å«å½æ°æå¾ªç¯å¼ç¨çæ åµ</span> 335<span class="line"> * - éåçº¯å½æ°ï¼ä¸éåæå¯ä½ç¨ç彿°</span> 336<span class="line"> */</span></span> 337<span class="line"><span class="token keyword">function</span> <span class="token function">memoize</span><span class="token punctuation">(</span><span class="token parameter">fn</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 338<span class="line"> <span class="token keyword">const</span> cache <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Map</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 339<span class="line"> <span class="token keyword">return</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter"><span class="token operator">...</span>args</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 340<span class="line"> <span class="token keyword">const</span> key <span class="token operator">=</span> <span class="token constant">JSON</span><span class="token punctuation">.</span><span class="token function">stringify</span><span class="token punctuation">(</span>args<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 341<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span>cache<span class="token punctuation">.</span><span class="token function">has</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 342<span class="line">
342 <span class="token keyword">return</span> cache<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 343<span class="line"> <span class="token punctuation">}</span></span> 344<span class="line"> <span class="token keyword">const</span> result <span class="token operator">=</span> <span class="token function">fn</span><span class="token punctuation">.</span><span class="token function">apply</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> args<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 345<span class="line"> cache<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>key<span class="token punctuation">,</span> result<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 346<span class="line"> <span class="token keyword">return</span> result<span class="token punctuation">;</span></span> 347<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">;</span></span> 348<span class="line"><span class="token punctuation">}</span></span> 349<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><hr><h2 id="_3ï¸â£-代ç è¡¥å ¨è½å" tabindex="-1"><a class="header-anchor" href="#_3ï¸â£-代ç è¡¥å ¨è½å"><span>3ï¸â£ 代ç è¡¥å ¨è½å</span></a></h2><h3 id="ä»ä¹æ¯ä»£ç è¡¥å ¨" tabindex="-1"><a class="header-anchor" href="#ä»ä¹æ¯ä»£ç è¡¥å ¨"><span>ä»ä¹æ¯ä»£ç è¡¥å ¨ï¼</span></a></h3><p><strong>å®ä¹</strong>ï¼åºäºä¸ä¸æï¼èªå¨ç»å代ç ï¼æä¾æºè½å»ºè®®ã</p><h3 id="è¡¥å ¨ç±»å" tabindex="-1"><a class="header-anchor" href="#è¡¥å ¨ç±»å"><span>è¡¥å ¨ç±»å</span></a></h3><table><thead><tr><th>ç±»å</th><th>è§¦åæ¹å¼</th><th>åºç¨åºæ¯</th><th>示ä¾</th></tr></thead><tbody><tr><td><strong>åè¡è¡¥å ¨</strong></td><td>è¾å ¥é¨å代ç </td><td>ç®åè¯å¥</td><td><code>const user =</code> â <code>const user = await fetchUser()</code></td></tr><tr><td><strong>å¤è¡è¡¥å ¨</strong></td><td>åæ³¨éæå½æ°ç¾å</td><td>彿°å®ç°</td><td>å彿°ç¾å â çæå®æ´å½æ°ä½</td></tr><tr><td><strong>模å¼è¡¥å ¨</strong></td><td>è¯å«ä»£ç 模å¼</td><td>é夿ä½</td><td>å第ä¸ä¸ªcase â è¡¥å ¨ææcase</td></tr><tr><td><strong>ä¸ä¸æè¡¥å ¨</strong></td><td>åæé¡¹ç®ä»£ç </td><td>符å项ç®é£æ ¼</td><td>èªå¨å¹é å½ååç»æ</td></tr></tbody></table><h3 id="å®æç¤ºä¾-2" tabindex="-1"><a class="header-anchor" href="#å®æç¤ºä¾-2"><span>å®æç¤ºä¾</span></a></h3><h4 id="示ä¾-1-æºè½åè¡è¡¥å ¨" tabindex="-1"><a class="header-anchor" href="#示ä¾-1-æºè½åè¡è¡¥å ¨"><span>ç¤ºä¾ 1ï¼æºè½åè¡è¡¥å ¨</span></a></h4><p><strong>ä½ è¾å ¥</strong>ï¼</p><div class="language-javascript line-numbers-mode" data-highlighter="prismjs" data-ext="js"><pre><code class="language-javascript"><span class="line"><span class="token comment">// ä» API è·åç¨æ·æ°æ®</span></span> 350<span class="line"><span class="token keyword">const</span> userData <span class="token operator">=</span></span> 351<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>Codex è¡¥å ¨</strong>ï¼</p><div class="language-javascript line-numbers-mode" data-highlighter="prismjs" data-ext="js"><pre><code class="language-javascript"><span class="line"><span class="token keyword">const</span> userData <span class="token operator">=</span> <span class="token keyword">await</span> <span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">'/api/user'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">res</span> <span class="token operator">=></span> res<span class="token punctuation">.</span><span class="token function">json</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 352<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="示ä¾-2-彿°ä½è¡¥å ¨" tabindex="-1"><a class="header-anchor" href="#示ä¾-2-彿°ä½è¡¥å ¨"><span>ç¤ºä¾ 2ï¼å½æ°ä½è¡¥å ¨</span></a></h4><p><strong>ä½ è¾å ¥</strong>ï¼</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line"><span class="token keyword">def</span> <span class="token function">binary_search</span><span class="token punctuation">(</span>arr<span class="token punctuation">,</span> target<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 353<span class="line"> <span class="token triple-quoted-string string">"""å¨æåºæ°ç»ä¸æ¥æ¾ç®æ å¼ï¼è¿åç´¢å¼ï¼æ¾ä¸å°è¿å -1"""</span></span> 354<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>Codex è¡¥å ¨</strong>ï¼</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line"><span class="token keyword">def</span> <span class="token function">binary_search</span><span class="token punctuation">(</span>arr<span class="token punctuation">,</span> target<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 355<span class="line"> <span class="token triple-quoted-string string">"""å¨æåºæ°ç»ä¸æ¥æ¾ç®æ å¼ï¼è¿åç´¢å¼ï¼æ¾ä¸å°è¿å -1"""</span></span> 356<span class="line"> left<span class="token punctuation">,</span> right <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token builtin">len</span><span class="token punctuation">(</span>arr<span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">1</span></span> 357<span class="line"> </span> 358<span class="line"> <span class="token keyword">while</span> left <span class="token operator"><=</span> right<span class="token punctuation">:</span></span> 359<span class="line"> mid <span class="token operator">=</span> <span class="token punctuation">(</span>left <span class="token operator">+</span> right<span class="token punctuation">)</span> <span class="token operator">//</span> <span class="token number">2</span></span> 360<span class="line"> </span> 361<span class="line">
361 <span class="token keyword">if</span> arr<span class="token punctuation">[</span>mid<span class="token punctuation">]</span> <span class="token operator">==</span> target<span class="token punctuation">:</span></span> 362<span class="line"> <span class="token keyword">return</span> mid</span> 363<span class="line"> <span class="token keyword">elif</span> arr<span class="token punctuation">[</span>mid<span class="token punctuation">]</span> <span class="token operator"><</span> target<span class="token punctuation">:</span></span> 364<span class="line"> left <span class="token operator">=</span> mid <span class="token operator">+</span> <span class="token number">1</span></span> 365<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 366<span class="line"> right <span class="token operator">=</span> mid <span class="token operator">-</span> <span class="token number">1</span></span> 367<span class="line"> </span> 368<span class="line"> <span class="token keyword">return</span> <span class="token operator">-</span><span class="token number">1</span></span> 369<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="示ä¾-3-模å¼è¯å«è¡¥å ¨" tabindex="-1"><a class="header-anchor" href="#示ä¾-3-模å¼è¯å«è¡¥å ¨"><span>ç¤ºä¾ 3ï¼æ¨¡å¼è¯å«è¡¥å ¨</span></a></h4><p><strong>ä½ è¾å ¥</strong>ï¼</p><div class="language-typescript line-numbers-mode" data-highlighter="prismjs" data-ext="ts"><pre><code class="language-typescript"><span class="line"><span class="token keyword">interface</span> <span class="token class-name">User</span> <span class="token punctuation">{</span></span> 370<span class="line"> id<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span></span> 371<span class="line"> name<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span></span> 372<span class="line"> email<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span></span> 373<span class="line"> age<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span></span> 374<span class="line"><span class="token punctuation">}</span></span> 375<span class="line"></span> 376<span class="line"><span class="token comment">// åå»ºç¨æ·éªè¯å½æ°</span></span> 377<span class="line"><span class="token keyword">function</span> <span class="token function">validateUser</span><span class="token punctuation">(</span>user<span class="token operator">:</span> User<span class="token punctuation">)</span><span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token punctuation">{</span></span> 378<span class="line"> <span class="token keyword">const</span> errors<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span></span> 379<span class="line"> </span> 380<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>user<span class="token punctuation">.</span>id <span class="token operator">||</span> user<span class="token punctuation">.</span>id <span class="token operator"><=</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 381<span class="line"> errors<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">'Invalid user ID'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 382<span class="line"> <span class="token punctuation">}</span></span> 383<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>Codex è¡¥å ¨ï¼è¯å«äºéªè¯æ¨¡å¼ï¼</strong>ï¼</p><div class="language-typescript line-numbers-mode" data-highlighter="prismjs" data-ext="ts"><pre><code class="language-typescript"><span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>user<span class="token punctuation">.</span>name <span class="token operator">||</span> user<span class="token punctuation">.</span>name<span class="token punctuation">.</span><span class="token function">trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">===</span> <span class="token string">''</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 384<span class="line"> errors<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">'Name is required'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 385<span class="line"> <span class="token punctuation">}</span></span> 386<span class="line"> </span> 387<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>user<span class="token punctuation">.</span>email <span class="token operator">||</span> <span class="token operator">!</span>user<span class="token punctuation">.</span>email<span class="token punctuation">.</span><span class="token function">includes</span><span class="token punctuation">(</span><span class="token string">'@'</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 388<span class="line"> errors<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">'Invalid email format'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 389<span class="line"> <span class="token punctuation">}</span></span> 390<span class="line"> </span> 391<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>user<span class="token punctuation">.</span>age <span class="token operator">||</span> user<span class="token punctuation">.</span>age <span class="token operator"><</span> <span class="token number">0</span> <span class="token operator">||</span> user<span class="token punctuation">.</span>age <span class="token operator">></span> <span class="token number">150</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 392<span class="line"> errors<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">'Invalid age'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 393<span class="line"> <span class="token punctuation">}</span></span> 394<span class="line"> </span> 395<span class="line"> <span class="token keyword">return</span> errors<span class="token punctuation">;</span></span> 396<span class="line"><span class="token punctuation">}</span></span> 397<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><hr><h2 id="_4ï¸â£-代ç 转æ¢è½å" tabindex="-1"><a class="header-anchor" href="#_4ï¸â£-代ç 转æ¢è½å"><span>4ï¸â£ 代ç 转æ¢è½å</span></a></h2><h3 id="ä»ä¹æ¯ä»£ç 转æ¢" tabindex="-1"><a class="header-anchor" href="#ä»ä¹æ¯ä»£ç 转æ¢"><span>ä»ä¹æ¯ä»£ç 转æ¢ï¼</span></a></h3><p><strong>å®ä¹</strong>ï¼å¨ä¸åç¼ç¨è¯è¨ãæ¡æ¶æèå¼ä¹é´è½¬æ¢ä»£ç ï¼ä¿æåè½ä¸åã</p><h3 id="转æ¢ç±»å" tabindex="-1"><a class="header-anchor" href="#转æ¢ç±»å"><span>转æ¢ç±»å</span></a></h3><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre><code class="language-text"><span class="line">代ç 转æ¢çåç§ç±»åï¼</span> 398<span class="line"></span> 399<span class="line">
3991. è¯è¨è½¬æ¢</span> 400<span class="line"> Python â JavaScript â Go â ...</span> 401<span class="line"></span> 402<span class="line">2. èå¼è½¬æ¢</span> 403<span class="line"> é¢å对象 â 彿°å¼ â ååºå¼</span> 404<span class="line"></span> 405<span class="line">3. æ¡æ¶è½¬æ¢</span> 406<span class="line"> React â Vue â Angular</span> 407<span class="line"></span> 408<span class="line">4. çæ¬è½¬æ¢</span> 409<span class="line"> ES5 â ES6 â TypeScript</span> 410<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="å®æç¤ºä¾-3" tabindex="-1"><a class="header-anchor" href="#å®æç¤ºä¾-3"><span>å®æç¤ºä¾</span></a></h3><h4 id="示ä¾-1-python-转-javascript" tabindex="-1"><a class="header-anchor" href="#示ä¾-1-python-转-javascript"><span>ç¤ºä¾ 1ï¼Python 转 JavaScript</span></a></h4><p><strong>è¾å ¥ï¼Pythonï¼</strong>ï¼</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line"><span class="token keyword">def</span> <span class="token function">fibonacci</span><span class="token punctuation">(</span>n<span class="token punctuation">,</span> memo<span class="token operator">=</span><span class="token boolean">None</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 411<span class="line"> <span class="token keyword">if</span> memo <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span></span> 412<span class="line"> memo <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span></span> 413<span class="line"> </span> 414<span class="line"> <span class="token keyword">if</span> n <span class="token keyword">in</span> memo<span class="token punctuation">:</span></span> 415<span class="line"> <span class="token keyword">return</span> memo<span class="token punctuation">[</span>n<span class="token punctuation">]</span></span> 416<span class="line"> </span> 417<span class="line"> <span class="token keyword">if</span> n <span class="token operator"><=</span> <span class="token number">1</span><span class="token punctuation">:</span></span> 418<span class="line"> <span class="token keyword">return</span> n</span> 419<span class="line"> </span> 420<span class="line"> memo<span class="token punctuation">[</span>n<span class="token punctuation">]</span> <span class="token operator">=</span> fibonacci<span class="token punctuation">(</span>n<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> memo<span class="token punctuation">)</span> <span class="token operator">+</span> fibonacci<span class="token punctuation">(</span>n<span class="token operator">-</span><span class="token number">2</span><span class="token punctuation">,</span> memo<span class="token punctuation">)</span></span> 421<span class="line"> <span class="token keyword">return</span> memo<span class="token punctuation">[</span>n<span class="token punctuation">]</span></span> 422<span class="line"></span> 423<span class="line"><span class="token comment"># çæå10ä¸ªææ³¢é£å¥æ°</span></span> 424<span class="line">result <span class="token operator">=</span> <span class="token punctuation">[</span>fibonacci<span class="token punctuation">(</span>i<span class="token punctuation">)</span> <span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">]</span></span> 425<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span></span> 426<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>è¾åºï¼JavaScriptï¼</strong>ï¼</p><div class="language-javascript line-numbers-mode" data-highlighter="prismjs" data-ext="js"><pre><code class="language-javascript"><span class="line"><span class="token keyword">function</span> <span class="token function">fibonacci</span><span class="token punctuation">(</span><span class="token parameter">n<span class="token punctuation">,</span> memo <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span></span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 427<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span>n <span class="token keyword">in</span> memo<span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 428<span class="line"> <span class="token keyword">return</span> memo<span class="token punctuation">[</span>n<span class="token punctuation">]</span><span class="token punctuation">;</span></span> 429<span class="line"> <span class="token punctuation">}</span></span> 430<span class="line"> </span> 431<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span>n <span class="token operator"><=</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 432<span class="line"> <span class="token keyword">return</span> n<span class="token punctuation">;</span></span> 433<span class="line"> <span class="token punctuation">}</span></span> 434<span class="line"> </span> 435<span class="line"> memo<span class="token punctuation">[</span>n<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">fibonacci</span><span class="token punctuation">(</span>n <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">,</span> memo<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token function">fibonacci</span><span class="token punctuation">(</span>n <span class="token operator">-</span> <span class="token number">2</span><span class="token punctuation">,</span> memo<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 436<span class="line"> <span class="token keyword">return</span> memo<span class="token punctuation">[</span>n<span class="token punctuation">]</span><span class="token punctuation">;</span></span> 437<span class="line"><span class="token punctuation">}</span></span> 438<span class="line"></span> 439<span class="line"><span class="token comment">// çæå10ä¸ªææ³¢é£å¥æ°</span></span> 440<span class="line"><span class="token keyword">const</span> result <span class="token operator">=</span> Array<span class="token punctuation">.</span><span class="token function">from</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">length</span><span class="token operator">:</span> <span class="token number">10</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter">_<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token function">fibonacci</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 441<span class="line">console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 442<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="示ä¾-2-react-class-ç»ä»¶è½¬-hooks" tabindex="-1"><a class="header-anchor" href="#示ä¾-2-react-class-ç»ä»¶è½¬-hooks"><span>ç¤ºä¾ 2ï¼React Class ç»ä»¶è½¬ Hooks</span></a></h4><p><strong>è¾å ¥ï¼Class Componentï¼</strong>ï¼</p><div class="language-jsx line-numbers-mode" data-highlighter="prismjs" data-ext="jsx"><pre><code class="language-jsx"><span class="line"><span class="token keyword">class</span> <span class="token class-name">Counter</span> <span class="token keyword">extends</span> <span class="token class-name">React<span class="token punctuation">.</span>Component</span> <span class="token punctuation">{</span></span> 443<span class="line"> <span class="token function">constructor</span><span class="token punctuation">(</span><span class="token parameter">props</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 444<span class="line"> <span class="token keyword">
444super</span><span class="token punctuation">(</span>props<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 445<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>state <span class="token operator">=</span> <span class="token punctuation">{</span></span> 446<span class="line"> <span class="token literal-property property">count</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span></span> 447<span class="line"> <span class="token literal-property property">step</span><span class="token operator">:</span> <span class="token number">1</span></span> 448<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">;</span></span> 449<span class="line"> <span class="token punctuation">}</span></span> 450<span class="line"></span> 451<span class="line"> <span class="token function">componentDidMount</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 452<span class="line"> document<span class="token punctuation">.</span>title <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">\`</span><span class="token string">Count: </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">\${</span><span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>count<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">\`</span></span><span class="token punctuation">;</span></span> 453<span class="line"> <span class="token punctuation">}</span></span> 454<span class="line"></span> 455<span class="line"> <span class="token function">componentDidUpdate</span><span class="token punctuation">(</span><span class="token parameter">prevProps<span class="token punctuation">,</span> prevState</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 456<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span>prevState<span class="token punctuation">.</span>count <span class="token operator">!==</span> <span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>count<span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 457<span class="line"> document<span class="token punctuation">.</span>title <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">\`</span><span class="token string">Count: </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">\${</span><span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">.</span>count<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">\`</span></span><span class="token punctuation">;</span></span> 458<span class="line"> <span class="token punctuation">}</span></span> 459<span class="line"> <span class="token punctuation">}</span></span> 460<span class="line"></span> 461<span class="line"> <span class="token function-variable function">increment</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 462<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setState</span><span class="token punctuation">(</span><span class="token parameter">state</span> <span class="token operator">=></span> <span class="token punctuation">(</span><span class="token punctuation">{</span></span> 463<span class="line">
463 <span class="token literal-property property">count</span><span class="token operator">:</span> state<span class="token punctuation">.</span>count <span class="token operator">+</span> state<span class="token punctuation">.</span>step</span> 464<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 465<span class="line"> <span class="token punctuation">}</span></span> 466<span class="line"></span> 467<span class="line"> <span class="token function-variable function">setStep</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter">step</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 468<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setState</span><span class="token punctuation">(</span><span class="token punctuation">{</span> step <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 469<span class="line"> <span class="token punctuation">}</span></span> 470<span class="line"></span> 471<span class="line"> <span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 472<span class="line"> <span class="token keyword">const</span> <span class="token punctuation">{</span> count<span class="token punctuation">,</span> step <span class="token punctuation">}</span> <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>state<span class="token punctuation">;</span></span> 473<span class="line"> </span> 474<span class="line"> <span class="token keyword">return</span> <span class="token punctuation">(</span></span> 475<span class="line"> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span><span class="token punctuation">></span></span><span class="token plain-text"></span> 476<span class="line"> </span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span><span class="token punctuation">></span></span><span class="token plain-text">Count: </span><span class="token punctuation">{</span>count<span class="token punctuation">}</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span><span class="token plain-text"></span> 477<span class="line"> </span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>button</span> <span class="token attr-name">onClick</span><span class="token script language-javascript"><span class="token script-punctuation punctuation">=</span><span class="token punctuation">{</span><span class="token keyword">this</span><span class="token punctuation">.</span>increment<span class="token punctuation">}</span></span><span class="token punctuation">></span></span><span class="token plain-text">+</span><span class="token punctuation">{</span>step<span class="token punctuation">}</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>button</span><span class="token punctuation">></span></span><span class="token plain-text"></span> 478<span class="line"> </span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> </span> 479<span class="line"> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>number<span class="token punctuation">"</span></span> </span> 480<span class="line"> <span class="token attr-name">value</span><span class="token script language-javascript"><span class="token script-punctuation punctuation">=</span><span class="token punctuation">{</span>step<span class="token punctuation">}</span></span> </span> 481<span class="line">
481 <span class="token attr-name">onChange</span><span class="token script language-javascript"><span class="token script-punctuation punctuation">=</span><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token parameter">e</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setStep</span><span class="token punctuation">(</span><span class="token function">Number</span><span class="token punctuation">(</span>e<span class="token punctuation">.</span>target<span class="token punctuation">.</span>value<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span></span> 482<span class="line"> <span class="token punctuation">/></span></span><span class="token plain-text"></span> 483<span class="line"> </span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span></span> 484<span class="line"> <span class="token punctuation">)</span><span class="token punctuation">;</span></span> 485<span class="line"> <span class="token punctuation">}</span></span> 486<span class="line"><span class="token punctuation">}</span></span> 487<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>è¾åºï¼Hooksï¼</strong>ï¼</p><div class="language-jsx line-numbers-mode" data-highlighter="prismjs" data-ext="jsx"><pre><code class="language-jsx"><span class="line"><span class="token keyword">import</span> <span class="token punctuation">{</span> useState<span class="token punctuation">,</span> useEffect <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'react'</span><span class="token punctuation">;</span></span> 488<span class="line"></span> 489<span class="line"><span class="token keyword">function</span> <span class="token function">Counter</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 490<span class="line"> <span class="token keyword">const</span> <span class="token punctuation">[</span>count<span class="token punctuation">,</span> setCount<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">useState</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 491<span class="line"> <span class="token keyword">const</span> <span class="token punctuation">[</span>step<span class="token punctuation">,</span> setStep<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">useState</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 492<span class="line"></span> 493<span class="line"> <span class="token comment">// æ¿ä»£ componentDidMount å componentDidUpdate</span></span> 494<span class="line"> <span class="token function">useEffect</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 495<span class="line"> document<span class="token punctuation">.</span>title <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">\`</span><span class="token string">Count: </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">\${</span>count<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">\`</span></span><span class="token punctuation">;</span></span> 496<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">[</span>count<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 497<span class="line"></span> 498<span class="line"> <span class="token keyword">const</span> <span class="token function-variable function">increment</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 499<span class="line"> <span class="token function">setCount</span><span class="token punctuation">(</span><span class="token parameter">prevCount</span> <span class="token operator">=></span> prevCount <span class="token operator">+</span> step<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 500<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">;</span></span> 501<span class="line"></span> 502<span class="line"> <span class="token keyword">const</span> <span class="token function-variable function">
502handleStepChange</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter">e</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 503<span class="line"> <span class="token function">setStep</span><span class="token punctuation">(</span><span class="token function">Number</span><span class="token punctuation">(</span>e<span class="token punctuation">.</span>target<span class="token punctuation">.</span>value<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 504<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">;</span></span> 505<span class="line"></span> 506<span class="line"> <span class="token keyword">return</span> <span class="token punctuation">(</span></span> 507<span class="line"> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span><span class="token punctuation">></span></span><span class="token plain-text"></span> 508<span class="line"> </span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span><span class="token punctuation">></span></span><span class="token plain-text">Count: </span><span class="token punctuation">{</span>count<span class="token punctuation">}</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span><span class="token plain-text"></span> 509<span class="line"> </span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>button</span> <span class="token attr-name">onClick</span><span class="token script language-javascript"><span class="token script-punctuation punctuation">=</span><span class="token punctuation">{</span>increment<span class="token punctuation">}</span></span><span class="token punctuation">></span></span><span class="token plain-text">+</span><span class="token punctuation">{</span>step<span class="token punctuation">}</span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>button</span><span class="token punctuation">></span></span><span class="token plain-text"></span> 510<span class="line"> </span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> </span> 511<span class="line"> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>number<span class="token punctuation">"</span></span> </span> 512<span class="line"> <span class="token attr-name">value</span><span class="token script language-javascript"><span class="token script-punctuation punctuation">=</span><span class="token punctuation">{</span>step<span class="token punctuation">}</span></span> </span> 513<span class="line"> <span class="token attr-name">onChange</span><span class="token script language-javascript"><span class="token script-punctuation punctuation">=</span><span class="token punctuation">{</span>handleStepChange<span class="token punctuation">}</span></span></span> 514<span class="line"> <span class="token punctuation">/></span></span><span class="token plain-text"></span> 515<span class="line"> </span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span></span> 516<span class="line"> <span class="token punctuation">)</span><span class="token punctuation">;</span></span> 517<span class="line"><span class="token punctuation">}</span></span> 518<span class="line"></span> 519<span class="line"><span class="token keyword">export</span> <span class="token keyword">default</span> Counter<span class="token punctuation">;</span></span> 520<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><hr><h2 id="_5ï¸â£-bug-ä¿®å¤è½å" tabindex="-1"><a class="header-anchor" href="#_5ï¸â£-bug-ä¿®å¤è½å"><span>5ï¸â£ Bug ä¿®å¤è½å</span></a></h2><h3 id="codex-å¦ä½ä¿®å¤-bug" tabindex="-1"><a class="header-anchor" href="#codex-å¦ä½ä¿®å¤-bug"><span>Codex å¦ä½ä¿®å¤ Bugï¼</span></a></h3><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre><code class="language-text"><span class="line">Bug ä¿®å¤æµç¨ï¼</span> 521<span class="line"></span> 522<span class="line">1. åæä»£ç </span> 523<span class="line"> ââ çè§£ä»£ç æå¾åé»è¾</span> 524<span class="line"></span> 525<span class="line">2. è¯å«é®é¢</span> 526<span class="line"> ââ æ¾åºéè¯¯çæ ¹æ¬åå </span> 527<span class="line"></span> 528<span class="line">3. æåºæ¹æ¡</span> 529<span class="line"> ââ çæä¿®å¤å»ºè®®</span> 530<span class="line"></span> 531<span class="line">4. ä¿®å¤ä»£ç </span> 532<span class="line"> ââ è¾åºä¿®å¤åç代ç </span> 533<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="å®æç¤ºä¾-4" tabindex="-1"><a class="header-anchor" href="#å®æç¤ºä¾-4"><span>å®æç¤ºä¾</span></a></h3><h4 id="示ä¾-1-é»è¾é误修å¤" tabindex="-1"><a class="header-anchor" href="#示ä¾-1-é»è¾é误修å¤"><span>ç¤ºä¾ 1ï¼é»è¾é误修å¤</span></a></h4><p><strong>æé®é¢ç代ç </strong>ï¼</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line"><span class="token keyword">def</span> <span class="token function">is_palindrome</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 534<span class="line"> <span class="token comment"># æ£æ¥å符串æ¯å¦æ¯åæ</span></span> 535<span class="line"> <span class="token keyword">return</span> s <span class="token operator">==</span> s<span class="token punctuation">.</span>reverse<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 536<span class="line"></span> 537<span class="line"><span class="token comment"># æµè¯</span></span> 538<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span>is_palindrome<span class="token punctuation">(</span><span class="token string">"racecar"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment"># æ¥éï¼</span></span> 539<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>让 Codex ä¿®å¤</strong>ï¼</p><p><strong>ä¿®å¤å</strong>ï¼</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line"><span class="token keyword">def</span> <span class="token function">is_palindrome</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 540<span class="line"> <span class="token triple-quoted-string string">"""</span> 541<span class="line"> æ£æ¥å符串æ¯å¦æ¯åæ</span> 542<span class="line"> </span> 543<span class="line"> ä¿®å¤è¯´æï¼</span> 544<span class="line"> - å符串没æ reverse() æ¹æ³</span> 545<span class="line"> - åºä½¿ç¨åç [::-1] æ¥å转å符串</span> 546<span class="line"> """</span></span> 547<span class="line"> <span class="token keyword">return</span> s <span class="token operator">==</span> s<span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token punctuation">:</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span></span> 548<span class="line"></span> 549<span class="line"><span class="token comment"># æµè¯</span></span> 550<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span>is_palindrome<span class="token punctuation">(</span><span class="token string">"racecar"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment"># True</span></span> 551<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span>is_palindrome<span class="token punctuation">(</span><span class="token string">"hello"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment"># False</span></span> 552<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="示ä¾-2-弿¥é误修å¤" tabindex="-1"><a class="header-anchor" href="#示ä¾-2-弿¥é误修å¤"><span>ç¤ºä¾ 2ï¼å¼æ¥é误修å¤</span></a></h4><p><strong>æé®é¢ç代ç </strong>ï¼</p><div class="language-javascript line-numbers-mode" data-highlighter="prismjs" data-ext="js"><pre><code class="language-javascript"><span class="line"><span class="token keyword">async</span> <span class="token keyword">function</span> <span class="token function">loadUserData</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 553<span class="line"> <span class="token keyword">const</span> users <span class="token operator">=</span> <span class="token keyword">await</span> <span class="token function">fetchUsers</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 554<span class="line"> </span> 555<span class="line"> <span class="token comment">
555// é®é¢ï¼forEach ä¸çå¾ å¼æ¥æä½</span></span> 556<span class="line"> users<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">async</span> <span class="token punctuation">(</span><span class="token parameter">user</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 557<span class="line"> user<span class="token punctuation">.</span>profile <span class="token operator">=</span> <span class="token keyword">await</span> <span class="token function">fetchProfile</span><span class="token punctuation">(</span>user<span class="token punctuation">.</span>id<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 558<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 559<span class="line"> </span> 560<span class="line"> <span class="token keyword">return</span> users<span class="token punctuation">;</span> <span class="token comment">// profile å¯è½è¿æªå è½½å®æ</span></span> 561<span class="line"><span class="token punctuation">}</span></span> 562<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>Codex ä¿®å¤</strong>ï¼</p><div class="language-javascript line-numbers-mode" data-highlighter="prismjs" data-ext="js"><pre><code class="language-javascript"><span class="line"><span class="token keyword">async</span> <span class="token keyword">function</span> <span class="token function">loadUserData</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 563<span class="line"> <span class="token keyword">const</span> users <span class="token operator">=</span> <span class="token keyword">await</span> <span class="token function">fetchUsers</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 564<span class="line"> </span> 565<span class="line"> <span class="token doc-comment comment">/**</span> 566<span class="line"> * ä¿®å¤è¯´æï¼</span> 567<span class="line"> * 1. forEach ä¸ä¼çå¾ å¼æ¥æä½å®æ</span> 568<span class="line"> * 2. æ¹ç¨ Promise.all + map æ¥å¹¶è¡å¤ç</span> 569<span class="line"> * 3. ç¡®ä¿ææ profile å è½½å®æååè¿å</span> 570<span class="line"> */</span></span> 571<span class="line"> <span class="token keyword">await</span> Promise<span class="token punctuation">.</span><span class="token function">all</span><span class="token punctuation">(</span></span> 572<span class="line"> users<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token keyword">async</span> <span class="token punctuation">(</span><span class="token parameter">user</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 573<span class="line"> user<span class="token punctuation">.</span>profile <span class="token operator">=</span> <span class="token keyword">await</span> <span class="token function">fetchProfile</span><span class="token punctuation">(</span>user<span class="token punctuation">.</span>id<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 574<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span></span> 575<span class="line"> <span class="token punctuation">)</span><span class="token punctuation">;</span></span> 576<span class="line"> </span> 577<span class="line"> <span class="token keyword">return</span>
577 users<span class="token punctuation">;</span></span> 578<span class="line"><span class="token punctuation">}</span></span> 579<span class="line"></span> 580<span class="line"><span class="token comment">// æ¿ä»£æ¹æ¡ï¼ä¸²è¡å¤çï¼ï¼</span></span> 581<span class="line"><span class="token keyword">async</span> <span class="token keyword">function</span> <span class="token function">loadUserDataSequential</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 582<span class="line"> <span class="token keyword">const</span> users <span class="token operator">=</span> <span class="token keyword">await</span> <span class="token function">fetchUsers</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 583<span class="line"> </span> 584<span class="line"> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">const</span> user <span class="token keyword">of</span> users<span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 585<span class="line"> user<span class="token punctuation">.</span>profile <span class="token operator">=</span> <span class="token keyword">await</span> <span class="token function">fetchProfile</span><span class="token punctuation">(</span>user<span class="token punctuation">.</span>id<span class="token punctuation">)</span><span class="token punctuation">;</span></span> 586<span class="line"> <span class="token punctuation">}</span></span> 587<span class="line"> </span> 588<span class="line"> <span class="token keyword">return</span> users<span class="token punctuation">;</span></span> 589<span class="line"><span class="token punctuation">}</span></span> 590<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><hr><h2 id="_6ï¸â£-æµè¯çæè½å" tabindex="-1"><a class="header-anchor" href="#_6ï¸â£-æµè¯çæè½å"><span>6ï¸â£ æµè¯çæè½å</span></a></h2><h3 id="èªå¨çææµè¯ç¨ä¾" tabindex="-1"><a class="header-anchor" href="#èªå¨çææµè¯ç¨ä¾"><span>èªå¨çææµè¯ç¨ä¾</span></a></h3><p>Codex å¯ä»¥æ ¹æ®å½æ°å®ç°èªå¨çæï¼</p><ul><li>åå æµè¯</li><li>éææµè¯</li><li>è¾¹çæµè¯</li><li>æ§è½æµè¯</li></ul><h3 id="å®æç¤ºä¾-5" tabindex="-1"><a class="header-anchor" href="#å®æç¤ºä¾-5"><span>å®æç¤ºä¾</span></a></h3><p><strong>ç»å®å½æ°</strong>ï¼</p><div class="language-typescript line-numbers-mode" data-highlighter="prismjs" data-ext="ts"><pre><code class="language-typescript"><span class="line"><span class="token keyword">function</span> <span class="token function">calculateDiscount</span><span class="token punctuation">(</span>price<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">,</span> discountPercent<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token builtin">number</span> <span class="token punctuation">{</span></span> 591<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span>price <span class="token operator"><</span> <span class="token number">0</span> <span class="token operator">||</span> discountPercent <span class="token operator"><</span> <span class="token number">0</span> <span class="token operator">||</span> discountPercent <span class="token operator">></span> <span class="token number">100</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 592<span class="line"> <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">Error</span><span class="token punctuation">(</span><span class="token string">'Invalid input'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 593<span class="line"> <span class="token punctuation">}</span></span> 594<span class="line"> </span> 595<span class="line"> <span class="token keyword">const</span> discount <span class="token operator">=</span> <span class="token punctuation">(</span>price <span class="token operator">*</span> discountPercent<span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">100</span><span class="token punctuation">;</span></span> 596<span class="line"> <span class="token keyword">return</span> Math<span class="token punctuation">.</span><span class="token function">round</span><span class="token punctuation">(</span><span class="token punctuation">(</span>price <span class="token operator">-</span> discount<span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">100</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">100</span><span class="token punctuation">;</span></span> 597<span class="line"><span class="token punctuation">}</span></span> 598<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>让 Codex çææµè¯</strong>ï¼</p><p><strong>è¾åº</strong>ï¼</p><div class="language-typescript line-numbers-mode" data-highlighter="prismjs" data-ext="ts"><pre><code class="language-typescript"><span class="line"><span class="token keyword">
598import</span> <span class="token punctuation">{</span> describe<span class="token punctuation">,</span> it<span class="token punctuation">,</span> expect <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'vitest'</span><span class="token punctuation">;</span></span> 599<span class="line"></span> 600<span class="line"><span class="token function">describe</span><span class="token punctuation">(</span><span class="token string">'calculateDiscount'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 601<span class="line"> <span class="token function">describe</span><span class="token punctuation">(</span><span class="token string">'æ£å¸¸æ åµ'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 602<span class="line"> <span class="token function">it</span><span class="token punctuation">(</span><span class="token string">'åºè¯¥æ£ç¡®è®¡ç®ææ£ä»·æ ¼'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 603<span class="line"> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token function">calculateDiscount</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toBe</span><span class="token punctuation">(</span><span class="token number">90</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 604<span class="line"> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token function">calculateDiscount</span><span class="token punctuation">(</span><span class="token number">50</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toBe</span><span class="token punctuation">(</span><span class="token number">40</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 605<span class="line"> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token function">calculateDiscount</span><span class="token punctuation">(</span><span class="token number">99.99</span><span class="token punctuation">,</span> <span class="token number">15</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toBe</span><span class="token punctuation">(</span><span class="token number">84.99</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 606<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 607<span class="line"></span> 608<span class="line"> <span class="token function">it</span><span class="token punctuation">(</span><span class="token string">'åºè¯¥å¤ç0%ææ£'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 609<span class="line"> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token function">calculateDiscount</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toBe</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 610<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 611<span class="line"></span> 612<span class="line"> <span class="token function">it</span><span class="token punctuation">(</span><span class="token string">'åºè¯¥å¤ç100%ææ£'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 613<span class="line">
613 <span class="token function">expect</span><span class="token punctuation">(</span><span class="token function">calculateDiscount</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toBe</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 614<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 615<span class="line"></span> 616<span class="line"> <span class="token function">it</span><span class="token punctuation">(</span><span class="token string">'åºè¯¥æ£ç¡®åèäºå ¥å°ä¸¤ä½å°æ°'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 617<span class="line"> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token function">calculateDiscount</span><span class="token punctuation">(</span><span class="token number">33.33</span><span class="token punctuation">,</span> <span class="token number">33</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toBe</span><span class="token punctuation">(</span><span class="token number">22.33</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 618<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 619<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 620<span class="line"></span> 621<span class="line"> <span class="token function">describe</span><span class="token punctuation">(</span><span class="token string">'è¾¹çæ åµ'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 622<span class="line"> <span class="token function">it</span><span class="token punctuation">(</span><span class="token string">'åºè¯¥å¤çä»·æ ¼ä¸º0çæ åµ'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 623<span class="line"> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token function">calculateDiscount</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">50</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toBe</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 624<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 625<span class="line"></span> 626<span class="line"> <span class="token function">it</span><span class="token punctuation">(</span><span class="token string">'åºè¯¥å¤çé常å°çä»·æ ¼'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 627<span class="line">
627 <span class="token function">expect</span><span class="token punctuation">(</span><span class="token function">calculateDiscount</span><span class="token punctuation">(</span><span class="token number">0.01</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toBe</span><span class="token punctuation">(</span><span class="token number">0.01</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 628<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 629<span class="line"></span> 630<span class="line"> <span class="token function">it</span><span class="token punctuation">(</span><span class="token string">'åºè¯¥å¤çé常大çä»·æ ¼'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 631<span class="line"> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token function">calculateDiscount</span><span class="token punctuation">(</span><span class="token number">1000000</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toBe</span><span class="token punctuation">(</span><span class="token number">990000</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 632<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 633<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 634<span class="line"></span> 635<span class="line"> <span class="token function">describe</span><span class="token punctuation">(</span><span class="token string">'å¼å¸¸æ åµ'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 636<span class="line"> <span class="token function">it</span><span class="token punctuation">(</span><span class="token string">'åºè¯¥æç»è´ä»·æ ¼'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 637<span class="line"> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token function">calculateDiscount</span><span class="token punctuation">(</span><span class="token operator">-</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toThrow</span><span class="token punctuation">(</span><span class="token string">'Invalid input'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 638<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 639<span class="line"></span> 640<span class="line"> <span class="token function">it</span><span class="token punctuation">(</span><span class="token string">'åºè¯¥æç»è´ææ£'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 641<span class="line">
641 <span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token function">calculateDiscount</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toThrow</span><span class="token punctuation">(</span><span class="token string">'Invalid input'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 642<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 643<span class="line"></span> 644<span class="line"> <span class="token function">it</span><span class="token punctuation">(</span><span class="token string">'åºè¯¥æç»è¶ è¿100%çææ£'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 645<span class="line"> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token function">calculateDiscount</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token number">101</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toThrow</span><span class="token punctuation">(</span><span class="token string">'Invalid input'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 646<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 647<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 648<span class="line"></span> 649<span class="line"> <span class="token function">describe</span><span class="token punctuation">(</span><span class="token string">'æ§è½æµè¯'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 650<span class="line"> <span class="token function">it</span><span class="token punctuation">(</span><span class="token string">'åºè¯¥è½å¿«éå¤ç大é计ç®'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span></span> 651<span class="line"> <span class="token keyword">const</span> start <span class="token operator">=</span> Date<span class="token punctuation">.</span><span class="token function">now</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 652<span class="line"> </span> 653<span class="line"> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token number">100000</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 654<span class="line">
654 <span class="token function">calculateDiscount</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 655<span class="line"> <span class="token punctuation">}</span></span> 656<span class="line"> </span> 657<span class="line"> <span class="token keyword">const</span> duration <span class="token operator">=</span> Date<span class="token punctuation">.</span><span class="token function">now</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span> start<span class="token punctuation">;</span></span> 658<span class="line"> <span class="token function">expect</span><span class="token punctuation">(</span>duration<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toBeLessThan</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// åºè¯¥å¨100mså 宿</span></span> 659<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 660<span class="line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 661<span class="line"><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span> 662<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><hr><h2 id="ð-å¤è¯è¨æ¯æ" tabindex="-1"><a class="header-anchor" href="#ð-å¤è¯è¨æ¯æ"><span>ð å¤è¯è¨æ¯æ</span></a></h2><h3 id="æ¯æè¯è¨å表" tabindex="-1"><a class="header-anchor" href="#æ¯æè¯è¨å表"><span>æ¯æè¯è¨å表</span></a></h3><table><thead><tr><th>
662ç级</th><th>è¯è¨</th><th>æ¯æåº¦</th><th>éç¨åºæ¯</th></tr></thead><tbody><tr><td><strong>S级</strong></td><td>Python, JavaScript/TypeScript</td><td>95%+</td><td>ææåºæ¯</td></tr><tr><td><strong>A级</strong></td><td>Java, C/C++, C#, Go, Rust</td><td>90%+</td><td>ä¼ä¸å¼å</td></tr><tr><td><strong>B级</strong></td><td>PHP, Ruby, Swift, Kotlin, Scala</td><td>85%+</td><td>Web/Mobileå¼å</td></tr><tr><td><strong>C级</strong></td><td>SQL, Shell, HTML/CSS</td><td>80%+</td><td>é ç½®åèæ¬</td></tr><tr><td><strong>D级</strong></td><td>Perl, Lua, Haskell, etc.</td><td>70%+</td><td>ç¹å®é¢å</td></tr></tbody></table><h3 id="è¯è¨ç¹æ§çè§£" tabindex="-1"><a class="header-anchor" href="#è¯è¨ç¹æ§çè§£"><span>è¯è¨ç¹æ§çè§£</span></a></h3><p>Codex ä¸ä» æ¯æè¯æ³ï¼è¿çè§£ï¼</p><ol><li><p><strong>è¯è¨èå¼</strong></p><ul><li>é¢å对象ï¼Java, C++ï¼</li><li>彿°å¼ï¼Haskell, Elixirï¼</li><li>è¿ç¨å¼ï¼C, Goï¼</li></ul></li><li><p><strong>è¯è¨ç¹æ§</strong></p><ul><li>弿¥ç¼ç¨ï¼async/awaitï¼</li><li>æ³åï¼Genericsï¼</li><li>è£ é¥°å¨ï¼Decoratorsï¼</li><li>模å¼å¹é ï¼Pattern Matchingï¼</li></ul></li><li><p><strong>çæç³»ç»</strong></p><ul><li>æµè¡æ¡æ¶ï¼React, Django, Springï¼</li><li>æ ååº</li><li>常ç¨ç¬¬ä¸æ¹åº</li></ul></li></ol><hr><h2 id="ð§ -ä¸ä¸æçè§£" tabindex="-1"><a class="header-anchor" href="#ð§ -ä¸ä¸æçè§£"><span>ð§ ä¸ä¸æçè§£</span></a></h2><h3 id="ä»ä¹æ¯ä¸ä¸æ" tabindex="-1"><a class="header-anchor" href="#ä»ä¹æ¯ä¸ä¸æ"><span>ä»ä¹æ¯ä¸ä¸æï¼</span></a></h3><p>å¨ä»£ç çæä¸ï¼ä¸ä¸æå æ¬ï¼</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre><code class="language-text"><span class="line">ä¸ä¸æçä¸ä¸ªå±æ¬¡ï¼</span> 663<span class="line"></span> 664<span class="line">1. å±é¨ä¸ä¸æï¼Local Contextï¼</span> 665<span class="line"> ââ å½åæä»¶ãç¸é»ä»£ç </span> 666<span class="line"></span> 667<span class="line">2. 项ç®ä¸ä¸æï¼Project Contextï¼</span> 668<span class="line"> ââ å ¶ä»æä»¶ã项ç®ç»æ</span> 669<span class="line"></span> 670<span class="line">3. å¤é¨ä¸ä¸æï¼External Contextï¼</span> 671<span class="line"> ââ ä¾èµåºãææ¡£ãæä½³å®è·µ</span> 672<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="ä¸ä¸æç®¡ççç¥" tabindex="-1"><a class="header-anchor" href="#ä¸ä¸æç®¡ççç¥"><span>ä¸ä¸æç®¡ççç¥</span></a></h3><h4 id="_1-æ¾å¼ä¸ä¸æ" tabindex="-1"><a class="header-anchor" href="#_1-æ¾å¼ä¸ä¸æ"><span>1. æ¾å¼ä¸ä¸æ</span></a></h4><p><strong>æ¹å¼</strong>ï¼å¨æç¤ºè¯ä¸æç¡®æä¾ä¸ä¸æ</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line"><span class="token comment"># 好çæç¤ºï¼å å«ä¸ä¸æï¼ï¼</span></span> 673<span class="line"><span class="token triple-quoted-string string">"""</span> 674<span class="line">ææä¸ä¸ª User 模åï¼</span> 675<span class="line">class User:</span> 676<span class="line"> def __init__(self, id, name, email):</span> 677<span class="line"> self.id = id</span> 678<span class="line"> self.name = name</span> 679<span class="line"> self.email = email</span> 680<span class="line"></span> 681<span class="line">请å建ä¸ä¸ªå½æ°ï¼å° User 对象åºåå为 JSON</span> 682<span class="line">"""</span></span> 683<span class="line"></span> 684<span class="line"><span class="token comment"># ä¸å¥½çæç¤ºï¼ç¼ºå°ä¸ä¸æï¼ï¼</span></span> 685<span class="line"><span class="token triple-quoted-string string">"""</span> 686<span class="line">å建åºåå彿°</span> 687<span class="line">"""</span></span> 688<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="_2-éå¼ä¸ä¸æ" tabindex="-1"><a class="header-anchor" href="#_2-éå¼ä¸ä¸æ"><span>2. éå¼ä¸ä¸æ</span></a></h4><p><strong>æ¹å¼</strong>ï¼è®©å·¥å ·ï¼å¦ Copilotï¼èªå¨è¯»åé¡¹ç®æä»¶</p><div class="language-javascript line-numbers-mode" data-highlighter="prismjs" data-ext="js"><pre><code class="language-javascript"><span class="line"><span class="token comment">// æä»¶ï¼models/User.js</span></span> 689<span class="line"><span class="token keyword">class</span> <span class="token class-name">User</span> <span class="token punctuation">{</span></span> 690<span class="line"> <span class="token function">constructor</span><span class="token punctuation">(</span><span class="token parameter">id<span class="token punctuation">,</span> name<span class="token punctuation">,</span> email</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 691<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>id <span class="token operator">=</span> id<span class="token punctuation">;</span></span> 692<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>name <span class="token operator">=</span> name<span class="token punctuation">;</span></span> 693<span class="line"> <span class="token keyword">this</span><span class="token punctuation">.</span>email <span class="token operator">=</span> email<span class="token punctuation">;</span></span> 694<span class="line"> <span class="token punctuation">}</span></span> 695<span class="line"><span class="token punctuation">}</span></span> 696<span class="line"></span> 697<span class="line"><span class="token comment">// æä»¶ï¼services/UserService.js</span></span> 698<span class="line"><span class="token comment">// åªéåæ³¨éï¼Copilot ä¼çè§£ User 模å</span></span> 699<span class="line"><span class="token comment">// åå»ºå½æ°ï¼æ ¹æ® ID æ¥æ¾ç¨æ·</span></span> 700<span class="line"><span class="token keyword">async</span> <span class="token keyword">function</span> <span class="token function">findUserById</span><span class="token punctuation">(</span><span class="token parameter">id</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span> 701<span class="line"> <span class="token comment">
701// Copilot èªå¨çæï¼ç¥éè¿åç±»åæ¯ User</span></span> 702<span class="line"><span class="token punctuation">}</span></span> 703<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><hr><h2 id="ð-codex-vs-ä¼ ç»å·¥å ·" tabindex="-1"><a class="header-anchor" href="#ð-codex-vs-ä¼ ç»å·¥å ·"><span>ð Codex vs ä¼ ç»å·¥å ·</span></a></h2><h3 id="ä¸-intellisense-çåºå«" tabindex="-1"><a class="header-anchor" href="#ä¸-intellisense-çåºå«"><span>ä¸ IntelliSense çåºå«</span></a></h3><table><thead><tr><th>维度</th><th>IntelliSense</th><th>Codex</th></tr></thead><tbody><tr><td>çè§£æ¹å¼</td><td>éæåæ</td><td>è¯ä¹çè§£</td></tr><tr><td>æç¤ºå 容</td><td>API å表</td><td>宿´ä»£ç å</td></tr><tr><td>å¦ä¹ è½å</td><td>æ </td><td>æç»æ¼è¿</td></tr><tr><td>åé æ§</td><td>æ </td><td>å¯çææ°é»è¾</td></tr></tbody></table><h3 id="ä¸-github-copilot-çå ³ç³»" tabindex="-1"><a class="header-anchor" href="#ä¸-github-copilot-çå ³ç³»"><span>ä¸ GitHub Copilot çå ³ç³»</span></a></h3><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre><code class="language-text"><span class="line">Codex æ¯åºå±ææ¯</span> 704<span class="line"> â</span> 705<span class="line">GitHub Copilot æ¯äº§åååºç¨</span> 706<span class="line"> â</span> 707<span class="line">éæå° IDEï¼æä¾å®æ´ä½éª</span> 708<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="ä¸-chatgpt-çåºå«" tabindex="-1"><a class="header-anchor" href="#ä¸-chatgpt-çåºå«"><span>ä¸ ChatGPT çåºå«</span></a></h3><table><thead><tr><th>维度</th><th>ChatGPT</th><th>Codexï¼ä¸ä¸çï¼</th></tr></thead><tbody><tr><td>è®ç»éç¹</td><td>éç¨å¯¹è¯</td><td>代ç ä¸ç²¾</td></tr><tr><td>代ç åç¡®æ§</td><td>85%</td><td>95%</td></tr><tr><td>éææ¹å¼</td><td>Webçé¢</td><td>IDE / API</td></tr><tr><td>宿¶æ§</td><td>对è¯å¼</td><td>宿¶è¡¥å ¨</td></tr></tbody></table><hr><h2 id="ð¡-æ ¸å¿ç¹ç¹æ»ç»" tabindex="-1"><a class="header-anchor" href="#ð¡-æ ¸å¿ç¹ç¹æ»ç»"><span>ð¡ æ ¸å¿ç¹ç¹æ»ç»</span></a></h2><h3 id="codex-çäºå¤§æ ¸å¿ä¼å¿" tabindex="-1"><a class="header-anchor" href="#codex-çäºå¤§æ ¸å¿ä¼å¿"><span>Codex çäºå¤§æ ¸å¿ä¼å¿</span></a></h3><ol><li><p><strong>强大ç代ç çè§£è½å</strong></p><ul><li>ä¸åªæ¯è¯æ³ï¼è¿çè§£è¯ä¹åæå¾</li></ul></li><li><p><strong>广æ³çè¯è¨æ¯æ</strong></p><ul><li>å 乿æä¸»æµè¯è¨é½æè¯å¥½æ¯æ</li></ul></li><li><p><strong>çµæ´»çä¸ä¸æç®¡ç</strong></p><ul><li>ä»åè¡å°æ´ä¸ªé¡¹ç®çä¸ä¸æçè§£</li></ul></li><li><p><strong>夿 ·çåºç¨æ¨¡å¼</strong></p><ul><li>è¡¥å ¨ãçæã转æ¢ãä¿®å¤ãæµè¯</li></ul></li><li><p><strong>æç»çå¦ä¹ æ¼è¿</strong></p><ul><li>模åä¸ææ´æ°ï¼è½åæç»æå</li></ul></li></ol><h3 id="使ç¨å»ºè®®" tabindex="-1"><a class="header-anchor" href="#使ç¨å»ºè®®"><span>使ç¨å»ºè®®</span></a></h3><p>â <strong>éåç¨ Codex çåºæ¯</strong>ï¼</p><ul><li>å®ç°æç¡®å®ä¹çåè½</li><li>è½¬æ¢æéæä»£ç </li><li>çææ ·æ¿ä»£ç </li><li>ç¼åæµè¯ç¨ä¾</li><li>å¦ä¹ æ°ææ¯æ </li></ul><p>â <strong>ä¸éåçåºæ¯</strong>ï¼</p><ul><li>夿çä¸å¡é»è¾ï¼éè¦äººå·¥è®¾è®¡ï¼</li><li>å®å ¨å ³é®ä»£ç ï¼éè¦ä¸¥æ ¼å®¡æ¥ï¼</li><li>åæ°æ§ç®æ³ï¼AI åéäºè®ç»æ°æ®ï¼</li></ul><hr><h2 id="ð¯-ä¸ä¸æ¥" tabindex="-1"><a class="header-anchor" href="#ð¯-ä¸ä¸æ¥"><span>ð¯ ä¸ä¸æ¥</span></a></h2><p>ç°å¨ä½ å·²ç»æ·±å ¥äºè§£äº Codex çæ ¸å¿è½åï¼å¯ä»¥ï¼</p>`,155)),a("ul",null,[a("li",null,[n[1]||(n[1]=s("ð ",-1)),t(p,{to:"/ai-programming/codex/03-evolution-history.html"},{default:e(()=>[...n[0]||(n[0]=[s("03 - çæ¬æ¼è¿åå²",-1)])]),_:1}),n[2]||(n[2]=s(" - äºè§£ææ¯åå±èç»",-1))]),a("li",null,[n[4]||(n[4]=s("ð ",-1)),t(p,{to:"/ai-programming/codex/04-architecture.html"},{default:e(()=>[...n[3]||(n[3]=[s("04 - æ¶æè®¾è®¡è¯¦è§£",-1)])]),_:1}),n[5]||(n[5]=s(" - æ·±å ¥ææ¯åç",-1))]),a("li",null,[n[7]||(n[7]=s("ð ",-1)),t(p,{to:"/ai-programming/codex/06-best-practices.html"},{default:e(()=>[...n[6]||(n[6]=[s("06 - æä½³å®è·µ",-1)])]),_:1}),n[8]||(n[8]=s(" - å¦ä¹ é«æä½¿ç¨æ¹æ³",-1))])]),n[12]||(n[12]=a("hr",null,null,-1)),a("p",null,[n[10]||(n[10]=s("ð ",-1)),t(p,{to:"/ai-programming/codex/03-evolution-history.html"},{default:e(()=>[...n[9]||(n[9]=[s("ä¸ä¸ç« ï¼03 - çæ¬æ¼è¿åå²",-1)])]),_:1})])])}const m=l(r,[["render",k]]),b=JSON.parse('{"path":"/ai-programming/codex/02-core-features.html","title":"Codex æ ¸å¿ç¹ç¹è¯¦è§£","lang":"zh-CN","frontmatter":{"title":"Codex æ ¸å¿ç¹ç¹è¯¦è§£","description":"æ·±å ¥äºè§£ OpenAI Codex çæ ¸å¿è½ååææ¯ç¹ç¹","lang":"zh-CN"}
708,"git":{"updatedTime":1766413539000,"contributors":[{"name":"wsyx","username":"","email":"[email protected]","commits":1}],"changelog":[{"hash":"6f88b92aa0bd0fb67a38a1ba536877d410aa38fb","time":1766413539000,"email":"[email protected]","author":"wsyx","message":"featï¼æç« ç»æä¼å"}]},"filePathRelative":"ai-programming/codex/02-core-features.md"}');export{m as comp,b as data};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.