搭建一个Fabric网络

2023-11-03

生成相关证书文件

首先Fabric提供了一些工具用于生成所需的文件,cryptogen模块会根据提供的配置文件生成后续模块运行过程中需要的证书和数据文件。
cryptogen常用命令:在这里插入图片描述
generate用于根据配置文件生成证书。
showtemplate用于提供一个模板。
具体操作如下:

cryptogen showtemplate

生成模板的内容
也才可以把模板输入到具体文件中

cryptogen showtemplate > crypto-config.yaml

然后使用generate命令生成证书

cryptogen generate --config=crypto-config.yaml

在这里插入图片描述

使用tree命令查看下目录结构

tree -L 3

在这里插入图片描述

进行通道配置

使用configtx.yaml文件进行配置,可以参考官方test-network/config/configtx.yaml文件。
然后使用configtxgen模块配置,创建创世区块。
命令如下:

configtxgen  -profile TwoOrgsOrdererGenesis -outputBlock   ./channel-artifacts/genesis.block -channelID fabric-chanel

在这里插入图片描述
这里的通道名与后面的通道名要不一致。
创建Channel的命令如下:

configtxgen  -profile   TestTwoOrgsChannel   -outputCreateChannelTx   ./channel-artifacts/channel.tx -channelID   mychannel

在这里插入图片描述

接下来是生成组织1和组织2 的锚节点文件

configtxgen -profile  TwoOrgsChannel  -outputAnchorPeersUpdate ./channel-artifact/Org1MSPanchors. tx -channelID  mychannel -asOrg Org1MSP
configtxgen -profile  TwoOrgsChannel  -outputAnchorPeersUpdate ./channel-artifact/Org2MSPanchors. tx -channelID  mychannel -asOrg Org2MSP

在这里插入图片描述
在这里插入图片描述

创建peer,orderer节点

有两种方式创建peer、orderer节点

使用docker生成节点

配置一个docker-compose.yaml文件,可以参考test-network/docker/docker-compose-net.yaml文件

- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_test

这条语句中网络名要改成:文件名_网络名。
配置docker-compose.yaml 文件生成orderer,peer,cli节点。

# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#

version: '2'

volumes:
  orderer.example.com:
  peer0.org1.example.com:
  peer0.org2.example.com:

networks:
  test:
    name: fixtures_test

