读懂以太坊源码(3)-详细解析genesis.json

news2024/9/27 12:11:19

要想搞懂以太坊的源代码逻辑,必须要了解以太坊创世区块配置文件(genesis.json)的结构,以及每个配置参数的意义,创世配置文件,主要作用是设置链的ID,指定以太坊网络中硬分叉发生的区块高度,以及初始ETH数量的初始分配,以下的json代码是以太坊主网的创世配置文件的原始文件和简要说明,本文后续有更详细的说明,由于genesis.json文件包含了大量的众筹地址和数量,实在是太长了,所以这里省略了其中大量的众筹地址和分配数量,其它参数保持不变。

{
    "config": {
        "chainId": 1,  //表示以太坊网络的链 ID,这里设置为 1,代表以太坊主网。
        "homesteadBlock": 1150000,  //Homestead 硬分叉发生的区块编号,后文详细解释。
        "daoForkBlock": 1920000,       // DAO 硬分叉发生的区块编号,后文详细解释。
        "daoForkSupport": true,          //节点将遵循DAO硬分叉后的规则。
        "eip150Block": 2463000,         //实施 EIP-150硬分叉的区块编号,后文详解。
        "eip155Block": 2675000,         //实施 EIP-155硬分叉的区块编号,后文详解。
        "eip158Block": 2675000,         //实施 EIP-158硬分叉的区块编号,后文详解。
        "byzantiumBlock": 4370000,     //Byzantium 硬分叉发生的区块编号,后文详解。
        "constantinopleBlock": 7280000,   //byzantiumBlock硬分叉发生的区块编号,后文详解。
        "petersburgBlock": 7280000,     //petersburgBlock硬分叉发生的区块编号,后文详解。
        "istanbulBlock": 9069000,         //petersburgBlock硬分叉发生的区块编号,后文详解。
        "muirGlacierBlock": 9200000,    //petersburgBlock硬分叉发生的区块编号,后文详解。
        "berlinBlock": 12244000,          //petersburgBlock硬分叉发生的区块编号,后文详解。
        "londonBlock": 12965000,       //petersburgBlock硬分叉发生的区块编号,后文详解。
        "arrowGlacierBlock": 13773000,   //petersburgBlock硬分叉发生的区块编号,后文详解。
        "grayGlacierBlock": 15050000,   //petersburgBlock硬分叉发生的区块编号,后文详解。
        "shanghaiTime": 1681338455,   //petersburgBlock硬分叉发生的区块编号,后文详解。
        "cancunTime": 1710338135,      //petersburgBlock硬分叉发生的区块编号,后文详解。
        "terminalTotalDifficulty": 58750000000000000000000,   //太坊网络在达到特定状态时的总难度目标值
        "terminalTotalDifficultyPassed": true,  //否已经超过了终端总难度
        "ethash": {  //以太坊在从工作量证明(PoW)阶段使用的一种挖矿算法

        }
    },
    "nonce": "0x42",   //参与hash计算的随机数
    "timestamp": "0x0",   //指定了创世区块的创建时间
      //extraData表示任意的额外信息,辅助节点验证和处理,区分不同的创世区块和网络
    "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
    "gasLimit": "0x1388",  //代表了在一个区块中可以消耗的最大 gas 数量
    "difficulty": "0x400000000",  //代表了在以太坊网络中挖掘一个新的区块的难度级别
      //mixHash以太坊区块挖掘过程相关的哈希值
    "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
      //coinbase创世区块中被指定为接收挖矿奖励的地址,0表示黑洞地址,不属于任何人
    "coinbase": "0x0000000000000000000000000000000000000000",  //
    "alloc": {  //众筹地址的初始ETH分配
        "000d836201318ec6899a67540690382780743280": {
            "balance": "0xad78ebc5ac6200000"
        },
        "001762430ea9c3a26e5749afdb70da5f78ddbb8c": {
            "balance": "0xad78ebc5ac6200000"
        },
        "001d14804b399c6ef80e64576f657660804fec0b": {
            "balance": "0xe3aeb5737240a00000"
        },
        //.......此处省略了大量的众筹地址和数量
        "fff33a3bd36abdbd412707b8e310d6011454a7ae": {
            "balance": "0x1b1ae4d6e2ef5000000"
        },
        "fff4bad596633479a2a29f9a8b3f78eefd07e6ee": {
            "balance": "0x56bc75e2d63100000"
        },
        "fff7ac99c8e4feb60c9750054bdc14ce1857f181": {
            "balance": "0x3635c9adc5dea00000"
        }
    },
    "number": "0x0",   //创世区块的高度 0
    "gasUsed": "0x0",  //创世区块实际消耗的gas单位数量
      //parentHash,上一个区块头hash值
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "baseFeePerGas": null,   //太坊网络中进行交易时每单位 gas 所需支付的基础费用
    "excessBlobGas": null,   //区块中超出特定限制的用于存储和处理数据块(blob)的额外 gas 数量。
    "blobGasUsed": null     //一个特定的区块中已经使用的用于处理数据块(blob)的 gas 数量
}

