2.2 Fabric核心配置文件的理解

2023-10-26

目标

  1. 了解Hyperledger Fabric对Peer节点的核心配置信息
  2. 了解Hyperledger Fabric对orderer节点的核心配置信息

任务实现

在Hyperledger Fabric中, 有两个示例配置文件,一个为Peer节点的示例配置文件,一个为Orderer节点的示例配置文件,理解这两个配置文件的内容对于我们而言,会更进一步的理解Hyperledger Fabric运行状况。

2.2.1 core.yaml详解

core.yaml配置文件是Peer节点的示例配置文件,具体路径在 fabric-samples/config 目录下;该core.yaml示例配置文件中共指定了六大部分内容,详见解释如下。

在Fabirc源码中的路径为:$GOPATH/src/github.com/hyperledger/fabric/sampleconfig/core.yaml

2.2.1.1 日志部分:

日志记录级别有六种:CRITICAL | ERROR | WARNING | NOTICE | INFO | DEBUG

使用 level 指定默认所有模块为 info 级别,然后单独指定 cauthdsl、gossip、grpc、ledger、msp、policies、peer 的 gossip 模块的日志级别,以覆盖默认的日志级别。

format属性指定了日志的输出格式。

logging:
    level:       info	# 全局的日志级别

	# 单独模块的日志级别,覆盖全局日志级别
    cauthdsl:   warning
    gossip:     warning
    grpc:       error
    ledger:     info
    msp:        warning
    policies:   warning
    
    peer:
        gossip: warning
        
    format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
2.2.1.2 peer部分:

peer部分是 Peer 服务的核心配置内容,包括 Peer 的基础服务部分、gossip 部分、event、tls、BCCSP 等相关配置信息

