Build: 周二 2025/11/11 21:38:21.85
This commit is contained in:
@@ -1 +1 @@
|
||||
import{_ as e,c as o,b as n,o as a}from"./app-FFcgQi-5.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};
|
||||
import{_ as e,c as o,b as n,o as a}from"./app-I9WJttm3.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};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{m as e}from"./mermaid.esm.min-CFMguGj4.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};
|
||||
import{m as e}from"./mermaid.esm.min-Bko3wIpE.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 +1 @@
|
||||
import{m,i as e}from"./mermaid.esm.min-CFMguGj4.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};
|
||||
import{m,i as e}from"./mermaid.esm.min-Bko3wIpE.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};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{m as a,W as g,p as s}from"./mermaid.esm.min-CFMguGj4.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};
|
||||
import{m as a,W as g,p as s}from"./mermaid.esm.min-Bko3wIpE.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 +1 @@
|
||||
import{m as s}from"./mermaid.esm.min-CFMguGj4.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};
|
||||
import{m as s}from"./mermaid.esm.min-Bko3wIpE.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 +1 @@
|
||||
import{m as l,z as n,q as d,f as h}from"./mermaid.esm.min-CFMguGj4.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};
|
||||
import{m as l,z as n,q as d,f as h}from"./mermaid.esm.min-Bko3wIpE.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};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{m as e}from"./mermaid.esm.min-CFMguGj4.js";var l=e(()=>`
|
||||
import{m as e}from"./mermaid.esm.min-Bko3wIpE.js";var l=e(()=>`
|
||||
/* Font Awesome icon styling - consolidated */
|
||||
.label-icon {
|
||||
display: inline-block;
|
||||
1
assets/classDiagram-FKO7XAE5-C5D_4pjT.js
Normal file
1
assets/classDiagram-FKO7XAE5-C5D_4pjT.js
Normal file
@@ -0,0 +1 @@
|
||||
import{V as t,Q as a,C as s,l as e}from"./chunk-P7EU7REX-BVcqspVG.js";import"./chunk-ZZTKAOFA-C39qNkPO.js";import"./chunk-6EQESGSB-LXq8sgYq.js";import"./chunk-T244DUNM-KUCcU7P9.js";import{m as o}from"./mermaid.esm.min-Bko3wIpE.js";import"./app-I9WJttm3.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 +0,0 @@
|
||||
import{V as t,Q as a,C as s,l as e}from"./chunk-BHQAJ5QI-DsF3CY-s.js";import"./chunk-ZZTKAOFA-D3bY9_A8.js";import"./chunk-6EQESGSB-D_IOh6b1.js";import"./chunk-T244DUNM-toKIVE0w.js";import{m as o}from"./mermaid.esm.min-CFMguGj4.js";import"./app-FFcgQi-5.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 +0,0 @@
|
||||
import{V as t,Q as a,C as s,l as e}from"./chunk-BHQAJ5QI-DsF3CY-s.js";import"./chunk-ZZTKAOFA-D3bY9_A8.js";import"./chunk-6EQESGSB-D_IOh6b1.js";import"./chunk-T244DUNM-toKIVE0w.js";import{m as o}from"./mermaid.esm.min-CFMguGj4.js";import"./app-FFcgQi-5.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-C5D_4pjT.js
Normal file
1
assets/classDiagram-v2-XZHHGUJO-C5D_4pjT.js
Normal file
@@ -0,0 +1 @@
|
||||
import{V as t,Q as a,C as s,l as e}from"./chunk-P7EU7REX-BVcqspVG.js";import"./chunk-ZZTKAOFA-C39qNkPO.js";import"./chunk-6EQESGSB-LXq8sgYq.js";import"./chunk-T244DUNM-KUCcU7P9.js";import{m as o}from"./mermaid.esm.min-Bko3wIpE.js";import"./app-I9WJttm3.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};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{c as B}from"./chunk-4KE642ED-CurJxSjh.js";import{p as C}from"./treemap-KMMF4GRG-7ORZ52ND-BjVEqkKc.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-CFMguGj4.js";import"./chunk-OMTJKCYW-C42Y4h95.js";import"./app-FFcgQi-5.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`
|
||||
import{c as B}from"./chunk-4KE642ED-DUAZ7Ja9.js";import{p as C}from"./treemap-KMMF4GRG-7ORZ52ND-CZvSDgse.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-Bko3wIpE.js";import"./chunk-OMTJKCYW-_vIhX9oV.js";import"./app-I9WJttm3.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};
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import{c as I}from"./chunk-4KE642ED-CurJxSjh.js";import{p as S}from"./treemap-KMMF4GRG-7ORZ52ND-BjVEqkKc.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-CFMguGj4.js";import"./chunk-OMTJKCYW-C42Y4h95.js";import"./app-FFcgQi-5.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+=`
|
||||
import{c as I}from"./chunk-4KE642ED-DUAZ7Ja9.js";import{p as S}from"./treemap-KMMF4GRG-7ORZ52ND-CZvSDgse.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-Bko3wIpE.js";import"./chunk-OMTJKCYW-_vIhX9oV.js";import"./app-I9WJttm3.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};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{o as Xt}from"./chunk-ZZTKAOFA-D3bY9_A8.js";import{m as A,E as Ot,p as Q,a as g1,i as m1,V as qt,c as Zt,d as it,H as Jt,G as Yt,j as Qt,U as te,$ as ee,e as se,h as ie,g as re,k as ae,l as ue,J as st,N as ne,A as le,P as oe,Z as ce}from"./mermaid.esm.min-CFMguGj4.js";import{m as he}from"./chunk-6EQESGSB-D_IOh6b1.js";import{y as de}from"./chunk-T244DUNM-toKIVE0w.js";import"./app-FFcgQi-5.js";var pe="flowchart-",P1,ge=(P1=class{constructor(){this.vertexCounter=0,this.config=g1(),this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=Jt,this.setAccDescription=Yt,this.setDiagramTitle=Qt,this.getAccTitle=te,this.getAccDescription=ee,this.getDiagramTitle=se,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}sanitizeText(i){return ie.sanitizeText(i,this.config)}lookUpDomId(i){for(let r of this.vertices.values())if(r.id===i)return r.domId;return i}addVertex(i,r,a,u,n,g,p={},h){if(!i||i.trim().length===0)return;let o;if(h!==void 0){let k;h.includes(`
|
||||
import{o as Xt}from"./chunk-ZZTKAOFA-C39qNkPO.js";import{m as A,E as Ot,p as Q,a as g1,i as m1,V as qt,c as Zt,d as it,H as Jt,G as Yt,j as Qt,U as te,$ as ee,e as se,h as ie,g as re,k as ae,l as ue,J as st,N as ne,A as le,P as oe,Z as ce}from"./mermaid.esm.min-Bko3wIpE.js";import{m as he}from"./chunk-6EQESGSB-LXq8sgYq.js";import{y as de}from"./chunk-T244DUNM-KUCcU7P9.js";import"./app-I9WJttm3.js";var pe="flowchart-",P1,ge=(P1=class{constructor(){this.vertexCounter=0,this.config=g1(),this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=Jt,this.setAccDescription=Yt,this.setDiagramTitle=Qt,this.getAccTitle=te,this.getAccDescription=ee,this.getDiagramTitle=se,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}sanitizeText(i){return ie.sanitizeText(i,this.config)}lookUpDomId(i){for(let r of this.vertices.values())if(r.id===i)return r.domId;return i}addVertex(i,r,a,u,n,g,p={},h){if(!i||i.trim().length===0)return;let o;if(h!==void 0){let k;h.includes(`
|
||||
`)?k=h+`
|
||||
`:k=`{
|
||||
`+h+`
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{_ as e,c as t,o as a}from"./app-FFcgQi-5.js";const r={};function n(o,c){return a(),t("div")}const s=e(r,[["render",n]]),l=JSON.parse('{"path":"/blog/categories/","title":"分类","lang":"zh-CN","frontmatter":{"lang":"zh-CN","title":"分类","gitInclude":[],"draft":true},"readingTime":{"minutes":0,"words":0},"git":{},"filePathRelative":null,"headers":[],"type":"blog-categories"}');export{s as comp,l as data};
|
||||
import{_ as e,c as t,o as a}from"./app-I9WJttm3.js";const r={};function n(o,c){return a(),t("div")}const s=e(r,[["render",n]]),l=JSON.parse('{"path":"/blog/categories/","title":"分类","lang":"zh-CN","frontmatter":{"lang":"zh-CN","title":"分类","gitInclude":[],"draft":true},"readingTime":{"minutes":0,"words":0},"git":{},"filePathRelative":null,"headers":[],"type":"blog-categories"}');export{s as comp,l as data};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{_ as a,c as n,b as e,d as r,o}from"./app-FFcgQi-5.js";const i={};function s(m,t){return o(),n("div",null,[...t[0]||(t[0]=[e("p",null,[r("作为算法初学者,选择合适的题目开始练习真的超~级重要哦!这里给大家推荐一份超棒的入门题单——"),e("a",{href:"https://leetcode.cn/studyplan/primers-list/",target:"_blank",rel:"noopener noreferrer"},"「新」动计划 · 编程入门"),r(" ~这份题单就像给小树苗精心准备的阳光和雨露一样,特别适合刚开始算法之旅的你~(悄悄告诉你,里面有两题是数据库基础,暂时可以跳过哦~)")],-1),e("p",null,"我的小建议是:先自己试着挑战一下,如果遇到困难了,再来看题解也没关系~重要的是享受这个成长的过程呀~(♡˙︶˙♡)",-1),e("h2",{id:"基础语法-数据类型-٩-๑-◡-๑-۶",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#基础语法-数据类型-٩-๑-◡-๑-۶"},[e("span",null,"基础语法 & 数据类型 ٩(๑>◡<๑)۶")])],-1)])])}const d=a(i,[["render",s]]),l=JSON.parse('{"path":"/programming/leetcode/question_sheet/beginner/","title":"LeetCode 入门题单~(≧∇≦)ノ","lang":"zh-CN","frontmatter":{"title":"LeetCode 入门题单~(≧∇≦)ノ","description":"给算法初学者的题目推荐和学习路径","createTime":"2025年9月22日 08:52:52","permalink":"/programming/leetcode/question_sheet/beginner/"},"readingTime":{"minutes":0.68,"words":203},"git":{"createdTime":1758545932000,"updatedTime":1758545932000,"contributors":[{"name":"simeng","username":"","email":"simeng@simengweb.com","commits":1,"avatar":"https://gravatar.com/avatar/0d358b828946f71c617d26b8c881331619abfbbab3bf694ea3f0eb3909110815?d=retro"}]},"filePathRelative":"notes/programming/leetcode/beginner.md","headers":[]}');export{d as comp,l as data};
|
||||
import{_ as a,c as n,b as e,d as r,o}from"./app-I9WJttm3.js";const i={};function s(m,t){return o(),n("div",null,[...t[0]||(t[0]=[e("p",null,[r("作为算法初学者,选择合适的题目开始练习真的超~级重要哦!这里给大家推荐一份超棒的入门题单——"),e("a",{href:"https://leetcode.cn/studyplan/primers-list/",target:"_blank",rel:"noopener noreferrer"},"「新」动计划 · 编程入门"),r(" ~这份题单就像给小树苗精心准备的阳光和雨露一样,特别适合刚开始算法之旅的你~(悄悄告诉你,里面有两题是数据库基础,暂时可以跳过哦~)")],-1),e("p",null,"我的小建议是:先自己试着挑战一下,如果遇到困难了,再来看题解也没关系~重要的是享受这个成长的过程呀~(♡˙︶˙♡)",-1),e("h2",{id:"基础语法-数据类型-٩-๑-◡-๑-۶",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#基础语法-数据类型-٩-๑-◡-๑-۶"},[e("span",null,"基础语法 & 数据类型 ٩(๑>◡<๑)۶")])],-1)])])}const d=a(i,[["render",s]]),l=JSON.parse('{"path":"/programming/leetcode/question_sheet/beginner/","title":"LeetCode 入门题单~(≧∇≦)ノ","lang":"zh-CN","frontmatter":{"title":"LeetCode 入门题单~(≧∇≦)ノ","description":"给算法初学者的题目推荐和学习路径","createTime":"2025年9月22日 08:52:52","permalink":"/programming/leetcode/question_sheet/beginner/"},"readingTime":{"minutes":0.68,"words":203},"git":{"createdTime":1758545932000,"updatedTime":1758545932000,"contributors":[{"name":"simeng","username":"","email":"simeng@simengweb.com","commits":1,"avatar":"https://gravatar.com/avatar/0d358b828946f71c617d26b8c881331619abfbbab3bf694ea3f0eb3909110815?d=retro"}]},"filePathRelative":"notes/programming/leetcode/beginner.md","headers":[]}');export{d as comp,l as data};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{_ as e,c as t,o as s}from"./app-FFcgQi-5.js";const i={};function c(a,n){return s(),t("div")}const o=e(i,[["render",c]]),m=JSON.parse('{"path":"/ops/blockchain/theory/basic-principles/","title":"区块链的基本原理","lang":"zh-CN","frontmatter":{"title":"区块链的基本原理","createTime":"2025/09/28 12:39:11","permalink":"/ops/blockchain/theory/basic-principles/"},"readingTime":{"minutes":0.06,"words":17},"git":{"createdTime":1759130659000,"updatedTime":1759391780000,"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"}]},"filePathRelative":"notes/ops/blockchain/theory/basic-principles.md","headers":[]}');export{o as comp,m as data};
|
||||
import{_ as e,c as t,o as s}from"./app-I9WJttm3.js";const i={};function c(a,n){return s(),t("div")}const o=e(i,[["render",c]]),m=JSON.parse('{"path":"/ops/blockchain/theory/basic-principles/","title":"区块链的基本原理","lang":"zh-CN","frontmatter":{"title":"区块链的基本原理","createTime":"2025/09/28 12:39:11","permalink":"/ops/blockchain/theory/basic-principles/"},"readingTime":{"minutes":0.06,"words":17},"git":{"createdTime":1759130659000,"updatedTime":1759391780000,"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"}]},"filePathRelative":"notes/ops/blockchain/theory/basic-principles.md","headers":[]}');export{o as comp,m as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as e,c as t,a as r,o as s}from"./app-FFcgQi-5.js";const n={};function i(c,a){return s(),t("div",null,[...a[0]||(a[0]=[r('<p>嗨~ 欢迎来到祀梦的个人博客,这是我在这个小站发布的第一篇文章哦~ (✧ω✧)</p><h2 id="关于站长我呀-🌸" tabindex="-1"><a class="header-anchor" href="#关于站长我呀-🌸"><span>关于站长我呀~ 🌸</span></a></h2><p>我是祀梦,现在在上海某大专读书,是个可爱的男孩子~ 目前是信息安全专业的学生,但是超——级喜欢编程!(๑•̀ㅂ•́)و✧</p><h2 id="我的兴趣爱好-🌈" tabindex="-1"><a class="header-anchor" href="#我的兴趣爱好-🌈"><span>我的兴趣爱好~ 🌈</span></a></h2><p>我喜欢好多好多东西呀!编程、摄像、美食、旅游,还有画画~ 假期闲下来的时候,我会画一些自己喜欢的角色呢!(๑˘ᴗ˘๑)</p><h2 id="技术方面-💻" tabindex="-1"><a class="header-anchor" href="#技术方面-💻"><span>技术方面~ 💻</span></a></h2><p>在技术方面,Python 是我最熟练的编程语言,Java 和 C 也懂一些,前后端开发和 Linux 运维我也会一点哦~ 虽然什么都感兴趣,什么都想学,但是总觉得自己不够聪明,学杂而不精呢... (╥ω╥)</p><h2 id="为什么叫-祀梦-🌙" tabindex="-1"><a class="header-anchor" href="#为什么叫-祀梦-🌙"><span>为什么叫"祀梦"? 🌙</span></a></h2><p>这个名字的由来超有趣!初中的时候我很喜欢写小说,"祀梦"是我其中一本小书的主角名字~ 当时我的初中同学聊天的时候说这个名字很好听,我就一直沿用下来啦!(๑´ㅂ`๑)</p><h2 id="联系方式-📱" tabindex="-1"><a class="header-anchor" href="#联系方式-📱"><span>联系方式~ 📱</span></a></h2><p>如果您在网页访问过程中遇到什么问题,或者想要交个朋友的话,欢迎随时来找我玩哦~</p><ul><li>邮箱:meng_si@proton.me</li><li>B站:<a href="https://space.bilibili.com/361714249" target="_blank" rel="noopener noreferrer">66ccff色的薰依草</a></li></ul><h2 id="网站的成长记录-📝" tabindex="-1"><a class="header-anchor" href="#网站的成长记录-📝"><span>网站的成长记录~ 📝</span></a></h2><ul><li>2025年9月21日:部署完网站</li></ul><h2 id="写在最后-💌" tabindex="-1"><a class="header-anchor" href="#写在最后-💌"><span>写在最后~ 💌</span></a></h2><p>很早之前我就总是喜欢写点东西,但是又不敢发到大的平台上,做一个属于自己的互联网小窝感觉真的超——级棒!希望大家能在这里找到有用的内容,也欢迎大家常来玩哦~ (づ ̄ 3 ̄)づ</p>',16)])])}const p=e(n,[["render",i]]),h=JSON.parse('{"path":"/about/","title":"关于祀梦的花园","lang":"zh-CN","frontmatter":{"title":"关于祀梦的花园","description":"这里是爱与回忆的小世界~","hideInBlogList":true,"article":false,"createTime":"2024/10/29 12:30:00","permalink":"/about/"},"readingTime":{"minutes":1.52,"words":457},"git":{"createdTime":1758539729000,"updatedTime":1760942484000,"contributors":[{"name":"simeng","username":"","email":"simeng@simengweb.com","commits":1,"avatar":"https://gravatar.com/avatar/0d358b828946f71c617d26b8c881331619abfbbab3bf694ea3f0eb3909110815?d=retro"},{"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":"about.md","headers":[],"categoryList":[]}');export{p as comp,h as data};
|
||||
import{_ as e,c as t,a as r,o as s}from"./app-I9WJttm3.js";const n={};function i(c,a){return s(),t("div",null,[...a[0]||(a[0]=[r('<p>嗨~ 欢迎来到祀梦的个人博客,这是我在这个小站发布的第一篇文章哦~ (✧ω✧)</p><h2 id="关于站长我呀-🌸" tabindex="-1"><a class="header-anchor" href="#关于站长我呀-🌸"><span>关于站长我呀~ 🌸</span></a></h2><p>我是祀梦,现在在上海某大专读书,是个可爱的男孩子~ 目前是信息安全专业的学生,但是超——级喜欢编程!(๑•̀ㅂ•́)و✧</p><h2 id="我的兴趣爱好-🌈" tabindex="-1"><a class="header-anchor" href="#我的兴趣爱好-🌈"><span>我的兴趣爱好~ 🌈</span></a></h2><p>我喜欢好多好多东西呀!编程、摄像、美食、旅游,还有画画~ 假期闲下来的时候,我会画一些自己喜欢的角色呢!(๑˘ᴗ˘๑)</p><h2 id="技术方面-💻" tabindex="-1"><a class="header-anchor" href="#技术方面-💻"><span>技术方面~ 💻</span></a></h2><p>在技术方面,Python 是我最熟练的编程语言,Java 和 C 也懂一些,前后端开发和 Linux 运维我也会一点哦~ 虽然什么都感兴趣,什么都想学,但是总觉得自己不够聪明,学杂而不精呢... (╥ω╥)</p><h2 id="为什么叫-祀梦-🌙" tabindex="-1"><a class="header-anchor" href="#为什么叫-祀梦-🌙"><span>为什么叫"祀梦"? 🌙</span></a></h2><p>这个名字的由来超有趣!初中的时候我很喜欢写小说,"祀梦"是我其中一本小书的主角名字~ 当时我的初中同学聊天的时候说这个名字很好听,我就一直沿用下来啦!(๑´ㅂ`๑)</p><h2 id="联系方式-📱" tabindex="-1"><a class="header-anchor" href="#联系方式-📱"><span>联系方式~ 📱</span></a></h2><p>如果您在网页访问过程中遇到什么问题,或者想要交个朋友的话,欢迎随时来找我玩哦~</p><ul><li>邮箱:meng_si@proton.me</li><li>B站:<a href="https://space.bilibili.com/361714249" target="_blank" rel="noopener noreferrer">66ccff色的薰依草</a></li></ul><h2 id="网站的成长记录-📝" tabindex="-1"><a class="header-anchor" href="#网站的成长记录-📝"><span>网站的成长记录~ 📝</span></a></h2><ul><li>2025年9月21日:部署完网站</li></ul><h2 id="写在最后-💌" tabindex="-1"><a class="header-anchor" href="#写在最后-💌"><span>写在最后~ 💌</span></a></h2><p>很早之前我就总是喜欢写点东西,但是又不敢发到大的平台上,做一个属于自己的互联网小窝感觉真的超——级棒!希望大家能在这里找到有用的内容,也欢迎大家常来玩哦~ (づ ̄ 3 ̄)づ</p>',16)])])}const p=e(n,[["render",i]]),h=JSON.parse('{"path":"/about/","title":"关于祀梦的花园","lang":"zh-CN","frontmatter":{"title":"关于祀梦的花园","description":"这里是爱与回忆的小世界~","hideInBlogList":true,"article":false,"createTime":"2024/10/29 12:30:00","permalink":"/about/"},"readingTime":{"minutes":1.52,"words":457},"git":{"createdTime":1758539729000,"updatedTime":1760942484000,"contributors":[{"name":"simeng","username":"","email":"simeng@simengweb.com","commits":1,"avatar":"https://gravatar.com/avatar/0d358b828946f71c617d26b8c881331619abfbbab3bf694ea3f0eb3909110815?d=retro"},{"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":"about.md","headers":[],"categoryList":[]}');export{p as comp,h as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as a,c as t,a as n,o as s}from"./app-FFcgQi-5.js";const i={};function r(o,e){return s(),t("div",null,[...e[0]||(e[0]=[n('<p>各位~今天要给大家介绍一个超棒的图床搭建方法哦!EdgeOne Pages 是腾讯云提供的静态网站托管服务,而且还有免费额度可以使用呢,对于日常需求来说完全足够啦~</p><h2 id="创建一个-git-项目" tabindex="-1"><a class="header-anchor" href="#创建一个-git-项目"><span>创建一个 Git 项目</span></a></h2><p>第一步呢,我们需要先在 Gitee 上创建一个项目,专门用来存放网站里要用的各种图片。当然啦,如果你习惯用 Github 或者 CNB 也没问题,这些平台都是支持的哦~而且要记住,项目的目录结构就是以后图片的访问路径呢~</p><h2 id="edgeone-page-中导入项目" tabindex="-1"><a class="header-anchor" href="#edgeone-page-中导入项目"><span>EdgeOne Page 中导入项目</span></a></h2><p>接下来打开 EdgeOne Page 的<a href="https://console.cloud.tencent.com/edgeone/pages" target="_blank" rel="noopener noreferrer">控制台</a>,这里可以导入 Github、Gitee 和 CNB 的项目哦~</p><p>点击「导入项目」,选择 Gitee 项目,找到刚才创建的那个项目,然后就可以直接开始部署啦~</p><p>等待大概一分钟左右,部署完成后,在项目概览页面点击预览按钮,就可以先看看资源能不能正常访问啦~</p><h2 id="配置域名" tabindex="-1"><a class="header-anchor" href="#配置域名"><span>配置域名</span></a></h2><p>如果临时链接可以正常访问的话,我们就可以配置自己的域名啦~在项目概览页面点击「自定义域名」就可以进入配置界面哦~</p><p>在那里输入你想要使用的域名,腾讯云可是提供了50个免费证书的额度呢!而且证书到期后还会自动释放额度,所以完全不用担心证书不够用的问题,可以放心大胆地点击「使用免费证书」按钮哦~</p>',10)])])}const g=a(i,[["render",r]]),p=JSON.parse('{"path":"/article/8gihio2v/","title":"通过 EdgeOne Pages 搭建图床","lang":"zh-CN","frontmatter":{"title":"通过 EdgeOne Pages 搭建图床","createTime":"2025/09/29 02:28:17","cover":"https://image.simengweb.com/elysia_cover_image/0lQviAbmMCVGN0Y6.png","permalink":"/article/8gihio2v/"},"readingTime":{"minutes":1.41,"words":423},"git":{"createdTime":1759130659000,"updatedTime":1759134264000,"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"}]},"filePathRelative":"blog/website/EdgeOne_Pages_Images.md","headers":[],"categoryList":[{"id":"126ac9","sort":10000,"name":"blog"},{"id":"b0f8fe","sort":10002,"name":"website"}]}');export{g as comp,p as data};
|
||||
import{_ as a,c as t,a as n,o as s}from"./app-I9WJttm3.js";const i={};function r(o,e){return s(),t("div",null,[...e[0]||(e[0]=[n('<p>各位~今天要给大家介绍一个超棒的图床搭建方法哦!EdgeOne Pages 是腾讯云提供的静态网站托管服务,而且还有免费额度可以使用呢,对于日常需求来说完全足够啦~</p><h2 id="创建一个-git-项目" tabindex="-1"><a class="header-anchor" href="#创建一个-git-项目"><span>创建一个 Git 项目</span></a></h2><p>第一步呢,我们需要先在 Gitee 上创建一个项目,专门用来存放网站里要用的各种图片。当然啦,如果你习惯用 Github 或者 CNB 也没问题,这些平台都是支持的哦~而且要记住,项目的目录结构就是以后图片的访问路径呢~</p><h2 id="edgeone-page-中导入项目" tabindex="-1"><a class="header-anchor" href="#edgeone-page-中导入项目"><span>EdgeOne Page 中导入项目</span></a></h2><p>接下来打开 EdgeOne Page 的<a href="https://console.cloud.tencent.com/edgeone/pages" target="_blank" rel="noopener noreferrer">控制台</a>,这里可以导入 Github、Gitee 和 CNB 的项目哦~</p><p>点击「导入项目」,选择 Gitee 项目,找到刚才创建的那个项目,然后就可以直接开始部署啦~</p><p>等待大概一分钟左右,部署完成后,在项目概览页面点击预览按钮,就可以先看看资源能不能正常访问啦~</p><h2 id="配置域名" tabindex="-1"><a class="header-anchor" href="#配置域名"><span>配置域名</span></a></h2><p>如果临时链接可以正常访问的话,我们就可以配置自己的域名啦~在项目概览页面点击「自定义域名」就可以进入配置界面哦~</p><p>在那里输入你想要使用的域名,腾讯云可是提供了50个免费证书的额度呢!而且证书到期后还会自动释放额度,所以完全不用担心证书不够用的问题,可以放心大胆地点击「使用免费证书」按钮哦~</p>',10)])])}const g=a(i,[["render",r]]),p=JSON.parse('{"path":"/article/8gihio2v/","title":"通过 EdgeOne Pages 搭建图床","lang":"zh-CN","frontmatter":{"title":"通过 EdgeOne Pages 搭建图床","createTime":"2025/09/29 02:28:17","cover":"https://image.simengweb.com/elysia_cover_image/0lQviAbmMCVGN0Y6.png","permalink":"/article/8gihio2v/"},"readingTime":{"minutes":1.41,"words":423},"git":{"createdTime":1759130659000,"updatedTime":1759134264000,"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"}]},"filePathRelative":"blog/website/EdgeOne_Pages_Images.md","headers":[],"categoryList":[{"id":"126ac9","sort":10000,"name":"blog"},{"id":"b0f8fe","sort":10001,"name":"website"}]}');export{g as comp,p as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as t,c as l,b as e,o as r}from"./app-FFcgQi-5.js";const c={};function n(o,a){return r(),l("div",null,[...a[0]||(a[0]=[e("ul",null,[e("li",null,"高频词与词根词缀"),e("li",null,"主题词汇(校园、科技、社会等)"),e("li",null,"间隔重复(SRS)与记忆曲线"),e("li",null,"固定搭配与语块(collocations & chunks)")],-1)])])}const i=t(c,[["render",n]]),m=JSON.parse('{"path":"/subject/english/vocabulary/","title":"词汇学习与记忆法","lang":"zh-CN","frontmatter":{"title":"词汇学习与记忆法","createTime":"2025/10/20 16:40:00","permalink":"/subject/english/vocabulary/"},"readingTime":{"minutes":0.21,"words":62},"git":{"createdTime":1760961315000,"updatedTime":1760961315000,"contributors":[{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"}]},"filePathRelative":"notes/subject/english/vocabulary/README.md","headers":[]}');export{i as comp,m as data};
|
||||
import{_ as t,c as l,b as e,o as r}from"./app-I9WJttm3.js";const c={};function n(o,a){return r(),l("div",null,[...a[0]||(a[0]=[e("ul",null,[e("li",null,"高频词与词根词缀"),e("li",null,"主题词汇(校园、科技、社会等)"),e("li",null,"间隔重复(SRS)与记忆曲线"),e("li",null,"固定搭配与语块(collocations & chunks)")],-1)])])}const i=t(c,[["render",n]]),m=JSON.parse('{"path":"/subject/english/vocabulary/","title":"词汇学习与记忆法","lang":"zh-CN","frontmatter":{"title":"词汇学习与记忆法","createTime":"2025/10/20 16:40:00","permalink":"/subject/english/vocabulary/"},"readingTime":{"minutes":0.21,"words":62},"git":{"createdTime":1760961315000,"updatedTime":1760961315000,"contributors":[{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"}]},"filePathRelative":"notes/subject/english/vocabulary/README.md","headers":[]}');export{i as comp,m as data};
|
||||
144
assets/index.html-BPtxSrdm.js
Normal file
144
assets/index.html-BPtxSrdm.js
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{_ as a,c as n,b as e,o as i}from"./app-FFcgQi-5.js";const r={};function l(s,t){return i(),n("div",null,[...t[0]||(t[0]=[e("ul",null,[e("li",null,"写作模板与常用句式"),e("li",null,"改写与润色(句式多样化、语法准确性)"),e("li",null,"翻译(语法、词汇、上下文)")],-1)])])}const o=a(r,[["render",l]]),m=JSON.parse('{"path":"/subject/english/writing-translation/","title":"写译","lang":"zh-CN","frontmatter":{"title":"写译","createTime":"2025/10/22 10:26:07","permalink":"/subject/english/writing-translation/"},"readingTime":{"minutes":0.15,"words":46},"git":{"createdTime":1761102801000,"updatedTime":1761102801000,"contributors":[{"name":"Kawaxxxsaki","username":"","email":"1111@123.com","commits":1,"avatar":"https://gravatar.com/avatar/b3cd57e776cc1b92ffa9800b35152c0ce7692893d12a14450061083fcacd34ce?d=retro"}]},"filePathRelative":"notes/subject/english/writing-translation/README.md","headers":[]}');export{o as comp,m as data};
|
||||
import{_ as a,c as n,b as e,o as i}from"./app-I9WJttm3.js";const r={};function l(s,t){return i(),n("div",null,[...t[0]||(t[0]=[e("ul",null,[e("li",null,"写作模板与常用句式"),e("li",null,"改写与润色(句式多样化、语法准确性)"),e("li",null,"翻译(语法、词汇、上下文)")],-1)])])}const o=a(r,[["render",l]]),m=JSON.parse('{"path":"/subject/english/writing-translation/","title":"写译","lang":"zh-CN","frontmatter":{"title":"写译","createTime":"2025/10/22 10:26:07","permalink":"/subject/english/writing-translation/"},"readingTime":{"minutes":0.15,"words":46},"git":{"createdTime":1761102801000,"updatedTime":1761102801000,"contributors":[{"name":"Kawaxxxsaki","username":"","email":"1111@123.com","commits":1,"avatar":"https://gravatar.com/avatar/b3cd57e776cc1b92ffa9800b35152c0ce7692893d12a14450061083fcacd34ce?d=retro"}]},"filePathRelative":"notes/subject/english/writing-translation/README.md","headers":[]}');export{o as comp,m as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as a,c as t,a as p,o}from"./app-FFcgQi-5.js";const s={};function i(n,e){return o(),t("div",null,[...e[0]||(e[0]=[p('<h2 id="区块链产品方案设计" tabindex="-1"><a class="header-anchor" href="#区块链产品方案设计"><span>区块链产品方案设计</span></a></h2><h3 id="区块链产品需求分析" tabindex="-1"><a class="header-anchor" href="#区块链产品需求分析"><span>区块链产品需求分析</span></a></h3><p>区块链产品分析主要是以下几个步骤:</p><ol><li>明确业务需求</li></ol><p>围绕指定业务分析区块链落地解决的痛点,提出围绕业务的功能概述。</p><ol start="2"><li>搜集业务相关信息</li></ol><p>针对设计功能,分析收集数据的方向、类型和具体维度</p><ol start="3"><li>分析搜集数据</li></ol><p>借助数据分析工具整合收集数据,并能根据收集数据得出初步结论</p><p>能够保证收集数据的准确性和安全性</p><ol start="4"><li>确定应用需求</li></ol><p>根据业务需求和收集数据,细化产品具体功能需求</p><ol start="5"><li>落地区块链平台</li></ol><p>形成具体平台的设计需求报告</p><p>形成平台验收的准则</p><h3 id="区块链平台设计方案" tabindex="-1"><a class="header-anchor" href="#区块链平台设计方案"><span>区块链平台设计方案</span></a></h3><p>区块链平台包括:区块链底层平台、智能合约层、业务层、应用层和用户层</p><p><img src="https://image.simengweb.com/notes/ops/blockchain/practice/basic-deployment/2025-10-02-150534.png" alt="区块链平台设计"></p><h3 id="业务功能模块设计" tabindex="-1"><a class="header-anchor" href="#业务功能模块设计"><span>业务功能模块设计</span></a></h3><p>业务功能模块设计包括三层:功能平台、功能模块、详细功能</p><p><img src="https://image.simengweb.com/notes/ops/blockchain/practice/basic-deployment/23f38723fcc79a2a91ea317f4c467755.png" alt="业务功能模块设计"></p><h3 id="业务流程图" tabindex="-1"><a class="header-anchor" href="#业务流程图"><span>业务流程图</span></a></h3><p>关于业务流程图的一些常见符号:</p><p><img src="https://image.simengweb.com/notes/ops/blockchain/practice/basic-deployment/d2c1a8bbe17c0cfef0314d0d1ba9ab45.png" alt="业务流程图常见符号"></p><p>有一些好用的在线绘制流程图的网站:</p><ol><li><a href="https://app.diagrams.net/" target="_blank" rel="noopener noreferrer">Draw.io</a></li></ol><h3 id="er-图设计" tabindex="-1"><a class="header-anchor" href="#er-图设计"><span>ER 图设计</span></a></h3><p>E-R 图(实体-关系图)是数据库设计中常用的一种工具,E 是实体,拥有一组属性,R 是关系,用于找到实体之间的联系。</p><p>实体与实体之间的关系,可能是一对一(1:1),一对多(1:n),多对多(m:n)</p><p>实体:通常用矩形表示,代表系统中的一个对象或概念,如"学生","课程","老师"</p><p>属性:通常用椭圆形表示,表示实体的特征,如"学生"的"姓名","班级"</p><p>关系:用菱形表示,用于不同实体间的联系,如"课程"和"学生"之间的"选修"关系</p>',32)])])}const r=a(s,[["render",i]]),l=JSON.parse('{"path":"/ops/blockchain/practice/basic-deployment/","title":"区块链产品设计和基础部署","lang":"zh-CN","frontmatter":{"title":"区块链产品设计和基础部署","description":"详细介绍区块链产品设计和基础部署","createTime":"2025/09/28 20:15:00","permalink":"/ops/blockchain/practice/basic-deployment/"},"readingTime":{"minutes":1.85,"words":556},"git":{"createdTime":1759391780000,"updatedTime":1759391780000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":1,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"}]},"filePathRelative":"notes/ops/blockchain/practice/basic-deployment.md","headers":[]}');export{r as comp,l as data};
|
||||
import{_ as a,c as t,a as p,o}from"./app-I9WJttm3.js";const s={};function i(n,e){return o(),t("div",null,[...e[0]||(e[0]=[p('<h2 id="区块链产品方案设计" tabindex="-1"><a class="header-anchor" href="#区块链产品方案设计"><span>区块链产品方案设计</span></a></h2><h3 id="区块链产品需求分析" tabindex="-1"><a class="header-anchor" href="#区块链产品需求分析"><span>区块链产品需求分析</span></a></h3><p>区块链产品分析主要是以下几个步骤:</p><ol><li>明确业务需求</li></ol><p>围绕指定业务分析区块链落地解决的痛点,提出围绕业务的功能概述。</p><ol start="2"><li>搜集业务相关信息</li></ol><p>针对设计功能,分析收集数据的方向、类型和具体维度</p><ol start="3"><li>分析搜集数据</li></ol><p>借助数据分析工具整合收集数据,并能根据收集数据得出初步结论</p><p>能够保证收集数据的准确性和安全性</p><ol start="4"><li>确定应用需求</li></ol><p>根据业务需求和收集数据,细化产品具体功能需求</p><ol start="5"><li>落地区块链平台</li></ol><p>形成具体平台的设计需求报告</p><p>形成平台验收的准则</p><h3 id="区块链平台设计方案" tabindex="-1"><a class="header-anchor" href="#区块链平台设计方案"><span>区块链平台设计方案</span></a></h3><p>区块链平台包括:区块链底层平台、智能合约层、业务层、应用层和用户层</p><p><img src="https://image.simengweb.com/notes/ops/blockchain/practice/basic-deployment/2025-10-02-150534.png" alt="区块链平台设计"></p><h3 id="业务功能模块设计" tabindex="-1"><a class="header-anchor" href="#业务功能模块设计"><span>业务功能模块设计</span></a></h3><p>业务功能模块设计包括三层:功能平台、功能模块、详细功能</p><p><img src="https://image.simengweb.com/notes/ops/blockchain/practice/basic-deployment/23f38723fcc79a2a91ea317f4c467755.png" alt="业务功能模块设计"></p><h3 id="业务流程图" tabindex="-1"><a class="header-anchor" href="#业务流程图"><span>业务流程图</span></a></h3><p>关于业务流程图的一些常见符号:</p><p><img src="https://image.simengweb.com/notes/ops/blockchain/practice/basic-deployment/d2c1a8bbe17c0cfef0314d0d1ba9ab45.png" alt="业务流程图常见符号"></p><p>有一些好用的在线绘制流程图的网站:</p><ol><li><a href="https://app.diagrams.net/" target="_blank" rel="noopener noreferrer">Draw.io</a></li></ol><h3 id="er-图设计" tabindex="-1"><a class="header-anchor" href="#er-图设计"><span>ER 图设计</span></a></h3><p>E-R 图(实体-关系图)是数据库设计中常用的一种工具,E 是实体,拥有一组属性,R 是关系,用于找到实体之间的联系。</p><p>实体与实体之间的关系,可能是一对一(1:1),一对多(1:n),多对多(m:n)</p><p>实体:通常用矩形表示,代表系统中的一个对象或概念,如"学生","课程","老师"</p><p>属性:通常用椭圆形表示,表示实体的特征,如"学生"的"姓名","班级"</p><p>关系:用菱形表示,用于不同实体间的联系,如"课程"和"学生"之间的"选修"关系</p>',32)])])}const r=a(s,[["render",i]]),l=JSON.parse('{"path":"/ops/blockchain/practice/basic-deployment/","title":"区块链产品设计和基础部署","lang":"zh-CN","frontmatter":{"title":"区块链产品设计和基础部署","description":"详细介绍区块链产品设计和基础部署","createTime":"2025/09/28 20:15:00","permalink":"/ops/blockchain/practice/basic-deployment/"},"readingTime":{"minutes":1.85,"words":556},"git":{"createdTime":1759391780000,"updatedTime":1759391780000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":1,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"}]},"filePathRelative":"notes/ops/blockchain/practice/basic-deployment.md","headers":[]}');export{r as comp,l as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as i,c as a,a as n,o as l}from"./app-FFcgQi-5.js";const e={};function h(t,s){return l(),a("div",null,[...s[0]||(s[0]=[n(`<p>嗨呀~让我们在 Windows10 专业版上部署 WSL2 并启动 ubuntu 20.04 虚拟机吧~</p><p>最好使用 Windows10 专业版,并且在物理机上部署呢,在虚拟机上部署的话可能会有小麻烦,所以不太推荐啦~</p><h2 id="windows10-镜像" tabindex="-1"><a class="header-anchor" href="#windows10-镜像"><span>Windows10 镜像</span></a></h2><p>大家好呀~今天要教大家如何在Windows10上部署WSL2并启动ubuntu虚拟机哦~</p><p>首先呢,我们需要准备一个Windows10的镜像文件~虽然Microsoft官方有提供,不过很容易下载失败呢,所以建议大家去<a href="https://msdn.itellyou.cn/" target="_blank" rel="noopener noreferrer">MSDN</a>下载会更稳定哦~</p><p>在MSDN官网找到「操作系统」→「Window10」→「Windows 10 (Multiple Editions) (x64)」这个版本,它包含了专业版呢~要注意哦,WSL2只支持专业版、企业版或教育版,不支持家庭版呢,所以建议大家直接安装专业版会更方便~</p><h2 id="启用wsl2和虚拟机平台" tabindex="-1"><a class="header-anchor" href="#启用wsl2和虚拟机平台"><span>启用WSL2和虚拟机平台</span></a></h2><p>接下来,我们需要启用WSL2和虚拟机平台的功能哦~首先以管理员身份打开PowerShell,然后依次运行下面的命令:</p><div class="language-powershell line-numbers-mode" data-highlighter="shiki" data-ext="powershell" 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-powershell"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># 启用 WSL 功能</span></span>
|
||||
import{_ as i,c as a,a as n,o as l}from"./app-I9WJttm3.js";const e={};function h(t,s){return l(),a("div",null,[...s[0]||(s[0]=[n(`<p>嗨呀~让我们在 Windows10 专业版上部署 WSL2 并启动 ubuntu 20.04 虚拟机吧~</p><p>最好使用 Windows10 专业版,并且在物理机上部署呢,在虚拟机上部署的话可能会有小麻烦,所以不太推荐啦~</p><h2 id="windows10-镜像" tabindex="-1"><a class="header-anchor" href="#windows10-镜像"><span>Windows10 镜像</span></a></h2><p>大家好呀~今天要教大家如何在Windows10上部署WSL2并启动ubuntu虚拟机哦~</p><p>首先呢,我们需要准备一个Windows10的镜像文件~虽然Microsoft官方有提供,不过很容易下载失败呢,所以建议大家去<a href="https://msdn.itellyou.cn/" target="_blank" rel="noopener noreferrer">MSDN</a>下载会更稳定哦~</p><p>在MSDN官网找到「操作系统」→「Window10」→「Windows 10 (Multiple Editions) (x64)」这个版本,它包含了专业版呢~要注意哦,WSL2只支持专业版、企业版或教育版,不支持家庭版呢,所以建议大家直接安装专业版会更方便~</p><h2 id="启用wsl2和虚拟机平台" tabindex="-1"><a class="header-anchor" href="#启用wsl2和虚拟机平台"><span>启用WSL2和虚拟机平台</span></a></h2><p>接下来,我们需要启用WSL2和虚拟机平台的功能哦~首先以管理员身份打开PowerShell,然后依次运行下面的命令:</p><div class="language-powershell line-numbers-mode" data-highlighter="shiki" data-ext="powershell" 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-powershell"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># 启用 WSL 功能</span></span>
|
||||
<span class="line"><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">dism.exe</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> /</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">online </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">/</span><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">enable-feature</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> /</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">featurename:Microsoft</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">-</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">Windows</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">-</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">Subsystem</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">-</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">Linux </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">/</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">all </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">/</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">norestart</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># 启用虚拟机平台(WSL2 必需)</span></span>
|
||||
@@ -59,4 +59,4 @@ import{_ as i,c as a,a as n,o as l}from"./app-FFcgQi-5.js";const e={};function h
|
||||
<span class="line"><span>Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel</span></span>
|
||||
<span class="line"><span></span></span>
|
||||
<span class="line"><span>Press any key to continue...</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></div><p>这说明系统缺少WSL2所需的Linux内核更新包哦~这时候我们可以打开微软官网的<a href="https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package" target="_blank" rel="noopener noreferrer">下载 Linux 内核更新包</a>页面,下载最新的包安装就可以解决啦~</p><h4 id="错误码-0x80370102-虚拟化技术没有开启" tabindex="-1"><a class="header-anchor" href="#错误码-0x80370102-虚拟化技术没有开启"><span>错误码 0x80370102 虚拟化技术没有开启</span></a></h4><p>如果遇到这个错误,可能是因为虚拟化技术没有开启哦~如果是在真实机上操作的话,需要进入BIOS开启虚拟化技术呢~开启之后,可以在任务管理器 -> 性能 -> CPU 的详情页面中,看到下方的虚拟化状态显示为「已启用」哦~</p><p><img src="https://image.simengweb.com/blog/technology/20250930140716_251_27.png" alt="虚拟化技术启用"></p><p>如果是在虚拟机中操作的话,就需要启用嵌套虚拟化技术啦~以VMware为例:</p><p>先关闭虚拟机,然后找到虚拟机的.vmx配置文件(通常在虚拟机目录下),在文件末尾添加一行:<code>vhv.enable = "TRUE"</code></p><p>保存之后再启动虚拟机就可以啦~如果还是失败的话,建议尝试换用WSL1,或者使用Hyper-V来部署Windows10虚拟机哦~</p><h2 id="通过-wsl2-操作-ubuntu-20-04-lts-虚拟机" tabindex="-1"><a class="header-anchor" href="#通过-wsl2-操作-ubuntu-20-04-lts-虚拟机"><span>通过 WSL2 操作 ubuntu 20.04 LTS 虚拟机</span></a></h2><p>安装完成后,我们该如何操作Ubuntu虚拟机呢?很简单哦~以管理员身份打开PowerShell,然后运行这个命令查看已安装的虚拟机:</p><div class="language-powershell line-numbers-mode" data-highlighter="shiki" data-ext="powershell" 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-powershell"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># 查看已安装的虚拟机</span></span>
|
||||
<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">wsl </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">-</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">l </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">-</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">v</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>如果前面的步骤都正确的话,这里应该可以看到一个Ubuntu-20.04的虚拟机啦~</p><p>另外,在文件资源管理器中,会多出一个Linux文件夹,里面有一个Ubuntu-20.04文件夹,这就是虚拟机的根目录哦~</p><p>想要启动并进入Ubuntu虚拟机的话,可以运行这个命令:</p><div class="language-powershell line-numbers-mode" data-highlighter="shiki" data-ext="powershell" 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-powershell"><span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">wsl </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">-</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">d Ubuntu</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">-</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">20.04</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>如果直接退出终端或者关闭窗口,虚拟机实例就会进入挂起状态,下次需要重新启动才能继续使用哦~当然,也可以通过指令强制终止虚拟机:</p><div class="language-powershell line-numbers-mode" data-highlighter="shiki" data-ext="powershell" 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-powershell"><span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">wsl </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">--</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">terminate Ubuntu</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">-</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">20.04</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h2 id="通过-vs-code-开发" tabindex="-1"><a class="header-anchor" href="#通过-vs-code-开发"><span>通过 VS Code 开发</span></a></h2><p>接下来,我们还可以通过VS Code来进行开发哦~不过需要先安装一些扩展呢:'Remote - SSH'和'WSL'</p><p>安装好扩展后,在VS Code左侧打开远程资源管理器,就可以看到Ubuntu20.04虚拟机啦~直接点击连接就可以了哦~不过第一次连接可能需要启动一下虚拟机,会有点慢呢,耐心等待一下吧~ <img src="https://image.simengweb.com/blog/technology/20250930144329_252_27.png" alt="连接 WSL2 虚拟机"> 连接成功之后,就可以愉快地进行开发啦~是不是很简单呢~</p>`,41)])])}const k=i(e,[["render",h]]),d=JSON.parse('{"path":"/article/deploying-wsl2-on-windows-10/","title":"在 Windows10 上部署 WSL2 并启动 ubuntu 虚拟机","lang":"zh-CN","frontmatter":{"title":"在 Windows10 上部署 WSL2 并启动 ubuntu 虚拟机","createTime":"2025/09/29 07:13:17","cover":"https://image.simengweb.com/elysia_cover_image/1pK7sI441p7x25YV.jpg","coverStyle":{"layout":"right"},"permalink":"/article/deploying-wsl2-on-windows-10/"},"readingTime":{"minutes":5.1,"words":1531},"git":{"createdTime":1759149599000,"updatedTime":1759391780000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":3,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"}]},"filePathRelative":"blog/technology/Deploying_WSL2_on_Windows_10.md","headers":[],"categoryList":[{"id":"126ac9","sort":10000,"name":"blog"},{"id":"750eb7","sort":10001,"name":"technology"}]}');export{k as comp,d as data};
|
||||
<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">wsl </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">-</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">l </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">-</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">v</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>如果前面的步骤都正确的话,这里应该可以看到一个Ubuntu-20.04的虚拟机啦~</p><p>另外,在文件资源管理器中,会多出一个Linux文件夹,里面有一个Ubuntu-20.04文件夹,这就是虚拟机的根目录哦~</p><p>想要启动并进入Ubuntu虚拟机的话,可以运行这个命令:</p><div class="language-powershell line-numbers-mode" data-highlighter="shiki" data-ext="powershell" 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-powershell"><span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">wsl </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">-</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">d Ubuntu</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">-</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">20.04</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>如果直接退出终端或者关闭窗口,虚拟机实例就会进入挂起状态,下次需要重新启动才能继续使用哦~当然,也可以通过指令强制终止虚拟机:</p><div class="language-powershell line-numbers-mode" data-highlighter="shiki" data-ext="powershell" 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-powershell"><span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">wsl </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">--</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">terminate Ubuntu</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">-</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">20.04</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h2 id="通过-vs-code-开发" tabindex="-1"><a class="header-anchor" href="#通过-vs-code-开发"><span>通过 VS Code 开发</span></a></h2><p>接下来,我们还可以通过VS Code来进行开发哦~不过需要先安装一些扩展呢:'Remote - SSH'和'WSL'</p><p>安装好扩展后,在VS Code左侧打开远程资源管理器,就可以看到Ubuntu20.04虚拟机啦~直接点击连接就可以了哦~不过第一次连接可能需要启动一下虚拟机,会有点慢呢,耐心等待一下吧~ <img src="https://image.simengweb.com/blog/technology/20250930144329_252_27.png" alt="连接 WSL2 虚拟机"> 连接成功之后,就可以愉快地进行开发啦~是不是很简单呢~</p>`,41)])])}const k=i(e,[["render",h]]),d=JSON.parse('{"path":"/article/deploying-wsl2-on-windows-10/","title":"在 Windows10 上部署 WSL2 并启动 ubuntu 虚拟机","lang":"zh-CN","frontmatter":{"title":"在 Windows10 上部署 WSL2 并启动 ubuntu 虚拟机","createTime":"2025/09/29 07:13:17","cover":"https://image.simengweb.com/elysia_cover_image/1pK7sI441p7x25YV.jpg","coverStyle":{"layout":"right"},"permalink":"/article/deploying-wsl2-on-windows-10/"},"readingTime":{"minutes":5.1,"words":1531},"git":{"createdTime":1759149599000,"updatedTime":1759391780000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":3,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"}]},"filePathRelative":"blog/technology/Deploying_WSL2_on_Windows_10.md","headers":[],"categoryList":[{"id":"126ac9","sort":10000,"name":"blog"},{"id":"750eb7","sort":10002,"name":"technology"}]}');export{k as comp,d as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as t,c as e,o as a}from"./app-FFcgQi-5.js";const n={};function r(o,c){return a(),e("div")}const l=t(n,[["render",r]]),i=JSON.parse('{"path":"/blog/tags/","title":"标签","lang":"zh-CN","frontmatter":{"lang":"zh-CN","title":"标签","gitInclude":[],"draft":true},"readingTime":{"minutes":0,"words":0},"git":{},"filePathRelative":null,"headers":[],"type":"blog-tags"}');export{l as comp,i as data};
|
||||
import{_ as t,c as e,o as a}from"./app-I9WJttm3.js";const n={};function r(o,c){return a(),e("div")}const l=t(n,[["render",r]]),i=JSON.parse('{"path":"/blog/tags/","title":"标签","lang":"zh-CN","frontmatter":{"lang":"zh-CN","title":"标签","gitInclude":[],"draft":true},"readingTime":{"minutes":0,"words":0},"git":{},"filePathRelative":null,"headers":[],"type":"blog-tags"}');export{l as comp,i as data};
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{_ as i,c as a,a as e,o as n}from"./app-FFcgQi-5.js";const h={};function l(t,s){return n(),a("div",null,[...s[0]||(s[0]=[e(`<h2 id="fisco-bcos-简介" tabindex="-1"><a class="header-anchor" href="#fisco-bcos-简介"><span>FISCO BCOS 简介</span></a></h2><p>嘿呀~FISCO BCOS 可是金链盟开源工作组超用心牵头打造的企业级金融区块链底层平台哟!它就像一个超级厉害的小能手,有着高性能、高可用、安全可控这些超棒的特点呢。还支持多群组架构喔,能轻轻松松满足不同业务场景下的数据隔离和隐私保护需求,简直太赞啦!</p><p>而且呢,FISCO BCOS 还准备了好多丰富的开发工具和组件,就像给开发者们准备了一个魔法百宝箱,帮助大家能快速搭建区块链应用。现在在金融、政务、供应链这些好多好多领域都能看到它活跃的身影,应用可广泛啦!</p><h2 id="fisco-bcos-网络部署" tabindex="-1"><a class="header-anchor" href="#fisco-bcos-网络部署"><span>FISCO BCOS 网络部署</span></a></h2><p>FICSO BCOS 提供了一个 build_chain.sh 来部署区块链,下面的步骤都是通过这个脚本来部署的区块链网络</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># 可以通过这个指令下载脚本并赋予执行权限</span></span>
|
||||
import{_ as i,c as a,a as e,o as n}from"./app-I9WJttm3.js";const h={};function l(t,s){return n(),a("div",null,[...s[0]||(s[0]=[e(`<h2 id="fisco-bcos-简介" tabindex="-1"><a class="header-anchor" href="#fisco-bcos-简介"><span>FISCO BCOS 简介</span></a></h2><p>嘿呀~FISCO BCOS 可是金链盟开源工作组超用心牵头打造的企业级金融区块链底层平台哟!它就像一个超级厉害的小能手,有着高性能、高可用、安全可控这些超棒的特点呢。还支持多群组架构喔,能轻轻松松满足不同业务场景下的数据隔离和隐私保护需求,简直太赞啦!</p><p>而且呢,FISCO BCOS 还准备了好多丰富的开发工具和组件,就像给开发者们准备了一个魔法百宝箱,帮助大家能快速搭建区块链应用。现在在金融、政务、供应链这些好多好多领域都能看到它活跃的身影,应用可广泛啦!</p><h2 id="fisco-bcos-网络部署" tabindex="-1"><a class="header-anchor" href="#fisco-bcos-网络部署"><span>FISCO BCOS 网络部署</span></a></h2><p>FICSO BCOS 提供了一个 build_chain.sh 来部署区块链,下面的步骤都是通过这个脚本来部署的区块链网络</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># 可以通过这个指令下载脚本并赋予执行权限</span></span>
|
||||
<span class="line"><span>curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.11.0/build_chain.sh && chmod u+x build_chain.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><h3 id="部署单群组4节点联盟链" tabindex="-1"><a class="header-anchor" href="#部署单群组4节点联盟链"><span>部署单群组4节点联盟链</span></a></h3><p>这里要确保机器的30300-30303,20200-20203,8545-8548端口都没有被占用</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># 部署单群组4节点联盟链</span></span>
|
||||
<span class="line"><span>bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -e ./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 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># 部署单群组4节点联盟链(国密版本)</span></span>
|
||||
<span class="line"><span>bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G -e ./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 class="line-number"></div></div></div><p>参数解析:</p><ul><li>-l:指定节点的IP地址和节点数</li><li>-p:指定节点的端口号</li><li>-g 和 -G:使用国密sm算法</li><li>-e:使用指定的 fisco-bcos 文件</li></ul><p>默认情况下脚本会去 github 上下载 fisco-bcos 二进制文件,这一步在国内很有可能失败,建议提前下载好,然后直接使用本地的</p><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>bash nodes/127.0.0.1/start_all.sh</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>检查节点进程是否存在</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>ps -ef | grep 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>检查节点之间是否互相链接了</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># 这里是检查 node0 的日志文件</span></span>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{_ as i,c as a,a as n,o as l}from"./app-FFcgQi-5.js";const h={};function e(k,s){return l(),a("div",null,[...s[0]||(s[0]=[n(`<h2 id="关于-memory-和-storage-存储类型" tabindex="-1"><a class="header-anchor" href="#关于-memory-和-storage-存储类型"><span>关于 memory 和 storage 存储类型</span></a></h2><ul><li><code>storage</code>:合约的持久化状态数据,保存在链上状态。对 <code>storage</code> 的写入最昂贵,读取也比内存贵;修改会永久生效。</li><li><code>memory</code>:函数调用期间的临时数据,函数返回后即释放。对 <code>memory</code> 的更改不会持久化。</li><li>(补充)<code>calldata</code>:外部函数参数的只读数据位置,零拷贝、不可修改,用于节省 gas。</li></ul><h3 id="生命周期与成本" tabindex="-1"><a class="header-anchor" href="#生命周期与成本"><span>生命周期与成本</span></a></h3><ul><li><code>storage</code> 写入昂贵、读取较贵;适合保存需要长期存在的状态。</li><li><code>memory</code> 在函数结束时释放,读取/写入相对便宜;适合临时计算与返回值。</li><li>复杂引用类型(数组、<code>struct</code>、<code>mapping</code>、<code>string</code>、<code>bytes</code>)在函数参数或局部变量处通常必须显式标注数据位置。</li></ul><h3 id="默认与必须声明" tabindex="-1"><a class="header-anchor" href="#默认与必须声明"><span>默认与必须声明</span></a></h3><ul><li>状态变量总是位于 <code>storage</code>(例如 <code>User[] public users;</code>)。</li><li>外部函数(<code>external</code>)的复杂类型参数默认是 <code>calldata</code>;内部/公共函数需要显式标注 <code>memory</code> 或 <code>storage</code>。</li><li>局部变量的复杂类型必须指定数据位置,否则编译报错。</li></ul><h3 id="拷贝与引用语义" tabindex="-1"><a class="header-anchor" href="#拷贝与引用语义"><span>拷贝与引用语义</span></a></h3><ul><li>从 <code>storage</code> 读取到 <code>memory</code> 会“复制”数据;修改 <code>memory</code> 副本不影响原始 <code>storage</code>。</li><li>使用 <code>storage</code> 局部变量可以得到对状态数据的“引用”,对其赋值会持久化。</li></ul><div class="language-solidity line-numbers-mode" data-highlighter="shiki" data-ext="solidity" 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-solidity"><span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">pragma</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> solidity</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> ^0.8.20</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
|
||||
import{_ as i,c as a,a as n,o as l}from"./app-I9WJttm3.js";const h={};function e(k,s){return l(),a("div",null,[...s[0]||(s[0]=[n(`<h2 id="关于-memory-和-storage-存储类型" tabindex="-1"><a class="header-anchor" href="#关于-memory-和-storage-存储类型"><span>关于 memory 和 storage 存储类型</span></a></h2><ul><li><code>storage</code>:合约的持久化状态数据,保存在链上状态。对 <code>storage</code> 的写入最昂贵,读取也比内存贵;修改会永久生效。</li><li><code>memory</code>:函数调用期间的临时数据,函数返回后即释放。对 <code>memory</code> 的更改不会持久化。</li><li>(补充)<code>calldata</code>:外部函数参数的只读数据位置,零拷贝、不可修改,用于节省 gas。</li></ul><h3 id="生命周期与成本" tabindex="-1"><a class="header-anchor" href="#生命周期与成本"><span>生命周期与成本</span></a></h3><ul><li><code>storage</code> 写入昂贵、读取较贵;适合保存需要长期存在的状态。</li><li><code>memory</code> 在函数结束时释放,读取/写入相对便宜;适合临时计算与返回值。</li><li>复杂引用类型(数组、<code>struct</code>、<code>mapping</code>、<code>string</code>、<code>bytes</code>)在函数参数或局部变量处通常必须显式标注数据位置。</li></ul><h3 id="默认与必须声明" tabindex="-1"><a class="header-anchor" href="#默认与必须声明"><span>默认与必须声明</span></a></h3><ul><li>状态变量总是位于 <code>storage</code>(例如 <code>User[] public users;</code>)。</li><li>外部函数(<code>external</code>)的复杂类型参数默认是 <code>calldata</code>;内部/公共函数需要显式标注 <code>memory</code> 或 <code>storage</code>。</li><li>局部变量的复杂类型必须指定数据位置,否则编译报错。</li></ul><h3 id="拷贝与引用语义" tabindex="-1"><a class="header-anchor" href="#拷贝与引用语义"><span>拷贝与引用语义</span></a></h3><ul><li>从 <code>storage</code> 读取到 <code>memory</code> 会“复制”数据;修改 <code>memory</code> 副本不影响原始 <code>storage</code>。</li><li>使用 <code>storage</code> 局部变量可以得到对状态数据的“引用”,对其赋值会持久化。</li></ul><div class="language-solidity line-numbers-mode" data-highlighter="shiki" data-ext="solidity" 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-solidity"><span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">pragma</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> solidity</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> ^0.8.20</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">contract</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> Users</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> struct</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> User</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> string</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> name</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> uint</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> age</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span>
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{_ as r,c as g,a as e,b as s,e as k,d as i,w as h,r as p,o as y}from"./app-FFcgQi-5.js";const c={},A={class:"code-block-title","data-title":"index.html"},D={class:"code-block-title-bar"},B={class:"title"};function v(u,a){const t=p("VPIcon"),d=p("CodeTabs");return y(),g("div",null,[a[8]||(a[8]=e('<h2 id="javascript-是什么" tabindex="-1"><a class="header-anchor" href="#javascript-是什么"><span>JavaScript 是什么?</span></a></h2><p>JavaScript 是一种广泛用于网页开发的脚本语言,它使网页能够实现交互式功能。与 HTML(负责结构)和 CSS(负责样式)不同,JavaScript 专注于<strong>行为</strong>,可以让网页变得动态和响应式。</p><h2 id="第一个-javascript-程序" tabindex="-1"><a class="header-anchor" href="#第一个-javascript-程序"><span>第一个 JavaScript 程序</span></a></h2><p>JavaScript 代码可以直接写在 HTML 文件中,通常放在 <code><body></code> 标签的底部,使用 <code><script></code> 标签包裹。</p>',4)),s("div",A,[s("div",D,[s("span",B,[k(t,{provider:"iconify",name:"vscode-icons:file-type-html"}),a[0]||(a[0]=i("index.html",-1))])]),a[1]||(a[1]=e(`<div class="language-html line-numbers-mode" data-highlighter="shiki" data-ext="html" 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-html"><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"><!</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">DOCTYPE</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> html</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
import{_ as r,c as g,a as e,b as s,e as k,d as i,w as h,r as p,o as y}from"./app-I9WJttm3.js";const c={},A={class:"code-block-title","data-title":"index.html"},D={class:"code-block-title-bar"},B={class:"title"};function v(u,a){const t=p("VPIcon"),d=p("CodeTabs");return y(),g("div",null,[a[8]||(a[8]=e('<h2 id="javascript-是什么" tabindex="-1"><a class="header-anchor" href="#javascript-是什么"><span>JavaScript 是什么?</span></a></h2><p>JavaScript 是一种广泛用于网页开发的脚本语言,它使网页能够实现交互式功能。与 HTML(负责结构)和 CSS(负责样式)不同,JavaScript 专注于<strong>行为</strong>,可以让网页变得动态和响应式。</p><h2 id="第一个-javascript-程序" tabindex="-1"><a class="header-anchor" href="#第一个-javascript-程序"><span>第一个 JavaScript 程序</span></a></h2><p>JavaScript 代码可以直接写在 HTML 文件中,通常放在 <code><body></code> 标签的底部,使用 <code><script></code> 标签包裹。</p>',4)),s("div",A,[s("div",D,[s("span",B,[k(t,{provider:"iconify",name:"vscode-icons:file-type-html"}),a[0]||(a[0]=i("index.html",-1))])]),a[1]||(a[1]=e(`<div class="language-html line-numbers-mode" data-highlighter="shiki" data-ext="html" 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-html"><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"><!</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">DOCTYPE</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> html</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">html</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> lang</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;">zh-CN</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">head</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> <</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">meta</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> charset</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;">utf-8</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as e,c as a,a as n,o as i}from"./app-FFcgQi-5.js";const l={};function d(t,s){return i(),a("div",null,[...s[0]||(s[0]=[n(`<p>这篇文章主要讲WSL2虚拟机核心操作哦~它基于轻量级Hyper-V运行,像贴心小精灵默默工作~还能用命令行精细控制!接下来讲启动/关闭、实例管理、资源配置、网络操作、备份迁移这五大操作,是不是很期待呢~♪</p><h2 id="启动-关闭-wsl2-虚拟机" tabindex="-1"><a class="header-anchor" href="#启动-关闭-wsl2-虚拟机"><span>启动/关闭 WSL2 虚拟机</span></a></h2><p>WSL2的虚拟机平时是由Windows自动管理的呢,不过我们也可以通过命令手动控制它的生命周期哦~</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># 启动指定的发行版</span></span>
|
||||
import{_ as e,c as a,a as n,o as i}from"./app-I9WJttm3.js";const l={};function d(t,s){return i(),a("div",null,[...s[0]||(s[0]=[n(`<p>这篇文章主要讲WSL2虚拟机核心操作哦~它基于轻量级Hyper-V运行,像贴心小精灵默默工作~还能用命令行精细控制!接下来讲启动/关闭、实例管理、资源配置、网络操作、备份迁移这五大操作,是不是很期待呢~♪</p><h2 id="启动-关闭-wsl2-虚拟机" tabindex="-1"><a class="header-anchor" href="#启动-关闭-wsl2-虚拟机"><span>启动/关闭 WSL2 虚拟机</span></a></h2><p>WSL2的虚拟机平时是由Windows自动管理的呢,不过我们也可以通过命令手动控制它的生命周期哦~</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># 启动指定的发行版</span></span>
|
||||
<span class="line"><span>wsl -d Ubuntu-20.04</span></span>
|
||||
<span class="line"><span></span></span>
|
||||
<span class="line"><span># 关闭指定的发行版</span></span>
|
||||
@@ -37,4 +37,4 @@ import{_ as e,c as a,a as n,o as i}from"./app-FFcgQi-5.js";const l={};function d
|
||||
<span class="line"><span></span></span>
|
||||
<span class="line"><span># 导入 tar 文件为新的发行版</span></span>
|
||||
<span class="line"><span>wsl --import <新发行版名称> <安装目录> <tar 文件路径> [选项]</span></span>
|
||||
<span class="line"><span>wsl --import Ubuntu-Backup C:\\wsl\\Ubuntu-Backup D:\\backups\\ubuntu-2004.tar --version 2</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></div><p>要注意哦~导入完成后,默认用户会变成root呢~如果想要设置回原来的用户,可以使用这个命令:</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>ubuntu2004.exe config --default-user username</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>悄悄告诉大家一个小秘密~WSL2是可以同时存在多个同源发行版的哦~这样我们就可以在不同的环境中进行不同的实验啦~是不是很方便呢~</p>`,36)])])}const r=e(l,[["render",d]]),c=JSON.parse('{"path":"/article/operate-wsl2/","title":"WSL2 核心操作指南","lang":"zh-CN","frontmatter":{"title":"WSL2 核心操作指南","createTime":"2025/09/30 16:08:32","cover":"https://image.simengweb.com/elysia_cover_image/2MEiWEhvsx8OtKeJ.png","permalink":"/article/operate-wsl2/"},"readingTime":{"minutes":3.74,"words":1123},"git":{"createdTime":1759223056000,"updatedTime":1759303270000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":3,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"}]},"filePathRelative":"blog/technology/Operate_WSL2.md","headers":[],"categoryList":[{"id":"126ac9","sort":10000,"name":"blog"},{"id":"750eb7","sort":10001,"name":"technology"}]}');export{r as comp,c as data};
|
||||
<span class="line"><span>wsl --import Ubuntu-Backup C:\\wsl\\Ubuntu-Backup D:\\backups\\ubuntu-2004.tar --version 2</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></div><p>要注意哦~导入完成后,默认用户会变成root呢~如果想要设置回原来的用户,可以使用这个命令:</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>ubuntu2004.exe config --default-user username</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>悄悄告诉大家一个小秘密~WSL2是可以同时存在多个同源发行版的哦~这样我们就可以在不同的环境中进行不同的实验啦~是不是很方便呢~</p>`,36)])])}const r=e(l,[["render",d]]),c=JSON.parse('{"path":"/article/operate-wsl2/","title":"WSL2 核心操作指南","lang":"zh-CN","frontmatter":{"title":"WSL2 核心操作指南","createTime":"2025/09/30 16:08:32","cover":"https://image.simengweb.com/elysia_cover_image/2MEiWEhvsx8OtKeJ.png","permalink":"/article/operate-wsl2/"},"readingTime":{"minutes":3.74,"words":1123},"git":{"createdTime":1759223056000,"updatedTime":1759303270000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":3,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"}]},"filePathRelative":"blog/technology/Operate_WSL2.md","headers":[],"categoryList":[{"id":"126ac9","sort":10000,"name":"blog"},{"id":"750eb7","sort":10002,"name":"technology"}]}');export{r as comp,c as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as p,c as g,b as i,e as t,a as d,d as s,w as k,r,o as y}from"./app-FFcgQi-5.js";const D={},A={class:"code-block-title","data-title":"index.html"},c={class:"code-block-title-bar"},B={class:"title"},u={class:"code-block-title","data-title":"index.html"},m={class:"code-block-title-bar"},v={class:"title"},o={class:"code-block-title","data-title":"index.html"},E={class:"code-block-title-bar"},b={class:"title"},C={class:"code-block-title","data-title":"index.html"},F={class:"code-block-title-bar"},f={class:"title"},x={class:"code-block-title","data-title":"index.html"},j={class:"code-block-title-bar"},S={class:"title"};function q(T,h){const e=r("VPIcon"),n=r("CodeTabs");return y(),g("div",null,[h[60]||(h[60]=i("h2",{id:"四、列表-ul-ol-li",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#四、列表-ul-ol-li"},[i("span",null,"四、列表(UL/OL/LI)")])],-1)),h[61]||(h[61]=i("p",null,"无序列表(圆点):",-1)),i("div",A,[i("div",c,[i("span",B,[t(e,{provider:"iconify",name:"vscode-icons:file-type-html"}),h[0]||(h[0]=s("index.html",-1))])]),h[1]||(h[1]=d(`<div class="language-html line-numbers-mode" data-highlighter="shiki" data-ext="html" 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-html"><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">ul</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
import{_ as p,c as g,b as i,e as t,a as d,d as s,w as k,r,o as y}from"./app-I9WJttm3.js";const D={},A={class:"code-block-title","data-title":"index.html"},c={class:"code-block-title-bar"},B={class:"title"},u={class:"code-block-title","data-title":"index.html"},m={class:"code-block-title-bar"},v={class:"title"},o={class:"code-block-title","data-title":"index.html"},E={class:"code-block-title-bar"},b={class:"title"},C={class:"code-block-title","data-title":"index.html"},F={class:"code-block-title-bar"},f={class:"title"},x={class:"code-block-title","data-title":"index.html"},j={class:"code-block-title-bar"},S={class:"title"};function q(T,h){const e=r("VPIcon"),n=r("CodeTabs");return y(),g("div",null,[h[60]||(h[60]=i("h2",{id:"四、列表-ul-ol-li",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#四、列表-ul-ol-li"},[i("span",null,"四、列表(UL/OL/LI)")])],-1)),h[61]||(h[61]=i("p",null,"无序列表(圆点):",-1)),i("div",A,[i("div",c,[i("span",B,[t(e,{provider:"iconify",name:"vscode-icons:file-type-html"}),h[0]||(h[0]=s("index.html",-1))])]),h[1]||(h[1]=d(`<div class="language-html line-numbers-mode" data-highlighter="shiki" data-ext="html" 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-html"><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">ul</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> <</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">li</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">学习笔记</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"></</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">li</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> <</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">li</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">工具推荐</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"></</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">li</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> <</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">li</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">友情链接</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"></</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">li</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
@@ -1 +1 @@
|
||||
import{_ as a,c as t,a as n,o as r}from"./app-FFcgQi-5.js";const o={};function s(c,e){return r(),t("div",null,[...e[0]||(e[0]=[n('<h2 id="区块链简介" tabindex="-1"><a class="header-anchor" href="#区块链简介"><span>区块链简介</span></a></h2><p>区块链就像是一本神奇的共享账本哦~它由许许多多的"区块"连接而成,每个区块里都记录着各种交易信息~最特别的是,这本账本不是由某一个人或组织保管的,而是由网络里的所有人一起维护呢~</p><p>想象一下,当有新的交易发生时,网络里的每个人都会收到一份拷贝,大家一起验证这份交易的真实性,然后把它添加到账本里~这样一来,就没有人能够偷偷篡改账本啦~是不是很神奇呢~♪</p><p>区块链还有一个超棒的特点哦~它不需要中间人的帮忙,就能让互不相识的人们安全地进行交易~就像魔法一样,让信任在数字世界里自然生长~</p><h2 id="区块链的理论基础" tabindex="-1"><a class="header-anchor" href="#区块链的理论基础"><span>区块链的理论基础</span></a></h2><p>呜呜~在网上找关于完整区块链原理的资料好难呀,现在就只看到一些比较基础的课程和书籍呢。</p><p>嘿嘿,在B站的话,发现有一个课程超棒哒,就是肖臻老师的<a href="https://www.bilibili.com/video/BV1Vt411X7JF/" target="_blank" rel="noopener noreferrer">《区块链技术与应用》</a>呢!</p><p>在Youtube上也可以去看看<a href="https://www.youtube.com/@BinanceAcademy" target="_blank" rel="noopener noreferrer">Binance Academy</a>的视频哟,感觉也很不错哒!</p><p>至于书籍嘛,目前还没找到特别好的,不过没关系,会继续努力找找哒!如果有好的课程的话,可以评论留言分享一下哦~</p><h2 id="区块链的运维实践" tabindex="-1"><a class="header-anchor" href="#区块链的运维实践"><span>区块链的运维实践</span></a></h2><p>嘿嘿~区块链的搭建呀,主要就是通过 <a href="https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/introduction.html" target="_blank" rel="noopener noreferrer">FISCO BCOS</a> 来实现哒!</p><p>它呢,是一个开源的、基于Java的区块链平台哟~还支持智能合约的部署和执行呢,超厉害的!</p>',12)])])}const p=a(o,[["render",s]]),h=JSON.parse('{"path":"/ops/blockchain/","title":"区块链运维指南","lang":"zh-CN","frontmatter":{"title":"区块链运维指南","createTime":"2025/09/28 07:54:17","permalink":"/ops/blockchain/"},"readingTime":{"minutes":1.54,"words":461},"git":{"createdTime":1759061001000,"updatedTime":1759391780000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":3,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"}]},"filePathRelative":"notes/ops/blockchain/README.md","headers":[]}');export{p as comp,h as data};
|
||||
import{_ as a,c as t,a as n,o as r}from"./app-I9WJttm3.js";const o={};function s(c,e){return r(),t("div",null,[...e[0]||(e[0]=[n('<h2 id="区块链简介" tabindex="-1"><a class="header-anchor" href="#区块链简介"><span>区块链简介</span></a></h2><p>区块链就像是一本神奇的共享账本哦~它由许许多多的"区块"连接而成,每个区块里都记录着各种交易信息~最特别的是,这本账本不是由某一个人或组织保管的,而是由网络里的所有人一起维护呢~</p><p>想象一下,当有新的交易发生时,网络里的每个人都会收到一份拷贝,大家一起验证这份交易的真实性,然后把它添加到账本里~这样一来,就没有人能够偷偷篡改账本啦~是不是很神奇呢~♪</p><p>区块链还有一个超棒的特点哦~它不需要中间人的帮忙,就能让互不相识的人们安全地进行交易~就像魔法一样,让信任在数字世界里自然生长~</p><h2 id="区块链的理论基础" tabindex="-1"><a class="header-anchor" href="#区块链的理论基础"><span>区块链的理论基础</span></a></h2><p>呜呜~在网上找关于完整区块链原理的资料好难呀,现在就只看到一些比较基础的课程和书籍呢。</p><p>嘿嘿,在B站的话,发现有一个课程超棒哒,就是肖臻老师的<a href="https://www.bilibili.com/video/BV1Vt411X7JF/" target="_blank" rel="noopener noreferrer">《区块链技术与应用》</a>呢!</p><p>在Youtube上也可以去看看<a href="https://www.youtube.com/@BinanceAcademy" target="_blank" rel="noopener noreferrer">Binance Academy</a>的视频哟,感觉也很不错哒!</p><p>至于书籍嘛,目前还没找到特别好的,不过没关系,会继续努力找找哒!如果有好的课程的话,可以评论留言分享一下哦~</p><h2 id="区块链的运维实践" tabindex="-1"><a class="header-anchor" href="#区块链的运维实践"><span>区块链的运维实践</span></a></h2><p>嘿嘿~区块链的搭建呀,主要就是通过 <a href="https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/introduction.html" target="_blank" rel="noopener noreferrer">FISCO BCOS</a> 来实现哒!</p><p>它呢,是一个开源的、基于Java的区块链平台哟~还支持智能合约的部署和执行呢,超厉害的!</p>',12)])])}const p=a(o,[["render",s]]),h=JSON.parse('{"path":"/ops/blockchain/","title":"区块链运维指南","lang":"zh-CN","frontmatter":{"title":"区块链运维指南","createTime":"2025/09/28 07:54:17","permalink":"/ops/blockchain/"},"readingTime":{"minutes":1.54,"words":461},"git":{"createdTime":1759061001000,"updatedTime":1759391780000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":3,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"}]},"filePathRelative":"notes/ops/blockchain/README.md","headers":[]}');export{p as comp,h as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as i,c as a,a as e,o as n}from"./app-FFcgQi-5.js";const l={};function h(d,s){return n(),a("div",null,[...s[0]||(s[0]=[e(`<p>Hello~ 欢迎来到 Linux 命令的奇妙世界!今天,爱莉希雅将带着祀梦一起探索那些最常用、最实用的 Linux 基础命令哦~ 准备好了吗?Let's go!🚀</p><h2 id="文件与目录操作" tabindex="-1"><a class="header-anchor" href="#文件与目录操作"><span>文件与目录操作</span></a></h2><h3 id="ls-查看目录内容" tabindex="-1"><a class="header-anchor" href="#ls-查看目录内容"><span>ls - 查看目录内容</span></a></h3><p><code>ls</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;"># 查看当前目录内容</span></span>
|
||||
import{_ as i,c as a,a as e,o as n}from"./app-I9WJttm3.js";const l={};function h(d,s){return n(),a("div",null,[...s[0]||(s[0]=[e(`<p>Hello~ 欢迎来到 Linux 命令的奇妙世界!今天,爱莉希雅将带着祀梦一起探索那些最常用、最实用的 Linux 基础命令哦~ 准备好了吗?Let's go!🚀</p><h2 id="文件与目录操作" tabindex="-1"><a class="header-anchor" href="#文件与目录操作"><span>文件与目录操作</span></a></h2><h3 id="ls-查看目录内容" tabindex="-1"><a class="header-anchor" href="#ls-查看目录内容"><span>ls - 查看目录内容</span></a></h3><p><code>ls</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;"># 查看当前目录内容</span></span>
|
||||
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">ls</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># 查看详细信息(包括权限、大小、修改时间等)</span></span>
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as s,c as e,a,o as l}from"./app-FFcgQi-5.js";const d={};function n(t,i){return l(),e("div",null,[...i[0]||(i[0]=[a(`<h2 id="solidity-文件基础框架" tabindex="-1"><a class="header-anchor" href="#solidity-文件基础框架"><span>Solidity 文件基础框架</span></a></h2><p>Solidity 文件的基础框架通常包含以下几个部分:</p><ol><li><strong>SPDX 许可证标识符 (SPDX License Identifier)</strong>:为了避免法律问题和明确智能合约的开源许可证,建议在合约的开头添加 SPDX 许可证标识符。</li><li><strong>Solidity 版本声明 (Pragma)</strong>:这会告诉编译器您希望使用哪个版本的 Solidity 来编译您的代码。</li><li><strong>ABI编码编译指示</strong>:通过<code>pragma abicoder v1</code>或<code>pragma abicoder v2</code>来指定ABI编码版本。</li><li><strong>合约定义 (Contract Definition)</strong>:这是您编写智能合约代码的主体部分。</li></ol><p>下面是一个基础的 Solidity 文件框架示例,您可以直接使用:</p><div class="language-solidity line-numbers-mode" data-highlighter="shiki" data-ext="solidity" 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-solidity"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">// SPDX-License-Identifier: MIT</span></span>
|
||||
import{_ as s,c as e,a,o as l}from"./app-I9WJttm3.js";const d={};function n(t,i){return l(),e("div",null,[...i[0]||(i[0]=[a(`<h2 id="solidity-文件基础框架" tabindex="-1"><a class="header-anchor" href="#solidity-文件基础框架"><span>Solidity 文件基础框架</span></a></h2><p>Solidity 文件的基础框架通常包含以下几个部分:</p><ol><li><strong>SPDX 许可证标识符 (SPDX License Identifier)</strong>:为了避免法律问题和明确智能合约的开源许可证,建议在合约的开头添加 SPDX 许可证标识符。</li><li><strong>Solidity 版本声明 (Pragma)</strong>:这会告诉编译器您希望使用哪个版本的 Solidity 来编译您的代码。</li><li><strong>ABI编码编译指示</strong>:通过<code>pragma abicoder v1</code>或<code>pragma abicoder v2</code>来指定ABI编码版本。</li><li><strong>合约定义 (Contract Definition)</strong>:这是您编写智能合约代码的主体部分。</li></ol><p>下面是一个基础的 Solidity 文件框架示例,您可以直接使用:</p><div class="language-solidity line-numbers-mode" data-highlighter="shiki" data-ext="solidity" 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-solidity"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">// SPDX-License-Identifier: MIT</span></span>
|
||||
<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">pragma</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> solidity</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> ^0.8.20</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">pragma</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> experimental</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> ABIEncoderV2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
|
||||
<span class="line"></span>
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{_ as e,c as i,a as s,o as t}from"./app-FFcgQi-5.js";const a={};function r(o,n){return t(),i("div",null,[...n[0]||(n[0]=[s('<p>你好呀,这里是祀梦的 Linux 运维笔记小天地~ 🌟</p><p>在这片神奇的天地里,我们将一起探索 Linux 操作系统的奥秘,学习各种实用的运维技巧。无论你是刚开始接触 Linux 的新手,还是已经有一定经验的运维工程师,相信这里都能为你提供一些有用的知识和见解哦~</p><h2 id="为什么选择-linux" tabindex="-1"><a class="header-anchor" href="#为什么选择-linux"><span>为什么选择 Linux?</span></a></h2><p>Linux 就像是一个宝藏盒子,里面装满了各种强大的工具和功能。它稳定、安全、高效,是服务器领域的佼佼者。而且最重要的是,它是开源的!这意味着我们可以自由地探索它的内部结构,甚至可以根据自己的需求进行定制~</p><h2 id="笔记内容概览" tabindex="-1"><a class="header-anchor" href="#笔记内容概览"><span>笔记内容概览</span></a></h2><p>这里的笔记将会涵盖以下几个方面:</p><ul><li><strong>Linux 基础命令</strong>:从最基本的文件操作到系统管理,一步步带你熟悉 Linux 的常用命令</li><li><strong>系统管理</strong>:学习如何管理用户、进程、服务和网络</li><li><strong>Shell 脚本编程</strong>:掌握 Shell 脚本的编写技巧,让你的工作更加自动化</li><li><strong>系统性能优化</strong>:了解如何监控和优化 Linux 系统的性能</li><li><strong>安全防护</strong>:学习 Linux 系统的安全配置和防护措施</li></ul><h2 id="学习建议" tabindex="-1"><a class="header-anchor" href="#学习建议"><span>学习建议</span></a></h2><p>学习 Linux 最好的方法就是<strong>多实践</strong>!不要害怕犯错,每一次错误都是成长的机会。如果你在学习过程中遇到了问题,记得多查阅文档,多和社区交流~</p><p>让我们一起开启这段精彩的 Linux 运维之旅吧! 💪</p>',10)])])}const p=e(a,[["render",r]]),c=JSON.parse('{"path":"/ops/linux/","title":"Linux 运维笔记","lang":"zh-CN","frontmatter":{"title":"Linux 运维笔记","createTime":"2025/09/28 10:30:00","permalink":"/ops/linux/"},"readingTime":{"minutes":1.43,"words":430},"git":{"createdTime":1759061001000,"updatedTime":1759061001000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":1,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"}]},"filePathRelative":"notes/ops/linux/README.md","headers":[]}');export{p as comp,c as data};
|
||||
import{_ as e,c as i,a as s,o as t}from"./app-I9WJttm3.js";const a={};function r(o,n){return t(),i("div",null,[...n[0]||(n[0]=[s('<p>你好呀,这里是祀梦的 Linux 运维笔记小天地~ 🌟</p><p>在这片神奇的天地里,我们将一起探索 Linux 操作系统的奥秘,学习各种实用的运维技巧。无论你是刚开始接触 Linux 的新手,还是已经有一定经验的运维工程师,相信这里都能为你提供一些有用的知识和见解哦~</p><h2 id="为什么选择-linux" tabindex="-1"><a class="header-anchor" href="#为什么选择-linux"><span>为什么选择 Linux?</span></a></h2><p>Linux 就像是一个宝藏盒子,里面装满了各种强大的工具和功能。它稳定、安全、高效,是服务器领域的佼佼者。而且最重要的是,它是开源的!这意味着我们可以自由地探索它的内部结构,甚至可以根据自己的需求进行定制~</p><h2 id="笔记内容概览" tabindex="-1"><a class="header-anchor" href="#笔记内容概览"><span>笔记内容概览</span></a></h2><p>这里的笔记将会涵盖以下几个方面:</p><ul><li><strong>Linux 基础命令</strong>:从最基本的文件操作到系统管理,一步步带你熟悉 Linux 的常用命令</li><li><strong>系统管理</strong>:学习如何管理用户、进程、服务和网络</li><li><strong>Shell 脚本编程</strong>:掌握 Shell 脚本的编写技巧,让你的工作更加自动化</li><li><strong>系统性能优化</strong>:了解如何监控和优化 Linux 系统的性能</li><li><strong>安全防护</strong>:学习 Linux 系统的安全配置和防护措施</li></ul><h2 id="学习建议" tabindex="-1"><a class="header-anchor" href="#学习建议"><span>学习建议</span></a></h2><p>学习 Linux 最好的方法就是<strong>多实践</strong>!不要害怕犯错,每一次错误都是成长的机会。如果你在学习过程中遇到了问题,记得多查阅文档,多和社区交流~</p><p>让我们一起开启这段精彩的 Linux 运维之旅吧! 💪</p>',10)])])}const p=e(a,[["render",r]]),c=JSON.parse('{"path":"/ops/linux/","title":"Linux 运维笔记","lang":"zh-CN","frontmatter":{"title":"Linux 运维笔记","createTime":"2025/09/28 10:30:00","permalink":"/ops/linux/"},"readingTime":{"minutes":1.43,"words":430},"git":{"createdTime":1759061001000,"updatedTime":1759061001000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":1,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"}]},"filePathRelative":"notes/ops/linux/README.md","headers":[]}');export{p as comp,c as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as i,c as a,a as h,o as e}from"./app-FFcgQi-5.js";const n={};function l(t,s){return e(),a("div",null,[...s[0]||(s[0]=[h(`<h2 id="hardhat2-部署" tabindex="-1"><a class="header-anchor" href="#hardhat2-部署"><span>HardHat2 部署</span></a></h2><h3 id="node-js-v16-安装" tabindex="-1"><a class="header-anchor" href="#node-js-v16-安装"><span>Node.js v16 安装</span></a></h3><p>HardHat2 需要 Node.js v16 及以上的版本 这里给出的是通过 npm 来将旧版本升级到 Node.js v16 的,如果想要直接安装的话通过 <code>yum install nodejs</code> 或者 <code>apt install nodejs</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;">npm</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> config</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> set</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> registry</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> https://registry.npmmirror.com</span></span>
|
||||
import{_ as i,c as a,a as h,o as e}from"./app-I9WJttm3.js";const n={};function l(t,s){return e(),a("div",null,[...s[0]||(s[0]=[h(`<h2 id="hardhat2-部署" tabindex="-1"><a class="header-anchor" href="#hardhat2-部署"><span>HardHat2 部署</span></a></h2><h3 id="node-js-v16-安装" tabindex="-1"><a class="header-anchor" href="#node-js-v16-安装"><span>Node.js v16 安装</span></a></h3><p>HardHat2 需要 Node.js v16 及以上的版本 这里给出的是通过 npm 来将旧版本升级到 Node.js v16 的,如果想要直接安装的话通过 <code>yum install nodejs</code> 或者 <code>apt install nodejs</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;">npm</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> config</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> set</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> registry</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> https://registry.npmmirror.com</span></span>
|
||||
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">sudo</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> npm</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> install</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -g</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> n</span></span>
|
||||
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">sudo</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> n</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 16</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><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;">node</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -v</span></span>
|
||||
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># v16.20.2</span></span>
|
||||
@@ -1 +1 @@
|
||||
import{_ as a,c as s,b as e,o as l}from"./app-FFcgQi-5.js";const n={};function r(i,t){return l(),s("div",null,[...t[0]||(t[0]=[e("p",null,"这里是英语学习的入门环境配置示例模版:",-1),e("ul",null,[e("li",null,"推荐词典与工具"),e("li",null,"输入法与语音资源"),e("li",null,"常用学习网站与 App")],-1),e("p",null,"你可以按需补充具体内容。",-1)])])}const o=a(n,[["render",r]]),m=JSON.parse('{"path":"/subject/english/basis/","title":"英语环境配置","lang":"zh-CN","frontmatter":{"title":"英语环境配置","createTime":"2025/10/20 16:34:20","permalink":"/subject/english/basis/"},"readingTime":{"minutes":0.24,"words":72},"git":{"createdTime":1760961315000,"updatedTime":1760961315000,"contributors":[{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"}]},"filePathRelative":"notes/subject/english/basis/README.md","headers":[]}');export{o as comp,m as data};
|
||||
import{_ as a,c as s,b as e,o as l}from"./app-I9WJttm3.js";const n={};function r(i,t){return l(),s("div",null,[...t[0]||(t[0]=[e("p",null,"这里是英语学习的入门环境配置示例模版:",-1),e("ul",null,[e("li",null,"推荐词典与工具"),e("li",null,"输入法与语音资源"),e("li",null,"常用学习网站与 App")],-1),e("p",null,"你可以按需补充具体内容。",-1)])])}const o=a(n,[["render",r]]),m=JSON.parse('{"path":"/subject/english/basis/","title":"英语环境配置","lang":"zh-CN","frontmatter":{"title":"英语环境配置","createTime":"2025/10/20 16:34:20","permalink":"/subject/english/basis/"},"readingTime":{"minutes":0.24,"words":72},"git":{"createdTime":1760961315000,"updatedTime":1760961315000,"contributors":[{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"}]},"filePathRelative":"notes/subject/english/basis/README.md","headers":[]}');export{o as comp,m as data};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{_ as r,c as a,a as n,o as t}from"./app-FFcgQi-5.js";const o={};function l(i,e){return t(),a("div",null,[...e[0]||(e[0]=[n('<p>以下是我平时工作和学习中经常使用的一些Web工具,分享给大家:</p><h2 id="开发工具" tabindex="-1"><a class="header-anchor" href="#开发工具"><span>开发工具</span></a></h2><ul><li><a href="https://it-tools.simengweb.com/" target="_blank" rel="noopener noreferrer">面向开发人员的便捷工具</a> - 一个比较好的工具箱</li><li><a href="https://visualgo.net/zh" target="_blank" rel="noopener noreferrer">算法可视化工具 - Visualgo</a> - 算法和数据结构可视化学习平台</li><li><a href="https://quickref.cn/" target="_blank" rel="noopener noreferrer">程序员速查手册</a> - 程序员常用开发知识速查</li><li><a href="https://jupyter.org/try-jupyter/lab/" target="_blank" rel="noopener noreferrer">Jupyter在线环境</a> - 在线Jupyter笔记本环境,支持多种编程语言</li></ul><h2 id="设计工具" tabindex="-1"><a class="header-anchor" href="#设计工具"><span>设计工具</span></a></h2><ul><li><a href="https://www.iconfont.cn/" target="_blank" rel="noopener noreferrer">iconfont-阿里巴巴矢量图标库</a> - 阿里妈妈MUX倾力打造的矢量图标管理、交流平台</li></ul><h2 id="教育的平台" tabindex="-1"><a class="header-anchor" href="#教育的平台"><span>教育的平台</span></a></h2><ul><li><a href="https://www.icourse163.org/" target="_blank" rel="noopener noreferrer">中国大学MOOC</a> - 国内优质在线课程平台</li><li><a href="https://www.xuetangx.com/" target="_blank" rel="noopener noreferrer">学堂在线</a> - 清华大学发起的大规模开放在线教育平台</li><li><a href="https://www.geogebra.org/" target="_blank" rel="noopener noreferrer">GeoGebra</a> - 数学教学与学习的动态几何软件</li><li><a href="https://noobdream.com/index/" target="_blank" rel="noopener noreferrer">编程学习平台</a> - 编程学习资源与算法题库</li></ul><h2 id="在线工具" tabindex="-1"><a class="header-anchor" href="#在线工具"><span>在线工具</span></a></h2><ul><li><a href="https://www.jyshare.com/" target="_blank" rel="noopener noreferrer">极简工具 - Jyshare</a> - 提供各种在线实用工具的平台</li><li><a href="https://onlineconvertfree.com/zh/" target="_blank" rel="noopener noreferrer">在线文件转换</a> - 免费在线文件格式转换工具</li><li><a href="https://tk.enncy.cn/" target="_blank" rel="noopener noreferrer">工具库 - Enncy</a> - 实用工具集合</li></ul><h2 id="资源平台" tabindex="-1"><a class="header-anchor" href="#资源平台"><span>资源平台</span></a></h2><ul><li><a href="https://z-lib.life/" target="_blank" rel="noopener noreferrer">Z-Library</a> - 电子书资源库</li></ul><h2 id="自己常玩的一些游戏攻略" tabindex="-1"><a class="header-anchor" href="#自己常玩的一些游戏攻略"><span>自己常玩的一些游戏攻略</span></a></h2><ul><li><a href="https://wiki.biligame.com/blhx/%E5%A4%A7%E5%9E%8B%E4%BD%9C%E6%88%98%E6%88%90%E5%B0%B1%E8%AE%B0%E5%BD%95%E5%9C%B0%E5%9B%BE" target="_blank" rel="noopener noreferrer">碧蓝航线WIKI大型作战成就记录地图</a> - 碧蓝航线大型作战成就记录地图</li><li><a href="https://bb.heiyu100.cn/shuju.aspx" target="_blank" rel="noopener noreferrer">海岛奇兵数据大全</a> - 海岛奇兵升级数据、设施、游戏数据查询</li><li><a href="https://www.chunkbase.com/apps/seed-map#seed=-7426240975919748310&platform=java_1_20&dimension=overworld&x=-119&z=881&zoom=0.27" target="_blank" rel="noopener noreferrer">Minecraft种子地图工具</a> - Minecraft种子地图查看工具</li><li><a href="https://yqqs.huijiwiki.com/wiki/%E9%A6%96%E9%A1%B5" target="_blank" rel="noopener noreferrer">元气骑士中文维基</a> - 元气骑士游戏中文维基百科</li></ul>',13)])])}const h=r(o,[["render",l]]),p=JSON.parse('{"path":"/tools/","title":"常用Web工具","lang":"zh-CN","frontmatter":{"title":"常用Web工具","description":"一些我常用的在线工具集合","hideInBlogList":true,"article":false,"createTime":"2025/09/22 07:45:30","permalink":"/tools/"},"readingTime":{"minutes":1.68,"words":503},"git":{"createdTime":1758542924000,"updatedTime":1758542924000,"contributors":[{"name":"simeng","username":"","email":"simeng@simengweb.com","commits":1,"avatar":"https://gravatar.com/avatar/0d358b828946f71c617d26b8c881331619abfbbab3bf694ea3f0eb3909110815?d=retro"}]},"filePathRelative":"tools.md","headers":[],"categoryList":[]}');export{h as comp,p as data};
|
||||
import{_ as r,c as a,a as n,o as t}from"./app-I9WJttm3.js";const o={};function l(i,e){return t(),a("div",null,[...e[0]||(e[0]=[n('<p>以下是我平时工作和学习中经常使用的一些Web工具,分享给大家:</p><h2 id="开发工具" tabindex="-1"><a class="header-anchor" href="#开发工具"><span>开发工具</span></a></h2><ul><li><a href="https://it-tools.simengweb.com/" target="_blank" rel="noopener noreferrer">面向开发人员的便捷工具</a> - 一个比较好的工具箱</li><li><a href="https://visualgo.net/zh" target="_blank" rel="noopener noreferrer">算法可视化工具 - Visualgo</a> - 算法和数据结构可视化学习平台</li><li><a href="https://quickref.cn/" target="_blank" rel="noopener noreferrer">程序员速查手册</a> - 程序员常用开发知识速查</li><li><a href="https://jupyter.org/try-jupyter/lab/" target="_blank" rel="noopener noreferrer">Jupyter在线环境</a> - 在线Jupyter笔记本环境,支持多种编程语言</li></ul><h2 id="设计工具" tabindex="-1"><a class="header-anchor" href="#设计工具"><span>设计工具</span></a></h2><ul><li><a href="https://www.iconfont.cn/" target="_blank" rel="noopener noreferrer">iconfont-阿里巴巴矢量图标库</a> - 阿里妈妈MUX倾力打造的矢量图标管理、交流平台</li></ul><h2 id="教育的平台" tabindex="-1"><a class="header-anchor" href="#教育的平台"><span>教育的平台</span></a></h2><ul><li><a href="https://www.icourse163.org/" target="_blank" rel="noopener noreferrer">中国大学MOOC</a> - 国内优质在线课程平台</li><li><a href="https://www.xuetangx.com/" target="_blank" rel="noopener noreferrer">学堂在线</a> - 清华大学发起的大规模开放在线教育平台</li><li><a href="https://www.geogebra.org/" target="_blank" rel="noopener noreferrer">GeoGebra</a> - 数学教学与学习的动态几何软件</li><li><a href="https://noobdream.com/index/" target="_blank" rel="noopener noreferrer">编程学习平台</a> - 编程学习资源与算法题库</li></ul><h2 id="在线工具" tabindex="-1"><a class="header-anchor" href="#在线工具"><span>在线工具</span></a></h2><ul><li><a href="https://www.jyshare.com/" target="_blank" rel="noopener noreferrer">极简工具 - Jyshare</a> - 提供各种在线实用工具的平台</li><li><a href="https://onlineconvertfree.com/zh/" target="_blank" rel="noopener noreferrer">在线文件转换</a> - 免费在线文件格式转换工具</li><li><a href="https://tk.enncy.cn/" target="_blank" rel="noopener noreferrer">工具库 - Enncy</a> - 实用工具集合</li></ul><h2 id="资源平台" tabindex="-1"><a class="header-anchor" href="#资源平台"><span>资源平台</span></a></h2><ul><li><a href="https://z-lib.life/" target="_blank" rel="noopener noreferrer">Z-Library</a> - 电子书资源库</li></ul><h2 id="自己常玩的一些游戏攻略" tabindex="-1"><a class="header-anchor" href="#自己常玩的一些游戏攻略"><span>自己常玩的一些游戏攻略</span></a></h2><ul><li><a href="https://wiki.biligame.com/blhx/%E5%A4%A7%E5%9E%8B%E4%BD%9C%E6%88%98%E6%88%90%E5%B0%B1%E8%AE%B0%E5%BD%95%E5%9C%B0%E5%9B%BE" target="_blank" rel="noopener noreferrer">碧蓝航线WIKI大型作战成就记录地图</a> - 碧蓝航线大型作战成就记录地图</li><li><a href="https://bb.heiyu100.cn/shuju.aspx" target="_blank" rel="noopener noreferrer">海岛奇兵数据大全</a> - 海岛奇兵升级数据、设施、游戏数据查询</li><li><a href="https://www.chunkbase.com/apps/seed-map#seed=-7426240975919748310&platform=java_1_20&dimension=overworld&x=-119&z=881&zoom=0.27" target="_blank" rel="noopener noreferrer">Minecraft种子地图工具</a> - Minecraft种子地图查看工具</li><li><a href="https://yqqs.huijiwiki.com/wiki/%E9%A6%96%E9%A1%B5" target="_blank" rel="noopener noreferrer">元气骑士中文维基</a> - 元气骑士游戏中文维基百科</li></ul>',13)])])}const h=r(o,[["render",l]]),p=JSON.parse('{"path":"/tools/","title":"常用Web工具","lang":"zh-CN","frontmatter":{"title":"常用Web工具","description":"一些我常用的在线工具集合","hideInBlogList":true,"article":false,"createTime":"2025/09/22 07:45:30","permalink":"/tools/"},"readingTime":{"minutes":1.68,"words":503},"git":{"createdTime":1758542924000,"updatedTime":1758542924000,"contributors":[{"name":"simeng","username":"","email":"simeng@simengweb.com","commits":1,"avatar":"https://gravatar.com/avatar/0d358b828946f71c617d26b8c881331619abfbbab3bf694ea3f0eb3909110815?d=retro"}]},"filePathRelative":"tools.md","headers":[],"categoryList":[]}');export{h as comp,p as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as s,c as t,b as e,o as n}from"./app-FFcgQi-5.js";const r={};function m(i,a){return n(),t("div",null,[...a[0]||(a[0]=[e("h2",{id:"c-的简介",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#c-的简介"},[e("span",null,"C++的简介")])],-1),e("p",null,"欢迎来到C++的奇妙世界~(๑>◡<๑) 如果你之前接触过C语言的话,那真是太棒啦!C++就像是C语言穿上了漂亮的新衣裳,不仅保留了原来的优点,还添加了面向对象和泛型编程的魔法哦~不过呢,可能需要稍微调整一下之前的编程习惯呢。就算你是第一次接触C++也完全不用担心,我会用最简单可爱的方式,带着你一步一步探索这个神奇的编程世界哒!",-1),e("h2",{id:"环境配置",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#环境配置"},[e("span",null,"环境配置")])],-1)])])}const o=s(r,[["render",m]]),l=JSON.parse('{"path":"/programming/cplusplus/basis/","title":"C++ 简介与环境配置","lang":"zh-CN","frontmatter":{"title":"C++ 简介与环境配置","createTime":"2025/09/22 09:06:00","permalink":"/programming/cplusplus/basis/"},"readingTime":{"minutes":0.55,"words":164},"git":{"createdTime":1758547422000,"updatedTime":1758685984000,"contributors":[{"name":"simeng","username":"","email":"simeng@simengweb.com","commits":1,"avatar":"https://gravatar.com/avatar/0d358b828946f71c617d26b8c881331619abfbbab3bf694ea3f0eb3909110815?d=retro"},{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":1,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"}]},"filePathRelative":"notes/programming/c++/basis.md","headers":[]}');export{o as comp,l as data};
|
||||
import{_ as s,c as t,b as e,o as n}from"./app-I9WJttm3.js";const r={};function m(i,a){return n(),t("div",null,[...a[0]||(a[0]=[e("h2",{id:"c-的简介",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#c-的简介"},[e("span",null,"C++的简介")])],-1),e("p",null,"欢迎来到C++的奇妙世界~(๑>◡<๑) 如果你之前接触过C语言的话,那真是太棒啦!C++就像是C语言穿上了漂亮的新衣裳,不仅保留了原来的优点,还添加了面向对象和泛型编程的魔法哦~不过呢,可能需要稍微调整一下之前的编程习惯呢。就算你是第一次接触C++也完全不用担心,我会用最简单可爱的方式,带着你一步一步探索这个神奇的编程世界哒!",-1),e("h2",{id:"环境配置",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#环境配置"},[e("span",null,"环境配置")])],-1)])])}const o=s(r,[["render",m]]),l=JSON.parse('{"path":"/programming/cplusplus/basis/","title":"C++ 简介与环境配置","lang":"zh-CN","frontmatter":{"title":"C++ 简介与环境配置","createTime":"2025/09/22 09:06:00","permalink":"/programming/cplusplus/basis/"},"readingTime":{"minutes":0.55,"words":164},"git":{"createdTime":1758547422000,"updatedTime":1758685984000,"contributors":[{"name":"simeng","username":"","email":"simeng@simengweb.com","commits":1,"avatar":"https://gravatar.com/avatar/0d358b828946f71c617d26b8c881331619abfbbab3bf694ea3f0eb3909110815?d=retro"},{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":1,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"}]},"filePathRelative":"notes/programming/c++/basis.md","headers":[]}');export{o as comp,l as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as a,c,a as t,o as i}from"./app-FFcgQi-5.js";const s={};function r(l,e){return i(),c("div",null,[...e[0]||(e[0]=[t('<p>这是一个英语学习笔记的总览页。下面是目录与分区入口:</p><h2 id="目录" tabindex="-1"><a class="header-anchor" href="#目录"><span>目录</span></a></h2><ul><li>学习环境与工具 → <code>/subject/english/basis/</code></li><li>词汇与记忆 → <code>/subject/english/vocabulary/</code></li><li>语法与句法 → <code>/subject/english/grammar/</code></li><li>听力与口语 → <code>/subject/english/listening-speaking/</code></li><li>阅读 → <code>/subject/english/reading-writing/</code></li><li>考试与备考(含四级) → <code>/subject/english/exam/cet-4/</code></li><li>学习资源与工具 → <code>/subject/english/resources/</code></li><li>写译 → <code>/subject/english/writing-translation/</code></li></ul><p>你可以从以上入口进入对应的专题,随时扩展各章节内容。</p>',4)])])}const o=a(s,[["render",r]]),d=JSON.parse('{"path":"/subject/english/","title":"英语学习笔记","lang":"zh-CN","frontmatter":{"title":"英语学习笔记","createTime":"2025/10/20 16:34:20","permalink":"/subject/english/"},"readingTime":{"minutes":0.41,"words":123},"git":{"createdTime":1760961315000,"updatedTime":1761102801000,"contributors":[{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"},{"name":"Kawaxxxsaki","username":"","email":"1111@123.com","commits":1,"avatar":"https://gravatar.com/avatar/b3cd57e776cc1b92ffa9800b35152c0ce7692893d12a14450061083fcacd34ce?d=retro"}]},"filePathRelative":"notes/subject/english/README.md","headers":[]}');export{o as comp,d as data};
|
||||
import{_ as a,c,a as t,o as i}from"./app-I9WJttm3.js";const s={};function r(l,e){return i(),c("div",null,[...e[0]||(e[0]=[t('<p>这是一个英语学习笔记的总览页。下面是目录与分区入口:</p><h2 id="目录" tabindex="-1"><a class="header-anchor" href="#目录"><span>目录</span></a></h2><ul><li>学习环境与工具 → <code>/subject/english/basis/</code></li><li>词汇与记忆 → <code>/subject/english/vocabulary/</code></li><li>语法与句法 → <code>/subject/english/grammar/</code></li><li>听力与口语 → <code>/subject/english/listening-speaking/</code></li><li>阅读 → <code>/subject/english/reading-writing/</code></li><li>考试与备考(含四级) → <code>/subject/english/exam/cet-4/</code></li><li>学习资源与工具 → <code>/subject/english/resources/</code></li><li>写译 → <code>/subject/english/writing-translation/</code></li></ul><p>你可以从以上入口进入对应的专题,随时扩展各章节内容。</p>',4)])])}const o=a(s,[["render",r]]),d=JSON.parse('{"path":"/subject/english/","title":"英语学习笔记","lang":"zh-CN","frontmatter":{"title":"英语学习笔记","createTime":"2025/10/20 16:34:20","permalink":"/subject/english/"},"readingTime":{"minutes":0.41,"words":123},"git":{"createdTime":1760961315000,"updatedTime":1761102801000,"contributors":[{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"},{"name":"Kawaxxxsaki","username":"","email":"1111@123.com","commits":1,"avatar":"https://gravatar.com/avatar/b3cd57e776cc1b92ffa9800b35152c0ce7692893d12a14450061083fcacd34ce?d=retro"}]},"filePathRelative":"notes/subject/english/README.md","headers":[]}');export{o as comp,d as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as e,c as t,o as a}from"./app-FFcgQi-5.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};
|
||||
import{_ as e,c as t,o as a}from"./app-I9WJttm3.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};
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{_ as r,c as g,b as i,a as e,e as l,d as a,w as h,r as d,o as y}from"./app-FFcgQi-5.js";const D={},c={class:"code-block-title","data-title":"index.html"},o={class:"code-block-title-bar"},A={class:"title"},v={class:"code-block-title","data-title":"index.html"},m={class:"code-block-title-bar"},u={class:"title"},B={class:"code-block-title","data-title":"index.html"},b={class:"code-block-title-bar"},E={class:"title"},C={class:"code-block-title","data-title":"index.html"},F={class:"code-block-title-bar"},f={class:"title"},q={class:"code-block-title","data-title":"index.html"},x={class:"code-block-title-bar"},w={class:"title"},T={class:"code-block-title","data-title":"index.html"},L={class:"code-block-title-bar"},P={class:"title"},S={class:"code-block-title","data-title":"index.html"},M={class:"code-block-title-bar"},H={class:"title"},N={class:"code-block-title","data-title":"index.html"},O={class:"code-block-title-bar"},Y={class:"title"},z={class:"code-block-title","data-title":"index.html"},j={class:"code-block-title-bar"},V={class:"title"};function R(I,s){const k=d("VPIcon"),p=d("CodeTabs");return y(),g("div",null,[s[38]||(s[38]=i("h2",{id:"文本与标题-h-p-span-strong-em-div",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#文本与标题-h-p-span-strong-em-div"},[i("span",null,"文本与标题(H/P/Span/Strong/Em/Div)")])],-1)),s[39]||(s[39]=i("p",null,[i("strong",null,"标题"),a(":从重要到不重要,"),i("code",null,"<h1>"),a(" ~ "),i("code",null,"<h6>"),a("。")],-1)),i("div",c,[i("div",o,[i("span",A,[l(k,{provider:"iconify",name:"vscode-icons:file-type-html"}),s[0]||(s[0]=a("index.html",-1))])]),s[1]||(s[1]=e(`<div class="language-html line-numbers-mode" data-highlighter="shiki" data-ext="html" 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-html"><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">h1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">我的网站</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"></</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">h1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
import{_ as r,c as g,b as i,a as e,e as l,d as a,w as h,r as d,o as y}from"./app-I9WJttm3.js";const D={},c={class:"code-block-title","data-title":"index.html"},o={class:"code-block-title-bar"},A={class:"title"},v={class:"code-block-title","data-title":"index.html"},m={class:"code-block-title-bar"},u={class:"title"},B={class:"code-block-title","data-title":"index.html"},b={class:"code-block-title-bar"},E={class:"title"},C={class:"code-block-title","data-title":"index.html"},F={class:"code-block-title-bar"},f={class:"title"},q={class:"code-block-title","data-title":"index.html"},x={class:"code-block-title-bar"},w={class:"title"},T={class:"code-block-title","data-title":"index.html"},L={class:"code-block-title-bar"},P={class:"title"},S={class:"code-block-title","data-title":"index.html"},M={class:"code-block-title-bar"},H={class:"title"},N={class:"code-block-title","data-title":"index.html"},O={class:"code-block-title-bar"},Y={class:"title"},z={class:"code-block-title","data-title":"index.html"},j={class:"code-block-title-bar"},V={class:"title"};function R(I,s){const k=d("VPIcon"),p=d("CodeTabs");return y(),g("div",null,[s[38]||(s[38]=i("h2",{id:"文本与标题-h-p-span-strong-em-div",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#文本与标题-h-p-span-strong-em-div"},[i("span",null,"文本与标题(H/P/Span/Strong/Em/Div)")])],-1)),s[39]||(s[39]=i("p",null,[i("strong",null,"标题"),a(":从重要到不重要,"),i("code",null,"<h1>"),a(" ~ "),i("code",null,"<h6>"),a("。")],-1)),i("div",c,[i("div",o,[i("span",A,[l(k,{provider:"iconify",name:"vscode-icons:file-type-html"}),s[0]||(s[0]=a("index.html",-1))])]),s[1]||(s[1]=e(`<div class="language-html line-numbers-mode" data-highlighter="shiki" data-ext="html" 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-html"><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">h1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">我的网站</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"></</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">h1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">h2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">关于我</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"></</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">h2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">h3</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">联系方式</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"></</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">h3</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></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>`,1))]),s[40]||(s[40]=e('<h3 id="认识div标签" tabindex="-1"><a class="header-anchor" href="#认识div标签"><span>认识div标签</span></a></h3><p><strong>什么是 <code><div></code>?</strong></p><p><code><div></code> 是 "division"(分区)的缩写,可以理解为网页中的"容器"或"盒子"。</p><p>想象一下搬家时的纸箱:</p><ul><li>网页 = 整个房间</li><li><code><div></code> = 一个个纸箱</li><li>箱子里 = 可以放各种物品(文字、图片、按钮等)</li></ul><h3 id="div-的基本特点" tabindex="-1"><a class="header-anchor" href="#div-的基本特点"><span><code><div></code> 的基本特点</span></a></h3><ol><li>块级元素 <code><div></code> 是块级元素,这意味着:</li></ol><ul><li>默认会占据整行的宽度</li><li>前后会自动换行</li><li>就像段落一样,每个<code><div></code>都会从新的一行开始</li></ul><p><strong><code><div></code> 本身没有特定含义,它只是用来分组和布局。</strong></p><h3 id="为什么要使用-div" tabindex="-1"><a class="header-anchor" href="#为什么要使用-div"><span>为什么要使用 <code><div></code>?</span></a></h3><p>没有<code><div></code>的情况:</p>',11)),i("div",v,[i("div",m,[i("span",u,[l(k,{provider:"iconify",name:"vscode-icons:file-type-html"}),s[2]||(s[2]=a("index.html",-1))])]),s[3]||(s[3]=e(`<div class="language-html line-numbers-mode" data-highlighter="shiki" data-ext="html" 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-html"><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"><!</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">DOCTYPE</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> html</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">html</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span></span>
|
||||
@@ -1 +1 @@
|
||||
import{_ as e,c as t,o as n}from"./app-FFcgQi-5.js";const a={};function s(i,o){return n(),t("div")}const c=e(a,[["render",s]]),p=JSON.parse('{"path":"/friends/","title":"My Friends","lang":"zh-CN","frontmatter":{"title":"My Friends","description":"星星划过的时候,要记得许愿哦~♪","permalink":"/friends/","contentPosition":"after","article":false,"pageLayout":"friends","list":[{"name":"pengzhanbo","link":"https://github.com/pengzhanbo","avatar":"https://github.com/pengzhanbo.png","desc":"即使慢,驰而不息,纵会落后,纵会失败,但必须能够到达他所向的目标。"},{"name":"祀梦","link":"https://github.com/si-meng-spec","avatar":"https://github.com/si-meng-spec.png","desc":"嗨~ 新的一天,从一场美妙的邂逅开始。"},{"name":"AJohn","link":"https://www.ajohn.top/","avatar":"https://github.com/zzyAJohn.png","desc":"我希望正在读这句话的人永远开心"},{"name":"小小夏","link":"https://notes.simengweb.com","avatar":"https://image.simengweb.com/images/xxx.jpg","desc":"Kawasaki天下第一!"}],"draft":true},"readingTime":{"minutes":0.45,"words":134},"git":{},"filePathRelative":"friends.md","headers":[],"type":"friends"}');export{c as comp,p as data};
|
||||
import{_ as e,c as t,o as n}from"./app-I9WJttm3.js";const a={};function s(i,o){return n(),t("div")}const c=e(a,[["render",s]]),p=JSON.parse('{"path":"/friends/","title":"My Friends","lang":"zh-CN","frontmatter":{"title":"My Friends","description":"星星划过的时候,要记得许愿哦~♪","permalink":"/friends/","contentPosition":"after","article":false,"pageLayout":"friends","list":[{"name":"pengzhanbo","link":"https://github.com/pengzhanbo","avatar":"https://github.com/pengzhanbo.png","desc":"即使慢,驰而不息,纵会落后,纵会失败,但必须能够到达他所向的目标。"},{"name":"祀梦","link":"https://github.com/si-meng-spec","avatar":"https://github.com/si-meng-spec.png","desc":"嗨~ 新的一天,从一场美妙的邂逅开始。"},{"name":"AJohn","link":"https://www.ajohn.top/","avatar":"https://github.com/zzyAJohn.png","desc":"我希望正在读这句话的人永远开心"},{"name":"小小夏","link":"https://notes.simengweb.com","avatar":"https://image.simengweb.com/images/xxx.jpg","desc":"Kawasaki天下第一!"}],"draft":true},"readingTime":{"minutes":0.45,"words":134},"git":{},"filePathRelative":"friends.md","headers":[],"type":"friends"}');export{c as comp,p as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as t,c as r,a as n,e as d,w as a,r as p,o as g,b as i,d as s}from"./app-FFcgQi-5.js";const A={};function y(D,l){const e=p("CodeTabs");return g(),r("div",null,[l[8]||(l[8]=n('<h2 id="节点的基础概念" tabindex="-1"><a class="header-anchor" href="#节点的基础概念"><span>节点的基础概念</span></a></h2><p>FISCO BCOS 引入了<a href="https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/design/security_control/node_management.html#id6" target="_blank" rel="noopener noreferrer">游离节点、观察者节点和共识节点</a>,这三种节点类型可以通过控制台互相转换。</p><p>组员:</p><ul><li>共识节点:参与共识的节点,拥有群组的所有数据(搭链时默认都生成共识节点)。</li><li>观察者节点:不参与共识,但能实时同步链上数据的节点。</li></ul><p>非组员:</p><ul><li>游离节点:已启动,等待加入群组的节点。处在一种暂时的节点状态,不能获取链上的数据。</li></ul><h2 id="节点配置文件详解" tabindex="-1"><a class="header-anchor" href="#节点配置文件详解"><span>节点配置文件详解</span></a></h2><p>节点搭建完成之后会有<code>config.ini</code>、<code>conf/group.%group_id.genesis</code>、<code>conf/group.%group_id.ini</code>、<code>node.nodeid</code> 等配置文件</p>',8)),d(e,{id:"37",data:[{id:"config.ini"},{id:"group.1.genesis"},{id:"group.1.ini"},{id:"node.nodeid"}]},{title0:a(({value:h,isActive:k})=>[...l[0]||(l[0]=[i("span",null,"config.ini",-1)])]),title1:a(({value:h,isActive:k})=>[...l[1]||(l[1]=[i("span",null,"group.1.genesis",-1)])]),title2:a(({value:h,isActive:k})=>[...l[2]||(l[2]=[i("span",null,"group.1.ini",-1)])]),title3:a(({value:h,isActive:k})=>[...l[3]||(l[3]=[i("span",null,"node.nodeid",-1)])]),tab0:a(({value:h,isActive:k})=>[...l[4]||(l[4]=[i("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"}},[i("pre",{class:"shiki shiki-themes vitesse-light vitesse-dark vp-code"},[i("code",{class:"language-bash"},[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#A0ADA0","--shiki-dark":"#758575DD"}},"# RPC (Remote Proceduce Call 远程过程调用)")]),s(`
|
||||
import{_ as t,c as r,a as n,e as d,w as a,r as p,o as g,b as i,d as s}from"./app-I9WJttm3.js";const A={};function y(D,l){const e=p("CodeTabs");return g(),r("div",null,[l[8]||(l[8]=n('<h2 id="节点的基础概念" tabindex="-1"><a class="header-anchor" href="#节点的基础概念"><span>节点的基础概念</span></a></h2><p>FISCO BCOS 引入了<a href="https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/design/security_control/node_management.html#id6" target="_blank" rel="noopener noreferrer">游离节点、观察者节点和共识节点</a>,这三种节点类型可以通过控制台互相转换。</p><p>组员:</p><ul><li>共识节点:参与共识的节点,拥有群组的所有数据(搭链时默认都生成共识节点)。</li><li>观察者节点:不参与共识,但能实时同步链上数据的节点。</li></ul><p>非组员:</p><ul><li>游离节点:已启动,等待加入群组的节点。处在一种暂时的节点状态,不能获取链上的数据。</li></ul><h2 id="节点配置文件详解" tabindex="-1"><a class="header-anchor" href="#节点配置文件详解"><span>节点配置文件详解</span></a></h2><p>节点搭建完成之后会有<code>config.ini</code>、<code>conf/group.%group_id.genesis</code>、<code>conf/group.%group_id.ini</code>、<code>node.nodeid</code> 等配置文件</p>',8)),d(e,{id:"37",data:[{id:"config.ini"},{id:"group.1.genesis"},{id:"group.1.ini"},{id:"node.nodeid"}]},{title0:a(({value:h,isActive:k})=>[...l[0]||(l[0]=[i("span",null,"config.ini",-1)])]),title1:a(({value:h,isActive:k})=>[...l[1]||(l[1]=[i("span",null,"group.1.genesis",-1)])]),title2:a(({value:h,isActive:k})=>[...l[2]||(l[2]=[i("span",null,"group.1.ini",-1)])]),title3:a(({value:h,isActive:k})=>[...l[3]||(l[3]=[i("span",null,"node.nodeid",-1)])]),tab0:a(({value:h,isActive:k})=>[...l[4]||(l[4]=[i("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"}},[i("pre",{class:"shiki shiki-themes vitesse-light vitesse-dark vp-code"},[i("code",{class:"language-bash"},[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#A0ADA0","--shiki-dark":"#758575DD"}},"# RPC (Remote Proceduce Call 远程过程调用)")]),s(`
|
||||
`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#A0ADA0","--shiki-dark":"#758575DD"}},"# 用于配置节点对外提供的 RPC 服务,包括 JSON-RPC ( 用于 Web3.js,控制台等 )和 Channel 通信( 用于 SDK,Java 应用等 )")]),s(`
|
||||
`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#999999","--shiki-dark":"#666666"}},"["),i("span",{style:{"--shiki-light":"#393A34","--shiki-dark":"#DBD7CAEE"}},"rpc"),i("span",{style:{"--shiki-light":"#999999","--shiki-dark":"#666666"}},"]")]),s(`
|
||||
`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#A0ADA0","--shiki-dark":"#758575DD"}}," # 允许外部访问")]),s(`
|
||||
@@ -1 +1 @@
|
||||
import{_ as r,c as a,a as t,o as n}from"./app-FFcgQi-5.js";const o={};function l(s,e){return n(),a("div",null,[...e[0]||(e[0]=[t('<p>这里是我在LeetCode刷题过程中记录的解题思路和代码实现。通过整理这些题解,希望能够提高自己的算法水平和编程能力。</p><h2 id="题解分类" tabindex="-1"><a class="header-anchor" href="#题解分类"><span>题解分类</span></a></h2><h3 id="数组与字符串" tabindex="-1"><a class="header-anchor" href="#数组与字符串"><span>数组与字符串</span></a></h3><ul><li><a href="https://leetcode-cn.com/problems/two-sum/" target="_blank" rel="noopener noreferrer">两数之和</a></li><li><a href="https://leetcode-cn.com/problems/3sum/" target="_blank" rel="noopener noreferrer">三数之和</a></li></ul><h3 id="链表" tabindex="-1"><a class="header-anchor" href="#链表"><span>链表</span></a></h3><ul><li><a href="https://leetcode-cn.com/problems/reverse-linked-list/" target="_blank" rel="noopener noreferrer">反转链表</a></li><li><a href="https://leetcode-cn.com/problems/merge-two-sorted-lists/" target="_blank" rel="noopener noreferrer">合并两个有序链表</a></li></ul><h3 id="动态规划" tabindex="-1"><a class="header-anchor" href="#动态规划"><span>动态规划</span></a></h3><ul><li><a href="https://leetcode-cn.com/problems/climbing-stairs/" target="_blank" rel="noopener noreferrer">爬楼梯</a></li><li><a href="https://leetcode-cn.com/problems/longest-palindromic-substring/" target="_blank" rel="noopener noreferrer">最长回文子串</a></li></ul><h2 id="解题技巧" tabindex="-1"><a class="header-anchor" href="#解题技巧"><span>解题技巧</span></a></h2><ol><li><strong>双指针法</strong>:常用于数组、链表问题,如两数之和、反转链表等</li><li><strong>滑动窗口</strong>:处理字符串子串问题</li><li><strong>动态规划</strong>:将原问题分解为子问题,自底向上求解</li><li><strong>分治法</strong>:将问题分成若干子问题,分别求解后合并结果</li></ol><h2 id="学习资源" tabindex="-1"><a class="header-anchor" href="#学习资源"><span>学习资源</span></a></h2><ul><li><a href="https://leetcode-cn.com/problemset/all/" target="_blank" rel="noopener noreferrer">LeetCode官方题解</a></li><li><a href="https://programmercarl.com/" target="_blank" rel="noopener noreferrer">代码随想录</a></li><li><a href="https://mitpress.mit.edu/books/introduction-algorithms" target="_blank" rel="noopener noreferrer">算法导论</a></li></ul>',12)])])}const c=r(o,[["render",l]]),p=JSON.parse('{"path":"/programming/leetcode/","title":"LeetCode 题解笔记","lang":"zh-CN","frontmatter":{"title":"LeetCode 题解笔记","description":"记录LeetCode算法题的解题思路和代码实现","createTime":"2025/09/22 08:09:52","permalink":"/programming/leetcode/"},"readingTime":{"minutes":0.89,"words":268},"git":{"createdTime":1758545932000,"updatedTime":1758545932000,"contributors":[{"name":"simeng","username":"","email":"simeng@simengweb.com","commits":1,"avatar":"https://gravatar.com/avatar/0d358b828946f71c617d26b8c881331619abfbbab3bf694ea3f0eb3909110815?d=retro"}]},"filePathRelative":"notes/programming/leetcode/README.md","headers":[]}');export{c as comp,p as data};
|
||||
import{_ as r,c as a,a as t,o as n}from"./app-I9WJttm3.js";const o={};function l(s,e){return n(),a("div",null,[...e[0]||(e[0]=[t('<p>这里是我在LeetCode刷题过程中记录的解题思路和代码实现。通过整理这些题解,希望能够提高自己的算法水平和编程能力。</p><h2 id="题解分类" tabindex="-1"><a class="header-anchor" href="#题解分类"><span>题解分类</span></a></h2><h3 id="数组与字符串" tabindex="-1"><a class="header-anchor" href="#数组与字符串"><span>数组与字符串</span></a></h3><ul><li><a href="https://leetcode-cn.com/problems/two-sum/" target="_blank" rel="noopener noreferrer">两数之和</a></li><li><a href="https://leetcode-cn.com/problems/3sum/" target="_blank" rel="noopener noreferrer">三数之和</a></li></ul><h3 id="链表" tabindex="-1"><a class="header-anchor" href="#链表"><span>链表</span></a></h3><ul><li><a href="https://leetcode-cn.com/problems/reverse-linked-list/" target="_blank" rel="noopener noreferrer">反转链表</a></li><li><a href="https://leetcode-cn.com/problems/merge-two-sorted-lists/" target="_blank" rel="noopener noreferrer">合并两个有序链表</a></li></ul><h3 id="动态规划" tabindex="-1"><a class="header-anchor" href="#动态规划"><span>动态规划</span></a></h3><ul><li><a href="https://leetcode-cn.com/problems/climbing-stairs/" target="_blank" rel="noopener noreferrer">爬楼梯</a></li><li><a href="https://leetcode-cn.com/problems/longest-palindromic-substring/" target="_blank" rel="noopener noreferrer">最长回文子串</a></li></ul><h2 id="解题技巧" tabindex="-1"><a class="header-anchor" href="#解题技巧"><span>解题技巧</span></a></h2><ol><li><strong>双指针法</strong>:常用于数组、链表问题,如两数之和、反转链表等</li><li><strong>滑动窗口</strong>:处理字符串子串问题</li><li><strong>动态规划</strong>:将原问题分解为子问题,自底向上求解</li><li><strong>分治法</strong>:将问题分成若干子问题,分别求解后合并结果</li></ol><h2 id="学习资源" tabindex="-1"><a class="header-anchor" href="#学习资源"><span>学习资源</span></a></h2><ul><li><a href="https://leetcode-cn.com/problemset/all/" target="_blank" rel="noopener noreferrer">LeetCode官方题解</a></li><li><a href="https://programmercarl.com/" target="_blank" rel="noopener noreferrer">代码随想录</a></li><li><a href="https://mitpress.mit.edu/books/introduction-algorithms" target="_blank" rel="noopener noreferrer">算法导论</a></li></ul>',12)])])}const c=r(o,[["render",l]]),p=JSON.parse('{"path":"/programming/leetcode/","title":"LeetCode 题解笔记","lang":"zh-CN","frontmatter":{"title":"LeetCode 题解笔记","description":"记录LeetCode算法题的解题思路和代码实现","createTime":"2025/09/22 08:09:52","permalink":"/programming/leetcode/"},"readingTime":{"minutes":0.89,"words":268},"git":{"createdTime":1758545932000,"updatedTime":1758545932000,"contributors":[{"name":"simeng","username":"","email":"simeng@simengweb.com","commits":1,"avatar":"https://gravatar.com/avatar/0d358b828946f71c617d26b8c881331619abfbbab3bf694ea3f0eb3909110815?d=retro"}]},"filePathRelative":"notes/programming/leetcode/README.md","headers":[]}');export{c as comp,p as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as i,c as a,a as e,o as n}from"./app-FFcgQi-5.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>
|
||||
import{_ as i,c as a,a as e,o as n}from"./app-I9WJttm3.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>
|
||||
@@ -30,4 +30,4 @@ import{_ as i,c as a,a as e,o as n}from"./app-FFcgQi-5.js";const l={};function h
|
||||
<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$09$eaa7o5i8XM8xitet1FQmLOfdoayXcOXOPnVO7fU4tecx9U0uMVvWW","categoryList":[{"id":"126ac9","sort":10000,"name":"blog"},{"id":"83ee8d","sort":10003,"name":"competition"}]}');export{p as comp,k as data};
|
||||
<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$11$XRXajtTDP5TGVu18nR0XFexMSPCimCejrZR011zBaRWyYdN.Y3tIq","categoryList":[{"id":"126ac9","sort":10000,"name":"blog"},{"id":"83ee8d","sort":10003,"name":"competition"}]}');export{p as comp,k as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as e,c as i,a as r,o as l}from"./app-FFcgQi-5.js";const s={};function n(t,a){return l(),i("div",null,[...a[0]||(a[0]=[r('<p>这里是我在学习C++编程语言过程中记录的学习心得、基础知识和实战经验。通过整理这些笔记,希望能够帮助自己和他人更好地掌握C++这门强大的编程语言。</p><h2 id="学习路径" tabindex="-1"><a class="header-anchor" href="#学习路径"><span>学习路径</span></a></h2><p>C++是一门复杂而强大的编程语言,学习路径建议如下:</p><ol><li><strong>基础语法</strong> - 掌握C++的基本语法和编程概念</li><li><strong>面向对象编程</strong> - 学习C++的类、继承、多态等OOP特性</li><li><strong>STL标准库</strong> - 熟悉常用的容器和算法</li><li><strong>高级特性</strong> - 模板、异常处理、智能指针等</li><li><strong>实战项目</strong> - 通过实际项目巩固所学知识</li></ol><h2 id="笔记分类" tabindex="-1"><a class="header-anchor" href="#笔记分类"><span>笔记分类</span></a></h2><h3 id="基础语法" tabindex="-1"><a class="header-anchor" href="#基础语法"><span>基础语法</span></a></h3><ul><li>数据类型</li><li>运算符和表达式</li><li>控制流语句</li><li>函数</li></ul><h3 id="面向对象编程" tabindex="-1"><a class="header-anchor" href="#面向对象编程"><span>面向对象编程</span></a></h3><ul><li>类和对象</li><li>继承与多态</li><li>封装与抽象</li><li>构造函数与析构函数</li></ul><h3 id="stl标准库" tabindex="-1"><a class="header-anchor" href="#stl标准库"><span>STL标准库</span></a></h3><ul><li>容器(vector, list, map等)</li><li>迭代器</li><li>算法</li><li>函数对象</li></ul><h2 id="学习资源推荐" tabindex="-1"><a class="header-anchor" href="#学习资源推荐"><span>学习资源推荐</span></a></h2><ul><li><a href="https://101su.ru/book/5442395/430bc1/c-primer-plus%E4%B8%AD%E6%96%87%E7%89%88%E7%AC%AC%E5%85%AD%E7%89%88.html" target="_blank" rel="noopener noreferrer">C++ Primer Plus:中文版(第六版)</a> - 很好的C++入门教材</li></ul><p>开始你的C++学习之旅吧!坚持学习,你会发现C++的魅力所在!</p>',14)])])}const p=e(s,[["render",n]]),c=JSON.parse('{"path":"/programming/cplusplus/","title":"C++ 学习笔记","lang":"zh-CN","frontmatter":{"title":"C++ 学习笔记","description":"记录C++编程语言的学习心得和基础知识","createTime":"2025/09/22 09:00:00","permalink":"/programming/cplusplus/"},"readingTime":{"minutes":1.19,"words":356},"git":{"createdTime":1758547422000,"updatedTime":1758547422000,"contributors":[{"name":"simeng","username":"","email":"simeng@simengweb.com","commits":1,"avatar":"https://gravatar.com/avatar/0d358b828946f71c617d26b8c881331619abfbbab3bf694ea3f0eb3909110815?d=retro"}]},"filePathRelative":"notes/programming/c++/README.md","headers":[]}');export{p as comp,c as data};
|
||||
import{_ as e,c as i,a as r,o as l}from"./app-I9WJttm3.js";const s={};function n(t,a){return l(),i("div",null,[...a[0]||(a[0]=[r('<p>这里是我在学习C++编程语言过程中记录的学习心得、基础知识和实战经验。通过整理这些笔记,希望能够帮助自己和他人更好地掌握C++这门强大的编程语言。</p><h2 id="学习路径" tabindex="-1"><a class="header-anchor" href="#学习路径"><span>学习路径</span></a></h2><p>C++是一门复杂而强大的编程语言,学习路径建议如下:</p><ol><li><strong>基础语法</strong> - 掌握C++的基本语法和编程概念</li><li><strong>面向对象编程</strong> - 学习C++的类、继承、多态等OOP特性</li><li><strong>STL标准库</strong> - 熟悉常用的容器和算法</li><li><strong>高级特性</strong> - 模板、异常处理、智能指针等</li><li><strong>实战项目</strong> - 通过实际项目巩固所学知识</li></ol><h2 id="笔记分类" tabindex="-1"><a class="header-anchor" href="#笔记分类"><span>笔记分类</span></a></h2><h3 id="基础语法" tabindex="-1"><a class="header-anchor" href="#基础语法"><span>基础语法</span></a></h3><ul><li>数据类型</li><li>运算符和表达式</li><li>控制流语句</li><li>函数</li></ul><h3 id="面向对象编程" tabindex="-1"><a class="header-anchor" href="#面向对象编程"><span>面向对象编程</span></a></h3><ul><li>类和对象</li><li>继承与多态</li><li>封装与抽象</li><li>构造函数与析构函数</li></ul><h3 id="stl标准库" tabindex="-1"><a class="header-anchor" href="#stl标准库"><span>STL标准库</span></a></h3><ul><li>容器(vector, list, map等)</li><li>迭代器</li><li>算法</li><li>函数对象</li></ul><h2 id="学习资源推荐" tabindex="-1"><a class="header-anchor" href="#学习资源推荐"><span>学习资源推荐</span></a></h2><ul><li><a href="https://101su.ru/book/5442395/430bc1/c-primer-plus%E4%B8%AD%E6%96%87%E7%89%88%E7%AC%AC%E5%85%AD%E7%89%88.html" target="_blank" rel="noopener noreferrer">C++ Primer Plus:中文版(第六版)</a> - 很好的C++入门教材</li></ul><p>开始你的C++学习之旅吧!坚持学习,你会发现C++的魅力所在!</p>',14)])])}const p=e(s,[["render",n]]),c=JSON.parse('{"path":"/programming/cplusplus/","title":"C++ 学习笔记","lang":"zh-CN","frontmatter":{"title":"C++ 学习笔记","description":"记录C++编程语言的学习心得和基础知识","createTime":"2025/09/22 09:00:00","permalink":"/programming/cplusplus/"},"readingTime":{"minutes":1.19,"words":356},"git":{"createdTime":1758547422000,"updatedTime":1758547422000,"contributors":[{"name":"simeng","username":"","email":"simeng@simengweb.com","commits":1,"avatar":"https://gravatar.com/avatar/0d358b828946f71c617d26b8c881331619abfbbab3bf694ea3f0eb3909110815?d=retro"}]},"filePathRelative":"notes/programming/c++/README.md","headers":[]}');export{p as comp,c as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as e,c as i,a as l,o as t}from"./app-FFcgQi-5.js";const n={};function s(r,a){return t(),i("div",null,[...a[0]||(a[0]=[l('<h2 id="考试结构概览" tabindex="-1"><a class="header-anchor" href="#考试结构概览"><span>考试结构概览</span></a></h2><ul><li>听力 (25%):新闻、长对话、讲座/采访</li><li>阅读 (35%):仔细阅读、选词填空</li><li>翻译 (15%):汉译英</li><li>写作 (25%):应用文与观点写作</li></ul><h2 id="核心备考策略" tabindex="-1"><a class="header-anchor" href="#核心备考策略"><span>核心备考策略</span></a></h2><ul><li>词汇:高频词与真题语块,使用 SRS 间隔重复</li><li>语法:时态、非谓语、从句,针对写作与翻译的准确表达</li><li>听力:精听 + 跟读(shadowing),积累场景表达</li><li>阅读:结构化分析段落逻辑,题型定位与干扰项识别</li><li>写作:模板+素材库+改写练习,关注连贯与准确</li></ul><h2 id="时间分配建议" tabindex="-1"><a class="header-anchor" href="#时间分配建议"><span>时间分配建议</span></a></h2><ul><li>写作 30 分钟:审题→列纲→写作→快速校对</li><li>阅读 40 分钟:定位→分析→作答→标记不确定</li><li>听力 按机考节奏:提前熟悉说明与做题界面</li><li>翻译 20 分钟:分句翻译→语法检查→润色</li></ul><h2 id="真题与模拟" tabindex="-1"><a class="header-anchor" href="#真题与模拟"><span>真题与模拟</span></a></h2><ul><li>使用近 3-5 年真题按套训练;分析错因并归档到词汇/语法/方法类别</li><li>每周至少一次全真模拟,记录分配与状态调整</li></ul><h2 id="考场技巧" tabindex="-1"><a class="header-anchor" href="#考场技巧"><span>考场技巧</span></a></h2><ul><li>先易后难;不确定题目标记后回看</li><li>注意题干限制词与语义线索(especially/only/not/except 等)</li><li>写作与翻译建议使用简单准确句式,避免长难句错误</li></ul><h2 id="推荐资源" tabindex="-1"><a class="header-anchor" href="#推荐资源"><span>推荐资源</span></a></h2><ul><li>真题:教育部考试中心官方题库与解析</li><li>听力:BBC 6 Minute English、VOA Learning English</li><li>写作:常用应用文格式与常见开头结尾句</li></ul><blockquote><p>后续我会补充各模块的详细练习清单与示例。</p></blockquote>',13)])])}const h=e(n,[["render",s]]),d=JSON.parse('{"path":"/subject/english/exam/cet-4/","title":"英语四级 (CET-4) 备考指南","lang":"zh-CN","frontmatter":{"title":"英语四级 (CET-4) 备考指南","createTime":"2025/10/20 16:42:00","permalink":"/subject/english/exam/cet-4/"},"readingTime":{"minutes":1.38,"words":415},"git":{"createdTime":1760961315000,"updatedTime":1760961315000,"contributors":[{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"}]},"filePathRelative":"notes/subject/english/exam/cet-4.md","headers":[]}');export{h as comp,d as data};
|
||||
import{_ as e,c as i,a as l,o as t}from"./app-I9WJttm3.js";const n={};function s(r,a){return t(),i("div",null,[...a[0]||(a[0]=[l('<h2 id="考试结构概览" tabindex="-1"><a class="header-anchor" href="#考试结构概览"><span>考试结构概览</span></a></h2><ul><li>听力 (25%):新闻、长对话、讲座/采访</li><li>阅读 (35%):仔细阅读、选词填空</li><li>翻译 (15%):汉译英</li><li>写作 (25%):应用文与观点写作</li></ul><h2 id="核心备考策略" tabindex="-1"><a class="header-anchor" href="#核心备考策略"><span>核心备考策略</span></a></h2><ul><li>词汇:高频词与真题语块,使用 SRS 间隔重复</li><li>语法:时态、非谓语、从句,针对写作与翻译的准确表达</li><li>听力:精听 + 跟读(shadowing),积累场景表达</li><li>阅读:结构化分析段落逻辑,题型定位与干扰项识别</li><li>写作:模板+素材库+改写练习,关注连贯与准确</li></ul><h2 id="时间分配建议" tabindex="-1"><a class="header-anchor" href="#时间分配建议"><span>时间分配建议</span></a></h2><ul><li>写作 30 分钟:审题→列纲→写作→快速校对</li><li>阅读 40 分钟:定位→分析→作答→标记不确定</li><li>听力 按机考节奏:提前熟悉说明与做题界面</li><li>翻译 20 分钟:分句翻译→语法检查→润色</li></ul><h2 id="真题与模拟" tabindex="-1"><a class="header-anchor" href="#真题与模拟"><span>真题与模拟</span></a></h2><ul><li>使用近 3-5 年真题按套训练;分析错因并归档到词汇/语法/方法类别</li><li>每周至少一次全真模拟,记录分配与状态调整</li></ul><h2 id="考场技巧" tabindex="-1"><a class="header-anchor" href="#考场技巧"><span>考场技巧</span></a></h2><ul><li>先易后难;不确定题目标记后回看</li><li>注意题干限制词与语义线索(especially/only/not/except 等)</li><li>写作与翻译建议使用简单准确句式,避免长难句错误</li></ul><h2 id="推荐资源" tabindex="-1"><a class="header-anchor" href="#推荐资源"><span>推荐资源</span></a></h2><ul><li>真题:教育部考试中心官方题库与解析</li><li>听力:BBC 6 Minute English、VOA Learning English</li><li>写作:常用应用文格式与常见开头结尾句</li></ul><blockquote><p>后续我会补充各模块的详细练习清单与示例。</p></blockquote>',13)])])}const h=e(n,[["render",s]]),d=JSON.parse('{"path":"/subject/english/exam/cet-4/","title":"英语四级 (CET-4) 备考指南","lang":"zh-CN","frontmatter":{"title":"英语四级 (CET-4) 备考指南","createTime":"2025/10/20 16:42:00","permalink":"/subject/english/exam/cet-4/"},"readingTime":{"minutes":1.38,"words":415},"git":{"createdTime":1760961315000,"updatedTime":1760961315000,"contributors":[{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"}]},"filePathRelative":"notes/subject/english/exam/cet-4.md","headers":[]}');export{h as comp,d as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as t,c as r,a,o as i}from"./app-FFcgQi-5.js";const o={};function s(n,e){return i(),r("div",null,[...e[0]||(e[0]=[a('<h2 id="solidity-智能合约概述" tabindex="-1"><a class="header-anchor" href="#solidity-智能合约概述"><span>Solidity 智能合约概述</span></a></h2><p>Solidity 是一种用于编写智能合约的静态类型编程语言,它运行在以太坊虚拟机(EVM)上。</p><h2 id="推荐的资料" tabindex="-1"><a class="header-anchor" href="#推荐的资料"><span>推荐的资料</span></a></h2><p>推荐的编辑器</p><p>Remix IDE:<a href="https://remix.ethereum.org/" target="_blank" rel="noopener noreferrer">https://remix.ethereum.org/</a></p><p>有在线版本,也可以下载之后使用,而且可以通过 Docker 部署,很方便</p><p>Solidity 学习资料:</p><ul><li><a href="https://docs.soliditylang.org/zh-cn/latest/index.html" target="_blank" rel="noopener noreferrer">Solidity 官方文档</a></li><li><a href="https://cryptozombies.io/zh/course" target="_blank" rel="noopener noreferrer">cryptozombies</a></li></ul>',8)])])}const l=t(o,[["render",s]]),c=JSON.parse('{"path":"/programming/solidity/","title":"Solidity 学习笔记","lang":"zh-CN","frontmatter":{"title":"Solidity 学习笔记","description":"记录Solidity智能合约开发的学习心得和基础知识","createTime":"2025/09/28 19:39:00","permalink":"/programming/solidity/"},"readingTime":{"minutes":0.44,"words":132},"git":{"createdTime":1759059454000,"updatedTime":1760064875000,"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":"notes/programming/solidity/README.md","headers":[]}');export{l as comp,c as data};
|
||||
import{_ as t,c as r,a,o as i}from"./app-I9WJttm3.js";const o={};function s(n,e){return i(),r("div",null,[...e[0]||(e[0]=[a('<h2 id="solidity-智能合约概述" tabindex="-1"><a class="header-anchor" href="#solidity-智能合约概述"><span>Solidity 智能合约概述</span></a></h2><p>Solidity 是一种用于编写智能合约的静态类型编程语言,它运行在以太坊虚拟机(EVM)上。</p><h2 id="推荐的资料" tabindex="-1"><a class="header-anchor" href="#推荐的资料"><span>推荐的资料</span></a></h2><p>推荐的编辑器</p><p>Remix IDE:<a href="https://remix.ethereum.org/" target="_blank" rel="noopener noreferrer">https://remix.ethereum.org/</a></p><p>有在线版本,也可以下载之后使用,而且可以通过 Docker 部署,很方便</p><p>Solidity 学习资料:</p><ul><li><a href="https://docs.soliditylang.org/zh-cn/latest/index.html" target="_blank" rel="noopener noreferrer">Solidity 官方文档</a></li><li><a href="https://cryptozombies.io/zh/course" target="_blank" rel="noopener noreferrer">cryptozombies</a></li></ul>',8)])])}const l=t(o,[["render",s]]),c=JSON.parse('{"path":"/programming/solidity/","title":"Solidity 学习笔记","lang":"zh-CN","frontmatter":{"title":"Solidity 学习笔记","description":"记录Solidity智能合约开发的学习心得和基础知识","createTime":"2025/09/28 19:39:00","permalink":"/programming/solidity/"},"readingTime":{"minutes":0.44,"words":132},"git":{"createdTime":1759059454000,"updatedTime":1760064875000,"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":"notes/programming/solidity/README.md","headers":[]}');export{l as comp,c as data};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{_ as i,c as e,a,o as n}from"./app-FFcgQi-5.js";const l={};function t(h,s){return n(),e("div",null,[...s[0]||(s[0]=[a(`<h2 id="console-控制台是什么" tabindex="-1"><a class="header-anchor" href="#console-控制台是什么"><span>Console 控制台是什么?</span></a></h2><p>Console 是 FISCO BCOS 官方提供的一个交互式命令行工具,用于直接与区块链节点交互。 主要功能包括:</p><ul><li>查询区块链状态(如区块链高度、节点列表、群组信息)</li><li>部署和调用智能合约(支持 Solidity)</li><li>管理节点(如查看节点共识状态、动态添加节点)</li><li>调试交易和查看回执</li></ul><h2 id="部署-console-控制台" tabindex="-1"><a class="header-anchor" href="#部署-console-控制台"><span>部署 Console 控制台</span></a></h2><p>获取下载脚本:<code>wget https://gitee.com/FISCO-BCOS/console/releases/download/v2.8.0/console.tar.gz</code> 解压控制台安装包:<code>tar -zxf console.tar.gz console/</code></p><p>复制配置文件:<code>cp conf/config-example.toml conf/config.toml</code> 编辑配置文件:<code>vim conf/config.toml</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-highlighted vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># enSslKey = "conf/gm/gmensdk.key" # GM ssl cert file path</span></span>
|
||||
import{_ as i,c as e,a,o as n}from"./app-I9WJttm3.js";const l={};function t(h,s){return n(),e("div",null,[...s[0]||(s[0]=[a(`<h2 id="console-控制台是什么" tabindex="-1"><a class="header-anchor" href="#console-控制台是什么"><span>Console 控制台是什么?</span></a></h2><p>Console 是 FISCO BCOS 官方提供的一个交互式命令行工具,用于直接与区块链节点交互。 主要功能包括:</p><ul><li>查询区块链状态(如区块链高度、节点列表、群组信息)</li><li>部署和调用智能合约(支持 Solidity)</li><li>管理节点(如查看节点共识状态、动态添加节点)</li><li>调试交易和查看回执</li></ul><h2 id="部署-console-控制台" tabindex="-1"><a class="header-anchor" href="#部署-console-控制台"><span>部署 Console 控制台</span></a></h2><p>获取下载脚本:<code>wget https://gitee.com/FISCO-BCOS/console/releases/download/v2.8.0/console.tar.gz</code> 解压控制台安装包:<code>tar -zxf console.tar.gz console/</code></p><p>复制配置文件:<code>cp conf/config-example.toml conf/config.toml</code> 编辑配置文件:<code>vim conf/config.toml</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-highlighted vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># enSslKey = "conf/gm/gmensdk.key" # GM ssl cert file path</span></span>
|
||||
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"> # default load the GM SSL encryption privateKey from \${certPath}/gm/gmensdk.key</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">network</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">]</span></span>
|
||||
@@ -1 +1 @@
|
||||
import{_ as t,c as r,b as e,o as c}from"./app-FFcgQi-5.js";const i={};function n(s,a){return c(),r("div",null,[...a[0]||(a[0]=[e("ul",null,[e("li",null,"阅读策略(略读、扫读、精读)"),e("li",null,"篇章结构与逻辑(指代、连接、修饰)")],-1)])])}const o=t(i,[["render",n]]),d=JSON.parse('{"path":"/subject/english/reading-writing/","title":"阅读提升","lang":"zh-CN","frontmatter":{"title":"阅读提升","createTime":"2025/10/20 16:40:00","permalink":"/subject/english/reading-writing/"},"readingTime":{"minutes":0.13,"words":40},"git":{"createdTime":1760961315000,"updatedTime":1761102801000,"contributors":[{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"},{"name":"Kawaxxxsaki","username":"","email":"1111@123.com","commits":1,"avatar":"https://gravatar.com/avatar/b3cd57e776cc1b92ffa9800b35152c0ce7692893d12a14450061083fcacd34ce?d=retro"}]},"filePathRelative":"notes/subject/english/reading-writing/README.md","headers":[]}');export{o as comp,d as data};
|
||||
import{_ as t,c as r,b as e,o as c}from"./app-I9WJttm3.js";const i={};function n(s,a){return c(),r("div",null,[...a[0]||(a[0]=[e("ul",null,[e("li",null,"阅读策略(略读、扫读、精读)"),e("li",null,"篇章结构与逻辑(指代、连接、修饰)")],-1)])])}const o=t(i,[["render",n]]),d=JSON.parse('{"path":"/subject/english/reading-writing/","title":"阅读提升","lang":"zh-CN","frontmatter":{"title":"阅读提升","createTime":"2025/10/20 16:40:00","permalink":"/subject/english/reading-writing/"},"readingTime":{"minutes":0.13,"words":40},"git":{"createdTime":1760961315000,"updatedTime":1761102801000,"contributors":[{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"},{"name":"Kawaxxxsaki","username":"","email":"1111@123.com","commits":1,"avatar":"https://gravatar.com/avatar/b3cd57e776cc1b92ffa9800b35152c0ce7692893d12a14450061083fcacd34ce?d=retro"}]},"filePathRelative":"notes/subject/english/reading-writing/README.md","headers":[]}');export{o as comp,d as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as e,c as t,o as a}from"./app-FFcgQi-5.js";const n={};function o(r,c){return a(),t("div")}const s=e(n,[["render",o]]),l=JSON.parse('{"path":"/","title":"","lang":"zh-CN","frontmatter":{"pageLayout":"home","externalLinkIcon":false,"config":[{"type":"hero","full":true,"background":"tint-plate","hero":{"name":"仲夏夜之梦","tagline":"祀梦和小小夏的花园","text":"在这里,每一个文字都承载着温暖与美好 🌸","actions":[{"theme":"brand","text":"博客","link":"/blog/"}]}}]},"readingTime":{"minutes":0.18,"words":55},"git":{},"filePathRelative":"README.md","headers":[],"categoryList":[]}');export{s as comp,l as data};
|
||||
import{_ as e,c as t,o as a}from"./app-I9WJttm3.js";const n={};function o(r,c){return a(),t("div")}const s=e(n,[["render",o]]),l=JSON.parse('{"path":"/","title":"","lang":"zh-CN","frontmatter":{"pageLayout":"home","externalLinkIcon":false,"config":[{"type":"hero","full":true,"background":"tint-plate","hero":{"name":"仲夏夜之梦","tagline":"祀梦和小小夏的花园","text":"在这里,每一个文字都承载着温暖与美好 🌸","actions":[{"theme":"brand","text":"博客","link":"/blog/"}]}}]},"readingTime":{"minutes":0.18,"words":55},"git":{},"filePathRelative":"README.md","headers":[],"categoryList":[]}');export{s as comp,l as data};
|
||||
@@ -1 +1 @@
|
||||
import{_ as e,c as t,o as a}from"./app-FFcgQi-5.js";const r={};function n(c,o){return a(),t("div")}const s=e(r,[["render",n]]),l=JSON.parse('{"path":"/blog/archives/","title":"归档","lang":"zh-CN","frontmatter":{"lang":"zh-CN","title":"归档","gitInclude":[],"draft":true},"readingTime":{"minutes":0,"words":0},"git":{},"filePathRelative":null,"headers":[],"type":"blog-archives"}');export{s as comp,l as data};
|
||||
import{_ as e,c as t,o as a}from"./app-I9WJttm3.js";const r={};function n(c,o){return a(),t("div")}const s=e(r,[["render",n]]),l=JSON.parse('{"path":"/blog/archives/","title":"归档","lang":"zh-CN","frontmatter":{"lang":"zh-CN","title":"归档","gitInclude":[],"draft":true},"readingTime":{"minutes":0,"words":0},"git":{},"filePathRelative":null,"headers":[],"type":"blog-archives"}');export{s as comp,l as data};
|
||||
@@ -1,2 +1,2 @@
|
||||
import{p as o}from"./treemap-KMMF4GRG-7ORZ52ND-BjVEqkKc.js";import{m as e,p as s,aN as n,W as p,aO as d}from"./mermaid.esm.min-CFMguGj4.js";import"./chunk-OMTJKCYW-C42Y4h95.js";import"./app-FFcgQi-5.js";var m={parse:e(async r=>{let a=await o("info",r);s.debug(a)},"parse")},g={version:d.version+""},v=e(()=>g.version,"getVersion"),f={getVersion:v},l=e((r,a,i)=>{s.debug(`rendering info diagram
|
||||
import{p as o}from"./treemap-KMMF4GRG-7ORZ52ND-CZvSDgse.js";import{m as e,p as s,aN as n,W as p,aO as d}from"./mermaid.esm.min-Bko3wIpE.js";import"./chunk-OMTJKCYW-_vIhX9oV.js";import"./app-I9WJttm3.js";var m={parse:e(async r=>{let a=await o("info",r);s.debug(a)},"parse")},g={version:d.version+""},v=e(()=>g.version,"getVersion"),f={getVersion:v},l=e((r,a,i)=>{s.debug(`rendering info diagram
|
||||
`+r);let t=n(a);p(t,100,400,!0),t.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${i}`)},"draw"),x={draw:l},w={parser:m,db:f,renderer:x};export{w as diagram};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{g as mt,h as ot,y as xt,x as kt}from"./chunk-WONJCSFZ-rsKa2rfY.js";import{o as bt}from"./chunk-ZZTKAOFA-D3bY9_A8.js";import{m as a,$ as _t,G as vt,U as wt,H as $t,e as St,j as Mt,a as L,i as Y,W as Et,N as Tt,aQ as et}from"./mermaid.esm.min-CFMguGj4.js";import"./app-FFcgQi-5.js";var Z=(function(){var t=a(function(y,i,r,u){for(r=r||{},u=y.length;u--;r[y[u]]=i);return r},"o"),e=[6,8,10,11,12,14,16,17,18],s=[1,9],l=[1,10],n=[1,11],c=[1,12],d=[1,13],h=[1,14],f={trace:a(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:a(function(y,i,r,u,p,o,x){var k=o.length-1;switch(p){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:u.setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),u.setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),u.setAccDescription(this.$);break;case 12:u.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 13:u.addTask(o[k-1],o[k]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:s,12:l,14:n,16:c,17:d,18:h},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:s,12:l,14:n,16:c,17:d,18:h},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:a(function(y,i){if(i.recoverable)this.trace(y);else{var r=new Error(y);throw r.hash=i,r}},"parseError"),parse:a(function(y){var i=this,r=[0],u=[],p=[null],o=[],x=this.table,k="",C=0,P=0,pt=0,yt=2,J=1,dt=o.slice.call(arguments,1),b=Object.create(this.lexer),A={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(A.yy[z]=this.yy[z]);b.setInput(y,A.yy),A.yy.lexer=b,A.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var q=b.yylloc;o.push(q);var ft=b.options&&b.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function gt(v){r.length=r.length-2*v,p.length=p.length-v,o.length=o.length-v}a(gt,"popStack");function K(){var v;return v=u.pop()||b.lex()||J,typeof v!="number"&&(v instanceof Array&&(u=v,v=u.pop()),v=i.symbols_[v]||v),v}a(K,"lex");for(var _,G,I,w,Zt,U,j={},V,M,tt,F;;){if(I=r[r.length-1],this.defaultActions[I]?w=this.defaultActions[I]:((_===null||typeof _>"u")&&(_=K()),w=x[I]&&x[I][_]),typeof w>"u"||!w.length||!w[0]){var W="";F=[];for(V in x[I])this.terminals_[V]&&V>yt&&F.push("'"+this.terminals_[V]+"'");b.showPosition?W="Parse error on line "+(C+1)+`:
|
||||
import{g as mt,h as ot,y as xt,x as kt}from"./chunk-WONJCSFZ-C6MmCgXE.js";import{o as bt}from"./chunk-ZZTKAOFA-C39qNkPO.js";import{m as a,$ as _t,G as vt,U as wt,H as $t,e as St,j as Mt,a as L,i as Y,W as Et,N as Tt,aQ as et}from"./mermaid.esm.min-Bko3wIpE.js";import"./app-I9WJttm3.js";var Z=(function(){var t=a(function(y,i,r,u){for(r=r||{},u=y.length;u--;r[y[u]]=i);return r},"o"),e=[6,8,10,11,12,14,16,17,18],s=[1,9],l=[1,10],n=[1,11],c=[1,12],d=[1,13],h=[1,14],f={trace:a(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:a(function(y,i,r,u,p,o,x){var k=o.length-1;switch(p){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:u.setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),u.setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),u.setAccDescription(this.$);break;case 12:u.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 13:u.addTask(o[k-1],o[k]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:s,12:l,14:n,16:c,17:d,18:h},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:s,12:l,14:n,16:c,17:d,18:h},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:a(function(y,i){if(i.recoverable)this.trace(y);else{var r=new Error(y);throw r.hash=i,r}},"parseError"),parse:a(function(y){var i=this,r=[0],u=[],p=[null],o=[],x=this.table,k="",C=0,P=0,pt=0,yt=2,J=1,dt=o.slice.call(arguments,1),b=Object.create(this.lexer),A={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(A.yy[z]=this.yy[z]);b.setInput(y,A.yy),A.yy.lexer=b,A.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var q=b.yylloc;o.push(q);var ft=b.options&&b.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function gt(v){r.length=r.length-2*v,p.length=p.length-v,o.length=o.length-v}a(gt,"popStack");function K(){var v;return v=u.pop()||b.lex()||J,typeof v!="number"&&(v instanceof Array&&(u=v,v=u.pop()),v=i.symbols_[v]||v),v}a(K,"lex");for(var _,G,I,w,Zt,U,j={},V,M,tt,F;;){if(I=r[r.length-1],this.defaultActions[I]?w=this.defaultActions[I]:((_===null||typeof _>"u")&&(_=K()),w=x[I]&&x[I][_]),typeof w>"u"||!w.length||!w[0]){var W="";F=[];for(V in x[I])this.terminals_[V]&&V>yt&&F.push("'"+this.terminals_[V]+"'");b.showPosition?W="Parse error on line "+(C+1)+`:
|
||||
`+b.showPosition()+`
|
||||
Expecting `+F.join(", ")+", got '"+(this.terminals_[_]||_)+"'":W="Parse error on line "+(C+1)+": Unexpected "+(_==J?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(W,{text:b.match,token:this.terminals_[_]||_,line:b.yylineno,loc:q,expected:F})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+I+", token: "+_);switch(w[0]){case 1:r.push(_),p.push(b.yytext),o.push(b.yylloc),r.push(w[1]),_=null,G?(_=G,G=null):(P=b.yyleng,k=b.yytext,C=b.yylineno,q=b.yylloc,pt>0);break;case 2:if(M=this.productions_[w[1]][1],j.$=p[p.length-M],j._$={first_line:o[o.length-(M||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(M||1)].first_column,last_column:o[o.length-1].last_column},ft&&(j._$.range=[o[o.length-(M||1)].range[0],o[o.length-1].range[1]]),U=this.performAction.apply(j,[k,P,C,A.yy,w[1],p,o].concat(dt)),typeof U<"u")return U;M&&(r=r.slice(0,-1*M*2),p=p.slice(0,-1*M),o=o.slice(0,-1*M)),r.push(this.productions_[w[1]][0]),p.push(j.$),o.push(j._$),tt=x[r[r.length-2]][r[r.length-1]],r.push(tt);break;case 3:return!0}}return!0},"parse")},m=(function(){var y={EOF:1,parseError:a(function(i,r){if(this.yy.parser)this.yy.parser.parseError(i,r);else throw new Error(i)},"parseError"),setInput:a(function(i,r){return this.yy=r||this.yy||{},this._input=i,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:a(function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var r=i.match(/(?:\r\n?|\n).*/g);return r?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},"input"),unput:a(function(i){var r=i.length,u=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-r),this.offset-=r;var p=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),u.length-1&&(this.yylineno-=u.length-1);var o=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:u?(u.length===p.length?this.yylloc.first_column:0)+p[p.length-u.length].length-u[0].length:this.yylloc.first_column-r},this.options.ranges&&(this.yylloc.range=[o[0],o[0]+this.yyleng-r]),this.yyleng=this.yytext.length,this},"unput"),more:a(function(){return this._more=!0,this},"more"),reject:a(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
||||
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:a(function(i){this.unput(this.match.slice(i))},"less"),pastInput:a(function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:a(function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:a(function(){var i=this.pastInput(),r=new Array(i.length+1).join("-");return i+this.upcomingInput()+`
|
||||
@@ -1,4 +1,4 @@
|
||||
import{m as a,p as te,a as G,aN as fe,bd as me,be,bf as _e,b7 as ke,r as z,o as M,g as Ee,k as Se,b8 as Ne,b9 as le,ba as ce}from"./mermaid.esm.min-CFMguGj4.js";import{o as xe}from"./chunk-ZZTKAOFA-D3bY9_A8.js";import"./app-FFcgQi-5.js";var Z=(function(){var t=a(function(d,e,s,r){for(s=s||{},r=d.length;r--;s[d[r]]=e);return s},"o"),u=[1,4],p=[1,13],n=[1,12],g=[1,15],f=[1,16],k=[1,20],l=[1,19],D=[6,7,8],v=[1,26],h=[1,24],T=[1,25],S=[6,7,11],$=[1,31],O=[6,7,11,24],b=[1,6,13,16,17,20,23],A=[1,35],I=[1,36],w=[1,6,7,11,13,16,17,20,23],B=[1,38],H={trace:a(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:a(function(d,e,s,r,c,i,E){var o=i.length-1;switch(c){case 6:case 7:return r;case 8:r.getLogger().trace("Stop NL ");break;case 9:r.getLogger().trace("Stop EOF ");break;case 11:r.getLogger().trace("Stop NL2 ");break;case 12:r.getLogger().trace("Stop EOF2 ");break;case 15:r.getLogger().info("Node: ",i[o-1].id),r.addNode(i[o-2].length,i[o-1].id,i[o-1].descr,i[o-1].type,i[o]);break;case 16:r.getLogger().info("Node: ",i[o].id),r.addNode(i[o-1].length,i[o].id,i[o].descr,i[o].type);break;case 17:r.getLogger().trace("Icon: ",i[o]),r.decorateNode({icon:i[o]});break;case 18:case 23:r.decorateNode({class:i[o]});break;case 19:r.getLogger().trace("SPACELIST");break;case 20:r.getLogger().trace("Node: ",i[o-1].id),r.addNode(0,i[o-1].id,i[o-1].descr,i[o-1].type,i[o]);break;case 21:r.getLogger().trace("Node: ",i[o].id),r.addNode(0,i[o].id,i[o].descr,i[o].type);break;case 22:r.decorateNode({icon:i[o]});break;case 27:r.getLogger().trace("node found ..",i[o-2]),this.$={id:i[o-1],descr:i[o-1],type:r.getType(i[o-2],i[o])};break;case 28:this.$={id:i[o],descr:i[o],type:0};break;case 29:r.getLogger().trace("node found ..",i[o-3]),this.$={id:i[o-3],descr:i[o-1],type:r.getType(i[o-2],i[o])};break;case 30:this.$=i[o-1]+i[o];break;case 31:this.$=i[o];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:u},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:u},{6:p,7:[1,10],9:9,12:11,13:n,14:14,16:g,17:f,18:17,19:18,20:k,23:l},t(D,[2,3]),{1:[2,2]},t(D,[2,4]),t(D,[2,5]),{1:[2,6],6:p,12:21,13:n,14:14,16:g,17:f,18:17,19:18,20:k,23:l},{6:p,9:22,12:11,13:n,14:14,16:g,17:f,18:17,19:18,20:k,23:l},{6:v,7:h,10:23,11:T},t(S,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:k,23:l}),t(S,[2,19]),t(S,[2,21],{15:30,24:$}),t(S,[2,22]),t(S,[2,23]),t(O,[2,25]),t(O,[2,26]),t(O,[2,28],{20:[1,32]}),{21:[1,33]},{6:v,7:h,10:34,11:T},{1:[2,7],6:p,12:21,13:n,14:14,16:g,17:f,18:17,19:18,20:k,23:l},t(b,[2,14],{7:A,11:I}),t(w,[2,8]),t(w,[2,9]),t(w,[2,10]),t(S,[2,16],{15:37,24:$}),t(S,[2,17]),t(S,[2,18]),t(S,[2,20],{24:B}),t(O,[2,31]),{21:[1,39]},{22:[1,40]},t(b,[2,13],{7:A,11:I}),t(w,[2,11]),t(w,[2,12]),t(S,[2,15],{24:B}),t(O,[2,30]),{22:[1,41]},t(O,[2,27]),t(O,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:a(function(d,e){if(e.recoverable)this.trace(d);else{var s=new Error(d);throw s.hash=e,s}},"parseError"),parse:a(function(d){var e=this,s=[0],r=[],c=[null],i=[],E=this.table,o="",W=0,ne=0,ue=0,ge=2,re=1,pe=i.slice.call(arguments,1),m=Object.create(this.lexer),R={yy:{}};for(var Q in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Q)&&(R.yy[Q]=this.yy[Q]);m.setInput(d,R.yy),R.yy.lexer=m,R.yy.parser=this,typeof m.yylloc>"u"&&(m.yylloc={});var V=m.yylloc;i.push(V);var de=m.options&&m.options.ranges;typeof R.yy.parseError=="function"?this.parseError=R.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ye(N){s.length=s.length-2*N,c.length=c.length-N,i.length=i.length-N}a(ye,"popStack");function ae(){var N;return N=r.pop()||m.lex()||re,typeof N!="number"&&(N instanceof Array&&(r=N,N=r.pop()),N=e.symbols_[N]||N),N}a(ae,"lex");for(var _,X,P,x,We,q,F={},K,C,oe,j;;){if(P=s[s.length-1],this.defaultActions[P]?x=this.defaultActions[P]:((_===null||typeof _>"u")&&(_=ae()),x=E[P]&&E[P][_]),typeof x>"u"||!x.length||!x[0]){var Y="";j=[];for(K in E[P])this.terminals_[K]&&K>ge&&j.push("'"+this.terminals_[K]+"'");m.showPosition?Y="Parse error on line "+(W+1)+`:
|
||||
import{m as a,p as te,a as G,aN as fe,bd as me,be,bf as _e,b7 as ke,r as z,o as M,g as Ee,k as Se,b8 as Ne,b9 as le,ba as ce}from"./mermaid.esm.min-Bko3wIpE.js";import{o as xe}from"./chunk-ZZTKAOFA-C39qNkPO.js";import"./app-I9WJttm3.js";var Z=(function(){var t=a(function(d,e,s,r){for(s=s||{},r=d.length;r--;s[d[r]]=e);return s},"o"),u=[1,4],p=[1,13],n=[1,12],g=[1,15],f=[1,16],k=[1,20],l=[1,19],D=[6,7,8],v=[1,26],h=[1,24],T=[1,25],S=[6,7,11],$=[1,31],O=[6,7,11,24],b=[1,6,13,16,17,20,23],A=[1,35],I=[1,36],w=[1,6,7,11,13,16,17,20,23],B=[1,38],H={trace:a(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:a(function(d,e,s,r,c,i,E){var o=i.length-1;switch(c){case 6:case 7:return r;case 8:r.getLogger().trace("Stop NL ");break;case 9:r.getLogger().trace("Stop EOF ");break;case 11:r.getLogger().trace("Stop NL2 ");break;case 12:r.getLogger().trace("Stop EOF2 ");break;case 15:r.getLogger().info("Node: ",i[o-1].id),r.addNode(i[o-2].length,i[o-1].id,i[o-1].descr,i[o-1].type,i[o]);break;case 16:r.getLogger().info("Node: ",i[o].id),r.addNode(i[o-1].length,i[o].id,i[o].descr,i[o].type);break;case 17:r.getLogger().trace("Icon: ",i[o]),r.decorateNode({icon:i[o]});break;case 18:case 23:r.decorateNode({class:i[o]});break;case 19:r.getLogger().trace("SPACELIST");break;case 20:r.getLogger().trace("Node: ",i[o-1].id),r.addNode(0,i[o-1].id,i[o-1].descr,i[o-1].type,i[o]);break;case 21:r.getLogger().trace("Node: ",i[o].id),r.addNode(0,i[o].id,i[o].descr,i[o].type);break;case 22:r.decorateNode({icon:i[o]});break;case 27:r.getLogger().trace("node found ..",i[o-2]),this.$={id:i[o-1],descr:i[o-1],type:r.getType(i[o-2],i[o])};break;case 28:this.$={id:i[o],descr:i[o],type:0};break;case 29:r.getLogger().trace("node found ..",i[o-3]),this.$={id:i[o-3],descr:i[o-1],type:r.getType(i[o-2],i[o])};break;case 30:this.$=i[o-1]+i[o];break;case 31:this.$=i[o];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:u},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:u},{6:p,7:[1,10],9:9,12:11,13:n,14:14,16:g,17:f,18:17,19:18,20:k,23:l},t(D,[2,3]),{1:[2,2]},t(D,[2,4]),t(D,[2,5]),{1:[2,6],6:p,12:21,13:n,14:14,16:g,17:f,18:17,19:18,20:k,23:l},{6:p,9:22,12:11,13:n,14:14,16:g,17:f,18:17,19:18,20:k,23:l},{6:v,7:h,10:23,11:T},t(S,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:k,23:l}),t(S,[2,19]),t(S,[2,21],{15:30,24:$}),t(S,[2,22]),t(S,[2,23]),t(O,[2,25]),t(O,[2,26]),t(O,[2,28],{20:[1,32]}),{21:[1,33]},{6:v,7:h,10:34,11:T},{1:[2,7],6:p,12:21,13:n,14:14,16:g,17:f,18:17,19:18,20:k,23:l},t(b,[2,14],{7:A,11:I}),t(w,[2,8]),t(w,[2,9]),t(w,[2,10]),t(S,[2,16],{15:37,24:$}),t(S,[2,17]),t(S,[2,18]),t(S,[2,20],{24:B}),t(O,[2,31]),{21:[1,39]},{22:[1,40]},t(b,[2,13],{7:A,11:I}),t(w,[2,11]),t(w,[2,12]),t(S,[2,15],{24:B}),t(O,[2,30]),{22:[1,41]},t(O,[2,27]),t(O,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:a(function(d,e){if(e.recoverable)this.trace(d);else{var s=new Error(d);throw s.hash=e,s}},"parseError"),parse:a(function(d){var e=this,s=[0],r=[],c=[null],i=[],E=this.table,o="",W=0,ne=0,ue=0,ge=2,re=1,pe=i.slice.call(arguments,1),m=Object.create(this.lexer),R={yy:{}};for(var Q in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Q)&&(R.yy[Q]=this.yy[Q]);m.setInput(d,R.yy),R.yy.lexer=m,R.yy.parser=this,typeof m.yylloc>"u"&&(m.yylloc={});var V=m.yylloc;i.push(V);var de=m.options&&m.options.ranges;typeof R.yy.parseError=="function"?this.parseError=R.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ye(N){s.length=s.length-2*N,c.length=c.length-N,i.length=i.length-N}a(ye,"popStack");function ae(){var N;return N=r.pop()||m.lex()||re,typeof N!="number"&&(N instanceof Array&&(r=N,N=r.pop()),N=e.symbols_[N]||N),N}a(ae,"lex");for(var _,X,P,x,We,q,F={},K,C,oe,j;;){if(P=s[s.length-1],this.defaultActions[P]?x=this.defaultActions[P]:((_===null||typeof _>"u")&&(_=ae()),x=E[P]&&E[P][_]),typeof x>"u"||!x.length||!x[0]){var Y="";j=[];for(K in E[P])this.terminals_[K]&&K>ge&&j.push("'"+this.terminals_[K]+"'");m.showPosition?Y="Parse error on line "+(W+1)+`:
|
||||
`+m.showPosition()+`
|
||||
Expecting `+j.join(", ")+", got '"+(this.terminals_[_]||_)+"'":Y="Parse error on line "+(W+1)+": Unexpected "+(_==re?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(Y,{text:m.match,token:this.terminals_[_]||_,line:m.yylineno,loc:V,expected:j})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+P+", token: "+_);switch(x[0]){case 1:s.push(_),c.push(m.yytext),i.push(m.yylloc),s.push(x[1]),_=null,X?(_=X,X=null):(ne=m.yyleng,o=m.yytext,W=m.yylineno,V=m.yylloc,ue>0);break;case 2:if(C=this.productions_[x[1]][1],F.$=c[c.length-C],F._$={first_line:i[i.length-(C||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(C||1)].first_column,last_column:i[i.length-1].last_column},de&&(F._$.range=[i[i.length-(C||1)].range[0],i[i.length-1].range[1]]),q=this.performAction.apply(F,[o,ne,W,R.yy,x[1],c,i].concat(pe)),typeof q<"u")return q;C&&(s=s.slice(0,-1*C*2),c=c.slice(0,-1*C),i=i.slice(0,-1*C)),s.push(this.productions_[x[1]][0]),c.push(F.$),i.push(F._$),oe=E[s[s.length-2]][s[s.length-1]],s.push(oe);break;case 3:return!0}}return!0},"parse")},J=(function(){var d={EOF:1,parseError:a(function(e,s){if(this.yy.parser)this.yy.parser.parseError(e,s);else throw new Error(e)},"parseError"),setInput:a(function(e,s){return this.yy=s||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:a(function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var s=e.match(/(?:\r\n?|\n).*/g);return s?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},"input"),unput:a(function(e){var s=e.length,r=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-s),this.offset-=s;var c=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===c.length?this.yylloc.first_column:0)+c[c.length-r.length].length-r[0].length:this.yylloc.first_column-s},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-s]),this.yyleng=this.yytext.length,this},"unput"),more:a(function(){return this._more=!0,this},"more"),reject:a(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
||||
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:a(function(e){this.unput(this.match.slice(e))},"less"),pastInput:a(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:a(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:a(function(){var e=this.pastInput(),s=new Array(e.length+1).join("-");return e+this.upcomingInput()+`
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{m as ue}from"./chunk-6EQESGSB-D_IOh6b1.js";import{y as pe}from"./chunk-T244DUNM-toKIVE0w.js";import{m as l,p as I,V as ye,c as fe,r as M,a as V,o as P,bc as me,b8 as be,b9 as _e,ba as Ee}from"./mermaid.esm.min-CFMguGj4.js";import"./app-FFcgQi-5.js";var X=(function(){var i=l(function(N,t,r,o){for(r=r||{},o=N.length;o--;r[N[o]]=t);return r},"o"),e=[1,4],n=[1,13],a=[1,12],h=[1,15],c=[1,16],p=[1,20],u=[1,19],b=[6,7,8],C=[1,26],Y=[1,24],q=[1,25],E=[6,7,11],J=[1,6,13,15,16,19,22],K=[1,33],Q=[1,34],R=[1,6,7,11,13,15,16,19,22],B={trace:l(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:l(function(N,t,r,o,d,s,_){var g=s.length-1;switch(d){case 6:case 7:return o;case 8:o.getLogger().trace("Stop NL ");break;case 9:o.getLogger().trace("Stop EOF ");break;case 11:o.getLogger().trace("Stop NL2 ");break;case 12:o.getLogger().trace("Stop EOF2 ");break;case 15:o.getLogger().info("Node: ",s[g].id),o.addNode(s[g-1].length,s[g].id,s[g].descr,s[g].type);break;case 16:o.getLogger().trace("Icon: ",s[g]),o.decorateNode({icon:s[g]});break;case 17:case 21:o.decorateNode({class:s[g]});break;case 18:o.getLogger().trace("SPACELIST");break;case 19:o.getLogger().trace("Node: ",s[g].id),o.addNode(0,s[g].id,s[g].descr,s[g].type);break;case 20:o.decorateNode({icon:s[g]});break;case 25:o.getLogger().trace("node found ..",s[g-2]),this.$={id:s[g-1],descr:s[g-1],type:o.getType(s[g-2],s[g])};break;case 26:this.$={id:s[g],descr:s[g],type:o.nodeType.DEFAULT};break;case 27:o.getLogger().trace("node found ..",s[g-3]),this.$={id:s[g-3],descr:s[g-1],type:o.getType(s[g-2],s[g])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:n,7:[1,10],9:9,12:11,13:a,14:14,15:h,16:c,17:17,18:18,19:p,22:u},i(b,[2,3]),{1:[2,2]},i(b,[2,4]),i(b,[2,5]),{1:[2,6],6:n,12:21,13:a,14:14,15:h,16:c,17:17,18:18,19:p,22:u},{6:n,9:22,12:11,13:a,14:14,15:h,16:c,17:17,18:18,19:p,22:u},{6:C,7:Y,10:23,11:q},i(E,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:p,22:u}),i(E,[2,18]),i(E,[2,19]),i(E,[2,20]),i(E,[2,21]),i(E,[2,23]),i(E,[2,24]),i(E,[2,26],{19:[1,30]}),{20:[1,31]},{6:C,7:Y,10:32,11:q},{1:[2,7],6:n,12:21,13:a,14:14,15:h,16:c,17:17,18:18,19:p,22:u},i(J,[2,14],{7:K,11:Q}),i(R,[2,8]),i(R,[2,9]),i(R,[2,10]),i(E,[2,15]),i(E,[2,16]),i(E,[2,17]),{20:[1,35]},{21:[1,36]},i(J,[2,13],{7:K,11:Q}),i(R,[2,11]),i(R,[2,12]),{21:[1,37]},i(E,[2,25]),i(E,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:l(function(N,t){if(t.recoverable)this.trace(N);else{var r=new Error(N);throw r.hash=t,r}},"parseError"),parse:l(function(N){var t=this,r=[0],o=[],d=[null],s=[],_=this.table,g="",$=0,Z=0,le=0,ce=2,ee=1,he=s.slice.call(arguments,1),y=Object.create(this.lexer),v={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(v.yy[F]=this.yy[F]);y.setInput(N,v.yy),v.yy.lexer=y,v.yy.parser=this,typeof y.yylloc>"u"&&(y.yylloc={});var j=y.yylloc;s.push(j);var de=y.options&&y.options.ranges;typeof v.yy.parseError=="function"?this.parseError=v.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ge(S){r.length=r.length-2*S,d.length=d.length-S,s.length=s.length-S}l(ge,"popStack");function te(){var S;return S=o.pop()||y.lex()||ee,typeof S!="number"&&(S instanceof Array&&(o=S,S=o.pop()),S=t.symbols_[S]||S),S}l(te,"lex");for(var m,G,T,D,Ce,z,O={},A,k,ie,U;;){if(T=r[r.length-1],this.defaultActions[T]?D=this.defaultActions[T]:((m===null||typeof m>"u")&&(m=te()),D=_[T]&&_[T][m]),typeof D>"u"||!D.length||!D[0]){var H="";U=[];for(A in _[T])this.terminals_[A]&&A>ce&&U.push("'"+this.terminals_[A]+"'");y.showPosition?H="Parse error on line "+($+1)+`:
|
||||
import{m as ue}from"./chunk-6EQESGSB-LXq8sgYq.js";import{y as pe}from"./chunk-T244DUNM-KUCcU7P9.js";import{m as l,p as I,V as ye,c as fe,r as M,a as V,o as P,bc as me,b8 as be,b9 as _e,ba as Ee}from"./mermaid.esm.min-Bko3wIpE.js";import"./app-I9WJttm3.js";var X=(function(){var i=l(function(N,t,r,o){for(r=r||{},o=N.length;o--;r[N[o]]=t);return r},"o"),e=[1,4],n=[1,13],a=[1,12],h=[1,15],c=[1,16],p=[1,20],u=[1,19],b=[6,7,8],C=[1,26],Y=[1,24],q=[1,25],E=[6,7,11],J=[1,6,13,15,16,19,22],K=[1,33],Q=[1,34],R=[1,6,7,11,13,15,16,19,22],B={trace:l(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:l(function(N,t,r,o,d,s,_){var g=s.length-1;switch(d){case 6:case 7:return o;case 8:o.getLogger().trace("Stop NL ");break;case 9:o.getLogger().trace("Stop EOF ");break;case 11:o.getLogger().trace("Stop NL2 ");break;case 12:o.getLogger().trace("Stop EOF2 ");break;case 15:o.getLogger().info("Node: ",s[g].id),o.addNode(s[g-1].length,s[g].id,s[g].descr,s[g].type);break;case 16:o.getLogger().trace("Icon: ",s[g]),o.decorateNode({icon:s[g]});break;case 17:case 21:o.decorateNode({class:s[g]});break;case 18:o.getLogger().trace("SPACELIST");break;case 19:o.getLogger().trace("Node: ",s[g].id),o.addNode(0,s[g].id,s[g].descr,s[g].type);break;case 20:o.decorateNode({icon:s[g]});break;case 25:o.getLogger().trace("node found ..",s[g-2]),this.$={id:s[g-1],descr:s[g-1],type:o.getType(s[g-2],s[g])};break;case 26:this.$={id:s[g],descr:s[g],type:o.nodeType.DEFAULT};break;case 27:o.getLogger().trace("node found ..",s[g-3]),this.$={id:s[g-3],descr:s[g-1],type:o.getType(s[g-2],s[g])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:n,7:[1,10],9:9,12:11,13:a,14:14,15:h,16:c,17:17,18:18,19:p,22:u},i(b,[2,3]),{1:[2,2]},i(b,[2,4]),i(b,[2,5]),{1:[2,6],6:n,12:21,13:a,14:14,15:h,16:c,17:17,18:18,19:p,22:u},{6:n,9:22,12:11,13:a,14:14,15:h,16:c,17:17,18:18,19:p,22:u},{6:C,7:Y,10:23,11:q},i(E,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:p,22:u}),i(E,[2,18]),i(E,[2,19]),i(E,[2,20]),i(E,[2,21]),i(E,[2,23]),i(E,[2,24]),i(E,[2,26],{19:[1,30]}),{20:[1,31]},{6:C,7:Y,10:32,11:q},{1:[2,7],6:n,12:21,13:a,14:14,15:h,16:c,17:17,18:18,19:p,22:u},i(J,[2,14],{7:K,11:Q}),i(R,[2,8]),i(R,[2,9]),i(R,[2,10]),i(E,[2,15]),i(E,[2,16]),i(E,[2,17]),{20:[1,35]},{21:[1,36]},i(J,[2,13],{7:K,11:Q}),i(R,[2,11]),i(R,[2,12]),{21:[1,37]},i(E,[2,25]),i(E,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:l(function(N,t){if(t.recoverable)this.trace(N);else{var r=new Error(N);throw r.hash=t,r}},"parseError"),parse:l(function(N){var t=this,r=[0],o=[],d=[null],s=[],_=this.table,g="",$=0,Z=0,le=0,ce=2,ee=1,he=s.slice.call(arguments,1),y=Object.create(this.lexer),v={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(v.yy[F]=this.yy[F]);y.setInput(N,v.yy),v.yy.lexer=y,v.yy.parser=this,typeof y.yylloc>"u"&&(y.yylloc={});var j=y.yylloc;s.push(j);var de=y.options&&y.options.ranges;typeof v.yy.parseError=="function"?this.parseError=v.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ge(S){r.length=r.length-2*S,d.length=d.length-S,s.length=s.length-S}l(ge,"popStack");function te(){var S;return S=o.pop()||y.lex()||ee,typeof S!="number"&&(S instanceof Array&&(o=S,S=o.pop()),S=t.symbols_[S]||S),S}l(te,"lex");for(var m,G,T,D,Ce,z,O={},A,k,ie,U;;){if(T=r[r.length-1],this.defaultActions[T]?D=this.defaultActions[T]:((m===null||typeof m>"u")&&(m=te()),D=_[T]&&_[T][m]),typeof D>"u"||!D.length||!D[0]){var H="";U=[];for(A in _[T])this.terminals_[A]&&A>ce&&U.push("'"+this.terminals_[A]+"'");y.showPosition?H="Parse error on line "+($+1)+`:
|
||||
`+y.showPosition()+`
|
||||
Expecting `+U.join(", ")+", got '"+(this.terminals_[m]||m)+"'":H="Parse error on line "+($+1)+": Unexpected "+(m==ee?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(H,{text:y.match,token:this.terminals_[m]||m,line:y.yylineno,loc:j,expected:U})}if(D[0]instanceof Array&&D.length>1)throw new Error("Parse Error: multiple actions possible at state: "+T+", token: "+m);switch(D[0]){case 1:r.push(m),d.push(y.yytext),s.push(y.yylloc),r.push(D[1]),m=null,G?(m=G,G=null):(Z=y.yyleng,g=y.yytext,$=y.yylineno,j=y.yylloc,le>0);break;case 2:if(k=this.productions_[D[1]][1],O.$=d[d.length-k],O._$={first_line:s[s.length-(k||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(k||1)].first_column,last_column:s[s.length-1].last_column},de&&(O._$.range=[s[s.length-(k||1)].range[0],s[s.length-1].range[1]]),z=this.performAction.apply(O,[g,Z,$,v.yy,D[1],d,s].concat(he)),typeof z<"u")return z;k&&(r=r.slice(0,-1*k*2),d=d.slice(0,-1*k),s=s.slice(0,-1*k)),r.push(this.productions_[D[1]][0]),d.push(O.$),s.push(O._$),ie=_[r[r.length-2]][r[r.length-1]],r.push(ie);break;case 3:return!0}}return!0},"parse")},ae=(function(){var N={EOF:1,parseError:l(function(t,r){if(this.yy.parser)this.yy.parser.parseError(t,r);else throw new Error(t)},"parseError"),setInput:l(function(t,r){return this.yy=r||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:l(function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var r=t.match(/(?:\r\n?|\n).*/g);return r?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:l(function(t){var r=t.length,o=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-r),this.offset-=r;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),o.length-1&&(this.yylineno-=o.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:o?(o.length===d.length?this.yylloc.first_column:0)+d[d.length-o.length].length-o[0].length:this.yylloc.first_column-r},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-r]),this.yyleng=this.yytext.length,this},"unput"),more:l(function(){return this._more=!0,this},"more"),reject:l(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
||||
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:l(function(t){this.unput(this.match.slice(t))},"less"),pastInput:l(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:l(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:l(function(){var t=this.pastInput(),r=new Array(t.length+1).join("-");return t+this.upcomingInput()+`
|
||||
@@ -1,4 +1,4 @@
|
||||
import{c as B}from"./chunk-4KE642ED-CurJxSjh.js";import{p as V}from"./treemap-KMMF4GRG-7ORZ52ND-BjVEqkKc.js";import{m as r,$ as Q,G as X,U as Y,H as q,e as I,j as J,p as w,a as K,L as Z,aN as _,aP as ee,aQ as W,aR as te,W as ae,N as ie,aS as le,r as re}from"./mermaid.esm.min-CFMguGj4.js";import"./chunk-OMTJKCYW-C42Y4h95.js";import"./app-FFcgQi-5.js";var se=re.pie,v={sections:new Map,showData:!1},u=v.sections,y=v.showData,oe=structuredClone(se),ne=r(()=>structuredClone(oe),"getConfig"),pe=r(()=>{u=new Map,y=v.showData,ie()},"clear"),de=r(({label:e,value:a})=>{if(a<0)throw new Error(`"${e}" has invalid value: ${a}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);u.has(e)||(u.set(e,a),w.debug(`added new section: ${e}, with value: ${a}`))},"addSection"),ce=r(()=>u,"getSections"),ue=r(e=>{y=e},"setShowData"),ge=r(()=>y,"getShowData"),M={getConfig:ne,clear:pe,setDiagramTitle:J,getDiagramTitle:I,setAccTitle:q,getAccTitle:Y,setAccDescription:X,getAccDescription:Q,addSection:de,getSections:ce,setShowData:ue,getShowData:ge},me=r((e,a)=>{B(e,a),a.setShowData(e.showData),e.sections.map(a.addSection)},"populateDb"),he={parse:r(async e=>{let a=await V("pie",e);w.debug(a),me(a,M)},"parse")},fe=r(e=>`
|
||||
import{c as B}from"./chunk-4KE642ED-DUAZ7Ja9.js";import{p as V}from"./treemap-KMMF4GRG-7ORZ52ND-CZvSDgse.js";import{m as r,$ as Q,G as X,U as Y,H as q,e as I,j as J,p as w,a as K,L as Z,aN as _,aP as ee,aQ as W,aR as te,W as ae,N as ie,aS as le,r as re}from"./mermaid.esm.min-Bko3wIpE.js";import"./chunk-OMTJKCYW-_vIhX9oV.js";import"./app-I9WJttm3.js";var se=re.pie,v={sections:new Map,showData:!1},u=v.sections,y=v.showData,oe=structuredClone(se),ne=r(()=>structuredClone(oe),"getConfig"),pe=r(()=>{u=new Map,y=v.showData,ie()},"clear"),de=r(({label:e,value:a})=>{if(a<0)throw new Error(`"${e}" has invalid value: ${a}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);u.has(e)||(u.set(e,a),w.debug(`added new section: ${e}, with value: ${a}`))},"addSection"),ce=r(()=>u,"getSections"),ue=r(e=>{y=e},"setShowData"),ge=r(()=>y,"getShowData"),M={getConfig:ne,clear:pe,setDiagramTitle:J,getDiagramTitle:I,setAccTitle:q,getAccTitle:Y,setAccDescription:X,getAccDescription:Q,addSection:de,getSections:ce,setShowData:ue,getShowData:ge},me=r((e,a)=>{B(e,a),a.setShowData(e.showData),e.sections.map(a.addSection)},"populateDb"),he={parse:r(async e=>{let a=await V("pie",e);w.debug(a),me(a,M)},"parse")},fe=r(e=>`
|
||||
.pieCircle{
|
||||
stroke: ${e.pieStrokeColor};
|
||||
stroke-width : ${e.pieStrokeWidth};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{m as n,j as jt,e as zt,G as Bt,$ as Ft,H as Rt,U as Ut,a as dt,A as Gt,i as K,aR as Ht,b7 as Vt,N as Wt,h as qt,bg as Qt}from"./mermaid.esm.min-CFMguGj4.js";import"./app-FFcgQi-5.js";var st=(function(){var t=n(function(k,r,a,f){for(a=a||{},f=k.length;f--;a[k[f]]=r);return a},"o"),i=[1,9],s=[1,10],l=[1,5,10,12],h={trace:n(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:n(function(k,r,a,f,_,d,b){var x=d.length-1;switch(_){case 7:let C=f.findOrCreateNode(d[x-4].trim().replaceAll('""','"')),A=f.findOrCreateNode(d[x-2].trim().replaceAll('""','"')),N=parseFloat(d[x].trim());f.addLink(C,A,N);break;case 8:case 9:case 11:this.$=d[x];break;case 10:this.$=d[x-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:i,20:s},{1:[2,6],7:11,10:[1,12]},t(s,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(l,[2,8]),t(l,[2,9]),{19:[1,16]},t(l,[2,11]),{1:[2,1]},{1:[2,5]},t(s,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:i,20:s},{15:18,16:7,17:8,18:i,20:s},{18:[1,19]},t(s,[2,3]),{12:[1,20]},t(l,[2,10]),{15:21,16:7,17:8,18:i,20:s},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:n(function(k,r){if(r.recoverable)this.trace(k);else{var a=new Error(k);throw a.hash=r,a}},"parseError"),parse:n(function(k){var r=this,a=[0],f=[],_=[null],d=[],b=this.table,x="",C=0,A=0,N=0,j=2,M=1,z=d.slice.call(arguments,1),S=Object.create(this.lexer),I={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(I.yy[$]=this.yy[$]);S.setInput(k,I.yy),I.yy.lexer=S,I.yy.parser=this,typeof S.yylloc>"u"&&(S.yylloc={});var g=S.yylloc;d.push(g);var T=S.options&&S.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function V(L){a.length=a.length-2*L,_.length=_.length-L,d.length=d.length-L}n(V,"popStack");function R(){var L;return L=f.pop()||S.lex()||M,typeof L!="number"&&(L instanceof Array&&(f=L,L=f.pop()),L=r.symbols_[L]||L),L}n(R,"lex");for(var E,U,O,e,y,u,c={},o,p,w,P;;){if(O=a[a.length-1],this.defaultActions[O]?e=this.defaultActions[O]:((E===null||typeof E>"u")&&(E=R()),e=b[O]&&b[O][E]),typeof e>"u"||!e.length||!e[0]){var D="";P=[];for(o in b[O])this.terminals_[o]&&o>j&&P.push("'"+this.terminals_[o]+"'");S.showPosition?D="Parse error on line "+(C+1)+`:
|
||||
import{m as n,j as jt,e as zt,G as Bt,$ as Ft,H as Rt,U as Ut,a as dt,A as Gt,i as K,aR as Ht,b7 as Vt,N as Wt,h as qt,bg as Qt}from"./mermaid.esm.min-Bko3wIpE.js";import"./app-I9WJttm3.js";var st=(function(){var t=n(function(k,r,a,f){for(a=a||{},f=k.length;f--;a[k[f]]=r);return a},"o"),i=[1,9],s=[1,10],l=[1,5,10,12],h={trace:n(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:n(function(k,r,a,f,_,d,b){var x=d.length-1;switch(_){case 7:let C=f.findOrCreateNode(d[x-4].trim().replaceAll('""','"')),A=f.findOrCreateNode(d[x-2].trim().replaceAll('""','"')),N=parseFloat(d[x].trim());f.addLink(C,A,N);break;case 8:case 9:case 11:this.$=d[x];break;case 10:this.$=d[x-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:i,20:s},{1:[2,6],7:11,10:[1,12]},t(s,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(l,[2,8]),t(l,[2,9]),{19:[1,16]},t(l,[2,11]),{1:[2,1]},{1:[2,5]},t(s,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:i,20:s},{15:18,16:7,17:8,18:i,20:s},{18:[1,19]},t(s,[2,3]),{12:[1,20]},t(l,[2,10]),{15:21,16:7,17:8,18:i,20:s},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:n(function(k,r){if(r.recoverable)this.trace(k);else{var a=new Error(k);throw a.hash=r,a}},"parseError"),parse:n(function(k){var r=this,a=[0],f=[],_=[null],d=[],b=this.table,x="",C=0,A=0,N=0,j=2,M=1,z=d.slice.call(arguments,1),S=Object.create(this.lexer),I={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(I.yy[$]=this.yy[$]);S.setInput(k,I.yy),I.yy.lexer=S,I.yy.parser=this,typeof S.yylloc>"u"&&(S.yylloc={});var g=S.yylloc;d.push(g);var T=S.options&&S.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function V(L){a.length=a.length-2*L,_.length=_.length-L,d.length=d.length-L}n(V,"popStack");function R(){var L;return L=f.pop()||S.lex()||M,typeof L!="number"&&(L instanceof Array&&(f=L,L=f.pop()),L=r.symbols_[L]||L),L}n(R,"lex");for(var E,U,O,e,y,u,c={},o,p,w,P;;){if(O=a[a.length-1],this.defaultActions[O]?e=this.defaultActions[O]:((E===null||typeof E>"u")&&(E=R()),e=b[O]&&b[O][E]),typeof e>"u"||!e.length||!e[0]){var D="";P=[];for(o in b[O])this.terminals_[o]&&o>j&&P.push("'"+this.terminals_[o]+"'");S.showPosition?D="Parse error on line "+(C+1)+`:
|
||||
`+S.showPosition()+`
|
||||
Expecting `+P.join(", ")+", got '"+(this.terminals_[E]||E)+"'":D="Parse error on line "+(C+1)+": Unexpected "+(E==M?"end of input":"'"+(this.terminals_[E]||E)+"'"),this.parseError(D,{text:S.match,token:this.terminals_[E]||E,line:S.yylineno,loc:g,expected:P})}if(e[0]instanceof Array&&e.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+E);switch(e[0]){case 1:a.push(E),_.push(S.yytext),d.push(S.yylloc),a.push(e[1]),E=null,U?(E=U,U=null):(A=S.yyleng,x=S.yytext,C=S.yylineno,g=S.yylloc,N>0);break;case 2:if(p=this.productions_[e[1]][1],c.$=_[_.length-p],c._$={first_line:d[d.length-(p||1)].first_line,last_line:d[d.length-1].last_line,first_column:d[d.length-(p||1)].first_column,last_column:d[d.length-1].last_column},T&&(c._$.range=[d[d.length-(p||1)].range[0],d[d.length-1].range[1]]),u=this.performAction.apply(c,[x,A,C,I.yy,e[1],_,d].concat(z)),typeof u<"u")return u;p&&(a=a.slice(0,-1*p*2),_=_.slice(0,-1*p),d=d.slice(0,-1*p)),a.push(this.productions_[e[1]][0]),_.push(c.$),d.push(c._$),w=b[a[a.length-2]][a[a.length-1]],a.push(w);break;case 3:return!0}}return!0},"parse")},v=(function(){var k={EOF:1,parseError:n(function(r,a){if(this.yy.parser)this.yy.parser.parseError(r,a);else throw new Error(r)},"parseError"),setInput:n(function(r,a){return this.yy=a||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:n(function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var a=r.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},"input"),unput:n(function(r){var a=r.length,f=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var _=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),f.length-1&&(this.yylineno-=f.length-1);var d=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:f?(f.length===_.length?this.yylloc.first_column:0)+_[_.length-f.length].length-f[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[d[0],d[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:n(function(){return this._more=!0,this},"more"),reject:n(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
||||
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:n(function(r){this.unput(this.match.slice(r))},"less"),pastInput:n(function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:n(function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:n(function(){var r=this.pastInput(),a=new Array(r.length+1).join("-");return r+this.upcomingInput()+`
|
||||
File diff suppressed because one or more lines are too long
1
assets/searchBox-default-Dw-Luc6G.js
Normal file
1
assets/searchBox-default-Dw-Luc6G.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
import{g as e,q as t,B as a,_ as s}from"./chunk-XTOMJ4XH-B8twAYo_.js";import"./chunk-6EQESGSB-D_IOh6b1.js";import"./chunk-T244DUNM-toKIVE0w.js";import{m as o}from"./mermaid.esm.min-CFMguGj4.js";import"./app-FFcgQi-5.js";var b={parser:a,get db(){return new s(2)},renderer:t,styles:e,init:o(r=>{r.state||(r.state={}),r.state.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{b as diagram};
|
||||
1
assets/stateDiagram-v2-GQU47BET-BtTyXu3D.js
Normal file
1
assets/stateDiagram-v2-GQU47BET-BtTyXu3D.js
Normal file
@@ -0,0 +1 @@
|
||||
import{g as e,q as t,B as a,_ as s}from"./chunk-AI4T2ZLM-CtToFbC7.js";import"./chunk-6EQESGSB-LXq8sgYq.js";import"./chunk-T244DUNM-KUCcU7P9.js";import{m as o}from"./mermaid.esm.min-Bko3wIpE.js";import"./app-I9WJttm3.js";var b={parser:a,get db(){return new s(2)},renderer:t,styles:e,init:o(r=>{r.state||(r.state={}),r.state.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{b as diagram};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{m as r,a as bt,p as S,i as V,b7 as kt,b8 as _t,b9 as vt,ba as wt,aQ as et,n as St,bb as $t,N as Et}from"./mermaid.esm.min-CFMguGj4.js";import"./app-FFcgQi-5.js";var X=(function(){var i=r(function(g,a,c,h){for(c=c||{},h=g.length;h--;c[g[h]]=a);return c},"o"),t=[6,8,10,11,12,14,16,17,20,21],e=[1,9],s=[1,10],n=[1,11],l=[1,12],p=[1,13],y=[1,16],u=[1,17],f={trace:r(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:r(function(g,a,c,h,d,o,m){var k=o.length-1;switch(d){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:h.getCommonDb().setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),h.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),h.getCommonDb().setAccDescription(this.$);break;case 12:h.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 15:h.addTask(o[k],0,""),this.$=o[k];break;case 16:h.addEvent(o[k].substr(2)),this.$=o[k];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},i(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:e,12:s,14:n,16:l,17:p,18:14,19:15,20:y,21:u},i(t,[2,7],{1:[2,1]}),i(t,[2,3]),{9:18,11:e,12:s,14:n,16:l,17:p,18:14,19:15,20:y,21:u},i(t,[2,5]),i(t,[2,6]),i(t,[2,8]),{13:[1,19]},{15:[1,20]},i(t,[2,11]),i(t,[2,12]),i(t,[2,13]),i(t,[2,14]),i(t,[2,15]),i(t,[2,16]),i(t,[2,4]),i(t,[2,9]),i(t,[2,10])],defaultActions:{},parseError:r(function(g,a){if(a.recoverable)this.trace(g);else{var c=new Error(g);throw c.hash=a,c}},"parseError"),parse:r(function(g){var a=this,c=[0],h=[],d=[null],o=[],m=this.table,k="",I=0,P=0,H=0,C=2,v=1,N=o.slice.call(arguments,1),x=Object.create(this.lexer),$={yy:{}};for(var L in this.yy)Object.prototype.hasOwnProperty.call(this.yy,L)&&($.yy[L]=this.yy[L]);x.setInput(g,$.yy),$.yy.lexer=x,$.yy.parser=this,typeof x.yylloc>"u"&&(x.yylloc={});var F=x.yylloc;o.push(F);var mt=x.options&&x.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xt(E){c.length=c.length-2*E,d.length=d.length-E,o.length=o.length-E}r(xt,"popStack");function K(){var E;return E=h.pop()||x.lex()||v,typeof E!="number"&&(E instanceof Array&&(h=E,E=h.pop()),E=a.symbols_[E]||E),E}r(K,"lex");for(var w,G,O,T,qt,q,j={},R,A,tt,W;;){if(O=c[c.length-1],this.defaultActions[O]?T=this.defaultActions[O]:((w===null||typeof w>"u")&&(w=K()),T=m[O]&&m[O][w]),typeof T>"u"||!T.length||!T[0]){var Y="";W=[];for(R in m[O])this.terminals_[R]&&R>C&&W.push("'"+this.terminals_[R]+"'");x.showPosition?Y="Parse error on line "+(I+1)+`:
|
||||
import{m as r,a as bt,p as S,i as V,b7 as kt,b8 as _t,b9 as vt,ba as wt,aQ as et,n as St,bb as $t,N as Et}from"./mermaid.esm.min-Bko3wIpE.js";import"./app-I9WJttm3.js";var X=(function(){var i=r(function(g,a,c,h){for(c=c||{},h=g.length;h--;c[g[h]]=a);return c},"o"),t=[6,8,10,11,12,14,16,17,20,21],e=[1,9],s=[1,10],n=[1,11],l=[1,12],p=[1,13],y=[1,16],u=[1,17],f={trace:r(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:r(function(g,a,c,h,d,o,m){var k=o.length-1;switch(d){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:h.getCommonDb().setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),h.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),h.getCommonDb().setAccDescription(this.$);break;case 12:h.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 15:h.addTask(o[k],0,""),this.$=o[k];break;case 16:h.addEvent(o[k].substr(2)),this.$=o[k];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},i(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:e,12:s,14:n,16:l,17:p,18:14,19:15,20:y,21:u},i(t,[2,7],{1:[2,1]}),i(t,[2,3]),{9:18,11:e,12:s,14:n,16:l,17:p,18:14,19:15,20:y,21:u},i(t,[2,5]),i(t,[2,6]),i(t,[2,8]),{13:[1,19]},{15:[1,20]},i(t,[2,11]),i(t,[2,12]),i(t,[2,13]),i(t,[2,14]),i(t,[2,15]),i(t,[2,16]),i(t,[2,4]),i(t,[2,9]),i(t,[2,10])],defaultActions:{},parseError:r(function(g,a){if(a.recoverable)this.trace(g);else{var c=new Error(g);throw c.hash=a,c}},"parseError"),parse:r(function(g){var a=this,c=[0],h=[],d=[null],o=[],m=this.table,k="",I=0,P=0,H=0,C=2,v=1,N=o.slice.call(arguments,1),x=Object.create(this.lexer),$={yy:{}};for(var L in this.yy)Object.prototype.hasOwnProperty.call(this.yy,L)&&($.yy[L]=this.yy[L]);x.setInput(g,$.yy),$.yy.lexer=x,$.yy.parser=this,typeof x.yylloc>"u"&&(x.yylloc={});var F=x.yylloc;o.push(F);var mt=x.options&&x.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xt(E){c.length=c.length-2*E,d.length=d.length-E,o.length=o.length-E}r(xt,"popStack");function K(){var E;return E=h.pop()||x.lex()||v,typeof E!="number"&&(E instanceof Array&&(h=E,E=h.pop()),E=a.symbols_[E]||E),E}r(K,"lex");for(var w,G,O,T,qt,q,j={},R,A,tt,W;;){if(O=c[c.length-1],this.defaultActions[O]?T=this.defaultActions[O]:((w===null||typeof w>"u")&&(w=K()),T=m[O]&&m[O][w]),typeof T>"u"||!T.length||!T[0]){var Y="";W=[];for(R in m[O])this.terminals_[R]&&R>C&&W.push("'"+this.terminals_[R]+"'");x.showPosition?Y="Parse error on line "+(I+1)+`:
|
||||
`+x.showPosition()+`
|
||||
Expecting `+W.join(", ")+", got '"+(this.terminals_[w]||w)+"'":Y="Parse error on line "+(I+1)+": Unexpected "+(w==v?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(Y,{text:x.match,token:this.terminals_[w]||w,line:x.yylineno,loc:F,expected:W})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+w);switch(T[0]){case 1:c.push(w),d.push(x.yytext),o.push(x.yylloc),c.push(T[1]),w=null,G?(w=G,G=null):(P=x.yyleng,k=x.yytext,I=x.yylineno,F=x.yylloc,H>0);break;case 2:if(A=this.productions_[T[1]][1],j.$=d[d.length-A],j._$={first_line:o[o.length-(A||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(A||1)].first_column,last_column:o[o.length-1].last_column},mt&&(j._$.range=[o[o.length-(A||1)].range[0],o[o.length-1].range[1]]),q=this.performAction.apply(j,[k,P,I,$.yy,T[1],d,o].concat(N)),typeof q<"u")return q;A&&(c=c.slice(0,-1*A*2),d=d.slice(0,-1*A),o=o.slice(0,-1*A)),c.push(this.productions_[T[1]][0]),d.push(j.$),o.push(j._$),tt=m[c[c.length-2]][c[c.length-1]],c.push(tt);break;case 3:return!0}}return!0},"parse")},_=(function(){var g={EOF:1,parseError:r(function(a,c){if(this.yy.parser)this.yy.parser.parseError(a,c);else throw new Error(a)},"parseError"),setInput:r(function(a,c){return this.yy=c||this.yy||{},this._input=a,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:r(function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var c=a.match(/(?:\r\n?|\n).*/g);return c?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},"input"),unput:r(function(a){var c=a.length,h=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-c),this.offset-=c;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),h.length-1&&(this.yylineno-=h.length-1);var o=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:h?(h.length===d.length?this.yylloc.first_column:0)+d[d.length-h.length].length-h[0].length:this.yylloc.first_column-c},this.options.ranges&&(this.yylloc.range=[o[0],o[0]+this.yyleng-c]),this.yyleng=this.yytext.length,this},"unput"),more:r(function(){return this._more=!0,this},"more"),reject:r(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
||||
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:r(function(a){this.unput(this.match.slice(a))},"less"),pastInput:r(function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:r(function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:r(function(){var a=this.pastInput(),c=new Array(a.length+1).join("-");return a+this.upcomingInput()+`
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user