Build: 周日 2025/11/02 20:25:30.66
This commit is contained in:
1
about/index.html
Normal file
1
about/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
article/8gihio2v/index.html
Normal file
1
article/8gihio2v/index.html
Normal file
File diff suppressed because one or more lines are too long
62
article/deploying-wsl2-on-windows-10/index.html
Normal file
62
article/deploying-wsl2-on-windows-10/index.html
Normal file
File diff suppressed because one or more lines are too long
40
article/operate-wsl2/index.html
Normal file
40
article/operate-wsl2/index.html
Normal file
File diff suppressed because one or more lines are too long
1
article/xinchuang-competition-2025/index.html
Normal file
1
article/xinchuang-competition-2025/index.html
Normal file
File diff suppressed because one or more lines are too long
1
assets/404.html-BT5UyzYW.js
Normal file
1
assets/404.html-BT5UyzYW.js
Normal file
@@ -0,0 +1 @@
|
||||
import{_ as e,c as o,b as n,o as a}from"./app-CsTq_I9B.js";const r={};function l(s,t){return a(),o("div",null,[...t[0]||(t[0]=[n("p",null,"404 Not Found",-1)])])}const i=e(r,[["render",l]]),d=JSON.parse('{"path":"/404.html","title":"","lang":"zh-CN","frontmatter":{"layout":"NotFound"},"readingTime":{"minutes":0.01,"words":3},"git":{},"filePathRelative":null,"headers":[]}');export{i as comp,d as data};
|
||||
BIN
assets/KaTeX_AMS-Regular-BQhdFMY1.woff2
Normal file
BIN
assets/KaTeX_AMS-Regular-BQhdFMY1.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_AMS-Regular-DMm9YOAa.woff
Normal file
BIN
assets/KaTeX_AMS-Regular-DMm9YOAa.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_AMS-Regular-DRggAlZN.ttf
Normal file
BIN
assets/KaTeX_AMS-Regular-DRggAlZN.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf
Normal file
BIN
assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff
Normal file
BIN
assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2
Normal file
BIN
assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff
Normal file
BIN
assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2
Normal file
BIN
assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf
Normal file
BIN
assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf
Normal file
BIN
assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Fraktur-Bold-BsDP51OF.woff
Normal file
BIN
assets/KaTeX_Fraktur-Bold-BsDP51OF.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2
Normal file
BIN
assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Fraktur-Regular-CB_wures.ttf
Normal file
BIN
assets/KaTeX_Fraktur-Regular-CB_wures.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2
Normal file
BIN
assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff
Normal file
BIN
assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Main-Bold-Cx986IdX.woff2
Normal file
BIN
assets/KaTeX_Main-Bold-Cx986IdX.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Main-Bold-Jm3AIy58.woff
Normal file
BIN
assets/KaTeX_Main-Bold-Jm3AIy58.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Main-Bold-waoOVXN0.ttf
Normal file
BIN
assets/KaTeX_Main-Bold-waoOVXN0.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2
Normal file
BIN
assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf
Normal file
BIN
assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Main-BoldItalic-SpSLRI95.woff
Normal file
BIN
assets/KaTeX_Main-BoldItalic-SpSLRI95.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Main-Italic-3WenGoN9.ttf
Normal file
BIN
assets/KaTeX_Main-Italic-3WenGoN9.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Main-Italic-BMLOBm91.woff
Normal file
BIN
assets/KaTeX_Main-Italic-BMLOBm91.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Main-Italic-NWA7e6Wa.woff2
Normal file
BIN
assets/KaTeX_Main-Italic-NWA7e6Wa.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Main-Regular-B22Nviop.woff2
Normal file
BIN
assets/KaTeX_Main-Regular-B22Nviop.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Main-Regular-Dr94JaBh.woff
Normal file
BIN
assets/KaTeX_Main-Regular-Dr94JaBh.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Main-Regular-ypZvNtVU.ttf
Normal file
BIN
assets/KaTeX_Main-Regular-ypZvNtVU.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf
Normal file
BIN
assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2
Normal file
BIN
assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff
Normal file
BIN
assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Math-Italic-DA0__PXp.woff
Normal file
BIN
assets/KaTeX_Math-Italic-DA0__PXp.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Math-Italic-flOr_0UB.ttf
Normal file
BIN
assets/KaTeX_Math-Italic-flOr_0UB.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Math-Italic-t53AETM-.woff2
Normal file
BIN
assets/KaTeX_Math-Italic-t53AETM-.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf
Normal file
BIN
assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2
Normal file
BIN
assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff
Normal file
BIN
assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2
Normal file
BIN
assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_SansSerif-Italic-DN2j7dab.woff
Normal file
BIN
assets/KaTeX_SansSerif-Italic-DN2j7dab.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf
Normal file
BIN
assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf
Normal file
BIN
assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff
Normal file
BIN
assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2
Normal file
BIN
assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Script-Regular-C5JkGWo-.ttf
Normal file
BIN
assets/KaTeX_Script-Regular-C5JkGWo-.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Script-Regular-D3wIWfF6.woff2
Normal file
BIN
assets/KaTeX_Script-Regular-D3wIWfF6.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Script-Regular-D5yQViql.woff
Normal file
BIN
assets/KaTeX_Script-Regular-D5yQViql.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Size1-Regular-C195tn64.woff
Normal file
BIN
assets/KaTeX_Size1-Regular-C195tn64.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Size1-Regular-Dbsnue_I.ttf
Normal file
BIN
assets/KaTeX_Size1-Regular-Dbsnue_I.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Size1-Regular-mCD8mA8B.woff2
Normal file
BIN
assets/KaTeX_Size1-Regular-mCD8mA8B.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Size2-Regular-B7gKUWhC.ttf
Normal file
BIN
assets/KaTeX_Size2-Regular-B7gKUWhC.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Size2-Regular-Dy4dx90m.woff2
Normal file
BIN
assets/KaTeX_Size2-Regular-Dy4dx90m.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Size2-Regular-oD1tc_U0.woff
Normal file
BIN
assets/KaTeX_Size2-Regular-oD1tc_U0.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Size3-Regular-CTq5MqoE.woff
Normal file
BIN
assets/KaTeX_Size3-Regular-CTq5MqoE.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Size3-Regular-DgpXs0kz.ttf
Normal file
BIN
assets/KaTeX_Size3-Regular-DgpXs0kz.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Size4-Regular-BF-4gkZK.woff
Normal file
BIN
assets/KaTeX_Size4-Regular-BF-4gkZK.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Size4-Regular-DWFBv043.ttf
Normal file
BIN
assets/KaTeX_Size4-Regular-DWFBv043.ttf
Normal file
Binary file not shown.
BIN
assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2
Normal file
BIN
assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff
Normal file
BIN
assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff
Normal file
Binary file not shown.
BIN
assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2
Normal file
BIN
assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2
Normal file
Binary file not shown.
BIN
assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf
Normal file
BIN
assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf
Normal file
Binary file not shown.
8
assets/SearchBox-C1RlSAU5.js
Normal file
8
assets/SearchBox-C1RlSAU5.js
Normal file
File diff suppressed because one or more lines are too long
53
assets/app-CsTq_I9B.js
Normal file
53
assets/app-CsTq_I9B.js
Normal file
File diff suppressed because one or more lines are too long
36
assets/architectureDiagram-4X3Z3J56-BeO9gsKE.js
Normal file
36
assets/architectureDiagram-4X3Z3J56-BeO9gsKE.js
Normal file
File diff suppressed because one or more lines are too long
122
assets/blockDiagram-BWRZOBD3-DR5x5WPj.js
Normal file
122
assets/blockDiagram-BWRZOBD3-DR5x5WPj.js
Normal file
File diff suppressed because one or more lines are too long
10
assets/c4Diagram-Q5SP5FFD-BvItCO_c.js
Normal file
10
assets/c4Diagram-Q5SP5FFD-BvItCO_c.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/chunk-4KE642ED-D4iGNsEG.js
Normal file
1
assets/chunk-4KE642ED-D4iGNsEG.js
Normal file
@@ -0,0 +1 @@
|
||||
import{m as e}from"./mermaid.esm.min-vSKPWR4X.js";function a(c,t){c.accDescr&&t.setAccDescription?.(c.accDescr),c.accTitle&&t.setAccTitle?.(c.accTitle),c.title&&t.setDiagramTitle?.(c.title)}e(a,"populateCommonDb");export{a as c};
|
||||
1
assets/chunk-6EQESGSB-D8MQkSSJ.js
Normal file
1
assets/chunk-6EQESGSB-D8MQkSSJ.js
Normal file
@@ -0,0 +1 @@
|
||||
import{m,i as e}from"./mermaid.esm.min-vSKPWR4X.js";var r=m((o,t)=>{let a;return t==="sandbox"&&(a=e("#i"+o)),(t==="sandbox"?e(a.nodes()[0].contentDocument.body):e("body")).select(`[id="${o}"]`)},"getDiagramElement");export{r as m};
|
||||
338
assets/chunk-7SRKK4IT-D2ZGI2Yc.js
Normal file
338
assets/chunk-7SRKK4IT-D2ZGI2Yc.js
Normal file
File diff suppressed because one or more lines are too long
220
assets/chunk-AI4T2ZLM-DpT0rwVJ.js
Normal file
220
assets/chunk-AI4T2ZLM-DpT0rwVJ.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/chunk-CCU7O4O5-DjPcDqTJ.js
Normal file
1
assets/chunk-CCU7O4O5-DjPcDqTJ.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/chunk-EYG76IYJ-0wnl0jWc.js
Normal file
1
assets/chunk-EYG76IYJ-0wnl0jWc.js
Normal file
File diff suppressed because one or more lines are too long
13
assets/chunk-OMTJKCYW-CCUNQPi0.js
Normal file
13
assets/chunk-OMTJKCYW-CCUNQPi0.js
Normal file
File diff suppressed because one or more lines are too long
165
assets/chunk-P7EU7REX-CfiDT0A_.js
Normal file
165
assets/chunk-P7EU7REX-CfiDT0A_.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/chunk-T244DUNM-ROicv7Wv.js
Normal file
1
assets/chunk-T244DUNM-ROicv7Wv.js
Normal file
@@ -0,0 +1 @@
|
||||
import{m as a,W as g,p as s}from"./mermaid.esm.min-vSKPWR4X.js";var m=a((t,i,e,o)=>{t.attr("class",e);let{width:h,height:r,x:w,y:x}=n(t,i);g(t,r,h,o);let d=$(w,x,h,r,i);t.attr("viewBox",d),s.debug(`viewBox configured: ${d} with padding: ${i}`)},"setupViewPortForSVG"),n=a((t,i)=>{let e=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:e.width+i*2,height:e.height+i*2,x:e.x,y:e.y}},"calculateDimensionsWithPadding"),$=a((t,i,e,o,h)=>`${t-h} ${i-h} ${e} ${o}`,"createViewBox");export{m as y};
|
||||
1
assets/chunk-VSLJSFIP-gXPe0ly3.js
Normal file
1
assets/chunk-VSLJSFIP-gXPe0ly3.js
Normal file
@@ -0,0 +1 @@
|
||||
import{m as s}from"./mermaid.esm.min-vSKPWR4X.js";var t,e=(t=class{constructor(i){this.init=i,this.records=this.init()}reset(){this.records=this.init()}},s(t,"ImperativeState"),t);export{e as s};
|
||||
1
assets/chunk-WONJCSFZ-m6vCJ9jO.js
Normal file
1
assets/chunk-WONJCSFZ-m6vCJ9jO.js
Normal file
@@ -0,0 +1 @@
|
||||
import{m as l,z as n,q as d,f as h}from"./mermaid.esm.min-vSKPWR4X.js";var i=d(h()),y=l((s,t)=>{let r=s.append("rect");if(r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),t.name&&r.attr("name",t.name),t.rx&&r.attr("rx",t.rx),t.ry&&r.attr("ry",t.ry),t.attrs!==void 0)for(let a in t.attrs)r.attr(a,t.attrs[a]);return t.class&&r.attr("class",t.class),r},"drawRect"),o=l((s,t)=>{let r={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};y(s,r).lower()},"drawBackgroundRect"),p=l((s,t)=>{let r=t.text.replace(n," "),a=s.append("text");a.attr("x",t.x),a.attr("y",t.y),a.attr("class","legend"),a.style("text-anchor",t.anchor),t.class&&a.attr("class",t.class);let e=a.append("tspan");return e.attr("x",t.x+t.textMargin*2),e.text(r),a},"drawText"),g=l((s,t,r,a)=>{let e=s.append("image");e.attr("x",t),e.attr("y",r);let x=(0,i.sanitizeUrl)(a);e.attr("xlink:href",x)},"drawImage"),f=l((s,t,r,a)=>{let e=s.append("use");e.attr("x",t),e.attr("y",r);let x=(0,i.sanitizeUrl)(a);e.attr("xlink:href",`#${x}`)},"drawEmbeddedImage"),m=l(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),w=l(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj");export{f as E,g as d,w as f,o as g,m as h,y as x,p as y};
|
||||
15
assets/chunk-ZZTKAOFA-DbYRDN8h.js
Normal file
15
assets/chunk-ZZTKAOFA-DbYRDN8h.js
Normal file
@@ -0,0 +1,15 @@
|
||||
import{m as e}from"./mermaid.esm.min-vSKPWR4X.js";var l=e(()=>`
|
||||
/* Font Awesome icon styling - consolidated */
|
||||
.label-icon {
|
||||
display: inline-block;
|
||||
height: 1em;
|
||||
overflow: visible;
|
||||
vertical-align: -0.125em;
|
||||
}
|
||||
|
||||
.node .label-icon path {
|
||||
fill: currentColor;
|
||||
stroke: revert;
|
||||
stroke-width: revert;
|
||||
}
|
||||
`,"getIconStyles");export{l as o};
|
||||
1
assets/classDiagram-FKO7XAE5-CXUhyZWM.js
Normal file
1
assets/classDiagram-FKO7XAE5-CXUhyZWM.js
Normal file
@@ -0,0 +1 @@
|
||||
import{V as t,Q as a,C as s,l as e}from"./chunk-P7EU7REX-CfiDT0A_.js";import"./chunk-ZZTKAOFA-DbYRDN8h.js";import"./chunk-6EQESGSB-D8MQkSSJ.js";import"./chunk-T244DUNM-ROicv7Wv.js";import{m as o}from"./mermaid.esm.min-vSKPWR4X.js";import"./app-CsTq_I9B.js";var c={parser:s,get db(){return new e},renderer:a,styles:t,init:o(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
|
||||
1
assets/classDiagram-v2-XZHHGUJO-CXUhyZWM.js
Normal file
1
assets/classDiagram-v2-XZHHGUJO-CXUhyZWM.js
Normal file
@@ -0,0 +1 @@
|
||||
import{V as t,Q as a,C as s,l as e}from"./chunk-P7EU7REX-CfiDT0A_.js";import"./chunk-ZZTKAOFA-DbYRDN8h.js";import"./chunk-6EQESGSB-D8MQkSSJ.js";import"./chunk-T244DUNM-ROicv7Wv.js";import{m as o}from"./mermaid.esm.min-vSKPWR4X.js";import"./app-CsTq_I9B.js";var c={parser:s,get db(){return new e},renderer:a,styles:t,init:o(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
|
||||
71
assets/component-Cneac3cR.js
Normal file
71
assets/component-Cneac3cR.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/cose-bilkent-AZ5BDB2T-m6TW_sp7.js
Normal file
1
assets/cose-bilkent-AZ5BDB2T-m6TW_sp7.js
Normal file
File diff suppressed because one or more lines are too long
4
assets/dagre-X5LCLMGV-DZoMUJOt.js
Normal file
4
assets/dagre-X5LCLMGV-DZoMUJOt.js
Normal file
File diff suppressed because one or more lines are too long
24
assets/diagram-BZV4OSZQ-DAFeJbwg.js
Normal file
24
assets/diagram-BZV4OSZQ-DAFeJbwg.js
Normal file
@@ -0,0 +1,24 @@
|
||||
import{c as B}from"./chunk-4KE642ED-D4iGNsEG.js";import{p as C}from"./treemap-KMMF4GRG-7ORZ52ND-CF-wf9MV.js";import{m as f,L as u,aN as P,W as z,p as w,H as W,U as F,j as S,e as D,$ as E,G as T,O as N,r as L,N as A}from"./mermaid.esm.min-vSKPWR4X.js";import"./chunk-OMTJKCYW-CCUNQPi0.js";import"./app-CsTq_I9B.js";var H=L.packet,m,$=(m=class{constructor(){this.packet=[],this.setAccTitle=W,this.getAccTitle=F,this.setDiagramTitle=S,this.getDiagramTitle=D,this.getAccDescription=E,this.setAccDescription=T}getConfig(){let t=u({...H,...N().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){A(),this.packet=[]}},f(m,"PacketDB"),m),R=1e4,j=f((e,t)=>{B(e,t);let r=-1,i=[],l=1,{bitsPerRow:n}=t.getConfig();for(let{start:a,end:s,bits:c,label:d}of e.blocks){if(a!==void 0&&s!==void 0&&s<a)throw new Error(`Packet block ${a} - ${s} is invalid. End must be greater than start.`);if(a??=r+1,a!==r+1)throw new Error(`Packet block ${a} - ${s??a} is not contiguous. It should start from ${r+1}.`);if(c===0)throw new Error(`Packet block ${a} is invalid. Cannot have a zero bit field.`);for(s??=a+(c??1)-1,c??=s-a+1,r=s,w.debug(`Packet block ${a} - ${r} with label ${d}`);i.length<=n+1&&t.getPacket().length<R;){let[p,o]=G({start:a,end:s,bits:c,label:d},l,n);if(i.push(p),p.end+1===l*n&&(t.pushWord(i),i=[],l++),!o)break;({start:a,end:s,bits:c,label:d}=o)}}t.pushWord(i)},"populate"),G=f((e,t,r)=>{if(e.start===void 0)throw new Error("start should have been set during first phase");if(e.end===void 0)throw new Error("end should have been set during first phase");if(e.start>e.end)throw new Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*r)return[e,void 0];let i=t*r-1,l=t*r;return[{start:e.start,end:i,label:e.label,bits:i-e.start},{start:l,end:e.end,label:e.label,bits:e.end-l}]},"getNextFittingBlock"),y={parser:{yy:void 0},parse:f(async e=>{let t=await C("packet",e),r=y.parser?.yy;if(!(r instanceof $))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");w.debug(t),j(t,r)},"parse")},M=f((e,t,r,i)=>{let l=i.db,n=l.getConfig(),{rowHeight:a,paddingY:s,bitWidth:c,bitsPerRow:d}=n,p=l.getPacket(),o=l.getDiagramTitle(),h=a+s,b=h*(p.length+1)-(o?0:a),k=c*d+2,g=P(t);g.attr("viewbox",`0 0 ${k} ${b}`),z(g,b,k,n.useMaxWidth);for(let[x,v]of p.entries())O(g,v,x,n);g.append("text").text(o).attr("x",k/2).attr("y",b-h/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),O=f((e,t,r,{rowHeight:i,paddingX:l,paddingY:n,bitWidth:a,bitsPerRow:s,showBits:c})=>{let d=e.append("g"),p=r*(i+n)+n;for(let o of t){let h=o.start%s*a+1,b=(o.end-o.start+1)*a-l;if(d.append("rect").attr("x",h).attr("y",p).attr("width",b).attr("height",i).attr("class","packetBlock"),d.append("text").attr("x",h+b/2).attr("y",p+i/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(o.label),!c)continue;let k=o.end===o.start,g=p-2;d.append("text").attr("x",h+(k?b/2:0)).attr("y",g).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",k?"middle":"start").text(o.start),k||d.append("text").attr("x",h+b).attr("y",g).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(o.end)}},"drawWord"),Y={draw:M},U={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},V=f(({packet:e}={})=>{let t=u(U,e);return`
|
||||
.packetByte {
|
||||
font-size: ${t.byteFontSize};
|
||||
}
|
||||
.packetByte.start {
|
||||
fill: ${t.startByteColor};
|
||||
}
|
||||
.packetByte.end {
|
||||
fill: ${t.endByteColor};
|
||||
}
|
||||
.packetLabel {
|
||||
fill: ${t.labelColor};
|
||||
font-size: ${t.labelFontSize};
|
||||
}
|
||||
.packetTitle {
|
||||
fill: ${t.titleColor};
|
||||
font-size: ${t.titleFontSize};
|
||||
}
|
||||
.packetBlock {
|
||||
stroke: ${t.blockStrokeColor};
|
||||
stroke-width: ${t.blockStrokeWidth};
|
||||
fill: ${t.blockFillColor};
|
||||
}
|
||||
`},"styles"),K={parser:y,get db(){return new $},renderer:Y,styles:V};export{K as diagram};
|
||||
43
assets/diagram-DKYQLJNW-C7s-fkOn.js
Normal file
43
assets/diagram-DKYQLJNW-C7s-fkOn.js
Normal file
@@ -0,0 +1,43 @@
|
||||
import{c as I}from"./chunk-4KE642ED-D4iGNsEG.js";import{p as S}from"./treemap-KMMF4GRG-7ORZ52ND-CF-wf9MV.js";import{m as o,G as E,$ as F,e as z,j as P,U as G,H as R,aN as D,N,L as v,O as w,r as j,p as B,aT as H}from"./mermaid.esm.min-vSKPWR4X.js";import"./chunk-OMTJKCYW-CCUNQPi0.js";import"./app-CsTq_I9B.js";var x={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},b={axes:[],curves:[],options:x},u=structuredClone(b),V=j.radar,W=o(()=>v({...V,...w().radar}),"getConfig"),C=o(()=>u.axes,"getAxes"),U=o(()=>u.curves,"getCurves"),_=o(()=>u.options,"getOptions"),Z=o(a=>{u.axes=a.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),q=o(a=>{u.curves=a.map(t=>({name:t.name,label:t.label??t.name,entries:J(t.entries)}))},"setCurves"),J=o(a=>{if(a[0].axis==null)return a.map(e=>e.value);let t=C();if(t.length===0)throw new Error("Axes must be populated before curves for reference entries");return t.map(e=>{let r=a.find(i=>i.axis?.$refText===e.name);if(r===void 0)throw new Error("Missing entry for axis "+e.label);return r.value})},"computeCurveEntries"),K=o(a=>{let t=a.reduce((e,r)=>(e[r.name]=r,e),{});u.options={showLegend:t.showLegend?.value??x.showLegend,ticks:t.ticks?.value??x.ticks,max:t.max?.value??x.max,min:t.min?.value??x.min,graticule:t.graticule?.value??x.graticule}},"setOptions"),Q=o(()=>{N(),u=structuredClone(b)},"clear"),f={getAxes:C,getCurves:U,getOptions:_,setAxes:Z,setCurves:q,setOptions:K,getConfig:W,clear:Q,setAccTitle:R,getAccTitle:G,setDiagramTitle:P,getDiagramTitle:z,getAccDescription:F,setAccDescription:E},X=o(a=>{I(a,f);let{axes:t,curves:e,options:r}=a;f.setAxes(t),f.setCurves(e),f.setOptions(r)},"populate"),Y={parse:o(async a=>{let t=await S("radar",a);B.debug(t),X(t)},"parse")},tt=o((a,t,e,r)=>{let i=r.db,n=i.getAxes(),l=i.getCurves(),s=i.getOptions(),c=i.getConfig(),d=i.getDiagramTitle(),p=D(t),g=et(p,c),h=s.max??Math.max(...l.map(y=>Math.max(...y.entries))),m=s.min,$=Math.min(c.width,c.height)/2;at(g,n,$,s.ticks,s.graticule),rt(g,n,$,c),M(g,n,l,m,h,s.graticule,c),k(g,l,s.showLegend,c),g.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-c.height/2-c.marginTop)},"draw"),et=o((a,t)=>{let e=t.width+t.marginLeft+t.marginRight,r=t.height+t.marginTop+t.marginBottom,i={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return a.attr("viewbox",`0 0 ${e} ${r}`).attr("width",e).attr("height",r),a.append("g").attr("transform",`translate(${i.x}, ${i.y})`)},"drawFrame"),at=o((a,t,e,r,i)=>{if(i==="circle")for(let n=0;n<r;n++){let l=e*(n+1)/r;a.append("circle").attr("r",l).attr("class","radarGraticule")}else if(i==="polygon"){let n=t.length;for(let l=0;l<r;l++){let s=e*(l+1)/r,c=t.map((d,p)=>{let g=2*p*Math.PI/n-Math.PI/2,h=s*Math.cos(g),m=s*Math.sin(g);return`${h},${m}`}).join(" ");a.append("polygon").attr("points",c).attr("class","radarGraticule")}}},"drawGraticule"),rt=o((a,t,e,r)=>{let i=t.length;for(let n=0;n<i;n++){let l=t[n].label,s=2*n*Math.PI/i-Math.PI/2;a.append("line").attr("x1",0).attr("y1",0).attr("x2",e*r.axisScaleFactor*Math.cos(s)).attr("y2",e*r.axisScaleFactor*Math.sin(s)).attr("class","radarAxisLine"),a.append("text").text(l).attr("x",e*r.axisLabelFactor*Math.cos(s)).attr("y",e*r.axisLabelFactor*Math.sin(s)).attr("class","radarAxisLabel")}},"drawAxes");function M(a,t,e,r,i,n,l){let s=t.length,c=Math.min(l.width,l.height)/2;e.forEach((d,p)=>{if(d.entries.length!==s)return;let g=d.entries.map((h,m)=>{let $=2*Math.PI*m/s-Math.PI/2,y=L(h,r,i,c),A=y*Math.cos($),O=y*Math.sin($);return{x:A,y:O}});n==="circle"?a.append("path").attr("d",T(g,l.curveTension)).attr("class",`radarCurve-${p}`):n==="polygon"&&a.append("polygon").attr("points",g.map(h=>`${h.x},${h.y}`).join(" ")).attr("class",`radarCurve-${p}`)})}o(M,"drawCurves");function L(a,t,e,r){let i=Math.min(Math.max(a,t),e);return r*(i-t)/(e-t)}o(L,"relativeRadius");function T(a,t){let e=a.length,r=`M${a[0].x},${a[0].y}`;for(let i=0;i<e;i++){let n=a[(i-1+e)%e],l=a[i],s=a[(i+1)%e],c=a[(i+2)%e],d={x:l.x+(s.x-n.x)*t,y:l.y+(s.y-n.y)*t},p={x:s.x-(c.x-l.x)*t,y:s.y-(c.y-l.y)*t};r+=` C${d.x},${d.y} ${p.x},${p.y} ${s.x},${s.y}`}return`${r} Z`}o(T,"closedRoundCurve");function k(a,t,e,r){if(!e)return;let i=(r.width/2+r.marginRight)*3/4,n=-(r.height/2+r.marginTop)*3/4,l=20;t.forEach((s,c)=>{let d=a.append("g").attr("transform",`translate(${i}, ${n+c*l})`);d.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${c}`),d.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(s.label)})}o(k,"drawLegend");var it={draw:tt},st=o((a,t)=>{let e="";for(let r=0;r<a.THEME_COLOR_LIMIT;r++){let i=a[`cScale${r}`];e+=`
|
||||
.radarCurve-${r} {
|
||||
color: ${i};
|
||||
fill: ${i};
|
||||
fill-opacity: ${t.curveOpacity};
|
||||
stroke: ${i};
|
||||
stroke-width: ${t.curveStrokeWidth};
|
||||
}
|
||||
.radarLegendBox-${r} {
|
||||
fill: ${i};
|
||||
fill-opacity: ${t.curveOpacity};
|
||||
stroke: ${i};
|
||||
}
|
||||
`}return e},"genIndexStyles"),nt=o(a=>{let t=H(),e=w(),r=v(t,e.themeVariables),i=v(r.radar,a);return{themeVariables:r,radarOptions:i}},"buildRadarStyleOptions"),lt=o(({radar:a}={})=>{let{themeVariables:t,radarOptions:e}=nt(a);return`
|
||||
.radarTitle {
|
||||
font-size: ${t.fontSize};
|
||||
color: ${t.titleColor};
|
||||
dominant-baseline: hanging;
|
||||
text-anchor: middle;
|
||||
}
|
||||
.radarAxisLine {
|
||||
stroke: ${e.axisColor};
|
||||
stroke-width: ${e.axisStrokeWidth};
|
||||
}
|
||||
.radarAxisLabel {
|
||||
dominant-baseline: middle;
|
||||
text-anchor: middle;
|
||||
font-size: ${e.axisLabelFontSize}px;
|
||||
color: ${e.axisColor};
|
||||
}
|
||||
.radarGraticule {
|
||||
fill: ${e.graticuleColor};
|
||||
fill-opacity: ${e.graticuleOpacity};
|
||||
stroke: ${e.graticuleColor};
|
||||
stroke-width: ${e.graticuleStrokeWidth};
|
||||
}
|
||||
.radarLegendText {
|
||||
text-anchor: start;
|
||||
font-size: ${e.legendFontSize}px;
|
||||
dominant-baseline: hanging;
|
||||
}
|
||||
${st(t,e)}
|
||||
`},"styles"),ht={parser:Y,db:f,renderer:it,styles:lt};export{ht as diagram};
|
||||
24
assets/diagram-LL6QPXA2-TyrSgzfz.js
Normal file
24
assets/diagram-LL6QPXA2-TyrSgzfz.js
Normal file
File diff suppressed because one or more lines are too long
60
assets/erDiagram-MBDK6S7D-CitxA5sF.js
Normal file
60
assets/erDiagram-MBDK6S7D-CitxA5sF.js
Normal file
File diff suppressed because one or more lines are too long
162
assets/flowDiagram-UML6HZQP-CcC1N519.js
Normal file
162
assets/flowDiagram-UML6HZQP-CcC1N519.js
Normal file
File diff suppressed because one or more lines are too long
267
assets/ganttDiagram-SAESIEWH-Bx_OWY7i.js
Normal file
267
assets/ganttDiagram-SAESIEWH-Bx_OWY7i.js
Normal file
File diff suppressed because one or more lines are too long
65
assets/gitGraphDiagram-JCGM6PWI-C5b9DR8Q.js
Normal file
65
assets/gitGraphDiagram-JCGM6PWI-C5b9DR8Q.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/index.html--BxQV4IC.js
Normal file
1
assets/index.html--BxQV4IC.js
Normal file
@@ -0,0 +1 @@
|
||||
import{_ as e,c as t,o as a}from"./app-CsTq_I9B.js";const n={};function r(o,c){return a(),t("div")}const i=e(n,[["render",r]]),s=JSON.parse('{"path":"/blog/","title":"博客","lang":"zh-CN","frontmatter":{"lang":"zh-CN","title":"博客","gitInclude":[],"draft":true},"readingTime":{"minutes":0,"words":0},"git":{},"filePathRelative":null,"headers":[],"type":"blog"}');export{i as comp,s as data};
|
||||
3
assets/index.html-51zCMsyW.js
Normal file
3
assets/index.html-51zCMsyW.js
Normal file
File diff suppressed because one or more lines are too long
33
assets/index.html-5hngcaGY.js
Normal file
33
assets/index.html-5hngcaGY.js
Normal file
@@ -0,0 +1,33 @@
|
||||
import{_ as i,c as a,a as e,o as n}from"./app-CsTq_I9B.js";const l={};function h(t,s){return n(),a("div",null,[...s[0]||(s[0]=[e(`<h2 id="第一部分-区块链平台运维" tabindex="-1"><a class="header-anchor" href="#第一部分-区块链平台运维"><span>第一部分:区块链平台运维</span></a></h2><h3 id="第1题-完成-fisco-bcos-区块链系统部署并验证" tabindex="-1"><a class="header-anchor" href="#第1题-完成-fisco-bcos-区块链系统部署并验证"><span>第1题:完成 FISCO BCOS 区块链系统部署并验证</span></a></h3><p><strong>【要求】</strong></p><p>登录 Linux 服务器,完成节点部署、启动、将过程结果截图,保存至做答题并点击提交。</p><p><strong>【任务】</strong></p><p>登录 Linux 服务器,进入指定操作目录(/root/tools)基于开发部署工具 build_chain.sh 脚本在本地搭建一条 4 节点的 FISCO BCOS 链。起始端口号为:30300,20200,8545。将节点 2 的端口号改为 30500,20400,8675。确保搭建的区块链系统能正常运行,并将执行的命令和完整的命令执行结果截图保存至作答区并点击提交。具体任务如下:</p><p><strong>【参考答案】</strong></p><p>使用 build_chain.sh 脚本搭建 FISCO BCOS 链:</p><p>默认的 -v 会从网络中下载 FISCO BCOS,这里本地已经有了,比赛的时候肯定是断网的,这里直接调用本地的即可</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-shell"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">bash</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> build_chain.sh</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -l</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> "</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">127.0.0.1:4</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -p</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 30300,20200,8545</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -e</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> ./fisco-bcos</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><img src="https://image.simengweb.com/blog/competition/BRICS2025-ST-132/20250930201715_253_27.png" alt="配置默认单机4节点"> 在创建完成之后,当前目录会出现一个 nodes 文件夹,这里面就是我们的每个节点的具体配置信息等等</p><p>这里推荐下载一个 tree 用来查看目录结构</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-shell"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">apt</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> install</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> tree</span></span>
|
||||
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">tree</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> nodes</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p>目录结构应该大概如下:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-"><span class="line"><span>nodes</span></span>
|
||||
<span class="line"><span>├── 127.0.0.1</span></span>
|
||||
<span class="line"><span>│ ├── node0</span></span>
|
||||
<span class="line"><span>│ │ ├── ...</span></span>
|
||||
<span class="line"><span>│ ├── node1</span></span>
|
||||
<span class="line"><span>│ │ ├── ...</span></span>
|
||||
<span class="line"><span>│ ├── node2</span></span>
|
||||
<span class="line"><span>│ │ ├── ...</span></span>
|
||||
<span class="line"><span>│ ├── node3</span></span>
|
||||
<span class="line"><span>│ │ ├── ...</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>每个 node 文件夹都包含 <code>conf/</code>(配置文件),<code>log/</code>(日志文件),<code>fisco-bcos/</code>(二进制副本)</p><p>修改节点2的端口,根据要求修改为 30500,20400,8675</p><p>编辑配置文件:<code>vim nodes/127.0.0.1/node2/config.ini</code></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark has-diff vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">rpc</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> channel_listen_ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">0.0.0.0</span></span>
|
||||
<span class="line diff remove"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> channel_listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">20202</span></span>
|
||||
<span class="line diff add"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> channel_listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">20400</span></span>
|
||||
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> jsonrpc_listen_ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">127.0.0.1</span></span>
|
||||
<span class="line diff remove"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> jsonrpc_listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">8547</span></span>
|
||||
<span class="line diff add"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> jsonrpc_listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">8675</span></span>
|
||||
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> disable_dynamic_group</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">false</span></span>
|
||||
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">p2p</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> listen_ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">0.0.0.0</span></span>
|
||||
<span class="line diff remove"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">30302</span></span>
|
||||
<span class="line diff add"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">30500</span></span>
|
||||
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> ;</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> nodes</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> to</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> connect</span></span>
|
||||
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.0</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30300</span></span>
|
||||
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.1</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30301</span></span>
|
||||
<span class="line diff remove"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.2</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30302</span></span>
|
||||
<span class="line diff add"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.2</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30500</span></span>
|
||||
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.3</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30303</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>不光节点2的 [p2p] 的 <code>node.2</code> 需要修改,其他几个节点的都需要进行修改</p><p>切换到 <code>nodes/127.0.0.1/</code> 目录下,通过 <code>bash start_all.sh</code> 启动所有节点</p><p><img src="https://image.simengweb.com/blog/competition/BRICS2025-ST-132/20250930205309_254_27.png" alt="启动所有节点"></p><p>验证端口是否生效:<code>ss -tuln | grep -E '30500|20400|8675'</code></p><p>预期输出如下:</p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">tcp</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> LISTEN</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 4096</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 127.0.0.1:8675</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">*</span></span>
|
||||
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">tcp</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> LISTEN</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 4096</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:30500</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">*</span></span>
|
||||
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">tcp</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> LISTEN</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 4096</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:20400</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">*</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>主要参考文章如下:</p><ol><li><a href="https://fisco-doc.readthedocs.io/zh/latest/docs/installation.html" target="_blank" rel="noopener noreferrer">搭建第一个区块链网络</a></li><li><a href="https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/manual/build_chain.html" target="_blank" rel="noopener noreferrer">开发部署工具(build_chain.sh)</a></li></ol><h3 id="第2题-按要求完成webase-node-manager的安装与部署" tabindex="-1"><a class="header-anchor" href="#第2题-按要求完成webase-node-manager的安装与部署"><span>第2题:按要求完成WeBASE-Node-Manager的安装与部署</span></a></h3><p><strong>【要求】</strong></p><p>登录 Linux 服务器,部署节点管理平台,并将部署、启动、应用过程结果截图,保存至作答区并点击提交。</p><p><strong>【任务】</strong></p><p>登录 linux 服务器,进入指定操作目录(/root/tools/webase)中完成区块链一体化管理平台的配置部署,并检查是否安装成功,具体操作任务如下:</p><ol><li>进入 WeBASE-Node-Manager 目录,完成数据库初始化操作;</li><li>修改 application.yml 配置文件,进行 WeBASE-Node-Manager 的服务配置,包括数据库名称,数据库用户,数据库密码等;</li><li>使用命令启动 WeBASE-Node-Manager 管理平台服务,并检查节点管理是否正常启动;</li><li>使用 swagger 对节点管理服务的 API 接口测试。</li></ol><p><strong>【参考答案】</strong></p><p>切换到 WeBASE-Front 目录下,将 <code>dist/conf_template</code> 配置文件目录复制一份作为配置文件,命名为 <code>dist/conf</code></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># 当前工作目录为:/home/simeng/blockchain/WeBASE-Front</span></span>
|
||||
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">cp</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -r</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> dist/conf_template</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> dist/conf</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p>将节点所在目录 <code>nodes/{$ip}/sdk</code> 下的所有文件拷贝到当前的 <code>dist/conf</code> 目录下</p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">cp</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> ../nodes/127.0.0.1/sdk/</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">*</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> ./dist/conf/</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>编辑配置文件 : <code>vim dist/conf/application.yml</code></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>配置环境变量 JAVA_HOME 编辑配置文件:<code>~/.bashrc</code>,添加如下内容</p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">export</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> JAVA_HOME</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">/usr/lib/jvm/java-1.8.0-openjdk-amd64</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">export</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> PATH</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">$JAVA_HOME</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">/</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">bin</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">:</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">$PATH</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p>刷新环境变量</p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">source</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> ~/.bashrc</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>切换到 <code>dist</code> 目录下,拉取 Solidity 开发工具 v0.8.11.js(这一步可能会很慢,建议直接把 v0.8.11.js 下载到本地,然后直接放到对应目录,WSL2 的机器是直接挂载在 Windows 上的,Windows 可以直接操作)</p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">wget</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> https://github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v3.0.0/v0.8.11.js</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -O</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> static/static/js/v0.8.11.js</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>运行 <code>bash start.sh</code> 启动 WeBASE-Node-Manager 管理平台服务</p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># 当前工作目录为:/home/simeng/blockchain/WeBASE-Front/dist</span></span>
|
||||
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">bash</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> start.sh</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p>由于 localhostForwarding 机制(具体参考:<a href="https://notes.simengweb.com/article/operate-wsl2/#%E7%BD%91%E7%BB%9C%E7%9B%B8%E5%85%B3%E9%85%8D%E7%BD%AE" target="_blank" rel="noopener noreferrer">配置WSL2资源</a>),我们可以直接通过localhost来访问WSL2容器的端口的服务 访问:<a href="http://localhost:5002/WeBASE-Front" target="_blank" rel="noopener noreferrer">http://localhost:5002/WeBASE-Front</a></p>`,49)])])}const p=i(l,[["render",h]]),k=JSON.parse('{"path":"/article/2025-BR-BRICS-BC-App-Develop-Op-Sample-Q_A/","title":"2025 一带一路金砖 - 区块链应用开发与运维 样题详解","lang":"zh-CN","frontmatter":{"title":"2025 一带一路金砖 - 区块链应用开发与运维 样题详解","createTime":"2025/09/30 19:57:14","permalink":"/article/2025-BR-BRICS-BC-App-Develop-Op-Sample-Q&A/"},"readingTime":{"minutes":3.72,"words":1117},"git":{"createdTime":1759303270000,"updatedTime":1761565115000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":2,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"},{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"}]},"filePathRelative":"blog/competition/BRICS2025-ST-132.md","headers":[],"_e":"$2b$13$CnmbjqzZPll8mDk9AlqYFOVVv1xaipyql.Rk6pEL8ZXwc59rzqfqC","categoryList":[{"id":"126ac9","sort":10000,"name":"blog"},{"id":"83ee8d","sort":10002,"name":"competition"}]}');export{p as comp,k as data};
|
||||
12
assets/index.html-9ZeCOgBb.js
Normal file
12
assets/index.html-9ZeCOgBb.js
Normal file
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user