services:


  orderer.example.com:
    container_name: orderer.example.com
    image: hyperledger/fabric-orderer:latest
    environment:
      - FABRIC_LOGGING_SPEC=INFO
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
      - ORDERER_GENERAL_LISTENPORT=7050
      - ORDERER_GENERAL_GENESISMETHOD=file
      - ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
      # enabled TLS
      - ORDERER_GENERAL_TLS_ENABLED=true
      - ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
      - ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
      - ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
      - ORDERER_KAFKA_TOPIC_REPLICATIONFACTOR=1
      - ORDERER_KAFKA_VERBOSE=true
      - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/var/hyperledger/orderer/tls/server.crt
      - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/var/hyperledger/orderer/tls/server.key
      - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric
    command: orderer
    volumes:
        - ./channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
        - ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
        - ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
        - orderer.example.com:/var/hyperledger/production/orderer
    ports:
      - 7050:7050
    networks:
      - test



  peer0.org1.example.com:
    container_name: peer0.org1.example.com
    image: hyperledger/fabric-peer:latest
    environment:
      #Generic peer variables
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      # the following setting starts chaincode containers on the same
      # bridge network as the peers
      # https://docs.docker.com/compose/networking/
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fixtures_test
      - FABRIC_LOGGING_SPEC=INFO
      #- FABRIC_LOGGING_SPEC=DEBUG
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
      # Peer specific variabes
      - CORE_PEER_ID=peer0.org1.example.com
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_LISTENADDRESS=0.0.0.0:7051
      - CORE_PEER_CHAINCODEADDRESS=peer0.org1.example.com:7052
      - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
    volumes:
        - /var/run/:/host/var/run/
        - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
        - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
        - peer0.org1.example.com:/var/hyperledger/production
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: peer node start
    ports:
      - 7051:7051
    networks:
      - test

  peer0.org2.example.com:
    container_name: peer0.org2.example.com
    image: hyperledger/fabric-peer:latest
    environment:
      #Generic peer variables
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      # the following setting starts chaincode containers on the same
      # bridge network as the peers
      # https://docs.docker.com/compose/networking/
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fixtures_test
      - FABRIC_LOGGING_SPEC=INFO
      #- FABRIC_LOGGING_SPEC=DEBUG
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
      # Peer specific variabes
      - CORE_PEER_ID=peer0.org2.example.com
      - CORE_PEER_ADDRESS=peer0.org2.example.com:9051
      - CORE_PEER_LISTENADDRESS=0.0.0.0:9051
      - CORE_PEER_CHAINCODEADDRESS=peer0.org2.example.com:9052
      - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:9052
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:9051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:9051
      - CORE_PEER_LOCALMSPID=Org2MSP
    volumes:
        - /var/run/:/host/var/run/
        - ./crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
        - ./crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
        - peer0.org2.example.com:/var/hyperledger/production
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: peer node start
    ports:
      - 9051:9051
    networks:
      - test


  cli1:
    container_name: cli1
    image: hyperledger/fabric-tools:latest
    tty: true
    stdin_open: true
    environment:
      - GOPATH=/opt/gopath
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      #- FABRIC_LOGGING_SPEC=DEBUG
      - FABRIC_LOGGING_SPEC=INFO
      - CORE_PEER_ID=cli1
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: /bin/bash
    volumes:
      - /var/run/:/host/var/run/
      - ../chaincode/go/:/opt/gopath/src/github.com/hyperledger/multiple-deployment/chaincode/go
      - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
      - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
    networks:
      - test
  
  cli2:
    container_name: cli2
    image: hyperledger/fabric-tools:latest
    tty: true
    stdin_open: true
    environment:
      - GOPATH=/opt/gopath
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      #- FABRIC_LOGGING_SPEC=DEBUG
      - FABRIC_LOGGING_SPEC=INFO
      - CORE_PEER_ID=cli2
      - CORE_PEER_ADDRESS=peer0.org2.example.com:9051
      - CORE_PEER_LOCALMSPID=Org2MSP
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/0.org2.example.com/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: /bin/bash
    volumes:
      - /var/run/:/host/var/run/
      - ../chaincode/go/:/opt/gopath/src/github.com/hyperledger/multiple-deployment/chaincode/go
      - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
      - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
   
    networks:
      - test

然后运行docker-compose.yaml文件:

docker-compse up -d

查看docker容器

docker ps -a

输出结果如下:
在这里插入图片描述

创建通道channel

分为三步:创建通道、将已运行的Peer模块加入通道、更新锚节点。

创建通道

使用客户端进行创建,首先进入cli1中,命令如下:

docker exec -it cli1 bash

然后创建通道

peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem

-o表示指定的排序节点,-c指定通道名称 -f指定通道文件的路径, --tls是否使用tls --cafile ca 的文件路径。

在这里插入图片描述
查看下文件内容:
在这里插入图片描述
生成了mychannel.block文件。
然后将生成的文件复制到cli2中,cli1和cli2要加入同一个通道,要保证通道文件一致。(不允许跨容器复制,只能先复制到系统中,再复制到cli2中)
copying between containers is not supported

docker cp cli1:/opt/gopath/src/github.com/hyperledger/fabric/peer/mychannel.block ./
docker cp ./mychannel.block cli2:/opt/gopath/src/github.com/hyperledger/fabric/peer

在这里插入图片描述

加入通道

将peer加入通道,分别进入cli1cli2中进行操作:
在这里插入图片描述

更新锚节点

分别更新锚节点

peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem 

在这里插入图片描述

在这里插入图片描述

Chaincode的部署和调用

从Hyperledger Fabric V2.0版本开始,新增了链码生命周期的管理通道,这使得链码的操作和管理变得更加便捷和安全。如果遵循链码生命周期的定义和推荐操作,可以更容易地开发、测试和部署链码。
Hyperledger Fabric中的链码生命周期指的是链码开发、安装、批准、提交、调用和升级等一系列的过程和状态。以下是链码的生命周期阶段的详细说明:

  1. 链码开发阶段

    在这个阶段,开发人员编写链码源代码并使用一个编程语言将其实现。Hyperledger Fabric支持多种编程语言,包括Go语言、JavaScript和TypeScript等。开发人员可以使用扩展SDK和其他工具来增强其开发体验。

  2. 链码安装阶段

    在这个阶段,开发人员将开发好的链码安装到系统中的Peer节点上。需要注意的是,一个链码只需要在Peer节点上安装一次,安装后的链码将被用于支持后续的批准和提交等操作。

  3. 链码批准阶段

    在这个阶段,系统管理员或其他有权机构对安装的链码进行批准。这个过程通常包括:检查链码源代码、分配chaincode definition ids等。只有在链码被批准之后,才能进行后续的提交操作。

  4. 链码提交阶段

    在这个阶段,已安装和批准的链码提交到系统中。通过peer lifecycle chaincode commit命令可进行链码提交操作,此命令需要声明链码名称、版本、背书策略等参数。

  5. 链码调用阶段

    在这个阶段,用户使用链码对应用程序进行交互,通过调用链码中的方法或函数来实现具体的业务逻辑。

  6. 链码升级阶段

    当业务需求更改或代码升级时,可能需要对已有链码进行升级。在这个阶段,链码的升级可以通过peer lifecycle chaincode upgrade命令实现。链码升级需要追加新的版本信息,同时需要与原来的版本兼容。