下面是对genesis.json文件中指定的重要硬分叉的详细说明

homesteadBlock

一、含义

“homesteadBlock” 指定了以太坊主网中 Homestead 硬分叉发生的区块编号。Homestead 是以太坊网络发展中的一个重要阶段。

二、主要变化和影响

  1. 改进的安全性:Homestead 带来了一些安全方面的改进,包括对合约创建的更严格验证和一些潜在漏洞的修复。这使得以太坊网络更加稳定和可靠,降低了因合约漏洞而导致的资金风险。
  2. 增强的功能:引入了一些新的功能和改进,例如对交易签名的优化和一些合约执行效率的提升。这些改进有助于提高以太坊网络的性能和可用性。
  3. 开发者友好性:Homestead 使得以太坊的开发环境更加友好,为开发者提供了更好的工具和文档。这促进了以太坊生态系统的发展,吸引了更多的开发者参与到智能合约和去中心化应用的开发中。

三、对网络的整体影响

  1. 网络升级:Homestead 硬分叉是以太坊网络的一次重要升级,标志着以太坊从早期的实验阶段向更加成熟和稳定的阶段发展。它为后续的硬分叉和网络改进奠定了基础。
  2. 社区参与:硬分叉通常需要社区的广泛参与和支持。在 Homestead 硬分叉过程中,以太坊社区积极参与讨论和测试,确保了分叉的顺利进行。这种社区参与对于以太坊的发展至关重要,有助于保持网络的去中心化和安全性。
  3. 生态系统发展:Homestead 硬分叉促进了以太坊生态系统的发展,吸引了更多的项目和用户参与到以太坊网络中。这推动了智能合约和去中心化应用的创新,为区块链技术的广泛应用提供了更多的可能性。

daoForkBlock

一、背景

  1. The DAO 事件:The DAO(Decentralized Autonomous Organization)是一个建立在以太坊上的去中心化自治组织,通过智能合约筹集了大量资金。然而,由于智能合约存在漏洞,导致资金面临被恶意攻击者窃取的风险。为了应对这一危机,以太坊社区决定进行硬分叉来挽回被攻击的资金。

二、主要影响

  1. 网络分裂:DAO 硬分叉导致了以太坊网络的分裂。一部分节点选择支持硬分叉,将被攻击的资金恢复到原始所有者手中,形成了现在的以太坊主网。而另一部分节点坚持不进行硬分叉,继续运行原来的链,即以太坊经典(Ethereum Classic)。这种分裂引发了关于区块链的不可变性、去中心化和社区治理等重要问题的广泛讨论。
  2. 社区治理:DAO 事件凸显了以太坊社区治理的重要性。在决定是否进行硬分叉以及如何实施硬分叉的过程中,社区成员进行了激烈的讨论和投票。这一事件促使以太坊社区进一步完善了治理机制,以更好地应对未来可能出现的危机。
  3. 技术改进:DAO 硬分叉也促使以太坊开发者对智能合约的安全性进行了更深入的研究和改进。此后,以太坊在智能合约的开发和审计方面采取了更加严格的标准,以提高整个网络的安全性。

三、对以太坊发展的意义

  1. 危机应对:DAO 硬分叉展示了以太坊社区在面对重大危机时的应对能力。通过集体决策和技术手段,社区成功地保护了用户的资金安全,维护了以太坊网络的稳定。这一事件也为其他区块链项目提供了宝贵的经验教训,即在面对安全漏洞和危机时,应及时采取果断措施,同时充分考虑社区的意见和利益。
  2. 治理模式探索:DAO 事件引发的社区治理讨论推动了以太坊治理模式的不断探索和完善。以太坊社区逐渐形成了一套包括开发者、矿工、用户和社区成员在内的多元化治理体系,通过投票、提案和讨论等方式共同决定网络的发展方向。这种治理模式为区块链技术的可持续发展提供了有益的借鉴。
  3. 技术创新动力:DAO 硬分叉促使以太坊开发者更加重视智能合约的安全性和可靠性,推动了技术创新的不断发展。此后,以太坊在智能合约的安全性审计、形式化验证和漏洞修复等方面取得了显著进展,为区块链技术的广泛应用奠定了更加坚实的基础。

