黄金比例乘法哈希与哈希表大小设计原理
[toc] 黄金比例乘法哈希与哈希表大小设计原理 本文说明一种常见的静态哈希表设计:黄金比例乘法哈希(Multiplicative Hashing) + 2 的幂桶表结构。该方案来源于 Knuth 在《The Art of Computer Programming》中提出的哈希理论,在系统软件与嵌入式环境中被广泛采用。 示例代码通过编译期计算哈希表大小,并使用黄金比例相关常数实现均匀分布的哈希函数。 使用黄金比例常数实现乘法哈希哈希常数定义如下: 1#define PAR_ID_HASH_GOLDEN_RATIO_32 (0x61C88647u) 该常数来源于黄金比例相关公式: 1A = (√5 − 1) / 2 乘法哈希公式: 1h(k) = floor(m * frac(k * A)) 其中: 符号 含义 k key A 常数 m 哈希表大小 在 32 位整数实现中,公式通常转化为: 12hash = key * constantindex = hash >> shift 或: 1index = hash & mask...
将隐藏在副屏的 Windows 11 程序窗口恢复到主屏
将隐藏在副屏的 Windows 11 程序窗口恢复到主屏当 Windows 11 曾连接过副屏时,系统会记录窗口位置。断开副屏后,部分程序可能仍然在“不可见区域”打开。可通过系统自带的“移动”功能将窗口拉回主屏。 使用“移动”功能恢复窗口位置(通用方法)适用于所有常规桌面程序,无需修改显示设置。 1. 切换到目标程序按: 1Alt + Tab 切换到无法看到的那个程序窗口,确保其处于当前活动状态。 2. 打开窗口控制菜单按: 1Alt + 空格 此操作会打开当前窗口的系统菜单。 3. 进入“移动”模式按: 1M 此时系统进入窗口移动状态。 4. 激活移动按一次方向键(例如): 1← 或 → 这一步非常关键,用于激活键盘移动模式。 5. 使用鼠标拖回窗口移动鼠标。 隐藏的窗口会跟随鼠标移动并重新出现在主屏幕上。 在合适位置单击鼠标左键确认。 原理说明Windows 会记录程序上一次关闭时的屏幕坐标。断开副显示器后,这些坐标仍然存在,但对应的显示区域已不可见。通过“移动”功能,可以强制改变窗口坐标,使其回到当前可见屏幕范围。 适用场景 曾使用双屏或扩展屏 笔记本...
显卡DXGI_ERROR_DEVICE_HUNG 的处理指南
[TOC] 显卡DXGI_ERROR_DEVICE_HUNG 的处理指南 背景与成因DXGI_ERROR_DEVICE_HUNG(0x887A0006) 表示图形设备在执行过程中进入“挂起/无响应”状态,常见表现为游戏卡死后闪退。该错误属于 DXGI 错误码的一种。 (Microsoft Learn) 当显存(VRAM)被高分辨率贴图、光线追踪缓存、长时间游玩累积的资源占用推到上限时,显卡需要频繁回收/搬运资源;若某些渲染任务因此耗时过长,可能触发 Windows 的 TDR(超时检测与恢复) 机制,系统会重置图形栈来避免整机无响应,最终表现为游戏崩溃或驱动重置。 (Microsoft Learn) 快速判断是否为“爆显存”触发用任务管理器确认“专用 GPU 内存”是否贴顶 打开 任务管理器 → 性能 → 选择 GPU。 观察 Dedicated GPU memory usage(专用 GPU 内存) 是否长期接近上限,尤其是在崩溃前持续攀升。Windows 的 GPU 内存统计与分解方式在 DirectX 团队说明中有详细解释。 (Microsoft f...
EWMA、加权平均与一次低通滤波的对比与选型
@[toc] EWMA、加权平均与一次低通滤波的对比与选型三者解决的共同问题三者都用于把“抖动/噪声较大”的观测序列变成更稳定的信号,从而更适合做展示、阈值判断、控制调节等。其共同代价是:越平滑,越容易产生滞后(变化被延迟反映)。(维基百科) 用“权重形状”理解原理与异同点加权平均对一组样本按权重求和(一次性计算),不要求时间连续,也不内置“上一时刻状态”的概念:$$[y=\frac{\sum_{i=0}^{N-1} w_i x_i}{\sum_{i=0}^{N-1} w_i}]$$ 权重 (w_i) 可任意设计(线性、分段、业务权重等) 需要拿到整组样本(或至少拿到一个窗口内的样本) 移动平均/加权移动平均(FIR 思路)在固定窗口内做平均或加权平均,窗口之外权重为 0,因此是典型 FIR(有限冲激响应):冲激响应在有限长度后严格为 0。(维基百科)“移动平均滤波”是最典型的 FIR 例子之一,用于降低随机噪声。(analog.com) FIR 的通用差分方程长度为 (M) 的因果 FIR 滤波器可用“有限卷积”表示...
EWMA 指数加权移动平均
@[toc] EWMA 指数加权移动平均 EWMA 是什么EWMA(Exponential Weighted Moving Average,指数加权移动平均)是一种递推式平滑方法:用一个“带记忆”的平滑值表示最近一段时间的趋势,同时让更久远的数据以指数形式衰减,从而降低短期抖动对决策的影响。 典型形式为:$$[S_t = \alpha \cdot x_t + (1-\alpha)\cdot S_{t-1}]$$ $(x_t)$:当前观测样本 $(S_t)$:平滑后的状态值 $(\alpha\in(0,1])$:平滑系数(越大越“敏感”,越小越“稳”) 将递推展开后,历史样本的权重会按 $((1-\alpha)^k)$ 逐步衰减,因此称为“指数加权”。 EWMA 的核心原理只保存一个状态值,持续吸收新样本EWMA 不需要保存历史窗口,只需要维护一个状态 (S)。每到一个新样本,就把旧状态衰减一部分,再注入一部分新样本权重: 旧状态贡献:$((1-\alpha)\cdot S_{t-1})$ 新样本贡献:$(\alpha\cdot x_t)$ 这使得计算成本为...
修复 VS Code Remote-SSH 连接超时:启用 PTY 分配
@[toc] 修复 VS Code Remote-SSH 连接超时:启用 PTY 分配 适用场景出现 Remote-SSH 连接阶段超时(例如 Connecting with SSH timed out),同时满足以下特征: ICMP 连通(ping 正常) TCP/22 连通(Test-NetConnection <REMOTE_HOST> -Port 22 为 True) 命令行 ssh -vvv <USERNAME>@<REMOTE_HOST> 可成功认证并进入 Shell VS Code Remote-SSH 日志中存在 remote.SSH.permitPtyAllocation = false(或等价配置) 根因Remote-SSH 建连不只是建立 TCP 会话,还会在远端通过 ssh ... sh 执行初始化脚本(探测、安装、启动 VS Code Server)。 当 PTY(伪终端)分配被禁用 时,常见后果包括: 远端脚本输出被缓冲或输出形态变化,客户端等待不到期望标记 远端登录脚本或环境初始化逻辑在非交...
游戏后台 CPU 占用高与全屏切换最小化问题排查指南
@[toc] 游戏后台 CPU 占用高与全屏切换最小化问题排查指南 本文整理两类常见现象的原因与优化方法: 后台运行时 CPU 占用率较高 全屏模式下切换程序时自动最小化 内容已做通用化处理,适用于多数基于现代 3D 引擎的 Windows 平台游戏。 解决后台运行时 CPU 占用率高理解高占用的原因现代 3D 游戏通常具备以下特征: 持续渲染画面(即使处于后台) 未锁帧时会尽可能输出更高帧率 持续进行物理计算、AI 逻辑、资源加载 引擎对多线程与 CPU 调度要求较高 当未限制帧率或未启用垂直同步时,游戏可能在后台仍以接近满载状态运行,导致 CPU 占用率持续偏高。 限制帧率以降低后台负载优先进行以下设置: 进入: 游戏设置 → 显示 / 图形设置 调整: 启用 V-Sync 或开启 帧率限制(FPS Cap) 建议设置为 60 FPS 或更低 这样可避免游戏在后台无限制渲染帧数。 关闭不必要的后台程序后台程序会与游戏争夺 CPU 资源,尤其包括: 浏览器 文件同步工具 即时通讯软件 云存储客户端 各类常驻启动项 操作步骤: 打开: 任务管...
VS Code Codex 登录失败(1455 端口占用)处理说明
@[toc] VS Code Codex 登录失败(1455 端口占用)处理说明 问题现象在 VS Code 中进行 Codex 登录时失败,提示错误信息类似: 1{"code":-32603,"message":"failed to start login server: Port 127.0.0.1:1455 is already in use"} 该错误表明:Codex 扩展在本机启动 OAuth 回调用的本地登录服务时,默认监听的 127.0.0.1:1455 端口已被其他进程占用,导致登录服务无法启动。 原因说明 Codex 登录流程依赖一个本地 HTTP 回调服务 默认端口为 1455 当该端口已被占用(常见于 VS Code 或相关子进程异常残留)时,登录流程会直接失败 错误与网络、防火墙或账号无关,属于本地端口冲突问题 适用环境 本机 Windows 本机直接运行 VS Code 非 Remote-SSH / WSL / Dev Container 场...
分卷压缩包损坏排查指南
@[toc] 分卷压缩包损坏排查指南 适用场景: 下载了 分卷压缩包(.zip + .z01/.z02/...、.part1.rar、.7z.001 等) 解压或测试时提示 Data Error / CRC failed / Unexpected end of archive 需要判断 是否只需重新下载某一个分卷 一、先确认分卷类型1. ZIP 分卷(常见、最容易混淆)文件结构示例: Game.zip(主文件) Game.z01 Game.z02 Game.z03 规则: 解压 / 测试 只能对 .zip 主文件进行 不要对 .z01 / .z02 单独操作 2. RAR 分卷文件结构示例: Game.part1.rar Game.part2.rar Game.part3.rar 入口文件:Game.part1.rar 3. 7z 分卷文件结构示例: Game.7z.001 Game.7z.002 Game.7z.003 入口文件:Game.7z.001 二、使用 NanaZip 进行初步测试(确认是否损坏)用途:判...
解决 `git cherry-pick` 引入大量新文件的问题
@[toc] 解决 git cherry-pick 引入大量新文件的问题1234567flowchart TD A[处于 cherry-pick 进行中?] -->|是| B[git cherry-pick --abort] A -->|否| C[评估目标] B --> C C --> D[仅需部分路径内容?] D -->|是| E[按路径取文件并单独提交] D -->|否| F[继续 cherry-pick 并清理不需要的新增/冲突] 问题域定义git cherry-pick 会把目标提交的变更整体应用到当前分支,当目标提交覆盖范围过大或包含不需要的目录时,常见结果是一次性引入大量新增文件、目录重排与删除。可观测症状包括:暂存区出现大量 new file,并伴随大量未合并冲突(例如 deleted by us 一类冲突)。影响范围通常覆盖整个 Git 工作树与索引状态,导致后续 --continue、路径恢复与清理操作相互阻塞。 机制分析 cherry-pick 以提交为单位应用补丁目标提交中包含的新增/删除&...