peer:
    id: jdoe		# 指定节点ID
    networkId: dev	 # 指定网络ID
    listenAddress: 0.0.0.0:7051		#侦听本地网络接口上的地址。默认监听所有网络接口
    
    #侦听入站链码连接的端点。如果被注释,则选择侦听地址端口7052的对等点地址
    # chaincodeListenAddress: 0.0.0.0:7052    
    # 此peer的链码端点用于连接到peer。如果没有指定,则选择chaincodeListenAddress地址。
    # 如果没有指定chaincodeListenAddress,则从其中选择address 
    # chaincodeAddress: 0.0.0.0:705
    
    address: 0.0.0.0:7051	# 节点对外的服务地址
    addressAutoDetect: false	# 是否自动探测对外服务地址	
    gomaxprocs: -1	# 进程数限制,-1代表无限制
    
    # Peer服务与Client的设置
    keepalive:
    	# 指定客户机ping的最小间隔,如果客户端频繁发送ping,Peer服务器会自动断开
        minInterval: 60s	
        
        client: 	# 客户端与Peer的通信设置 
        	# 指定ping Peer节点的间隔时间,必须大于或等于 minInterval 的值        
            interval: 60s           
            timeout: 20s	# 在断开peer节点连接之前等待的响应时间
      
        deliveryClient:    # 客户端与Orderer节点的通信设置
        	# 指定ping orderer节点的间隔时间,必须大于或等于 minInterval 的值
            interval: 60s             
            timeout: 20s	# 在断开Orderer节点连接之前等待的响应时间

    gossip:   # gossip相关配置    
        bootstrap: 127.0.0.1:7051	# 启动后的初始节点
        useLeaderElection: true     # 是否指定使用选举方式产式Leader
        orgLeader: false	# 是否指定当前节点为Leader
        endpoint:      
        
        maxBlockCountToStore: 100  # 保存在内存中的最大区块     
        maxPropagationBurstLatency: 10ms	#消息连续推送之间的最大时间(超过则触发,转发给其它节点)
        maxPropagationBurstSize: 10	# 消息的最大存储数量,直到推送被触发 
        propagateIterations: 1    # 将消息推送到远程Peer节点的次数   
        propagatePeerNum: 3  # 选择推送消息到Peer节点的数量     
        pullInterval: 4s    # 拉取消息的时间间隔  
        pullPeerNum: 3      # 从指定数量的Peer节点拉取 
        requestStateInfoInterval: 4s # 确定从Peer节点提取状态信息消息的频率(单位:秒)             
        publishStateInfoInterval: 4s # 确定将状态信息消息推送到Peer节点的频率     
        stateInfoRetentionInterval:  # 状态信息的最长保存时间     
        publishCertPeriod: 10s      #  启动后包括证书的等待时间
        skipBlockVerification: false     # 是否应该跳过区块消息的验证   
        dialTimeout: 3s     # 拨号的超时时间     
        connTimeout: 2s     # 连接超时时间    
        recvBuffSize: 20    # 接收到消息的缓存区大小    
        sendBuffSize: 200	# 发送消息的缓冲区大小
        digestWaitTime: 1s  # 处理摘要数据的等待时间     
        requestWaitTime: 1500ms  	# 处理nonce之前等待的时间   
        responseWaitTime: 2s   # 终止拉取数据处理的等待时间    
        aliveTimeInterval: 5s      # 心跳检查间隔时间  
        aliveExpirationTimeout: 25s    # 心跳消息的超时时间    
        reconnectInterval: 25s       # 重新连接的间隔时间 
        externalEndpoint:	# 组织外的端点
        
        election:   # 选举Leader配置     
            startupGracePeriod: 15s       # 最长等待时间 
            membershipSampleInterval: 1s  # 检查稳定性的间隔时间     
            leaderAliveThreshold: 10s     # 进行选举的间隔时间
            leaderElectionDuration: 5s	# 声明自己为Leader的等待时间
            
        pvtData:	# 私有数据配置
        	# 尝试从peer节点中提取给定块对应的私有数据的最大持续时间
            pullRetryThreshold: 60s    
            # 当前分类帐在提交时的高度之间的最大差异
            transientstoreMaxBlockRetention: 1000            
            pushAckTimeout: 3s   # 等待每个对等方确认的最大时间         
            # 用作缓冲器;防止peer试图获取私有数据来自即将在接下来的N个块中被清除的对等节点
            btlPullMargin: 10	
    
    events:    
        address: 0.0.0.0:7053	# 指定事件服务的地址
        buffersize: 100	# 可以在不阻塞发送的情况下缓冲的事件总数
        # 将事件添加到一个完整的缓冲区时要阻塞多长时间
        # 如果小于0,直接丢弃
        # 如果等于0,事件被添加至缓冲区并发出
        # 如果大于0,超时还未发出则丢弃
        timeout: 10ms	
        # 在注册事件中指定的时间和客户端时间之间的差异
        timewindow: 15m	
        
        keepalive: # peer服务器与客户端的实时设置           
            minInterval: 60s	# 允许客户端向peer服务器发送ping的最小间隔时间

        sendTimeout: 60s	# GRPC向客户端发送事件的超时时间

    tls:	# TLS设置 
        enabled:  false   # 是否开启服务器端TLS    
        # 是否需要客户端证书(没有配置使用证书的客户端不能连接到对等点)
        clientAuthRequired: false	
        
        cert:	# TLS服务器的X.509证书
            file: tls/server.crt
       
        key:	# TLS服务器(需启用clientAuthEnabled的客户端)的签名私钥
            file: tls/server.key
       
        rootcert:	# 可信任的根CA证书
            file: tls/ca.crt
       
        clientRootCAs:	# 用于验证客户端证书的根证书
            files:
              - tls/ca.crt
       
        clientKey:	# 建立客户端连接时用于TLS的私钥。如果没有设置将使用peer.tls.key
            file:
       
        clientCert:	# 建立客户端连接时用于TLS的证书。如果没有设置将使用peer.tls.cert
            file:

    authentication:	# 与身份验证相关的配置
        timewindow: 15m	# 当前服务器时间与客户端请求消息中指定的客户端时间差异

    fileSystemPath: /var/hyperledger/production	# 文件存储路径

    BCCSP:	# 区块链加密实现
        Default: SW		# 设置SW为默认加密程序  
        SW:	  # SW加密配置(如果默认为SW)       
            Hash: SHA2		# 默认的哈希算法和安全级别
            Security: 256	# 
           
            FileKeyStore:	# 密钥存储位置
            	# 如果为空,默认为'mspConfigPath/keystore'
                KeyStore:
        
        PKCS11:  # PKCS11加密配置(如果默认为PKCS11)
            Library:	# PKCS11模块库位置           
            Label:	# 令牌Label
   
            Pin:
            Hash:
            Security:
            FileKeyStore:
                KeyStore:

	# MSP配置路径,peer根据此路径找到MSP本地配置
    mspConfigPath: msp
    localMspId: SampleOrg	#本地MSP的标识符

    client:	# CLI客户端配置选项
        connTimeout: 3s	# 连接超时

    deliveryclient:	# 订购服务相关的配置        
        reconnectTotalTimeThreshold: 3600s	# 尝试重新连接的总时间
        connTimeout: 3s	# 订购服务节点连接超时
        reConnectBackoffThreshold: 3600s	# 最大延迟时间

    localMspType: bccsp	# 本地MSP类型(默认情况下,是bccsp类型)

	# 仅在非生产环境中与Go分析工具一起使用。在生产中,它应该被禁用
    profile:
        enabled:     false
        listenAddress: 0.0.0.0:6060

	# 用于管理操作,如控制日志模块的严重程度等。只有对等管理员才能使用该服务
    adminService:

	# 定义处理程序可以过滤和自定义处理程序在对等点内传递的对象
    handlers:
        authFilters:
          -
            name: DefaultAuth
          -
            name: ExpirationCheck   
        decorators:
          -
            name: DefaultDecorator
        endorsers:
          escc:
            name: DefaultEndorsement
            library:
        validators:
          vscc:
            name: DefaultValidation
            library:

	# 并行执行事务验证的goroutines的数量(注意重写此值可能会对性能产生负面影响)
    validatorPoolSize:

	# 客户端使用发现服务查询关于对等点的信息
	# 例如——哪些同行加入了某个频道,最新消息是什么通道配置
	# 最重要的是——给定一个链码和通道,什么可能的对等点集满足背书政策
    discovery:
        enabled: true        
        authCacheEnabled: true        
        authCacheMaxSize: 1000       
        authCachePurgeRetentionRatio: 0.75       
        orgMembersAllowedAccess: false
