当前位置: 首页 > news >正文

Fisco Bcos学习 - 搭建星形拓扑组网

文章目录

    • 一、前言
    • 二、环境准备与依赖安装
      • 2.1 系统要求
      • 2.2 依赖安装
    • 三、星形拓扑设计与节点规划
    • 四、使用build_chain.sh构建星形拓扑
      • 4.1 创建操作目录并获取脚本
      • 4.2 生成星形拓扑配置文件
      • 4.3 执行构建命令
      • 4.4 查看生成的节点文件
    • 五、启动节点与共识验证
      • 5.1 启动所有节点
      • 5.2 查看群组共识状态
    • 六、配置控制台与交易验证
      • 6.1 获取并配置控制台
      • 6.2 配置控制台连接信息
      • 6.3 启动控制台并发送交易
      • 6.4 查看交易日志
    • 七、节点加入群组操作
      • 7.1 准备节点配置
      • 7.2 获取节点ID
      • 7.3 通过控制台添加节点
      • 7.4 验证新节点共识情况
    • 停止节点

一、前言

在区块链技术的实际应用中,组网拓扑结构的选择直接影响系统的性能、安全性和可扩展性。星形拓扑作为一种常见的组网方式,其核心特点是存在一个中心节点,该节点同时属于多个群组,而其他节点则分别属于不同的群组。这种结构特别适合于存在中心机构的业务场景,例如金融领域中的多方协作系统,其中中心机构需要参与多个业务群组的共识,而其他机构则仅参与各自相关的群组。

FISCO BCOS作为企业级联盟链平台,对星形拓扑提供了良好的支持。本文将详细记录如何使用FISCO BCOS搭建一个典型的星形拓扑区块链网络,包括环境准备、节点配置、启动验证等完整流程。

二、环境准备与依赖安装

在搭建星形拓扑区块链之前,需要先准备好运行环境并安装必要的依赖软件。FISCO BCOS对运行环境的要求如下:

2.1 系统要求

  • CentOS/Ubuntu/Mac OS等主流操作系统
  • Java 8及以上版本(用于控制台)
  • 足够的磁盘空间和内存(根据节点数量和业务需求调整)

2.2 依赖安装

使用以下命令安装必要的依赖软件:

# CentOS系统
$ sudo yum install -y openssl curl# Ubuntu系统
$ sudo apt install -y openssl curl# Mac OS系统
$ brew install openssl curl

三、星形拓扑设计与节点规划

本次实践将搭建一个典型的星形拓扑区块链网络,具体规划如下:

  • 中心机构(agencyA):在127.0.0.1上部署2个节点,同时属于group1、group2、group3三个群组
  • 机构B(agencyB):在127.0.0.1上部署2个节点,仅属于group1群组
  • 机构C(agencyC):在127.0.0.1上部署2个节点,仅属于group2群组
  • 机构D(agencyD):在127.0.0.1上部署2个节点,仅属于group3群组

注意:在实际应用场景中,不建议将多个节点部署在同一台机器上,应根据机器负载选择合适的节点部署方式。中心节点由于需要参与多个群组的共识,负载较高,建议单独部署在性能较好的机器上。

四、使用build_chain.sh构建星形拓扑

FISCO BCOS提供了便捷的build_chain.sh脚本,用于快速构建区块链节点配置。以下是构建星形拓扑的详细步骤:

4.1 创建操作目录并获取脚本

# 创建fisco目录并进入
$ mkdir -p ~/fisco && cd ~/fisco# 下载build_chain.sh脚本并赋予执行权限
$ curl -LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.4.1/build_chain.sh && chmod u+x build_chain.sh

4.2 生成星形拓扑配置文件

首先需要创建一个配置文件,定义各个机构的节点分布和所属群组:

# 生成配置文件ipconf
$ cat > ipconf << EOF
127.0.0.1:2 agencyA 1,2,3
127.0.0.1:2 agencyB 1
127.0.0.1:2 agencyC 2
127.0.0.1:2 agencyD 3
EOF# 查看配置文件内容
$ cat ipconf

配置文件中的每行参数含义如下:

  • ip:num:物理机IP及该机器上的节点数目
  • agency_name:机构名称
  • group_list:节点所属的群组列表,多个群组用逗号分隔

