11 2024 档案
摘要:在 MySQL 中,索引的使用可以大大提升查询性能,但在某些情况下,索引可能会失效,导致 MySQL 无法利用索引,转而进行全表扫描或其他低效操作。以下是索引失效的常见情况: 1. 查询条件导致索引失效 条件中使用了函数: 如果查询条件中的列被函数包裹,MySQL 无法利用索引。 示例: SELEC
阅读全文
摘要:MySQL 索引覆盖(Covering Index) 是一种优化查询性能的技术,指的是查询所需的所有列的数据都能够从索引中获取,不需要再回表查询数据。 1. 索引覆盖的概念 覆盖索引(Covering Index) 是一种索引,它包含了 SQL 查询中涉及的所有列(包括查询列和条件列),不需要额外访
阅读全文
摘要:1. 缓存击穿 含义 缓存击穿是指某个 热点数据 恰好在缓存过期后,大量请求直接访问数据库,导致数据库压力骤增。 典型场景 某些数据是高频访问的热点数据,比如抢购活动中热门商品的库存。 由于该数据缓存时间到期,在缓存中失效,瞬间大量请求涌向数据库。 解决方案 热点数据提前续期: 在缓存接近失效时间时
阅读全文
摘要:1. Map 的主要结构 map 的底层数据结构定义在 Go 源码的 runtime 包中,其核心结构体是 hmap。Go 的 map 使用 哈希表 存储键值对,并结合了**桶(bucket)**机制来优化存储和查找。 hmap 的主要字段 count:存储的键值对数量。 buckets:哈希桶的数
阅读全文
摘要:在Go语言中,自定义类型可以帮助我们更好地组织代码和增强可读性。在本篇博客中,我们将探讨如何创建一个自定义类型,并将其与Swagger文档集成,以便在API中正确序列化和展示。 1. 创建自定义类型 首先,我们定义一个名为 RechargeType 的自定义类型。这个类型将用于表示不同的充值方式。
阅读全文
摘要:在区块链开发中,我们经常需要处理 原生代币,如以太坊(ETH)或 Binance Smart Chain(BNB)。这些代币在区块链网络中充当了重要角色,它们不仅是交易的媒介,还是支付交易费用(gas)的主要手段。但在与智能合约交互时,我们如何表示这些代币呢?特别是当这些代币没有合约地址时,如何统一
阅读全文
摘要:func (t TonApiServiceImpl) TransferToken(ctx context.Context, tokenContractAddr string, toAddr string, amount big.Int) (string, error) { recipientAddr
阅读全文
摘要:1. 什么是 Restake? Restake 是一种机制,允许用户将其质押收益自动再质押,从而最大化其投资回报。质押通常涉及将资产锁定在区块链网络中,以获取区块奖励,而 Restake 机制通过自动化再质押过程,使得用户能够持续增加其质押资产,而无需手动操作。 2. Restake 的工作原理 R
阅读全文
摘要:LST(Liquid Staking Token)简介与合约实现 1. 什么是 LST? LST,即 Liquid Staking Token,是一种新兴的数字资产类型,旨在解决传统质押(Staking)中的流动性问题。在传统的质押机制中,用户将其代币锁定在区块链网络中,以获得区块奖励,但在锁定期间
阅读全文
摘要:如何实现 NFT 合约 1. 什么是 NFT 和 NFT 合约 NFT(Non-Fungible Token,非同质化代币)是一种具有唯一性、不可互换的数字资产,通常用于区块链上实现资产的认证与交易。NFT 合约通过智能合约来管理资产的所有权、交易和访问权限,广泛应用于艺术品、游戏道具和虚拟地产等领
阅读全文