2.2.1.3 vm部分:

对链码运行环境的配置,目前主要支持 Docker 容器

vm:
    endpoint: unix:///var/run/docker.sock	# vm管理系统的端点

    docker:	# 设置docker
        tls:
            enabled: false
            ca:
                file: docker/ca.crt
            cert:
                file: docker/tls.crt
            key:
                file: docker/tls.key

        attachStdout: false	# 启用/禁用链码容器中的标准out/err

		# 创建docker容器的参数
		# 使用用于集群的ipam和dns-server可以有效地创建容器设置容器的网络模式
		# 支持标准值是:“host”(默认)、“bridge”、“ipvlan”、“none”
		# Dns -供容器使用的Dns服务器列表
		#注:'Privileged'、'Binds'、'Links'和'PortBindings'属性不支持Docker主机配置,设置后将不使用
        hostConfig:
            NetworkMode: host
            Dns:
               # - 192.168.0.1
            LogConfig:
                Type: json-file
                Config:
                    max-size: "50m"
                    max-file: "5"
            Memory: 2147483648
2.2.1.4 chaincode部分:

与链码相关的配置

chaincode:
    id:	
        path:
        name:
    # 通用构建器环境,适用于大多数链代码类型
    builder: $(DOCKER_NS)/fabric-ccenv:latest

	# 在用户链码实例化过程中启用/禁用基本docker镜像的拉取
    pull: false

    golang:	# golang的baseos
        runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)
        dynamicLink: false	# 是否动态链接golang链码

    car:
    	# 平台可能需要更多的扩展工具(JVM等)。目前,只能使用baseos
        runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)

    java:
    	# 用于Java链代码运行时,基于java:openjdk-8和加法编译器的镜像
        Dockerfile:  |
            from $(DOCKER_NS)/fabric-javaenv:$(ARCH)-1.1.0

    node:  
    	# js引擎在运行时,指定的baseimage(不是baseos)
        runtime: $(BASE_DOCKER_NS)/fabric-baseimage:$(ARCH)-$(BASE_VERSION)

    startuptimeout: 300s	# 启动超时时间
    executetimeout: 30s		# 调用和Init调用的超时持续时间
    mode: net	# 指定模式(dev、net两种)
    keepalive: 0	# Peer和链码之间的心跳超时,值小于或等于0会关闭

    system:	# 系统链码白名单
        cscc: enable
        lscc: enable
        escc: enable
        vscc: enable
        qscc: enable

    systemPlugins:	# 系统链码插件:
     
    logging:   # 链码容器的日志部分  
      level:  info
      shim:   warning
      format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
2.2.1.5 ledger部分:

分类帐的配置信息。

