1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index.html-YETGA09y.js","assets/plugin-vue_export-helper-DlAUqK2U.js","assets/intro.html-aAcg9F57.js","assets/index.html-C_5r_V8B.js","assets/intro.html-C8VhyVo5.js","assets/index.html-wZV3AXFP.js","assets/index.html-orl_LX3C.js","assets/template.html-CbudOp4G.js","assets/template.html-RpriovyG.js","assets/Electromagnetic-Formula.html-Ct6h15Yg.js","assets/index.html-C5cYkuMx.js","assets/Chapter0-Introduce.html-zLloqbXE.js","assets/Chapter1-Compiler-composition .html-CRiNvmmb.js","assets/Chapter2-Lexical-Analysis.html-4a5iRaBc.js","assets/Chapter3-Gramma-Analysis.html-CJ1KHEVw.js","assets/Chapter4-Semantic-Analysis.html-C2ivyV1y.js","assets/Chapter5-Code-Generation.html-BLBI86od.js","assets/index.html--zYO5N0J.js","assets/Chapter1-Internet-And-Ethernet.html-CVNSgBWS.js","assets/Chapter2-Application-Layer.html-DiYt4uUu.js","assets/Chapter3-Transport-Layer.html-EEmYTEPq.js","assets/Chapter4-Net-Layer.html-DO6HRWX2.js","assets/Chapter5-Link-Layer.html-CZfnQgFZ.js","assets/Computer-Network-7th-Edition-Exercises-Answers.html-C2vBqRv0.js","assets/index.html-Cz2XHtDk.js","assets/Chapter1-Introduction.html-BmUt9feG.js","assets/Chapter10-Storage-and-File-Structure.html-BD2EFUFn.js","assets/Chapter11-Indexing-and-Hashing.html-BCobjAFz.js","assets/Chapter12-Query-Processing.html-BTpqqk7t.js","assets/Chapter13-Query-Optimization.html-Ds0TlEug.js","assets/Chapter14-Transactions.html-Do1UJBDn.js","assets/Chapter15-Concurrency-Control.html-oH4rfM1X.js","assets/Chapter16-Recovery-System.html-9aqHeeTm.js","assets/Chapter2-Introduction-to-Relational-Model.html-QWRm3XbA.js","assets/Chapter3-Introduction-to-SQL.html-uUemDQdX.js","assets/Chapter6-Formal-Relational-Query-Languages.html-ZpeRKUwN.js","assets/Chapter7-Entity-Relationship-Model.html-BR11w4YK.js","assets/Chapter8-Relational-Database-Design.html-Cd9mroBM.js","assets/index.html-DDBQmvzP.js","assets/index.html-DJRtN_cA.js","assets/Review-Note.html-UzDGg65g.js","assets/Chapter1-Introdction.html-DKi-mysd.js","assets/Chapter2-Processes-and-Threads.html-BBMWQXw5.js","assets/Chapter3-Memory-Management.html-BSXxX_md.js","assets/Chapter4-File-System.html-DnRsjsRm.js","assets/Chapter5-IO.html-B79Xt5HR.js","assets/Chapter6-Deadlocks.html-d4eNqaWK.js","assets/index.html-Cwq2JqA1.js","assets/2019-Review-Notes.html-CkXHUa4C.js","assets/Chapter1-Indroduction.html-BPrIGoZm.js","assets/Chapter10-Project-Communication-Management.html-KG8ZURhF.js","assets/Chapter11-Project-Risk-Management.html-B5_od_73.js","assets/Chapter12-Project-Precurement-Management.html-aYpUx7Y2.js","assets/Chapter13-Project-Stakeholder-Management.html-DxE_7n5G.js","assets/Chapter2-Project-Management-and-IT-Environment.html-DxLrzPxF.js","assets/Chapter3-Project-Management-Process-group.html-CgsJO5ou.js","assets/Chapter4-Project-Integration-Management.html-Dg4CcYwE.js","assets/Chapter5-Project-Scope-Management.html-CPs_fApU.js","assets/Chapter6-Project-Schedule-Management.html-BFCROfr7.js","assets/Chapter7-Project-Cost-Management.html-CwEKh27c.js","assets/Chapter8-Project-Quality-Management.html-BEwwAJpa.js","assets/Chapter9-Project-Resource-Management.html-CVLH9bts.js","assets/index.html-DHLTjJrB.js","assets/Chapter1-Basic-Concepts-of-Software-Testing.html-DIinpS3J.js","assets/Chapter2-Software-Testing-Technology.html-BiCWr4XU.js","assets/Chapter3-Software-Testing-Process.html-D1VP-ocs.js","assets/Chapter4-Software-Testing-Management.html-kuhZXlEV.js","assets/Chapter5-Software-Maintenance.html-Dz7VYXMI.js","assets/index.html-DKJGOq3o.js","assets/Review-Quick-Note.html-D09ctbIQ.js","assets/Chapter0绪论.html-Cf8iocsm.js","assets/Chapter10坿µè¯æ§.html-BR-MHCjD.js","assets/Chapter11æç¨æ§.html-JQEMGUfq.js","assets/Chapter12å
¶å®è´¨é屿§.html-61VrjwPO.js","assets/Chapter13模å¼åçç¥.html-D72jS6dv.js","assets/image-3-CtzX0pUA.js","assets/Chapter14è´¨é屿§å»ºæ¨¡ä¸åæ.html-DWfFXtub.js","assets/Chapter15ææ·é¡¹ç®ä¸çæ¶æ.html-Bkjoy4Ok.js","assets/Chapter16æ¶æä¸éæ±.html-Bc2EUejs.js","assets/Chapter17è®¾è®¡æ¶æ.html-DdaZGzkn.js","assets/Chapter19æ¶æå®ç°ä¸æµè¯.html-C2d-mrD8.js","assets/Chapter1ä»ä¹æ¯è½¯ä»¶æ¶æ.html-DM5B1e-c.js","assets/Chapter2为ä»ä¹è½¯ä»¶æ¶æéè¦.html-CXxPrrsY.js","assets/Chapter4ç解质é屿§.html-CWvS2nIB.js","assets/Chapter5å¯ç¨æ§.html-BWIuLm5C.js","assets/Chapter6äºæä½æ§.html-DA7mdhu4.js","assets/Chapter7å¯ä¿®æ¹æ§.html-V8seVc_v.js","assets/Chapter8æ§è½.html-BgdVwN9c.js","assets/Chapter9å®å
¨æ§.html-BwhWm9cC.js","assets/Chpater21æ¶æè¯ä¼°.html-DER5W5Dp.js","assets/å¤ä¹ æçº².html-Cb1gC5vk.js","assets/DragonOSææ°ä»»å¡.html-DebaNl3R.js","assets/NUMA Balanceå®ç°æµ
æ.html-CJnJNNCO.js","assets/NUMA Balancing.html-594LRFJm.js","assets/vscode qemuå¼åLinuxå
æ ¸.html-DU_4D5Dq.js","assets/Common-rust-lifetime-misconceptions.html-BmPpfRw_.js","assets/Inlinable-dyn-extension-traits.html-CpyLiZ7n.js","assets/Type-erase-via-trait.html-DVRKJY1f.js","assets/index.html-DaeLZXUD.js","assets/gRPC-introduction.html-ClWVgZr3.js","assets/Application-of-decltype-auto.html-B1yndWPT.js","assets/index.html-CcgJUhsW.js","assets/Chapter0åè¨.html-BEapDesS.js","assets/Chapter1è¯æ³åæå¨ä¹Chumsky.html-D18RPp2k.js","assets/HelloWorld.html-FT0WdztZ.js","assets/微信åºå±è§£æ.html-DLEVaEax.js","assets/Electrostatic-energy-of-a-solid-charged-sphere.html-BAnUstYA.js","assets/index.html-DTX_nWsL.js","assets/LWNé对å¤å±å
åç³»ç»éæ°è¿è¡NUMA平衡.html-B3xNoTfT.js","assets/LinuxKernelMap.html-DBz3k1as.js","assets/Ubuntuç¼è¯å®è£
å
æ ¸.html-DWJni9H0.js","assets/SurfaceViewå¼å¸¸éæ¾.html-D3pSHZn_.js","assets/could not dial endpoint 'orderer-api.127-0-0-1.nip.io.html-B9S6p0tU.js","assets/edition设置å¼èµ·çrustç¼è¯å¨æ¥é.html-DCyO_3UL.js","assets/è§£å³MacOS䏿¾ä¸å°å¤´æä»¶çé®é¢.html-BuSu4aDl.js","assets/è®°ä¸æ¬¡ GP Debug çå¿è·¯åç¨.html-DKgY-2V3.js","assets/Githubä¸é
ç½®Cargo项ç®çWorkflow.html-Bp1r6YZC.js","assets/åºäºNinjaç代ç Intellisenseå®è·µ.html-RaPkYtGB.js","assets/è§£å³å¨VSCodeéå·Leetcodeçéå®ä¹é®é¢.html-Pu1uauDE.js","assets/éæ!1çäº0.html-BTaJn2kQ.js","assets/é«çº§è¯è¨çç¼è¯-龿¥åè£
è½½è¿ç¨ä»ç».html-BBVdeFB2.js","assets/è
¾è®¯WXGæ¥å¸¸å®ä¹ é¢ç».html-t4L0aPqW.js","assets/UMLå¤ä¹ ç®è®°.html-C7U9xO5g.js","assets/çµç£å¦å
¬å¼.html-7ziO2EOh.js","assets/Chapter1-Introdction.html-B__qhFlX.js","assets/Chapter2-Processes-and-Threads.html-DRJhN5_I.js","assets/Chapter3-Memory-Management.html-C2yO3c8r.js","assets/Chapter4-File-System.html-BTI51gel.js","assets/Chapter5-IO.html-BeL5vIwd.js","assets/Chapter6-Deadlocks.html-TQLDNWF4.js","assets/Chapter1 Introduction.html-BGLjWyB0.js","assets/Chapter10 Storage and File Structure.html-C4zoWWkk.js","assets/Chapter11 Indexing and Hashing.html-BuXIkMxb.js","assets/Chapter12 Query Processing.html-BwshKEqi.js","assets/Chapter13 Query Optimization.html-DuMUukBk.js","assets/Chapter14 Transactions.html-DyNZsLXI.js","assets/Chapter15 Concurrency Control.html-BLTQuU_A.js","assets/Chapter16 Recovery System.html-DrbLf4jM.js","assets/Chapter2 Introduction to Relational Model.html-CWDePNbl.js","assets/Chapter3 Introduction to SQL.html-PcqjKvp6.js","assets/Chapter6 Formal Relational Query Languages.html-C-CITR3-.js","assets/Chapter7 Entity-Relationship Model.html-C3dlxV0o.js","assets/Chapter8 Relational Database Design.html-DaWwIQxe.js","assets/çµå·¥å
1¤ä¹ ç¬è®°.html-D67YF8SQ.js","assets/Chapter0 åè¨.html-LuZz2PZL.js","assets/Chapter1 ç¼è¯å¨ç»æ.html-Fn_pQS-w.js","assets/Chapter2 è¯æ³åæ.html-CzVGFKgE.js","assets/Chapter3 è¯æ³åæ.html-Bh-3ADnE.js","assets/Chapter4 è¯ä¹åæ.html-B7PXGMZB.js","assets/Chapter5 代ç çæ.html-CVjCAUHG.js","assets/Chapter1-Internet-And-Ethernet.html-C-9Xuq8Z.js","assets/Chapter2-Application-Layer.html-WZ4AZRAj.js","assets/Chapter3-Transport-Layer.html-bNDEImbC.js","assets/Chapter4-Net-Layer.html-BP2JUK_8.js","assets/Chapter5-Link-Layer.html-CIpTQANk.js","assets/è®¡ç®æºç½ç»ä¹ é¢çæ¡.html-PrKfTcSr.js","assets/Chapter0绪论.html-Yo0SUuMY.js","assets/Chapter10坿µè¯æ§.html-CWujBN8I.js","assets/Chapter11æç¨æ§.html-CfzfMm5s.js","assets/Chapter12å ¶å®è´¨é屿§.html-XT_VYprB.js","assets/Chapter13模å¼åçç¥.html-EbsDQoc9.js","assets/image-3-BN3ZsJbc.js","assets/Chapter14è´¨é屿§å»ºæ¨¡ä¸åæ.html-CDxajzAQ.js","assets/Chapter15ææ·é¡¹ç®ä¸çæ¶æ.html-b5ZeM0am.js","assets/Chapter16æ¶æä¸éæ±.html-f89X53UU.js","assets/Chapter17è®¾è®¡æ¶æ.html-BHqDbf5H.js","assets/Chapter19æ¶æå®ç°ä¸æµè¯.html-DbiylV6Z.js","assets/Chapter1ä»ä¹æ¯è½¯ä»¶æ¶æ.html-9fwLXsLk.js","assets/Chapter2为ä»ä¹è½¯ä»¶æ¶æéè¦.html-BXvmwIc8.js","assets/Chapter4ç解质é屿§.html-Gs6mp7Xo.js","assets/Chapter5å¯ç¨æ§.html-CGNRizp9.js","assets/Chapter6äºæä½æ§.html-xI7XGjta.js","assets/Chapter7å¯ä¿®æ¹æ§.html-BSexyxlF.js","assets/Chapter8æ§è½.html-Chumtrc7.js","assets/Chapter9å®å ¨æ§.html-C-0F27pz.js","assets/Chpater21æ¶æè¯ä¼°.html-D3Xv5gSL.js","assets/å¤ä¹ æçº².html-H28RAhJM.js","assets/2019_IT项ç®ç®¡ç_å¤ä¹ ç¬è®°.html-BAXM3ljW.js","assets/第10ç« é¡¹ç®æ²é管ç.html-C0LGDNJ3.js","assets/第11ç« é¡¹ç®é£é©ç®¡ç.html-DJYAejeM.js","assets/第12ç« é¡¹ç®éè´ç®¡ç.html-Cjku4GUD.js","assets/第13ç« é¡¹ç®å¹²ç³»äººç®¡ç.html-OlNmkdFw.js","assets/第1ç« é¡¹ç®ç®¡çæ¦è¿°.html-CwfUdhDk.js","assets/第2ç« é¡¹ç®ç®¡çä¸ITç¯å¢.html-B1wrGF24.js","assets/第3ç« é¡¹ç®ç®¡çè¿ç¨ç».html-DV1DJigE.js","assets/第4ç« é¡¹ç®æ´å管ç.html-TSXiMNjo.js","assets/第5ç« é¡¹ç®èå´ç®¡ç.html-D7p1W_8m.js","assets/第6ç« é¡¹ç®è¿åº¦ç®¡ç.html-CwJo0WPY.js","assets/第7ç« é¡¹ç®ææ¬ç®¡ç.html-DXGdGUPF.js","assets/第8ç« é¡¹ç®è´¨é管ç.html-DIKn7aO8.js","assets/第9ç« é¡¹ç®èµæºç®¡ç.html-B3BBa8Iz.js","assets/eBPFå¼åå ¥é¨.html--jgOkGqr.js","assets/eBPFè¿é¶.html-DOoMWt7o.js","assets/parsec3.0ä»ç»åå®è£ .html-yqyt2yCI.js","assets/å®å¿å¸¦ç¹çä½éçµè½çæ¨å¯¼.html-BQSQ619B.js","assets/404.html-DV9s1QPM.js","assets/index.html-Dcg9IgOc.js","assets/index.html-DpWoDPUH.js","assets/index.html-D1NgC7iz.js","assets/index.html-Cnz2Q9dZ.js","assets/index.html-BKRjkylM.js","assets/index.html-BkxL9G7_.js","assets/index.html-B1Yh9mmK.js","assets/index.html-FTmIUoTB.js","assets/index.html-ATb4HyhK.js","assets/index.html-BQK6UsSw.js","assets/index.html-DrOCFIpg.js","assets/index.html-DBU1K_mw.js","assets/index.html-DBryfvtk.js","assets/index.html-DSDCueEQ.js","assets/index.html-DkvAVC3c.js","assets/index.html-CVbIAoDQ.js","assets/index.html-DpgRwehu.js","assets/index.html-CSsf5bFD.js","assets/index.html-D27VIWIF.js","assets/index.html-B_kOGNbv.js","assets/index.html-DU0KML1V.js","assets/index.html-D1rkzPei.js","assets/index.html-C8lvctGT.js","assets/index.html-CwQr9tB-.js","assets/index.html-BjU-G-oI.js","assets/index.html-BBVwDLPB.js","assets/index.html-wjaD3daL.js","assets/index.html-B7zE7Q9s.js","assets/index.html-D_vQFdsU.js","assets/index.html-DilxTCk_.js","assets/index.html-CnZ45Uuc.js","assets/index.html-DZ5tg3ni.js","assets/index.html-jU68d02k.js","assets/index.html-k3YCqsy5.js","assets/index.html-CNhZRGSk.js","assets/index.html-DcQYggPt.js","assets/index.html-CCI9xwiK.js","assets/index.html-8lTzfNMG.js","assets/index.html-D6QDlfNa.js","assets/index.html-jVqdmdpt.js","assets/index.html-qpuhgllv.js","assets/index.html-BOjteK4x.js","assets/index.html-BHW9IgeH.js","assets/index.html-qePvQ5JA.js","assets/index.html-qGyZD0wt.js","assets/index.html-DQp6ZkyO.js","assets/index.html-DAKoyw8C.js","assets/index.html-BnRWuDam.js","assets/index.html-DeeWx8t7.js","assets/index.html-WMK7AWly.js","assets/index.html-CKDsLbz3.js","assets/index.html-CB2lTQ_q.js","assets/index.html-C9tyrsGX.js","assets/index.html-CdKNtx-B.js","assets/index.html-CzZ4JKQL.js","assets/index.html-DYfJMyxV.js","assets/index.html-DriE9wDH.js","assets/index.html-D95HKI4r.js","assets/index.html-C7tk-ejl.js","assets/index.html-BwgW4E-j.js","assets/index.html-9VhO3xlj.js","assets/index.html-DAhHl2op.js","assets/index.html-xA0eyb6O.js","assets/index.html-C_eX1Ynf.js","assets/index.html-DOKQ2ISX.js","assets/index.html-BORN9I3_.js","assets/index.html-CWT09Wu0.js","assets/index.html-C2nAykk6.js","assets/index.html--g6J5k6Z.js","assets/index.html-wVhHts_p.js","assets/index.html-OpyBQpG0.js","assets/index.html-CB9YnIe0.js","assets/index.html-Ca_BYD7r.js","assets/index.html-C2iVoXbw.js","assets/index.html-Bj_yKuof.js","assets/index.html-BWCouv6v.js","assets/index.html-DGmpymMc.js","assets/index.html-l9UggtWt.js","assets/index.html-B--YBRDl.js","assets/index.html-BIfAGlxE.js","assets/index.html-BUSptF5Z.js","assets/index.html-BD22xLUY.js","assets/index.html-ByAT6Nhr.js","assets/index.html-M6CCUenj.js","assets/index.html-BxTkUZy6.js","assets/index.html-BgP9Haxr.js","assets/index.html-W-jWEkAG.js","assets/BlurText-BDLINKHs.js"])))=>i.map(i=>d[i]); 2/** 3* @vue/shared v3.5.12 4* (c) 2018-present Yuxi (Evan) You and Vue contributors 5* @license MIT
6**//*! #__NO_SIDE_EFFECTS__ */function Wa(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ke={},Un=[],It=()=>{},Qp=()=>!1,Fi=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ga=e=>e.startsWith("onUpdate:"),Ne=Object.assign,qa=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Yp=Object.prototype.hasOwnProperty,Ee=(e,t)=>Yp.call(e,t),ne=Array.isArray,Wn=e=>Bl(e)==="[object Map]",yo=e=>Bl(e)==="[object Set]",le=e=>typeof e=="function",Le=e=>typeof e=="string",dn=e=>typeof e=="symbol",Te=e=>e!==null&&typeof e=="object",_o=e=>(Te(e)||le(e))&&le(e.then)&&le(e.catch),bo=Object.prototype.toString,Bl=e=>bo.call(e),Jp=e=>Bl(e).slice(8,-1),ko=e=>Bl(e)==="[object Object]",Ka=e=>Le(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Gn=Wa(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),yl=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Xp=/-(\w)/g,et=yl(e=>e.replace(Xp,(t,n)=>n?n.toUpperCase():"")),Zp=/\B([A-Z])/g,Fn=yl(e=>e.replace(Zp,"-$1").toLowerCase()),Si=yl(e=>e.charAt(0).toUpperCase()+e.slice(1)),Vl=yl(e=>e?`on${Si(e)}`:""),cn=(e,t)=>!Object.is(e,t),Nl=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},Co=(e,t,n,i=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:i,value:n})},ed=e=>{const t=parseFloat(e);return isNaN(t)?e:t},td=e=>{const t=Le(e)?Number(e):NaN;return isNaN(t)?e:t};let Gr;const _l=()=>Gr||(Gr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Qa(e){if(ne(e)){const t={};for(let n=0;n<e.length;n++){const i=e[n],l=Le(i)?ad(i):Qa(i);if(l)for(const a in l)t[a]=l[a]}return t}else if(Le(e)||Te(e))return e}const nd=/;(?![^(]*\))/g,id=/:([^]+)/,ld=/\/\*[^]*?\*\//g;function ad(e){const t={};return e.replace(ld,"").split(nd).forEach(n=>{if(n){const i=n.split(id);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function Ya(e){let t="";if(Le(e))t=e;else if(ne(e))for(let n=0;n<e.length;n++){const i=Ya(e[n]);i&&(t+=i+" ")}else if(Te(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const rd="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",sd=Wa(rd);function Do(e){return!!e||e===""}const To=e=>!!(e&&e.__v_isRef===!0),od=e=>Le(e)?e:e==null?"":ne(e)||Te(e)&&(e.toString===bo||!le(e.toString))?To(e)?od(e.value):JSON.stringify(e,wo,2):String(e),wo=(e,t)=>To(t)?wo(e,t.value):Wn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[i,l],a)=>(n[$l(i,a)+" =>"]=l,n),{})}:yo(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>$l(n))}:dn(t)?$l(t):Te(t)&&!ne(t)&&!ko(t)?String(t):t,$l=(e,t="")=>{var n;return dn(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** 7* @vue/reactivity v3.5.12 8* (c) 2018-present Yuxi (Evan) You and Vue contributors 9* @license MIT
vendor: 5,943 bytes, line 10
10**/let qe;class cd{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=qe,!t&&qe&&(this.index=(qe.scopes||(qe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=qe;try{return qe=this,t()}finally{qe=n}}}on(){qe=this}off(){qe=this.parent}stop(t){if(this._active){let n,i;for(n=0,i=this.effects.length;n<i;n++)this.effects[n].stop();for(n=0,i=this.cleanups.length;n<i;n++)this.cleanups[n]();if(this.scopes)for(n=0,i=this.scopes.length;n<i;n++)this.scopes[n].stop(!0);if(!this.detached&&this.parent&&!t){const l=this.parent.scopes.pop();l&&l!==this&&(this.parent.scopes[this.index]=l,l.index=this.index)}this.parent=void 0,this._active=!1}}}function xo(){return qe}function ud(e,t=!1){qe&&qe.cleanups.push(e)}let be;const jl=new WeakSet;class Fo{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,qe&&qe.active&&qe.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,jl.has(this)&&(jl.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Po(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,qr(this),Ro(this);const t=be,n=bt;be=this,bt=!0;try{return this.fn()}finally{Lo(this),be=t,bt=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Za(t);this.deps=this.depsTail=void 0,qr(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?jl.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Ea(this)&&this.run()}get dirty(){return Ea(this)}}let So=0,fi,gi;function Po(e,t=!1){if(e.flags|=8,t){e.next=gi,gi=e;return}e.next=fi,fi=e}function Ja(){So++}function Xa(){if(--So>0)return;if(gi){let t=gi;for(gi=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;fi;){let t=fi;for(fi=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(i){e||(e=i)}t=n}}if(e)throw e}function Ro(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Lo(e){let t,n=e.depsTail,i=n;for(;i;){const l=i.prevDep;i.version===-1?(i===n&&(n=l),Za(i),pd(i)):t=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=l}e.deps=t,e.depsTail=n}function Ea(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Oo(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Oo(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===bi))return;e.globalVersion=bi;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Ea(e)){e.flags&=-3;return}const n=be,i=bt;be=e,bt=!0;try{Ro(e);const l=e.fn(e._value);(t.version===0||cn(l,e._value))&&(e._value=l,t.version++)}catch(l){throw t.version++,l}finally{be=n,bt=i,Lo(e),e.flags&=-3}}function Za(e,t=!1){const{dep:n,prevSub:i,nextSub:l}=e;if(i&&(i.nextSub=l,e.prevSub=void 0),l&&(l.prevSub=i,e.nextSub=void 0),n.subs===e&&(n.subs=i,!i&&n.computed)){n.computed.flags&=-5;for(let a=n.computed.deps;a;a=a.nextDep)Za(a,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function pd(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let bt=!0;const Io=[];function hn(){Io.push(bt),bt=!1}function En(){const e=Io.pop();bt=e===void 0?!0:e}function qr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=be;be=void 0;try{t()}finally{be=n}}}let bi=0;class dd{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class bl{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!be||!bt||be===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==be)n=this.activeLink=new dd(be,this),be.deps?(n.prevDep=be.depsTail,be.depsTail.nextDep=n,be.depsTail=n):be.deps=be.depsTail=n,Mo(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const i=n.nextDep;i.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=i),n.prevDep=be.depsTail,n.nextDep=void 0,be.depsTail.nextDep=n,be.depsTail=n,be.deps===n&&(be.deps=i)}return n}trigger(t){this.version++,bi++,this.notify(t)}notify(t){Ja();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Xa()}}}function Mo(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let i=t.deps;i;i=i.nextDep)Mo(i)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const ol=new WeakMap,kn=Symbol(""),fa=Symbol(""),ki=Symbol("");function ze(e,t,n){if(bt&&be){let i=ol.get(e);i||ol.set(e,i=new Map);let l=i.get(n);l||(i.set(n,l=new bl),l.map=i,l.key=n),l.track()}}function Ut(e,t,n,i,l,a){const r=ol.get(e);if(!r){bi++;return}const o=c=>{c&&c.trigger()};if(Ja(),t==="clear")r.forEach(o);else{const c=ne(e),d=c&&Ka(n);if(c&&n==="length"){const u=Number(i);r.forEach((p,h)=>{(h==="length"||h===ki||!dn(h)&&h>=u)&&o(p)})}else switch((n!==void 0||r.has(void 0))&&o(r.get(n)),d&&o(r.get(ki)),t){case"add":c?d&&o(r.get("length")):(o(r.get(kn)),Wn(e)&&o(r.get(fa)));break;case"delete":c||(o(r.get(kn)),Wn(e)&&o(r.get(fa)));break;case"set":Wn(e)&&o(r.get(kn));break}}Xa()}function hd(e,t){const n=ol.get(e);return n&&n.get(t)}function In(e){const t=pe(e);return t===e?t:(ze(t,"iterate",ki),kt(e)?t:t.map(Ke))}function er(e){return ze(e=pe(e),"iterate",ki),e}const Ed={__proto__:null,[Symbol.iterator](){return Hl(this,Symbol.iterator,Ke)}
vendor: 2,623 bytes, line 10
10,concat(...e){return In(this).concat(...e.map(t=>ne(t)?In(t):t))},entries(){return Hl(this,"entries",e=>(e[1]=Ke(e[1]),e))},every(e,t){return Vt(this,"every",e,t,void 0,arguments)},filter(e,t){return Vt(this,"filter",e,t,n=>n.map(Ke),arguments)},find(e,t){return Vt(this,"find",e,t,Ke,arguments)},findIndex(e,t){return Vt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Vt(this,"findLast",e,t,Ke,arguments)},findLastIndex(e,t){return Vt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Vt(this,"forEach",e,t,void 0,arguments)},includes(...e){return zl(this,"includes",e)},indexOf(...e){return zl(this,"indexOf",e)},join(e){return In(this).join(e)},lastIndexOf(...e){return zl(this,"lastIndexOf",e)},map(e,t){return Vt(this,"map",e,t,void 0,arguments)},pop(){return pi(this,"pop")},push(...e){return pi(this,"push",e)},reduce(e,...t){return Kr(this,"reduce",e,t)},reduceRight(e,...t){return Kr(this,"reduceRight",e,t)},shift(){return pi(this,"shift")},some(e,t){return Vt(this,"some",e,t,void 0,arguments)},splice(...e){return pi(this,"splice",e)},toReversed(){return In(this).toReversed()},toSorted(e){return In(this).toSorted(e)},toSpliced(...e){return In(this).toSpliced(...e)},unshift(...e){return pi(this,"unshift",e)},values(){return Hl(this,"values",Ke)}};function Hl(e,t,n){const i=er(e),l=i[t]();return i!==e&&!kt(e)&&(l._next=l.next,l.next=()=>{const a=l._next();return a.value&&(a.value=n(a.value)),a}),l}const fd=Array.prototype;function Vt(e,t,n,i,l,a){const r=er(e),o=r!==e&&!kt(e),c=r[t];if(c!==fd[t]){const p=c.apply(e,a);return o?Ke(p):p}let d=n;r!==e&&(o?d=function(p,h){return n.call(this,Ke(p),h,e)}:n.length>2&&(d=function(p,h){return n.call(this,p,h,e)}));const u=c.call(r,d,i);return o&&l?l(u):u}function Kr(e,t,n,i){const l=er(e);let a=n;return l!==e&&(kt(e)?n.length>3&&(a=function(r,o,c){return n.call(this,r,o,c,e)}):a=function(r,o,c){return n.call(this,r,Ke(o),c,e)}),l[t](a,...i)}function zl(e,t,n){const i=pe(e);ze(i,"iterate",ki);const l=i[t](...n);return(l===-1||l===!1)&&tr(n[0])?(n[0]=pe(n[0]),i[t](...n)):l}function pi(e,t,n=[]){hn(),Ja();const i=pe(e)[t].apply(e,n);return Xa(),En(),i}const gd=Wa("__proto__,__v_isRef,__isVue"),Vo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(dn));function md(e){dn(e)||(e=String(e));const t=pe(this);return ze(t,"has",e),t.hasOwnProperty(e)}class No{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,i){const l=this._isReadonly,a=this._isShallow;if(n==="__v_isReactive")return!l;if(n==="__v_isReadonly")return l;if(n==="__v_isShallow")return a;
vendor: 8,060 bytes, lines 10-13
10if(n==="__v_raw")return i===(l?a?Wo:Uo:a?zo:Ho).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;const r=ne(t);if(!l){let c;if(r&&(c=Ed[n]))return c;if(n==="hasOwnProperty")return md}const o=Reflect.get(t,n,Re(t)?t:i);return(dn(n)?Vo.has(n):gd(n))||(l||ze(t,"get",n),a)?o:Re(o)?r&&Ka(n)?o:o.value:Te(o)?l?Kt(o):Tn(o):o}}class $o extends No{constructor(t=!1){super(!1,t)}set(t,n,i,l){let a=t[n];if(!this._isShallow){const c=wn(a);if(!kt(i)&&!wn(i)&&(a=pe(a),i=pe(i)),!ne(t)&&Re(a)&&!Re(i))return c?!1:(a.value=i,!0)}const r=ne(t)&&Ka(n)?Number(n)<t.length:Ee(t,n),o=Reflect.set(t,n,i,Re(t)?t:l);return t===pe(l)&&(r?cn(i,a)&&Ut(t,"set",n,i):Ut(t,"add",n,i)),o}deleteProperty(t,n){const i=Ee(t,n);t[n];const l=Reflect.deleteProperty(t,n);return l&&i&&Ut(t,"delete",n,void 0),l}has(t,n){const i=Reflect.has(t,n);return(!dn(n)||!Vo.has(n))&&ze(t,"has",n),i}ownKeys(t){return ze(t,"iterate",ne(t)?"length":kn),Reflect.ownKeys(t)}}class jo extends No{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const vd=new $o,Ad=new jo,Bd=new $o(!0),yd=new jo(!0),ga=e=>e,qi=e=>Reflect.getPrototypeOf(e);function _d(e,t,n){return function(...i){const l=this.__v_raw,a=pe(l),r=Wn(a),o=e==="entries"||e===Symbol.iterator&&r,c=e==="keys"&&r,d=l[e](...i),u=n?ga:t?ma:Ke;return!t&&ze(a,"iterate",c?fa:kn),{next(){const{value:p,done:h}=d.next();return h?{value:p,done:h}:{value:o?[u(p[0]),u(p[1])]:u(p),done:h}},[Symbol.iterator](){return this}}}}function Ki(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function bd(e,t){const n={get(l){const a=this.__v_raw,r=pe(a),o=pe(l);e||(cn(l,o)&&ze(r,"get",l),ze(r,"get",o));const{has:c}=qi(r),d=t?ga:e?ma:Ke;if(c.call(r,l))return d(a.get(l));if(c.call(r,o))return d(a.get(o));a!==r&&a.get(l)},get size(){const l=this.__v_raw;return!e&&ze(pe(l),"iterate",kn),Reflect.get(l,"size",l)},has(l){const a=this.__v_raw,r=pe(a),o=pe(l);return e||(cn(l,o)&&ze(r,"has",l),ze(r,"has",o)),l===o?a.has(l):a.has(l)||a.has(o)},forEach(l,a){const r=this,o=r.__v_raw,c=pe(o),d=t?ga:e?ma:Ke;return!e&&ze(c,"iterate",kn),o.forEach((u,p)=>l.call(a,d(u),d(p),r))}};return Ne(n,e?{add:Ki("add"),set:Ki("set"),delete:Ki("delete"),clear:Ki("clear")}:{add(l){!t&&!kt(l)&&!wn(l)&&(l=pe(l));const a=pe(this);return qi(a).has.call(a,l)||(a.add(l),Ut(a,"add",l,l)),this},set(l,a){!t&&!kt(a)&&!wn(a)&&(a=pe(a));const r=pe(this),{has:o,get:c}=qi(r);let d=o.call(r,l);d||(l=pe(l),d=o.call(r,l));const u=c.call(r,l);return r.set(l,a),d?cn(a,u)&&Ut(r,"set",l,a):Ut(r,"add",l,a),this},delete(l){const a=pe(this),{has:r,get:o}=qi(a);let c=r.call(a,l);c||(l=pe(l),c=r.call(a,l)),o&&o.call(a,l);const d=a.delete(l);return c&&Ut(a,"delete",l,void 0),d},clear(){const l=pe(this),a=l.size!==0,r=l.clear();return a&&Ut(l,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(l=>{n[l]=_d(l,e,t)}),n}function kl(e,t){const n=bd(e,t);return(i,l,a)=>l==="__v_isReactive"?!e:l==="__v_isReadonly"?e:l==="__v_raw"?i:Reflect.get(Ee(n,l)&&l in i?n:i,l,a)}const kd={get:kl(!1,!1)},Cd={get:kl(!1,!0)},Dd={get:kl(!0,!1)},Td={get:kl(!0,!0)},Ho=new WeakMap,zo=new WeakMap,Uo=new WeakMap,Wo=new WeakMap;function wd(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function xd(e){return e.__v_skip||!Object.isExtensible(e)?0:wd(Jp(e))}function Tn(e){return wn(e)?e:Cl(e,!1,vd,kd,Ho)}function Go(e){return Cl(e,!1,Bd,Cd,zo)}function Kt(e){return Cl(e,!0,Ad,Dd,Uo)}function Fd(e){return Cl(e,!0,yd,Td,Wo)}function Cl(e,t,n,i,l){if(!Te(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=l.get(e);if(a)return a;const r=xd(e);if(r===0)return e;const o=new Proxy(e,r===2?i:n);return l.set(e,o),o}function qn(e){return wn(e)?qn(e.__v_raw):!!(e&&e.__v_isReactive)}function wn(e){return!!(e&&e.__v_isReadonly)}function kt(e){return!!(e&&e.__v_isShallow)}function tr(e){return e?!!e.__v_raw:!1}function pe(e){const t=e&&e.__v_raw;return t?pe(t):e}function Sd(e){return!Ee(e,"__v_skip")&&Object.isExtensible(e)&&Co(e,"__v_skip",!0),e}const Ke=e=>Te(e)?Tn(e):e,ma=e=>Te(e)?Kt(e):e;function Re(e){return e?e.__v_isRef===!0:!1}function se(e){return qo(e,!1)}function ae(e){return qo(e,!0)}function qo(e,t){return Re(e)?e:new Pd(e,t)}class Pd{constructor(t,n){this.dep=new bl,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:pe(t),this._value=n?t:Ke(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,i=this.__v_isShallow||kt(t)||wn(t);t=i?t:pe(t),cn(t,n)&&(this._rawValue=t,this._value=i?t:Ke(t),this.dep.trigger())}}function un(e){return Re(e)?e.value:e}function de(e){return le(e)?e():un(e)}const Rd={get:(e,t,n)=>t==="__v_raw"?e:un(Reflect.get(e,t,n)),set:(e,t,n,i)=>{const l=e[t];return Re(l)&&!Re(n)?(l.value=n,!0):Reflect.set(e,t,n,i)}};function Ko(e){return qn(e)?e:new Proxy(e,Rd)}class Ld{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new bl,{get:i,set:l}=t(n.track.bind(n),n.trigger.bind(n));this._get=i,this._set=l}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Qo(e){return new Ld(e)}class Od{constructor(t,n,i){this._object=t,this._key=n,this._defaultValue=i,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return hd(pe(this._object),this._key)}}class Id{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function ii(e,t,n){return Re(e)?e:le(e)?new Id(e):Te(e)&&arguments.length>1?Md(e,t,n):se(e)}function Md(e,t,n){const i=e[t];return Re(i)?i:new Od(e,t,n)}class Vd{constructor(t,n,i){this.fn=t,this.setter=n,this._value=void 0,this.dep=new bl(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=bi-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&be!==this)return Po(this,!0),!0}get value(){const t=this.dep.track();return Oo(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Nd(e,t,n=!1){let i,l;return le(e)?i=e:(i=e.get,l=e.set),new Vd(i,l,n)}const Qi={},cl=new WeakMap;let Bn;function $d(e,t=!1,n=Bn){if(n){let i=cl.get(n);i||cl.set(n,i=[]),i.push(e)}}function jd(e,t,n=ke){const{immediate:i,deep:l,once:a,scheduler:r,augmentJob:o,call:c}=n,d=_=>l?_:kt(_)||l===!1||l===0?on(_,1):on(_);let u,p,h,E,v=!1,B=!1;if(Re(e)?(p=()=>e.value,v=kt(e)):qn(e)?(p=()=>d(e),v=!0):ne(e)?(B=!0,v=e.some(_=>qn(_)||kt(_)),p=()=>e.map(_=>{if(Re(_))return _.value;if(qn(_))return d(_);if(le(_))return c?c(_,2):_()})):le(e)?t?p=c?()=>c(e,2):e:p=()=>{if(h){hn();try{h()}finally{En()}}const _=Bn;Bn=u;try{return c?c(e,3,[E]):e(E)}finally{Bn=_}}:p=It,t&&l){const _=p,P=l===!0?1/0:l;p=()=>on(_(),P)}const k=xo(),D=()=>{u.stop(),k&&qa(k.effects,u)};if(a&&t){const _=t;t=(...P)=>{_(...P),D()}}let y=B?new Array(e.length).fill(Qi):Qi;const m=_=>{if(!(!(u.flags&1)||!u.dirty&&!_))if(t){const P=u.run();if(l||v||(B?P.some((H,M)=>cn(H,y[M])):cn(P,y))){h&&h();const H=Bn;Bn=u;try{const M=[P,y===Qi?void 0:B&&y[0]===Qi?[]:y,E];c?c(t,3,M):t(...M),y=P}finally{Bn=H}}}else u.run()};return o&&o(m),u=new Fo(p),u.scheduler=r?()=>r(m,!1):m,E=_=>$d(_,!1,u),h=u.onStop=()=>{const _=cl.get(u);if(_){if(c)c(_,4);else for(const P of _)P();cl.delete(u)}},t?i?m(!0):y=u.run():r?r(m.bind(null,!0),!0):u.run(),D.pause=u.pause.bind(u),D.resume=u.resume.bind(u),D.stop=D,D}function on(e,t=1/0,n){if(t<=0||!Te(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,Re(e))on(e.value,t,n);else if(ne(e))for(let i=0;i<e.length;i++)on(e[i],t,n);else if(yo(e)||Wn(e))e.forEach(i=>{on(i,t,n)});else if(ko(e)){for(const i in e)on(e[i],t,n);for(const i of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,i)&&on(e[i],t,n)}return e}/** 11* @vue/runtime-core v3.5.12 12* (c) 2018-present Yuxi (Evan) You and Vue contributors 13* @license MIT
14**/function Pi(e,t,n,i){try{return i?e(...i):e()}catch(l){Ri(l,t,n)}}function Dt(e,t,n,i){if(le(e)){const l=Pi(e,t,n,i);return l&&_o(l)&&l.catch(a=>{Ri(a,t,n)}),l}if(ne(e)){const l=[];for(let a=0;a<e.length;a++)l.push(Dt(e[a],t,n,i));return l}}function Ri(e,t,n,i=!0){const l=t?t.vnode:null,{errorHandler:a,throwUnhandledErrorInProduction:r}=t&&t.appContext.config||ke;if(t){let o=t.parent;const c=t.proxy,d=`https://vuejs.org/error-reference/#runtime-${n}`;for(;o;){const u=o.ec;if(u){for(let p=0;p<u.length;p++)if(u[p](e,c,d)===!1)return}o=o.parent}if(a){hn(),Pi(a,null,10,[e,c,d]),En();return}}Hd(e,n,l,i,r)}function Hd(e,t,n,i=!0,l=!1){if(l)throw e;console.error(e)}const Qe=[];let Lt=-1;const Kn=[];let ln=null,Nn=0;const Yo=Promise.resolve();let ul=null;function fn(e){const t=ul||Yo;return e?t.then(this?e.bind(this):e):t}function zd(e){let t=Lt+1,n=Qe.length;for(;t<n;){const i=t+n>>>1,l=Qe[i],a=Ci(l);a<e||a===e&&l.flags&2?t=i+1:n=i}return t}function nr(e){if(!(e.flags&1)){const t=Ci(e),n=Qe[Qe.length-1];!n||!(e.flags&2)&&t>=Ci(n)?Qe.push(e):Qe.splice(zd(t),0,e),e.flags|=1,Jo()}}function Jo(){ul||(ul=Yo.then(Xo))}function Ud(e){ne(e)?Kn.push(...e):ln&&e.id===-1?ln.splice(Nn+1,0,e):e.flags&1||(Kn.push(e),e.flags|=1),Jo()}function Qr(e,t,n=Lt+1){for(;n<Qe.length;n++){const i=Qe[n];if(i&&i.flags&2){if(e&&i.id!==e.uid)continue;Qe.splice(n,1),n--,i.flags&4&&(i.flags&=-2),i(),i.flags&4||(i.flags&=-2)}}}function pl(e){if(Kn.length){const t=[...new Set(Kn)].sort((n,i)=>Ci(n)-Ci(i));if(Kn.length=0,ln){ln.push(...t);return}for(ln=t,Nn=0;Nn<ln.length;Nn++){const n=ln[Nn];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}ln=null,Nn=0}}const Ci=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Xo(e){try{for(Lt=0;Lt<Qe.length;Lt++){const t=Qe[Lt];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Pi(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Lt<Qe.length;Lt++){const t=Qe[Lt];t&&(t.flags&=-2)}Lt=-1,Qe.length=0,pl(),ul=null,(Qe.length||Kn.length)&&Xo()}}let ut=null,Zo=null;function dl(e){const t=ut;return ut=e,Zo=e&&e.type.__scopeId||null,t}function Wd(e,t=ut,n){if(!t||e._n)return e;const i=(...l)=>{i._d&&ss(-1);const a=dl(t);let r;try{r=e(...l)}finally{dl(a),i._d&&ss(1)}return r};return i._n=!0,i._c=!0,i._d=!0,i}function Ot(e,t,n,i){const l=e.dirs,a=t&&t.dirs;for(let r=0;r<l.length;r++){const o=l[r];a&&(o.oldValue=a[r].value);let c=o.dir[i];c&&(hn(),Dt(c,n,8,[e.el,o,e,t]),En())}}const Gd=Symbol("_vte"),ec=e=>e.__isTeleport,an=Symbol("_leaveCb"),Yi=Symbol("_enterCb");function tc(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return ye(()=>{e.isMounted=!0}),rr(()=>{e.isUnmounting=!0}),e}const ft=[Function,Array],nc={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ft,onEnter:ft,onAfterEnter:ft,onEnterCancelled:ft,onBeforeLeave:ft,onLeave:ft,onAfterLeave:ft,onLeaveCancelled:ft,onBeforeAppear:ft,onAppear:ft,onAfterAppear:ft,onAppearCancelled:ft},ic=e=>{const t=e.subTree;return t.component?ic(t.component):t},qd={name:"BaseTransition",props:nc,setup(e,{slots:t}){const n=Pn(),i=tc();return()=>{const l=t.default&&ir(t.default(),!0);if(!l||!l.length)return;const a=lc(l),r=pe(e),{mode:o}=r;if(i.isLeaving)return Ul(a);const c=Yr(a);if(!c)return Ul(a);let d=Di(c,r,i,n,h=>d=h);c.type!==Ze&&xn(c,d);const u=n.subTree,p=u&&Yr(u);if(p&&p.type!==Ze&&!yn(c,p)&&ic(n).type!==Ze){const h=Di(p,r,i,n);if(xn(p,h),o==="out-in"&&c.type!==Ze)return i.isLeaving=!0,h.afterLeave=()=>{i.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave},Ul(a);o==="in-out"&&c.type!==Ze&&(h.delayLeave=(E,v,B)=>{const k=ac(i,p);k[String(p.key)]=p,E[an]=()=>{v(),E[an]=void 0,delete d.delayedLeave},d.delayedLeave=B})}return a}}};function lc(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==Ze){t=n;break}}return t}const Kd=qd;function ac(e,t){const{leavingVNodes:n}=e;let i=n.get(t.type);return i||(i=Object.create(null),n.set(t.type,i)),i}function Di(e,t,n,i,l){const{appear:a,mode:r,persisted:o=!1,onBeforeEnter:c,onEnter:d,onAfterEnter:u,onEnterCancelled:p,onBeforeLeave:h,onLeave:E,onAfterLeave:v,onLeaveCancelled:B,onBeforeAppear:k,onAppear:D,onAfterAppear:y,onAppearCancelled:m}=t,_=String(e.key),P=ac(n,e),H=(T,R)=>{T&&Dt(T,i,9,R)},M=(T,R)=>{const j=R[1];H(T,R),ne(T)?T.every(L=>L.length<=1)&&j():T.length<=1&&j()},z={mode:r,persisted:o,beforeEnter(T){let R=c;if(!n.isMounted)if(a)R=k||c;else return;T[an]&&T[an](!0);const j=P[_];j&&yn(e,j)&&j.el[an]&&j.el[an](),H(R,[T])},enter(T){let R=d,j=u,L=p;if(!n.isMounted)if(a)R=D||d,j=y||u,L=m||p;else return;let Y=!1;const G=T[Yi]=J=>{Y||(Y=!0,J?H(L,[T]):H(j,[T]),z.delayedLeave&&z.delayedLeave(),T[Yi]=void 0)};R?M(R,[T,G]):G()},leave(T,R){const j=String(e.key);if(T[Yi]&&T[Yi](!0),n.isUnmounting)return R();H(h,[T]);let L=!1;const Y=T[an]=G=>{L||(L=!0,R(),G?H(B,[T]):H(v,[T]),T[an]=void 0,P[j]===e&&delete P[j])};P[j]=e,E?M(E,[T,Y]):Y()},clone(T){const R=Di(T,t,n,i,l);return l&&l(R),R}};return z}function Ul(e){if(Li(e))return e=pn(e),e.children=null,e}function Yr(e){if(!Li(e))return ec(e.type)&&e.children?lc(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&le(n.default))return n.default()}}function xn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,xn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ir(e,t=!1,n){let i=[],l=0;for(let a=0;a<e.length;a++){let r=e[a];const o=n==null?r.key:String(n)+String(r.key!=null?r.key:a);r.type===Xe?(r.patchFlag&128&&l++,i=i.concat(ir(r.children,t,o))):(t||r.type!==Ze)&&i.push(o!=null?pn(r,{key:o}):r)}if(l>1)for(let a=0;a<i.length;a++)i[a].patchFlag=-2;return i}/*! #__NO_SIDE_EFFECTS__ */function I(e,t){return le(e)?Ne({name:e.name},t,{setup:e}):e}function lr(){const e=Pn();return e?(e.appContext.config.idPrefix||"v")+"-"+e.ids[0]+e.ids[1]++:""}
vendor: 28,538 bytes, lines 14-15
14function ar(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function hl(e,t,n,i,l=!1){if(ne(e)){e.forEach((v,B)=>hl(v,t&&(ne(t)?t[B]:t),n,i,l));return}if(Qn(i)&&!l)return;const a=i.shapeFlag&4?pr(i.component):i.el,r=l?null:a,{i:o,r:c}=e,d=t&&t.r,u=o.refs===ke?o.refs={}:o.refs,p=o.setupState,h=pe(p),E=p===ke?()=>!1:v=>Ee(h,v);if(d!=null&&d!==c&&(Le(d)?(u[d]=null,E(d)&&(p[d]=null)):Re(d)&&(d.value=null)),le(c))Pi(c,o,12,[r,u]);else{const v=Le(c),B=Re(c);if(v||B){const k=()=>{if(e.f){const D=v?E(c)?p[c]:u[c]:c.value;l?ne(D)&&qa(D,a):ne(D)?D.includes(a)||D.push(a):v?(u[c]=[a],E(c)&&(p[c]=u[c])):(c.value=[a],e.k&&(u[e.k]=c.value))}else v?(u[c]=r,E(c)&&(p[c]=r)):B&&(c.value=r,e.k&&(u[e.k]=r))};r?(k.id=-1,ot(k,n)):k()}}}let Jr=!1;const Mn=()=>{Jr||(console.error("Hydration completed but contains mismatches."),Jr=!0)},Qd=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Yd=e=>e.namespaceURI.includes("MathML"),Ji=e=>{if(e.nodeType===1){if(Qd(e))return"svg";if(Yd(e))return"mathml"}},Hn=e=>e.nodeType===8;function Jd(e){const{mt:t,p:n,o:{patchProp:i,createText:l,nextSibling:a,parentNode:r,remove:o,insert:c,createComment:d}}=e,u=(m,_)=>{if(!_.hasChildNodes()){n(null,m,_),pl(),_._vnode=m;return}p(_.firstChild,m,null,null,null),pl(),_._vnode=m},p=(m,_,P,H,M,z=!1)=>{z=z||!!_.dynamicChildren;const T=Hn(m)&&m.data==="[",R=()=>B(m,_,P,H,M,T),{type:j,ref:L,shapeFlag:Y,patchFlag:G}=_;let J=m.nodeType;_.el=m,G===-2&&(z=!1,_.dynamicChildren=null);let V=null;switch(j){case Dn:J!==3?_.children===""?(c(_.el=l(""),r(m),m),V=m):V=R():(m.data!==_.children&&(Mn(),m.data=_.children),V=a(m));break;case Ze:y(m)?(V=a(m),D(_.el=m.content.firstChild,m,P)):J!==8||T?V=R():V=a(m);break;case vi:if(T&&(m=a(m),J=m.nodeType),J===1||J===3){V=m;const te=!_.children.length;for(let Q=0;Q<_.staticCount;Q++)te&&(_.children+=V.nodeType===1?V.outerHTML:V.data),Q===_.staticCount-1&&(_.anchor=V),V=a(V);return T?a(V):V}else R();break;case Xe:T?V=v(m,_,P,H,M,z):V=R();break;default:if(Y&1)(J!==1||_.type.toLowerCase()!==m.tagName.toLowerCase())&&!y(m)?V=R():V=h(m,_,P,H,M,z);else if(Y&6){_.slotScopeIds=M;const te=r(m);if(T?V=k(m):Hn(m)&&m.data==="teleport start"?V=k(m,m.data,"teleport end"):V=a(m),t(_,te,null,P,H,Ji(te),z),Qn(_)){let Q;T?(Q=Me(Xe),Q.anchor=V?V.previousSibling:te.lastChild):Q=m.nodeType===3?Sc(""):Me("div"),Q.el=m,_.component.subTree=Q}}else Y&64?J!==8?V=R():V=_.type.hydrate(m,_,P,H,M,z,e,E):Y&128&&(V=_.type.hydrate(m,_,P,H,Ji(r(m)),M,z,e,p))}return L!=null&&hl(L,null,H,_),V},h=(m,_,P,H,M,z)=>{z=z||!!_.dynamicChildren;const{type:T,props:R,patchFlag:j,shapeFlag:L,dirs:Y,transition:G}=_,J=T==="input"||T==="option";if(J||j!==-1){Y&&Ot(_,null,P,"created");let V=!1;if(y(m)){V=_c(null,G)&&P&&P.vnode.props&&P.vnode.props.appear;const Q=m.content.firstChild;V&&G.beforeEnter(Q),D(Q,m,P),_.el=m=Q}if(L&16&&!(R&&(R.innerHTML||R.textContent))){let Q=E(m.firstChild,_,m,P,H,M,z);for(;Q;){Xi(m,1)||Mn();const ce=Q;Q=Q.nextSibling,o(ce)}}else if(L&8){let Q=_.children;Q[0]===` 15`&&(m.tagName==="PRE"||m.tagName==="TEXTAREA")&&(Q=Q.slice(1)),m.textContent!==Q&&(Xi(m,0)||Mn(),m.textContent=_.children)}if(R){if(J||!z||j&48){const Q=m.tagName.includes("-");for(const ce in R)(J&&(ce.endsWith("value")||ce==="indeterminate")||Fi(ce)&&!Gn(ce)||ce[0]==="."||Q)&&i(m,ce,null,R[ce],void 0,P)}else if(R.onClick)i(m,"onClick",null,R.onClick,void 0,P);else if(j&4&&qn(R.style))for(const Q in R.style)R.style[Q]}let te;(te=R&&R.onVnodeBeforeMount)&>(te,P,_),Y&&Ot(_,null,P,"beforeMount"),((te=R&&R.onVnodeMounted)||Y||V)&&wc(()=>{te&>(te,P,_),V&&G.enter(m),Y&&Ot(_,null,P,"mounted")},H)}return m.nextSibling},E=(m,_,P,H,M,z,T)=>{T=T||!!_.dynamicChildren;const R=_.children,j=R.length;for(let L=0;L<j;L++){const Y=T?R[L]:R[L]=vt(R[L]),G=Y.type===Dn;m?(G&&!T&&L+1<j&&vt(R[L+1]).type===Dn&&(c(l(m.data.slice(Y.children.length)),P,a(m)),m.data=Y.children),m=p(m,Y,H,M,z,T)):G&&!Y.children?c(Y.el=l(""),P):(Xi(P,1)||Mn(),n(null,Y,P,null,H,M,Ji(P),z))}return m},v=(m,_,P,H,M,z)=>{const{slotScopeIds:T}=_;T&&(M=M?M.concat(T):T);const R=r(m),j=E(a(m),_,R,P,H,M,z);return j&&Hn(j)&&j.data==="]"?a(_.anchor=j):(Mn(),c(_.anchor=d("]"),R,j),j)},B=(m,_,P,H,M,z)=>{if(Xi(m.parentElement,1)||Mn(),_.el=null,z){const j=k(m);for(;;){const L=a(m);if(L&&L!==j)o(L);else break}}const T=a(m),R=r(m);return o(m),n(null,_,R,T,P,H,Ji(R),M),T},k=(m,_="[",P="]")=>{let H=0;for(;m;)if(m=a(m),m&&Hn(m)&&(m.data===_&&H++,m.data===P)){if(H===0)return a(m);H--}return m},D=(m,_,P)=>{const H=_.parentNode;H&&H.replaceChild(m,_);let M=P;for(;M;)M.vnode.el===_&&(M.vnode.el=M.subTree.el=m),M=M.parent},y=m=>m.nodeType===1&&m.tagName==="TEMPLATE";return[u,p]}const Xr="data-allow-mismatch",Xd={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function Xi(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(Xr);)e=e.parentElement;const n=e&&e.getAttribute(Xr);if(n==null)return!1;if(n==="")return!0;{const i=n.split(",");return t===0&&i.includes("children")?!0:n.split(",").includes(Xd[t])}}_l().requestIdleCallback;_l().cancelIdleCallback;function Zd(e,t){if(Hn(e)&&e.data==="["){let n=1,i=e.nextSibling;for(;i;){if(i.nodeType===1){if(t(i)===!1)break}else if(Hn(i))if(i.data==="]"){if(--n===0)break}else i.data==="["&&n++;i=i.nextSibling}}else t(e)}const Qn=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function rc(e){le(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:i,delay:l=200,hydrate:a,timeout:r,suspensible:o=!0,onError:c}=e;let d=null,u,p=0;const h=()=>(p++,d=null,E()),E=()=>{let v;return d||(v=d=t().catch(B=>{if(B=B instanceof Error?B:new Error(String(B)),c)return new Promise((k,D)=>{c(B,()=>k(h()),()=>D(B),p+1)});throw B}).then(B=>v!==d&&d?d:(B&&(B.__esModule||B[Symbol.toStringTag]==="Module")&&(B=B.default),u=B,B)))};return I({name:"AsyncComponentWrapper",__asyncLoader:E,__asyncHydrate(v,B,k){const D=a?()=>{const y=a(k,m=>Zd(v,m));y&&(B.bum||(B.bum=[])).push(y)}:k;u?D():E().then(()=>!B.isUnmounted&&D())},get __asyncResolved(){return u},setup(){const v=Ie;if(ar(v),u)return()=>Wl(u,v);const B=m=>{d=null,Ri(m,v,13,!i)};if(o&&v.suspense||Xn)return E().then(m=>()=>Wl(m,v)).catch(m=>(B(m),()=>i?Me(i,{error:m}):null));const k=se(!1),D=se(),y=se(!!l);return l&&setTimeout(()=>{y.value=!1},l),r!=null&&setTimeout(()=>{if(!k.value&&!D.value){const m=new Error(`Async component timed out after ${r}ms.`);B(m),D.value=m}},r),E().then(()=>{k.value=!0,v.parent&&Li(v.parent.vnode)&&v.parent.update()}).catch(m=>{B(m),D.value=m}),()=>{if(k.value&&u)return Wl(u,v);if(D.value&&i)return Me(i,{error:D.value});if(n&&!y.value)return Me(n)}}})}function Wl(e,t){const{ref:n,props:i,children:l,ce:a}=t.vnode,r=Me(e,i,l);return r.ref=n,r.ce=a,delete t.vnode.ce,r}const Li=e=>e.type.__isKeepAlive;function eh(e,t){sc(e,"a",t)}function th(e,t){sc(e,"da",t)}function sc(e,t,n=Ie){const i=e.__wdc||(e.__wdc=()=>{let l=n;for(;l;){if(l.isDeactivated)return;l=l.parent}return e()});if(Dl(t,i,n),n){let l=n.parent;for(;l&&l.parent;)Li(l.parent.vnode)&&nh(i,t,n,l),l=l.parent}}function nh(e,t,n,i){const l=Dl(t,e,i,!0);Sn(()=>{qa(i[t],l)},n)}function Dl(e,t,n=Ie,i=!1){if(n){const l=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...r)=>{hn();const o=Oi(n),c=Dt(t,n,e,r);return o(),En(),c});return i?l.unshift(a):l.push(a),a}}const Qt=e=>(t,n=Ie)=>{(!Xn||e==="sp")&&Dl(e,(...i)=>t(...i),n)},ih=Qt("bm"),ye=Qt("m"),lh=Qt("bu"),oc=Qt("u"),rr=Qt("bum"),Sn=Qt("um"),ah=Qt("sp"),rh=Qt("rtg"),sh=Qt("rtc");function oh(e,t=Ie){Dl("ec",e,t)}const ch="components";function xe(e,t){return ph(ch,e,!0,t)||e}const uh=Symbol.for("v-ndc");function ph(e,t,n=!0,i=!1){const l=ut||Ie;if(l){const a=l.type;{const o=Yh(a,!1);if(o&&(o===t||o===et(t)||o===Si(et(t))))return a}const r=Zr(l[e]||a[e],t)||Zr(l.appContext[e],t);return!r&&i?a:r}}function Zr(e,t){return e&&(e[t]||e[et(t)]||e[Si(et(t))])}const va=e=>e?Pc(e)?pr(e):va(e.parent):null,mi=Ne(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>va(e.parent),$root:e=>va(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>uc(e),$forceUpdate:e=>e.f||(e.f=()=>{nr(e.update)}),$nextTick:e=>e.n||(e.n=fn.bind(e.proxy)),$watch:e=>Sh.bind(e)}),Gl=(e,t)=>e!==ke&&!e.__isScriptSetup&&Ee(e,t),dh={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:i,data:l,props:a,accessCache:r,type:o,appContext:c}=e;let d;if(t[0]!=="$"){const E=r[t];if(E!==void 0)switch(E){case 1:return i[t];case 2:return l[t];case 4:return n[t];case 3:return a[t]}else{if(Gl(i,t))return r[t]=1,i[t];if(l!==ke&&Ee(l,t))return r[t]=2,l[t];if((d=e.propsOptions[0])&&Ee(d,t))return r[t]=3,a[t];if(n!==ke&&Ee(n,t))return r[t]=4,n[t];Aa&&(r[t]=0)}}const u=mi[t];let p,h;if(u)return t==="$attrs"&&ze(e.attrs,"get",""),u(e);if((p=o.__cssModules)&&(p=p[t]))return p;if(n!==ke&&Ee(n,t))return r[t]=4,n[t];if(h=c.config.globalProperties,Ee(h,t))return h[t]},set({_:e},t,n){const{data:i,setupState:l,ctx:a}=e;return Gl(l,t)?(l[t]=n,!0):i!==ke&&Ee(i,t)?(i[t]=n,!0):Ee(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(a[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:i,appContext:l,propsOptions:a}},r){let o;return!!n[r]||e!==ke&&Ee(e,r)||Gl(t,r)||(o=a[0])&&Ee(o,r)||Ee(i,r)||Ee(mi,r)||Ee(l.config.globalProperties,r)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Ee(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function es(e){return ne(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Aa=!0;function hh(e){const t=uc(e),n=e.proxy,i=e.ctx;Aa=!1,t.beforeCreate&&ts(t.beforeCreate,e,"bc");const{data:l,computed:a,methods:r,watch:o,provide:c,inject:d,created:u,beforeMount:p,mounted:h,beforeUpdate:E,updated:v,activated:B,deactivated:k,beforeDestroy:D,beforeUnmount:y,destroyed:m,unmounted:_,render:P,renderTracked:H,renderTriggered:M,errorCaptured:z,serverPrefetch:T,expose:R,inheritAttrs:j,components:L,directives:Y,filters:G}=t;if(d&&Eh(d,i,null),r)for(const te in r){const Q=r[te];le(Q)&&(i[te]=Q.bind(n))}if(l){const te=l.call(n,n);Te(te)&&(e.data=Tn(te))}if(Aa=!0,a)for(const te in a){const Q=a[te],ce=le(Q)?Q.bind(n,n):le(Q.get)?Q.get.bind(n,n):It,nt=!le(Q)&&le(Q.set)?Q.set.bind(n):It,Ue=b({get:ce,set:nt});Object.defineProperty(i,te,{enumerable:!0,configurable:!0,get:()=>Ue.value,set:$e=>Ue.value=$e})}if(o)for(const te in o)cc(o[te],i,n,te);if(c){const te=le(c)?c.call(n):c;Reflect.ownKeys(te).forEach(Q=>{Ct(Q,te[Q])})}u&&ts(u,e,"c");function V(te,Q){ne(Q)?Q.forEach(ce=>te(ce.bind(n))):Q&&te(Q.bind(n))}if(V(ih,p),V(ye,h),V(lh,E),V(oc,v),V(eh,B),V(th,k),V(oh,z),V(sh,H),V(rh,M),V(rr,y),V(Sn,_),V(ah,T),ne(R))if(R.length){const te=e.exposed||(e.exposed={});R.forEach(Q=>{Object.defineProperty(te,Q,{get:()=>n[Q],set:ce=>n[Q]=ce})})}else e.exposed||(e.exposed={});P&&e.render===It&&(e.render=P),j!=null&&(e.inheritAttrs=j),L&&(e.components=L),Y&&(e.directives=Y),T&&ar(e)}function Eh(e,t,n=It){ne(e)&&(e=Ba(e));for(const i in e){const l=e[i];let a;Te(l)?"default"in l?a=ve(l.from||i,l.default,!0):a=ve(l.from||i):a=ve(l),Re(a)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>a.value,set:r=>a.value=r}):t[i]=a}}function ts(e,t,n){Dt(ne(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,n)}function cc(e,t,n,i){let l=i.includes(".")?Cc(n,i):()=>n[i];if(Le(e)){const a=t[e];le(a)&&we(l,a)}else if(le(e))we(l,e.bind(n));else if(Te(e))if(ne(e))e.forEach(a=>cc(a,t,n,i));else{const a=le(e.handler)?e.handler.bind(n):t[e.handler];le(a)&&we(l,a,e)}}function uc(e){const t=e.type,{mixins:n,extends:i}=t,{mixins:l,optionsCache:a,config:{optionMergeStrategies:r}}=e.appContext,o=a.get(t);let c;return o?c=o:!l.length&&!n&&!i?c=t:(c={},l.length&&l.forEach(d=>El(c,d,r,!0)),El(c,t,r)),Te(t)&&a.set(t,c),c}function El(e,t,n,i=!1){const{mixins:l,extends:a}=t;a&&El(e,a,n,!0),l&&l.forEach(r=>El(e,r,n,!0));for(const r in t)if(!(i&&r==="expose")){const o=fh[r]||n&&n[r];e[r]=o?o(e[r],t[r]):t[r]}return e}const fh={data:ns,props:is,emits:is,methods:Ei,computed:Ei,beforeCreate:We,created:We,beforeMount:We,mounted:We,beforeUpdate:We,updated:We,beforeDestroy:We,beforeUnmount:We,destroyed:We,unmounted:We,activated:We,deactivated:We,errorCaptured:We,serverPrefetch:We,components:Ei,directives:Ei,watch:mh,provide:ns,inject:gh};function ns(e,t){return t?e?function(){return Ne(le(e)?e.call(this,this):e,le(t)?t.call(this,this):t)}:t:e}function gh(e,t){return Ei(Ba(e),Ba(t))}function Ba(e){if(ne(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function We(e,t){return e?[...new Set([].concat(e,t))]:t}function Ei(e,t){return e?Ne(Object.create(null),e,t):t}function is(e,t){return e?ne(e)&&ne(t)?[...new Set([...e,...t])]:Ne(Object.create(null),es(e),es(t??{})):t}function mh(e,t){if(!e)return t;if(!t)return e;const n=Ne(Object.create(null),e);for(const i in t)n[i]=We(e[i],t[i]);return n}function pc(){return{app:null,config:{isNativeTag:Qp,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let vh=0;function Ah(e,t){return function(i,l=null){le(i)||(i=Ne({},i)),l!=null&&!Te(l)&&(l=null);const a=pc(),r=new WeakSet,o=[];let c=!1;const d=a.app={_uid:vh++,_component:i,_props:l,_container:null,_context:a,_instance:null,version:Xh,get config(){return a.config},set config(u){},use(u,...p){return r.has(u)||(u&&le(u.install)?(r.add(u),u.install(d,...p)):le(u)&&(r.add(u),u(d,...p))),d},mixin(u){return a.mixins.includes(u)||a.mixins.push(u),d},component(u,p){return p?(a.components[u]=p,d):a.components[u]},directive(u,p){return p?(a.directives[u]=p,d):a.directives[u]},mount(u,p,h){if(!c){const E=d._ceVNode||Me(i,l);return E.appContext=a,h===!0?h="svg":h===!1&&(h=void 0),p&&t?t(E,u):e(E,u,h),c=!0,d._container=u,u.__vue_app__=d,pr(E.component)}},onUnmount(u){o.push(u)},unmount(){c&&(Dt(o,d._instance,16),e(null,d._container),delete d._container.__vue_app__)},provide(u,p){return a.provides[u]=p,d},runWithContext(u){const p=Cn;Cn=d;try{return u()}finally{Cn=p}}};return d}}let Cn=null;function Ct(e,t){if(Ie){let n=Ie.provides;const i=Ie.parent&&Ie.parent.provides;i===n&&(n=Ie.provides=Object.create(i)),n[e]=t}}function ve(e,t,n=!1){const i=Ie||ut;if(i||Cn){const l=Cn?Cn._context.provides:i?i.parent==null?i.vnode.appContext&&i.vnode.appContext.provides:i.parent.provides:void 0;if(l&&e in l)return l[e];if(arguments.length>1)return n&&le(t)?t.call(i&&i.proxy):t}}function dc(){return!!(Ie||ut||Cn)}const hc={},Ec=()=>Object.create(hc),fc=e=>Object.getPrototypeOf(e)===hc;function Bh(e,t,n,i=!1){const l={},a=Ec();e.propsDefaults=Object.create(null),gc(e,t,l,a);for(const r in e.propsOptions[0])r in l||(l[r]=void 0);n?e.props=i?l:Go(l):e.type.props?e.props=l:e.props=a,e.attrs=a}function yh(e,t,n,i){const{props:l,attrs:a,vnode:{patchFlag:r}}=e,o=pe(l),[c]=e.propsOptions;let d=!1;if((i||r>0)&&!(r&16)){if(r&8){const u=e.vnode.dynamicProps;for(let p=0;p<u.length;p++){let h=u[p];if(Tl(e.emitsOptions,h))continue;const E=t[h];if(c)if(Ee(a,h))E!==a[h]&&(a[h]=E,d=!0);else{const v=et(h);l[v]=ya(c,o,v,E,e,!1)}else E!==a[h]&&(a[h]=E,d=!0)}}}else{gc(e,t,l,a)&&(d=!0);let u;for(const p in o)(!t||!Ee(t,p)&&((u=Fn(p))===p||!Ee(t,u)))&&(c?n&&(n[p]!==void 0||n[u]!==void 0)&&(l[p]=ya(c,o,p,void 0,e,!0)):delete l[p]);if(a!==o)for(const p in a)(!t||!Ee(t,p))&&(delete a[p],d=!0)}d&&Ut(e.attrs,"set","")}function gc(e,t,n,i){const[l,a]=e.propsOptions;let r=!1,o;if(t)for(let c in t){if(Gn(c))continue;const d=t[c];let u;l&&Ee(l,u=et(c))?!a||!a.includes(u)?n[u]=d:(o||(o={}))[u]=d:Tl(e.emitsOptions,c)||(!(c in i)||d!==i[c])&&(i[c]=d,r=!0)}if(a){const c=pe(n),d=o||ke;for(let u=0;u<a.length;u++){const p=a[u];n[p]=ya(l,c,p,d[p],e,!Ee(d,p))}}return r}function ya(e,t,n,i,l,a){const r=e[n];if(r!=null){const o=Ee(r,"default");if(o&&i===void 0){const c=r.default;if(r.type!==Function&&!r.skipFactory&&le(c)){const{propsDefaults:d}=l;if(n in d)i=d[n];else{const u=Oi(l);i=d[n]=c.call(null,t),u()}}else i=c;l.ce&&l.ce._setProp(n,i)}r[0]&&(a&&!o?i=!1:r[1]&&(i===""||i===Fn(n))&&(i=!0))}return i}const _h=new WeakMap;function mc(e,t,n=!1){const i=n?_h:t.propsCache,l=i.get(e);if(l)return l;const a=e.props,r={},o=[];let c=!1;if(!le(e)){const u=p=>{c=!0;const[h,E]=mc(p,t,!0);Ne(r,h),E&&o.push(...E)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!a&&!c)return Te(e)&&i.set(e,Un),Un;if(ne(a))for(let u=0;u<a.length;u++){const p=et(a[u]);ls(p)&&(r[p]=ke)}else if(a)for(const u in a){const p=et(u);if(ls(p)){const h=a[u],E=r[p]=ne(h)||le(h)?{type:h}:Ne({},h),v=E.type;let B=!1,k=!0;if(ne(v))for(let D=0;D<v.length;++D){const y=v[D],m=le(y)&&y.name;if(m==="Boolean"){B=!0;break}else m==="String"&&(k=!1)}else B=le(v)&&v.name==="Boolean";E[0]=B,E[1]=k,(B||Ee(E,"default"))&&o.push(p)}}const d=[r,o];return Te(e)&&i.set(e,d),d}function ls(e){return e[0]!=="$"&&!Gn(e)}const vc=e=>e[0]==="_"||e==="$stable",sr=e=>ne(e)?e.map(vt):[vt(e)],bh=(e,t,n)=>{if(t._n)return t;const i=Wd((...l)=>sr(t(...l)),n);return i._c=!1,i},Ac=(e,t,n)=>{const i=e._ctx;for(const l in e){if(vc(l))continue;const a=e[l];if(le(a))t[l]=bh(l,a,i);else if(a!=null){const r=sr(a);t[l]=()=>r}}},Bc=(e,t)=>{const n=sr(t);e.slots.default=()=>n},yc=(e,t,n)=>{for(const i in t)(n||i!=="_")&&(e[i]=t[i])},kh=(e,t,n)=>{const i=e.slots=Ec();if(e.vnode.shapeFlag&32){const l=t._;l?(yc(i,t,n),n&&Co(i,"_",l,!0)):Ac(t,i)}else t&&Bc(e,t)},Ch=(e,t,n)=>{const{vnode:i,slots:l}=e;let a=!0,r=ke;if(i.shapeFlag&32){const o=t._;o?n&&o===1?a=!1:yc(l,t,n):(a=!t.$stable,Ac(t,l)),r=t}else t&&(Bc(e,t),r={default:1});if(a)for(const o in l)!vc(o)&&r[o]==null&&delete l[o]},ot=wc;function Dh(e){return Th(e,Jd)}function Th(e,t){const n=_l();n.__VUE__=!0;const{insert:i,remove:l,patchProp:a,createElement:r,createText:o,createComment:c,setText:d,setElementText:u,parentNode:p,nextSibling:h,setScopeId:E=It,insertStaticContent:v}=e,B=(g,A,C,F=null,x=null,S=null,W=void 0,$=null,N=!!A.dynamicChildren)=>{if(g===A)return;g&&!yn(g,A)&&(F=w(g),$e(g,x,S,!0),g=null),A.patchFlag===-2&&(N=!1,A.dynamicChildren=null);const{type:O,ref:ee,shapeFlag:q}=A;switch(O){case Dn:k(g,A,C,F);break;case Ze:D(g,A,C,F);break;case vi:g==null&&y(A,C,F,W);break;case Xe:L(g,A,C,F,x,S,W,$,N);break;default:q&1?P(g,A,C,F,x,S,W,$,N):q&6?Y(g,A,C,F,x,S,W,$,N):(q&64||q&128)&&O.process(g,A,C,F,x,S,W,$,N,X)}ee!=null&&x&&hl(ee,g&&g.ref,S,A||g,!A)},k=(g,A,C,F)=>{if(g==null)i(A.el=o(A.children),C,F);else{const x=A.el=g.el;A.children!==g.children&&d(x,A.children)}},D=(g,A,C,F)=>{g==null?i(A.el=c(A.children||""),C,F):A.el=g.el},y=(g,A,C,F)=>{[g.el,g.anchor]=v(g.children,A,C,F,g.el,g.anchor)},m=({el:g,anchor:A},C,F)=>{let x;for(;g&&g!==A;)x=h(g),i(g,C,F),g=x;i(A,C,F)},_=({el:g,anchor:A})=>{let C;for(;g&&g!==A;)C=h(g),l(g),g=C;l(A)},P=(g,A,C,F,x,S,W,$,N)=>{A.type==="svg"?W="svg":A.type==="math"&&(W="mathml"),g==null?H(A,C,F,x,S,W,$,N):T(g,A,x,S,W,$,N)},H=(g,A,C,F,x,S,W,$)=>{let N,O;const{props:ee,shapeFlag:q,transition:Z,dirs:ie}=g;if(N=g.el=r(g.type,S,ee&&ee.is,ee),q&8?u(N,g.children):q&16&&z(g.children,N,null,F,x,ql(g,S),W,$),ie&&Ot(g,null,F,"created"),M(N,g,g.scopeId,W,F),ee){for(const _e in ee)_e!=="value"&&!Gn(_e)&&a(N,_e,null,ee[_e],S,F);"value"in ee&&a(N,"value",null,ee.value,S),(O=ee.onVnodeBeforeMount)&>(O,F,g)}ie&&Ot(g,null,F,"beforeMount");const ue=_c(x,Z);ue&&Z.beforeEnter(N),i(N,A,C),((O=ee&&ee.onVnodeMounted)||ue||ie)&&ot(()=>{O&>(O,F,g),ue&&Z.enter(N),ie&&Ot(g,null,F,"mounted")},x)},M=(g,A,C,F,x)=>{if(C&&E(g,C),F)for(let S=0;S<F.length;S++)E(g,F[S]);if(x){let S=x.subTree;if(A===S||Tc(S.type)&&(S.ssContent===A||S.ssFallback===A)){const W=x.vnode;M(g,W,W.scopeId,W.slotScopeIds,x.parent)}}},z=(g,A,C,F,x,S,W,$,N=0)=>{for(let O=N;O<g.length;O++){const ee=g[O]=$?rn(g[O]):vt(g[O]);B(null,ee,A,C,F,x,S,W,$)}},T=(g,A,C,F,x,S,W)=>{const $=A.el=g.el;let{patchFlag:N,dynamicChildren:O,dirs:ee}=A;N|=g.patchFlag&16;const q=g.props||ke,Z=A.props||ke;let ie;if(C&&mn(C,!1),(ie=Z.onVnodeBeforeUpdate)&>(ie,C,A,g),ee&&Ot(A,g,C,"beforeUpdate"),C&&mn(C,!0),(q.innerHTML&&Z.innerHTML==null||q.textContent&&Z.textContent==null)&&u($,""),O?R(g.dynamicChildren,O,$,C,F,ql(A,x),S):W||Q(g,A,$,null,C,F,ql(A,x),S,!1),N>0){if(N&16)j($,q,Z,C,x);else if(N&2&&q.class!==Z.class&&a($,"class",null,Z.class,x),N&4&&a($,"style",q.style,Z.style,x),N&8){const ue=A.dynamicProps;for(let _e=0;_e<ue.length;_e++){const ge=ue[_e],at=q[ge],He=Z[ge];(He!==at||ge==="value")&&a($,ge,at,He,x,C)}}N&1&&g.children!==A.children&&u($,A.children)}else!W&&O==null&&j($,q,Z,C,x);((ie=Z.onVnodeUpdated)||ee)&&ot(()=>{ie&>(ie,C,A,g),ee&&Ot(A,g,C,"updated")},F)},R=(g,A,C,F,x,S,W)=>{for(let $=0;$<A.length;$++){const N=g[$],O=A[$],ee=N.el&&(N.type===Xe||!yn(N,O)||N.shapeFlag&70)?p(N.el):C;B(N,O,ee,null,F,x,S,W,!0)}},j=(g,A,C,F,x)=>{if(A!==C){if(A!==ke)for(const S in A)!Gn(S)&&!(S in C)&&a(g,S,A[S],null,x,F);for(const S in C){if(Gn(S))continue;const W=C[S],$=A[S];W!==$&&S!=="value"&&a(g,S,$,W,x,F)}"value"in C&&a(g,"value",A.value,C.value,x)}},L=(g,A,C,F,x,S,W,$,N)=>{const O=A.el=g?g.el:o(""),ee=A.anchor=g?g.anchor:o("");let{patchFlag:q,dynamicChildren:Z,slotScopeIds:ie}=A;ie&&($=$?$.concat(ie):ie),g==null?(i(O,C,F),i(ee,C,F),z(A.children||[],C,ee,x,S,W,$,N)):q>0&&q&64&&Z&&g.dynamicChildren?(R(g.dynamicChildren,Z,C,x,S,W,$),(A.key!=null||x&&A===x.subTree)&&bc(g,A,!0)):Q(g,A,C,ee,x,S,W,$,N)},Y=(g,A,C,F,x,S,W,$,N)=>{A.slotScopeIds=$,g==null?A.shapeFlag&512?x.ctx.activate(A,C,F,W,N):G(A,C,F,x,S,W,N):J(g,A,N)},G=(g,A,C,F,x,S,W)=>{const $=g.component=Wh(g,F,x);if(Li(g)&&($.ctx.renderer=X),Gh($,!1,W),$.asyncDep){if(x&&x.registerDep($,V,W),!g.el){const N=$.subTree=Me(Ze);D(null,N,A,C)}}else V($,g,A,C,x,S,W)},J=(g,A,C)=>{const F=A.component=g.component;if(Ih(g,A,C))if(F.asyncDep&&!F.asyncResolved){te(F,A,C);return}else F.next=A,F.update();else A.el=g.el,F.vnode=A},V=(g,A,C,F,x,S,W)=>{const $=()=>{if(g.isMounted){let{next:q,bu:Z,u:ie,parent:ue,vnode:_e}=g;{const rt=kc(g);if(rt){q&&(q.el=_e.el,te(g,q,W)),rt.asyncDep.then(()=>{g.isUnmounted||$()});return}}let ge=q,at;mn(g,!1),q?(q.el=_e.el,te(g,q,W)):q=_e,Z&&Nl(Z),(at=q.props&&q.props.onVnodeBeforeUpdate)&>(at,ue,q,_e),mn(g,!0);const He=Kl(g),yt=g.subTree;g.subTree=He,B(yt,He,p(yt.el),w(yt),g,x,S),q.el=He.el,ge===null&&Mh(g,He.el),ie&&ot(ie,x),(at=q.props&&q.props.onVnodeUpdated)&&ot(()=>gt(at,ue,q,_e),x)}else{let q;const{el:Z,props:ie}=A,{bm:ue,m:_e,parent:ge,root:at,type:He}=g,yt=Qn(A);if(mn(g,!1),ue&&Nl(ue),!yt&&(q=ie&&ie.onVnodeBeforeMount)&>(q,ge,A),mn(g,!0),Z&&Be){const rt=()=>{g.subTree=Kl(g),Be(Z,g.subTree,g,x,null)};yt&&He.__asyncHydrate?He.__asyncHydrate(Z,g,rt):rt()}else{at.ce&&at.ce._injectChildStyle(He);const rt=g.subTree=Kl(g);B(null,rt,C,F,g,x,S),A.el=rt.el}if(_e&&ot(_e,x),!yt&&(q=ie&&ie.onVnodeMounted)){const rt=A;ot(()=>gt(q,ge,rt),x)}(A.shapeFlag&256||ge&&Qn(ge.vnode)&&ge.vnode.shapeFlag&256)&&g.a&&ot(g.a,x),g.isMounted=!0,A=C=F=null}};g.scope.on();const N=g.effect=new Fo($);g.scope.off();const O=g.update=N.run.bind(N),ee=g.job=N.runIfDirty.bind(N);ee.i=g,ee.id=g.uid,N.scheduler=()=>nr(ee),mn(g,!0),O()},te=(g,A,C)=>{A.component=g;const F=g.vnode.props;g.vnode=A,g.next=null,yh(g,A.props,F,C),Ch(g,A.children,C),hn(),Qr(g),En()},Q=(g,A,C,F,x,S,W,$,N=!1)=>{const O=g&&g.children,ee=g?g.shapeFlag:0,q=A.children,{patchFlag:Z,shapeFlag:ie}=A;if(Z>0){if(Z&128){nt(O,q,C,F,x,S,W,$,N);return}else if(Z&256){ce(O,q,C,F,x,S,W,$,N);return}}ie&8?(ee&16&&je(O,x,S),q!==O&&u(C,q)):ee&16?ie&16?nt(O,q,C,F,x,S,W,$,N):je(O,x,S,!0):(ee&8&&u(C,""),ie&16&&z(q,C,F,x,S,W,$,N))},ce=(g,A,C,F,x,S,W,$,N)=>{g=g||Un,A=A||Un;const O=g.length,ee=A.length,q=Math.min(O,ee);let Z;for(Z=0;Z<q;Z++){const ie=A[Z]=N?rn(A[Z]):vt(A[Z]);B(g[Z],ie,C,null,x,S,W,$,N)}O>ee?je(g,x,S,!0,!1,q):z(A,C,F,x,S,W,$,N,q)},nt=(g,A,C,F,x,S,W,$,N)=>{let O=0;const ee=A.length;let q=g.length-1,Z=ee-1;for(;O<=q&&O<=Z;){const ie=g[O],ue=A[O]=N?rn(A[O]):vt(A[O]);if(yn(ie,ue))B(ie,ue,C,null,x,S,W,$,N);else break;O++}for(;O<=q&&O<=Z;){const ie=g[q],ue=A[Z]=N?rn(A[Z]):vt(A[Z]);if(yn(ie,ue))B(ie,ue,C,null,x,S,W,$,N);else break;q--,Z--}if(O>q){if(O<=Z){const ie=Z+1,ue=ie<ee?A[ie].el:F;for(;O<=Z;)B(null,A[O]=N?rn(A[O]):vt(A[O]),C,ue,x,S,W,$,N),O++}}else if(O>Z)for(;O<=q;)$e(g[O],x,S,!0),O++;else{const ie=O,ue=O,_e=new Map;for(O=ue;O<=Z;O++){const st=A[O]=N?rn(A[O]):vt(A[O]);st.key!=null&&_e.set(st.key,O)}let ge,at=0;const He=Z-ue+1;let yt=!1,rt=0;const ui=new Array(He);for(O=0;O<He;O++)ui[O]=0;for(O=ie;O<=q;O++){const st=g[O];if(at>=He){$e(st,x,S,!0);continue}let Rt;if(st.key!=null)Rt=_e.get(st.key);else for(ge=ue;ge<=Z;ge++)if(ui[ge-ue]===0&&yn(st,A[ge])){Rt=ge;break}Rt===void 0?$e(st,x,S,!0):(ui[Rt-ue]=O+1,Rt>=rt?rt=Rt:yt=!0,B(st,A[Rt],C,null,x,S,W,$,N),at++)}const Ur=yt?wh(ui):Un;for(ge=Ur.length-1,O=He-1;O>=0;O--){const st=ue+O,Rt=A[st],Wr=st+1<ee?A[st+1].el:F;ui[O]===0?B(null,Rt,C,Wr,x,S,W,$,N):yt&&(ge<0||O!==Ur[ge]?Ue(Rt,C,Wr,2):ge--)}}},Ue=(g,A,C,F,x=null)=>{const{el:S,type:W,transition:$,children:N,shapeFlag:O}=g;if(O&6){Ue(g.component.subTree,A,C,F);return}if(O&128){g.suspense.move(A,C,F);return}if(O&64){W.move(g,A,C,X);return}if(W===Xe){i(S,A,C);for(let q=0;q<N.length;q++)Ue(N[q],A,C,F);i(g.anchor,A,C);return}if(W===vi){m(g,A,C);return}if(F!==2&&O&1&&$)if(F===0)$.beforeEnter(S),i(S,A,C),ot(()=>$.enter(S),x);else{const{leave:q,delayLeave:Z,afterLeave:ie}=$,ue=()=>i(S,A,C),_e=()=>{q(S,()=>{ue(),ie&&ie()})};Z?Z(S,ue,_e):_e()}else i(S,A,C)},$e=(g,A,C,F=!1,x=!1)=>{const{type:S,props:W,ref:$,children:N,dynamicChildren:O,shapeFlag:ee,patchFlag:q,dirs:Z,cacheIndex:ie}=g;if(q===-2&&(x=!1),$!=null&&hl($,null,C,g,!0),ie!=null&&(A.renderCache[ie]=void 0),ee&256){A.ctx.deactivate(g);return}const ue=ee&1&&Z,_e=!Qn(g);let ge;if(_e&&(ge=W&&W.onVnodeBeforeUnmount)&>(ge,A,g),ee&6)lt(g.component,C,F);else{if(ee&128){g.suspense.unmount(C,F);return}ue&&Ot(g,null,A,"beforeUnmount"),ee&64?g.type.remove(g,A,C,X,F):O&&!O.hasOnce&&(S!==Xe||q>0&&q&64)?je(O,A,C,!1,!0):(S===Xe&&q&384||!x&&ee&16)&&je(N,A,C),F&&it(g)}(_e&&(ge=W&&W.onVnodeUnmounted)||ue)&&ot(()=>{ge&>(ge,A,g),ue&&Ot(g,null,A,"unmounted")},C)},it=g=>{const{type:A,el:C,anchor:F,transition:x}=g;if(A===Xe){Mt(C,F);return}if(A===vi){_(g);return}const S=()=>{l(C),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(g.shapeFlag&1&&x&&!x.persisted){const{leave:W,delayLeave:$}=x,N=()=>W(C,S);$?$(g.el,S,N):N()}else S()},Mt=(g,A)=>{let C;for(;g!==A;)C=h(g),l(g),g=C;l(A)},lt=(g,A,C)=>{const{bum:F,scope:x,job:S,subTree:W,um:$,m:N,a:O}=g;as(N),as(O),F&&Nl(F),x.stop(),S&&(S.flags|=8,$e(W,g,A,C)),$&&ot($,A),ot(()=>{g.isUnmounted=!0},A),A&&A.pendingBranch&&!A.isUnmounted&&g.asyncDep&&!g.asyncResolved&&g.suspenseId===A.pendingId&&(A.deps--,A.deps===0&&A.resolve())},je=(g,A,C,F=!1,x=!1,S=0)=>{for(let W=S;W<g.length;W++)$e(g[W],A,C,F,x)},w=g=>{if(g.shapeFlag&6)return w(g.component.subTree);if(g.shapeFlag&128)return g.suspense.next();const A=h(g.anchor||g.el),C=A&&A[Gd];return C?h(C):A};let K=!1;const U=(g,A,C)=>{g==null?A._vnode&&$e(A._vnode,null,null,!0):B(A._vnode||null,g,A,null,null,null,C),A._vnode=g,K||(K=!0,Qr(),pl(),K=!1)},X={p:B,um:$e,m:Ue,r:it,mt:G,mc:z,pc:Q,pbc:R,n:w,o:e};let re,Be;return t&&([re,Be]=t(X)),{render:U,hydrate:re,createApp:Ah(U,re)}}function ql({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function mn({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function _c(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function bc(e,t,n=!1){const i=e.children,l=t.children;if(ne(i)&&ne(l))for(let a=0;a<i.length;a++){const r=i[a];let o=l[a];o.shapeFlag&1&&!o.dynamicChildren&&((o.patchFlag<=0||o.patchFlag===32)&&(o=l[a]=rn(l[a]),o.el=r.el),!n&&o.patchFlag!==-2&&bc(r,o)),o.type===Dn&&(o.el=r.el)}}function wh(e){const t=e.slice(),n=[0];let i,l,a,r,o;const c=e.length;for(i=0;i<c;i++){const d=e[i];if(d!==0){if(l=n[n.length-1],e[l]<d){t[i]=l,n.push(i);continue}for(a=0,r=n.length-1;a<r;)o=a+r>>1,e[n[o]]<d?a=o+1:r=o;d<e[n[a]]&&(a>0&&(t[i]=n[a-1]),n[a]=i)}}for(a=n.length,r=n[a-1];a-- >0;)n[a]=r,r=t[r];return n}function kc(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:kc(t)}function as(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const xh=Symbol.for("v-scx"),Fh=()=>ve(xh);function or(e,t){return cr(e,null,t)}function we(e,t,n){return cr(e,t,n)}function cr(e,t,n=ke){const{immediate:i,deep:l,flush:a,once:r}=n,o=Ne({},n),c=t&&i||!t&&a!=="post";let d;if(Xn){if(a==="sync"){const E=Fh();d=E.__watcherHandles||(E.__watcherHandles=[])}else if(!c){const E=()=>{};return E.stop=It,E.resume=It,E.pause=It,E}}const u=Ie;o.call=(E,v,B)=>Dt(E,u,v,B);let p=!1;
vendor: 4,883 bytes, line 15
15a==="post"?o.scheduler=E=>{ot(E,u&&u.suspense)}:a!=="sync"&&(p=!0,o.scheduler=(E,v)=>{v?E():nr(E)}),o.augmentJob=E=>{t&&(E.flags|=4),p&&(E.flags|=2,u&&(E.id=u.uid,E.i=u))};const h=jd(e,t,o);return Xn&&(d?d.push(h):c&&h()),h}function Sh(e,t,n){const i=this.proxy,l=Le(e)?e.includes(".")?Cc(i,e):()=>i[e]:e.bind(i,i);let a;le(t)?a=t:(a=t.handler,n=t);const r=Oi(this),o=cr(l,a.bind(i),n);return r(),o}function Cc(e,t){const n=t.split(".");return()=>{let i=e;for(let l=0;l<n.length&&i;l++)i=i[n[l]];return i}}const Ph=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${et(t)}Modifiers`]||e[`${Fn(t)}Modifiers`];function Rh(e,t,...n){if(e.isUnmounted)return;const i=e.vnode.props||ke;let l=n;const a=t.startsWith("update:"),r=a&&Ph(i,t.slice(7));r&&(r.trim&&(l=n.map(u=>Le(u)?u.trim():u)),r.number&&(l=n.map(ed)));let o,c=i[o=Vl(t)]||i[o=Vl(et(t))];!c&&a&&(c=i[o=Vl(Fn(t))]),c&&Dt(c,e,6,l);const d=i[o+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[o])return;e.emitted[o]=!0,Dt(d,e,6,l)}}function Dc(e,t,n=!1){const i=t.emitsCache,l=i.get(e);if(l!==void 0)return l;const a=e.emits;let r={},o=!1;if(!le(e)){const c=d=>{const u=Dc(d,t,!0);u&&(o=!0,Ne(r,u))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!a&&!o?(Te(e)&&i.set(e,null),null):(ne(a)?a.forEach(c=>r[c]=null):Ne(r,a),Te(e)&&i.set(e,r),r)}function Tl(e,t){return!e||!Fi(t)?!1:(t=t.slice(2).replace(/Once$/,""),Ee(e,t[0].toLowerCase()+t.slice(1))||Ee(e,Fn(t))||Ee(e,t))}function Kl(e){const{type:t,vnode:n,proxy:i,withProxy:l,propsOptions:[a],slots:r,attrs:o,emit:c,render:d,renderCache:u,props:p,data:h,setupState:E,ctx:v,inheritAttrs:B}=e,k=dl(e);let D,y;try{if(n.shapeFlag&4){const _=l||i,P=_;D=vt(d.call(P,_,u,p,E,h,v)),y=o}else{const _=t;D=vt(_.length>1?_(p,{attrs:o,slots:r,emit:c}):_(p,null)),y=t.props?o:Lh(o)}}catch(_){Ai.length=0,Ri(_,e,1),D=Me(Ze)}let m=D;if(y&&B!==!1){const _=Object.keys(y),{shapeFlag:P}=m;_.length&&P&7&&(a&&_.some(Ga)&&(y=Oh(y,a)),m=pn(m,y,!1,!0))}return n.dirs&&(m=pn(m,null,!1,!0),m.dirs=m.dirs?m.dirs.concat(n.dirs):n.dirs),n.transition&&xn(m,n.transition),D=m,dl(k),D}const Lh=e=>{let t;for(const n in e)(n==="class"||n==="style"||Fi(n))&&((t||(t={}))[n]=e[n]);return t},Oh=(e,t)=>{const n={};for(const i in e)(!Ga(i)||!(i.slice(9)in t))&&(n[i]=e[i]);return n};function Ih(e,t,n){const{props:i,children:l,component:a}=e,{props:r,children:o,patchFlag:c}=t,d=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return i?rs(i,r,d):!!r;if(c&8){const u=t.dynamicProps;for(let p=0;p<u.length;p++){const h=u[p];if(r[h]!==i[h]&&!Tl(d,h))return!0}}}else return(l||o)&&(!o||!o.$stable)?!0:i===r?!1:i?r?rs(i,r,d):!0:!!r;return!1}function rs(e,t,n){const i=Object.keys(t);if(i.length!==Object.keys(e).length)return!0;for(let l=0;l<i.length;l++){const a=i[l];if(t[a]!==e[a]&&!Tl(n,a))return!0}return!1}function Mh({vnode:e,parent:t},n){for(;t;){const i=t.subTree;if(i.suspense&&i.suspense.activeBranch===e&&(i.el=e.el),i===e)(e=t.vnode).el=n,t=t.parent;else break}}const Tc=e=>e.__isSuspense;function wc(e,t){t&&t.pendingBranch?ne(e)?t.effects.push(...e):t.effects.push(e):Ud(e)}const Xe=Symbol.for("v-fgt"),Dn=Symbol.for("v-txt"),Ze=Symbol.for("v-cmt"),vi=Symbol.for("v-stc"),Ai=[];let pt=null;function V2(e=!1){Ai.push(pt=e?null:[])}function Vh(){Ai.pop(),pt=Ai[Ai.length-1]||null}let Ti=1;function ss(e){Ti+=e,e<0&&pt&&(pt.hasOnce=!0)}function Nh(e){return e.dynamicChildren=Ti>0?pt||Un:null,Vh(),Ti>0&&pt&&pt.push(e),e}function N2(e,t,n,i,l,a){return Nh(Fc(e,t,n,i,l,a,!0))}function fl(e){return e?e.__v_isVNode===!0:!1}function yn(e,t){return e.type===t.type&&e.key===t.key}const xc=({key:e})=>e??null,al=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Le(e)||Re(e)||le(e)?{i:ut,r:e,k:t,f:!!n}:e:null);function Fc(e,t=null,n=null,i=0,l=null,a=e===Xe?0:1,r=!1,o=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&xc(t),ref:t&&al(t),scopeId:Zo,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:i,dynamicProps:l,dynamicChildren:null,appContext:null,ctx:ut};return o?(ur(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=Le(n)?8:16),Ti>0&&!r&&pt&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&pt.push(c),c}const Me=$h;function $h(e,t=null,n=null,i=0,l=null,a=!1){if((!e||e===uh)&&(e=Ze),fl(e)){const o=pn(e,t,!0);return n&&ur(o,n),Ti>0&&!a&&pt&&(o.shapeFlag&6?pt[pt.indexOf(e)]=o:pt.push(o)),o.patchFlag=-2,o}if(Jh(e)&&(e=e.__vccOpts),t){t=jh(t);let{class:o,style:c}=t;o&&!Le(o)&&(t.class=Ya(o)),Te(c)&&(tr(c)&&!ne(c)&&(c=Ne({},c)),t.style=Qa(c))}const r=Le(e)?1:Tc(e)?128:ec(e)?64:Te(e)?4:le(e)?2:0;return Fc(e,t,n,i,l,r,a,!0)}function jh(e){return e?tr(e)||fc(e)?Ne({},e):e:null}
vendor: 4,679 bytes, lines 15-18
15function pn(e,t,n=!1,i=!1){const{props:l,ref:a,patchFlag:r,children:o,transition:c}=e,d=t?Hh(l||{},t):l,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&xc(d),ref:t&&t.ref?n&&a?ne(a)?a.concat(al(t)):[a,al(t)]:al(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Xe?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&pn(e.ssContent),ssFallback:e.ssFallback&&pn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&i&&xn(u,c.clone(u)),u}function Sc(e=" ",t=0){return Me(Dn,null,e,t)}function $2(e,t){const n=Me(vi,null,e);return n.staticCount=t,n}function vt(e){return e==null||typeof e=="boolean"?Me(Ze):ne(e)?Me(Xe,null,e.slice()):fl(e)?rn(e):Me(Dn,null,String(e))}function rn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:pn(e)}function ur(e,t){let n=0;const{shapeFlag:i}=e;if(t==null)t=null;else if(ne(t))n=16;else if(typeof t=="object")if(i&65){const l=t.default;l&&(l._c&&(l._d=!1),ur(e,l()),l._c&&(l._d=!0));return}else{n=32;const l=t._;!l&&!fc(t)?t._ctx=ut:l===3&&ut&&(ut.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else le(t)?(t={default:t,_ctx:ut},n=32):(t=String(t),i&64?(n=16,t=[Sc(t)]):n=8);e.children=t,e.shapeFlag|=n}function Hh(...e){const t={};for(let n=0;n<e.length;n++){const i=e[n];for(const l in i)if(l==="class")t.class!==i.class&&(t.class=Ya([t.class,i.class]));else if(l==="style")t.style=Qa([t.style,i.style]);else if(Fi(l)){const a=t[l],r=i[l];r&&a!==r&&!(ne(a)&&a.includes(r))&&(t[l]=a?[].concat(a,r):r)}else l!==""&&(t[l]=i[l])}return t}function gt(e,t,n,i=null){Dt(e,t,7,[n,i])}const zh=pc();let Uh=0;function Wh(e,t,n){const i=e.type,l=(t?t.appContext:e.appContext)||zh,a={uid:Uh++,vnode:e,type:i,parent:t,appContext:l,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new cd(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(l.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:mc(i,l),emitsOptions:Dc(i,l),emit:null,emitted:null,propsDefaults:ke,inheritAttrs:i.inheritAttrs,ctx:ke,data:ke,props:ke,attrs:ke,slots:ke,refs:ke,setupState:ke,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return a.ctx={_:a},a.root=t?t.root:a,a.emit=Rh.bind(null,a),e.ce&&e.ce(a),a}let Ie=null;const Pn=()=>Ie||ut;let gl,_a;{const e=_l(),t=(n,i)=>{let l;return(l=e[n])||(l=e[n]=[]),l.push(i),a=>{l.length>1?l.forEach(r=>r(a)):l[0](a)}};gl=t("__VUE_INSTANCE_SETTERS__",n=>Ie=n),_a=t("__VUE_SSR_SETTERS__",n=>Xn=n)}const Oi=e=>{const t=Ie;return gl(e),e.scope.on(),()=>{e.scope.off(),gl(t)}},os=()=>{Ie&&Ie.scope.off(),gl(null)};function Pc(e){return e.vnode.shapeFlag&4}let Xn=!1;function Gh(e,t=!1,n=!1){t&&_a(t);const{props:i,children:l}=e.vnode,a=Pc(e);Bh(e,i,a,t),kh(e,l,n);const r=a?qh(e,t):void 0;return t&&_a(!1),r}function qh(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,dh);const{setup:i}=n;if(i){hn();const l=e.setupContext=i.length>1?Qh(e):null,a=Oi(e),r=Pi(i,e,0,[e.props,l]),o=_o(r);if(En(),a(),(o||e.sp)&&!Qn(e)&&ar(e),o){if(r.then(os,os),t)return r.then(c=>{cs(e,c)}).catch(c=>{Ri(c,e,0)});e.asyncDep=r}else cs(e,r)}else Rc(e)}function cs(e,t,n){le(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Te(t)&&(e.setupState=Ko(t)),Rc(e)}function Rc(e,t,n){const i=e.type;e.render||(e.render=i.render||It);{const l=Oi(e);hn();try{hh(e)}finally{En(),l()}}}const Kh={get(e,t){return ze(e,"get",""),e[t]}};function Qh(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Kh),slots:e.slots,emit:e.emit,expose:t}}function pr(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ko(Sd(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in mi)return mi[n](e)},has(t,n){return n in t||n in mi}})):e.proxy}function Yh(e,t=!0){return le(e)?e.displayName||e.name:e.name||t&&e.__name}function Jh(e){return le(e)&&"__vccOpts"in e}const b=(e,t)=>Nd(e,t,Xn);function s(e,t,n){const i=arguments.length;return i===2?Te(t)&&!ne(t)?fl(t)?Me(e,null,[t]):Me(e,t):Me(e,null,t):(i>3?n=Array.prototype.slice.call(arguments,2):i===3&&fl(n)&&(n=[n]),Me(e,t,n))}const Xh="3.5.12";/** 16* @vue/runtime-dom v3.5.12 17* (c) 2018-present Yuxi (Evan) You and Vue contributors 18* @license MIT
19**/let ba;const us=typeof window<"u"&&window.trustedTypes;if(us)try{ba=us.createPolicy("vue",{createHTML:e=>e})}catch{}const Lc=ba?e=>ba.createHTML(e):e=>e,Zh="http://www.w3.org/2000/svg",eE="http://www.w3.org/1998/Math/MathML",zt=typeof document<"u"?document:null,ps=zt&&zt.createElement("template"),tE={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,i)=>{const l=t==="svg"?zt.createElementNS(Zh,e):t==="mathml"?zt.createElementNS(eE,e):n?zt.createElement(e,{is:n}):zt.createElement(e);return e==="select"&&i&&i.multiple!=null&&l.setAttribute("multiple",i.multiple),l},createText:e=>zt.createTextNode(e),createComment:e=>zt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>zt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,i,l,a){const r=n?n.previousSibling:t.lastChild;if(l&&(l===a||l.nextSibling))for(;t.insertBefore(l.cloneNode(!0),n),!(l===a||!(l=l.nextSibling)););else{ps.innerHTML=Lc(i==="svg"?`<svg>${e}</svg>`:i==="mathml"?`<math>${e}</math>`:e);const o=ps.content;if(i==="svg"||i==="mathml"){const c=o.firstChild;for(;c.firstChild;)o.appendChild(c.firstChild);o.removeChild(c)}t.insertBefore(o,n)}return[r?r.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},en="transition",di="animation",Zn=Symbol("_vtc"),Oc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Ic=Ne({},nc,Oc),nE=e=>(e.displayName="Transition",e.props=Ic,e),ei=nE((e,{slots:t})=>s(Kd,Mc(e),t)),vn=(e,t=[])=>{ne(e)?e.forEach(n=>n(...t)):e&&e(...t)},ds=e=>e?ne(e)?e.some(t=>t.length>1):e.length>1:!1;function Mc(e){const t={};for(const L in e)L in Oc||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:i,duration:l,enterFromClass:a=`${n}-enter-from`,enterActiveClass:r=`${n}-enter-active`,enterToClass:o=`${n}-enter-to`,appearFromClass:c=a,appearActiveClass:d=r,appearToClass:u=o,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:E=`${n}-leave-to`}=e,v=iE(l),B=v&&v[0],k=v&&v[1],{onBeforeEnter:D,onEnter:y,onEnterCancelled:m,onLeave:_,onLeaveCancelled:P,onBeforeAppear:H=D,onAppear:M=y,onAppearCancelled:z=m}=t,T=(L,Y,G)=>{nn(L,Y?u:o),nn(L,Y?d:r),G&&G()},R=(L,Y)=>{L._isLeaving=!1,nn(L,p),nn(L,E),nn(L,h),Y&&Y()},j=L=>(Y,G)=>{const J=L?M:y,V=()=>T(Y,L,G);vn(J,[Y,V]),hs(()=>{nn(Y,L?c:a),jt(Y,L?u:o),ds(J)||Es(Y,i,B,V)})};return Ne(t,{onBeforeEnter(L){vn(D,[L]),jt(L,a),jt(L,r)},onBeforeAppear(L){vn(H,[L]),jt(L,c),jt(L,d)},onEnter:j(!1),onAppear:j(!0),onLeave(L,Y){L._isLeaving=!0;const G=()=>R(L,Y);jt(L,p),jt(L,h),Nc(),hs(()=>{L._isLeaving&&(nn(L,p),jt(L,E),ds(_)||Es(L,i,k,G))}),vn(_,[L,G])},onEnterCancelled(L){T(L,!1),vn(m,[L])},onAppearCancelled(L){T(L,!0),vn(z,[L])},onLeaveCancelled(L){R(L),vn(P,[L])}})}function iE(e){if(e==null)return null;if(Te(e))return[Ql(e.enter),Ql(e.leave)];{const t=Ql(e);return[t,t]}}function Ql(e){return td(e)}function jt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Zn]||(e[Zn]=new Set)).add(t)}function nn(e,t){t.split(/\s+/).forEach(i=>i&&e.classList.remove(i));const n=e[Zn];n&&(n.delete(t),n.size||(e[Zn]=void 0))}function hs(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let lE=0;function Es(e,t,n,i){const l=e._endId=++lE,a=()=>{l===e._endId&&i()};if(n!=null)return setTimeout(a,n);const{type:r,timeout:o,propCount:c}=Vc(e,t);if(!r)return i();const d=r+"end";let u=0;const p=()=>{e.removeEventListener(d,h),a()},h=E=>{E.target===e&&++u>=c&&p()};setTimeout(()=>{u<c&&p()},o+1),e.addEventListener(d,h)}function Vc(e,t){const n=window.getComputedStyle(e),i=v=>(n[v]||"").split(", "),l=i(`${en}Delay`),a=i(`${en}Duration`),r=fs(l,a),o=i(`${di}Delay`),c=i(`${di}Duration`),d=fs(o,c);let u=null,p=0,h=0;t===en?r>0&&(u=en,p=r,h=a.length):t===di?d>0&&(u=di,p=d,h=c.length):(p=Math.max(r,d),u=p>0?r>d?en:di:null,h=u?u===en?a.length:c.length:0);const E=u===en&&/\b(transform|all)(,|$)/.test(i(`${en}Property`).toString());return{type:u,timeout:p,propCount:h,hasTransform:E}}function fs(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,i)=>gs(n)+gs(e[i])))}function gs(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Nc(){return document.body.offsetHeight}function aE(e,t,n){const i=e[Zn];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const ms=Symbol("_vod"),rE=Symbol("_vsh"),sE=Symbol(""),oE=/(^|;)\s*display\s*:/;function cE(e,t,n){const i=e.style,l=Le(n);let a=!1;if(n&&!l){if(t)if(Le(t))for(const r of t.split(";")){const o=r.slice(0,r.indexOf(":")).trim();n[o]==null&&rl(i,o,"")}else for(const r in t)n[r]==null&&rl(i,r,"");for(const r in n)r==="display"&&(a=!0),rl(i,r,n[r])}else if(l){if(t!==n){const r=i[sE];r&&(n+=";"+r),i.cssText=n,a=oE.test(n)}}else t&&e.removeAttribute("style");ms in e&&(e[ms]=a?i.display:"",e[rE]&&(i.display="none"))}const vs=/\s*!important$/;function rl(e,t,n){if(ne(n))n.forEach(i=>
vendor: 4,382 bytes, line 19
19rl(e,t,i));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const i=uE(e,t);vs.test(n)?e.setProperty(Fn(i),n.replace(vs,""),"important"):e[i]=n}}const As=["Webkit","Moz","ms"],Yl={};function uE(e,t){const n=Yl[t];if(n)return n;let i=et(t);if(i!=="filter"&&i in e)return Yl[t]=i;i=Si(i);for(let l=0;l<As.length;l++){const a=As[l]+i;if(a in e)return Yl[t]=a}return t}const Bs="http://www.w3.org/1999/xlink";function ys(e,t,n,i,l,a=sd(t)){i&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(Bs,t.slice(6,t.length)):e.setAttributeNS(Bs,t,n):n==null||a&&!Do(n)?e.removeAttribute(t):e.setAttribute(t,a?"":dn(n)?String(n):n)}function _s(e,t,n,i,l){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?Lc(n):n);return}const a=e.tagName;if(t==="value"&&a!=="PROGRESS"&&!a.includes("-")){const o=a==="OPTION"?e.getAttribute("value")||"":e.value,c=n==null?e.type==="checkbox"?"on":"":String(n);(o!==c||!("_value"in e))&&(e.value=c),n==null&&e.removeAttribute(t),e._value=n;return}let r=!1;if(n===""||n==null){const o=typeof e[t];o==="boolean"?n=Do(n):n==null&&o==="string"?(n="",r=!0):o==="number"&&(n=0,r=!0)}try{e[t]=n}catch{}r&&e.removeAttribute(l||t)}function pE(e,t,n,i){e.addEventListener(t,n,i)}function dE(e,t,n,i){e.removeEventListener(t,n,i)}const bs=Symbol("_vei");function hE(e,t,n,i,l=null){const a=e[bs]||(e[bs]={}),r=a[t];if(i&&r)r.value=i;else{const[o,c]=EE(t);if(i){const d=a[t]=mE(i,l);pE(e,o,d,c)}else r&&(dE(e,o,r,c),a[t]=void 0)}}const ks=/(?:Once|Passive|Capture)$/;function EE(e){let t;if(ks.test(e)){t={};let i;for(;i=e.match(ks);)e=e.slice(0,e.length-i[0].length),t[i[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Fn(e.slice(2)),t]}let Jl=0;const fE=Promise.resolve(),gE=()=>Jl||(fE.then(()=>Jl=0),Jl=Date.now());function mE(e,t){const n=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=n.attached)return;Dt(vE(i,n.value),t,5,[i])};return n.value=e,n.attached=gE(),n}function vE(e,t){if(ne(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(i=>l=>!l._stopped&&i&&i(l))}else return t}const Cs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,AE=(e,t,n,i,l,a)=>{const r=l==="svg";t==="class"?aE(e,i,r):t==="style"?cE(e,n,i):Fi(t)?Ga(t)||hE(e,t,n,i,a):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):BE(e,t,i,r))?(_s(e,t,i),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ys(e,t,i,r,a,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Le(i))?_s(e,et(t),i,a,t):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),ys(e,t,i,r))};function BE(e,t,n,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&Cs(t)&&le(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const l=e.tagName;if(l==="IMG"||l==="VIDEO"||l==="CANVAS"||l==="SOURCE")return!1}return Cs(t)&&Le(n)?!1:t in e}const $c=new WeakMap,jc=new WeakMap,ml=Symbol("_moveCb"),Ds=Symbol("_enterCb"),yE=e=>(delete e.props.mode,e),_E=yE({name:"TransitionGroup",props:Ne({},Ic,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Pn(),i=tc();let l,a;return oc(()=>{if(!l.length)return;const r=e.moveClass||`${e.name||"v"}-move`;if(!DE(l[0].el,n.vnode.el,r))return;l.forEach(bE),l.forEach(kE);const o=l.filter(CE);Nc(),o.forEach(c=>{const d=c.el,u=d.style;jt(d,r),u.transform=u.webkitTransform=u.transitionDuration="";const p=d[ml]=h=>{h&&h.target!==d||(!h||/transform$/.test(h.propertyName))&&(d.removeEventListener("transitionend",p),d[ml]=null,nn(d,r))};d.addEventListener("transitionend",p)})}),()=>{const r=pe(e),o=Mc(r);let c=r.tag||Xe;if(l=[],a)for(let d=0;d<a.length;d++){const u=a[d];u.el&&u.el instanceof Element&&(l.push(u),xn(u,Di(u,o,i,n)),$c.set(u,u.el.getBoundingClientRect()))}a=t.default?ir(t.default()):[];for(let d=0;d<a.length;d++){const u=a[d];u.key!=null&&xn(u,Di(u,o,i,n))}return Me(c,null,a)}}}),Hc=_E;function bE(e){const t=e.el;t[ml]&&t[ml](),t[Ds]&&t[Ds]()}function kE(e){jc.set(e,e.el.getBoundingClientRect())}function CE(e){const t=$c.get(e),n=jc.get(e),i=t.left-n.left,l=t.top-n.top;if(i||l){const a=e.el.style;return a.transform=a.webkitTransform=`translate(${i}px,${l}px)`,a.transitionDuration="0s",e}}function DE(e,t,n){const i=e.cloneNode(),l=e[Zn];l&&l.forEach(o=>
19{o.split(/\s+/).forEach(c=>c&&i.classList.remove(c))}),n.split(/\s+/).forEach(o=>o&&i.classList.add(o)),i.style.display="none";const a=t.nodeType===1?t:t.parentNode;a.appendChild(i);const{hasTransform:r}=Vc(i);return a.removeChild(i),r}const TE=Ne({patchProp:AE},tE);let Xl,Ts=!1;function wE(){return Xl=Ts?Xl:Dh(TE),Ts=!0,Xl}const xE=(...e)=>{const t=wE().createApp(...e),{mount:n}=t;return t.mount=i=>{const l=SE(i);if(l)return n(l,!0,FE(l))},t};function FE(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function SE(e){return Le(e)?document.querySelector(e):e}var Ii=e=>/^[a-z][a-z0-9+.-]*:/.test(e)||e.startsWith("//"),PE=/.md((\?|#).*)?$/,dr=(e,t="/")=>Ii(e)||e.startsWith("/")&&!e.startsWith(t)&&!PE.test(e),li=e=>/^(https?:)?\/\//.test(e),ws=e=>{if(!e||e.endsWith("/"))return e;let t=e.replace(/(^|\/)README.md$/i,"$1index.html");return t.endsWith(".md")?t=`${t.substring(0,t.length-3)}.html`:t.endsWith(".html")||(t=`${t}.html`),t.endsWith("/index.html")&&(t=t.substring(0,t.length-10)),t},RE="http://.",LE=(e,t)=>{if(!e.startsWith("/")&&t){const n=t.slice(0,t.lastIndexOf("/"));return ws(new URL(`${n}/${e}`,RE).pathname)}return ws(e)},OE=(e,t)=>{const n=Object.keys(e).sort((i,l)=>{const a=l.split("/").length-i.split("/").length;return a!==0?a:l.length-i.length});for(const i of n)if(t.startsWith(i))return i;return"/"},IE=(e,t="/")=>{const n=e.replace(/^(?:https?:)?\/\/[^/]*/,"");return n.startsWith(t)?`/${n.slice(t.length)}`:n},ME=/(#|\?)/,zc=e=>{const[t,...n]=e.split(ME);return{pathname:t,hashAndQueries:n.join("")}},VE=["link","meta","script","style","noscript","template"],NE=["title","base"],$E=([e,t,n])=>NE.includes(e)?e:VE.includes(e)?e==="meta"&&t.name?`${e}.${t.name}`:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,Object.entries(t).map(([i,l])=>typeof l=="boolean"?l?[i,""]:null:[i,l]).filter(i=>i!=null).sort(([i],[l])=>i.localeCompare(l)),n]):null,jE=e=>{const t=new Set,n=[];return e.forEach(i=>{const l=$E(i);l&&!t.has(l)&&(t.add(l),n.push(i))}),n},HE=e=>e.startsWith("/")?e:`/${e}`,Uc=e=>e.endsWith("/")||e.endsWith(".html")?e:`${e}/`,hr=e=>e.endsWith("/")?e.slice(0,-1):e,Er=e=>e.startsWith("/")?e.slice(1):e,zE=e=>typeof e=="function",ai=e=>Object.prototype.toString.call(e)==="[object Object]",me=e=>typeof e=="string";const UE="modulepreload",WE=function(e){return"/"+e},xs={},f=function(t,n,i){let l=Promise.resolve();if(n&&n.length>0){let c=function(d){return Promise.all(d.map(u=>Promise.resolve(u).then(p=>({status:"fulfilled",value:p}),p=>({status:"rejected",reason:p}))))};document.getElementsByTagName("link");const r=document.querySelector("meta[property=csp-nonce]"),o=r?.nonce||r?.getAttribute("nonce");l=c(n.map(d=>{if(d=WE(d),d in xs)return;xs[d]=!0;const u=d.endsWith(".css"),p=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${p}`))return;const h=document.createElement("link");if(h.rel=u?"stylesheet":UE,u||(h.as="script"),h.crossOrigin="",h.href=d,o&&h.setAttribute("nonce",o),document.head.appendChild(h),u)return new Promise((E,v)=>{h.addEventListener("load",E),h.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${d}`)))})}))}function a(r){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=r,window.dispatchEvent(o),!o.defaultPrevented)throw r}return l.then(r=>{for(const o of r||[])o.status==="rejected"&&a(o.reason);return t().catch(a)})},GE=JSON.parse("{}"),qE=Object.fromEntries([["/",{loader:()=>f(()=>import("./index.html-YETGA09y.js"),__vite__mapDeps([0,1])),meta:{title:"å客主页",icon:"home"}}],["/intro.html",{loader:()=>f(()=>import("./intro.html-aAcg9F57.js"),__vite__mapDeps([2,1])),meta:{date:1696994087e3,cover:"/assets/images/cover3.jpg",excerpt:` 20<p>å°ä½ ç个人ä»ç»åæ¡£æ¡æ¾ç½®å¨æ¤å¤ã</p> 21`,readingTime:{minutes:.07,words:22},title:"ä»ç»é¡µ",icon:"info",type:"article"}}],["/en/",{loader:()=>f(()=>import("./index.html-C_5r_V8B.js"),__vite__mapDeps([3,1])),meta:{title:"Blog Home",icon:"home"}}],["/en/intro.html",{loader:()=>f(()=>import("./intro.html-C8VhyVo5.js"),__vite__mapDeps([4,1])),meta:{date:1696994087e3,cover:"/assets/images/cover3.jpg",excerpt:` 22<p>Place your introduction and profile here.</p> 23`,readingTime:{minutes:.04,words:12},title:"Intro Page",icon:"info",type:"article"}}],["/notes/",{loader:()=>f(()=>import("./index.html-wZV3AXFP.js"),__vite__mapDeps([5,1])),meta:{date:1714837884e3,readingTime:{minutes:.03,words:9}
23,title:"å¦ä¹ ç¬è®°",icon:"lightbulb",type:"article"}}],["/posts/",{loader:()=>f(()=>import("./index.html-orl_LX3C.js"),__vite__mapDeps([6,1])),meta:{date:1714837884e3,readingTime:{minutes:.03,words:9},title:"ç¼ç¨ææ¯",icon:"lightbulb",type:"article"}}],["/posts/template.html",{loader:()=>f(()=>import("./template.html-CbudOp4G.js"),__vite__mapDeps([7,1])),meta:{title:"template",icon:"page",order:1,index:!1}}],["/en/posts/template.html",{loader:()=>f(()=>import("./template.html-RpriovyG.js"),__vite__mapDeps([8,1])),meta:{title:"template",icon:"page",order:1,index:!1}}],["/notes/College-Physics/Electromagnetic-Formula.html",{loader:()=>f(()=>import("./Electromagnetic-Formula.html-Ct6h15Yg.js"),__vite__mapDeps([9,1])),meta:{author:"chiichen",date:1698624e6,category:["课ç¨ç¬è®°"],tag:["大å¦ç©ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>14 ç« ââéçµåº</h2> 24<h3>1.åºä»å®å¾</h3> 25<h3>2.ç»å ¸æ¨¡åççµåºå¼ºåº¦</h3> 26<h4>çµå¶æåççµåºå¼ºåº¦</h4> 27<ul> 28<li>å¤çµåºå¯¹çµå¶æåçåç©åååä½ç¨</li> 29</ul> 30<h4>ç»æ£ççµåºå¼ºåº¦</h4> 31<h4>åç¯ççµåºå¼ºåº¦</h4> 32<h4>åçççµåºå¼ºåº¦</h4> 33<h3>3.髿¯å®ç</h3> 34<ul> 35<li>å¨ç空ä¸ï¼éè¿ä»»æéåæ²é¢ççµåºå¼ºåº¦ééçäºè¯¥æ²é¢æå å´çææçµè·ç代æ°åé¤ä»¥</li> 36</ul> 37<h4>计ç®åºå¼ºçæ¹æ³ï¼</h4> 38<ol> 39<li>æ ¹æ®å å åçéè¿ç§¯åæ±åé¨å产çççµåºå¼ºåº¦ä¹å</li> 40<li>å©ç¨é«æ¯å®ç(主è¦è§£å³çµåºå¼ºåº¦ååå叿è å ·æå¯¹ç§°æ§çé®é¢)</li> 41<li>ç±è®¡ç®</li> 42</ol>`,readingTime:{minutes:5.25,words:1574},title:"çµç£å¦å ¬å¼",icon:"page",order:1,type:"article"}}],["/notes/College-Physics/",{loader:()=>f(()=>import("./index.html-C5cYkuMx.js"),__vite__mapDeps([10,1])),meta:{date:1714837884e3,readingTime:{minutes:.03,words:9},title:"大å¦ç©ç",icon:"lightbulb",type:"article"}}],["/notes/Compile-Principles/Chapter0-Introduce.html",{loader:()=>f(()=>import("./Chapter0-Introduce.html-zLloqbXE.js"),__vite__mapDeps([11,1])),meta:{author:"chiichen",date:16969824e5,category:["课ç¨ç¬è®°"],tag:["ç¼è¯åç"],sticky:!0,isOriginal:!0,excerpt:`<h2>åè¨</h2> 43<h3>åç»å工软é¢å¦ç</h3> 44<ol> 45<li>2021 级ç¼è¯åçèè¯é¾åº¦è¾ä½ï¼å¤ä¹ ä¼å 级ä½ï¼ä¸å»ºè®®è±å¤ªå¤æ¶é´åå¤ãè½ç¶æ ¹æ®èå¸ä¸å(以å¾èå¸ä¸ºä¾)ï¼å¯è½ä¸è¯¾çå 容æ¯è¾æ·±å ¥ï¼è®©å¦ç产çäºè¿é¨ç§ç®é¾åº¦å¾å¤§çéè§ãè¯ç¶è¦å½»åºçè§£ç¼è¯åçéè¦è±è´¹å¤§éçæ¶é´ï¼ä½èè¯å å®¹åºæ¬é½æ¯ç®åçç®æ³ï¼åªè¦æå 个éè¦ç®æ³çè§£äºï¼é½ä¸éè¦ææ¯ä¸ªæ¦å¿µæçéå¸¸æ¸ æ¥ï¼èè¯é½åºæ¬ä¸ä¼åºé®é¢ã</li> 46<li>ç¼è¯åçå大精深ï¼ä½ä¸ºè®¡ç®æºåºå±è®¾è®¡çä¸é¨åï¼è¯¾å 䏿æçå 容å°ä¹åå°ï¼çè³å¯ä»¥è¯´åä¸äºå·¥ç¨å®è·µæ¯<code>严éè±é©</code>çï¼æ¯å¦ä¸è¯¾ä¼è±å¾å¤§çç²¾åæä½ èªå¨æºåèªå¨æºçç¸å ³ç®æ³ï¼ä½æ¯å¨å®é å·¥ç¨è¿ç¨ä¸ï¼æä»¬æè¯¸å¦ <code>lexer</code> çå·¥å ·å¸®æä»¬å®æè¿ä¸ªå·¥ä½ï¼èä¸å¦ææ¯ç¼åä¸ä¸ªç®åçè¯æ³åæå¨ï¼çè³åªéè¦ç®åç <code>æé¿å串å¹é </code> å°±è½å®ç°ä¸ä¸ªè¯æ³åæãä» å课å ä¸å¦çå 容ï¼å¤§æ¦çè¿æä¹åä¸ä¸ª TinyC(ç²¾ç®çç C è¯è¨) é½ä¸ç¥éãæå ´è¶£çåå¦å¯ä»¥è®¤çé»ç ä¸çªï¼è¿å¯¹ç¼ç¨è½å伿æå¤§çæé«ã</li> 47</ol>`,readingTime:{minutes:1.59,words:478},title:"Chapter0 åè¨",icon:"page",order:1,type:"article"}}],["/notes/Compile-Principles/Chapter1-Compiler-composition%20.html",{loader:()=>f(()=>import("./Chapter1-Compiler-composition .html-CRiNvmmb.js"),__vite__mapDeps([12,1])),meta:{author:"chiichen",date:16969824e5,category:["课ç¨ç¬è®°"],tag:["ç¼è¯åç"],sticky:!0,isOriginal:!0,excerpt:`<h3>ç¼è¯å¨çç»æ</h3> 48<ul> 49<li>è¯æ³åæ Lexical analysis (Scanning)</li> 50<li>è¯æ³åæ Syntax analysis (Parsing)</li> 51<li>è¯ä¹åæ Semantic analysis</li> 52</ul> 53<div class="hint-container info"> 54<p class="hint-container-title">ç¸å ³ä¿¡æ¯</p> 55<p>以ä¸ä¸æ¥çç®çæ¯éè¿åæè¾å ¥ä»£ç ï¼çæè½è¢«ç»ä¸å¤ççä¸é´å±ä»£ç ï¼äº¦å³ç¼è¯å¨å端ï¼front-endï¼</p> 56</div> 57<ul> 58<li>ä¸é´ä»£ç çæ IR Generation</li> 59<li>ä¸é´ä»£ç ä¼å IR Optimization</li> 60<li>æç»ä»£ç çæ Generation</li> 61<li>æç»ä»£ç ä¼å Optimization</li> 62</ul>`,readingTime:{minutes:.97,words:291},title:"Chapter1 ç¼è¯å¨ç»æ",icon:"page",order:1,type:"article"}}],["/notes/Compile-Principles/Chapter2-Lexical-Analysis.html",{loader:()=>f(()=>import("./Chapter2-Lexical-Analysis.html-4a5iRaBc.js"),__vite__mapDeps([13,1])
62),meta:{author:"chiichen",date:16969824e5,category:["课ç¨ç¬è®°"],tag:["ç¼è¯åç"],sticky:!0,isOriginal:!0,excerpt:`<h2>大纲</h2> 63<ul> 64<li>æ«æè¿ç¨ Scanning Process</li> 65<li>æ£åè¡¨è¾¾å¼ Regular Expressions</li> 66<li>æéèªå¨æº Finite Automata(NFA(nondeterministic éç¡®å®æ§æéèªå¨æº) and DFA(deterministic ç¡®å®æ§))</li> 67<li>RE è½¬æ¢ NFA(McNaughton-Yamda-Thompson algorithm)</li> 68<li>NFA è½¬æ¢ DFA(åéç®æ³ Subset construction Algorithm)</li> 69<li>æå°å DFA(State-Minimization Algorithm)</li> 70</ul>`,readingTime:{minutes:5.74,words:1723},title:"Chapter2 è¯æ³åæ",icon:"page",order:1,type:"article"}}],["/notes/Compile-Principles/Chapter3-Gramma-Analysis.html",{loader:()=>f(()=>import("./Chapter3-Gramma-Analysis.html-CJ1KHEVw.js"),__vite__mapDeps([14,1])),meta:{author:"chiichen",date:16969824e5,category:["课ç¨ç¬è®°"],tag:["ç¼è¯åç"],sticky:!0,isOriginal:!0,excerpt:`<h2>大纲</h2> 71<ul> 72<li>è¯æ³åæçå½¢å¼åââä¸ä¸ææ å ³ææ³</li> 73<li>è¯æ³åæç®æ³</li> 74</ul> 75<h2>ä¸ä¸ææ å ³ææ³(CFG)</h2> 76<ul> 77<li>æ¯ç¨æ¥æè¿°ä¸ä¸ªç¼ç¨è¯è¨çè¯æ³ç»æçææ³</li> 78<li>忣å表达å¼ä¸æ ·ï¼å¯ä»¥è¡¨ç¤ºéå½çè§åï¼è䏿´å¼ºå¤§</li> 79<li>æ¯æ£å表达å¼çä¸¥æ ¼è¶ é</li> 80</ul> 81<h3>Chomsky è¯è¨å±çº§</h3> 82<table> 83<thead> 84<tr> 85<th>Chomsky hierarchy</th> 86<th>Production(产çå¼)</th> 87<th>Explanation</th> 88</tr> 89</thead> 90<tbody> 91<tr> 92<td>unrestricted(type 0)(èªç¶è¯è¨)</td> 93<td></td> 94<td>æ ä¸¥æ ¼çº¦æ</td> 95</tr> 96<tr> 97<td>context sensitive(type 1)(ä¸ä¸ææå ³ææ³)</td> 98<td></td> 99<td>å¨ä¸åçä¸ä¸æä¸ï¼å¯è½è¢«ä¸åçæ¿æ¢</td> 100</tr> 101<tr> 102<td>context free(type 2)(ä¸ä¸ææ å ³ææ³)</td> 103<td></td> 104<td>å¨ä»»ä½åºç°çå°æ¹é½ä¼è¢«æ¿æ¢</td> 105</tr> 106<tr> 107<td>regular(type 3)(æ£å表达å¼)</td> 108<td></td> 109<td>çä»·äºæ£å表达å¼</td> 110</tr> 111</tbody> 112</table>`,readingTime:{minutes:15.67,words:4702},title:"Chapter3 è¯æ³åæ",icon:"page",order:1,type:"article"}}],["/notes/Compile-Principles/Chapter4-Semantic-Analysis.html",{loader:()=>f(()=>import("./Chapter4-Semantic-Analysis.html-C2ivyV1y.js"),__vite__mapDeps([15,1])),meta:{author:"chiichen",date:16969824e5,category:["课ç¨ç¬è®°"],tag:["ç¼è¯åç"],sticky:!0,isOriginal:!0,excerpt:`<h2>ç®å½</h2> 113<h2>ä»ç»</h2> 114<ul> 115<li>è¯ä¹åææ ¸å¿æ¯ç±»åæ£æ¥(Type check)åä½ç¨åæ£æ¥(Scope check)</li> 116<li>è¯ä¹éè¿å±æ§ç弿¥å»ç»</li> 117<li>éè¿ä¸ç³»å屿§ç弿¥è¿è¡è®¡ç®ï¼æç §ä¸å®ç顺åºè¿è¡è®¡ç®</li> 118</ul> 119<h2>Recursive AST Walk</h2> 120<ul> 121<li>ä¸ç§è¯ä¹åæçå®ç°æ¹æ³ï¼æ¬ä¹¦ææ¶ä¸è¡¨</li> 122</ul> 123<h2>Attribute Grammars</h2> 124<h3>è¯æ³å¶å¯¼çè¯æ³åæ(Syntax-Directed Semantics Analysis )</h3> 125<ul> 126<li>åç§° SDSãSDTãSDD</li> 127<li>屿§æ¯éç卿æ³ç¬¦å·ä¸ç</li> 128</ul>`,readingTime:{minutes:8.95,words:2685},title:"Chapter4 è¯ä¹åæ",icon:"page",order:1,type:"article"}}],["/notes/Compile-Principles/Chapter5-Code-Generation.html",{loader:()=>f(()=>import("./Chapter5-Code-Generation.html-BLBI86od.js"),__vite__mapDeps([16,1])),meta:{author:"chiichen",date:16969824e5,category:["课ç¨ç¬è®°"],tag:["ç¼è¯åç"],sticky:!0,isOriginal:!0,excerpt:`<h2>ä»ç»</h2> 129<ul> 130<li>代ç çæåå³äºï¼æºä»£ç ãç®æ ç³»ç»ä½ç³»ç»æãè¿è¡æ¶ç¯å¢</li> 131<li>代ç çæå¯ä»¥è¢«ååä¸ºä¸æ¥ï¼</li> 132</ul> 133<ol> 134<li>çæä¸é´ä»£ç (IR Iermediate code ç )</li> 135<li>çææç§æ±ç¼å½¢å¼ç代ç ï¼è䏿¯çæ£ç坿§è¡ä»£ç </li> 136<li>ä¼åç®æ 代ç </li> 137</ol> 138<h2>ä¸é´ä»£ç </h2> 139<ul> 140<li>以ä¸å°åç (TAC Three Address code)为ä¾</li> 141</ul> 142<h3>çæä¸å°åç </h3> 143<h4>è¿ç®</h4> 144<figure><figcaption>[TAC_Code1.png]</figcaption></figure>`,readingTime:{minutes:7.65,words:2294},title:"Chapter5 è¯æ³çæ",icon:"page",order:1,type:"article"}}],["/notes/Compile-Principles/",{loader:()=>f(()=>import("./index.html--zYO5N0J.js"),__vite__mapDeps([17,1])),meta:{date:1714837884e3,readingTime:{minutes:.03,words:9},title:"ç¼è¯åç",icon:"lightbulb",type:"article"}}],["/notes/Computer-Network/Chapter1-Internet-And-Ethernet.html",{loader:()=>f(()=>import("./Chapter1-Internet-And-Ethernet.html-CVNSgBWS.js"),__vite__mapDeps([18,1])),meta:{author:"chiichen",date:16863552e5,category:["课ç¨ç¬è®°"],tag:["è®¡ç®æºç½ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>ç½ç»æ¨¡å</h2> 145<figure><figcaption>ç½ç»åºç¡æ¨¡å</figcaption></figure> 146<ul> 147<li>ç»ç½è®¾å¤(networking device)ï¼ç»æç½ç»ä¸é¤è®¡ç®æºä¹å¤çé¨åï¼å³ proxy é¨åç设å¤</li> 148<li>ä¸ä¸ªè®¡ç®æºç½ç»å©ç¨ç»ç½è®¾å¤åæ°æ®é¾è·¯(data links)å»è¿æ¥è¥å¹²å°å°çä¸å离çè®¡ç®æºï¼éè¿å®åçç½ç»åè®®(protocol)åç½ç»åºç¨æ¥è¾¾æå ±äº«ç½ç»èµæºåä¿¡æ¯ä¼ è¾çåè½</li> 149<li>å¨ç½ç»ä¸ï¼ä¿¡æ¯ä»¥ç¦»æ£çäºè¿å¶æ¯ç¹æµä¼ è¾ï¼æ¯ç»äºè¿å¶æ¯ç¹æµè¢«ç§°ä¸º data packets(æ°æ®å )</li> 150</ul> 151<h3>é®é¢</h3>`,readingTime:{minutes:6.37,words:1912},title:"Chapter1 Internet And Ethernet",icon:"page",order:1,type:"article"}}],["/notes/Computer-Network/Chapter2-Application-Layer.html",{loader:()=>f(()=>import("./Chapter2-Application-Layer.html-DiYt4uUu.js"),__vite__mapDeps([19,1])),meta:{author:"chiichen",date:16863552e5,category:["课ç¨ç¬è®°"],tag:["è®¡ç®æºç½ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>åºç¨å±åè®®åç</h2> 152<h3>ç½ç»åºç¨ç¨åºä½ç³»ç»æ</h3> 153<h4>客æ·-æå¡å¨ç»æ(Client-Server)</h4> 154<ul> 155<li> 156<p>WebãFTPãTelnetãçµåé®ä»¶é½æ¯éè¿è¿ç§ç»æè¿è¡æå»ºçï¼ç±ä¸ä¸ªæ»æ¯æå¼ç主æºï¼ç§°ä¸ºæå¡å¨(Server)ï¼ç¨æ¥æå¡æ¥èªè®¸å¤è¢«ç§°ä¸ºå®¢æ·(Client)å ¶ä»ä¸»æºç请æ±ã</p> 157</li> 158<li> 159<p>èå¨è¿ç§ç»æä¸ï¼åå°ä¸»æºé常ä¼é¾ä»¥åºä»å¤§éç请æ±ï¼å æ¤ä¼å¨é å¤äºå¤§é主æºçæ°æ®ä¸å¿(data center)ä¸åå»ºèææå¡å¨æ¥æ»¡è¶³å®¢æ·ç«¯è¯·æ±çéæ±ã
159</p> 160</li> 161</ul> 162<h4>P2P ä½ç³»ç»æ(Peer-to-peer)</h4>`,readingTime:{minutes:17.34,words:5201},title:"Chapter2 Application Layer",icon:"page",order:1,type:"article"}}],["/notes/Computer-Network/Chapter3-Transport-Layer.html",{loader:()=>f(()=>import("./Chapter3-Transport-Layer.html-EEmYTEPq.js"),__vite__mapDeps([20,1])),meta:{author:"chiichen",date:16867008e5,category:["课ç¨ç¬è®°"],tag:["è®¡ç®æºç½ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>å¤è·¯å¤ç¨ä¸å¤è·¯åè§£</h2> 163<ul> 164<li>卿¥æ¶ç«¯ï¼è¿è¾å±æ£æ¥è¿è¾å±æ¥æä¸çå ä¸ªåæ®µââæºç«¯å£å·åç®æ 端å£å·ãæ¥å°æ¥æå®åå°æä¸ªç¹å®ç socket(注æï¼ä¸æ¯ç´æ¥ææ°æ®åéå°è¿ç¨)çå·¥ä½è¢«ç§°ä¸ºå¤è·¯åè§£(demultiplexing)ã</li> 165<li>卿ºä¸»æºä»ä¸å socket 䏿¶éæ°æ®åï¼å¹¶ä¸ºæ¯ä¸ªæ°æ®åå°è£ ä¸é¦é¨ä¿¡æ¯ä»èçææ¥ææ®µï¼ç¶åå°æ¥ææ®µä¼ éå°ç½ç»å±çå·¥ä½ç§°ä¸ºå¤è·¯å¤ç¨(multiplexing)</li> 166<li>è¿è¾å±åè¿ç¨ä¹é´çæ°æ®äº¤æ¢æ¯ä»¥ socket 为åªä»å®ç°çã</li> 167<li>端å£å·æ¯ä¸ä¸ª 16bit çæ°ï¼å¤§å°ä¸º 0~65535ã0~1023 èå´ç端å£å·è¢«ç§°ä¸ºå¨ç¥ç«¯å£å·(well-known port number)ï¼é常æ¯è¢«ä¿çç¨ä½ä¾å¦ HTTPãFTP çå议使ç¨</li> 168</ul>`,readingTime:{minutes:32.15,words:9645},title:"Chapter3 Transport Layer",icon:"page",order:1,type:"article"}}],["/notes/Computer-Network/Chapter4-Net-Layer.html",{loader:()=>f(()=>import("./Chapter4-Net-Layer.html-DO6HRWX2.js"),__vite__mapDeps([21,1])),meta:{author:"chiichen",date:16870464e5,category:["课ç¨ç¬è®°"],tag:["è®¡ç®æºç½ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>è·¯ç±å¨å·¥ä½åç</h2> 169<h3>è¾å ¥ç«¯å£å¤çååºäºç®çå°è½¬å</h3> 170<figure><figcaption>è¾å ¥ç«¯å£å¤ç.png</figcaption></figure> 171<h4>æé¿åç¼å¹é (Longest Prefix Match LPM)</h4> 172<ul> 173<li>ç¨æ¥å³å®è·¯ç±å¨å¦ä½è¿è¡è½¬åï¼ä¾å¦ä¸è¡¨ï¼å ¶ä¸ link 表示å½åè·¯ç±å¨è¿æ¥å°å ¶ä»è·¯ç±å¨çä¸åé¾è·¯ï¼å½å°å为 28.1.2.3 æ¶ï¼éæ©é¾è·¯ 3ï¼å½å°å为 28.33.5.4 æ¶ï¼éæ©é¾è·¯ 4</li> 174</ul> 175<table> 176<thead> 177<tr> 178<th>dest</th> 179<th>link</th> 180</tr> 181</thead> 182<tbody> 183<tr> 184<td>default</td> 185<td>1</td> 186</tr> 187<tr> 188<td>171.33.0.0/16</td> 189<td>5</td> 190</tr> 191<tr> 192<td>23.0.0.0/24</td> 193<td>2</td> 194</tr> 195<tr> 196<td>28.0.0.0/24</td> 197<td>3</td> 198</tr> 199<tr> 200<td>28.33.5.0/8</td> 201<td>4</td> 202</tr> 203</tbody> 204</table>`,readingTime:{minutes:25.51,words:7652},title:"Chapter4 Net Layer",icon:"page",order:1,type:"article"}}],["/notes/Computer-Network/Chapter5-Link-Layer.html",{loader:()=>f(()=>import("./Chapter5-Link-Layer.html-CZfnQgFZ.js"),__vite__mapDeps([22,1])),meta:{author:"chiichen",date:16870464e5,category:["课ç¨ç¬è®°"],tag:["è®¡ç®æºç½ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>é¾è·¯å±æ¦è¿°</h2> 205<ul> 206<li>é¾è·¯å±ä¸è¿è¡åè®®ç设å¤è¢«ç§°ä¸ºèç¹ï¼èéä¿¡ä¿¡é被称为é¾è·¯ã</li> 207</ul> 208<h3>é¾è·¯å±æä¾çæå¡</h3> 209<ul> 210<li>æå¸§(framing)ã帧çç»æç±å ·ä½çé¾è·¯å±åè®®è§å®</li> 211<li>é¾è·¯æ¥å ¥(link access)ãåªä½è®¿é®æ§å¶(Medium Access Control, MAC)åè®®è§å®äºå¸§å¨é¾è·¯ä¸ä¼ è¾çè§åãMAC ç¨äºåè°å¤ä¸ªèç¹çå¸§ä¼ è¾ã</li> 212<li>å¯é 交ä»(reliable delivery)ãé¾è·¯å±åè®®ä¿è¯æ å·®éå°ç»é¾è·¯å±ç§»å¨æ¯ä¸ªç½ç»å±æ°æ®å ãé¾è·¯å±ç RD é常æ¯éè¿å¨æ¬å°(åçé误çé¾è·¯)确认éä¼ ï¼è䏿¯å¨æ´ä¸ªç«¯å°ç«¯è·¯å¾ä¸éä¼ ãå æ¤å¨é«å·®éççé¾è·¯ï¼ä¾å¦æ 线é¾è·¯ä¸å¹¿æ³ä½¿ç¨ãèå¨ä½å·®éççé¾è·¯ï¼ä¾å¦å 纤ãçµç¼çæçº¿é¾è·¯ä¸çé¾è·¯å±åè®®ä¸æä¾ RDã</li> 213<li>差鿣æµåçº æ£ãé¾è·¯å±ç差鿣æµé常æ´å¤æï¼èä¸ç¨ç¡¬ä»¶å®ç°ãèå·®éçº æ£æå³çæ¥æ¶æ¹ä¸ä» è½æ£æµåºå·®éï¼è¿è½å¤åç¡®å®ä½å°å¸§ä¸å·®éåºç°çä½ç½®ã</li> 214</ul>`,readingTime:{minutes:18.72,words:5617},title:"Chapter5 Link Layer",icon:"page",order:1,type:"article"}}],["/notes/Computer-Network/Computer-Network-7th-Edition-Exercises-Answers.html",{loader:()=>f(()=>import("./Computer-Network-7th-Edition-Exercises-Answers.html-C2vBqRv0.js"),__vite__mapDeps([23,1])),meta:{date:170616319e4,excerpt:` 215<h2>å¤ä¹ é¢åä¹ é¢åèçæ¡</h2> 216<h3>çæ¬æ¶é´ï¼2016å¹´12æ</h3> 217<p>æ¬ææ¡£å å«Jim KuroseåKeith Rossç¼åçãè®¡ç®æºç½ç»ï¼èªé¡¶å䏿¹æ³ï¼ç¬¬7çï¼ãå¤ä¹ é¢åä¹ é¢çåèçæ¡ãè¿äºçæ¡åªå¯¹æå¯¼è叿æã请ä¸è¦å¤å¶æè ååç»å ¶ä»äººï¼å³ä½¿æ¯å ¶ä»æå¯¼èå¸ï¼ã请ä¸è¦å¨å ¬å ±ç½ç»åå¸ä»»ä½åèçæ¡ã妿æéè¦ï¼æä»¬å¾ä¹ææä¾æ¤åèçæ¡ï¼ææ°çï¼ã</p> 218<p>声æï¼è¿äºå¹´æ¥ï¼å¾å¤åå¦ååäºå¸®å©æä»¬å夿¤åèçæ¡ãç¹å«æè°¢Honggang Zhangï¼Rakesh Kumarï¼Prithula DhungelåVijayAnnapureddyãåæ¶ä¹æè°¢æå»ºè®®åä¿®æ£éè¯¯çææè¯»è ã</p>`,readingTime:{minutes:172.07,words:51622},title:"è®¡ç®æºç½ç»ï¼èªé¡¶å䏿¹æ³ï¼ç¬¬7ç",type:"article"}}],["/notes/Computer-Network/",{loader:()=>f(()=>
218import("./index.html-Cz2XHtDk.js"),__vite__mapDeps([24,1])),meta:{date:1714837884e3,readingTime:{minutes:.03,words:10},title:"è®¡ç®æºç½ç»",icon:"lightbulb",type:"article"}}],["/notes/Database/Chapter1-Introduction.html",{loader:()=>f(()=>import("./Chapter1-Introduction.html-BmUt9feG.js"),__vite__mapDeps([25,1])),meta:{author:"chiichen",date:1698624e6,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>Database Management System (DBMS)</h2> 219<ul> 220<li>DBMS å æ¬ï¼ 221<ol> 222<li>ç¸å ³æ°æ®çéå</li> 223<li>è®¿é®æ°æ®çç¨åºé</li> 224<li>ä¸ä¸ªæ¢æ¹ä¾¿å髿ç使ç¨ç¯å¢</li> 225</ol> 226</li> 227</ul> 228<h2>æä»¶ç³»ç»å卿°æ®ç缺ç¹</h2> 229<ul> 230<li> 231<p>æ°æ®åä½åä¸ä¸è´ï¼å¤ç§æä»¶æ ¼å¼ï¼ä¸åæä»¶ä¸çä¿¡æ¯éå¤</p> 232</li> 233<li> 234<p>è®¿é®æ°æ®å°é¾ï¼éè¦ç¼åæ°ç¨åºæ¥æ§è¡æ¯é¡¹æ°ä»»å¡</p> 235</li> 236<li> 237<p>æ°æ®é离ââå¤ä¸ªæä»¶åæ ¼å¼</p> 238</li> 239<li> 240<p>宿´æ§é®é¢ ï¼</p> 241<ul> 242<li>宿´æ§çº¦æï¼ä¾å¦ï¼å¸æ·ä½é¢ > 0ï¼è¢«âéèâå¨ç¨åºä»£ç ä¸ï¼è䏿¯æç¡®å£°æ</li> 243<li>å¾é¾æ·»å æ°ççº¦æææ´æ¹ç°æç约æ</li> 244</ul> 245</li> 246<li> 247<p>æ´æ°çååæ§</p> 248<ul> 249<li>æ éå¯è½ä¼ä½¿æ°æ®åºå¤äºä¸æ§è¡çé¨åæ´æ°ä¸ä¸è´çç¶æ</li> 250<li>示ä¾ï¼èµéä»ä¸ä¸ªè´¦æ·è½¬ç§»å°å¦ä¸ä¸ªè´¦æ·è¦ä¹å®æï¼è¦ä¹æ ¹æ¬ä¸åç</li> 251</ul> 252</li> 253<li> 254<p>å¤ç¨æ·å¹¶å访é®</p> 255<ul> 256<li>å¹¶å访é®ä»¥æé«æ§è½</li> 257<li>ä¸åæ§å¶çå¹¶å访é®å¯è½ä¼å¯¼è´ä¸ä¸è´</li> 258<li>示ä¾ï¼ä¸¤ä¸ªäººåæ¶è¯»åä½é¢ï¼ä¾å¦ 100ï¼å¹¶éè¿ææ¬¾ï¼ä¾å¦æ¯äºº 50ï¼æ¥æ´æ°ä½é¢</li> 259</ul> 260</li> 261<li> 262<p>å®å ¨é®é¢ é¾ä»¥åç¨æ·æä¾å¯¹é¨åï¼ä½ä¸æ¯å ¨é¨ï¼æ°æ®çè®¿é®æé</p> 263</li> 264</ul>`,readingTime:{minutes:5.23,words:1569},title:"Chapter1 Introduction",icon:"page",order:1,type:"article"}}],["/notes/Database/Chapter10-Storage-and-File-Structure.html",{loader:()=>f(()=>import("./Chapter10-Storage-and-File-Structure.html-BD2EFUFn.js"),__vite__mapDeps([26,1])),meta:{author:"chiichen",date:17038944e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>ç©çåå¨åªä»(Physical Storage Media)</h2> 265<ul> 266<li>ç£ç 267<ul> 268<li>1 block = å¤ä¸ªè¿ç»ç sector</li> 269<li>1 个æä»¶(å叿件é¤å¤)= å¤ä¸ªè¿ç»ç block</li> 270</ul> 271</li> 272<li>ç£å¤´ä¸ç£ç 273<ul> 274<li>ç£å¤´å¾ç£çè¯»åæ°æ®çæå°å使¯ sector</li> 275</ul> 276</li> 277<li>å åä¸ç£ç 278<ul> 279<li>å åä¸ç£ç交æ¢ä¿¡æ¯çæå°å使¯ block</li> 280</ul> 281</li> 282<li>å¼é=坻鿶é´+ æè½¬æ¶é´+ä¼ è¾æ¶é´</li> 283<li>æ°æ®åºåªå ³æ³¨: 284<ul> 285<li>坻鿬¡æ°</li> 286<li>ä¼ è¾ç£çå个æ°</li> 287</ul> 288</li> 289<li>设访é®çç£çå便¬¡å嫿¯: B1, B2 290<ul> 291<li>坻鿬¡æ° : 妿 B1, B2 ç¸é», å寻é 1 次</li> 292<li>ä¼ è¾ç£çåç个æ°: æ 论ç¸é»ä¸å¦, 齿¯ 2.<br> 293</li> 294</ul> 295</li> 296</ul>`,readingTime:{minutes:4.76,words:1428},title:"Chapter10 Storage and File Structure",icon:"page",order:1,type:"article"}}],["/notes/Database/Chapter11-Indexing-and-Hashing.html",{loader:()=>f(()=>import("./Chapter11-Indexing-and-Hashing.html-BCobjAFz.js"),__vite__mapDeps([27,1])),meta:{author:"chiichen",date:17039808e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>åºæ¬æ¦å¿µ</h2> 297<ul> 298<li>ç´¢å¼æºå¶ç¨äºå é对æéæ°æ®ç访é®ãä¾å¦ï¼å¾ä¹¦é¦ä¸çä½è ç®å½ã</li> 299<li>æç´¢é®ï¼Search Keyï¼æ¯ç¨äºå¨æä»¶ä¸æ¥æ¾è®°å½çä¸ç»å±æ§ã</li> 300<li>ç´¢å¼æä»¶ç±è®°å½ï¼ç§°ä¸ºç´¢å¼æ¡ç®ï¼ç»æï¼å½¢å¼ä¸ºï¼</li> 301</ul> 302<table> 303<thead> 304<tr> 305<th>search-key</th> 306<th>pointer</th> 307</tr> 308</thead> 309</table> 310<ul> 311<li>ç´¢å¼æä»¶é常æ¯åå§æä»¶å°å¾å¤ã</li> 312<li>åºæ¬ç两ç§ç´¢å¼ç±»åï¼ 313<ul> 314<li>æåºç´¢å¼ï¼Ordered indicesï¼ï¼æç´¢é®ææåºé¡ºåºåå¨ã</li> 315<li>åå¸ç´¢å¼ï¼Hash indicesï¼ï¼ä½¿ç¨âåå¸å½æ°âï¼å°æç´¢é®åååå¸å¨âæ¡¶âä¸ã</li> 316</ul> 317</li> 318</ul>`,readingTime:{minutes:14.89,words:4466},title:"Chapter11 Indexing and Hashing",icon:"page",order:1,type:"article"}}],["/notes/Database/Chapter12-Query-Processing.html",{loader:()=>f(()=>import("./Chapter12-Query-Processing.html-BTpqqk7t.js"),__vite__mapDeps([28,1])),meta:{author:"chiichen",date:17039808e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ¥è¯¢å¤ççåºæ¬æ¥éª¤</h2> 319<ol> 320<li>è¯æ³åæä¸ç¿»è¯</li> 321<li>ä¼å</li> 322<li>æ§è¡<br> 323</li> 324</ol> 325<h3>è¯æ³åæä¸ç¿»è¯</h3> 326<ul> 327<li>å°æ¥è¯¢è½¬æ¢ä¸ºå é¨å½¢å¼ï¼ç¶åå°å ¶è½¬æ¢ä¸ºå ³ç³»ä»£æ°ã</li> 328<li>è§£æå¨æ£æ¥è¯æ³ï¼éªè¯å ³ç³»ã</li> 329</ul> 330<h3>æ§è¡</h3> 331<ul> 332<li>æ¥è¯¢æ§è¡å¼ææ¥æ¶æ¥è¯¢æ§è¡è®¡åï¼æ§è¡è¯¥è®¡åï¼å¹¶è¿åæ¥è¯¢çç»æã</li> 333</ul> 334<h3>ä¼å</h3> 335<ul> 336<li>å ³ç³»ä»£æ°è¡¨è¾¾å¼å¯è½æè®¸å¤çä»·ç表达å¼ã<br> 337ä¾å¦ï¼çä»·äº ã</li> 338<li>æ¯ä¸ªå ³ç³»ä»£æ°æä½å¯ä»¥ä½¿ç¨å¤ç§ä¸åçç®æ³è¿è¡æ§è¡ãç¸åºå°ï¼å ³ç³»ä»£æ°è¡¨è¾¾å¼å¯ä»¥ä»¥å¤ç§æ¹å¼è¿è¡æ§è¡ãæå®è¯¦ç»æ§è¡çç¥ç注é表达å¼ç§°ä¸º<code>æ§è¡è®¡åæè®¡ç®è®¡å(evaluation-plan)</code>ã</li> 339<li>ä¾å¦ï¼å¯ä»¥ä½¿ç¨èªæ°´ç´¢å¼æ¥æ¥æ¾èªæ°´å°äº 75000 ç讲å¸ï¼æè æ§è¡å®æ´çå ³ç³»æ«æå¹¶ä¸¢å¼èªæ°´å¤§äºçäº 75000 ç讲å¸ã</li> 340<li><code>æ¥è¯¢ä¼å(Query Optimization)</code>ï¼å¨ææçä»·çæ§è¡è®¡åä¸éæ©ææ¬æä½ç计åã</li> 341<li>ææ¬æ¯ä½¿ç¨æ°æ®åºç®å½ä¸çç»è®¡ä¿¡æ¯è¿è¡ä¼°ç®çã</li> 342<li>ä¾å¦ï¼æ¯ä¸ªå ³ç³»ä¸çå ç»æ°éãå ç»å¤§å°çã</li> 343</ul>`,readingTime:{minutes:19.39,words:5817},title:"Chapter12 Query Processing",icon:"page",order:1,type:"article"}}],["/notes/Database/Chapter13-Query-Optimization.html",{loader:()=>f(()=>import("./Chapter13-Query-Optimization.html-Ds0TlEug.js"),__vite__mapDeps([29,1])),meta:{author:"chiichen",date:17039808e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>ç®ä»</h2> 344<ul> 345<li>
345ä¼åç»å®æ¥è¯¢çæ¹æ³ï¼ 346<ul> 347<li>ç价表达å¼(æ´ä½ä¼å)</li> 348<li>对æ¯ä¸ªæä½çä¸åç®æ³(å±é¨ä¼å)</li> 349</ul> 350</li> 351<li>æ§è¡è®¡å(evaluation plan)å®ä¹äºæ¯ä¸ªæä½è¦ç¨ä»ä¹ç®æ³å®æä»¥åå¦ä½åè°æä½çæ§è¡</li> 352<li>æ¥è¯¢çä¸åè¯ä¼°è®¡åä¹é´çææ¬å·®å¼å¯è½æ¯å·¨å¤§çãä¾å¦ï¼å¨æäºæ åµä¸å¯è½æ¯ç§çº§å«ä¸å¤©çº§å«çå·®å¼ã</li> 353<li>åºäºææ¬çæ¥è¯¢ä¼åçæ¥éª¤å¦ä¸ï¼ 354<ol> 355<li>使ç¨çä»·è§åçæé»è¾ä¸çä»·ç表达å¼ã</li> 356<li>对çæç表达å¼è¿è¡æ³¨éï¼ä»¥è·åå¤éçæ¥è¯¢è®¡åã</li> 357<li>æ ¹æ®ä¼°è®¡çææ¬éæ©æä¾¿å®ç计åã</li> 358</ol> 359</li> 360<li>è®¡åææ¬çä¼°ç®åºäºä»¥ä¸å ç´ ï¼ 361<ul> 362<li>å ³ç³»çç»è®¡ä¿¡æ¯ï¼ä¾å¦å ç»æ°éï¼å±æ§çä¸å弿°éçã</li> 363<li>ä¸é´ç»æçç»è®¡ä¼°è®¡ï¼ç¨äºè®¡ç®å¤æè¡¨è¾¾å¼çææ¬ã</li> 364<li>使ç¨ç»è®¡æ°æ®è®¡ç®çç®æ³çææ¬å ¬å¼ã</li> 365</ul> 366</li> 367</ul>`,readingTime:{minutes:4.6,words:1381},title:"Chapter13 Query Optimization",icon:"page",order:1,type:"article"}}],["/notes/Database/Chapter14-Transactions.html",{loader:()=>f(()=>import("./Chapter14-Transactions.html-Do1UJBDn.js"),__vite__mapDeps([30,1])),meta:{author:"chiichen",date:17039808e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>ç®ä»</h2> 368<ul> 369<li><code>äºå¡(Transaction)</code>æ¯ç¨åºæ§è¡çä¸ä¸ªåä½ï¼å®è®¿é®å¹¶å¯è½æ´æ°åç§æ°æ®é¡¹ã</li> 370<li>ä¾å¦ï¼ä»è´¦æ· A 转账 50 ç¾å å°è´¦æ· B çäºå¡ï¼ 371<ol> 372<li>读å(A)</li> 373<li>A := A - 50</li> 374<li>åå ¥(A)</li> 375<li>读å(B)</li> 376<li>B := B + 50</li> 377<li>åå ¥(B)</li> 378</ol> 379</li> 380<li>å¤çç两个主è¦é®é¢æ¯ï¼ 381<ul> 382<li>åç§ç±»åçæ éï¼å¦ç¡¬ä»¶æ éåç³»ç»å´©æºã</li> 383<li>å¤ä¸ªäºå¡çå¹¶åæ§è¡ã</li> 384</ul> 385</li> 386</ul>`,readingTime:{minutes:13.07,words:3920},title:"Chapter14 Transactions",icon:"page",order:1,type:"article"}}],["/notes/Database/Chapter15-Concurrency-Control.html",{loader:()=>f(()=>import("./Chapter15-Concurrency-Control.html-oH4rfM1X.js"),__vite__mapDeps([31,1])),meta:{author:"chiichen",date:17040672e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>åºäºéçåè®®ï¼Lock-Based Protocolsï¼</h2> 387<ul> 388<li>鿝ä¸ç§æ§å¶å¯¹æ°æ®é¡¹å¹¶å访é®çæºå¶ã</li> 389<li>æ°æ®é¡¹å¯ä»¥ä»¥ä¸¤ç§æ¨¡å¼è¿è¡éå®ï¼ 390<ol> 391<li>ç¬å ï¼Xï¼æ¨¡å¼ï¼æ°æ®é¡¹æ¢å¯ä»¥è¯»åä¹å¯ä»¥åå ¥ãä½¿ç¨ lock-X æä»¤è¯·æ± X éã</li> 392<li>å ±äº«ï¼Sï¼æ¨¡å¼ï¼æ°æ®é¡¹åªè½è¯»åãä½¿ç¨ lock-S æä»¤è¯·æ± S éã</li> 393</ol> 394</li> 395<li>é请æ±åéç»å¹¶åæ§å¶ç®¡çå¨ãåªæå¨è¯·æ±è¢«æäºåï¼äºå¡æè½ç»§ç»è¿è¡ã</li> 396</ul> 397<figure><figcaption>äºå¡æ§è¡éå®ç示ä¾</figcaption></figure>`,readingTime:{minutes:10.09,words:3028},title:"Chapter15 Concurrency Control",icon:"page",order:1,type:"article"}}],["/notes/Database/Chapter16-Recovery-System.html",{loader:()=>f(()=>import("./Chapter16-Recovery-System.html-9aqHeeTm.js"),__vite__mapDeps([32,1])),meta:{author:"chiichen",date:17040672e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ éåç±»</h2> 398<ul> 399<li>äºå¡æ éï¼ 400<ul> 401<li>é»è¾é误ï¼ç±äºæäºå é¨é误æ¡ä»¶ï¼ä¾å¦ A çä½é¢ä¸è¶³ï¼æ æ³æ£æ¬¾ï¼ï¼äºå¡æ æ³å®æã</li> 402<li>ç³»ç»éè¯¯ï¼æ°æ®åºç³»ç»å¿ é¡»ç±äºé误æ¡ä»¶ï¼ä¾å¦æ»éï¼ç»æ¢æ´»å¨äºå¡ã</li> 403</ul> 404</li> 405<li>ç³»ç»å´©æºï¼ 406<ul> 407<li>ç±äºçµæºæ éæå ¶ä»ç¡¬ä»¶æè½¯ä»¶æ éï¼ç³»ç»å´©æºã</li> 408</ul> 409</li> 410<li>忢æ éåè®¾ï¼ 411<ul> 412<li>å设éæå¤±æ§åå¨å 容å¨ç³»ç»å´©æºæ¶ä¸ä¼è¢«ç ´åã</li> 413<li>æ°æ®åºç³»ç»å ·æè®¸å¤å®æ´æ§æ£æ¥æ¥é²æ¢ç£çæ°æ®çæåã</li> 414</ul> 415</li> 416<li>ç£çæ éï¼ 417<ul> 418<li>ç£å¤´ç¢°ææç±»ä¼¼çç£çæ éç ´åäºå ¨é¨æé¨åç£çåå¨ã</li> 419<li>åè®¾ç ´åæ¯å¯æ£æµçï¼ç£ç驱å¨å¨ä½¿ç¨æ ¡éªåæ¥æ£æµæ éã</li> 420</ul> 421</li> 422</ul>`,readingTime:{minutes:13.34,words:4001},title:"Chapter16 Recovery System",icon:"page",order:1,type:"article"}}],["/notes/Database/Chapter2-Introduction-to-Relational-Model.html",{loader:()=>f(()=>import("./Chapter2-Introduction-to-Relational-Model.html-QWRm3XbA.js"),__vite__mapDeps([33,1])),meta:{author:"chiichen",date:17036352e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>å ³ç³»(Relation)</h2> 423<figure><figcaption>Example of a Relation</figcaption></figure> 424<h3>屿§å¼(Attribute Types)</h3> 425<ul> 426<li>æ¯ä¸ªå±æ§å 许çå¼éåç§°ä¸ºå±æ§çå(domain)ã</li> 427<li>屿§å¼ï¼é常ï¼è¦æ±æ¯åå(atomic)çï¼å³ä¸å¯åå²çã</li> 428<li>ç¹æ®å¼ null æ¯æ¯ä¸ªåçæåã</li> 429<li>null å¼å¨è®¸å¤æä½çå®ä¹ä¸å¼èµ·äºå¤ææ§ã</li> 430</ul> 431<h3>å ³ç³»æ¨¡å¼åå®ä¾(Relation Schema and Instance)</h3>`,readingTime:{minutes:3.32,words:995},title:"Chapter2 Introduction to Relational Model",icon:"page",order:1,type:"article"}}],["/notes/Database/Chapter3-Introduction-to-SQL.html",{loader:()=>f(()=>import("./Chapter3-Introduction-to-SQL.html-uUemDQdX.js"),__vite__mapDeps([34,1])),meta:{author:"chiichen",date:17036352e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>SQL æ°æ®å®ä¹è¯è¨ï¼data-definition language,DDLï¼</h2> 432<ul> 433<li>
433SQL æ°æ®å®ä¹è¯è¨ï¼ data-definition language ,DDLï¼å 许æå®å ³äºå ³ç³»çä¿¡æ¯ï¼å æ¬ï¼ 434<ul> 435<li>æ¯ä¸ªå ³ç³»ç模å¼ã</li> 436<li>æ¯ä¸ªå±æ§å ³èçå¼åã</li> 437<li>宿´æ§çº¦æã</li> 438<li>æ¤å¤ï¼æä»¬ç¨åå°çå°ï¼è¿å¯ä»¥å æ¬å ¶ä»ä¿¡æ¯ï¼ä¾å¦ï¼ 439<ul> 440<li>æ¯ä¸ªå ³ç³»è¦ç»´æ¤çç´¢å¼éåã</li> 441<li>æ¯ä¸ªå ³ç³»çå®å ¨æ§åææä¿¡æ¯ã</li> 442<li>æ¯ä¸ªå ³ç³»å¨ç£çä¸çç©çåå¨ç»æã</li> 443</ul> 444</li> 445</ul> 446</li> 447<li>ç®èè¨ä¹ï¼SQL çæ°æ®å®ä¹è¯è¨ï¼DDLï¼æä¾äºä¸ç§å®ä¹å ³ç³»çä¿¡æ¯çæ¹å¼ï¼å æ¬å ³ç³»æ¨¡å¼ã屿§çå¼å以åä¸å ³ç³»ç¸å ³ç宿´æ§çº¦æçãå®è¿å 许æå®ç´¢å¼ãå®å ¨æ§åææä¿¡æ¯ä»¥åå ³ç³»å¨ç£çä¸çç©çåå¨ç»æã</li> 448</ul>`,readingTime:{minutes:.86,words:259},title:"Chapter3 Introduction to SQL",icon:"page",order:1,type:"article"}}],["/notes/Database/Chapter6-Formal-Relational-Query-Languages.html",{loader:()=>f(()=>import("./Chapter6-Formal-Relational-Query-Languages.html-ZpeRKUwN.js"),__vite__mapDeps([35,1])),meta:{author:"chiichen",date:1703808e6,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>åç±»</h2> 449<p>å ³ç³»ä»£æ°ï¼Relational Algebraï¼ãå ç»å ³ç³»æ¼ç®ï¼Tuple Relational Calculusï¼ååå ³ç³»æ¼ç®ï¼Domain Relational Calculusï¼æ¯ç¨äºå ³ç³»æ°æ®åºçä¸åæ¥è¯¢è¯è¨åå½¢å¼ãå®ä»¬ç主è¦åºå«å¦ä¸ï¼</p> 450<ol> 451<li> 452<p>å ³ç³»ä»£æ°ï¼Relational Algebraï¼ï¼<br> 453å ³ç³»ä»£æ°æ¯ä¸ç§åºäºéåè®ºçæ¥è¯¢è¯è¨ï¼ç¨äºæä½å ³ç³»æ°æ®åºä¸çå ³ç³»ãå®ä½¿ç¨ä¸ç»æä½ç¬¦ï¼å¦éæ©ï¼selectionï¼ãæå½±ï¼projectionï¼ãè¿æ¥ï¼joinï¼ãå¹¶ï¼unionï¼ãå·®ï¼differenceï¼çæ¥æ§è¡å ³ç³»æä½ãå ³ç³»ä»£æ°æä¾äºä¸ç§å½¢å¼åçæ¹æ³æ¥æè¿°åæä½å ³ç³»æ°æ®åºä¸çå ³ç³»ã</p> 454</li> 455<li> 456<p>å ç»å ³ç³»æ¼ç®ï¼Tuple Relational Calculusï¼ï¼<br> 457å ç»å ³ç³»æ¼ç®æ¯ä¸ç§åºäºé»è¾çæ¥è¯¢è¯è¨ï¼ç¨äºæè¿°å ³ç³»æ°æ®åºä¸çæ¥è¯¢ãå®ä½¿ç¨é»è¾è°è¯ï¼predicateï¼æ¥æè¿°æéçå ç»éåãå ç»å ³ç³»æ¼ç®çæ¥è¯¢ç»ææ¯æ»¡è¶³æå®è°è¯çå ³ç³»ä¸çå ç»éåãå ç»å ³ç³»æ¼ç®æè¿°äºæéçç»æï¼è䏿¯å¦ä½è®¡ç®ç»æã</p> 458</li> 459<li> 460<p>åå ³ç³»æ¼ç®ï¼Domain Relational Calculusï¼ï¼<br> 461åå ³ç³»æ¼ç®ä¹æ¯ä¸ç§åºäºé»è¾çæ¥è¯¢è¯è¨ï¼ç¨äºæè¿°å ³ç³»æ°æ®åºä¸çæ¥è¯¢ãå®ä½¿ç¨é»è¾è°è¯æ¥æè¿°æéç屿§éåãåå ³ç³»æ¼ç®çæ¥è¯¢ç»ææ¯æ»¡è¶³æå®è°è¯çå ³ç³»ä¸ç屿§éåãåå ³ç³»æ¼ç®æè¿°äºæéç屿§ï¼è䏿¯å¦ä½è®¡ç®ç»æã</p> 462</li> 463</ol>`,readingTime:{minutes:6.61,words:1982},title:"Chapter6 Formal Relational Query Languages",icon:"page",order:1,type:"article"}}],["/notes/Database/Chapter7-Entity-Relationship-Model.html",{loader:()=>f(()=>import("./Chapter7-Entity-Relationship-Model.html-BR11w4YK.js"),__vite__mapDeps([36,1])),meta:{author:"chiichen",date:1703808e6,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>建模</h2> 464<ul> 465<li>ä¸ä¸ªæ°æ®åºå¯ä»¥è¢«å»ºæ¨¡ä¸ºï¼ 466<ul> 467<li>å®ä½çéåï¼</li> 468<li>å®ä½ä¹é´çå ³ç³»ã</li> 469</ul> 470</li> 471</ul> 472<h3>å®ä½é</h3> 473<ul> 474<li>å®ä½(entity)æ¯åå¨ç对象ï¼å¹¶ä¸å¯ä¸å ¶ä»å¯¹è±¡åºå弿¥ã 475<ul> 476<li>ä¾å¦ï¼å ·ä½ç人ãå ¬å¸ãäºä»¶ãæ¤ç©ã</li> 477</ul> 478</li> 479<li>å®ä½å ·æå±æ§(attribute)ã 480<ul> 481<li>ä¾å¦ï¼äººæå§ååå°åã</li> 482</ul> 483</li> 484<li>å®ä½é(entity set)æ¯ä¸ç»å ·æç¸å屿§çåç±»å®ä½çéåã 485<ul> 486<li>ä¾å¦ï¼ææäººãå ¬å¸ãæ æ¨ã忥çéåã<br> 487</li> 488</ul> 489</li> 490</ul>`,readingTime:{minutes:12.77,words:3832},title:"Chapter7 Entity-Relationship Model",icon:"page",order:1,type:"article"}}],["/notes/Database/Chapter8-Relational-Database-Design.html",{loader:()=>f(()=>import("./Chapter8-Relational-Database-Design.html-Cd9mroBM.js"),__vite__mapDeps([37,1])),meta:{author:"chiichen",date:17038944e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>åè§£(decompose)</h2> 491<figure><figcaption>Example</figcaption></figure> 492<ul> 493<li>妿åè§£åæ æ³é建åå§ä¿¡æ¯ï¼é£ä¹å°±æ¯ææåè§£(Lossy Decomposition)ï¼åä¹åä¸ºæ æåè§£(Lossless-Join Decomposition)<br> 494<br> 495</li> 496<li>æä»¥æä»¬éè¦ä¸ä¸ªç论æ¥åè¯æä»¬æä¹åççåè§£å ³ç³»ã好çåè§£è¦åå°ï¼ 497<ol> 498<li>æ æåè§£</li> 499<li>ä¾èµä¿å</li> 500</ol> 501</li> 502<li>BCNF åè§£å¯ä»¥ä¿è¯æ æï¼3NF å¯ä»¥ä¿è¯ä¾èµä¿åï¼ä½æ¯ 3NF æ æ³ä¿è¯æ²¡æåä½ï¼å æ¤éè¦å¨ BCNF å 3NF é´æè¡¡</li> 503</ul>`,readingTime:{minutes:20.15,words:6045},title:"Chapter8 Relational Database Design",icon:"page",order:1,type:"article"}}],["/notes/Database/",{loader:()=>f(()=>import("./index.html-DDBQmvzP.js"),__vite__mapDeps([38,1])),meta:{date:1714837884e3,readingTime:{minutes:.03,words:8},title:"æ°æ®åº",icon:"lightbulb",type:"article"}}],["/notes/Electrical-Engineering/",{loader:()=>f(()=>import("./index.html-DJRtN_cA.js"),__vite__mapDeps([39,1])),meta:{date:1714890096e3,readingTime:{minutes:.03,words:8},title:"çµå·¥å¦",icon:"littlebulb",type:"article"}}],["/notes/Electrical-Engineering/Review-Note.html",{loader:()=>f(()=>import("./Review-Note.html-UzDGg65g.js"),__vite__mapDeps([40,1])),meta:{author:"chiichen",date:16863552e5,category:["课ç¨ç¬è®°"],tag:["è®¡ç®æºç½ç»"],sticky:!1,isOriginal:!0,excerpt:` 504<h2>
5041.åèæ¹åãåèææ§ãå ³èä¸éå ³è</h2> 505<ul> 506<li>çµæµçæ¹åå¹¶éå®é æ¹åï¼èæ¯åå®çï¼çµåçææ§ä¹å¹¶éå®é ææ§ã</li> 507<li>å ³èï¼çµæµä»çµåçæ£ææµå ¥</li> 508<li>éå ³èï¼çµæµä»çµåçè´ææµå ¥<br> 509ï¼å为åèæ¹å/ææ§)<br> 510![[å ³èä¸éå ³è]]</li> 511</ul> 512<h2>2.欧å§å®å¾</h2> 513<ul> 514<li>å ³èï¼</li> 515<li>éå ³èï¼</li> 516<li array=""> $$<br> 517\\begin{array}{c}Y\\rightarrow\\Delta:R_1=\\frac{R_bR_c}{R_a+R_b+R_c}, R_2=\\frac{R_aR_c}{R_a+R_b+R_c}, R_3=\\frac{R_aR_b}{R_a+R_b+R_c}\\<br> 518\\Delta\\rightarrow Y: R_a=\\frac{R_1 R_2 + R_2 R_3 + R_3 R_1}{R_1}, R_b=\\frac{R_1 R_2 + R_2 R_3 + R_3 R_1}{R_2}, Rc=\\frac{R1_R2 + R2_R3 + R3_R1}{RC}<br> 519\\end</li> 520</ul>`,readingTime:{minutes:14.3,words:4290},title:"çµå·¥å¦å¤ä¹ ç¬è®°",icon:"page",order:1,type:"article"}}],["/notes/Operating-System/Chapter1-Introdction.html",{loader:()=>f(()=>import("./Chapter1-Introdction.html-DKi-mysd.js"),__vite__mapDeps([41,1])),meta:{author:"chiichen",date:16793568e5,category:["课ç¨ç¬è®°"],tag:["æä½ç³»ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>ç®å½</h2> 521<ol> 522<li>ä»ä¹æ¯æä½ç³»ç»</li> 523<li>æä½ç³»ç»çåå²</li> 524<li>æä½ç³»ç»ç¡¬ä»¶</li> 525<li>æä½ç³»ç» zoo</li> 526<li>æä½ç³»ç»æ¦å¿µ</li> 527<li>ç³»ç»è°ç¨</li> 528<li>æä½ç³»ç»ç»æ</li> 529</ol> 530<h2>ä»ä¹æ¯æä½ç³»ç»</h2> 531<ul> 532<li>æä½ç³»ç»çä½ç½®</li> 533</ul> 534<!--  --> 535<h3>æä½ç³»ç»çåè½</h3> 536<ul> 537<li>èªä¸èä¸ï¼èææºï¼æ©å±æºï¼extended machineï¼ï¼éèåºå±å¤æä¸éçæ¥å£ï¼ç»ç¨æ·ç®æ´ï¼é«æçæ¥å£</li> 538<li>èªä¸èä¸ï¼èµæºç®¡çå¨ï¼resource managerï¼ï¼å 许å¤ä¸ªç¨åºåæ¶è¿è¡ï¼å¤è¿ç¨ï¼ï¼è°åº¦èµæºä»¥å®ç°æ¶é´ã空é´ä¸çå¤ç¨ã管çãä¿æ¤å åå®å ¨ï¼ç®¡ç I/O 设å¤</li> 539</ul>`,readingTime:{minutes:7.96,words:2389},title:"Chapter1 Introdction",icon:"page",order:1,type:"article"}}],["/notes/Operating-System/Chapter2-Processes-and-Threads.html",{loader:()=>f(()=>import("./Chapter2-Processes-and-Threads.html-BBMWQXw5.js"),__vite__mapDeps([42,1])),meta:{author:"chiichen",date:168048e7,category:["课ç¨ç¬è®°"],tag:["æä½ç³»ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>è¿ç¨</h2> 540<ul> 541<li>é¡ºåºæ§è¡ï¼åéç¨åºç³»ç»ä¸ï¼ä¸ä¸ªå ·æç¬ç«åè½çç¨åºç¬å å¤çå¨ç´å°æç»ç»æçè¿ç¨ç§°ä¸ºç¨åºçé¡ºåºæ§è¡</li> 542<li>é¡ºåºæ§ï¼ç¨åºçç»ææ¯é¡ºåºæ§è¡ç(å¯è½æ switch æè loop)</li> 543<li>å°éæ§ï¼ç¬å ææèµæº</li> 544<li>å¯é夿§ï¼åå§ç¶æç¸åï¼è¿è¡å¤å°æ¬¡ç»æé½ç¸å</li> 545<li>å¹¶åæ§è¡ï¼ææä¸è¿°ç¹æ§é½æ²¡æ</li> 546<li>ä¸ºäºæè¿°å¹¶åçè¡ä¸ºï¼å¼å ¥äºè¿ç¨çæ¦å¿µ</li> 547</ul> 548<h3>è¿ç¨æ¨¡å</h3> 549<ul> 550<li>å¨è¿ç¨ç模åä¸ï¼ææå¯è¿è¡è½¯ä»¶é½è¢«ä»¥è¿ç¨çéåç»æèµ·æ¥</li> 551</ul> 552<h3>è¿ç¨æ¦å¿µ</h3>`,readingTime:{minutes:21.42,words:6425},title:"Chapter2 Processes and Threads",icon:"page",order:1,type:"article"}}],["/notes/Operating-System/Chapter3-Memory-Management.html",{loader:()=>f(()=>import("./Chapter3-Memory-Management.html-BSXxX_md.js"),__vite__mapDeps([43,1])),meta:{author:"chiichen",date:16831584e5,category:["课ç¨ç¬è®°"],tag:["æä½ç³»ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>No Memory Abstraction</h2> 553<ul> 554<li>ææç¨åºå¿ 须硬ç¼ç 硬件ç©çå°å<br> 555å åä¸ä¸å¯è½åæ¶è¿è¡ä¸¤ä¸ªåºç¨(ä¹å¯ä»¥ç¨æ¹æ³å®ç°åæ¶åæ¾ IB
555M360)</li> 556</ul> 557<h3>éæéå®ä½(Static reloacation)</h3> 558<ul> 559<li>å¨è¿ç¨å è½½å°å åä¸çæ¶åå°±æ å°å°ä¸ä¸ªæå®çç©çå°åä¸</li> 560<li>ä¼ç¹æ¯ä¸éè¦ç¡¬ä»¶æ¯æ</li> 561<li>ç¼ºç¹æ¯ä¼åæ ¢å è½½çé度ï¼èä¸å è½½åä¸åè½å¨å åä¸ç§»å¨ä½ç½®ï¼é¤éåè¿è¡ä¸æ¬¡éå®ä½ï¼èä¸å è½½å¨éè¦ç¨æç§æ¹å¼æ¾å¼å°å£°æåªä¸ªæ¯å°åï¼åªä¸ªæ¯å¸¸é</li> 562</ul> 563<h2>Address Space</h2>`,readingTime:{minutes:14.87,words:4460},title:"Chapter3 Memory Management",icon:"page",order:1,type:"article"}}],["/notes/Operating-System/Chapter4-File-System.html",{loader:()=>f(()=>import("./Chapter4-File-System.html-DnRsjsRm.js"),__vite__mapDeps([44,1])),meta:{author:"chiichen",date:16847136e5,category:["课ç¨ç¬è®°"],tag:["æä½ç³»ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>æä»¶(Files)</h2> 564<h3>ç®å½</h3> 565<ul> 566<li>ç®å½ä¹æ¯ä¸ä¸ªæä»¶</li> 567<li>ç®å½ä¿åäºæä»¶ååæä»¶åå¨ä½ç½®ç对åºå ³ç³»</li> 568</ul> 569<h3>æä»¶å</h3> 570<ul> 571<li>ç±ææå(Valid name)åæ©å±å(Extension)ç»æ</li> 572<li>è³å¤ 255 个å符</li> 573<li>æ¯ææ°åã忝ãç¹æ®å符ï¼ä¾å¦ä¸æ¯æåå·ï¼å 为åå·å¨ windows ç³»ç»ä¸æ¯è·¯å¾åé符</li> 574<li>Windows ä¸åºå大å°åï¼linux åºå</li> 575</ul> 576<h3>æä»¶ç»æ</h3> 577<ol> 578<li>åãåèåºå</li> 579<li>ç®åçè®°å½ç»æï¼çº¿æ§ï¼å®é¿</li> 580<li>夿çç»æï¼ 581<ul> 582<li>è®°å½æ <br> 583</li> 584</ul> 585</li> 586</ol>`,readingTime:{minutes:10.92,words:3276},title:"Chapter4 File System",icon:"page",order:1,type:"article"}}],["/notes/Operating-System/Chapter5-IO.html",{loader:()=>f(()=>import("./Chapter5-IO.html-B79Xt5HR.js"),__vite__mapDeps([45,1])),meta:{author:"chiichen",date:16860096e5,category:["课ç¨ç¬è®°"],tag:["æä½ç³»ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>I/O 硬件</h2> 587<h3>I/O 设å¤</h3> 588<ul> 589<li>å设å¤ï¼æä¿¡æ¯åå¨å¨å®é¿çåä¸ï¼æ¯ä¸ªå齿èªå·±çå°åãåç大å°ä» 512B å° 32KB ä¸çãå¯ä»¥ç¬ç«è¯»åæ¯ä¸ªåãä¾å¦ï¼ç¡¬çï¼U çç</li> 590<li>å符设å¤ï¼åéæè æ¥æ¶ä¸ä¸ªå符åºåï¼ä¸å¯å¯»åï¼ä¹æ²¡æ seek æä½ãä¾å¦ï¼æå°æºãç½å¡ãé¼ æ çã</li> 591</ul> 592<h3>è®¾å¤æ§å¶å¨</h3> 593<ul> 594<li>æçæ¯éæå¨ä¸»æ¿ä¸ï¼æçæ¯ä»å¤é¨æå ¥çãä¾å¦ PCIe ææ§½ä¸çæå ¥é¨ä»¶ãé常就æ¯è®¾å¤æ§å¶å¨(controller)æè å«å设å¤éé å¨(adapter)</li> 595</ul> 596<figure><figcaption>io硬件æ§å¶å¨.png</figcaption></figure>`,readingTime:{minutes:9.44,words:2832},title:"Chapter5 IO",icon:"page",order:1,type:"article"}}],["/notes/Operating-System/Chapter6-Deadlocks.html",{loader:()=>f(()=>import("./Chapter6-Deadlocks.html-d4eNqaWK.js"),__vite__mapDeps([46,1])),meta:{author:"chiichen",date:16822944e5,category:["课ç¨ç¬è®°"],tag:["æä½ç³»ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>èµæº</h2> 597<h3>åç±»</h3> 598<ul> 599<li>坿¢å å¼(preemptable)èµæºï¼å¯ä»¥è¢«ä»ä¸ä¸ªè¿ç¨ä¸æ¿èµ°èä¸å¸¦æ¥è´é¢å½±å(ä¾å¦ CPUãå å)ã</li> 600<li>ä¸å¯æ¢å å¼(Nonpreemptable)èµæºï¼ä¼å¯¼è´è¿ç¨å¤±è´¥å¦æè¢«æ¿èµ°(ä¾å¦ CD å»å½æº)ã</li> 601</ul> 602<h3>èµæºçåç¨</h3> 603<ul> 604<li>æ¯ä¸ªè¿ç¨ä¼æä»¥ä¸æ¥éª¤å©ç¨èµæºï¼</li> 605</ul> 606<ol> 607<li>请æ±èµæº</li> 608<li>使ç¨èµæº</li> 609<li>éæ¾èµæº</li> 610</ol> 611<ul> 612<li>å¦æè¯·æ±èµæºè¢«æç»å°±ä¸å®è¦çå¾ ï¼è¯·æ±èµæºçè¿ç¨é»å¡ï¼å¯è½ä¼å æ¤ fail with error code</li> 613</ul>`,readingTime:{minutes:8.37,words:2512},title:"Chapter6 Deadlocks",icon:"page",order:1,type:"article"}}],["/notes/Operating-System/",{loader:()=>f(()=>import("./index.html-Cwq2JqA1.js"),__vite__mapDeps([47,1])),meta:{date:1714837884e3,readingTime:{minutes:.03,words:9},title:"æä½ç³»ç»",icon:"lightbulb",type:"article"}}],["/notes/Software-Project-Management/2019-Review-Notes.html",{loader:()=>f(()=>import("./2019-Review-Notes.html-CkXHUa4C.js"),__vite__mapDeps([48,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,excerpt:` 614<h2>æ´ç人ï¼å½æè½©</h2> 615<h2>Ver1.0 æ´çæ¥æï¼2019/11/26</h2> 616<h2>Ver2.0ãVer2.1 æ´çæ¥æï¼2019/11/27</h2> 617<h2>Ver3.0 æ´çæ¥æï¼2019/11/29ï¼ç»çï¼ä¸åæ´æ°ï¼</h2> 618<h5>ä¿®æ¹è¯´æï¼Ver2.0 é¢å¤è¡¥å äºé¨åç¥è¯ç¹ä»¥åä¿®æ£äºé¨åæ¼åé误ï¼Ver2.1 æ·»å äºå¿ éçé¢å¤çä¸æç¿»è¯ä»¥å忬¡ä¿®æ£é¨åæ¼åé误ï¼Ver3.0 忬¡æ·»å äºé¨åç¥è¯ç¹ï¼ç°å¨å·²ç»ç¸å¯¹æ¯è¾å®å¤äºï¼ä»¥åä¿®æ£äºé¨åæ¼åé误</h5> 619<h2>æ³¨ï¼æ´ç䏿ï¼å¤§å®¶å¯ä»¥å¨è¿ä¸ªåºç¡ä¸èªè¡è°æ´ä¼åç¬è®°ï¼å 容ä¸å ¨ï¼3.0 çæ¬çå 容ç¸å¯¹è¿æ¯æ¯è¾è¯¦ç»çäºï¼â æ è®°æ¯ç¬è 认为çéç¹ï¼ç¬è 建议å¤ä¹ çæ¶åå¯ä»¥è¿ä»½ç¬è®°ä¸ºä¸»ï¼åææ¯å·²ç»çè¿ä¸é PPT æè 书æ¬ï¼æéè¦çåå¦å¦å¤è¿è¦éå å ¶ä»èµæå»çãè½¬è½½è¯·æ æåä½è åç¸å ³ææ¡£é¾æ¥</h2>`,readingTime:{minutes:15.32,words:4595},title:"软件项ç®ç®¡ç2019å¤ä¹ ç¬è®°",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/Chapter1-Indroduction.html",{loader:()=>f(()=>import("./Chapter1-Indroduction.html-BPrIGoZm.js"),__vite__mapDeps([49,1])),meta:{author:"chiichen",date:17017344e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ¦è¦</h2> 620<ul> 621<li>ä½ä¼å°å¯¹æ´å¥½ç项ç®ç®¡ç(å°¤å ¶æ¯ IT 项ç®ç®¡ç)䏿å¢é¿çéæ±ã
621</li> 622<li>è§£éä»ä¹æ¯é¡¹ç®,å举 IT 项ç®çä¾å,ååºé¡¹ç®çåç§ç¹å¾,å¹¶åæè¿°é¡¹ç®ç®¡çç约æã</li> 623<li>å®ä¹é¡¹ç®ç®¡ç,并论述项ç®ç®¡çæ¡æ¶ä¸çå ³é®å ç´ ,å æ¬ç项ç®å¹²ç³»äººã项ç®ç®¡ççç¥è¯é¢åã常ç¨å·¥å ·åææ¯,以åé¡¹ç®æåçè¦ç´ ã</li> 624<li>讨论项ç®ç®¡çã项ç®é管çå项ç®ç»å管çä¹é´çå ³ç³»,以åå®ä»¬ä¸çæ¯ä¸ä¸ªå¯¹ä¼ä¸æåçéè¦æ§ã</li> 625<li>éè¿æè¿°é¡¹ç®ç»çåäºä»ä¹ãéè¦ä»ä¹æè½ãçæ³çæè½ç»ç»å(è½åä¸è§å½¢)å IT 项ç®ç»çç就䏿ºä¼æ¥äºè§£é¡¹ç®ç»ççè§è²ã</li> 626<li>æè¿°é¡¹ç®ç®¡çä¸ä¸,å æ¬å®çåå²ãPMI çä¸ä¸ç»ç»çä½ç¨æã项ç®ç®¡çèµæ ¼è®¤è¯åèä¸éå¾·çéè¦æ§,以å项ç®ç®¡çè½¯ä»¶çæ´æ°ã</li> 627</ul>`,readingTime:{minutes:7.81,words:2344},title:"第1ç« é¡¹ç®ç®¡çæ¦è¿°",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/Chapter10-Project-Communication-Management.html",{loader:()=>f(()=>import("./Chapter10-Project-Communication-Management.html-KG8ZURhF.js"),__vite__mapDeps([50,1])),meta:{author:"chiichen",date:1702944e6,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 628<ol> 629<li>é¡¹ç®æ²é管çç 3 个è¿ç¨</li> 630<li>é¡¹ç®æ²é管ç计ååºå æ¬åªäºå 容ï¼</li> 631<li>åå¸ä¿¡æ¯åºè¯¥æ³¨æåªäºæ¹é¢ï¼</li> 632<li>ç»©ææ¥å</li> 633<li>æ¹åæ²éçä¸äºå»ºè®®</li> 634<li>å¦ä½ææå¼ä¼ï¼</li> 635<li>å¦ä½æ´é«æä½¿ç¨çµåé®ä»¶æå ¶ä»éè®¯å·¥å ·ï¼</li> 636</ol> 637<h2>é¡¹ç®æ²é管ç</h2> 638<ul> 639<li>é¡¹ç®æ²é管ççç®æ æ¯ç¡®ä¿é¡¹ç®ä¿¡æ¯è½å¤åæ¶ä¸éå½å°çæãæ¶éãåéãåå¨åé¨ç½²ãé¡¹ç®æ²é管çä¸å å«ä»¥ä¸ 3 个主è¦è¿ç¨: 640<ol> 641<li><code>è®¡åæ²é</code>管çå æ¬ç¡®å®å¹²ç³»äººçä¿¡æ¯åæ²ééæ±ââè°éè¦ä»ä¹ä¿¡æ¯?ä»ä»¬ä»ä¹æ¶åéè¦è¿äºä¿¡æ¯?å¦ä½å°ä¿¡æ¯åéç»ä»ä»¬?è¿ä¸ªè¿ç¨çè¾åºå æ¬æ²é管ç计åã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã</li> 642<li><code>ç®¡çæ²é</code>å æ¬å¯¹æ²é管ç计åä¸çé¡¹ç®æ²éè¿è¡å建ãåå¸ãåå¨ãæ£ç´¢åå¤ç½®ãè¿ä¸ªè¿ç¨ç主è¦è¾åºå æ¬é¡¹ç®æ²éã项ç®ç®¡çè®¡åæ´æ°ãé¡¹ç®ææ¡£æ´æ°åç»ç»è¿ç¨èµäº§æ´æ°ã</li> 643<li><code>æ§å¶æ²é</code>å æ¬ç¡®ä¿å¹²ç³»äººçæ²ééæ±å¾å°æ»¡è¶³ã</li> 644</ol> 645</li> 646</ul>`,readingTime:{minutes:6.45,words:1936},title:"第10ç« é¡¹ç®æ²é管ç",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/Chapter11-Project-Risk-Management.html",{loader:()=>f(()=>import("./Chapter11-Project-Risk-Management.html-B5_od_73.js"),__vite__mapDeps([51,1])),meta:{author:"chiichen",date:1702944e6,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 647<ol> 648<li>项ç®é£é©ç®¡çç 6 个è¿ç¨</li> 649<li>é£é©æç¨å½æ°å¯ä»¥å为åªå ç±»ï¼</li> 650<li>é£é©ç®¡ç计åç主è¦ä¸»é¢ï¼</li> 651<li>é£é©çåç±»ï¼</li> 652<li>é£é©è¯å«çå·¥å ·å æ¬ï¼</li> 653<li>é£é©ç»è®°ååºå æ¬åªäºå 容ï¼</li> 654<li>宿§é£é©åæçä¸¤ç§æ¹æ³ï¼</li> 655<li>å®éé£é©åæçå ä¸ªæ¹æ³ï¼</li> 656<li>åºå¯¹è´é£é©çå ç§çç¥ï¼</li> 657<li>åºå¯¹æ£é£é©çå ç§çç¥ï¼</li> 658<li>é£é©çæ§çå·¥å ·åææ¯å æ¬ï¼</li> 659</ol> 660<h2>项ç®é£é©ç®¡ç</h2> 661<ul> 662<li>项ç®é£é©ççä¸è¬å®ä¹æ¯å¯¹å®ç°é¡¹ç®ç®æ å¯è½äº§çæ¶æ<code>æç§¯æ</code>å½±åçä¸ç¡®å®æ§ã</li> 663<li><code>é£é©æç¨(risk utility)</code>æ¯æä»æ½å¨æ¶çä¸è·å¾çæ»¡è¶³ææææ¦æçç¨åº¦ãå¦ä¸å¾æç¤ºï¼å为:<code>é£é©è§é¿å(risk-averse)</code>ã<code>é£é©å好å(risk-seeking)</code>å<code>é£é©ä¸ç«å(risk-neutral)</code>ï¼Y 轴代表æç¨,æè 说æ¯ä»äººåé©ä¸è·å¾çææ¦ãX è½´æ¾ç¤ºçæ¯æ½å¨çåæ¥ææºä¼çä»·å¼ã<br> 664</li> 665<li>é£é©ç®¡çæ¶å 6 个主è¦è¿ç¨ï¼ 1. 计åé£é©ç®¡ç:é对æä¸é¡¹ç®å³å®å¦ä½å¶å®ä¸è®¡åé£é©ç®¡çæ´»å¨ãè¿ä¸ªè¿ç¨ç主è¦è¾åºæ¯é£é©ç®¡ç计åã 2. è¯å«é£é©:æç¡®å®åªäºé£é©ä¼å½±å项ç®å¹¶è®°å½é£é©ç¹æ§çè¿ç¨ãè¿ä¸ªè¿ç¨ç主è¦è¾åºæ¯é£é©ç»è®°åãé£é©æ¥ååé¡¹ç®ææ¡£æ´æ°ã 3. 宿½å®æ§é£é©åæ:ææç §åççå¯è½æ§åå½±åç¨
665度对é£é©è¿è¡ä¼å æåºçè¿ç¨ãå¨è¯å«é£é©ä¹å,项ç®å¢éå¯ä»¥ä½¿ç¨åç§å·¥å ·åææ¯å¯¹é£é©è¿è¡æåºå¹¶æ´æ°é£é©ç»è®°åä¸çä¿¡æ¯ã主è¦è¾åºæ¯é¡¹ç®ææ¡£æ´æ°ã 4. 宿½å®éé£é©åæ:æå°±å·²è¯å«é£é©å¯¹é¡¹ç®æ´ä½ç®æ çå½±åè¿è¡å®éåæçè¿ç¨ãè¿ä¸ªè¿ç¨ç主è¦è¾åºæ¯é¡¹ç®ææ¡£æ´æ°ã 5. 计åé£é©ååº:æéåæªæ½æ¥æé«å®ç°é¡¹ç®ç®æ çæ¦çãåå°é£é©å¯¹å®ç°é¡¹ç®ç®æ çå¨èçè¿ç¨ãå©ç¨é¢å å¶å®çé£é©ç®¡çè¿ç¨,项ç®å¢éå¯ä»¥å¶å®æµé£é©ååºçç¥,è¿äºçç¥å¸¸å¸¸å¯¼è´åæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã 6. 宿½é£é©ååº:æå®æ½é£é©ååºçç¥ãè¾åºå æ¬åæ´è¯·æ±åé¡¹ç®ææ¡£æ´æ°ã 7. çæ§é£é©:å æ¬å¨é¡¹ç®çå½å¨æä¸,çæ§å·²ç¥çé£é©ãè¯å«æ°æçé£é©ã宿½é£é©ååºè®¡å,å¹¶è¯ä¼°é£é©ååºçç¥çæææ§ãæ¤è¿ç¨ç主è¦è¾åºå æ¬å·¥å·¥ä½ç»©æä¿¡æ¯ãåæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°ãé¡¹ç®ææ¡£æ´æ°ãç»ç»è¿ç¨èµäº§æ´æ°ã<br> 666</li> 667</ul>`,readingTime:{minutes:20.63,words:6190},title:"第11ç« é¡¹ç®é£é©ç®¡ç",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/Chapter12-Project-Precurement-Management.html",{loader:()=>f(()=>import("./Chapter12-Project-Precurement-Management.html-aYpUx7Y2.js"),__vite__mapDeps([52,1])),meta:{author:"chiichen",date:1702944e6,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 668<ol> 669<li>项ç®éè´ç®¡çç 3 个è¿ç¨</li> 670<li>è§åéè´çå·¥å ·åæå·§ï¼</li> 671<li>éè´ç®¡ç计åå æ¬çå 容ï¼</li> 672<li>常è§çéè´æä»¶ï¼</li> 673<li>宿½éè´çè¿ç¨ï¼</li> 674</ol> 675<h2>项ç®éè´ç®¡ç</h2> 676<ul> 677<li>éè´(procurement)æå³çä»å¤é¨æ¥æºè·å¾äº§åæè æå¡ãéè´ä¸è¯å¹¿æ³ç¨äºæ¿åº,许å¤ç§äººä¼ä¸ä½¿ç¨å¤è´åå¤å ã</li> 678<li>项ç®éè´ç®¡ç(project precurement management)æ 3 个主è¦è¿ç¨ï¼ 679<ol> 680<li><code>计åéè´ç®¡ç</code>å æ¬å³å®éè´ä»ä¹ã使¶éè´åå¦ä½éè´ãå¨éè´è®¡åä¸,å³çè éè¦æç¡®å¤å ä»ä¹ãå³å®ååç±»å,å¹¶ä¸åæ½å¨åæ¹æè¿°å·¥ä½çå 容ãåæ¹(sellers)å æ¬æ¿å åæåå ¶ä»ç»ç»å个人æä¾äº§åææå¡çä¾åºåã该è¿ç¨çè¾åºå æ¬éè´ç®¡ç计åãéè´çç¥ãææ æä»¶ãéè´å·¥ä½è¯´æä¹¦ãæ¥æºéæ©æ åãèªå¶æè´ä¹°å³çãç¬ç«ææ¬ä¼°ç®ãåæ´è¯·æ±ãé¡¹ç®ææ¡£æ´æ°åç»ç»è¿ç¨èµäº§æ´æ°ã</li> 681<li><code>宿½éè´</code>å æ¬è·å¾åæ¹ååºã鿩忹并æäºååã该è¿ç¨çè¾åºå æ¬éæ©åæ¹ãè¾¾æåè®®ãåæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°ãé¡¹ç®ææ¡£æ´æ°åç»ç»è¿ç¨èµäº§æ´æ°ã</li> 682<li><code>æ§å¶éè´</code>å æ¬ç®¡çä¸åæ¹çå ³ç³»ãçæ§ååå±¥è¡æ åµãéå½å°è¿è¡æ´æ¹åç»æ¸ ååã该è¿ç¨ç主è¦è¾åºå æ¬ç»æéè´ãå·¥ä½ç»©æä¿¡æ¯ãéè´æä»¶æ´æ°ãåæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°ãé¡¹ç®ææ¡£æ´æ°åç»ç»è¿ç¨èµäº§æ´æ°ã</li> 683</ol> 684</li> 685</ul>`,readingTime:{minutes:13.26,words:3979},title:"第12ç« é¡¹ç®éè´ç®¡ç",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/Chapter13-Project-Stakeholder-Management.html",{loader:()=>f(()=>import("./Chapter13-Project-Stakeholder-Management.html-DxE_7n5G.js"),__vite__mapDeps([53,1])),meta:{author:"chiichen",date:17031168e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 686<ol> 687<li>项ç®å¹²ç³»äººç®¡çç 4 个è¿ç¨</li> 688<li>干系人ç»è®°è¡¨å æ¬åªäºå 容ï¼</li> 689<li>干系人åä¸ç级ï¼</li> 690<li>干系人管ç计åå æ¬ï¼</li> 691<li>åä¸åº¦æ§å¶çæ¹æ³ï¼</li> 692<li>ææç®¡çç©éµå æ¬åªäºæ¡ç®ï¼</li> 693</ol> 694<h2>项ç®å¹²ç³»äººç®¡ç</h2> 695<ul> 696<li>项ç®å¹²ç³»äººç®¡ççç®çæ¯è¯å«å项ç®å½±åçææäººåä¸ç»ç»ãåæå¹²ç³»äººçææ,并使干系人å¨é¡¹ç®çæ´ä¸ªçå½å¨æä¸ææåä¸é¡¹ç®å³çã项ç®ç»çåä»ä»ä»¬çå¢éå¿ é¡»ä¸å¹²ç³»äººè¿è¡è¯å¥½çæ²é,å¹¶åæ¶è§£å³é®é¢ä½¿å¹²ç³»äººæ»¡æã</li> 697<li>项ç®å¹²ç³»äººç®¡çç 4 个è¿ç¨å¦ä¸: 698<ol> 699<li><code>è¯å«å¹²ç³»äºº</code>æ¯æè¯å«åä¸é¡¹ç®æå项ç®å½±åçææäººå,并确确å
699®ç®¡çå¹²ç³»äººå ³ç³»çæä½³æ¹å¼ãè¿ä¸ªè¿ç¨ç主è¦è¾åºæ¯å¹²ç³»äººç»è®°åã</li> 700<li><code>计å干系人</code>å䏿¯ææ ¹æ®å¹²ç³»äººçéæ±ãå ´è¶£åæ½å¨å½±å,ç¡ç¡®å®ä½¿å¹²ç³»äººææåä¸é¡¹ç®å³çåæ´»å¨ççç¥ãè¿ä¸ªè¿ç¨çè¾åºæ¯å¹²ç³»äººåä¸è®¡åã</li> 701<li><code>管ç干系人</code>å䏿¯æä¸é¡¹ç®å¹²ç³»äººæ²éå¹¶ä¸åå·¥ä½,ä»äººè满足ä»ä»¬ç鿱忿ãè§£å³é®é¢,å¹¶ä¿è¿ä»ä»¬åä¸é¡¹ç®å³çåæ´»å¨ãè¿ä¸ªè¿ç¨çè¾åºæ¯åæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã</li> 702<li><code>çç£å¹²ç³»äºº</code>å䏿¯æçç£å¹²ç³»äººå ³ç³»,å¹¶æ ¹æ®å¹²ç³»äººçéæ±è°æ´è®¡ååçç¥ä»¥å¸å¼å¹²ç³»äººåä¸ãè¿ä¸ªè¿ç¨çè¾åºæ¯å·¥ä½ç»©æä¿¡æ¯ãåæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã</li> 703</ol> 704</li> 705</ul>`,readingTime:{minutes:8.02,words:2406},title:"第13ç« é¡¹ç®å¹²ç³»äººç®¡ç",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/Chapter2-Project-Management-and-IT-Environment.html",{loader:()=>f(()=>import("./Chapter2-Project-Management-and-IT-Environment.html-DxLrzPxF.js"),__vite__mapDeps([54,1])),meta:{author:"chiichen",date:17019072e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ¦è¦</h2> 706<ul> 707<li>å®ä¹é¡¹ç®ç®¡ççç³»ç»è§ä»¥åå¦ä½å°é¡¹ç®ç®¡çåºç¨äº IT 项ç®ä¸ã</li> 708<li>æ»ç»ç»ç»çç¸å ³è¦ç¹,å æ¬ç»ç»ç 4 ä¸ªæ¡æ¶ãç»ç»ç»æåç»ç»æåã</li> 709<li>è§£é为ä»ä¹é¡¹ç®å¹²ç³»äººç®¡çåä¼ä¸é«å±çæ¿è¯ºå¯¹é¡¹ç®æåè³å ³éè¦ã</li> 710<li>åºå项ç®çå½å¨æå产åçå½å¨æä¹é´çå¼åã</li> 711<li>讨论 IT 项ç®çç¬ç¹æ§å夿 ·æ§ã</li> 712<li>æ»ç»å½±å IT 项ç®ç®¡ççææ°è¶å¿,å æ¬å ¨çåãå¤å ãèæå¢éåææ·é¡¹ç®ç®¡çã</li> 713</ul> 714<h2>项ç®ç®¡ççç³»ç»è§</h2> 715<p>为äºé«æå°å¤çå¤æçæ åµ,项ç®ç»çå¿ é¡»ä»¥æ´ä½çè§ç¹è®¤è¯é¡¹ç®,å¹¶ä¸ç<br> 716è§£è¯¥é¡¹ç®æ¯å¦ä½ä¸æ´å¤§çç»ç»è¿è¡èç³»çã<code>ç³»ç»æè(systems thinking)</code>æè¿°äºè¿ç§æ´ä½ç<br> 717è§ç¹ã</p>`,readingTime:{minutes:8.78,words:2634},title:"第2ç« é¡¹ç®ç®¡çä¸ITç¯å¢",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/Chapter3-Project-Management-Process-group.html",{loader:()=>f(()=>import("./Chapter3-Project-Management-Process-group.html-CgsJO5ou.js"),__vite__mapDeps([55,1])),meta:{author:"chiichen",date:17021664e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ¦è¦</h2> 718<ul> 719<li>æè¿° 5 大项ç®ç®¡çè¿ç¨ç»åå ¶åèªå ¸åçæ´»å¨æ°´å¹³,以åå®ä»¬ä¹é´çç¸äºå ³ç³»ã</li> 720<li>äºè§£é¡¹ç®ç®¡çè¿ç¨ç»ä¸é¡¹ç®ç®¡çç¥è¯é¢åä¹é´çç¸äºå ³ç³»ã</li> 721<li>讨论ç»ç»å¦ä½å¼å IT 项ç®ç®¡çæ¹æ³è®ºæ¥æ»¡è¶³èªèº«çéè¦ã</li> 722<li>å顾ä¸ä¸ªç»ç»åºç¨é¡¹ç®ç®¡çè¿ç¨ç»ç®¡ç IT 项ç®çæ¡ä¾ç ç©¶,æè¿°æ¯ä¸ªè¿ç¨ç»çè¾åº,äºè§£ææç项ç®å¯å¨ã项ç®è®¡åãé¡¹ç®æ§è¡ã项ç®çæ§åé¡¹ç®æ¶å°¾æ¯å¦ä½ä¿è¿é¡¹ç®æåçã</li> 723<li>å顾åºç¨ææ·æ¹æ³ç®¡ççåä¸ä¸ª IT 项ç®çæ¡ä¾ç ç©¶,å¹¶æ¯æ¯è¾ææ·æ¹æ³å颿µæ¹æ³ä¹é´çå ³é®åºå«ã</li> 724<li>æè¿°ä¸ºæ¯ä¸ªè¿ç¨ç»åå»ºææ¡£çå 个模æ¿ã</li> 725</ul>`,readingTime:{minutes:6.88,words:2063},title:"第3ç« é¡¹ç®ç®¡çè¿ç¨ç»",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/Chapter4-Project-Integration-Management.html",{loader:()=>f(()=>import("./Chapter4-Project-Integration-Management.html-Dg4CcYwE.js"),__vite__mapDeps([56,1])),meta:{author:"chiichen",date:17021664e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 726<ol> 727<li>项ç®éæç®¡ççè¿ç¨</li> 728<li>éæ© IT 项ç®ç计åè¿ç¨</li> 729<li>鿩项ç®ç 5 ä¸ªå¸¸ç¨ææ¯</li> 730<li>NPV çè®¡ç®æ¥éª¤</li> 731<li>综ååæ´æ§å¶ç 3 个主è¦ç®æ </li> 732<li>å¨ç»ç»ä¸ï¼è®¾ç«åæ´è¯·æ±ä¹¦çæä¹ï¼å¦ä½å»ºç«ä¸ä¸ªå¥½çåæ´è¯·æ±ç®¡çè¿ç¨ï¼</li> 733</ol> 734<h2>ä»ä¹æ¯é¡¹ç®æ´å管ç</h2> 735<ul> 736<li> 737<p><code>é¡¹ç®æ´å管ç(project integration management)</code>å æ¬å¨æ´ä¸ªé¡¹ç®çå½å¨æä¸åè°ææå ¶ä»ç项ç®ç®¡çç¥è¯é¢åãè¿ç§æ´åç¡®ä¿äºé¡¹ç®çææå ç´ è½å¨æ£ç¡®çæ¶é´éåå¨ä¸èµ·,ä»èæåå°å®æé¡¹ç®ãæ ¹æ®ã项ç®ç®¡çç¥è¯ä½ç³»æå(第 6 ç)ãæè¿°,é¡¹ç®æ´å管çå æ¬ 7 个主è¦è¿ç¨:</p> 738<ol> 739<li>å¶å®é¡¹ç®ç« ç¨ãå³ä¸é¡¹ç®å¹²ç³»äººä¸èµ·åä½,å¶å®æ£å¼æ¹å项ç®çæä»¶ââç« ç¨ã</li> 740<li>å¶å®é¡¹ç®ç®¡ç计åãå³åè°é¡¹ç®è®¡åçææç»æé¨å,å¹¶æå®å®ä»¬æ´å为ä¸ä»½ä¸è´çè¿è´¯çæä»¶ââ项ç®ç®¡ç计åã</li> 741<li>æå¯¼ä¸ç®¡ç项ç®å·¥ä½ãå³éè¿å®æ½é¡¹ç®ç®¡ç计åä¸çæ´»å¨,æ¥æ§è¡é¡¹ç®ç®¡ç计åã</li> 742<li>管ç项ç®ç¥è¯ãå³ä½¿ç¨ç°æç¥è¯å¹¶çææ°ç¥è¯,以å®ç°é¡¹ç®ç®æ ,并帮å©ç»ç»å¦ä¹ ã</li> 743<li>çæ§é¡¹ç®å·¥ä½ãå³çç£é¡¹ç®å·¥ä½æ¯å¦ç¬¦å项ç®ç绩æç®æ ã</li> 744<li>宿½æ´ä½åæ´æ§å¶ãå³å¨æ´ä¸ªé¡¹ç®çå½å¨æä¸è¯å«ãè¯ä¼°å管çåæ´ã</li> 745<li>é¡¹ç®æé¶æ®µæ¶å°¾ãå³ç»ç»é¡¹ç®æé¶æ®µçæææ´»å¨,ä»èèæ£å¼ç»æé¡¹ç®æé¶æ®µã</li> 746</ol> 747</li> 748<li> 749<p>项ç®ç»çè¦åè°é¡¹ç®èµæºãç»é¢å ¨å±ï¼è§£å³é¡¹ç®å²çªï¼è宿è¿äºä»»å¡çé¦è¦æ¹æ³å°±æ¯é¡¹ç®æ´å管ç</p> 750</li> 751<li> 752<p>è¯å¥½çé¡¹ç®æ´å管ç对满足干系人çéæ±è³å ³éè¦ãé¡¹ç®æ´å管çå æ¬çé¢ç®¡çã<code>çé¢ç®¡ç(interface management)</code>æ¶åæç¡®å管çä¼å¤é¡¹ç®å ç´ ç¸äºä½ç¨ç交çç¹ãçé¢ç®¡çç主è¦å·¥å ·æ¯æ²éåå ³ç³»ãéç项ç®åä¸äººåçå¢å ,交çç¹çæ°éå¯è½ä¼åç°ææ°çº§å¢é¿ã</p> 753</li> 754<li> 755<p>
755é¡¹ç®æ´åç®¡çæ¯å¨æ´ä¸ªç»ç»çç¯å¢ä¸è¿è¡ç,èä¸ä» ä» åçå¨ä¸ä¸ªç¹å®é¡¹ç®çå é¨ã项ç®ç»çå¿ é¡»å°é¡¹ç®çå·¥ä½åç»ç»çè¿è¥æ´åèµ·æ¥ã</p> 756</li> 757</ul>`,readingTime:{minutes:24.03,words:7210},title:"第4ç« é¡¹ç®æ´å管ç",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/Chapter5-Project-Scope-Management.html",{loader:()=>f(()=>import("./Chapter5-Project-Scope-Management.html-CPs_fApU.js"),__vite__mapDeps([57,1])),meta:{author:"chiichen",date:17023392e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 758<ol> 759<li>项ç®èå´ç®¡çæ¶åç 6 个主è¦è¿ç¨</li> 760<li>èå´ç®¡ç计åå æ¬åªäºä¿¡æ¯ï¼</li> 761<li>æ¶ééæ±çå¸¸ç¨æ¹æ³</li> 762<li>å¶å®å·¥ä½åè§£ç»æï¼WBSï¼çæ¹æ³</li> 763<li>èå´æ§å¶çç®æ </li> 764<li>å ¬å¸åºéµå¾ªåªäºæä½³å®è·µæ¥é¿å åºç°ä¸»è¦çèå´é®é¢ï¼</li> 765<li>èå´è延产ççåå ï¼æ¯å¦å¯ä»¥é¿å ï¼å¦ä½é¢é²èå´èå»¶ç产çï¼</li> 766</ol> 767<h2>ä»ä¹æ¯é¡¹ç®èå´ç®¡ç</h2> 768<ul> 769<li>项ç®ç®¡çæéè¦ä¹æé¾åçä¸é¡¹å·¥ä½å°±æ¯å®ä¹é¡¹ç®èå´ãèå´æ¯æå¼å项ç®äº§åææ¶åçææå·¥ä½åç¨äºå¼å产åçææè¿ç¨ã</li> 770<li>项ç®èå´ç®¡ç(project scope management)æ¯æçå®åæ§å¶é¡¹ç®ä¸åºå æ¬ä»ä¹åä¸å æ¬ä»ä¹ææ¶åçè¿ç¨ã该è¿ç¨ç¡®ä¿äºé¡¹ç®å¢éå干系人对项ç®çå¯äº¤ä»ææä»¥åç产è¿äºå¯äº¤ä»æææè¿è¡çå·¥ä½è¾¾æå ±è¯ã项ç®èå´ç®¡çå å« 6 个主è¦è¿ç¨: 771<ol> 772<li>计åèå´ç®¡çï¼æ¯æç¡®å®å¦ä½ç®¡ç项ç®çèå´åéæ±ã</li> 773<li>æ¶ééæ±ï¼æ¯æå®ä¹å¹¶è®°å½äº§åçç¹ç¹ååè½,以åå¼åè¿äºåçè¿ç¨ã</li> 774<li>å®ä¹èå´ï¼æ¯æå®¡æ¥èå´ç®¡ç计åã项ç®ç« ç¨ãéæ±ææ¡£åç»ç»è¿ç¨èµäº§æ¥å¶å®ä¸ä»½èå´è¯´æä¹¦,å¹¶ä¸å¨éæ±çæ©å±ååæ´è¯·æ±å¾å°æ¹åæ¶å¢å æ´å¤çä¿¡æ¯ã</li> 775<li>å建工ä½åè§£ç»æï¼æ¯æå°ä¸»è¦ç项ç®å¯äº¤ä»ææåè§£ææ´ç»å°åæ´æç®¡ççç»æé¨åã</li> 776<li>确认èå´ï¼æ¯æé¡¹ç®å¯äº¤ä»ææçæ£å¼éªæ¶ãå ³é®é¡¹ç®å¹²ç³»äºº,æ¯å¦é¡¹ç®ç客æ·ä»¥å项ç®å起人å¨è¿ä¸è¿ç¨ä¸è¿è¡å®¡æ¥,ç¶åæ£å¼éªæ¶é¡¹ç®çå¯äº¤ä»ææã妿䏿¥åç°å¨çå¯äº¤ä»ææ,é£ä¹å®¢æ·æé¡¹ç®å起人é常ä¼è¯·æ±åæ´ã</li> 777<li>æ§å¶èå´ï¼æ¯æå¯¹é¡¹ç®èå´çååè¿è¡æ§å¶,è¿å¯¹è®¸å¤ IT 项ç®èè¨æ¯ä¸ç§ææãèå´åæ´ç»å¸¸å½±åå¢éå®ç°é¡¹ç®çæ¶é´ç®æ åææ¬ç®æ çè½å,å æ¤é¡¹ç®ç»çå¿ é¡»ä»ç»æè¡¡èå´åæ´çææ¬åæ¶çã</li> 778</ol> 779</li> 780</ul>`,readingTime:{minutes:14.43,words:4329},title:"第5ç« é¡¹ç®èå´ç®¡ç",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/Chapter6-Project-Schedule-Management.html",{loader:()=>f(()=>import("./Chapter6-Project-Schedule-Management.html-BFCROfr7.js"),__vite__mapDeps([58,1])),meta:{author:"chiichen",date:17027712e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 781<ol> 782<li>项ç®è¿åº¦ç®¡çä¸ç 6 个主è¦è¿ç¨</li> 783<li>ä¸ä¸ªè¿åº¦ç®¡ç计ååºè¯¥å æ¬åªäºä¿¡æ¯ï¼</li> 784<li>ä¾èµçåç§ç±»å</li> 785<li>è¾ å©è¿åº¦å¶è®¢è¿ç¨çå·¥å ·åææ¯æåªäºï¼</li> 786<li>SMART ååæ¯ææ ·å®ä¹éç¨ç¢çï¼</li> 787<li>使ç¨å ³é®è·¯å¾æ¥ç¼©ç项ç®è¿åº¦æåªä¸ä¸ªä¸»è¦ææ¯ï¼</li> 788</ol> 789<h2>项ç®è¿åº¦ç®¡ç(Project Schedule Management)ä¸ç 6 个主è¦è¿ç¨</h2> 790<ol> 791<li><code>计åè¿åº¦ç®¡ç</code>æ¯æç¡®å®å°ç¨äºè®¡åãæ§è¡åæ§å¶é¡¹ç®è¿åº¦çæ¿çãæµç¨åææ¡£ã</li> 792<li><code>å®ä¹æ´»å¨</code>æ¯æè¯å«é¡¹ç®å¢éæååå¹²ç³»äººå¿ é¡»æ§è¡å¹¶äº§çç项ç®çå¯äº¤ä»ææçç¹å®æ´»å¨ã<code>æ´»å¨(activity)</code>æ<code>ä»»å¡(task)</code>æ¯å·¥ä½çç»æè¦ç´ ,é常åºåºç°å¨å·¥ä½åè§£ç»æä¸,æé¢è®¡çæç»æ¶é´ãææ¬åèµæºè¦æ±ã</li> 793<li><code>æåæ´»å¨é¡ºåº</code>æ¯æè¯å«åè®°å½é¡¹ç®æ´»å¨ä¹é´çå ³ç³»,å æ¬éæ±åãèµæºåè§£ç»æåé¡¹ç®ææ¡£æ´æ°ã</li> 794<li><code>ä¼°ç®æ´»å¨æç»æ¶é´</code>æ¯æä¼°ç®å®æåé¡¹æ´»å¨æéç工使¶é´ã</li> 795<li><code>å¶å®è¿åº¦è®¡å</code>æ¯æåææ´»å¨é¡ºåºãèµæºéæ±åæ´»å¨æç»æ¶é´ä¼°ç®æ¥å建项ç®è¿åº¦è®¡åã</li> 796<li><code>æ§å¶è¿åº¦</code>æ¯ææ§å¶å管ç项ç®è¿åº¦çåæ´ã</li> 797</ol>`,readingTime:{minutes:20.89,words:6268},title:"第6ç« é¡¹ç®è¿åº¦ç®¡ç",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/Chapter7-Project-Cost-Management.html",{loader:()=>f(()=>import("./Chapter7-Project-Cost-Management.html-CwEKh27c.js"),__vite__mapDeps([59,1])
797),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 798<ol> 799<li>é¡¹ç®ææ¬ç®¡çç 4 个è¿ç¨</li> 800<li>ææ¬ç®¡ç计ååºè¯¥å æ¬åªäºä¿¡æ¯ï¼</li> 801<li>ä¸ç§åºæ¬çææ¬ä¼°ç®ç±»å</li> 802<li>ææ¬ä¼°ç®çå·¥å ·åææ¯æåªäºï¼</li> 803<li>æ£å¼å ¬å¼ï¼EV, CV, SV, CPI, SPIï¼</li> 804</ol> 805<h2>é¡¹ç®ææ¬ç®¡ç</h2> 806<ul> 807<li>ææ¬<code>è¶ æ¯(overrun)</code>æ¯å®é ææ¬è¶ è¿ä¼°è®¡çé¢å¤ç¾åæ¯æéé¢ã</li> 808<li>æ¬ç« éè¿è®¡åææ¬ç®¡çãå建è¯å¥½çææ¬ä¼°ç®ä»¥åä½¿ç¨æ£å¼ç®¡ç(EVM)æ¥è¾ å©ææ¬æ§å¶</li> 809</ul> 810<h3>é¡¹ç®ææ¬ç®¡çæ¯ä»ä¹</h3>`,readingTime:{minutes:16.47,words:4941},title:"第7ç« é¡¹ç®ææ¬ç®¡ç",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/Chapter8-Project-Quality-Management.html",{loader:()=>f(()=>import("./Chapter8-Project-Quality-Management.html-BEwwAJpa.js"),__vite__mapDeps([60,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 811<ol> 812<li>项ç®è´¨é管çç 3 个è¿ç¨</li> 813<li>IT 项ç®ä¸å½±åè´¨éçéè¦èå´é¨åå æ¬ä»ä¹ï¼</li> 814<li>è´¨éæ§å¶è¿ç¨ç主è¦è¾åºæ¯ä»ä¹ï¼</li> 815<li>7 ç§åºæ¬çè´¨éå·¥å ·</li> 816<li>DMAIC æ¹è¿è¿ç¨ä»£è¡¨åªäºä¸ªé¶æ®µ</li> 817<li>CMMI çè½åå±çº§æåªå 个</li> 818</ol> 819<h2>项ç®è´¨é管ç</h2> 820<ul> 821<li><code>项ç®è´¨é管ç(project quality management)</code>çç®çæ¯ç¡®ä¿é¡¹ç®æ»¡è¶³å®æåºæ»¡è¶³çéæ±ã</li> 822<li>项ç®è´¨é管çå æ¬ 3 个主è¦è¿ç¨: 823<ol> 824<li><code>计åè´¨é管ç</code>å æ¬ç¡®å®åªäºè´¨éè¦æ±åæ åä¸é¡¹ç®ç¸å ³,以åå¦ä½æ»¡è¶³è¿äºè¦æ±åæ åãå°è´¨éæ åçº³å ¥é¡¹ç®è®¾è®¡æ¯è´¨é计åçå ³é®é¨åãè´¨é计åç主è¦è¦è¾åºæ¯è´¨é管ç计åãè´¨éåº¦éæ åã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã<code>åº¦éæ å(metric)</code>æ¯ä¸ä¸ªæµéæ åã常è§çåº¦éæ åå æ¬äº§åçæ éçã产ååæå¡çå¯ç¨æ§ä»¥åå®¢æ·æ»¡æåº¦ã</li> 825<li><code>管çè´¨é</code>å æ¬å°è´¨é管ç计å转æ¢ä¸ºå¯æ§è¡çè´¨éæ´»å¨ãè¿äºäºæ´»å¨å¿ é¡»éµå®ç»ç»çè´¨éæ¿çã该è¿ç¨ç主è¦è¾åºæ¯è´¨éæ¥åãæµè¯åè¯ä¼°ææ¡£ãåæ´æ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°ä»¥åé¡¹ç®ææ¡£æ´æ°ã</li> 826<li><code>æ§å¶è´¨é</code>å æ¬çæ§å ·ä½ç项ç®ç»æ,以确ä¿å®ä»¬æ¯å®æ´çãæ£ç¡®ç并满足客æ·çææãè¿ä¸ªè¿ç¨é叏䏿æ¯å·¥å ·åè´¨éç®¡çææ¯ç¸å ³,å¦å¸ç´¯æå¾ãè´¨éæ§å¶å¾åç»è®¡æ½æ ·ãè´¨éæ§å¶ç主è¦è¾åºå æ¬è´¨éæ§å¶æµéãç»éªè¯çå¯äº¤ä»ææãå·¥ä½ç»©æä¿¡æ¯ãåæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã</li> 827</ol> 828</li> 829</ul>`,readingTime:{minutes:15.75,words:4726},title:"第8ç« é¡¹ç®è´¨é管ç",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/Chapter9-Project-Resource-Management.html",{loader:()=>f(()=>import("./Chapter9-Project-Resource-Management.html-CVLH9bts.js"),__vite__mapDeps([61,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 830<ol> 831<li>项ç®èµæºç®¡çç 6 个è¿ç¨</li> 832<li>é©¬æ¯æ´éæ±å±æ¬¡ç论ä»ä½å°é«æ¯åªå å±ï¼</li> 833<li>项ç®ç»çè¿ç¨åª 7 ç§ä¹ æ¯æ¥æé«é¡¹ç®å·¥ä½çæçï¼</li> 834<li>èµæºå¹³è¡¡çä¼ç¹æ¯ä»ä¹</li> 835<li>å¡å æ¼æ¨¡åæè¿°çå¢é建设ç 5 ä¸ªé¶æ®µï¼</li> 836<li>管ç项ç®å¢éçå·¥å ·åææ¯</li> 837</ol> 838<h2>项ç®èµæºç®¡ç</h2> 839<ul> 840<li>项ç®èµæºç®¡çå å«ä½¿é¡¹ç®æ¶åç人ååç©åèµæº(设æ½ã设å¤ãææãç©èµç)å¾å°æææå©ç¨çå ¨è¿ç¨ã人åèµæºç®¡çå æ¬ææç项ç®å¹²ç³»äºº:å起人ã客æ·ã项ç®å¢éæåãæ¯æäººå以å项ç®ä¾åºåçã项ç®èµæºç®¡çå æ¬ä»¥ä¸ 6 个è¿ç¨: 841<ol> 842<li><code>计åèµæºç®¡ç</code>å æ¬ç¡®å®å¦ä½è¯ä¼°ãè·åã管çå使ç¨é¡¹ç®èµæºãè¿ä¸ªè¿ç¨ç主è¦è¾åºæ¯èµæºç®¡ç计åãå¢éç« ç¨åé¡¹ç®ææ¡£æ´æ°ã</li> 843<li><code>ä¼°ç®æ´»å¨èµæº</code>å æ¬ä¼°ç®å®æé¡¹ç®å·¥ä½æéç人ååç©åèµæºãè¾åºå æ¬èµæºéæ±ãä¼°ç®ä¾æ®ãèµæºåè§£ç»æåé¡¹ç®ææ¡£æ´æ°ã</li> 844<li><code>è·åèµæº</code>å æ¬è·åå¢éæåã设æ½ã设å¤ãææãç©èµåå ¶ä»æéèµæºãè¾åºå æ¬ç©åèµæºå项ç®å¢éåé ãèµæºæ¥åãè¯·æ±æ´æ¹åä¸äºææ¡£çæ´æ°ã</li> 845<li><code>建设项ç®å¢é</code>å æ¬ä¸ºäºæé«é¡¹ç®ç»©æè对个人æè½å项ç®å¢éæè½ç建设ãå¢é建设æè½å¯¹è®¸å¤é¡¹ç®ç»çæ¥è¯´é常æ¯ä¸ä¸ªææãè¿ä¸ªè¿ç¨ç主è¦è¾åºæ¯å¢é绩æè¯ä¼°ãåæ´è¯·æ±åä¸äºææ¡£çæ´æ°ã</li> 846<li><code>管ç项ç®å¢é</code>å æ¬è·è¸ªå¢éæå绩æãæ¿å±å¢éæåãæä¾åæ¶åé¦ãè§£å³é®é¢åå²çªï¼ä»¥ååè°å忥叮婿é«é¡¹ç®ç»©æãè¿ä¸ªè¿ç¨çè¾åºå æ¬åæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°ãé¡¹ç®ææ¡£æ´æ°åç»ç»è¿ç¨èµäº§æ´æ°ã</li> 847<li><code>æ§å¶èµæº</code>ä¿è¯é¡¹ç®çç©åèµæºè½æè®¡åè·åï¼çæ§è®¡åä¸å®é çèµæºå©ç¨çï¼å¹¶å¨éè¦æ¶éåçº æ£æªæ½ãè¾åºå æ¬å·¥ä½ç»©æä¿¡æ¯ãåæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã</li> 848</ol> 849</li> 850</ul>`,readingTime:{minutes:22.82,words:6845},title:"第9ç« é¡¹ç®èµæºç®¡ç",icon:"page",order:1,type:"article"}}],["/notes/Software-Project-Management/",{loader:()=>f(()=>import("./index.html-DHLTjJrB.js"),__vite__mapDeps([62,1])),meta:{date:1714837884e3,readingTime:{minutes:.04,words:11},title:"软件项ç®ç®¡ç",icon:"lightbulb",type:"article"}}],["/notes/Software-Testing-and-Maintenance/Chapter1-Basic-Concepts-of-Software-Testing.html",{loader:()=>f(()=>import("./Chapter1-Basic-Concepts-of-Software-Testing.html-DIinpS3J.js"),__vite__mapDeps([63,1])
850),meta:{author:"chiichen",date:17149536e5,category:["课ç¨ç¬è®°"],tag:["软件æµè¯ä¸ç»´æ¤"],sticky:!1,isOriginal:!0,excerpt:`<h2>Fault, Error and Failure</h2> 851<ul> 852<li>软件æ é(Fault)ï¼è½¯ä»¶ä¸çéæç¼ºé·ã</li> 853<li>软件失败(Failure)ï¼ç¸å¯¹äºéæ±æå ¶ä»é¢æè¡ä¸ºçæè¿°ï¼è¡¨ç°åºçå¤é¨é误è¡ä¸ºã</li> 854<li>软件é误(Error)ï¼æäºæ é表ç°åºçé误å é¨ç¶æã</li> 855</ul> 856<div class="hint-container info"> 857<p class="hint-container-title">ä¾å¦</p> 858<ul> 859<li>æ£è åå»çæä¾ä¸ä»½çç¶æ¸ åââ失败</li> 860<li>å»çå°è¯è¯ææ ¹æ¬åå ï¼å³ç¾ç ââæ é</li> 861<li>å»çå¯è½ä¼å¯»æ¾å¼å¸¸çå é¨ç¶åµï¼é«è¡åãå¿å¾ä¸é½ãè¡æ¶²ä¸çç»èï¼ââé误<br> 862:::</li> 863</ul> 864<h2>Bug</h2> 865<ul> 866<li>Bug å¯è½æ¯ Fault, Error æè Failure</li> 867<li>Bug å¾å¾åºç°å¨<code>软件è§çº¦(Software Specification)</code>é¶æ®µ</li> 868</ul> 869<h2>What Effort Goes Into a Software Product</h2> 870<h3>ç¨æ·éæ±(Customer Requirements)</h3> 871<ul> 872<li>éè¦äºè§£ç¨æ·éæ±</li> 873<li>é常éè¦éè¿è°ç å类产åï¼ç¨æ·è°æ¥çæ¹å¼è¿è¡</li> 874<li>为äºå³å®äº§åæç»è¦å å«åªäº<code>features</code></li> 875</ul> 876<h3>软件è§çº¦(Specifications)</h3> 877<ul> 878<li>æ ¼è¯´ææ±éäºææè¿äºä¿¡æ¯ä»¥å任使ªæç¡®è¡¨è¿°ä½åæ¯å¼ºå¶æ§çè¦æ±ï¼çæ£å®ä¹äºäº§åå°æ¯ä»ä¹ãå°åä»ä¹ä»¥åå®å°åç°ä»ä¹æ ·åã</li> 879</ul> 880<h3>è¿åº¦è®¡å(Scheduling)</h3> 881<ul> 882<li>ç®çæ¯ä¸ºäºå¤æå½åç宿è¿åº¦</li> 883</ul> 884<h3>ææ¡£</h3> 885<p>è½¯ä»¶è®¾è®¡ææ¡£</p> 886<ul> 887<li>æ¶æ</li> 888<li>æ°æ®æµå¾</li> 889<li>ç¶æè½¬æ¢å¾</li> 890<li>æµç¨å¾</li> 891<li>ä»£ç æ³¨é<br> 892æµè¯ææ¡£</li> 893<li>æµè¯è®¡å</li> 894<li>æµè¯ç¨ä¾</li> 895<li>é误æ¥å</li> 896<li>æµè¯å·¥å ·åèªå¨å</li> 897<li>ææ ãç»è®¡åæ»ç»</li> 898</ul> 899<h2>What Parts Make Up a Software Product?</h2> 900<figure><figcaption>What Parts Make Up a Software Product</figcaption></figure> 901<h2>
901软件æµè¯æ¨¡å(Models of Software Testing)</h2> 902<ul> 903<li>ç叿¨¡å(Waterfall Model)</li> 904<li>èºææ¨¡å(Spiral Model)</li> 905<li>V Model</li> 906<li>W Model</li> 907<li>ææ·æ¨¡å(Agile Model)</li> 908<li>æéå¼å(Extreme Programing, XP)</li> 909</ul> 910<h3>ç叿¨¡å(Waterfall Model)</h3> 911<ul> 912<li>ææç计å卿å¼å§å°±å®æäºï¼ä¸æ¦å建ï¼å°±ä¸åºæ´æ¹ã</li> 913<li>éåçåä¸ªé¶æ®µä¹é´æ²¡æä»»ä½éå ã</li> 914<li>é常ï¼ä»»ä½äººå¨æµè¯å®æåçæåä¸å»æææºä¼âçå°âç¨åºã</li> 915</ul> 916<figure><figcaption>Waterfall-Model</figcaption></figure> 917<ul> 918<li>ä¼ç¹: 919<ol> 920<li>å¦ææ©æå°±ç¡®ä¿éæ±å设计æ¯å®å ¨æ£ç¡®çï¼é£ä¹è¿å°å¨åæèç大鿶é´åç²¾åã</li> 921<li>强è°äºææ¡£åçéè¦æ§ï¼å°ææç¥è¯éä¸åæ¾å¨ä¸ä¸ªä¸å¤®èµæåºä¸ï¼æ°å¢éæåå¯ä»¥è½»æ¾åèã</li> 922</ol> 923</li> 924<li>缺ç¹ï¼ 925<ol> 926<li>å¨é¡¹ç®ç»æåï¼å¾å°æå¯è§çè¿å±è¿¹è±¡ã</li> 927<li>å®ä¸çµæ´»ï¼æ æ³åºå¯¹ååã</li> 928<li>çæææææ¡£èæ¶è¾é¿ã</li> 929<li>æµè¯ä» å¨é¡¹ç®ç»ææ¶è¿è¡ââè¿å¯è½ä¼å¨å卿¶é´æé¢ç®çº¦æçæ åµä¸æå³ç妥åã</li> 930<li>å¿ é¡»æ´ä½æµè¯ç¨åºï¼è¿å¯è½å¯¼è´æµè¯ä¸å®æ´ã</li> 931<li>妿æµè¯åç°ä¸ä¸ªéè¦éæ°è®¾è®¡çæ éï¼å¯è½ä¼å 为æ¶åç麻ç¦è被忽ç¥ã</li> 932<li>妿客æ·ä¸æ»¡æï¼å¯è½ä¼å¯¼è´ç»´æ¤é¶æ®µè¾é¿ï¼ä»¥è§£å³ä»ä»¬çé®é¢ã</li> 933</ol> 934</li> 935</ul> 936<h3>èºææ¨¡å(Spiral Model)</h3> 937<ul> 938<li>以é£é©é©±å¨çå¼åè¿ç¨</li> 939<li>ç叿¨¡åä¸å¿«éååè¿ä»£æ¨¡åçç»å</li> 940<li>å§äºä¸ä¸ªè®¾è®¡ç®æ ï¼ä»¥å®¢æ·å®¡æ¥è¿åº¦ç»æã</li> 941</ul> 942<figure><figcaption>Spiral Model</figcaption></figure> 943<table> 944<thead> 945<tr> 946<th>ä¼ç¹</th> 947<th>缺ç¹</th> 948</tr> 949</thead> 950<tbody> 951<tr> 952<td>åæå¯ä»¥å¢å ææ´æ¹éå åè½</td> 953<td>ä¸¥æ ¼éµå¾ªèºææ¨¡åçå议以确ä¿å ¶é¡ºå©è¿è¡</td> 954</tr> 955<tr> 956<td>ç±äºååæå»ºæ¯æå°ç段è¿è¡çï¼å æ¤ææ¬ä¼°ç®åå¾å®¹æ</td> 957<td>æç»æåå¤çå¼åæå©äºé£é©ç®¡ç</td> 958</tr> 959<tr> 960<td>å¼åé度快ï¼ç³»ç»å°æ·»å åè½</td> 961<td>ç±äºæä¸é´é¶æ®µï¼ææ¡£æ´è¯¦ç»</td> 962</tr> 963<tr> 964<td>æ»æ¯æå®¢æ·åé¦ç空é´</td> 965<td>èºæè½¯ä»¶å¼åä¸éç¨äºå°å项ç®ï¼å¯è½ä¼è±è´¹å¾å¤</td> 966</tr> 967</tbody> 968</table> 969<h3>V Model</h3> 970<ul> 971<li>ç叿¨¡åçæ©å±</li> 972<li>éè¿æ è®°çå½å¨æçæ¯ä¸ªé¶æ®µä¸æµè¯æ´»å¨ä¹é´çå ³ç³»ï¼å¼ºè°éªè¯ä¸ç¡®è®¤</li> 973<li>䏿¦ä»£ç å®ç°å®æï¼æµè¯å°±å¼å§äºã</li> 974<li>ä»åå æµè¯å¼å§ï¼ç¶åéå±åä¸è¿è¡æµè¯ï¼ç´å°å®æéªæ¶æµè¯é¶æ®µã</li> 975</ul> 976<figure><figcaption>V Model</figcaption></figure> 977<table> 978<thead> 979<tr> 980<th>强度</th> 981<th>å¼±ç¹</th> 982</tr> 983</thead> 984<tbody> 985<tr> 986<td>ç±äºæ¨¡åçç®åæ§ï¼æäºç®¡ç</td> 987<td>åç叿¨¡å䏿 ·ï¼ç´å°çå½å¨æçåææäº§çå¯å·¥ä½ç软件</td> 988</tr> 989<tr> 990<td>å®é¼å±å¨ææé¶æ®µè¿è¡éªè¯åéªè¯</td> 991<td>对äºéæ±å¨ä¸çè³é«åº¦ååçé£é©ä¸ï¼å®æ¯ä¸éç¨ç</td> 992</tr> 993<tr> 994<td>æ¯ä¸ªé¶æ®µé½æå ·ä½çå¯äº¤ä»ææå审æ¥è¿ç¨</td> 995<td>æå»ºè®®ç§°ï¼å¯¹äºé¿æã夿åé¢å对象ç项ç®çæ¨¡åæ¥è¯´ï¼è¿ä¹æ¯ä¸ä¸ªç³ç³ç模å</td> 996</tr> 997<tr> 998<td>å®èµäºæµè¯ä¸å¼ååççéè¦æ§ï¼è䏿¯å°å ¶ä½ä¸ºä¸ä¸ªå¨æåé¶æ®µæèèçæ¬¡è¦äºé¡¹</td> 999<td></td> 1000</tr> 1001</tbody> 1002</table> 1003<h3>W Model</h3> 1004<ul> 1005<li>V Model çæ©å±</li> 1006<li>æµè¯ä¸æ¯å¨ä»£ç å®ç°ä¹åè¿è¡ã</li> 1007<li>æµè¯è¿ç¨ä¸å¼åè¿ç¨å¹³è¡è¿è¡ã</li> 1008<li>å¼å䏿µè¯ä¹é´çåä½ã</li> 1009<li>æµè¯ä¸ä» ä» æ¯æµè¯ç¨ä¾çæå»ºãæ§è¡åè¯ä¼°ã</li> 1010</ul> 1011<figure><figcaption>W Model</figcaption></figure> 1012<h3>ææ·æ¨¡å(Agile Model)</h3> 1013<p>ä¸ºäºæææµè¯ï¼</p> 1014<ul> 1015<li> 1016<p>å½å¼åè ä¸å®¢æ·å°±å³å°è¿è¡çè¿ä»£éæ±è¿è¡âååâæ¶ï¼æµè¯äººåå¿ é¡»æ¯è¿äºå¯¹è¯çå ¨é¢åä¸è ã</p> 1017</li> 1018<li> 1019<p>æµè¯äººååºç«å³å°å¯¹è¯ä¸è¾¾æä¸è´çè¦æ±è½¬å为æµè¯ç¨ä¾ã</p> 1020</li> 1021<li> 1022<p>å½éæ±åçåæ´æ¶ï¼æµè¯äººååºç«å³åä¸å ¶ä¸ï¼å ä¸ºå¤§å®¶é½æ¸ æ¥ç¸åºçæµè¯ç¨ä¾ä¹å¿ é¡»è¿è¡ä¿®æ¹ã</p> 1023</li> 1024<li> 1025<p>å¢é模åä»è½¯ä»¶ç³»ç»çé¨åç®åå®ç°å¼å§ãæ¯æ¬¡å¢éæ¶ï¼äº
1025§åé½ä¼éçå¢å¼ºåè½çæ·»å èè¿åï¼ç´å°æç»çæ¬ã</p> 1026</li> 1027<li> 1028<p>æµè¯æ¯å¢é模åçéè¦é¨åï¼å¹¶å¨æ¯æ¬¡è¿ä»£çæ«å°¾è¿è¡ãè¿æå³çæµè¯å¨å¼åè¿ç¨çæ©æå¼å§ï¼å¹¶ä¸æ»ä½çæµè¯éæ´å¤ã</p> 1029</li> 1030<li> 1031<p>大éçæµè¯æ¯å彿µè¯çå½¢å¼ï¼å¹¶ä¸å¯ä»¥å¤§éå¤ç¨æ©æå¢éçæµè¯ç¨ä¾åæµè¯æ°æ®ã</p> 1032</li> 1033</ul> 1034<h3>æéå¼å(Extreme Programming)</h3> 1035<ul> 1036<li>æéç¼ç¨ï¼XPï¼æ¯ææ·è½¯ä»¶å¼åå²å¦çä¸ä¸ªåéã</li> 1037<li>å®å¼ºè°ä»£ç 审æ¥ãæç»éæåèªå¨åæµè¯ï¼ä»¥åé常ççè¿ä»£å¨æã</li> 1038<li>å®å¾åäºè¿è¡ä¸ç设计ç»åï¼æéæï¼ï¼è䏿¯å¤§ååå§è®¾è®¡é¶æ®µï¼å°½å¯è½ä¿æå½åå®ç°ç®åã</li> 1039<li>å®å¾åäºå®æ¶æ²éï¼æå¥½æ¯é¢å¯¹é¢ï¼è䏿¯åææ¡£ï¼å¹¶ä¸è®¤ä¸ºå·¥ä½è½¯ä»¶æ¯è¿æ¥ç主è¦è¡¡éæ åã</li> 1040<li>è¿ç§æ¹æ³è¿å¼ºè°å¢éåä½ã管çè ã客æ·åå¼å人å齿¯è´åäºäº¤ä»é«è´¨é软件çå¢éçä¸é¨åã</li> 1041<li>ç¨åºåè´è´£æµè¯ä»ä»¬èªå·±çå·¥ä½ï¼æµè¯äººå䏿³¨äºå¸®å©å®¢æ·éæ©åç¼ååè½æ§æµè¯ï¼å¹¶å®æè¿è¡è¿äºæµè¯ã</li> 1042</ul> 1043<h4>ç¨æ·æ äºåæ äºå¡(User Stories and Story Card)</h4> 1044<ul> 1045<li>ç¨æ·æ äºæ¯ç¨æ¥å¸¸è¯è¨ç¼åçä¸ä¸ªæå¤ä¸ªå¥åï¼ææå°è½¯ä»¶ç³»ç»éè¦æ§è¡çä¸ä¸ªæ¹é¢ã</li> 1046<li>è¿äºé常被åå¨è¢«ç§°ä¸ºæ äºå¡ç纸å¡ä¸</li> 1047<li>æ äºå¡è¢«æåºä»¥åæ ç³»ç»çå¼å</li> 1048<li>è¿åºè¯¥æä¹åå¢ï¼é¦å ä¼å èèæå°é¾çé¨åæç»ä»¶ï¼æè æç §ç¨æ·æä½ç顺åºï¼</li> 1049</ul> 1050<figure><figcaption>Extreme Programming</figcaption></figure> 1051<h2>ç°å®ä¸ç软件æµè¯(The Realities of Software Testing)</h2> 1052<ol> 1053<li> 1054<p>å®å ¨æµè¯ä¸ä¸ªç¨åºæ¯ä¸å¯è½ç</p> 1055</li> 1056<li> 1057<p>软件æµè¯æ¯ä¸ç§åºäºé£é©çç»ä¹ </p> 1058</li> 1059<li> 1060<p>æµè¯ä¸è½è¯æä¸åå¨ç¼ºé·</p> 1061</li> 1062<li> 1063<p>ä½ åç°çé误è¶å¤ï¼åå¨çé误就è¶å¤</p> 1064</li> 1065<li> 1066<p>åè¯æè®º</p> 1067</li> 1068<li> 1069<p>ä½ åç°çææé误并éé½ä¼è¢«ä¿®å¤</p> 1070</li> 1071<li> 1072<p>使¶è®¤å®ä¸ºä¸ä¸ªé误æ¯å°é¾ç</p> 1073</li> 1074<li> 1075<p>产åè§æ ¼æ°¸è¿ä¸æ¯æç»ç</p> 1076</li> 1077<li> 1078<p>软件æµè¯äººåå¹¶é项ç®å¢é䏿忬¢è¿çæå</p> 1079</li> 1080<li> 1081<p>软件æµè¯æ¯ä¸ç§åå°çºªå¾çº¦æçææ¯æ§èä¸</p> 1082</li> 1083</ol> 1084<h2>Validation & Verification</h2> 1085<ul> 1086<li>Verification: How do we ensure software satisfies its requirements</li> 1087<li>Validation: How to we ensure the software requirements satisfy its intended use?</li> 1088<li>æ¢è¨ä¹ï¼å°±æ¯<code>building a program correctly</code>å<code>Building a correct program</code></li> 1089</ul> 1090<figure><figcaption>Validation & Verification</figcaption></figure> 1091<h2>Quality Control&Quality Assurance</h2> 1092<ul> 1093<li>Quality Controlï¼éªè¯äº§åçæ£ç¡®æ§ï¼å½åç°ä¸è®¾è®¡ä¸ä¸è´çæ¶åè¿è¡çº æ£ã</li> 1094<li>Quality Assuranceï¼å 彿¯ææ§è¡å ¨é¢è´¨é管ççè§è²</li> 1095</ul> 1096<h2>Tester &
1096 QA | Software Testing & SQA</h2> 1097<ul> 1098<li> 1099<p>软件æµè¯åï¼QCï¼ï¼æ£æµè½¯ä»¶äº§åï¼æ¾åºç¼ºé·ï¼è¯ä»·è½¯ä»¶è´¨é</p> 1100</li> 1101<li> 1102<p>è´¨éä¿è¯äººåï¼QAï¼ï¼æ£æµè½¯ä»¶è¿ç¨ï¼å建åå 强ä¿è¿è½¯ä»¶å¼å并鲿¢è½¯ä»¶ç¼ºé·çæ åãæ¹æ³åè¿ç¨ã</p> 1103</li> 1104<li> 1105<p>SQA æ¯ç®¡çå·¥ä½ã审æ¥å¯¹è±¡æ¯æµç¨ã强è°ä»¥é¢é²ä¸ºä¸»</p> 1106</li> 1107<li> 1108<p>æµè¯(Testing)æ¯ææ¯å·¥ä½ãæµè¯å¯¹è±¡æ¯äº§åãä¸»è¦æ¯äºåæ£æ¥</p> 1109</li> 1110</ul> 1111</div>`,readingTime:{minutes:7.44,words:2232},title:"第1ç« è½¯ä»¶æµè¯çåºæ¬æ¦å¿µ",icon:"page",order:1,type:"article"}}],["/notes/Software-Testing-and-Maintenance/Chapter2-Software-Testing-Technology.html",{loader:()=>f(()=>import("./Chapter2-Software-Testing-Technology.html-BiCWr4XU.js"),__vite__mapDeps([64,1])),meta:{author:"chiichen",date:171504e7,category:["课ç¨ç¬è®°"],tag:["软件æµè¯ä¸ç»´æ¤"],sticky:!1,isOriginal:!0,excerpt:`<h2>éæéªè¯(Static Verification)ä¸å¨æéªè¯(Dynamic Verification)</h2> 1112<ul> 1113<li> 1114<p>éæéªè¯æ¯æå¨ä¸è¿è¡ç¨åºçæ åµä¸å¯¹ç¨åºè¿è¡éªè¯</p> 1115</li> 1116<li> 1117<p>卿éªè¯æ¯æå婿µè¯ç¨ä¾çæ¹å¼ï¼éè¿è¿è¡æåæ¥å¯¹ç¨åºè¿è¡éªè¯ï¼å°è¾å ¥å¼(input value)è¾å ¥ç¨åºä¸ï¼å°çå®è¾åº(actual value)ä¸é¢æè¾åº(expected value)åæ¯å¯¹ï¼æ¥å¤æç¨åºçæ£ç¡®æ§<br> 1118</p> 1119</li> 1120<li> 1121<p>çæ³ç³»ç»(ideal system)ç±è§è表示ï¼èçå®ç³»ç»æ¯å®é 代ç ã</p> 1122</li> 1123<li> 1124<p>æµè¯æåå¹¶ä¸éè¦éè¿ç»æã å¤±è´¥çæµè¯ä¹ä¼ä¼ æä¸äºå ³äºç³»ç»çæ°ç¥è¯</p> 1125</li> 1126</ul>`,readingTime:{minutes:28.94,words:8683},title:"第2ç« è½¯ä»¶æµè¯ææ¯",icon:"page",order:1,type:"article"}}],["/notes/Software-Testing-and-Maintenance/Chapter3-Software-Testing-Process.html",{loader:()=>f(()=>import("./Chapter3-Software-Testing-Process.html-D1VP-ocs.js"),__vite__mapDeps([65,1])),meta:{author:"chiichen",date:17153856e5,category:["课ç¨ç¬è®°"],tag:["软件æµè¯ä¸ç»´æ¤"],sticky:!1,isOriginal:!0,excerpt:`<figure><figcaption>Brief comparison of software testing phases</figcaption></figure> 1127<h2>åå æµè¯(Unit Test)</h2> 1128<ul> 1129<li>âåå âï¼æç¡®çåè½ãè§æ ¼å®ä¹ï¼ä¸å ¶ä»é¨åæç¡®çæ¥å£å®ä¹ã 1130<ul> 1131<li>ç»æåç¨åºè®¾è®¡ï¼å½æ°æåè¿ç¨ï¼</li> 1132<li>é¢å对象ï¼ç±»æç±»çæ¹æ³ï¼</li> 1133<li>ä¸ä¸ªèåãå±å¹æ¾ç¤ºçé¢æå¯¹è¯æ¡çã</li> 1134</ul> 1135</li> 1136<li>åå æµè¯ä¹ç§°æ¨¡åæµè¯ï¼è¿æ¯é对æå°ç坿µè¯è½¯ä»¶å ç´ -模åè¿è¡æµè¯å·¥ä½ãåå æµè¯ç®çå¨äºåç°å模åå é¨å¯è½åå¨çåç§å·®éã</li> 1137<li>å¨åå æµè¯æ¶ï¼å¦ææ¨¡å䏿¯ç¬ç«çç¨åºï¼éè¦è¾ 婿µè¯æ¨¡åãæä¸¤ç§è¾ 婿¨¡åï¼ 1138<ul> 1139<li>驱卿¨¡åï¼Driverï¼ï¼ææµæ¨¡åç主ç¨åºï¼å®æ¥æ¶æµè¯æ°æ®ï¼æè¿äºæ°æ®ä¼ éç»ææµè¯æ¨¡åï¼æååè¾åºå®æµç»æãå½è¢«æµè¯æ¨¡åè½å®æä¸å®åè½æ¶ï¼ä¹å¯ä»¥ä¸è¦é©±å¨æ¨¡åã</li> 1140<li>桩模åï¼Stubï¼ï¼ç¨æ¥ä»£æ¿ææµæ¨¡åè°ç¨ç忍¡åã<br> 1141</li> 1142</ul> 1143</li> 1144</ul>`,readingTime:{minutes:13.31,words:3994},title:"第3ç« è½¯ä»¶æµè¯è¿ç¨",icon:"page",order:1,type:"article"}}],["/notes/Software-Testing-and-Maintenance/Chapter4-Software-Testing-Management.html",{loader:()=>f(()=>import("./Chapter4-Software-Testing-Management.html-kuhZXlEV.js"),__vite__mapDeps([66,1])),meta:{author:"chiichen",date:1715472e6,category:["课ç¨ç¬è®°"],tag:["软件æµè¯ä¸ç»´æ¤"],sticky:!1,isOriginal:!0,excerpt:`<h2>软件æµè¯ç¯å¢(Software Testing Environment)</h2> 1145<ul> 1146<li>软件æµè¯ç¯å¢å æ¬<code>设计ç¯å¢</code>ï¼<code>宿½ç¯å¢</code>å<code>管çç¯å¢</code>ä¸é¨åï¼æ¯æä¸ºäºå®æè½¯ä»¶æµè¯å·¥ä½æå¿ éç硬件ã软件ã设å¤ãæ°æ®çæ»ç§°ã</li> 1147<li>软件æµè¯ç¯å¢æ¯è½¯ä»¶æµè¯å®æ½çä¸ä¸ªéè¦é¶æ®µï¼è½¯ä»¶æµè¯ç¯å¢éåä¸å¦ä¼ä¸¥é影念è¯ç»æçç宿§åæ£ç¡®æ§ãæµè¯ç¯å¢æ¯è½¯ä»¶æµè¯çåºç¡</li> 1148</ul> 1149<h3>软件æµè¯ç¯å¢çè¦ç´ (Elements of software testing environment)</h3> 1150<ul> 1151<li>ä¸è¬æ¥è¯´ï¼é ç½®æµè¯ç¯å¢åºè¯¥æ»¡è¶³äºä¸ªåºæ¬è¦ç´ æ¯ï¼<code>硬件</code>ã<code>软件</code>ã<code>ç½ç»ç¯å¢</code>ã<code>æ°æ®åå¤</code>ã<code>æµè¯å·¥å ·</code>ãå ¶ä¸ç¡¬ä»¶ãè½¯ä»¶æ¯æµè¯ç¯å¢ä¸çæåºæ¬ç两个è¦ç´ ï¼å¹¶æ´¾çåºåä¸è ã</li> 1152</ul>`,readingTime:{minutes:14.04,words:4212},title:"第4ç« è½¯ä»¶æµè¯ç®¡ç",icon:"page",order:1,type:"article"}}],["/notes/Software-Testing-and-Maintenance/Chapter5-Software-Maintenance.html",{loader:()=>f(()=>import("./Chapter5-Software-Maintenance.html-Dz7VYXMI.js"),__vite__mapDeps([67,1])),meta:{author:"chiichen",date:1715472e6,category:["课ç¨ç¬è®°"],tag:["软件æµè¯ä¸ç»´æ¤"],sticky:!1,isOriginal:!0,excerpt:`<h2>
1152软件维æ¤çå®ä¹(Definition of Software Maintenance)</h2> 1153<ul> 1154<li>è½¯ä»¶ç»´æ¤æ¯æè½¯ä»¶ç³»ç»äº¤ä»ä½¿ç¨ä»¥åï¼ä¸ºäºæ¹æ£éè¯¯ææ»¡è¶³æ°çéè¦èä¿®æ¹è½¯ä»¶çè¿ç¨ã</li> 1155<li>ä¸è¬æ¥è¯´ï¼è¦æ±è¿è¡ç»´æ¤çåå å¤§è´æä»¥ä¸å ç§ï¼ 1156<ol> 1157<li>æ¹æ£ç¨åºä¸çé误å缺é·ã</li> 1158<li>æ¹è¿è®¾è®¡ä»¥éåºæ°ç软ã硬件ç¯å¢ã</li> 1159<li>å¢å æ°çåºç¨èå´ã</li> 1160</ol> 1161</li> 1162</ul> 1163<h2>软件维æ¤çç±»å(Types of Software maintenance)</h2> 1164<ul> 1165<li>æ ¹æ®è½¯ä»¶ç»´æ¤çä¸ååå ï¼è½¯ä»¶ç»´æ¤å¯ä»¥åæä»¥ä¸ç±»åï¼ 1166<ol> 1167<li>æ¹æ£æ§ç»´æ¤</li> 1168<li>éåºæ§ç»´æ¤</li> 1169<li>å®åæ§ç»´æ¤</li> 1170<li>é¢é²æ§ç»´æ¤</li> 1171</ol> 1172</li> 1173</ul>`,readingTime:{minutes:15.42,words:4625},title:"第5ç« è½¯ä»¶æµè¯ç»´æ¤",icon:"page",order:1,type:"article"}}],["/notes/Software-Testing-and-Maintenance/",{loader:()=>f(()=>import("./index.html-DKJGOq3o.js"),__vite__mapDeps([68,1])),meta:{date:1715001357e3,readingTime:{minutes:.04,words:12},title:"软件æµè¯ä¸ç»´æ¤",icon:"lightbulb",type:"article"}}],["/notes/UML/Review-Quick-Note.html",{loader:()=>f(()=>import("./Review-Quick-Note.html-D09ctbIQ.js"),__vite__mapDeps([69,1])),meta:{author:"chiichen",date:17044992e5,category:["课ç¨ç¬è®°"],tag:["UML"],sticky:!1,isOriginal:!0,excerpt:`<h2>第ä¸ç« </h2> 1174<ul> 1175<li>åæ-è®¾è®¡ï¼æåºé®é¢-è§£å³é®é¢</li> 1176<li>ç¨ä¾(use case)ï¼äººä»¬ä½¿ç¨åºç¨çæ èæè åºæ¯</li> 1177<li>é¢å模å(domain model)ï¼ä¸æ¯å¯¹è½¯ä»¶å¯¹è±¡çæè¿°ï¼æ¯å¯¹çå®ä¸çä¸çæ¦å¿µçä¸ç§å¯è§åï¼ä¹è¢«ç§°ä¸ºæ¦å¿µå¯¹è±¡æ¨¡åã</li> 1178<li>顺åºå¾(交äºå¾çä¸ç§)ï¼ç¨æ¥æè¿°è½¯ä»¶å¯¹è±¡ä¹é´çä¿¡æ¯æµ</li> 1179<li>设计类å¾(design class deagram)ï¼è¡¨è¿°è½¯ä»¶ç±»ï¼ç¼©å°ä»£ç åé¢å模åä¹é´çå·®è·ï¼è¢«ç§°ä¸ºä½è¡¨ç¤ºå·®è·(lower representational gap)</li> 1180<li>UML çä¸ç§åºç¨æ¹æ³ï¼èå¾ãèå¾(éåå·¥ç¨ï¼ä»£ç å¯è§åï¼ä¾¿äºçè§£ï¼ååå·¥ç¨ï¼æå¯¼ä»£ç çæ)ãç¼ç¨è¯è¨</li> 1181<li>ææ·å»ºæ¨¡(agile modeling)强è°äºæ UML ä½ä¸ºèå¾çæ¹å¼</li> 1182<li>UML çä¸ç§éè§å¾ï¼æ¦å¿µéè§å¾(æè¿°ç°å®ä¸çä¸çäºå¡)ï¼è§æ ¼è¯´æè½¯ä»¶éè§å¾(æè¿°è½¯ä»¶çæ¥å£çä¿¡æ¯ï¼ä½æ¯ä¸çº¦å®ç¹å®å®ç°)ï¼å®ç°éè§å¾(æè¿°å¨æå®ææ¯ä¾å¦ java ä¸çå®ç°)</li> 1183<li>ç¸å¯¹åºçï¼å¨è¿ä¸ç§å¾ä¸ç UML 类被åå«ç§°ä¸ºæ¦å¿µç±»(conceptual class)ã软件类åå®ç°ç±»</li> 1184</ul>`,readingTime:{minutes:26.8,words:8041},title:"UMLå¤ä¹ ç®è®°",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter0%E7%BB%AA%E8%AE%BA.html",{loader:()=>f(()=>import("./Chapter0绪论.html-Cf8iocsm.js"),__vite__mapDeps([70,1])),meta:{author:"chiichen",date:17023392e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ææ</h2> 1185<p>è½¯ä»¶ææ¶å®è·µ(第 3 ç),L.Bass,P.Clements,andR.Kazman,æ¸ å大å¦åºç社(2013)</p> 1186<h2>主è¦å 容</h2> 1187`,readingTime:{minutes:.29,words:87},title:"Chapter0 绪论",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter10%E5%8F%AF%E6%B5%8B%E8%AF%95%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter10坿µè¯æ§.html-BR-MHCjD.js"),__vite__mapDeps([71,1])),meta:{author:"chiichen",date:17026848e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>坿µè¯æ§æ¯ä»ä¹ï¼</h2> 1188<ul> 1189<li>软件ç坿µè¯æ§æ¯æéè¿ï¼é常æ¯åºäºæ§è¡çï¼æµè¯æ¥å±ç¤ºå ¶é误ç龿ç¨åº¦ã</li> 1190<li>坿µè¯æ§æ¯æç³»ç»å¨ä¸ä¸æ¬¡æµè¯æ§è¡ä¸å¤±è´¥çæ¦çã</li> 1191<li>å¦æç³»ç»åå¨éè¯¯ï¼æä»¬å¸æå®è½å¨æµè¯è¿ç¨ä¸å°½å¿«å¤±è´¥ã</li> 1192<li>è¦ä½¿ä¸ä¸ªç³»ç»å ·æå¯æµè¯æ§ï¼å¿ é¡»è½å¤æ§å¶æ¯ä¸ªç»ä»¶çè¾å ¥ï¼å¹¶å¯è½æä½å ¶å é¨ç¶æï¼ï¼ç¶åè§å¯å ¶è¾åºï¼ä»¥åå¯è½çå é¨ç¶æï¼ã</li> 1193</ul> 1194<h2>坿µè¯æ§çç¥çç®æ </h2> 1195<ul> 1196<li>坿µè¯æ§çç¥çç®æ æ¯å¨è½¯ä»¶å¼å宿çä¸ä¸ªå¢éä¸å®ç°æ´å®¹æçæµè¯ã</li> 1197<li>坿µè¯æ§çç¥å¯ä»¥å为两个类å«ï¼ 1198<ul> 1199<li>第ä¸ä¸ªç±»å«æ¶ååç³»ç»æ·»å 坿§æ§åå¯è§å¯æ§ã</li> 1200<li>第äºä¸ªç±»å«æ¶åéå¶ç³»ç»è®¾è®¡ä¸ç夿æ§ã</li> 1201</ul> 1202</li> 1203</ul>`,readingTime:{minutes:3.27,words:981},title:"Chapter10 坿µè¯æ§",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter11%E6%98%93%E7%94%A8%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter11æç¨æ§.html-JQEMGUfq.js"),__vite__mapDeps([72,1])),meta:{author:"chiichen",date:17026848e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯æç¨æ§ï¼</h2> 1204<ul> 1205<li>æç¨æ§å ³æ³¨ç¨æ·å®ææéä»»å¡ç龿ç¨åº¦ä»¥åç³»ç»æä¾çç¨æ·æ¯æã</li> 1206<li>æç¨æ§æ¯æ¹åç³»ç»è´¨éçæä¾¿å®åæç®åçæ¹å¼ä¹ä¸ã</li> 1207<li>æç¨æ§å æ¬ä»¥ä¸å 个æ¹é¢ï¼ 1208<ul> 1209<li>é«æä½¿ç¨ç³»ç»ã</li> 1210<li>å¦ä¹ ç³»ç»çåè½ã</li> 1211<li>å°½éåå°é误çå½±åã</li> 1212<li>
1212使系ç»éåºç¨æ·éæ±ã</li> 1213<li>æé«ç¨æ·çä¿¡å¿å满æåº¦ã</li> 1214</ul> 1215</li> 1216</ul> 1217<h2>æç¨æ§çç¥</h2> 1218<figure><figcaption>Usability tactics</figcaption></figure>`,readingTime:{minutes:1.72,words:516},title:"Chapter11 æç¨æ§",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter12%E5%85%B6%E5%AE%83%E8%B4%A8%E9%87%8F%E5%B1%9E%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter12å ¶å®è´¨é屿§.html-61VrjwPO.js"),__vite__mapDeps([73,1])),meta:{author:"chiichen",date:17026848e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>å¯ç§»æ¤æ§(Portability)</h2> 1219<ul> 1220<li>å¯ç§»æ¤æ§ä¹æ¯ä¸ç§ç¹æ®å½¢å¼çå¯ä¿®æ¹æ§ã</li> 1221<li>å¯ç§»æ¤æ§æçæ¯å°ä¸ºä¸ä¸ªå¹³å°æå»ºçè½¯ä»¶æ´æ¹ä¸ºå¨ä¸åå¹³å°ä¸è¿è¡ç便æ·ç¨åº¦ã</li> 1222</ul> 1223<h2>å¼åå¯ååæ§(Development Distributability)</h2> 1224<ul> 1225<li>å¼åå¯ååæ§æ¯æè®¾è®¡è½¯ä»¶ä»¥æ¯æåå¸å¼è½¯ä»¶å¼åçè´¨éã</li> 1226<li>ç³»ç»æ¯ä½¿ç¨å ¨çåå¸çå¢éå¼åçã</li> 1227<li>ç®çæ¯æå¤§é度åå°å¢éä¹é´çåè°ã</li> 1228</ul> 1229<h2>坿©å±æ§(Scalability)</h2> 1230<ul> 1231<li>æ°´å¹³å¯æ©å±æ§ï¼æ©å±å¤é¨ï¼æåé»è¾åå æ·»å æ´å¤èµæºï¼ä¾å¦åé群添å å¦ä¸ä¸ªæå¡å¨ã</li> 1232<li>åç´å¯æ©å±æ§ï¼æ©å±å é¨ï¼æåç©çåå æ·»å æ´å¤èµæºï¼ä¾å¦åè®¡ç®æºæ·»å æ´å¤å åã</li> 1233<li>å¯äº§çå¯è¡¡éçæ¹è¿ï¼èæ é䏿æä½ã</li> 1234</ul>`,readingTime:{minutes:2.04,words:613},title:"Chapter12 å ¶å®è´¨é屿§",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter13%E6%A8%A1%E5%BC%8F%E5%92%8C%E7%AD%96%E7%95%A5.html",{loader:()=>f(()=>import("./Chapter13模å¼åçç¥.html-D72jS6dv.js"),__vite__mapDeps([74,75,1])),meta:{author:"chiichen",date:17026848e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯æ¨¡å¼(Pattern)ï¼</h2> 1235<ul> 1236<li><code>æ¶ææ¨¡å¼(An architecture pattern)</code>æ¯ä¸ç»å¨å®è·µä¸åå¤åºç°ç设计å³ççéåã</li> 1237<li>å®å ·æå·²ç¥çå¯éç¨æ§å±æ§ï¼å¹¶æè¿°äºä¸ç±»æ¶æã</li> 1238</ul> 1239<h2>æ¶ææ¨¡å¼(An architecture pattern)</h2> 1240<ul> 1241<li>æ¨¡åæ¨¡å¼ 1242<ul> 1243<li>å屿¨¡å¼</li> 1244</ul> 1245</li> 1246<li>ç»ä»¶ä¸è¿æ¥å¨æ¨¡å¼ 1247<ul> 1248<li>ä»£çæ¨¡å¼</li> 1249<li>模å-è§å¾-æ§å¶å¨æ¨¡å¼</li> 1250<li>管é-è¿æ»¤å¨æ¨¡å¼</li> 1251<li>客æ·ç«¯-æå¡å¨æ¨¡å¼</li> 1252<li>å¯¹çæ¨¡å¼</li> 1253<li>é¢åæå¡çæ¶æï¼SOAï¼æ¨¡å¼</li> 1254<li>åå¸-è®¢é æ¨¡å¼</li> 1255<li>å ±äº«æ°æ®æ¨¡å¼</li> 1256</ul> 1257</li> 1258<li>åé æ¨¡å¼ 1259<ul> 1260<li>Map-Reduce 模å¼</li> 1261<li>å¤å±æ¨¡å¼</li> 1262</ul> 1263</li> 1264</ul>`,readingTime:{minutes:14.67,words:4400},title:"Chapter13 模å¼åçç¥",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter14%E8%B4%A8%E9%87%8F%E5%B1%9E%E6%80%A7%E5%BB%BA%E6%A8%A1%E4%B8%8E%E5%88%86%E6%9E%90.html",{loader:()=>f(()=>import("./Chapter14è´¨é屿§å»ºæ¨¡ä¸åæ.html-DWfFXtub.js"),__vite__mapDeps([76,1])),meta:{author:"chiichen",date:17026848e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>æä»¬å¦ä½äºè§£è½¯ä»¶çè´¨é屿§ï¼</h2> 1265<ul> 1266<li>å®éªåæµé</li> 1267<li>åææ¨¡å</li> 1268<li>模æ</li> 1269</ul> 1270<h2>å»ºæ¨¡æ¶æä»¥æ¯æè´¨é屿§åæ</h2> 1271<ul> 1272<li>ä¸äºè´¨é屿§ï¼å°¤å ¶æ¯æ§è½åå¯ç¨æ§ï¼å·²ç»æäºè¢«å¹¿æ³çè§£åç»è¿æ¶é´éªè¯çåææ¨¡åï¼å¯ä»¥ç¨äºè¾ å©åæã</li> 1273<li>éè¿åææ¨¡åï¼æä»¬æçæ¯æ¯æå®éåæç模åã</li> 1274</ul> 1275<h3>æ§è½å»ºæ¨¡</h3> 1276<figure><figcaption>Performance Models</figcaption></figure> 1277<ul> 1278<li>åæ°ï¼äºä»¶çå°è¾¾éçãéæ©çæéè§åãéæ©çè°åº¦ç®æ³ãç½ç»ææãç½ç»å¸¦å®½ãéæ©çè·¯ç±ç®æ³ãäºä»¶çæå¡æ¶é´</li> 1279</ul>`,readingTime:{minutes:2.44,words:731},title:"Chapter14 è´¨é屿§å»ºæ¨¡ä¸åæ",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter15%E6%95%8F%E6%8D%B7%E9%A1%B9%E7%9B%AE%E4%B8%AD%E7%9A%84%E6%9E%B6%E6%9E%84.html",{loader:()=>f(()=>import("./Chapter15ææ·é¡¹ç®ä¸çæ¶æ.html-Bkjoy4Ok.js"),__vite__mapDeps([77,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ææ·å®£è¨</h2> 1280<ul> 1281<li>Individuals and interactions over processes and tools 人æºäº¤äºéäºè¿ç¨åå·¥å ·</li> 1282<li>Working software over comprehensive documentation å¯ä»¥å·¥ä½ç软件éäºæ±å ¨è´£å¤çææ¡£</li> 1283<li>Customer collaboration over contract negotiation 客æ·åä½éäºååè°å¤</li> 1284<li>Responding to change over following a plan éæ¶åºå¯¹ååéäºå¾ªè§è¹ç©</li> 1285</ul>`,readingTime:{minutes:3.73,words:1118},title:"Chapter15 ææ·é¡¹ç®ä¸çæ¶æ",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter16%E6%9E%B6%E6%9E%84%E4%B8%8E%E9%9C%80%E6%B1%82.html",{loader:()=>f(()=>import("./Chapter16æ¶æä¸éæ±.html-Bc2EUejs.js"),__vite__mapDeps([78,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>å ·ææ¶æéè¦æ§çéæ±(Architecturally Significant Requirement ,ASR)</h2> 1286<ul> 1287<li>并鿿鿱齿¯å¹³ççã</li> 1288<li>å ·ææ¶æéè¦æ§çéæ±ï¼ASRï¼æ¯å¯¹æ¶æäº§çæ·±è¿å½±åçéæ±ã
1288</li> 1289<li>æä»¬å¦ä½æ¾å°è¿äºéæ±å¢ï¼</li> 1290</ul> 1291<h2>æææ¶æéè¦æ§éæ±çæ¹æ³</h2> 1292<ul> 1293<li>ä»éæ±ææ¡£ä¸è·å</li> 1294<li>éè¿ä¸å©çç¸å ³è è¿è¡é¢è°</li> 1295<li>éè¿çè§£ä¸å¡ç®æ </li> 1296<li>å¨æç¨æ ä¸(In Utility Tree)</li> 1297</ul> 1298<h3>å ·ææ¶æéè¦æ§çéæ±åéæ±ææ¡£</h3>`,readingTime:{minutes:5.62,words:1686},title:"Chapter16 æ¶æä¸éæ±",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter17%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84.html",{loader:()=>f(()=>import("./Chapter17è®¾è®¡æ¶æ.html-DdaZGzkn.js"),__vite__mapDeps([79,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>设计çç¥(Design Strategy)</h2> 1299<ul> 1300<li>åè§£(Decomposition)</li> 1301<li>é¢åæ¶æéè¦æ§éæ±ç设计(Designing to Architecturally Significant Requirements)</li> 1302<li>çæåæµè¯(Generate and Test)</li> 1303</ul> 1304<h2>åè§£(Decomposition)</h2> 1305<ul> 1306<li>æ¶æå³å®äºè´¨é屿§</li> 1307<li>éè¦çè´¨é屿§æ¯æ´ä¸ªç³»ç»çç¹å¾ã</li> 1308<li>è®¾è®¡ä»æ´ä¸ªç³»ç»å¼å§ 1309<ul> 1310<li>æ´ä¸ªç³»ç»è¢«å解为å个é¨å</li> 1311<li>æ¯ä¸ªé¨åå¯è½ç»§æ¿å ¨é¨æé¨åè´¨é屿§éæ±</li> 1312</ul> 1313</li> 1314</ul>`,readingTime:{minutes:5.13,words:1540},title:"Chapter17 è®¾è®¡æ¶æ",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter19%E6%9E%B6%E6%9E%84%E5%AE%9E%E7%8E%B0%E4%B8%8E%E6%B5%8B%E8%AF%95.html",{loader:()=>f(()=>import("./Chapter19æ¶æå®ç°ä¸æµè¯.html-C2d-mrD8.js"),__vite__mapDeps([80,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ¶æä¸å®ç°</h2> 1315<ul> 1316<li>ä¿æä»£ç åæ¶æä¸è´çææ¯ï¼ 1317<ul> 1318<li>å¨ä»£ç ä¸åµå ¥è®¾è®¡(Embedding the Design in the Code)</li> 1319<li>æ¡æ¶</li> 1320<li>ä»£ç æ¨¡æ¿</li> 1321</ul> 1322</li> 1323</ul> 1324<h3>å¨ä»£ç ä¸åµå ¥è®¾è®¡(Embedding the Design in the Code)</h3> 1325<ul> 1326<li>æ¶æä½ä¸ºå®ç°çèå¾ãè¿æå³çï¼ 1327<ul> 1328<li>å®ç°è ç¥éä»ä»¬æ£å¨å®ç°çæ¶æç»æãä¾å¦ï¼å±æ¬¡ç»æãåå¸-订é ãMVCã代ççã</li> 1329<li>ä»ä»¬å¯ä»¥å°æ¶æç»æä½ä¸ºæ³¨éè®°å½å¨ä»£ç ä¸ãè¿æ ·ï¼ä»»ä½æ¥æä»£ç ç人é½ä¼äºè§£ä¸äºçº¦ææ¡ä»¶ã</li> 1330<li>ç¶åï¼å·¥å ·å¯ä»¥èªå¨å ³è代ç åæ¶æã</li> 1331</ul> 1332</li> 1333</ul>`,readingTime:{minutes:3.74,words:1123},title:"Chapter19 æ¶æå®ç°ä¸æµè¯",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter1%E4%BB%80%E4%B9%88%E6%98%AF%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84.html",{loader:()=>f(()=>import("./Chapter1ä»ä¹æ¯è½¯ä»¶æ¶æ.html-DM5B1e-c.js"),__vite__mapDeps([81,1])),meta:{author:"chiichen",date:17024256e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯è½¯ä»¶æ¶æ</h2> 1334<p>ç³»ç»çè½¯ä»¶æ¶ææ¯ç¨äºæ¨çç³»ç»çä¸ç»ç»æï¼å æ¬è½¯ä»¶å ç´ ãå®ä»¬ä¹é´çå ³ç³»ä»¥åå®ä»¬ç屿§ã</p> 1335<div class="hint-container info"> 1336<p class="hint-container-title">ä»ä¹æ¯æ¨ç</p> 1337<p>å¨è¿éï¼"æ¨ç"æçæ¯éè¿å¯¹ç³»ç»çç»æãå ç´ å屿§è¿è¡åæåæ¨å¯¼ï¼ä»èå¾åºå ³äºç³»ç»è¡ä¸ºãæ§è½ãå¯é æ§ä»¥åå ¶ä»æ¹é¢çåçæ¨æå夿ãéè¿æ¨çï¼æ¶æå¸åå©çç¸å ³è (Stakeholders)å¯ä»¥ç解系ç»çç¹æ§ãåè½å约æï¼å¹¶ååºç¸åºçå³çï¼å¦ä¼åç³»ç»è®¾è®¡ãæ¹è¿ç³»ç»æ§è½ã颿µç³»ç»è¡ä¸ºçãæ¨çå¯ä»¥åºäºå·²æçç¥è¯ãç»éªãè§å忍¡åï¼å¹¶ç»å对系ç»éæ±åä¸ä¸æççè§£è¿è¡æ¨æåæ¨æµãå æ¤ï¼æ¨çå¨è½¯ä»¶æ¶æä¸æ¯ä¸ç§éè¦çæç»´ååææ¹å¼ï¼ç¨äºè¯ä¼°åå³çç³»ç»ç设计åå®ç°ã</p> 1338</div>`,readingTime:{minutes:12.24,words:3671},title:"Chapter1 ä»ä¹æ¯è½¯ä»¶æ¶æ",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter2%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84%E9%87%8D%E8%A6%81.html",{loader:()=>f(()=>import("./Chapter2为ä»ä¹è½¯ä»¶æ¶æéè¦.html-CXxPrrsY.js"),__vite__mapDeps([82,1])),meta:{author:"chiichen",date:17024256e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>æå¶æä¿è¿ç³»ç»çè´¨é屿§</h2> 1339<ul> 1340<li>ç³»ç»è½å¦å±ç°å ¶æææï¼æè¦æ±çï¼è´¨é屿§ï¼å¨å¾å¤§ç¨åº¦ä¸åå³äºå ¶æ¶æã 1341<ul> 1342<li>æ§è½</li> 1343<li>å¯ä¿®æ¹æ§</li> 1344<li>å®å ¨æ§</li> 1345<li>坿©å±æ§</li> 1346<li>å¯éç¨æ§</li> 1347</ul> 1348</li> 1349</ul> 1350<h2>æ¨çå管çåæ´</h2> 1351<ul> 1352<li>
1352å ¸å软件系ç»çæ»ææ¬ä¸ï¼å¤§çº¦ 80ï¼ åçå¨åå§é¨ç½²ä¹åï¼ 1353<ul> 1354<li>éåºæ°åè½</li> 1355<li>éåºæ°ç¯å¢</li> 1356<li>ä¿®å¤é误ççã</li> 1357</ul> 1358</li> 1359<li>æ¯ä¸ªæ¶æå°å¯è½çåæ´åå为ä¸ä¸ªç±»å«ï¼ 1360<ul> 1361<li>æ¬å°åæ´å¯ä»¥éè¿ä¿®æ¹å个å ç´ æ¥å®æã</li> 1362<li>鿬å°åæ´éè¦å¯¹å¤ä¸ªå ç´ è¿è¡ä¿®æ¹ï¼ä½ä¿æåºå±æ¶ææ¹æ³ä¸åã</li> 1363<li>æ¶æåæ´ä¼å½±åå ç´ å½¼æ¤äº¤äºçåºæ¬æ¹å¼ï¼å¹¶ä¸å°éè¦è¿è¡æ´å¤§èå´çæ´æ¹ã</li> 1364</ul> 1365</li> 1366<li>æ¾ç¶ï¼æ¬å°åæ´æ¯æçæ³çã</li> 1367<li>ä¸ä¸ªå¥½çæ¶ææ¯ææå¸¸è§çåæ´æ¯æ¬å°åæ´ï¼å æ¤æ´å®¹æè¿è¡ã</li> 1368</ul>`,readingTime:{minutes:3.09,words:927},title:"Chapter2 为ä»ä¹è½¯ä»¶æ¶æéè¦",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter4%E7%90%86%E8%A7%A3%E8%B4%A8%E9%87%8F%E5%B1%9E%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter4ç解质é屿§.html-CWvS2nIB.js"),__vite__mapDeps([83,1])),meta:{author:"chiichen",date:17024256e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ¶æä¸éæ±</h2> 1369<p>ç³»ç»éæ±å¯ä»¥å为以ä¸å ç±»ï¼</p> 1370<ul> 1371<li>åè½éæ±(Functional Requirements)ï¼è¯´æç³»ç»å¿ 须宿çåè½ãè¿è¡æ¶è¡ä¸ºæå¯¹è¿è¡æ¶åºæ¿çååºã</li> 1372<li>è´¨é屿§éæ±(Quality Attribute Requirements)ï¼å¯¹åè½éæ±è¿è¡éå®ï¼ä¾å¦åè½æ§è¡çéåº¦è¦æ±ã对é误è¾å ¥çå®¹éæ§è¦æ±çã</li> 1373<li>约æ(Constraints)ï¼çº¦ææ¯ä¸ä¸ªæ²¡æèªç±åº¦ç设计å³çã</li> 1374</ul> 1375<h3>åè½æ§(Functionality)</h3> 1376<ul> 1377<li>åè½æ§æ¯ç³»ç»æç §å ¶é¢æè¿è¡å·¥ä½çè½åã</li> 1378<li>åè½æ§ä¸æ¶ææçå¥ç¹çå ³ç³»ï¼ 1379<ul> 1380<li>åè½æ§å¹¶ä¸å³å®æ¶æï¼</li> 1381</ul> 1382</li> 1383</ul>`,readingTime:{minutes:7.2,words:2160},title:"Chapter4 ç解质é屿§",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter5%E5%8F%AF%E7%94%A8%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter5å¯ç¨æ§.html-BWIuLm5C.js"),__vite__mapDeps([84,1])),meta:{author:"chiichen",date:17024256e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯å¯ç¨æ§(Availability)</h2> 1384<ul> 1385<li>å¯ç¨æ§æçæ¯è½¯ä»¶å ·å¤å¨éè¦æ¶éæ¶å¯ç¨å¹¶åå¤å¥½æ§è¡ä»»å¡ç屿§ã</li> 1386<li>å¯ç¨æ§æ¯æç³»ç»è½å¤æ©çæä¿®å¤æ éï¼ä»¥ä½¿ç´¯ç§¯çæå¡ä¸ææ¶é´ä¸è¶ è¿æå®æ¶é´é´éå çè¦æ±å¼ã</li> 1387<li>å¯ç¨æ§çç®æ æ¯éè¿åè½»æ 鿥æå°åæå¡ä¸ææ¶é´ã</li> 1388</ul> 1389<div class="hint-container info"> 1390<p class="hint-container-title">å¯ç¨æ§(Availability)ä¸å¯é æ§(reliability)æå¯ä¿¡æ§(r dependability)çåºå«</p> 1391<ul> 1392<li>å¯ç¨æ§å æ¬é常æç§°çå¯é æ§ã</li> 1393<li>å¯ç¨æ§è¿æ¶µçäºå ¶ä»èèå ç´ ï¼ä¾å¦ç±äºå®æç»´æ¤å¯¼è´çæå¡ä¸æã</li> 1394<li>å¯ç¨æ§ä¸ä»¥ä¸å ç´ å¯åç¸å ³ 1395<ul> 1396<li>å®å ¨æ§ï¼ä¾å¦æç»æå¡æ»å»</li> 1397<li>æ§è½</li> 1398<li>...</li> 1399</ul> 1400</li> 1401</ul> 1402</div>`,readingTime:{minutes:4.44,words:1333},title:"Chapter5 å¯ç¨æ§",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter6%E4%BA%92%E6%93%8D%E4%BD%9C%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter6äºæä½æ§.html-DA7mdhu4.js"),__vite__mapDeps([85,1])),meta:{author:"chiichen",date:1702512e6,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯äºæä½æ§ï¼</h2> 1403<ul> 1404<li>äºæä½æ§æ¯æå¨ç¹å®ç¯å¢ä¸ï¼ä¸¤ä¸ªæå¤ä¸ªç³»ç»è½å¤éè¿æ¥å£ææä¹å°äº¤æ¢ä¿¡æ¯çç¨åº¦ã</li> 1405<li>对äºç³»ç»çäºæä½æ§çä»»ä½è®¨è®ºé½éè¦æç¡®æåºä¸è°ä»¥åå¨ä»ä¹æ åµä¸è¿è¡äº¤äºã</li> 1406<li>è¯æ³äºæä½æ§æ¯æäº¤æ¢æ°æ®çè½åã</li> 1407<li>è¯ä¹äºæä½æ§æ¯æè§£é交æ¢çæ°æ®çè½åã</li> 1408<li>å®ç°äºæä½æ§ç两ç§è§è§ï¼ 1409<ul> 1410<li>å¨äºè§£å¤é¨ç³»ç»æ¥å£çåºç¡ä¸ï¼å°è¯¥ç¥è¯è®¾è®¡å°ç³»ç»ä¸ã</li> 1411<li>卿²¡æäºè§£å ¶ä»ç³»ç»çæ åµä¸ï¼ä»¥æ´éç¨çæ¹å¼è®¾è®¡ç³»ç»ä»¥å®ç°äºæä½æ§ã</li> 1412</ul> 1413</li> 1414</ul> 1415<h3>卿º</h3>`,readingTime:{minutes:5.56,words:1667},title:"Chapter6 äºæä½æ§",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter7%E5%8F%AF%E4%BF%AE%E6%94%B9%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter7å¯ä¿®æ¹æ§.html-V8seVc_v.js"),__vite__mapDeps([86,75,1])),meta:{author:"chiichen",date:1702512e6,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯å¯ä¿®æ¹æ§ï¼Modifiabilityï¼ï¼</h2> 1416<ul> 1417<li>å¯ä¿®æ¹æ§æ¶åååï¼æä»¬å¯¹å®çå ´è¶£å¨äºååçææ¬åé£é©ã</li> 1418<li>为äºè§åå¯ä¿®æ¹æ§ï¼æ¶æå¸å¿ é¡»èèå个é®é¢ï¼ 1419<ul> 1420<li>ä»ä¹å¯ä»¥æ¹åï¼</li> 1421<li>ååçå¯è½æ§æå¤å¤§ï¼</li> 1422<li>åå使¶åçï¼ç±è°è¿è¡ï¼</li> 1423<li>ååçææ¬æ¯å¤å°ï¼</li> 1424</ul> 1425</li> 1426</ul> 1427<h3>ä»ä¹å¯ä»¥æ¹å</h3> 1428<ul> 1429<li>ç³»ç»çåè½</li> 1430<li>
1430å¹³å°ï¼å³ç¡¬ä»¶ãæä½ç³»ç»åä¸é´ä»¶</li> 1431<li>ç³»ç»è¿è¡çç¯å¢ 1432<ul> 1433<li>å¿ é¡»ä¸ä¹äºæä½çç³»ç»</li> 1434<li>ç¨äºéä¿¡çåè®®</li> 1435</ul> 1436</li> 1437<li>容é 1438<ul> 1439<li>æ¯æçç¨æ·æ°é</li> 1440<li>åæ¶æä½çæ°é</li> 1441</ul> 1442</li> 1443</ul>`,readingTime:{minutes:6.61,words:1982},title:"Chapter7 å¯ä¿®æ¹æ§",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter8%E6%80%A7%E8%83%BD.html",{loader:()=>f(()=>import("./Chapter8æ§è½.html-BgdVwN9c.js"),__vite__mapDeps([87,1])),meta:{author:"chiichen",date:1702512e6,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯æ§è½ï¼</h2> 1444<ul> 1445<li>å®ä¸æ¶é´æå ³</li> 1446<li>æ§è½æ¯å ³äºæ¶é´ä»¥åè½¯ä»¶ç³»ç»æ»¡è¶³æ¶é´è¦æ±çè½å</li> 1447<li>å½äºä»¶åçæ¶ï¼ç³»ç»å¿ é¡»åæ¶å¯¹å ¶ååºååº 1448<ul> 1449<li>äºä»¶å æ¬ä¸æãæ¶æ¯ãæ¥èªç¨æ·æå ¶ä»ç³»ç»ç请æ±ï¼ææ è®°æ¶é´æµéçæ¶éäºä»¶</li> 1450</ul> 1451</li> 1452</ul> 1453<h3>æ§è½å»ºæ¨¡</h3> 1454<ul> 1455<li>ååºæ¶é´çä¸¤ä¸ªåºæ¬å ç´ </li> 1456<li>å¤çæ¶é´æç³»ç»ç¨äºååºç工使¶é´</li> 1457<li>é»å¡æ¶é´æç³»ç»æ æ³ååºçæ¶é´</li> 1458<li>é»å¡æ¶é´çåå å æ¬ 1459<ul> 1460<li>èµæºäºç¨</li> 1461<li>èµæºçå¯ç¨æ§</li> 1462<li>å¯¹å ¶ä»å ç´ çä¾èµ</li> 1463</ul> 1464</li> 1465</ul>`,readingTime:{minutes:9.85,words:2955},title:"Chapter8 æ§è½",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter9%E5%AE%89%E5%85%A8%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter9å®å ¨æ§.html-BwhWm9cC.js"),__vite__mapDeps([88,1])),meta:{author:"chiichen",date:17026848e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯å®å ¨(Security)</h2> 1466<ul> 1467<li>å®å ¨æ¯ç³»ç»ä¿æ¤æ°æ®åä¿¡æ¯å åæªç»ææè®¿é®çè½åç度éï¼åæ¶ä»ç¶åç»ææç人ååç³»ç»æä¾è®¿é®æéã</li> 1468<li>éå¯¹è®¡ç®æºç³»ç»çææä¸ºå®³è¡ä¸ºç§°ä¸ºæ»å»ã</li> 1469<li>æ»å»å¯ä»¥éåä¸åå½¢å¼ï¼ 1470<ul> 1471<li>æªç»ææçå°è¯è®¿é®/ä¿®æ¹æ°æ®ææå¡</li> 1472<li>æ¨å¨æç»åæ³ç¨æ·çæå¡</li> 1473</ul> 1474</li> 1475<li>å®å ¨å ·æä¸ä¸ªä¸»è¦ç¹å¾ï¼å³ CIAï¼</li> 1476<li>ä¿å¯æ§(Confidentiality)æ¯æ°æ®ææå¡åå°æªç»ææè®¿é®çä¿æ¤æ§è´¨ã 1477<ul> 1478<li>ä¾å¦ï¼é»å®¢æ æ³å¨æ¿åºè®¡ç®æºä¸è®¿é®æ¨ç个人æå¾ç¨ç³æ¥è¡¨ã</li> 1479</ul> 1480</li> 1481<li>宿´æ§(Integrity)æ¯æ°æ®ææå¡ä¸åæªç»æææçºµçæ§è´¨ã 1482<ul> 1483<li>ä¾å¦ï¼æ¨çæç»©èªä»æå¸åé ä»¥æ¥æ²¡æè¢«æ´æ¹ã</li> 1484</ul> 1485</li> 1486<li>å¯ç¨æ§(Availability)æ¯ç³»ç»è½å¤ä¾åæ³ä½¿ç¨çæ§è´¨ã 1487<ul> 1488<li>ä¾å¦ï¼æç»æå¡æ»å»é»æ¢æ¨ä»å¨çº¿ä¹¦åºè®¢è´ä¸æ¬ä¹¦ã</li> 1489</ul> 1490</li> 1491<li>æ¯æ CIA çå ¶ä»ç¹å¾å æ¬ï¼ 1492<ul> 1493<li>身份éªè¯éªè¯äº¤æå䏿¹ç身份ï¼å¹¶æ£æ¥ä»ä»¬æ¯å¦çå®èº«ä»½ä¸å ¶æå£°ç§°çä¸è´ã</li> 1494<li>æææäºç¨æ·æ§è¡ä»»å¡çæéã</li> 1495</ul> 1496</li> 1497</ul>`,readingTime:{minutes:4.02,words:1206},title:"Chapter9 å®å ¨æ§",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chpater21%E6%9E%B6%E6%9E%84%E8%AF%84%E4%BC%B0.html",{loader:()=>f(()=>import("./Chpater21æ¶æè¯ä¼°.html-DER5W5Dp.js"),__vite__mapDeps([89,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä¸ç§è¯ä¼°å½¢å¼</h2> 1498<ul> 1499<li>设计è¿ç¨ä¸ç±è®¾è®¡å¸è¿è¡çè¯ä¼°ã</li> 1500<li>设计è¿ç¨ä¸ç±åè¡è¿è¡çè¯ä¼°ã</li> 1501<li>æ¶æè®¾è®¡å®æåç±å¤é¨äººåè¿è¡çåæã</li> 1502</ul> 1503<h3>设计å¸çè¯ä¼°(Evaluation by the Designer)</h3> 1504<ul> 1505<li>æ¯å½è®¾è®¡å¸ååºå ³é®è®¾è®¡å³çæ¶ï¼åºå¯¹éæ©çå¤éæ¹æ¡è¿è¡è¯ä¼°ã</li> 1506<li>âçæåæµè¯âæ¹æ³ä¸çâæµè¯âé¨åã</li> 1507<li>éè¦è¿è¡å¤å°åæï¼æä¸ä¸ªå ç´ å æ¬ï¼ 1508<ul> 1509<li>å³ççéè¦æ§ã</li> 1510<li>æ½å¨å¤éæ¹æ¡çæ°éãæ´å¤çå¤éæ¹æ¡éè¦æ´å¤çæ¶é´è¿è¡è¯ä¼°ã</li> 1511<li>è¶³å¤å¥½ä¸å®ç¾ç¸å¯¹ãä¸è¦å¨å³çä¸è±è´¹è¶ è¿å ¶ä»·å¼çæ¶é´ã</li> 1512</ul> 1513</li> 1514</ul>`,readingTime:{minutes:9.11,words:2732},title:"Chpater21 æ¶æè¯ä¼°",icon:"page",order:1,type:"article"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/%E5%A4%8D%E4%B9%A0%E6%8F%90%E7%BA%B2.html",{loader:()=>f(()=>import("./å¤ä¹ æçº².html-Cb1gC5vk.js"),__vite__mapDeps([90,1])),meta:{author:"chiichen",date:17023392e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>Part I Introduction of software architecture</h2> 1515<p>â What? definition, 3 types of structures,architecture patterns & tactics<br> 1516â Why?</p> 1517<h2>Part II Quality attributes</h2> 1518<p>â Availability, interoperability, modifiability,performance, security, testability, usability andothers<br> 1519â Definitions, general scenarios & concretescenarios of quality attributes, tactics<br> 1520â Architecture patterns and tactics<br> 1521â Quality attributes modeling and analysis:availability and performance</p>`,readingTime:{minutes:.73,words:220},title:"2023å¹´ææ«èå¤ä¹ æçº²",icon:"page",order:1,type:"article"}}],["/posts/DragonOS/DragonOS%E6%8B%9B%E6%96%B0%E4%BB%BB%E5%8A%A1.html",{loader:()=>f(()=>import("./DragonOSææ°ä»»å¡.html-DebaNl3R.js"),__vite__mapDeps([91,1])),meta:{author:"chiichen",date:17088192e5,category:["DragonOS"],tag:["DragonOS"],sticky:!1,isOriginal:!0,excerpt:`<h2>ç®ä»</h2> 1522<p>ramfs æå åæä»¶ç³»ç»ï¼å ¶æ¾èç¹æ§ä¸ºæææä»¶åä¿åäºå åä¸ï¼ä¸åäºé常çè§£çä¿åå¨ç¡¬çä¸çæä»¶ãå æ¤å åæä»¶ç³»ç»å±è½æäºè·ç¡¬çè¿ç±»åºå±ç¡¬ä»¶äº¤äºçé¨åï¼æ½ç¦»åºæ¥äºæä»¶ç³»ç»çåºç¡åè½ï¼éåä½ä¸ºæä½ç³»ç»å ¥é¨ä»»å¡ã</p> 1523<h2>ä»»å¡ä»ç»</h2> 1524<ol> 1525<li>ç³»ç»ä¸å·²ç»æå®æç ramfs 模åï¼ä½äº<code>kernel/src/filesystem/ramfs/mod.rs</code>ä¸ï¼ä½ éè¦åçå°±æ¯æè¿ä¸ª ramfs æ¿æ¢ä¸ºèªå·±çå®ç°ï¼å½ç¶ï¼å¯¹ç°æä»£ç çåé´æ¯å 许çï¼ä½æ¯ä½ è¦ç¥å ¶ç¶å¹¶ç¥å ¶æä»¥ç¶ï¼ç¥é代ç è¿æ ·è®¾è®¡èåçå«ä¹ï¼æ¯å¦ä¸ºä»ä¹è¦å éï¼ä¸ºä»ä¹è¦ç¨ Arcã</li> 1526<li>æ¿æ¢å®ä¹åä½ éè¦ç¼åæµè¯ç¨åºæµè¯ä½ ç ramfsï¼ç°å¨çæ¨èåæ³æ¯å¨å æ ¸åå§åæä»¶ç³»ç»ç代ç ä¸ï¼å¤åå§åä¸ä¸ª ramfs å¹¶æè½½å°æ ¹ç®å½ï¼ç¶åç¼åç¨æ·ç¨åºï¼æµè¯è¿ä¸ªæä»¶ç³»ç»çåºæ¬åè½ï¼ä¾å¦å建ãå é¤ç®å½ï¼è¯»åæä»¶ã</li> 1527</ol>`,readingTime:{minutes:1.77,words:530},title:"DragonOSææ°ä»»å¡",icon:"page",order:1,type:"article"}}],["/posts/Linux%E5%86%85%E6%A0%B8/NUMA%20Balance%E5%AE%9E%E7%8E%B0%E6%B5%85%E6%9E%90.html",{loader:()=>f(()=>import("./NUMA Balanceå®ç°æµ æ.html-CJnJNNCO.js"),__vite__mapDeps([92,1])),meta:{author:"chiichen",date:16981056e5,category:["ç¬è®°","Linux å æ ¸"],tag:["Linux å æ ¸","å å管ç","NUMA"],sticky:!0,excerpt:`<h2>åèèµæ</h2> 1528<p>转载äº<a href="https://blog.csdn.net/faxiang1230/article/details/123709414" target="_blank" rel="noopener noreferrer">numa balance å®ç°æµ æ</a>,åä½è 为<a href="https://blog.csdn.net/faxiang1230?type=blog" target="_blank" rel="noopener noreferrer">wjx5210<br> 1529</a>,éµå¾ª CC 4.0 BY çæåè®®</p> 1530<h2>NUMA balance çèæ¯</h2>`,readingTime:{minutes:22.01,words:6603},title:"NUMA Balanceå®ç°æµ æ",icon:"page",order:1,type:"article"}}],["/posts/Linux%E5%86%85%E6%A0%B8/NUMA%20Balancing.html",{loader:()=>f(()=>import("./NUMA Balancing.html-594LRFJm.js"),__vite__mapDeps([93,1])),meta:{author:"chiichen",date:16975008e5,category:["ç¬è®°","Linux å æ ¸"],tag:["Linux å æ ¸","NUMA"],sticky:!1,excerpt:`<h2>
1530<a class="header-anchor" href="#numa-balancing-in-kernel-doc"><span></span></a><a href="https://www.kernel.org/doc/Documentation/sysctl/kernel.txt" target="_blank" rel="noopener noreferrer">numa_balancing in kernel doc</a></h2> 1531<p>Enables/disables automatic page fault based NUMA memory<br> 1532balancing. Memory is moved automatically to nodes<br> 1533that access it often.</p>`,readingTime:{minutes:1.61,words:484},title:"NUMA Balancing",icon:"page",order:1,type:"article"}}],["/posts/Linux%E5%86%85%E6%A0%B8/vscode%20qemu%E5%BC%80%E5%8F%91Linux%E5%86%85%E6%A0%B8.html",{loader:()=>f(()=>import("./vscode qemuå¼åLinuxå æ ¸.html-DU_4D5Dq.js"),__vite__mapDeps([94,1])),meta:{author:"chiichen",date:16984512e5,category:["ç¬è®°","Linux å æ ¸"],tag:["Linux å æ ¸","å¼åç¯å¢"],sticky:!0,excerpt:`<p>åèäº<a href="http://kerneltravel.net/blog/2021/debug_kernel_szp/" target="_blank" rel="noopener noreferrer">QEMU è°è¯ Linux å æ ¸ç¯å¢æå»º</a></p> 1534<h2>è·å Linux æºç </h2> 1535<ul> 1536<li>ç¥</li> 1537</ul> 1538<h2>ç¼è¯ Linux å æ ¸</h2> 1539<div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">cd</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> /linux</span></span> 1540<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">export</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> ARCH</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2">=</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">x86</span></span> 1541<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">make</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> x86_64_defconfig</span></span> 1542<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># 妿æ³è¦æ´å¥½çclangdè¡¥å ¨å°±ç¨clangç¼è¯(make CC=clang x86_64_defconfig ) ï¼ä½æ¯clangå¨é¨å模åå¯è½éè¦ç¹æ®çç¼è¯é</span></span> 1543<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># 项æè½ç¼è¯ï¼æä»¥è¿æ¯æ¨èç¨é»è®¤çgccç¼è¯ï¼å°½ç®¡è¿æ ·clangdçææä¼å·®ä¸ç¹</span></span> 1544<span class="line"></span> 1545<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># ./scripts/config --file .config -e CONFIG_NUMA_BALANCE CONFIG_NUMA_BALANCING_DEFAULT_ENABLED CONFIG_NUMA</span></span> 1546<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># Todo è¿æä¸äºnuuma_balanceç¸å ³è®¾ç½®é¡¹è¦æå¼ï¼ä¸ç¶åé¢è¦å¨ç¼è¯æ¶æå¨éæ©Y</span></span></code></pre> 1547<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>`,readingTime:{minutes:2.04,words:612},title:"vscode+qemuå¼åLinuxå æ ¸",icon:"page",order:1,type:"article"}}],["/posts/Rust/Common-rust-lifetime-misconceptions.html",{loader:()=>f(()=>import("./Common-rust-lifetime-misconceptions.html-BmPpfRw_.js"),__vite__mapDeps([95,1])),meta:{author:"chiichen",date:16981056e5,category:["ç¬è®°","Rust"],tag:["Rust"],sticky:!0,excerpt:`<h2>转载èª</h2> 1548<p><a href="https://github.com/whfuyn/rust-blog/blob/master/posts/Rust%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E7%9A%84%E5%B8%B8%E8%A7%81%E8%AF%AF%E8%A7%A3.md" target="_blank" rel="noopener noreferrer">䏿è¯è </a>ï¼ä»¥å<a href="https://github.com/pretzelhammer/rust-blog/blob/master/posts/common-rust-lifetime-misconceptions.md" target="_blank" rel="noopener noreferrer">åæ</a>ï¼æ ¹æ®çº¦å®ï¼æ¬æä¸ææä»£ç é½ä½¿ç¨ Apache License Version 2.0 æ MIT License</p>`,readingTime:{minutes:32.35,words:9704},title:"Rustçå½å¨æå¸¸è§è¯¯åº",icon:"page",order:1,type:"article"}}],["/posts/Rust/Inlinable-dyn-extension-traits.html",{loader:()=>f(()=>import("./Inlinable-dyn-extension-traits.html-CpyLiZ7n.js"),__vite__mapDeps([96,1])),meta:{author:"chiichen",date:17204832e5,category:["ç¬è®°","Rust"],tag:["Rust"],sticky:!0,excerpt:` 1549<p><strong>åä½è : <a href="https://github.com/daniel5151/inlinable-dyn-extension-traits/blob/master/writeup.md" target="_blank" rel="noopener noreferrer">daniel5151</a></strong></p> 1550<p><strong>注æï¼</strong> å¦æä½ æ¶é´ç´§è¿«ï¼åªæ³çæææ¹æ³çå表åå ¶ä¼ç¼ºç¹ï¼
1550请跳å°<a href="#summary-and-comparisons">æ»ç»åæ¯è¾</a>é¨åã</p> 1551<h2>ä¸ä¸ªæ¿å±ç¤ºä¾ - 坿©å±åè®®</h2>`,readingTime:{minutes:13.26,words:3977},title:"Rustä¸çOptional Trait",icon:"page",order:1,type:"article"}}],["/posts/Rust/Type-erase-via-trait.html",{loader:()=>f(()=>import("./Type-erase-via-trait.html-DVRKJY1f.js"),__vite__mapDeps([97,1])),meta:{author:"chiichen",date:17144352e5,category:["ç¬è®°","Rust"],tag:["Rust"],sticky:!0,excerpt:`<h2>为ä»ä¹è¦ç±»åæ¦é¤</h2> 1552<p>è¿éçç±»åæ¦é¤åé常æä»¬å¬å°çï¼å¨ Java éçç±»åæ¦é¤ä¸å¤ªä¸æ ·ï¼è¿éçç±»åæ¦é¤æ¯æï¼éè¿æäºææ®µï¼å±è½æä¸äºæä»¬ä¸å ³å¿çèåï¼ä»èè¾¾å°ç»ä¸åå¨çç®çï¼è¿æ ·è¯´å¯è½å¾æ½è±¡ï¼ç´æ¥ç代ç </p> 1553<div class="language-rust line-numbers-mode" data-highlighter="shiki" data-ext="rust" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-rust"><span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">pub</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD"> trait</span><span style="--shiki-light:#C18401;--shiki-dark:#E5C07B"> Source</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">{</span></span> 1554<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD"> type</span><span style="--shiki-light:#C18401;--shiki-dark:#E5C07B"> Event</span></span> 1555<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD"> pub</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD"> fn</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF"> poll</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(&</span><span style="--shiki-light:#E45649;--shiki-dark:#E5C07B">self</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)-></span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">Result</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"><</span><span style="--shiki-light:#E45649;--shiki-dark:#E5C07B">Self</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">::</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">Event</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">,</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">SourceError</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">></span></span> 1556<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">}</span></span> 1557<span class="line"></span> 1558<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">pub</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD"> struct</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B"> SourceEntry</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"><</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">S</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">Source</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">,</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">T</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">>{</span></span> 1559<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> source</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">S</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">,</span></span> 1560<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> callback</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">Box</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"><</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">dyn</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B"> Fn</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">S</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">::</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">Event</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">,</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">T</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)></span></span> 1561<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">}</span></span> 1562<span class="line"></span> 1563<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">pub</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD"> struct</span><span style="--shiki-light:#C18401;--shiki-dark:#E5C07B"> SourceList</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"><</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">S</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">Source</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">,</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">T</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">>{</span></span> 1564<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> sources</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">Vec</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"><</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">Rc</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"><</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">RefCell</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"><</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">SourceEntry</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"><</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">S</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">,</span><span style="--shiki-light:#0184BC;--shiki-dark:#E5C07B">T</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">>>>></span></span> 1565<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">}</span></span></code></pre> 1566<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>`,readingTime:{minutes:2.73,words:818},title:"å©ç¨Erased-traitè¿è¡ç±»åæ¦é¤",icon:"page",order:1,type:"article"}}],["/posts/backend/",{loader:()=>f(()=>import("./index.html-DaeLZXUD.js"),__vite__mapDeps([98,1])),meta:{date:1714837884e3,readingTime:{minutes:.03,words:9},title:"åç«¯ææ¯",icon:"lightbulb",type:"article"}}],["/posts/backend/gRPC-introduction.html",{loader:()=>f(()=>import("./gRPC-introduction.html-ClWVgZr3.js"),__vite__mapDeps([99,1])),meta:{author:"chiichen",date:17172e8,category:["ç¬è®°","å端"],tag:["å端","gRPC","go"],sticky:!0,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯ gRPC</h2> 1567<h2>åæåå¤</h2> 1568<p>卿¬ç¯å 容ä¸ï¼æä»¬å°éè¿<code>go+gin+gRPC</code>çç»åæ¥åæ¥è®¤è¯ gRPCï¼å¹¶å®ç°ä¸ä¸ªç®åçç½å ³åºç¨</p> 1569<h3>Go ç¯å¢å®è£ </h3> 1570<p>ç¥</p> 1571<h3>å建项ç®</h3> 1572<div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">mkdir</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> app-gateway</span></span> 1573<span class="line"><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">cd</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> app-gateway</span></span> 1574<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">go</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> mod</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> init</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> app-gateway</span></span></code></pre> 1575<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></div>`,readingTime:{minutes:3.29,words:986},title:"gRPCå ¥é¨",icon:"page",order:1,type:"article"}}],["/posts/cpp/Application-of-decltype-auto.html",{loader:()=>f(()=>import("./Application-of-decltype-auto.html-B1yndWPT.js"),__vite__mapDeps([100,
15751])),meta:{author:"chiichen",date:16976736e5,category:["C++"],tag:["C++"],sticky:!1,excerpt:`<h2>鿍¡æ¿ä¸åºç¨</h2> 1576<p>å°è±¡ä¸ google ç C++ç¼ç¨è§èæå说è¿ï¼å¦æä¸æ¯ä¸ºäºä»£ç æ´å®å ¨æè ä¸çæé¡¹ç®çäººè¯»èµ·æ¥æ´æ¹ä¾¿ï¼å°½éä¸è¦ä½¿ç¨ç±»åæ¨å¯¼ï¼æ¯å¦ä¸ºäºçæ¾ç¤ºç±»å书åã</p> 1577<h3>æå¸¸è§æ¨å¯¼</h3> 1578<p>对äºåéæè æ®éçè¿å弿¥è¯´ï¼å¸¸è§æ 4 ç§ auto ç¨æ³ï¼è¿æä¸ç§<code>const auto &&</code>åºæ¬æ²¡æç¨ï¼ä¸å»è®¨è®ºã</p> 1579<ol> 1580<li><code>auto</code>: äº§çæ·è´,å¯ä»¥ä¿®æ¹</li> 1581<li><code>auto&</code>: å·¦å¼å¼ç¨ï¼æ¥åå·¦å¼ï¼å¯ä»¥ä¿®æ¹</li> 1582<li><code>const auto&</code>: const å¼ç¨,å¯ä»¥æ¥åå·¦å³å¼ï¼ä¸å¯ä¿®æ¹</li> 1583<li><code>auto&&</code>: ä¸è½å¼ç¨ï¼å¯ä»¥æ¥åå·¦å³å¼ï¼const å¼ç¨æ¶ä¸è½ä¿®æ¹</li> 1584</ol>`,readingTime:{minutes:8.78,words:2635},title:"decltype(auto)çåºç¨",icon:"page",order:1,type:"article"}}],["/posts/cpp/",{loader:()=>f(()=>import("./index.html-CcgJUhsW.js"),__vite__mapDeps([101,1])),meta:{date:1714837884e3,readingTime:{minutes:.02,words:6},title:"C++",icon:"lightbulb",type:"article"}}],["/posts/rcc%E7%BC%96%E8%AF%91%E5%99%A8/Chapter0%E5%89%8D%E8%A8%80.html",{loader:()=>f(()=>import("./Chapter0åè¨.html-BEapDesS.js"),__vite__mapDeps([102,1])),meta:{author:"chiichen",date:16989696e5,category:["ç¬è®°","ç¼è¯å¨"],tag:["ç¼è¯å¨"],sticky:!1,isOriginal:!0,excerpt:`<h2>å¼ç«¯</h2> 1585<p>æ¬ç¬è®°æ¯æ¬äººç ç©¶ç¼è¯å¨å¼å<a href="https://github.com/RccCommunity/rcc" target="_blank" rel="noopener noreferrer">rcc</a>çæèç¬è®°ï¼æ¶µçäºå¨å¼åè¿ç¨ä¸çæèåè®°å½ï¼å¸ææå©äºå ¶å®å¦ç/å¼åè </p> 1586<h2>è¯è¨è®¡å</h2> 1587<p>叿ç»å go è¯è¨çæé+gc çç¹æ§å rust çé误å¤çãæä¸¾ç±»åçè¯æ³ç¹æ§ï¼å®ç°ä¸ä¸ªç±»ä¼¼äºç¨ gc+æé æ¿æ¢æææææºå¶ç rust è¯è¨(r é¨)ï¼é¢åéç³»ç»åºæ¯ä¸çç¼ç¨ãå½ç¶è¿æ¯ä¸ä¸ªé叏忥çç®æ (åäºé¡¹ç®å¼å§ 2023/11/03)ï¼å¯è½å°æ¥ä¼æææ¹åï¼ä½è¿æ¯åæ¥çç®æ ï¼ä»¥æ¤ä¸ºåå±å§</p>`,readingTime:{minutes:.74,words:223},title:"Chapter0 åè¨",icon:"page",order:1,type:"article"}}],["/posts/rcc%E7%BC%96%E8%AF%91%E5%99%A8/Chapter1%E8%AF%8D%E6%B3%95%E5%88%86%E6%9E%90%E5%99%A8%E4%B9%8BChumsky.html",{loader:()=>f(()=>import("./Chapter1è¯æ³åæå¨ä¹Chumsky.html-D18RPp2k.js"),__vite__mapDeps([103,1])),meta:{author:"chiichen",date:16989696e5,category:["ç¬è®°","ç¼è¯å¨"],tag:["ç¼è¯å¨","è¯æ³åæ"],sticky:!1,isOriginal:!0,excerpt:`<h2>åºçéæ©</h2> 1588<p>ä¸å¼å§æå ¶å®æ¯éæ©ç<a href="https://docs.rs/nom/7.1.3/nom/index.html" target="_blank" rel="noopener noreferrer">nom</a>è¿ä¸ªåºæ¥å®æè¯æ³åæçï¼ä½æ¯åäºä¸æ®µæ¶é´ä¹åè¿æ¯éæ©äº<a href="https://docs.rs/chumsky/1.0.0-alpha.6/chumsky/index.html" target="_blank" rel="noopener noreferrer">chumsky</a>ï¼æå ç¹å ç´ å¨éé¢ï¼</p> 1589<ol> 1590<li>å·¦éå½é®é¢ï¼å ¶å®<code>nom</code>åèµ·æ¥è¦æ¯<code>chumsky</code>ä¼é å¾å¤ï¼å 为åè ç䏻颿¯ä¸ç³»å彿°æéï¼ç±»å徿¸ æ°ï¼ä½æ¯åè æ¯æ³å对象ï¼ä¸æ¦æ¥éå°±æ¯åµå¥å åå±çæ³åå¯è¯»æ§å ä¹ä¸ºé¶ï¼èä¸åè æ¯<code>PEC</code>(Parser Expression Combinator)ï¼å¯ä»¥ææ¯ä¸ªå½æ°çèè´£ååå¾å¾æ¸ æ¥ï¼èåè æ¯ <code>PEG</code>(Parser Expression Generator)ï¼ç¸å¯¹æ¥è¯´æ²¡æè¿ä¹ä¼é ã使¯è¿ä¸åé½è¢«å·¦éå½æç ´äºã大夿°å¦çé½ç¥éï¼æ¶é¤å·¦éå½çæ¹æ³å°±æ¯éåææ³ï¼ç¶èéåææ³ä¼å¯¼è´æ¯ä¸ªäº§çå¼ä¹é´ç大éè¦åï¼ä½¿å¾åæ¥èè´£æ¸ æ°ç彿°åå¾å¾ç辩ãè<code>chumsky</code>è½ç¶ä¹æ²¡ææä¾ä¾¿æ·çå¤çæ¹æ³(<a href="https://github.com/zesterer/chumsky/discussions/575" target="_blank" rel="noopener noreferrer">#575</a>)使¯ä¾å¦<code>recursive</code>éå çåå¨ä½¿å¾è¿é¨åå¤çæ´å ç´æ¥æäºï¼ç¸æ¯äº<code>nom</code>ææ´å¥½çå¯è¯»æ§</li> 1591<li>é误æ¢å¤åæåºï¼å¨ç¼è¯å¨ä¸ï¼é误å¤çå ¶å®æ¯å¾éè¦çä¸é¨åï¼è¿ç´æ¥å ³ç³»å°ç¨æ·çç¼ç¨ä½éªï¼<code>chumsky</code>æ°æ°æ¯èèå°äºè¿ç¹ï¼å®æä¸ä¸ªåªçç<a href="https://github.com/zesterer/ariadne" target="_blank" rel="noopener noreferrer">ariadne</a>åºï¼å¯ä»¥çæä¸äºå¯è§åç¨åº¦è¾é«çé误信æ¯ï¼èä¸å¨åæçè¿ç¨ä¸æä¾äºé误æ¢å¤çæä½ï¼è¿äºé½æ¯<code>nom</code>缺ä¹ç</li> 1592</ol>`,readingTime:{minutes:1.85,words:556},title:"Chapter1 è¯æ³åæå¨ä¹Chumsky",icon:"page",order:1,type:"article"}}],["/posts/rcc%E7%BC%96%E8%AF%91%E5%99%A8/HelloWorld.html",{loader:()=>f(()=>import("./HelloWorld.html-FT0WdztZ.js"),__vite__mapDeps([104,1])),meta:{author:"chiichen",date:16987968e5,category:["ç¬è®°","ç¼è¯å¨"],tag:["ç¼è¯å¨"],sticky:!1,isOriginal:!0,excerpt:`<div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">sudo</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> apt-get</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66"> -y</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> install</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> clang</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> curl</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> llvm-14.0.0-dev</span></span></code></pre> 1593<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div></div></div>`,readingTime:{minutes:1.06,words:318},title:"template",icon:"page",order:1,type:"article"}}],["/posts/%E5%BE%AE%E4%BF%A1/%E5%BE%AE%E4%BF%A1%E5%BA%95%E5%B1%82%E8%A7%A3%E6%9E%90.html",{loader:()=>f(()=>import("./微信åºå±è§£æ.html-DLEVaEax.js"),__vite__mapDeps([105,1])),meta:{author:"chiichen",date:17087328e5,category:["ç¬è®°","微信"],tag:["微信","客æ·ç«¯"],sticky:!0,isOriginal:!0,readingTime:{minutes:.45,words:136},title:"微信åºå±è§£æ",icon:"page",order:1,type:"article"}}],["/notes/College-Physics/Formula-Derivation/Electrostatic-energy-of-a-solid-charged-sphere.html",{loader:()=>f(()=>import("./Electrostatic-energy-of-a-solid-charged-sphere.html-BAnUstYA.js"),__vite__mapDeps([106,1])),meta:{author:"chiichen",date:16776288e5,category:["课ç¨ç¬è®°"],tag:["è®¡ç®æºç½ç»"],sticky:!1,isOriginal:!0,excerpt:` 1594<p>èèä¸ä¸ªåå¾ä¸º ( a ) çåå带çµçä½ï¼æ»çµè·é为 ( Q )ãæä»¬éè¦è®¡ç®è¿ä¸ªçä½çéçµè½ã</p> 1595<h2>1. çµåº</h2> 1596<p>æ ¹æ®é«æ¯å®å¾ï¼çä½å å¤ççµåºåå«ä¸ºï¼</p> 1597<p></p> 1598<p>å ¶ä¸ï¼() æ¯çµè·å¯åº¦ã</p> 1599<h2>2. çå çµå¿</h2> 1600<p>çå ä»»æç¹ ( ) å¤ççµå¿ () å¯ä»¥éè¿ç§¯åçµåºå¾å°ï¼</p> 1601<p>å¯¹äº ( ) çæ åµï¼</p> 1602<p>计ç®ç§¯åï¼</p> 1603<h2>3. éçµè½</h2> 1604<p>éçµè½ ( ) 为çµè·å¯åº¦åçµå¿çä¹ç§¯å¨æ´ä¸ªçä½ä½ç§¯ä¸ç积åï¼</p> 1605<p>计ç®ç§¯åï¼</p> 1606<p>å æ¤ï¼</p> 1607<p>å° () ä»£å ¥ï¼</p>`,readingTime:{minutes:2.21,words:663},title:"å®å¿å¸¦çµçä½éçµè½çæ¨å¯¼",icon:"page",order:1,type:"article"}}],["/notes/College-Physics/Formula-Derivation/",{loader:()=>f(()=>import("./index.html-DTX_nWsL.js"),__vite__mapDeps([107,1])),meta:{date:1714837884e3,readingTime:{minutes:.03,words:9},title:"æ¨å¯¼è¿ç¨",icon:"lightbulb",type:"article"}}],["/posts/Linux%E5%86%85%E6%A0%B8/Patch%E8%A7%A3%E8%AF%BB/LWN%E9%92%88%E5%AF%B9%E5%A4%9A%E5%B1%82%E5%86%85%E5%AD%98%E7%B3%BB%E7%BB%9F%E9%87%8D%E6%96%B0%E8%BF%9B%E8%A1%8CNUMA%E5%B9%B3%E8%A1%A1.html",{loader:()=>f(()=>import("./LWNé对å¤å±å åç³»ç»éæ°è¿è¡NUMA平衡.html-B3xNoTfT.js"),__vite__mapDeps([108,1])),meta:{author:"chiichen",date:1698624e6,category:["ç¬è®°","Linux å æ ¸"],tag:["Linux å æ ¸","å å管ç","NUMA"],sticky:!1,excerpt:`<h2>åè</h2> 1608<p>è½¬è½½èª <a href="https://mp.weixin.qq.com/s?__biz=Mzg2MjE0NDE5OA==&mid=2247486608&idx=1&sn=51eb34edabfbcc6f730dd9c0efb1c0c6&chksm=ce0d1f39f97a962f20b3501bdbc6684ba043b88f924ba8db52aa77710b91899d7a2e069c0d95&scene=126&&sessionid=0" target="_blank" rel="noopener noreferrer">LWNï¼é对å¤å±å åç³»ç»éæ°è¿è¡ NUMA 平衡ï¼</a>ï¼ä½è ä¸ºå ¬ä¼å·ï¼Linux News æ¬è¿å·¥ï¼åæå使¶é´ä¸º 2022-05-17</p>`,readingTime:{minutes:9.37,words:2810},title:"LWNï¼é对å¤å±å åç³»ç»éæ°è¿è¡NUMA平衡",icon:"page",order:1,type:"article"}}],["/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%88%86%E6%9E%90/LinuxKernelMap.html",{loader:()=>f(()=>import("./LinuxKernelMap.html-DBz3k1as.js"),__vite__mapDeps([109,1])),meta:{author:"chiichen",date:16981056e5,category:["ç¬è®°","Linux å æ ¸"],tag:["Linux å æ ¸"],sticky:!0,excerpt:`<p>转载èª<a href="https://github.com/makelinux/linux_kernel_map" target="_blank" rel="noopener noreferrer">github.com/makelinux/linux_kernel_map</a></p> 1609<figure><figcaption>Linux Kernel Map</figcaption></figure> 1610`,readingTime:{minutes:.23,words:69},title:"Linux Kernel Map",icon:"page",order:1,type:"article"}}],["/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91/Ubuntu%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85%E5%86%85%E6%A0%B8.html",{loader:()=>f(()=>import("./Ubuntuç¼è¯å®è£ å æ ¸.html-DWJni9H0.js"),__vite__mapDeps([110,1])),meta:{author:"chiichen",date:17000064e5,category:["Linuxå æ ¸"],tag:["Linuxå æ ¸"],sticky:!1,excerpt:`<h2>ä¸è½½ç®æ å æ ¸ä»£ç </h2> 1611<p>ç¥</p> 1612<h2>å®è£ ä¾èµ</h2> 1613<div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">sudo</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> apt</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> install</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> gdb</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> bison</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> m4</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> autoconf</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> automake</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> libtool</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> libncurses5-dev</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> build-essential</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> fakeroot</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> debhelper</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">
1613 libelf-dev</span></span></code></pre> 1614<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div></div></div>`,readingTime:{minutes:2.87,words:860},title:"Ubuntuç¼è¯å®è£ å æ ¸",icon:"page",order:1,type:"article"}}],["/posts/%E6%9D%82%E8%B0%88/Debug%E6%9D%82%E8%B0%88/SurfaceView%E5%BC%82%E5%B8%B8%E9%87%8A%E6%94%BE.html",{loader:()=>f(()=>import("./SurfaceViewå¼å¸¸éæ¾.html-D3pSHZn_.js"),__vite__mapDeps([111,1])),meta:{author:"chiichen",date:17121024e5,category:["æè°","Debugæè°"],tag:["Android"],sticky:!1,excerpt:`<h2>èæ¯</h2> 1615<p>æè¿å¨ç ç©¶éè¿ Rust è¿è¡ Android Native 渲æçç¸å ³å 容ï¼åºæ¬æ¹æ³æ¯ï¼å¨ Android éå建ä¸ä¸ª Surface Viewï¼ç¶åå¨ OnSurfaceCreated æ¹æ³å¤ï¼å°ä¸ä¸ª SurfaceHolder éè¿ JNI ä¼ å° Rust å±ï¼è·å ANativeWindow æéï¼åæ¶æé <code>raw_window_handler</code>å<code>wgpu</code>è¿è¡æ¸²æãå½ç¶è¿éè¿æå¾å¤ç»èï¼ä¾å¦ Rust ä¾§äºä»¶å¾ªç¯ç设计ççï¼åç»ææ¶é´å¯ä»¥åç¬åºä¸ç¯ç¹è¾ã</p> 1616<h2>Bug åºç°</h2> 1617<p>Bug çåºç°é¦å è¦ä» Andoird çå·æ°åçå¼å§è®²èµ·(æ ç¹å«è¯´æï¼ä»¥ä¸é¨åçå®åçæ¬å为æµè¯æºçæ¬ââAndroid 12)</p>`,readingTime:{minutes:2.26,words:677},title:"Surface View å¼å¸¸éæ¾å¼èµ·ç Segv Fault",icon:"page",order:1,type:"article"}}],["/posts/%E6%9D%82%E8%B0%88/Debug%E6%9D%82%E8%B0%88/could%20not%20dial%20endpoint%20'orderer-api.127-0-0-1.nip.io.html",{loader:()=>f(()=>import("./could not dial endpoint 'orderer-api.127-0-0-1.nip.io.html-B9S6p0tU.js"),__vite__mapDeps([112,1])),meta:{author:"chiichen",date:16975872e5,category:["æè°","Debugæè°","ç½ç»é®é¢"],tag:["Debug","ç½ç»é®é¢"],sticky:!1,excerpt:`<h2><a class="header-anchor" href="#could-not-dial-endpoint-orderer-api-127-0-0-1-nip-io-8080"><span>could not dial endpoint '</span></a><a href="http://orderer-api.127-0-0-1.nip.io:8080" target="_blank" rel="noopener noreferrer">orderer-api.127-0-0-1.nip.io:8080</a>'</h2> 1618<p>ä»å¤©å®æåºåé¾å®éªçæ¶åï¼å¨ç¨ <code>IBM-BlockChain-Platform</code> vscode æä»¶å®æå®éªå å®¹çæ¶åï¼å¨é¨ç½²æå¡å° <code>Local Docker</code> æ¶åºç°äºå¦ä¸é误</p>`,readingTime:{minutes:1.93,words:580},title:"could not dial endpoint 'orderer-api.127-0-0-1.nip.io:8080' é®é¢è§£å³",icon:"page",order:1,type:"article"}}],["/posts/%E6%9D%82%E8%B0%88/Debug%E6%9D%82%E8%B0%88/edition%E8%AE%BE%E7%BD%AE%E5%BC%95%E8%B5%B7%E7%9A%84rust%E7%BC%96%E8%AF%91%E5%99%A8%E6%8A%A5%E9%94%99.html",{loader:()=>f(()=>import("./edition设置å¼èµ·çrustç¼è¯å¨æ¥é.html-DCyO_3UL.js"),__vite__mapDeps([113,1])),meta:{author:"chiichen",date:17000064e5,category:["æè°","Debugæè°","Rust"],tag:["Rust"],sticky:!1,excerpt:`<h2>èæ¯</h2> 1619<p>交æµè¿ç¨å¯è§äº <a href="https://github.com/zesterer/chumsky/discussions/564" target="_blank" rel="noopener noreferrer">Github Discussions</a>ãèµ·å æ¯æå¨å¦ä¹ rust çä¸ä¸ª PEG(Parser Expression Generator)åºæ¥å®ç°ç¼è¯å¨çæ¶åï¼çå°äºè¿æ®µç¤ºä¾ä»£ç <a href="https://github.com/zesterer/chumsky/blob/main/examples/nano_rust.rs" target="_blank" rel="noopener noreferrer">nano_rs</a>ï¼å½ææå®å¤å¶è¿æç项ç®ä¸æ¶åçäºæ¥é</p>`,readingTime:{minutes:1.7,words:511}
1619,title:"Edition 设置å¼èµ·çä¸ä¸ª Rust ç¼è¯å¨æ¥é",icon:"page",order:1,type:"article"}}],["/posts/%E6%9D%82%E8%B0%88/Debug%E6%9D%82%E8%B0%88/%E8%A7%A3%E5%86%B3MacOS%E4%B8%AD%E6%89%BE%E4%B8%8D%E5%88%B0%E5%A4%B4%E6%96%87%E4%BB%B6%E7%9A%84%E9%97%AE%E9%A2%98.html",{loader:()=>f(()=>import("./è§£å³MacOS䏿¾ä¸å°å¤´æä»¶çé®é¢.html-BuSu4aDl.js"),__vite__mapDeps([114,1])),meta:{author:"chiichen",date:17091648e5,category:["æè°","Debugæè°"],tag:["MacOS","Debug"],sticky:!1,excerpt:`<h2>èæ¯</h2> 1620<p>å¨äº¤åç¼è¯ LVGL çæ¶åä¸ç´åºç°æ¾ä¸å°å¤´æä»¶çé®é¢ï¼ä½æ¯ Intellisense å´åè½å®ä½å°å¤´æä»¶ä½ç½®</p> 1621<h2>è§£å³æ¹æ³</h2> 1622<p>å 为 MacOS ä¸ç头æä»¶ä¸å¨<code>usr/include</code>çç®å½ä¸ï¼èæ¯å¨<code>/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/</code>ç®å½ä¸ï¼å建è¿ä¸ªè½¯è¿æ¥å就解å³äºé®é¢</p> 1623<div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">sudo</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> ln</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66"> -s</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/</span><span style="--shiki-light:#E45649;--shiki-dark:#E5C07B">*</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> /usr/local/include/</span></span></code></pre> 1624<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div></div></div>`,readingTime:{minutes:.44,words:132},title:"è§£å³MacOS䏿¾ä¸å°å¤´æä»¶çé®é¢",icon:"page",order:1,type:"article"}}],["/posts/%E6%9D%82%E8%B0%88/Debug%E6%9D%82%E8%B0%88/%E8%AE%B0%E4%B8%80%E6%AC%A1%20GP%20Debug%20%E7%9A%84%E5%BF%83%E8%B7%AF%E5%8E%86%E7%A8%8B.html",{loader:()=>f(()=>import("./è®°ä¸æ¬¡ GP Debug çå¿è·¯åç¨.html-DKgY-2V3.js"),__vite__mapDeps([115,1])),meta:{author:"chiichen",date:16976736e5,category:["æè°","Debugæè°"],tag:["General Protection","Debug"],sticky:!1,excerpt:`<h2>èæ¯</h2> 1625<p>èæ¯æ¯å¨éæå® Signal ä¹åï¼ä¸å¼å§ç¨æä»¬èªå·±ç libc æµè¯ signal åè½æ²¡æé®é¢ï¼ä½æ¯å¨ç¨ relibc æµè¯çæ¶ååºé®é¢äºï¼åºéçåå å°±æ¯ä¸ä¸ª Userland ç General Protection(GP)ï¼è¿ä¸ªä¸è¥¿æ¯ä¸ä¸ªç¡¬ä»¶å¼å¸¸ï¼é常æ¯ç±äºæ±ç¼æä»¤åºéæè å å访é®åºé导è´ï¼æ¯å¦æä¸ä¸ªæªå¯¹é½çå åå°åä½ä¸ºæä¸ªæä»¤çæä½æ°ï¼èè¿ä¸ªæä»¤è¦æ±è¿ä¸ªå åå°åæ¯ 8/16 对é½çã</p> 1626<h2>忥åæ</h2> 1627<p>卿¥ç GP ç RIP ï¼åæ±ç¼äºç¨æ·ç©ºé´çæµè¯ç¨åºä¹åï¼çå°äºå¯¹åºçæ±ç¼ä»£ç æ¯</p> 1628<div class="language-x86asm line-numbers-mode" data-highlighter="shiki" data-ext="x86asm" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-x86asm"><span class="line"><span>movapd %XMM0 0xe0(rsp)</span></span></code></pre> 1629<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div></div></div>`,readingTime:{minutes:6.71,words:2014},title:"è®°ä¸æ¬¡ GP Debug çå¿è·¯åç¨",icon:"page",order:1,type:"article"}}],["/posts/%E6%9D%82%E8%B0%88/%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/Github%E4%B8%AD%E9%85%8D%E7%BD%AECargo%E9%A1%B9%E7%9B%AE%E7%9A%84Workflow.html",{loader:()=>f(()=>import("./Githubä¸é ç½®Cargo项ç®çWorkflow.html-Bp1r6YZC.js"),__vite__mapDeps([116,1])),meta:{author:"chiichen",date:16993152e5,category:["æè°","ç¼ç¨æè°"],tag:["Github Workflow"],sticky:!1,excerpt:`<h2>项ç®èæ¯</h2> 1630<p><a href="https://github.com/RccCommunity/rcc" target="_blank" rel="noopener noreferrer">rcc ç¼è¯å¨</a></p> 1631<h2>示ä¾</h2> 1632<div class="language-yml line-numbers-mode" data-highlighter="shiki" data-ext="yml" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-yml"><span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Rust</span></span> 1633<span class="line"></span> 1634<span class="line"><span style="--shiki-light:#986801;--shiki-dark:#D19A66">on</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: [</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">push</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">, </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">pull_request</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">]</span></span> 1635<span class="line"></span> 1636<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">
1636env</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span></span> 1637<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> CARGO_TERM_COLOR</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">always</span></span> 1638<span class="line"></span> 1639<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">jobs</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span></span> 1640<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> check</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span></span> 1641<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> runs-on</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">ubuntu-latest</span></span> 1642<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> steps</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span></span> 1643<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Check out</span></span> 1644<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> uses</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">actions/checkout@v3</span></span> 1645<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Set up cargo cache</span></span> 1646<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> uses</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">actions/cache@v3</span></span> 1647<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> with</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span></span> 1648<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> path</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">|</span></span> 1649<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> ./target</span></span> 1650<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> ~/.cargo</span></span> 1651<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> key</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">debug-\${{ runner.os }}-\${{ hashFiles('rust-toolchain.toml') }}-\${{ hashFiles('Cargo.lock') }}</span></span> 1652<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> restore-keys</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">|</span></span> 1653<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> debug-\${{ runner.os }}-\${{ hashFiles('rust-toolchain.toml') }}-</span></span> 1654<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> debug-\${{ runner.os }}-</span></span> 1655<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Install Rust</span></span> 1656<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> uses</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">actions-rs/toolchain@v1</span></span> 1657<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> with</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span></span> 1658<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> profile</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">minimal</span></span> 1659<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> toolchain</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">nightly</span></span> 1660<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">
1660 override</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">true</span></span> 1661<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> components</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">rustfmt, clippy</span></span> 1662<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Lint</span></span> 1663<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> run</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">|</span></span> 1664<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cargo fmt --all -- --check</span></span> 1665<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cargo clippy -- -D warnings</span></span> 1666<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Install cargo check tools</span></span> 1667<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> run</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">|</span></span> 1668<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cargo install --locked cargo-deny || true</span></span> 1669<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cargo install --locked cargo-outdated || true</span></span> 1670<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cargo install --locked cargo-udeps || true</span></span> 1671<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cargo install --locked cargo-audit || true</span></span> 1672<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cargo install --locked cargo-pants || true</span></span> 1673<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Rustfmt</span></span> 1674<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> run</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">cargo fmt --all -- --check</span></span> 1675<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Check</span></span> 1676<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> run</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">|</span></span> 1677<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cargo deny check</span></span> 1678<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cargo outdated</span></span> 1679<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cargo udeps</span></span> 1680<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> rm -rf ~/.cargo/advisory-db</span></span> 1681<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cargo audit</span></span> 1682<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cargo pants</span></span> 1683<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Test</span></span> 1684<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> run</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">cargo test</span></span> 1685<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Build</span></span> 1686<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> run</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">cargo build --verbose</span></span></code></pre> 1687<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></div>`,readingTime:{minutes:.83,words:250},title:"Github ä¸é ç½® Cargo 项ç®ç Workflow",icon:"page",order:1,type:"article"}}],["/posts/%E6%9D%82%E8%B0%88/%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/%E5%9F%BA%E4%BA%8ENinja%E7%9A%84%E4%BB%A3%E7%A0%81Intellisense%E5%AE%9E%E8%B7%B5.html",{loader:()=>f(()=>import("./åºäºNinjaç代ç Intellisenseå®è·µ.html-RaPkYtGB.js"),__vite__mapDeps([117,1])),meta:{author:"chiichen",date:17089056e5,category:["æè°"],tag:["æè°/ç¼ç¨æè°"],sticky:!1,isOriginal:!0,excerpt:`<h2>æä»¶å®è£ </h2> 1688<p>å¨ VSCode ä¸å®è£ clangd ä½ä¸ºå端ï¼è¦è®°å¾å ³é C/C++ç Intellisense</p> 1689<h2>çæ compile_commands.json</h2> 1690<p>å¨ Ninja è¾åºç®å½ï¼ä»¥<code>out</code>为ä¾ï¼æ§è¡</p> 1691<div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">ninja</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66"> -C</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> out</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66"> -t</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">
1691 compdb</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cxx</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> cc</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> > </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">compile_commands.json</span></span></code></pre> 1692<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div></div></div>`,readingTime:{minutes:.37,words:112},title:"åºäºNinjaç代ç Intellisenseå®è·µ",icon:"page",order:1,type:"article"}}],["/posts/%E6%9D%82%E8%B0%88/%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/%E8%A7%A3%E5%86%B3%E5%9C%A8VSCode%E9%87%8C%E5%88%B7Leetcode%E7%9A%84%E9%87%8D%E5%AE%9A%E4%B9%89%E9%97%AE%E9%A2%98.html",{loader:()=>f(()=>import("./è§£å³å¨VSCodeéå·Leetcodeçéå®ä¹é®é¢.html-Pu1uauDE.js"),__vite__mapDeps([118,1])),meta:{author:"chiichen",date:17063136e5,category:["æè°"],tag:["æè°/ç¼ç¨æè°"],sticky:!1,isOriginal:!0,excerpt:`<h2>èæ¯</h2> 1693<p>æè¿å·äºå é Leetcodeï¼æè§æ²¡æè¡¥å ¨åå¾å¤ªä¸èæäºï¼æä»¥ç¨ Leetcode 宿¹æä»¶æé VSCode åï¼ç¨ xmake æå»ºï¼ç¨ clangd æä¾ä»£ç è¡¥å ¨ï¼åèµ·æ¥ä½éªå¾å¥½ï¼ä½æ¯è¿æ¯æä¸ä¸ªå°é®é¢</p> 1694<h2>é®é¢</h2> 1695<p>æ¯å¦ä»¥ä¸é»è®¤ä»£ç </p> 1696<div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-cpp"><span class="line"></span> 1697<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">// Definition for a binary tree node.</span></span> 1698<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">// struct TreeNode {</span></span> 1699<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">// int val;</span></span> 1700<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">// TreeNode *left;</span></span> 1701<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">// TreeNode *right;</span></span> 1702<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">// TreeNode() : val(0), left(nullptr), right(nullptr) {}</span></span> 1703<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">// TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}</span></span> 1704<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">// TreeNode(int x, TreeNode *left, TreeNode *right)</span></span> 1705<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">// : val(x), left(left), right(right) {}</span></span> 1706<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">// };</span></span> 1707<span class="line"></span> 1708<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">class</span><span style="--shiki-light:#C18401;--shiki-dark:#E5C07B"> Solution</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> {</span></span> 1709<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">public:</span></span> 1710<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD"> bool</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF"> isValidBST</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#C18401;--shiki-dark:#E5C07B">
1710TreeNode</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD"> *</span><span style="--shiki-light:#383A42;--shiki-light-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic">root</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) {}</span></span> 1711<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">};</span></span></code></pre> 1712<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>`,readingTime:{minutes:1.41,words:423},title:"è§£å³å¨VSCodeéå·Leetcodeçéå®ä¹é®é¢",icon:"page",order:1,type:"article"}}],["/posts/%E6%9D%82%E8%B0%88/%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/%E9%9C%87%E6%83%8A!1%E7%AD%89%E4%BA%8E0.html",{loader:()=>f(()=>import("./éæ!1çäº0.html-BTaJn2kQ.js"),__vite__mapDeps([119,1])),meta:{author:"chiichen",date:16974144e5,category:["æè°"],tag:["æè°/ç¼ç¨æè°"],sticky:!1,isOriginal:!0,excerpt:`<h2>äºæ çèµ·å </h2> 1713<p>èµ·å æ¯ææ£å¨ DragonOS å Signal ç¸å ³ç代ç ï¼ç¶å Page fault äºï¼ç»è¿ä¸ç³»åææ¥ä¹åï¼åç° RIP å¯åå¨çå¼å¥½åä¸å¤ªå¯¹ï¼æå æ ¸åç¼è¯ä¹ååç°ç¡®å®ä¸å¯¹ï¼å®æ²¡æåä»»ä½ä¸ä¸ªå½æ°å ¥å£ãå°è¿ä¸æ¥ï¼å¾èªç¶çæ³æ³æ¯æ æåäºï¼æè æäºåå 导è´äº Dirty bitãè¿éå æä¸å´ï¼å°±æ¯ DragonOS é䏿æ 帧ç RIP æ¯ <code>u64</code>ï¼è Signal ä¸ç彿°æéæ¯ <code>c_void</code>ãåè å¨ rust 䏿æ¥å¿çæ¶åä¼è¢«æ ¼å¼åæåå è¿å¶ã</p> 1714<h2>ææè¿·ç¦»</h2> 1715<p>åé¢æå°±æ³æä¹åäºå¢ï¼è¿ä¸ªå¼ä¸å¯¹ã宿¯æä¹ä¸ªä¸å¯¹æ³å¢ï¼å°±æ¯æå¦ä¸ä»£ç ï¼å°±æ¯å¾ç®åçææ¥å¿</p>`,readingTime:{minutes:2.18,words:654},title:"éæ,1=0",icon:"page",order:1,type:"article"}}],["/posts/%E6%9D%82%E8%B0%88/%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/%E9%AB%98%E7%BA%A7%E8%AF%AD%E8%A8%80%E7%9A%84%E7%BC%96%E8%AF%91-%E9%93%BE%E6%8E%A5%E5%8F%8A%E8%A3%85%E8%BD%BD%E8%BF%87%E7%A8%8B%E4%BB%8B%E7%BB%8D.html",{loader:()=>f(()=>import("./é«çº§è¯è¨çç¼è¯-龿¥åè£ è½½è¿ç¨ä»ç».html-BBVdeFB2.js"),__vite__mapDeps([120,1])),meta:{author:"chiichen",date:16974144e5,category:["æè°"],tag:["æè°/ç¼ç¨æè°"],sticky:!1,excerpt:`<h2>转载</h2> 1716<p>转载èª<a href="https://tech.meituan.com/2015/01/22/linker.html" target="_blank" rel="noopener noreferrer">ç¾å¢ææ¯å¢é</a></p> 1717<h2>å¼è¨</h2> 1718<p>éçè¶æ¥è¶å¤åè½å¼ºå¤§çé«çº§è¯è¨çåºç°ï¼å¨æå¡å¨è®¡ç®è½å䏿¯ç¶é¢çæ¡ä»¶ä¸ï¼å¾å¤åå¦ä¼éæ©å¼åæçé«ï¼åè½å¼ºå¤§çèææºæ¯æçé«çº§è¯è¨ï¼Javaï¼ï¼æè èæ¬è¯è¨ï¼Pythonï¼Phpï¼ä½ä¸ºå®ç°åè½çé¦éï¼èä¸ä¼éæ©å¼åæçä½ï¼èè¿è¡æçé«ç C/C++ ä½ä¸ºå¼åè¯è¨ãèè¿äºè¯è¨ä¸è¬æ åµä¸æ¯è¿è¡å¨èææºæè è§£éå¨ä¸ï¼èä¸éè¦ç´æ¥è·æä½ç³»ç»ç´æ¥æäº¤éã</p>`,readingTime:{minutes:29.97,words:8992},title:"é«çº§è¯è¨çç¼è¯ï¼é¾æ¥åè£ è½½è¿ç¨ä»ç»",icon:"page",order:1,type:"article"}}],["/posts/%E6%9D%82%E8%B0%88/%E9%9D%A2%E7%BB%8F/%E8%85%BE%E8%AE%AFWXG%E6%97%A5%E5%B8%B8%E5%AE%9E%E4%B9%A0%E9%9D%A2%E7%BB%8F.html",{loader:()=>f(()=>import("./è ¾è®¯WXGæ¥å¸¸å®ä¹ é¢ç».html-t4L0aPqW.js"),__vite__mapDeps([121,1])),meta:{author:"chiichen",date:17066592e5,category:["é¢ç»"],tag:["é¢ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>ç»æ</h2> 1719<p>2024-01-30 ä¸é¢<br> 17202024-01-31 äºé¢<br> 17212024-02-02 主管é¢<br> 17222024-02-04 HR é¢<br> 17232024-02-05 OC</p> 1724<h2>èæ¯</h2> 1725<p>2024-01-20 左峿çç®åï¼ä¸å¼å§æçæ¯ C++åå°å¼å WXGââå ¬ä¼å·ä¸å°ç¨åº ã2024-01-27ï¼ WXG å°ç¨åºå®¢æ·ç«¯çé¢è¯å®é®æå¯¹è¿ä¸ªæ¹åæä¸æå ´è¶£ï¼æè¯´è¿æºæå ´è¶£çï¼ç¶å约äºä¸é¢ 30 å·ä¸åï¼é¢è¯å®è¯´å¸æé¢è¯ç´§åä¸ç¹ï¼é¢è¯é¡ºå©çè¯äºåå¨å¹´å(2024-02-10)å offerã</p> 1726<p>项ç®ä¸»è¦ä¸ä¸ªæ¯ DragonOS æä½ç³»ç»å æ ¸ï¼å¦ä¸ä¸ªæ¯ä½ä»£ç å¹³å°ã</p>`,readingTime:{minutes:7.75,words:2324},title:"è ¾è®¯WXGæ¥å¸¸å®ä¹ é¢ç»",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/UML/UML%E5%A4%8D%E4%B9%A0%E7%AE%80%E8%AE%B0.html",{loader:()=>f(()=>import("./UMLå¤ä¹ ç®è®°.html-C7U9xO5g.js"),__vite__mapDeps([122,1])),meta:{author:"chiichen",date:17044992e5,category:["课ç¨ç¬è®°"],tag:["UML"],sticky:!1,isOriginal:!0,excerpt:`<h2>第ä¸ç« </h2> 1727<ul> 1728<li>åæ-è®¾è®¡ï¼æåºé®é¢-è§£å³é®é¢</li> 1729<li>
1729ç¨ä¾(use case)ï¼äººä»¬ä½¿ç¨åºç¨çæ èæè åºæ¯</li> 1730<li>é¢å模å(domain model)ï¼ä¸æ¯å¯¹è½¯ä»¶å¯¹è±¡çæè¿°ï¼æ¯å¯¹çå®ä¸çä¸çæ¦å¿µçä¸ç§å¯è§åï¼ä¹è¢«ç§°ä¸ºæ¦å¿µå¯¹è±¡æ¨¡åã</li> 1731<li>顺åºå¾(交äºå¾çä¸ç§)ï¼ç¨æ¥æè¿°è½¯ä»¶å¯¹è±¡ä¹é´çä¿¡æ¯æµ</li> 1732<li>设计类å¾(design class deagram)ï¼è¡¨è¿°è½¯ä»¶ç±»ï¼ç¼©å°ä»£ç åé¢å模åä¹é´çå·®è·ï¼è¢«ç§°ä¸ºä½è¡¨ç¤ºå·®è·(lower representational gap)</li> 1733<li>UML çä¸ç§åºç¨æ¹æ³ï¼èå¾ãèå¾(éåå·¥ç¨ï¼ä»£ç å¯è§åï¼ä¾¿äºçè§£ï¼ååå·¥ç¨ï¼æå¯¼ä»£ç çæ)ãç¼ç¨è¯è¨</li> 1734<li>ææ·å»ºæ¨¡(agile modeling)强è°äºæ UML ä½ä¸ºèå¾çæ¹å¼</li> 1735<li>UML çä¸ç§éè§å¾ï¼æ¦å¿µéè§å¾(æè¿°ç°å®ä¸çä¸çäºå¡)ï¼è§æ ¼è¯´æè½¯ä»¶éè§å¾(æè¿°è½¯ä»¶çæ¥å£çä¿¡æ¯ï¼ä½æ¯ä¸çº¦å®ç¹å®å®ç°)ï¼å®ç°éè§å¾(æè¿°å¨æå®ææ¯ä¾å¦ java ä¸çå®ç°)</li> 1736<li>ç¸å¯¹åºçï¼å¨è¿ä¸ç§å¾ä¸ç UML 类被åå«ç§°ä¸ºæ¦å¿µç±»(conceptual class)ã软件类åå®ç°ç±»</li> 1737</ul>`,readingTime:{minutes:26.8,words:8041},title:"UMLå¤ä¹ ç®è®°",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E5%A4%A7%E7%89%A9/%E7%94%B5%E7%A3%81%E5%AD%A6%E5%85%AC%E5%BC%8F.html",{loader:()=>f(()=>import("./çµç£å¦å ¬å¼.html-7ziO2EOh.js"),__vite__mapDeps([123,1])),meta:{author:"chiichen",date:1698624e6,category:["课ç¨ç¬è®°"],tag:["大å¦ç©ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>14 ç« ââéçµåº</h2> 1738<h3>1.åºä»å®å¾</h3> 1739<h3>2.ç»å ¸æ¨¡åççµåºå¼ºåº¦</h3> 1740<h4>çµå¶æåççµåºå¼ºåº¦</h4> 1741<ul> 1742<li>å¤çµåºå¯¹çµå¶æåçåç©åååä½ç¨</li> 1743</ul> 1744<h4>ç»æ£ççµåºå¼ºåº¦</h4> 1745<h4>åç¯ççµåºå¼ºåº¦</h4> 1746<h4>åçççµåºå¼ºåº¦</h4> 1747<h3>3.髿¯å®ç</h3> 1748<ul> 1749<li>å¨ç空ä¸ï¼éè¿ä»»æéåæ²é¢ççµåºå¼ºåº¦ééçäºè¯¥æ²é¢æå å´çææçµè·ç代æ°åé¤ä»¥</li> 1750</ul> 1751<h4>计ç®åºå¼ºçæ¹æ³ï¼</h4> 1752<ol> 1753<li>æ ¹æ®å å åçéè¿ç§¯åæ±åé¨å产çççµåºå¼ºåº¦ä¹å</li> 1754<li>å©ç¨é«æ¯å®ç(主è¦è§£å³çµåºå¼ºåº¦ååå叿è å ·æå¯¹ç§°æ§çé®é¢)</li> 1755<li>ç±è®¡ç®</li> 1756</ol>`,readingTime:{minutes:5.25,words:1574},title:"çµç£å¦å ¬å¼",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Chapter1-Introdction.html",{loader:()=>f(()=>import("./Chapter1-Introdction.html-B__qhFlX.js"),__vite__mapDeps([124,1])),meta:{author:"chiichen",date:16793568e5,category:["课ç¨ç¬è®°"],tag:["æä½ç³»ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>ç®å½</h2> 1757<ol> 1758<li>ä»ä¹æ¯æä½ç³»ç»</li> 1759<li>æä½ç³»ç»çåå²</li> 1760<li>æä½ç³»ç»ç¡¬ä»¶</li> 1761<li>æä½ç³»ç» zoo</li> 1762<li>æä½ç³»ç»æ¦å¿µ</li> 1763<li>ç³»ç»è°ç¨</li> 1764<li>æä½ç³»ç»ç»æ</li> 1765</ol> 1766<h2>ä»ä¹æ¯æä½ç³»ç»</h2> 1767<ul> 1768<li>æä½ç³»ç»çä½ç½®</li> 1769</ul> 1770<!--  --> 1771<h3>æä½ç³»ç»çåè½</h3> 1772<ul> 1773<li>èªä¸èä¸ï¼èææºï¼æ©å±æºï¼extended machineï¼ï¼éèåºå±å¤æä¸éçæ¥å£ï¼ç»ç¨æ·ç®æ´ï¼é«æçæ¥å£</li> 1774<li>èªä¸èä¸ï¼èµæºç®¡çå¨ï¼resource managerï¼ï¼å 许å¤ä¸ªç¨åºåæ¶è¿è¡ï¼å¤è¿ç¨ï¼ï¼è°åº¦èµæºä»¥å®ç°æ¶é´ã空é´ä¸çå¤ç¨ã管çãä¿æ¤å åå®å ¨ï¼ç®¡ç I/O 设å¤</li> 1775</ul>`,readingTime:{minutes:7.96,words:2389},title:"Chapter1 Introdction",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Chapter2-Processes-and-Threads.html",{loader:()=>f(()=>import("./Chapter2-Processes-and-Threads.html-DRJhN5_I.js"),__vite__mapDeps([125,1])),meta:{author:"chiichen",date:168048e7,category:["课ç¨ç¬è®°"],tag:["æä½ç³»ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>è¿ç¨</h2> 1776<ul> 1777<li>é¡ºåºæ§è¡ï¼åéç¨åºç³»ç»ä¸ï¼ä¸ä¸ªå ·æç¬ç«åè½çç¨åºç¬å å¤çå¨ç´å°æç»ç»æçè¿ç¨ç§°ä¸ºç¨åºçé¡ºåºæ§è¡</li> 1778<li>é¡ºåºæ§ï¼ç¨åºçç»ææ¯é¡ºåºæ§è¡ç(å¯è½æ switch æè loop)</li> 1779<li>å°éæ§ï¼ç¬å ææèµæº</li> 1780<li>å¯é夿§ï¼åå§ç¶æç¸åï¼è¿è¡å¤å°æ¬¡ç»æé½ç¸å</li> 1781<li>å¹¶åæ§è¡ï¼ææä¸è¿°ç¹æ§é½æ²¡æ</li> 1782<li>ä¸ºäºæè¿°å¹¶åçè¡ä¸ºï¼å¼å ¥äºè¿ç¨çæ¦å¿µ</li> 1783</ul> 1784<h3>è¿ç¨æ¨¡å</h3> 1785<ul> 1786<li>å¨è¿ç¨ç模åä¸ï¼ææå¯è¿è¡è½¯ä»¶é½è¢«ä»¥è¿ç¨çéåç»æèµ·æ¥</li> 1787</ul> 1788<h3>è¿ç¨æ¦å¿µ</h3>`,readingTime:{minutes:21.42,words:6425},title:"Chapter2 Processes and Threads",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Chapter3-Memory-Management.html",{loader:()=>f(()=>import("./Chapter3-Memory-Management.html-C2yO3c8r.js"),__vite__mapDeps([126,1])),meta:{author:"chiichen",date:16831584e5,category:["课ç¨ç¬è®°"],tag:["æä½ç³»ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>No Memory Abstraction</h2> 1789<ul> 1790<li>ææç¨åºå¿ 须硬ç¼ç 硬件ç©çå°å<br> 1791å åä¸ä¸å¯è½åæ¶è¿è¡ä¸¤ä¸ªåºç¨(ä¹å¯ä»¥ç¨æ¹æ³å®ç°åæ¶åæ¾ IB
1791M360)</li> 1792</ul> 1793<h3>éæéå®ä½(Static reloacation)</h3> 1794<ul> 1795<li>å¨è¿ç¨å è½½å°å åä¸çæ¶åå°±æ å°å°ä¸ä¸ªæå®çç©çå°åä¸</li> 1796<li>ä¼ç¹æ¯ä¸éè¦ç¡¬ä»¶æ¯æ</li> 1797<li>ç¼ºç¹æ¯ä¼åæ ¢å è½½çé度ï¼èä¸å è½½åä¸åè½å¨å åä¸ç§»å¨ä½ç½®ï¼é¤éåè¿è¡ä¸æ¬¡éå®ä½ï¼èä¸å è½½å¨éè¦ç¨æç§æ¹å¼æ¾å¼å°å£°æåªä¸ªæ¯å°åï¼åªä¸ªæ¯å¸¸é</li> 1798</ul> 1799<h2>Address Space</h2>`,readingTime:{minutes:14.87,words:4460},title:"Chapter3 Memory Management",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Chapter4-File-System.html",{loader:()=>f(()=>import("./Chapter4-File-System.html-BTI51gel.js"),__vite__mapDeps([127,1])),meta:{author:"chiichen",date:16847136e5,category:["课ç¨ç¬è®°"],tag:["æä½ç³»ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>æä»¶(Files)</h2> 1800<h3>ç®å½</h3> 1801<ul> 1802<li>ç®å½ä¹æ¯ä¸ä¸ªæä»¶</li> 1803<li>ç®å½ä¿åäºæä»¶ååæä»¶åå¨ä½ç½®ç对åºå ³ç³»</li> 1804</ul> 1805<h3>æä»¶å</h3> 1806<ul> 1807<li>ç±ææå(Valid name)åæ©å±å(Extension)ç»æ</li> 1808<li>è³å¤ 255 个å符</li> 1809<li>æ¯ææ°åã忝ãç¹æ®å符ï¼ä¾å¦ä¸æ¯æåå·ï¼å 为åå·å¨ windows ç³»ç»ä¸æ¯è·¯å¾åé符</li> 1810<li>Windows ä¸åºå大å°åï¼linux åºå</li> 1811</ul> 1812<h3>æä»¶ç»æ</h3> 1813<ol> 1814<li>åãåèåºå</li> 1815<li>ç®åçè®°å½ç»æï¼çº¿æ§ï¼å®é¿</li> 1816<li>夿çç»æï¼ 1817<ul> 1818<li>è®°å½æ <br> 1819</li> 1820</ul> 1821</li> 1822</ol>`,readingTime:{minutes:10.92,words:3276},title:"Chapter4 File System",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Chapter5-IO.html",{loader:()=>f(()=>import("./Chapter5-IO.html-BeL5vIwd.js"),__vite__mapDeps([128,1])),meta:{author:"chiichen",date:16860096e5,category:["课ç¨ç¬è®°"],tag:["æä½ç³»ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>I/O 硬件</h2> 1823<h3>I/O 设å¤</h3> 1824<ul> 1825<li>å设å¤ï¼æä¿¡æ¯åå¨å¨å®é¿çåä¸ï¼æ¯ä¸ªå齿èªå·±çå°åãåç大å°ä» 512B å° 32KB ä¸çãå¯ä»¥ç¬ç«è¯»åæ¯ä¸ªåãä¾å¦ï¼ç¡¬çï¼U çç</li> 1826<li>å符设å¤ï¼åéæè æ¥æ¶ä¸ä¸ªå符åºåï¼ä¸å¯å¯»åï¼ä¹æ²¡æ seek æä½ãä¾å¦ï¼æå°æºãç½å¡ãé¼ æ çã</li> 1827</ul> 1828<h3>è®¾å¤æ§å¶å¨</h3> 1829<ul> 1830<li>æçæ¯éæå¨ä¸»æ¿ä¸ï¼æçæ¯ä»å¤é¨æå ¥çãä¾å¦ PCIe ææ§½ä¸çæå ¥é¨ä»¶ãé常就æ¯è®¾å¤æ§å¶å¨(controller)æè å«å设å¤éé å¨(adapter)</li> 1831</ul> 1832<figure><figcaption>io硬件æ§å¶å¨.png</figcaption></figure>`,readingTime:{minutes:9.44,words:2832},title:"Chapter5 IO",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Chapter6-Deadlocks.html",{loader:()=>f(()=>import("./Chapter6-Deadlocks.html-TQLDNWF4.js"),__vite__mapDeps([129,1])),meta:{author:"chiichen",date:16822944e5,category:["课ç¨ç¬è®°"],tag:["æä½ç³»ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>èµæº</h2> 1833<h3>åç±»</h3> 1834<ul> 1835<li>坿¢å å¼(preemptable)èµæºï¼å¯ä»¥è¢«ä»ä¸ä¸ªè¿ç¨ä¸æ¿èµ°èä¸å¸¦æ¥è´é¢å½±å(ä¾å¦ CPUãå å)ã</li> 1836<li>ä¸å¯æ¢å å¼(Nonpreemptable)èµæºï¼ä¼å¯¼è´è¿ç¨å¤±è´¥å¦æè¢«æ¿èµ°(ä¾å¦ CD å»å½æº)ã</li> 1837</ul> 1838<h3>èµæºçåç¨</h3> 1839<ul> 1840<li>æ¯ä¸ªè¿ç¨ä¼æä»¥ä¸æ¥éª¤å©ç¨èµæºï¼</li> 1841</ul> 1842<ol> 1843<li>请æ±èµæº</li> 1844<li>使ç¨èµæº</li> 1845<li>éæ¾èµæº</li> 1846</ol> 1847<ul> 1848<li>å¦æè¯·æ±èµæºè¢«æç»å°±ä¸å®è¦çå¾ ï¼è¯·æ±èµæºçè¿ç¨é»å¡ï¼å¯è½ä¼å æ¤ fail with error code</li> 1849</ul>`,readingTime:{minutes:8.37,words:2512},title:"Chapter6 Deadlocks",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter1%20Introduction.html",{loader:()=>f(()=>import("./Chapter1 Introduction.html-BGLjWyB0.js"),__vite__mapDeps([130,1])),meta:{author:"chiichen",date:1698624e6,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>Database Management System (DBMS)</h2> 1850<ul> 1851<li>DBMS å æ¬ï¼ 1852<ol> 1853<li>ç¸å ³æ°æ®çéå</li> 1854<li>è®¿é®æ°æ®çç¨åºé</li> 1855<li>ä¸ä¸ªæ¢æ¹ä¾¿å髿ç使ç¨ç¯å¢</li> 1856</ol> 1857</li> 1858</ul> 1859<h2>æä»¶ç³»ç»å卿°æ®ç缺ç¹</h2> 1860<ul> 1861<li> 1862<p>æ°æ®åä½åä¸ä¸è´ï¼å¤ç§æä»¶æ ¼å¼ï¼ä¸åæä»¶ä¸çä¿¡æ¯éå¤</p> 1863</li> 1864<li> 1865<p>è®¿é®æ°æ®å°é¾ï¼éè¦ç¼åæ°ç¨åºæ¥æ§è¡æ¯é¡¹æ°ä»»å¡</p> 1866</li> 1867<li> 1868<p>æ°æ®é离ââå¤ä¸ªæä»¶åæ ¼å¼</p> 1869</li> 1870<li> 1871<p>宿´æ§é®é¢ ï¼</p> 1872<ul> 1873<li>宿´æ§çº¦æï¼ä¾å¦ï¼å¸æ·ä½é¢ > 0ï¼è¢«âéèâå¨ç¨åºä»£ç ä¸ï¼è䏿¯æç¡®å£°æ</li> 1874<li>å¾é¾æ·»å æ°ççº¦æææ´æ¹ç°æç约æ</li> 1875</ul> 1876</li> 1877<li> 1878<p>æ´æ°çååæ§</p> 1879<ul> 1880<li>æ éå¯è½ä¼ä½¿æ°æ®åºå¤äºä¸æ§è¡çé¨åæ´æ°ä¸ä¸è´çç¶æ</li> 1881<li>示ä¾ï¼èµéä»ä¸ä¸ªè´¦æ·è½¬ç§»å°å¦ä¸ä¸ªè´¦æ·è¦ä¹å®æï¼è¦ä¹æ ¹æ¬ä¸åç</li> 1882</ul> 1883</li> 1884<li> 1885<p>å¤ç¨æ·å¹¶å访é®</p> 1886<ul> 1887<li>å¹¶å访é®ä»¥æé«æ§è½</li> 1888<li>ä¸åæ§å¶çå¹¶å访é®å¯è½ä¼å¯¼è´ä¸ä¸è´</li> 1889<li>示ä¾ï¼ä¸¤ä¸ªäººåæ¶è¯»åä½é¢ï¼ä¾å¦ 100ï¼å¹¶éè¿ææ¬¾ï¼ä¾å¦æ¯äºº 50ï¼æ¥æ´æ°ä½é¢</li> 1890</ul> 1891</li> 1892<li> 1893<p>å®å ¨é®é¢ é¾ä»¥åç¨æ·æä¾å¯¹é¨åï¼ä½ä¸æ¯å ¨é¨ï¼æ°æ®çè®¿é®æé</p> 1894</li> 1895</ul>`,readingTime:{minutes:5.23,words:1569},title:"Chapter1 Introduction",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter10%20Storage%20and%20File%20Structure.html",{loader:()=>f(()=>import("./Chapter10 Storage and File Structure.html-C4zoWWkk.js"),__vite__mapDeps([131,1])),meta:{author:"chiichen",date:17038944e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>ç©çåå¨åªä»(Physical Storage Media)</h2> 1896<ul> 1897<li>ç£ç 1898<ul> 1899<li>1 block = å¤ä¸ªè¿ç»ç sector</li> 1900<li>1 个æä»¶(å叿件é¤å¤)= å¤ä¸ªè¿ç»ç block</li> 1901</ul> 1902</li> 1903<li>
1903ç£å¤´ä¸ç£ç 1904<ul> 1905<li>ç£å¤´å¾ç£çè¯»åæ°æ®çæå°å使¯ sector</li> 1906</ul> 1907</li> 1908<li>å åä¸ç£ç 1909<ul> 1910<li>å åä¸ç£ç交æ¢ä¿¡æ¯çæå°å使¯ block</li> 1911</ul> 1912</li> 1913<li>å¼é=坻鿶é´+ æè½¬æ¶é´+ä¼ è¾æ¶é´</li> 1914<li>æ°æ®åºåªå ³æ³¨: 1915<ul> 1916<li>坻鿬¡æ°</li> 1917<li>ä¼ è¾ç£çå个æ°</li> 1918</ul> 1919</li> 1920<li>设访é®çç£çå便¬¡å嫿¯: B1, B2 1921<ul> 1922<li>坻鿬¡æ° : 妿 B1, B2 ç¸é», å寻é 1 次</li> 1923<li>ä¼ è¾ç£çåç个æ°: æ 论ç¸é»ä¸å¦, 齿¯ 2.<br> 1924</li> 1925</ul> 1926</li> 1927</ul>`,readingTime:{minutes:4.76,words:1428},title:"Chapter10 Storage and File Structure",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter11%20Indexing%20and%20Hashing.html",{loader:()=>f(()=>import("./Chapter11 Indexing and Hashing.html-BuXIkMxb.js"),__vite__mapDeps([132,1])),meta:{author:"chiichen",date:17039808e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>åºæ¬æ¦å¿µ</h2> 1928<ul> 1929<li>ç´¢å¼æºå¶ç¨äºå é对æéæ°æ®ç访é®ãä¾å¦ï¼å¾ä¹¦é¦ä¸çä½è ç®å½ã</li> 1930<li>æç´¢é®ï¼Search Keyï¼æ¯ç¨äºå¨æä»¶ä¸æ¥æ¾è®°å½çä¸ç»å±æ§ã</li> 1931<li>ç´¢å¼æä»¶ç±è®°å½ï¼ç§°ä¸ºç´¢å¼æ¡ç®ï¼ç»æï¼å½¢å¼ä¸ºï¼</li> 1932</ul> 1933<table> 1934<thead> 1935<tr> 1936<th>search-key</th> 1937<th>pointer</th> 1938</tr> 1939</thead> 1940</table> 1941<ul> 1942<li>ç´¢å¼æä»¶é常æ¯åå§æä»¶å°å¾å¤ã</li> 1943<li>åºæ¬ç两ç§ç´¢å¼ç±»åï¼ 1944<ul> 1945<li>æåºç´¢å¼ï¼Ordered indicesï¼ï¼æç´¢é®ææåºé¡ºåºåå¨ã</li> 1946<li>åå¸ç´¢å¼ï¼Hash indicesï¼ï¼ä½¿ç¨âåå¸å½æ°âï¼å°æç´¢é®åååå¸å¨âæ¡¶âä¸ã</li> 1947</ul> 1948</li> 1949</ul>`,readingTime:{minutes:14.89,words:4466},title:"Chapter11 Indexing and Hashing",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter12%20Query%20Processing.html",{loader:()=>f(()=>import("./Chapter12 Query Processing.html-BwshKEqi.js"),__vite__mapDeps([133,1])),meta:{author:"chiichen",date:17039808e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ¥è¯¢å¤ççåºæ¬æ¥éª¤</h2> 1950<ol> 1951<li>è¯æ³åæä¸ç¿»è¯</li> 1952<li>ä¼å</li> 1953<li>æ§è¡<br> 1954</li> 1955</ol> 1956<h3>è¯æ³åæä¸ç¿»è¯</h3> 1957<ul> 1958<li>å°æ¥è¯¢è½¬æ¢ä¸ºå é¨å½¢å¼ï¼ç¶åå°å ¶è½¬æ¢ä¸ºå ³ç³»ä»£æ°ã</li> 1959<li>è§£æå¨æ£æ¥è¯æ³ï¼éªè¯å ³ç³»ã</li> 1960</ul> 1961<h3>æ§è¡</h3> 1962<ul> 1963<li>æ¥è¯¢æ§è¡å¼ææ¥æ¶æ¥è¯¢æ§è¡è®¡åï¼æ§è¡è¯¥è®¡åï¼å¹¶è¿åæ¥è¯¢çç»æã</li> 1964</ul> 1965<h3>ä¼å</h3> 1966<ul> 1967<li>å ³ç³»ä»£æ°è¡¨è¾¾å¼å¯è½æè®¸å¤çä»·ç表达å¼ã<br> 1968ä¾å¦ï¼çä»·äº ã</li> 1969<li>æ¯ä¸ªå ³ç³»ä»£æ°æä½å¯ä»¥ä½¿ç¨å¤ç§ä¸åçç®æ³è¿è¡æ§è¡ãç¸åºå°ï¼å ³ç³»ä»£æ°è¡¨è¾¾å¼å¯ä»¥ä»¥å¤ç§æ¹å¼è¿è¡æ§è¡ãæå®è¯¦ç»æ§è¡çç¥ç注é表达å¼ç§°ä¸º<code>æ§è¡è®¡åæè®¡ç®è®¡å(evaluation-plan)</code>ã</li> 1970<li>ä¾å¦ï¼å¯ä»¥ä½¿ç¨èªæ°´ç´¢å¼æ¥æ¥æ¾èªæ°´å°äº 75000 ç讲å¸ï¼æè æ§è¡å®æ´çå ³ç³»æ«æå¹¶ä¸¢å¼èªæ°´å¤§äºçäº 75000 ç讲å¸ã</li> 1971<li><code>æ¥è¯¢ä¼å(Query Optimization)</code>ï¼å¨ææçä»·çæ§è¡è®¡åä¸éæ©ææ¬æä½ç计åã</li> 1972<li>ææ¬æ¯ä½¿ç¨æ°æ®åºç®å½ä¸çç»è®¡ä¿¡æ¯è¿è¡ä¼°ç®çã</li> 1973<li>ä¾å¦ï¼æ¯ä¸ªå ³ç³»ä¸çå ç»æ°éãå ç»å¤§å°çã</li> 1974</ul>`,readingTime:{minutes:19.39,words:5817},title:"Chapter12 Query Processing",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter13%20Query%20Optimization.html",{loader:()=>f(()=>import("./Chapter13 Query Optimization.html-DuMUukBk.js"),__vite__mapDeps([134,1])),meta:{author:"chiichen",date:17039808e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>ç®ä»</h2> 1975<ul> 1976<li>ä¼åç»å®æ¥è¯¢çæ¹æ³ï¼ 1977<ul> 1978<li>ç价表达å¼(æ´ä½ä¼å)</li> 1979<li>对æ¯ä¸ªæä½çä¸åç®æ³(å±é¨ä¼å)</li> 1980</ul> 1981</li> 1982<li>æ§è¡è®¡å(evaluation plan)å®ä¹äºæ¯ä¸ªæä½è¦ç¨ä»ä¹ç®æ³å®æä»¥åå¦ä½åè°æä½çæ§è¡</li> 1983<li>æ¥è¯¢çä¸åè¯ä¼°è®¡åä¹é´çææ¬å·®å¼å¯è½æ¯å·¨å¤§çãä¾å¦ï¼å¨æäºæ åµä¸å¯è½æ¯ç§çº§å«ä¸å¤©çº§å«çå·®å¼ã</li> 1984<li>åºäºææ¬çæ¥è¯¢ä¼åçæ¥éª¤å¦ä¸ï¼ 1985<ol> 1986<li>使ç¨çä»·è§åçæé»è¾ä¸çä»·ç表达å¼ã</li> 1987<li>
1987对çæç表达å¼è¿è¡æ³¨éï¼ä»¥è·åå¤éçæ¥è¯¢è®¡åã</li> 1988<li>æ ¹æ®ä¼°è®¡çææ¬éæ©æä¾¿å®ç计åã</li> 1989</ol> 1990</li> 1991<li>è®¡åææ¬çä¼°ç®åºäºä»¥ä¸å ç´ ï¼ 1992<ul> 1993<li>å ³ç³»çç»è®¡ä¿¡æ¯ï¼ä¾å¦å ç»æ°éï¼å±æ§çä¸å弿°éçã</li> 1994<li>ä¸é´ç»æçç»è®¡ä¼°è®¡ï¼ç¨äºè®¡ç®å¤æè¡¨è¾¾å¼çææ¬ã</li> 1995<li>使ç¨ç»è®¡æ°æ®è®¡ç®çç®æ³çææ¬å ¬å¼ã</li> 1996</ul> 1997</li> 1998</ul>`,readingTime:{minutes:4.6,words:1381},title:"Chapter13 Query Optimization",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter14%20Transactions.html",{loader:()=>f(()=>import("./Chapter14 Transactions.html-DyNZsLXI.js"),__vite__mapDeps([135,1])),meta:{author:"chiichen",date:17039808e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>ç®ä»</h2> 1999<ul> 2000<li><code>äºå¡(Transaction)</code>æ¯ç¨åºæ§è¡çä¸ä¸ªåä½ï¼å®è®¿é®å¹¶å¯è½æ´æ°åç§æ°æ®é¡¹ã</li> 2001<li>ä¾å¦ï¼ä»è´¦æ· A 转账 50 ç¾å å°è´¦æ· B çäºå¡ï¼ 2002<ol> 2003<li>读å(A)</li> 2004<li>A := A - 50</li> 2005<li>åå ¥(A)</li> 2006<li>读å(B)</li> 2007<li>B := B + 50</li> 2008<li>åå ¥(B)</li> 2009</ol> 2010</li> 2011<li>å¤çç两个主è¦é®é¢æ¯ï¼ 2012<ul> 2013<li>åç§ç±»åçæ éï¼å¦ç¡¬ä»¶æ éåç³»ç»å´©æºã</li> 2014<li>å¤ä¸ªäºå¡çå¹¶åæ§è¡ã</li> 2015</ul> 2016</li> 2017</ul>`,readingTime:{minutes:13.07,words:3920},title:"Chapter14 Transactions",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter15%20Concurrency%20Control.html",{loader:()=>f(()=>import("./Chapter15 Concurrency Control.html-BLTQuU_A.js"),__vite__mapDeps([136,1])),meta:{author:"chiichen",date:17040672e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>åºäºéçåè®®ï¼Lock-Based Protocolsï¼</h2> 2018<ul> 2019<li>鿝ä¸ç§æ§å¶å¯¹æ°æ®é¡¹å¹¶å访é®çæºå¶ã</li> 2020<li>æ°æ®é¡¹å¯ä»¥ä»¥ä¸¤ç§æ¨¡å¼è¿è¡éå®ï¼ 2021<ol> 2022<li>ç¬å ï¼Xï¼æ¨¡å¼ï¼æ°æ®é¡¹æ¢å¯ä»¥è¯»åä¹å¯ä»¥åå ¥ãä½¿ç¨ lock-X æä»¤è¯·æ± X éã</li> 2023<li>å ±äº«ï¼Sï¼æ¨¡å¼ï¼æ°æ®é¡¹åªè½è¯»åãä½¿ç¨ lock-S æä»¤è¯·æ± S éã</li> 2024</ol> 2025</li> 2026<li>é请æ±åéç»å¹¶åæ§å¶ç®¡çå¨ãåªæå¨è¯·æ±è¢«æäºåï¼äºå¡æè½ç»§ç»è¿è¡ã</li> 2027</ul> 2028<figure><figcaption>äºå¡æ§è¡éå®ç示ä¾</figcaption></figure>`,readingTime:{minutes:10.09,words:3028},title:"Chapter15 Concurrency Control",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter16%20Recovery%20System.html",{loader:()=>f(()=>import("./Chapter16 Recovery System.html-DrbLf4jM.js"),__vite__mapDeps([137,1])),meta:{author:"chiichen",date:17040672e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ éåç±»</h2> 2029<ul> 2030<li>äºå¡æ éï¼ 2031<ul> 2032<li>é»è¾é误ï¼ç±äºæäºå é¨é误æ¡ä»¶ï¼ä¾å¦ A çä½é¢ä¸è¶³ï¼æ æ³æ£æ¬¾ï¼ï¼äºå¡æ æ³å®æã</li> 2033<li>ç³»ç»éè¯¯ï¼æ°æ®åºç³»ç»å¿ é¡»ç±äºé误æ¡ä»¶ï¼ä¾å¦æ»éï¼ç»æ¢æ´»å¨äºå¡ã</li> 2034</ul> 2035</li> 2036<li>ç³»ç»å´©æºï¼ 2037<ul> 2038<li>ç±äºçµæºæ éæå ¶ä»ç¡¬ä»¶æè½¯ä»¶æ éï¼ç³»ç»å´©æºã</li> 2039</ul> 2040</li> 2041<li>忢æ éåè®¾ï¼ 2042<ul> 2043<li>å设éæå¤±æ§åå¨å 容å¨ç³»ç»å´©æºæ¶ä¸ä¼è¢«ç ´åã</li> 2044<li>æ°æ®åºç³»ç»å ·æè®¸å¤å®æ´æ§æ£æ¥æ¥é²æ¢ç£çæ°æ®çæåã</li> 2045</ul> 2046</li> 2047<li>ç£çæ éï¼ 2048<ul> 2049<li>ç£å¤´ç¢°ææç±»ä¼¼çç£çæ éç ´åäºå ¨é¨æé¨åç£çåå¨ã</li> 2050<li>åè®¾ç ´åæ¯å¯æ£æµçï¼ç£ç驱å¨å¨ä½¿ç¨æ ¡éªåæ¥æ£æµæ éã</li> 2051</ul> 2052</li> 2053</ul>`,readingTime:{minutes:13.34,words:4001},title:"Chapter16 Recovery System",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter2%20Introduction%20to%20Relational%20Model.html",{loader:()=>f(()=>import("./Chapter2 Introduction to Relational Model.html-CWDePNbl.js"),__vite__mapDeps([138,1])),meta:{author:"chiichen",date:17036352e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>å ³ç³»(Relation)</h2> 2054<figure><figcaption>Example of a Relation</figcaption></figure> 2055<h3>屿§å¼(Attribute Types)</h3> 2056<ul> 2057<li>æ¯ä¸ªå±æ§å 许çå¼éåç§°ä¸ºå±æ§çå(domain)ã</li> 2058<li>屿§å¼ï¼é常ï¼è¦æ±æ¯åå(atomic)çï¼å³ä¸å¯åå²çã</li> 2059<li>ç¹æ®å¼ null æ¯æ¯ä¸ªåçæåã</li> 2060<li>null å¼å¨è®¸å¤æä½çå®ä¹ä¸å¼èµ·äºå¤ææ§ã</li> 2061</ul> 2062<h3>å ³ç³»æ¨¡å¼åå®ä¾(Relation Schema and Instance)</h3>`,readingTime:{minutes:3.32,words:995},title:"Chapter2 Introduction to Relational Model",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter3%20Introduction%20to%20SQL.html",{loader:()=>f(()=>import("./Chapter3 Introduction to SQL.html-PcqjKvp6.js"),__vite__mapDeps([139,1])),meta:{author:"chiichen",date:17036352e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>SQL æ°æ®å®ä¹è¯è¨ï¼data-definition language,DDLï¼</h2> 2063<ul> 2064<li>
2064SQL æ°æ®å®ä¹è¯è¨ï¼ data-definition language ,DDLï¼å 许æå®å ³äºå ³ç³»çä¿¡æ¯ï¼å æ¬ï¼ 2065<ul> 2066<li>æ¯ä¸ªå ³ç³»ç模å¼ã</li> 2067<li>æ¯ä¸ªå±æ§å ³èçå¼åã</li> 2068<li>宿´æ§çº¦æã</li> 2069<li>æ¤å¤ï¼æä»¬ç¨åå°çå°ï¼è¿å¯ä»¥å æ¬å ¶ä»ä¿¡æ¯ï¼ä¾å¦ï¼ 2070<ul> 2071<li>æ¯ä¸ªå ³ç³»è¦ç»´æ¤çç´¢å¼éåã</li> 2072<li>æ¯ä¸ªå ³ç³»çå®å ¨æ§åææä¿¡æ¯ã</li> 2073<li>æ¯ä¸ªå ³ç³»å¨ç£çä¸çç©çåå¨ç»æã</li> 2074</ul> 2075</li> 2076</ul> 2077</li> 2078<li>ç®èè¨ä¹ï¼SQL çæ°æ®å®ä¹è¯è¨ï¼DDLï¼æä¾äºä¸ç§å®ä¹å ³ç³»çä¿¡æ¯çæ¹å¼ï¼å æ¬å ³ç³»æ¨¡å¼ã屿§çå¼å以åä¸å ³ç³»ç¸å ³ç宿´æ§çº¦æçãå®è¿å 许æå®ç´¢å¼ãå®å ¨æ§åææä¿¡æ¯ä»¥åå ³ç³»å¨ç£çä¸çç©çåå¨ç»æã</li> 2079</ul>`,readingTime:{minutes:.86,words:259},title:"Chapter3 Introduction to SQL",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter6%20Formal%20Relational%20Query%20Languages.html",{loader:()=>f(()=>import("./Chapter6 Formal Relational Query Languages.html-C-CITR3-.js"),__vite__mapDeps([140,1])),meta:{author:"chiichen",date:1703808e6,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>åç±»</h2> 2080<p>å ³ç³»ä»£æ°ï¼Relational Algebraï¼ãå ç»å ³ç³»æ¼ç®ï¼Tuple Relational Calculusï¼ååå ³ç³»æ¼ç®ï¼Domain Relational Calculusï¼æ¯ç¨äºå ³ç³»æ°æ®åºçä¸åæ¥è¯¢è¯è¨åå½¢å¼ãå®ä»¬ç主è¦åºå«å¦ä¸ï¼</p> 2081<ol> 2082<li> 2083<p>å ³ç³»ä»£æ°ï¼Relational Algebraï¼ï¼<br> 2084å ³ç³»ä»£æ°æ¯ä¸ç§åºäºéåè®ºçæ¥è¯¢è¯è¨ï¼ç¨äºæä½å ³ç³»æ°æ®åºä¸çå ³ç³»ãå®ä½¿ç¨ä¸ç»æä½ç¬¦ï¼å¦éæ©ï¼selectionï¼ãæå½±ï¼projectionï¼ãè¿æ¥ï¼joinï¼ãå¹¶ï¼unionï¼ãå·®ï¼differenceï¼çæ¥æ§è¡å ³ç³»æä½ãå ³ç³»ä»£æ°æä¾äºä¸ç§å½¢å¼åçæ¹æ³æ¥æè¿°åæä½å ³ç³»æ°æ®åºä¸çå ³ç³»ã</p> 2085</li> 2086<li> 2087<p>å ç»å ³ç³»æ¼ç®ï¼Tuple Relational Calculusï¼ï¼<br> 2088å ç»å ³ç³»æ¼ç®æ¯ä¸ç§åºäºé»è¾çæ¥è¯¢è¯è¨ï¼ç¨äºæè¿°å ³ç³»æ°æ®åºä¸çæ¥è¯¢ãå®ä½¿ç¨é»è¾è°è¯ï¼predicateï¼æ¥æè¿°æéçå ç»éåãå ç»å ³ç³»æ¼ç®çæ¥è¯¢ç»ææ¯æ»¡è¶³æå®è°è¯çå ³ç³»ä¸çå ç»éåãå ç»å ³ç³»æ¼ç®æè¿°äºæéçç»æï¼è䏿¯å¦ä½è®¡ç®ç»æã</p> 2089</li> 2090<li> 2091<p>åå ³ç³»æ¼ç®ï¼Domain Relational Calculusï¼ï¼<br> 2092åå ³ç³»æ¼ç®ä¹æ¯ä¸ç§åºäºé»è¾çæ¥è¯¢è¯è¨ï¼ç¨äºæè¿°å ³ç³»æ°æ®åºä¸çæ¥è¯¢ãå®ä½¿ç¨é»è¾è°è¯æ¥æè¿°æéç屿§éåãåå ³ç³»æ¼ç®çæ¥è¯¢ç»ææ¯æ»¡è¶³æå®è°è¯çå ³ç³»ä¸ç屿§éåãåå ³ç³»æ¼ç®æè¿°äºæéç屿§ï¼è䏿¯å¦ä½è®¡ç®ç»æã</p> 2093</li> 2094</ol>`,readingTime:{minutes:6.61,words:1982},title:"Chapter6 Formal Relational Query Languages",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter7%20Entity-Relationship%20Model.html",{loader:()=>f(()=>import("./Chapter7 Entity-Relationship Model.html-C3dlxV0o.js"),__vite__mapDeps([141,1])),meta:{author:"chiichen",date:1703808e6,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>建模</h2> 2095<ul> 2096<li>ä¸ä¸ªæ°æ®åºå¯ä»¥è¢«å»ºæ¨¡ä¸ºï¼ 2097<ul> 2098<li>å®ä½çéåï¼</li> 2099<li>å®ä½ä¹é´çå ³ç³»ã</li> 2100</ul> 2101</li> 2102</ul> 2103<h3>å®ä½é</h3> 2104<ul> 2105<li>å®ä½(entity)æ¯åå¨ç对象ï¼å¹¶ä¸å¯ä¸å ¶ä»å¯¹è±¡åºå弿¥ã 2106<ul> 2107<li>ä¾å¦ï¼å ·ä½ç人ãå ¬å¸ãäºä»¶ãæ¤ç©ã</li> 2108</ul> 2109</li> 2110<li>å®ä½å ·æå±æ§(attribute)ã 2111<ul> 2112<li>ä¾å¦ï¼äººæå§ååå°åã</li> 2113</ul> 2114</li> 2115<li>å®ä½é(entity set)æ¯ä¸ç»å ·æç¸å屿§çåç±»å®ä½çéåã 2116<ul> 2117<li>ä¾å¦ï¼ææäººãå ¬å¸ãæ æ¨ã忥çéåã<br> 2118</li> 2119</ul> 2120</li> 2121</ul>`,readingTime:{minutes:12.77,words:3832},title:"Chapter7 Entity-Relationship Model",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter8%20Relational%20Database%20Design.html",{loader:()=>f(()=>import("./Chapter8 Relational Database Design.html-DaWwIQxe.js"),__vite__mapDeps([142,1])
2121),meta:{author:"chiichen",date:17038944e5,category:["课ç¨ç¬è®°"],tag:["æ°æ®åº"],sticky:!1,isOriginal:!0,excerpt:`<h2>åè§£(decompose)</h2> 2122<figure><figcaption>Example</figcaption></figure> 2123<ul> 2124<li>妿åè§£åæ æ³é建åå§ä¿¡æ¯ï¼é£ä¹å°±æ¯ææåè§£(Lossy Decomposition)ï¼åä¹åä¸ºæ æåè§£(Lossless-Join Decomposition)<br> 2125<br> 2126</li> 2127<li>æä»¥æä»¬éè¦ä¸ä¸ªç论æ¥åè¯æä»¬æä¹åççåè§£å ³ç³»ã好çåè§£è¦åå°ï¼ 2128<ol> 2129<li>æ æåè§£</li> 2130<li>ä¾èµä¿å</li> 2131</ol> 2132</li> 2133<li>BCNF åè§£å¯ä»¥ä¿è¯æ æï¼3NF å¯ä»¥ä¿è¯ä¾èµä¿åï¼ä½æ¯ 3NF æ æ³ä¿è¯æ²¡æåä½ï¼å æ¤éè¦å¨ BCNF å 3NF é´æè¡¡</li> 2134</ul>`,readingTime:{minutes:20.15,words:6045},title:"Chapter8 Relational Database Design",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%94%B5%E5%B7%A5/%E7%94%B5%E5%B7%A5%E5%A4%8D%E4%B9%A0%E7%AC%94%E8%AE%B0.html",{loader:()=>f(()=>import("./çµå·¥å¤ä¹ ç¬è®°.html-D67YF8SQ.js"),__vite__mapDeps([143,1])),meta:{date:1704537535e3,excerpt:`<p>#ç¬è®°/å¤ä¹ ç¬è®°</p> 2135<h1>第ä¸ç« çµè·¯çåºæ¬æ¦å¿µä¸åºæ¬å®å¾</h1> 2136<h2>1.åèæ¹åãåèææ§ãå ³èä¸éå ³è</h2> 2137<ul> 2138<li>çµæµçæ¹åå¹¶éå®é æ¹åï¼èæ¯åå®çï¼çµåçææ§ä¹å¹¶éå®é ææ§ã</li> 2139<li>å ³èï¼çµæµä»çµåçæ£ææµå ¥</li> 2140<li>éå ³èï¼çµæµä»çµåçè´ææµå ¥<br> 2141ï¼å为åèæ¹å/ææ§)<br> 2142![[å ³èä¸éå ³è]]</li> 2143</ul> 2144<h2>2.欧å§å®å¾</h2> 2145<ul> 2146<li>å ³èï¼</li> 2147<li>éå ³èï¼</li> 2148<li array=""> $$<br> 2149\\begin{array}{c}Y\\rightarrow\\Delta:R_1=\\frac{R_bR_c}{R_a+R_b+R_c}, R_2=\\frac{R_aR_c}{R_a+R_b+R_c}, R_3=\\frac{R_aR_b}{R_a+R_b+R_c}\\<br> 2150\\Delta\\rightarrow Y: R_a=\\frac{R_1 R_2 + R_2 R_3 + R_3 R_1}{R_1}, R_b=\\frac{R_1 R_2 + R_2 R_3 + R_3 R_1}{R_2}, Rc=\\frac{R1_R2 + R2_R3 + R3_R1}{RC}<br> 2151\\end</li> 2152</ul>`,readingTime:{minutes:14.11,words:4234},title:"第ä¸ç« çµè·¯çåºæ¬æ¦å¿µä¸åºæ¬å®å¾",type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/Chapter0%20%E5%89%8D%E8%A8%80.html",{loader:()=>f(()=>import("./Chapter0 åè¨.html-LuZz2PZL.js"),__vite__mapDeps([144,1])),meta:{author:"chiichen",date:16969824e5,category:["课ç¨ç¬è®°"],tag:["ç¼è¯åç"],sticky:!0,isOriginal:!0,excerpt:`<h2>åè¨</h2> 2153<h3>åç»å工软é¢å¦ç</h3> 2154<ol> 2155<li>2021 级ç¼è¯åçèè¯é¾åº¦è¾ä½ï¼å¤ä¹ ä¼å 级ä½ï¼ä¸å»ºè®®è±å¤ªå¤æ¶é´åå¤ãè½ç¶æ ¹æ®èå¸ä¸å(以å¾èå¸ä¸ºä¾)ï¼å¯è½ä¸è¯¾çå 容æ¯è¾æ·±å ¥ï¼è®©å¦ç产çäºè¿é¨ç§ç®é¾åº¦å¾å¤§çéè§ãè¯ç¶è¦å½»åºçè§£ç¼è¯åçéè¦è±è´¹å¤§éçæ¶é´ï¼ä½èè¯å å®¹åºæ¬é½æ¯ç®åçç®æ³ï¼åªè¦æå 个éè¦ç®æ³çè§£äºï¼é½ä¸éè¦ææ¯ä¸ªæ¦å¿µæçéå¸¸æ¸ æ¥ï¼èè¯é½åºæ¬ä¸ä¼åºé®é¢ã</li> 2156<li>ç¼è¯åçå大精深ï¼ä½ä¸ºè®¡ç®æºåºå±è®¾è®¡çä¸é¨åï¼è¯¾å 䏿æçå 容å°ä¹åå°ï¼çè³å¯ä»¥è¯´åä¸äºå·¥ç¨å®è·µæ¯<code>严éè±é©</code>çï¼æ¯å¦ä¸è¯¾ä¼è±å¾å¤§çç²¾åæä½ èªå¨æºåèªå¨æºçç¸å ³ç®æ³ï¼ä½æ¯å¨å®é å·¥ç¨è¿ç¨ä¸ï¼æä»¬æè¯¸å¦ <code>lexer</code> çå·¥å ·å¸®æä»¬å®æè¿ä¸ªå·¥ä½ï¼èä¸å¦ææ¯ç¼åä¸ä¸ªç®åçè¯æ³åæå¨ï¼çè³åªéè¦ç®åç <code>æé¿å串å¹é </code> å°±è½å®ç°ä¸ä¸ªè¯æ³åæãä» å课å ä¸å¦çå 容ï¼å¤§æ¦çè¿æä¹åä¸ä¸ª TinyC(ç²¾ç®çç C è¯è¨) é½ä¸ç¥éãæå ´è¶£çåå¦å¯ä»¥è®¤çé»ç ä¸çªï¼è¿å¯¹ç¼ç¨è½å伿æå¤§çæé«ã</li> 2157</ol>`,readingTime:{minutes:1.59,words:478},title:"Chapter0 åè¨",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/Chapter1%20%E7%BC%96%E8%AF%91%E5%99%A8%E7%BB%84%E6%88%90.html",{loader:()=>f(()=>import("./Chapter1 ç¼è¯å¨ç»æ.html-Fn_pQS-w.js"),__vite__mapDeps([145,1])),meta:{author:"chiichen",date:16969824e5,category:["课ç¨ç¬è®°"],tag:["ç¼è¯åç"],sticky:!0,isOriginal:!0,excerpt:`<h2>Chapter1 ç¼è¯å¨ç»æ</h2> 2158<h3>ç¼è¯å¨çç»æ</h3> 2159<ul> 2160<li>è¯æ³åæ Lexical analysis (Scanning)</li> 2161<li>è¯æ³åæ Syntax analysis (Parsing)</li> 2162<li>è¯ä¹åæ Semantic analysis</li> 2163</ul> 2164<div class="hint-container info"> 2165<p class="hint-container-title">ç¸å ³ä¿¡æ¯</p> 2166<p>以ä¸ä¸æ¥çç®çæ¯éè¿åæè¾å ¥ä»£ç ï¼çæè½è¢«ç»ä¸å¤ççä¸é´å±ä»£ç ï¼äº¦å³ç¼è¯å¨å端ï¼front-endï¼</p> 2167</div>`,readingTime:{minutes:.99,words:297},title:"Chapter1 ç¼è¯å¨ç»æ",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/Chapter2%20%E8%AF%8D%E6%B3%95%E5%88%86%E6%9E%90.html",{loader:()=>f(()=>import("./Chapter2 è¯æ³åæ.html-CzVGFKgE.js"),__vite__mapDeps([146,1])),meta:{author:"chiichen",date:16969824e5,category:["课ç¨ç¬è®°"],tag:["ç¼è¯åç"],sticky:!0,isOriginal:!0,excerpt:` 2168<h2>大纲</h2> 2169<ul> 2170<li>æ«æè¿ç¨ Scanning Process</li> 2171<li>æ£åè¡¨è¾¾å¼ Regular Expressions</li> 2172<li>æéèªå¨æº Finite Automata(NFA(nondeterministic éç¡®å®æ§æéèªå¨æº) and DFA(deterministic ç¡®å®æ§))</li> 2173<li>RE è½¬æ¢ NFA(McNaughton-Yamda-Thompson algorithm)</li> 2174<li>NFA è½¬æ¢ DFA(åéç®æ³ Subset construction Algorithm)</li> 2175<li>æå°å DFA(State-Minimization Algorithm)</li> 2176</ul>`,readingTime:{minutes:5.75,words:1724}
2176,title:"Chapter2 è¯æ³åæ",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/Chapter3%20%E8%AF%AD%E6%B3%95%E5%88%86%E6%9E%90.html",{loader:()=>f(()=>import("./Chapter3 è¯æ³åæ.html-Bh-3ADnE.js"),__vite__mapDeps([147,1])),meta:{author:"chiichen",date:16969824e5,category:["课ç¨ç¬è®°"],tag:["ç¼è¯åç"],sticky:!0,isOriginal:!0,excerpt:` 2177<ul> 2178<li>æ£å表达å¼çè½åæéï¼æ æ³åæå ·ä½çè¯æ³ç»è(ä¾å¦åµå¥ãç n å¼)ï¼ä¸å ¶çä»·çæç©·èªå¨æºåçï¼å æ¤å¼å ¥äºä¸æ¨èªå¨æºåä¸ä¸ææå ³ãæ å ³ææ³</li> 2179</ul> 2180<h1>大纲</h1> 2181<ul> 2182<li>è¯æ³åæçå½¢å¼åââä¸ä¸ææ å ³ææ³</li> 2183<li>è¯æ³åæç®æ³</li> 2184</ul> 2185<h1>ä¸ä¸ææ å ³ææ³(CFG)</h1> 2186<ul> 2187<li>æ¯ç¨æ¥æè¿°ä¸ä¸ªç¼ç¨è¯è¨çè¯æ³ç»æçææ³</li> 2188<li>忣å表达å¼ä¸æ ·ï¼å¯ä»¥è¡¨ç¤ºéå½çè§åï¼è䏿´å¼ºå¤§</li> 2189<li>æ¯æ£å表达å¼çä¸¥æ ¼è¶ é</li> 2190</ul> 2191<h2>Chomsky è¯è¨å±çº§</h2> 2192<table> 2193<thead> 2194<tr> 2195<th>Chomsky hierarchy</th> 2196<th>Production(产çå¼)</th> 2197<th>Explanation</th> 2198</tr> 2199</thead> 2200<tbody> 2201<tr> 2202<td>unrestricted(type 0)(èªç¶è¯è¨)</td> 2203<td></td> 2204<td>æ ä¸¥æ ¼çº¦æ</td> 2205</tr> 2206<tr> 2207<td>context sensitive(type 1)(ä¸ä¸ææå ³ææ³)</td> 2208<td></td> 2209<td>å¨ä¸åçä¸ä¸æä¸ï¼å¯è½è¢«ä¸åçæ¿æ¢</td> 2210</tr> 2211<tr> 2212<td>context free(type 2)(ä¸ä¸ææ å ³ææ³)</td> 2213<td></td> 2214<td>å¨ä»»ä½åºç°çå°æ¹é½ä¼è¢«æ¿æ¢</td> 2215</tr> 2216<tr> 2217<td>regular(type 3)(æ£å表达å¼)</td> 2218<td></td> 2219<td>çä»·äºæ£å表达å¼</td> 2220</tr> 2221</tbody> 2222</table>`,readingTime:{minutes:15.92,words:4775},title:"Chapter3 è¯æ³åæ",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/Chapter4%20%E8%AF%AD%E4%B9%89%E5%88%86%E6%9E%90.html",{loader:()=>f(()=>import("./Chapter4 è¯ä¹åæ.html-B7PXGMZB.js"),__vite__mapDeps([148,1])),meta:{author:"chiichen",date:16969824e5,category:["课ç¨ç¬è®°"],tag:["ç¼è¯åç"],sticky:!0,isOriginal:!0,excerpt:` 2223<h2>ç®å½</h2> 2224<h2>ä»ç»</h2> 2225<ul> 2226<li>è¯ä¹åææ ¸å¿æ¯ç±»åæ£æ¥(Type check)åä½ç¨åæ£æ¥(Scope check)</li> 2227<li>è¯ä¹éè¿å±æ§ç弿¥å»ç»</li> 2228<li>éè¿ä¸ç³»å屿§ç弿¥è¿è¡è®¡ç®ï¼æç §ä¸å®ç顺åºè¿è¡è®¡ç®</li> 2229</ul> 2230<h2>Recursive AST Walk</h2> 2231<ul> 2232<li>ä¸ç§è¯ä¹åæçå®ç°æ¹æ³ï¼æ¬ä¹¦ææ¶ä¸è¡¨</li> 2233</ul> 2234<h2>Attribute Grammars</h2> 2235<h3>è¯æ³å¶å¯¼çè¯æ³åæ(Syntax-Directed Semantics Analysis )</h3> 2236<ul> 2237<li>åç§° SDSãSDTãSDD</li> 2238<li>屿§æ¯éç卿æ³ç¬¦å·ä¸ç</li> 2239</ul>`,readingTime:{minutes:8.97,words:2690},title:"Chapter4 è¯ä¹åæ",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/Chapter5%20%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90.html",{loader:()=>f(()=>import("./Chapter5 代ç çæ.html-CVjCAUHG.js"),__vite__mapDeps([149,1])),meta:{author:"chiichen",date:16969824e5,category:["课ç¨ç¬è®°"],tag:["ç¼è¯åç"],sticky:!0,isOriginal:!0,excerpt:` 2240<h2>ä»ç»</h2> 2241<ul> 2242<li>代ç çæåå³äºï¼æºä»£ç ãç®æ ç³»ç»ä½ç³»ç»æãè¿è¡æ¶ç¯å¢</li> 2243<li>代ç çæå¯ä»¥è¢«ååä¸ºä¸æ¥ï¼</li> 2244</ul> 2245<ol> 2246<li>çæä¸é´ä»£ç (IR Iermediate code ç )</li> 2247<li>çææç§æ±ç¼å½¢å¼ç代ç ï¼è䏿¯çæ£ç坿§è¡ä»£ç </li> 2248<li>ä¼åç®æ 代ç </li> 2249</ol> 2250<h2>ä¸é´ä»£ç </h2> 2251<ul> 2252<li>以ä¸å°åç (TAC Three Address code)为ä¾</li> 2253</ul> 2254<h3>çæä¸å°åç </h3> 2255<h4>è¿ç®</h4> 2256<figure><figcaption>[TAC_Code1.png]</figcaption></figure>`,readingTime:{minutes:7.63,words:2290},title:"Chapter5 è¯æ³çæ",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Chapter1-Internet-And-Ethernet.html",{loader:()=>f(()=>import("./Chapter1-Internet-And-Ethernet.html-C-9Xuq8Z.js"),__vite__mapDeps([150,1])),meta:{author:"chiichen",date:16863552e5,category:["课ç¨ç¬è®°"],tag:["è®¡ç®æºç½ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>ç½ç»æ¨¡å</h2> 2257<figure><figcaption>ç½ç»åºç¡æ¨¡å</figcaption></figure> 2258<ul> 2259<li>ç»ç½è®¾å¤(networking device)ï¼ç»æç½ç»ä¸é¤è®¡ç®æºä¹å¤çé¨åï¼å³ proxy é¨åç设å¤</li> 2260<li>ä¸ä¸ªè®¡ç®æºç½ç»å©ç¨ç»ç½è®¾å¤åæ°æ®é¾è·¯(data links)å»è¿æ¥è¥å¹²å°å°çä¸å离çè®¡ç®æºï¼éè¿å®åçç½ç»åè®®(protocol)åç½ç»åºç¨æ¥è¾¾æå ±äº«ç½ç»èµæºåä¿¡æ¯ä¼ è¾çåè½</li> 2261<li>å¨ç½ç»ä¸ï¼ä¿¡æ¯ä»¥ç¦»æ£çäºè¿å¶æ¯ç¹æµä¼ è¾ï¼æ¯ç»äºè¿å¶æ¯ç¹æµè¢«ç§°ä¸º data packets(æ°æ®å )</li> 2262</ul> 2263<h3>é®é¢</h3>`,readingTime:{minutes:6.37,words:1912},title:"Chapter1 Internet And Ethernet",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Chapter2-Application-Layer.html",{loader:()=>f(()=>import("./Chapter2-Application-Layer.html-WZ4AZRAj.js"),__vite__mapDeps([151,1])),meta:{author:"chiichen",date:16863552e5,category:["课ç¨ç¬è®°"],tag:["è®¡ç®æºç½ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>åºç¨å±åè®®åç</h2> 2264<h3>ç½ç»åºç¨ç¨åºä½ç³»ç»æ</h3> 2265<h4>客æ·-æå¡å¨ç»æ(Client-Server)</h4> 2266<ul> 2267<li> 2268<p>WebãFTPãTelnetãçµåé®ä»¶é½æ¯éè¿è¿ç§ç»æè¿è¡æå»ºçï¼ç±ä¸ä¸ªæ»æ¯æå¼ç主æºï¼ç§°ä¸ºæå¡å¨(Server)ï¼ç¨æ¥æå¡æ¥èªè®¸å¤è¢«ç§°ä¸ºå®¢æ·(Client)å ¶ä»ä¸»æºç请æ±ã</p> 2269</li> 2270<li> 2271<p>èå¨è¿ç§ç»æä¸ï¼åå°ä¸»æºé常ä¼é¾ä»¥åºä»å¤§éç请æ±ï¼å æ¤ä¼å¨é å¤äºå¤§é主æºçæ°æ®ä¸å¿(data center)ä¸åå»ºèææå¡å¨æ¥æ»¡è¶³å®¢æ·ç«¯è¯·æ±çéæ±ã
2271</p> 2272</li> 2273</ul> 2274<h4>P2P ä½ç³»ç»æ(Peer-to-peer)</h4>`,readingTime:{minutes:17.34,words:5201},title:"Chapter2 Application Layer",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Chapter3-Transport-Layer.html",{loader:()=>f(()=>import("./Chapter3-Transport-Layer.html-bNDEImbC.js"),__vite__mapDeps([152,1])),meta:{author:"chiichen",date:16867008e5,category:["课ç¨ç¬è®°"],tag:["è®¡ç®æºç½ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>å¤è·¯å¤ç¨ä¸å¤è·¯åè§£</h2> 2275<ul> 2276<li>卿¥æ¶ç«¯ï¼è¿è¾å±æ£æ¥è¿è¾å±æ¥æä¸çå ä¸ªåæ®µââæºç«¯å£å·åç®æ 端å£å·ãæ¥å°æ¥æå®åå°æä¸ªç¹å®ç socket(注æï¼ä¸æ¯ç´æ¥ææ°æ®åéå°è¿ç¨)çå·¥ä½è¢«ç§°ä¸ºå¤è·¯åè§£(demultiplexing)ã</li> 2277<li>卿ºä¸»æºä»ä¸å socket 䏿¶éæ°æ®åï¼å¹¶ä¸ºæ¯ä¸ªæ°æ®åå°è£ ä¸é¦é¨ä¿¡æ¯ä»èçææ¥ææ®µï¼ç¶åå°æ¥ææ®µä¼ éå°ç½ç»å±çå·¥ä½ç§°ä¸ºå¤è·¯å¤ç¨(multiplexing)</li> 2278<li>è¿è¾å±åè¿ç¨ä¹é´çæ°æ®äº¤æ¢æ¯ä»¥ socket 为åªä»å®ç°çã</li> 2279<li>端å£å·æ¯ä¸ä¸ª 16bit çæ°ï¼å¤§å°ä¸º 0~65535ã0~1023 èå´ç端å£å·è¢«ç§°ä¸ºå¨ç¥ç«¯å£å·(well-known port number)ï¼é常æ¯è¢«ä¿çç¨ä½ä¾å¦ HTTPãFTP çå议使ç¨</li> 2280</ul>`,readingTime:{minutes:32.15,words:9645},title:"Chapter3 Transport Layer",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Chapter4-Net-Layer.html",{loader:()=>f(()=>import("./Chapter4-Net-Layer.html-BP2JUK_8.js"),__vite__mapDeps([153,1])),meta:{author:"chiichen",date:16870464e5,category:["课ç¨ç¬è®°"],tag:["è®¡ç®æºç½ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>è·¯ç±å¨å·¥ä½åç</h2> 2281<h3>è¾å ¥ç«¯å£å¤çååºäºç®çå°è½¬å</h3> 2282<figure><figcaption>è¾å ¥ç«¯å£å¤ç.png</figcaption></figure> 2283<h4>æé¿åç¼å¹é (Longest Prefix Match LPM)</h4> 2284<ul> 2285<li>ç¨æ¥å³å®è·¯ç±å¨å¦ä½è¿è¡è½¬åï¼ä¾å¦ä¸è¡¨ï¼å ¶ä¸ link 表示å½åè·¯ç±å¨è¿æ¥å°å ¶ä»è·¯ç±å¨çä¸åé¾è·¯ï¼å½å°å为 28.1.2.3 æ¶ï¼éæ©é¾è·¯ 3ï¼å½å°å为 28.33.5.4 æ¶ï¼éæ©é¾è·¯ 4</li> 2286</ul> 2287<table> 2288<thead> 2289<tr> 2290<th>dest</th> 2291<th>link</th> 2292</tr> 2293</thead> 2294<tbody> 2295<tr> 2296<td>default</td> 2297<td>1</td> 2298</tr> 2299<tr> 2300<td>171.33.0.0/16</td> 2301<td>5</td> 2302</tr> 2303<tr> 2304<td>23.0.0.0/24</td> 2305<td>2</td> 2306</tr> 2307<tr> 2308<td>28.0.0.0/24</td> 2309<td>3</td> 2310</tr> 2311<tr> 2312<td>28.33.5.0/8</td> 2313<td>4</td> 2314</tr> 2315</tbody> 2316</table>`,readingTime:{minutes:25.51,words:7652},title:"Chapter4 Net Layer",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Chapter5-Link-Layer.html",{loader:()=>f(()=>import("./Chapter5-Link-Layer.html-CIpTQANk.js"),__vite__mapDeps([154,1])),meta:{author:"chiichen",date:16870464e5,category:["课ç¨ç¬è®°"],tag:["è®¡ç®æºç½ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>é¾è·¯å±æ¦è¿°</h2> 2317<ul> 2318<li>é¾è·¯å±ä¸è¿è¡åè®®ç设å¤è¢«ç§°ä¸ºèç¹ï¼èéä¿¡ä¿¡é被称为é¾è·¯ã</li> 2319</ul> 2320<h3>é¾è·¯å±æä¾çæå¡</h3> 2321<ul> 2322<li>æå¸§(framing)ã帧çç»æç±å ·ä½çé¾è·¯å±åè®®è§å®</li> 2323<li>é¾è·¯æ¥å ¥(link access)ãåªä½è®¿é®æ§å¶(Medium Access Control, MAC)åè®®è§å®äºå¸§å¨é¾è·¯ä¸ä¼ è¾çè§åãMAC ç¨äºåè°å¤ä¸ªèç¹çå¸§ä¼ è¾ã</li> 2324<li>å¯é 交ä»(reliable delivery)ãé¾è·¯å±åè®®ä¿è¯æ å·®éå°ç»é¾è·¯å±ç§»å¨æ¯ä¸ªç½ç»å±æ°æ®å ãé¾è·¯å±ç RD é常æ¯éè¿å¨æ¬å°(åçé误çé¾è·¯)确认éä¼ ï¼è䏿¯å¨æ´ä¸ªç«¯å°ç«¯è·¯å¾ä¸éä¼ ãå æ¤å¨é«å·®éççé¾è·¯ï¼ä¾å¦æ 线é¾è·¯ä¸å¹¿æ³ä½¿ç¨ãèå¨ä½å·®éççé¾è·¯ï¼ä¾å¦å 纤ãçµç¼çæçº¿é¾è·¯ä¸çé¾è·¯å±åè®®ä¸æä¾ RDã</li> 2325<li>差鿣æµåçº æ£ãé¾è·¯å±ç差鿣æµé常æ´å¤æï¼èä¸ç¨ç¡¬ä»¶å®ç°ãèå·®éçº æ£æå³çæ¥æ¶æ¹ä¸ä» è½æ£æµåºå·®éï¼è¿è½å¤åç¡®å®ä½å°å¸§ä¸å·®éåºç°çä½ç½®ã</li> 2326</ul>`,readingTime:{minutes:18.72,words:5617},title:"Chapter5 Link Layer",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E4%B9%A0%E9%A2%98%E7%AD%94%E6%A1%88.html",{loader:()=>f(()=>import("./è®¡ç®æºç½ç»ä¹ é¢çæ¡.html-PrKfTcSr.js"),__vite__mapDeps([155,1])),meta:{date:170616319e4,excerpt:` 2327<h2>å¤ä¹ é¢åä¹ é¢åèçæ¡</h2> 2328<h3>çæ¬æ¶é´ï¼2016å¹´12æ</h3> 2329<p>æ¬ææ¡£å å«Jim KuroseåKeith Rossç¼åçãè®¡ç®æºç½ç»ï¼èªé¡¶å䏿¹æ³ï¼ç¬¬7çï¼ãå¤ä¹ é¢åä¹ é¢çåèçæ¡ãè¿äºçæ¡åªå¯¹æå¯¼è叿æã请ä¸è¦å¤å¶æè ååç»å ¶ä»äººï¼å³ä½¿æ¯å ¶ä»æå¯¼èå¸ï¼ã请ä¸è¦å¨å ¬å ±ç½ç»åå¸ä»»ä½åèçæ¡ã妿æéè¦ï¼æä»¬å¾ä¹ææä¾æ¤åèçæ¡ï¼ææ°çï¼ã</p> 2330<p>声æï¼è¿äºå¹´æ¥ï¼å¾å¤åå¦ååäºå¸®å©æä»¬å夿¤åèçæ¡ãç¹å«æè°¢Honggang Zhangï¼Rakesh Kumarï¼Prithula DhungelåVijayAnnapureddyãåæ¶ä¹æè°¢æå»ºè®®åä¿®æ£éè¯¯çææè¯»è ã</p>`,readingTime:{minutes:172.07,words:51622},title:"è®¡ç®æºç½ç»ï¼èªé¡¶å䏿¹æ³ï¼ç¬¬7ç",type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter0%E7%BB%AA%E8%AE%BA.html",{loader:()=>f(()=>import("./Chapter0绪论.html-Yo0SUuMY.js"),__vite__mapDeps([156,1])),meta:{author:"chiichen",date:17023392e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ææ</h2> 2331<p>è½¯ä»¶ææ¶å®è·µ(第 3 ç),L.Bass,P.Clements,andR.Kazman,æ¸ å大å¦åºç社(2013)</p> 2332<h2>主è¦å 容</h2> 2333`,readingTime:{minutes:.29,words:87},title:"Chapter0 绪论",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter10%E5%8F%AF%E6%B5%8B%E8%AF%95%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter10坿µè¯æ§.html-CWujBN8I.js"),__vite__mapDeps([157,1])),meta:{author:"chiichen",date:17026848e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>坿µè¯æ§æ¯ä»ä¹ï¼</h2> 2334<ul> 2335<li>软件ç坿µè¯æ§æ¯æéè¿ï¼é常æ¯åºäºæ§è¡çï¼æµè¯æ¥å±ç¤ºå ¶é误ç龿ç¨åº¦ã</li> 2336<li>坿µè¯æ§æ¯æç³»ç»å¨ä¸ä¸æ¬¡æµè¯æ§è¡ä¸å¤±è´¥çæ¦çã</li> 2337<li>
2337å¦æç³»ç»åå¨éè¯¯ï¼æä»¬å¸æå®è½å¨æµè¯è¿ç¨ä¸å°½å¿«å¤±è´¥ã</li> 2338<li>è¦ä½¿ä¸ä¸ªç³»ç»å ·æå¯æµè¯æ§ï¼å¿ é¡»è½å¤æ§å¶æ¯ä¸ªç»ä»¶çè¾å ¥ï¼å¹¶å¯è½æä½å ¶å é¨ç¶æï¼ï¼ç¶åè§å¯å ¶è¾åºï¼ä»¥åå¯è½çå é¨ç¶æï¼ã</li> 2339</ul> 2340<h2>坿µè¯æ§çç¥çç®æ </h2> 2341<ul> 2342<li>坿µè¯æ§çç¥çç®æ æ¯å¨è½¯ä»¶å¼å宿çä¸ä¸ªå¢éä¸å®ç°æ´å®¹æçæµè¯ã</li> 2343<li>坿µè¯æ§çç¥å¯ä»¥å为两个类å«ï¼ 2344<ul> 2345<li>第ä¸ä¸ªç±»å«æ¶ååç³»ç»æ·»å 坿§æ§åå¯è§å¯æ§ã</li> 2346<li>第äºä¸ªç±»å«æ¶åéå¶ç³»ç»è®¾è®¡ä¸ç夿æ§ã</li> 2347</ul> 2348</li> 2349</ul>`,readingTime:{minutes:3.27,words:981},title:"Chapter10 坿µè¯æ§",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter11%E6%98%93%E7%94%A8%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter11æç¨æ§.html-CfzfMm5s.js"),__vite__mapDeps([158,1])),meta:{author:"chiichen",date:17026848e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯æç¨æ§ï¼</h2> 2350<ul> 2351<li>æç¨æ§å ³æ³¨ç¨æ·å®ææéä»»å¡ç龿ç¨åº¦ä»¥åç³»ç»æä¾çç¨æ·æ¯æã</li> 2352<li>æç¨æ§æ¯æ¹åç³»ç»è´¨éçæä¾¿å®åæç®åçæ¹å¼ä¹ä¸ã</li> 2353<li>æç¨æ§å æ¬ä»¥ä¸å 个æ¹é¢ï¼ 2354<ul> 2355<li>é«æä½¿ç¨ç³»ç»ã</li> 2356<li>å¦ä¹ ç³»ç»çåè½ã</li> 2357<li>å°½éåå°é误çå½±åã</li> 2358<li>使系ç»éåºç¨æ·éæ±ã</li> 2359<li>æé«ç¨æ·çä¿¡å¿å满æåº¦ã</li> 2360</ul> 2361</li> 2362</ul> 2363<h2>æç¨æ§çç¥</h2> 2364<figure><figcaption>Usability tactics</figcaption></figure>`,readingTime:{minutes:1.72,words:516},title:"Chapter11 æç¨æ§",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter12%E5%85%B6%E5%AE%83%E8%B4%A8%E9%87%8F%E5%B1%9E%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter12å ¶å®è´¨é屿§.html-XT_VYprB.js"),__vite__mapDeps([159,1])),meta:{author:"chiichen",date:17026848e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>å¯ç§»æ¤æ§(Portability)</h2> 2365<ul> 2366<li>å¯ç§»æ¤æ§ä¹æ¯ä¸ç§ç¹æ®å½¢å¼çå¯ä¿®æ¹æ§ã</li> 2367<li>å¯ç§»æ¤æ§æçæ¯å°ä¸ºä¸ä¸ªå¹³å°æå»ºçè½¯ä»¶æ´æ¹ä¸ºå¨ä¸åå¹³å°ä¸è¿è¡ç便æ·ç¨åº¦ã</li> 2368</ul> 2369<h2>å¼åå¯ååæ§(Development Distributability)</h2> 2370<ul> 2371<li>å¼åå¯ååæ§æ¯æè®¾è®¡è½¯ä»¶ä»¥æ¯æåå¸å¼è½¯ä»¶å¼åçè´¨éã</li> 2372<li>ç³»ç»æ¯ä½¿ç¨å ¨çåå¸çå¢éå¼åçã</li> 2373<li>ç®çæ¯æå¤§é度åå°å¢éä¹é´çåè°ã</li> 2374</ul> 2375<h2>坿©å±æ§(Scalability)</h2> 2376<ul> 2377<li>æ°´å¹³å¯æ©å±æ§ï¼æ©å±å¤é¨ï¼æåé»è¾åå æ·»å æ´å¤èµæºï¼ä¾å¦åé群添å å¦ä¸ä¸ªæå¡å¨ã</li> 2378<li>åç´å¯æ©å±æ§ï¼æ©å±å é¨ï¼æåç©çåå æ·»å æ´å¤èµæºï¼ä¾å¦åè®¡ç®æºæ·»å æ´å¤å åã</li> 2379<li>å¯äº§çå¯è¡¡éçæ¹è¿ï¼èæ é䏿æä½ã</li> 2380</ul>`,readingTime:{minutes:2.04,words:613},title:"Chapter12 å ¶å®è´¨é屿§",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter13%E6%A8%A1%E5%BC%8F%E5%92%8C%E7%AD%96%E7%95%A5.html",{loader:()=>f(()=>import("./Chapter13模å¼åçç¥.html-EbsDQoc9.js"),__vite__mapDeps([160,161,1])),meta:{author:"chiichen",date:17026848e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯æ¨¡å¼(Pattern)ï¼</h2> 2381<ul> 2382<li><code>æ¶ææ¨¡å¼(An architecture pattern)</code>æ¯ä¸ç»å¨å®è·µä¸åå¤åºç°ç设计å³ççéåã</li> 2383<li>å®å ·æå·²ç¥çå¯éç¨æ§å±æ§ï¼å¹¶æè¿°äºä¸ç±»æ¶æã</li> 2384</ul> 2385<h2>æ¶ææ¨¡å¼(An architecture pattern)</h2> 2386<ul> 2387<li>æ¨¡åæ¨¡å¼ 2388<ul> 2389<li>å屿¨¡å¼</li> 2390</ul> 2391</li> 2392<li>ç»ä»¶ä¸è¿æ¥å¨æ¨¡å¼ 2393<ul> 2394<li>ä»£çæ¨¡å¼</li> 2395<li>模å-è§å¾-æ§å¶å¨æ¨¡å¼</li> 2396<li>管é-è¿æ»¤å¨æ¨¡å¼</li> 2397<li>客æ·ç«¯-æå¡å¨æ¨¡å¼</li> 2398<li>å¯¹çæ¨¡å¼</li> 2399<li>é¢åæå¡çæ¶æï¼SOAï¼æ¨¡å¼</li> 2400<li>åå¸-è®¢é æ¨¡å¼</li> 2401<li>å ±äº«æ°æ®æ¨¡å¼</li> 2402</ul> 2403</li> 2404<li>åé æ¨¡å¼ 2405<ul> 2406<li>Map-Reduce 模å¼</li> 2407<li>å¤å±æ¨¡å¼</li> 2408</ul> 2409</li> 2410</ul>`,readingTime:{minutes:14.67,words:4400},title:"Chapter13 模å¼åçç¥",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter14%E8%B4%A8%E9%87%8F%E5%B1%9E%E6%80%A7%E5%BB%BA%E6%A8%A1%E4%B8%8E%E5%88%86%E6%9E%90.html",{loader:()=>f(()=>import("./Chapter14è´¨é屿§å»ºæ¨¡ä¸åæ.html-CDxajzAQ.js"),__vite__mapDeps([162,1])),meta:{author:"chiichen",date:17026848e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>æä»¬å¦ä½äºè§£è½¯ä»¶çè´¨é屿§ï¼</h2> 2411<ul> 2412<li>å®éªåæµé</li> 2413<li>åææ¨¡å</li> 2414<li>模æ</li> 2415</ul> 2416<h2>å»ºæ¨¡æ¶æä»¥æ¯æè´¨é屿§åæ</h2> 2417<ul> 2418<li>ä¸äºè´¨é屿§ï¼å°¤å ¶æ¯æ§è½åå¯ç¨æ§ï¼å·²ç»æäºè¢«å¹¿æ³çè§£åç»è¿æ¶é´éªè¯çåææ¨¡åï¼å¯ä»¥ç¨äºè¾ å©åæã</li> 2419<li>éè¿åææ¨¡åï¼æä»¬æçæ¯æ¯æå®éåæç模åã</li> 2420</ul> 2421<h3>æ§è½å»ºæ¨¡</h3> 2422<figure><figcaption>Performance Models</figcaption></figure> 2423<ul> 2424<li>åæ°ï¼äºä»¶çå°è¾¾éçãéæ©çæéè§åãéæ©çè°åº¦ç®æ³ãç½ç»ææãç½ç»å¸¦å®½ãéæ©çè·¯ç±ç®æ³ãäºä»¶çæå¡æ¶é´</li> 2425</ul>`,readingTime:{minutes:2.44,words:731}
2425,title:"Chapter14 è´¨é屿§å»ºæ¨¡ä¸åæ",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter15%E6%95%8F%E6%8D%B7%E9%A1%B9%E7%9B%AE%E4%B8%AD%E7%9A%84%E6%9E%B6%E6%9E%84.html",{loader:()=>f(()=>import("./Chapter15ææ·é¡¹ç®ä¸çæ¶æ.html-b5ZeM0am.js"),__vite__mapDeps([163,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ææ·å®£è¨</h2> 2426<ul> 2427<li>Individuals and interactions over processes and tools 人æºäº¤äºéäºè¿ç¨åå·¥å ·</li> 2428<li>Working software over comprehensive documentation å¯ä»¥å·¥ä½ç软件éäºæ±å ¨è´£å¤çææ¡£</li> 2429<li>Customer collaboration over contract negotiation 客æ·åä½éäºååè°å¤</li> 2430<li>Responding to change over following a plan éæ¶åºå¯¹ååéäºå¾ªè§è¹ç©</li> 2431</ul>`,readingTime:{minutes:3.73,words:1118},title:"Chapter15 ææ·é¡¹ç®ä¸çæ¶æ",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter16%E6%9E%B6%E6%9E%84%E4%B8%8E%E9%9C%80%E6%B1%82.html",{loader:()=>f(()=>import("./Chapter16æ¶æä¸éæ±.html-f89X53UU.js"),__vite__mapDeps([164,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>å ·ææ¶æéè¦æ§çéæ±(Architecturally Significant Requirement ,ASR)</h2> 2432<ul> 2433<li>并鿿鿱齿¯å¹³ççã</li> 2434<li>å ·ææ¶æéè¦æ§çéæ±ï¼ASRï¼æ¯å¯¹æ¶æäº§çæ·±è¿å½±åçéæ±ã
2434</li> 2435<li>æä»¬å¦ä½æ¾å°è¿äºéæ±å¢ï¼</li> 2436</ul> 2437<h2>æææ¶æéè¦æ§éæ±çæ¹æ³</h2> 2438<ul> 2439<li>ä»éæ±ææ¡£ä¸è·å</li> 2440<li>éè¿ä¸å©çç¸å ³è è¿è¡é¢è°</li> 2441<li>éè¿çè§£ä¸å¡ç®æ </li> 2442<li>å¨æç¨æ ä¸(In Utility Tree)</li> 2443</ul> 2444<h3>å ·ææ¶æéè¦æ§çéæ±åéæ±ææ¡£</h3>`,readingTime:{minutes:5.62,words:1686},title:"Chapter16 æ¶æä¸éæ±",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter17%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84.html",{loader:()=>f(()=>import("./Chapter17è®¾è®¡æ¶æ.html-BHqDbf5H.js"),__vite__mapDeps([165,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>设计çç¥(Design Strategy)</h2> 2445<ul> 2446<li>åè§£(Decomposition)</li> 2447<li>é¢åæ¶æéè¦æ§éæ±ç设计(Designing to Architecturally Significant Requirements)</li> 2448<li>çæåæµè¯(Generate and Test)</li> 2449</ul> 2450<h2>åè§£(Decomposition)</h2> 2451<ul> 2452<li>æ¶æå³å®äºè´¨é屿§</li> 2453<li>éè¦çè´¨é屿§æ¯æ´ä¸ªç³»ç»çç¹å¾ã</li> 2454<li>è®¾è®¡ä»æ´ä¸ªç³»ç»å¼å§ 2455<ul> 2456<li>æ´ä¸ªç³»ç»è¢«å解为å个é¨å</li> 2457<li>æ¯ä¸ªé¨åå¯è½ç»§æ¿å ¨é¨æé¨åè´¨é屿§éæ±</li> 2458</ul> 2459</li> 2460</ul>`,readingTime:{minutes:5.13,words:1540},title:"Chapter17 è®¾è®¡æ¶æ",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter19%E6%9E%B6%E6%9E%84%E5%AE%9E%E7%8E%B0%E4%B8%8E%E6%B5%8B%E8%AF%95.html",{loader:()=>f(()=>import("./Chapter19æ¶æå®ç°ä¸æµè¯.html-DbiylV6Z.js"),__vite__mapDeps([166,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ¶æä¸å®ç°</h2> 2461<ul> 2462<li>ä¿æä»£ç åæ¶æä¸è´çææ¯ï¼ 2463<ul> 2464<li>å¨ä»£ç ä¸åµå ¥è®¾è®¡(Embedding the Design in the Code)</li> 2465<li>æ¡æ¶</li> 2466<li>ä»£ç æ¨¡æ¿</li> 2467</ul> 2468</li> 2469</ul> 2470<h3>å¨ä»£ç ä¸åµå ¥è®¾è®¡(Embedding the Design in the Code)</h3> 2471<ul> 2472<li>æ¶æä½ä¸ºå®ç°çèå¾ãè¿æå³çï¼ 2473<ul> 2474<li>å®ç°è ç¥éä»ä»¬æ£å¨å®ç°çæ¶æç»æãä¾å¦ï¼å±æ¬¡ç»æãåå¸-订é ãMVCã代ççã</li> 2475<li>ä»ä»¬å¯ä»¥å°æ¶æç»æä½ä¸ºæ³¨éè®°å½å¨ä»£ç ä¸ãè¿æ ·ï¼ä»»ä½æ¥æä»£ç ç人é½ä¼äºè§£ä¸äºçº¦ææ¡ä»¶ã</li> 2476<li>ç¶åï¼å·¥å ·å¯ä»¥èªå¨å ³è代ç åæ¶æã</li> 2477</ul> 2478</li> 2479</ul>`,readingTime:{minutes:3.74,words:1123},title:"Chapter19 æ¶æå®ç°ä¸æµè¯",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter1%E4%BB%80%E4%B9%88%E6%98%AF%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84.html",{loader:()=>f(()=>import("./Chapter1ä»ä¹æ¯è½¯ä»¶æ¶æ.html-9fwLXsLk.js"),__vite__mapDeps([167,1])),meta:{author:"chiichen",date:17024256e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯è½¯ä»¶æ¶æ</h2> 2480<p>ç³»ç»çè½¯ä»¶æ¶ææ¯ç¨äºæ¨çç³»ç»çä¸ç»ç»æï¼å æ¬è½¯ä»¶å ç´ ãå®ä»¬ä¹é´çå ³ç³»ä»¥åå®ä»¬ç屿§ã</p> 2481<div class="hint-container info"> 2482<p class="hint-container-title">ä»ä¹æ¯æ¨ç</p> 2483<p>å¨è¿éï¼"æ¨ç"æçæ¯éè¿å¯¹ç³»ç»çç»æãå ç´ å屿§è¿è¡åæåæ¨å¯¼ï¼ä»èå¾åºå ³äºç³»ç»è¡ä¸ºãæ§è½ãå¯é æ§ä»¥åå ¶ä»æ¹é¢çåçæ¨æå夿ãéè¿æ¨çï¼æ¶æå¸åå©çç¸å ³è (Stakeholders)å¯ä»¥ç解系ç»çç¹æ§ãåè½å约æï¼å¹¶ååºç¸åºçå³çï¼å¦ä¼åç³»ç»è®¾è®¡ãæ¹è¿ç³»ç»æ§è½ã颿µç³»ç»è¡ä¸ºçãæ¨çå¯ä»¥åºäºå·²æçç¥è¯ãç»éªãè§å忍¡åï¼å¹¶ç»å对系ç»éæ±åä¸ä¸æççè§£è¿è¡æ¨æåæ¨æµãå æ¤ï¼æ¨çå¨è½¯ä»¶æ¶æä¸æ¯ä¸ç§éè¦çæç»´ååææ¹å¼ï¼ç¨äºè¯ä¼°åå³çç³»ç»ç设计åå®ç°ã</p> 2484</div>`,readingTime:{minutes:12.24,words:3671},title:"Chapter1 ä»ä¹æ¯è½¯ä»¶æ¶æ",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter2%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84%E9%87%8D%E8%A6%81.html",{loader:()=>f(()=>import("./Chapter2为ä»ä¹è½¯ä»¶æ¶æéè¦.html-BXvmwIc8.js"),__vite__mapDeps([168,1])),meta:{author:"chiichen",date:17024256e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>æå¶æä¿è¿ç³»ç»çè´¨é屿§</h2> 2485<ul> 2486<li>ç³»ç»è½å¦å±ç°å ¶æææï¼æè¦æ±çï¼è´¨é屿§ï¼å¨å¾å¤§ç¨åº¦ä¸åå³äºå ¶æ¶æã 2487<ul> 2488<li>æ§è½</li> 2489<li>å¯ä¿®æ¹æ§</li> 2490<li>å®å ¨æ§</li> 2491<li>坿©å±æ§</li> 2492<li>å¯éç¨æ§</li> 2493</ul> 2494</li> 2495</ul> 2496<h2>æ¨çå管çåæ´</h2> 2497<ul> 2498<li>
2498å ¸å软件系ç»çæ»ææ¬ä¸ï¼å¤§çº¦ 80ï¼ åçå¨åå§é¨ç½²ä¹åï¼ 2499<ul> 2500<li>éåºæ°åè½</li> 2501<li>éåºæ°ç¯å¢</li> 2502<li>ä¿®å¤é误ççã</li> 2503</ul> 2504</li> 2505<li>æ¯ä¸ªæ¶æå°å¯è½çåæ´åå为ä¸ä¸ªç±»å«ï¼ 2506<ul> 2507<li>æ¬å°åæ´å¯ä»¥éè¿ä¿®æ¹å个å ç´ æ¥å®æã</li> 2508<li>鿬å°åæ´éè¦å¯¹å¤ä¸ªå ç´ è¿è¡ä¿®æ¹ï¼ä½ä¿æåºå±æ¶ææ¹æ³ä¸åã</li> 2509<li>æ¶æåæ´ä¼å½±åå ç´ å½¼æ¤äº¤äºçåºæ¬æ¹å¼ï¼å¹¶ä¸å°éè¦è¿è¡æ´å¤§èå´çæ´æ¹ã</li> 2510</ul> 2511</li> 2512<li>æ¾ç¶ï¼æ¬å°åæ´æ¯æçæ³çã</li> 2513<li>ä¸ä¸ªå¥½çæ¶ææ¯ææå¸¸è§çåæ´æ¯æ¬å°åæ´ï¼å æ¤æ´å®¹æè¿è¡ã</li> 2514</ul>`,readingTime:{minutes:3.09,words:927},title:"Chapter2 为ä»ä¹è½¯ä»¶æ¶æéè¦",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter4%E7%90%86%E8%A7%A3%E8%B4%A8%E9%87%8F%E5%B1%9E%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter4ç解质é屿§.html-Gs6mp7Xo.js"),__vite__mapDeps([169,1])),meta:{author:"chiichen",date:17024256e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ¶æä¸éæ±</h2> 2515<p>ç³»ç»éæ±å¯ä»¥å为以ä¸å ç±»ï¼</p> 2516<ul> 2517<li>åè½éæ±(Functional Requirements)ï¼è¯´æç³»ç»å¿ 须宿çåè½ãè¿è¡æ¶è¡ä¸ºæå¯¹è¿è¡æ¶åºæ¿çååºã</li> 2518<li>è´¨é屿§éæ±(Quality Attribute Requirements)ï¼å¯¹åè½éæ±è¿è¡éå®ï¼ä¾å¦åè½æ§è¡çéåº¦è¦æ±ã对é误è¾å ¥çå®¹éæ§è¦æ±çã</li> 2519<li>约æ(Constraints)ï¼çº¦ææ¯ä¸ä¸ªæ²¡æèªç±åº¦ç设计å³çã</li> 2520</ul> 2521<h3>åè½æ§(Functionality)</h3> 2522<ul> 2523<li>åè½æ§æ¯ç³»ç»æç §å ¶é¢æè¿è¡å·¥ä½çè½åã</li> 2524<li>åè½æ§ä¸æ¶ææçå¥ç¹çå ³ç³»ï¼ 2525<ul> 2526<li>åè½æ§å¹¶ä¸å³å®æ¶æï¼</li> 2527</ul> 2528</li> 2529</ul>`,readingTime:{minutes:7.2,words:2160},title:"Chapter4 ç解质é屿§",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter5%E5%8F%AF%E7%94%A8%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter5å¯ç¨æ§.html-CGNRizp9.js"),__vite__mapDeps([170,1])),meta:{author:"chiichen",date:17024256e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯å¯ç¨æ§(Availability)</h2> 2530<ul> 2531<li>å¯ç¨æ§æçæ¯è½¯ä»¶å ·å¤å¨éè¦æ¶éæ¶å¯ç¨å¹¶åå¤å¥½æ§è¡ä»»å¡ç屿§ã</li> 2532<li>å¯ç¨æ§æ¯æç³»ç»è½å¤æ©çæä¿®å¤æ éï¼ä»¥ä½¿ç´¯ç§¯çæå¡ä¸ææ¶é´ä¸è¶ è¿æå®æ¶é´é´éå çè¦æ±å¼ã</li> 2533<li>å¯ç¨æ§çç®æ æ¯éè¿åè½»æ 鿥æå°åæå¡ä¸ææ¶é´ã</li> 2534</ul> 2535<div class="hint-container info"> 2536<p class="hint-container-title">å¯ç¨æ§(Availability)ä¸å¯é æ§(reliability)æå¯ä¿¡æ§(r dependability)çåºå«</p> 2537<ul> 2538<li>å¯ç¨æ§å æ¬é常æç§°çå¯é æ§ã</li> 2539<li>å¯ç¨æ§è¿æ¶µçäºå ¶ä»èèå ç´ ï¼ä¾å¦ç±äºå®æç»´æ¤å¯¼è´çæå¡ä¸æã</li> 2540<li>å¯ç¨æ§ä¸ä»¥ä¸å ç´ å¯åç¸å ³ 2541<ul> 2542<li>å®å ¨æ§ï¼ä¾å¦æç»æå¡æ»å»</li> 2543<li>æ§è½</li> 2544<li>...</li> 2545</ul> 2546</li> 2547</ul> 2548</div>`,readingTime:{minutes:4.44,words:1333},title:"Chapter5 å¯ç¨æ§",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter6%E4%BA%92%E6%93%8D%E4%BD%9C%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter6äºæä½æ§.html-xI7XGjta.js"),__vite__mapDeps([171,1])),meta:{author:"chiichen",date:1702512e6,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯äºæä½æ§ï¼</h2> 2549<ul> 2550<li>äºæä½æ§æ¯æå¨ç¹å®ç¯å¢ä¸ï¼ä¸¤ä¸ªæå¤ä¸ªç³»ç»è½å¤éè¿æ¥å£ææä¹å°äº¤æ¢ä¿¡æ¯çç¨åº¦ã</li> 2551<li>对äºç³»ç»çäºæä½æ§çä»»ä½è®¨è®ºé½éè¦æç¡®æåºä¸è°ä»¥åå¨ä»ä¹æ åµä¸è¿è¡äº¤äºã</li> 2552<li>è¯æ³äºæä½æ§æ¯æäº¤æ¢æ°æ®çè½åã</li> 2553<li>è¯ä¹äºæä½æ§æ¯æè§£é交æ¢çæ°æ®çè½åã</li> 2554<li>å®ç°äºæä½æ§ç两ç§è§è§ï¼ 2555<ul> 2556<li>å¨äºè§£å¤é¨ç³»ç»æ¥å£çåºç¡ä¸ï¼å°è¯¥ç¥è¯è®¾è®¡å°ç³»ç»ä¸ã</li> 2557<li>卿²¡æäºè§£å ¶ä»ç³»ç»çæ åµä¸ï¼ä»¥æ´éç¨çæ¹å¼è®¾è®¡ç³»ç»ä»¥å®ç°äºæä½æ§ã</li> 2558</ul> 2559</li> 2560</ul> 2561<h3>卿º</h3>`,readingTime:{minutes:5.56,words:1667},title:"Chapter6 äºæä½æ§",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter7%E5%8F%AF%E4%BF%AE%E6%94%B9%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter7å¯ä¿®æ¹æ§.html-BSexyxlF.js"),__vite__mapDeps([172,161,1])),meta:{author:"chiichen",date:1702512e6,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯å¯ä¿®æ¹æ§ï¼Modifiabilityï¼ï¼</h2> 2562<ul> 2563<li>å¯ä¿®æ¹æ§æ¶åååï¼æä»¬å¯¹å®çå ´è¶£å¨äºååçææ¬åé£é©ã</li> 2564<li>为äºè§åå¯ä¿®æ¹æ§ï¼æ¶æå¸å¿ é¡»èèå个é®é¢ï¼ 2565<ul> 2566<li>ä»ä¹å¯ä»¥æ¹åï¼</li> 2567<li>ååçå¯è½æ§æå¤å¤§ï¼</li> 2568<li>åå使¶åçï¼ç±è°è¿è¡ï¼</li> 2569<li>ååçææ¬æ¯å¤å°ï¼</li> 2570</ul> 2571</li> 2572</ul> 2573<h3>ä»ä¹å¯ä»¥æ¹å</h3> 2574<ul> 2575<li>ç³»ç»çåè½</li> 2576<li>
2576å¹³å°ï¼å³ç¡¬ä»¶ãæä½ç³»ç»åä¸é´ä»¶</li> 2577<li>ç³»ç»è¿è¡çç¯å¢ 2578<ul> 2579<li>å¿ é¡»ä¸ä¹äºæä½çç³»ç»</li> 2580<li>ç¨äºéä¿¡çåè®®</li> 2581</ul> 2582</li> 2583<li>容é 2584<ul> 2585<li>æ¯æçç¨æ·æ°é</li> 2586<li>åæ¶æä½çæ°é</li> 2587</ul> 2588</li> 2589</ul>`,readingTime:{minutes:6.61,words:1982},title:"Chapter7 å¯ä¿®æ¹æ§",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter8%E6%80%A7%E8%83%BD.html",{loader:()=>f(()=>import("./Chapter8æ§è½.html-Chumtrc7.js"),__vite__mapDeps([173,1])),meta:{author:"chiichen",date:1702512e6,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯æ§è½ï¼</h2> 2590<ul> 2591<li>å®ä¸æ¶é´æå ³</li> 2592<li>æ§è½æ¯å ³äºæ¶é´ä»¥åè½¯ä»¶ç³»ç»æ»¡è¶³æ¶é´è¦æ±çè½å</li> 2593<li>å½äºä»¶åçæ¶ï¼ç³»ç»å¿ é¡»åæ¶å¯¹å ¶ååºååº 2594<ul> 2595<li>äºä»¶å æ¬ä¸æãæ¶æ¯ãæ¥èªç¨æ·æå ¶ä»ç³»ç»ç请æ±ï¼ææ è®°æ¶é´æµéçæ¶éäºä»¶</li> 2596</ul> 2597</li> 2598</ul> 2599<h3>æ§è½å»ºæ¨¡</h3> 2600<ul> 2601<li>ååºæ¶é´çä¸¤ä¸ªåºæ¬å ç´ </li> 2602<li>å¤çæ¶é´æç³»ç»ç¨äºååºç工使¶é´</li> 2603<li>é»å¡æ¶é´æç³»ç»æ æ³ååºçæ¶é´</li> 2604<li>é»å¡æ¶é´çåå å æ¬ 2605<ul> 2606<li>èµæºäºç¨</li> 2607<li>èµæºçå¯ç¨æ§</li> 2608<li>å¯¹å ¶ä»å ç´ çä¾èµ</li> 2609</ul> 2610</li> 2611</ul>`,readingTime:{minutes:9.85,words:2955},title:"Chapter8 æ§è½",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter9%E5%AE%89%E5%85%A8%E6%80%A7.html",{loader:()=>f(()=>import("./Chapter9å®å ¨æ§.html-C-0F27pz.js"),__vite__mapDeps([174,1])),meta:{author:"chiichen",date:17026848e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä»ä¹æ¯å®å ¨(Security)</h2> 2612<ul> 2613<li>å®å ¨æ¯ç³»ç»ä¿æ¤æ°æ®åä¿¡æ¯å åæªç»ææè®¿é®çè½åç度éï¼åæ¶ä»ç¶åç»ææç人ååç³»ç»æä¾è®¿é®æéã</li> 2614<li>éå¯¹è®¡ç®æºç³»ç»çææä¸ºå®³è¡ä¸ºç§°ä¸ºæ»å»ã</li> 2615<li>æ»å»å¯ä»¥éåä¸åå½¢å¼ï¼ 2616<ul> 2617<li>æªç»ææçå°è¯è®¿é®/ä¿®æ¹æ°æ®ææå¡</li> 2618<li>æ¨å¨æç»åæ³ç¨æ·çæå¡</li> 2619</ul> 2620</li> 2621<li>å®å ¨å ·æä¸ä¸ªä¸»è¦ç¹å¾ï¼å³ CIAï¼</li> 2622<li>ä¿å¯æ§(Confidentiality)æ¯æ°æ®ææå¡åå°æªç»ææè®¿é®çä¿æ¤æ§è´¨ã 2623<ul> 2624<li>ä¾å¦ï¼é»å®¢æ æ³å¨æ¿åºè®¡ç®æºä¸è®¿é®æ¨ç个人æå¾ç¨ç³æ¥è¡¨ã</li> 2625</ul> 2626</li> 2627<li>宿´æ§(Integrity)æ¯æ°æ®ææå¡ä¸åæªç»æææçºµçæ§è´¨ã 2628<ul> 2629<li>ä¾å¦ï¼æ¨çæç»©èªä»æå¸åé ä»¥æ¥æ²¡æè¢«æ´æ¹ã</li> 2630</ul> 2631</li> 2632<li>å¯ç¨æ§(Availability)æ¯ç³»ç»è½å¤ä¾åæ³ä½¿ç¨çæ§è´¨ã 2633<ul> 2634<li>ä¾å¦ï¼æç»æå¡æ»å»é»æ¢æ¨ä»å¨çº¿ä¹¦åºè®¢è´ä¸æ¬ä¹¦ã</li> 2635</ul> 2636</li> 2637<li>æ¯æ CIA çå ¶ä»ç¹å¾å æ¬ï¼ 2638<ul> 2639<li>身份éªè¯éªè¯äº¤æå䏿¹ç身份ï¼å¹¶æ£æ¥ä»ä»¬æ¯å¦çå®èº«ä»½ä¸å ¶æå£°ç§°çä¸è´ã</li> 2640<li>æææäºç¨æ·æ§è¡ä»»å¡çæéã</li> 2641</ul> 2642</li> 2643</ul>`,readingTime:{minutes:4.02,words:1206},title:"Chapter9 å®å ¨æ§",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chpater21%E6%9E%B6%E6%9E%84%E8%AF%84%E4%BC%B0.html",{loader:()=>f(()=>import("./Chpater21æ¶æè¯ä¼°.html-D3Xv5gSL.js"),__vite__mapDeps([175,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>ä¸ç§è¯ä¼°å½¢å¼</h2> 2644<ul> 2645<li>设计è¿ç¨ä¸ç±è®¾è®¡å¸è¿è¡çè¯ä¼°ã</li> 2646<li>设计è¿ç¨ä¸ç±åè¡è¿è¡çè¯ä¼°ã</li> 2647<li>æ¶æè®¾è®¡å®æåç±å¤é¨äººåè¿è¡çåæã</li> 2648</ul> 2649<h3>设计å¸çè¯ä¼°(Evaluation by the Designer)</h3> 2650<ul> 2651<li>æ¯å½è®¾è®¡å¸ååºå ³é®è®¾è®¡å³çæ¶ï¼åºå¯¹éæ©çå¤éæ¹æ¡è¿è¡è¯ä¼°ã</li> 2652<li>âçæåæµè¯âæ¹æ³ä¸çâæµè¯âé¨åã</li> 2653<li>éè¦è¿è¡å¤å°åæï¼æä¸ä¸ªå ç´ å æ¬ï¼ 2654<ul> 2655<li>å³ççéè¦æ§ã</li> 2656<li>æ½å¨å¤éæ¹æ¡çæ°éãæ´å¤çå¤éæ¹æ¡éè¦æ´å¤çæ¶é´è¿è¡è¯ä¼°ã</li> 2657<li>è¶³å¤å¥½ä¸å®ç¾ç¸å¯¹ãä¸è¦å¨å³çä¸è±è´¹è¶ è¿å ¶ä»·å¼çæ¶é´ã</li> 2658</ul> 2659</li> 2660</ul>`,readingTime:{minutes:9.11,words:2732},title:"Chpater21 æ¶æè¯ä¼°",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/%E5%A4%8D%E4%B9%A0%E6%8F%90%E7%BA%B2.html",{loader:()=>f(()=>import("./å¤ä¹ æçº².html-H28RAhJM.js"),__vite__mapDeps([176,1])),meta:{author:"chiichen",date:17023392e5,category:["课ç¨ç¬è®°"],tag:["软件ä½ç³»ç»æ"],sticky:!1,isOriginal:!0,excerpt:`<h2>Part I Introduction of software architecture</h2> 2661<p>â What? definition, 3 types of structures,architecture patterns & tactics<br> 2662â Why?</p> 2663<h2>Part II Quality attributes</h2> 2664<p>â Availability, interoperability, modifiability,performance, security, testability, usability andothers<br> 2665â Definitions, general scenarios & concretescenarios of quality attributes, tactics<br> 2666â Architecture patterns and tactics<br> 2667â Quality attributes modeling and analysis:availability and performance</p>`,readingTime:{minutes:.73,words:220},title:"2023å¹´ææ«èå¤ä¹ æçº²",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/2019_IT%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86_%E5%A4%8D%E4%B9%A0%E7%AC%94%E8%AE%B0.html",{loader:()=>f(()=>import("./2019_IT项ç®ç®¡ç_å¤ä¹ ç¬è®°.html-BAXM3ljW.js"),__vite__mapDeps([177,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,excerpt:` 2668<h2>æ´ç人ï¼å½æè½©</h2> 2669<h2>Ver1.0 æ´çæ¥æï¼2019/11/26</h2> 2670<h2>Ver2.0ãVer2.1 æ´çæ¥æï¼2019/11/27</h2> 2671<h2>Ver3.0 æ´çæ¥æï¼2019/11/29ï¼ç»çï¼ä¸åæ´æ°ï¼</h2> 2672<h5>ä¿®æ¹è¯´æï¼Ver2.0 é¢å¤è¡¥å äºé¨åç¥è¯ç¹ä»¥åä¿®æ£äºé¨åæ¼åé误ï¼Ver2.1 æ·»å äºå¿ éçé¢å¤çä¸æç¿»è¯ä»¥å忬¡ä¿®æ£é¨åæ¼åé误ï¼Ver3.0 忬¡æ·»å äºé¨åç¥è¯ç¹ï¼ç°å¨å·²ç»ç¸å¯¹æ¯è¾å®å¤äºï¼ä»¥åä¿®æ£äºé¨åæ¼åé误</h5> 2673<h2>æ³¨ï¼æ´ç䏿ï¼å¤§å®¶å¯ä»¥å¨è¿ä¸ªåºç¡ä¸èªè¡è°æ´ä¼åç¬è®°ï¼å 容ä¸å ¨ï¼3.0 çæ¬çå 容ç¸å¯¹è¿æ¯æ¯è¾è¯¦ç»çäºï¼â æ è®°æ¯ç¬è 认为çéç¹ï¼ç¬è 建议å¤ä¹ çæ¶åå¯ä»¥è¿ä»½ç¬è®°ä¸ºä¸»ï¼åææ¯å·²ç»çè¿ä¸é PPT æè 书æ¬ï¼æéè¦çåå¦å¦å¤è¿è¦éå å ¶ä»èµæå»çãè½¬è½½è¯·æ æåä½è åç¸å ³ææ¡£é¾æ¥</h2>`,readingTime:{minutes:15.32,words:4595},title:"软件项ç®ç®¡ç2019å¤ä¹ ç¬è®°",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC10%E7%AB%A0%E9%A1%B9%E7%9B%AE%E6%B2%9F%E9%80%9A%E7%AE%A1%E7%90%86.html",{loader:()=>f(()=>import("./第10ç« é¡¹ç®æ²é管ç.html-C0LGDNJ3.js"),__vite__mapDeps([178,1])),meta:{author:"chiichen",date:1702944e6,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 2674<ol> 2675<li>é¡¹ç®æ²é管çç 3 个è¿ç¨</li> 2676<li>é¡¹ç®æ²é管ç计ååºå æ¬åªäºå 容ï¼</li> 2677<li>åå¸ä¿¡æ¯åºè¯¥æ³¨æåªäºæ¹é¢ï¼</li> 2678<li>ç»©ææ¥å</li> 2679<li>æ¹åæ²éçä¸äºå»ºè®®</li> 2680<li>å¦ä½ææå¼ä¼ï¼</li> 2681<li>å¦ä½æ´é«æä½¿ç¨çµåé®ä»¶æå ¶ä»éè®¯å·¥å ·ï¼</li> 2682</ol> 2683<h2>é¡¹ç®æ²é管ç</h2> 2684<ul> 2685<li>é¡¹ç®æ²é管ççç®æ æ¯ç¡®ä¿é¡¹ç®ä¿¡æ¯è½å¤åæ¶ä¸éå½å°çæãæ¶éãåéãåå¨åé¨ç½²ãé¡¹ç®æ²é管çä¸å å«ä»¥ä¸ 3 个主è¦è¿ç¨: 2686<ol> 2687<li><code>è®¡åæ²é</code>管çå æ¬ç¡®å®å¹²ç³»äººçä¿¡æ¯åæ²ééæ±ââè°éè¦ä»ä¹ä¿¡æ¯?ä»ä»¬ä»ä¹æ¶åéè¦è¿äºä¿¡æ¯?å¦ä½å°ä¿¡æ¯åéç»ä»ä»¬?è¿ä¸ªè¿ç¨çè¾åºå æ¬æ²é管ç计åã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã</li> 2688<li><code>ç®¡çæ²é</code>
2688å æ¬å¯¹æ²é管ç计åä¸çé¡¹ç®æ²éè¿è¡å建ãåå¸ãåå¨ãæ£ç´¢åå¤ç½®ãè¿ä¸ªè¿ç¨ç主è¦è¾åºå æ¬é¡¹ç®æ²éã项ç®ç®¡çè®¡åæ´æ°ãé¡¹ç®ææ¡£æ´æ°åç»ç»è¿ç¨èµäº§æ´æ°ã</li> 2689<li><code>æ§å¶æ²é</code>å æ¬ç¡®ä¿å¹²ç³»äººçæ²ééæ±å¾å°æ»¡è¶³ã</li> 2690</ol> 2691</li> 2692</ul>`,readingTime:{minutes:6.45,words:1936},title:"第10ç« é¡¹ç®æ²é管ç",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC11%E7%AB%A0%E9%A1%B9%E7%9B%AE%E9%A3%8E%E9%99%A9%E7%AE%A1%E7%90%86.html",{loader:()=>f(()=>import("./第11ç« é¡¹ç®é£é©ç®¡ç.html-DJYAejeM.js"),__vite__mapDeps([179,1])),meta:{author:"chiichen",date:1702944e6,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 2693<ol> 2694<li>项ç®é£é©ç®¡çç 6 个è¿ç¨</li> 2695<li>é£é©æç¨å½æ°å¯ä»¥å为åªå ç±»ï¼</li> 2696<li>é£é©ç®¡ç计åç主è¦ä¸»é¢ï¼</li> 2697<li>é£é©çåç±»ï¼</li> 2698<li>é£é©è¯å«çå·¥å ·å æ¬ï¼</li> 2699<li>é£é©ç»è®°ååºå æ¬åªäºå 容ï¼</li> 2700<li>宿§é£é©åæçä¸¤ç§æ¹æ³ï¼</li> 2701<li>å®éé£é©åæçå ä¸ªæ¹æ³ï¼</li> 2702<li>åºå¯¹è´é£é©çå ç§çç¥ï¼</li> 2703<li>åºå¯¹æ£é£é©çå ç§çç¥ï¼</li> 2704<li>é£é©çæ§çå·¥å ·åææ¯å æ¬ï¼</li> 2705</ol> 2706<h2>项ç®é£é©ç®¡ç</h2> 2707<ul> 2708<li>项ç®é£é©ççä¸è¬å®ä¹æ¯å¯¹å®ç°é¡¹ç®ç®æ å¯è½äº§çæ¶æ<code>æç§¯æ</code>å½±åçä¸ç¡®å®æ§ã</li> 2709<li><code>é£é©æç¨(risk utility)</code>æ¯æä»æ½å¨æ¶çä¸è·å¾çæ»¡è¶³ææææ¦æçç¨åº¦ãå¦ä¸å¾æç¤ºï¼å为:<code>é£é©è§é¿å(risk-averse)</code>ã<code>é£é©å好å(risk-seeking)</code>å<code>é£é©ä¸ç«å(risk-neutral)</code>ï¼Y 轴代表æç¨,æè 说æ¯ä»äººåé©ä¸è·å¾çææ¦ãX è½´æ¾ç¤ºçæ¯æ½å¨çåæ¥ææºä¼çä»·å¼ã<br> 2710</li> 2711<li>é£é©ç®¡çæ¶å 6 个主è¦è¿ç¨ï¼ 1. 计åé£é©ç®¡ç:é对æä¸é¡¹ç®å³å®å¦ä½å¶å®ä¸è®¡åé£é©ç®¡çæ´»å¨ãè¿ä¸ªè¿ç¨ç主è¦è¾åºæ¯é£é©ç®¡ç计åã 2. è¯å«é£é©:æç¡®å®åªäºé£é©ä¼å½±å项ç®å¹¶è®°å½é£é©ç¹æ§çè¿ç¨ãè¿ä¸ªè¿ç¨ç主è¦è¾åºæ¯é£é©ç»è®°åãé£é©æ¥ååé¡¹ç®ææ¡£æ´æ°ã 3. 宿½å®æ§é£é©åæ:ææç §åççå¯è½æ§åå½±åç¨åº¦å¯¹é£é©è¿è¡ä¼å æåºçè¿ç¨ãå¨è¯å«é£é©ä¹å,项ç®å¢éå¯ä»¥ä½¿ç¨åç§å·¥å ·åææ¯å¯¹é£é©è¿è¡æåºå¹¶æ´æ°é£é©ç»è®°åä¸çä¿¡æ¯ã主è¦è¾åºæ¯é¡¹ç®ææ¡£æ´æ°ã 4. 宿½å®éé£é©åæ:æå°±å·²è¯å«é£é©å¯¹é¡¹ç®æ´ä½ç®æ çå½±åè¿è¡å®éåæçè¿ç¨ãè¿ä¸ªè¿ç¨ç主è¦è¾åºæ¯é¡¹ç®ææ¡£æ´æ°ã 5. 计åé£é©ååº:æéåæªæ½æ¥æé«å®ç°é¡¹ç®ç®æ çæ¦çãåå°é£é©å¯¹å®ç°é¡¹ç®ç®æ çå¨èçè¿ç¨ãå©ç¨é¢å å¶å®çé£é©ç®¡çè¿ç¨,项ç®å¢éå¯ä»¥å¶å®æµé£é©ååºçç¥,è¿äºçç¥å¸¸å¸¸å¯¼è´åæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã 6. 宿½é£é©ååº:æå®æ½é£é©ååºçç¥ãè¾åºå æ¬åæ´è¯·æ±åé¡¹ç®ææ¡£æ´æ°ã 7. çæ§é£é©:å æ¬å¨é¡¹ç®çå½å¨æä¸,çæ§å·²ç¥çé£é©ãè¯å«æ°æçé£é©ã宿½é£é©ååºè®¡å,å¹¶è¯ä¼°é£é©ååºçç¥çæææ§ãæ¤è¿ç¨ç主è¦è¾åºå æ¬å·¥å·¥ä½ç»©æä¿¡æ¯ãåæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°ãé¡¹ç®ææ¡£æ´æ°ãç»ç»è¿ç¨èµäº§æ´æ°ã<br> 2712</li> 2713</ul>`,readingTime:{minutes:20.63,words:6190},title:"第11ç« é¡¹ç®é£é©ç®¡ç",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC12%E7%AB%A0%E9%A1%B9%E7%9B%AE%E9%87%87%E8%B4%AD%E7%AE%A1%E7%90%86.html",{loader:()=>f(()=>import("./第12ç« é¡¹ç®éè´ç®¡ç.html-Cjku4GUD.js"),__vite__mapDeps([180,1])),meta:{author:"chiichen",date:1702944e6,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 2714<ol> 2715<li>项ç®éè´ç®¡çç 3 个è¿ç¨</li> 2716<li>è§åéè´çå·¥å ·åæå·§ï¼</li> 2717<li>éè´ç®¡ç计åå æ¬çå 容ï¼</li> 2718<li>常è§çéè´æä»¶ï¼</li> 2719<li>宿½éè´çè¿ç¨ï¼</li> 2720</ol> 2721<h2>项ç®éè´ç®¡ç</h2> 2722<ul> 2723<li>éè´(procurement)æå³çä»å¤é¨æ¥æºè·å¾äº§åæè æå¡ãéè´ä¸è¯å¹¿æ³ç¨äºæ¿åº,许å¤ç§äººä¼ä¸ä½¿ç¨å¤è´åå¤å ã</li> 2724<li>项ç®éè´ç®¡ç(project precurement management)æ 3 个主è¦è¿ç¨ï¼ 2725<ol> 2726<li><code>计åéè´ç®¡ç</code>å æ¬å³å®éè´ä»ä¹ã使¶éè´åå¦ä½éè´ãå¨éè´è®¡åä¸,å³çè éè¦æç¡®å¤å ä»ä¹ãå³å®ååç±»å,å¹¶ä¸åæ½å¨åæ¹æè¿°å·¥ä½çå 容ãåæ¹(sellers)å æ¬æ¿å åæåå ¶ä»ç»ç»å个人æ
2726ä¾äº§åææå¡çä¾åºåã该è¿ç¨çè¾åºå æ¬éè´ç®¡ç计åãéè´çç¥ãææ æä»¶ãéè´å·¥ä½è¯´æä¹¦ãæ¥æºéæ©æ åãèªå¶æè´ä¹°å³çãç¬ç«ææ¬ä¼°ç®ãåæ´è¯·æ±ãé¡¹ç®ææ¡£æ´æ°åç»ç»è¿ç¨èµäº§æ´æ°ã</li> 2727<li><code>宿½éè´</code>å æ¬è·å¾åæ¹ååºã鿩忹并æäºååã该è¿ç¨çè¾åºå æ¬éæ©åæ¹ãè¾¾æåè®®ãåæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°ãé¡¹ç®ææ¡£æ´æ°åç»ç»è¿ç¨èµäº§æ´æ°ã</li> 2728<li><code>æ§å¶éè´</code>å æ¬ç®¡çä¸åæ¹çå ³ç³»ãçæ§ååå±¥è¡æ åµãéå½å°è¿è¡æ´æ¹åç»æ¸ ååã该è¿ç¨ç主è¦è¾åºå æ¬ç»æéè´ãå·¥ä½ç»©æä¿¡æ¯ãéè´æä»¶æ´æ°ãåæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°ãé¡¹ç®ææ¡£æ´æ°åç»ç»è¿ç¨èµäº§æ´æ°ã</li> 2729</ol> 2730</li> 2731</ul>`,readingTime:{minutes:13.26,words:3979},title:"第12ç« é¡¹ç®éè´ç®¡ç",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC13%E7%AB%A0%E9%A1%B9%E7%9B%AE%E5%B9%B2%E7%B3%BB%E4%BA%BA%E7%AE%A1%E7%90%86.html",{loader:()=>f(()=>import("./第13ç« é¡¹ç®å¹²ç³»äººç®¡ç.html-OlNmkdFw.js"),__vite__mapDeps([181,1])),meta:{author:"chiichen",date:17031168e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 2732<ol> 2733<li>项ç®å¹²ç³»äººç®¡çç 4 个è¿ç¨</li> 2734<li>干系人ç»è®°è¡¨å æ¬åªäºå 容ï¼</li> 2735<li>干系人åä¸ç级ï¼</li> 2736<li>干系人管ç计åå æ¬ï¼</li> 2737<li>åä¸åº¦æ§å¶çæ¹æ³ï¼</li> 2738<li>ææç®¡çç©éµå æ¬åªäºæ¡ç®ï¼</li> 2739</ol> 2740<h2>项ç®å¹²ç³»äººç®¡ç</h2> 2741<ul> 2742<li>项ç®å¹²ç³»äººç®¡ççç®çæ¯è¯å«å项ç®å½±åçææäººåä¸ç»ç»ãåæå¹²ç³»äººçææ,并使干系人å¨é¡¹ç®çæ´ä¸ªçå½å¨æä¸ææåä¸é¡¹ç®å³çã项ç®ç»çåä»ä»ä»¬çå¢éå¿ é¡»ä¸å¹²ç³»äººè¿è¡è¯å¥½çæ²é,å¹¶åæ¶è§£å³é®é¢ä½¿å¹²ç³»äººæ»¡æã</li> 2743<li>项ç®å¹²ç³»äººç®¡çç 4 个è¿ç¨å¦ä¸: 2744<ol> 2745<li><code>è¯å«å¹²ç³»äºº</code>æ¯æè¯å«åä¸é¡¹ç®æå项ç®å½±åçææäººå,并确确å
2745®ç®¡çå¹²ç³»äººå ³ç³»çæä½³æ¹å¼ãè¿ä¸ªè¿ç¨ç主è¦è¾åºæ¯å¹²ç³»äººç»è®°åã</li> 2746<li><code>计å干系人</code>å䏿¯ææ ¹æ®å¹²ç³»äººçéæ±ãå ´è¶£åæ½å¨å½±å,ç¡ç¡®å®ä½¿å¹²ç³»äººææåä¸é¡¹ç®å³çåæ´»å¨ççç¥ãè¿ä¸ªè¿ç¨çè¾åºæ¯å¹²ç³»äººåä¸è®¡åã</li> 2747<li><code>管ç干系人</code>å䏿¯æä¸é¡¹ç®å¹²ç³»äººæ²éå¹¶ä¸åå·¥ä½,ä»äººè满足ä»ä»¬ç鿱忿ãè§£å³é®é¢,å¹¶ä¿è¿ä»ä»¬åä¸é¡¹ç®å³çåæ´»å¨ãè¿ä¸ªè¿ç¨çè¾åºæ¯åæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã</li> 2748<li><code>çç£å¹²ç³»äºº</code>å䏿¯æçç£å¹²ç³»äººå ³ç³»,å¹¶æ ¹æ®å¹²ç³»äººçéæ±è°æ´è®¡ååçç¥ä»¥å¸å¼å¹²ç³»äººåä¸ãè¿ä¸ªè¿ç¨çè¾åºæ¯å·¥ä½ç»©æä¿¡æ¯ãåæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã</li> 2749</ol> 2750</li> 2751</ul>`,readingTime:{minutes:8.02,words:2406},title:"第13ç« é¡¹ç®å¹²ç³»äººç®¡ç",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC1%E7%AB%A0%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E6%A6%82%E8%BF%B0.html",{loader:()=>f(()=>import("./第1ç« é¡¹ç®ç®¡çæ¦è¿°.html-CwfUdhDk.js"),__vite__mapDeps([182,1])),meta:{author:"chiichen",date:17017344e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ¦è¦</h2> 2752<ul> 2753<li>ä½ä¼å°å¯¹æ´å¥½ç项ç®ç®¡ç(å°¤å ¶æ¯ IT 项ç®ç®¡ç)䏿å¢é¿çéæ±ã</li> 2754<li>è§£éä»ä¹æ¯é¡¹ç®,å举 IT 项ç®çä¾å,ååºé¡¹ç®çåç§ç¹å¾,å¹¶åæè¿°é¡¹ç®ç®¡çç约æã</li> 2755<li>å®ä¹é¡¹ç®ç®¡ç,并论述项ç®ç®¡çæ¡æ¶ä¸çå ³é®å ç´ ,å æ¬ç项ç®å¹²ç³»äººã项ç®ç®¡ççç¥è¯é¢åã常ç¨å·¥å ·åææ¯,以åé¡¹ç®æåçè¦ç´ ã</li> 2756<li>讨论项ç®ç®¡çã项ç®é管çå项ç®ç»å管çä¹é´çå ³ç³»,以åå®ä»¬ä¸çæ¯ä¸ä¸ªå¯¹ä¼ä¸æåçéè¦æ§ã</li> 2757<li>éè¿æè¿°é¡¹ç®ç»çåäºä»ä¹ãéè¦ä»ä¹æè½ãçæ³çæè½ç»ç»å(è½åä¸è§å½¢)å IT 项ç®ç»çç就䏿ºä¼æ¥äºè§£é¡¹ç®ç»ççè§è²ã</li> 2758<li>æè¿°é¡¹ç®ç®¡çä¸ä¸,å æ¬å®çåå²ãPMI çä¸ä¸ç»ç»çä½ç¨æã项ç®ç®¡çèµæ ¼è®¤è¯åèä¸éå¾·çéè¦æ§,以å项ç®ç®¡çè½¯ä»¶çæ´æ°ã</li> 2759</ul>`,readingTime:{minutes:7.81,words:2344},title:"第1ç« é¡¹ç®ç®¡çæ¦è¿°",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC2%E7%AB%A0%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E4%B8%8EIT%E7%8E%AF%E5%A2%83.html",{loader:()=>f(()=>import("./第2ç« é¡¹ç®ç®¡çä¸ITç¯å¢.html-B1wrGF24.js"),__vite__mapDeps([183,1])),meta:{author:"chiichen",date:17019072e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ¦è¦</h2> 2760<ul> 2761<li>å®ä¹é¡¹ç®ç®¡ççç³»ç»è§ä»¥åå¦ä½å°é¡¹ç®ç®¡çåºç¨äº IT 项ç®ä¸ã</li> 2762<li>æ»ç»ç»ç»çç¸å ³è¦ç¹,å æ¬ç»ç»ç 4 ä¸ªæ¡æ¶ãç»ç»ç»æåç»ç»æåã</li> 2763<li>è§£é为ä»ä¹é¡¹ç®å¹²ç³»äººç®¡çåä¼ä¸é«å±çæ¿è¯ºå¯¹é¡¹ç®æåè³å ³éè¦ã</li> 2764<li>åºå项ç®çå½å¨æå产åçå½å¨æä¹é´çå¼åã</li> 2765<li>讨论 IT 项ç®çç¬ç¹æ§å夿 ·æ§ã</li> 2766<li>æ»ç»å½±å IT 项ç®ç®¡ççææ°è¶å¿,å æ¬å ¨çåãå¤å ãèæå¢éåææ·é¡¹ç®ç®¡çã</li> 2767</ul> 2768<h2>项ç®ç®¡ççç³»ç»è§</h2> 2769<p>为äºé«æå°å¤çå¤æçæ åµ,项ç®ç»çå¿ é¡»ä»¥æ´ä½çè§ç¹è®¤è¯é¡¹ç®,å¹¶ä¸ç<br> 2770è§£è¯¥é¡¹ç®æ¯å¦ä½ä¸æ´å¤§çç»ç»è¿è¡èç³»çã<code>ç³»ç»æè(systems thinking)</code>æè¿°äºè¿ç§æ´ä½ç<br> 2771è§ç¹ã</p>`,readingTime:{minutes:8.78,words:2634},title:"第2ç« é¡¹ç®ç®¡çä¸ITç¯å¢",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC3%E7%AB%A0%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E8%BF%87%E7%A8%8B%E7%BB%84.html",{loader:()=>f(()=>import("./第3ç« é¡¹ç®ç®¡çè¿ç¨ç».html-DV1DJigE.js"),__vite__mapDeps([184,1])),meta:{author:"chiichen",date:17021664e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ¦è¦</h2> 2772<ul> 2773<li>æè¿° 5 大项ç®ç®¡çè¿ç¨ç»åå ¶åèªå ¸åçæ´»å¨æ°´å¹³,以åå®ä»¬ä¹é´çç¸äºå ³ç³»ã</li> 2774<li>äºè§£é¡¹ç®ç®¡çè¿ç¨ç»ä¸é¡¹ç®ç®¡çç¥è¯é¢åä¹é´çç¸äºå ³ç³»ã</li> 2775<li>讨论ç»ç»å¦ä½å¼å IT 项ç®ç®¡çæ¹æ³è®ºæ¥æ»¡è¶³èªèº«çéè¦ã</li> 2776<li>å顾ä¸ä¸ªç»ç»åºç¨é¡¹ç®ç®¡çè¿ç¨ç»ç®¡ç IT 项ç®çæ¡ä¾ç ç©¶,æè¿°æ¯ä¸ªè¿ç¨ç»çè¾åº,äºè§£ææç项ç®å¯å¨ã项ç®è®¡åãé¡¹ç®æ§è¡ã项ç®çæ§åé¡¹ç®æ¶å°¾æ¯å¦ä½ä¿è¿é¡¹ç®æåçã</li> 2777<li>å顾åºç¨ææ·æ¹æ³ç®¡ççåä¸ä¸ª IT 项ç®çæ¡ä¾ç ç©¶,å¹¶æ¯æ¯è¾ææ·æ¹æ³å颿µæ¹æ³ä¹é´çå ³é®åºå«ã</li> 2778<li>æè¿°ä¸ºæ¯ä¸ªè¿ç¨ç»åå»ºææ¡£çå 个模æ¿ã</li> 2779</ul>`,readingTime:{minutes:6.88,words:2063},title:"第3ç« é¡¹ç®ç®¡çè¿ç¨ç»",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC4%E7%AB%A0%E9%A1%B9%E7%9B%AE%E6%95%B4%E5%90%88%E7%AE%A1%E7%90%86.html",{loader:()=>f(()=>import("./第4ç« é¡¹ç®æ´å管ç.html-TSXiMNjo.js"),__vite__mapDeps([185,1])),meta:{author:"chiichen",date:17021664e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 2780<ol> 2781<li>项ç®éæç®¡ççè¿ç¨</li> 2782<li>éæ© IT 项ç®ç计åè¿ç¨</li> 2783<li>鿩项ç®ç 5 ä¸ªå¸¸ç¨ææ¯</li> 2784<li>NPV çè®¡ç®æ¥éª¤</li> 2785<li>综ååæ´æ§å¶ç 3 个主è¦ç®æ </li> 2786<li>å¨ç»ç»ä¸ï¼è®¾ç«åæ´è¯·æ±ä¹¦çæä¹ï¼å¦ä½å»ºç«ä¸ä¸ªå¥½çåæ´è¯·æ±ç®¡çè¿ç¨ï¼</li> 2787</ol> 2788<h2>ä»ä¹æ¯é¡¹ç®æ´å管ç</h2> 2789<ul> 2790<li> 2791<p><code>é¡¹ç®æ´å管ç(project integration management)</code>å æ¬å¨æ´ä¸ªé¡¹ç®çå½å¨æä¸åè°ææå ¶ä»ç项ç®ç®¡çç¥è¯é¢åãè¿ç§æ´åç¡®ä¿äºé¡¹ç®çææå ç´ è½å¨æ£ç¡®çæ¶é´éåå¨ä¸èµ·,ä»èæåå°å®æé¡¹ç®ãæ ¹æ®ã项ç®ç®¡çç¥è¯ä½ç³»æå(第 6 ç)ãæè¿°,é¡¹ç®æ´å管çå æ¬ 7 个主è¦è¿ç¨:</p> 2792<ol> 2793<li>å¶å®é¡¹ç®ç« ç¨ãå³ä¸é¡¹ç®å¹²ç³»äººä¸èµ·åä½,å¶å®æ£å¼æ¹å项ç®çæä»¶ââç« ç¨ã</li> 2794<li>å¶å®é¡¹ç®ç®¡ç计åãå³åè°é¡¹ç®è®¡åçææç»æé¨å,å¹¶æå®å®ä»¬æ´å为ä¸ä»½ä¸è´çè¿è´¯çæä»¶ââ项ç®ç®¡ç计åã</li> 2795<li>æå¯¼ä¸ç®¡ç项ç®å·¥ä½ãå³éè¿å®æ½é¡¹ç®ç®¡ç计åä¸çæ´»å¨,æ¥æ§è¡é¡¹ç®ç®¡ç计åã</li> 2796<li>管ç项ç®ç¥è¯ãå³ä½¿ç¨ç°æç¥è¯å¹¶çææ°ç¥è¯,以å®ç°é¡¹ç®ç®æ ,并帮å©ç»ç»å¦ä¹ ã</li> 2797<li>çæ§é¡¹ç®å·¥ä½ãå³çç£é¡¹ç®å·¥ä½æ¯å¦ç¬¦å项ç®ç绩æç®æ ã</li> 2798<li>宿½æ´ä½åæ´æ§å¶ãå³å¨æ´ä¸ªé¡¹ç®çå½å¨æä¸è¯å«ãè¯ä¼°å管çåæ´ã</li> 2799<li>é¡¹ç®æé¶æ®µæ¶å°¾ãå³ç»ç»é¡¹ç®æé¶æ®µçæææ´»å¨,ä»èèæ£å¼ç»æé¡¹ç®æé¶æ®µã</li> 2800</ol> 2801</li> 2802<li> 2803<p>项ç®ç»çè¦åè°é¡¹ç®èµæºãç»é¢å ¨å±ï¼è§£å³é¡¹ç®å²çªï¼è宿è¿äºä»»å¡çé¦è¦æ¹æ³å°±æ¯é¡¹ç®æ´å管ç</p> 2804</li> 2805<li> 2806<p>è¯å¥½çé¡¹ç®æ´å管ç对满足干系人çéæ±è³å ³éè¦ãé¡¹ç®æ´å管çå æ¬çé¢ç®¡çã<code>çé¢ç®¡ç(interface management)</code>æ¶åæç¡®å管çä¼å¤é¡¹ç®å ç´ ç¸äºä½ç¨ç交çç¹ãçé¢ç®¡çç主è¦å·¥å ·æ¯æ²éåå ³ç³»ãéç项ç®åä¸äººåçå¢å ,交çç¹çæ°éå¯è½ä¼åç°ææ°çº§å¢é¿ã</p> 2807</li> 2808<li> 2809<p>
2809é¡¹ç®æ´åç®¡çæ¯å¨æ´ä¸ªç»ç»çç¯å¢ä¸è¿è¡ç,èä¸ä» ä» åçå¨ä¸ä¸ªç¹å®é¡¹ç®çå é¨ã项ç®ç»çå¿ é¡»å°é¡¹ç®çå·¥ä½åç»ç»çè¿è¥æ´åèµ·æ¥ã</p> 2810</li> 2811</ul>`,readingTime:{minutes:24.03,words:7210},title:"第4ç« é¡¹ç®æ´å管ç",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC5%E7%AB%A0%E9%A1%B9%E7%9B%AE%E8%8C%83%E5%9B%B4%E7%AE%A1%E7%90%86.html",{loader:()=>f(()=>import("./第5ç« é¡¹ç®èå´ç®¡ç.html-D7p1W_8m.js"),__vite__mapDeps([186,1])),meta:{author:"chiichen",date:17023392e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 2812<ol> 2813<li>项ç®èå´ç®¡çæ¶åç 6 个主è¦è¿ç¨</li> 2814<li>èå´ç®¡ç计åå æ¬åªäºä¿¡æ¯ï¼</li> 2815<li>æ¶ééæ±çå¸¸ç¨æ¹æ³</li> 2816<li>å¶å®å·¥ä½åè§£ç»æï¼WBSï¼çæ¹æ³</li> 2817<li>èå´æ§å¶çç®æ </li> 2818<li>å ¬å¸åºéµå¾ªåªäºæä½³å®è·µæ¥é¿å åºç°ä¸»è¦çèå´é®é¢ï¼</li> 2819<li>èå´è延产ççåå ï¼æ¯å¦å¯ä»¥é¿å ï¼å¦ä½é¢é²èå´èå»¶ç产çï¼</li> 2820</ol> 2821<h2>ä»ä¹æ¯é¡¹ç®èå´ç®¡ç</h2> 2822<ul> 2823<li>项ç®ç®¡çæéè¦ä¹æé¾åçä¸é¡¹å·¥ä½å°±æ¯å®ä¹é¡¹ç®èå´ãèå´æ¯æå¼å项ç®äº§åææ¶åçææå·¥ä½åç¨äºå¼å产åçææè¿ç¨ã</li> 2824<li>项ç®èå´ç®¡ç(project scope management)æ¯æçå®åæ§å¶é¡¹ç®ä¸åºå æ¬ä»ä¹åä¸å æ¬ä»ä¹ææ¶åçè¿ç¨ã该è¿ç¨ç¡®ä¿äºé¡¹ç®å¢éå干系人对项ç®çå¯äº¤ä»ææä»¥åç产è¿äºå¯äº¤ä»æææè¿è¡çå·¥ä½è¾¾æå ±è¯ã项ç®èå´ç®¡çå å« 6 个主è¦è¿ç¨: 2825<ol> 2826<li>计åèå´ç®¡çï¼æ¯æç¡®å®å¦ä½ç®¡ç项ç®çèå´åéæ±ã</li> 2827<li>æ¶ééæ±ï¼æ¯æå®ä¹å¹¶è®°å½äº§åçç¹ç¹ååè½,以åå¼åè¿äºåçè¿ç¨ã</li> 2828<li>å®ä¹èå´ï¼æ¯æå®¡æ¥èå´ç®¡ç计åã项ç®ç« ç¨ãéæ±ææ¡£åç»ç»è¿ç¨èµäº§æ¥å¶å®ä¸ä»½èå´è¯´æä¹¦,å¹¶ä¸å¨éæ±çæ©å±ååæ´è¯·æ±å¾å°æ¹åæ¶å¢å æ´å¤çä¿¡æ¯ã</li> 2829<li>å建工ä½åè§£ç»æï¼æ¯æå°ä¸»è¦ç项ç®å¯äº¤ä»ææåè§£ææ´ç»å°åæ´æç®¡ççç»æé¨åã</li> 2830<li>确认èå´ï¼æ¯æé¡¹ç®å¯äº¤ä»ææçæ£å¼éªæ¶ãå ³é®é¡¹ç®å¹²ç³»äºº,æ¯å¦é¡¹ç®ç客æ·ä»¥å项ç®å起人å¨è¿ä¸è¿ç¨ä¸è¿è¡å®¡æ¥,ç¶åæ£å¼éªæ¶é¡¹ç®çå¯äº¤ä»ææã妿䏿¥åç°å¨çå¯äº¤ä»ææ,é£ä¹å®¢æ·æé¡¹ç®å起人é常ä¼è¯·æ±åæ´ã</li> 2831<li>æ§å¶èå´ï¼æ¯æå¯¹é¡¹ç®èå´çååè¿è¡æ§å¶,è¿å¯¹è®¸å¤ IT 项ç®èè¨æ¯ä¸ç§ææãèå´åæ´ç»å¸¸å½±åå¢éå®ç°é¡¹ç®çæ¶é´ç®æ åææ¬ç®æ çè½å,å æ¤é¡¹ç®ç»çå¿ é¡»ä»ç»æè¡¡èå´åæ´çææ¬åæ¶çã</li> 2832</ol> 2833</li> 2834</ul>`,readingTime:{minutes:14.43,words:4329},title:"第5ç« é¡¹ç®èå´ç®¡ç",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC6%E7%AB%A0%E9%A1%B9%E7%9B%AE%E8%BF%9B%E5%BA%A6%E7%AE%A1%E7%90%86.html",{loader:()=>f(()=>import("./第6ç« é¡¹ç®è¿åº¦ç®¡ç.html-CwJo0WPY.js"),__vite__mapDeps([187,1])),meta:{author:"chiichen",date:17027712e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 2835<ol> 2836<li>项ç®è¿åº¦ç®¡çä¸ç 6 个主è¦è¿ç¨</li> 2837<li>ä¸ä¸ªè¿åº¦ç®¡ç计ååºè¯¥å æ¬åªäºä¿¡æ¯ï¼</li> 2838<li>ä¾èµçåç§ç±»å</li> 2839<li>è¾ å©è¿åº¦å¶è®¢è¿ç¨çå·¥å ·åææ¯æåªäºï¼</li> 2840<li>SMART ååæ¯ææ ·å®ä¹éç¨ç¢çï¼</li> 2841<li>使ç¨å ³é®è·¯å¾æ¥ç¼©ç项ç®è¿åº¦æåªä¸ä¸ªä¸»è¦ææ¯ï¼</li> 2842</ol> 2843<h2>项ç®è¿åº¦ç®¡ç(Project Schedule Management)ä¸ç 6 个主è¦è¿ç¨</h2> 2844<ol> 2845<li><code>计åè¿åº¦ç®¡ç</code>æ¯æç¡®å®å°ç¨äºè®¡åãæ§è¡åæ§å¶é¡¹ç®è¿åº¦çæ¿çãæµç¨åææ¡£ã</li> 2846<li><code>å®ä¹æ´»å¨</code>æ¯æè¯å«é¡¹ç®å¢éæååå¹²ç³»äººå¿ é¡»æ§è¡å¹¶äº§çç项ç®çå¯äº¤ä»ææçç¹å®æ´»å¨ã<code>æ´»å¨(activity)</code>æ<code>ä»»å¡(task)</code>æ¯å·¥ä½çç»æè¦ç´ ,é常åºåºç°å¨å·¥ä½åè§£ç»æä¸,æé¢è®¡çæç»æ¶é´ãææ¬åèµæºè¦æ±ã</li> 2847<li><code>æåæ´»å¨é¡ºåº</code>æ¯æè¯å«åè®°å½é¡¹ç®æ´»å¨ä¹é´çå ³ç³»,å æ¬éæ±åãèµæºåè§£ç»æåé¡¹ç®ææ¡£æ´æ°ã</li> 2848<li><code>ä¼°ç®æ´»å¨æç»æ¶é´</code>æ¯æä¼°ç®å®æåé¡¹æ´»å¨æéç工使¶é´ã</li> 2849<li><code>å¶å®è¿åº¦è®¡å</code>æ¯æåææ´»å¨é¡ºåºãèµæºéæ±åæ´»å¨æç»æ¶é´ä¼°ç®æ¥å建项ç®è¿åº¦è®¡åã</li> 2850<li><code>æ§å¶è¿åº¦</code>æ¯ææ§å¶å管ç项ç®è¿åº¦çåæ´ã</li> 2851</ol>`,readingTime:{minutes:20.89,words:6268},title:"第6ç« é¡¹ç®è¿åº¦ç®¡ç",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC7%E7%AB%A0%E9%A1%B9%E7%9B%AE%E6%88%90%E6%9C%AC%E7%AE%A1%E7%90%86.html",{loader:()=>f(()=>import("./第7ç« é¡¹ç®ææ¬ç®¡ç.html-DXGdGUPF.js"),__vite__mapDeps([188,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 2852<ol> 2853<li>é¡¹ç®ææ¬ç®¡çç 4 个è¿ç¨</li> 2854<li>ææ¬ç®¡ç计ååºè¯¥å æ¬åªäºä¿¡æ¯ï¼</li> 2855<li>ä¸ç§åºæ¬çææ¬ä¼°ç®ç±»å</li> 2856<li>ææ¬ä¼°ç®çå·¥å ·åææ¯æåªäºï¼</li> 2857<li>æ£å¼å ¬å¼ï¼EV, CV, SV, CPI, SPIï¼</li> 2858</ol> 2859<h2>é¡¹ç®ææ¬ç®¡ç</h2> 2860<ul> 2861<li>ææ¬<code>è¶ æ¯(overrun)</code>æ¯å®é ææ¬è¶ è¿ä¼°è®¡çé¢å¤ç¾åæ¯æéé¢ã</li> 2862<li>æ¬ç« éè¿è®¡åææ¬ç®¡çãå建è¯å¥½çææ¬ä¼°ç®ä»¥åä
2862½¿ç¨æ£å¼ç®¡ç(EVM)æ¥è¾ å©ææ¬æ§å¶</li> 2863</ul> 2864<h3>é¡¹ç®ææ¬ç®¡çæ¯ä»ä¹</h3>`,readingTime:{minutes:16.47,words:4941},title:"第7ç« é¡¹ç®ææ¬ç®¡ç",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC8%E7%AB%A0%E9%A1%B9%E7%9B%AE%E8%B4%A8%E9%87%8F%E7%AE%A1%E7%90%86.html",{loader:()=>f(()=>import("./第8ç« é¡¹ç®è´¨é管ç.html-DIKn7aO8.js"),__vite__mapDeps([189,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 2865<ol> 2866<li>项ç®è´¨é管çç 3 个è¿ç¨</li> 2867<li>IT 项ç®ä¸å½±åè´¨éçéè¦èå´é¨åå æ¬ä»ä¹ï¼</li> 2868<li>è´¨éæ§å¶è¿ç¨ç主è¦è¾åºæ¯ä»ä¹ï¼</li> 2869<li>7 ç§åºæ¬çè´¨éå·¥å ·</li> 2870<li>DMAIC æ¹è¿è¿ç¨ä»£è¡¨åªäºä¸ªé¶æ®µ</li> 2871<li>CMMI çè½åå±çº§æåªå 个</li> 2872</ol> 2873<h2>项ç®è´¨é管ç</h2> 2874<ul> 2875<li><code>项ç®è´¨é管ç(project quality management)</code>çç®çæ¯ç¡®ä¿é¡¹ç®æ»¡è¶³å®æåºæ»¡è¶³çéæ±ã</li> 2876<li>项ç®è´¨é管çå æ¬ 3 个主è¦è¿ç¨: 2877<ol> 2878<li><code>计åè´¨é管ç</code>å æ¬ç¡®å®åªäºè´¨éè¦æ±åæ åä¸é¡¹ç®ç¸å ³,以åå¦ä½æ»¡è¶³è¿äºè¦æ±åæ åãå°è´¨éæ åçº³å ¥é¡¹ç®è®¾è®¡æ¯è´¨é计åçå ³é®é¨åãè´¨é计åç主è¦è¦è¾åºæ¯è´¨é管ç计åãè´¨éåº¦éæ åã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã<code>åº¦éæ å(metric)</code>æ¯ä¸ä¸ªæµéæ åã常è§çåº¦éæ åå æ¬äº§åçæ éçã产ååæå¡çå¯ç¨æ§ä»¥åå®¢æ·æ»¡æåº¦ã</li> 2879<li><code>管çè´¨é</code>å æ¬å°è´¨é管ç计å转æ¢ä¸ºå¯æ§è¡çè´¨éæ´»å¨ãè¿äºäºæ´»å¨å¿ é¡»éµå®ç»ç»çè´¨éæ¿çã该è¿ç¨ç主è¦è¾åºæ¯è´¨éæ¥åãæµè¯åè¯ä¼°ææ¡£ãåæ´æ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°ä»¥åé¡¹ç®ææ¡£æ´æ°ã</li> 2880<li><code>æ§å¶è´¨é</code>å æ¬çæ§å ·ä½ç项ç®ç»æ,以确ä¿å®ä»¬æ¯å®æ´çãæ£ç¡®ç并满足客æ·çææãè¿ä¸ªè¿ç¨é叏䏿æ¯å·¥å ·åè´¨éç®¡çææ¯ç¸å ³,å¦å¸ç´¯æå¾ãè´¨éæ§å¶å¾åç»è®¡æ½æ ·ãè´¨éæ§å¶ç主è¦è¾åºå æ¬è´¨éæ§å¶æµéãç»éªè¯çå¯äº¤ä»ææãå·¥ä½ç»©æä¿¡æ¯ãåæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã</li> 2881</ol> 2882</li> 2883</ul>`,readingTime:{minutes:15.75,words:4726},title:"第8ç« é¡¹ç®è´¨é管ç",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC9%E7%AB%A0%E9%A1%B9%E7%9B%AE%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86.html",{loader:()=>f(()=>import("./第9ç« é¡¹ç®èµæºç®¡ç.html-B3BBa8Iz.js"),__vite__mapDeps([190,1])),meta:{author:"chiichen",date:17028576e5,category:["课ç¨ç¬è®°"],tag:["软件项ç®ç®¡ç"],sticky:!1,isOriginal:!0,excerpt:`<h2>讨论é®é¢</h2> 2884<ol> 2885<li>项ç®èµæºç®¡çç 6 个è¿ç¨</li> 2886<li>é©¬æ¯æ´éæ±å±æ¬¡ç论ä»ä½å°é«æ¯åªå å±ï¼</li> 2887<li>项ç®ç»çè¿ç¨åª 7 ç§ä¹ æ¯æ¥æé«é¡¹ç®å·¥ä½çæçï¼</li> 2888<li>èµæºå¹³è¡¡çä¼ç¹æ¯ä»ä¹</li> 2889<li>å¡å æ¼æ¨¡åæè¿°çå¢é建设ç 5 ä¸ªé¶æ®µï¼</li> 2890<li>管ç项ç®å¢éçå·¥å ·åææ¯</li> 2891</ol> 2892<h2>项ç®èµæºç®¡ç</h2> 2893<ul> 2894<li>项ç®èµæºç®¡çå å«ä½¿é¡¹ç®æ¶åç人ååç©åèµæº(设æ½ã设å¤ãææãç©èµç)å¾å°æææå©ç¨çå ¨è¿ç¨ã人åèµæºç®¡çå æ¬ææç项ç®å¹²ç³»äºº:å起人ã客æ·ã项ç®å¢éæåãæ¯æäººå以å项ç®ä¾åºåçã项ç®èµæºç®¡çå æ¬ä»¥ä¸ 6 个è¿ç¨: 2895<ol> 2896<li><code>计åèµæºç®¡ç</code>å æ¬ç¡®å®å¦ä½è¯ä¼°ãè·åã管çå使ç¨é¡¹ç®èµæºãè¿ä¸ªè¿ç¨ç主è¦è¾åºæ¯èµæºç®¡ç计åãå¢éç« ç¨åé¡¹ç®ææ¡£æ´æ°ã</li> 2897<li><code>ä¼°ç®æ´»å¨èµæº</code>å æ¬ä¼°ç®å®æé¡¹ç®å·¥ä½æéç人ååç©åèµæºãè¾åºå æ¬èµæºéæ±ãä¼°ç®ä¾æ®ãèµæºåè§£ç»æåé¡¹ç®ææ¡£æ´æ°ã</li> 2898<li><code>è·åèµæº</code>å æ¬è·åå¢éæåã设æ½ã设å¤ãææãç©èµåå ¶ä»æéèµæºãè¾åºå æ¬ç©åèµæºå项ç®å¢éåé ãèµæºæ¥åãè¯·æ±æ´æ¹åä¸äºææ¡£çæ´æ°ã</li> 2899<li><code>建设项ç®å¢é</code>å æ¬ä¸ºäºæé«é¡¹ç®ç»©æè对个人æè½å项ç®å¢éæè½ç建设ãå¢é建设æè½å¯¹è®¸å¤é¡¹ç®ç»çæ¥è¯´é常æ¯ä¸ä¸ªææãè¿ä¸ªè¿ç¨ç主è¦è¾åºæ¯å¢é绩æè¯ä¼°ãåæ´è¯·æ±åä¸äºææ¡£çæ´æ°ã</li> 2900<li><code>管ç项ç®å¢é</code>å æ¬è·è¸ªå¢éæå绩æãæ¿å±å¢éæåãæä¾åæ¶åé¦ãè§£å³é®é¢åå²çªï¼ä»¥ååè°å忥叮婿é«é¡¹ç®ç»©æãè¿ä¸ªè¿ç¨çè¾åºå æ¬åæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°ãé¡¹ç®ææ¡£æ´æ°åç»ç»è¿ç¨èµäº§æ´æ°ã</li> 2901<li><code>æ§å¶èµæº</code>ä¿è¯é¡¹ç®çç©åèµæºè½æè®¡åè·åï¼çæ§è®¡åä¸å®é çèµæºå©ç¨çï¼å¹¶å¨éè¦æ¶éåçº æ£æªæ½ãè¾åºå æ¬å·¥ä½ç»©æä¿¡æ¯ãåæ´è¯·æ±ã项ç®ç®¡çè®¡åæ´æ°åé¡¹ç®ææ¡£æ´æ°ã</li> 2902</ol> 2903</li> 2904</ul>`,readingTime:{minutes:22.82,words:6845},title:"第9ç« é¡¹ç®èµæºç®¡ç",icon:"page",order:1,type:"article"}}],["/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91/eBPF%E5%BC%80%E5%8F%91/eBPF%E5%BC%80%E5%8F%91%E5%85%A5%E9%97%A8.html",{loader:()=>f(()=>import("./eBPFå¼åå ¥é¨.html--jgOkGqr.js"),__vite__mapDeps([191,1])),meta:{author:"chiichen",date:17000064e5,category:["æè°","Linuxå æ ¸"],tag:["Linuxå æ ¸","eBPF"],sticky:!1,excerpt:`<h2>ä¾èµå®è£ </h2> 2905<h3>Rust å®è£ </h3> 2906<p>
2906éè¦å®è£ Nightly çæ¬ï¼ç¥</p> 2907<h3>ç³»ç»ä¾èµå®è£ </h3> 2908<p>å®è£ bpf-linker ä¾èµå bpftool å·¥å ·</p> 2909<div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">sudo</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> apt-get</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> update</span></span> 2910<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">sudo</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> apt-get</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> install</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> llvm</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> clang</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66"> -y</span></span> 2911<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">cargo</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> install</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> bpf-linker</span></span></code></pre> 2912<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></div>`,readingTime:{minutes:5.96,words:1788},title:"eBPFå¼åå ¥é¨",icon:"page",order:1,type:"article"}}],["/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91/eBPF%E5%BC%80%E5%8F%91/eBPF%E8%BF%9B%E9%98%B6.html",{loader:()=>f(()=>import("./eBPFè¿é¶.html-DOoMWt7o.js"),__vite__mapDeps([192,1])),meta:{author:"chiichen",date:17000928e5,category:["æè°","Linuxå æ ¸"],tag:["Linuxå æ ¸","eBPF"],sticky:!1,excerpt:`<h2>èæ¯</h2> 2913<p>å¨ä¸ä¸ç¯å客䏿们è·ç宿¹ç example 宿äºä¸ä¸ª eBPF åºç¨çè¿è¡ï¼æ¥ä¸æ¥å°±è¦å°è¯ä¸ºèªå·±çéæ±ç¼åä¸ä¸ª eBPF åºç¨äºãæçéæ±æ¯è·åä¸ä¸ªåºç¨è´è½½å¨å åå°å空é´ä¸ç访åé¢çãåæ¥çæ³æ³æ¯å©ç¨ Numa Balancing ä¸ç Page æ è®°ï¼éè¿ Page-fault è®¡æ°æ¥å®ç°è¿ä¸ªåè½ã</p> 2914<h2>åææå»º</h2> 2915<p>é¦å ï¼æä»¬æ¯éè¦ç¥éåªä¸ª tracepoint å¯ä»¥æä¾ç»æä»¬ç eBPF ç¨åºæ¥æè½½ã</p> 2916<p>éè¿å½ä»¤æ¥è·åå æ ¸æä¾ç Tracepointï¼</p> 2917<div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">$</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> sudo</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> find</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> /sys/kernel/debug/tracing/events</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66"> -type</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> d</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> | </span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">grep</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> page_fault</span></span> 2918<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">/sys/kernel/debug/tracing/events/kvmmmu/handle_mmio_page_fault</span></span> 2919<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">/sys/kernel/debug/tracing/events/kvmmmu/fast_page_fault</span></span> 2920<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">/sys/kernel/debug/tracing/events/kvm/kvm_page_fault</span></span> 2921<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">/sys/kernel/debug/tracing/events/iommu/io_page_fault</span></span> 2922<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">/sys/kernel/debug/tracing/events/exceptions/page_fault_user</span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"> # è¿æ¯æä»¬æ³è¦ç</span></span> 2923<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">/sys/kernel/debug/tracing/events/exceptions/page_fault_kernel</span></span></code></pre> 2924<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></div>`,readingTime:{minutes:1.54,words:462},title:"eBPFè¿é¶",icon:"page",order:1,type:"article"}}],["/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/parsec3.0%E4%BB%8B%E7%BB%8D%E5%92%8C%E5%AE%89%E8%A3%85.html",{loader:()=>f(()=>import("./parsec3.0ä»ç»åå®è£ .html-yqyt2yCI.js"),__vite__mapDeps([193,1])),meta:{author:"chiichen",date:17000064e5,category:["Linuxå æ ¸"],tag:["Linuxå æ ¸","æ§è½æµè¯"],sticky:!1,excerpt:`<h2>转载信æ¯</h2> 2925<p>转载èª<a href="https://www.jianshu.com/p/b301f0dc0678" target="_blank" rel="noopener noreferrer">parsec3.0 ä»ç»åå®è£ </a></p> 2926<h2>ä¾èµå®è£ </h2> 2927<h3>å®è£ gcc g++ m4</h3> 2928<div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># å¦ææ¯ Ubuntu è¯·ä½¿ç¨ yum install gcc gcc-c++ m4 -y</span></span> 2929<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">yum</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> install</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> gcc</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> gcc-c++</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> m4</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66"> -y</span></span></code></pre> 2930<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>`,readingTime:{minutes:2.2,words:661},title:"PARSECæµè¯å¥ä»¶ 3.0 ä»ç»åå®è£ ",icon:"page",order:1,type:"article"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E5%A4%A7%E7%89%A9/%E5%85%B7%E4%BD%93%E6%8E%A8%E5%AF%BC/%E5%AE%9E%E5%BF%83%E5%B8%A6%E7%82%B9%E7%90%83%E4%BD%93%E9%9D%99%E7%94%B5%E8%83%BD%E7%9A%84%E6%8E%A8%E5%AF%BC.html",{loader:()=>f(()=>import("./å®å¿å¸¦ç¹çä½éçµè½çæ¨å¯¼.html-BQSQ619B.js"),__vite__mapDeps([194,1])),meta:{author:"chiichen",date:16776288e5,category:["课ç¨ç¬è®°"],tag:["è®¡ç®æºç½ç»"],sticky:!1,isOriginal:!0,excerpt:`<h2>æ¨å¯¼è¿ç¨</h2> 2931<p>彿们èèä¸ä¸ªå®å¿çä½çéçµè½æ¶ï¼æä»¬å¯ä»¥å设çä½å¸¦æååççµè·å¯åº¦ãæä»¬å¸ææ¨å¯¼åºçä½çéçµè½ï¼å³çä½å é¨ççµè·ä¸å¤é¨ççµè·ä¹é´çç¸äºä½ç¨è½ã</p> 2932<p>é¦å ï¼èèçä½å é¨çä¸ä¸ªä½ç§¯å ç´ ï¼è¯¥ä½ç§¯å ç´ è·ç¦»çå¿çè·ç¦»ä¸ºã该ä½ç§¯å ç´ æå¸¦çµè·éå¯ä»¥è¡¨ç¤ºä¸ºï¼</p> 2933<p>æ¥ä¸æ¥ï¼æä»¬èèçä½å é¨çä¸ä¸ªç¹çµè·å ç´ ä¸ä½ç§¯å ç´ ä¹é´çç¸äºä½ç¨è½ãæ ¹æ®åºä¼¦å®å¾ï¼ä¸¤ä¸ªçµè·ä¹é´çç¸äºä½ç¨è½å¯ä»¥è¡¨ç¤ºä¸ºï¼</p> 2934<p>å ¶ä¸ï¼æ¯ç空ä»çµå¸¸æ°ã</p> 2935<p>ç°å¨æä»¬æ¥è®¡ç®çä½å é¨çææç¹çµè·å ç´ ä¸ä½ç§¯å ç´ ä¹é´çç¸äºä½ç¨è½çæ»åãç±äºçä½å¸¦æååççµè·å¯åº¦ï¼æä»¬å¯ä»¥å°ç使¯çä½å é¨çå ¶ä»ä½ç§¯å ç´ ççµè·ï¼è表示çä½ç§¯å ç´ åæ¯çä½å é¨çä¸ä¸ªä½ç§¯å°çãå æ¤ï¼æä»¬å¯ä»¥å°è¡¨ç¤ºä¸ºçä½å é¨çææä½ç§¯å°çä¸å ¶ä»ä½ç§¯å ç´ ä¹é´ç¸äºä½ç¨è½çæ»åãè¿å¯ä»¥éè¿å¯¹ä½ç§¯å ç´ è¿è¡ç§¯åæ¥å®ç°ã</p>`,readingTime:{minutes:2.93,words:880},title:"å®å¿å¸¦ç¹çä½éçµè½çæ¨å¯¼",icon:"page",order:1,type:"article"}}],["/404.html",{loader:()=>f(()=>import("./404.html-DV9s1QPM.js"),__vite__mapDeps([195,1])),meta:{title:""}}],["/en/posts/",{loader:()=>f(()=>import("./index.html-Dcg9IgOc.js"),__vite__mapDeps([196,1])),meta:{title:"Posts"}}],["/notes/UML/",{loader:()=>f(()=>import("./index.html-DpWoDPUH.js"),__vite__mapDeps([197,1])),meta:{title:"UML"}}],["/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/",{loader:()=>f(()=>import("./index.html-D1NgC7iz.js"),__vite__mapDeps([198,1])),meta:{title:"软件ä½ç³»ç»æ"}}],["/posts/DragonOS/",{loader:()=>f(()=>import("./index.html-Cnz2Q9dZ.js"),__vite__mapDeps([199,1])),meta:{title:"Dragon OS"}}],["/posts/Linux%E5%86%85%E6%A0%B8/",{loader:()=>f(()=>import("./index.html-BKRjkylM.js"),__vite__mapDeps([200,1])),meta:{title:"Linuxå æ ¸"}}],["/posts/Rust/",{loader:()=>f(()=>import("./index.html-BkxL9G7_.js"),__vite__mapDeps([201,1])),meta:{title:"Rust"}}],["/posts/rcc%E7%BC%96%E8%AF%91%E5%99%A8/",{loader:()=>f(()=>import("./index.html-B1Yh9mmK.js"),__vite__mapDeps([202,1])),meta:{title:"Rccç¼è¯å¨"}}],["/posts/%E5%BE%AE%E4%BF%A1/",{loader:()=>f(()=>import("./index.html-FTmIUoTB.js"),__vite__mapDeps([203,1])),meta:{title:"微信"}}],["/posts/Linux%E5%86%85%E6%A0%B8/Patch%E8%A7%A3%E8%AF%BB/",{loader:()=>f(()=>import("./index.html-ATb4HyhK.js"),__vite__mapDeps([204,1])),meta:{title:"Patch解读"}}],["/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%88%86%E6%9E%90/",{loader:()=>f(()=>import("./index.html-BQK6UsSw.js"),__vite__mapDeps([205,1])),meta:{title:"å æ ¸åæ"}}],["/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91/",{loader:()=>f(()=>import("./index.html-DrOCFIpg.js"),__vite__mapDeps([206,1])),meta:{title:"å æ ¸å¼å"}}],["/posts/%E6%9D%82%E8%B0%88/Debug%E6%9D%82%E8%B0%88/",{loader:()=>f(()=>import("./index.html-DBU1K_mw.js"),__vite__mapDeps([207,1])),meta:{title:"Debugæè°"}}],["/posts/%E6%9D%82%E8%B0%88/",{loader:()=>f(()=>import("./index.html-DBryfvtk.js"),__vite__mapDeps([208,1])),meta:{title:"æè°"}}],["/posts/%E6%9D%82%E8%B0%88/%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/",{loader:()=>f(()=>import("./index.html-DSDCueEQ.js"),__vite__mapDeps([209,1])),meta:{title:"ç¼ç¨æè°"}}],["/posts/%E6%9D%82%E8%B0%88/%E9%9D%A2%E7%BB%8F/",{loader:()=>f(()=>import("./index.html-DkvAVC3c.js"),__vite__mapDeps([210,1])),meta:{title:"é¢ç»"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/UML/",{loader:()=>f(()=>import("./index.html-CVbIAoDQ.js"),__vite__mapDeps([211,1])),meta:{title:"UML"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/",{loader:()=>f(()=>import("./index.html-DpgRwehu.js"),__vite__mapDeps([212,1])),meta:{title:"课ç¨ç¬è®°"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E5%A4%A7%E7%89%A9/",{loader:()=>f(()=>import("./index.html-CSsf5bFD.js"),__vite__mapDeps([213,1])),meta:{title:"大ç©"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/",{loader:()=>f(()=>import("./index.html-D27VIWIF.js"),__vite__mapDeps([214,1])),meta:{title:"æä½ç³»ç»"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/",{loader:()=>f(()=>import("./index.html-B_kOGNbv.js"),__vite__mapDeps([215,1])),meta:{title:"æ°æ®åº"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%94%B5%E5%B7%A5/",{loader:()=>f(()=>import("./index.html-DU0KML1V.js"),__vite__mapDeps([216,1])),meta:{title:"çµå·¥"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/",{loader:()=>f(()=>import("./index.html-D1rkzPei.js"),__vite__mapDeps([217,1])),meta:{title:"ç¼è¯åç"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/",{loader:()=>f(()=>import("./index.html-C8lvctGT.js"),__vite__mapDeps([218,1])),meta:{title:"è®¡ç®æºç½ç»"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/",{loader:()=>f(()=>import("./index.html-CwQr9tB-.js"),__vite__mapDeps([219,1])),meta:{title:"软件ä½ç³»ç»æ"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/",{loader:()=>f(()=>import("./index.html-BjU-G-oI.js"),__vite__mapDeps([220,1])),meta:{title:"软件项ç®ç®¡ç"}}],["/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91/eBPF%E5%BC%80%E5%8F%91/",{loader:()=>f(()=>import("./index.html-BBVwDLPB.js"),__vite__mapDeps([221,1])),meta:{title:"E BPFå¼å"}}],["/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/",{loader:()=>f(()=>import("./index.html-wjaD3daL.js"),__vite__mapDeps([222,1])),meta:{title:"æ§è½æµè¯"}}],["/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E5%A4%A7%E7%89%A9/%E5%85%B7%E4%BD%93%E6%8E%A8%E5%AF%BC/",{loader:()=>f(()=>import("./index.html-B7zE7Q9s.js"),__vite__mapDeps([223,1])),meta:{title:"å ·ä½æ¨å¯¼"}}],["/category/",{loader:()=>f(()=>import("./index.html-D_vQFdsU.js"),__vite__mapDeps([224,1])),meta:{title:"åç±»",index:!1}
2935}],["/category/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/",{loader:()=>f(()=>import("./index.html-DilxTCk_.js"),__vite__mapDeps([225,1])),meta:{title:"课ç¨ç¬è®° åç±»",index:!1}}],["/category/dragonos/",{loader:()=>f(()=>import("./index.html-CnZ45Uuc.js"),__vite__mapDeps([226,1])),meta:{title:"DragonOS åç±»",index:!1}}],["/category/%E7%AC%94%E8%AE%B0/",{loader:()=>f(()=>import("./index.html-DZ5tg3ni.js"),__vite__mapDeps([227,1])),meta:{title:"ç¬è®° åç±»",index:!1}}],["/category/linux-%E5%86%85%E6%A0%B8/",{loader:()=>f(()=>import("./index.html-jU68d02k.js"),__vite__mapDeps([228,1])),meta:{title:"Linux å
æ ¸ åç±»",index:!1}}],["/category/rust/",{loader:()=>f(()=>import("./index.html-k3YCqsy5.js"),__vite__mapDeps([229,1])),meta:{title:"Rust åç±»",index:!1}}],["/category/%E5%90%8E%E7%AB%AF/",{loader:()=>f(()=>import("./index.html-CNhZRGSk.js"),__vite__mapDeps([230,1])),meta:{title:"å端 åç±»",index:!1}}],["/category/c__/",{loader:()=>f(()=>import("./index.html-DcQYggPt.js"),__vite__mapDeps([231,1])),meta:{title:"C++ åç±»",index:!1}}],["/category/%E7%BC%96%E8%AF%91%E5%99%A8/",{loader:()=>f(()=>import("./index.html-CCI9xwiK.js"),__vite__mapDeps([232,1])),meta:{title:"ç¼è¯å¨ åç±»",index:!1}}],["/category/%E5%BE%AE%E4%BF%A1/",{loader:()=>f(()=>import("./index.html-8lTzfNMG.js"),__vite__mapDeps([233,1])),meta:{title:"微信 åç±»",index:!1}}],["/category/linux%E5%86%85%E6%A0%B8/",{loader:()=>f(()=>import("./index.html-D6QDlfNa.js"),__vite__mapDeps([234,1])),meta:{title:"Linuxå
æ ¸ åç±»",index:!1}}],["/category/%E6%9D%82%E8%B0%88/",{loader:()=>f(()=>import("./index.html-jVqdmdpt.js"),__vite__mapDeps([235,1])),meta:{title:"æè° åç±»",index:!1}}],["/category/debug%E6%9D%82%E8%B0%88/",{loader:()=>f(()=>import("./index.html-qpuhgllv.js"),__vite__mapDeps([236,1])),meta:{title:"Debugæè° åç±»",index:!1}}],["/category/%E7%BD%91%E7%BB%9C%E9%97%AE%E9%A2%98/",{loader:()=>f(()=>import("./index.html-BOjteK4x.js"),__vite__mapDeps([237,1])),meta:{title:"ç½ç»é®é¢ åç±»",index:!1}}],["/category/%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/",{loader:()=>f(()=>import("./index.html-BHW9IgeH.js"),__vite__mapDeps([238,1])),meta:{title:"ç¼ç¨æè° åç±»",index:!1}}],["/category/%E9%9D%A2%E7%BB%8F/",{loader:()=>f(()=>import("./index.html-qePvQ5JA.js"),__vite__mapDeps([239,1])),meta:{title:"é¢ç» åç±»",index:!1}}],["/en/category/",{loader:()=>f(()=>import("./index.html-qGyZD0wt.js"),__vite__mapDeps([240,1])),meta:{title:"Category",index:!1}}],["/tag/",{loader:()=>f(()=>import("./index.html-DQp6ZkyO.js"),__vite__mapDeps([241,1])),meta:{title:"æ ç¾",index:!1}}],["/tag/%E5%A4%A7%E5%AD%A6%E7%89%A9%E7%90%86/",{loader:()=>f(()=>import("./index.html-DAKoyw8C.js"),__vite__mapDeps([242,1])),meta:{title:"æ ç¾: 大å¦ç©ç",index:!1}}],["/tag/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/",{loader:()=>f(()=>import("./index.html-BnRWuDam.js"),__vite__mapDeps([243,1])),meta:{title:"æ ç¾: ç¼è¯åç",index:!1}}],["/tag/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/",{loader:()=>f(()=>import("./index.html-DeeWx8t7.js"),__vite__mapDeps([244,1])),meta:{title:"æ ç¾: è®¡ç®æºç½ç»",index:!1}}],["/tag/%E6%95%B0%E6%8D%AE%E5%BA%93/",{loader:()=>f(()=>import("./index.html-WMK7AWly.js"),__vite__mapDeps([245,1])),meta:{title:"æ ç¾: æ°æ®åº",index:!1}}],["/tag/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/",{loader:()=>f(()=>import("./index.html-CKDsLbz3.js"),__vite__mapDeps([246,1])),meta:{title:"æ ç¾: æä½ç³»ç»",index:!1}}],["/tag/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/",{loader:()=>f(()=>import("./index.html-CB2lTQ_q.js"),__vite__mapDeps([247,1])),meta:{title:"æ ç¾: 软件项ç®ç®¡ç",index:!1}}],["/tag/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E4%B8%8E%E7%BB%B4%E6%8A%A4/",{loader:()=>f(()=>import("./index.html-C9tyrsGX.js"),__vite__mapDeps([248,1])),meta:{title:"æ ç¾: 软件æµè¯ä¸ç»´æ¤",index:!1}}],["/tag/uml/",{loader:()=>f(()=>import("./index.html-CdKNtx-B.js"),__vite__mapDeps([249,1])),meta:{title:"æ ç¾: UML",index:!1}}],["/tag/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/",{loader:()=>f(()=>import("./index.html-CzZ4JKQL.js"),__vite__mapDeps([250,1])),meta:{title:"æ ç¾: 软ä
2935»¶ä½ç³»ç»æ",index:!1}}],["/tag/dragonos/",{loader:()=>f(()=>import("./index.html-DYfJMyxV.js"),__vite__mapDeps([251,1])),meta:{title:"æ ç¾: DragonOS",index:!1}}],["/tag/linux-%E5%86%85%E6%A0%B8/",{loader:()=>f(()=>import("./index.html-DriE9wDH.js"),__vite__mapDeps([252,1])),meta:{title:"æ ç¾: Linux å
æ ¸",index:!1}}],["/tag/%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/",{loader:()=>f(()=>import("./index.html-D95HKI4r.js"),__vite__mapDeps([253,1])),meta:{title:"æ ç¾: å
å管ç",index:!1}}],["/tag/numa/",{loader:()=>f(()=>import("./index.html-C7tk-ejl.js"),__vite__mapDeps([254,1])),meta:{title:"æ ç¾: NUMA",index:!1}}],["/tag/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/",{loader:()=>f(()=>import("./index.html-BwgW4E-j.js"),__vite__mapDeps([255,1])),meta:{title:"æ ç¾: å¼åç¯å¢",index:!1}}],["/tag/rust/",{loader:()=>f(()=>import("./index.html-9VhO3xlj.js"),__vite__mapDeps([256,1])),meta:{title:"æ ç¾: Rust",index:!1}}],["/tag/%E5%90%8E%E7%AB%AF/",{loader:()=>f(()=>import("./index.html-DAhHl2op.js"),__vite__mapDeps([257,1])),meta:{title:"æ ç¾: å端",index:!1}}],["/tag/grpc/",{loader:()=>f(()=>import("./index.html-xA0eyb6O.js"),__vite__mapDeps([258,1])),meta:{title:"æ ç¾: gRPC",index:!1}}],["/tag/go/",{loader:()=>f(()=>import("./index.html-C_eX1Ynf.js"),__vite__mapDeps([259,1])),meta:{title:"æ ç¾: go",index:!1}
2935}],["/tag/c__/",{loader:()=>f(()=>import("./index.html-DOKQ2ISX.js"),__vite__mapDeps([260,1])),meta:{title:"æ ç¾: C++",index:!1}}],["/tag/%E7%BC%96%E8%AF%91%E5%99%A8/",{loader:()=>f(()=>import("./index.html-BORN9I3_.js"),__vite__mapDeps([261,1])),meta:{title:"æ ç¾: ç¼è¯å¨",index:!1}}],["/tag/%E8%AF%8D%E6%B3%95%E5%88%86%E6%9E%90/",{loader:()=>f(()=>import("./index.html-CWT09Wu0.js"),__vite__mapDeps([262,1])),meta:{title:"æ ç¾: è¯æ³åæ",index:!1}}],["/tag/%E5%BE%AE%E4%BF%A1/",{loader:()=>f(()=>import("./index.html-C2nAykk6.js"),__vite__mapDeps([263,1])),meta:{title:"æ ç¾: 微信",index:!1}}],["/tag/%E5%AE%A2%E6%88%B7%E7%AB%AF/",{loader:()=>f(()=>import("./index.html--g6J5k6Z.js"),__vite__mapDeps([264,1])),meta:{title:"æ ç¾: 客æ·ç«¯",index:!1}}],["/tag/linux%E5%86%85%E6%A0%B8/",{loader:()=>f(()=>import("./index.html-wVhHts_p.js"),__vite__mapDeps([265,1])),meta:{title:"æ ç¾: Linuxå
æ ¸",index:!1}}],["/tag/android/",{loader:()=>f(()=>import("./index.html-OpyBQpG0.js"),__vite__mapDeps([266,1])),meta:{title:"æ ç¾: Android",index:!1}}],["/tag/debug/",{loader:()=>f(()=>import("./index.html-CB9YnIe0.js"),__vite__mapDeps([267,1])),meta:{title:"æ ç¾: Debug",index:!1}}],["/tag/%E7%BD%91%E7%BB%9C%E9%97%AE%E9%A2%98/",{loader:()=>f(()=>import("./index.html-Ca_BYD7r.js"),__vite__mapDeps([268,1])),meta:{title:"æ ç¾: ç½ç»é®é¢",index:!1}}],["/tag/macos/",{loader:()=>f(()=>import("./index.html-C2iVoXbw.js"),__vite__mapDeps([269,1])),meta:{title:"æ ç¾: MacOS",index:!1}}],["/tag/general-protection/",{loader:()=>f(()=>import("./index.html-Bj_yKuof.js"),__vite__mapDeps([270,1])),meta:{title:"æ ç¾: General Protection",index:!1}}],["/tag/github-workflow/",{loader:()=>f(()=>import("./index.html-BWCouv6v.js"),__vite__mapDeps([271,1])),meta:{title:"æ ç¾: Github Workflow",index:!1}
vendor: 25,801 bytes, lines 2935-2943
2935}],["/tag/%E6%9D%82%E8%B0%88%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/",{loader:()=>f(()=>import("./index.html-DGmpymMc.js"),__vite__mapDeps([272,1])),meta:{title:"æ ç¾: æè°/ç¼ç¨æè°",index:!1}}],["/tag/%E9%9D%A2%E7%BB%8F/",{loader:()=>f(()=>import("./index.html-l9UggtWt.js"),__vite__mapDeps([273,1])),meta:{title:"æ ç¾: é¢ç»",index:!1}}],["/tag/ebpf/",{loader:()=>f(()=>import("./index.html-B--YBRDl.js"),__vite__mapDeps([274,1])),meta:{title:"æ ç¾: eBPF",index:!1}}],["/tag/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/",{loader:()=>f(()=>import("./index.html-BIfAGlxE.js"),__vite__mapDeps([275,1])),meta:{title:"æ ç¾: æ§è½æµè¯",index:!1}}],["/en/tag/",{loader:()=>f(()=>import("./index.html-BUSptF5Z.js"),__vite__mapDeps([276,1])),meta:{title:"Tag",index:!1}}],["/article/",{loader:()=>f(()=>import("./index.html-BD22xLUY.js"),__vite__mapDeps([277,1])),meta:{title:"æç« ",index:!1}}],["/en/article/",{loader:()=>f(()=>import("./index.html-ByAT6Nhr.js"),__vite__mapDeps([278,1])),meta:{title:"Articles",index:!1}}],["/star/",{loader:()=>f(()=>import("./index.html-M6CCUenj.js"),__vite__mapDeps([279,1])),meta:{title:"ææ ",index:!1}}],["/en/star/",{loader:()=>f(()=>import("./index.html-BxTkUZy6.js"),__vite__mapDeps([280,1])),meta:{title:"Star",index:!1}}],["/timeline/",{loader:()=>f(()=>import("./index.html-BgP9Haxr.js"),__vite__mapDeps([281,1])),meta:{title:"æ¶é´è½´",index:!1}}],["/en/timeline/",{loader:()=>f(()=>import("./index.html-W-jWEkAG.js"),__vite__mapDeps([282,1])),meta:{title:"Timeline",index:!1}}]]);/*! 2936 * vue-router v4.6.3 2937 * (c) 2025 Eduardo San Martin Morote 2938 * @license MIT 2939 */const $n=typeof document<"u";function Wc(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function KE(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Wc(e.default)}const he=Object.assign;function Zl(e,t){const n={};for(const i in t){const l=t[i];n[i]=Tt(l)?l.map(e):e(l)}return n}const Bi=()=>{},Tt=Array.isArray;function Fs(e,t){const n={};for(const i in e)n[i]=i in t?t[i]:e[i];return n}const Gc=/#/g,QE=/&/g,YE=/\//g,JE=/=/g,XE=/\?/g,qc=/\+/g,ZE=/%5B/g,e0=/%5D/g,Kc=/%5E/g,t0=/%60/g,Qc=/%7B/g,n0=/%7C/g,Yc=/%7D/g,i0=/%20/g;function fr(e){return e==null?"":encodeURI(""+e).replace(n0,"|").replace(ZE,"[").replace(e0,"]")}function l0(e){return fr(e).replace(Qc,"{").replace(Yc,"}").replace(Kc,"^")}function ka(e){return fr(e).replace(qc,"%2B").replace(i0,"+").replace(Gc,"%23").replace(QE,"%26").replace(t0,"`").replace(Qc,"{").replace(Yc,"}").replace(Kc,"^")}function a0(e){return ka(e).replace(JE,"%3D")}function r0(e){return fr(e).replace(Gc,"%23").replace(XE,"%3F")}function s0(e){return r0(e).replace(YE,"%2F")}function wi(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const o0=/\/$/,c0=e=>e.replace(o0,"");function ea(e,t,n="/"){let i,l={},a="",r="";const o=t.indexOf("#");let c=t.indexOf("?");return c=o>=0&&c>o?-1:c,c>=0&&(i=t.slice(0,c),a=t.slice(c,o>0?o:t.length),l=e(a.slice(1))),o>=0&&(i=i||t.slice(0,o),r=t.slice(o,t.length)),i=h0(i??t,n),{fullPath:i+a+r,path:i,query:l,hash:wi(r)}}function u0(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Ss(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function p0(e,t,n){const i=t.matched.length-1,l=n.matched.length-1;return i>-1&&i===l&&ti(t.matched[i],n.matched[l])&&Jc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function ti(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Jc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!d0(e[n],t[n]))return!1;return!0}function d0(e,t){return Tt(e)?Ps(e,t):Tt(t)?Ps(t,e):e===t}function Ps(e,t){return Tt(t)?e.length===t.length&&e.every((n,i)=>n===t[i]):e.length===1&&e[0]===t}function h0(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),i=e.split("/"),l=i[i.length-1];(l===".."||l===".")&&i.push("");let a=n.length-1,r,o;for(r=0;r<i.length;r++)if(o=i[r],o!==".")if(o==="..")a>1&&a--;else break;return n.slice(0,a).join("/")+"/"+i.slice(r).join("/")}const Ht={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let Ca=(function(e){return e.pop="pop",e.push="push",e})({}),ta=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function E0(e){if(!e)if($n){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),c0(e)}const f0=/^[^#]+#/;function g0(e,t){return e.replace(f0,"#")+t}function m0(e,t){const n=document.documentElement.getBoundingClientRect(),i=e.getBoundingClientRect();return{behavior:t.behavior,left:i.left-n.left-(t.left||0),top:i.top-n.top-(t.top||0)}}const wl=()=>({left:window.scrollX,top:window.scrollY});function v0(e){let t;if("el"in e){const n=e.el,i=typeof n=="string"&&n.startsWith("#"),l=typeof n=="string"?i?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!l)return;t=m0(l,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Rs(e,t){return(history.state?history.state.position-t:-1)+e}const Da=new Map;function A0(e,t){Da.set(e,t)}function B0(e){const t=Da.get(e);return Da.delete(e),t}function y0(e){return typeof e=="string"||e&&typeof e=="object"}function Xc(e){return typeof e=="string"||typeof e=="symbol"}let Se=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({});const Zc=Symbol("");Se.MATCHER_NOT_FOUND+"",Se.NAVIGATION_GUARD_REDIRECT+"",Se.NAVIGATION_ABORTED+"",Se.NAVIGATION_CANCELLED+"",Se.NAVIGATION_DUPLICATED+"";function ni(e,t){return he(new Error,{type:e,[Zc]:!0},t)}function Nt(e,t){return e instanceof Error&&Zc in e&&(t==null||!!(e.type&t))}const _0=["params","query","hash"];function b0(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of _0)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function k0(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let i=0;i<n.length;++i){const l=n[i].replace(qc," "),a=l.indexOf("="),r=wi(a<0?l:l.slice(0,a)),o=a<0?null:wi(l.slice(a+1));if(r in t){let c=t[r];Tt(c)||(c=t[r]=[c]),c.push(o)}else t[r]=o}return t}function Ls(e){let t="";for(let n in e){const i=e[n];if(n=a0(n),i==null){i!==void 0&&(t+=(t.length?"&":"")+n);continue}(Tt(i)?i.map(l=>l&&ka(l)):[i&&ka(i)]).forEach(l=>{l!==void 0&&(t+=(t.length?"&":"")+n,l!=null&&(t+="="+l))})}return t}function C0(e){const t={};for(const n in e){const i=e[n];i!==void 0&&(t[n]=Tt(i)?i.map(l=>l==null?null:""+l):i==null?i:""+i)}return t}const D0=Symbol(""),Os=Symbol(""),xl=Symbol(""),gr=Symbol(""),Ta=Symbol("");function hi(){let e=[];function t(i){return e.push(i),()=>{const l=e.indexOf(i);l>-1&&e.splice(l,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function sn(e,t,n,i,l,a=r=>r()){const r=i&&(i.enterCallbacks[l]=i.enterCallbacks[l]||[]);return()=>new Promise((o,c)=>{const d=h=>{h===!1?c(ni(Se.NAVIGATION_ABORTED,{from:n,to:t})):h instanceof Error?c(h):y0(h)?c(ni(Se.NAVIGATION_GUARD_REDIRECT,{from:t,to:h})):(r&&i.enterCallbacks[l]===r&&typeof h=="function"&&r.push(h),o())},u=a(()=>e.call(i&&i.instances[l],t,n,d));let p=Promise.resolve(u);e.length<3&&(p=p.then(d)),p.catch(h=>c(h))})}function na(e,t,n,i,l=a=>a()){const a=[];for(const r of e)for(const o in r.components){let c=r.components[o];if(!(t!=="beforeRouteEnter"&&!r.instances[o]))if(Wc(c)){const d=(c.__vccOpts||c)[t];d&&a.push(sn(d,n,i,r,o,l))}else{let d=c();a.push(()=>d.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${o}" at "${r.path}"`);const p=KE(u)?u.default:u;r.mods[o]=u,r.components[o]=p;const h=(p.__vccOpts||p)[t];return h&&sn(h,n,i,r,o,l)()}))}}return a}function T0(e,t){const n=[],i=[],l=[],a=Math.max(t.matched.length,e.matched.length);for(let r=0;r<a;r++){const o=t.matched[r];o&&(e.matched.find(d=>ti(d,o))?i.push(o):n.push(o));const c=e.matched[r];c&&(t.matched.find(d=>ti(d,c))||l.push(c))}return[n,i,l]}/*! 2940 * vue-router v4.6.3 2941 * (c) 2025 Eduardo San Martin Morote 2942 * @license MIT 2943 */let w0=()=>location.protocol+"//"+location.host;function eu(e,t){const{pathname:n,search:i,hash:l}=t,a=e.indexOf("#");if(a>-1){let r=l.includes(e.slice(a))?e.slice(a).length:1,o=l.slice(r);return o[0]!=="/"&&(o="/"+o),Ss(o,"")}return Ss(n,e)+i+l}function x0(e,t,n,i){let l=[],a=[],r=null;const o=({state:h})=>{const E=eu(e,location),v=n.value,B=t.value;let k=0;if(h){if(n.value=E,t.value=h,r&&r===v){r=null;return}k=B?h.position-B.position:0}else i(E);l.forEach(D=>{D(n.value,v,{delta:k,type:Ca.pop,direction:k?k>0?ta.forward:ta.back:ta.unknown})})};function c(){r=n.value}function d(h){l.push(h);const E=()=>{const v=l.indexOf(h);v>-1&&l.splice(v,1)};return a.push(E),E}function u(){if(document.visibilityState==="hidden"){const{history:h}=window;if(!h.state)return;h.replaceState(he({},h.state,{scroll:wl()}),"")}}function p(){for(const h of a)h();a=[],window.removeEventListener("popstate",o),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",o),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:c,listen:d,destroy:p}}function Is(e,t,n,i=!1,l=!1){return{back:e,current:t,forward:n,replaced:i,position:window.history.length,scroll:l?wl():null}}function F0(e){const{history:t,location:n}=window,i={value:eu(e,n)},l={value:t.state};l.value||a(i.value,{back:null,current:i.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(c,d,u){const p=e.indexOf("#"),h=p>-1?(n.host&&document.querySelector("base")?e:e.slice(p))+c:w0()+e+c;try{t[u?"replaceState":"pushState"](d,"",h),l.value=d}catch(E){console.error(E),n[u?"replace":"assign"](h)}}function r(c,d){a(c,he({},t.state,Is(l.value.back,c,l.value.forward,!0),d,{position:l.value.position}),!0),i.value=c}function o(c,d){const u=he({},l.value,t.state,{forward:c,scroll:wl()});a(u.current,u,!0),a(c,he({},Is(i.value,c,null),{position:u.position+1},d),!1),i.value=c}return{location:i,state:l,push:o,replace:r}}function S0(e){e=E0(e);const t=F0(e),n=x0(e,t.state,t.location,t.replace);function i(a,r=!0){r||n.pauseListeners(),history.go(a)}const l=he({location:"",base:e,go:i,createHref:g0.bind(null,e)},t,n);return Object.defineProperty(l,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(l,"state",{enumerable:!0,get:()=>t.state.value}),l}let _n=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var Oe=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(Oe||{});const P0={type:_n.Static,value:""},R0=/[a-zA-Z0-9_]/;function L0(e){if(!e)return[[]];if(e==="/")return[[P0]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(E){throw new Error(`ERR (${n})/"${d}": ${E}`)}let n=Oe.Static,i=n;const l=[];let a;function r(){a&&l.push(a),a=[]}let o=0,c,d="",u="";function p(){d&&(n===Oe.Static?a.push({type:_n.Static,value:d}):n===Oe.Param||n===Oe.ParamRegExp||n===Oe.ParamRegExpEnd?(a.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${d}) must be alone in its segment. eg: '/:ids+.`),a.push({type:_n.Param,value:d,regexp:u,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),d="")}function h(){d+=c}for(;o<e.length;){if(c=e[o++],c==="\\"&&n!==Oe.ParamRegExp){i=n,n=Oe.EscapeNext;continue}switch(n){case Oe.Static:c==="/"?(d&&p(),r()):c===":"?(p(),n=Oe.Param):h();break;case Oe.EscapeNext:h(),n=i;break;case Oe.Param:c==="("?n=Oe.ParamRegExp:R0.test(c)?h():(p(),n=Oe.Static,c!=="*"&&c!=="?"&&c!=="+"&&o--);break;case Oe.ParamRegExp:c===")"?u[u.length-1]=="\\"?u=u.slice(0,-1)+c:n=Oe.ParamRegExpEnd:u+=c;break;case Oe.ParamRegExpEnd:p(),n=Oe.Static,c!=="*"&&c!=="?"&&c!=="+"&&o--,u="";break;default:t("Unknown state");break}}return n===Oe.ParamRegExp&&t(`Unfinished custom RegExp for param "${d}"`),p(),r(),l}const Ms="[^/]+?",O0={sensitive:!1,strict:!1,start:!0,end:!0};var Ge=(function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e})(Ge||{});const I0=/[.+*?^${}()[\]/\\]/g;function M0(e,t){const n=he({},O0,t),i=[];let l=n.start?"^":"";const a=[];for(const d of e){const u=d.length?[]:[Ge.Root];n.strict&&!d.length&&(l+="/");for(let p=0;p<d.length;p++){const h=d[p];let E=Ge.Segment+(n.sensitive?Ge.BonusCaseSensitive:0);if(h.type===_n.Static)p||(l+="/"),l+=h.value.replace(I0,"\\$&"),E+=Ge.Static;else if(h.type===_n.Param){const{value:v,repeatable:B,optional:k,regexp:D}=h;a.push({name:v,repeatable:B,optional:k});const y=D||Ms;if(y!==Ms){E+=Ge.BonusCustomRegExp;try{`${y}`}catch(_){throw new Error(`Invalid custom RegExp for param "${v}" (${y}): `+_.message)}}let m=B?`((?:${y})(?:/(?:${y}))*)`:`(${y})`;p||(m=k&&d.length<2?`(?:/${m})`:"/"+m),k&&(m+="?"),l+=m,E+=Ge.Dynamic,k&&(E+=Ge.BonusOptional),B&&(E+=Ge.BonusRepeatable),y===".*"&&(E+=Ge.BonusWildcard)}u.push(E)}i.push(u)}if(n.strict&&n.end){const d=i.length-1;i[d][i[d].length-1]+=Ge.BonusStrict}n.strict||(l+="/?"),n.end?l+="$":n.strict&&!l.endsWith("/")&&(l+="(?:/|$)");const r=new RegExp(l,n.sensitive?"":"i");function o(d){const u=d.match(r),p={};if(!u)return null;for(let h=1;h<u.length;h++){const E=u[h]||"",v=a[h-1];p[v.name]=E&&v.repeatable?E.split("/"):E}return p}function c(d){let u="",p=!1;for(const h of e){(!p||!u.endsWith("/"))&&(u+="/"),p=!1;for(const E of h)if(E.type===_n.Static)u+=E.value;else if(E.type===_n.Param){const{value:v,repeatable:B,optional:k}=E,D=v in d?d[v]:"";if(Tt(D)&&!B)throw new Error(`Provided param "${v}" is an array but it is not repeatable (* or + modifiers)`);const y=Tt(D)?D.join("/"):D;if(!y)if(k)h.length<2&&(u.endsWith("/")?u=u.slice(0,-1):p=!0);else throw new Error(`Missing required param "${v}"`);u+=y}}return u||"/"}return{re:r,score:i,keys:a,parse:o,stringify:c}}function V0(e,t){let n=0;for(;n<e.length&&n<t.length;){const i=t[n]-e[n];if(i)return i;n++}return e.length<t.length?e.length===1&&e[0]===Ge.Static+Ge.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Ge.Static+Ge.Segment?1:-1:0}function tu(e,t){let n=0;const i=e.score,l=t.score;for(;n<i.length&&n<l.length;){const a=V0(i[n],l[n]);if(a)return a;n++}if(Math.abs(l.length-i.length)===1){if(Vs(i))return 1;if(Vs(l))return-1}return l.length-i.length}function Vs(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const N0={strict:!1,end:!0,sensitive:!1};function $0(e,t,n){const i=M0(L0(e.path),n),l=he(i,{record:e,parent:t,children:[],alias:[]});return t&&!l.record.aliasOf==!t.record.aliasOf&&t.children.push(l),l}function j0(e,t){const n=[],i=new Map;t=Fs(N0,t);function l(p){return i.get(p)}function a(p,h,E){const v=!E,B=$s(p);B.aliasOf=E&&E.record;const k=Fs(t,p),D=[B];if("alias"in p){const _=typeof p.alias=="string"?[p.alias]:p.alias;for(const P of _)D.push($s(he({},B,{components:E?E.record.components:B.components,path:P,aliasOf:E?E.record:B})))}let y,m;for(const _ of D){const{path:P}=_;if(h&&P[0]!=="/"){const H=h.record.path,M=H[H.length-1]==="/"?"":"/";_.path=h.record.path+(P&&M+P)}if(y=$0(_,h,k),E?E.alias.push(y):(m=m||y,m!==y&&m.alias.push(y),v&&p.name&&!js(y)&&r(p.name)),nu(y)&&c(y),B.children){const H=B.children;for(let M=0;M<H.length;M++)a(H[M],y,E&&E.children[M])}E=E||y}return m?()=>{r(m)}:Bi}function r(p){if(Xc(p)){const h=i.get(p);h&&(i.delete(p),n.splice(n.indexOf(h),1),h.children.forEach(r),h.alias.forEach(r))}else{const h=n.indexOf(p);h>-1&&(n.splice(h,1),p.record.name&&i.delete(p.record.name),p.children.forEach(r),p.alias.forEach(r))}}function o(){return n}function c(p){const h=U0(p,n);n.splice(h,0,p),p.record.name&&!js(p)&&i.set(p.record.name,p)}function d(p,h){let E,v={},B,k;if("name"in p&&p.name){if(E=i.get(p.name),!E)throw ni(Se.MATCHER_NOT_FOUND,{location:p});k=E.record.name,v=he(Ns(h.params,E.keys.filter(m=>!m.optional).concat(E.parent?E.parent.keys.filter(m=>m.optional):[]).map(m=>m.name)),p.params&&Ns(p.params,E.keys.map(m=>m.name))),B=E.stringify(v)}else if(p.path!=null)B=p.path,E=n.find(m=>m.re.test(B)),E&&(v=E.parse(B),k=E.record.name);else{if(E=h.name?i.get(h.name):n.find(m=>m.re.test(h.path)),!E)throw ni(Se.MATCHER_NOT_FOUND,{location:p,currentLocation:h});k=E.record.name,v=he({},h.params,p.params),B=E.stringify(v)}const D=[];let y=E;for(;y;)D.unshift(y.record),y=y.parent;return{name:k,path:B,params:v,matched:D,meta:z0(D)}}e.forEach(p=>a(p));function u(){n.length=0,i.clear()}return{addRoute:a,resolve:d,removeRoute:r,clearRoutes:u,getRoutes:o,getRecordMatcher:l}}function Ns(e,t){const n={};for(const i of t)i in e&&(n[i]=e[i]);return n}function $s(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:H0(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function H0(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const i in e.components)t[i]=typeof n=="object"?n[i]:n;return t}function js(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function z0(e){return e.reduce((t,n)=>he(t,n.meta),{})}function U0(e,t){let n=0,i=t.length;for(;n!==i;){const a=n+i>>1;tu(e,t[a])<0?i=a:n=a+1}const l=W0(e);return l&&(i=t.lastIndexOf(l,i-1)),i}function W0(e){let t=e;for(;t=t.parent;)if(nu(t)&&tu(e,t)===0)return t}function nu({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Hs(e){const t=ve(xl),n=ve(gr),i=b(()=>{const c=un(e.to);return t.resolve(c)}),l=b(()=>{const{matched:c}=i.value,{length:d}=c,u=c[d-1],p=n.matched;if(!u||!p.length)return-1;const h=p.findIndex(ti.bind(null,u));if(h>-1)return h;const E=zs(c[d-2]);return d>1&&zs(u)===E&&p[p.length-1].path!==E?p.findIndex(ti.bind(null,c[d-2])):h}),a=b(()=>l.value>-1&&Y0(n.params,i.value.params)),r=b(()=>l.value>-1&&l.value===n.matched.length-1&&Jc(n.params,i.value.params));function o(c={}){if(Q0(c)){const d=t[un(e.replace)?"replace":"push"](un(e.to)).catch(Bi);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>d),d}return Promise.resolve()}return{route:i,href:b(()=>i.value.href),isActive:a,isExactActive:r,navigate:o}}function G0(e){return e.length===1?e[0]:e}const q0=I({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Hs,setup(e,{slots:t}){const n=Tn(Hs(e)),{options:i}=ve(xl),l=b(()=>({[Us(e.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[Us(e.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const a=t.default&&G0(t.default(n));return e.custom?a:s("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:l.value},a)}}}),K0=q0;function Q0(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Y0(e,t){for(const n in t){const i=t[n],l=e[n];if(typeof i=="string"){if(i!==l)return!1}else if(!Tt(l)||l.length!==i.length||i.some((a,r)=>a!==l[r]))return!1}return!0}function zs(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Us=(e,t,n)=>e??t??n,J0=I({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const i=ve(Ta),l=b(()=>e.route||i.value),a=ve(Os,0),r=b(()=>{let d=un(a);const{matched:u}=l.value;let p;for(;(p=u[d])&&!p.components;)d++;return d}),o=b(()=>l.value.matched[r.value]);Ct(Os,b(()=>r.value+1)),Ct(D0,o),Ct(Ta,l);const c=se();return we(()=>[c.value,o.value,e.name],([d,u,p],[h,E,v])=>{u&&(u.instances[p]=d,E&&E!==u&&d&&d===h&&(u.leaveGuards.size||(u.leaveGuards=E.leaveGuards),u.updateGuards.size||(u.updateGuards=E.updateGuards))),d&&u&&(!E||!ti(u,E)||!h)&&(u.enterCallbacks[p]||[]).forEach(B=>B(d))},{flush:"post"}),()=>{const d=l.value,u=e.name,p=o.value,h=p&&p.components[u];if(!h)return Ws(n.default,{Component:h,route:d});const E=p.props[u],v=E?E===!0?d.params:typeof E=="function"?E(d):E:null,k=s(h,he({},v,t,{onVnodeUnmounted:D=>{D.component.isUnmounted&&(p.instances[u]=null)},ref:c}));return Ws(n.default,{Component:k,route:d})||k}}});function Ws(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const X0=J0;function Z0(e){const t=j0(e.routes,e),n=e.parseQuery||k0,i=e.stringifyQuery||Ls,l=e.history,a=hi(),r=hi(),o=hi(),c=ae(Ht);let d=Ht;$n&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Zl.bind(null,w=>""+w),p=Zl.bind(null,s0),h=Zl.bind(null,wi);function E(w,K){let U,X;return Xc(w)?(U=t.getRecordMatcher(w),X=K):X=w,t.addRoute(X,U)}function v(w){const K=t.getRecordMatcher(w);K&&t.removeRoute(K)}function B(){return t.getRoutes().map(w=>w.record)}function k(w){return!!t.getRecordMatcher(w)}function D(w,K){if(K=he({},K||c.value),typeof w=="string"){const A=ea(n,w,K.path),C=t.resolve({path:A.path},K),F=l.createHref(A.fullPath);return he(A,C,{params:h(C.params),hash:wi(A.hash),redirectedFrom:void 0,href:F})}let U;if(w.path!=null)U=he({},w,{path:ea(n,w.path,K.path).path});else{const A=he({},w.params);for(const C in A)A[C]==null&&delete A[C];U=he({},w,{params:p(A)}),K.params=p(K.params)}const X=t.resolve(U,K),re=w.hash||"";X.params=u(h(X.params));const Be=u0(i,he({},w,{hash:l0(re),path:X.path})),g=l.createHref(Be);return he({fullPath:Be,hash:re,query:i===Ls?C0(w.query):w.query||{}},X,{redirectedFrom:void 0,href:g})}function y(w){return typeof w=="string"?ea(n,w,c.value.path):he({},w)}function m(w,K){if(d!==w)return ni(Se.NAVIGATION_CANCELLED,{from:K,to:w})}function _(w){return M(w)}function P(w){return _(he(y(w),{replace:!0}))}function H(w,K){const U=w.matched[w.matched.length-1];if(U&&U.redirect){const{redirect:X}=U;let re=typeof X=="function"?X(w,K):X;return typeof re=="string"&&(re=re.includes("?")||re.includes("#")?re=y(re):{path:re},re.params={}),he({query:w.query,hash:w.hash,params:re.path!=null?{}:w.params},re)}}function M(w,K){const U=d=D(w),X=c.value,re=w.state,Be=w.force,g=w.replace===!0,A=H(U,X);if(A)return M(he(y(A),{state:typeof A=="object"?he({},re,A.state):re,force:Be,replace:g}),K||U);const C=U;C.redirectedFrom=K;let F;return!Be&&p0(i,X,U)&&(F=ni(Se.NAVIGATION_DUPLICATED,{to:C,from:X}),Ue(X,X,!0,!1)),(F?Promise.resolve(F):R(C,X)).catch(x=>Nt(x)?Nt(x,Se.NAVIGATION_GUARD_REDIRECT)?x:nt(x):Q(x,C,X)).then(x=>{if(x){if(Nt(x,Se.NAVIGATION_GUARD_REDIRECT))return M(he({replace:g},y(x.to),{state:typeof x.to=="object"?he({},re,x.to.state):re,force:Be}),K||C)}else x=L(C,X,!0,g,re);return j(C,X,x),x})}function z(w,K){const U=m(w,K);return U?Promise.reject(U):Promise.resolve()}function T(w){const K=Mt.values().next().value;return K&&typeof K.runWithContext=="function"?K.runWithContext(w):w()}function R(w,K){let U;const[X,re,Be]=T0(w,K);U=na(X.reverse(),"beforeRouteLeave",w,K);for(const A of X)A.leaveGuards.forEach(C=>{U.push(sn(C,w,K))});const g=z.bind(null,w,K);return U.push(g),je(U).then(()=>{U=[];for(const A of a.list())U.push(sn(A,w,K));return U.push(g),je(U)}).then(()=>{U=na(re,"beforeRouteUpdate",w,K);for(const A of re)A.updateGuards.forEach(C=>{U.push(sn(C,w,K))});return U.push(g),je(U)}).then(()=>{U=[];for(const A of Be)if(A.beforeEnter)if(Tt(A.beforeEnter))for(const C of A.beforeEnter)U.push(sn(C,w,K));else U.push(sn(A.beforeEnter,w,K));return U.push(g),je(U)}).then(()=>(w.matched.forEach(A=>A.enterCallbacks={}),U=na(Be,"beforeRouteEnter",w,K,T),U.push(g),je(U))).then(()=>{U=[];for(const A of r.list())U.push(sn(A,w,K));return U.push(g),je(U)}).catch(A=>Nt(A,Se.NAVIGATION_CANCELLED)?A:Promise.reject(A))}function j(w,K,U){o.list().forEach(X=>T(()=>X(w,K,U)))}function L(w,K,U,X,re){const Be=m(w,K);if(Be)return Be;const g=K===Ht,A=$n?history.state:{};U&&(X||g?l.replace(w.fullPath,he({scroll:g&&A&&A.scroll},re)):l.push(w.fullPath,re)),c.value=w,Ue(w,K,U,g),nt()}let Y;function G(){Y||(Y=l.listen((w,K,U)=>{if(!lt.listening)return;const X=D(w),re=H(X,lt.currentRoute.value);if(re){M(he(re,{replace:!0,force:!0}),X).catch(Bi);return}d=X;const Be=c.value;$n&&A0(Rs(Be.fullPath,U.delta),wl()),R(X,Be).catch(g=>Nt(g,Se.NAVIGATION_ABORTED|Se.NAVIGATION_CANCELLED)?g:Nt(g,Se.NAVIGATION_GUARD_REDIRECT)?(M(he(y(g.to),{force:!0}),X).then(A=>{Nt(A,Se.NAVIGATION_ABORTED|Se.NAVIGATION_DUPLICATED)&&!U.delta&&U.type===Ca.pop&&l.go(-1,!1)}).catch(Bi),Promise.reject()):(U.delta&&l.go(-U.delta,!1),Q(g,X,Be))).then(g=>{g=g||L(X,Be,!1),g&&(U.delta&&!Nt(g,Se.NAVIGATION_CANCELLED)?l.go(-U.delta,!1):U.type===Ca.pop&&Nt(g,Se.NAVIGATION_ABORTED|Se.NAVIGATION_DUPLICATED)&&l.go(-1,!1)),j(X,Be,g)}).catch(Bi)}))}let J=hi(),V=hi(),te;function Q(w,K,U){nt(w);const X=V.list();
2943return X.length?X.forEach(re=>re(w,K,U)):console.error(w),Promise.reject(w)}function ce(){return te&&c.value!==Ht?Promise.resolve():new Promise((w,K)=>{J.add([w,K])})}function nt(w){return te||(te=!w,G(),J.list().forEach(([K,U])=>w?U(w):K()),J.reset()),w}function Ue(w,K,U,X){const{scrollBehavior:re}=e;if(!$n||!re)return Promise.resolve();const Be=!U&&B0(Rs(w.fullPath,0))||(X||!U)&&history.state&&history.state.scroll||null;return fn().then(()=>re(w,K,Be)).then(g=>g&&v0(g)).catch(g=>Q(g,w,K))}const $e=w=>l.go(w);let it;const Mt=new Set,lt={currentRoute:c,listening:!0,addRoute:E,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:k,getRoutes:B,resolve:D,options:e,push:_,replace:P,go:$e,back:()=>$e(-1),forward:()=>$e(1),beforeEach:a.add,beforeResolve:r.add,afterEach:o.add,onError:V.add,isReady:ce,install(w){w.component("RouterLink",K0),w.component("RouterView",X0),w.config.globalProperties.$router=lt,Object.defineProperty(w.config.globalProperties,"$route",{enumerable:!0,get:()=>un(c)}),$n&&!it&&c.value===Ht&&(it=!0,_(l.location).catch(X=>{}));const K={};for(const X in Ht)Object.defineProperty(K,X,{get:()=>c.value[X],enumerable:!0});w.provide(xl,lt),w.provide(gr,Go(K)),w.provide(Ta,c);const U=w.unmount;Mt.add(w),w.unmount=function(){Mt.delete(w),Mt.size<1&&(d=Ht,Y&&Y(),Y=null,c.value=Ht,it=!1,te=!1),U()}}};function je(w){return w.reduce((K,U)=>K.then(()=>T(U)),Promise.resolve())}return lt}function Yt(){return ve(xl)}function xt(e){return ve(gr)}var mr=Symbol(""),Ft=()=>{const e=ve(mr);if(!e)throw new Error("useClientData() is called without provider.");return e},ef=()=>Ft().pageComponent,tf=()=>Ft().pageData,iu=()=>Ft().pageFrontmatter,nf=()=>Ft().pageHead,lu=()=>Ft().pageLang,lf=()=>Ft().pageLayout,Fl=()=>Ft().routeLocale,af=()=>Ft().routePath,rf=()=>Ft().routes,sf=()=>Ft().siteData,gn=Ft,Et=iu,Sl=lu,Pl=tf,wa=new Set,Jt=e=>{wa.add(e),Sn(()=>{wa.delete(e)})},of=Symbol(""),xa=ae(GE),Yn=ae(qE),au=(e,t)=>{const n=LE(e,t);if(Yn.value[n])return n;const i=encodeURI(n);if(Yn.value[i])return i;const l=xa.value[n]||xa.value[i];return l||n},At=(e,t)=>{const{pathname:n,hashAndQueries:i}=zc(e),l=au(n,t),a=l+i;return Yn.value[l]?{...Yn.value[l],path:a,notFound:!1}:{...Yn.value["/404.html"],path:a,notFound:!0}},cf=(e,t)=>{const{pathname:n,hashAndQueries:i}=zc(e);return au(n,t)+i},uf=e=>{if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)&&!(e.currentTarget&&e.currentTarget.getAttribute("target")?.match(/\b_blank\b/i)))return e.preventDefault(),!0},Ve=I({name:"RouteLink",props:{to:{type:String,required:!0},active:Boolean,activeClass:{type:String,default:"route-link-active"}},slots:Object,setup(e,{slots:t}){const n=Yt(),i=xt(),l=b(()=>e.to.startsWith("#")||e.to.startsWith("?")?e.to:`/${cf(e.to,i.path).substring(1)}`);return()=>s("a",{class:["route-link",{[e.activeClass]:e.active}],href:l.value,onClick:(a={})=>{uf(a)&&n.push(e.to).catch()}},t.default())}}),pf=I({name:"AutoLink",props:{config:{type:Object,required:!0}},slots:Object,setup(e,{slots:t}){const n=ii(e,"config"),i=xt(),l=sf(),a=b(()=>Ii(n.value.link)),r=b(()=>n.value.target||(a.value?"_blank":void 0)),o=b(()=>r.value==="_blank"),c=b(()=>!a.value&&!o.value),d=b(()=>n.value.rel||(o.value?"noopener noreferrer":null)),u=b(()=>n.value.ariaLabel??n.value.text),p=b(()=>{if(n.value.exact)return!1;const E=Object.keys(l.value.locales);return E.length?E.every(v=>v!==n.value.link):n.value.link!=="/"}),h=b(()=>c.value?n.value.activeMatch?(n.value.activeMatch instanceof RegExp?n.value.activeMatch:new RegExp(n.value.activeMatch,"u")).test(i.path):p.value?i.path.startsWith(n.value.link):i.path===n.value.link:!1);return()=>{const{before:E,after:v,default:B}=t,k=B?.(n.value)??[E?.(n.value),n.value.text,v?.(n.value)];return c.value?s(Ve,{class:"auto-link",to:n.value.link,active:h.value,"aria-label":u.value},()=>k):s("a",{class:"auto-link external-link",href:n.value.link,"aria-label":u.value,rel:d.value,target:r.value},k)}}}),vr=I({name:"ClientOnly",setup(e,t){const n=se(!1);return ye(()=>{n.value=!0}),()=>n.value?t.slots.default?.():null}}),Zi=e=>
2943{wa.forEach(t=>t(e))},ru=I({name:"Content",props:{path:{type:String,required:!1,default:""}},setup(e){const t=ef(),n=b(()=>{if(!e.path)return t.value;const l=At(e.path);return rc(async()=>l.loader().then(({comp:a})=>a))}),i=iu();return we(i,()=>{Zi("updated")},{deep:!0,flush:"post"}),()=>s(n.value,{onVnodeMounted:()=>{Zi("mounted")},onVnodeUpdated:()=>{Zi("updated")},onVnodeBeforeUnmount:()=>{Zi("beforeUnmount")}})}}),df="Layout",hf="en-US",An=Tn({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageHead:(e,t,n)=>{const i=me(t.description)?t.description:n.description,l=[...Array.isArray(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:i}]];return jE(l)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||hf,resolvePageLayout:(e,t)=>{const n=me(e.frontmatter.layout)?e.frontmatter.layout:df;if(!t[n])throw new Error(`[vuepress] Cannot resolve layout: ${n}`);return t[n]},resolveRouteLocale:(e,t)=>OE(e,decodeURI(t)),resolveSiteLocaleData:({base:e,locales:t,...n},i)=>({...n,...t[i],head:[...t[i]?.head??[],...n.head]})}),St=(e={})=>e,Ce=e=>li(e)?e:`/${Er(e)}`,Ef=Object.defineProperty,ff=(e,t)=>{for(var n in t)Ef(e,n,{get:t[n],enumerable:!0})},gf={};ff(gf,{COMPONENT_STATE_TYPE:()=>mf,INSPECTOR_ID:()=>vf,INSPECTOR_LABEL:()=>Af,INSPECTOR_NODES:()=>Bf,INSPECTOR_STATE_SECTION_NAME:()=>yf,PLUGIN_ID:()=>su,PLUGIN_LABEL:()=>Ar});var su="org.vuejs.vuepress",Ar="VuePress",mf=Ar,vf=su,Af=Ar,Gs={id:"INTERNAL",label:"Internal",keys:["layouts","routes","redirects"]},qs={id:"SITE",label:"Site",keys:["siteData","siteLocaleData"]},Ks={id:"ROUTE",label:"Route",keys:["routePath","routeLocale"]},Qs={id:"PAGE",label:"Page",keys:["pageData","pageFrontmatter","pageLang","pageHead","pageHeadTitle","pageLayout","pageComponent"]},Bf={[Gs.id]:Gs,[qs.id]:qs,[Ks.id]:Ks,[Qs.id]:Qs},yf="State";const Ys=e=>typeof e=="number"?`${e}px`:e,Br=({size:e=48,stroke:t=4,wrapper:n=!0,height:i=2*e})=>{const l=s("span",{style:`--loading-icon: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='xMidYMid' viewBox='25 25 50 50'%3E%3CanimateTransform attributeName='transform' type='rotate' dur='2s' keyTimes='0;1' repeatCount='indefinite' values='0;360'%3E%3C/animateTransform%3E%3Ccircle cx='50' cy='50' r='20' fill='none' stroke='currentColor' stroke-width='${t}' stroke-linecap='round'%3E%3Canimate attributeName='stroke-dasharray' dur='1.5s' keyTimes='0;0.5;1' repeatCount='indefinite' values='1,200;90,200;1,200'%3E%3C/animate%3E%3Canimate attributeName='stroke-dashoffset' dur='1.5s' keyTimes='0;0.5;1' repeatCount='indefinite' values='0;-35px;-125px'%3E%3C/animate%3E%3C/circle%3E%3C/svg%3E");--icon-size: ${Ys(e)};display: inline-block;width: var(--icon-size);height: var(--icon-size);background-color: currentcolor;-webkit-mask-image: var(--loading-icon);mask-image: var(--loading-icon)`});return n?s("div",{style:`display: flex;align-items: center;justify-content: center;height: ${Ys(i)}`},l):l};Br.displayName="LoadingIcon";const yr=(e,{slots:t})=>t.default();var ct=Uint8Array,zn=Uint16Array,_f=Int32Array,ou=new ct([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),cu=new ct([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),bf=new ct([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),uu=function(e,t){for(var n=new zn(31),i=0;i<31;++i)n[i]=t+=1<<e[i-1];for(var l=new _f(n[30]),i=1;i<30;++i)for(var a=n[i];a<n[i+1];++a)l[a]=a-n[i]<<5|i;return{b:n,r:l}},pu=uu(ou,2),du=pu.b,kf=pu.r;du[28]=258,kf[258]=28;var Cf=uu(cu,0),Df=Cf.b,Fa=new zn(32768);for(var De=0;De<32768;++De){var tn=(De&43690)>>1|(De&21845)<<1;tn=(tn&52428)>>2|(tn&13107)<<2,tn=(tn&61680)>>4|(tn&3855)<<4,Fa[De]=((tn&65280)>>8|(tn&255)<<8)>>1}var yi=(function(e,t,n){for(var i=e.length,l=0,a=new zn(t);l<i;++l)e[l]&&++a[e[l]-1];var r=new zn(t);for(l=1;l<t;++l)r[l]=r[l-1]+a[l-1]<<1;var o;if(n){o=new zn(1<<t);var c=15-t;for(l=0;l<i;++l)if(e[l])for(var d=l<<4|e[l],u=t-e[l],p=r[e[l]-1]++<<u,h=p|(1<<u)-1;p<=h;++p)o[Fa[p]>>c]=d}else for(o=new zn(i),l=0;l<i;++l)e[l]&&(o[l]=Fa[r[e[l]-1]++]>>15-e[l]);return o}
2943),Mi=new ct(288);for(var De=0;De<144;++De)Mi[De]=8;for(var De=144;De<256;++De)Mi[De]=9;for(var De=256;De<280;++De)Mi[De]=7;for(var De=280;De<288;++De)Mi[De]=8;var hu=new ct(32);for(var De=0;De<32;++De)hu[De]=5;var Tf=yi(Mi,9,1),wf=yi(hu,5,1),ia=function(e){for(var t=e[0],n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},_t=function(e,t,n){var i=t/8|0;return(e[i]|e[i+1]<<8)>>(t&7)&n},la=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},xf=function(e){return(e+7)/8|0},Eu=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new ct(e.subarray(t,n))},Ff=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],mt=function(e,t,n){var i=new Error(t||Ff[e]);if(i.code=e,Error.captureStackTrace&&Error.captureStackTrace(i,mt),!n)throw i;return i},Sf=function(e,t,n,i){var l=e.length,a=0;if(!l||t.f&&!t.l)return n||new ct(0);var r=!n,o=r||t.i!=2,c=t.i;r&&(n=new ct(l*3));var d=function(re){var Be=n.length;if(re>Be){var g=new ct(Math.max(Be*2,re));g.set(n),n=g}},u=t.f||0,p=t.p||0,h=t.b||0,E=t.l,v=t.d,B=t.m,k=t.n,D=l*8;do{if(!E){u=_t(e,p,1);var y=_t(e,p+1,3);if(p+=3,y)if(y==1)E=Tf,v=wf,B=9,k=5;else if(y==2){var H=_t(e,p,31)+257,M=_t(e,p+10,15)+4,z=H+_t(e,p+5,31)+1;p+=14;for(var T=new ct(z),R=new ct(19),j=0;j<M;++j)R[bf[j]]=_t(e,p+j*3,7);p+=M*3;for(var L=ia(R),Y=(1<<L)-1,G=yi(R,L,1),j=0;j<z;){var J=G[_t(e,p,Y)];p+=J&15;var m=J>>4;if(m<16)T[j++]=m;else{var V=0,te=0;for(m==16?(te=3+_t(e,p,3),p+=2,V=T[j-1]):m==17?(te=3+_t(e,p,7),p+=3):m==18&&(te=11+_t(e,p,127),p+=7);te--;)T[j++]=V}}var Q=T.subarray(0,H),ce=T.subarray(H);B=ia(Q),k=ia(ce),E=yi(Q,B,1),v=yi(ce,k,1)}else mt(1);else{var m=xf(p)+4,_=e[m-4]|e[m-3]<<8,P=m+_;if(P>l){c&&mt(0);break}o&&d(h+_),n.set(e.subarray(m,P),h),t.b=h+=_,t.p=p=P*8,t.f=u;continue}if(p>D){c&&mt(0);break}}o&&d(h+131072);for(var nt=(1<<B)-1,Ue=(1<<k)-1,$e=p;;$e=p){var V=E[la(e,p)&nt],it=V>>4;if(p+=V&15,p>D){c&&mt(0);break}if(V||mt(2),it<256)n[h++]=it;else if(it==256){$e=p,E=null;break}else{var Mt=it-254;if(it>264){var j=it-257,lt=ou[j];Mt=_t(e,p,(1<<lt)-1)+du[j],p+=lt}var je=v[la(e,p)&Ue],w=je>>4;je||mt(3),p+=je&15;var ce=Df[w];if(w>3){var lt=cu[w];ce+=la(e,p)&(1<<lt)-1,p+=lt}if(p>D){c&&mt(0);break}o&&d(h+131072);var K=h+Mt;if(h<ce){var U=a-ce,X=Math.min(ce,K);for(U+h<0&&mt(3);h<X;++h)n[h]=i[U+h]}for(;h<K;++h)n[h]=n[h-ce]}}t.l=E,t.p=$e,t.b=h,t.f=u,E&&(u=1,t.m=B,t.d=v,t.n=k)}while(!u);return h!=n.length&&r?Eu(n,0,h):n.subarray(0,h)},Pf=new ct(0),Rf=function(e,t){return((e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&mt(6,"invalid zlib data"),(e[1]>>5&1)==1&&mt(6,"invalid zlib data: "+(e[1]&32?"need":"unexpected")+" dictionary"),(e[1]>>3&4)+2};function Lf(e,t){return Sf(e.subarray(Rf(e),-4),{i:2},t,t)}var Sa=typeof TextDecoder<"u"&&new TextDecoder,Of=0;try{Sa.decode(Pf,{stream:!0}),Of=1}catch{}var If=function(e){for(var t="",n=0;;){var i=e[n++],l=(i>127)+(i>223)+(i>239);if(n+l>e.length)return{s:t,r:Eu(e,n-1)};l?l==3?(i=((i&15)<<18|(e[n++]&63)<<12|(e[n++]&63)<<6|e[n++]&63)-65536,t+=String.fromCharCode(55296|i>>10,56320|i&1023)):l&1?t+=String.fromCharCode((i&31)<<6|e[n++]&63):t+=String.fromCharCode((i&15)<<12|(e[n++]&63)<<6|e[n++]&63):t+=String.fromCharCode(i)}};function Mf(e,t){{for(var n=new ct(e.length),i=0;i<e.length;++i)n[i]=e.charCodeAt(i);return n}for(var l=e.length,i=0;i<l;++i);}function Vf(e,t){var n;if(Sa)return Sa.decode(e);var i=If(e),l=i.s,n=i.r;return n.length&&mt(8),l}const Js=e=>{const t=atob(e);return Vf(Lf(Mf(t)))},Nf=()=>/\b(iPhone|iPod)\b/i.test(navigator.userAgent),fu=()=>/macintosh|mac os x/i.test(navigator.userAgent),_r=()=>{const e=!!(navigator.maxTouchPoints&&navigator.maxTouchPoints>0);return/\b(iPad)\b/i.test(navigator.userAgent)||fu()&&e},$f=()=>Nf()||_r(),gu=()=>fu()&&!$f(),Xs=()=>document.documentElement.getAttribute("data-theme")==="dark",mu=[...new Array(6)].map((e,t)=>`[vp-content] h${t+1}`).join(","),jf=(e,t=2)=>{if(t===!1)return[];const[n,i]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t,l=e.filter(r=>r.level>=n&&r.level<=i),a=[];e:for(let r=0;r<l.length;r++){const o=l[r];if(r===0)a.push(o);else{for(let c=r-1;c>=0;c--){const d=l[c];if(d.level<o.level){d.children.push(o);continue e}}a.push(o)}}return a},Hf=(e,t=[])=>{let n;if(t.length){const i=e.cloneNode(!0);
2943i.querySelectorAll(t.join(",")).forEach(l=>{l.remove()}),n=i.textContent||""}else n=e.textContent||"";return n.trim()},zf=(e=mu,t=[])=>Array.from(document.querySelectorAll(e)).filter(n=>n.id&&n.hasChildNodes()).map(n=>({element:n,title:Hf(n,t),link:`#${n.id}`,slug:n.id,level:Number(n.tagName[1]),children:[]})),Uf=({selector:e=mu,levels:t=2,ignore:n=[]}={})=>jf(zf(e,n),t),vu=e=>typeof e<"u",sl=e=>typeof e=="number",{isArray:Wt}=Array,vl=(e,t)=>me(e)&&e.startsWith(t),Wf=(e,t)=>me(e)&&e.endsWith(t),{entries:Rn}=Object,{keys:Gt}=Object,br=e=>{if(e){if(typeof e=="number")return new Date(e);const t=Date.parse(e.toString());if(!Number.isNaN(t))return new Date(t)}return null},Rl=e=>vl(e,"/")&&e[1]!=="/",Au=e=>e.every(t=>t.type===Ze?!0:t.type===Xe?t.children==null||Wt(t.children)&&Au(t.children):!1),Jn=e=>e==null?!0:Wt(e)?Au(e):!1,ht=(e,t)=>{const n=(t?._instance??Pn())?.appContext.components;return n?e in n||et(e)in n||Si(et(e))in n:!1},aa="message-container";class kr{elements;constructor(){this.elements={}}static get containerElement(){let t=document.getElementById(aa);return t||(t=document.createElement("div"),t.id=aa,document.body.appendChild(t),t)}getElement(t){return this.elements[t]}pop(t,n=2e3,i=!0){const l=Date.now(),a=document.createElement("div");return a.className="message-item move-in",a.innerHTML=t,kr.containerElement.appendChild(a),this.elements[l]=a,i&&a.addEventListener("click",()=>{this.close(l)}),n>0&&setTimeout(()=>{this.close(l)},n),l}close(t){if(t){const n=this.elements[t];n.classList.remove("move-in"),n.classList.add("move-out"),n.addEventListener("animationend",()=>{n.remove(),delete this.elements[t]})}else Gt(this.elements).forEach(n=>{this.close(Number(n))})}destroy(){const t=document.getElementById(aa);t&&document.body.removeChild(t),this.elements={}}}const Gf=Symbol(""),Pa=se(!1);typeof document<"u"&&(Pa.value=Xs(),new MutationObserver(()=>{Pa.value=Xs()}).observe(document.documentElement,{attributeFilter:["data-theme"],attributes:!0}));const qf=()=>Kt(ve(Gf,Pa)),Kf=(e={})=>{const t=se([]);return Jt(n=>{t.value=n==="beforeUnmount"?[]:Uf(de(e))}),t},Qf=e=>{const t=Fl();return b(()=>de(e)[t.value]??{})},ri=Qf;function Ln(e){return xo()?(ud(e),!0):!1}const ra=new WeakMap,Yf=(...e)=>{var t;const n=e[0],i=(t=Pn())==null?void 0:t.proxy;if(i==null&&!dc())throw new Error("injectLocal must be called in setup");return i&&ra.has(i)&&n in ra.get(i)?ra.get(i)[n]:ve(...e)},Vi=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Jf=e=>e!=null,Xf=Object.prototype.toString,Zf=e=>Xf.call(e)==="[object Object]",qt=()=>{},Zs=e1();function e1(){var e,t;return Vi&&((e=window?.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window?.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window?.navigator.userAgent))}function Bu(...e){if(e.length!==1)return ii(...e);const t=e[0];return typeof t=="function"?Kt(Qo(()=>({get:t,set:qt}))):se(t)}function Cr(e,t){function n(...i){return new Promise((l,a)=>{Promise.resolve(e(()=>t.apply(this,i),{fn:t,thisArg:this,args:i})).then(l).catch(a)})}return n}const yu=e=>e();function t1(e,t={}){let n,i,l=qt;const a=c=>{clearTimeout(c),l(),l=qt};let r;return c=>{const d=de(e),u=de(t.maxWait);return n&&a(n),d<=0||u!==void 0&&u<=0?(i&&(a(i),i=void 0),Promise.resolve(c())):new Promise((p,h)=>{l=t.rejectOnCancel?h:p,r=c,u&&!i&&(i=setTimeout(()=>{n&&a(n),i=void 0,p(r())},u)),n=setTimeout(()=>{i&&a(i),i=void 0,p(c())},d)})}}function n1(...e){let t=0,n,i=!0,l=qt,a,r,o,c,d;!Re(e[0])&&typeof e[0]=="object"?{delay:r,trailing:o=!0,leading:c=!0,rejectOnCancel:d=!1}=e[0]:[r,o=!0,c=!0,d=!1]=e;const u=()=>{n&&(clearTimeout(n),n=void 0,l(),l=qt)};return h=>{const E=de(r),v=Date.now()-t,B=()=>a=h();return u(),E<=0?(t=Date.now(),B()):(v>E&&(c||!i)?(t=Date.now(),B()):o&&(a=new Promise((k,D)=>{l=d?D:k,n=setTimeout(()=>{t=Date.now(),i=!0,k(B()),u()},Math.max(0,E-v))})),!c&&!n&&(n=setTimeout(()=>i=!0,E)),i=!1,a)}}function i1(e=yu,t={}){const{initialState:n="active"}=t,i=Bu(n==="active");function l(){i.value=!1}function a(){i.value=!0}const r=(...o)=>{i.value&&e(...o)};return{isActive:Kt(i),pause:l,resume:a,eventFilter:r}}function l1(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const i=t;t=void 0,i&&await i},n}function eo(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function _i(e){return Array.isArray(e)?e:[e]}function _u(e){return Pn()}
2943function bu(e,t=200,n={}){return Cr(t1(t,n),e)}function ku(e,t=200,n=!1,i=!0,l=!1){return Cr(n1(t,n,i,l),e)}function a1(e,t,n={}){const{eventFilter:i=yu,...l}=n;return we(e,Cr(i,t),l)}function r1(e,t,n={}){const{eventFilter:i,initialState:l="active",...a}=n,{eventFilter:r,pause:o,resume:c,isActive:d}=i1(i,{initialState:l});return{stop:a1(e,t,{...a,eventFilter:r}),pause:o,resume:c,isActive:d}}function si(e,t=!0,n){_u()?ye(e,n):t?e():fn(e)}function s1(e,t){_u()&&Sn(e,t)}function o1(e,t,n={}){const{immediate:i=!0,immediateCallback:l=!1}=n,a=ae(!1);let r;function o(){r&&(clearTimeout(r),r=void 0)}function c(){a.value=!1,o()}function d(...u){l&&e(),o(),a.value=!0,r=setTimeout(()=>{a.value=!1,r=void 0,e(...u)},de(t))}return i&&(a.value=!0,Vi&&d()),Ln(c),{isPending:Fd(a),start:d,stop:c}}function Ra(e=!1,t={}){const{truthyValue:n=!0,falsyValue:i=!1}=t,l=Re(e),a=ae(e);function r(o){if(arguments.length)return a.value=o,a.value;{const c=de(n);return a.value=a.value===c?de(i):c,a.value}}return l?r:[a,r]}function wt(e,t,n){return we(e,t,{...n,immediate:!0})}const Je=Vi?window:void 0,Cu=Vi?window.document:void 0,Du=Vi?window.navigator:void 0;function dt(e){var t;const n=de(e);return(t=n?.$el)!=null?t:n}function fe(...e){const t=[],n=()=>{t.forEach(o=>o()),t.length=0},i=(o,c,d,u)=>(o.addEventListener(c,d,u),()=>o.removeEventListener(c,d,u)),l=b(()=>{const o=_i(de(e[0])).filter(c=>c!=null);return o.every(c=>typeof c!="string")?o:void 0}),a=wt(()=>{var o,c;return[(c=(o=l.value)==null?void 0:o.map(d=>dt(d)))!=null?c:[Je].filter(d=>d!=null),_i(de(l.value?e[1]:e[0])),_i(un(l.value?e[2]:e[1])),de(l.value?e[3]:e[2])]},([o,c,d,u])=>{if(n(),!o?.length||!c?.length||!d?.length)return;const p=Zf(u)?{...u}:u;t.push(...o.flatMap(h=>c.flatMap(E=>d.map(v=>i(h,E,v,p)))))},{flush:"post"}),r=()=>{a(),n()};return Ln(n),r}function c1(){const e=ae(!1),t=Pn();return t&&ye(()=>{e.value=!0},t),e}function oi(e){const t=c1();return b(()=>(t.value,!!e()))}function Tu(e,t,n={}){const{window:i=Je,...l}=n;let a;const r=oi(()=>i&&"MutationObserver"in i),o=()=>{a&&(a.disconnect(),a=void 0)},c=b(()=>{const h=de(e),E=_i(h).map(dt).filter(Jf);return new Set(E)}),d=we(c,h=>{o(),r.value&&h.size&&(a=new MutationObserver(t),h.forEach(E=>a.observe(E,l)))},{immediate:!0,flush:"post"}),u=()=>a?.takeRecords(),p=()=>{d(),o()};return Ln(p),{isSupported:r,stop:p,takeRecords:u}}function u1(e,t,n={}){const{window:i=Je,document:l=i?.document,flush:a="sync"}=n;if(!i||!l)return qt;let r;const o=u=>{r?.(),r=u},c=or(()=>{const u=dt(e);if(u){const{stop:p}=Tu(l,h=>{h.map(v=>[...v.removedNodes]).flat().some(v=>v===u||v.contains(u))&&t(h)},{window:i,childList:!0,subtree:!0});o(p)}},{flush:a}),d=()=>{c(),o()};return Ln(d),d}const p1=Symbol("vueuse-ssr-width");function d1(){const e=dc()?Yf(p1,null):null;return typeof e=="number"?e:void 0}function Dr(e,t={}){const{window:n=Je,ssrWidth:i=d1()}=t,l=oi(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function"),a=ae(typeof i=="number"),r=ae(),o=ae(!1),c=d=>{o.value=d.matches};return or(()=>{if(a.value){a.value=!l.value;const d=de(e).split(",");o.value=d.some(u=>{const p=u.includes("not all"),h=u.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),E=u.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let v=!!(h||E);return h&&v&&(v=i>=eo(h[1])),E&&v&&(v=i<=eo(E[1])),p?!v:v});return}l.value&&(r.value=n.matchMedia(de(e)),o.value=r.value.matches)}),fe(r,"change",c,{passive:!0}),b(()=>o.value)}function to(e,t={}){const{controls:n=!1,navigator:i=Du}=t,l=oi(()=>i&&"permissions"in i),a=ae(),r=typeof e=="string"?{name:e}:e,o=ae(),c=()=>{var u,p;o.value=(p=(u=a.value)==null?void 0:u.state)!=null?p:"prompt"};fe(a,"change",c,{passive:!0});const d=l1(async()=>{if(l.value){if(!a.value)try{a.value=await i.permissions.query(r)}catch{a.value=void 0}finally{c()}if(n)return pe(a.value)}});return d(),n?{state:o,isSupported:l,query:d}:o}function h1(e={}){const{navigator:t=Du,read:n=!1,source:i,copiedDuring:l=1500,legacy:a=!1}=e,r=oi(()=>t&&"clipboard"in t),o=to("clipboard-read"),c=to("clipboard-write"),d=b(()=>r.value||a),u=ae(""),p=ae(!1),h=o1(()=>p.value=!1,l,{immediate:!1});async function E(){let y=!(r.value&&D(o.value));if(!y)try{u.value=await t.clipboard.readText()}catch{y=!0}y&&(u.value=k())}d.value&&n&&fe(["copy","cut"],E,{passive:!0});async function v(y=de(i)){if(d.value&&y!=null){let m=!(r.value&&D(c.value));if(!m)try{await t.clipboard.writeText(y)}catch{m=!0}m&&B(y),u.value=y,p.value=!0,h.start()}}
2943function B(y){const m=document.createElement("textarea");m.value=y??"",m.style.position="absolute",m.style.opacity="0",document.body.appendChild(m),m.select(),document.execCommand("copy"),m.remove()}function k(){var y,m,_;return(_=(m=(y=document?.getSelection)==null?void 0:y.call(document))==null?void 0:m.toString())!=null?_:""}function D(y){return y==="granted"||y==="prompt"}return{isSupported:d,text:u,copied:p,copy:v}}const el=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},tl="__vueuse_ssr_handlers__",E1=f1();function f1(){return tl in el||(el[tl]=el[tl]||{}),el[tl]}function g1(e,t){return E1[e]||t}function m1(e){return Dr("(prefers-color-scheme: dark)",e)}function v1(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const A1={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},no="vueuse-storage";function Ni(e,t,n,i={}){var l;const{flush:a="pre",deep:r=!0,listenToStorageChanges:o=!0,writeDefaults:c=!0,mergeDefaults:d=!1,shallow:u,window:p=Je,eventFilter:h,onError:E=G=>{console.error(G)},initOnMounted:v}=i,B=(u?ae:se)(typeof t=="function"?t():t),k=b(()=>de(e));if(!n)try{n=g1("getDefaultStorage",()=>{var G;return(G=Je)==null?void 0:G.localStorage})()}catch(G){E(G)}if(!n)return B;const D=de(t),y=v1(D),m=(l=i.serializer)!=null?l:A1[y],{pause:_,resume:P}=r1(B,G=>R(G),{flush:a,deep:r,eventFilter:h});we(k,()=>L(),{flush:a});let H=!1;const M=G=>{v&&!H||L(G)},z=G=>{v&&!H||Y(G)};p&&o&&(n instanceof Storage?fe(p,"storage",M,{passive:!0}):fe(p,no,z)),v?si(()=>{H=!0,L()}):L();function T(G,J){if(p){const V={key:k.value,oldValue:G,newValue:J,storageArea:n};p.dispatchEvent(n instanceof Storage?new StorageEvent("storage",V):new CustomEvent(no,{detail:V}))}}function R(G){try{const J=n.getItem(k.value);if(G==null)T(J,null),n.removeItem(k.value);else{const V=m.write(G);J!==V&&(n.setItem(k.value,V),T(J,V))}}catch(J){E(J)}}function j(G){const J=G?G.newValue:n.getItem(k.value);if(J==null)return c&&D!=null&&n.setItem(k.value,m.write(D)),D;if(!G&&d){const V=m.read(J);return typeof d=="function"?d(V,D):y==="object"&&!Array.isArray(V)?{...D,...V}:V}else return typeof J!="string"?J:m.read(J)}function L(G){if(!(G&&G.storageArea!==n)){if(G&&G.key==null){B.value=D;return}if(!(G&&G.key!==k.value)){_();try{const J=m.write(B.value);(G===void 0||G?.newValue!==J)&&(B.value=j(G))}catch(J){E(J)}finally{G?fn(P):P()}}}}function Y(G){L(G.detail)}return B}function B1(e,t,n={}){const{window:i=Je,...l}=n;let a;const r=oi(()=>i&&"ResizeObserver"in i),o=()=>{a&&(a.disconnect(),a=void 0)},c=b(()=>{const p=de(e);return Array.isArray(p)?p.map(h=>dt(h)):[dt(p)]}),d=we(c,p=>{if(o(),r.value&&i){a=new ResizeObserver(t);for(const h of p)h&&a.observe(h,l)}},{immediate:!0,flush:"post"}),u=()=>{o(),d()};return Ln(u),{isSupported:r,stop:u}}function y1(e,t={}){const{delayEnter:n=0,delayLeave:i=0,triggerOnRemoval:l=!1,window:a=Je}=t,r=ae(!1);let o;const c=d=>{const u=d?n:i;o&&(clearTimeout(o),o=void 0),u?o=setTimeout(()=>r.value=d,u):r.value=d};return a&&(fe(e,"mouseenter",()=>c(!0),{passive:!0}),fe(e,"mouseleave",()=>c(!1),{passive:!0}),l&&u1(b(()=>dt(e)),()=>c(!1))),r}function _1(e,t={width:0,height:0},n={}){const{window:i=Je,box:l="content-box"}=n,a=b(()=>{var p,h;return(h=(p=dt(e))==null?void 0:p.namespaceURI)==null?void 0:h.includes("svg")}),r=ae(t.width),o=ae(t.height),{stop:c}=B1(e,([p])=>{const h=l==="border-box"?p.borderBoxSize:l==="content-box"?p.contentBoxSize:p.devicePixelContentBoxSize;if(i&&a.value){const E=dt(e);if(E){const v=E.getBoundingClientRect();r.value=v.width,o.value=v.height}}else if(h){const E=_i(h);r.value=E.reduce((v,{inlineSize:B})=>v+B,0),o.value=E.reduce((v,{blockSize:B})=>v+B,0)}else r.value=p.contentRect.width,o.value=p.contentRect.height},n);si(()=>{const p=dt(e);p&&(r.value="offsetWidth"in p?p.offsetWidth:t.width,o.value="offsetHeight"in p?p.offsetHeight:t.height)});const d=we(()=>dt(e),p=>{r.value=p?t.width:0,o.value=p?t.height:0});function u(){c(),d()}return{width:r,height:o,stop:u}}const io=["fullscreenchange","webkitfullscreenchange","webkitendfullscreen","mozfullscreenchange","MSFullscreenChange"];function Ll(e,t={}){const{document:n=Cu,autoExit:i=!1}=t,l=b(()=>{var y;return(y=dt(e))!=null?y:n?.documentElement}),a=ae(!1),r=b(()=>["requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","webkitEnterFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen"].find(y=>n&&y in n||l.value&&y in l.value)),o=b(()=>["exitFullscreen","webkitExitFullscreen","webkitExitFullScreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen"].find(y=>n&&y in n||l.value&&y in l.value)),c=b(()=>["fullScreen","webkitIsFullScreen","webkitDisplayingFullscreen","mozFullScreen","msFullscreenElement"].find(y=>n&&y in n||l.value&&y in l.value)),d=["fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement"].find(y=>n&&y in n),u=oi(()=>l.value&&n&&r.value!==void 0&&o.value!==void 0&&c.value!==void 0),p=()=>d?n?.[d]===l.value:!1,h=()=>
2943{if(c.value){if(n&&n[c.value]!=null)return n[c.value];{const y=l.value;if(y?.[c.value]!=null)return!!y[c.value]}}return!1};async function E(){if(!(!u.value||!a.value)){if(o.value)if(n?.[o.value]!=null)await n[o.value]();else{const y=l.value;y?.[o.value]!=null&&await y[o.value]()}a.value=!1}}async function v(){if(!u.value||a.value)return;h()&&await E();const y=l.value;r.value&&y?.[r.value]!=null&&(await y[r.value](),a.value=!0)}async function B(){await(a.value?E():v())}const k=()=>{const y=h();(!y||y&&p())&&(a.value=y)},D={capture:!1,passive:!0};return fe(n,io,k,D),fe(()=>dt(l),io,k,D),si(k,!1),i&&Ln(E),{isSupported:u,isFullscreen:a,enter:v,exit:E,toggle:B}}function sa(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}const lo=1;function b1(e,t={}){const{throttle:n=0,idle:i=200,onStop:l=qt,onScroll:a=qt,offset:r={left:0,right:0,top:0,bottom:0},observe:o={mutation:!1},eventListenerOptions:c={capture:!1,passive:!0},behavior:d="auto",window:u=Je,onError:p=T=>{console.error(T)}}=t,h=typeof o=="boolean"?{mutation:o}:o,E=ae(0),v=ae(0),B=b({get(){return E.value},set(T){D(T,void 0)}}),k=b({get(){return v.value},set(T){D(void 0,T)}});function D(T,R){var j,L,Y,G;if(!u)return;const J=de(e);if(!J)return;(Y=J instanceof Document?u.document.body:J)==null||Y.scrollTo({top:(j=de(R))!=null?j:k.value,left:(L=de(T))!=null?L:B.value,behavior:de(d)});const V=((G=J?.document)==null?void 0:G.documentElement)||J?.documentElement||J;B!=null&&(E.value=V.scrollLeft),k!=null&&(v.value=V.scrollTop)}const y=ae(!1),m=Tn({left:!0,right:!1,top:!0,bottom:!1}),_=Tn({left:!1,right:!1,top:!1,bottom:!1}),P=T=>{y.value&&(y.value=!1,_.left=!1,_.right=!1,_.top=!1,_.bottom=!1,l(T))},H=bu(P,n+i),M=T=>{var R;if(!u)return;const j=((R=T?.document)==null?void 0:R.documentElement)||T?.documentElement||dt(T),{display:L,flexDirection:Y,direction:G}=getComputedStyle(j),J=G==="rtl"?-1:1,V=j.scrollLeft;_.left=V<E.value,_.right=V>E.value;const te=Math.abs(V*J)<=(r.left||0),Q=Math.abs(V*J)+j.clientWidth>=j.scrollWidth-(r.right||0)-lo;L==="flex"&&Y==="row-reverse"?(m.left=Q,m.right=te):(m.left=te,m.right=Q),E.value=V;let ce=j.scrollTop;T===u.document&&!ce&&(ce=u.document.body.scrollTop),_.top=ce<v.value,_.bottom=ce>v.value;const nt=Math.abs(ce)<=(r.top||0),Ue=Math.abs(ce)+j.clientHeight>=j.scrollHeight-(r.bottom||0)-lo;L==="flex"&&Y==="column-reverse"?(m.top=Ue,m.bottom=nt):(m.top=nt,m.bottom=Ue),v.value=ce},z=T=>{var R;if(!u)return;const j=(R=T.target.documentElement)!=null?R:T.target;M(j),y.value=!0,H(T),a(T)};return fe(e,"scroll",n?ku(z,n,!0,!1):z,c),si(()=>{try{const T=de(e);if(!T)return;M(T)}catch(T){p(T)}}),h?.mutation&&e!=null&&e!==u&&e!==document&&Tu(e,()=>{const T=de(e);T&&M(T)},{attributes:!0,childList:!0,subtree:!0}),fe(e,"scrollend",P,c),{x:B,y:k,isScrolling:y,arrivedState:m,directions:_,measure(){const T=de(e);u&&T&&M(T)}}}function k1(e,t,n={}){const{window:i=Je}=n;return Ni(e,t,i?.localStorage,n)}function C1(e={}){const{window:t=Je}=e;if(!t)return ae(["en"]);const n=t.navigator,i=ae(n.languages);return fe(t,"languagechange",()=>{i.value=n.languages},{passive:!0}),i}function oa(e,t=qt,n={}){const{immediate:i=!0,manual:l=!1,type:a="text/javascript",async:r=!0,crossOrigin:o,referrerPolicy:c,noModule:d,defer:u,document:p=Cu,attrs:h={},nonce:E=void 0}=n,v=ae(null);let B=null;const k=m=>new Promise((_,P)=>{const H=R=>(v.value=R,_(R),R);if(!p){_(!1);return}let M=!1,z=p.querySelector(`script[src="${de(e)}"]`);z?z.hasAttribute("data-loaded")&&H(z):(z=p.createElement("script"),z.type=a,z.async=r,z.src=de(e),u&&(z.defer=u),o&&(z.crossOrigin=o),d&&(z.noModule=d),c&&(z.referrerPolicy=c),E&&(z.nonce=E),Object.entries(h).forEach(([R,j])=>z?.setAttribute(R,j)),M=!0);const T={passive:!0};fe(z,"error",R=>P(R),T),fe(z,"abort",R=>P(R),T),fe(z,"load",()=>{z.setAttribute("data-loaded","true"),t(z),H(z)},T),M&&(z=p.head.appendChild(z)),m||H(z)}),D=(m=!0)=>(B||(B=k(m)),B),y=()=>{if(!p)return;B=null,v.value&&(v.value=null);const m=p.querySelector(`script[src="${de(e)}"]`);m&&p.head.removeChild(m)};return i&&!l&&si(D),l||s1(y),{scriptTag:v,load:D,unload:y}}function wu(e){const t=window.getComputedStyle(e);
2943if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth<e.scrollWidth||t.overflowY==="auto"&&e.clientHeight<e.scrollHeight)return!0;{const n=e.parentNode;return!n||n.tagName==="BODY"?!1:wu(n)}}function D1(e){const t=e||window.event,n=t.target;return wu(n)?!1:t.touches.length>1?!0:(t.preventDefault&&t.preventDefault(),!1)}const ca=new WeakMap;function Tr(e,t=!1){const n=ae(t);let i=null,l="";we(Bu(e),o=>{const c=sa(de(o));if(c){const d=c;if(ca.get(d)||ca.set(d,d.style.overflow),d.style.overflow!=="hidden"&&(l=d.style.overflow),d.style.overflow==="hidden")return n.value=!0;if(n.value)return d.style.overflow="hidden"}},{immediate:!0});const a=()=>{const o=sa(de(e));!o||n.value||(Zs&&(i=fe(o,"touchmove",c=>{D1(c)},{passive:!1})),o.style.overflow="hidden",n.value=!0)},r=()=>{const o=sa(de(e));!o||!n.value||(Zs&&i?.(),o.style.overflow=l,ca.delete(o),n.value=!1)};return Ln(r),b({get(){return n.value},set(o){o?a():r()}})}function T1(e,t,n={}){const{window:i=Je}=n;return Ni(e,t,i?.sessionStorage,n)}function w1(e={}){const{window:t=Je,...n}=e;return b1(t,n)}function x1(e={}){const{window:t=Je,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:i=Number.POSITIVE_INFINITY,listenOrientation:l=!0,includeScrollbar:a=!0,type:r="inner"}=e,o=ae(n),c=ae(i),d=()=>{if(t)if(r==="outer")o.value=t.outerWidth,c.value=t.outerHeight;else if(r==="visual"&&t.visualViewport){const{width:p,height:h,scale:E}=t.visualViewport;o.value=Math.round(p*E),c.value=Math.round(h*E)}else a?(o.value=t.innerWidth,c.value=t.innerHeight):(o.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight)};d(),si(d);const u={passive:!0};if(fe("resize",d,u),t&&r==="visual"&&t.visualViewport&&fe(t.visualViewport,"resize",d,u),l){const p=Dr("(orientation: portrait)");we(p,()=>d())}return{width:o,height:c}}const F1=()=>{const e=rf();return b(()=>Object.keys(e.value))},xu=(e=!0)=>{const{frontmatter:t,page:n}=gn();return b(()=>t.value.contributors===!1||!de(e)?[]:n.value.git.contributors??[])};var ao={"/":{contributors:"è´¡ç®è
",changelog:"æ´æ°æ¥å¿",timeOn:"äº",viewChangelog:"æ¥çæææ´æ°æ¥å¿",latestUpdateAt:"æè¿æ´æ°"},"/en/":{contributors:"Contributors",changelog:"Changelog",timeOn:"on",viewChangelog:"View All Changelog",latestUpdateAt:"Last Updated"}};const S1=typeof ao>"u"?{}:ao,Fu=()=>ri(S1),P1=(e=!0)=>{const{lang:t,page:n}=gn(),i=Fu();return b(()=>{if(!de(e))return null;const l=n.value.git?.updatedTime??n.value.git?.changelog?.[0].time;if(!l)return null;const a=new Date(l),r=new Intl.DateTimeFormat(t.value,{dateStyle:"short",timeStyle:"short"}).format(l);return{date:a,text:r,iso:a.toISOString(),locale:i.value.latestUpdateAt}})},R1=({level:e=2,text:t,anchor:n})=>s(`h${e||2}`,{id:n,tabindex:"-1"},s("a",{href:`#${n}`,class:"header-anchor"},s("span",t))),L1=({name:e,url:t,avatar:n})=>s(t?"a":"span",{href:t,target:"_blank",rel:"noreferrer",class:"vp-contributor"},[n?s("img",{src:n,alt:"",class:"vp-contributor-avatar"}):null,s("span",{class:"vp-contributor-name"},e)]),O1=I({name:"GitContributors",props:{title:String,headerLevel:{type:Number,default:2}},setup(e){const t=xu(),n=Fu();return()=>t.value.length?[s(R1,{level:e.headerLevel,anchor:"doc-contributors",text:e.title||n.value.contributors}),s("div",{class:"vp-contributors"},t.value.map(i=>s(L1,i)))]:null}}),I1={enhance:({app:e})=>{e.component("GitContributors",O1)}},M1=Object.freeze(Object.defineProperty({__proto__:null,default:I1},Symbol.toStringTag,{value:"Module"})),V1=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),N1=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));let $1={};const j1=()=>$1,H1=e=>`data:image/svg+xml;charset=utf8,${e.replace(/<br>/g,"<br />").replace(/%/g,"%25").replace(/"/g,"%22").replace(/'/g,"%27").replace(/&/g,"%26").replace(/#/g,"%23").replace(/{/g,"%7B").replace(/}/g,"%7D").replace(/</g,"%3C").replace(/>/g,"%3E")}`,z1='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1316 1024" fill="currentColor"><path d="M658.286 0C415.89 0 0 297.106 0 512c0 214.82 415.89 512 658.286 512 242.322 0 658.285-294.839 658.285-512S900.608 0 658.286 0zm0 877.714c-161.573 0-512-221.769-512-365.714 0-144.018 350.427-365.714 512-365.714 161.572 0 512 217.16 512 365.714s-350.428 365.714-512 365.714z"/><path d="M658.286 292.571a219.429 219.429 0 1 0 0 438.858 219.429 219.429 0 0 0 0-438.858zm0 292.572a73.143 73.143 0 1 1 0-146.286 73.143 73.143 0 0 1 0 146.286z"/></svg>',U1='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><path d="M828.976 894.125H190.189c-70.55 0-127.754-57.185-127.754-127.753V606.674c0-17.634 14.31-31.933 31.933-31.933h63.889c17.634 0 31.932 14.299 31.932 31.933v95.822c0 35.282 28.596 63.877 63.877 63.877h511.033c35.281 0 63.877-28.595 63.877-63.877v-95.822c0-17.634 14.298-31.933 31.943-31.933h63.878c17.635 0 31.933 14.299 31.933 31.933v159.7c0 70.566-57.191 127.751-127.754 127.751zM249.939 267.51c12.921-12.92 33.885-12.92 46.807 0l148.97 148.972V94.893c0-17.634 14.302-31.947 31.934-31.947h63.876c17.638 0 31.946 14.313 31.946 31.947v321.589l148.97-148.972c12.922-12.92 33.876-12.92 46.797 0l46.814 46.818c12.922 12.922 12.922 33.874 0 46.807L552.261 624.93c-1.14 1.138-21.664 13.684-42.3
294315 13.693-20.877.01-41.88-12.542-43.021-13.693L203.122 361.135c-12.923-12.934-12.923-33.885 0-46.807l46.817-46.818z"/></svg>',Vn={useMaxWidth:!1};var W1=I({name:"Mermaid",props:{code:{type:String,required:!0},title:String},setup(e){const t=lr(),n=qf(),{themeVariables:i,...l}=j1(),a=ae(),r=b(()=>Js(e.code)),o=se(""),c=async()=>{const{default:p}=await f(async()=>{const{default:h}=await import("./mermaid.esm.min-BAXkhqed.js").then(E=>E.b8);return{default:h}},[]);p.initialize({theme:n.value?"dark":"default",themeVariables:{dark:n.value,...zE(i)?i(n.value):i},flowchart:Vn,sequence:Vn,journey:Vn,gantt:Vn,er:Vn,pie:Vn,...l,startOnLoad:!1}),o.value=(await p.render(t,r.value)).svg},d=()=>{const{body:p}=document,h=document.createElement("div");h.classList.add("mermaid-preview"),h.innerHTML=o.value,p.appendChild(h),h.addEventListener("click",()=>{p.removeChild(h)})},u=()=>{const p=H1(o.value),h=document.createElement("a");h.setAttribute("href",p),h.setAttribute("download",`${e.title?Js(e.title):t}.svg`),h.click()};return ye(()=>{wt(n,c,{flush:"post"})}),()=>[s("div",{class:"mermaid-actions"},[s("button",{class:"preview-button",title:"preview",innerHTML:z1,onClick:d}),s("button",{class:"download-button",title:"download",innerHTML:U1,onClick:u})]),s("div",{ref:a,class:"mermaid-wrapper"},o.value?s("div",{class:"mermaid-content",innerHTML:o.value}):s(Br,{class:"mermaid-loading",height:96}))]}});const G1=St({enhance:({app:e})=>{e.component("Mermaid",W1)}}),q1=Object.freeze(Object.defineProperty({__proto__:null,default:G1},Symbol.toStringTag,{value:"Module"})),K1=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Q1=St({setup(){fe("beforeprint",()=>{document.querySelectorAll("details").forEach(e=>{e.open=!0})},{passive:!0})}}),Y1=Object.freeze(Object.defineProperty({__proto__:null,default:Q1},Symbol.toStringTag,{value:"Module"})),J1=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),X1="VUEPRESS_CODE_TAB_STORE",nl=Ni(X1,{}),Z1=I({name:"CodeTabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},tabId:String},slots:Object,setup(e,{slots:t}){let n=e.data.map(()=>lr());const i=se(e.active),l=ae([]),a=()=>{e.tabId&&(nl.value[e.tabId]=e.data[i.value].id)},r=(u=i.value)=>{i.value=u<l.value.length-1?u+1:0,l.value[i.value].focus()},o=(u=i.value)=>{i.value=u>0?u-1:l.value.length-1,l.value[i.value].focus()},c=(u,p)=>{u.key===" "||u.key==="Enter"?(u.preventDefault(),i.value=p):u.key==="ArrowRight"?(u.preventDefault(),r()):u.key==="ArrowLeft"&&(u.preventDefault(),o()),e.tabId&&(nl.value[e.tabId]=e.data[i.value].id)},d=()=>{if(e.tabId){const u=e.data.findIndex(({id:p})=>nl.value[e.tabId]===p);if(u!==-1)return u}return e.active};return ye(()=>{i.value=d(),we(()=>e.tabId&&nl.value[e.tabId],(u,p)=>{if(e.tabId&&u!==p){const h=e.data.findIndex(({id:E})=>E===u);h!==-1&&(i.value=h)}})}),()=>e.data.length?s("div",{class:"vp-code-tabs"},[s("div",{class:"vp-code-tabs-nav",role:"tablist"},e.data.map(({id:u},p)=>{const h=p===i.value;return s("button",{type:"button",ref:E=>{E&&(l.value[p]=E)},class:["vp-code-tab-nav",{active:h}],role:"tab","aria-controls":n[p],"aria-selected":h,onClick:()=>{i.value=p,a()},onKeydown:E=>{c(E,p)}},t[`title${p}`]({value:u,isActive:h}))})),e.data.map(({id:u},p)=>{const h=p===i.value;return s("div",{class:["vp-code-tab",{active:h}],id:n[p],role:"tabpanel","aria-expanded":h},[s("div",{class:"vp-code-tab-title"},t[`title${p}`]({value:u,isActive:h})),t[`tab${p}`]({value:u,isActive:h})])})]):null}}),e8="VUEPRESS_TAB_STORE",ua=Ni(e8,{}),t8=I({name:"Tabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},tabId:String},slots:Object,setup(e,{slots:t}){let n=e.data.map(()=>lr());const i=se(e.active),l=ae([]),a=()=>{e.tabId&&(ua.value[e.tabId]=e.data[i.value].id)},r=(u=i.value)=>{i.value=u<l.value.length-1?u+1:0,l.value[i.value].focus()},o=(u=i.value)=>{i.value=u>0?u-1:l.value.length-1,l.value[i.value].focus()},c=(u,p)=>{u.key===" "||u.key==="Enter"?(u.preventDefault(),i.value=p):u.key==="ArrowRight"?(u.preventDefault(),r()):u.key==="ArrowLeft"&&(u.preventDefault(),o()),a()},d=()=>
2943{if(e.tabId){const u=e.data.findIndex(({id:p})=>ua.value[e.tabId]===p);if(u!==-1)return u}return e.active};return ye(()=>{i.value=d(),we(()=>e.tabId&&ua.value[e.tabId],(u,p)=>{if(e.tabId&&u!==p){const h=e.data.findIndex(({id:E})=>E===u);h!==-1&&(i.value=h)}})}),()=>e.data.length?s("div",{class:"vp-tabs"},[s("div",{class:"vp-tabs-nav",role:"tablist"},e.data.map(({id:u},p)=>{const h=p===i.value;return s("button",{type:"button",ref:E=>{E&&(l.value[p]=E)},class:["vp-tab-nav",{active:h}],role:"tab","aria-controls":n[p],"aria-selected":h,onClick:()=>{i.value=p,a()},onKeydown:E=>{c(E,p)}},t[`title${p}`]({value:u,isActive:h}))})),e.data.map(({id:u},p)=>{const h=p===i.value;return s("div",{class:["vp-tab",{active:h}],id:n[p],role:"tabpanel","aria-expanded":h},[s("div",{class:"vp-tab-title"},t[`title${p}`]({value:u,isActive:h})),t[`tab${p}`]({value:u,isActive:h})])})]):null}}),n8={enhance:({app:e})=>{e.component("CodeTabs",Z1),e.component("Tabs",t8)}},i8=Object.freeze(Object.defineProperty({__proto__:null,default:n8},Symbol.toStringTag,{value:"Module"})),l8=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),a8=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),r8=JSON.parse(`{"encrypt":{},"author":{"name":"chiichen"},"logo":"/KissingCat.jpg","repo":"chiichen/chiichen.github.io","docsBranch":"master","docsDir":"src","blog":{"medias":{"BiliBili":"https://space.bilibili.com/8427907?spm_id_from=333.1007.0.0","Email":"mailto:[email protected]","GitHub":"https://github.com/chiichen","Gmail":"mailto:[email protected]","Steam":"https://steamcommunity.com/profiles/76561198280284334/","Zhihu":"https://www.zhihu.com/people/hacker.fucker"}},"locales":{"/":{"lang":"zh-CN","navbarLocales":{"langName":"ç®ä½ä¸æ","selectLangAriaLabel":"éæ©è¯è¨"},"metaLocales":{"author":"ä½è
","date":"å使¥æ","origin":"åå","views":"访é®é","category":"åç±»","tag":"æ ç¾","readingTime":"é
读æ¶é´","words":"åæ°","toc":"æ¤é¡µå
容","prev":"ä¸ä¸é¡µ","next":"ä¸ä¸é¡µ","contributors":"è´¡ç®è
","editLink":"å¨ GitHub ä¸ç¼è¾æ¤é¡µ","print":"æå°"},"blogLocales":{"article":"æç« ","articleList":"æç« å表","category":"åç±»","tag":"æ ç¾","timeline":"æ¶é´è½´","timelineTitle":"æ¨æ¥ä¸å¨","all":"å
¨é¨","intro":"个人ä»ç»","star":"ææ ","empty":"$text 为空"},"paginationLocales":{"prev":"ä¸ä¸é¡µ","next":"ä¸ä¸é¡µ","navigate":"跳转å°","action":"åå¾","errorText":"请è¾å
¥ 1 å° $page ä¹åç页ç ï¼"},"outlookLocales":{"themeColor":"主é¢è²","darkmode":"å¤è§","fullscreen":"å
¨å±"},"routerLocales":{"skipToContent":"è·³è³ä¸»è¦å
§å®¹","notFoundTitle":"页é¢ä¸åå¨","notFoundMsg":["è¿éä»ä¹ä¹æ²¡æ","æä»¬æ¯æä¹æ¥å°è¿å¿çï¼","è¿ æ¯ å é¶ å !","çèµ·æ¥ä½ 访é®äºä¸ä¸ªå¤±æç龿¥"],"back":"è¿åä¸ä¸é¡µ","home":"带æåå®¶"},"navbar":["/",{"text":"ç¼ç¨ææ¯","icon":"edit","prefix":"/posts/","children":[{"text":"Linuxå
æ ¸","icon":"edit","prefix":"Linuxå
æ ¸/","children":[{"text":"VsCode+Qemuå¼åLinuxå
æ ¸","icon":"edit","link":"vscode qemuå¼åLinuxå
æ ¸"},{"text":"Linuxå
æ ¸Numaå®ç°ç»è","icon":"edit","link":"NUMA Balanceå®ç°æµ
æ"},{"text":"Patch:å¤å±å
åNuma Balancing","icon":"edit","link":"Patch解读/LWNé对å¤å±å
åç³»ç»éæ°è¿è¡NUMA平衡"}]},{"text":"æè°","icon":"edit","prefix":"æè°/","children":[{"text":"éæ!!1=0","icon":"page","link":"ç¼ç¨æè°/éæ!1çäº0.md"},{"text":"è®°ä¸æ¬¡ GP Debug çå¿è·¯åç¨","icon":"page","link":"Debugæè°/è®°ä¸æ¬¡ GP Debug çå¿è·¯åç¨.md"},{"text":"é«çº§è¯è¨çç¼è¯ï¼é¾æ¥åè£
è½½è¿ç¨ä»ç»","icon":"page","link":"ç¼ç¨æè°/é«çº§è¯è¨çç¼è¯-龿¥åè£
è½½è¿ç¨ä»ç»"}]},{"text":"Rustçå½å¨æå¸¸è§è¯¯åº","icon":"page","link":"Rust/Rustçå½å¨æå¸¸è§è¯¯åº.md"}]},{"text":"课ç¨ç¬è®°","icon":"note","prefix":"/notes","children":[{"text":"ç¼è¯åç","icon":"edit","prefix":"Compile-Principles/","children":[{"text":"ç¼è¯åçç¬è®°","icon":"edit","link":"Chapter0-Introduce"}]},{"text":"æ°æ®åº","icon":"edit","prefix":"Database/","children":[{"text":"æ°æ®åºç¬è®°","icon":"edit","link":"Chapter1-Introduction"}]},{"text":"大å¦ç©ç","icon":"edit","prefix":"College-Physics/","children":[{"text":"çµç£å¦å
¬å¼æ±æ»","icon":"edit","link":"Electromagnetic-Formula"}]}]}],"sidebar":{"/":["",{"text":"ç¼ç¨ææ¯","icon":"note","prefix":"posts/","children":"structure"},{"text":"课ç¨ç¬è®°","icon":"note","prefix":"notes/","children":"structure"},"intro"]},"footer":"éªèç群æä¹æé»¯æ·¡ä¹æ¶","displayFooter":true,"blog":{"description":"Programmer","intro":"/intro.html","roundAvatar":true}},"/en/":{"lang":"en-US","navbarLocales":{"langName":"English","selectLangAriaLabel":"Select language"},"metaLocales":{"author":"Author","date":"Writing Date","origin":"Original","views":"Page views","category":"Category","tag":"Tag","readingTime":"Reading Time","words":"Words","toc":"On This Page","prev":"Prev","next":"Next","contributors":"Contributors","editLink":"Edit this page on GitHub","print":"Print"},"blogLocales":{"article":"Articles","articleList":"Article List","category":"Category","tag":"Tag","timeline":"Timeline","timelineTitle":"Yesterday Once More!","all":"All","intro":"Personal Intro","star":"Star","empty":"No $text"},"paginationLocales":{"prev":"Prev","next":"Next","navigate":"Jump to","action":"Go","errorText":"Please enter a number between 1 and $page !"},"outlookLocales":{"themeColor":"Theme Color","darkmode":"Theme Mode","fullscreen":"Full Screen"},"routerLocales":{"skipToContent":"Skip to main content","notFoundTitle":"Page not found","notFoundMsg":["Thereâs nothing here.","How did we get here?","Thatâs a Four-Oh-Four.","Looks like we've got some broken links."],"back":"Go back","home":"Take me home"},"navbar":["/en/",{"text":"Posts","icon":"edit","prefix":"/en/posts/","children":[]}],"sidebar":{"/en/":["",{"text":"Articles","icon":"note","prefix":"posts/","children":"structure"},"intro"]},"footer":"Default footer","displayFooter":true,"blog":{"description":"Programmer","intro":"/en/intro.html"}}}}`),s8=se(r8),Su=()=>s8,Pu=Symbol(""),o8=()=>{const e=ve(Pu);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},c8=(e,t)=>{const{locales:n,...i}=e;return{...i,...n?.[t]}},u8=St({enhance({app:e}){const t=Su(),n=e._context.provides[mr],i=b(()=>c8(t.value,n.routeLocale.value));e.provide(Pu,i),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return i.value}}})}}),p8=Object.freeze(Object.defineProperty({__proto__:null,default:u8},Symbol.toStringTag,{value:"Module"}));var d8={"/":{backToTop:"è¿åé¡¶é¨"},"/en/":{backToTop:"Back to top"}};const h8=I({name:"BackToTop",setup(){const e=Et(),t=ri(d8),n=ae(),{height:i}=_1(n),{height:l}=x1(),{y:a}=w1(),r=b(()=>(e.value.backToTop??!0)&&a.value>100),o=b(()=>a.value/(i.value-l.value)*100);return ye(()=>
2943{n.value=document.body}),()=>s(ei,{name:"fade-in"},()=>r.value?s("button",{type:"button",class:"vp-back-to-top-button","aria-label":t.value.backToTop,onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},[s("span",{class:"vp-scroll-progress",role:"progressbar","aria-labelledby":"loadinglabel","aria-valuenow":o.value},s("svg",s("circle",{cx:"26",cy:"26",r:"24",fill:"none",stroke:"currentColor","stroke-width":"4","stroke-dasharray":`${Math.PI*o.value*.48} ${Math.PI*(100-o.value)*.48}`}))),s("div",{class:"back-to-top-icon"})]):null)}}),E8=St({rootComponents:[h8]}),f8=Object.freeze(Object.defineProperty({__proto__:null,default:E8},Symbol.toStringTag,{value:"Module"})),g8=/language-(shellscript|shell|bash|sh|zsh)/,m8=({selector:e,ignoreSelector:t,inlineSelector:n,duration:i=2e3,locales:l,showInMobile:a,transform:r})=>{const o=Dr("(max-width: 419px)"),c=b(()=>!o.value||a),d=ri(l),u=B=>{if(B.hasAttribute("copy-code"))return;const k=document.createElement("button");k.type="button",k.classList.add("vp-copy-code-button"),k.setAttribute("aria-label",d.value.copy),k.setAttribute("data-copied",d.value.copied),B.parentElement?.insertBefore(k,B),B.setAttribute("copy-code","")},p=()=>{document.body.classList.toggle("no-copy-code",!c.value),c.value&&document.querySelectorAll(e).forEach(u)};wt(c,()=>fn(p),{flush:"post"}),Jt(B=>{B!=="beforeUnmount"&&p()});const{copy:h}=h1({legacy:!0}),E=new WeakMap,v=async(B,k,D)=>{const y=k.cloneNode(!0);r&&r(y);let m=y.textContent||"";if(g8.test(B.className)&&(m=m.replace(/^ *(\$|>) /gm,"")),await h(m),i<=0)return;D.classList.add("copied"),clearTimeout(E.get(D));const _=setTimeout(()=>{D.classList.remove("copied"),D.blur(),E.delete(D)},i);E.set(D,_)};fe("click",B=>{const k=B.target;if(c.value&&k.matches('div[class*="language-"] > button.vp-copy-code-button')){const D=k.parentElement,y=k.nextElementSibling;if(!D||!y)return;v(D,y,k)}},{passive:!0})};var v8={"/":{copy:"å¤å¶ä»£ç ",copied:"å·²å¤å¶"},"/en/":{copy:"Copy code",copied:"Copied"}};const A8=St({setup:()=>{m8({selector:'[vp-content] div[class*="language-"] pre',ignoreSelector:"",inlineSelector:"",locales:v8,duration:2e3,showInMobile:!1})}}),B8=Object.freeze(Object.defineProperty({__proto__:null,default:A8},Symbol.toStringTag,{value:"Module"})),y8=I({name:"VPIcon",props:{type:{type:String,default:"unknown"},prefix:String,icon:String,color:String,size:[String,Number],verticalAlign:String,sizing:{type:String,default:"height"}},setup(e){const t=b(()=>e.icon?li(e.icon)?e.icon:Rl(e.icon)?Ce(e.icon):null:null),n=b(()=>{const l={},{type:a,verticalAlign:r,size:o,sizing:c}=e,d={sizing:c};return e.color&&(l.color=e.color),o&&(l["--icon-size"]=Number.isNaN(Number(o))?o:`${o}px`),r&&(l["--icon-vertical-align"]=r),a==="iconify"&&(c!=="height"&&(d.width=e.size||"1em"),c!=="width"&&(d.height=e.size||"1em")),Gt(l).length&&(d.style=l),d}),i=l=>l.includes("fa-")||/^fa.$/.test(l)?l:`fa-${l}`;return()=>{const{type:l,icon:a,prefix:r="",sizing:o}=e;if(!a)return null;if(t.value)return s("img",{class:"vp-icon",src:t.value,alt:"","aria-hidden":"","no-view":"",...n.value});if(l==="iconify")return s("iconify-icon",{key:a,class:"vp-icon",icon:a.includes(":")?a:`${r}${a}`,...n.value});if(l==="fontawesome"){const[c,d]=a.includes(":")?a.split(":",2):["fas",a];return s("i",{key:a,class:["vp-icon",c.length===1?`fa${c}`:i(c),...d.split(" ").map(i),o==="height"?"":"fa-fw"],...n.value})}return s("i",{key:a,class:["vp-icon",a.includes(" ")?a:`${r}${a}`],...n.value})}}}),_8={enhance:({app:e})=>{ht("VPIcon")||e.component("VPIcon",t=>s(y8,{type:"fontawesome",prefix:"",...t}))},setup:()=>{oa("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/solid.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}}),oa("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/regular.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}}),oa("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/fontawesome.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}})}},b8=Object.freeze(Object.defineProperty({__proto__:null,default:_8},Symbol.toStringTag,{value:"Module"})),k8=se({}),Ru=Symbol(""),C8=()=>ve(Ru),D8=e=>{e.provide(Ru,k8)},Lu=e=>new Promise((t,n)=>{e.complete?t({type:"image",element:e,src:e.src,width:e.naturalWi
2943dth,height:e.naturalHeight,alt:e.alt,msrc:e.src}):(e.onload=()=>{t(Lu(e))},e.onerror=()=>{n()})}),T8='<div class="photo-swipe-loading"><svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" preserveAspectRatio="xMidYMid" viewBox="25 25 50 50"><animateTransform attributeName="transform" type="rotate" dur="2s" keyTimes="0;1" repeatCount="indefinite" values="0;360"></animateTransform><circle cx="50" cy="50" r="20" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round"><animate attributeName="stroke-dasharray" dur="1.5s" keyTimes="0;0.5;1" repeatCount="indefinite" values="1,200;90,200;1,200"></animate><animate attributeName="stroke-dashoffset" dur="1.5s" keyTimes="0;0.5;1" repeatCount="indefinite" values="0;-35px;-125px"></animate></circle></svg></div>',w8=(e,{download:t=!0,fullscreen:n=!0}={})=>{e.on("uiRegister",()=>{if(e.ui.registerElement({name:"bulletsIndicator",className:"photo-swipe-bullets-indicator",appendTo:"wrapper",onInit:i=>{const l=[];let a=-1;for(let r=0;r<e.getNumItems();r++){const o=document.createElement("div");o.className="photo-swipe-bullet",o.onclick=c=>{e.goTo(l.indexOf(c.target))},l.push(o),i.appendChild(o)}e.on("change",()=>{a>=0&&l[a].classList.remove("active"),l[e.currIndex].classList.add("active"),a=e.currIndex})}}),n){const{isSupported:i,toggle:l}=Ll();i.value&&e.ui.registerElement({name:"fullscreen",order:7,isButton:!0,html:'<svg class="pswp__icn" viewB
2943ox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg"><path d="M249.5 270.833H437v-75H212a37.5 37.5 0 0 0-37.5 37.5v225h75v-187.5zm-37.5 600h225v-75H249.5v-187.5h-75v225a37.5 37.5 0 0 0 37.5 37.5zm637.5-37.5v-225h-75v187.5H587v75h225a37.5 37.5 0 0 0 37.5-37.5zM587 270.833h187.5v187.5h75v-225a37.5 37.5 0 0 0-37.5-37.5H587v75z"/></svg>',onClick:()=>{l()}})}t&&e.ui.registerElement({name:"download",order:8,isButton:!0,tagName:"a",html:{isCustomSVG:!0,inner:'<path d="M20.5 14.3 17.1 18V10h-2.2v7.9l-3.4-3.6L10 16l6 6.1 6-6.1-1.5-1.6ZM23 23H9v2h14" id="pswp__icn-download"/>',outlineID:"pswp__icn-download"},onInit:i=>{i.setAttribute("download",""),i.setAttribute("target","_blank"),i.setAttribute("rel","noopener"),e.on("change",()=>{i.setAttribute("href",e.currSlide.data.src)})}})})},x8=({selector:e,locales:t,download:n=!0,fullscreen:i=!0,scrollToClose:l=!0})=>{const a=C8(),r=ri(t),o=Et(),c=b(()=>{const{photoSwipe:E}=o.value;return E===!1?null:me(E)?E:Wt(e)?e.join(", "):e}),d=b(()=>({...a.value,...r.value,download:n,fullscreen:i,scrollToClose:l}));let u=null,p=0,h=null;fe("click",async E=>{const v=E.target;if(!c.value||!u||!v.matches(c.value))return;p!==0&&h.destroy();const B=Date.now(),k=await u,D=Array.from(document.querySelectorAll(c.value)),y=D.map(_=>({html:T8,element:_,msrc:_.src})),m=D.findIndex(_=>_===v);h=new k({preloaderDelay:0,showHideAnimationType:"zoom",...d.value,dataSource:y,index:m,...l?{closeOnVerticalDrag:!0,wheelToZoom:!1}:{}}),p=B,w8(h,{download:n,fullscreen:i}),h.init(),h.on("destroy",()=>{h=null,p=0}),D.map((_,P)=>Lu(_).then(H=>{p===B&&(y.splice(P,1,H),h?.refreshSlideContent(P))}))},{passive:!0}),fe("wheel",()=>{d.value.scrollToClose&&h?.close()}),ye(()=>{("requestIdleCallback"in window?window.requestIdleCallback:setTimeout)(()=>{u=f(async()=>{const{default:E}=await import("./photoswipe.esm-CKV1Bsxh.js");return{default:E}},[]).then(({default:E})=>E)})}),Sn(()=>{h?.destroy()})};var F8={"/":{closeTitle:"å
³é",downloadTitle:"ä¸è½½å¾ç",fullscreenTitle:"忢å
¨å±",zoomTitle:"缩æ¾",arrowPrevTitle:"ä¸ä¸ä¸ª (å·¦ç®å¤´)",arrowNextTitle:"ä¸ä¸ä¸ª (å³ç®å¤´)"},"/en/":{closeTitle:"Close",downloadTitle:"Download Image",fullscreenTitle:"Switch to fullscreen",zoomTitle:"Zoom in/out",arrowPrevTitle:"Prev (Arrow Left)",arrowNextTitle:"Next (Arrow Right)"}};const S8="[vp-content] :not(a) > img:not([no-view])",P8=F8,R8=!0,L8=!0,O8=!0;var I8=St({enhance:({app:e})=>{D8(e)},setup:()=>{x8({selector:S8,locales:P8,download:R8,fullscreen:L8,scrollToClose:O8})}});const M8=Object.freeze(Object.defineProperty({__proto__:null,default:I8},Symbol.toStringTag,{value:"Module"})),Ou=({type:e="info",text:t="",vertical:n,color:i,bgColor:l},{slots:a})=>s("span",{class:["vp-badge",e,{diy:!!(i||l)}],style:{backgroundColor:l??!1,color:i??!1,verticalAlign:n??!1}},a.default?.()??t);Ou.displayName="Badge";const V8={enhance:({app:e})=>{ht("Badge")||e.component("Badge",Ou)},setup:()=>{},rootComponents:[]},N8=Object.freeze(Object.defineProperty({__proto__:null,default:V8},Symbol.toStringTag,{value:"Module"})),ro=async(e,t)=>{const{path:n,query:i}=e.currentRoute.value,{scrollBehavior:l}=e.options;e.options.scrollBehavior=void 0,await e.replace({path:n,query:i,hash:t}),e.options.scrollBehavior=l},$8=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:i=5})=>{const l=Yt();fe("scroll",bu(()=>{const r=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(r)<i){ro(l,"");return}const c=window.innerHeight+r,d=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),u=Math.abs(d-c)<i,p=Array.from(document.querySelectorAll(e)),E=Array.from(document.querySelectorAll(t)).filter(v=>p.some(B=>B.hash===v.hash));for(let v=0;v<E.length;v++){const B=E[v],k=E[v+1],D=r>=(B.parentElement?.offsetTop??0)-i,y=!k||r<(k.parentElement?.offsetTop??0)-i;if(!(D&&y))continue;const _=decodeURIComponent(l.currentRoute.value.hash),P=decodeURIComponent(B.hash);if(_===P)return;if(u){for(let H=v+1;H<E.length;H++)if(_===decodeURIComponent(E[H].hash))return}ro(l,P);return}},n))},j8=".vp-sidebar-link, .vp-toc-link",H8=".header-anchor",z8=200,U8=5,W8=St({setup(){$8({headerLinkSelector:j8,headerAnchorSelector:H8,delay:z8,offset:U8})}}),G8=Object.freeze(Object.defineProperty({__proto__:null,default:W8},Symbol.toStringTag,{value:"Module"}));let Iu=e=>me(e.title)?{title:e.title}:null;const Mu=Symbol(""),q8=e=>{Iu=e},K8=()=>ve(Mu),Q8=e=>{e.provide(Mu,Iu)};var Y8={"/":{title:"ç®å½",empty:"ææ ç®å½"},"/en/":{title:"Catalog",empty:"No catalog"}},J8=I({name:"Catalog",props:{base:String,level:{type:Number,default:3},index:Boolean,hideHeading:Boolean},setup(e){const{page:t,routes:n,site:i}=gn(),l=K8(),a=ri(Y8),r=ae(Rn(n.value).map(([c,{meta:d}])=>{const u=l(d);if(!u)return null;const p=c.split("/").length;return{level:Wf(c,"/")?p-2:p-1,base:c.replace(/\/[^/]+\/?$/,"/"),path:c,...u}}).filter(c=>ai(c)&&me(c.title))),o=b(()=>{const c=e.base?HE(Uc(e.base)):t.value.path.replace(/\/[^/]+$/,"/"),d=c.split("/").length-2,u=[];return r.value.filter(({level:p,path:h})=>{if(!vl(h,c)||h===c)return!1;if(c==="/"){const E=Gt(i.value.locales).filter(v=>v!=="/");if(h==="/404.html"||E.some(v=>vl(h,v)))return!1}return p-d<=e.level}).sort(({title:p,level:h,order:E},{title:v,level:B,order:k})=>h-B||(sl(E)?sl(k)?E>0?k>
29430?E-k:-1:k<0?E-k:1:E:sl(k)?k:p.localeCompare(v))).forEach(p=>{const{base:h,level:E}=p;switch(E-d){case 1:{u.push(p);break}case 2:{const v=u.find(B=>B.path===h);v&&(v.children??=[]).push(p);break}default:{const v=u.find(B=>B.path===h.replace(/\/[^/]+\/$/,"/"));if(v){const B=v.children?.find(k=>k.path===h);B&&(B.children??=[]).push(p)}}}}),u});return()=>{const c=o.value.some(d=>d.children);return s("div",{class:["vp-catalog",{index:e.index}]},[e.hideHeading?null:s("h2",{class:"vp-catalog-main-title"},a.value.title),o.value.length?s(e.index?"ol":"ul",{class:["vp-catalog-list",{deep:c}]},o.value.map(({children:d=[],title:u,path:p,content:h})=>{const E=s(Ve,{class:"vp-catalog-title",to:p},()=>h?s(h):u);return s("li",{class:"vp-catalog-item"},c?[s("h3",{id:u,class:["vp-catalog-child-title",{"has-children":d.length}]},[s("a",{href:`#${u}`,class:"vp-catalog-header-anchor","aria-hidden":!0}),E]),d.length?s(e.index?"ol":"ul",{class:"vp-child-catalogs"},d.map(({children:v=[],content:B,path:k,title:D})=>s("li",{class:"vp-child-catalog"},[s("div",{class:["vp-catalog-sub-title",{"has-children":v.length}]},[s("a",{href:`#${D}`,class:"vp-catalog-header-anchor"}),s(Ve,{class:"vp-catalog-title",to:k},()=>B?s(B):D)]),v.length?s(e.index?"ol":"div",{class:e.index?"vp-sub-catalogs":"vp-sub-catalogs-wrapper"},v.map(({content:y,path:m,title:_})=>e.index?s("li",{class:"vp-sub-catalog"},s(Ve,{to:m},()=>y?s(y):_)):s(Ve,{class:"vp-sub-catalog-link",to:m},()=>y?s(y):_))):null]))):null]:s("div",{class:"vp-catalog-child-title"},E))})):s("p",{class:"vp-empty-catalog"},a.value.empty)])}}}),X8=St({enhance:({app:e})=>{Q8(e),ht("Catalog",e)||e.component("Catalog",J8)}});const Z8=Object.freeze(Object.defineProperty({__proto__:null,default:X8},Symbol.toStringTag,{value:"Module"}));/** 2944 * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress 2945 * @license MIT 2946 */const so=(e,t)=>{e.classList.add(t)},oo=(e,t)=>{e.classList.remove(t)},eg=e=>{e?.parentNode?.removeChild(e)},pa=(e,t,n)=>e<t?t:e>n?n:e,co=e=>(-1+e)*100,tg=(()=>{const e=[],t=()=>{const n=e.shift();n&&n(t)};return n=>{e.push(n),e.length===1&&t()}})(),ng=e=>e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(t,n)=>n.toUpperCase()),il=(()=>{const e=["Webkit","O","Moz","ms"],t={},n=a=>{const{style:r}=document.body;if(a in r)return a;const o=a.charAt(0).toUpperCase()+a.slice(1);let c=e.length;for(;c--;){const d=`${e[c]}${o}`;if(d in r)return d}return a},i=a=>{const r=ng(a);return t[r]??=n(r)},l=(a,r,o)=>{a.style[i(r)]=o};return(a,r)=>{for(const o in r){const c=r[o];Object.hasOwn(r,o)&&vu(c)&&l(a,o,c)}}})(),$t={minimum:.08,easing:"ease",speed:200,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'<div class="bar" role="bar"></div>'},Fe={percent:null,isRendered:()=>!!document.getElementById("nprogress"),set:e=>{const{speed:t,easing:n}=$t,i=Fe.isStarted(),l=pa(e,$t.minimum,1);Fe.percent=l===1?null:l;const a=Fe.render(!i),r=a.querySelector($t.barSelector);return a.offsetWidth,tg(o=>{il(r,{transform:`translate3d(${co(l)}%,0,0)`,transition:`all ${t}ms ${n}`}),l===1?(il(a,{transition:"none",opacity:"1"}),a.offsetWidth,setTimeout(()=>{il(a,{transition:`all ${t}ms linear`,opacity:"0"}),setTimeout(()=>{Fe.remove(),o()},t)},t)):setTimeout(()=>{o()},t)}),Fe},isStarted:()=>typeof Fe.percent=="number",start:()=>{Fe.percent||Fe.set(0);const e=()=>{setTimeout(()=>{Fe.percent&&(Fe.trickle(),e())},$t.trickleSpeed)};return e(),Fe},done:e=>!e&&!Fe.percent?Fe:Fe.increase(.3+.5*Math.random()).set(1),increase:e=>{let{percent:t}=Fe;return t?(t=pa(t+(typeof e=="number"?e:(1-t)*pa(Math.random()*t,.1,.95)),0,.994),Fe.set(t)):Fe.start()},trickle:()=>Fe.increase(Math.random()*$t.trickleRate),render:e=>{if(Fe.isRendered())return document.getElementById("nprogress");so(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=$t.template;const n=t.querySelector($t.barSelector),i=document.querySelector($t.parent),l=e?"-100":co(Fe.percent??0);return il(n,{transition:"all 0 linear",transform:`translate3d(${l}%,0,0)`}),i&&(i!==document.body&&so(i,"nprogress-custom-parent"),i.appendChild(t)),t},remove:()=>{oo(document.documentElement,"nprogress-busy"),oo(document.querySelector($t.parent),"nprogress-custom-parent"),eg(document.getElementById("nprogress"))}},ig=()=>{ye(()=>{const e=Yt(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||Fe.start()}),e.afterEach(n=>{t.add(n.path),Fe.done()})})},lg=St({setup(){ig()}}),ag=Object.freeze(Object.defineProperty({__proto__:null,default:lg},Symbol.toStringTag,{value:"Module"}));var rg={provider:"Giscus",lightTheme:"https://unpkg.com/[email protected]/templates/giscus/light.css",darkTheme:"https://unpkg.com/[email protected]/templates/giscus/dark.css",repo:"chiichen/chiichen.github.io",repoId:"R_kgDOKevcoA",category:"Announcements",categoryId:"DIC_kwDOKevcoM4CaDrF",mapping:"title"};const sg=rg,og=se(sg),Vu=Symbol(""),Nu=()=>ve(Vu),cg=Nu,ug=e=>{e.provide(Vu,Kt(og))},uo=["ar","be","bg","ca","cs","da","de","en","eo","es","eu","fa","fr","gr","hbs","he","hu","id","it","ja","kh","ko","nl","pl","pt","ro","ru","th","tr","uk","uz","vi","zh-CN","zh-HK","zh-TW"];var pg=I({name:"GiscusComment",props:{identifier:{type:String,required:!0},darkmode:Boolean},setup(e){const t=cg(),n=Sl(),i=b(()=>!!(t.value.repo&&t.value.repoId&&t.value.category&&t.value.categoryId)),l=se(!1),a=b(()=>{if(uo.includes(n.value))return n.value;const o=n.value.split("-")[0];return uo.includes(o)?o:"en"}),r=b(()=>({repo:t.value.repo,repoId:t.value.repoId,category:t.value.category,categoryId:t.value.categoryId,lang:a.value,theme:e.darkmode?t.value.darkTheme||"dark":t.value.lightTheme||"light",mapping:t.value.mapping||"pathname",term:e.identifier,inputPosition:t.value.inputPosition||"top",reactionsEnabled:t.value.reactionsEnabled===!1?"0":"1",strict:t.value.strict===!1?"0":"1",loading:t.value.lazyLoading===!1?"eager":"lazy",emitMetadata:"0"}));return ye(async()=>{await f(()=>import("./giscus-BACEvYzX.js"),[]),l.value=!0}),()=>i.value?s("div",{id:"comment",class:["giscus-wrapper",{"input-top":t.value.inputPosition!=="bottom"}]},l.value?s("giscus-widget",r.value):s(Br)):null}}),dg=I({name:"CommentService",props:{identifier:String,darkmode:Boolean},setup(e){const{frontmatter:t,page:n}=gn(),i=Nu(),l=b(()=>t.value.comment??i.value.comment??!0);return()=>s(pg,{class:"vp-comment","vp-comment":"",identifier:e.identifier??t.value.commentID??n.value.path,darkmode:e.darkmode,style:{display:l.value?"block":"none"}})}}),hg=St({enhance:({app:e})=>{ug(e),e.component("CommentService",dg)}});const Eg=Object.freeze(Object.defineProperty({__proto__:null,default:hg},Symbol.toStringTag,{value:"Module"})),$u="VUEPRESS_REDIRECT_STATUS",po=k1($u,{}),ho=T1($u,{}),fg=e=>{const t=C1(),n=Fl(),i=Rn(e.config);return b(()=>{if(i.some(([l])=>n.value===l)){for(const l of t.value)for(const[a,r]of i)if(r.includes(l))return a===n.value?null:{lang:l,localePath:a}}return null})};var gg=I({name:"RedirectModal",props:{config:{type:Object,required:!0},locales:{type:Object,required:!0}},setup(e){const t=Yt(),{routeLocale:n,routePath:i}=gn(),l=fg(e.config),a=se(),r=Tr(a),o=se(!1),c=b(()=>{if(!l.value)return null;const{lang:u,localePath:p}=l.value,h=[e.locales[p],e.locales[n.value]];return{hint:h.map(({hint:E})=>E.replace("$1",u)),switch:h.map(({switch:E})=>E.replace("$1",u)).join(" / "),cancel:h.map(({cancel:E})=>E).join(" / "),remember:h.map(({remember:E})=>E).join(" / ")}}),d=()=>{ho.value[n.value]=!0,o.value&&(po.value[n.value]=!0),r.value=!1};return we(i,()=>{r.value=!1}),ye(async()=>
2946{a.value=document.body,await fn(),l.value&&!ho.value[n.value]&&!po.value[n.value]&&(r.value=!0)}),rr(()=>{r.value=!1}),()=>s(Hc,{name:"fade-in-scale-up"},()=>r.value?s("div",{key:"mask",class:"redirect-modal-mask"},s("div",{key:"popup",class:"redirect-modal-wrapper"},[s("div",{class:"redirect-modal-content"},c.value?.hint.map(u=>s("p",u))),s("div",{class:"redirect-modal-hint"},[s("input",{id:"remember-redirect",type:"checkbox",value:o.value,onChange:()=>{o.value=!o.value}}),s("label",{for:"remember-redirect"},c.value?.remember)]),s("button",{type:"button",class:"redirect-modal-action primary",onClick:()=>{d(),t.replace(i.value.replace(n.value,l.value.localePath))}},c.value?.switch),s("button",{type:"button",class:"redirect-modal-action",onClick:()=>{d()}},c.value?.cancel)])):null)}}),mg={config:{"/":["zh-CN"],"/en/":["en-US"]},autoLocale:!1,defaultLocale:"/en/",localeFallback:!0,defaultBehavior:"defaultLocale"},vg={"/":{name:"ç®ä½ä¸æ",hint:"ä½ çé¦éè¯è¨æ¯ $1ï¼æ¯å¦åæ¢å°è¯¥è¯è¨ï¼",switch:"åæ¢å° $1",cancel:"åæ¶",remember:"è®°ä½æçéæ©"},"/en/":{name:"English",hint:"Your primary language is $1, do you want to switch to it?",switch:"Switch to $1",cancel:"Cancel",remember:"Remember my choice"}};const ju=mg;var Ag=St({setup(){},rootComponents:[()=>s(gg,{config:ju,locales:vg})]});const Bg=Object.freeze(Object.defineProperty({__proto__:null,config:ju,default:Ag},Symbol.toStringTag,{value:"Module"}));var Eo={"/":{word:"约 $word å",less1Minute:"å°äº 1 åé",time:"大约 $time åé"},"/en/":{word:"About $word words",less1Minute:"Less than 1 minute",time:"About $time min"}};const Hu=()=>{const e=Pl();return b(()=>e.value.readingTime??null)},zu=(e,t)=>{const{minutes:n,words:i}=e,{less1Minute:l,word:a,time:r}=t;return{time:n<1?l:r.replace("$time",Math.round(n).toString()),words:a.replace("$word",i.toString())}},fo={words:"",time:""},La=typeof Eo>"u"?null:Eo,Uu=()=>La?ri(La):b(()=>null),yg=()=>{if(La===null)return b(()=>fo);const e=Hu(),t=Uu();return b(()=>e.value&&t.value?zu(e.value,t.value):fo)},Oa=()=>null,Ae=({name:e="",color:t="currentColor",ariaLabel:n},{attrs:i,slots:l})=>s("svg",{xmlns:"http://www.w3.org/2000/svg",class:["icon",`${e}-icon`],viewBox:"0 0 1024 1024",fill:t,"aria-label":n??`${e} icon`,...i},l.default());Ae.displayName="IconBase";const _g=e=>li(e)?e:`https://github.com/${e}`,wr=(e="")=>!li(e)||e.includes("github.com")?"GitHub":e.includes("bitbucket.org")?"Bitbucket":e.includes("gitlab.com")?"GitLab":e.includes("gitee.com")?"Gitee":null,Wu=()=>s(Ae,{name:"github"},()=>s("path",{d:"M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"}));Wu.displayName="GitHubIcon";const Gu=()=>s(Ae,{name:"gitee"},()=>s("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm242.97-533.34H482.39a23.7 23.7 0 0 0-23.7 23.7l-.03 59.28c0 13.08 10.59 23.7 23.7 23.7h165.96a23.7 23.7 0 0 1 23.7 23.7v11.85a71.1 71.1 0 0 1-71.1 71.1H375.71a23.7 23.7 0 0 1-23.7-23.7V423.11a71.1 71.1 0 0 1 71.1-71.1h331.8a23.7 23.7 0 0 0 23.7-23.7l.06-59.25a23.73 23.73 0 0 0-23.7-23.73H423.11a177.78 177.78 0 0 0-177.78 177.75v331.83c0 13.08 10.62 23.7 23.7 23.7h349.62a159.99 159.99 0 0 0 159.99-159.99V482.33a23.7 23.7 0 0 0-23.7-23.7z"}));Gu.displayName="GiteeIcon";const qu=()=>s(Ae,{name:"bitbucket"},()=>s("path",{d:"M575.256 490.862c6.29 47.981-52.005 85.723-92.563 61.147-45.714-20.004-45.714-92.562-1.133-113.152 38.29-23.442 93.696 7.424 93.696 52.005zm63.451-11.996c-10.276-81.152-102.29-134.839-177.152-101.156-47.433 21.138-79.433 71.424-77.129 124.562 2.853 69.705 69.157 126.866 138.862 120.576S647.3 548.571 638.708 478.83zm136.558-309.723c-25.161-33.134-67.986-38.839-105.728-45.13-106.862-17.151-216.576-17.7-323.438 1.134-35.438 5.706-75.447 11.996-97.719 43.996 36.572 34.3
294604 88.576 39.424 135.424 45.129 84.553 10.862 171.447 11.447 256 .585 47.433-5.705 99.987-10.276 135.424-45.714zm32.585 591.433c-16.018 55.99-6.839 131.438-66.304 163.986-102.29 56.576-226.304 62.867-338.87 42.862-59.43-10.862-129.135-29.696-161.72-85.723-14.3-54.858-23.442-110.848-32.585-166.84l3.438-9.142 10.276-5.157c170.277 112.567 408.576 112.567 579.438 0 26.844 8.01 6.84 40.558 6.29 60.014zm103.424-549.157c-19.42 125.148-41.728 249.71-63.415 374.272-6.29 36.572-41.728 57.162-71.424 72.558-106.862 53.724-231.424 62.866-348.562 50.286-79.433-8.558-160.585-29.696-225.134-79.433-30.28-23.443-30.28-63.415-35.986-97.134-20.005-117.138-42.862-234.277-57.161-352.585 6.839-51.42 64.585-73.728 107.447-89.71 57.16-21.138 118.272-30.866 178.87-36.571 129.134-12.58 261.157-8.01 386.304 28.562 44.581 13.13 92.563 31.415 122.844 69.705 13.714 17.7 9.143 40.01 6.29 60.014z"}));qu.displayName="BitbucketIcon";const Ku=()=>s(Ae,{name:"source"},()=>s("path",{d:"M601.92 475.2c0 76.428-8.91 83.754-28.512 99.594-14.652 11.88-43.956 14.058-78.012 16.434-18.81 1.386-40.392 2.97-62.172 6.534-18.612 2.97-36.432 9.306-53.064 17.424V299.772c37.818-21.978 63.36-62.766 63.36-109.692 0-69.894-56.826-126.72-126.72-126.72S190.08 120.186 190.08 190.08c0 46.926 25.542 87.714 63.36 109.692v414.216c-37.818 21.978-63.36 62.766-63.36 109.692 0 69.894 56.826 126.72 126.72 126.72s126.72-56.826 126.72-126.72c0-31.086-11.286-59.598-29.7-81.576 13.266-9.504 27.522-17.226 39.996-19.206 16.038-2.574 32.868-3.762 50.688-5.148 48.312-3.366 103.158-7.326 148.896-44.55 61.182-49.698 74.25-103.158 75.24-187.902V475.2h-126.72zM316.8 126.72c34.848 0 63.36 28.512 63.36 63.36s-28.512 63.36-63.36 63.36-63.36-28.512-63.36-63.36 28.512-63.36 63.36-63.36zm0 760.32c-34.848 0-63.36-28.512-63.36-63.36s28.512-63.36 63.36-63.36 63.36 28.512 63.36 63.36-28.512 63.36-63.36 63.36zM823.68 158.4h-95.04V63.36h-126.72v95.04h-95.04v126.72h95.04v95.04h126.72v-95.04h95.04z"}));Ku.displayName="SourceIcon";const bg=({link:e,type:t=wr(e??"")})=>{if(!t)return null;const n=t.toLowerCase();return s(n==="bitbucket"?qu:n==="github"?Wu:n==="gitlab"?"GitLab":n==="gitee"?Gu:Ku)},kg=(e,t=0)=>{let n=3735928559^t,i=1103547991^t;for(let l=0,a;l<e.length;l++)a=e.charCodeAt(l),n=Math.imul(n^a,2654435761),i=Math.imul(i^a,1597334677);return n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(i^i>>>13,3266489909),i=Math.imul(i^i>>>16,2246822507),i^=Math.imul(n^n>>>13,3266489909),4294967296*(2097151&i)+(n>>>0)},$i=(e,t)=>kg(e)%t,Qu=/#.*$/u,Cg=e=>{const t=Qu.exec(e);return t?t[0]:""},go=e=>decodeURI(e).replace(Qu,"").replace(/\/index\.html$/iu,"/").replace(/\/(README|index)\.md$/iu,"/").replace(/\.(?:html|md)$/iu,""),Yu=(e,t)=>{if(!vu(t))return!1;const n=go(e.path),i=go(t),l=Cg(t);return l?l===e.hash&&(!i||n===i):n===i},Dg="719px",Tg="1440px",wg="9",ci={mobileBreakPoint:Dg,pcBreakPoint:Tg,colorNumber:wg},On=()=>Su(),Pt=()=>o8(),Pe=()=>({...gn(),theme:On(),themeLocale:Pt()}),tt=()=>{const e=On();return b(()=>!!e.value.pure)},Ju=()=>{const e=Pt();return b(()=>e.value.author)},mo=e=>ai(e)&&me(e.name),xi=(e,t=!1)=>e?Wt(e)?e.map(n=>me(n)?{name:n}:mo(n)?n:null).filter(n=>n!==null):me(e)?[{name:e}]:mo(e)?[e]:(console.error(`Expect "author" to be \`AuthorInfo[] | AuthorInfo | string[] | string ${t?"":"| false"} | undefined\`, but got`,e),[]):[],Xu=(e,t)=>{if(e){if(Wt(e)&&e.every(me))return e;if(me(e))return[e];console.error(`Expect ${t} to be \`string[] | string | undefined\`, but got`,e)}return[]},Zu=e=>Xu(e,"category"),ep=e=>Xu(e,"tag"),tp=()=>{const e=Et(),t=Ju();return b(()=>{const{author:n}=e.value;return n?xi(n):n===!1?[]:xi(t.value,!1)})},xg=()=>{const e=Et(),t=ve(Symbol.for("categoryMap"),null);return b(()=>Zu(e.value.category??e.value.categories).map(n=>({name:n,path:t?.value.map[n]?.path??""})))},Fg=()=>{const e=Et(),t=ve(Symbol.for("tagMap"),null);return b(()=>ep(e.value.tag??e.value.tags).map(n=>({name:n,path:t?.value.map[n]?.path??""})))},Sg=()=>{const{frontmatter:e,page:t}=Pe();return b(()=>{const n=br(e.value.date);if(n)return n;const{createdTime:i}=t.value.git??{};return i?new Date(i):null})},Pg=()=>{const{frontmatter:e,themeLocale:t}=Pe(),n=tp(),i=xg(),l=Fg(),a=Sg(),r=Hu(),o=yg(),c=b(()=>({author:n.value,category:i.value,date:a.value,tag:l.value,isOriginal:e.value.isOriginal??!1,readingTime:r.value,readingTimeLocale:o.value,pageview:e.value.pageview??!0})),d=b(()=>e.value.pageInfo??t.value.pageInfo??null);return{info:c,items:d}},Bt=()=>{const e=Pt();return b(()=>e.value.metaLocales)},Rg="http://.",Xt=()=>{const e=Yt(),t=xt();return n=>{if(!n)return;if(Ii(n))return window.open(n);if(Rl(n))return t.fullPath===n?void 0:void e.push(n);const i=t.path.slice(0,t.path.lastIndexOf("/"));return void e.push(new URL(`${i}/${encodeURI(n)}`,Rg).pathname)}},np=()=>s(Ae,{name:"author"},()=>s("path",{d:"M649.6 633.6c86.4-48 147.2-144 147.2-249.6 0-160-128-288-288-288s-288 128-288 288c0 108.8 57.6 201.6 147.2 249.6-121.6 48-214.4 153.6-240 288-3.2 9.6 0 19.2 6.4 25.6 3.2 9.6 12.8 12.8 22.4 12.8h704c9.6 0 19.2-3.2 25.6-12.8 6.4-6.4 9.6-16 6.4-25.6-25.6-134.4-121.6-240-243.2-288z"}));np.displayName="AuthorIcon";const ip=()=>s(Ae,{name:"calendar"},()=>s("path",{d:"M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.7
294653-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"}));ip.displayName="CalendarIcon";const lp=()=>s(Ae,{name:"category"},()=>s("path",{d:"M148.41 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H148.41c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.311-40.31zM147.556 553.478H429.73c22.263 0 40.311 18.048 40.311 40.31v282.176c0 22.263-18.048 40.312-40.31 40.312H147.555c-22.263 0-40.311-18.049-40.311-40.312V593.79c0-22.263 18.048-40.311 40.31-40.311zM593.927 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H593.927c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.31-40.31zM730.22 920.502H623.926c-40.925 0-74.22-33.388-74.22-74.425V623.992c0-41.038 33.387-74.424 74.425-74.424h222.085c41.038 0 74.424 33.226 74.424 74.067v114.233c0 10.244-8.304 18.548-18.547 18.548s-18.548-8.304-18.548-18.548V623.635c0-20.388-16.746-36.974-37.33-36.974H624.13c-20.585 0-37.331 16.747-37.331 37.33v222.086c0 20.585 16.654 37.331 37.126 37.331H730.22c10.243 0 18.547 8.304 18.547 18.547 0 10.244-8.304 18.547-18.547 18.547z"}));lp.displayName="CategoryIcon";const ap=()=>s(Ae,{name:"print"},()=>s("path",{d:"M819.2 364.8h-44.8V128c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v236.8h-44.8C145.067 364.8 96 413.867 96 473.6v192c0 59.733 49.067 108.8 108.8 108.8h44.8V896c0 17.067 14.933 32 32 32h460.8c17.067 0 32-14.933 32-32V774.4h44.8c59.733 0 108.8-49.067 108.8-108.8v-192c0-59.733-49.067-108.8-108.8-108.8zM313.6 160h396.8v204.8H313.6V160zm396.8 704H313.6V620.8h396.8V864zM864 665.6c0 25.6-19.2 44.8-44.8 44.8h-44.8V588.8c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v121.6h-44.8c-25.6 0-44.8-19.2-44.8-44.8v-192c0-25.6 19.2-44.8 44.8-44.8h614.4c25.6 0 44.8 19.2 44.8 44.8v192z"}));ap.displayName="PrintIcon";const rp=()=>s(Ae,{name:"tag"},()=>s("path",{d:"M939.902 458.563L910.17 144.567c-1.507-16.272-14.465-29.13-30.737-30.737L565.438 84.098h-.402c-3.215 0-5.726 1.005-7.634 2.913l-470.39 470.39a10.004 10.004 0 000 14.164l365.423 365.424c1.909 1.908 4.42 2.913 7.132 2.913s5.223-1.005 7.132-2.913l470.39-470.39c2.01-2.11 3.014-5.023 2.813-8.036zm-240.067-72.121c-35.458 0-64.286-28.828-64.286-64.286s28.828-64.285 64.286-64.285 64.286 28.828 64.286 64.285-28.829 64.286-64.286 64.286z"}));rp.displayName="TagIcon";const sp=()=>s(Ae,{name:"timer"},()=>s("path",{d:"M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"}));sp.displayName="TimerIcon";const op=()=>s(Ae,{name:"word"},()=>[s("path",{d:"M518.217 432.64V73.143A73.143 73.143 0 01603.43 1.097a512 512 0 01419.474 419.474 73.143 73.143 0 01-72.046 85.212H591.36a73.143 73.143 0 01-73.143-73.143z"}),s("path",{d:"M493.714 566.857h340.297a73.143 73.143 0 0173.143 85.577A457.143 457.143 0 11371.566 117.76a73.143 73.143 0 0185.577 73.143v339.383a36.571 36.571 0 0036.571 36.571z"})]);op.displayName="WordIcon";var Lg=I({name:"AuthorInfo",inheritAttrs:!1,props:{author:{type:Array,required:!0}},setup(e){const t=Bt(),n=tt();return()=>e.author.length?s("span",{class:"page-author-info","aria-label":`${t.value.author}${n.value?"":"ð"}`,...n.value?{}:{"data-balloon-pos":"up"}},[s(np),s("span",e.author.map(i=>i.url?s("a",{class:"page-author-item",href:i.url,target:"_blank",rel:"noopener noreferrer"},i.name):s("span",{class:"page-author-item"},i.name))),s("span",{property:"author",content:e.author.map(i=>i.name).join(", ")})]):null}}),Og=I({name:"CategoryInfo",inheritAttrs:!1,props:{category:{type:Array,required:!0}},setup(e){const t=Bt(),n=Xt(),i=tt();return()=>e.category.length?s("span",{class:"page-category-info","aria-label":`${t.value.category}${i.value?"":"ð"}`,...i.value?{}:{"data-balloon-pos":"up"}},[s(lp),e.category.map(({name:l,path:a})=>s("span",{class:["page-category-item",{[`color${$i(l,Number(ci.colorNumber))}`]:!i.value,clickable:a}],role:a?"navigation":"",onClick:()=>{a&&n(a)}},l)),s("meta",{property:"articleSection",content:e.category.map(({name:l})=>l).join(",")})]):null}}),Ig=I({name:"DateInfo",inheritAttrs:!1,props:{date:Object},setup(e){const t=Sl(),n=Bt(),i=tt(),l=b(()=>new Intl.DateTimeFormat(t.value,{dateStyle:"short"})),a=b(()=>e.date?l.value.format(e.date):null);return()=>e.date?s("span",{class:"page-date-info","aria-label":`${n.value.date}${i.value?"":"ð
"}`,...i.value?{}:{"data-balloon-pos":"up"}},[s(ip),s("span",{"data-allow-mismatch":"text"},a.value),s("meta",{property:"datePublished",content:e.date.toISOString()||""})]):null}}),Mg=I({name:"OriginalInfo",inheritAttrs:!1,props:{isOriginal:Boolean},setup(e){const t=Bt();return()=>e.isOriginal?s("span",{class:"page-original-info"},t.value.origin):null}}),Vg=I({name:"ReadingTimeInfo",inheritAttrs:!1,props:{readingTime:Object,readingTimeLocale:Object},setup(e){const t=Bt(),n=tt(),i=b(()=>{if(!e.readingTime)return null;const{minutes:l}=e.readingTime;return l<1?"PT1M":`PT${Math.round(l)}M`});return()=>e.readingTimeLocale?.time?s("span",{class:"page-reading-time-info","aria-label":`${t.value.readingTime}${n.value?"":"â"}`,...n.value?{}:{"data-balloon-pos":"up"}},[s(sp),s("span",e.readingTimeLocale.time),s("meta",{property:"timeRequired",content:i.value})]):null}}),Ng=I({name:"TagInfo",inheritAttrs:!1,props:{tag:Array},setup(e){const t=Bt(),n=Xt(),i=tt();return()=>e.tag?.length?s("span",{class:"page-tag-info","aria-label":`${t.value.tag}${i.value?"":"ð·"}`,...i.value?{}:{"data-balloon-pos":"up"}},[s(rp),e.tag.map(({name:l,path:a})=>s("span",{class:["page-tag-item",{[`color${$i(l,Number(ci.colorNumber))}`]:!i.value,clickable:a}],role:a?"navigation":"",onClick:()=>{a&&n(a)}},l)),s("meta",{property:"keywords",content:e.tag.map(({name:l})=>l).join(",")})]):null}}),$g=I({name:"ReadTimeInfo",inheritAttrs:!1,props:{readingTime:Object,readingTimeLocale:Object},setup(e){const t=Bt(),n=tt();return()=>e.readingTimeLocale?.words?s("span",{class:"page-word-info","aria-label":`${t.value.words}${n.value?"":"ð "}`,...n.value?{}:{"data-balloon-pos":"up"}},[s(op),s("span",e.readingTimeLocale.words),s("meta",{property:"wordCount",content:e.readingTime?.words})]):null}}),cp=I({name:"PageInfo",components:{AuthorInfo:Lg,CategoryInfo:Og,DateInfo:Ig,OriginalInfo:Mg,PageViewInfo:Oa,ReadingTimeInfo:Vg,TagInfo:Ng,WordInfo:$g},props:{items:[Boolean,Array],info:{type:Object,required:!0}},setup(e){const t=tt();return()=>{const n=e.items??["Author","Original","Date","PageView","ReadingTime","Category","Tag"];return n?s("div",{class:"page-info"},n.map(i=>s(xe(`${i}Info`),{...e.info,isPure:t.value}))):null}}});const xr={"/posts/":[{text:"C++",prefix:"cpp/",collapsible:!0,icon:"lightbulb",children:["Application-of-decltype-auto"]},{text:"Dragon OS",prefix:"DragonOS/",collapsible:!0,children:["DragonOSææ°ä»»å¡"]},{text:"Linuxå
æ ¸",prefix:"Linuxå
æ ¸/",collapsible:!0,children:["NUMA Balanceå®ç°æµ
æ","NUMA Balancing","vscode qemuå¼åLinuxå
æ ¸",{text:"Patch解读",prefix:"Patch解读/",collapsible:!0,children:["LWNé对å¤å±å
åç³»ç»éæ°è¿è¡NUMA平衡"]},{text:"å
æ ¸åæ",prefix:"å
æ ¸åæ/",collapsible:!0,children:["LinuxKernelMap"]},{text:"å
æ ¸å¼å",prefix:"å
æ ¸å¼å/",collapsible:!0,children:["Ubuntuç¼è¯å®è£
å
æ ¸",{text:"E BPFå¼å",prefix:"eBPFå¼å/",collapsible:!0,children:["eBPFå¼åå
¥é¨","eBPFè¿é¶"]},{text:"æ§è½æµè¯",prefix:"æ§è½æµè¯/",collapsible:!0,children:["parsec3.0ä»ç»åå®è£
"]}]}]},{text:"Rccç¼è¯å¨",prefix:"rccç¼è¯å¨/",collapsible:!0,children:["Chapter0åè¨","Chapter1è¯æ³åæå¨ä¹Chumsky","HelloWorld"]},{text:"Rust",prefix:"Rust/",collapsible:!0,children:["Inlinable-dyn-extension-traits","Common-rust-lifetime-misconceptions","Type-erase-via-trait"]},{text:"åç«¯ææ¯",prefix:"backend/",collapsible:!0,icon:"lightbulb",children:["gRPC-introduction"]},{text:"微信",prefix:"微信/",collapsible:!0,children:["微信åºå±è§£æ"]},{text:"æè°",prefix:"æè°/",collapsible:!0,children:[{text:"Debugæè°",prefix:"Debugæè°/",collapsible:!0,children:["could not dial endpoint 'orderer-api.127-0-0-1.nip.io","edition设置å¼èµ·çrustç¼è¯å¨æ¥é","SurfaceViewå¼å¸¸éæ¾","è§£å³MacOS䏿¾ä¸å°å¤´æä»¶çé®é¢","è®°ä¸æ¬¡ GP Debug çå¿è·¯åç¨"]},{text:"ç¼ç¨æè°",prefix:"ç¼ç¨æè°/",collapsible:!0,children:["Githubä¸é
ç½®Cargo项ç®çWorkflow","åºäºNinjaç代ç Intellisenseå®è·µ","è§£å³å¨VSCodeéå·Leetcodeçéå®ä¹é®é¢","éæ!1çäº0","é«çº§è¯è¨çç¼è¯-龿¥åè£
è½½è¿ç¨ä»ç»"]},{text:"é¢ç»",prefix:"é¢ç»/",collapsible:!0,children:["è
¾è®¯WXGæ¥å¸¸å®ä¹ é¢ç»"]}]},{text:"课ç¨ç¬è®°",prefix:"课ç¨ç¬è®°/",collapsible:!0,children:[{text:"UML",prefix:"UML/",collapsible:!0,children:["UMLå¤ä¹ ç®è®°"]},{text:"大ç©",prefix:"大ç©/",collapsible:!0,children:["çµç£å¦å
¬å¼",{text:"å
·ä½æ¨å¯¼",prefix:"å
·ä½æ¨å¯¼/",collapsible:!0,children:["å®å¿å¸¦ç¹çä½éçµè½çæ¨å¯¼"]}]},{text:"æä½ç³»ç»",prefix:"æä½ç³»ç»/",collapsible:!0,children:["Chapter1-Introdction","Chapter2-Processes-and-Threads","Chapter3-Memory-Management","Chapter4-File-System","Chapter5-IO","Chapter6-Deadlocks"]},{text:"æ°æ®åº",prefix:"æ°æ®åº/",collapsible:!0,children:["Chapter1 Introduction","Chapter2 Introduction to Relational Model","Chapter3 Introduction to SQL","Chapter6 Formal Relational Query Languages","Chapter7 Entity-Relationship Model","Chapter8 Relational Database Design","Chapter10 Storage and File Structure","Chapter11 Indexing and Hashing","Chapter12 Query Processing","Chapter13 Query Optimization","Chapter14 Transactions","Chapter15 Concurrency Control","Chapter16 Recovery System"]},{text:"çµå·¥",prefix:"çµå·¥/",collapsible:!0,children:["çµå·¥å¤ä¹ ç¬è®°"]},{text:"ç¼è¯åç",prefix:"ç¼è¯åç/",collapsible:!0,children:["Chapter0 åè¨","Chapter1 ç¼è¯å¨ç»æ","Chapter2 è¯æ³åæ","Chapter3 è¯æ³åæ","Chapter4 è¯ä¹åæ","Chapter5 代ç
2946çæ"]},{text:"è®¡ç®æºç½ç»",prefix:"è®¡ç®æºç½ç»/",collapsible:!0,children:["Chapter1-Internet-And-Ethernet","Chapter2-Application-Layer","Chapter3-Transport-Layer","Chapter4-Net-Layer","Chapter5-Link-Layer","è®¡ç®æºç½ç»ä¹ é¢çæ¡"]},{text:"软件ä½ç³»ç»æ",prefix:"软件ä½ç³»ç»æ/",collapsible:!0,children:["å¤ä¹ æçº²","Chapter0绪论","Chapter1ä»ä¹æ¯è½¯ä»¶æ¶æ","Chapter2为ä»ä¹è½¯ä»¶æ¶æéè¦","Chapter4ç解质é屿§","Chapter5å¯ç¨æ§","Chapter6äºæä½æ§","Chapter7å¯ä¿®æ¹æ§","Chapter8æ§è½","Chapter9å®å
¨æ§","Chapter10坿µè¯æ§","Chapter11æç¨æ§","Chapter12å
¶å®è´¨é屿§","Chapter13模å¼åçç¥","Chapter14è´¨é屿§å»ºæ¨¡ä¸åæ","Chapter15ææ·é¡¹ç®ä¸çæ¶æ","Chapter16æ¶æä¸éæ±","Chapter17è®¾è®¡æ¶æ","Chapter19æ¶æå®ç°ä¸æµè¯","Chpater21æ¶æè¯ä¼°"]},{text:"软件项ç®ç®¡ç",prefix:"软件项ç®ç®¡ç/",collapsible:!0,children:["第1ç« é¡¹ç®ç®¡çæ¦è¿°","第2ç« é¡¹ç®ç®¡çä¸ITç¯å¢","第3ç« é¡¹ç®ç®¡çè¿ç¨ç»","第4ç« é¡¹ç®æ´å管ç","第5ç« é¡¹ç®èå´ç®¡ç","第6ç« é¡¹ç®è¿åº¦ç®¡ç","第7ç« é¡¹ç®ææ¬ç®¡ç","第8ç« é¡¹ç®è´¨é管ç","第9ç« é¡¹ç®èµæºç®¡ç","第10ç« é¡¹ç®æ²é管ç","第11ç« é¡¹ç®é£é©ç®¡ç","第12ç« é¡¹ç®éè´ç®¡ç","第13ç« é¡¹ç®å¹²ç³»äººç®¡ç","2019_IT项ç®ç®¡ç_å¤ä¹ ç¬è®°"]}]}],"/notes/":[{text:"UML",prefix:"UML/",collapsible:!0,children:["Review-Quick-Note"]},{text:"大å¦ç©ç",prefix:"College-Physics/",collapsible:!0,icon:"lightbulb",children:["Electromagnetic-Formula",{text:"æ¨å¯¼è¿ç¨",prefix:"Formula-Derivation/",collapsible:!0,icon:"lightbulb",children:["Electrostatic-energy-of-a-solid-charged-sphere"]}]},{text:"æä½ç³»ç»",prefix:"Operating-System/",collapsible:!0,icon:"lightbulb",children:["Chapter1-Introdction","Chapter2-Processes-and-Threads","Chapter3-Memory-Management","Chapter4-File-System","Chapter5-IO","Chapter6-Deadlocks"]},{text:"æ°æ®åº",prefix:"Database/",collapsible:!0,icon:"lightbulb",children:["Chapter1-Introduction","Chapter2-Introduction-to-Relational-Model","Chapter3-Introduction-to-SQL","Chapter6-Formal-Relational-Query-Languages","Chapter7-Entity-Relationship-Model","Chapter8-Relational-Database-Design","Chapter10-Storage-and-File-Structure","Chapter11-Indexing-and-Hashing","Chapter12-Query-Processing","Chapter13-Query-Optimization","Chapter14-Transactions","Chapter15-Concurrency-Control","Chapter16-Recovery-System"]},{text:"çµå·¥å¦",prefix:"Electrical-Engineering/",collapsible:!0,icon:"littlebulb",children:["Review-Note"]},{text:"ç¼è¯åç",prefix:"Compile-Principles/",collapsible:!0,icon:"lightbulb",children:["Chapter0-Introduce","Chapter1-Compiler-composition ","Chapter2-Lexical-Analysis","Chapter3-Gramma-Analysis","Chapter4-Semantic-Analysis","Chapter5-Code-Generation"]},{text:"è®¡ç®æºç½ç»",prefix:"Computer-Network/",collapsible:!0,icon:"lightbulb",children:["Chapter1-Internet-And-Ethernet","Chapter2-Application-Layer","Chapter3-Transport-Layer","Chapter4-Net-Layer","Chapter5-Link-Layer","Computer-Network-7th-Edition-Exercises-Answers"]},{text:"软件ä½ç³»ç»æ",prefix:"软件ä½ç³»ç»æ/",collapsible:!0,children:["å¤ä¹ æçº²","Chapter0绪论","Chapter1ä»ä¹æ¯è½¯ä»¶æ¶æ","Chapter2为ä»ä¹è½¯ä»¶æ¶æéè¦","Chapter4ç解质é屿§","Chapter5å¯ç¨æ§","Chapter6äºæä½æ§","Chapter7å¯ä¿®æ¹æ§","Chapter8æ§è½","Chapter9å®å
¨æ§","Chapter10坿µè¯æ§","Chapter11æç¨æ§","Chapter12å
¶å®è´¨é屿§","Chapter13模å¼åçç¥","Chapter14è´¨é屿§å»ºæ¨¡ä¸åæ","Chapter15ææ·é¡¹ç®ä¸çæ¶æ","Chapter16æ¶æä¸éæ±","Chapter17è®¾è®¡æ¶æ","Chapter19æ¶æå®ç°ä¸æµè¯","Chpater21æ¶æè¯ä¼°"]},{text:"软件æµè¯ä¸ç»´æ¤",prefix:"Software-Testing-and-Maintenance/",collapsible:!0,icon:"lightbulb",children:["Chapter1-Basic-Concepts-of-Software-Testing","Chapter2-Software-Testing-Technology","Chapter3-Software-Testing-Process","Chapter4-Software-Testing-Management","Chapter5-Software-Maintenance"]},{text:"软件项ç®ç®¡ç",prefix:"Software-Project-Management/",collapsible:!0,icon:"lightbulb",children:["Chapter1-Indroduction","Chapter2-Project-Management-and-IT-Environment","Chapter3-Project-Management-Process-group","Chapter4-Project-Integration-Management","Chapter5-Project-Scope-Management","Chapter6-Project-Schedule-Management","Chapter7-Project-Cost-Management","Chapter8-Project-Quality-Management","Chapter9-Project-Resource-Management","Chapter10-Project-Communication-Management","Chapter11-Project-Risk-Management","Chapter12-Project-Precurement-Management","Chapter13-Project-Stakeholder-Management","2019-Review-Notes"]}],"/en/posts/":[]},up=Symbol(""),ji=()=>{const e=ve(up);if(!e)throw new Error("useDarkMode() is called without provider.");return e},jg=e=>{const t=m1(),n=On(),i=b(()=>n.value.darkmode??"switch"),l=Ni("vuepress-theme-hope-scheme","auto"),a=b(()=>{const o=i.value;return o==="disable"?!1:o==="enable"?!0:o==="auto"?t.value:o==="toggle"?l.value==="dark":l.value==="dark"||l.value==="auto"&&t.value}),r=b(()=>{const o=i.value;return o==="switch"||o==="toggle"});e.provide(up,{canToggle:r,config:i,isDarkMode:a,status:l}),Object.defineProperties(e.config.globalProperties,{$isDarkMode:{get:()=>a.value}})},Hg=()=>{const{config:e,isDarkMode:t,status:n}=ji();or(()=>{e.value==="disable"?n.value="light":e.value==="enable"?n.value="dark":e.value==="toggle"&&n.value==="auto"&&(n.value="light")}),fe("beforeprint",()=>{t.value&&document.documentElement.setAttribute("data-theme","light")}),fe("afterprint",()=>{t.value&&document.documentElement.setAttribute("data-theme","dark")}),ye(()=>{wt(t,i=>
2946{document.documentElement.setAttribute("data-theme",i?"dark":"light")})})},Ia=e=>!Ii(e)&&!dr(e),Al=(e,t=!1,n)=>{const{meta:i,path:l,notFound:a}=At(e,n);return a?{text:l,link:l}:{text:!t&&i.shortTitle?i.shortTitle:i.title||l,link:l,icon:i.icon}},bn=(e="",t="")=>Ii(t)||Rl(t)?t:`${Uc(e)}${t}`,pp=(e,t)=>{const n=me(e)?Al(bn(t,e)):me(e.link)?{...e,link:Ia(e.link)?At(bn(t,e.link)).path:e.link}:e;if("children"in n){const i=bn(t,n.prefix),l=n.children==="structure"?xr[i]:n.children;return{...n,prefix:i,children:l.map(a=>pp(a,i))}}return{...n}},Ma=({config:e,prefix:t=""})=>e.map(n=>pp(n,t)),zg=({config:e,routePath:t})=>{const n=Gt(e).sort((i,l)=>l.length-i.length);for(const i of n)if(vl(decodeURI(t),i)){const l=e[i];return Ma({config:l==="structure"?xr[i]:l||[],prefix:i})}return console.warn(`${decodeURI(t)} is missing it's sidebar config.`),[]},Ug=({config:e,routeLocale:t,routePath:n})=>e==="structure"?Ma({config:xr[t],prefix:t}):Wt(e)?Ma({config:e}):ai(e)?zg({config:e,routePath:n}):[],dp=Symbol(""),Wg=()=>{const{frontmatter:e,routeLocale:t,routePath:n,themeLocale:i}=Pe(),l=b(()=>e.value.home?!1:e.value.sidebar??i.value.sidebar??"structure"),a=b(()=>Ug({config:l.value,routeLocale:t.value,routePath:n.value}));Ct(dp,a)},Fr=()=>{const e=ve(dp);if(!e)throw new Error("useSidebarItems() is called without provider.");return e};var Gg=I({name:"PageFooter",setup(){const{frontmatter:e,theme:t,themeLocale:n}=Pe(),i=tp(),l=b(()=>{const{copyright:d,footer:u}=e.value;return u!==!1&&!!(d||u||n.value.displayFooter)}),a=b(()=>{const{footer:d}=e.value;return me(d)?d:n.value.footer??""}),r=b(()=>i.value.map(({name:d})=>d).join(", ")),o=d=>`Copyright © ${new Date().getFullYear()} ${r.value} ${d?`${d} Licensed`:""}`,c=b(()=>{const{copyright:d,license:u=""}=e.value,{license:p}=t.value,{copyright:h}=n.value;return d??(u?o(u):h??(r.value||p?o(p):!1))});return()=>l.value?s("footer",{class:"vp-footer-wrapper","vp-footer":""},[a.value?s("div",{class:"vp-footer",innerHTML:a.value}):null,c.value?s("div",{class:"vp-copyright",innerHTML:c.value}):null]):null}});const hp=()=>s(Ae,{name:"outlook"},()=>[s("path",{d:"M224 800c0 9.6 3.2 44.8 6.4 54.4 6.4 48-48 76.8-48 76.8s80 41.6 147.2 0 134.4-134.4 38.4-195.2c-22.4-12.8-41.6-19.2-57.6-19.2C259.2 716.8 227.2 761.6 224 800zM560 675.2l-32 51.2c-51.2 51.2-83.2 32-83.2 32 25.6 67.2 0 112-12.8 128 25.6 6.4 51.2 9.6 80 9.6 54.4 0 102.4-9.6 150.4-32l0 0c3.2 0 3.2-3.2 3.2-3.2 22.4-16 12.8-35.2 6.4-44.8-9.6-12.8-12.8-25.6-12.8-41.6 0-54.4 60.8-99.2 137.6-99.2 6.4 0 12.8 0 22.4 0 12.8 0 38.4 9.6 48-25.6 0-3.2 0-3.2 3.2-6.4 0-3.2 3.2-6.4 3.2-6.4 6.4-16 6.4-16 6.4-19.2 9.6-35.2 16-73.6 16-115.2 0-105.6-41.6-198.4-108.8-268.8C704 396.8 560 675.2 560 675.2zM224 419.2c0-28.8 22.4-51.2 51.2-51.2 28.8 0 51.2 22.4 51.2 51.2 0 28.8-22.4 51.2-51.2 51.2C246.4 470.4 224 448 224 419.2zM320 284.8c0-22.4 19.2-41.6 41.6-41.6 22.4 0 41.6 19.2 41.6 41.6 0 22.4-19.2 41.6-41.6 41.6C339.2 326.4 320 307.2 320 284.8zM457.6 208c0-12.8 12.8-25.6 25.6-25.6 12.8 0 25.6 12.8 25.6 25.6 0 12.8-12.8 25.6-25.6 25.6C470.4 233.6 457.6 220.8 457.6 208zM128 505.6C128 592 153.6 672 201.6 736c28.8-60.8 112-60.8 124.8-60.8-16-51.2 16-99.2 16-99.2l316.8-422.4c-48-19.2-99.2-32-150.4-32C297.6 118.4 128 291.2 128 505.6zM764.8 86.4c-22.4 19.2-390.4 518.4-390.4 518.4-22.4 28.8-12.8 76.8 22.4 99.2l9.6 6.4c35.2 22.4 80 12.8 99.2-25.6 0 0 6.4-12.8 9.6-19.2 54.4-105.6 275.2-524.8 288-553.6 6.4-19.2-3.2-32-19.2-32C777.6 76.8 771.2 80 764.8 86.4z"})]);hp.displayName="AppearanceIcon";const Ep=()=>s(Ae,{name:"auto"},()=>s("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"}));Ep.displayName="AutoColorModeIcon";const fp=()=>s(Ae,{name:"light"},()=>s("path",{d:"M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58
2946-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"}));fp.displayName="LightColorModeIcon";const gp=()=>s(Ae,{name:"dark"},()=>s("path",{d:"M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"}));gp.displayName="DarkColorModeIcon";var mp=I({name:"ColorModeSwitch",setup(){const{config:e,isDarkMode:t,status:n}=ji(),i=tt(),l=()=>{e.value==="switch"?n.value={light:"dark",dark:"auto",auto:"light"}[n.value]:n.value=n.value==="light"?"dark":"light"},a=async r=>{if(!(document.startViewTransition&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches&&!i.value)){l();return}const o=r.clientX,c=r.clientY,d=Math.hypot(Math.max(o,innerWidth-o),Math.max(c,innerHeight-c)),u=t.value;await document.startViewTransition(async()=>{l(),await fn()}).ready,t.value!==u&&document.documentElement.animate({clipPath:t.value?[`circle(${d}px at ${o}px ${c}px)`,`circle(0px at ${o}px ${c}px)`]:[`circle(0px at ${o}px ${c}px)`,`circle(${d}px at ${o}px ${c}px)`]},{duration:400,pseudoElement:t.value?"::view-transition-old(root)":"::view-transition-new(root)"})};return()=>s("button",{type:"button",class:"vp-color-mode-switch",id:"color-mode-switch",onClick:a},[s(Ep,{style:{display:n.value==="auto"?"block":"none"}}),s(gp,{style:{display:n.value==="dark"?"block":"none"}}),s(fp,{style:{display:n.value==="light"?"block":"none"}})])}});const vp=()=>{const e=Pt();return b(()=>e.value.outlookLocales)};var qg=I({name:"ColorMode",setup(){const e=vp(),{canToggle:t}=ji();return()=>t.value?s("div",{class:"vp-color-mode"},[s("label",{class:"vp-color-mode-title",for:"color-mode-switch"},e.value.darkmode),s(mp)]):null}});const Ap=()=>s(Ae,{name:"cancel-fullscreen"},()=>s("path",{d:"M778.468 78.62H247.922c-102.514 0-186.027 83.513-186.027 186.027V795.08c0 102.514 83.513 186.027 186.027 186.027h530.432c102.514 0 186.71-83.513 186.026-186.027V264.647C964.494 162.02 880.981 78.62 778.468 78.62zM250.88 574.35h171.122c23.324 0 43.122 19.115 43.804 43.805v171.121c0 24.008-19.114 43.122-43.122 43.122-12.06 0-22.641-5.006-30.378-12.743s-12.743-19.115-12.743-30.379V722.83L224.597 877.91c-16.953 16.952-44.6 16.952-61.553 0-16.953-16.954-16.953-44.602 0-61.554L318.009 661.39h-66.446c-24.007 0-43.122-19.114-43.122-43.122 0-24.12 18.432-43.918 42.439-43.918zm521.899-98.873H601.657c-23.325 0-43.122-19.114-43.805-43.804V260.55c0-24.007 19.115-43.122 43.122-43.122 12.06 0 22.642 5.007 30.379 12.743s12.743 19.115 12.743 30.38v66.445l154.965-154.965c16.953-16.953 44.601-16.953 61.554 0 16.953 16.953 16.953 44.6 0 61.554L705.536 388.55h66.446c24.007 0 43.122 19.115 43.122 43.122.114 24.007-18.318 43.804-42.325 43.804z"}));Ap.displayName="CancelFullScreenIcon";const Bp=()=>s(Ae,{name:"enter-fullscreen"},()=>s("path",{d:"M762.773 90.24h-497.28c-96.106 0-174.4 78.293-174.4 174.4v497.28c0 96.107 78.294 174.4 174.4 174.4h497.28c96.107 0 175.04-78.293 174.4-174.4V264.64c0-96.213-78.186-174.4-174.4-174.4zm-387.2 761.173H215.04c-21.867 0-40.427-17.92-41.067-41.066V649.92c0-22.507 17.92-40.427 40.427-40.427 11.307 0 21.227 4.694 28.48 11.947 7.253 7.253 11.947 17.92 11.947 28.48v62.293l145.28-145.28c15.893-15.893 41.813-15.893 57.706 0 15.894 15.894 15.894 41.814 0 57.707l-145.28 145.28h62.294c22.506 0 40.426 17.92 40.426 40.427s-17.173 41.066-39.68 41.066zM650.24 165.76h160.427c21.866 0 40.426 17.92 41.066 41.067v160.426c0 22.507-17.92 40.427-40.426 40.427-11.307 0-21.227-4.693-28.48-11.947-7.254-7.253-11.947-17.92-11.947-28.48v-62.186L625.6 450.347c-15.893 15.893-41.813 15.893-57.707 0-15.893-15.894-15.893-41.814 0-57.707l145.28-145.28H650.88c-22.507 0-40.427-17.92-40.427-40.427s17.174-41.173 39.787-41.173z"}));Bp.displayName="EnterFullScreenIcon";var yp=I({name:"ToggleFullScreenButton",setup(){const{isSupported:e,isFullscreen:t,toggle:n}=Ll();return()=>e.value?s("button",{type:"button",id:"full-screen-switch",class:"full-screen",ariaPressed:t.value,onClick:()=>n()},t.value?s(Ap):s(Bp)):null}}),Kg=I({name:"ToggleFullScreenButton",setup(){const e=vp(),{isSupported:t}=Ll();return()=>t.value?s("div",{class:"full-screen-wrapper"},[s("label",{class:"full-screen-title",for:"full-screen-switch"},e.value.fullscreen),s(yp)]):null}}),_p=I({name:"AppearanceSettings",setup(){const e=On(),t=tt(),n=b(()=>!t.value&&e.value.fullscreen);return()=>s(vr,()=>[null,s(qg),n.value?s(Kg):null])}}),Qg=I({name:"AppearanceButton",setup(){const e=On(),{canToggle:t}=ji(),{isSupported:n}=Ll(),i=tt(),l=se(!1),a=b(()=>!i.value&&e.value.fullscreen&&n),r=b(()=>t.value||a.value);return Jt(()=>{l.value=!1}),()=>r.value?s("div",{class:"vp-nav-item hide-in-mobile"},t.value&&!a.value?s(mp):a.value&&!t.value?s(yp):s("button",{type:"button",class:["vp-appearance-button",{open:l.value}],tabindex:"-1","aria-hidden":!0},[s(hp),s("div",{class:"vp-appearance-dropdown"},s(_p))])):null}});const bp=()=>s(Ae,{name:"i18n"},()=>[s("path",{d:"M379.392 460.8 494.08 575.488l-42.496 102.4L307.2 532.48 138.24 701.44l-71.68-72.704L234.496 460.8l-45.056-45.056c-27.136-27.136-51.2-66.56-66.56-108.544h112.64c7.68 14.336 16.896 27.136 26.112 35.84l45.568 46.08 45.056-45.056C382.976 312.32 409.6 247.808 409.6 204.8H0V102.4h256V0h102.4v102.4h256v102.4H512c0 70.144-37.888 161.28-87.04 210.944L378.88 460.8zM576 870.4 512 1024H409.6l256-614.4H768l256 614.4H921.6l-64-153.6H576zM618.496 768h196.608L716.8 532.48 618.496 768z"})]);bp.displayName="I18nIcon";const Ye=({config:e,iconSizing:t="both"},{emit:n,slots:i})=>{const{icon:l}=e;return s(pf,{config:e,onFocusout:()=>{n("focusout")}},{...i,before:i.before??(l?()=>s(xe("VPIcon"),{icon:l,sizing:t}):null)})};Ye.displayName="AutoLink";var kp=I({name:"NavbarDropdown",props:{config:{type:Object,required:!0}},slots:Object,setup(e,{slots:t}){const n=ii(e,"config"),i=b(()=>n.value.ariaLabel??n.value.text),l=se(!1),a=r=>{r.detail===0&&(l.value=!l.value)};return Jt(()=>{l.value=!1}),()=>s("div",{class:["vp-dropdown-wrapper",{open:l.value}]},[s("button",{type:"button",class:"vp-dropdown-title","aria-label":i.value,onClick:a},[t.title?.()??[s(xe("VPIcon"),{icon:n.value.icon}),e.config.text],s("span",{class:"arrow"}),s("ul",{class:"vp-dropdown"},n.value.children.map((r,o)=>{const c=o===n.value.children.length-1;return s("li",{class:"vp-dropdown-item"},"children"in r?[s("h4",{class:"vp-dropdown-subtitle"},r.link?s(Ye,{config:r,onFocusout:()=>
2946{r.children.length===0&&c&&(l.value=!1)}}):r.text),s("ul",{class:"vp-dropdown-subitems"},r.children.map((d,u)=>s("li",{class:"vp-dropdown-subitem"},s(Ye,{config:d,onFocusout:()=>{u===r.children.length-1&&c&&(l.value=!1)}}))))]:s(Ye,{config:r,onFocusout:()=>{c&&(l.value=!1)}}))}))])])}});const Yg=()=>{const{routeLocale:e,site:t,siteLocale:n,theme:i,themeLocale:l}=Pe(),a=F1(),r=xt(),o=se(!1);return ye(()=>{o.value=!0}),b(()=>{const c=Gt(t.value.locales),d=Rn(i.value.extraLocales??{});if(c.length<2&&!d.length)return null;const{path:u,fullPath:p}=r,{navbarLocales:h}=l.value;return{text:"",ariaLabel:h.selectLangAriaLabel,children:[...c.map(E=>{const v=t.value.locales[E]??{},B=i.value.locales[E]??{},k=v.lang,D=B.navbarLocales.langName;let y;if(k===n.value.lang)y=p;else{const m=u.replace(e.value,E);y=a.value.some(_=>_===m)?o.value?p.replace(u,m):m:B.home??E}return{text:D,link:y}}),...d.map(([E,v])=>({text:E,link:v.replace(":route",(o.value?p:v).replace(e.value,""))}))]}})};var Jg=I({name:"LanguageDropdown",setup(){const e=Yg();return()=>e.value?s("div",{class:"vp-nav-item"},s(kp,{config:e.value},{title:()=>
2946s(bp,{"aria-label":e.value?.ariaLabel,style:{width:"1rem",height:"1rem",verticalAlign:"middle"}})})):null}}),Xg=I({name:"NavScreenMenu",props:{config:{type:Object,required:!0}},setup(e){const t=ii(e,"config"),n=xt(),i=b(()=>t.value.ariaLabel??t.value.text),l=se(!1),a=(r,o)=>o[o.length-1]===r;return Jt(()=>{l.value=!1}),we(()=>n.fullPath,()=>{l.value=!1}),()=>[s("button",{type:"button",class:["vp-nav-screen-menu-title",{active:l.value}],"aria-label":i.value,onClick:()=>{l.value=!l.value}},[s("span",{class:"text"},[s(xe("VPIcon"),{icon:t.value.icon,sizing:"both"}),e.config.text]),s("span",{class:["arrow",l.value?"down":"end"]})]),s("ul",{class:["vp-nav-screen-menu",{hide:!l.value}]},t.value.children.map(r=>s("li",{class:"vp-nav-screen-menu-item"},"children"in r?[s("h4",{class:"vp-nav-screen-menu-subtitle"},r.link?s(Ye,{config:r,onFocusout:()=>{a(r,t.value.children)&&r.children.length===0&&(l.value=!1)}}):r.text),s("ul",{class:"vp-nav-screen-menu-subitems"},r.children.map(o=>s("li",{class:"vp-nav-screen-menu-subitem"},s(Ye,{config:o,onFocusout:()=>{a(o,r.children)&&a(r,t.value.children)&&(l.value=!1)}}))))]:s(Ye,{config:r,onFocusout:()=>{a(r,t.value.children)&&(l.value=!1)}}))))]}});const Cp=(e,t="")=>me(e)?Al(bn(t,e)):"children"in e?{...e,...e.link&&Ia(e.link)?{link:At(bn(t,e.link)).path}:{},children:e.children.map(n=>Cp(n,bn(t,e.prefix)))}:{...e,link:Ia(e.link)?At(bn(t,e.link)).path:e.link},Dp=()=>{const e=Pt();return b(()=>(e.value.navbar||[]).map(t=>Cp(t)))};var Zg=I({name:"NavScreenLinks",setup(){const e=Dp();return()=>e.value.length?s("nav",{class:"nav-screen-links"},e.value.map(t=>s("div",{class:"navbar-links-item"},"children"in t?s(Xg,{config:t}):s(Ye,{config:t})))):null}});const{mobileBreakPoint:em,pcBreakPoint:tm}=ci,vo=e=>e.endsWith("px")?Number(e.slice(0,-2)):null,Ol=()=>{const e=se(!1),t=se(!1),n=()=>{e.value=window.innerWidth<=(vo(em)??719),t.value=window.innerWidth>=(vo(tm)??1440)};return fe("resize",n,!1),fe("orientationchange",n,!1),ye(()=>{n()}),{isMobile:e,isPC:t}};var nm=I({name:"NavScreen",props:{show:Boolean},slots:Object,setup(e,{slots:t}){const{isMobile:n}=Ol(),i=ae(),l=Tr(i);return Jt(()=>{l.value=!1}),we(n,a=>{!a&&e.show&&(l.value=!1)}),ye(()=>{i.value=document.body}),Sn(()=>{l.value=!1}),()=>s(ei,{name:"fade-in-down",onEnter:()=>{l.value=!0},onAfterLeave:()=>{l.value=!1}},()=>e.show?s("div",{id:"nav-screen",class:"vp-nav-screen"},s("div",{class:"vp-nav-screen-container"},[t.navScreenTop?.(),s(Zg),s("div",{class:"vp-appearance-wrapper"},s(_p)),t.navScreenBottom?.()])):null)}}),im=I({name:"NavbarBrand",setup(){const{routeLocale:e,siteLocale:t,themeLocale:n}=Pe(),i=b(()=>n.value.home??e.value),l=b(()=>t.value.title),a=b(()=>n.value.navbarTitle??l.value),r=b(()=>n.value.logo?Ce(n.value.logo):null),o=b(()=>n.value.logoDark?Ce(n.value.logoDark):null);return()=>s(Ve,{to:i.value,class:"vp-brand","aria-label":n.value.routerLocales.home},()=>[r.value?s("img",{class:["vp-nav-logo",{light:!!o.value}],src:r.value,alt:""}):null,o.value?s("img",{class:["vp-nav-logo dark"],src:o.value,alt:""}):null,a.value?s("span",{class:["vp-site-name",{"hide-in-pad":r.value&&(n.value.hideSiteNameOnMobile??!0)}]},a.value):null])}}),lm=I({name:"NavbarLinks",setup(){const e=Dp();return()=>e.value.length?s("nav",{class:"vp-nav-links"},e.value.map(t=>s("div",{class:"vp-nav-item hide-in-mobile"},"children"in t?s(kp,{config:t}):s(Ye,{config:t,iconSizing:"height"})))):null}});const am=()=>{const e=Pt(),t=b(()=>e.value.repo),n=b(()=>t.value?_g(t.value):null),i=b(()=>t.value?wr(t.value):null),l=b(()=>n.value?e.value.repoLabel??i.value??"Source":null);return b(()=>!n.value||!l.value||e.value.repoDisplay===!1?null:{type:i.value??"Source",label:l.value,link:n.value})};var rm=I({name:"RepoLink",setup(){const e=am();return()=>e.value?s("div",{class:"vp-nav-item vp-action"},s("a",{class:"vp-action-link",href:e.value.link,target:"_blank",rel:"noopener noreferrer","aria-label":e.value.label},s(bg,{type:e.value.type,style:{width:"1.25rem",height:"1.25rem",verticalAlign:"middle"}}))):null}});const Tp=({active:e=!1},{emit:t})=>s("button",{type:"button",class:["vp-toggle-navbar-button",{"is-active":e}],"aria-label":"Toggle Navbar","aria-expanded":e,"aria-controls":"nav-screen",onClick:()=>{t("toggle")}},s("span",[s("span",{class:"vp-top"}),s("span",{class:"vp-middle"}),s("span",{class:"vp-bottom"})]));Tp.displayName="ToggleNavbarButton";const Va=(e,{emit:t})=>s("button",{type:"button",class:"vp-toggle-sidebar-button",title:"Toggle Sidebar",onClick:()=>{t("toggle")}},s("span",{class:"icon"}));Va.displayName="ToggleSidebarButton",Va.emits=["toggle"];var sm=I({name:"NavBar",emits:["toggleSidebar"],slots:Object,setup(e,{emit:t,slots:n}){const i=Pt(),{isMobile:l}=Ol(),a=se(!1),r=b(()=>{const{navbarAutoHide:u="mobile"}=i.value;return u!=="none"&&(u==="always"||l.value)}),o=b(()=>i.value.navbarLayout??{start:["Brand"],center:["Links"],end:["Language","Repo","Outlook","Search"]}),c={Brand:im,Language:Jg,Links:lm,Repo:rm,Outlook:Qg,Search:ht("SearchBox")?xe("SearchBox"):Oa},d=u=>c[u]??(ht(u)?xe(u):Oa);return Jt(()=>{a.value=!1}),we(l,u=>{u||(a.value=!1)}),()=>[s("header",{key:"navbar",id:"navbar",class:["vp-navbar",{"auto-hide":r.value}],"vp-navbar":""},[s("div",{class:"vp-navbar-start"},[s(Va,{onToggle:()=>
2946{a.value&&(a.value=!1),t("toggleSidebar")}}),o.value.start?.map(u=>s(d(u)))]),s("div",{class:"vp-navbar-center"},[o.value.center?.map(u=>s(d(u)))]),s("div",{class:"vp-navbar-end"},[o.value.end?.map(u=>s(d(u))),s(Tp,{active:a.value,onToggle:()=>{a.value=!a.value}})])]),s(nm,{show:a.value},n)]}});const Sr=(e,t)=>t.activeMatch?new RegExp(t.activeMatch,"u").test(e.path):Yu(e,t.link);var om=I({name:"SidebarChild",props:{config:{type:Object,required:!0}},setup(e){const t=xt();return()=>me(e.config.link)?s(Ye,{class:["vp-sidebar-link",{active:Sr(t,e.config)}],config:{...e.config,exact:!0}}):s("p",e,[s(xe("VPIcon"),{icon:e.config.icon,sizing:"both"}),e.config.text])}});const Pr=(e,t)=>"children"in t?!!t.prefix&&Yu(e,t.prefix)||t.children.some(n=>Pr(e,n)):Sr(e,t);var cm=I({name:"SidebarGroup",props:{config:{type:Object,required:!0},open:{type:Boolean,required:!0}},emits:["toggle"],setup(e,{emit:t}){const n=xt(),i=se(!1),l=b(()=>Pr(n,e.config)),a=b(()=>Sr(n,e.config)),r=b(()=>e.open||e.config.expanded&&!i.value);return()=>{const{collapsible:o,children:c=[],icon:d,prefix:u,link:p,text:h}=e.config;return s("section",{class:"vp-sidebar-group"},[s(o?"button":"p",{class:["vp-sidebar-header",{clickable:o||p,exact:a.value,active:l.value}],...o?{type:"button",onClick:()=>{i.value=!0,t("toggle")}}:{}},[s(xe("VPIcon"),{icon:d,sizing:"both"}),p?s(Ye,{class:"vp-sidebar-title no-external-link-icon",config:{text:h,link:p}}):s("span",{class:"vp-sidebar-title"},h),o?s("span",{class:["vp-arrow",r.value?"down":"end"]}):null]),r.value||!o?s(wp,{key:u,config:c}):null])}}}),wp=I({name:"SidebarLinks",props:{config:{type:Array,required:!0}},setup(e){const t=xt(),n=af(),i=se(-1),l=a=>{i.value=a===i.value?-1:a};return wt(n,()=>{const a=e.config.findIndex(r=>Pr(t,r));i.value=a},{flush:"post"}),()=>s("ul",{class:"vp-sidebar-links"},e.config.map((a,r)=>s("li","children"in a?s(cm,{config:a,open:r===i.value,onToggle:()=>{l(r)}}):s(om,{config:a}))))}}),um=I({name:"SideBar",slots:Object,setup(e,{slots:t}){const n=xt(),i=Fr(),l=ae();return ye(()=>{wt(()=>n.hash,a=>{const r=document.querySelector(`.vp-sidebar a.vp-sidebar-link[href="${n.path}${a}"]`);if(!r)return;const{top:o,height:c}=l.value.getBoundingClientRect(),{top:d,height:u}=r.getBoundingClientRect();d<o?r.scrollIntoView(!0):d+u>o+c&&r.scrollIntoView(!1)})}),()=>s("aside",{ref:l,key:"sidebar",id:"sidebar",class:"vp-sidebar","vp-sidebar":""},[t.sidebarTop?.(),t.sidebarItems?.(i.value)??s(wp,{config:i.value}),t.sidebarBottom?.()])}}),Rr=I({name:"MainLayout",props:{containerClass:String,noNavbar:Boolean,noSidebar:Boolean,noToc:Boolean},slots:Object,setup(e,{slots:t}){const{frontmatter:n,theme:i,themeLocale:l}=Pe(),{isMobile:a,isPC:r}=Ol(),o=tt(),[c,d]=Ra(!1),[u,p]=Ra(!1),h=Fr(),E=ae(),v=Tr(E),B=se(!1),k=b(()=>e.noNavbar||n.value.navbar===!1||l.value.navbar===!1?!1:!!(l.value.logo??l.value.repo??l.value.navbar)),D=b(()=>n.value.externalLinkIcon??i.value.externalLinkIcon??!0),y=b(()=>!e.noToc&&!n.value.home&&!!(n.value.toc??l.value.toc??!0)),m={x:0,y:0},_=M=>{m.x=M.changedTouches[0].clientX,m.y=M.changedTouches[0].clientY},P=M=>{const z=M.changedTouches[0].clientX-m.x,T=M.changedTouches[0].clientY-m.y;Math.abs(z)>Math.abs(T)*1.5&&Math.abs(z)>40&&(z>0&&m.x<=80?d(!0):d(!1))};let H=0;return fe("scroll",ku(()=>{const M=window.scrollY;M<=58||M<H?B.value=!1:H+200<M&&!c.value&&(B.value=!0),H=M},300,!0)),we(a,M=>{M||d(!1)}),we(c,M=>{v.value=M}),Jt(()=>{d(!1)}),ye(()=>{E.value=document.body}),Sn(()=>{v.value=!1}),()=>{const M=t.sidebarTop?.(),z=t.sidebarItems?.(h.value),T=t.sidebarBottom?.(),R=Jn(M)&&Jn(z)&&Jn(T),j=e.noSidebar||n.value.sidebar===!1||(n.value.home||h.value.length===0)&&R;return s(ht("GlobalEncrypt")?xe("GlobalEncrypt"):yr,()=>s("div",{class:["theme-container",{"hide-navbar":B.value,"no-navbar":!k.value,"sidebar-collapsed":!a.value&&!r.value&&u.value,"sidebar-open":a.value&&c.value,"no-sidebar":j,"external-link-icon":D.value,pure:o.value,"has-toc":y.value},e.containerClass??"",n.value.containerClass??""],"vp-container":"",onTouchStart:_,onTouchEnd:P},[k.value?s(sm,{onToggleSidebar:()=>d()},t):null,s(ei,{name:"fade-in"},()=>c.value?s("div",{class:"vp-sidebar-mask",onClick:()=>d(!1)}):null),s(ei,{name:"fade-in"},()=>a.value?null:s("div",{class:"toggle-sidebar-wrapper",onClick:()=>p()},s("span",{class:["arrow",u.value?"end":"start"]}))),j?null:s(um,null,t),t.default(),s(Gg)]))}}});const xp=()=>{const{frontmatter:e,themeLocale:t}=Pe(),n=b(()=>e.value.changelog??((t.value.changelog??!1)&&!e.value.home)),i=b(()=>{const{contributors:a,home:r}=e.value;return Wt(a)?r?!1:t.value.contributors??!0:a??(r?!1:t.value.contributors??!0)}),l=b(()=>e.value.lastUpdated??t.value.lastUpdated??!0);
2946return{changelog:n,contributors:i,lastUpdated:l}};var Il=I({name:"MarkdownContent",props:{custom:Boolean},slots:Object,setup(e,{slots:t}){const n=On(),{changelog:i,contributors:l}=xp(),a=se(),r=y1(a,{delayEnter:sl(n.value.focus)?n.value.focus:1500,delayLeave:0}),o=b(()=>!!(n.value.focus??n.value.pure)&&r.value);return ye(()=>{const c=document.documentElement;wt(o,d=>{d?c.classList.add("is-focusing"):c.classList.remove("is-focusing")})}),()=>s("div",{class:{custom:e.custom},"vp-content":""},[t.contentBefore?.(),s(ru,{ref:a,id:"markdown-content"}),t.contentAfter?.(),i.value&&ht("GitChangelog")?s(xe("GitChangelog")):null,l.value==="content"&&ht("GitContributors")?s(xe("GitContributors")):null])}}),Lr=I({name:"SkipLink",props:{content:{type:String,default:"main-content"}},setup(e){const t=Pt(),n=ae(),i=({target:l})=>{const a=document.querySelector(l.hash);if(a){const r=()=>{a.removeAttribute("tabindex"),a.removeEventListener("blur",r)};a.setAttribute("tabindex","-1"),a.addEventListener("blur",r),a.focus(),window.scrollTo(0,0)}};return Jt(()=>{n.value?.focus()}),()=>[s("span",{ref:n,tabindex:"-1"}),s("a",{href:`#${e.content}`,class:"vp-skip-link sr-only",onClick:i},t.value.routerLocales.skipToContent)]}});const Na=()=>s(Ae,{name:"slide-down"},()=>s("path",{d:"M108.775 312.23c13.553 0 27.106 3.734 39.153 11.806l375.205 250.338 363.641-252.808c32.587-21.624 76.499-12.83 98.123 19.757 21.685 32.467 12.95 76.56-19.576 98.184l-402.854 278.89c-23.733 15.901-54.694 15.962-78.547.12L69.501 442.097c-32.647-21.685-41.441-65.777-19.817-98.304 13.734-20.54 36.201-31.563 59.09-31.563Z"}));Na.displayName="SlideDownIcon";const Or=(e,{emit:t})=>s("button",{type:"button",class:"vp-hero-slide-down-button",onClick:()=>t("click")},[s(Na),s(Na)]);Or.displayName="HeroSlideDownButton";var oe=I({name:"DropTransition",props:{delay:{type:Number,default:0},duration:{type:Number,default:.25},group:Boolean,appear:Boolean},slots:Object,setup(e,{slots:t}){const n=l=>{l.style.transition=`transform ${e.duration}s ease-in-out ${e.delay}s, opacity ${e.duration}s ease-in-out ${e.delay}s`,l.style.transform="translateY(-20px)",l.style.opacity="0"},i=l=>{l.style.transform="translateY(0)",l.style.opacity="1"};return()=>{const l={name:"drop",appear:e.appear,onAppear:n,onAfterAppear:i,onEnter:n,onAfterEnter:i,onBeforeLeave:n};return e.group?s(Hc,l,t.default):s(ei,l,t.default)}}});let da=null,ha=null;const $a={wait:()=>da,pending:()=>{da=new Promise(e=>{ha=e})},resolve:()=>{ha?.(),da=null,ha=null}};var pm=I({name:"MainFadeInUpTransition",slots:Object,setup(e,{slots:t}){const n=tt();return()=>n.value?s(yr,t.default):s(ei,{name:"fade-in-up",mode:"out-in",onBeforeEnter:$a.resolve,onBeforeLeave:$a.pending},t.default)}}),dm=I({name:"PageTitle",setup(){const{frontmatter:e,page:t,themeLocale:n}=Pe(),{info:i,items:l}=Pg();return()=>s("div",{class:"vp-page-title"},[s("h1",[n.value.titleIcon===!1?null:s(xe("VPIcon"),{icon:e.value.icon}),t.value.title]),s(cp,{info:i.value,items:l.value}),s("hr")])}});const hm=(e,t)=>{const n=e.replace(t,"/").split("/"),i=[];let l=hr(t);return n.forEach((a,r)=>{r!==n.length-1?(l+=`${a}/`,i.push({link:l,name:a||"Home"})):a!==""&&(l+=a,i.push({link:l,name:a}))}),i};var Em=I({name:"BreadCrumb",setup(){const{frontmatter:e,page:t,routeLocale:n,routePath:i,themeLocale:l}=Pe(),a=ae([]),r=b(()=>(e.value.breadcrumb??l.value.breadcrumb??!0)&&a.value.length>1),o=b(()=>e.value.breadcrumbIcon??l.value.breadcrumbIcon??!0),c=()=>{const d=hm(t.value.path,n.value).map(({link:u,name:p})=>{const{path:h,meta:E,notFound:v}=At(u);return v||E.breadcrumbExclude?null:{title:E.shortTitle||E.title||p,icon:E.icon,path:h}}).filter(u=>u!==null);d.length>1&&(a.value=d)};return ye(()=>{wt(i,c)}),()=>s("nav",{class:["vp-breadcrumb",{disable:!r.value}]},r.value?s("ol",{vocab:"https://schema.org/",typeof:"BreadcrumbList"},a.value.map((d,u)=>s("li",{class:{"is-active":a.value.length-1===u},property:"itemListElement",typeof:"ListItem"},[s(Ve,{to:d.path,property:"item",typeof:"WebPage"},()=>[o.value?s(xe("VPIcon"),{icon:d.icon}):null,s("span",{property:"name"},d.title||"Unknown")]),s("meta",{property:"position",content:u+1})]))):[])}});const Ao=(e,t)=>e===!1?e:ai(e)?{...e,link:Al(e.link,!0,t).link}:me(e)?Al(e,!0,t):null,ja=(e,t,n)=>{const i=e.findIndex(a=>a.link===t);if(i!==-1){if(!e[i+n])return null;const a=e[i+n];return a.link?a:"prefix"in a&&!At(a.prefix).notFound?{...a,link:a.prefix}:null}for(const a of e)if("children"in a){const r=ja(a.children,t,n);if(r)return r}const l=e.findIndex(a=>"prefix"in a&&a.prefix===t);if(l!==-1){if(!e[l+n])return null;const a=e[l+n];return a.link?a:"prefix"in a&&!At(a.prefix).notFound?{...a,link:a.prefix}:null}return null},fm=()=>{const{frontmatter:e,routePath:t,themeLocale:n}=Pe(),i=Fr(),l=b(()=>{const r=Ao(e.value.prev,t.value);return r===!1?null:r??(n.value.prevLink===!1?null:ja(i.value,t.value,-1))}),a=b(()=>{const r=Ao(e.value.next,t.value);return r===!1?null:r??(n.value.nextLink===!1?null:ja(i.value,t.value,1))});return{prevLink:l,nextLink:a}};var gm=I({name:"PageNav",setup(){const e=Bt(),t=Xt(),{prevLink:n,nextLink:i}=fm();return fe("keydown",l=>
2946{l.altKey&&(l.key==="ArrowRight"?i.value&&(t(i.value.link),l.preventDefault()):l.key==="ArrowLeft"&&n.value&&(t(n.value.link),l.preventDefault()))}),()=>n.value||i.value?s("nav",{class:"vp-page-nav"},[n.value?s(Ye,{class:"prev",config:n.value},()=>[s("div",{class:"hint"},[s("span",{class:"arrow start"}),e.value.prev]),s("div",{class:"link"},[s(xe("VPIcon"),{icon:n.value?.icon}),n.value?.text])]):null,i.value?s(Ye,{class:"next",config:i.value},()=>[s("div",{class:"hint"},[e.value.next,s("span",{class:"arrow end"})]),s("div",{class:"link"},[i.value?.text,s(xe("VPIcon"),{icon:i.value?.icon})])]):null]):null}}),mm=I({name:"PrintButton",setup(){const e=Bt(),t=On();return()=>t.value.print===!1?null:s("button",{type:"button",class:"print-button",title:e.value.print,onClick:()=>{window.print()}},s(ap))}});const Bo={selector:[...Array.from({length:6}).map((e,t)=>`#markdown-content > h${t+1}`),"[vp-content] > h2"].join(", "),levels:"deep",ignore:[".vp-badge",".vp-icon"]};var vm=I({name:"TOC",props:{items:Array},slots:Object,setup(e,{slots:t}){const{frontmatter:n,themeLocale:i}=Pe(),l=b(()=>{const k=n.value.toc??i.value.toc;return ai(k)?{...Bo,...k}:k??!0?Bo:void 0}),a=Kf(l),r=xt(),o=Bt(),[c,d]=Ra(),u=ae(),p=se("-2rem"),h=k=>{u.value?.scrollTo({top:k,behavior:"smooth"})},E=()=>{if(u.value){const k=document.querySelector(".vp-toc-item.active");k?p.value=`${k.getBoundingClientRect().top-u.value.getBoundingClientRect().top+u.value.scrollTop}px`:p.value="-2rem"}else p.value="-2rem"};ye(()=>{wt(()=>r.hash,k=>{if(u.value){const D=document.querySelector(`#toc a.vp-toc-link[href$="${k}"]`);if(!D)return;const{top:y,height:m}=u.value.getBoundingClientRect(),{top:_,height:P}=D.getBoundingClientRect();_<y?h(u.value.scrollTop+_-y):_+P>y+m&&h(u.value.scrollTop+_+P-y-m)}},{flush:"post"}),wt(()=>r.fullPath,E,{flush:"post"})});const v=({title:k,level:D,slug:y})=>s(Ve,{to:`#${y}`,class:["vp-toc-link",`level${D}`],onClick:()=>{d()}},()=>k),B=k=>k.length?s("ul",{class:"vp-toc-list"},k.map(D=>{const y=B(D.children);return[s("li",{class:["vp-toc-item",{active:r.hash===`#${D.slug}`}]},v(D)),y?s("li",y):null]})):null;return()=>l.value||e.items?.length?s(vr,()=>{const k=e.items?.length?B(e.items):B(a.value),D=t.toc?.(a.value)??(k?[s("div",{class:"vp-toc-header",onClick:()=>{d()}},[o.value.toc,s(mm),s("div",{class:["arrow",c.value?"down":"end"]})]),s("div",{class:["vp-toc-wrapper",c.value?"open":""],ref:u},[k,s("div",{class:"vp-toc-marker",style:{top:p.value}})])]:null),y=t.tocBefore?.(),m=t.tocAfter?.();return Jn(D)&&Jn(y)&&Jn(m)?null:s("div",{class:"vp-toc-placeholder"},[s("aside",{id:"toc","vp-toc":""},[y,D,m])])}):null}});const Fp=()=>s(Ae,{name:"edit"},()=>[s("path",{d:"M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"}),s("path",{d:"M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"})]);Fp.displayName="EditIcon";const Am={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},Bm=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:i,editLinkPattern:l})=>{if(!i)return null;const a=wr(e);let r;return l?r=l:a!==null&&(r=Am[a]),r?r.replace(/:repo/u,li(e)?e:`https://github.com/${e}`).replace(/:branch/u,t).replace(/:path/u,Er(`${hr(n)}/${i}`)):null},ym=()=>{const{frontmatter:e,page:t,themeLocale:n}=Pe(),i=Bt();return b(()=>{const{repo:l,docsRepo:a=l,docsBranch:r="main",docsDir:o="",editLink:c,editLinkPattern:d=""}=n.value;if(!(e.value.editLink??c??!0)||!a)return null;const u=Bm({docsRepo:a,docsBranch:r,docsDir:o,editLinkPattern:d,filePathRelative:t.value.filePathRelative});return u?{text:i.value.editLink,link:u}:null})};
2946var _m=I({name:"PageMeta",setup(){const e=xp(),t=xu(),n=ym(),i=P1(e.lastUpdated),l=Bt();return()=>s("footer",{class:"vp-page-meta"},[n.value?s("div",{class:"vp-meta-item edit-link"},s(Ye,{class:"vp-meta-label",config:n.value},{before:()=>s(Fp)})):null,s("div",{class:"vp-meta-item git-info"},[(!e.changelog.value||!ht("GitChangelog"))&&i.value?s("div",{class:"update-time"},[s("span",{class:"vp-meta-label"},i.value.locale),s("time",{class:"vp-meta-info",datetime:i.value.iso,"data-allow-mismatch":""},i.value.text)]):null,e.contributors.value&&e.contributors.value!=="content"&&t.value.length?s("div",{class:"contributors"},[s("span",{class:"vp-meta-label"},`${l.value.contributors}: `),t.value.map(({email:a,name:r},o,c)=>[s("span",{class:"vp-meta-info",title:`email: ${a}`},r),o!==c.length-1?",":""])]):null])])}}),bm=I({name:"PageContent",slots:Object,setup(e,{slots:t}){const{frontmatter:n}=Pe(),{isDarkMode:i}=ji();return()=>s("main",{id:"main-content",class:"vp-page"},s(ht("LocalEncrypt")?xe("LocalEncrypt"):yr,()=>[t.pageTop?.(),n.value.cover?s("div",{class:"page-cover"},s("img",{src:Ce(n.value.cover),alt:"","no-view":""}
2946)):null,s(Em),s(dm),s(vm,null,t),t.content?.()??s(Il,null,t),s(_m),s(gm),ht("CommentService")?s(xe("CommentService"),{darkmode:i.value}):null,t.pageBottom?.()]))}});const Ha=(e,{slots:t})=>{const{bgImage:n,bgImageDark:i,bgImageStyle:l,color:a,description:r,image:o,imageDark:c,header:d,features:u=[]}=e;return s("div",{class:"vp-feature-wrapper"},[n?s("div",{class:["vp-feature-bg",{light:i}],style:[{"background-image":`url(${n})`},l]}):null,i?s("div",{class:"vp-feature-bg dark",style:[{"background-image":`url(${i})`},l]}):null,s("div",{class:"vp-feature",style:a?{color:a}:{}},[t.image?.(e)??[o?s("img",{class:["vp-feature-image",{light:c}],src:Ce(o),alt:""}):null,c?s("img",{class:"vp-feature-image dark",src:Ce(c),alt:""}):null],t.info?.(e)??[d?s("h2",{class:"vp-feature-header"},d):null,r?s("div",{class:"vp-feature-description",innerHTML:r}):null],u.length?s("div",{class:"vp-features"},u.map(({icon:p,title:h,details:E,link:v})=>{const B=[s("h3",{class:"vp-feature-title"},[s(xe("VPIcon"),{icon:p}),s("span",{innerHTML:h})]),s("div",{class:"vp-feature-details",innerHTML:E})];return v?dr(v)?s("a",{class:"vp-feature-item link",href:v,"aria-label":h,target:"_blank"},B):s(Ve,{class:"vp-feature-item link",to:v,"aria-label":h},()=>B):s("div",{class:"vp-feature-item"},B)})):null])])};Ha.displayName="FeaturePanel";var km=I({name:"HeroInfo",slots:Object,setup(e,{slots:t}){const{frontmatter:n,siteLocale:i}=Pe(),l=b(()=>{const{heroText:c,tagline:d,heroStyle:u,heroFullScreen:p=!1}=n.value;return{text:c??(i.value.title||"Hello"),tagline:d??i.value.description,style:u??null,isFullScreen:p}}),a=b(()=>{const{heroImage:c,heroImageDark:d,heroAlt:u,heroImageStyle:p}=n.value;return{image:c?Ce(c):null,imageDark:d?Ce(d):null,style:p??null,alt:u??""}}),r=b(()=>{const{bgImage:c,bgImageDark:d,bgImageStyle:u}=n.value;return{image:me(c)?Ce(c):null,imageDark:me(d)?Ce(d):null,style:u??null}}),o=b(()=>n.value.actions??[]);return()=>s("header",{class:["vp-hero-info-wrapper",{"hero-fullscreen":l.value.isFullScreen}],style:l.value.style},[t.heroBg?.(r.value)??[r.value.image?s("div",{class:["vp-hero-mask",{light:r.value.imageDark}],style:[{"background-image":`url(${r.value.image})`},r.value.style]}):null,r.value.imageDark?s("div",{class:"vp-hero-mask dark",style:[{"background-image":`url(${r.value.imageDark})`},r.value.style]}):null],s("div",{class:"vp-hero-info"},[t.heroLogo?.(a.value)??s(oe,{appear:!0,group:!0},()=>{const{image:c,imageDark:d,style:u,alt:p}=a.value;return[c?s("img",{key:"light",class:["vp-hero-image",{light:d}],style:u,src:c,alt:p}):null,d?s("img",{key:"dark",class:"vp-hero-image dark",style:u,src:d,alt:p}):null]}),t.heroInfo?.(l.value)??s("div",{class:"vp-hero-infos"},[l.value.text?s(oe,{appear:!0,delay:.04},()=>s("h1",{id:"main-title",class:"vp-hero-title"},l.value.text)):null,l.value.tagline?s(oe,{appear:!0,delay:.08},()=>s("div",{id:"main-description",innerHTML:l.value.tagline})):null,o.value.length?s(oe,{appear:!0,delay:.12},()=>s("p",{class:"vp-hero-actions"},o.value.map(c=>s(Ye,{class:["vp-hero-action",c.type??"default","no-external-link-icon"],config:c})))):null])]),l.value.isFullScreen?s(Or,{onClick:()=>window.scrollTo({top:window.innerHeight-(document.querySelector("[vp-navbar]")?.clientHeight??0),behavior:"smooth"})}):null])}});const Sp=(e,{slots:t})=>{const{bgImage:n,bgImageDark:i,bgImageStyle:l,color:a,description:r,image:o,imageDark:c,header:d,highlights:u=[],type:p="un-order"}=e;return s("div",{class:"vp-highlight-wrapper",style:a?{color:a}:{}},[n?s("div",{class:["vp-highlight-bg",{light:i}],style:[{"background-image":`url(${n})`},l]}):null,i?s("div",{class:"vp-highlight-bg dark",style:[{"background-image":`url(${i})`},l]}):null,s("div",{class:"vp-highlight"},[t.image?.(e)??[o?s("img",{class:["vp-highlight-image",{light:c}],src:Ce(o),alt:""}):null,c?s("img",{class:"vp-highlight-image dark",src:Ce(c),alt:""}):null],t.info?.(e)??[s("div",{class:"vp-highlight-info-wrapper"},s("div",{class:"vp-highlight-info"},[d?s("h2",{class:"vp-highlight-header",innerHTML:d}):null,r?s("div",{class:"vp-highlight-description",innerHTML:r}):null,t.highlights?.(u)??s(p==="order"?"ol":p==="no-order"?"dl":"ul",{class:"vp-highlights"},u.map(({icon:h,title:E,details:v,link:B})=>{const k=[s(p==="no-order"?"dt":"h3",{class:"vp-highlight-title"},[h?s(xe("VPIcon"),{class:"vp-highlight-icon",icon:h}
2946):null,s("span",{innerHTML:E})]),v?s(p==="no-order"?"dd":"div",{class:"vp-highlight-details",innerHTML:v}):null];return s(p==="no-order"?"div":"li",{class:["vp-highlight-item-wrapper",{link:B}]},B?dr(B)?s("a",{class:"vp-highlight-item link",href:B,"aria-label":E,target:"_blank"},k):s(Ve,{class:"vp-highlight-item link",to:B,"aria-label":E},()=>k):s("div",{class:"vp-highlight-item"},k))}))]))]])])};Sp.displayName="HighlightSection";var Cm=I({name:"HomePage",slots:Object,setup(e,{slots:t}){const n=Et();return()=>{const{features:i,highlights:l}=n.value;return s("main",{id:"main-content",class:"vp-page vp-project-home","aria-labelledby":n.value.heroText===""?"":"main-title"},[t.heroBefore?.(),s(km,null,t),t.heroAfter?.(),Wt(l)?l.map(a=>"features"in a?s(Ha,a):s(Sp,a)):Wt(i)?s(oe,{appear:!0,delay:.24},()=>s(Ha,{features:i})):null,t.content?.()??s(oe,{appear:!0,delay:.32},()=>s(Il,null,t))])}}}),Dm=I({name:"PortfolioHero",slots:Object,setup(e,{slots:t}){const n=Ju(),i=Et(),l=se(0),a=b(()=>i.value.titles?.[l.value]??""),r=se(""),o=b(()=>{const{name:h,avatar:E,avatarDark:v,avatarAlt:B,avatarStyle:k}=i.value;return{name:h??n.value.name,avatar:E?Ce(E):null,avatarDark:v?Ce(v):null,alt:(B||h)??"",style:k??null}}),c=b(()=>{const{bgImage:h,bgImageDark:E,bgImageStyle:v}=i.value;return{image:me(h)?Ce(h):null,imageDark:me(E)?Ce(E):null,style:v??null}}),d=b(()=>{const{welcome:h,name:E,titles:v=[],medias:B}=i.value;return{name:E??n.value.name,welcome:h??"ð Hi There, I'm",title:r.value,titles:v,medias:B??null}}),u=()=>{r.value="";let h=0,E=!1;const v=async()=>{if(!E)if(r.value+=a.value[h],h+=1,await fn(),h<a.value.length)setTimeout(()=>{v()},150);else{const B=d.value.titles.length;setTimeout(()=>{l.value=B<=1||l.value===d.value.titles.length-1?0:l.value+1},1e3)}};return v(),()=>{E=!0}};let p;return ye(()=>{wt(a,()=>{p?.(),p=u()})}),()=>s("section",{id:"portfolio",class:["vp-portfolio",{bg:c.value.image}]},[t.portfolioBg?.(c.value)??[c.value.image?s("div",{class:["vp-portfolio-mask",{light:c.value.imageDark}],style:[{background:`url(${c.value.image}) center/cover no-repeat`},c.value.style]}):null,c.value.imageDark?s("div",{class:"vp-portfolio-mask dark",style:[{background:`url(${c.value.imageDark}) center/cover no-repeat`},c.value.style]}):null],t.portfolioAvatar?.(o.value)??s("div",{class:"vp-portfolio-avatar"},[s(oe,{delay:.04},()=>{const{avatar:h,avatarDark:E,name:v,alt:B,style:k}=o.value;return[h?s("img",{key:"light",class:{light:E},src:h,title:v,alt:B,style:k}):null,E?s("img",{key:"dark",class:"dark",src:E,title:v,alt:B,style:k}):null]})]),s("div",{class:"vp-portfolio-container"},t.portfolioInfo?.(d.value)??s("div",{class:"vp-portfolio-info"},[s(oe,{appear:!0,delay:.08},()=>s("h6",{class:"vp-portfolio-welcome"},d.value.welcome)),s(oe,{appear:!0,delay:.12},()=>s("h1",{class:"vp-portfolio-name",id:"main-title"},d.value.name)),s(oe,{appear:!0,delay:.16},()=>s("h2",{class:"vp-portfolio-title"},r.value)),s(oe,{appear:!0,delay:.2},()=>d.value.medias?s("div",{class:"vp-portfolio-medias"},d.value.medias.map(({name:h,url:E,icon:v})=>s("a",{class:"vp-portfolio-media",href:E,rel:"noopener noreferrer",target:"_blank",title:h},s(xe("VPIcon"),{icon:v,sizing:"both"})))):ht("SocialMedias")?s(xe("SocialMedias")):null)]))])}}),Tm=I({name:"PortfolioHome",slots:Object,setup(e,{slots:t}){const n=Et();return()=>{const i=n.value.content??"portfolio";return s("main",{id:"main-content",class:"vp-page vp-portfolio-home","aria-labelledby":"main-title"},[s(Dm,null,t),i==="none"?null:t.content?.()??s("div",s(oe,{appear:!0,delay:.24},()=>s(Il,{class:{"vp-portfolio-content":i==="portfolio"}},t)))])}}}),wm=I({name:"Layout",slots:Object,setup(e,{slots:t}){const{frontmatter:n,page:i}=Pe();return()=>[s(Lr),s(Rr,null,{...t,default:t.default??(()=>n.value.portfolio?s(Tm,null,t):n.value.home?s(Cm,null,t):s(pm,()=>s(bm,{key:i.value.path},t))),navScreenBottom:t.navScreenBottom??(ht("BloggerInfo")?()=>s(xe("BloggerInfo")):null)})]}}),xm=I({name:"NotFound",slots:Object,setup(e,{slots:t}){const{routeLocale:n,theme:i,themeLocale:l}=Pe(),a=Yt(),r=se(!1),o=b(()=>i.value.locales[r.value?n.value:"/"].routerLocales),c=()=>
2946{if(!r.value)return o.value.notFoundMsg[0];const d=o.value.notFoundMsg;return d[Math.floor(Math.random()*d.length)]};return ye(()=>{r.value=!0}),()=>[s(Lr),s(Rr,{noSidebar:!0},{...t,default:()=>s("main",{id:"main-content",class:"vp-page not-found"},t.default?.()??[s("div",{class:"not-found-hint"},[s("p",{class:"error-code"},"404"),s("h1",{class:"error-title"},o.value.notFoundTitle),s("p",{class:"error-hint"},c())]),s("div",{class:"actions"},[s("button",{type:"button",class:"action-button",onClick:()=>{window.history.go(-1)}},o.value.back),s("button",{type:"button",class:"action-button",onClick:()=>{a.push(l.value.home??n.value)}},o.value.home)])])})]}});const Pp=()=>s(Ae,{name:"lock"},()=>s("path",{d:"M787.168 952.268H236.832c-30.395 0-55.033-24.638-55.033-55.033V429.45c0-30.395 24.638-55.034 55.033-55.034h82.55V264.35c0-106.38 86.238-192.618 192.618-192.618S704.618 157.97 704.618 264.35v110.066h82.55c30.395 0 55.033 24.639 55.033 55.034v467.785c0 30.395-24.639 55.033-55.033 55.033zM484.483 672.046v115.122h55.034V672.046c31.99-11.373 55.033-41.605 55.033-77.496 0-45.592-36.958-82.55-82.55-82.55s-82.55 36.958-82.55 82.55c0 35.89 23.042 66.123 55.033 77.496zM622.067 264.35c0-60.788-49.28-110.067-110.067-110.067s-110.067 49.28-110.067 110.067v110.066h220.135V264.35z"}));Pp.displayName="LockIcon";const Fm=JSON.parse('{"category":{"/":{"path":"/category/","map":{"课ç¨ç¬è®°":{"path":"/category/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/","indexes":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139]},"DragonOS":{"path":"/category/dragonos/","indexes":[140]},"ç¬è®°":{"path":"/category/%E7%AC%94%E8%AE%B0/","indexes":[141,142,143,144,145,146,147,148,149,150,151,152,153]},"Linux å
æ ¸":{"path":"/category/linux-%E5%86%85%E6%A0%B8/","indexes":[145,146,148,152,153]},"Rust":{"path":"/category/rust/","indexes":[141,143,147,154]},"å端":{"path":"/category/%E5%90%8E%E7%AB%AF/","indexes":[142]},"C++":{"path":"/category/c__/","indexes":[155]},"ç¼è¯å¨":{"path":"/category/%E7%BC%96%E8%AF%91%E5%99%A8/","indexes":[149,150,151]},"微信":{"path":"/category/%E5%BE%AE%E4%BF%A1/","indexes":[144]},"Linuxå
æ ¸":{"path":"/category/linux%E5%86%85%E6%A0%B8/","indexes":[156,157,158,159]},"æè°":{"path":"/category/%E6%9D%82%E8%B0%88/","indexes":[160,161,162,163,156,154,158,164,165,166,167,168]},"Debugæè°":{"path":"/category/debug%E6%9D%82%E8%B0%88/","indexes":[160,161,154,165,166]},"ç½ç»é®é¢":{"path":"/category/%E7%BD%91%E7%BB%9C%E9%97%AE%E9%A2%98/","indexes":[166]},"ç¼ç¨æè°":{"path":"/category/%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/","indexes":[164]},"é¢ç»":{"path":"/category/%E9%9D%A2%E7%BB%8F/","indexes":[169]}}},"/en/":{"path":"/en/category/","map":{}}},"tag":{"/":{"path":"/tag/","map":{"大å¦ç©ç":{"path":"/tag/%E5%A4%A7%E5%AD%A6%E7%89%A9%E7%90%86/","indexes":[111,113]},"ç¼è¯åç":{"path":"/tag/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/","indexes":[0,1,2,3,4,5,6,7,8,9,10,11]},"è®¡ç®æºç½ç»":{"path":"/tag/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/","indexes":[115,116,117,118,119,120,121,122,123,124,125,138,139]},"æ°æ®åº":{"path":"/tag/%E6%95%B0%E6%8D%AE%E5%BA%93/","indexes":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,112,114]},"æä½ç³»ç»":{"path":"/tag/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/","indexes":[126,127,128,129,130,131,132,133,134,135,136,137]},"软件项ç®ç®¡ç":{"path":"/tag/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/","indexes":[43,44,45,46,47,48,49,50,51,52,53,54,65,66,67,68,69,70,97,102,103,104,105,106,107,108,109,110]},"软件æµè¯ä¸ç»´æ¤":{"path":"/tag/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E4%B8%8E%E7%BB%B4%E6%8A%A4/","indexes":[12,13,14,15,16]},"UML":{"path":"/tag/uml/","indexes":[17,18]},"软件ä½ç³»ç»æ":{"path":"/tag/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/","indexes":[55,56,57,58,59,60,61,62,63,64,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,98,99,100,101]},"DragonOS":{"path":"/tag/dragonos/","indexes":[140]},"Linux å
æ ¸":{"path":"/tag/linux-%E5%86%85%E6%A0%B8/","indexes":[145,146,148,152,153]},"å
å管ç":{"path":"/tag/%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/","indexes":[146,152]},"NUMA":{"path":"/tag/numa/","indexes":[146,152,153]},"å¼åç¯å¢":{"path":"/tag/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/","indexes":[145]},"Rust":{"path":"/tag/rust/","indexes":[141,143,147,154]},"å端":{"path":"/tag/%E5%90%8E%E7%AB%AF/","indexes":[142]},"gRPC":{"path":"/tag/grpc/","indexes":[142]},"go":{"path":"/tag/go/","indexes":[142]},"C++":{"path":"/tag/c__/","indexes":[155]},"ç¼è¯å¨":{"path":"/tag/%E7%BC%96%E8%AF%91%E5%99%A8/","indexes":[149,150,151]},"è¯æ³åæ":{"path":"/tag/%E8%AF%8D%E6%B3%95%E5%88%86%E6%9E%90/","indexes":[150]},"微信":{"path":"/tag/%E5%BE%AE%E4%BF%A1/","indexes":[144]},"客æ·ç«¯":{"path":"/tag/%E5%AE%A2%E6%88%B7%E7%AB%AF/","indexes":[144]},"Linuxå
æ ¸":{"path":"/tag/linux%E5%86%85%E6%A0%B8/","indexes":[156,157,158,159]},"Android":{"path":"/tag/android/","indexes":[160]},"Debug":{"path":"/tag/debug/","indexes":[161,165,166]},"ç½ç»é®é¢":{"path":"/tag/%E7%BD%91%E7%BB%9C%E9%97%AE%E9%A2%98/","indexes":[166]},"MacOS":{"path":"/tag/macos/","indexes":[161]},"General Protection":{"path":"/tag/general-protection/","indexes":[165]},"Github Workflow":{"path":"/tag/github-workflow/","indexes":[164]},"æè°/ç¼ç¨æè°":{"path":"/tag/%E6%9D%82%E8%B0%88%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/","indexes":[162,163,167,168]},"é¢ç»":{"path":"/tag/%E9%9D%A2%E7%BB%8F/","indexes":[169]},"eBPF":{"path":"/tag/ebpf/","indexes":[156,158]},"æ§è½æµè¯":{"path":"/tag/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/","indexes":[159]}}},"/en/":{"path":"/en/tag/","map":{}}}}'),Rp=JSON.parse(`["/notes/Compile-Principles/Chapter0-Introduce.html","/notes/Compile-Principles/Chapter1-Compiler-composition%20.html","/notes/Compile-Principles/Chapter2-Lexical-Analysis.html","/notes/Compile-Principles/Chapter3-Gramma-Analysis.html","/notes/Compile-Principles/Chapter4-Semantic-Analysis.html","/notes/Compile-Principles/Chapter5-Code-Generation.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/Chapter0%20%E5%89%8D%E8%A8%80.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/Chapter1%20%E7%BC%96%E8%AF%91%E5%99%A8%E7%BB%84%E6%88%90.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/Chapter2%20%E8%AF%8D%E6%B3%95%E5%88%86%E6%9E%90.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/Chapter3%20%E8%AF%AD%E6%B3%95%E5%88%86%E6%9E%90.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/Chapter4%20%E8%AF%AD%E4%B9%89%E5%88%86%E6%9E%90.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/Chapter5%20%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90.html","/notes/Software-Testing-and-Maintenance/Chapter4-Software-Testing-Management.html","/notes/Software-Testing-and-Maintenance/Chapter5-Software-Maintenance.html","/notes/Software-Testing-and-Maintenance/Chapter3-Software-Testing-Process.html","/notes/Software-Testing-and-Maintenance/Chapter2-Software-Testing-Technology.html","/notes/Software-Testing-and-Maintenance/Chapter1-Basic-Concepts-of-Software-Testing.html","/notes/UML/Review-Quick-Note.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/UML/UML%E5%A4%8D%E4%B9%A0%E7%AE%80%E8%AE%B0.html","/notes/Database/Chapter15-Concurrency-Control.html","/notes/Database/Chapter16-Recovery-System.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter15%20Concurrency%20Control.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter16%20Recovery%20System.html","/notes/Database/Chapter11-Indexing-and-Hashing.html","/notes/Database/Chapter12-Query-Processing.html","/notes/Database/Chapter13-Query-Optimization.html","/notes/Database/Chapter14-Transactions.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter11%20Indexing%20and%20Hashing.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter12%20Query%20Processing.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter13%20Query%20Optimization.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter14%20Transactions.html","/notes/Database/Chapter10-Storage-and-File-Structure.html","/notes/Database/Chapter8-Relational-Database-Design.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter10%20Storage%20and%20File%20Structure.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter8%20Relational%20Database%20Design.html","/notes/Database/Chapter6-Formal-Relational-Query-Languages.html","/notes/Database/Chapter7-Entity-Relationship-Model.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter6%20Formal%20Relational%20Query%20Languages.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter7%20Entity-Relationship%20Model.html","/notes/Database/Chapter2-Introduction-to-Relational-Model.html","/notes/Database/Chapter3-Introduction-to-SQL.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter2%20Introduction%20to%20Relational%20Model.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter3%20Introduction%20to%20SQL.html","/notes/Software-Project-Management/Chapter13-Project-Stakeholder-Management.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC13%E7%AB%A0%E9%A1%B9%E7%9B%AE%E5%B9%B2%E7%B3%BB%E4%BA%BA%E7%AE%A1%E7%90%86.html","/notes/Software-Project-Management/Chapter10-Project-Communication-Management.html","/notes/Software-Project-Management/Chapter11-Project-Risk-Management.html","/notes/Software-Project-Management/Chapter12-Project-Precurement-Management.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC10%E7%AB%A0%E9%A1%B9%E7%9B%AE%E6%B2%9F%E9%80%9A%E7%AE%A1%E7%90%86.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC11%E7%AB%A0%E9%A1%B9%E7%9B%AE%E9%A3%8E%E9%99%A9%E7%AE%A1%E7%90%86.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC12%E7%AB%A0%E9%A1%B9%E7%9B%AE%E9%87%87%E8%B4%AD%E7%AE%A1%E7%90%86.html","/notes/Software-Project-Management/2019-Review-Notes.html","/notes/Software-Project-Management/Chapter7-Project-Cost-Management.html","/notes/Software-Project-Management/Chapter8-Project-Quality-Management.html","/notes/Software-Project-Management/Chapter9-Project-Resource-Management.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter15%E6%95%8F%E6%8D%B7%E9%A1%B9%E7%9B%AE%E4%B8%AD%E7%9A%84%E6%9E%B6%E6%9E%84.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter16%E6%9E%B6%E6%9E%84%E4%B8%8E%E9%9C%80%E6%B1%82.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter17%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter19%E6%9E%B6%E6%9E%84%E5%AE%9E%E7%8E%B0%E4%B8%8E%E6%B5%8B%E8%AF%95.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chpater21%E6%9E%B6%E6%9E%84%E8%AF%84%E4%BC%B0.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter15%E6%95%8F%E6%8D%B7%E9%A1%B9%E7%9B%AE%E4%B8%AD%E7%9A%84%E6%9E%B6%E6%9E%84.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter16%E6%9E%B6%E6%9E%84%E4%B8%8E%E9%9C%80%E6%B1%82.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter17%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter19%E6%9E%B6%E6%9E%84%E5%AE%9E%E7%8E%B0%E4%B8%8E%E6%B5%8B%E8%AF%95.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chpater21%E6%9E%B6%E6%9E%84%E8%AF%84%E4%BC%B0.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/2019_IT%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86_%E5%A4%8D%E4%B9%A0%E7%AC%94%E8%AE%B0.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC7%E7%AB%A0%E9%A1%B9%E7%9B%AE%E6%88%90%E6%9C%AC%E7%AE%A1%E7%90%86.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC8%E7%AB%A0%E9%A1%B9%E7%9B%AE%E8%B4%A8%E9%87%8F%E7%AE%A1%E7%90%86.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC9%E7%AB%A0%E9%A1%B9%E7%9B%AE%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86.html","/notes/Software-Project-Management/Chapter6-Project-Schedule-Management.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC6%E7%AB%A0%E9%A1%B9%E7%9B%AE%E8%BF%9B%E5%BA%A6%E7%AE%A1%E7%90%86.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter10%E5%8F%AF%E6%B5%8B%E8%AF%95%E6%80%A7.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter11%E6%98%93%E7%94%A8%E6%80%A7.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter12%E5%85%B6%E5%AE%83%E8%B4%A8%E9%87%8F%E5%B1%9E%E6%80%A7.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter13%E6%A8%A1%E5%BC%8F%E5%92%8C%E7%AD%96%E7%95%A5.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter14%E8%B4%A8%E9%87%8F%E5%B1%9E%E6%80%A7%E5%BB%BA%E6%A8%A1%E4%B8%8E%E5%88%86%E6%9E%90.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter9%E5%AE%89%E5%85%A8%E6%80%A7.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter10%E5%8F%AF%E6%B5%8B%E8%AF%95%E6%80%A7.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter11%E6%98%93%E7%94%A8%E6%80%A7.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter12%E5%85%B6%E5%AE%83%E8%B4%A8%E9%87%8F%E5%B1%9E%E6%80%A7.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter13%E6%A8%A1%E5%BC%8F%E5%92%8C%E7%AD%96%E7%95%A5.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter14%E8%B4%A8%E9%87%8F%E5%B1%9E%E6%80%A7%E5%BB%BA%E6%A8%A1%E4%B8%8E%E5%88%86%E6%9E%90.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter9%E5%AE%89%E5%85%A8%E6%80%A7.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter6%E4%BA%92%E6%93%8D%E4%BD%9C%E6%80%A7.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter7%E5%8F%AF%E4%BF%AE%E6%94%B9%E6%80%A7.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter8%E6%80%A7%E8%83%BD.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter6%E4%BA%92%E6%93%8D%E4%BD%9C%E6%80%A7.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter7%E5%8F%AF%E4%BF%AE%E6%94%B9%E6%80%A7.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter8%E6%80%A7%E8%83%BD.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter1%E4%BB%80%E4%B9%88%E6%98%AF%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter2%E4%B8%BA%E4%BB%80%
2946E4%B9%88%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84%E9%87%8D%E8%A6%81.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter4%E7%90%86%E8%A7%A3%E8%B4%A8%E9%87%8F%E5%B1%9E%E6%80%A7.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter5%E5%8F%AF%E7%94%A8%E6%80%A7.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter1%E4%BB%80%E4%B9%88%E6%98%AF%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter2%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84%E9%87%8D%E8%A6%81.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter4%E7%90%86%E8%A7%A3%E8%B4%A8%E9%87%8F%E5%B1%9E%E6%80%A7.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter5%E5%8F%AF%E7%94%A8%E6%80%A7.html","/notes/Software-Project-Management/Chapter5-Project-Scope-Management.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter0%E7%BB%AA%E8%AE%BA.html","/notes/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/%E5%A4%8D%E4%B9%A0%E6%8F%90%E7%BA%B2.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/Chapter0%E7%BB%AA%E8%AE%BA.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/%E5%A4%8D%E4%B9%A0%E6%8F%90%E7%BA%B2.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC5%E7%AB%A0%E9%A1%B9%E7%9B%AE%E8%8C%83%E5%9B%B4%E7%AE%A1%E7%90%86.html","/notes/Software-Project-Management/Chapter3-Project-Management-Process-group.html","/notes/Software-Project-Management/Chapter4-Project-Integration-Management.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC3%E7%AB%A0%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E8%BF%87%E7%A8%8B%E7%BB%84.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC4%E7%AB%A0%E9%A1%B9%E7%9B%AE%E6%95%B4%E5%90%88%E7%AE%A1%E7%90%86.html","/notes/Software-Project-Management/Chapter2-Project-Management-and-IT-Environment.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC2%E7%AB%A0%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E4%B8%8EIT%E7%8E%AF%E5%A2%83.html","/notes/Software-Project-Management/Chapter1-Indroduction.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/%E7%AC%AC1%E7%AB%A0%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E6%A6%82%E8%BF%B0.html","/notes/College-Physics/Electromagnetic-Formula.html","/notes/Database/Chapter1-Introduction.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E5%A4%A7%E7%89%A9/%E7%94%B5%E7%A3%81%E5%AD%A6%E5%85%AC%E5%BC%8F.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%95%B0%E6%8D%AE%E5%BA%93/Chapter1%20Introduction.html","/notes/Computer-Network/Chapter4-Net-Layer.html","/notes/Computer-Network/Chapter5-Link-Layer.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Chapter4-Net-Layer.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Chapter5-Link-Layer.html","/notes/Computer-Network/Chapter3-Transport-Layer.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Chapter3-Transport-Layer.html","/notes/Computer-Network/Chapter1-Internet-And-Ethernet.html","/notes/Computer-Network/Chapter2-Application-Layer.html","/notes/Electrical-Engineering/Review-Note.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Chapter1-Internet-And-Ethernet.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Chapter2-Application-Layer.html","/notes/Operating-System/Chapter5-IO.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Chapter5-IO.html","/notes/Operating-System/Chapter4-File-System.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Chapter4-File-System.html","/notes/Operating-System/Chapter3-Memory-Management.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Chapter3-Memory-Management.html","/notes/Operating-System/Chapter6-Deadlocks.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Chapter6-Deadlocks.html","/notes/Operating-System/Chapter2-Processes-and-Threads.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Chapter2-Processes-and-Threads.html","/notes/Operating-System/Chapter1-Introdction.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Chapter1-Introdction.html","/notes/College-Physics/Formula-Derivation/Electrostatic-energy-of-a-solid-charged-sphere.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E5%A4%A7%E7%89%A9/%E5%85%B7%E4%BD%93%E6%8E%A8%E5%AF%BC/%E5%AE%9E%E5%BF%83%E5%B8%A6%E7%82%B9%E7%90%83%E4%BD%93%E9%9D%99%E7%94%B5%E8%83%BD%E7%9A%84%E6%8E%A8%E5%AF%BC.html","/posts/DragonOS/DragonOS%E6%8B%9B%E6%96%B0%E4%BB%BB%E5%8A%A1.html","/posts/Rust/Inlinable-dyn-extension-traits.html","/posts/backend/gRPC-introduction.html","/posts/Rust/Type-erase-via-trait.html","/posts/%E5%BE%AE%E4%BF%A1/%E5%BE%AE%E4%BF%A1%E5%BA%95%E5%B1%82%E8%A7%A3%E6%9E%90.html","/posts/Linux%E5%86%85%E6%A0%B8/vscode%20qemu%E5%BC%80%E5%8F%91Linux%E5%86%85%E6%A0%B8.html","/posts/Linux%E5%86%85%E6%A0%B8/NUMA%20Balance%E5%AE%9E%E7%8E%B0%E6%B5%85%E6%9E%90.html","/posts/Rust/Common-rust-lifetime-misconceptions.html","/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%88%86%E6%9E%90/LinuxKernelMap.html","/posts/rcc%E7%BC%96%E8%AF%91%E5%99%A8/Chapter0%E5%89%8D%E8%A8%80.html","/posts/rcc%E7%BC%96%E8%AF%91%E5%99%A8/Chapter1%E8%AF%8D%E6%B3%95%E5%88%86%E6%9E%90%E5%99%A8%E4%B9%8BChumsky.html","/posts/rcc%E7%BC%96%E8%AF%91%E5%99%A8/HelloWorld.html","/posts/Linux%E5%86%85%E6%A0%B8/Patch%E8%A7%A3%E8%AF%BB/LWN%E9%92%88%E5%AF%B9%E5%A4%9A%E5%B1%82%E5%86%85%E5%AD%98%E7%B3%BB%E7%BB%9F%E9%87%8D%E6%96%B0%E8%BF%9B%E8%A1%8CNUMA%E5%B9%B3%E8%A1%A1.html","/posts/Linux%E5%86%85%E6%A0%B8/NUMA%20Balancing.html","/posts/%E6%9D%82%E8%B0%88/Debug%E6%9D%82%E8%B0%88/edition%E8%AE%BE%E7%BD%AE%E5%BC%95%E8%B5%B7%E7%9A%84rust%E7%BC%96%E8%AF%91%E5%99%A8%E6%8A%A5%E9%94%99.html","/posts/cpp/Application-of-decltype-auto.html","/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91/eBPF%E5%BC%80%E5%8F%91/eBPF%E8%BF%9B%E9%98%B6.html","/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91/Ubuntu%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85%E5%86%85%E6%A0%B8.html","/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91/eBPF%E5%BC%80%E5%8F%91/eBPF%E5%BC%80%E5%8F%91%E5%85%A5%E9%97%A8.html","/posts/Linux%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/parsec3.0%E4%BB%8B%E7%BB%8D%E5%92%8C%E5%AE%89%E8%A3%85.html","/posts/%E6%9D%82%E8%B0%88/Debug%E6%9D%82%E8%B0%88/SurfaceView%E5%BC%82%E5%B8%B8%E9%87%8A%E6%94%BE.html","/posts/%E6%9D%82%E8%B0%88/Debug%E6%9D%82%E8%B0%88/%E8%A7%A3%E5%86%B3MacOS%E4%B8%AD%E6%89%BE%E4%B8%8D%E5%88%B0%E5%A4%B4%E6%96%87%E4%BB%B6%E7%9A%84%E9%97%AE%E9%A2%98.html","/posts/%E6%9D%82%E8%B0%88/%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/%E5%9F%BA%E4%BA%8ENinja%E7%9A%84%E4%BB%A3%E7%A0%81Intellisense%E5%AE%9E%E8%B7%B5.html","/posts/%E6%9D%82%E8%B0%88/%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/%E8%A7%A3%E5%86%B3%E5%9C%A8VSCode%E9%87%8C%E5%88%B7Leetcode%E7%9A%84%E9%87%8D%E5%AE%9A%E4%B9%89%E9%97%AE%E9%A2%98.html","/posts/%E6%9D%82%E8%B0%88/%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/Github%E4%B8%AD%E9%85%8D%E7%BD%AECargo%E9%A1%B9%E7%9B%AE%E7%9A%84Workflow.html","/posts/%E6%9D%82%E8%B0%88/Debug%E6%9D%82%E8%B0%88/%E8%AE%B0%E4%B8%80%E6%AC%A1%20GP%20Debug%20%E
29467%9A%84%E5%BF%83%E8%B7%AF%E5%8E%86%E7%A8%8B.html","/posts/%E6%9D%82%E8%B0%88/Debug%E6%9D%82%E8%B0%88/could%20not%20dial%20endpoint%20'orderer-api.127-0-0-1.nip.io.html","/posts/%E6%9D%82%E8%B0%88/%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/%E9%9C%87%E6%83%8A!1%E7%AD%89%E4%BA%8E0.html","/posts/%E6%9D%82%E8%B0%88/%E7%BC%96%E7%A8%8B%E6%9D%82%E8%B0%88/%E9%AB%98%E7%BA%A7%E8%AF%AD%E8%A8%80%E7%9A%84%E7%BC%96%E8%AF%91-%E9%93%BE%E6%8E%A5%E5%8F%8A%E8%A3%85%E8%BD%BD%E8%BF%87%E7%A8%8B%E4%BB%8B%E7%BB%8D.html","/posts/%E6%9D%82%E8%B0%88/%E9%9D%A2%E7%BB%8F/%E8%85%BE%E8%AE%AFWXG%E6%97%A5%E5%B8%B8%E5%AE%9E%E4%B9%A0%E9%9D%A2%E7%BB%8F.html","/notes/Software-Testing-and-Maintenance/","/notes/Electrical-Engineering/","/notes/","/posts/","/notes/College-Physics/","/notes/Compile-Principles/","/notes/Computer-Network/","/notes/Database/","/notes/Operating-System/","/notes/Software-Project-Management/","/posts/backend/","/posts/cpp/","/notes/College-Physics/Formula-Derivation/","/notes/Computer-Network/Computer-Network-7th-Edition-Exercises-Answers.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E4%B9%A0%E9%A2%98%E7%AD%94%E6%A1%88.html","/posts/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/%E7%94%B5%E5%B7%A5/%E7%94%B5%E5%B7%A5%E5%A4%8D%E4%B9%A0%E7%AC%94%E8%AE%B0.html","/intro.html","/en/intro.html"]`),Sm=JSON.parse('{"article":{"/":{"path":"/article/","indexes":[141,142,143,144,145,146,147,148,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,170,16,171,172,173,174,175,176,177,178,179,180,181,182,160,161,162,140,169,163,183,184,185,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,156,157,154,158,159,164,149,150,151,111,112,152,113,114,155,165,166,153,167,168,186,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139]},"/en/":{"path":"/en/article/","indexes":[187]}},"star":{"/":{"path":"/star/","indexes":[141,143,145,146,147,148]},"/en/":{"path":"/en/star/","indexes":[]}},"timeline":{"/":{"path":"/timeline/","indexes":[141,142,12,13,14,15,170,16,171,172,173,174,175,176,177,178,179,180,181,182,143,160,161,162,140,144,169,163,183,184,185,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,156,157,154,158,159,164,149,150,151,111,112,152,113,114,145,146,147,148,155,165,166,153,167,168,186,0,1,2,3,4,5,6,7,8,9,10,11,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139]},"/en/":{"path":"/en/timeline/","indexes":[187]}}}'),za=ae(Fm);Kt(za);const Lp=e=>{const{frontmatter:t,page:n,routeLocale:i}=gn();return b(()=>{const l=e??t.value.blog?.key??"";if(!l)return console.warn("useBlogCategory: key not found"),{path:"/",map:{}};if(!(l in za.value))throw new Error(`useBlogCategory: key ${l} is invalid`);const a=za.value[l][i.value],r={path:a.path,map:{}};for(const o in a.map){const c=a.map[o];r.map[o]={path:c.path,items:[]};for(const d of c.indexes){const{path:u,meta:p}=At(Rp[d]);r.map[o].items.push({path:u,info:p})}n.value.path===c.path&&(r.currentItems=r.map[o].items)}return r})},Ua=ae(Sm);Kt(Ua);const Ml=e=>{const{frontmatter:t,routeLocale:n}=gn();return b(()=>{const i=e??t.value.blog?.key??"";if(!i)return console.warn("useBlogType: key not found"),{path:"/",items:[]};if(!(i in Ua.value))throw new Error(`useBlogType: key ${e} is invalid`);const l=Ua.value[i][n.value],a={path:l.path,items:[]};for(const r of l.indexes){const{path:o,meta:c}=At(Rp[r]);a.items.push({path:o,info:c})}return a})},Pm={BiliBili:'<svg xmlns="http://www.w3.org/2000/svg" class="vp-social-media-icon bilibili-icon" viewBox="0 0 1024 1024"><circle cx="512" cy="512" r="512" fill="#1296db"/><path fill="#fff" d="M745.363 177.725a47 47 0 0 1 0 66.3L702.5 286.85h44A141 141 0 0 1 887 427.512v281.25a141 141 0 0 1-141 140.626H277.25A141 141 0 0 1 137 708.763v-281.25a141 141 0 0 1 141-141h43.725l-42.788-42.825a47 47 0 1 1 66.263-66.3l99.45 99.45c2.963 2.962 5.438 6.187 7.425 9.637h120.487c1.988-3.45 4.5-6.75 7.463-9.675l99.413-99.45a47 47 0 0 1 66.3 0zm1.012 203.25h-468.75a47 47 0 0 0-46.763 43.388l-.112 3.525v281.25c0 24.712 19.125 44.962 43.387 46.724l3.488.15h468.75a47 47 0 0 0 46.763-43.387l.112-3.487v-281.25c0-26-21-47-47-46.876zm-375 93.75c26 0 47 21 47 47v47a47 47 0 1 1-93.75 0V521.6c0-26 21-47 47-47zm281.25 0c26 0 47 21 47 47v47a47 47 0 1 1-93.75 0V521.6c0-26 21-47 47-47z"/></svg>',Email:'<svg xmlns="http://www.w3.org/2000/svg" class="vp-social-media-icon email-icon" viewB
2946ox="0 0 1024 1024"><circle cx="512" cy="512" r="512" fill="#1384FF"/><path fill="#fff" d="M270.077 286.233H751.99c32.933 0 59.86 24.855 60.274 55.51l-301.023 157L210.217 341.88c.207-30.723 26.927-55.717 59.86-55.717zm-59.929 115.714-.276 277.756c0 30.931 27.134 56.2 60.205 56.2H751.99c33.14 0 60.274-25.269 60.274-56.2V401.81L518.283 551.492a15.88 15.88 0 0 1-14.43 0L210.148 401.947z"/></svg>',GitHub:'<svg xmlns="http://www.w3.org/2000/svg" class="vp-social-media-icon github-icon" viewBox="0 0 1024 1024"><circle cx="512" cy="512" r="512" fill="#171515"/><path fill="#fff" d="M509.423 146.442c-200.317 0-362.756 162.42-362.756 362.8 0 160.266 103.936 296.24 248.109 344.217 18.139 3.327 24.76-7.872 24.76-17.486 0-8.613-.313-31.427-.49-61.702-100.912 21.923-122.205-48.63-122.205-48.63-16.495-41.91-40.28-53.067-40.28-53.067-32.937-22.51 2.492-22.053 2.492-22.053 36.407 2.566 55.568 37.386 55.568 37.386 32.362 55.438 84.907 39.43 105.58 30.143 3.296-23.444 12.667-39.43 23.032-48.498-80.557-9.156-165.246-40.28-165.246-179.297 0-39.604 14.135-71.988 37.342-97.348-3.731-9.178-16.18-46.063 3.556-96.009 0 0 30.46-9.754 99.76 37.19 28.937-8.048 59.97-12.071 90.823-12.211 30.807.14 61.843 4.165 90.822 12.21 69.26-46.944 99.663-37.189 99.663-37.189 19.792 49.946 7.34 86.831 3.61 96.01 23.25 25.359 37.29 57.742 37.29 97.347 0 139.366-84.82 170.033-165.637 179.013 13.026 11.2 24.628 33.342 24.628 67.182 0 48.498-.445 87.627-.445 99.521 0 9.702 6.535 20.988 24.945 17.444 144.03-48.067 247.881-183.95 247.881-344.175 0-200.378-162.442-362.798-362.802-362.798z"/></svg>',Gmail:'<svg xmlns="http://www.w3.org/2000/svg" class="vp-social-media-icon gmail-icon" viewBox="0 0 1024 1024"><circle cx="512" cy="512" r="512" fill="#DB4437"/><path fill="#E67C73" d="M277.48 285.567h465.767v441.362H277.48V285.567z"/><path fill="#FFF" d="M282.543 285.567h-10.645c-25.962 0-47.122 21.808-47.122 48.705v343.952c0 26.897 21.08 48.705 47.122 48.705h24.976V407.954l213.49 169.95 213.489-169.95V726.93h24.975c26.04 0 47.123-21.809 47.123-48.705V334.272c0-26.897-21.134-48.705-47.123-48.705h-10.644L510.364 480.44 282.542 285.567z"/></svg>',Steam:'<svg xmlns="http://www.w3.org/2000/svg" class="vp-social-media-icon steam-icon" viewBox="0 0 1024 1024"><circle cx="512" cy="512" r="488" fill="#fff"/><path fill="#13227a" d="M1008 512c0 274-222.4 496-496.8 496-227.6 0-419.2-152.6-478-360.8l190.4 78.6c12.8 64.2 69.8 112.8 137.8 112.8 78.4 0 143.8-64.8 140.4-147l169-120.4c104.2 2.6 191.6-81.8 191.6-187 0-103.2-84-187-187.4-187s-187.4 84-187.4 187v2.4L369.2 558c-31-1.8-61.4 6.8-87 24.2L16 472.2C36.4 216.8 250.2 16 511.2 16 785.6 16 1008 238 1008 512zM327.4 768.6l-61-25.2a105.58 105.58 0 0 0 54.4 51.6c53.8 22.4 115.6-3.2 138-56.8 10.8-26 11-54.6.2-80.6-10.8-26-31-46.4-57-57.2-25.8-10.8-53.4-10.4-77.8-1.2l63 26c39.6 16.4 58.4 61.8 41.8 101.4-16.6 39.8-62 58.4-101.6 42zM675 508.8c-68.8 0-124.8-56-124.8-124.6s56-124.6 124.8-124.6 124.8 56 124.8 124.6S744 508.8 675 508.8zm.2-31.2c51.8 0 93.8-42 93.8-93.6 0-51.8-42-93.6-93.8-93.6s-93.8 42-93.8 93.6c.2 51.6 42.2 93.6 93.8 93.6z"/></svg>',Zhihu:'<svg xmlns="http://www.w3.org/2000/svg" class="vp-social-media-icon zhihu-icon" viewBox="0 0 1024 1024"><circle cx="512" cy="512" r="512" fill="#006CE2"/><path fill="#fff" d="M513.65 491.261H411.551c1.615-16.154 5.815-60.095 5.815-84.973 0-24.88-.323-60.742-.323-60.742h102.744V329.39c0-21.647-9.37-31.34-17.124-31.34h-178.67s5.169-17.77 10.015-36.186c4.846-18.417 15.832-44.264 15.832-44.264-63.003 4.2-67.958 50.941-81.743 92.729-13.787 41.785-24.556 62.356-44.586 107.912 27.786 0 55.249-13.57 66.879-32.309 11.631-18.74 16.908-40.71 16.908-40.71h62.035v59.019c0 21.107-3.878 87.45-3.878 87.45H254.742c-19.386 0-29.724 48.894-29.724 48.894h133.76c-8.4 75.82-26.493 106.191-51.91 152.716-25.418 46.525-92.728 99.406-92.728 99.406 41.033 11.63 86.589-3.555 105.974-21.972 19.386-18.417 35.863-49.756 47.817-72.838 11.954-23.081 21.972-65.124 21.972-65.124L498.462 766.86s4.846-24.233 6.461-39.418c1.616-15.186-.755-26.385-4.63-35.433-3.878-9.046-15.509-21.54-31.018-39.634-15.507-18.094-48.034-52.879-48.034-52.879s-15.832 11.63-28.108 21.001c9.046-21.97 16.262-79.695 16.262-79.695h122.343v-20.249c.003-17.66-7.319-29.29-18.089-29.29zm287.337-200.747h-234.35a4.308 4.308 0 0 0-4.309 4.308v435.099a4.308 4.308 0 0 0 4.308 4.308h40.226l14.7 50.402 81.096-50.402h98.328a4.308 4.308 0 0 0 4.308-4.308v-435.1a4.308 4.308 0 0 0-4.308-4.308zM755.97 684.47h-52.343l-61.548 39.095-10.823-39.095h-18.738V338.116H755.97v346.355z"/></svg>'};var Rm=[];const Hi=()=>{const{theme:e,themeLocale:t}=Pe();return b(()=>({...e.value.blog,...t.value.blog}))};var Op=I({name:"SocialMedias",setup(){const e=Hi(),t=tt(),n=b(()=>Rn(e.value.medias??{}).map(([i,l])=>typeof l=="string"?{name:i,icon:Pm[i],link:l}:{name:i,...l}));return()=>n.value.length?s("div",{class:"vp-social-medias"},n.value.map(({name:i,icon:l,link:a})=>s("a",{class:"vp-social-media",href:a,rel:"noopener noreferrer",target:"_blank","aria-label":i||"",...t.value?{}:{"data-balloon-pos":"up"},innerHTML:li(l)?`<img class="vp-social-media-icon ${i}-icon" src="${l}">`:l}))):null}});const Ip=Symbol(""),zi=()=>{const e=ve(Ip);if(!e)throw new Error("useArticles() is called without provider.");return e},Lm=()=>{const e=Ml("article");Ct(Ip,e)},Zt=()=>{const e=Pt();return b(()=>e.value.blogLocales)},Mp=Symbol.for("categoryMap"),Ui=()=>{const e=ve(Mp);if(!e)throw new Error("useCategoryMap() is called without provider.");return e},Om=()=>{const e=Lp("category");Ct(Mp,e)},Vp=Symbol.for("tagMap"),Wi=()=>{const e=ve(Vp);if(!e)throw new Error("useTagMap() is called without provider.");return e},Im=()=>{const e=Lp("tag");Ct(Vp,e)},Np=Symbol(""),Ir=()=>{const e=ve(Np);if(!e)throw new Error("useTimeline() is called without provider.");return e},Mm=()=>{const e=Ml("timeline"),t=Sl(),n=b(()=>{const i=[];
2946return e.value.items.forEach(({info:l,path:a})=>{const r=br(l.date);if(r){const o=r.getFullYear();i[0]?.year!==o&&i.unshift({year:o,items:[]}),i[0].items.push({date:r.toLocaleDateString(t.value,{month:"numeric",day:"numeric"}),info:l,path:a})}}),{...e.value,config:i.reverse()}});Ct(Np,n)};var Mr=I({name:"BloggerInfo",slots:Object,setup(e,{slots:t}){const n=Zt(),i=Hi(),{siteLocale:l,themeLocale:a}=Pe(),r=zi(),o=Ui(),c=Wi(),d=Ir(),u=Xt(),p=b(()=>({name:i.value.name??xi(a.value.author)[0]?.name??l.value.title,avatar:i.value.avatar??a.value.logo??null,description:i.value.description??null})),h=b(()=>i.value.intro);return()=>{const{article:E,category:v,tag:B,timeline:k}=n.value,D=[[r.value.path,r.value.items.length,E],[o.value.path,Gt(o.value.map).length,v],[c.value.path,Gt(c.value.map).length,B],[d.value.path,d.value.items.length,k]];return s("div",{class:"vp-blogger-info",vocab:"https://schema.org/",typeof:"Person"},t.bloggerInfo?.(p.value)??[s("div",{class:"vp-blogger",...h.value?{"aria-label":n.value.intro,"data-balloon-pos":"down",role:"link",onClick:()=>{u(h.value)}}:{}},[p.value.avatar?s("img",{class:"vp-blogger-avatar",src:Ce(p.value.avatar),property:"image",alt:"Blogger Avatar",loading:"lazy"}):null,p.value.name?s("div",{class:"vp-blogger-name",property:"name"},p.value.name):null,p.value.description?s("div",{class:"vp-blogger-description",innerHTML:p.value.description}):null,h.value?s("meta",{property:"url",content:Ce(h.value)}):null]),s("div",{class:"vp-blog-counts"},D.map(([y,m,_])=>s(Ve,{class:"vp-blog-count",to:y},()=>[s("div",{class:"count"},m),s("div",_)]))),s(Op)])}}});const $p=Symbol(""),Vr=()=>{const e=ve($p);if(!e)throw new Error("useStars() is called without provider.");return e},Vm=()=>{const e=Ml("star");Ct($p,e)},Nr=()=>s(Ae,{name:"category"},()=>s("path",{d:"M148.41 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H148.41c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.311-40.31zM147.556 553.478H429.73c22.263 0 40.311 18.048 40.311 40.31v282.176c0 22.263-18.048 40.312-40.31 40.312H147.555c-22.263 0-40.311-18.049-40.311-40.312V593.79c0-22.263 18.048-40.311 40.31-40.311zM593.927 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H593.927c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.31-40.31zM730.22 920.502H623.926c-40.925 0-74.22-33.388-74.22-74.425V623.992c0-41.038 33.387-74.424 74.425-74.424h222.085c41.038 0 74.424 33.226 74.424 74.067v114.233c0 10.244-8.304 18.548-18.547 18.548s-18.548-8.304-18.548-18.548V623.635c0-20.388-16.746-36.974-37.33-36.974H624.13c-20.585 0-37.331 16.747-37.331 37.33v222.086c0 20.585 16.654 37.331 37.126 37.331H730.22c10.243 0 18.547 8.304 18.547 18.547 0 10.244-8.304 18.547-18.547 18.547z"}));Nr.displayName="CategoryIcon";const $r=()=>s(Ae,{name:"tag"},()=>s("path",{d:"M939.902 458.563L910.17 144.567c-1.507-16.272-14.465-29.13-30.737-30.737L565.438 84.098h-.402c-3.215 0-5.726 1.005-7.634 2.913l-470.39 470.39a10.004 10.004 0 000 14.164l365.423 365.424c1.909 1.908 4.42 2.913 7.132 2.913s5.223-1.005 7.132-2.913l470.39-470.39c2.01-2.11 3.014-5.023 2.813-8.036zm-240.067-72.121c-35.458 0-64.286-28.828-64.286-64.286s28.828-64.285 64.286-64.285 64.286 28.828 64.286 64.285-28.829 64.286-64.286 64.286z"}));$r.displayName="TagIcon";const jr=()=>s(Ae,{name:"timeline"},()=>s("path",{d:"M511.997 70.568c-243.797 0-441.429 197.633-441.429 441.435 0 243.797 197.632 441.429 441.43 441.429S953.431 755.8 953.431 512.002c0-243.796-197.637-441.434-441.435-441.434zm150.158 609.093-15.605 15.61c-8.621 8.615-22.596 8.615-31.215 0L472.197 552.126c-4.95-4.944-4.34-14.888-4.34-24.677V247.14c0-12.19 9.882-22.07 22.07-22.07h22.07c12.19 0 22.07 9.882 22.07 22.07v273.218l128.088 128.088c8.62 8.62 8.62 22.595 0 31.215zm0 0"}));jr.displayName="TimelineIcon";const jp=()=>s(Ae,{name:"slides"},()=>s("path",{d:"M896 170.667v426.666a85.333 85.333 0 0 1-85.333 85.334h-256v61.184l192.597 115.584-43.861 73.13-148.736-89.173v95.275h-85.334v-95.318l-148.736 89.216-43.861-73.13 192.597-115.627v-61.141h-256A85.333 85.333 0 0 1 128 597.333V170.667H85.333V85.333h853.334v85.334H896zm-682.667 0v426.666h597.334V170.667H213.333zM426.667 512h-85.334V341.333h85.334V512zm128 0h-85.334V256h85.334v256zm128 0h-85.334V384h85.334v128z"}));jp.displayName="SlideIcon";const Hp=()=>s(Ae,{name:"sticky"},()=>[s("path",{d:"m381.3 733.8l-161.9 118c-5.9 4.5-13.2 6.6-20.1 6.6-8.7 0-17.7-3.4-24.3-10-12.2-12.2-13.9-31.3-3.5-45.2l144.5-195.5-113.6-112.9c-11.1-11.1-13.2-28.4-5.5-42 5.5-8.7 52.1-76.4 155.5-51 1.8 0.3 3.5 0.3 5.6 0.7 4.2 0.3 9 0.7 14.2 1.7 21.9 3.5 60.8-13.9 94.5-42.7 32.3-27.5 53.1-59.4 53.1-81.6 0-5.2 0-10.8-0.3-16-0.7-20.8-2.1-52.8 21.5-76.4 28.1-28.1 72.9-30.6 103.9-5.2 0.6 0.3 1 1 1.7 1.7 16.7 16.3 187.5 187.2 189.3 188.9 14.5 14.6 22.9 34.4 22.9 55.3 0 20.8-8 40.2-22.9 54.8-23.7 23.6-56 22.6-77.1 21.6-4.9 0-10.5-0.4-15.7-0.4-20.8 0-45.8 14.6-70.5 41.3-34.3 37.5-55.5 85.8-53.8 10
29467.7 0.7 6.9 2.1 19.1 2.4 20.8 25 101.4-42.7 147.6-50.7 152.8-13.9 8.4-31.6 6.3-42.7-4.8l-112.1-112.2z"})]);Hp.displayName="StickyIcon";const Hr=()=>s(Ae,{name:"article"},()=>s("path",{d:"M853.333 938.667H170.667A42.667 42.667 0 0 1 128 896V128a42.667 42.667 0 0 1 42.667-42.667h682.666A42.667 42.667 0 0 1 896 128v768a42.667 42.667 0 0 1-42.667 42.667zm-42.666-85.334V170.667H213.333v682.666h597.334zM298.667 256h170.666v170.667H298.667V256zm0 256h426.666v85.333H298.667V512zm0 170.667h426.666V768H298.667v-85.333zm256-384h170.666V384H554.667v-85.333z"}));Hr.displayName="ArticleIcon";const Nm=e=>{const t=Pt();return b(()=>{const{["author"]:n}=e.value;return n?xi(n):n===!1?[]:xi(t.value.author,!1)})},$m=e=>{const t=Ui();return b(()=>Zu(e.value.category).map(n=>({name:n,path:t.value.map[n].path})))},jm=e=>{const t=Wi();return b(()=>ep(e.value.tag).map(n=>({name:n,path:t.value.map[n].path})))},Hm=e=>b(()=>{const{["date"]:t}=e.value;return br(t)}),zm=e=>{const t=ii(e,"info"),n=Hi(),i=Nm(t),l=$m(t),a=jm(t),r=Hm(t),o=Uu(),c=b(()=>({author:i.value,category:l.value,date:r.value,tag:a.value,isOriginal:t.value.isOriginal??!1,readingTime:t.value.readingTime??null,readingTimeLocale:t.value.readingTime&&o.value?zu(t.value.readingTime,o.value):null,pageview:e.path})),d=b(()=>n.value.articleInfo??null);return{info:c,items:d}};var Um=I({name:"ArticleItem",props:{info:{type:Object,required:!0},path:{type:String,required:!0}},slots:Object,setup(e,{slots:t}){const n=ii(e,"info"),{info:i,items:l}=zm(e),a=Yt();return()=>{const{title:r,type:o,isEncrypted:c=!1,cover:d=null,excerpt:u=null,sticky:p}=n.value,h=i.value;return s("div",{class:"vp-article-wrapper",onClick:E=>{E.target?.matches("summary")||(E.preventDefault(),a.push(e.path))}},s("article",{class:"vp-article-item",vocab:"https://schema.org/",typeof:"Article"},[t.articleCover?.({cover:d})??(d?[s("img",{class:"vp-article-cover",src:Ce(d),alt:"",loading:"lazy"}),s("meta",{property:"image",content:Ce(d)})]:[]),p?s(Hp):null,s(Ve,{to:e.path},()=>t.articleTitle?.({title:r,isEncrypted:c,type:o})??s("header",{class:"vp-article-title"},[c?s(Pp):null,o==="slide"?s(jp):null,s("span",{property:"headline"},r)])),t.articleExcerpt?.({excerpt:u})??(u?s("div",{class:"vp-article-excerpt",innerHTML:u}):null),s("hr",{class:"vp-article-hr"}),t.articleInfo?.(h)??s(cp,{info:h,items:l.value,onClick:E=>{E.stopPropagation()}})]))}}});const Wm='<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M64 512a448 448 0 1 0 896 0 448 448 0 1 0-896 0Z" fill="#FA5151"/><path d="m557.3 512 113.1-113.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L512 466.7 398.9 353.6c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L466.7 512 353.6 625.1c-12.5 12.5-12.5 32.8 0 45.3 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4L512 557.3l113.1 113.1c6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4c12.5-12.5 12.5-32.8 0-45.3L557.3 512z" fill="#FFF"/></svg>';var Gm=I({name:"Pagination",props:{total:{type:Number,default:10},perPage:{type:Number,default:10},current:{type:Number,default:1}},emits:["updateCurrentPage"],setup(e,{emit:t}){const n=new kr,i=Pt(),l=se(""),a=b(()=>i.value.paginationLocales),r=b(()=>Math.ceil(e.total/e.perPage)),o=b(()=>!!r.value&&r.value!==1),c=b(()=>r.value<7?!1:e.current>4),d=b(()=>r.value<7?!1:e.current<r.value-3),u=b(()=>{const{current:E}=e;let v=1,B=r.value;const k=[];r.value>=7&&(E<=4&&E<r.value-3?(v=1,B=5):E>4&&E>=r.value-3?(B=r.value,v=r.value-4):r.value>7&&(v=E-2,B=E+2));for(let D=v;D<=B;D++)k.push(D);return k}),p=E=>{t("updateCurrentPage",E)},h=E=>{const v=parseInt(E,10);v<=r.value&&v>0?p(v):n.pop(`${Wm}${a.value.errorText.replace(/\$page/gu,r.value.toString())}`)};return()=>s("div",{class:"vp-pagination"},o.value?s("nav",{class:"vp-pagination-list"},[s("div",{class:"vp-pagination-number "},[e.current>1?s("div",{class:"prev",role:"navigation",unselectable:"on",onClick:()=>{p(e.current-1)}},a.value.prev):null,c.value?[s("div",{role:"navigation",onClick:()=>{p(1)}},1),s("div",{class:"ellipsis"},"...")]:null,u.value.map(E=>s("div",{key:E,class:{active:e.current===E},role:"navigation",onClick:()=>{p(E)}},E)),d.value?[s("div",{class:"ellipsis"},"..."),s("div",{role:"navigation",onClick:()=>{p(r.value)}},r.value)]:null,e.current<r.value?s("div",{class:"next",role:"navigation",unselectable:"on",onClick:()=>{p(e.current+1)}},a.value.next):null]),s("div",{class:"vp-pagination-nav"},[s("label",{for:"navigation-text"},`${a.value.navigate}: `),s("input",{id:"navigation-text",value:l.value,onInput:({target:E})=>{l.value=E.value},onKeydown:E=>
2946{E.key==="Enter"&&(E.preventDefault(),h(l.value))}}),s("button",{class:"vp-pagination-button",type:"button",role:"navigation",title:a.value.action,onClick:()=>{h(l.value)}},a.value.action)])]):[])}}),zr=I({name:"ArticleList",props:{items:{type:Array,required:!0}},slots:Object,setup(e,{slots:t}){const n=xt(),i=Yt(),l=Zt(),a=Hi(),r=se(1),o=b(()=>a.value.articlePerPage??10),c=b(()=>e.items.slice((r.value-1)*o.value,r.value*o.value)),d=async u=>{r.value=u;const p={...n.query};!(p.page===u.toString()||u===1&&!p.page)&&(u===1?delete p.page:p.page=u.toString(),await i.push({path:n.path,query:p}))};return ye(()=>{const{page:u}=n.query;d(u?Number(u):1),we(r,()=>{const p=document.querySelector("#article-list").getBoundingClientRect().top+window.scrollY;setTimeout(()=>{window.scrollTo(0,p)},100)})}),()=>s("div",{id:"article-list",class:"vp-article-list",role:"feed"},c.value.length?[...c.value.map(({info:u,path:p},h)=>s(oe,{appear:!0,delay:h*.04},()=>s(Um,{key:p,info:u,path:p},t))),s(Gm,{current:r.value,perPage:o.value,total:e.items.length,onUpdateCurrentPage:d})]:s("h2",{class:"vp-empty-hint"},l.value.empty.replace("$text",l.value.article.toLocaleLowerCase())))}});const qm="//theme-hope-assets.vuejs.press/hero/default.jpg";var Km=I({name:"BlogHero",slots:Object,setup(e,{slots:t}){const{frontmatter:n,siteLocale:i}=Pe(),l=b(()=>{const{heroText:o,heroStyle:c,tagline:d,heroFullScreen:u=!1}=n.value;return{text:o??(i.value.title||"Hello"),tagline:d??"",style:c??null,isFullScreen:u}}),a=b(()=>{const{heroImage:o,heroImageDark:c,heroAlt:d,heroImageStyle:u}=n.value;return{image:o?Ce(o):null,imageDark:c?Ce(c):null,style:u??null,alt:d??""}}),r=b(()=>{const{bgImage:o,bgImageDark:c,bgImageStyle:d}=n.value;return{image:me(o)?Ce(o):o===!1?null:qm,imageDark:me(c)?Ce(c):null,style:d??null}});return()=>n.value.hero===!1?null:s("div",{class:["vp-blog-hero",{"hero-fullscreen":n.value.heroFullScreen,"no-bg":!r.value.image}]},[t.heroBg?.(r.value)??[r.value.image?s("div",{class:["vp-blog-mask",{light:r.value.imageDark}],style:[{background:`url(${r.value.image}) center/cover no-repeat`},r.value.style]}):null,r.value.imageDark?s("div",{class:"vp-blog-mask dark",style:[{background:`url(${r.value.imageDark}) center/cover no-repeat`},r.value.style]}):null],t.heroLogo?.(a.value)??s(oe,{appear:!0,group:!0,delay:.04},()=>{const{image:o,imageDark:c,style:d,alt:u}=a.value;return[o?s("img",{key:"light",class:["vp-blog-hero-image",{light:c}],style:d,src:o,alt:u}):null,c?s("img",{key:"dark",class:"vp-blog-hero-image dark",style:d,src:c,alt:u}):null]}),t.heroInfo?.(l.value)??s("div",{class:"vp-blog-hero-info"},[s(oe,{appear:!0,delay:.08},()=>l.value.text?s("h1",{class:"vp-blog-hero-title"},l.value.text):null),s(oe,{appear:!0,delay:.12},()=>l.value.tagline?s("div",{class:"vp-blog-hero-description",innerHTML:l.value.tagline}):null)]),n.value.heroFullScreen?s(Or,{onClick:()=>window.scrollTo({top:window.innerHeight-(document.querySelector("[vp-navbar]")?.clientHeight??0),behavior:"smooth"})}):null])}}),Qm=I({name:"ArticlesInfo",setup(){const e=zi(),t=Zt(),n=Vr(),i=Xt(),l=b(()=>e.value.items.length),a=b(()=>n.value.items);return()=>s(oe,()=>s("div",{class:"vp-star-article-wrapper"},[s("div",{class:"title",onClick:()=>{i(e.value.path)}},[s(Hr),s("span",{class:"num"},l.value),t.value.article]),s("hr"),a.value.length?s("ul",{class:"vp-star-articles"},a.value.map(({info:r,path:o},c)=>s(oe,{appear:!0,delay:.08*(c+1)},()=>s("li",{class:"vp-star-article"},s(Ve,{to:o},()=>r.title))))):s("div",{class:"vp-star-article-empty"},t.value.empty.replace("$text",t.value.star))]))}}),zp=I({name:"CategoryList",setup(){const e=Pl(),t=Ui();return()=>s("ul",{class:"vp-category-list"},Rn(t.value.map).sort(([,n],[,i])=>i.items.length-n.items.length).map(([n,{path:i,items:l}])=>s("li",{class:"vp-category-item"},s(Ve,{class:["vp-category",`color${$i(n,Number(ci.colorNumber))}`,{active:i===e.value.path}],to:i},()=>[n,s("span",{class:"vp-category-count"},l.length)]))))}}),Ym=I({name:"CategoriesInfo",setup(){const e=Zt(),t=Ui(),n=Xt(),i=b(()=>Gt(t.value.map).length);return()=>s("div",{class:"vp-category-wrapper"},[i.value?[s("div",{class:"title",onClick:()=>{n(t.value.path)}},[s(Nr),s("span",{class:"num"},i.value),e.value.category]),s("hr"),s(oe,{delay:.04},()=>s(zp))]:s("div",{class:"vp-category-empty"},e.value.empty.replace("$text",e.value.category))])}}),Up=I({name:"TagList",setup(){const e=Et(),t=Wi(),n=i=>i===e.value.blog?.name;return()=>s("ul",{class:"vp-tag-list"},Rn(t.value.map).sort(([,i],[,l])=>l.items.length-i.items.length).map(([i,{path:l,items:a}])=>s("li",{class:"vp-tag-item"},s(Ve,{class:["vp-tag",`color${$i(i,Number(ci.colorNumber))}`,{active:n(i)}],to:l},()=>[i,s("span",{class:"vp-tag-count"}
2946,a.length)]))))}}),Jm=I({name:"TagsInfo",setup(){const e=Zt(),t=Wi(),n=Xt(),i=b(()=>Gt(t.value.map).length);return()=>s("div",{class:"vp-tag-wrapper"},[i.value?[s("div",{class:"title",onClick:()=>{n(t.value.path)}},[s($r),s("span",{class:"num"},i.value),e.value.tag]),s("hr"),s(oe,{delay:.04},()=>s(Up))]:s("div",{class:"vp-tag-empty"},e.value.empty.replace("$text",e.value.tag))])}}),Xm=I({name:"TimelineList",setup(){const e=Zt(),t=Ir(),n=Xt();return()=>s("div",{class:"timeline-list-wrapper"},[s("div",{class:"title",onClick:()=>{n(t.value.path)}},[s(jr),s("span",{class:"num"},t.value.items.length),e.value.timeline]),s("hr"),s("div",{class:"timeline-content"},s("ul",{class:"timeline-list"},t.value.config.map(({year:i,items:l},a)=>s(oe,{appear:!0,delay:.08*(a+1)},()=>s("li",[s("h3",{class:"timeline-year"},i),s("ul",{class:"timeline-year-wrapper"},l.map(({date:r,info:o,path:c})=>s("li",{class:"timeline-item"},[s("span",{class:"timeline-date"},r),s(Ve,{class:"timeline-title",to:c},()=>o.title)])))])))))])}});const Zm={article:Hr,category:Nr,tag:$r,timeline:jr};var Wp=I({name:"InfoList",setup(){const e=Zt(),t=se("article");return()=>s("div",{class:"vp-blog-infos"},[s("div",{class:"vp-blog-type-switcher"},Rn(Zm).map(([n,i])=>s("button",{type:"button",class:"vp-blog-type-button",onClick:()=>{t.value=n}},s("div",{class:["vp-blog-type-icon-wrapper",{active:t.value===n}],"aria-label":e.value[n],"data-balloon-pos":"down"},s(i))))),s(oe,()=>t.value==="article"?s(Qm):t.value==="category"?s(Ym):t.value==="tag"?s(Jm):s(Xm))])}});const Gi=(e,{slots:t})=>s("aside",{class:"vp-blog-info-wrapper"},[t.infoBefore?.(),s(oe,()=>s(Mr,{},t)),s(oe,{delay:.04},()=>s(Wp)),t.infoAfter?.()]);Gi.displayName="InfoPanel";var e2=I({name:"ProjectPanel",props:{items:{type:Array,required:!0}},setup(e){const t=tt(),n=Xt();return()=>s("div",{class:"vp-project-panel"},e.items.map(({icon:i,link:l,name:a,desc:r,background:o})=>s("a",{class:["vp-project-card",{[`color${$i(a,Number(ci.colorNumber))}`]:!t.value&&!o}],...o?{style:o}:{},href:Rl(l)?Ce(l):l,onClick:c=>{n(l),c.preventDefault()}},[i?s(xe("VPIcon"),{class:"vp-project-icon",icon:i}):null,s("div",{class:"vp-project-name"},a),s("div",{class:"vp-project-desc"},r)])))}}),t2=I({name:"BlogHome",slots:Object,setup(e,{slots:t}){const n=zi(),i=Et(),l=b(()=>i.value.projects??[]);return()=>s("div",{class:"vp-page vp-blog-home"},[t.heroBefore?.(),s(Km,{},t),t.heroAfter?.(),s("div",{class:"blog-page-wrapper"},[s("main",{id:"main-content",class:"vp-blog-main"},[t.articlesBefore?.()??(l.value.length?s(oe,{appear:!0,delay:.16},()=>s(e2,{items:l.value})):null),s(oe,{appear:!0,delay:.24},()=>s(zr,{items:n.value.items},t)),t.articlesAfter?.()]),s(oe,{appear:!0,delay:.16},()=>s(Gi,{key:"blog"},t))]),t.content?.()??s(oe,{appear:!0,delay:.28},()=>s(Il,{},t))])}}),n2=I({name:"BlogMainLayout",slots:Object,setup(e,{slots:t}){const{isMobile:n}=Ol();return()=>[s(Lr),s(Rr,{noSidebar:!n.value,noToc:!0},{...t,navScreenBottom:()=>t.navScreenBottom?.()??s(Mr,{},t),sidebarItems:i=>t.sidebarItems?.(i)??(n.value?s(Wp):null)})]}}),i2=I({name:"CategoryPage",slots:Object,setup(e,{slots:t}){const n=Pl(),i=Et(),l=Ui(),a=Wi(),r=b(()=>{const o=i.value.blog;if(o?.type!=="category")return null;const{name:c,key:d}=o;return d==="category"?{component:zp,items:c?l.value.map[c].items:null}:d==="tag"?{component:Up,items:c?a.value.map[c].items:null}:null});return()=>s("div",{class:"vp-page vp-blog"},s("div",{class:"blog-page-wrapper"},[s("main",{id:"main-content",class:"vp-blog-main"},t.default?.()??[s(oe,{appear:!0},()=>r.value?s(r.value.component):null),t.articlesBefore?.(),r.value?.items?s(oe,{appear:!0,delay:.08},()=>[s(zr,{key:n.value.path,items:r.value.items},t)]):null,t.articlesAfter?.()]),s(oe,{delay:.16},()=>s(Gi,{key:"blog"},t))]))}}),l2=I({name:"TimelineItems",setup(){const e=Hi(),t=Zt(),n=Ir(),i=b(()=>e.value.timeline??t.value.timelineTitle);return()=>s("div",{class:"timeline-wrapper"},s("ul",{class:"timeline-content"},[s(oe,()=>s("li",{class:"motto"},i.value)),n.value.config.map(({year:l,items:a},r)=>s(oe,{appear:!0,delay:.08*(r+1),group:!0},()=>[s("h3",{key:"title",id:l,class:"timeline-year-title"}
2946,s("span",l)),s("li",{key:"content",class:"timeline-year-list"},[s("ul",{class:"timeline-year-wrapper"},a.map(({date:o,info:c,path:d})=>s("li",{class:"timeline-item"},[s("span",{class:"timeline-date"},o),s(Ve,{class:"timeline-title",to:d},()=>c.title)])))])]))]))}});const Gp=(e,{slots:t})=>s("div",{class:"vp-page vp-blog"},s("div",{class:"blog-page-wrapper"},[s("main",{id:"main-content",class:"vp-blog-main"},[t.articlesBefore?.(),s(oe,{appear:!0},()=>s(l2)),t.articlesAfter?.()]),s(oe,{appear:!0},()=>s(Gi,{key:"blog"},t))]));Gp.displayName="TimelinePage";var a2=I({name:"ArticleType",setup(){const{page:e,routeLocale:t}=Pe(),n=zi(),i=Vr(),l=Zt(),a=b(()=>[{text:l.value.all,path:n.value.path},{text:l.value.star,path:i.value.path},...Rm.map(({key:r,path:o})=>{const c=o.replace(/^\//,t.value);return{text:l.value[r]??At(c).meta.title??r,path:c}})]);return()=>s("ul",{class:"vp-article-type-wrapper"},a.value.map(r=>s("li",{class:["vp-article-type",{active:r.path===e.value.path}]},s(Ve,{to:r.path},()=>r.text))))}}),r2=I({name:"TypePage",slots:Object,setup(e,{slots:t}){const n=Ml(),i=Et(),l=Pl(),a=zi(),r=Vr(),o=b(()=>{const c=i.value.blog;return c?.type!=="type"||!c.key?a.value.items:c.key==="star"?r.value.items:n.value.items});return()=>s("div",{class:"vp-page vp-blog"},s("div",{class:"blog-page-wrapper"},[s("main",{id:"main-content",class:"vp-blog-main"},t.default?.()??[s(oe,()=>s(a2)),t.articlesBefore?.(),s(oe,{appear:!0,delay:.08},()=>s(zr,{key:l.value.path,items:o.value})),t.articlesAfter?.()]),s(oe,{appear:!0,delay:.08},()=>s(Gi,{key:"blog"},t))]))}}),s2=I({name:"Blog",slots:Object,setup(e,{slots:t}){const n=Et();return()=>{const{type:i,key:l}=n.value.blog??{};return s(n2,null,{...t,default:()=>t.default?.()??s(i==="category"?i2:i==="type"?l==="timeline"?Gp:r2:t2,null,t)})}}});const o2=()=>{Lm(),Om(),Vm(),Im(),Mm()};q8(e=>{const t=e.title,n=e.index??!0,i=e.icon;return n?{title:t,content:i?()=>[s(xe("VPIcon"),{icon:i,sizing:"both"}),t]:null,order:e.order,index:e.index}:null});const c2={enhance:({app:e,router:t})=>{const{scrollBehavior:n}=t.options;t.options.scrollBehavior=async(...i)=>(await $a.wait(),n(...i)),jg(e),e.component("BloggerInfo",Mr),e.component("SocialMedias",Op)},setup:()=>{Hg(),Wg(),o2()},layouts:{Layout:wm,NotFound:xm,Blog:s2}},u2=Object.freeze(Object.defineProperty({__proto__:null,default:c2},Symbol.toStringTag,{value:"Module"})),p2={enhance:({app:e})=>{e.component("BlurText",rc(()=>f(()=>import("./BlurText-BDLINKHs.js"),__vite__mapDeps([283,1]))))}},d2=Object.freeze(Object.defineProperty({__proto__:null,default:p2},Symbol.toStringTag,{value:"Module"}));function h2(e,t,n){var i,l,a;n===void 0&&(n={});var r=(i=n.isImmediate)!=null&&i,o=(l=n.callback)!=null&&l,c=n.maxWait,d=Date.now(),u=[];function p(){if(c!==void 0){var E=Date.now()-d;if(E+t>=c)return c-E}return t}var h=function(){var E=[].slice.call(arguments),v=this;return new Promise(function(B,k){var D=r&&a===void 0;if(a!==void 0&&clearTimeout(a),a=setTimeout(function(){if(a=void 0,d=Date.now(),!r){var m=e.apply(v,E);o&&o(m),u.forEach(function(_){return(0,_.resolve)(m)}),u=[]}},p()),D){var y=e.apply(v,E);return o&&o(y),B(y)}u.push({resolve:B,reject:k})})};return h.cancel=function(E){a!==void 0&&clearTimeout(a),u.forEach(function(v){return(0,v.reject)(E)}),u=[]},h}var E2={appId:"KPJEYDTI5K",apiKey:"80f988070f3872d6d0e6595399a2a9d3",indexName:"chiichenio",locales:{"/":{placeholder:"æç´¢ææ¡£",translations:{button:{buttonText:"æç´¢ææ¡£",buttonAriaLabel:"æç´¢ææ¡£"},modal:{searchBox:{clearButtonTitle:"æ¸
餿¥è¯¢æ¡ä»¶",clearButtonAriaLabel:"æ¸
餿¥è¯¢æ¡ä»¶",closeButtonText:"å
³é",closeButtonAriaLabel:"å
³é",placeholderText:"æç´¢ææ¡£",placeholderTextAskAi:"å AI 婿æé®",placeholderTextAskAiStreaming:"åçä¸...",searchInputLabel:"æç´¢",backToKeywordSearchButtonText:"è¿åå
³é®åæç´¢",backToKeywordSearchButtonAriaLabel:"è¿åå
³é®åæç´¢",newConversationPlaceholder:"询é®é®é¢",conversationHistoryTitle:"对è¯åå²",startNewConversationText:"æ°å¯¹è¯",viewConversationHistoryText:"对è¯åå²",resetButtonTitle:"æ¸
餿¥è¯¢æ¡ä»¶",resetButtonAriaLabel:"æ¸
餿¥è¯¢æ¡ä»¶",cancelButtonText:"åæ¶",cancelButtonAriaLabel:"åæ¶"},startScreen:{recentSearchesTitle:"æç´¢åå²",noRecentSearchesText:"没ææç´¢åå²",saveRecentSearchButtonTitle:"ä¿åè³æç´¢åå²",removeRecentSearchButtonTitle:"ä»æç´¢åå²ä¸ç§»é¤",favoriteSearchesTitle:"æ¶è",removeFavoriteSearchButtonTitle:"仿¶èä¸ç§»é¤",recentConversationsTitle:"æè¿å¯¹è¯",removeRecentConversationButtonTitle:"仿è¿å¯¹è¯ä¸ç§»é¤"},errorScreen:{titleText:"æ æ³è·åç»æ",helpText:"ä½ å¯è½éè¦æ£æ¥ä½ çç½ç»è¿æ¥"},noResultsScreen:{noResultsText:"æ æ³æ¾å°ç¸å
³ç»æ",suggestedQueryText:"ä½ å¯ä»¥å°è¯æ¥è¯¢",reportMissingResultsText:"ä½ è®¤ä¸ºè¯¥æ¥è¯¢åºè¯¥æç»æï¼",reportMissingResultsLinkText:"ç¹å»åé¦"},resultsScreen:{askAiPlaceholder:"询é®AIï¼",noResultsAskAiPlaceholder:"æ²¡ææ¾å°ææ¡£ï¼è®© AI æ¥å¸®å¿ï¼"},askAiScreen:{disclaimerText:"AI 婿çåçå¯è½ä¸åç¡®ãèªè¡éªè¯åå¤ã",relatedSourcesText:"ç¸å
³èµæº",thinkingText:"æèä¸...",copyButtonText:"å¤å¶",copyButtonCopiedText:"å·²å¤å¶",copyButtonTitle:"å¤å¶",likeButtonTitle:"æå¸®å©",dislikeButtonTitle:"没帮å©",thanksForFeedbackText:"æè°¢æ¨çåé¦ï¼",preToolCallText:"æç´¢ä¸...",duringToolCallText:"æç´¢",afterToolCallText:"å·²æç´¢",stoppedStreamingText:"ä½ åæ¢äºæ¤åå¤"},footer:{selectText:"éæ©",submitQuestionText:"æäº¤é®é¢",selectKeyAriaLabel:"å车é®",navigateText:"忢",navigateUpKeyAriaLabel:"ä¸ç®å¤´",n
2946avigateDownKeyAriaLabel:"ä¸ç®å¤´",closeText:"å
³é",backToSearchText:"è¿åæç´¢",closeKeyAriaLabel:"ESC é®",poweredByText:"æç´¢æä¾è
",searchByText:"æç´¢æä¾è
"}}}},"/en/":{placeholder:"Search Documentation",translations:{button:{buttonText:"Search Documentation"}}}}};const f2=(e,t)=>{const n=fe("keydown",i=>{const{keyboardShortcuts:l={}}=e.value,a=l["Ctrl/Cmd+K"]!==!1&&i.key==="k"&&(gu()||_r()?i.metaKey:i.ctrlKey),r=l["/"]!==!1&&i.key==="/";(a||r)&&(i.preventDefault(),t(),n())})},g2=()=>{const e=Yt();return{transformItems:t=>t.map(n=>({...n,url:`/${Er(IE(n.url,"/"))}`})),navigator:{navigate:({itemUrl:t})=>{e.push(t.replace("/","/"))}},transformSearchClient:t=>({...t,search:h2(t.search,500)})}},m2=E2,v2=se(m2),qp=Symbol(""),A2=()=>{const e=ve(qp),t=Fl();return b(()=>({...e.value,...e.value.locales?.[t.value]}))},B2=e=>{e.provide(qp,Kt(v2))},y2=(e,t=[])=>[`lang:${e}`,...Array.isArray(t)?t:[t]],_2=(e,t)=>{const{indices:n,indexName:i,searchParameters:l}=e;return(n??[{name:i??"",searchParameters:l}]).map(a=>{if(me(a))return{name:a,searchParameters:l};const{searchParameters:r,...o}=a;return{...o,searchParameters:{...r,facetFilters:y2(t,r?.facetFilters)}}})},b2=({buttonText:e="Search",buttonAriaLabel:t=e}={})=>{const n=gu()||_r();return`<button type="button" aria-label="${t}" aria-keyshortcuts="${n?"Command":"Control"}+k" class="DocSearch DocSearch-Button"><span class="DocSearch-Button-Container"><svg width="20" height="20" viewBox="0 0 24 24" aria-hidden="true" class="DocSearch-Search-Icon"><circle cx="11" cy="11" r="8" stroke="currentColor" fill="none" stroke-width="1.4"></circle><path d="m21 21-4.3-4.3" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key DocSearch-Button-Key--${n?"command":"ctrl"}">${n?"â":"Ctrl"}</kbd><kbd class="DocSearch-Button-Key DocSearch-Button-Key--pressed">K</kbd></span></button>`},Kp=()=>
2946{if(document.querySelector(".DocSearch-Modal"))return;const e=new Event("keydown");e.key="k",e.metaKey=!0,window.dispatchEvent(e),setTimeout(Kp,16)},k2=e=>{const t="algolia-preconnect";("requestIdleCallback"in window?window.requestIdleCallback:setTimeout)(()=>{if(document.head.querySelector(`#${t}`))return;const n=document.createElement("link");n.id=t,n.rel="preconnect",n.href=`https://${e}-dsn.algolia.net`,n.crossOrigin="",document.head.appendChild(n)})},C2=I({name:"DocSearch",props:{containerId:{type:String,default:"docsearch-container"},options:{type:Object,default:()=>({})}},setup(e){const t=A2(),n=g2(),i=Sl(),l=Fl(),a=se(!1),r=se(!1),o=b(()=>{const{locales:u={},...p}=e.options;return{...t.value,...p,...u[l.value]}}),c=async()=>{const{default:u}=await f(async()=>{const{default:p}=await import("./index-PJms1hp3.js");return{default:p}},[]);u({...n,...o.value,container:`#${e.containerId}`,indices:_2(o.value,i.value)}),a.value=!0},d=()=>{r.value||a.value||(r.value=!0,c(),Kp(),we(l,c))};return f2(o,d),ye(()=>{k2(o.value.appId)}),()=>[s("div",{id:e.containerId,style:{display:a.value?"block":"none"}}),a.value?null:s("div",{onClick:d,innerHTML:b2(o.value.translations?.button)})]}}),D2={enhance({app:e}){B2(e),e.component("SearchBox",C2)}},T2=Object.freeze(Object.defineProperty({__proto__:null,default:D2},Symbol.toStringTag,{value:"Module"})),ll=[M1,V1,N1,q1,K1,Y1,J1,i8,l8,a8,p8,f8,B8,b8,M8,N8,G8,Z8,ag,Eg,Bg,u2,d2,T2].map(e=>e.default).filter(Boolean),w2=JSON.parse(`{"base":"/","lang":"en-US","title":"","description":"","head":[["script",{"src":"https://www.googletagmanager.com/gtag/js?id=G-0ENBRM6T52","async":true}],["script",{},"\\n window.dataLayer = window.dataLayer || [];\\n function gtag(){dataLayer.push(arguments);}\\n gtag('js', new Date());\\n gtag('config', 'G-0ENBRM6T52');\\n "],["link",{"rel":"icon","href":"/KissingCat.jpg"}]],"locales":{"/":{"lang":"zh-CN","title":"chiichen's Blog","description":"å客æè°"},"/en/":{"lang":"en-US","title":"chiichen's Blog","description":"A blog of mine"}}}`);var jn=ae(w2),x2=S0,F2=()=>{const e=Z0({history:x2(hr("/")),routes:[{name:"vuepress-route",path:"/:catchAll(.*)",components:{}}
2946],scrollBehavior:(t,n,i)=>i||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{if(t.path!==n.path||n===Ht){const i=At(t.fullPath);if(i.path!==t.fullPath)return i.path;const l=await i.loader();t.meta={...i.meta,_pageChunk:l}}else t.path===n.path&&(t.meta=n.meta)}),e},S2=e=>{e.component("ClientOnly",vr),e.component("Content",ru),e.component("RouteLink",Ve)},P2=(e,t,n)=>{const i=b(()=>t.currentRoute.value.path),l=Qo((k,D)=>({get(){return k(),t.currentRoute.value.meta._pageChunk},set(y){t.currentRoute.value.meta._pageChunk=y,D()}})),a=b(()=>An.resolveLayouts(n)),r=b(()=>An.resolveRouteLocale(jn.value.locales,i.value)),o=b(()=>An.resolveSiteLocaleData(jn.value,r.value)),c=b(()=>l.value.comp),d=b(()=>l.value.data),u=b(()=>d.value.frontmatter),p=b(()=>An.resolvePageHeadTitle(d.value,o.value)),h=b(()=>An.resolvePageHead(p.value,u.value,o.value)),E=b(()=>An.resolvePageLang(d.value,o.value)),v=b(()=>An.resolvePageLayout(d.value,a.value)),B={layouts:a,pageData:d,pageComponent:c,pageFrontmatter:u,pageHead:h,pageHeadTitle:p,pageLang:E,pageLayout:v,redirects:xa,routeLocale:r,routePath:i,routes:Yn,siteData:jn,siteLocaleData:o,frontmatter:u,head:h,headTitle:p,lang:E,page:d,site:jn,siteLocale:o};return e.provide(mr,B),Object.defineProperties(e.config.globalProperties,{$pageFrontmatter:{get:()=>u.value},$pageHead:{get:()=>h.value},$pageHeadTitle:{get:()=>p.value},$pageLang:{get:()=>E.value},$pageData:{get:()=>d.value},$routeLocale:{get:()=>r.value},$withBase:{get:()=>Ce},$frontmatter:{get:()=>u.value},$head:{get:()=>h.value},$headTitle:{get:()=>p.value},$lang:{get:()=>E.value},$page:{get:()=>d.value},$site:{get:()=>jn.value},$siteLocale:{get:()=>o.value}}),B},R2=([e,t,n=""])=>{const i=Object.entries(t).map(([o,c])=>me(c)?`[${o}=${JSON.stringify(c)}]`:c?`[${o}]`:"").join(""),l=`head > ${e}${i}`;return Array.from(document.querySelectorAll(l)).find(o=>o.innerText===n)??null},L2=([e,t,n])=>{if(!me(e))return null;const i=document.createElement(e);return ai(t)&&Object.entries(t).forEach(([l,a])=>{me(a)?i.setAttribute(l,a):a&&i.setAttribute(l,"")}),me(n)&&i.appendChild(document.createTextNode(n)),i},O2=()=>{const e=nf(),t=lu();let n=[];const i=()=>{e.value.forEach(r=>{const o=R2(r);o&&n.push(o)})},l=()=>{const r=[];return e.value.forEach(o=>{const c=L2(o);c&&r.push(c)}),r},a=()=>{document.documentElement.lang=t.value;const r=l();n.forEach((o,c)=>{const d=r.findIndex(u=>o.isEqualNode(u));d===-1?(o.remove(),delete n[c]):r.splice(d,1)}),r.forEach(o=>document.head.appendChild(o)),n=[...n.filter(o=>!!o),...r]};Ct(of,a),ye(()=>{i(),we(e,a,{immediate:!1})})},I2=xE,M2=async()=>{const e=I2({name:"Vuepress",setup(){O2();for(const l of ll)l.setup?.();const n=ll.flatMap(({rootComponents:l=[]})=>l.map(a=>s(a))),i=lf();return()=>[s(i.value),n]}}),t=F2();S2(e),P2(e,t,ll);for(const n of ll)await n.enhance?.({app:e,router:t,siteData:jn});return e.use(t),{app:e,router:t}};M2().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{f as _,Fc as a,Sc as b,N2 as c,M2 as createVueApp,$2 as d,Me as e,V2 as o,xe as r,od as t};
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.