eip150Block

“eip150Block” 参数指定了以太坊网络中实施 EIP-150(Ethereum Improvement Proposal 150)硬分叉的区块编号。

一、EIP-150 的背景和目的

  1. 解决 gas 消耗问题:EIP-150 的主要目的之一是调整以太坊虚拟机(EVM)中某些操作码的 gas 消耗,以更合理地反映这些操作的实际成本。这有助于防止某些恶意或低效的合约消耗过多的 gas,从而提高网络的整体效率和稳定性。
  2. 增强安全性:该提案还包括一些安全改进,例如对某些潜在的攻击向量进行防范。通过调整 gas 消耗和加强安全性,EIP-150 旨在提高以太坊网络的可靠性和抗攻击能力。

二、对以太坊网络的影响

  1. 交易成本变化:随着 EIP-150 的实施,某些交易的 gas 成本可能会发生变化。这可能会影响开发者和用户在以太坊上进行交易和部署智能合约的决策。开发者需要重新评估他们的合约代码,以确保在新的 gas 消耗规则下仍然能够正常运行,并尽可能降低交易成本。
  2. 网络性能提升:通过优化 gas 消耗和提高安全性,EIP-150 有助于提升以太坊网络的性能。这可以减少网络拥堵,提高交易确认速度,为用户提供更好的体验。
  3. 生态系统发展:EIP-150 的实施也对以太坊生态系统的发展产生了影响。它促使开发者更加关注 gas 效率和安全性,推动了智能合约开发工具和最佳实践的不断改进。同时,它也为以太坊的进一步升级和改进奠定了基础,促进了整个生态系统的持续发展。

三、在创世文件中的作用

  1. 定义网络发展阶段:“eip150Block” 参数在创世文件中明确了 EIP-150 硬分叉在以太坊网络发展历程中的位置。它标志着网络在特定区块高度进行了重要的升级和改进。这有助于节点在启动时确定自己所处的网络状态,并根据相应的规则进行操作。
  2. 确保一致性:通过在创世文件中指定 EIP-150 的实施区块编号,所有节点都可以遵循相同的升级路径,确保网络的一致性和稳定性。这对于维护以太坊的去中心化特性和安全性至关重要。

byzantiumBlock

一、Byzantium 硬分叉的背景和目的

  1. 提升安全性和稳定性:Byzantium 硬分叉引入了一系列的安全改进,包括对智能合约执行的更严格验证、对某些潜在漏洞的修复等。这些改进旨在增强以太坊网络的安全性和稳定性,降低因合约漏洞或恶意攻击而导致的风险。
  2. 改进智能合约功能:该硬分叉还带来了一些新的智能合约功能和优化。例如,引入了新的操作码,使得智能合约的开发更加灵活和高效。同时,对一些现有的功能进行了改进,提高了智能合约的性能和可扩展性。
  3. 适应不断发展的需求:随着以太坊生态系统的不断发展,对网络的功能和性能提出了更高的要求。Byzantium 硬分叉是为了满足这些需求而进行的一次重要升级,为开发者和用户提供更好的体验。

二、对以太坊网络的影响

  1. 开发者和用户的影响:对于开发者来说,Byzantium 硬分叉可能需要对现有的智能合约进行一些调整和优化,以确保在新的规则下能够正常运行。同时,新的功能和操作码也为开发者提供了更多的创新空间。对于用户来说,硬分叉可能会带来一些交易成本的变化和性能的提升。用户需要关注网络的升级动态,以便更好地适应新的环境。
  2. 网络性能和可扩展性:Byzantium 硬分叉通过引入新的功能和优化,有助于提高以太坊网络的性能和可扩展性。这可以减少交易确认时间,提高网络的吞吐量,为更多的应用和用户提供支持。
  3. 生态系统发展:硬分叉对以太坊生态系统的发展也产生了积极的影响。它吸引了更多的开发者和项目参与到以太坊网络中,推动了智能合约和去中心化应用的创新。同时,也促进了相关工具和服务的发展,为整个生态系统的繁荣做出了贡献。

