From 87f9c7994dd1445d50f8921422ec23a9368e4d28 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Sat, 3 Oct 2026 19:42:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E5=AE=9E=E6=B5=8B=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E9=94=81=E5=8D=95=E5=90=8E=E6=94=AF=E4=BB=98=E9=97=B4=E9=9A=94?= =?UTF-8?q?=E5=B9=B6=E5=9C=A8=E6=97=A5=E5=BF=97=E8=A1=A8=E5=A4=B4=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E7=89=88=E6=9C=AC=E5=8F=B7=EF=BC=8C=E5=8F=91=E5=B8=83?= =?UTF-8?q?0.3.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 锁单后首次支付的等待从 0.3-0.7 秒改回 2.3-3.0 秒。斗鱼对"锁单→支付"存在最短间隔: 2026-10-03 19:38 的模拟里,+0.50s/+0.60s/+1.37s/+1.68s 发起的支付一律被 "您点击太快,请稍等再试"拒绝,而 +2.56s/+3.30s 发起的都成功;19:20 那次在 +2.1s~+3.9s 发起的 6 笔全部一次通过,阈值落在 (1.68s, 2.1s] 之间。 0.3.1 把等待压到 0.3-0.7 秒踩进该区间,6 个号各白挨两次拒绝,反而多花 2.7 秒、 多打 12 个请求——上一版"2-4 秒纯属浪费"的判断是错的,那段等待本就是躲这条服务端规则 - 日志文件表头补充版本号与构建时间:此前无法从日志判断用户跑的是哪个包 - 新增测试断言表头包含版本号 --- internal/constants/constants.go | 2 +- internal/logger/logger.go | 5 +++++ internal/logger/logger_test.go | 1 + internal/seckill/attempt.go | 12 +++++++----- wails.json | 4 ++-- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/internal/constants/constants.go b/internal/constants/constants.go index d59b717..90a3b11 100644 --- a/internal/constants/constants.go +++ b/internal/constants/constants.go @@ -3,7 +3,7 @@ package constants import "time" // Version 应用版本号,与 wails.json version 同步。 -const Version = "0.3.2" +const Version = "0.3.3" // BuildTime 构建时间,由编译时 ldflags 注入。 var BuildTime = "unknown" diff --git a/internal/logger/logger.go b/internal/logger/logger.go index e6c25ec..0882388 100644 --- a/internal/logger/logger.go +++ b/internal/logger/logger.go @@ -200,6 +200,11 @@ func logFileHeader(instanceName, dataDir string) string { var b strings.Builder b.WriteString("==================================================================\n") fmt.Fprintf(&b, "实例: %s\n", instanceName) + if constants.BuildTime != "unknown" { + fmt.Fprintf(&b, "版本: %s(构建 %s)\n", constants.Version, constants.BuildTime) + } else { + fmt.Fprintf(&b, "版本: %s\n", constants.Version) + } if dataDir != "" { fmt.Fprintf(&b, "数据目录: %s\n", dataDir) } diff --git a/internal/logger/logger_test.go b/internal/logger/logger_test.go index fd3fa4b..5f2ca9a 100644 --- a/internal/logger/logger_test.go +++ b/internal/logger/logger_test.go @@ -121,6 +121,7 @@ func TestLogFileHeaderDocumentsFormat(t *testing.T) { content := string(data) for _, want := range []string{ "实例: 实例 2", + "版本: ", "数据目录: ", "时间格式: 本地时间(D斗鱼估算时间)", "校准完成前偏移为 0", diff --git a/internal/seckill/attempt.go b/internal/seckill/attempt.go index 5842bff..30cb3b4 100644 --- a/internal/seckill/attempt.go +++ b/internal/seckill/attempt.go @@ -49,11 +49,13 @@ var ( ) var ( - // 锁单成功后到第一次支付的等待。原来是 2-4 秒,纯属把关键路径上的时间 - // 白送出去——"订单操作进行中"现在按"已受理、结果未定"快重试处理, - // 不需要靠等待来规避。 - peaceLockPayMin = 300 * time.Millisecond - peaceLockPayMax = 700 * time.Millisecond + // 锁单成功后到第一次支付的等待。斗鱼对"锁单→支付"有最短间隔: + // 2026-10-03 19:38 的模拟里,+0.50s/+0.60s/+1.37s/+1.68s 发起的支付一律被 + // "您点击太快,请稍等再试"拒绝,而 +2.56s/+3.30s 发起的都成功;19:20 那次 + // 在 +2.1s~+3.9s 发起的 6 笔全部一次通过。阈值落在 (1.68s, 2.1s] 之间, + // 这里取 2.3-3.0 秒留出余量:抢在 2 秒前支付只会白挨拒绝、多花时间。 + peaceLockPayMin = 2300 * time.Millisecond + peaceLockPayMax = 3000 * time.Millisecond ) // 斗鱼订单接口错误码。 diff --git a/wails.json b/wails.json index 7602c1c..ae7d2af 100644 --- a/wails.json +++ b/wails.json @@ -2,7 +2,7 @@ "$schema": "https://wails.io/schemas/config.v2.json", "name": "douyu_go", "outputfilename": "douyu_go", - "version": "0.3.2", + "version": "0.3.3", "frontend:dir": "frontend", "frontend:install": "npm install", "frontend:build": "npm run build", @@ -15,6 +15,6 @@ "email": "yml@example.com" }, "info": { - "productVersion": "0.3.2" + "productVersion": "0.3.3" } }