浩天博客
博客
站内搜索
直接问 AI

博客

博客文章

这里收录浩天博客的主要技术文章,重点是机器学习、算法实现、深度学习数学、网络协议、AI 安全和电池建模。文章会尽量提供问题背景、实现解释、代码或实验输出,而不是只发布短摘要。

如果你是第一次访问,建议先按专题阅读:机器学习路线从数据和评估开始,算法路线从 8 皇后和 K-means 开始,网络路线从 DNS/TCP/TLS 到代理与缓存,AI 安全路线从威胁建模和 toy lab 开始。

当前重点路线

如何判断一篇文章是否值得读

本站会尽量避免只写“概念简介”或“工具清单”。一篇有价值的技术文章至少应该说明问题是什么、输入是什么、输出如何验证、关键代码在哪里,以及结论的适用边界。对于算法和机器学习内容,文章会优先保留中间状态、评估指标、错误样本或可下载材料;对于网络协议内容,文章会优先保留请求头、状态码、缓存状态、时间线和实验命令。

如果某篇文章只是入口、索引或工具说明,它应该明确指向更完整的主题页或正文文章,而不是假装自己已经解决了技术问题。这样的组织方式可以让首次访问者快速判断:这里是阅读路线、实验入口、下载资源,还是一篇完整教程。

内容类型与证据要求

内容类型 应该回答的问题 页面中应该保留的证据
机器学习实现 数据如何进入模型,指标为什么可信? 数据切分、基线、训练命令、错误样本、指标定义。
算法与 C/Python 代码 核心状态如何更新,边界条件在哪里? 输入格式、循环不变量、复杂度、输出示例和失败输入。
网络协议排查 问题发生在 DNS、TLS、代理、缓存还是应用层? 请求头、响应头、状态码、时间线、缓存命中和复现命令。
AI 安全实验 实验证明了什么,又没有证明什么? 授权边界、toy lab 条件、指标、缓解措施和误用限制。

近期维护方向

后续内容会继续围绕“可复现”和“可解释”补强。机器学习文章会增加数据切分、基线模型、错误分析和复现实验记录;网络文章会增加从浏览器、Cloudflare、Nginx 到应用层的分层排查案例;AI 安全文章会继续强调授权边界、toy lab 限制和防御性评审流程。

旧文章会根据实际复现结果继续修订:失效命令需要替换,依赖变化需要标明版本,只有结论的段落需要补上推导或运行证据。读者应该能够从正文判断一个结论来自公式、代码输出、协议响应还是受控实验。

全部文章索引

下面的索引按站点当前分类自动生成。工具页和问卷页不会作为核心文章显示,读者可以优先选择有完整正文、代码和实验说明的文章阅读。

分类博客

按项目阅读文章

文章按网络基础、电池建模、人工智能、2D 动画、算法实现和站点建设组织,每组都保留难度、阅读时间和技术栈。

专题系列

深度学习数学可视化系列

五篇文章从矩阵微积分、反向传播、优化器、卷积到 Attention,每篇都有手算、代码、图和动画。

5 篇文章

项目分类

网络基础原理

从 DNS、TCP、TLS 与 HTTP/3 到代理隧道、负载均衡和共享缓存,以可重现的代码和图分析网页请求路径。

14 篇文章

共享密钥容易,共享状态难:一套跨机单点登录的六个坑

把单机登录网关扩成覆盖多子域的 SSO,密钥同步很简单,难的是状态。这篇记录三台机器共用一套网关时踩到的问题:防重放为何变成站内有效跨站无效、密钥的第二份副本如何让 nginx 放行而应用回 401、部署脚本的白名单保留规则怎样静默关掉登录,以及为什么比对凭证不能比生成的口令。

阅读时间: 13 分钟
  • TOTP
  • HMAC
  • auth_request
  • nginx

「加了鉴权」不等于「受保护」:一次授权边界的自我审计

给自建文件管理器加上双因子网关之后,我问了自己一个问题:这个网关到底挡住了什么。答案是挡住了界面、没挡住文件——同一份字节有两条 URL 可达,而且验证时才发现网关根本不在请求路径上。这篇记录整个自查过程、补洞时踩的两个 nginx 坑,以及源站封掉之后边缘缓存仍然发了近一年。

阅读时间: 13 分钟
  • nginx
  • auth_request
  • TOTP
  • CDN

家宽入站到底通不通:一次从公网打回来的实测

本机扫端口全是开的,从外面根本连不上——这篇讲为什么本机探测必然错、对照端口为什么不可省,以及一次完整实测:公网 IPv4 不是 CGNAT、80 和 443 被运营商过滤而非未开、IPv6 有真实地址却入站全丢、AAAA 记录为什么不能用回显服务的结果。

阅读时间: 11 分钟
  • nc
  • CGNAT
  • hairpin NAT
  • IPv6
  • DNS-01