ledger:
  blockchain:

  state: 
    stateDatabase: goleveldb	# 指定默认的状态数据库
    couchDBConfig:	# 配置couchDB信息
       couchDBAddress: 127.0.0.1:5984	# 监听地址
       username:
       password:
       maxRetries: 3	# 重新尝试CouchDB错误的次数
       maxRetriesOnStartup: 10      # 对等启动期间对CouchDB错误的重试次数 
       requestTimeout: 35s      # 对等启动期间对CouchDB错误的重试次数 
       queryLimit: 10000     # 限制每个查询返回的记录数量  
       maxBatchUpdateSize: 1000      # 限制每个CouchDB批量更新的记录数量
       
       # 值为1时将在每次提交块后对进行索引
       # 增加值可以提高peer和CouchDB的写效率,但是可能会降低查询响应时间
       warmIndexesAfterNBlocks: 1	

  history:	
    enableHistoryDatabase: true		# 是否开启历史数据库
2.2.1.6 metrics部分:
metrics:
    enabled: false	# 启用或禁用metrics服务器
    # 当启用metrics服务器时
    # 必须使用特定的metrics报告程序类型当前支持的类型:“statsd”、“prom”
    reporter: statsd
    interval: 1s	# 确定报告度量的频率

    statsdReporter:
          address: 0.0.0.0:8125	# 要连接的statsd服务器地址
          flushInterval: 2s	# 确定向statsd服务器推送指标的频率
          # 每个push metrics请求的最大字节数 #内部网推荐1432,互联网推荐512
          flushBytes: 1432	

    promReporter:
          listenAddress: 0.0.0.0:8080	# http服务器监听地址

2.2.2 orderer.yaml详解

orderer.yaml 配置文件是 Orderer 节点的示例配置文件,具体路径在 fabric-samples/config 目录下;该 orderer.yaml 示例配置文件中共指定了五大部分内容,详细解释见如下内容。

在 Fabirc 源码中的路径为:$GOPATH/src/github.com/hyperledger/fabric/sampleconfig/orderer.yaml

orderer.yaml 示例配置文件中共指定了五大部分内容:

2.2.2.1 General部分:
General:
    LedgerType: file	# 指定账本类型(可选file、RAM、json三种)
    ListenAddress: 127.0.0.1	# 监听地址
    ListenPort: 7050	# 监听端口号

    TLS:	# GRPC服务器的TLS设置
        Enabled: false	# 默认不启用
        PrivateKey: tls/server.key	# 签名的私钥文件
        Certificate: tls/server.crt	# 证书文件
        RootCAs:	# 可信任的根CA证书
          - tls/ca.crt
        ClientAuthRequired: false
        ClientRootCAs:

    Keepalive:	# GRPC服务器的激活设置
        ServerMinInterval: 60s	# 客户机ping之间的最小允许时间
        ServerInterval: 7200s	# 连接到客户机的ping之间的时间
        ServerTimeout: 20s	# 服务器等待响应的超时时间

    LogLevel: info
   
    LogFormat: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'

    GenesisMethod: provisional	# 生成初始区块的提供方式(可选provisional、file两种)
    GenesisProfile: SampleInsecureSolo	# 用于动态生成初始区块的概要
    GenesisFile: genesisblock	# 生成初始区块的配置文件 
    
    LocalMSPDir: msp	# 本地MSP目录 
    LocalMSPID: SampleOrg	# MSP ID

    Profile:	# 是否为Go“profiling”配置启用HTTP服务
        Enabled: false
        Address: 0.0.0.0:6060

    BCCSP:	# 区块链加密实现
        Default: SW	# 默认使用SW
        SW:
            Hash: SHA2
            Security: 256
            FileKeyStore:
                KeyStore:

    Authentication:	# 与身份验证相关的配置
        TimeWindow: 15m	# # 当前服务器时间与客户端请求消息中指定的客户端时间差异
2.2.2.2 FileLedger部分:

文件账本配置信息

FileLedger:
    Location: /var/hyperledger/production/orderer	# 区块存储路径
    Prefix: hyperledger-fabric-ordererledger	# 在临时空间中生成分类目录时使用的前缀
2.2.2.3 RAMLedger部分:

内存账本配置信息

RAMLedger:
    HistorySize: 1000	# 如果设置为保存在内存中,分类帐最大保留的块的数量
2.2.2.4 Kafka部分:

Kafka 集群的配置信息