4.3 执行构建命令

# 执行build_chain.sh脚本构建星形拓扑
$ bash build_chain.sh -f ipconf -p 30300,20200,8545

执行上述命令后,脚本将自动生成所需的节点配置文件、证书和密钥等。构建过程中会显示各个机构和节点的处理信息,完成后会输出详细的构建结果:

==============================================================
[INFO] FISCO-BCOS Path   : ./bin/fisco-bcos
[INFO] IP List File      : ipconf
[INFO] Start Port        : 30300 20200 8545
[INFO] Server IP         : 127.0.0.1:2 127.0.0.1:2 127.0.0.1:2 127.0.0.1:2
[INFO] State Type        : storage
[INFO] RPC listen IP     : 127.0.0.1
[INFO] Output Dir        : /home/ubuntu16/fisco/nodes
[INFO] CA Key Path       : /home/ubuntu16/fisco/nodes/cert/ca.key
==============================================================
[INFO] All completed. Files in /home/ubuntu16/fisco/nodes

4.4 查看生成的节点文件

构建完成后,节点文件将存储在nodes目录下,目录结构如下:

nodes
|-- 127.0.0.1
|   |-- fisco-bcos
|   |-- node0
|   |   |-- conf  # 节点配置目录
|   |   |   |-- ca.crt
|   |   |   |-- group.1.genesis
|   |   |   |-- group.1.ini
|   |   |   |-- group.2.genesis
|   |   |   |-- group.2.ini
|   |   |   |-- group.3.genesis
|   |   |   |-- group.3.ini
|   |   |   |-- node.crt
|   |   |   |-- node.key
|   |   |   `-- node.nodeid  # 节点ID信息
|   |   |-- config.ini  # 节点配置文件
|   |   |-- start.sh  # 节点启动脚本
|   |   `-- stop.sh   # 节点停止脚本
|   |-- node1
|   |   |-- conf
|   |   ...

五、启动节点与共识验证

5.1 启动所有节点

进入节点目录并使用提供的脚本启动所有节点:

# 进入节点目录
$ cd ~/fisco/nodes/127.0.0.1# 启动所有节点
$ bash start_all.sh# 查看节点进程
$ ps aux | grep fisco-bcos

5.2 查看群组共识状态

节点启动后,可以通过日志查看各个群组的共识情况。正常共识的节点会输出+++日志,其中包含群组ID、区块高度、交易数量等信息:

# 查看node0在group1的共识情况
$ tail -f node0/log/* | grep "g:1.*++"
info|2019-02-11 15:33:09.914042| [g:1][p:264][CONSENSUS][SEALER]++++++++Generating seal on,blkNum=1,tx=0,nodeIdx=2,hash=72254a42....# 查看node0在group2的共识情况
$ tail -f node0/log/* | grep "g:2.*++"
info|2019-02-11 15:33:31.021697| [g:2][p:520][CONSENSUS][SEALER]++++++++Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=ef59cf17...# 查看node3在group1的共识情况
$ tail -f node3/log/*| grep "g:1.*++"
info|2019-02-11 15:39:43.927167| [g:1][p:264][CONSENSUS][SEALER]++++++++Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=5e94bf63...

六、配置控制台与交易验证

6.1 获取并配置控制台

控制台是FISCO BCOS提供的重要工具,用于与区块链节点交互,实现合约部署、交易发送等功能:

# 回到fisco目录
$ cd ~/fisco# 获取控制台
$ curl -LO https://github.com/FISCO-BCOS/console/releases/download/v1.0.9/download_console.sh && bash download_console.sh# 进入控制台目录
$ cd console# 拷贝节点证书到控制台配置目录
$ cp ~/fisco/nodes/127.0.0.1/sdk/* conf/# 获取节点的channel_listen_port
$ grep "channel_listen_port" ~/fisco/nodes/127.0.0.1/node*/config.ini

6.2 配置控制台连接信息

