程序员数学 11:文件处理任务的数学复盘
一个数学公式只有在对象、单位与前提都明确时才有用。本课将前面各篇放进一个虚构文件处理任务。所有数字都是题目设定,可以手算,不需要数据库或在线服务。
一、校验、配对与分桶
处理文件前要求“格式有效且校验和匹配”。要比较 200 个文件的每一对,忽略顺序且不允许自配对。临时目录使用长度为 8 的环形编号。
- 写出拒绝处理的布尔条件。
- 两两比较一共多少次?如果文件数变成 2000 呢?
- 当前编号为 1,向后退 4 格后,合法的非负编号是多少?
查看答案与讲解
!validFormat || !checksumMatches,由德摩根律得到。它只表达这两个必要条件,不表示通过后所有 I/O 都必然成功。; 。数量扩大 10 倍,比较次数约扩大 100 倍。 ,模 8 的非负代表元为 5。JavaScript 直接 -3 % 8为 -3,需要按约定归一化。
二、依赖与有限重试
任务依赖为“读取→校验→压缩→发布”,另有“校验→生成清单→发布”。一次上传最多尝试三次,每次失败概率 0.2,暂时假设各次独立且失败概率不变。
- 给出一个合法执行顺序,指出哪两个任务可以没有先后依赖。
- 计算最终失败概率与期望尝试次数。
- 如果三次尝试都受同一个持续故障支配,第 5 题还能直接使用吗?
查看答案与讲解
- “读取、校验、压缩、生成清单、发布”合法;压缩和生成清单可以交换,也允许在资源与其他约束满足时并行。
,即 0.8%;期望为 次。 - 不能。独立性可能失效,应重新建模联合事件或使用实测结果。公式计算正确不代表前提适合真实系统。
三、耗时统计与汇总
20 次处理耗时中,18 次为 10 ms,一次 100 ms,一次 1000 ms。采用最近秩分位数定义。另一份报表记录 A 组成功 90/100,B 组成功 1/10。
- 计算平均耗时、P95 和 P99。
- 计算整体成功率,并说明为什么不是两个百分比的简单平均。
- 只报告“平均耗时 64 ms”会漏掉什么?
查看答案与讲解
- 平均为
ms;P95 取第 19 个值,为 100 ms;P99 取第 20 个值,为 1000 ms。 。整体口径是每次尝试同等权重,两个组的分母不同。 - 会漏掉长尾及样本量。还要说明只有 20 条样本、分位数算法和观测条件,不能把这些样本直接等同于长期总体表现。
四、坐标、优化与数值表示
可视化中把点
- 变换后的点是什么?
- 成本模型的无约束最小点和约束下最优批量分别是多少?
- 是否超出运行预算?能否用
0.1 + 0.2 === 0.3检验十进制金额相等?
查看答案与讲解
。 ,正数域驻点为 20; 。受上限 12 约束时,函数在允许范围内递减,因此选 12。还需验证真实成本是否符合模型。 - 没超出,0.6 秒等于 600 毫秒。不能把该浮点等式用作精确十进制金额判断;应按最小单位、舍入规则与取值范围选择精确表示。
怎样写一份数学分析结论
保留四项即可:问题和单位、使用的模型、计算结果、模型没覆盖的条件。例如:“在三次尝试独立且单次失败率固定为 0.2 的模型下,最终失败概率为 0.8%;持续共享故障可能破坏独立性,此数值不是线上可用性保证。”
如果算对了却无法写出前提,应回到对应文章继续练。完整路线与课程资料见程序员数学学习路线。
继续阅读
- 公式与参考
- 知识讲解
- 知识讲解