Kafka:
    Retry:	# 无法建立到Kafka集群的连接时的重试请求    
        ShortInterval: 5s	# 重试时间间隔
        ShortTotal: 10m		# 重试的总时间
        LongInterval: 5m	# 重试失败后再次发送重试的时间间隔
        LongTotal: 12h		# 重试的最长总时间
        NetworkTimeouts:    # 网络超时设置
            DialTimeout: 10s
            ReadTimeout: 10s
            WriteTimeout: 10s
        Metadata:	# 请求领导人选举时影响元数据的设置
            RetryBackoff: 250ms	# 指定重试的最大时间
            RetryMax: 3	# 重试的最大次数
        Producer:	# 向Kafka集群发送消息失败的设置
            RetryBackoff: 100ms	# 指定重试的最大时间
            RetryMax: 3	# 重试的最大次数
        Consumer:	# 向Kafka集群读取消息失败的设置
            RetryBackoff: 2s	# 指定重试的最大时间

    Verbose: false	# 是否为与Kafka集群的交互启用日志记录

    TLS:	# Orderer连接到Kafka集群的TLS设置
      Enabled: false	# 连接到Kafka集群时是否使用TLS
      PrivateKey:      
      Certificate:       
      RootCAs:

    Version:	# Kafka版本(未指定默认值为0.10.2.0)
2.2.2.5 Debug部分:

调试配置信息

Debug:
    BroadcastTraceDir:	# 对广播服务的每个请求写入此目录中的文件
    DeliverTraceDir:	# 对交付服务的每个请求写入此目录中的文件

FAQ

  1. 这些配置文件的内容需要全部都记下吗?

    不需要死记硬背,重要的是理解这些配置信息都指定的什么重要内容。

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