三、在创世文件中的作用

  1. 定义网络发展阶段:“byzantiumBlock” 参数在创世文件中明确了 Byzantium 硬分叉在以太坊网络发展历程中的位置。它标志着网络在特定区块高度进行了重要的升级和改进,为后续的发展奠定了基础。
  2. 确保一致性:通过在创世文件中指定硬分叉的实施区块编号,所有节点都可以遵循相同的升级路径,确保网络的一致性和稳定性。这对于维护以太坊的去中心化特性和安全性至关重要。

总之,“byzantiumBlock” 参数在以太坊创世文件中具有重要的意义,它指定了 Byzantium 硬分叉的实施位置,对以太坊网络的安全性、功能、性能和生态系统发展产生了深远的影响。

constantinopleBlock

一、Constantinople 硬分叉的背景和目的

  1. 性能提升:Constantinople 硬分叉旨在提高以太坊网络的性能。它引入了一些优化措施,如降低某些操作的 gas 消耗,提高智能合约的执行效率。这有助于减少交易成本,加快交易确认速度,提升整个网络的吞吐量。
  2. 开发者友好性:该硬分叉还为开发者带来了一些便利。例如,引入了新的操作码和语法,使得智能合约的开发更加简洁和高效。同时,对一些现有功能进行了改进,提高了开发者的开发体验。
  3. 为后续升级做准备:Constantinople 硬分叉也是为了为以太坊的后续升级奠定基础。它为未来的改进和扩展提供了一些基础设施和技术支持,使得以太坊能够更好地适应不断变化的市场需求和技术发展。

二、对以太坊网络的影响

  1. 交易成本和效率:由于降低了某些操作的 gas 消耗,交易成本可能会有所下降。同时,交易确认速度的加快也提高了网络的效率,使得用户能够更快地完成交易。
  2. 开发者生态:对开发者友好的改进吸引了更多的开发者参与到以太坊生态系统中。新的操作码和语法为开发者提供了更多的创新空间,促进了智能合约和去中心化应用的发展。
  3. 网络升级路径:Constantinople 硬分叉标志着以太坊网络的一次重要升级,为后续的升级和改进指明了方向。它展示了以太坊社区不断努力提升网络性能和功能的决心。

三、在创世文件中的作用

  1. 定义网络发展阶段:“constantinopleBlock” 参数在创世文件中明确了 Constantinople 硬分叉在以太坊网络发展历程中的位置。它是以太坊网络发展的一个重要里程碑,标志着网络进入了一个新的阶段。
  2. 确保一致性:通过在创世文件中指定硬分叉的实施区块编号,所有节点都可以遵循相同的升级路径,确保网络的一致性和稳定性。这对于维护以太坊的去中心化特性和安全性至关重要。

petersburgBlock

一、Petersburg 硬分叉的背景和目的

  1. 紧急修复:Petersburg 硬分叉通常是作为对之前硬分叉(如 Constantinople)中发现的潜在安全问题的紧急修复而引入的。它的目的是迅速解决可能影响网络安全和稳定性的漏洞。
  2. 兼容性和一致性:确保以太坊网络的不同客户端和节点能够保持兼容性和一致性。通过及时进行硬分叉,可以避免因潜在问题而导致的网络分裂或不一致的情况发生。

二、对以太坊网络的影响

  1. 安全性提升:通过修复潜在的安全漏洞,Petersburg 硬分叉增强了以太坊网络的安全性。这有助于保护用户的资金和数据安全,维护网络的稳定运行。
  2. 网络稳定性:确保网络的稳定运行,减少因漏洞或不一致性而导致的中断或故障的风险。这对于依赖以太坊网络的各种应用和服务至关重要。
  3. 开发者和用户注意事项:对于开发者来说,可能需要根据硬分叉的变化对智能合约进行检查和调整,以确保其在新的网络环境下正常运行。用户也需要关注硬分叉的实施,了解可能对其使用的钱包和应用产生的影响。

三、在创世文件中的作用

  1. 记录历史升级:“petersburgBlock” 参数在创世文件中记录了 Petersburg 硬分叉在以太坊网络发展历程中的位置。这有助于后人了解网络的升级历史和演进过程。
  2. 确保节点同步:当节点启动时,创世文件中的参数可以帮助节点确定自己所处的网络状态,并与其他节点同步到正确的硬分叉版本。这对于维护网络的一致性和可靠性至关重要。