创建控制台配置文件conf/applicationContext.xml,配置连接到各个群组的节点信息:

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.5.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.5.xsd"><bean id="encryptType" class="org.fisco.bcos.web3j.crypto.EncryptType"><constructor-arg value="0"/> <!-- 0:standard 1:guomi --></bean><bean id="groupChannelConnectionsConfig" class="org.fisco.bcos.channel.handler.GroupChannelConnectionsConfig"><property name="allChannelConnections"><list><bean id="group1"  class="org.fisco.bcos.channel.handler.ChannelConnections"><property name="groupId" value="1" /><property name="connectionsStr"><list><value>127.0.0.1:20200</value></list></property></bean><bean id="group2"  class="org.fisco.bcos.channel.handler.ChannelConnections"><property name="groupId" value="2" /><property name="connectionsStr"><list><value>127.0.0.1:20200</value></list></property></bean><bean id="group3"  class="org.fisco.bcos.channel.handler.ChannelConnections"><property name="groupId" value="3" /><property name="connectionsStr"><list><value>127.0.0.1:20200</value></list></property></bean></list></property></bean><bean id="channelService" class="org.fisco.bcos.channel.client.Service" depends-on="groupChannelConnectionsConfig"><property name="groupId" value="1" /><property name="orgID" value="fisco" /><property name="allChannelConnections" ref="groupChannelConnectionsConfig"></property></bean>
</beans>

6.3 启动控制台并发送交易

# 启动控制台
$ bash start.sh# 向group1发送交易,部署HelloWorld合约
[group:1]> deploy HelloWorld
contract address:0x8c17cf316c1063ab6c89df875e96c9f0f5b2f744# 查看group1区块高度
[group:1]> getBlockNumber
1# 切换到group2并发送交易
[group:1]> switch 2
Switched to group 2.
[group:2]> deploy HelloWorld
contract address:0x8c17cf316c1063ab6c89df875e96c9f0f5b2f744
[group:2]> getBlockNumber
1# 切换到group3并发送交易
[group:2]> switch 3
Switched to group 3.
[group:3]> deploy HelloWorld
contract address:0x8c17cf316c1063ab6c89df875e96c9f0f5b2f744
[group:3]> getBlockNumber
1

6.4 查看交易日志

通过查看节点日志,可以确认交易是否成功上链:

