FISCO BCOS群组扩容实战指南:从原理到操作全解析
引言:为什么需要群组扩容?
在区块链技术迅猛发展的今天,企业级应用对区块链平台提出了更高的要求。"如何在不影响现有业务的情况下扩展区块链处理能力?"、"能否实现不同业务数据的物理隔离?"、"怎样灵活调整区块链资源分配?"——这些问题困扰着许多区块链开发者。FISCO BCOS独创的群组架构正是解决这些问题的金钥匙,它允许在同一链上创建多个独立的群组,每个群组拥有独立的账本和共识,实现资源的逻辑隔离和灵活扩容
一、群组扩容基础概念
1.1 什么是群组架构?
FISCO BCOS的群组架构是其区别于其他区块链平台的核心特性之一,具有以下特点:
- 逻辑隔离:不同群组拥有独立的账本和交易池,业务数据物理隔离
- 灵活扩展:可根据业务需求动态增加或减少群组数量
- 资源共享:同一链上的节点可以同时属于多个群组,共享网络和计算资源
- 独立共识:每个群组可配置不同的共识算法和节点列表
1.2 群组扩容的应用场景
群组扩容技术在以下场景中尤为重要:
- 业务隔离:不同部门或子公司需要独立账本但共享基础设施
- 性能扩展:通过增加群组实现交易处理的水平扩展
- 灰度发布:在新群组中测试智能合约或配置变更
- 多链融合:逐步将原有多条链的业务迁移到同一链的不同群组
1.3 扩容前的准备工作
在进行群组扩容前,需要确保满足以下条件:
检查项 | 说明 | 验证方法 |
---|---|---|
节点运行状态 | 所有节点正常运行 | `ps -ef |
控制台可用 | 控制台能正常连接节点 | 执行getNodeVersion |
时间同步 | 节点间时间差小于1s | date && ssh <节点> date |
证书有效 | 节点证书未过期 | 检查nodes/127.0.0.1/node*/conf 中的证书 |
二、群组扩容操作详解
2.1 获取时间戳
群组创建需要创世块时间戳,这是一个毫秒级的时间戳,可通过以下命令获取:
echo $(($(date '+%s')*1000))
示例输出:
1676856925000
图2:获取创世块时间戳的命令和输出示例
2.2 启动控制台并连接节点
- 切换到控制台目录:
cd ~/fisco/console
2.启动控制台:
bash start.sh
3.验证连接状态,获取可用节点连接信息:
getAvailableConnections
示例输出:
["127.0.0.1:20200","127.0.0.1:20201","127.0.0.1:20202"
]
2.3 获取共识节点列表
在控制台中执行以下命令获取当前群组的共识节点列表:
getSealerList
示例输出:
["305af51fce8b651c3633ae2f19b75243076ed0eedb9169735a385a5a409f655be3841260fcaa04a67ce198b148c8fb7dc95638663934836c781876bfb3a420d3","18d4ac25ff064dd6694d64966a9e10a692f973156bdd05f2d797299a70f66bd126899571dc8fce8d0971165ccb24c5732e6279589634fb67627a6666015d3251"
]
💡 重要提示:共识节点ID是扩容新群组的关键参数,必须确保至少有两个共识节点以保证群组可用性
2.4 创建新群组
使用generateGroup
命令创建新群组,语法如下:
generateGroup <endPoint> <groupId> <timestamp> <sealerList>
参数说明:
- endPoint:接收创建请求的节点IP和端口
- groupId:新群组ID(必须大于已有群组ID)
- timestamp:创世块时间戳
- sealerList:新群组的共识节点列表(多个节点ID用空格分隔)
示例命令:
generateGroup 127.0.0.1:20200 3 1676856925000 305af51fce8b651c3633ae2f19b75243076ed0eedb9169735a385a5a409f655be3841260fcaa04a67ce198b148c8fb7dc95638663934836c781876bfb3a420d3 18d4ac25ff064dd6694d64966a9e10a692f973156bdd05f2d797299a70f66bd126899571dc8fce8d0971165ccb24c5732e6279589634fb67627a6666015d3251
图3:群组创建流程及关键参数
2.5 启动新群组
创建完成后,需要在各节点上启动新群组:
startGroup 127.0.0.1:20200 3
⚠️ 注意:必须为每个参与新群组的节点执行此命令,否则节点无法加入新群组的共识
2.6 验证群组状态
- 切换到新群组:
switch 3
2.检查群组共识状态:
getConsensusStatus
3.验证区块高度:
getBlockNumber
预期输出应为0或快速增长的数值,表明群组正常运行。
三、群组管理高级操作
3.1 动态调整共识节点
添加共识节点:
addSealer <nodeId>
添加观察节点:
addObserver <nodeId>
移除共识节点:
removeNode <nodeId>
3.2 群组数据备份与恢复
- 备份群组数据:
# 备份指定群组数据
tar -zcvf group_3_data.tar.gz nodes/127.0.0.1/node*/data/group3/
2.恢复群组数据:
# 停止节点后恢复数据
tar -zxvf group_3_data.tar.gz -C nodes/127.0.0.1/node*/data/
3.3 跨群组智能合约调用
FISCO BCOS支持通过CNS(Contract Name Service)实现跨群组合约调用:
- 在源群组部署合约并注册到CNS:
[group:1]> deploy Contract.sol
[group:1]> registerCNS Contract.sol 1.0 <contractAddress>
2.在目标群组通过CNS调用合约:
[group:2]> callByCNS Contract.sol 1.0 "methodName(params)"
四、常见问题与解决方案
4.1 群组创建失败排查
问题现象:generateGroup
执行后无新群组产生
解决步骤:
- 检查节点日志:
tail -f nodes/127.0.0.1/node*/log/* | grep "Group"
2.验证时间戳是否合法:
# 时间戳应大于当前时间减去1小时
test $(date '+%s') -lt $((timestamp/1000+3600)) && echo "Valid" || echo "Invalid"
3.确认节点证书未过期:
openssl x509 -in nodes/127.0.0.1/node*/conf/node.crt -noout -dates
4.2 节点无法加入新群组
问题现象:执行startGroup
后节点仍不参与共识
解决方案:
- 检查群组创世文件:
ls -l nodes/127.0.0.1/node*/conf/group.3.genesis
2.验证节点配置:
grep -A 5 "$$group.3$$" nodes/127.0.0.1/node*/config.ini
3.重启节点服务:
bash nodes/127.0.0.1/stop_all.sh && bash nodes/127.0.0.1/start_all.sh
4.3 性能优化建议
- 资源分配:为不同群组配置不同的资源限制
[group.3]
group_memory_limit=2048MB
group_txpool_limit=1024
2.并行处理:启用DAG并行交易执行
[group.3]
enable_dag=true
3.存储优化:配置RocksDB参数
[storage.3]
max_open_files=5000
max_background_jobs=4
五、实战案例:供应链金融多群组架构
5.1 业务场景分析
某供应链金融平台需要服务:
- 核心企业账务管理
- 供应商融资服务
- 物流信息追溯
- 监管合规审计
5.2 群组规划方案
群组ID | 业务类型 | 共识节点 | 存储策略 |
---|---|---|---|
1 | 核心账务 | 全部节点 | 全量存储 |
2 | 供应商融资 | 核心企业+银行 | 关键数据 |
3 | 物流追溯 | 核心企业+物流公司 | 近期数据 |
4 | 监管审计 | 监管机构+核心企业 | 全量存储 |
5.3 实施步骤
- 初始化基础群组:
generateGroup 127.0.0.1:20200 1 1676856925000 <sealerList>
startGroup 127.0.0.1:20200 1
2.扩展业务群组:
generateGroup 127.0.0.1:20200 2 1676860525000 <partialSealerList>
startGroup 127.0.0.1:20200 2
3.配置跨群组通信:
[group_chain]
group_peers=1,2,3,4
4.部署智能合约:
# 在群组1部署主合约
[group:1]> deploy CoreContract.sol# 在群组2部署融资合约
[group:2]> deploy FinancingContract.sol
结语:群组扩容的最佳实践
FISCO BCOS的群组架构为区块链应用提供了前所未有的灵活性。通过本文的详细指导,你应该已经掌握了群组扩容的核心技能。记住以下关键点:
- 规划先行:提前设计群组用途和节点参与方案
- 逐步实施:先创建小规模群组验证,再逐步扩大
- 监控到位:使用
getGroupStatus
等命令持续监控群组健康状态 - 文档完善:记录每个群组的配置参数和变更历史
相关文章:
FISCO BCOS群组扩容实战指南:从原理到操作全解析
引言:为什么需要群组扩容? 在区块链技术迅猛发展的今天,企业级应用对区块链平台提出了更高的要求。"如何在不影响现有业务的情况下扩展区块链处理能力?"、"能否实现不同业务数据的物理隔离?"、&qu…...
【pytorch图像视觉】lesson17深度视觉应用(上)构建自己的深度视觉项目
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、 数据1、认识经典数据1.1入门数据:MNIST、其他数字与字母识别(1)数据加载(2)查看数据的特征和标…...
从“被动跳闸”到“主动预警”:智慧用电系统守护老旧小区安全
安科瑞顾强 近年来,老旧小区电气火灾事故频发,成为威胁居民生命财产安全的重要隐患。据统计,我国居住场所火灾伤亡人数远超其他场所,仅今年一季度就发生8.3万起住宅火灾,造成503人遇难。这些建筑多建于上世纪&#x…...
2.1 全栈运维管理:Proxmox VE单节点配置桥接、VLAN和Bonding的详细实验指南
本文是Proxmox VE 全栈管理体系的系列文章之一,如果对 Proxmox VE 全栈管理感兴趣,可以关注“Proxmox VE 全栈管理”专栏,后续文章将围绕该体系,从多个维度深入展开。 概要:本文介绍 Proxmox VE 单节点网络配置。桥接基…...
docker面试题
1.docker网络 Docker网络是Docker容器之间进行通信的关键功能。Docker提供了多种网络模式和驱动,以满足不同的网络需求。以下是Docker网络的详细介绍: 1.Docker网络模式 Docker提供了以下几种网络模式,每种模式适用于不同的场景:…...
计算机视觉——基于YOLOV8 的人体姿态估计训练与推理
概述 自 Ultralytics 发布 YOLOV5 之后,YOLO 的应用方向和使用方式变得更加多样化且简单易用。从图像分类、目标检测、图像分割、目标跟踪到关键点检测,YOLO 几乎涵盖了计算机视觉的各个领域,似乎已经成为计算机视觉领域的“万能工具”。 Y…...
【本地图床搭建】宝塔+Docker+MinIO+PicGo+cpolar:打造本地化“黑科技”图床方案
写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言宝塔安装DockerMinIO 安装与设置cploar内网穿透PicGo下载与安装typora安装总结互动…...
【家政平台开发(41)】家政平台性能蜕变:性能测试与优化全解析
本【家政平台开发】专栏聚焦家政平台从 0 到 1 的全流程打造。从前期需求分析,剖析家政行业现状、挖掘用户需求与梳理功能要点,到系统设计阶段的架构选型、数据库构建,再到开发阶段各模块逐一实现。涵盖移动与 PC 端设计、接口开发及性能优化,测试阶段多维度保障平台质量,…...
监控docker中的java应用
1)进入指定的容器 docker exec -it demo /bin/bash 2)下载curl root89a67e345354:/# apt install curl -y 3)下载arthas root89a67e345354:/# curl -O https://arthas.aliyun.com/arthas-boot.jar 4)运行 root89a67e345354:/# java -jar arthas-boot.jar 5)监控 […...
Android游戏辅助工具开发详解
文章目录 第一部分:概述与基础准备1.1 游戏辅助工具的定义与用途1.2 开发环境准备1.3 项目创建与配置 第二部分:核心功能实现2.1 屏幕点击功能实现2.1.1 基础点击功能2.1.2 多点触控实现 2.2 滑动功能实现2.2.1 基础滑动功能2.2.2 曲线滑动实现 2.3 屏幕…...
重生之外卖配送时被投诉后的反思
重生之外卖配送时被投诉后的反思 写苍穹外卖时 我们发现在每一次调用sql语句时 insert update语句总会需要在service的实现类里加入例如create_time,create_user , update_time , update_user的填充 每次赋值都要重新编写代码,会造成代码冗余 ; 序号字…...
计算机基础复习资料整理
计算机基础复习资料整理 一、操作系统 (一)定义 操作系统(Operating System,OS)是介于计算机硬件和用户(程序或人)之间的接口。作为通用管理程序,它管理计算机系统中每个部件的活动…...
Profibus DP主站网关数据映射全解析!
Profibus DP主站网关数据映射全解析! 在工业自动化领域,Profibus DP主站网关作为一种关键的通讯设备,其数据映射的精准度和效率对整个控制系统的性能有着至关重要的影响。本文旨在深入探讨Profibus DP主站网关的数据映射过程,揭示…...
ocr-不动产权识别
目录 一、在阿里云申请ocr识别服务 二、创建springboot项目 三、后续 一、在阿里云申请ocr识别服务 在线体验:房产证图片上传 [阿里官方]不动产权证OCR文字识别_API专区_云市场-阿里云 (aliyun.com) 可以选择一毛500次这个 当然也可以白嫖100 下面有个在线调试…...
leetcode 198. House Robber
本题是动态规划问题。 第一步,明确并理解dp数组以及下标的含义 dp[i]表示从第0号房间一直到第i号房间(包含第i号房间)可以偷到的最大金额,具体怎么偷这里不考虑,第i1号及之后的房间也不考虑。换句话说,dp[i]也就是只考虑[0,i]号…...
【2025软考高级架构师】——软件架构设计(4)
摘要 本文主要介绍了几种软件架构设计相关的概念和方法。包括C2架构风格的规则,模型驱动架构(MDA)的起源、目标、核心模型及各模型之间的关系;软件架构复用的概念、历史发展、维度、类型及相关过程;特定领域架构&…...
分发饼干问题——用贪心算法解决
目录 一:问题描述 二:解决思路 贪心策略(C语言)算法复习总结3——贪心算法-CSDN博客 三:代码实现 四:复杂度分析 一:问题描述 分发饼干问题是一个经典的可以使用贪心算法解决的问题…...
深入详解MYSQL的MVCC机制
参考资料: 参考视频(注意第二个视频关于幻读的讲解是错误的,详情见本文) redoLog的结构详解 参考资料 学习内容: 1. MVCC要解决的问题 MVCC要解决的问题是,在不产生脏读等数据库问题的前提下,数据库的查询语句和更改语句不相互阻塞的情况; 在InnoDB中,MVCC仅仅存…...
DNS域名解析
目录 一.DNS 1.1DNS的简介 1.2DNS的背景 1.3DNS的架构 1.4实现DNS的方式 1.5DNS的查询类型 1.6DNS解析的基本流程 二.主从复制 2.1定义 2.2优缺点 三.DNS服务软件 3.1bind 3.1.1定义 3.1.2bind相关文件 3.2DNS服务器的核心文件 3.2.1主配置文件 3.2.2域名文件 …...
Java基础:一文讲清多线程和线程池和线程同步
01-概述 02-线程创建 继承Thread 实现Runnable(任务对象) 实现Callable接口 public class ThreadDemo3 {public static void main(String[] args) throws ExecutionException, InterruptedException {// 目标:线程创建3// 需求:求1-100的和Callable<…...
ubuntu 20.04 连不上蓝牙耳机/蓝牙鼠标
sudo gedit /etc/bluetooth/main.conf改为 ControllerMode dual然后重启蓝牙服务 sudo service bluetooth restart...
SaaS、Paas、IaaS、MaaS、BaaS五大云计算服务模式
科普版:通俗理解五大云计算服务模式 1. SaaS(软件即服务) 一句话解释:像“租用公寓”,直接使用现成的软件,无需操心维护。 案例:使用钉钉办公、在网页版WPS编辑文档。服务提供商负责软件更新和…...
【深拷贝、浅拷贝】golang函数参数传递,变量复制后,操作变量参数,是否影响原有数据?全面解析
Golang中深拷贝与浅拷贝的详细解析,以及变量复制、函数参数传递等场景下对新旧变量影响的总结: 一拷贝与浅拷贝的核心区别 1. 浅拷贝(Shallow Copy) • 定义:仅复制数据的顶层结构,对引用类型字段&#x…...
c语言编程经典习题详解3
21. 求给定正整数 n 以内的素数之积 定义:找出小于给定正整数n的所有素数,并将它们相乘。要点:使用双层for循环,外层循环遍历小于n的数,内层循环判断是否为素数,若是则累乘。应用:在数论研究、密码学等领域有应用。c #include <stdio.h>int isPrime(int num) {if…...
【HD-RK3576-PI】Docker搭建与使用
硬件:HD-RK3576-PI 软件:Linux6.1Ubuntu22.04 1. 安装Docker Docker安装脚本下载: roothd-rk3576-pi:~ $ curl -fsSL https://test.docker.com -o test-docker.sh 可以直接执行安装 roothd-rk3576-pi:~ $ sh test-docker.sh 2. 配置国内镜…...
C++进阶——异常
目录 1、异常的概念及使用 1.1 异常的概念 1.2 异常的抛出和捕获 1.3 栈展开 1.4 查找匹配的处理代码 1.5 异常的重新抛出 1.6 异常的安全问题 1.7 异常的规范 2、标准库的异常(了解) 1、异常的概念及使用 1.1 异常的概念 C语言,出错了,就报错…...
Linux安装开源版MQTT Broker——EMQX服务器环境从零到一的详细搭建教程
零、EMQX各个版本的区别 EMQX各个版本的功能对比详情https://docs.emqx.com/zh/emqx/latest/getting-started/feature-comparison.html...
C++ 编程指南36 - 使用Pimpl模式实现稳定的ABI接口
一:概述 C 的类布局(尤其是私有成员变量)直接影响它的 ABI(应用二进制接口)。如果你在类中添加或修改了私有成员,即使接口不变,编译器生成的二进制布局也会变,从而导致 ABI 不兼容。…...
笔记本电脑突然无法开机电源灯亮但是屏幕无法点亮
现象 按电源键,电源灯点亮,屏幕没动静 风扇开始运转,然后一会儿就不转了;屏幕一直没动静,屏幕没有任何反应(没有系统启动画面,没有徽标显示,就一点反应也没用) 这个问…...
mongodb 4.0+多文档事务的实现原理
1. 副本集事务实现(4.0) 非严格依赖二阶段提交 MongoDB 4.0 在副本集环境中通过 全局逻辑时钟(Logical Clock) 和 快照隔离(Snapshot Isolation) 实现多文档事务,事务提交时通过…...
decompiled.class file bytecode version50(java 6)
idea运行项目报错,跳到具体的.class中,idea会给出提示下载源码,点击下载报错,具体报错信息我没记录了(反正就是无法看到源码) 解决方式: 1、网上说下载scala插件,重启idea即可 但是…...
CSS 列表样式学习笔记
CSS 列表样式提供了强大的功能,用于定制 HTML 列表的外观。通过 CSS,可以轻松地改变列表项的标记类型、位置,甚至使用图像作为列表项标记。以下是对 CSS 列表样式的详细学习笔记。 一、HTML 列表类型 在 HTML 中,主要有两种类型…...
linux网络设置
ifconfig 查看ip地址 查看当前的liunx系统的网络参数ip地址 Ubuntu需要安装 Apt install -y net-tools 查看网络信息 Ifconfig 只能看到开启的网卡 Ifconfig -a 看到所有的网卡包括开启和关闭的 Ifconfig 网卡名称 up 开启网卡 Ifconfig 网卡名称 down 关闭网卡 If…...
抗干扰CAN总线通信技术在分布式电力系统中的应用
摘要:随着分布式电力系统的广泛应用,其通信系统的可靠性与稳定性受到了前所未有的挑战。CAN总线通信技术以其卓越的抗干扰性能和可靠性,在众多通信技术中脱颖而出,成为解决分布式电力系统通信问题的关键。本文深入剖析了CAN总线通…...
Maven工具学习使用(十二)——extension和depency的区别
在 Maven 中,extensions 和 dependencies 是两个不同的概念,它们在项目构建和依赖管理中扮演着不同的角色。 1、Dependencies dependencies 是 Maven 项目中用于管理项目所需的库和模块的部分。这些依赖可以是本地仓库中的,也可以是远程仓库…...
Python学生信息查询
利用字典设置学生信息,将这些信息放入列表中进行存储,根据输入的姓名查询展示对应的学生信息。 Student1{no:202001,name:zyt,score:87} Student2Student1.copy() Student3Student2.copy()Student2[no]202002 Student3[no]202003Student2[name]zwh Stud…...
一天时间,我用AI(deepseek)做了一个配色网站
前言 最近在开发颜色搭配主题的相关H5和小程序,想到需要补充一个web网站,因此有了这篇文章。 一、确定需求 向AI要答案之前,一定要清楚自己想要做什么。如果你没有100%了解自己的需求,可以先让AI帮你理清逻辑和思路,…...
MQ(消息队列)体系详解
消息队列(MQ,Message Queue) 是一种基于消息传递的异步通信机制,用于不同系统、服务之间进行数据传递和交互。它通常用来解耦生产者和消费者,提供高可用、高吞吐量和可靠的消息传递。 一、消息队列用途 1.系统解耦 …...
【GESP真题解析】第 3 集 GESP一级样题卷编程题 2:闰年求和
大家好,我是莫小特。 这篇文章给大家分享 GESP 一级样题卷编程题第 2 题:闰年求和。 题目链接 洛谷链接:B3846 闰年求和 一、完成输入 根据题目要求,我们需要输入两个整数,分别表示起始年份和终止年份。 要求计算…...
Windows Server 2019 安装 Docker 完整指南
博主本人使用的是离线安装 1. 安装前准备 系统要求 操作系统:Windows Server 2019(或 2016/2022)权限:管理员权限的 PowerShell网络:可访问互联网(或离线安装包) 启用容器功能 Install-Win…...
JetBrains PhpStorm v2024.3.1 Mac PHP开发工具
JetBrains PhpStorm v2024.3.1 Mac PHP开发工具 一、介绍 JetBrains PhpStorm 2024 mac,是一款PHP开发工具,直接开始编码,无需安装和配置大量插件。PhpStorm 从一开始就已包含 PHP、JavaScript 和 TypeScript 开发所需的一切,还…...
机器学习(ML)在AI驱动测试通过数据驱动的智能决策显著提升测试效率、覆盖率和准确性。
机器学习(ML)在AI驱动测试中扮演着 核心引擎 的角色,通过数据驱动的智能决策显著提升测试效率、覆盖率和准确性。以下是机器学习在测试各环节的具体作用及实现方案: 一、机器学习在测试生命周期中的作用 #mermaid-svg-u4vgPE6O2jugiZFB {font-family:"trebuchet ms&qu…...
0x06.Redis 中常见的数据类型有哪些?
回答重点 Redis 常见的数据结构主要有五种,这五种类型分别为:String(字符串)、List(列表)、Hash、Set(集合)、Zset(有序集合,也叫sorted set)。 String 字符串是Redis中最基本的数据类型,可以存储任何类型的数据,包括文本、数字和二进制数据。它的最大长度为512MB。 使…...
本地缓存方案Guava Cache
Guava Cache 是 Google 的 Guava 库提供的一个高效内存缓存解决方案,适用于需要快速访问且不频繁变更的数据。 // 普通缓存 Cache<Key, Value> cache CacheBuilder.newBuilder().maximumSize(1000) // 最大条目数.expireAfterWrite(10, TimeUnit.MINUTES) /…...
A Causal Inference Look at Unsupervised Video Anomaly Detection
标题:无监督视频异常检测的因果推断视角 原文链接:https://ojs.aaai.org/index.php/AAAI/article/view/20053 发表:AAAI-2022 文章目录 摘要引言相关工作无监督视频异常检测因果推断 方法问题公式化一般设置强基线模型 无监督视频异常检测的因…...
MQ(RabbitMQ.1)
MQ的含义及面试题 MQMQ的含义MQ之间的调用的方式MQ的作用MQ的几种产品RabbitMQRabbitMQ的安装RabbitMQ的使用RabbitMQ⼯作流程 AMQPWeb界面操作用户相关操作虚拟主机相关操作 RabbitMQ的代码应用编写生产者代码编写消费者代码 生产者代码消费者代码 MQ MQ的含义 MQ࿰…...
cursor+高德MCP:制作一份旅游攻略
高德开放平台 | 高德地图API (amap.com) 1.注册成为开发者 2.进入控制台选择应用管理----->我的应用 3.新建应用 4.点击添加Key 5.在高德开发平台找到MCP的文档 6.按照快速接入的步骤,进行操作 一定要按照最新版的cursor, 如果之前已经安装旧的版本卸载掉重新安…...
FPGA时序分析与约束(11)——时钟组
目录 一、同步时钟与异步时钟 二、逻辑与物理独立时钟 2.1 逻辑独立时钟 2.2 物理独立时钟 三、如何设置时钟组 四、注意事项 专栏目录: FPGA时序分析与约束(0)——目录与传送门https://ztzhang.blog.csdn.net/article/details/134893…...
opencv 识别运动物体
import cv2 import numpy as npcap cv2.VideoCapture(video.mp4) try:import cv2backSub cv2.createBackgroundSubtractorMOG2() except AttributeError:backSub cv2.bgsegm.createBackgroundSubtractorMOG()#形态学kernel kernel cv2.getStructuringElement(cv2.MORPH_REC…...
opencv实际应用--银行卡号识别
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,主要用于图像和视频处理、目标检测、特征提取、3D重建以及机器学习任务。它支持多种编程语言(如C、Python),提供丰富的算法和工具&a…...