istanbulBlock

一、Istanbul 硬分叉的背景和目的

  1. 性能优化:Istanbul 硬分叉旨在进一步提高以太坊网络的性能。它引入了一系列的改进措施,包括降低某些操作的 gas 消耗、优化智能合约执行等,以减少交易成本和提高交易处理速度。例如,对一些复杂的操作码进行了调整,使其更加高效地执行,从而提升整个网络的吞吐量。
  2. 安全性增强:除了性能优化,Istanbul 硬分叉也注重安全性的提升。它可能包括对潜在的安全漏洞进行修复,加强网络的抗攻击能力。例如,对某些可能被恶意利用的操作进行限制,提高网络的安全性和稳定性。
  3. 适应生态发展:随着以太坊生态系统的不断发展,新的需求和挑战不断涌现。Istanbul 硬分叉是为了适应这些变化,为开发者和用户提供更好的支持。它可能引入新的功能或改进现有功能,以满足不断增长的去中心化应用(DApp)和智能合约的需求。

二、对以太坊网络的影响

  1. 开发者影响:对于开发者来说,Istanbul 硬分叉可能需要对现有的智能合约进行一些调整和优化,以确保在新的规则下能够正常运行。新的 gas 消耗规则和操作码的变化可能会影响合约的执行成本和效率,开发者需要重新评估和优化他们的代码。同时,硬分叉也可能带来新的开发机会和挑战,促使开发者探索新的技术和应用场景。
  2. 用户影响:对用户而言,Istanbul 硬分叉可能会带来交易成本的降低和交易速度的提升。这将改善用户体验,使以太坊网络更加便捷和高效。然而,用户也需要关注钱包和服务提供商的更新,以确保他们的资产安全和正常使用。
  3. 网络生态影响:Istanbul 硬分叉对以太坊的生态系统产生了积极的影响。它促进了 DApp 的发展和创新,吸引更多的开发者和用户参与到以太坊网络中。同时,硬分叉也推动了相关工具和服务的不断完善,为整个生态系统的繁荣做出了贡献。

三、在创世文件中的作用

  1. 定义网络发展阶段:“istanbulBlock” 参数在创世文件中明确了 Istanbul 硬分叉在以太坊网络发展历程中的位置。它标志着网络在特定区块高度进行了重要的升级和改进,为后续的发展奠定了基础。创世文件记录了以太坊网络的初始状态和发展轨迹,而硬分叉参数则是其中的重要组成部分,反映了网络的不断演进。
  2. 确保一致性:通过在创世文件中指定硬分叉的实施区块编号,所有节点都可以遵循相同的升级路径,确保网络的一致性和稳定性。这对于维护以太坊的去中心化特性和安全性至关重要。不同的节点需要在相同的规则下运行,以保证交易的有效性和网络的正常运行。

shanghaiTime

一、意义

  1. 升级标志:“shanghaiTime” 明确了上海硬分叉在时间维度上的位置,标志着以太坊网络进入一个新的发展阶段。它是以太坊不断演进和改进的重要里程碑。这个参数为节点提供了一个明确的时间参考,以便在适当的时候进行升级准备和切换到新的硬分叉版本。
  2. 功能引入:上海硬分叉通常会引入一系列新的功能和改进。例如,可能包括对以太坊虚拟机(EVM)的优化、改进交易处理效率、增强网络安全性等。“shanghaiTime” 的设定确保了整个网络能够在统一的时间点启用这些新功能,从而实现平稳过渡和协调发展。
  3. 开发者和用户准备:对于开发者来说,“shanghaiTime” 提供了一个明确的时间表,使他们能够提前规划和准备应对硬分叉带来的变化。他们可以根据这个时间来调整智能合约、开发工具和应用程序,以确保在硬分叉后能够正常运行。对于用户来说,了解 “shanghaiTime” 可以帮助他们做好相应的准备,例如更新钱包软件、关注交易的处理时间和费用变化等。
  4. 网络协调:在去中心化的以太坊网络中,协调各个节点的升级是至关重要的。“shanghaiTime” 作为一个统一的时间参考,有助于确保节点在大致相同的时间进行升级,减少网络分裂和不一致性的风险。它促进了整个以太坊生态系统的协同发展,确保不同的参与者(矿工、节点运营商、开发者、用户等)能够在同一时间框架内适应新的网络规则。