# 查看group1出块情况
$ cat node0/log/* |grep "g:1.*Report"
info|2019-02-11 16:08:45.077484| [g:1][p:264][CONSENSUS][PBFT]^^^^^^^^Report,num=1,sealerIdx=1,hash=9b5487a6...,next=2,tx=1,nodeIdx=2# 查看group2出块情况
$ cat node0/log/* |grep "g:2.*Report"
info|2019-02-11 16:11:55.354881| [g:2][p:520][CONSENSUS][PBFT]^^^^^^^^Report,num=1,sealerIdx=0,hash=434b6e07...,next=2,tx=1,nodeIdx=0# 查看group3出块情况
$ cat node0/log/* |grep "g:3.*Report"
info|2019-02-11 16:14:33.930978| [g:3][p:776][CONSENSUS][PBFT]^^^^^^^^Report,num=1,sealerIdx=1,hash=3a42fcd1...,next=2,tx=1,nodeIdx=2

七、节点加入群组操作

在星形拓扑中,有时需要将新节点加入到已有的群组中。以下是将node2节点加入到group2群组的详细步骤:

7.1 准备节点配置

# 进入节点目录
$ cd ~/fisco/nodes/127.0.0.1# 从node0拷贝group2的配置到node2
$ cp node0/conf/group.2.* node2/conf# 重启node2
$ cd node2 && bash stop.sh && bash start.sh

7.2 获取节点ID

# 获取node2的节点ID
$ cat conf/node.nodeid
6dc585319e4cf7d73ede73819c6966ea4bed74aadbbcba1bbb777132f63d355965c3502bed7a04425d99cdcfb7694a1c133079e6d9b0ab080e3b874882b95ff4

7.3 通过控制台添加节点

# 启动控制台并连接到group2
$ cd ~/fisco/console && bash start.sh 2# 查看当前group2的共识节点列表
[group:2]> getSealerList# 添加node2到共识节点
[group:2]> addSealer 6dc585319e4cf7d73ede73819c6966ea4bed74aadbbcba1bbb777132f63d355965c3502bed7a04425d99cdcfb7694a1c133079e6d9b0ab080e3b874882b95ff4# 再次查看共识节点列表,确认node2已加入
[group:2]> getSealerList

7.4 验证新节点共识情况

# 查看node2在group2的共识日志
$ tail -f node2/log/* | grep "g:2.*++"
info|2019-02-11 18:41:31.625599| [g:2][p:520][CONSENSUS][SEALER]++++++++Generating seal on,blkNum=4,tx=0,nodeIdx=1,hash=c8a1ed9

停止节点

# 回到节点目录 && 停止节点
$ cd ~/fisco/nodes/127.0.0.1 && bash stop_all.sh

相关文章:

Fisco Bcos学习 - 搭建星形拓扑组网

文章目录 一、前言二、环境准备与依赖安装2.1 系统要求2.2 依赖安装 三、星形拓扑设计与节点规划四、使用build_chain.sh构建星形拓扑4.1 创建操作目录并获取脚本4.2 生成星形拓扑配置文件4.3 执行构建命令4.4 查看生成的节点文件 五、启动节点与共识验证5.1 启动所有节点5.2 查…...

深度学习入门--(二)感知机

一.感知机是什么 简单的输入和输出&#xff0c;感觉&#xff08;输入&#xff09;&#xff0c;知道&#xff08;输出&#xff0c;作出反应&#xff09; 二.简单逻辑电路 2.1与门 import numpy as np #AND def AND(X1,X2):w1,w2,thera0.5,0.5,0.7tmpX1*w1X2*w2if tmp>the…...

LeetCode 3298.统计重新排列后包含另一个字符串的子字符串数目2

给你两个字符串 word1 和 word2 。 如果一个字符串 x 重新排列后&#xff0c;word2 是重排字符串的 前缀 &#xff0c;那么我们称字符串 x 是 合法的 。 请你返回 word1 中 合法 子字符串 的数目。 注意 &#xff0c;这个问题中的内存限制比其他题目要 小 &#xff0c;所以你…...

【nRF52832】【环境搭建 1】【ubuntu下搭建nRF52832开发环境】

本文讲述如何在 ubuntu 22.04 下开发 nRF52832. host 环境说明: $ uname -a Linux leo 6.8.0-60-generic #63~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Apr 22 19:00:15 UTC 2 x86_64 x86_64 x86_64 GNU/Linux1. 安装软件 sudo apt install gcc-arm-none-eabisudo apt-get i…...

Django

1. Django 和 Tornado 的关系 Django 是一个高级 Python Web 框架&#xff0c;它鼓励快速开发和干净、实用的设计。Django 遵循 MVC&#xff08;模型-视图-控制器&#xff09;设计模式的一个变种&#xff0c;称为 MTV&#xff08;模型-模板-视图&#xff09;。Django 框架提供…...

51c嵌入式~CAN~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/14016935 一、CAN总线常见信号干扰问题 定位干扰原因 当总线有干扰时&#xff0c;有经验的工程师能够迅速定位&#xff0c;但是对于新手来说却很麻烦。 造成总线干扰的原因有很多&#xff0c;比如通过电磁辐射耦合到通…...

【iOS】iOS崩溃总结

【iOS】iOS崩溃总结 一、前言 之前写了一篇博文《【Flutter】程序报错导致的灰屏总结》&#xff0c;浏览量、收藏率和点赞量还挺高&#xff0c;还被收录了&#xff0c;就想着总结一下iOS崩溃&#xff0c;这个也是在iOS面试中经常被问到的。 在 iOS 开发过程中&#xff0c;导致…...

npm 报错:“无法加载文件 ...npm.ps1,因为在此系统上禁止运行脚本” 解决方案(附执行策略说明)

在使用 npm 命令时&#xff0c;部分 Windows 用户可能会遇到如下错误&#xff1a; npm : 无法加载文件 D:\nvm4w\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https://go.microsoft.com/fwlink/?LinkID135170 中的 about_Executi…...

AES加密:为你的PDF文档加上一道钢铁防线

在数字化时代&#xff0c;确保敏感数据的安全性至关重要。加密技术在保护信息免受未经授权访问方面起着关键作用。而在众多加密标准中&#xff0c;AES&#xff08;高级加密标准&#xff09;因其强大的安全性和广泛的应用而脱颖而出。那么&#xff0c;AES加密如何应用到PDF文档中…...

2025学年湖北省职业院校技能大赛 “信息安全管理与评估”赛项 样题卷(一)

2025学年湖北省职业院校技能大赛 “信息安全管理与评估”赛项 样题卷&#xff08;一&#xff09; 第一部分&#xff1a;网络平台搭建与设备安全防护任务书DCRS:DCFW:DCWS:WAF: 第二部分&#xff1a;网络安全事件响应、数字取证调查、应用程序安全任务书任务 1&#xff1a;应急响…...

1688商品发布API:自动化上架与信息同步

一、1688商品发布API的核心功能与技术架构 1.1 API功能全景 1688商品发布API是1688开放平台的核心组件之一&#xff0c;支持商品信息的自动化发布、编辑、上下架及库存同步。其核心功能包括&#xff1a; 商品信息管理&#xff1a;支持商品标题、描述、价格、库存、SKU&#…...

鸿蒙ArkUI---基础组件Tabs(Tabbar)

基础页面组件 Tabs 作用&#xff1a; 快速创建Tabbar 个人理解&#xff1a; 快速的创建Tabar。 效果图&#xff1a; 代码&#xff1a;interface TabItem {icon: Resource; //未选中activeIcon: Resource; //选中name: string; //文字 }Entry Component struct Index {// st…...

50. Pow(x, n)快速幂算法

实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即&#xff0c;xn &#xff09;。此函数应将 x 作为浮点数&#xff08;意味着它可以是十进制数&#xff09;和 n 作为整数&#xff08;可以是正数、负数或零&#xff09;一起使用。 快速幂&#xff08;Expo…...

Python函数

三.函数进阶 0.定义 函数三要素&#xff1a;函数名&#xff0c;参数&#xff0c;返回值&#xff0c;其中只有函数名是必须要的&#xff0c;参数&#xff0c;返回值可以没有 语法&#xff1a; def 函数名&#xff08;参数&#xff09;&#xff1a; 函数体 return 返回值 1.…...

7.Spring框架

# spring框架Spring3.0开启了纯注解开发模式&#xff0c;使用Java类替代配置文件&#xff0c;开启了Spring快速开发赛道## 为什么要使用 **Spring** 框架&#xff1f;​ Spring 是一个轻量级应用框架&#xff0c;它提供了 IoC 和 AOP 这两个核心的功能。它的核心目的是为了…...

计算机网络-----详解HTTP协议

✏️1. 什么是HTTP HTTP (全称为 “超⽂本传输协议”) 是⼀种应⽤⾮常⼴泛的应⽤层协议&#xff08;所谓 “超⽂本” 的含义, 就是传输的内容不仅仅是⽂本(⽐如 html, css 这个就是⽂本), 还可以是⼀些其他的资源, ⽐如图⽚, 视频, ⾳频等⼆进制的数据&#xff09;。 HTTP 诞⽣…...

解决npm安装依赖报错ERESOLVE unable to resolve dependency tree

在使用 npm 安装项目依赖时&#xff0c;有时会遇到错误信息 “npm ERR! code ERESOLVE”&#xff0c;该错误通常发生在依赖版本冲突或者依赖解析问题时。本文将详细介绍出现这个错误的原因&#xff0c;并提供解决方法&#xff0c;确保正确安装项目依赖并避免该错误的发生。 一…...

微信小程序安卓手机输入框文字飘出输入框

最近在开发微信小程序遇到一个问题&#xff0c;安卓手机输入框文字飘出输入框&#xff0c;但是ios系统的手机则正常。 使用情景&#xff1a;做了一个弹窗&#xff0c;弹窗内是表单&#xff0c;需要填写一些信息&#xff0c;但是在填写信息时光标不显示&#xff0c;输入的内容飘…...

python网络自动化-数据格式与数据建模语言

数据格式 在Python网络运维自动化最基本是JSON、YAML和XML这3种数据格式。除了这3种常用的数据格式&#xff0c;还有一种深受网络工程师喜爱且在网络运维自动化中常用的数据承载方式——表格 需要注意的是JSON的键必须用双引号包裹&#xff0c;JSON的对象数据键值对的值和数组…...

C++ 中的 atan2 函数:深入解析与应用

在 C 编程中&#xff0c;数学计算是许多应用场景的核心&#xff0c;例如几何问题、物理模拟和游戏开发等。atan2 函数作为数学库中的一个重要工具&#xff0c;提供了比普通反正切函数更强大的功能。本文将深入解析 atan2 函数的原理、使用方法以及实际应用场景&#xff0c;并通…...

云计算-Azure Functions :构建事件驱动的云原生应用报告

云计算导论 课程研究报告 Azure Functions &#xff1a;构建事件驱动的云原生应用 摘要&#xff1a; Azure Functions 是一种无服务器解决方案&#xff0c;是由微软 Azure 平台提供的&#xff0c;可以使用户专注于业务逻辑&#xff0c;减少代码的编写&#xff0c;减少需要维护…...

【笔记——李沐动手学深度学习】2.3 线性代数

2.3.1 标量 标量由只有一个元素的张量表示。 下面的代码将实例化两个标量&#xff0c;并执行一些熟悉的算术运算&#xff0c;即加法、减、乘法、除法和指数。 2.3.2 向量 人们通过一维张量表示向量。一般来说&#xff0c;张量可以具有任意长度&#xff0c;取决于机器的内存限…...

多个 Job 并发运行时共享配置文件导致上下文污染,固化 Jenkins Job 上下文

基于 context.py 固化 Jenkins Job 上下文的完整方案&#xff0c;适用于你当前的工作流&#xff08;Python Jenkins Pipeline&#xff09;&#xff0c;解决&#xff1a; 多个 Job 并发运行时共享配置文件导致上下文污染&#xff1b;读取环境变量或 JSON 文件时被其他 Job 修改…...

github 上的php项目

github 上的php项目 项目的网址 &#xff08;Loong1996/LikeGirlSite: 情侣网站、情侣网页、恋爱记录网站&#xff09; # 修改 # admin/Config_DB.php//localhost 为数据库地址 一般使用默认的即可 或&#xff08;127.0.0.1&#xff09; $db_address "mysql_php";/…...

防火墙快速管理软件,66K超小巧

软件介绍 今天为大家推荐一款轻量级的Windows防火墙管理工具&#xff0c;这款工具能帮助用户快速开启或关闭系统防火墙功能&#xff0c;操作比系统原生设置更加便捷高效。 软件优势 相比通过系统设置层层点击的操作方式&#xff0c;这款仅66KB大小的微型工具只需单击按钮…...

入门级STM32F103C8T6无人机遥控(原理图)

一、STM32主控电路 一、STM32 主控电路 把 STM32 想象成 “机器人的大脑”&#xff0c;核心电路是 “大脑的基础保障”&#xff1a;让大脑有电、有心跳&#xff08;时钟 &#xff09;、能复活&#xff08;复位 &#xff09;。 1. 电源引脚&#xff08;VDD、VDDA、VSS 等 &#…...

无人机灯光驱动模块技术解析

一、运行方式 1. 核心流程&#xff1a; 指令接收&#xff1a;灯光控制模块通过无线通信链路&#xff08;如WiFi, 数传电台&#xff0c;或专用的表演控制链路&#xff09;接收来自地面站或中央控制系统的灯光指令。指令包含&#xff1a;颜色&#xff08;RGB/RGBW值&#xff0…...

React + Umi(Umijs/Max) 搭建项目及配置

文章标题 01 环境准备02 快速构建2.1 参数选项2.2 umix 还是 umijs/max2.3 使用 pnpm &#xff08;推荐&#xff09;2.4 使用 npm 和 yarn2.5 启动项目2.6 启用 Prettier&#xff08;可选&#xff09;2.7 打包部署发布 03 Tailwind CSS 插件&#xff08;可选&#xff09;3.1 安…...

React 第六十四节Router中HashRouter的使用详细介绍及案例分析

前言 HashRouter 是 React Router 提供的一种路由实现方案&#xff0c;它使用 URL 的 hash 部分&#xff08;# 后面的内容&#xff09;来实现客户端路由功能。 一、HashRouter 的核心用途 客户端路由&#xff1a;在不刷新页面的情况下管理应用导航兼容性&#xff1a;支持不支…...

Linux RDMA网络配置手册

一、配置前准备工作 在进行 RDMA 网络配置之前&#xff0c;请确保以下准备工作已完成&#xff1a; 硬件环境 确保服务器支持 RDMA 功能&#xff0c;例如支持 InfiniBand 或 RoCE&#xff08;RDMA over Converged Ethernet&#xff09;的网卡。确保网络交换设备支持 RDMA 协议…...

sentinel与seata组件在微服务中的基本作用

微服务基础内容&#xff1a; 在微服务中&#xff0c;首先学习了微服务的横向拆分与纵向拆分&#xff0c;纵向拆分指按照功能拆分模块&#xff0c;横向拆分指将高复用的模块单独拆分&#xff0c;使纵向拆分的模块去调用这部分内容。 学习了基本拆分后&#xff0c;需要知道微服…...

Springboot 集成多数据源pgSql+mysql,启动报错

一.错误信息&#xff1a; 2025-06-25 20:25:50.870 ERROR [ai-manage-center,,] --- [ruid-ConnectionPool-Create-1057240219] DruidDataSource : create connection SQLException, url: jdbc:postgresql://10.10.60.227:5432/ai_dify1?sslmodedisable&currentSchemapub…...

南宫28NG相信品牌力量/Vue 3 中的组合式 API(Composition API)进阶实战

南宫28NG相信品牌力量【罔丨止&#xff1a;MGTY.PW】 点击此处复制到浏览器打开 随着 Vue 3 的普及&#xff0c;Composition API 已成为现代 Vue 开发的主流。本节我们将深入掌握组合式 API 的进阶用法&#xff0c;涵盖响应式工具、生命周期钩子封装、自定义逻辑抽离等关键技术…...

实战使用 Docker Compose 搭建 Redis Cluster 集群

文章目录 前言技术积累Docker Compose简介Redis Cluster简介Redis Cluster 解决的问题 实战演示部署环境创建目录编写Redis配置文件编写Docker-Compose.yml执行yml文件&#xff0c;启动容器查看容器状态创建集群验证集群集群数据验证 总结 前言 随着互联网技术的发展&#xff…...

Tauri(2.5.1)+Leptos(0.8.2)开发自用桌面小程序--DeepSeek辅助编程(俄罗斯方块)

在之前工作基础上&#xff08;Tauri(2.5.1)Leptos(0.8.2)开发自用桌面小程序-CSDN博客&#xff09;&#xff0c;继续进行自用桌面小程序的开发&#xff0c;这次完全使用DeepSeek辅助编程做一个俄罗斯方块游戏&#xff0c;大部分代码由DeepSeek自主完成&#xff0c;Bug扔给DeepS…...

flex布局实例:把色子放进盒子里

目录 一、flex布局实例&#xff1a;把色子放进盒子里 1、基础样式 二、justify-content 属性 三、flex-direction 属性 四、align-items 属性 五、flex-wrap 属性 二、flex布局应用到常见场景 非常详细的讲解flex布局&#xff0c;看一看&#xff0c;练一练&#xff01; …...

【启发式算法】RRT*算法详细介绍(Python)

&#x1f4e2;本篇文章是博主人工智能&#xff08;AI&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…...

基于R语言的亚组分析与森林图绘制1

亚组分析是临床研究中的重要分析方法,其核心是通过将研究对象按基线特征(如年龄、性别或吸烟状况等)划分为不同亚组,进而评估干预措施或暴露因素在各亚组中对结局影响的差异性。 在亚组分析中,交互作用(P for interaction)是关键指标,用于判断干预措施或暴露因素与亚组…...

idea, CreateProcess error=206, 文件名或扩展名太长

idea, CreateProcess error206, 文件名或扩展名太长 解决 “CreateProcess error206, 文件名或扩展名太长” 错误 CreateProcess error206 是 Windows 系统特有的错误&#xff0c;表示命令行参数超出了 Windows 的 32767 字符限制。这个问题在 Java 开发中尤其常见&#xff0c…...

aspose.word在IIS后端DLL中高并发运行,线程安全隔离

aspose.word在IIS后端DLL中运行,加载很慢,如何为全部用户加载,再每个用户访问时在各自线程中直接可以打开WORD文件处理 Aspose.Words 在 IIS 中优化加载性能方案 针对 Aspose.Words 在 IIS 后端 DLL 中加载缓慢的问题&#xff0c;我们可以通过单例模式预加载组件并结合线程安…...

day042-负载均衡与web集群搭建

文章目录 0. 老男孩思想-面试官问&#xff1a;你对加班的看法?1. 负载均衡2. 搭建负载均衡的WordPress集群2.1 负载均衡服务器2.2 配置web服务器2.3 测试 踩坑记录1. /var/cache/nginx权限问题 0. 老男孩思想-面试官问&#xff1a;你对加班的看法? 互联网公司没有不加班的&a…...

DuDuTalk | 武汉赛思云科技有限公司通过武汉市人工智能企业认定!

近日&#xff0c;2025年武汉市人工智能企业名单正式公布&#xff01;武汉赛思云科技有限公司&#xff08;以下简称赛思云科技&#xff09;凭借卓越的技术实力与创新成果&#xff0c;成功入选武汉市人工智能企业。这是对公司长期深耕AI语音智能领域、推动数字化转型的高度认可&a…...

Tita CRM飞书协同版:解锁企业销售与交付管理新效能

数字化转型的破局之道 在数字经济加速发展的今天&#xff0c;传统管理模式正面临前所未有的挑战&#xff1a; • 销售过程缺乏可视化管控手段 • 项目执行存在严重的信息孤岛 • 跨部门协作效率持续低下 • 绩效考核缺乏客观数据支撑 Tita CRM作为专业的智能化管理平台&#x…...

web安全之h2注入系统学习

起初是在N1 Junior 2025 上面碰到一题&#xff0c;考点是h2的sql注入。由于之前没有见过&#xff0c;趁此机会系统学习一番 实验代码 public class H2Inject {public static void main(String[] args) throws Exception{JdbcDataSource dataSource new JdbcDataSource();dataS…...

LVS-DR负载均衡群集深度实践:高性能架构设计与排障指南

目录 一、核心原理与理论 二、背景与架构设计 三、全流程部署步骤 1. NFS共享存储配置&#xff08;192.168.7.100&#xff09; 2. Real Server节点配置&#xff08;四台服务器&#xff09; 3. Director服务器配置 四、常见问题解决方案 五、生产环境总结 拓扑示意图&am…...

Java如何导出word(根据模板生成),通过word转成pdf,放压缩包

<!-- 导出word文档所需依赖--><dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.10.0-beta</version></dependency><dependency><groupId>org.apache.poi</gr…...

.NET 7.0 EF Core:一、创建Web API 项目基础框架和用户表的增删改查

demo 地址: https://github.com/iotjin/Jh.Admin.NETCore 代码不定时更新&#xff0c;请前往github查看最新代码 .NET 7.0 EF Core&#xff1a;一、创建Web API项目 官方教程序一、项目目录结构各层职责说明1️⃣ Admin.NETCore.API&#xff08;接口层&#xff09;2️⃣ Admin.…...

一篇文章了解XML

一、什么是 XML&#xff1f; XML 是一种结构化数据的标记语言&#xff0c;用来存储、传输和描述数据。 它和 HTML 很像&#xff0c;但它的标签是自定义的&#xff0c;不限定格式和外观&#xff0c;而是强调数据的结构和含义。 XML不是用来展示数据的&#xff0c;HTML是用来展…...

Windows下安装zookeeper

有关Linux安装zk的文章可以参考下我之前写的&#xff1a; Zookeeper 3.8.4 安装和参数解析 Windows下的下载和Linux是一样的&#xff0c;都是同一个包&#xff0c;目前zk稳定版是 3.8.4 下载解压后 在根目录下创建 data 文件夹用来存放数据文件 在 conf 文件夹中&#xff0c;…...

计算机网络 网络层:控制平面

在本章中&#xff0c;包含网络层的控制平面组件。控制平面作为一种网络范围的逻辑&#xff0c;不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报&#xff0c;而且控制网络层组件和服务如何配置和管理。5.2节&#xff0c;传统的计算图中最低开销路径的路由选…...