Miller Rabin:概率之下,证据成群

很多随机算法并不是靠“运气好”工作,而是靠候选空间里存在大量可用证据。只要证据足够密集,随机抽样就不再像碰运气,而更像一种低成本的搜索策略。 对于某个输入 \(x\) ,如果额外给出一段信息 \(w\) ,我们就能比直接求解更高效地验证某个结论。在计算复杂性中,这类辅助信息通常被称为 witness,也可以理解为“证人”或“证据”。算法不一定知道 witness 分布在哪里,也不一定能直接构造 witness;但它必须能够高效检查一个候选者是否为 witness。只要 witness 在候选集合里足够多,
Taffy   2026-06-07    0    60    843  

Linux 多用户环境下 AirPods 已连接但没有声音排查与修复

一台 Ubuntu 双系统主机上,AirPods 可以完成蓝牙配对,也能显示为已连接,但 GNOME 的声音输出列表里没有 AirPods,应用音频仍然只能输出到板载声卡或 HDMI。这是 Linux 多用户音频服务抢占了蓝牙音频 profile。 蓝牙层看起来正常: bluetoothctl devices Connected 能看到 AirPods 已连接: Device AA:BB:CC:DD:EE:FF AirPods Pro 设备详情也显示已配对、已信任、已连接,并且包含音频相关 UUID: P
Taffy   2026-05-20    0    99    883  

数会长大,时间会说谎:从算法复杂度到位复杂度

我们平时说一个算法是 \(O(n)\) 、 \(O(n \log n)\) 、 \(O(\sqrt n)\) ,大多是在一种心照不宣的模型里说的:数组下标、整数加减、比较、取模,都算作一次“基本操作”。这套说法对大多数工程代码很有用。你在 64 位机器上排序一批整数,或者用哈希表查几个 key,通常不需要追问一次整数加法到底碰了多少个 bit。 但这个默认模型有一个容易被忽略的前提:参与计算的数放得进机器字,或者至少我们愿意把它们当成常数大小。 一旦输入里出现可以任意增长的整数,这个前提就开始松动。一个数
Taffy   2026-05-18    0    68    596  

0-1 背包的 PTAS 算法