二、影响

  1. 技术层面:上海硬分叉可能会对以太坊的技术架构产生重大影响。新的功能和改进可能会改变智能合约的执行方式、交易处理流程和网络的整体性能。这可能需要开发者进行相应的调整和优化,以充分利用新的特性并确保应用程序的兼容性。
  2. 经济层面:硬分叉可能会对以太坊的经济模型产生影响。例如,新的交易费用机制、Gas 限制的调整等可能会改变用户和开发者的成本结构。同时,硬分叉也可能会影响以太币的价格和市场预期,因为它代表了以太坊网络的发展和创新。
  3. 社区层面:上海硬分叉是以太坊社区共同努力的结果,它体现了社区对网络发展的决策和贡献。这个过程通常伴随着广泛的讨论、测试和协作,促进了社区的凝聚力和发展。同时,硬分叉也可能引发不同观点的讨论和争议,进一步推动社区的治理和决策机制的完善。

关于众筹地址初始分配

众筹地址和基金会地址总共:8893个

总数量:7200多万个ETH

众筹地址共收到8,947个交易,来自8,892个不重复的地址,有两个地址是在众筹时间段之外支付的,所以这两个地址不能获得以太币。

第一笔交易发生在2014年7月20日,应该是在测试,并且在众筹开始之前进行多项测试,以保证众筹中不出现差错。

以太币众筹的时间是2014年7月22日-2014年9月2日,共42天。兑换比例:前14天每1BTC兑换2000ETH,之后每天1BTC兑换的ETH数额减少30,直到1337ETH后不再减少。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2109823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【系统分析师】-软件测试

目录 1、测试的类型 1.1、动态测试 1.1.1、黑盒法 1.1.2、白盒法 1.1.3、灰盒法 1.2、静态测试 2、测试阶段 2.1、单元测试 2.2、集成测试 2.3、确认测试 2.4、系统测试 3、性能测试 3.1、性能测试的目的 3.2、性能测试的类型 3.3、性能测试的步骤 5、测试设计…

【操作系统存储篇】Linux文件基本操作

目录 一、Linux目录 二、Linux文件的常用操作 三、Linux文件类型 一、Linux目录 Linux有很多目录,Linux一切皆是文件,包括进程、设备等。 相对路径:相对于当前的操作目录,文件位于哪个目录。 绝对路径 :从根目录开…

面对AI时代快车,你没必要跟车赛跑,而是应该先去考个驾照!

在当今人工智能领域,代码生成和编辑工具成为了开发者们手中的利器。昨天,零一万物公司再次展示了他们在开源社区中的领导地位,开源了 Yi-Coder 系列编程助手模型,这一举措不仅标志着该公司继今年5月开源Yi-1.5系列模型后的又一重大…

智能提醒助理系列-服务号静默登录

本系列文章记录“智能提醒助理”wx公众号 建设历程,记录实践经验、巩固知识点、锻炼总结能力。 本文介绍,如何让用户进入公众号之后就锁定用户,使用既注册,进入既可使用功能,去掉繁琐的登录认证流程。 一、需求出发点 …

告别单调,Xmind思维导图之后还有这三款神器,让学习工作更愉快

这年头信息量爆炸,我们得想办法把事情想清楚、把活儿排排好、学点新玩意儿。思维导图这东西,因为它画出来一目了然,用起来也简单,所以特别受学生们和上班的人的欢迎。在这么多画思维导图的软件里,Xmind因为功能全、界面…

02【SQL sever 2005数据库安装教程】

一、安装须知 1.安装数据库版本:SQL sever 2005 2.适用系统(目前发现):Windows server 2008 R2 3.安装程序目录:SQL2005\SQL Server x64\Servers\setup.exe 二、安装步骤 1.双击setup.exe,以…

c++编程(25)——unordered_map模拟实现

欢迎来到博主的专栏:c编程 博主ID:代码小豪 文章目录 unorder_map的底层insert迭代器成员访问函数operatoroperator-\- unordered_map是STL中的关联式容器之一,与常规的map有两点不同 (1)unordered是无序的意思&#x…

AI与我同创诗:尝试让ai(智谱清言)参与我的诗创活动