2.2 Fabric核心配置文件的理解 的相关文章

  • echart重新渲染(新)

    我看别人写的博文并不管用 自己看了api研究了一会 各位码子们 见证奇迹的时刻到了 myChart clear 消除当前实例 option color rgba 65 140 240 1 rgba 0 22 79 1 改变颜色 myChar
  • c++学习之set容器-自定义数据类型指定排序规则

    存放自定义数据类型必须要指定排序规则 include
  • Ubuntu弹窗“System program problem detected”

    Ubuntu系统有时会弹框 System program problem detected 系统在告诉你 你的系统的一部分崩溃了 但并不是一个严重的问题 你的系统是完全可用的 Ubuntu中有内建实用程序叫做Apport Apport是Ub
  • JavaScript学习手册(55)

    变量提升与函数提升 变量提升声明 通过var定义 声明 的变量 在定义语句之前就可以访问到 值 undefined 函数提升声明 通过function声明的函数 在之前就可以调用 值 函数定义 对象 问题 变量提升和函数提升是如何产生的 执
  • Taro小程序 URL、String生成二维码

    先在 wxml 文件中 创建绘制的 canvas 并定义好 width height canvasId
  • 命令执行漏洞挖掘技巧分享

    1 1 前言 1 第三方开源通用框架 第三方类库的使用 如Struts Jenkins等 2 业务逻辑处理直接拼接用户可控参数区执行系统命令或者拼凑回调函数代码 中途无任何安全过滤比如说 应用有时需要调用一些执行系统命令的函数 如PHP中的
  • 实现修改代码后刷新页面即可得到结果

    关于devtools实现热加载 相信很多刚入idea的小伙伴们 对调试一次代码就要重新启动一次服务感到非常的厌倦 那么这次我就来教大家 如何应用devtools这个开发者工具包实现只要启动一次服务器 刷新页面即可得到修改结果的效果 1 首先
  • 20191004在LINUX下如何将tar压缩文件解压到指定的目录下

    百度搜索 tar 解压缩到指定目录 https zhidao baidu com question 9844116 html 在LINUX下如何将tar压缩文件解压到指定的目录下 各位 请教一下在LINUX下如何将tar压缩文件解压到指定的
  • 硬盘安装Freebsd7.0无痛快速版

    硬盘安装Freebsd成功了 安装Freebsd 7 0 最小系统在 我的老笔记本上 toshiba portege 3490ct 用时10分钟 1 去 sourceforge net 下载一个 unetbootinhttp downloa
  • API 和ABI的区别

    应用程序二进制接口 ABI Application Binary Interface 定义了一组在PowerPC系统软件上编译应用程序所需要遵循的一套规则 主要包括基本数据类型 通用寄存器的使用 参数的传递规则 以及堆栈的使用等等 ABI涵
  • 前端CSS权重你了解吗?

    CSS权重 CSS权重指的是样式的优先级 有两条或多条样式作用于一个元素 权重高的那条样式对元素起作用 权重相同的 后写的样式会覆盖前面写的样式 权重的等级 可以把样式的应用方式分为几个等级 按照等级来计算权重 1 important 加在
  • 研究生毕业致谢感言

    时光荏苒 转眼便已进入硕士研究生的尾声 如果以相机倒带的形式回顾过去两年半的时间里 有为了研修学分而奔波于教室和图书馆之间的镜头 有为了做实验写论文埋头苦干到深夜的镜头 有受过打击受过伤害 相然也有喜悦振臂高呼的镜头 硕士研究生的结果很美好
  • python设置画图风格_Python可视化33

    本文详细介绍matplotlib 绘图风格 style 及rcParams设置 本文速览 1 rcParams默认参数修改 rcParams中默认参数绘图 修改rcParams默认参数 取消rcParams参数修改 2 绘图风格设置 wit
  • Python入门之Lambda函数

    匿名函数的定义 在 Python 里有两类函数 第一类 用 def 关键词定义的正规函数 第二类 用 lambda 关键词定义的匿名函数 Python 使用 lambda 关键词来创建匿名函数 而非def关键词 它没有函数名 其语法结构如下
  • Java 读取任意shapefile的所有字段,并插入到MongoDB数据库(Spring Boot)

    文章目录 Java 读取任意shapefile的所有字段 并插入到MongoDB数据库 Spring Boot 1 统一返回结果封装 2 shp文件数据实体封装 3 核心代码 3 可能出现的异常 3 1 异常产生原因 3 2 解决方案 4
  • idea debug高级特性看这篇就够了

    文章目录 多线程调试 循环遍历条件断点 显示方法返回值 调试过程中动态修改变量的值 调试内存泄露 所谓工欲善其事必先利其器 从eclipse转idea也有一段时间了 一直想总结下idea调试的一些高级技巧 debug过程如果高效 撸代码也会
  • Matlab实现图像的比例缩放

    以灰度图像circuit tif为例 利用Matlab图像处理工具箱中的imresize函数对图像进行比例缩放变换 要求 创建4个figure窗口 不可以用subplot 显示不出来放大效果 分别用于显示原始图像 等比例放大1 5倍后的图像
  • 记录--vue+three,制作iview大波浪特效

    这里给大家分享我在网上总结出来的一些知识 希望对大家有所帮助 一 效果图 具体效果可参考iview官方界面iView 一套高质量的UI组件库 大波浪效果 使用的是three js的官方例子 需要先安装three js支持 npm insta