链码的打包

 peer lifecycle chaincode package sacc.tar.gz --path /opt/gopath/src//github.com/hyperledger/multiple-deployment/chaincode/go/ --label sacc_1

在这里插入图片描述
再复制到cli2中
在这里插入图片描述

安装链码

peer lifecycle chaincode install sacc.tar.gz 

在这里插入图片描述
同理在cli2中安装链码
在这里插入图片描述

批准链码

peer lifecycle chaincode approveformyorg --channelID mychannel --name sacc --version 1.0 --init-required --package-id sacc_1:508f132cc8ed0bd2696807a47b337371a5f96370081fb51bf53494e83fa4a617 --sequence 1 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -o orderer.example.com:7050

在这里插入图片描述

查看链码是否批准

peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name sacc --version 1.0 --init-required  --sequence 1 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -o orderer.example.com:7050 --output json

在这里插入图片描述
表示已成功批准。

提交已经安装和批准的链码

一旦链码被安装和批准,然后就可以提交链代码并将其部署到网络中。这是通过在CLI终端中使用peer lifecycle chaincode commit命令来完成的。

peer lifecycle chaincode commit -o orderer.example.com:7050 --channelID mychannel --name sacc --version 1.0 --sequence 1 --init-required --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt 

在这里插入图片描述

链码调用

主要使用InvokeQuery两个命令
调用链码

 peer chaincode invoke -o orderer.example.com:7050 --isInit --ordererTLSHostnameOverride orderer.example.com --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  -C mychannel -n sacc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["a","bb"]}'

查询链码

peer chaincode query -C mychannel -n sacc -c '{"Args":["query","a"]}'

在这里插入图片描述
修改a的值

 peer chaincode invoke -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  -C mychannel -n sacc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["set","a","bbcc"]}'

在这里插入图片描述
修改成功!!
完成一个简易的区块链网络。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

搭建一个Fabric网络 的相关文章