ai伴学越久,契合度愈高,“泛滥”之诗情,幸得学伴共雕琢。让ai伴学久了,不知觉的,写诗也让ai帮衬了。此文收录“我共ai”的自创文稿,亦可作“ai诗集”。😋 (笔记模板由python脚本于2024年09月03日…

企业微信中嵌套的h5应用调用微信扫码功能

企业微信官方文档 1.登录企业微信后台,管理员可操作,打开应用配置应用可信域名(必须配置,否则无法调用jsapi,可信域名必须有ICP备案且在管理端验证域名归属) 配置部署后的前台域名地址 配置可信域名,部署后的服务器域名(需备案认证) 当域名权限不够时需下载文件效验,将文件放…

网站开发:HTML + CSS - CSS选择器

1. 前言 CSS(Cascading Style Sheets,层叠样式表)是一种用于控制 HTML 文档样式和布局的语言。它为 Web 页面提供了许多功能,使开发者能够创建美观且功能丰富的用户界面。 提供了丰富的功能来控制网页的外观和布局,增…

掌握SQLAlchemy:Python数据库的魔法师

文章目录 掌握SQLAlchemy:Python数据库的魔法师背景:为什么选择SQLAlchemy?SQLAlchemy是什么?如何安装SQLAlchemy?五个简单的库函数使用方法1. 创建引擎2. 定义模型3. 创建会话4. 添加数据5. 查询数据 场景应用1. 多表…

大模型构建合作性的Agent,多代理框架MetaGpt

大模型构建合作性的Agent,多代理框架MetaGpt 前言 MetaGPT 框架将标准的操作程序(SOP)与基于大模型的多智能体相结合,使用标准操作程序来编码提示,确保协调结构化和模块化输出。 MetaGPT 允许 Agent 在类似流水线的范式中扮演多中角色,通过结构化的 Agent 协作和强化领…

Android Studio 加载多个FLutter项目

按顺序操作即可 选择工程 选择Modules, 导入 module 选中创建module 选择要导入的目录,只选择主目录,下面的文件不要选 添加完成,点击ok后,会进行导入 最终导入成功

三星称霸全球市场,但它在中国市场再受打击,将进一步收缩业务

韩国媒体报道指三星已计划进一步收缩中国业务,将中国的销售和生产部门人员减少一部分,其中销售人员计划减少8%左右,显示出它在中国市场继续面临打击,对于这家在全球市场领先地位仍然稳固的企业来说,它在中国市场无疑又…

OpenCV结构分析与形状描述符(8)点集凸包计算函数convexHull()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 查找一个点集的凸包。 函数 cv::convexHull 使用斯克拉斯基算法(Sklansky’s algorithm)来查找一个二维点集的凸包&#…

Wyn 商业智能V8.0 新版本来袭,解锁“智造”的无限可能

Wyn商业智能V8.0 版本全新发布,聚焦制造业数字化升级痛点,深度赋能制造业数字化转型升级之路,从无缝集成物联网海量数据,到构建可视化实时分析、监控与预警大屏,全面打通生产制造全生命周期的数据脉络,为您…

免费OCR 文字识别工具

免费:本项目所有代码开源,完全免费。 方便:解压即用,离线运行,无需网络。 高效:自带高效率的离线OCR引擎,内置多种语言识别库。 灵活:支持命令行、HTTP接口等外部调用方式。 功能…

hiprint打印/jsPDF使用/html2canvas

最初我知道hiprint.print是可以打印双模板的,于是查看hiprint.print的源码发现底层实现是this.getHtml(t).hiwprint,于是断点查看getHtm的实现,得知它是遍历我们对print传参的list,利用list中模板对象的getHtml()方法得到模板的dom对象&#…

论文120:Giga-SSL: Self-supervised learning for gigapixel images (2023, CVPR, 开源)

文章目录 1 要点2 方法2.1 算法设计2.2 设计选择 1 要点 题目:用于千兆像素图像的自监督学习 (Giga-SSL: Self-Supervised Learning for Gigapixel Images) 代码:https://github.com/trislaz/gigassl 研究目的: 现有的WSI分类方法依赖于有…

告别格式不兼容烦恼!ape转换mp3,分享3个简单方法

各位读者们,你们是否有过这种体验:满怀期待地在网上下载一首好听的歌曲,结果怎么点击手机都播放不了,定睛一看,弹窗显示“无法播放该音频文件”。这是为什么呢?原来那首歌的音频格式是ape,不被手…