Build: 周日 2025/11/02 20:25:30.66

This commit is contained in:
祀梦
2025-11-02 20:25:31 +08:00
commit d8ccce75d7
214 changed files with 6076 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
import{_ as e,c as o,b as n,o as a}from"./app-CsTq_I9B.js";const r={};function l(s,t){return a(),o("div",null,[...t[0]||(t[0]=[n("p",null,"404 Not Found",-1)])])}const i=e(r,[["render",l]]),d=JSON.parse('{"path":"/404.html","title":"","lang":"zh-CN","frontmatter":{"layout":"NotFound"},"readingTime":{"minutes":0.01,"words":3},"git":{},"filePathRelative":null,"headers":[]}');export{i as comp,d as data};
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
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
View File
@@ -0,0 +1 @@
import{m as e}from"./mermaid.esm.min-vSKPWR4X.js";function a(c,t){c.accDescr&&t.setAccDescription?.(c.accDescr),c.accTitle&&t.setAccTitle?.(c.accTitle),c.title&&t.setDiagramTitle?.(c.title)}e(a,"populateCommonDb");export{a as c};
+1
View File
@@ -0,0 +1 @@
import{m,i as e}from"./mermaid.esm.min-vSKPWR4X.js";var r=m((o,t)=>{let a;return t==="sandbox"&&(a=e("#i"+o)),(t==="sandbox"?e(a.nodes()[0].contentDocument.body):e("body")).select(`[id="${o}"]`)},"getDiagramElement");export{r as m};
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
View File
@@ -0,0 +1 @@
import{m as a,W as g,p as s}from"./mermaid.esm.min-vSKPWR4X.js";var m=a((t,i,e,o)=>{t.attr("class",e);let{width:h,height:r,x:w,y:x}=n(t,i);g(t,r,h,o);let d=$(w,x,h,r,i);t.attr("viewBox",d),s.debug(`viewBox configured: ${d} with padding: ${i}`)},"setupViewPortForSVG"),n=a((t,i)=>{let e=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:e.width+i*2,height:e.height+i*2,x:e.x,y:e.y}},"calculateDimensionsWithPadding"),$=a((t,i,e,o,h)=>`${t-h} ${i-h} ${e} ${o}`,"createViewBox");export{m as y};
+1
View File
@@ -0,0 +1 @@
import{m as s}from"./mermaid.esm.min-vSKPWR4X.js";var t,e=(t=class{constructor(i){this.init=i,this.records=this.init()}reset(){this.records=this.init()}},s(t,"ImperativeState"),t);export{e as s};
+1
View File
@@ -0,0 +1 @@
import{m as l,z as n,q as d,f as h}from"./mermaid.esm.min-vSKPWR4X.js";var i=d(h()),y=l((s,t)=>{let r=s.append("rect");if(r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),t.name&&r.attr("name",t.name),t.rx&&r.attr("rx",t.rx),t.ry&&r.attr("ry",t.ry),t.attrs!==void 0)for(let a in t.attrs)r.attr(a,t.attrs[a]);return t.class&&r.attr("class",t.class),r},"drawRect"),o=l((s,t)=>{let r={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};y(s,r).lower()},"drawBackgroundRect"),p=l((s,t)=>{let r=t.text.replace(n," "),a=s.append("text");a.attr("x",t.x),a.attr("y",t.y),a.attr("class","legend"),a.style("text-anchor",t.anchor),t.class&&a.attr("class",t.class);let e=a.append("tspan");return e.attr("x",t.x+t.textMargin*2),e.text(r),a},"drawText"),g=l((s,t,r,a)=>{let e=s.append("image");e.attr("x",t),e.attr("y",r);let x=(0,i.sanitizeUrl)(a);e.attr("xlink:href",x)},"drawImage"),f=l((s,t,r,a)=>{let e=s.append("use");e.attr("x",t),e.attr("y",r);let x=(0,i.sanitizeUrl)(a);e.attr("xlink:href",`#${x}`)},"drawEmbeddedImage"),m=l(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),w=l(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj");export{f as E,g as d,w as f,o as g,m as h,y as x,p as y};
+15
View File
@@ -0,0 +1,15 @@
import{m as e}from"./mermaid.esm.min-vSKPWR4X.js";var l=e(()=>`
/* Font Awesome icon styling - consolidated */
.label-icon {
display: inline-block;
height: 1em;
overflow: visible;
vertical-align: -0.125em;
}
.node .label-icon path {
fill: currentColor;
stroke: revert;
stroke-width: revert;
}
`,"getIconStyles");export{l as o};
+1
View File
@@ -0,0 +1 @@
import{V as t,Q as a,C as s,l as e}from"./chunk-P7EU7REX-CfiDT0A_.js";import"./chunk-ZZTKAOFA-DbYRDN8h.js";import"./chunk-6EQESGSB-D8MQkSSJ.js";import"./chunk-T244DUNM-ROicv7Wv.js";import{m as o}from"./mermaid.esm.min-vSKPWR4X.js";import"./app-CsTq_I9B.js";var c={parser:s,get db(){return new e},renderer:a,styles:t,init:o(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
@@ -0,0 +1 @@
import{V as t,Q as a,C as s,l as e}from"./chunk-P7EU7REX-CfiDT0A_.js";import"./chunk-ZZTKAOFA-DbYRDN8h.js";import"./chunk-6EQESGSB-D8MQkSSJ.js";import"./chunk-T244DUNM-ROicv7Wv.js";import{m as o}from"./mermaid.esm.min-vSKPWR4X.js";import"./app-CsTq_I9B.js";var c={parser:s,get db(){return new e},renderer:a,styles:t,init:o(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
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
+24
View File
@@ -0,0 +1,24 @@
import{c as B}from"./chunk-4KE642ED-D4iGNsEG.js";import{p as C}from"./treemap-KMMF4GRG-7ORZ52ND-CF-wf9MV.js";import{m as f,L as u,aN as P,W as z,p as w,H as W,U as F,j as S,e as D,$ as E,G as T,O as N,r as L,N as A}from"./mermaid.esm.min-vSKPWR4X.js";import"./chunk-OMTJKCYW-CCUNQPi0.js";import"./app-CsTq_I9B.js";var H=L.packet,m,$=(m=class{constructor(){this.packet=[],this.setAccTitle=W,this.getAccTitle=F,this.setDiagramTitle=S,this.getDiagramTitle=D,this.getAccDescription=E,this.setAccDescription=T}getConfig(){let t=u({...H,...N().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){A(),this.packet=[]}},f(m,"PacketDB"),m),R=1e4,j=f((e,t)=>{B(e,t);let r=-1,i=[],l=1,{bitsPerRow:n}=t.getConfig();for(let{start:a,end:s,bits:c,label:d}of e.blocks){if(a!==void 0&&s!==void 0&&s<a)throw new Error(`Packet block ${a} - ${s} is invalid. End must be greater than start.`);if(a??=r+1,a!==r+1)throw new Error(`Packet block ${a} - ${s??a} is not contiguous. It should start from ${r+1}.`);if(c===0)throw new Error(`Packet block ${a} is invalid. Cannot have a zero bit field.`);for(s??=a+(c??1)-1,c??=s-a+1,r=s,w.debug(`Packet block ${a} - ${r} with label ${d}`);i.length<=n+1&&t.getPacket().length<R;){let[p,o]=G({start:a,end:s,bits:c,label:d},l,n);if(i.push(p),p.end+1===l*n&&(t.pushWord(i),i=[],l++),!o)break;({start:a,end:s,bits:c,label:d}=o)}}t.pushWord(i)},"populate"),G=f((e,t,r)=>{if(e.start===void 0)throw new Error("start should have been set during first phase");if(e.end===void 0)throw new Error("end should have been set during first phase");if(e.start>e.end)throw new Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*r)return[e,void 0];let i=t*r-1,l=t*r;return[{start:e.start,end:i,label:e.label,bits:i-e.start},{start:l,end:e.end,label:e.label,bits:e.end-l}]},"getNextFittingBlock"),y={parser:{yy:void 0},parse:f(async e=>{let t=await C("packet",e),r=y.parser?.yy;if(!(r instanceof $))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");w.debug(t),j(t,r)},"parse")},M=f((e,t,r,i)=>{let l=i.db,n=l.getConfig(),{rowHeight:a,paddingY:s,bitWidth:c,bitsPerRow:d}=n,p=l.getPacket(),o=l.getDiagramTitle(),h=a+s,b=h*(p.length+1)-(o?0:a),k=c*d+2,g=P(t);g.attr("viewbox",`0 0 ${k} ${b}`),z(g,b,k,n.useMaxWidth);for(let[x,v]of p.entries())O(g,v,x,n);g.append("text").text(o).attr("x",k/2).attr("y",b-h/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),O=f((e,t,r,{rowHeight:i,paddingX:l,paddingY:n,bitWidth:a,bitsPerRow:s,showBits:c})=>{let d=e.append("g"),p=r*(i+n)+n;for(let o of t){let h=o.start%s*a+1,b=(o.end-o.start+1)*a-l;if(d.append("rect").attr("x",h).attr("y",p).attr("width",b).attr("height",i).attr("class","packetBlock"),d.append("text").attr("x",h+b/2).attr("y",p+i/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(o.label),!c)continue;let k=o.end===o.start,g=p-2;d.append("text").attr("x",h+(k?b/2:0)).attr("y",g).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",k?"middle":"start").text(o.start),k||d.append("text").attr("x",h+b).attr("y",g).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(o.end)}},"drawWord"),Y={draw:M},U={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},V=f(({packet:e}={})=>{let t=u(U,e);return`
.packetByte {
font-size: ${t.byteFontSize};
}
.packetByte.start {
fill: ${t.startByteColor};
}
.packetByte.end {
fill: ${t.endByteColor};
}
.packetLabel {
fill: ${t.labelColor};
font-size: ${t.labelFontSize};
}
.packetTitle {
fill: ${t.titleColor};
font-size: ${t.titleFontSize};
}
.packetBlock {
stroke: ${t.blockStrokeColor};
stroke-width: ${t.blockStrokeWidth};
fill: ${t.blockFillColor};
}
`},"styles"),K={parser:y,get db(){return new $},renderer:Y,styles:V};export{K as diagram};
+43
View File
@@ -0,0 +1,43 @@
import{c as I}from"./chunk-4KE642ED-D4iGNsEG.js";import{p as S}from"./treemap-KMMF4GRG-7ORZ52ND-CF-wf9MV.js";import{m as o,G as E,$ as F,e as z,j as P,U as G,H as R,aN as D,N,L as v,O as w,r as j,p as B,aT as H}from"./mermaid.esm.min-vSKPWR4X.js";import"./chunk-OMTJKCYW-CCUNQPi0.js";import"./app-CsTq_I9B.js";var x={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},b={axes:[],curves:[],options:x},u=structuredClone(b),V=j.radar,W=o(()=>v({...V,...w().radar}),"getConfig"),C=o(()=>u.axes,"getAxes"),U=o(()=>u.curves,"getCurves"),_=o(()=>u.options,"getOptions"),Z=o(a=>{u.axes=a.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),q=o(a=>{u.curves=a.map(t=>({name:t.name,label:t.label??t.name,entries:J(t.entries)}))},"setCurves"),J=o(a=>{if(a[0].axis==null)return a.map(e=>e.value);let t=C();if(t.length===0)throw new Error("Axes must be populated before curves for reference entries");return t.map(e=>{let r=a.find(i=>i.axis?.$refText===e.name);if(r===void 0)throw new Error("Missing entry for axis "+e.label);return r.value})},"computeCurveEntries"),K=o(a=>{let t=a.reduce((e,r)=>(e[r.name]=r,e),{});u.options={showLegend:t.showLegend?.value??x.showLegend,ticks:t.ticks?.value??x.ticks,max:t.max?.value??x.max,min:t.min?.value??x.min,graticule:t.graticule?.value??x.graticule}},"setOptions"),Q=o(()=>{N(),u=structuredClone(b)},"clear"),f={getAxes:C,getCurves:U,getOptions:_,setAxes:Z,setCurves:q,setOptions:K,getConfig:W,clear:Q,setAccTitle:R,getAccTitle:G,setDiagramTitle:P,getDiagramTitle:z,getAccDescription:F,setAccDescription:E},X=o(a=>{I(a,f);let{axes:t,curves:e,options:r}=a;f.setAxes(t),f.setCurves(e),f.setOptions(r)},"populate"),Y={parse:o(async a=>{let t=await S("radar",a);B.debug(t),X(t)},"parse")},tt=o((a,t,e,r)=>{let i=r.db,n=i.getAxes(),l=i.getCurves(),s=i.getOptions(),c=i.getConfig(),d=i.getDiagramTitle(),p=D(t),g=et(p,c),h=s.max??Math.max(...l.map(y=>Math.max(...y.entries))),m=s.min,$=Math.min(c.width,c.height)/2;at(g,n,$,s.ticks,s.graticule),rt(g,n,$,c),M(g,n,l,m,h,s.graticule,c),k(g,l,s.showLegend,c),g.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-c.height/2-c.marginTop)},"draw"),et=o((a,t)=>{let e=t.width+t.marginLeft+t.marginRight,r=t.height+t.marginTop+t.marginBottom,i={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return a.attr("viewbox",`0 0 ${e} ${r}`).attr("width",e).attr("height",r),a.append("g").attr("transform",`translate(${i.x}, ${i.y})`)},"drawFrame"),at=o((a,t,e,r,i)=>{if(i==="circle")for(let n=0;n<r;n++){let l=e*(n+1)/r;a.append("circle").attr("r",l).attr("class","radarGraticule")}else if(i==="polygon"){let n=t.length;for(let l=0;l<r;l++){let s=e*(l+1)/r,c=t.map((d,p)=>{let g=2*p*Math.PI/n-Math.PI/2,h=s*Math.cos(g),m=s*Math.sin(g);return`${h},${m}`}).join(" ");a.append("polygon").attr("points",c).attr("class","radarGraticule")}}},"drawGraticule"),rt=o((a,t,e,r)=>{let i=t.length;for(let n=0;n<i;n++){let l=t[n].label,s=2*n*Math.PI/i-Math.PI/2;a.append("line").attr("x1",0).attr("y1",0).attr("x2",e*r.axisScaleFactor*Math.cos(s)).attr("y2",e*r.axisScaleFactor*Math.sin(s)).attr("class","radarAxisLine"),a.append("text").text(l).attr("x",e*r.axisLabelFactor*Math.cos(s)).attr("y",e*r.axisLabelFactor*Math.sin(s)).attr("class","radarAxisLabel")}},"drawAxes");function M(a,t,e,r,i,n,l){let s=t.length,c=Math.min(l.width,l.height)/2;e.forEach((d,p)=>{if(d.entries.length!==s)return;let g=d.entries.map((h,m)=>{let $=2*Math.PI*m/s-Math.PI/2,y=L(h,r,i,c),A=y*Math.cos($),O=y*Math.sin($);return{x:A,y:O}});n==="circle"?a.append("path").attr("d",T(g,l.curveTension)).attr("class",`radarCurve-${p}`):n==="polygon"&&a.append("polygon").attr("points",g.map(h=>`${h.x},${h.y}`).join(" ")).attr("class",`radarCurve-${p}`)})}o(M,"drawCurves");function L(a,t,e,r){let i=Math.min(Math.max(a,t),e);return r*(i-t)/(e-t)}o(L,"relativeRadius");function T(a,t){let e=a.length,r=`M${a[0].x},${a[0].y}`;for(let i=0;i<e;i++){let n=a[(i-1+e)%e],l=a[i],s=a[(i+1)%e],c=a[(i+2)%e],d={x:l.x+(s.x-n.x)*t,y:l.y+(s.y-n.y)*t},p={x:s.x-(c.x-l.x)*t,y:s.y-(c.y-l.y)*t};r+=` C${d.x},${d.y} ${p.x},${p.y} ${s.x},${s.y}`}return`${r} Z`}o(T,"closedRoundCurve");function k(a,t,e,r){if(!e)return;let i=(r.width/2+r.marginRight)*3/4,n=-(r.height/2+r.marginTop)*3/4,l=20;t.forEach((s,c)=>{let d=a.append("g").attr("transform",`translate(${i}, ${n+c*l})`);d.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${c}`),d.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(s.label)})}o(k,"drawLegend");var it={draw:tt},st=o((a,t)=>{let e="";for(let r=0;r<a.THEME_COLOR_LIMIT;r++){let i=a[`cScale${r}`];e+=`
.radarCurve-${r} {
color: ${i};
fill: ${i};
fill-opacity: ${t.curveOpacity};
stroke: ${i};
stroke-width: ${t.curveStrokeWidth};
}
.radarLegendBox-${r} {
fill: ${i};
fill-opacity: ${t.curveOpacity};
stroke: ${i};
}
`}return e},"genIndexStyles"),nt=o(a=>{let t=H(),e=w(),r=v(t,e.themeVariables),i=v(r.radar,a);return{themeVariables:r,radarOptions:i}},"buildRadarStyleOptions"),lt=o(({radar:a}={})=>{let{themeVariables:t,radarOptions:e}=nt(a);return`
.radarTitle {
font-size: ${t.fontSize};
color: ${t.titleColor};
dominant-baseline: hanging;
text-anchor: middle;
}
.radarAxisLine {
stroke: ${e.axisColor};
stroke-width: ${e.axisStrokeWidth};
}
.radarAxisLabel {
dominant-baseline: middle;
text-anchor: middle;
font-size: ${e.axisLabelFontSize}px;
color: ${e.axisColor};
}
.radarGraticule {
fill: ${e.graticuleColor};
fill-opacity: ${e.graticuleOpacity};
stroke: ${e.graticuleColor};
stroke-width: ${e.graticuleStrokeWidth};
}
.radarLegendText {
text-anchor: start;
font-size: ${e.legendFontSize}px;
dominant-baseline: hanging;
}
${st(t,e)}
`},"styles"),ht={parser:Y,db:f,renderer:it,styles:lt};export{ht as diagram};
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
View File
@@ -0,0 +1 @@
import{_ as e,c as t,o as a}from"./app-CsTq_I9B.js";const n={};function r(o,c){return a(),t("div")}const i=e(n,[["render",r]]),s=JSON.parse('{"path":"/blog/","title":"博客","lang":"zh-CN","frontmatter":{"lang":"zh-CN","title":"博客","gitInclude":[],"draft":true},"readingTime":{"minutes":0,"words":0},"git":{},"filePathRelative":null,"headers":[],"type":"blog"}');export{i as comp,s as data};
File diff suppressed because one or more lines are too long
+33
View File
@@ -0,0 +1,33 @@
import{_ as i,c as a,a as e,o as n}from"./app-CsTq_I9B.js";const l={};function h(t,s){return n(),a("div",null,[...s[0]||(s[0]=[e(`<h2 id="第一部分-区块链平台运维" tabindex="-1"><a class="header-anchor" href="#第一部分-区块链平台运维"><span>第一部分:区块链平台运维</span></a></h2><h3 id="第1题-完成-fisco-bcos-区块链系统部署并验证" tabindex="-1"><a class="header-anchor" href="#第1题-完成-fisco-bcos-区块链系统部署并验证"><span>第1题:完成 FISCO BCOS 区块链系统部署并验证</span></a></h3><p><strong>【要求】</strong></p><p>登录 Linux 服务器,完成节点部署、启动、将过程结果截图,保存至做答题并点击提交。</p><p><strong>【任务】</strong></p><p>登录 Linux 服务器,进入指定操作目录(/root/tools)基于开发部署工具 build_chain.sh 脚本在本地搭建一条 4 节点的 FISCO BCOS 链。起始端口号为:30300,20200,8545。将节点 2 的端口号改为 30500,20400,8675。确保搭建的区块链系统能正常运行,并将执行的命令和完整的命令执行结果截图保存至作答区并点击提交。具体任务如下:</p><p><strong>【参考答案】</strong></p><p>使用 build_chain.sh 脚本搭建 FISCO BCOS 链:</p><p>默认的 -v 会从网络中下载 FISCO BCOS,这里本地已经有了,比赛的时候肯定是断网的,这里直接调用本地的即可</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-shell"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">bash</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> build_chain.sh</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -l</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">127.0.0.1:4</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -p</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 30300,20200,8545</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -e</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> ./fisco-bcos</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><img src="https://image.simengweb.com/blog/competition/BRICS2025-ST-132/20250930201715_253_27.png" alt="配置默认单机4节点"> 在创建完成之后,当前目录会出现一个 nodes 文件夹,这里面就是我们的每个节点的具体配置信息等等</p><p>这里推荐下载一个 tree 用来查看目录结构</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-shell"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">apt</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> install</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> tree</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">tree</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> nodes</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p></p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-"><span class="line"><span>nodes</span></span>
<span class="line"><span> 127.0.0.1</span></span>
<span class="line"><span> node0</span></span>
<span class="line"><span> ...</span></span>
<span class="line"><span> node1</span></span>
<span class="line"><span> ...</span></span>
<span class="line"><span> node2</span></span>
<span class="line"><span> ...</span></span>
<span class="line"><span> node3</span></span>
<span class="line"><span> ...</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p> node <code>conf/</code><code>log/</code><code>fisco-bcos/</code></p><p>2 30500,20400,8675</p><p><code>vim nodes/127.0.0.1/node2/config.ini</code></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark has-diff vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">rpc</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">]</span></span>
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> channel_listen_ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">0.0.0.0</span></span>
<span class="line diff remove"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> channel_listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">20202</span></span>
<span class="line diff add"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> channel_listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">20400</span></span>
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> jsonrpc_listen_ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">127.0.0.1</span></span>
<span class="line diff remove"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> jsonrpc_listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">8547</span></span>
<span class="line diff add"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> jsonrpc_listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">8675</span></span>
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> disable_dynamic_group</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">false</span></span>
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">p2p</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">]</span></span>
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> listen_ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">0.0.0.0</span></span>
<span class="line diff remove"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">30302</span></span>
<span class="line diff add"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">30500</span></span>
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> ;</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> nodes</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> to</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> connect</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.0</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30300</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.1</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30301</span></span>
<span class="line diff remove"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.2</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30302</span></span>
<span class="line diff add"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.2</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30500</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.3</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30303</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>2 [p2p] <code>node.2</code> </p><p> <code>nodes/127.0.0.1/</code> <code>bash start_all.sh</code> </p><p><img src="https://image.simengweb.com/blog/competition/BRICS2025-ST-132/20250930205309_254_27.png" alt=""></p><p><code>ss -tuln | grep -E &#39;30500|20400|8675&#39;</code></p><p></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">tcp</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> LISTEN</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 4096</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 127.0.0.1:8675</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">*</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">tcp</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> LISTEN</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 4096</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:30500</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">*</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">tcp</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> LISTEN</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 4096</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:20400</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">*</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p></p><ol><li><a href="https://fisco-doc.readthedocs.io/zh/latest/docs/installation.html" target="_blank" rel="noopener noreferrer"></a></li><li><a href="https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/manual/build_chain.html" target="_blank" rel="noopener noreferrer">(build_chain.sh)</a></li></ol><h3 id="2-webase-node-manager" tabindex="-1"><a class="header-anchor" href="#2-webase-node-manager"><span>2WeBASE-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;">&quot;</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;">&quot;</span></span>
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">export</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> PATH</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">$JAVA_HOME</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">/</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">bin</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">:</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">$PATH</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">source</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> ~/.bashrc</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p> <code>dist</code> Solidity v0.8.11.js v0.8.11.js ,WSL2 Windows Windows </p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">wget</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> https://github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v3.0.0/v0.8.11.js</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -O</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> static/static/js/v0.8.11.js</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p> <code>bash start.sh</code> WeBASE-Node-Manager </p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># /home/simeng/blockchain/WeBASE-Front/dist</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">bash</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> start.sh</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p> localhostForwarding <a href="https://notes.simengweb.com/article/operate-wsl2/#%E7%BD%91%E7%BB%9C%E7%9B%B8%E5%85%B3%E9%85%8D%E7%BD%AE" target="_blank" rel="noopener noreferrer">WSL2</a>,localhost访WSL2 访<a href="http://localhost:5002/WeBASE-Front" target="_blank" rel="noopener noreferrer">http://localhost:5002/WeBASE-Front</a></p>`,49)])])}const p=i(l,[["render",h]]),k=JSON.parse('{"path":"/article/2025-BR-BRICS-BC-App-Develop-Op-Sample-Q_A/","title":"2025 - ","lang":"zh-CN","frontmatter":{"title":"2025 - ","createTime":"2025/09/30 19:57:14","permalink":"/article/2025-BR-BRICS-BC-App-Develop-Op-Sample-Q&A/"},"readingTime":{"minutes":3.72,"words":1117},"git":{"createdTime":1759303270000,"updatedTime":1761565115000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":2,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"},{"name":"","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"}]},"filePathRelative":"blog/competition/BRICS2025-ST-132.md","headers":[],"_e":"$2b$13$CnmbjqzZPll8mDk9AlqYFOVVv1xaipyql.Rk6pEL8ZXwc59rzqfqC","categoryList":[{"id":"126ac9","sort":10000,"name":"blog"},{"id":"83ee8d","sort":10002,"name":"competition"}]}');export{p as comp,k as data};
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{_ as r,c as a,a as n,o as t}from"./app-CsTq_I9B.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&amp;platform=java_1_20&amp;dimension=overworld&amp;x=-119&amp;z=881&amp;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};
+13
View File
@@ -0,0 +1,13 @@
import{_ as i,c as e,a,o as n}from"./app-CsTq_I9B.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 = &quot;conf/gm/gmensdk.key&quot; # 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>
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># 请确保这里的连接地址都有节点</span></span>
<span class="line highlighted warning"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">peers</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">[</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">127.0.0.1:20200</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">,</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">127.0.0.1:20201</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">] </span><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># The peer list to connect</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># Configure a private topic as a topic message sender.</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p> Console </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:#A65E2B;--shiki-dark:#C99076;"> -r</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;"> 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>bash start.sh</code> Console <img src="https://image.simengweb.com/notes/ops/blockchain/practice/console-operator/2025-10-03-161500.png" alt="Console"></p><h2 id="" tabindex="-1"><a class="header-anchor" href="#"><span></span></a></h2><p></p><h3 id="" tabindex="-1"><a class="header-anchor" href="#"><span></span></a></h3><h3 id="" tabindex="-1"><a class="header-anchor" href="#"><span></span></a></h3><ul><li><code>getBlockNumber</code></li></ul><div class="code-block-title" data-title="output_example"><div class="code-block-title-bar"><span class="title">output_example</span></div><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:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">group:1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">]</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> getBlockNumber </span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">0</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></div><ul><li><code>getSealerList</code></li></ul><div class="code-block-title" data-title="output_example"><div class="code-block-title-bar"><span class="title">output_example</span></div><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:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">group:1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">]</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">&gt;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> getSealerList </span></span>
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span></span>
<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> d036a22f16909cba4c8521cd3c31db3be381e673c9749e3fd2848ab25eca134ef917cb9306f41893295c535078bce77bdc241eba3f92549a73efe4699d3c0df8,</span></span>
<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> f0535616759000b473a285d60814bc2c5927a9cb897644da46890de71e59df590cd6fe1b226a95e19a566b6fc127fd85032de0d9fdd3d529e5e50cd96ad51f28</span></span>
<span class="line"><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 class="line-number"></div><div class="line-number"></div></div></div></div>`,18)])])}const p=i(l,[["render",t]]),c=JSON.parse('{"path":"/ops/blockchain/practice/console-operator/","title":"Console ","lang":"zh-CN","frontmatter":{"title":"Console ","createTime":"2025/10/03 02:55:49","permalink":"/ops/blockchain/practice/console-operator/"},"readingTime":{"minutes":1.15,"words":344},"git":{"createdTime":1759656932000,"updatedTime":1759656932000,"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/console-operator.md","headers":[]}');export{p as comp,c as data};
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{_ as a,c as t,a as n,o as r}from"./app-CsTq_I9B.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>区块链就像是一本神奇的共享账本哦~它由许许多多的&quot;区块&quot;连接而成,每个区块里都记录着各种交易信息~最特别的是,这本账本不是由某一个人或组织保管的,而是由网络里的所有人一起维护呢~</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
View File
@@ -0,0 +1 @@
import{_ as e,c as t,o as a}from"./app-CsTq_I9B.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};
+1
View File
@@ -0,0 +1 @@
import{_ as e,c as i,a as r,o as l}from"./app-CsTq_I9B.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};
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More