有证书不等于走 HTTPS:一次被误报为”缺证书”的排查

有人说某个子域名没有 SSL 证书。查下来证书好好的——一张通配符证书覆盖着它。但排查确实查出了问题,而且更严重:那个子域名的邮箱登录页可以通过明文 HTTP 访问,页面里有密码输入框,没有任何跳转。附两个把我带偏的坑:openssl 对所有目标同时失败时该怀疑工具,以及透明代理下 DNS 枚举完全失效。

阅读时间: 9 分钟
  • TLS
  • SNI
  • nginx
  • HSTS

项目分类

电池建模与 AI

围绕 PyBaMM、EIS、老化仿真、AI 标签数据与风险受控参数辨识,建立可复查的物理建模研究路线。

6 篇文章

PyBaMM 参数拟合:为什么优化器给你的数字可能毫无意义

搜索排第一的 pybamm-param 已废弃、PyBOP 的 API 刚大改,而真正要命的是可辨识性:参数在方程里以组合出现,一条曲线分不开它们。附一套区分"拟合出来"与"编出来"的验证流程。

难度: 博士生 阅读时间: 14 分钟
  • PyBaMM
  • EIS
  • Battery Aging
  • AI Dataset

项目分类

人工智能项目

从 AI、机器学习、训练评估、神经网络到 Python 小实战、手写数字识别、CIFAR-10 CNN、对抗性流量防御和 AI 安全攻防,按顺序建立基础。

28 篇文章

神经网络基础:从感知机到多层网络

从一个神经元讲起,解释权重、偏置、激活函数、前向传播、反向传播和典型神经网络训练循环。

难度: 进阶 阅读时间: 8 分钟
  • Neural Networks
  • Backpropagation
  • Python

部署多模态大模型时的 KV Cache:先算对,再优化

KV Cache 显存随序列长度是线性增长,不是二次方;公式里要用的是 KV 头数而不是注意力头数,用错在 Llama-3-8B 上会高估 4 倍。算对之后会发现真正的瓶颈在预填充而不是解码——这直接决定了减少 token、量化缓存、分页管理这三件事的优先级顺序。

难度: 入门 阅读时间: 8 分钟
  • AI
  • Machine Learning
  • Python
  • scikit-learn

视觉指令微调的损失函数:掩码算错时,loss 曲线看起来是正常的

混合图文 token 时,损失只应该作用在助手回答的位置上。这篇讲掩码怎么构造,以及两种最常见的错法各自的特征:漏掉视觉 token 会让 loss 起点异常高并卡在一个平台;漏掉指令部分则 loss 曲线完全正常,但模型推理时会自问自答。

难度: 入门 阅读时间: 8 分钟
  • AI
  • Machine Learning
  • Python
  • scikit-learn

从开发者角度理解大语言模型:文字接龙、token 与采样参数

LLM 的本质是在预测下一个 token,但「token」这个单位本身就是初学者误解最多的地方——它既不是字也不是词。这篇讲模型实际看到的输入是什么、为什么它数不清单词里有几个字母、上下文 8K 到底能装多少中文,以及温度和 top_p 各自在调整概率分布的哪一维。

难度: 入门 阅读时间: 8 分钟
  • AI
  • Machine Learning
  • Python
  • scikit-learn

多模态大模型架构:视觉特征如何对齐到语言空间

典型 MLLM 由视觉编码器、投影层和语言模型三部分构成。但选 MLP 还是 Q-Former,真正决定的不是表达能力而是 token 数量——576 与 32 的差距在预填充阶段会被平方放大 324 倍。这篇还讲了换高分辨率编码器时必须做的位置编码插值,以及视觉 token 借用一维位置编码带来的固有限制。

难度: 入门 阅读时间: 8 分钟
  • AI
  • Machine Learning
  • Python
  • scikit-learn

深度学习框架入门:PyTorch 与 TensorFlow 怎么选,以及训练之后的那段路

框架帮你解决自动求导、GPU 加速和现成的层。但教程很少说清楚的是:训练用的框架不是部署用的格式,.pt 文件不含网络结构、无法独立分发。这篇讲两大框架的取舍、动态图与静态图的差别在何处真正显现、怎么识别过时教程,以及为什么装不上 GPU 是最消耗新手信心的那一关。

难度: 入门 阅读时间: 8 分钟
  • AI
  • Machine Learning
  • Python
  • scikit-learn

项目分类

2D 动画原理

从人物图片分层和 SVG 资产开始,继续学习骨骼矩阵、双骨骼 IK、蒙皮权重、接缝修复和关键帧插值。

11 篇文章

现代 2D 骨骼运行时:网格形变、绘制顺序与约束系统

线性混合蒙皮表达不了褶皱、绘制顺序和跟随延迟。说明网格形变为什么必须加在绑定空间、绘制顺序为什么是离散轨道,以及 Live2D 参数驱动形变的伪 3D 原理。

