在 Solana 区块链上,每种代币都需要一个专门的关联账户(Associated Token Account,ATA)来存储余额。这与以太坊等其他区块链不同。SOL(原生代币)不需要特殊的关联账户其他代币(如 USDC、mSOL 等)都需要为每个钱包创建专门的关联账户当您第一次接收某种代币时,需要先创建该代币的关联账户,这需要支付一小笔 SOL 作为租金。解决方案的工作原理当您交换 SOL 到 mSOL 时,系统会检测到您没有 mSOL 的关联账户通过设置 SkipUserAccountsCheck: true,我们告诉 Jupiter API 自动创建所需的账户交易中会包含创建账户的指令,并从您的 SOL 余额中扣除一小笔租金(约 0.002 SOL)使用建议确保您的钱包中有足够的 SOL 来支付:交易费用(约 0.000005 SOL)代币账户租金(约 0.002 SOL,如果需要创建新账户)实际交换的 SOL 金额

neededDiamonds := (shortage + rate - 1) / rate这是一个整数除法的向上取整技巧,让我用例子来说明:假设缺少的资源(shortage)是1500个生肉,兑换比例(rate)是2000(即1钻石=2000生肉):正常除法:1500 ÷ 2000 = 0.75钻石整数除法:1500 / 2000 = 0(因为Go语言中整数除法会舍弃小数部分)向上取整公式:(1500 + 2000 - 1) / 2000 = 3499 / 2000 = 1再举一个例子,如果缺少2001个生肉:正常除法:2001 ÷ 2000 = 1.0005钻石整数除法:2001 / 2000 = 1向上取整公式:(2001 + 2000 - 1) / 2000 = 4000 / 2000 = 2这个公式的原理是:如果shortage正好是rate的整数倍,结果就是整除的结果如果shortage不是rate的整数倍,结果会比整除多1,实现了向上取整

Shell脚本实现#!/bin/bash echo "开始发布" cd /run-path echo "同步代码" git pull echo "编译项目" go build -o /build-file-path -ldflags "-w -s" ./ echo "停止当前服务" pid=$(ps -ef | grep 'keyword' | grep -v grep | awk '{print $2}') if [ -n "$pid" ]; then kill -9 $pid else echo "服务未启动" fi echo "重启新服务" cd /run-path/ sleep 1 echo "重启新服务" if [[ -f "${release_dir}build_last" ]]; then echo "存在新版本文件,尝试替换

https://www.bootcdn.cn/

sudo -u www bash -c 'php test.php -d "$(date +%Y-%m-%d)"'