01 背包是一个很朴素的问题:给一批物品,每个物品有重量和价值,背包容量有限,每个物品只能选或不选,问怎么让总价值最大。设第 \(i\) 个物品的重量为 \(w_i\) ,价值为 \(v_i\) ,容量为 \(W\) 。目标是在 \(\sum w_i x_i \le W\) 且 \(x_i \in {0,1}\) 的约束下最大化 \(\sum v_i x_i\) 。这就是 0/1 的含义:每个物品不是拿一部分,而是完整拿或完全不拿。 精确 DP 的伪多项式问题 最常见的动态规划按容量做状态: \(\tex
Taffy   2026-05-01    0    62    563  

听 AI 建议涨粉,一夜丢了 98% 推荐流量

我用 AI 最多的地方是出方案,技术选型、架构怎么拆、这条路走不走得通。代码写错了有编译器兜着、有测试兜着,当场露馅;方案那层什么都没有,听着一般都合理,后果过几周才浮出来,等浮出来已经照着它写了几万行。 所以我想找个反馈快的方案样本。公众号涨粉刚好符合,听着合理、当场没法验证、48 小时见分晓,这号还输得起。 18 号中午我问 AI,一个技术号除了写好内容还能做什么。它说去同领域账号下面活跃起来,多关注多评论,让你的名字在目标读者眼前反复出现。 这话有问题吗?我看不出来,任何一本增长书里都这么写。午休不
菲比   2026-04-08    0    32    946  

拆解 DeepSeek Harness:Profile 与 Bundle 如何装配运行时

前一篇讨论 Cordis 插件架构「解读 Cordis:dsh 一切皆插件背后的运行时设计」时,我们看到 dsh 把工具、模型适配器、会话、Agent Loop 等运行时能力拆成了插件。这样一来,运行时中的各个组件可以独立地完成注册、替换和退出。 但组件拆开了,得解决外层的组装问题: 一次启动到底要加载哪些插件,以及按照什么顺序把它们组合起来? Web 模式要用到 Web Server、前端静态资源、API Gateway 和浏览器侧插件;如果以 Headless 模式执行单次任务,则不需要加载这些 We
菲比   2026-04-07    0    69    607  

向量检索:Embedding模型与Rerank模型解析

在检索增强生成(RAG)系统中,如何从海量知识库中快速准确地找到与用户问题最相关的信息,是决定整个系统性能的关键环节。向量检索技术,特别是Embedding模型和Rerank模型的协同工作,构成了现代RAG系统的核心检索架构。 📌 向量检索:RAG系统的信息入口 什么是向量检索? 向量检索是RAG系统的第一步,负责从大规模知识库中快速定位相关文档。它的核心思想是将文本转化为数学向量,通过计算向量间的距离来衡量文本的语义相似度。 用户问题 → Embedding模型 → 问题向量 ↓ 【相似度计算】 ↓ 知
菲比   2026-04-03    0    54    398  

线性筛积性函数学习笔记

线性筛积性函数学习笔记 以求解下面这个问题为例,对于任给的n,请求出下列式子的结果,1<=n<=1e7 \[\sum_{i=1}^{n}\sum_{j=1}^{n} (-1)^{d(i\cdot j)} \] const int N=1e7+5,MOD=998244353; int f[N],K[N],vis[N]; vi pm; /* 要计算ΣΣ(-1)^(d(i*j)) d(n)只有在n为完全平方数时才会是奇数 令n=x*(y*y),x不含任何平方因子(1除外) 则d(i*j)为奇数当且仅当i=x*(
菲比   2026-03-01    0    78    220  

向量库不再囤数据:Milvus 3.0 零拷贝直读数据湖

做 RAG 的人大概都经历过这么个流程:数据在 S3 上的 Parquet 文件里躺着,你得先把它读出来,跑一遍 Embedding 模型,再把向量写进 Milvus。原始数据一份,向量数据又一份。数据湖一份,向量库一份。 然后问题就来了。数据更新了怎么办?向量过期了怎么办?两份数据怎么同步?半夜跑批的 ETL 管道挂了谁来兜底? Milvus 3.0 给的答案是: 别复制了,我直接读你的数据湖。 这就是它说的 lake-native 架构。核心能力叫 External Collections——在你的
菲比   2026-02-19    0    84    847  

DOTNET 鉴权系列- JWT 会话撤销与主动登出

写这篇的主要原因是记录一下jwt无状态特点下的主动撤销和登出的解决方案,因为之前负责做过类似的用户相关的系统,对于这一块的方案和实现比较粗糙的,登录成功后,计算完整 JWT 字符串的 Hash,将 tokenHash + userId 存入Redis,每次鉴权时计算请求 Token 的 Hash,去存储中比对是否存在,这套方案虽然实现了登出撤销,但把所有有效 Token 全部落地存储,JWT 只剩下签名验签的能力,几乎退化成传统 Session 模式,丢失了 JWT 无状态的设计初衷。 最近特意看了下这一
菲比   2026-02-18    0    44    947  

【手搓 Agent 第2.2关】搭建 Agent 进阶能力:网络搜索工具(下)

承接中篇的智能纠错与熔断机制,我们已经让 Agent 拥有了工具故障自主处理能力,但原生手写爬虫的不稳定性,始终无法支撑真实业务落地。想要实现稳定、高效、可持续的联网检索能力,必须替换专业的生产级解决方案。 本篇我们彻底重构搜索工具,替换秘塔AI商用搜索API,实现标准化、高可用的联网检索能力,解决原生爬虫反爬、解析失败、数据杂乱的痛点。同时针对大模型“迭代式检索成瘾、无限调用工具”的行业通病,新增提示词软约束+次数硬熔断双机制,精准管控工具调用频次,兼顾检索效果与资源成本,完成工业级搜索工具最终落地。
菲比   2026-02-14    0    93    365  

组合计数

\(0.0\) 前言 本文完成仓促,必然存在一些错误,希望读者阅读时多加思考,指出疑问和错误。 文章简述了组合数学的理论性内容,仅仅作为兴趣引入和入门学习,作者很菜,比不上数学大手子,请轻点喷。 \(1.0\) 排列组合基础 \(1.1\) 加法原理、乘法原理 对于事件 \(A\) ,有 \(n\) 个解决方案,每个方案有数量 \(a_1,a_2,a_3……a_n\) 对于解决事件 \(A\) 的总方案,有 \[\sum_{i=1}^{n}{a_i} \] 上述计算方法称为加法原理。 对于事件 \(A\)
菲比   2026-02-03    0    91    162