难度: 专业 阅读时间: 12 分钟
  • Spine
  • Live2D
  • Mesh Deformation
  • Constraints

次级运动:用阻尼弹簧让头发和尾巴跟上来

关键帧调好了动作还是显得硬,缺的是被主体带动、慢半拍跟上来的次级运动。这篇讲阻尼弹簧怎么用频率与阻尼比两个正交参数暴露给动画师,以及接进 2D 骨骼系统时的五个坑:显式欧拉为何无条件不稳定、帧率不同结果不同、骨骼链必须同帧从根到梢更新、该弹角度而不是位置、以及瞬移为什么会让弹簧爆炸。

难度: 实战 阅读时间: 13 分钟
  • 半隐式欧拉
  • 阻尼比
  • 骨骼链
  • 固定步长

挤压与拉伸:非均匀缩放为什么不能穿过旋转传下去

挤压拉伸接进骨骼系统之后,麻烦几乎全部来自一件事——非均匀缩放不能像旋转平移那样安全地沿层级传递。这篇讲二维的面积守恒与它不守恒的两样东西、缩放中心选错为什么让球陷进地板,以及核心的层级陷阱:父节点非均匀缩放乘以子节点旋转会产生切变,症状是只有转了角度的部件变成平行四边形。

难度: 实战 阅读时间: 12 分钟
  • 仿射变换
  • 切变
  • 缩放锚点
  • 拖影

项目分类

算法实现项目

围绕回溯、位运算和聚类实现,保留可以复查的代码、流程图和下载资料。

5 篇文章

轮廓追踪的终止条件:三行代码顺序错了,面积大二十倍

Moore 邻域追踪的 Jacob 终止准则要求位置和方向同时匹配。我把检查写在了方向更新之前,用的是上一轮遗留的方向,于是条件几乎永不成立,追踪器绕圈直到被点数上限强行截断——鞋带公式再把不闭合的首尾直接连起来,横穿整个区域。

难度: 进阶 阅读时间: 7 分钟
  • Moore 邻域
  • Jacob 准则
  • 鞋带公式

项目分类

站点建设项目

记录这个双语技术站的结构、内容同步、分类、评论和部署方式。

6 篇文章

给自己的站点量结构:一个错了八倍的指标

想量化"这些文章是不是长得太像了",第一次算出 92%,写进了结论;后来发现那个数字把主题模板算成了文章结构,修正后是 12%。这篇讲测量本身:怎么定义"形状"、边界画错在哪、为什么单一指标会掩盖真正的问题,以及推翻它的其实是一次意外的对照。

阅读时间: 10 分钟
  • curl
  • Python
  • 结构熵
  • WordPress

把整条图像处理链路放进浏览器:省下的不只是 CPU

一个上传角色图片、自动抠图分层、转成 SVG 资产库的工具,约束是不上传服务器。最初动机是单核源站扛不住服务端图像处理,做完发现真正省下的是存储、审核、隐私责任和并发这四样。含解码到矢量化的五步实现、IndexedDB 的代价、用 ZIP 存储模式替代压缩库,以及模型下载这唯一无法回避的成本。

难度: 进阶 阅读时间: 11 分钟
  • Canvas
  • IndexedDB
  • ONNX Runtime Web
  • ZIP

特色图片设好了,og:image 却是空的:Yoast 索引表的陈旧缓存

给 19 篇文章补上特色图片,后台显示正常,页面源码里却没有 og:image——而同一页的 JSON-LD 里 thumbnailUrl 已经指向新封面。这个"schema 有、og 没有"的组合就是诊断关键:两者走的是不同数据通路,一条实时算,一条读预计算的索引表。

阅读时间: 6 分钟
  • WordPress
  • Yoast
  • WP-CLI
  • Open Graph

8.3 GB 备份里只有 276 MB 是独有的:一次删除前的取证

服务器磁盘报到 86%,部署备份占 8280 MB。删除前先算清楚有多少是独有内容——答案是 276 MB,其余是同一批文件被复制了 228 遍。以及删除前那一步集合差集运算,救回了 7 个只存在于历史快照里的文件。

阅读时间: 9 分钟
  • rsync
  • tar
  • sha256
  • Cloudflare Tunnel

「只读」是结构问题,不是纪律问题:自建邮箱接 AI 的十个坑

把自建邮箱接给 AI 助手,协议部分不难,难的是让「只读」成为结构而不是承诺。这篇记录接入过程中踩到的问题:拒稿信里的 has been accepted 如何让分类器判反、语法检查通过而鉴权整个失效、单用户改多用户时共享闩锁怎样连坐所有人,以及为什么合成点击测不出一个死按钮。

难度: 说明 阅读时间: 4 分钟
  • WordPress
  • Cloudflare
  • Content Workflow
向下探索