随机推荐

  • CodeBlock编译 mqtt

    下载源码编译 git clone https github com eclipse paho mqtt c git cd paho matt c make sudo make install 如果编译遇到错误 安装openssl 1 1 1
  • 【机器学习】Excel对数据线性回归分析

    目录 一 实验目的 二 高尔顿数据集 1 父子身高 2 母子身高 三 Anscombe四重奏 四 参考 一 实验目的 1 线性回归练习 父亲高则儿子高 父亲矮则儿子矮 即父亲与儿子身高相关 且为正相关 母高高一窝 父高高一个 即母亲的身高比
  • 【python】 定义一个Person类,它包含数据成员age, name和gender。从Person中派生一个类Employee,在新类中添加一个数据成员,存储个人的number.等等

    定义一个Person类 它包含数据成员age name和gender a 从Person中派生一个类Employee 在新类中添加一个数据成员 存储个人的number 再从Employee中派生一个类Executive 每个派生类都应该定义
  • 商业智能BI专题报告(精选九篇)

    BI Business Intelligence 即商业智能 它是一套完整的解决方案 把企业的运营数据转化为信息或知识 辅助企业做出明智的业务经营决策的工具 将无序 零散 孤立的数据转换成整合的 规律的 有价值的数据资产 将其以直观 形象的
  • linux磁盘性能测试

    linux磁盘性能测试 1 测试磁盘写能力 time dd if dev zero of test db bs 8k count 1000000 oflag direct 因为 dev zero是一个伪设备 不产生IO 所以主要都集中在te
  • 传感器学习——DS18B20

    DS18B20 DS18B20是Dallas公司生产的数字温度传感器 具有体积小 适用电压宽 经济灵活的特点 它内部使用了onboard专利技术 全部传感元件及转换电路集成在一个形如三极管的集成电路内 DS18B20有电源线 地线及数据线3
  • 微信小程序线上加载使用iconfont问题

    1 在微信小程序根目录下创建style文件夹 里面再创建iconfont文件夹 用于放置iconfont图标文件和iconfont样式文件 2 给iconfont wxss写样式 也可以下载iconfont代码 拷贝iconfont css
  • PowerShell入门教程

    PowerShell基础语句 1 进入Powershell环境 开始 运行 powershell 开始 运行 cmd powershell 不同系统内置的powershell系统版本是不一样的 查看版本 psversiontable 2 p
  • 第十一篇 绘图matplotlib.pyplot的使用

    文章目录 摘要 安装方法 入门案例 使用plt绘图 使用ax绘图 plt figure参数 plot参数 案例一 绘制红色实心的点状图 案例二 绘制红色的破折线图 案例三 绘制两条线 颜色总结 设置标题 轴名称 图例 使用plt实现绘图 使
  • lua元表与面向对象

    lua元表 扩展普通表的行为 setmetatable tab mematable 如果元表中存在 mematable setmematable会失效 mematable可以保护元表 禁止访问或修改元表中的成员 getmetatable t
  • 原型对象和原型链的理解

    大家都应该知道构造函数很好用 但是构造函数也存在浪费内存的问题 function Star uname age this uname uname this age age this sing function console log 我会唱
  • 网御ACM上网行为管理系统存在SQL注入漏洞【小龙检测工具已更公开】

    网御ACM上网行为管理系统bottomframe cgi接口存在SQL注入漏洞 一 系统简介 二 漏洞描述 三 影响版本 四 fofa查询语句 五 漏洞复现 执行md5 1 函数 执行user 六 POC EXP 七 修复建议 免责声明 请
  • vscode 更新报错,中止以后软件打不开的修复方式

    前言 今天打开 vscode 正准备敲代码的时候 发现 vscode 提示升级 于是想也不想的点了升级 当然 你也可以在这里手动检查程序是否升级了 然后悲剧就发生了 升级到一半的时候 提示进行不下去了 问我是否要重试 或者终止 当时没截图
  • Qt天气预报

    目录 环境 weather pro main cpp weather h weather cpp weatherdata h 今天 未来6天数据体 weathertool h 获取城市编码工具类 ui weather h UI设计器生成的头
  • 【批处理DOS-CMD命令-汇总和小结】-利用cmd命令生成随机数、生成指定范围的随机数

    零 转载链接 bat脚本的基本命令语法 整合侠 博客园 一 cmd命令的随机数取值范围 RANDOM 系统变量只能返回 0 到 32767 之间的任意十进制数字 2的15次方等于32768 上面的0 32767实际就是15位二进制数的范围
  • git----pathspec ‘ ‘ did not match any file(s) known to git

    一 问题描述 场景 在前辈刚刚提交了自己的分支之后 我想切换过去 却发生了如下错误 在这之前你得确认你本地的代码提交且push 如果你的分支上没有代码改动的话 按如下操作解决 二 问题解决 首先查看分支情况 如果没有你想切换的分支名字 先获
  • OLED拼接屏,从选购到安装,手把手教您

    OLED拼接屏是一种高端的显示屏 它由多个OLED屏幕拼接而成 可以实现更大尺寸的显示效果 在使用OLED拼接屏时 需要注意一些细节 下面是OLED拼接屏的教程 1 选择合适的OLED屏幕 在选择OLED屏幕时 需要考虑屏幕的尺寸 分辨率
  • 嘉立创元器件及封装导入AD20

    第一步 建一个集成库 在集成库里添加原理图库和PCB元件库 第二步 在嘉立创软件或者网页里找到你要导入AD的元件 第三歩 将元件的原理图和封装分别以AD的格式导出 第四步 将导出的原理图和封装导入AD 第五步 将原理图生成原理图库 复制后粘
  • android studio第三方框架总结

    第三方框架gradle添加 UI Material design和Support library控件 compile com android support appcompat v7 25 3 1 compile com android s
  • 搭建一个Fabric网络

    生成相关证书文件 首先Fabric提供了一些工具用于生成所需的文件 cryptogen模块会根据提供的配置文件生成后续模块运行过程中需要的证书和数据文件 cryptogen常用命令 generate用于根据配置文件生成证书 showtemp