随机推荐

  • mysql用到了 all 和 Using temporary; Using filesort,如何优化?

    使用 EXPLAIN 分析查询的执行计划可以帮助优化查询 这两个标识表示 MySQL 需要使用临时表来执行查询 或者在查询结束时对结果进行排序 这可能会导致查询运行得更慢 要优化查询 你可以尝试以下方法 尽量避免使用 SELECT 而是只选
  • DDD(领域驱动设计)系列主题:聚合和聚合根

    本篇文章主要介绍了聚合根 聚合的概念 然后介绍了聚合的设计过程和原则 以及对比了聚合 聚合根 实体 值对象的特点 思考的问题 为什么要在限界上下文和实体之间增加聚合和聚合根的概念 它们的作用是什么 如何设计聚合 概念和职责 聚合根 如果把聚
  • 2020年数学建模国赛A题:炉温曲线

    2020年高教社杯全国大学生数学建模竞赛题目 请先阅读 全国大学生数学建模竞赛论文格式规范 A题 炉温曲线 在集成电路板等电子产品生产中 需要将安装有各种电子元件的印刷电路板放置在回焊炉中 通过加热 将电子元件自动焊接到电路板上 在这个生产
  • 虚拟机的快捷键

    ctrl alt 鼠标就出来了 ctrl c 中断当前操作
  • 谷粒商城--从入门到入坟(持续更新)第一篇:总体概括

    简介 谷粒商城项目 是尚硅谷的一套基于微服务的电商视频 在网上大受欢迎 本人系大三老狗 准备用大约一个月时间 去拆解该商品的知识点 由点及面 最后希望呈现一个比较好的效果 每个知识点 配套的安装软件及源码也会发布出来 希望有伙伴能一起进步
  • 自定义控件.DateTimePicker_02

    ZC 踩坑过程在 后面 1 在 Generic xaml 中添加内容
  • Unknown system variable 'query_cache_size' 问题终于解决了,原来是这样!

    遇到这种问题搞了半天终于解决 原因 mysql connecter java的版本过低 很显然是数据库驱动程序与数据库版本不对应 查看了一下配置 发现mysql connector java的版本是5 1 37 而我本地mysql版本是8
  • Mysql中explain执行计划信息中字段详解

    Mysql中explain执行计划信息中字段详解 1 获取执行计划 2 字段含义 2 1 id 2 2 select type 2 3 table 2 4 partitions 2 5 type 2 6 possible keys 2 7
  • qt 信号与槽的用法和定义

    转自 http blog csdn net kaffeel article details 5568954 信号和槽是Qt编程的一个重要部分 这个机制可以在对象之间彼此并不了解的情况下将它们的行为联系起来 在前几个例子中 我们已经连接了信号
  • 通过OKhttp3 访问 https地址

    okHttp3添加信任所有证书 return public static OkHttpClient getUnsafeOkHttpClient try final TrustManager trustAllCerts new TrustMa
  • [分布式]可伸缩性最佳实践

    下面是我们认为的一些可伸缩性的最佳实践 异步 尽可能的使用异步 同步调用会导致两个服务的可用性绑在一起 意味着一个服务出问题或变慢 另一个也会受到影响 这点也是eBay一直强调的 泳道设计 错误隔离机制 避免一个失败影响全局 这种机制也有助
  • Pytorch遇到的问题及解决方案 - 更新ing

    1 安装完成后 不能import torch 提示 ImportError dlopen cannot load any more object with static TLS 解决办法 有很多答案都说是将import torch放在imp
  • Arduino学习模拟输入

    1 通过电位器控制led亮度 2 代码很简单 如下 void setup Serial begin 9600 串口初始化 波特率设置为9600 pinMode 9 OUTPUT 设置9脚为输出模式 void loop int analogI
  • CNN+GRU实现验证码端到端识别

    Part 0 模型概览 captcha overview png 从图片到序列实际上就是Image2text也就是seq2seq的一种 encoder是Image decoder是验证码序列 由于keras不支持传统的在decoder部分每
  • 应用配置管理

    本节课程要点 ConfigMaps 和 Secret 资源的创建和使用 Pod 身份认证的实现和原理 容器资源 安全 前置校验等配置和使用 细分为以下八个方面 需求来源 背景问题 首先一起来看一下需求来源 大家应该都有过这样的经验 就是用一
  • STM32F103 USB OTA升级BootLoader (一)

    1 配置外部高速晶振 2 勾选USB功能 3 将USB模式配置Virtual Port Com 4 将系统主频配置为72M USB频率配置为48M 5 配置好项目名称 开发环境 最后获取代码 6 修改Flash大小和勾选Use Micro
  • 人的梦想 是不会结束的!

    文章目录 前言 一 一年之约 1 学习嵌入式 2 探寻嵌入式之路 二 我的心跳 1 奉劝 2 行动 人的梦想是永远不会结束的 前言 随着在程序员这条路上不断发展 自己学得越多 就会感觉自己学的东西有多渺小 下面就说说2019年到2020年的
  • [ 对比学习篇 ] 经典网络模型 —— Contrastive Learning

    Author Horizon Max 编程技巧篇 各种操作小结 神经网络篇 经典网络模型 算法篇 再忙也别忘了 LeetCode 对比学习篇 经典网络模型 Contrastive Learning 01 InstDisc 结构框图 详解 效
  • 非科班自学计算机需要学习什么内容?

    文章目录 前言 一 方向 gt 语言的选择 1 1 语言vs方向 1 2 重要观点 二 自学方法 另外说到计算机相关基础推荐书籍 三 自学资源 前言 非计算机专业 又想通过自学找到计算机相关工作的同学还是很多的 并且这条路也是可行的 毕竟计
  • 2.2 Fabric核心配置文件的理解

    目标 了解Hyperledger Fabric对Peer节点的核心配置信息 了解Hyperledger Fabric对orderer节点的核心配置信息 任务实现 在Hyperledger Fabric中 有两个示例配置文件 一个为Peer节