完整互动讲义

10 册 · Day 01–100 · 原创完整导学

别把语法背完。把一个求职作品做出来。

这不是 30 分钟摘要,而是一条可逐日执行的项目路线。每一天都回答一个白话问题、拆一个误区、完成一个作品增量,并留下能向面试官展示的验收证据。

10
100
100个例子
55个术语

学完能做什么

不是“看懂了”,而是能解释、能判断、能交付

能解释

能用输入、状态、输出和错误描述一段 Python 程序如何工作。

能判断

能区分脚本、数据库、Web、数据分析与机器学习问题,不用同一把锤子敲所有钉子。

能动手

能从空目录重建求职素材工坊,处理数据、提供 API、训练基线并写测试。

能求职

能用代码、测试、图表、部署记录和复盘证明自己做过什么,而不是只列课程名。

30 分钟快速路径

先搭地图,再回到完整路线

快速路径只建立全栈地图:先跑代码和组织数据,再看文件/API、数据库、Web、测试、分析与机器学习。它能帮助你决定从哪一册正式开始,但不能代替逐日练习。

边界提醒

原仓库公开可读但没有声明许可证。本讲义不复制原文、代码、习题和图片;100 个教学例子、误区、自测与贯穿项目均为原创。源课程涉及的第三方库和平台会变化,动手时应核对当前官方文档。

第一册 · Day 01–20

先学会让代码按你的意思做事

从环境、变量、控制流和容器走到函数与对象。重点不是背语法,而是建立“输入—状态—输出—验证”的编程心智模型。

本册作品里程碑

完成可读取岗位、计算技能匹配并保存状态的命令行原型。

01

Day 01

初识Python

先回答一个白话问题

今天要解决的是:知道 Python、解释器和代码文件分别是什么。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

代码像菜谱,解释器像照着菜谱做菜的厨师;只有菜谱没有厨师不会产生结果。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

解释器逐条执行源代码;版本、路径和运行入口决定实际使用的是哪套环境。

例子 1 · 求职素材工坊 · 初识Python
输入
一台刚装好的电脑
过程
安装 Python,打开终端检查版本,再运行一个只打印环境信息的脚本
结果 / 验收
能说出解释器版本、脚本路径和退出状态,并保存一次成功运行截图
常见误区

把“装了编辑器”当成“装了 Python”,结果编辑器能打开文件却无法执行。

作品任务

把今天的能力接入“求职素材工坊”:安装 Python,打开终端检查版本,再运行一个只打印环境信息的脚本

验收: 能说出解释器版本、脚本路径和退出状态,并保存一次成功运行截图

自测:完成“初识Python”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:能说出解释器版本、脚本路径和退出状态,并保存一次成功运行截图

对应来源单元: Day 01 · 初识Python
02

Day 02

第一个Python程序

先回答一个白话问题

今天要解决的是:建立编辑—运行—观察—修改的最小反馈循环。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

像发语音前先录十秒试听;小反馈比一次写一大段更容易定位问题。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

程序从入口开始执行;标准输出、标准错误和退出码是最早的反馈信号。

例子 1 · 求职素材工坊 · 第一个Python程序
输入
姓名与目标岗位两行文本
过程
写脚本打印欢迎语,故意制造一次语法错误,再按报错行号修复
结果 / 验收
正常运行时输出两行;出错时能指出错误类型、文件和行号
常见误区

照抄 Hello World 成功就以为掌握了编程,却不会解释错误信息。

作品任务

把今天的能力接入“求职素材工坊”:写脚本打印欢迎语,故意制造一次语法错误,再按报错行号修复

验收: 正常运行时输出两行;出错时能指出错误类型、文件和行号

自测:完成“第一个Python程序”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:正常运行时输出两行;出错时能指出错误类型、文件和行号

对应来源单元: Day 02 · 第一个Python程序
03

Day 03

Python语言中的变量

先回答一个白话问题

今天要解决的是:用名字保存会变化的业务数据,并识别类型。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

变量像贴标签的收纳盒,但标签指向的是值,不是把纸条焊死在盒子上。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

名称绑定到对象;类型属于值,运行时操作必须符合值的能力。

例子 1 · 求职素材工坊 · Python语言中的变量
输入
岗位名、最低薪资、是否远程三种值
过程
分别保存字符串、整数和布尔值,打印值与 type,再修改最低薪资
结果 / 验收
三种类型正确;修改一个变量不会意外改变其他字段
常见误区

以为变量声明后类型永远固定,或把数字文本直接拿去相加。

作品任务

把今天的能力接入“求职素材工坊”:分别保存字符串、整数和布尔值,打印值与 type,再修改最低薪资

验收: 三种类型正确;修改一个变量不会意外改变其他字段

自测:完成“Python语言中的变量”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:三种类型正确;修改一个变量不会意外改变其他字段

对应来源单元: Day 03 · Python语言中的变量
04

Day 04

Python语言中的运算符

先回答一个白话问题

今天要解决的是:把业务条件写成可计算、可判断的表达式。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

运算符像表格公式:输入相同,计算规则相同,输出应可复核。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

算术、比较、逻辑和赋值运算组成表达式;优先级不清时用括号表达意图。

例子 1 · 求职素材工坊 · Python语言中的运算符
输入
期望薪资 18000、岗位上限 22000、允许远程
过程
计算差额并判断“薪资达标且地点可接受”
结果 / 验收
输出差额 4000 和明确布尔结论;边界值 18000 也通过
常见误区

把 and/or 的自然语言直觉带进代码,却不为组合条件加测试。

作品任务

把今天的能力接入“求职素材工坊”:计算差额并判断“薪资达标且地点可接受”

验收: 输出差额 4000 和明确布尔结论;边界值 18000 也通过

自测:完成“Python语言中的运算符”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:输出差额 4000 和明确布尔结论;边界值 18000 也通过

对应来源单元: Day 04 · Python语言中的运算符
05

Day 05

分支结构

先回答一个白话问题

今天要解决的是:让程序根据证据走不同路线。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

像机场安检分流:同一入口根据证件和行李状态进入不同通道。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

if/elif/else 按顺序判断;第一个为真的分支执行,覆盖关系要从具体到一般。

例子 1 · 求职素材工坊 · 分支结构
输入
三份岗位:匹配、待确认、不匹配
过程
按技能缺口和地点生成三种状态,并加入恰好等于阈值的边界样本
结果 / 验收
每份岗位只进入一个分支,边界样本归类符合书面规则
常见误区

把多个独立 if 当成互斥分支,导致同一岗位被重复标记。

作品任务

把今天的能力接入“求职素材工坊”:按技能缺口和地点生成三种状态,并加入恰好等于阈值的边界样本

验收: 每份岗位只进入一个分支,边界样本归类符合书面规则

自测:完成“分支结构”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:每份岗位只进入一个分支,边界样本归类符合书面规则

对应来源单元: Day 05 · 分支结构
06

Day 06

循环结构

先回答一个白话问题

今天要解决的是:对一批数据重复同一种可验证操作。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

像流水线逐件扫码;循环负责重复,扫码规则仍应单独清楚。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

for 适合遍历已知集合,while 适合直到条件满足;break/continue 改变控制流。

例子 1 · 求职素材工坊 · 循环结构
输入
包含 12 个岗位标题的列表
过程
逐项清洗空格、跳过空标题、统计含 Python 的条目
结果 / 验收
处理数等于有效输入数,跳过数可解释,循环不会无限运行
常见误区

只盯着循环体写什么,忘了 while 的状态必须朝终止条件变化。

作品任务

把今天的能力接入“求职素材工坊”:逐项清洗空格、跳过空标题、统计含 Python 的条目

验收: 处理数等于有效输入数,跳过数可解释,循环不会无限运行

自测:完成“循环结构”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:处理数等于有效输入数,跳过数可解释,循环不会无限运行

对应来源单元: Day 06 · 循环结构
07

Day 07

分支和循环结构实战

先回答一个白话问题

今天要解决的是:把分支与循环组合成一个完整小算法。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

像筛选简历:逐份查看,同时按规则决定保留、标记还是跳过。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

算法是有限步骤和明确状态;先写输入输出例子,再组合控制结构。

例子 1 · 求职素材工坊 · 分支和循环结构实战
输入
20 条带薪资和技能标签的岗位
过程
遍历岗位,过滤缺薪资项,分层计数并输出前三个推荐
结果 / 验收
手算样本与程序结果一致;空列表、单条和重复条目都有结果
常见误区

为了“高级”使用嵌套循环,却没有先算清复杂度和重复工作。

作品任务

把今天的能力接入“求职素材工坊”:遍历岗位,过滤缺薪资项,分层计数并输出前三个推荐

验收: 手算样本与程序结果一致;空列表、单条和重复条目都有结果

自测:完成“分支和循环结构实战”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:手算样本与程序结果一致;空列表、单条和重复条目都有结果

对应来源单元: Day 07 · 分支和循环结构实战
08

Day 08

常用数据结构之列表-1

先回答一个白话问题

今天要解决的是:用有顺序的容器保存可重复条目。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

列表像排队队伍:位置有意义,同一个人名也可能出现两次。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

list 维护顺序并允许重复;索引从 0 开始,遍历比写死位置更稳。

例子 1 · 求职素材工坊 · 常用数据结构之列表-1
输入
按投递时间排列的岗位名称
过程
创建列表,读取首尾,遍历打印编号,并处理空列表
结果 / 验收
顺序保持;空列表不访问不存在的索引;编号从 1 展示
常见误区

把“第一个”写成索引 1,或默认列表永远非空。

作品任务

把今天的能力接入“求职素材工坊”:创建列表,读取首尾,遍历打印编号,并处理空列表

验收: 顺序保持;空列表不访问不存在的索引;编号从 1 展示

自测:完成“常用数据结构之列表-1”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:顺序保持;空列表不访问不存在的索引;编号从 1 展示

对应来源单元: Day 08 · 常用数据结构之列表-1
09

Day 09

常用数据结构之列表-2

先回答一个白话问题

今天要解决的是:安全地增删、排序和派生列表。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

像待办清单:新增、完成和重排都会改变当前清单,副本则保留原样。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

原地方法通常返回 None;切片和列表推导可创建新列表,排序键表达业务规则。

例子 1 · 求职素材工坊 · 常用数据结构之列表-2
输入
一组岗位字典,包含公司与截止日
过程
追加新岗位,删除失效项,按截止日排序,并生成公司名列表
结果 / 验收
原始与派生数据是否改变符合预期;同日项目排序稳定
常见误区

写 jobs = jobs.sort() 后得到 None,误以为排序丢了数据。

作品任务

把今天的能力接入“求职素材工坊”:追加新岗位,删除失效项,按截止日排序,并生成公司名列表

验收: 原始与派生数据是否改变符合预期;同日项目排序稳定

自测:完成“常用数据结构之列表-2”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:原始与派生数据是否改变符合预期;同日项目排序稳定

对应来源单元: Day 09 · 常用数据结构之列表-2
10

Day 10

常用数据结构之元组

先回答一个白话问题

今天要解决的是:表达不希望被随意改动的一组位置数据。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

元组像快递地址坐标:经纬度是一对,顺序和整体含义固定。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

tuple 不可变,适合返回多个值、字典键或表达固定记录,但不自动保证内部对象不可变。

例子 1 · 求职素材工坊 · 常用数据结构之元组
输入
函数返回“匹配分数、理由”
过程
用元组接收两个返回值并解包,故意交换顺序观察错误
结果 / 验收
调用端能按名字解包;错误顺序可由测试发现
常见误区

把不可变误解为“绝对安全”;元组里若放列表,列表仍能变。

作品任务

把今天的能力接入“求职素材工坊”:用元组接收两个返回值并解包,故意交换顺序观察错误

验收: 调用端能按名字解包;错误顺序可由测试发现

自测:完成“常用数据结构之元组”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:调用端能按名字解包;错误顺序可由测试发现

对应来源单元: Day 10 · 常用数据结构之元组
11

Day 11

常用数据结构之字符串

先回答一个白话问题

今天要解决的是:可靠地清洗、切分和格式化文本。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

字符串像一串编号珠子:可以按位置查看和切片,但不能在原串上改一颗。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

str 不可变;编码、大小写、空白与 Unicode 影响比较和搜索。

例子 1 · 求职素材工坊 · 常用数据结构之字符串
输入
带全角空格、换行和大小写差异的技能文本
过程
统一空白和大小写,按分隔符切成技能,再用 f-string 生成摘要
结果 / 验收
Python/python 被正确归一;中文不乱码;原始文本保留
常见误区

把 replace 等方法当成原地修改,调用后没有接收返回值。

作品任务

把今天的能力接入“求职素材工坊”:统一空白和大小写,按分隔符切成技能,再用 f-string 生成摘要

验收: Python/python 被正确归一;中文不乱码;原始文本保留

自测:完成“常用数据结构之字符串”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:Python/python 被正确归一;中文不乱码;原始文本保留

对应来源单元: Day 11 · 常用数据结构之字符串
12

Day 12

常用数据结构之集合

先回答一个白话问题

今天要解决的是:做去重、成员判断和集合关系计算。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

集合像门口盖章名单:关心来没来,不关心排第几,也不重复计数。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

set 用哈希实现快速成员判断;交并差直接表达技能重合与缺口。

例子 1 · 求职素材工坊 · 常用数据结构之集合
输入
个人技能与岗位要求两个列表
过程
转成集合,计算已具备、缺失和额外技能
结果 / 验收
重复标签不重复计数;结果能解释为何匹配或不匹配
常见误区

用集合后仍期待原始顺序,或把不可哈希的列表放进集合。

作品任务

把今天的能力接入“求职素材工坊”:转成集合,计算已具备、缺失和额外技能

验收: 重复标签不重复计数;结果能解释为何匹配或不匹配

自测:完成“常用数据结构之集合”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:重复标签不重复计数;结果能解释为何匹配或不匹配

对应来源单元: Day 12 · 常用数据结构之集合
13

Day 13

常用数据结构之字典

先回答一个白话问题

今天要解决的是:用键把字段名和字段值对应起来。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

字典像带字段名的申请表;看“公司”比记住它在第几个格子更可靠。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

dict 维护键值映射;get 适合可缺字段,直接索引适合必须字段并让错误暴露。

例子 1 · 求职素材工坊 · 常用数据结构之字典
输入
一条岗位记录的公司、标题、技能和链接
过程
创建字典,更新状态,读取可选薪资,并遍历字段
结果 / 验收
缺薪资时给明确默认;必填链接缺失时抛出可定位错误
常见误区

所有字段都用 get 静默返回 None,导致脏数据一路流到后面。

作品任务

把今天的能力接入“求职素材工坊”:创建字典,更新状态,读取可选薪资,并遍历字段

验收: 缺薪资时给明确默认;必填链接缺失时抛出可定位错误

自测:完成“常用数据结构之字典”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:缺薪资时给明确默认;必填链接缺失时抛出可定位错误

对应来源单元: Day 13 · 常用数据结构之字典
14

Day 14

函数和模块

先回答一个白话问题

今天要解决的是:把重复规则封装成有输入输出契约的单元。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

函数像自动售货机:投什么、出什么、哪些情况拒绝,都应写清。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

参数是输入契约,return 是输出;模块按责任组织函数,导入时不应偷偷执行任务。

例子 1 · 求职素材工坊 · 函数和模块
输入
岗位字典与个人技能集合
过程
写 score_job(job, skills),再从主程序调用并打印结果
结果 / 验收
同一输入得到可解释分数;缺字段行为有测试;导入模块不打印
常见误区

函数靠全局变量工作,表面参数很少,实际依赖隐藏。

作品任务

把今天的能力接入“求职素材工坊”:写 score_job(job, skills),再从主程序调用并打印结果

验收: 同一输入得到可解释分数;缺字段行为有测试;导入模块不打印

自测:完成“函数和模块”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:同一输入得到可解释分数;缺字段行为有测试;导入模块不打印

对应来源单元: Day 14 · 函数和模块
15

Day 15

函数应用实战

先回答一个白话问题

今天要解决的是:用多个小函数完成一条数据流水线。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

像厨房分工:清洗、称重、烹饪各自可检查,最后再装盘。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

把解析、校验、评分、格式化拆成纯函数,副作用集中在边界。

例子 1 · 求职素材工坊 · 函数应用实战
输入
三条格式不一致的岗位文本
过程
依次调用 parse、validate、score、format,记录每步中间值
结果 / 验收
每个函数能单独测试;坏输入停在校验层,不产生假结果
常见误区

把所有步骤塞进一个函数,只能整段重跑,无法定位哪步错。

作品任务

把今天的能力接入“求职素材工坊”:依次调用 parse、validate、score、format,记录每步中间值

验收: 每个函数能单独测试;坏输入停在校验层,不产生假结果

自测:完成“函数应用实战”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:每个函数能单独测试;坏输入停在校验层,不产生假结果

对应来源单元: Day 15 · 函数应用实战
16

Day 16

函数使用进阶

先回答一个白话问题

今天要解决的是:理解函数也能作为值被传递和组合。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

高阶函数像把“检查规则”插进质检台;质检台不必知道每条规则的细节。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

可调用对象能作为参数;lambda 只适合短小表达式,复杂逻辑用具名函数。

例子 1 · 求职素材工坊 · 函数使用进阶
输入
岗位列表与两种排序策略
过程
分别传入按薪资、按匹配度的 key 函数并比较结果
结果 / 验收
两种排序复用同一流程;规则名称能表达含义
常见误区

为了少写一行,把复杂条件塞进 lambda,导致无法调试和复用。

作品任务

把今天的能力接入“求职素材工坊”:分别传入按薪资、按匹配度的 key 函数并比较结果

验收: 两种排序复用同一流程;规则名称能表达含义

自测:完成“函数使用进阶”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:两种排序复用同一流程;规则名称能表达含义

对应来源单元: Day 16 · 函数使用进阶
17

Day 17

函数高级应用

先回答一个白话问题

今天要解决的是:用装饰器包围调用,用递归处理自相似结构。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

装饰器像门禁记录每次进出;递归像打开文件夹时遇到子文件夹继续同样操作。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

装饰器返回包装函数;递归必须有终止条件,并警惕深度和重复计算。

例子 1 · 求职素材工坊 · 函数高级应用
输入
嵌套作品目录与耗时统计需求
过程
递归列出文件;给解析函数加计时装饰器
结果 / 验收
所有文件只出现一次;空目录终止;计时不改变原返回值
常见误区

装饰器忘记保留函数元数据,或递归没有缩小问题规模。

作品任务

把今天的能力接入“求职素材工坊”:递归列出文件;给解析函数加计时装饰器

验收: 所有文件只出现一次;空目录终止;计时不改变原返回值

自测:完成“函数高级应用”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:所有文件只出现一次;空目录终止;计时不改变原返回值

对应来源单元: Day 17 · 函数高级应用
18

Day 18

面向对象编程入门

先回答一个白话问题

今天要解决的是:把长期存在的数据与相关行为放在同一个模型里。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

对象像一份会执行规则的档案,而不只是装字段的塑料袋。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

class 定义结构和行为,实例保存状态;初始化器建立有效对象的最低条件。

例子 1 · 求职素材工坊 · 面向对象编程入门
输入
公司、岗位、状态和评分
过程
定义 JobLead,创建实例,并让它生成一行摘要
结果 / 验收
无标题或链接时拒绝创建;摘要来自对象状态
常见误区

见到名词就建类,结果只有 getter/setter,没有真正行为。

作品任务

把今天的能力接入“求职素材工坊”:定义 JobLead,创建实例,并让它生成一行摘要

验收: 无标题或链接时拒绝创建;摘要来自对象状态

自测:完成“面向对象编程入门”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:无标题或链接时拒绝创建;摘要来自对象状态

对应来源单元: Day 18 · 面向对象编程入门
19

Day 19

面向对象编程进阶

先回答一个白话问题

今天要解决的是:用封装、继承和多态管理变化边界。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

多态像统一插座:设备内部不同,只要遵守接口就能供电。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

属性保护不变量;组合通常比深继承更灵活;多态依赖一致协议。

例子 1 · 求职素材工坊 · 面向对象编程进阶
输入
网页岗位源与手工录入源
过程
让两个来源都实现 fetch(),主流程只依赖统一接口
结果 / 验收
替换来源不改主流程;返回结构一致;错误语义一致
常见误区

把继承当代码复用捷径,形成难以理解的五层家谱。

作品任务

把今天的能力接入“求职素材工坊”:让两个来源都实现 fetch(),主流程只依赖统一接口

验收: 替换来源不改主流程;返回结构一致;错误语义一致

自测:完成“面向对象编程进阶”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:替换来源不改主流程;返回结构一致;错误语义一致

对应来源单元: Day 19 · 面向对象编程进阶
20

Day 20

面向对象编程应用

先回答一个白话问题

今天要解决的是:在一个小项目中选择函数、类和状态模型。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

像设计桌游:牌、玩家和规则各有职责,回合推进必须保持状态一致。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

实体、值对象和服务按职责协作;先写用例和不变量再画类。

例子 1 · 求职素材工坊 · 面向对象编程应用
输入
投递记录、公司与跟进动作
过程
建最小领域模型,完成“新增岗位—投递—安排跟进”流程
结果 / 验收
非法状态转换被拒绝;流程测试能复现;数据可序列化
常见误区

先画一堆类图再找需求,最终模型漂亮却没有可运行用例。

作品任务

把今天的能力接入“求职素材工坊”:建最小领域模型,完成“新增岗位—投递—安排跟进”流程

验收: 非法状态转换被拒绝;流程测试能复现;数据可序列化

自测:完成“面向对象编程应用”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:非法状态转换被拒绝;流程测试能复现;数据可序列化

对应来源单元: Day 20 · 面向对象编程应用

第二册 · Day 21–30

让程序读写真实世界的文件与服务

文件、JSON、CSV、Office、PDF、图片、消息和正则都属于边界工作:格式会坏、权限会失败、外部动作会产生副作用。

本册作品里程碑

做出能导入岗位表、生成作品材料并安全输出草稿的自动化工具箱。

21

Day 21

文件读写和异常处理

先回答一个白话问题

今天要解决的是:让数据跨程序运行保存,并对失败做有意义处理。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

文件像仓库;with 是离开时自动关门,异常处理是事故预案,不是把警报静音。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

文本有编码,文件有路径和模式;异常应在能补救或补充上下文的层处理。

例子 1 · 求职素材工坊 · 文件读写和异常处理
输入
一份 UTF-8 求职笔记文件
过程
用 with 读写,处理文件不存在与编码错误,保留原异常信息
结果 / 验收
成功写回;不存在时创建或明确提示;文件句柄关闭
常见误区

except Exception: pass 让程序“稳定”,实际吞掉了唯一线索。

作品任务

把今天的能力接入“求职素材工坊”:用 with 读写,处理文件不存在与编码错误,保留原异常信息

验收: 成功写回;不存在时创建或明确提示;文件句柄关闭

自测:完成“文件读写和异常处理”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:成功写回;不存在时创建或明确提示;文件句柄关闭

对应来源单元: Day 21 · 文件读写和异常处理
22

Day 22

对象的序列化和反序列化

先回答一个白话问题

今天要解决的是:在 Python 对象与 JSON/API 数据之间建立边界。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

序列化像把行李按托运规格装箱;开箱后还要检查是不是自己的东西。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

JSON 只表达有限类型;反序列化后必须校验字段、类型与版本。

例子 1 · 求职素材工坊 · 对象的序列化和反序列化
输入
岗位字典列表和一个公开 API 响应
过程
保存 JSON,重新读取,校验 schema,再模拟超时和坏响应
结果 / 验收
往返后关键字段一致;坏数据被拒绝;超时有重试上限
常见误区

认为 json.loads 成功就代表业务数据可信。

作品任务

把今天的能力接入“求职素材工坊”:保存 JSON,重新读取,校验 schema,再模拟超时和坏响应

验收: 往返后关键字段一致;坏数据被拒绝;超时有重试上限

自测:完成“对象的序列化和反序列化”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:往返后关键字段一致;坏数据被拒绝;超时有重试上限

对应来源单元: Day 22 · 对象的序列化和反序列化
23

Day 23

Python读写CSV文件

先回答一个白话问题

今天要解决的是:处理表格交换格式而不被逗号、换行和编码骗到。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

CSV 像纸质表格的交换约定;格子里也可能有逗号,不能自己随便 split。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

csv 模块处理引用与换行;表头、编码和缺失值需要显式策略。

例子 1 · 求职素材工坊 · Python读写CSV文件
输入
包含逗号公司名与空薪资的岗位 CSV
过程
用 DictReader 读取、校验表头、标准化空值,再写出清洗版
结果 / 验收
行数与有效记录数可解释;逗号字段不被拆坏;Excel 打开不乱码
常见误区

用 line.split(",") 解析真实 CSV,遇到引号字段就错位。

作品任务

把今天的能力接入“求职素材工坊”:用 DictReader 读取、校验表头、标准化空值,再写出清洗版

验收: 行数与有效记录数可解释;逗号字段不被拆坏;Excel 打开不乱码

自测:完成“Python读写CSV文件”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:行数与有效记录数可解释;逗号字段不被拆坏;Excel 打开不乱码

对应来源单元: Day 23 · Python读写CSV文件
24

Day 24

Python读写Excel文件-1

先回答一个白话问题

今天要解决的是:读取和生成业务人员实际使用的工作簿。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

Excel 像多张有格式的表,而 CSV 只有一张纯数据纸。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

工作簿、工作表、单元格和公式是不同层;库通常不负责计算 Excel 公式。

例子 1 · 求职素材工坊 · Python读写Excel文件-1
输入
含岗位、状态、截止日三列的 xlsx
过程
读取指定表头,写入新工作表,设置日期和列宽
结果 / 验收
重新打开后值与类型正确;日期不是乱码数字;原工作表未破坏
常见误区

只看生成文件存在,不重新打开验证内容和格式。

作品任务

把今天的能力接入“求职素材工坊”:读取指定表头,写入新工作表,设置日期和列宽

验收: 重新打开后值与类型正确;日期不是乱码数字;原工作表未破坏

自测:完成“Python读写Excel文件-1”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:重新打开后值与类型正确;日期不是乱码数字;原工作表未破坏

对应来源单元: Day 24 · 用Python读写Excel文件-1
25

Day 25

Python读写Excel文件-2

先回答一个白话问题

今天要解决的是:把统计和图表变成可复核的报告。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

图表像仪表盘,不是装饰;每个视觉元素都应回答一个问题。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

先聚合可信数据,再写单元格和图表引用;样式不能替代数据校验。

例子 1 · 求职素材工坊 · Python读写Excel文件-2
输入
按投递状态汇总的计数表
过程
生成透视式摘要、柱状图和数据更新时间
结果 / 验收
图表系列与汇总表一致;空数据有提示;图标题说明口径
常见误区

直接从脏明细画图,漂亮地放大了错误。

作品任务

把今天的能力接入“求职素材工坊”:生成透视式摘要、柱状图和数据更新时间

验收: 图表系列与汇总表一致;空数据有提示;图标题说明口径

自测:完成“Python读写Excel文件-2”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:图表系列与汇总表一致;空数据有提示;图标题说明口径

对应来源单元: Day 25 · Python读写Excel文件-2
26

Day 26

Python操作Word和PowerPoint文件

先回答一个白话问题

今天要解决的是:自动生成仍可编辑的文档与演示稿。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

模板像模具:固定结构保证一致,内容槽位决定每次成品。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

文档由段落、样式、图片和关系组成;生成后需要结构与视觉双重检查。

例子 1 · 求职素材工坊 · Python操作Word和PowerPoint文件
输入
个人经历 JSON 与职位要求
过程
填充一页项目说明和三页作品演示,缺字段用明确占位提示
结果 / 验收
标题层级正确;每页不溢出;打开后可编辑;信息来自输入
常见误区

把大量文字硬塞进模板,文件能开却无法阅读。

作品任务

把今天的能力接入“求职素材工坊”:填充一页项目说明和三页作品演示,缺字段用明确占位提示

验收: 标题层级正确;每页不溢出;打开后可编辑;信息来自输入

自测:完成“Python操作Word和PowerPoint文件”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:标题层级正确;每页不溢出;打开后可编辑;信息来自输入

对应来源单元: Day 26 · Python操作Word和PowerPoint文件
27

Day 27

Python操作PDF文件

先回答一个白话问题

今天要解决的是:从固定版式文档读取、合并并保护内容。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

PDF 像已经印好的纸,不保证里面的字还能按阅读顺序取出。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

页面对象、文本层和扫描图像不同;提取失败时需 OCR,且要保留页码来源。

例子 1 · 求职素材工坊 · Python操作PDF文件
输入
三份职位 PDF 与作品附件
过程
逐页提取文本并标页码,合并附件,给输出加元数据
结果 / 验收
每段可追溯到文件和页码;扫描页被识别或标记未识别
常见误区

看到 PDF 有文字就假设提取结果一定完整有序。

作品任务

把今天的能力接入“求职素材工坊”:逐页提取文本并标页码,合并附件,给输出加元数据

验收: 每段可追溯到文件和页码;扫描页被识别或标记未识别

自测:完成“Python操作PDF文件”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:每段可追溯到文件和页码;扫描页被识别或标记未识别

对应来源单元: Day 27 · Python操作PDF文件
28

Day 28

Python处理图像

先回答一个白话问题

今天要解决的是:批量调整图片而不破坏比例、颜色和隐私。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

图像像像素网格;缩放不是随便拉伸,裁剪也会丢信息。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

尺寸、模式、EXIF 和压缩率影响输出;批处理要保留原图并记录变换。

例子 1 · 求职素材工坊 · Python处理图像
输入
作品截图与头像副本
过程
按最长边缩放、生成缩略图、移除定位 EXIF
结果 / 验收
比例不变;文件大小下降;原图未覆盖;元数据检查通过
常见误区

反复保存 JPEG 导致质量累积下降,或原地覆盖无法恢复。

作品任务

把今天的能力接入“求职素材工坊”:按最长边缩放、生成缩略图、移除定位 EXIF

验收: 比例不变;文件大小下降;原图未覆盖;元数据检查通过

自测:完成“Python处理图像”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:比例不变;文件大小下降;原图未覆盖;元数据检查通过

对应来源单元: Day 28 · Python处理图像
29

Day 29

Python发送邮件和短信

先回答一个白话问题

今天要解决的是:把外部通信当成有副作用的高风险动作。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

发送消息像按下快递发货:预览可以重做,真正发出需要最后确认。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

SMTP/API 调用要分草稿与发送,凭证进环境变量,重试要防重复发送。

例子 1 · 求职素材工坊 · Python发送邮件和短信
输入
面试跟进邮件草稿与测试收件箱
过程
先生成预览,只向沙箱地址发送,记录消息 ID
结果 / 验收
收件人、主题、正文可核对;重复运行不重复发送;秘密不进代码
常见误区

本地测试直接用真实联系人和真实凭证。

作品任务

把今天的能力接入“求职素材工坊”:先生成预览,只向沙箱地址发送,记录消息 ID

验收: 收件人、主题、正文可核对;重复运行不重复发送;秘密不进代码

自测:完成“Python发送邮件和短信”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:收件人、主题、正文可核对;重复运行不重复发送;秘密不进代码

对应来源单元: Day 29 · Python发送邮件和短信
30

Day 30

正则表达式的应用

先回答一个白话问题

今天要解决的是:用模式匹配解决边界清楚的文本问题。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

正则像带规则的筛网;适合筛形状,不适合理解整篇语义。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

模式、分组、量词和边界共同决定匹配;复杂格式优先专用解析器。

例子 1 · 求职素材工坊 · 正则表达式的应用
输入
招聘文本里的邮箱、URL 和薪资范围
过程
先写正反样本,再提取字段并保留未匹配原文
结果 / 验收
正确样本命中,近似错误不误判,超长输入不过慢
常见误区

先写一个巨大正则再找测试,结果看似神奇却没人敢改。

作品任务

把今天的能力接入“求职素材工坊”:先写正反样本,再提取字段并保留未匹配原文

验收: 正确样本命中,近似错误不误判,超长输入不过慢

自测:完成“正则表达式的应用”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:正确样本命中,近似错误不误判,超长输入不过慢

对应来源单元: Day 30 · 正则表达式的应用

第三册 · Day 31–35

补上工程环境与网页这块地基

高级 Python、前端结构、浏览器交互、Linux 和 Shell 让脚本从“只在我电脑能跑”走向可展示、可部署。

本册作品里程碑

给命令行原型增加手机可读的网页界面和一键环境检查。

31

Day 31

Python语言进阶

先回答一个白话问题

今天要解决的是:理解迭代器、生成器、类型提示与并发选择。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

生成器像传送带边生产边消费,不必先把整仓库搬进内存。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

协议和惰性求值降低内存;类型提示改善协作但运行时不自动校验。

例子 1 · 求职素材工坊 · Python语言进阶
输入
十万条岗位日志
过程
用生成器流式读取并统计,比较一次性列表的内存
结果 / 验收
结果一致;峰值内存明显下降;类型检查能发现错误调用
常见误区

把“高级语法”当目标,忽略可读性和真实瓶颈。

作品任务

把今天的能力接入“求职素材工坊”:用生成器流式读取并统计,比较一次性列表的内存

验收: 结果一致;峰值内存明显下降;类型检查能发现错误调用

自测:完成“Python语言进阶”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:结果一致;峰值内存明显下降;类型检查能发现错误调用

对应来源单元: Day 31 · Python语言进阶
32

Day 32

Web前端入门

先回答一个白话问题

今天要解决的是:用 HTML 给内容结构,用 CSS 给结构外观。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

HTML 像房屋骨架,CSS 像装修;只装修没有结构会影响无障碍。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

语义元素建立文档关系,样式负责布局;表单标签和焦点是可用性基础。

例子 1 · 求职素材工坊 · Web前端入门
输入
一份岗位详情数据
过程
做语义化详情页,加入响应式卡片和清楚标签
结果 / 验收
手机 390px 无横向滚动;不用 CSS 仍能按顺序阅读
常见误区

用 div 拼出所有东西,只追求视觉一样。

作品任务

把今天的能力接入“求职素材工坊”:做语义化详情页,加入响应式卡片和清楚标签

验收: 手机 390px 无横向滚动;不用 CSS 仍能按顺序阅读

自测:完成“Web前端入门”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:手机 390px 无横向滚动;不用 CSS 仍能按顺序阅读

对应来源单元: Day 32 · Web前端入门
33

Day 33

Web交互基础

先回答一个白话问题

今天要解决的是:让浏览器响应用户动作并更新状态。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

JavaScript 像展厅讲解员,用户点按钮后按规则改变展示。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

事件、DOM 和状态驱动交互;关键正文应先存在,脚本失败仍可读。

例子 1 · 求职素材工坊 · Web交互基础
输入
岗位筛选器和完成状态
过程
监听筛选输入,更新可见卡片,用安全存储保存完成状态
结果 / 验收
键盘可操作;刷新后状态合理;禁用脚本仍显示内容
常见误区

把所有数据只放在脚本里,脚本报错页面就一片空白。

作品任务

把今天的能力接入“求职素材工坊”:监听筛选输入,更新可见卡片,用安全存储保存完成状态

验收: 键盘可操作;刷新后状态合理;禁用脚本仍显示内容

自测:完成“Web交互基础”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:键盘可操作;刷新后状态合理;禁用脚本仍显示内容

对应来源单元: Day 33 · Web前端入门
34

Day 34

玩转Linux操作系统

先回答一个白话问题

今天要解决的是:在服务器上可靠定位文件、进程和权限。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

Linux 像共享工厂:路径是位置,用户和权限决定谁能动哪台机器。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

文件系统、进程、环境变量和权限构成运行边界;命令要先只读确认目标。

例子 1 · 求职素材工坊 · 玩转Linux操作系统
输入
一台测试服务器目录
过程
查看当前路径和文件,创建专用目录,检查权限和进程
结果 / 验收
所有产物留在指定目录;无越权;能解释每条命令影响
常见误区

复制粘贴递归删除命令,却没有先解析绝对路径。

作品任务

把今天的能力接入“求职素材工坊”:查看当前路径和文件,创建专用目录,检查权限和进程

验收: 所有产物留在指定目录;无越权;能解释每条命令影响

自测:完成“玩转Linux操作系统”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:所有产物留在指定目录;无越权;能解释每条命令影响

对应来源单元: Day 34 · 玩转Linux操作系统
35

Day 35

Shell与环境配置

先回答一个白话问题

今天要解决的是:把重复终端步骤写成可审计流程。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

Shell 脚本像开机清单;步骤明确,失败时应立刻指出哪项没完成。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

退出码、引号、环境变量和管道决定可靠性;秘密不写进脚本。

例子 1 · 求职素材工坊 · Shell与环境配置
输入
项目启动所需的检查清单
过程
检查 Python 版本、目录、配置文件和端口,失败即退出
结果 / 验收
缺一项时返回非零并给修复提示;含空格路径也能运行
常见误区

忽略引号和退出码,脚本“继续跑完”却早已失败。

作品任务

把今天的能力接入“求职素材工坊”:检查 Python 版本、目录、配置文件和端口,失败即退出

验收: 缺一项时返回非零并给修复提示;含空格路径也能运行

自测:完成“Shell与环境配置”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:缺一项时返回非零并给修复提示;含空格路径也能运行

对应来源单元: Day 35 · 玩转Linux操作系统

第四册 · Day 36–45

把数据放进有约束、能查询的系统

数据库不是保存文件的另一种写法。关系、约束、事务、权限、索引和查询共同保证数据可用。

本册作品里程碑

建立公司—岗位—投递数据模型,提供安全查询和可解释统计。

36

Day 36

关系型数据库和MySQL概述

先回答一个白话问题

今天要解决的是:知道何时需要数据库而不是继续堆文件。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

数据库像有管理员和索引的档案馆,不只是更大的 Excel。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

表、行、列、键和事务提供结构、一致性与并发能力。

例子 1 · 求职素材工坊 · 关系型数据库和MySQL概述
输入
岗位、公司、投递三类数据
过程
画实体关系,选主键并创建最小数据库
结果 / 验收
同一公司可关联多岗位;投递指向有效岗位;重复规则明确
常见误区

先装数据库再想数据关系,最后用一张万能大表。

作品任务

把今天的能力接入“求职素材工坊”:画实体关系,选主键并创建最小数据库

验收: 同一公司可关联多岗位;投递指向有效岗位;重复规则明确

自测:完成“关系型数据库和MySQL概述”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:同一公司可关联多岗位;投递指向有效岗位;重复规则明确

对应来源单元: Day 36 · 关系型数据库和MySQL概述
37

Day 37

SQL详解之DDL

先回答一个白话问题

今天要解决的是:用结构约束防止非法数据进入。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

DDL 像建房图纸:房间尺寸和承重先确定,入住后改动代价更高。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

CREATE/ALTER/DROP 改 schema;类型、非空、唯一和外键表达不变量。

例子 1 · 求职素材工坊 · SQL详解之DDL
输入
岗位表字段清单
过程
建表并加入链接唯一、状态非空和公司外键
结果 / 验收
非法外键与重复链接被数据库拒绝;迁移可重复执行
常见误区

把所有列都设成 TEXT,约束全靠应用记得检查。

作品任务

把今天的能力接入“求职素材工坊”:建表并加入链接唯一、状态非空和公司外键

验收: 非法外键与重复链接被数据库拒绝;迁移可重复执行

自测:完成“SQL详解之DDL”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:非法外键与重复链接被数据库拒绝;迁移可重复执行

对应来源单元: Day 37 · SQL详解之DDL
38

Day 38

SQL详解之DML

先回答一个白话问题

今天要解决的是:安全新增、修改和删除业务数据。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

DML 像档案员改记录;要知道改哪一行,也要能撤销误操作。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

INSERT/UPDATE/DELETE 由条件决定影响范围;事务包住一致操作。

例子 1 · 求职素材工坊 · SQL详解之DML
输入
一条岗位从收藏到已投递
过程
在事务中新增投递并更新岗位状态,故意制造中途失败
结果 / 验收
成功时两处都更新;失败时两处都回滚;影响行数可核对
常见误区

UPDATE 忘写 WHERE,或提交前从不检查影响行数。

作品任务

把今天的能力接入“求职素材工坊”:在事务中新增投递并更新岗位状态,故意制造中途失败

验收: 成功时两处都更新;失败时两处都回滚;影响行数可核对

自测:完成“SQL详解之DML”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:成功时两处都更新;失败时两处都回滚;影响行数可核对

对应来源单元: Day 38 · SQL详解之DML
39

Day 39

SQL详解之DQL

先回答一个白话问题

今天要解决的是:用查询回答业务问题而非只“把表打印出来”。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

查询像向档案馆提问题:字段、条件、分组和排序共同定义答案。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

SELECT、JOIN、GROUP BY、窗口函数把关系数据变成可解释结果集。

例子 1 · 求职素材工坊 · SQL详解之DQL
输入
岗位、公司和投递历史
过程
查询每家公司投递数、最近一次联系和状态排名
结果 / 验收
手工抽样与查询一致;重复连接不把计数放大;空值有策略
常见误区

JOIN 后直接 COUNT(*),没有检查一对多造成的重复行。

作品任务

把今天的能力接入“求职素材工坊”:查询每家公司投递数、最近一次联系和状态排名

验收: 手工抽样与查询一致;重复连接不把计数放大;空值有策略

自测:完成“SQL详解之DQL”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:手工抽样与查询一致;重复连接不把计数放大;空值有策略

对应来源单元: Day 39 · SQL详解之DQL
40

Day 40

SQL详解之DCL

先回答一个白话问题

今天要解决的是:按最小权限给人和程序访问能力。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

权限像办公楼门卡:能进会议室不等于能开财务柜。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

用户、角色、GRANT/REVOKE 控制数据库能力;应用账号不应拥有管理员权限。

例子 1 · 求职素材工坊 · SQL详解之DCL
输入
只读分析脚本和写入 API
过程
分别创建只读与读写角色,验证越权操作失败
结果 / 验收
只读账号不能更新;应用账号不能改 schema;权限有清单
常见误区

所有环境共用 root,方便一时,事故时无法隔离。

作品任务

把今天的能力接入“求职素材工坊”:分别创建只读与读写角色,验证越权操作失败

验收: 只读账号不能更新;应用账号不能改 schema;权限有清单

自测:完成“SQL详解之DCL”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:只读账号不能更新;应用账号不能改 schema;权限有清单

对应来源单元: Day 40 · SQL详解之DCL
41

Day 41

MySQL新特性

先回答一个白话问题

今天要解决的是:理解 JSON、窗口函数和 CTE 的适用边界。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

新工具像多功能刀:有用,但不是每个问题都该换掉专用工具。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

JSON 适合少量可变属性,CTE 改善复杂查询表达,窗口函数保留明细同时计算排名。

例子 1 · 求职素材工坊 · MySQL新特性
输入
岗位可选福利与公司排名
过程
用 JSON 存可变福利,用 CTE 分步查询,用窗口函数取每类前三
结果 / 验收
查询可读且有索引策略;核心字段仍是普通列
常见误区

因为支持 JSON 就把整条记录塞进一列,放弃约束和索引。

作品任务

把今天的能力接入“求职素材工坊”:用 JSON 存可变福利,用 CTE 分步查询,用窗口函数取每类前三

验收: 查询可读且有索引策略;核心字段仍是普通列

自测:完成“MySQL新特性”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:查询可读且有索引策略;核心字段仍是普通列

对应来源单元: Day 41 · MySQL新特性
42

Day 42

视图、函数和过程

先回答一个白话问题

今天要解决的是:把稳定查询接口与数据库逻辑分层。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

视图像档案馆的固定窗口:给常用视角,不暴露后面的全部柜子。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

视图封装查询,函数返回值,过程执行步骤;业务逻辑放哪要权衡可移植性。

例子 1 · 求职素材工坊 · 视图、函数和过程
输入
“待跟进岗位”公共查询
过程
建只读视图并比较应用层函数与存储过程方案
结果 / 验收
调用端字段稳定;权限只开放视图;逻辑位置有理由
常见误区

把复杂业务全塞进存储过程,版本和测试都失控。

作品任务

把今天的能力接入“求职素材工坊”:建只读视图并比较应用层函数与存储过程方案

验收: 调用端字段稳定;权限只开放视图;逻辑位置有理由

自测:完成“视图、函数和过程”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:调用端字段稳定;权限只开放视图;逻辑位置有理由

对应来源单元: Day 42 · 视图、函数和过程
43

Day 43

索引

先回答一个白话问题

今天要解决的是:用额外存储换取特定查询速度。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

索引像书后关键词页:查得快,但每次改书都要维护索引。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

B-tree 索引按前缀和选择性工作;执行计划比“感觉会快”可靠。

例子 1 · 求职素材工坊 · 索引
输入
按状态、截止日查询岗位
过程
先测慢查询,再建复合索引并比较执行计划与耗时
结果 / 验收
扫描行数下降;写入成本可接受;不用的索引删除
常见误区

每一列都建索引,读没快多少,写入和空间反而恶化。

作品任务

把今天的能力接入“求职素材工坊”:先测慢查询,再建复合索引并比较执行计划与耗时

验收: 扫描行数下降;写入成本可接受;不用的索引删除

自测:完成“索引”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:扫描行数下降;写入成本可接受;不用的索引删除

对应来源单元: Day 43 · 索引
44

Day 44

Python接入MySQL数据库

先回答一个白话问题

今天要解决的是:在代码中安全管理连接、参数和事务。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

数据库连接像借来的会议室:用完要归还,发生事故要恢复现场。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

连接池管理资源,参数化查询防注入,commit/rollback 保证事务边界。

例子 1 · 求职素材工坊 · Python接入MySQL数据库
输入
来自表单的公司名与岗位状态
过程
参数化写入,异常时回滚,finally/上下文管理归还连接
结果 / 验收
引号和恶意输入不改变 SQL 结构;失败无半条数据;连接数稳定
常见误区

用字符串拼接 SQL,并把数据库密码写进源码。

作品任务

把今天的能力接入“求职素材工坊”:参数化写入,异常时回滚,finally/上下文管理归还连接

验收: 引号和恶意输入不改变 SQL 结构;失败无半条数据;连接数稳定

自测:完成“Python接入MySQL数据库”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:引号和恶意输入不改变 SQL 结构;失败无半条数据;连接数稳定

对应来源单元: Day 44 · Python接入MySQL数据库
45

Day 45

Hive实战

先回答一个白话问题

今天要解决的是:理解大规模批处理与单机数据库的边界。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

Hive 像按批次盘点大仓库,擅长汇总,不适合每件商品实时结账。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

Hive 将查询转成分布式任务;分区、文件格式和数据倾斜影响成本。

例子 1 · 求职素材工坊 · Hive实战
输入
数百万条历史岗位快照
过程
按日期分区,写聚合查询统计技能趋势,并估算扫描量
结果 / 验收
只扫描目标分区;结果口径清楚;小数据不强行上大系统
常见误区

因为“大数据”听起来高级,把几千行数据搬进复杂集群。

作品任务

把今天的能力接入“求职素材工坊”:按日期分区,写聚合查询统计技能趋势,并估算扫描量

验收: 只扫描目标分区;结果口径清楚;小数据不强行上大系统

自测:完成“Hive实战”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:只扫描目标分区;结果口径清楚;小数据不强行上大系统

对应来源单元: Day 45 · Hive实战

第五册 · Day 46–60

把脚本做成多人能用的 Web 服务

Django、REST、会话、权限、缓存、异步、测试和发布把一个局部脚本变成有用户路径的系统。

本册作品里程碑

交付带登录、岗位管理、统计报表、API、测试和回滚说明的 Web 版本。

46

Day 46

Django快速上手

先回答一个白话问题

今天要解决的是:看懂一次 HTTP 请求如何到达 Python 再返回页面。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

Web 应用像餐厅:URL 是桌号,视图接单,模型取料,响应端菜。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

请求经路由进入视图,视图调用业务与模板生成响应;每层有不同责任。

例子 1 · 求职素材工坊 · Django快速上手
输入
浏览器请求 /jobs/
过程
创建项目和应用,配置 URL,返回岗位列表页面
结果 / 验收
正确状态码;未知路径 404;日志能追踪一次请求
常见误区

把所有逻辑写在视图函数里,路由一多就无法测试。

作品任务

把今天的能力接入“求职素材工坊”:创建项目和应用,配置 URL,返回岗位列表页面

验收: 正确状态码;未知路径 404;日志能追踪一次请求

自测:完成“Django快速上手”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:正确状态码;未知路径 404;日志能追踪一次请求

对应来源单元: Day 46 · Django快速上手
47

Day 47

深入模型

先回答一个白话问题

今天要解决的是:把领域关系映射为可迁移的 ORM 模型。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

ORM 像翻译员,把 Python 对象语言翻成 SQL,但翻译不会替你设计数据。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

模型字段、关系、迁移和查询集映射数据库结构;迁移要进版本控制。

例子 1 · 求职素材工坊 · 深入模型
输入
公司、岗位、投递实体
过程
定义模型与约束,生成迁移,创建测试数据并查询关系
结果 / 验收
迁移从空库可执行;约束生效;查询数量可观察
常见误区

以为用了 ORM 就不必懂 SQL 和事务。

作品任务

把今天的能力接入“求职素材工坊”:定义模型与约束,生成迁移,创建测试数据并查询关系

验收: 迁移从空库可执行;约束生效;查询数量可观察

自测:完成“深入模型”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:迁移从空库可执行;约束生效;查询数量可观察

对应来源单元: Day 47 · 深入模型
48

Day 48

静态资源和Ajax请求

先回答一个白话问题

今天要解决的是:区分页面资源与异步数据请求。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

静态资源像菜单版式,Ajax 像服务员不换桌就补上一道菜。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

CSS/JS 由静态管线提供;fetch/XHR 发 HTTP 请求,前端必须处理加载、成功和失败状态。

例子 1 · 求职素材工坊 · 静态资源和Ajax请求
输入
岗位状态切换按钮
过程
点击后发 PATCH,请求中禁用按钮,失败恢复原状态
结果 / 验收
无重复点击;失败有提示;刷新后状态与服务器一致
常见误区

只更新 DOM 不写服务器,用户以为保存了,刷新全丢。

作品任务

把今天的能力接入“求职素材工坊”:点击后发 PATCH,请求中禁用按钮,失败恢复原状态

验收: 无重复点击;失败有提示;刷新后状态与服务器一致

自测:完成“静态资源和Ajax请求”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:无重复点击;失败有提示;刷新后状态与服务器一致

对应来源单元: Day 48 · 静态资源和Ajax请求
49

Day 49

Cookie和Session

先回答一个白话问题

今天要解决的是:理解浏览器身份线索与服务器会话状态。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

Cookie 像取餐号,Session 像后台对应订单;取餐号不应装下整份订单。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

Cookie 随请求发送,Session 在服务端关联状态;安全属性降低窃取和跨站风险。

例子 1 · 求职素材工坊 · Cookie和Session
输入
用户登录与筛选偏好
过程
登录后建立会话,设置 HttpOnly/Secure/SameSite,退出时失效
结果 / 验收
未登录访问受限;退出后旧 cookie 无效;敏感数据不进 cookie
常见误区

把用户权限只存在前端 cookie,用户修改后就能越权。

作品任务

把今天的能力接入“求职素材工坊”:登录后建立会话,设置 HttpOnly/Secure/SameSite,退出时失效

验收: 未登录访问受限;退出后旧 cookie 无效;敏感数据不进 cookie

自测:完成“Cookie和Session”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:未登录访问受限;退出后旧 cookie 无效;敏感数据不进 cookie

对应来源单元: Day 49 · Cookie和Session
50

Day 50

制作报表

先回答一个白话问题

今天要解决的是:把数据库结果变成有口径的可下载报告。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

报表像财务账单:数字之外必须说明时间、范围和计算规则。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

查询、聚合、导出和模板是不同步骤;长任务不应阻塞请求。

例子 1 · 求职素材工坊 · 制作报表
输入
本月投递漏斗
过程
按状态聚合,生成带时间戳的 CSV/PDF 下载
结果 / 验收
总数与明细一致;空数据可下载说明;文件名与口径明确
常见误区

报表只写“成功率 30%”,不写分母和时间范围。

作品任务

把今天的能力接入“求职素材工坊”:按状态聚合,生成带时间戳的 CSV/PDF 下载

验收: 总数与明细一致;空数据可下载说明;文件名与口径明确

自测:完成“制作报表”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:总数与明细一致;空数据可下载说明;文件名与口径明确

对应来源单元: Day 50 · 制作报表
51

Day 51

日志和调试工具栏

先回答一个白话问题

今天要解决的是:让失败留下可检索证据。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

日志像航班黑匣子;记录关键状态,不等于录下所有乘客隐私。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

结构化日志含时间、级别、请求 ID 和事件;调试工具只在受控环境启用。

例子 1 · 求职素材工坊 · 日志和调试工具栏
输入
一次保存岗位失败请求
过程
记录请求 ID、用户动作、异常类型和安全字段,用工具查看查询
结果 / 验收
能沿请求 ID 找到全链路;无密码/简历正文;生产关闭调试页
常见误区

生产开启详细调试,既泄露秘密又给攻击者路线图。

作品任务

把今天的能力接入“求职素材工坊”:记录请求 ID、用户动作、异常类型和安全字段,用工具查看查询

验收: 能沿请求 ID 找到全链路;无密码/简历正文;生产关闭调试页

自测:完成“日志和调试工具栏”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:能沿请求 ID 找到全链路;无密码/简历正文;生产关闭调试页

对应来源单元: Day 51 · 日志和调试工具栏
52

Day 52

中间件的应用

先回答一个白话问题

今天要解决的是:在请求前后统一执行横切规则。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

中间件像办公楼前台:每个来访都先登记,但不代替各部门业务。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

中间件按顺序包裹请求/响应,适合认证、日志、限流等跨路由行为。

例子 1 · 求职素材工坊 · 中间件的应用
输入
所有 API 的请求计时与 ID
过程
写中间件生成请求 ID、记录耗时,并验证异常响应也带 ID
结果 / 验收
正常和错误响应都有 ID;顺序可解释;开销可测
常见误区

把具体岗位业务塞进全局中间件,所有请求都被迫承担。

作品任务

把今天的能力接入“求职素材工坊”:写中间件生成请求 ID、记录耗时,并验证异常响应也带 ID

验收: 正常和错误响应都有 ID;顺序可解释;开销可测

自测:完成“中间件的应用”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:正常和错误响应都有 ID;顺序可解释;开销可测

对应来源单元: Day 52 · 中间件的应用
53

Day 53

前后端分离开发入门

先回答一个白话问题

今天要解决的是:建立前端、API 与数据库之间的明确契约。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

前后端像买方和仓库,用订单格式协作,不直接进对方仓库翻货。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

API 定义资源、字段、错误和版本;CORS、认证和序列化处理边界。

例子 1 · 求职素材工坊 · 前后端分离开发入门
输入
独立网页读取 /api/jobs
过程
定义 JSON 契约,加载列表,处理 401、404 和 500
结果 / 验收
契约样例与真实响应一致;错误不是空白页;跨域范围最小
常见误区

后端改字段名,前端靠猜;没有契约测试。

作品任务

把今天的能力接入“求职素材工坊”:定义 JSON 契约,加载列表,处理 401、404 和 500

验收: 契约样例与真实响应一致;错误不是空白页;跨域范围最小

自测:完成“前后端分离开发入门”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:契约样例与真实响应一致;错误不是空白页;跨域范围最小

对应来源单元: Day 53 · 前后端分离开发入门
54

Day 54

RESTful架构和DRF入门

先回答一个白话问题

今天要解决的是:用资源和 HTTP 语义设计可预测接口。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

REST 像快递面单规范:地址、动作和状态码让不同系统都能协作。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

GET/POST/PATCH/DELETE 操作资源;序列化器校验,权限类控制访问。

例子 1 · 求职素材工坊 · RESTful架构和DRF入门
输入
岗位收藏资源
过程
实现列表、创建、详情和更新,返回恰当状态码
结果 / 验收
无效字段 400;不存在 404;创建 201;响应结构稳定
常见误区

所有动作都用 POST /doSomething,客户端只能记住特例。

作品任务

把今天的能力接入“求职素材工坊”:实现列表、创建、详情和更新,返回恰当状态码

验收: 无效字段 400;不存在 404;创建 201;响应结构稳定

自测:完成“RESTful架构和DRF入门”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:无效字段 400;不存在 404;创建 201;响应结构稳定

对应来源单元: Day 54 · RESTful架构和DRF入门
55

Day 55

RESTful架构和DRF进阶

先回答一个白话问题

今天要解决的是:处理分页、过滤、认证、权限和关联资源。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

接口进阶像图书馆系统:不只借书,还要身份、限额、检索和预约。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

查询参数控制分页过滤;认证识别身份,权限判断能否对该对象行动。

例子 1 · 求职素材工坊 · RESTful架构和DRF进阶
输入
多人各自的岗位清单
过程
加入令牌认证、对象级权限、分页和筛选,并写越权测试
结果 / 验收
用户只能看自己的记录;大列表分页;非法筛选有说明
常见误区

认证成功就默认拥有所有对象权限。

作品任务

把今天的能力接入“求职素材工坊”:加入令牌认证、对象级权限、分页和筛选,并写越权测试

验收: 用户只能看自己的记录;大列表分页;非法筛选有说明

自测:完成“RESTful架构和DRF进阶”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:用户只能看自己的记录;大列表分页;非法筛选有说明

对应来源单元: Day 55 · RESTful架构和DRF进阶
56

Day 56

使用缓存

先回答一个白话问题

今天要解决的是:用可失效的副本减少重复计算。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

缓存像白板上的今日汇率:查得快,但必须知道什么时候擦掉更新。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

键、值、TTL、失效与一致性组成缓存策略;先测瓶颈再缓存。

例子 1 · 求职素材工坊 · 使用缓存
输入
热门岗位统计接口
过程
缓存聚合结果,数据变化时失效,模拟缓存故障回源
结果 / 验收
命中更快;更新后不过期;缓存不可用仍返回正确结果
常见误区

缓存没有失效策略,把旧结果当真相长期展示。

作品任务

把今天的能力接入“求职素材工坊”:缓存聚合结果,数据变化时失效,模拟缓存故障回源

验收: 命中更快;更新后不过期;缓存不可用仍返回正确结果

自测:完成“使用缓存”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:命中更快;更新后不过期;缓存不可用仍返回正确结果

对应来源单元: Day 56 · 使用缓存
57

Day 57

接入三方平台

先回答一个白话问题

今天要解决的是:把外部服务当成不可靠、受配额约束的依赖。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

第三方 API 像外包快递:有合同,但仍可能迟到、限单或改格式。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

超时、重试、熔断、幂等、签名和版本是集成边界;响应必须校验。

例子 1 · 求职素材工坊 · 接入三方平台
输入
日历服务创建面试提醒
过程
先建本地待办,调用沙箱 API,保存外部 ID,处理超时后查状态
结果 / 验收
重复请求不建两条;超时能判断是否已成功;凭证隔离
常见误区

超时就立刻重试写操作,产生重复日程。

作品任务

把今天的能力接入“求职素材工坊”:先建本地待办,调用沙箱 API,保存外部 ID,处理超时后查状态

验收: 重复请求不建两条;超时能判断是否已成功;凭证隔离

自测:完成“接入三方平台”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:重复请求不建两条;超时能判断是否已成功;凭证隔离

对应来源单元: Day 57 · 接入三方平台
58

Day 58

异步任务和定时任务

先回答一个白话问题

今天要解决的是:让耗时工作脱离请求,同时保持可追踪。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

异步队列像餐厅取号:前台先给号码,后厨完成后再通知。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

任务队列保存工作,worker 执行;状态、重试、幂等和死信决定可靠性。

例子 1 · 求职素材工坊 · 异步任务和定时任务
输入
批量生成 100 份岗位摘要
过程
请求只入队并返回任务 ID,worker 处理,页面轮询状态
结果 / 验收
请求快速返回;失败可重试;同任务不重复产物;状态可查
常见误区

把任务丢进后台就不记录状态,失败后没人知道。

作品任务

把今天的能力接入“求职素材工坊”:请求只入队并返回任务 ID,worker 处理,页面轮询状态

验收: 请求快速返回;失败可重试;同任务不重复产物;状态可查

自测:完成“异步任务和定时任务”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:请求快速返回;失败可重试;同任务不重复产物;状态可查

对应来源单元: Day 58 · 异步任务和定时任务
59

Day 59

单元测试

先回答一个白话问题

今天要解决的是:用小而确定的例子守住行为契约。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

测试像量具:不是证明永远正确,而是稳定检查关键尺寸有没有变。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

Arrange-Act-Assert 描述输入、动作、结果;隔离外部依赖并覆盖边界。

例子 1 · 求职素材工坊 · 单元测试
输入
岗位评分函数与 API
过程
写正常、边界、异常和权限测试,故意改坏实现看测试失败
结果 / 验收
测试先能抓住故障;运行可重复;断言业务结果而非内部细节
常见误区

只追求覆盖率百分比,断言永远为真的无意义测试。

作品任务

把今天的能力接入“求职素材工坊”:写正常、边界、异常和权限测试,故意改坏实现看测试失败

验收: 测试先能抓住故障;运行可重复;断言业务结果而非内部细节

自测:完成“单元测试”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:测试先能抓住故障;运行可重复;断言业务结果而非内部细节

对应来源单元: Day 59 · 单元测试
60

Day 60

项目上线

先回答一个白话问题

今天要解决的是:把本地能跑变成可回滚、可观察的服务。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

上线像搬家营业:钥匙、水电、消防和退路都要在开门前检查。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

配置、静态文件、数据库迁移、进程、反向代理、TLS、日志和回滚共同构成发布。

例子 1 · 求职素材工坊 · 项目上线
输入
求职素材工坊测试环境
过程
写部署清单,构建候选版,做健康检查,演练回滚
结果 / 验收
新版本可访问;旧数据在;错误日志可查;回滚步骤实际跑通
常见误区

只验证进程启动,不验证用户路径和回滚。

作品任务

把今天的能力接入“求职素材工坊”:写部署清单,构建候选版,做健康检查,演练回滚

验收: 新版本可访问;旧数据在;错误日志可查;回滚步骤实际跑通

自测:完成“项目上线”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:新版本可访问;旧数据在;错误日志可查;回滚步骤实际跑通

对应来源单元: Day 60 · 项目上线

第六册 · Day 61–65

在合法与可靠边界内采集公开数据

网络采集首先是来源许可与数据边界问题,其次才是请求、解析、并发、浏览器自动化和框架。

本册作品里程碑

只针对许可样例源实现可限速、可追溯、可停止的数据摄取管线。

61

Day 61

网络数据采集概述

先回答一个白话问题

今天要解决的是:知道何时可以采集、应遵守哪些边界。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

采集像进入公开阅览室做笔记:能看到不等于能无限复制或绕过规则。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

robots、服务条款、著作权、个人信息、速率和缓存决定合法与礼貌边界。

例子 1 · 求职素材工坊 · 网络数据采集概述
输入
一个允许访问的公开招聘样例站
过程
先记录来源与许可,限定字段和频率,再写最小采集计划
结果 / 验收
只采必要公开字段;能停止;有来源时间;不绕登录和反爬
常见误区

以“公开网页”为理由抓取个人信息或绕过访问控制。

作品任务

把今天的能力接入“求职素材工坊”:先记录来源与许可,限定字段和频率,再写最小采集计划

验收: 只采必要公开字段;能停止;有来源时间;不绕登录和反爬

自测:完成“网络数据采集概述”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:只采必要公开字段;能停止;有来源时间;不绕登录和反爬

对应来源单元: Day 61 · 网络数据采集概述
62

Day 62

数据抓取和解析

先回答一个白话问题

今天要解决的是:把 HTTP 获取与 HTML 解析拆成两步。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

下载像取回包裹,解析像开箱分类;取回成功不代表里面就是预期货物。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

请求处理状态、超时和编码;解析器按 DOM 结构提取并对结构变化失败可见。

例子 1 · 求职素材工坊 · 数据抓取和解析
输入
三页许可样例 HTML
过程
保存原始响应,解析标题和链接,缺选择器时记录失败样本
结果 / 验收
每条结果可追溯原页;异常状态不解析;结构变化触发测试
常见误区

用正则解析任意 HTML,页面稍改就静默错位。

作品任务

把今天的能力接入“求职素材工坊”:保存原始响应,解析标题和链接,缺选择器时记录失败样本

验收: 每条结果可追溯原页;异常状态不解析;结构变化触发测试

自测:完成“数据抓取和解析”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:每条结果可追溯原页;异常状态不解析;结构变化触发测试

对应来源单元: Day 62 · 多文件单元
63

Day 63

Python中的并发编程

先回答一个白话问题

今天要解决的是:在等待型任务中提高吞吐并控制共享状态。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

并发像多窗口办理业务;窗口多会更快,也可能抢同一本登记簿。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

线程/协程适合 I/O 等待,进程适合 CPU;限速、锁、队列和取消控制风险。

例子 1 · 求职素材工坊 · Python中的并发编程
输入
50 个延迟不同的测试 URL
过程
用受限并发抓取,保持结果与输入关联,统计失败和耗时
结果 / 验收
速度提升可测;并发数受控;失败不丢;结果不串位
常见误区

无限创建并发任务,把对方服务和自己机器一起压垮。

作品任务

把今天的能力接入“求职素材工坊”:用受限并发抓取,保持结果与输入关联,统计失败和耗时

验收: 速度提升可测;并发数受控;失败不丢;结果不串位

自测:完成“Python中的并发编程”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:速度提升可测;并发数受控;失败不丢;结果不串位

对应来源单元: Day 63 · 多文件单元
64

Day 64

使用Selenium抓取网页动态内容

先回答一个白话问题

今天要解决的是:只在必须执行浏览器脚本时使用重工具。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

Selenium 像请真人操作网页;比直接取接口慢,但能处理交互流程。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

浏览器自动化依赖选择器、等待条件和会话;优先公开 API 和静态请求。

例子 1 · 求职素材工坊 · 使用Selenium抓取网页动态内容
输入
一个本地动态加载的职位演示页
过程
等待可见元素,读取内容,保存失败截图,并关闭浏览器
结果 / 验收
不用固定睡眠也稳定;失败有截图;进程无残留
常见误区

到处 sleep(5),网快浪费,网慢仍失败。

作品任务

把今天的能力接入“求职素材工坊”:等待可见元素,读取内容,保存失败截图,并关闭浏览器

验收: 不用固定睡眠也稳定;失败有截图;进程无残留

自测:完成“使用Selenium抓取网页动态内容”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:不用固定睡眠也稳定;失败有截图;进程无残留

对应来源单元: Day 64 · 使用Selenium抓取网页动态内容
65

Day 65

爬虫框架Scrapy简介

先回答一个白话问题

今天要解决的是:用框架组织请求、解析、去重和数据管道。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

框架像物流中心:调度、分拣、质检各有工位,不必每次从纸笔开始。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

Spider 产生请求和条目,scheduler 去重,pipeline 清洗保存;设置控制速率。

例子 1 · 求职素材工坊 · 爬虫框架Scrapy简介
输入
本地多页招聘站
过程
定义 item、spider 和 pipeline,限制域名与速率,导出 JSONL
结果 / 验收
不越域;重复 URL 只处理一次;坏字段进错误日志
常见误区

框架提供能力就默认允许使用,忽略来源许可和站点负担。

作品任务

把今天的能力接入“求职素材工坊”:定义 item、spider 和 pipeline,限制域名与速率,导出 JSONL

验收: 不越域;重复 URL 只处理一次;坏字段进错误日志

自测:完成“爬虫框架Scrapy简介”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:不越域;重复 URL 只处理一次;坏字段进错误日志

对应来源单元: Day 65 · 爬虫框架Scrapy简介

第七册 · Day 66–80

把杂乱记录变成能支持判断的证据

NumPy、pandas 和可视化服务于同一件事:把问题、口径、清洗、统计和沟通连成可复核分析。

本册作品里程碑

做出带数据字典、清洗日志、趋势图和下载明细的求职市场看板。

66

Day 66

数据分析概述

先回答一个白话问题

今天要解决的是:从业务问题出发,而不是先打开绘图库。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

分析像侦探工作:先写要回答的问题,再收集能反驳自己的证据。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

问题、指标、数据口径、清洗、探索和沟通构成闭环;相关不等于因果。

例子 1 · 求职素材工坊 · 数据分析概述
输入
“哪些技能值得优先学”的问题
过程
定义时间范围、岗位样本和技能出现率,再列偏差来源
结果 / 验收
结论带样本、口径和不确定性;不把频率写成薪资因果
常见误区

先画几十张图,再挑一张支持预设结论。

作品任务

把今天的能力接入“求职素材工坊”:定义时间范围、岗位样本和技能出现率,再列偏差来源

验收: 结论带样本、口径和不确定性;不把频率写成薪资因果

自测:完成“数据分析概述”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:结论带样本、口径和不确定性;不把频率写成薪资因果

对应来源单元: Day 66 · 数据分析概述
67

Day 67

环境准备

先回答一个白话问题

今天要解决的是:建立可复现的数据分析环境。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

环境文件像实验配方;同样的配方才能复现实验。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

虚拟环境隔离依赖,锁定版本,notebook 记录探索但不替代可执行管线。

例子 1 · 求职素材工坊 · 环境准备
输入
空白分析项目
过程
创建 venv、依赖清单、数据目录约定和一键检查脚本
结果 / 验收
新目录按 README 能重建;依赖版本可查;数据不混进源码
常见误区

全局 pip install,今天能跑,换电脑无法复现。

作品任务

把今天的能力接入“求职素材工坊”:创建 venv、依赖清单、数据目录约定和一键检查脚本

验收: 新目录按 README 能重建;依赖版本可查;数据不混进源码

自测:完成“环境准备”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:新目录按 README 能重建;依赖版本可查;数据不混进源码

对应来源单元: Day 67 · 环境准备
68

Day 68

NumPy的应用-1

先回答一个白话问题

今天要解决的是:理解数组、形状和向量化。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

数组像规则网格;每个轴都有长度,形状不对就像拼错积木。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

ndarray 存同质数据;shape、dtype 和广播决定运算语义。

例子 1 · 求职素材工坊 · NumPy的应用-1
输入
10 个岗位的薪资上下限
过程
建二维数组,计算中位值和列均值,并打印 shape
结果 / 验收
形状与字段对应;结果能手算抽查;缺失值不被当 0
常见误区

只看元素数量,不看轴的含义,广播出“能算但算错”的结果。

作品任务

把今天的能力接入“求职素材工坊”:建二维数组,计算中位值和列均值,并打印 shape

验收: 形状与字段对应;结果能手算抽查;缺失值不被当 0

自测:完成“NumPy的应用-1”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:形状与字段对应;结果能手算抽查;缺失值不被当 0

对应来源单元: Day 68 · NumPy的应用-1
69

Day 69

NumPy的应用-2

先回答一个白话问题

今天要解决的是:用索引、切片和布尔掩码选择数据。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

掩码像透明筛片,真位置透光,假位置遮住。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

基础切片常是视图,高级索引常是副本;修改是否影响原数组要清楚。

例子 1 · 求职素材工坊 · NumPy的应用-2
输入
薪资数组与远程标记
过程
用布尔条件选出远程且薪资达标项,测试副本/视图行为
结果 / 验收
筛选数与手算一致;修改派生数组不会意外污染原数据
常见误区

以为所有切片都是独立副本,修改后原数据悄悄变化。

作品任务

把今天的能力接入“求职素材工坊”:用布尔条件选出远程且薪资达标项,测试副本/视图行为

验收: 筛选数与手算一致;修改派生数组不会意外污染原数据

自测:完成“NumPy的应用-2”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:筛选数与手算一致;修改派生数组不会意外污染原数据

对应来源单元: Day 69 · NumPy的应用-2
70

Day 70

NumPy的应用-3

先回答一个白话问题

今天要解决的是:处理统计、随机与缺失数据。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

随机数像洗牌;要比较实验,就要记录同一副牌的起点。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

聚合轴决定统计方向;随机种子支持复现;NaN 需要明确处理。

例子 1 · 求职素材工坊 · NumPy的应用-3
输入
带缺失薪资的样本
过程
按列计算忽略 NaN 的统计,用固定种子抽样验证
结果 / 验收
同种子结果一致;缺失数量报告;聚合轴解释正确
常见误区

把缺失值直接填 0,拉低薪资均值却不说明。

作品任务

把今天的能力接入“求职素材工坊”:按列计算忽略 NaN 的统计,用固定种子抽样验证

验收: 同种子结果一致;缺失数量报告;聚合轴解释正确

自测:完成“NumPy的应用-3”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:同种子结果一致;缺失数量报告;聚合轴解释正确

对应来源单元: Day 70 · NumPy的应用-3
71

Day 71

NumPy的应用-4

先回答一个白话问题

今天要解决的是:理解线性代数操作与性能边界。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

矩阵乘法像把多个加权规则一次应用到多条记录。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

点积、转置和矩阵乘法有严格维度;向量化减少 Python 循环开销。

例子 1 · 求职素材工坊 · NumPy的应用-4
输入
岗位特征矩阵与技能权重
过程
计算加权匹配分,先用小矩阵手算,再扩大数据
结果 / 验收
小样本完全一致;维度错误明确;性能比较有数据
常见误区

把 * 当矩阵乘法,得到逐元素结果却没有报错。

作品任务

把今天的能力接入“求职素材工坊”:计算加权匹配分,先用小矩阵手算,再扩大数据

验收: 小样本完全一致;维度错误明确;性能比较有数据

自测:完成“NumPy的应用-4”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:小样本完全一致;维度错误明确;性能比较有数据

对应来源单元: Day 71 · NumPy的应用-4
72

Day 72

深入浅出pandas-1

先回答一个白话问题

今天要解决的是:用 Series/DataFrame 表达带标签的表格。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

DataFrame 像有行列标签的智能表,而不是二维列表。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

索引、列名、dtype 和缺失值是核心;读取时先审计结构。

例子 1 · 求职素材工坊 · 深入浅出pandas-1
输入
岗位 CSV
过程
读取后查看 shape、columns、dtypes、head 和缺失统计
结果 / 验收
字段数、行数和类型符合数据字典;异常列被标出
常见误区

数据读进来能显示就立刻分析,不先查类型和缺失。

作品任务

把今天的能力接入“求职素材工坊”:读取后查看 shape、columns、dtypes、head 和缺失统计

验收: 字段数、行数和类型符合数据字典;异常列被标出

自测:完成“深入浅出pandas-1”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:字段数、行数和类型符合数据字典;异常列被标出

对应来源单元: Day 72 · 深入浅出pandas-1
73

Day 73

深入浅出pandas-2

先回答一个白话问题

今天要解决的是:用选择、过滤和赋值避免链式陷阱。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

loc 像同时写清行地址和列地址,减少“到底改了哪份副本”的歧义。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

loc/iloc 按标签/位置选择;链式赋值可能落在副本并产生不确定行为。

例子 1 · 求职素材工坊 · 深入浅出pandas-2
输入
状态为收藏的岗位
过程
用 loc 筛选并更新规范化状态,验证原表变化
结果 / 验收
只更新目标行;无 SettingWithCopy 风险;前后计数吻合
常见误区

对筛选结果直接赋值,警告被忽略,原表没改。

作品任务

把今天的能力接入“求职素材工坊”:用 loc 筛选并更新规范化状态,验证原表变化

验收: 只更新目标行;无 SettingWithCopy 风险;前后计数吻合

自测:完成“深入浅出pandas-2”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:只更新目标行;无 SettingWithCopy 风险;前后计数吻合

对应来源单元: Day 73 · 深入浅出pandas-2
74

Day 74

深入浅出pandas-3

先回答一个白话问题

今天要解决的是:清洗重复、缺失和异常值并保留决策记录。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

清洗像修复档案,必须知道为什么改、改了多少、能否追溯。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

去重键、缺失策略、类型转换和异常规则应由业务语义决定。

例子 1 · 求职素材工坊 · 深入浅出pandas-3
输入
含重复链接和多种薪资文本的表
过程
按规范化链接去重,解析薪资,无法解析的保留原因
结果 / 验收
每步行数变化有日志;原始列保留;异常不被静默删除
常见误区

dropna 一把删掉所有不完整行,样本偏差无人知。

作品任务

把今天的能力接入“求职素材工坊”:按规范化链接去重,解析薪资,无法解析的保留原因

验收: 每步行数变化有日志;原始列保留;异常不被静默删除

自测:完成“深入浅出pandas-3”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:每步行数变化有日志;原始列保留;异常不被静默删除

对应来源单元: Day 74 · 深入浅出pandas-3
75

Day 75

深入浅出pandas-4

先回答一个白话问题

今天要解决的是:用合并连接多张表并防止行数爆炸。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

merge 像数据库 JOIN;钥匙不唯一时,一把钥匙会配出多条组合。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

merge 的键与基数决定结果;validate 参数可声明一对一或多对一。

例子 1 · 求职素材工坊 · 深入浅出pandas-4
输入
岗位表与公司表
过程
按 company_id 多对一合并,检查未匹配和重复键
结果 / 验收
行数符合预期;validate 通过;未匹配单独报告
常见误区

合并后只看列多了,不检查行数翻倍。

作品任务

把今天的能力接入“求职素材工坊”:按 company_id 多对一合并,检查未匹配和重复键

验收: 行数符合预期;validate 通过;未匹配单独报告

自测:完成“深入浅出pandas-4”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:行数符合预期;validate 通过;未匹配单独报告

对应来源单元: Day 75 · 深入浅出pandas-4
76

Day 76

深入浅出pandas-5

先回答一个白话问题

今天要解决的是:按组聚合并保留可解释口径。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

groupby 像先分篮子再称重;分组键和聚合函数共同定义答案。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

split-apply-combine 产生分组统计;聚合前要明确分母和缺失处理。

例子 1 · 求职素材工坊 · 深入浅出pandas-5
输入
岗位按城市和远程状态
过程
计算数量、中位薪资和缺失率,输出整洁表
结果 / 验收
各组数量之和对得上总数;缺失率分母说明
常见误区

只展示平均薪资,不展示样本数,三条记录被当成趋势。

作品任务

把今天的能力接入“求职素材工坊”:计算数量、中位薪资和缺失率,输出整洁表

验收: 各组数量之和对得上总数;缺失率分母说明

自测:完成“深入浅出pandas-5”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:各组数量之和对得上总数;缺失率分母说明

对应来源单元: Day 76 · 深入浅出pandas-5
77

Day 77

深入浅出pandas-6

先回答一个白话问题

今天要解决的是:用时间序列和透视表回答变化问题。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

时间索引像录像带刻度;频率不同不能直接逐帧比较。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

日期解析、时区、resample、rolling 与 pivot 改变数据粒度。

例子 1 · 求职素材工坊 · 深入浅出pandas-6
输入
90 天岗位发布日期
过程
按周重采样,计算四周滚动均值,做技能×月份透视表
结果 / 验收
时区统一;空周保留;聚合后总数可追溯
常见误区

把字符串日期按字母排序,或混用本地时间和 UTC。

作品任务

把今天的能力接入“求职素材工坊”:按周重采样,计算四周滚动均值,做技能×月份透视表

验收: 时区统一;空周保留;聚合后总数可追溯

自测:完成“深入浅出pandas-6”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:时区统一;空周保留;聚合后总数可追溯

对应来源单元: Day 77 · 深入浅出pandas-6
78

Day 78

数据可视化-1

先回答一个白话问题

今天要解决的是:选择能准确表达比较、分布和趋势的图。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

图表像句型:柱状图说比较,折线图说变化,直方图说分布。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

视觉编码的位置和长度通常比面积颜色更易比较;图形要匹配问题。

例子 1 · 求职素材工坊 · 数据可视化-1
输入
技能频率与薪资分布
过程
分别画排序条形图和直方图,并写一句读图结论
结果 / 验收
轴、单位、样本数、时间范围齐全;结论不超出图
常见误区

用饼图比较二十种技能,颜色很多但无法读出差异。

作品任务

把今天的能力接入“求职素材工坊”:分别画排序条形图和直方图,并写一句读图结论

验收: 轴、单位、样本数、时间范围齐全;结论不超出图

自测:完成“数据可视化-1”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:轴、单位、样本数、时间范围齐全;结论不超出图

对应来源单元: Day 78 · 数据可视化-1
79

Day 79

数据可视化-2

先回答一个白话问题

今天要解决的是:让多图比较保持一致尺度并显示不确定性。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

小多图像把同一种尺子放到不同房间,才能公平比较。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

subplot、共享轴、颜色语义和误差区间影响可比性。

例子 1 · 求职素材工坊 · 数据可视化-2
输入
三个城市的月度岗位变化
过程
做共享 y 轴小多图并标异常月份
结果 / 验收
同色含义一致;轴范围可比;异常点有数据解释
常见误区

每张图自动缩放,看起来都在“暴涨”。

作品任务

把今天的能力接入“求职素材工坊”:做共享 y 轴小多图并标异常月份

验收: 同色含义一致;轴范围可比;异常点有数据解释

自测:完成“数据可视化-2”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:同色含义一致;轴范围可比;异常点有数据解释

对应来源单元: Day 79 · 数据可视化-2
80

Day 80

数据可视化-3

先回答一个白话问题

今天要解决的是:把分析整理成可交互但不误导的看板。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

看板像驾驶舱:只放支持决策的仪表,还要说明数据是否过期。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

筛选状态、联动和数据更新时间属于产品逻辑;默认视图不能隐藏关键异常。

例子 1 · 求职素材工坊 · 数据可视化-3
输入
求职趋势看板
过程
加入日期、城市、技能筛选和下载明细,提供空状态
结果 / 验收
筛选结果与下载一致;手机可用;更新时间可见;无数据不画零
常见误区

把所有图塞一屏,用交互掩盖口径不清。

作品任务

把今天的能力接入“求职素材工坊”:加入日期、城市、技能筛选和下载明细,提供空状态

验收: 筛选结果与下载一致;手机可用;更新时间可见;无数据不画零

自测:完成“数据可视化-3”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:筛选结果与下载一致;手机可用;更新时间可见;无数据不画零

对应来源单元: Day 80 · 数据可视化-3

第八册 · Day 81–90

先做可信基线,再谈机器学习

从任务定义、特征与标签走到多类经典算法;每次都比较基线、检查泄漏、分析错误并记录禁止用途。

本册作品里程碑

交付岗位优先级模型、可复现管线、错误分析和模型卡。

81

Day 81

浅谈机器学习

先回答一个白话问题

今天要解决的是:把机器学习任务与普通规则区分开。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

机器学习像从例题归纳规则;规则代码则是人直接写出判定条件。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

特征、标签、训练和推断构成监督学习;无监督学习没有答案标签。

例子 1 · 求职素材工坊 · 浅谈机器学习
输入
历史岗位及人工匹配标签
过程
写问题定义、成功指标和规则基线,再决定是否训练
结果 / 验收
能说明标签来源、使用场景和基线;不以“用了模型”为成功
常见误区

数据一到手就选算法,没有先确认预测会被怎样使用。

作品任务

把今天的能力接入“求职素材工坊”:写问题定义、成功指标和规则基线,再决定是否训练

验收: 能说明标签来源、使用场景和基线;不以“用了模型”为成功

自测:完成“浅谈机器学习”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:能说明标签来源、使用场景和基线;不以“用了模型”为成功

对应来源单元: Day 81 · 浅谈机器学习
82

Day 82

k最近邻算法

先回答一个白话问题

今天要解决的是:用邻居相似性做简单基线。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

KNN 像向最相似的几位前辈请教;距离怎么定义决定你问到谁。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

特征缩放、距离度量和 k 控制偏差;预测成本随数据增长。

例子 1 · 求职素材工坊 · k最近邻算法
输入
岗位数值特征与类别
过程
标准化后比较 k=1、5、15,查看邻居与错误
结果 / 验收
验证集选择 k;邻居可解释;未缩放结果作为反例
常见误区

直接混合薪资和 0/1 特征,薪资量级支配全部距离。

作品任务

把今天的能力接入“求职素材工坊”:标准化后比较 k=1、5、15,查看邻居与错误

验收: 验证集选择 k;邻居可解释;未缩放结果作为反例

自测:完成“k最近邻算法”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:验证集选择 k;邻居可解释;未缩放结果作为反例

对应来源单元: Day 82 · k最近邻算法
83

Day 83

决策树和随机森林

先回答一个白话问题

今天要解决的是:用可解释分支与集成降低单树不稳定。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

决策树像连续问是非题;随机森林像让多位提问者投票。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

树按特征分裂降低不纯度;深度控制过拟合,森林平均多棵树。

例子 1 · 求职素材工坊 · 决策树和随机森林
输入
岗位是否值得优先申请标签
过程
训练浅树和森林,比较训练/验证表现与特征重要性
结果 / 验收
验证结果优于基线;深树过拟合可见;重要性不写成因果
常见误区

训练集 100% 就宣布模型完美。

作品任务

把今天的能力接入“求职素材工坊”:训练浅树和森林,比较训练/验证表现与特征重要性

验收: 验证结果优于基线;深树过拟合可见;重要性不写成因果

自测:完成“决策树和随机森林”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:验证结果优于基线;深树过拟合可见;重要性不写成因果

对应来源单元: Day 83 · 决策树和随机森林
84

Day 84

朴素贝叶斯算法

先回答一个白话问题

今天要解决的是:理解概率基线和“朴素独立”假设。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

像根据多个线索更新案件概率,但假设线索彼此独立只是简化。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

贝叶斯公式结合先验与似然;文本计数常与朴素贝叶斯配合。

例子 1 · 求职素材工坊 · 朴素贝叶斯算法
输入
岗位描述的技术/非技术分类
过程
做词袋特征,训练模型,查看高影响词和误判
结果 / 验收
与多数类基线比较;空文本可处理;高权重词人工审查
常见误区

把模型输出 0.9 当真实世界 90% 保证。

作品任务

把今天的能力接入“求职素材工坊”:做词袋特征,训练模型,查看高影响词和误判

验收: 与多数类基线比较;空文本可处理;高权重词人工审查

自测:完成“朴素贝叶斯算法”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:与多数类基线比较;空文本可处理;高权重词人工审查

对应来源单元: Day 84 · 朴素贝叶斯算法
85

Day 85

回归模型

先回答一个白话问题

今天要解决的是:预测连续数值并正确解释误差。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

回归像画一条尽量贴近散点的趋势线,不是穿过每个点。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

线性关系、损失、正则化和残差决定模型行为;外推尤其危险。

例子 1 · 求职素材工坊 · 回归模型
输入
岗位薪资中位数
过程
划分数据,训练线性/正则模型,画残差并对比均值基线
结果 / 验收
MAE 优于基线;残差模式说明局限;不对训练范围外乱推
常见误区

只报 R²,不看金额误差是否对求职决策有意义。

作品任务

把今天的能力接入“求职素材工坊”:划分数据,训练线性/正则模型,画残差并对比均值基线

验收: MAE 优于基线;残差模式说明局限;不对训练范围外乱推

自测:完成“回归模型”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:MAE 优于基线;残差模式说明局限;不对训练范围外乱推

对应来源单元: Day 85 · 回归模型
86

Day 86

K-Means聚类算法

先回答一个白话问题

今天要解决的是:在无标签数据中发现候选分组。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

K-Means 像反复移动几个集合点,让每个人去最近的点。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

初始化、尺度、k 和球状簇假设影响结果;簇编号本身无语义。

例子 1 · 求职素材工坊 · K-Means聚类算法
输入
岗位技能向量
过程
标准化,比较多个 k,查看质心并人工命名簇
结果 / 验收
不同种子稳定性可查;命名有代表样本;不把簇当真相
常见误区

聚出三簇就宣称世界天然只有三类岗位。

作品任务

把今天的能力接入“求职素材工坊”:标准化,比较多个 k,查看质心并人工命名簇

验收: 不同种子稳定性可查;命名有代表样本;不把簇当真相

自测:完成“K-Means聚类算法”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:不同种子稳定性可查;命名有代表样本;不把簇当真相

对应来源单元: Day 86 · K-Means聚类算法
87

Day 87

集成学习算法

先回答一个白话问题

今天要解决的是:组合多个弱或不同模型提高稳健性。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

集成像会诊:每位医生有偏差,合理汇总可减少单人失误。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

bagging 降方差,boosting 逐步修正误差;堆叠必须避免数据泄漏。

例子 1 · 求职素材工坊 · 集成学习算法
输入
同一岗位分类任务
过程
比较单树、随机森林和梯度提升,记录性能与延迟
结果 / 验收
在固定验证集比较;提升与复杂度权衡;概率校准检查
常见误区

模型越多越好,却没有独立验证和推断成本预算。

作品任务

把今天的能力接入“求职素材工坊”:比较单树、随机森林和梯度提升,记录性能与延迟

验收: 在固定验证集比较;提升与复杂度权衡;概率校准检查

自测:完成“集成学习算法”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:在固定验证集比较;提升与复杂度权衡;概率校准检查

对应来源单元: Day 87 · 集成学习算法
88

Day 88

神经网络模型

先回答一个白话问题

今天要解决的是:建立层、激活、损失与训练的最小心智模型。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

神经网络像多层可调混音台,训练不断微调旋钮减少误差。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

张量经过线性变换和非线性激活;反向传播计算梯度,优化器更新权重。

例子 1 · 求职素材工坊 · 神经网络模型
输入
小型技能分类数据
过程
建小网络,与逻辑回归比较,画训练/验证损失
结果 / 验收
数据量不足时承认简单模型更好;过拟合曲线可见
常见误区

把神经网络当万能升级,不比较更简单的基线。

作品任务

把今天的能力接入“求职素材工坊”:建小网络,与逻辑回归比较,画训练/验证损失

验收: 数据量不足时承认简单模型更好;过拟合曲线可见

自测:完成“神经网络模型”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:数据量不足时承认简单模型更好;过拟合曲线可见

对应来源单元: Day 88 · 神经网络模型
89

Day 89

自然语言处理入门

先回答一个白话问题

今天要解决的是:把文本转换为机器可处理表示。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

分词和向量像给文字建立索引,但索引不等于理解。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

清洗、token、词袋/TF-IDF/embedding 把文本变特征;语境与偏见仍需评估。

例子 1 · 求职素材工坊 · 自然语言处理入门
输入
职位描述与技能词典
过程
做 TF-IDF 基线,查看关键词,再记录否定句误判
结果 / 验收
词表和预处理可复现;示例解释;中英文混合有策略
常见误区

删除所有停用词,把“not”也删掉,语义反转。

作品任务

把今天的能力接入“求职素材工坊”:做 TF-IDF 基线,查看关键词,再记录否定句误判

验收: 词表和预处理可复现;示例解释;中英文混合有策略

自测:完成“自然语言处理入门”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:词表和预处理可复现;示例解释;中英文混合有策略

对应来源单元: Day 89 · 自然语言处理入门
90

Day 90

机器学习实战

先回答一个白话问题

今天要解决的是:把问题、数据、模型、评估和交付连成闭环。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

项目像接力赛;任何一棒没有清楚交接,最终分数都不可信。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

可复现管线封装预处理与模型;模型卡记录用途、数据、指标和限制。

例子 1 · 求职素材工坊 · 机器学习实战
输入
岗位优先级模型完整数据
过程
建 pipeline,交叉验证,分析错误,保存模型与模型卡
结果 / 验收
从空环境可重跑;预测接口校验;限制和禁止用途写明
常见误区

只交付 pickle 文件,没有数据口径、版本或使用说明。

作品任务

把今天的能力接入“求职素材工坊”:建 pipeline,交叉验证,分析错误,保存模型与模型卡

验收: 从空环境可重跑;预测接口校验;限制和禁止用途写明

自测:完成“机器学习实战”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:从空环境可重跑;预测接口校验;限制和禁止用途写明

对应来源单元: Day 90 · 机器学习实战

第九册 · Day 91–99

把个人作品升级成团队可维护的产品

协作、容器、性能、API、商业权限、测试、交易一致性、上线和面试叙述把技术片段连成真实项目能力。

本册作品里程碑

完成团队式 PR、容器部署、性能报告、安全边界和 90 秒项目讲解。

91

Day 91

团队项目开发的问题和解决方案

先回答一个白话问题

今天要解决的是:把个人脚本转成多人可协作项目。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

团队项目像多人接力,接口、分支和任务定义就是交接区。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

需求、Issue、分支、代码评审和持续集成降低协作冲突。

例子 1 · 求职素材工坊 · 团队项目开发的问题和解决方案
输入
三人开发求职素材工坊
过程
拆用户故事和验收标准,走一次小 PR 与评审
结果 / 验收
PR 范围小;测试通过;评审意见有回应;主分支可运行
常见误区

按页面平均分工,却没有先确定接口和集成顺序。

作品任务

把今天的能力接入“求职素材工坊”:拆用户故事和验收标准,走一次小 PR 与评审

验收: PR 范围小;测试通过;评审意见有回应;主分支可运行

自测:完成“团队项目开发的问题和解决方案”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:PR 范围小;测试通过;评审意见有回应;主分支可运行

92

Day 92

Docker容器技术详解

先回答一个白话问题

今天要解决的是:把应用和运行依赖打成可复现单元。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

容器像标准集装箱:装什么由镜像定义,在哪艘船上跑仍由宿主决定。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

Dockerfile 构建镜像,容器是运行实例;卷、网络和非 root 用户影响安全。

例子 1 · 求职素材工坊 · Docker容器技术详解
输入
Django API 与依赖
过程
写多阶段/精简镜像,用环境变量配置,非 root 启动
结果 / 验收
新机器一条命令运行;镜像无秘密;数据在卷;健康检查有效
常见误区

把数据库和上传数据留在容器可写层,重建就丢。

作品任务

把今天的能力接入“求职素材工坊”:写多阶段/精简镜像,用环境变量配置,非 root 启动

验收: 新机器一条命令运行;镜像无秘密;数据在卷;健康检查有效

自测:完成“Docker容器技术详解”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:新机器一条命令运行;镜像无秘密;数据在卷;健康检查有效

对应来源单元: Day 92 · Docker容器技术详解
93

Day 93

MySQL性能优化

先回答一个白话问题

今天要解决的是:从证据定位数据库瓶颈。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

优化像看医生:先量体温和做检查,不是先吃最贵的药。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

慢查询日志、执行计划、索引、查询重写和连接池共同影响性能。

例子 1 · 求职素材工坊 · MySQL性能优化
输入
岗位列表接口变慢
过程
记录基线,定位慢 SQL,改查询/索引,再做负载比较
结果 / 验收
p95 延迟下降;结果一致;写入成本可接受;有回退方案
常见误区

只加缓存掩盖 N+1 查询,缓存一失效系统仍崩。

作品任务

把今天的能力接入“求职素材工坊”:记录基线,定位慢 SQL,改查询/索引,再做负载比较

验收: p95 延迟下降;结果一致;写入成本可接受;有回退方案

自测:完成“MySQL性能优化”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:p95 延迟下降;结果一致;写入成本可接受;有回退方案

对应来源单元: Day 93 · MySQL性能优化
94

Day 94

网络API接口设计

先回答一个白话问题

今天要解决的是:设计稳定、可演进、可观测的系统契约。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

API 像长期执行的合同,字段和错误含义比函数名更难随便改。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

资源、版本、幂等、分页、错误模型、认证和速率限制组成公共接口。

例子 1 · 求职素材工坊 · 网络API接口设计
输入
对外提供岗位收藏 API
过程
写 OpenAPI 契约,设计幂等创建和统一错误,做契约测试
结果 / 验收
重复请求结果一致;错误可机器处理;旧客户端仍工作
常见误区

把内部数据库字段原样暴露,表一改接口全破。

作品任务

把今天的能力接入“求职素材工坊”:写 OpenAPI 契约,设计幂等创建和统一错误,做契约测试

验收: 重复请求结果一致;错误可机器处理;旧客户端仍工作

自测:完成“网络API接口设计”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:重复请求结果一致;错误可机器处理;旧客户端仍工作

对应来源单元: Day 94 · 网络API接口设计
95

Day 95

使用Django开发商业项目

先回答一个白话问题

今天要解决的是:把功能之外的权限、审计和运营纳入设计。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

商业系统像营业场所:不仅能开门,还要收银、监控、权限和客服流程。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

多租户、RBAC、审计、支付/通知边界和后台运营决定可用性。

例子 1 · 求职素材工坊 · 使用Django开发商业项目
输入
求职辅导机构的多用户版本
过程
做角色矩阵、租户隔离、审计事件和数据导出/删除流程
结果 / 验收
跨租户测试失败即阻断;敏感动作可追溯;用户能导出删除
常见误区

先做收费页面,后补权限,导致数据隔离无法补救。

作品任务

把今天的能力接入“求职素材工坊”:做角色矩阵、租户隔离、审计事件和数据导出/删除流程

验收: 跨租户测试失败即阻断;敏感动作可追溯;用户能导出删除

自测:完成“使用Django开发商业项目”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:跨租户测试失败即阻断;敏感动作可追溯;用户能导出删除

对应来源单元: Day 95 · 使用Django开发商业项目
96

Day 96

软件测试和自动化测试

先回答一个白话问题

今天要解决的是:建立从函数到用户路径的分层保障。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

测试金字塔像多层安检:小检查多而快,端到端少而关键。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

单元、集成、契约和 E2E 测试覆盖不同风险;CI 自动运行最小必要集合。

例子 1 · 求职素材工坊 · 软件测试和自动化测试
输入
登录—新增岗位—投递主路径
过程
为规则写单元、数据库写集成、API 写契约、关键路径写 E2E
结果 / 验收
故障能在最近层被抓住;CI 稳定;失败产物可诊断
常见误区

所有信心寄托在慢而脆的浏览器 E2E。

作品任务

把今天的能力接入“求职素材工坊”:为规则写单元、数据库写集成、API 写契约、关键路径写 E2E

验收: 故障能在最近层被抓住;CI 稳定;失败产物可诊断

自测:完成“软件测试和自动化测试”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:故障能在最近层被抓住;CI 稳定;失败产物可诊断

对应来源单元: Day 96 · 软件测试和自动化测试
97

Day 97

电商网站技术要点剖析

先回答一个白话问题

今天要解决的是:用高一致性业务理解订单、库存和支付边界。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

电商像多本账同时记账;少写一笔或重复一笔都会造成真实损失。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

订单状态机、库存预留、支付回调、幂等和补偿是通用交易模式。

例子 1 · 求职素材工坊 · 电商网站技术要点剖析
输入
把投递服务包想象成可购买服务
过程
设计订单状态机与支付回调,模拟重复回调和超时
结果 / 验收
重复回调不重复入账;状态转换受控;对账能发现不一致
常见误区

收到“支付成功”页面跳转就当最终到账。

作品任务

把今天的能力接入“求职素材工坊”:设计订单状态机与支付回调,模拟重复回调和超时

验收: 重复回调不重复入账;状态转换受控;对账能发现不一致

自测:完成“电商网站技术要点剖析”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:重复回调不重复入账;状态转换受控;对账能发现不一致

对应来源单元: Day 97 · 电商网站技术要点剖析
98

Day 98

项目部署上线和性能调优

先回答一个白话问题

今天要解决的是:用容量、延迟、错误和成本共同验收上线。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

性能像公路:不只看最高车速,还看高峰拥堵和事故恢复。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

负载测试、缓存、队列、数据库、静态资源和观测指标共同决定端到端表现。

例子 1 · 求职素材工坊 · 项目部署上线和性能调优
输入
公开演示版求职素材工坊
过程
设定 SLO,压测主路径,修最大瓶颈,做金丝雀和回滚
结果 / 验收
p95/错误率达标;数据不丢;监控报警;回滚时间有记录
常见误区

只在自己电脑点几下很快就宣布可承载用户。

作品任务

把今天的能力接入“求职素材工坊”:设定 SLO,压测主路径,修最大瓶颈,做金丝雀和回滚

验收: p95/错误率达标;数据不丢;监控报警;回滚时间有记录

自测:完成“项目部署上线和性能调优”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:p95/错误率达标;数据不丢;监控报警;回滚时间有记录

对应来源单元: Day 98 · 项目部署上线和性能调优
99

Day 99

面试中的公共问题

先回答一个白话问题

今天要解决的是:用可验证经历回答,而不是背术语。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

面试回答像事故复盘:背景、选择、证据和反思比口号更可信。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

STAR/问题—约束—方案—验证结构把项目事实变成可追问叙述。

例子 1 · 求职素材工坊 · 面试中的公共问题
输入
本项目一次真实性能问题
过程
写 90 秒项目介绍和三条深挖问答,附代码/图表证据
结果 / 验收
每个数字可追溯;能解释取舍和失败;不用“我们用了很多技术”
常见误区

背标准答案却说不出自己改了哪一行、为何这么选。

作品任务

把今天的能力接入“求职素材工坊”:写 90 秒项目介绍和三条深挖问答,附代码/图表证据

验收: 每个数字可追溯;能解释取舍和失败;不用“我们用了很多技术”

自测:完成“面试中的公共问题”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:每个数字可追溯;能解释取舍和失败;不用“我们用了很多技术”

对应来源单元: Day 99 · 面试中的公共问题

第十册 · Day 100

用证据结束课程,用路线开始求职

最后一天不继续堆知识点,而是审计作品、删除虚假熟练度、明确岗位差距并安排下一轮迭代。

本册作品里程碑

形成可投递作品主页、能力证据矩阵和 14 天求职改进计划。

100

Day 100

补充内容

先回答一个白话问题

今天要解决的是:把 100 天变成下一阶段的可执行路线。如果说不清这个问题,代码即使能运行,也很难复用或排错。

类比桥梁

毕业不是地图终点,而是你终于能自己规划下一段路线。

类比边界:类比只帮助识别关系;真正系统仍由数据、代码、接口和运行环境决定。

工程上到底发生什么

技能盘点、作品证据、岗位差距和迭代节奏形成持续学习系统。

例子 1 · 求职素材工坊 · 补充内容
输入
100 天产物、Git 记录和目标岗位描述
过程
做能力矩阵,删掉无证据技能,选一个 14 天改进目标
结果 / 验收
简历每项有链接或结果;下一步有日期和验收;缺口诚实
常见误区

继续收藏课程来逃避发布作品和接受反馈。

作品任务

把今天的能力接入“求职素材工坊”:做能力矩阵,删掉无证据技能,选一个 14 天改进目标

验收: 简历每项有链接或结果;下一步有日期和验收;缺口诚实

自测:完成“补充内容”后,什么证据比“程序没报错”更能说明它真的可用?

要检查可观察结果,而不是只看进程结束:简历每项有链接或结果;下一步有日期和验收;缺口诚实

对应来源单元: Day 100 · 补充内容

新手术语表

先用自己的话说一遍,再看定义

解释器

读取并执行 Python 代码的程序;版本和路径决定实际运行环境。

源代码

人编写的文本指令,不等于正在运行的进程。

变量

名字与值的绑定,用来表达会变化的数据。

类型

值支持哪些操作的分类,如字符串、整数和列表。

表达式

计算后会得到一个值的代码片段。

控制流

决定执行顺序的分支、循环和跳转。

可迭代对象

能逐个产生元素、可被 for 遍历的对象。

列表

有顺序、可修改、允许重复的容器。

元组

有顺序且自身不可修改的容器。

集合

无重复元素、适合成员判断与集合运算的容器。

字典

用唯一键查找值的映射。

函数

有输入、行为和输出契约的可复用单元。

参数

调用函数时提供给函数的输入。

返回值

函数完成后交还给调用者的结果。

模块

按责任组织 Python 代码的文件。

异常

程序无法按正常路径继续时产生的结构化错误信号。

上下文管理器

保证资源进入和退出动作成对执行的协议,常见形式是 with。

序列化

把内存对象转换为可保存或传输格式。

JSON

跨系统常用的文本数据格式,只支持有限基本类型。

CSV

用行列交换表格数据的文本格式,引用和编码需要规范解析。

正则表达式

描述文本形状的模式语言。

定义对象状态与行为的模板。

对象

类的具体实例,保存自己的状态。

封装

把数据与维护其不变量的行为放在清楚边界内。

继承

让类型复用或扩展父类型行为的机制;不等于默认最佳复用方式。

多态

不同实现遵守同一调用协议。

生成器

按需逐个产生值、避免一次加载全部结果的迭代器。

HTTP

浏览器、API 和服务器交换请求与响应的协议。

API

系统之间约定输入、输出、错误和权限的接口。

数据库

提供结构、查询、并发和一致性的数据管理系统。

主键

唯一标识一条记录的字段或字段组合。

外键

声明一条记录引用另一张表有效记录的约束。

事务

一组要么全部成功、要么全部撤销的数据操作。

索引

以额外空间和写入成本换取特定查询速度的数据结构。

ORM

在对象操作与关系数据库查询之间做映射的工具。

迁移

可版本化地修改数据库结构的步骤。

缓存

为了更快读取而保存的可失效副本。

幂等

同一请求重复执行,最终效果仍与执行一次相同。

队列

把待处理任务按规则保存并交给工作进程。

并发

多个任务在重叠时间推进,不等于一定同时使用多个 CPU。

单元测试

对一个小行为契约进行快速、隔离、可重复检查。

集成测试

检查多个真实组件协作结果的测试。

容器

由镜像创建的隔离进程环境,不是完整虚拟机。

DataFrame

带行列标签的二维表格数据结构。

向量化

用数组操作一次处理一批数据,减少 Python 层循环。

特征

模型用于做判断的输入表示。

标签

监督学习希望模型预测的目标答案。

基线

在复杂方案前建立的简单可比较参考。

过拟合

模型记住训练样本细节,面对新数据表现变差。

数据泄漏

训练时不恰当地获得了预测时本不该知道的信息。

模型卡

记录模型用途、数据、指标、限制和禁止用途的说明。

SLO

对可用性、延迟或错误率等服务目标的明确承诺。

p95 延迟

95% 请求都不超过的耗时阈值,用来观察长尾体验。

回滚

把失败发布恢复到最近已知可用版本。

可观测性

通过日志、指标和轨迹理解系统内部发生了什么的能力。

来源覆盖矩阵

每个来源单元都有去处

#讲义单元官方来源映射
1初识Python Day 01 · 初识Python
2第一个Python程序 Day 02 · 第一个Python程序
3Python语言中的变量 Day 03 · Python语言中的变量
4Python语言中的运算符 Day 04 · Python语言中的运算符
5分支结构 Day 05 · 分支结构
6循环结构 Day 06 · 循环结构
7分支和循环结构实战 Day 07 · 分支和循环结构实战
8常用数据结构之列表-1 Day 08 · 常用数据结构之列表-1
9常用数据结构之列表-2 Day 09 · 常用数据结构之列表-2
10常用数据结构之元组 Day 10 · 常用数据结构之元组
11常用数据结构之字符串 Day 11 · 常用数据结构之字符串
12常用数据结构之集合 Day 12 · 常用数据结构之集合
13常用数据结构之字典 Day 13 · 常用数据结构之字典
14函数和模块 Day 14 · 函数和模块
15函数应用实战 Day 15 · 函数应用实战
16函数使用进阶 Day 16 · 函数使用进阶
17函数高级应用 Day 17 · 函数高级应用
18面向对象编程入门 Day 18 · 面向对象编程入门
19面向对象编程进阶 Day 19 · 面向对象编程进阶
20面向对象编程应用 Day 20 · 面向对象编程应用
21文件读写和异常处理 Day 21 · 文件读写和异常处理
22对象的序列化和反序列化 Day 22 · 对象的序列化和反序列化
23Python读写CSV文件 Day 23 · Python读写CSV文件
24Python读写Excel文件-1 Day 24 · 用Python读写Excel文件-1
25Python读写Excel文件-2 Day 25 · Python读写Excel文件-2
26Python操作Word和PowerPoint文件 Day 26 · Python操作Word和PowerPoint文件
27Python操作PDF文件 Day 27 · Python操作PDF文件
28Python处理图像 Day 28 · Python处理图像
29Python发送邮件和短信 Day 29 · Python发送邮件和短信
30正则表达式的应用 Day 30 · 正则表达式的应用
31Python语言进阶 Day 31 · Python语言进阶
32Web前端入门 Day 32 · Web前端入门
33Web交互基础 Day 33 · Web前端入门
34玩转Linux操作系统 Day 34 · 玩转Linux操作系统
35Shell与环境配置 Day 35 · 玩转Linux操作系统
36关系型数据库和MySQL概述 Day 36 · 关系型数据库和MySQL概述
37SQL详解之DDL Day 37 · SQL详解之DDL
38SQL详解之DML Day 38 · SQL详解之DML
39SQL详解之DQL Day 39 · SQL详解之DQL
40SQL详解之DCL Day 40 · SQL详解之DCL
41MySQL新特性 Day 41 · MySQL新特性
42视图、函数和过程 Day 42 · 视图、函数和过程
43索引 Day 43 · 索引
44Python接入MySQL数据库 Day 44 · Python接入MySQL数据库
45Hive实战 Day 45 · Hive实战
46Django快速上手 Day 46 · Django快速上手
47深入模型 Day 47 · 深入模型
48静态资源和Ajax请求 Day 48 · 静态资源和Ajax请求
49Cookie和Session Day 49 · Cookie和Session
50制作报表 Day 50 · 制作报表
51日志和调试工具栏 Day 51 · 日志和调试工具栏
52中间件的应用 Day 52 · 中间件的应用
53前后端分离开发入门 Day 53 · 前后端分离开发入门
54RESTful架构和DRF入门 Day 54 · RESTful架构和DRF入门
55RESTful架构和DRF进阶 Day 55 · RESTful架构和DRF进阶
56使用缓存 Day 56 · 使用缓存
57接入三方平台 Day 57 · 接入三方平台
58异步任务和定时任务 Day 58 · 异步任务和定时任务
59单元测试 Day 59 · 单元测试
60项目上线 Day 60 · 项目上线
61网络数据采集概述 Day 61 · 网络数据采集概述
62数据抓取和解析 Day 62 · 多文件单元
63Python中的并发编程 Day 63 · 多文件单元
64使用Selenium抓取网页动态内容 Day 64 · 使用Selenium抓取网页动态内容
65爬虫框架Scrapy简介 Day 65 · 爬虫框架Scrapy简介
66数据分析概述 Day 66 · 数据分析概述
67环境准备 Day 67 · 环境准备
68NumPy的应用-1 Day 68 · NumPy的应用-1
69NumPy的应用-2 Day 69 · NumPy的应用-2
70NumPy的应用-3 Day 70 · NumPy的应用-3
71NumPy的应用-4 Day 71 · NumPy的应用-4
72深入浅出pandas-1 Day 72 · 深入浅出pandas-1
73深入浅出pandas-2 Day 73 · 深入浅出pandas-2
74深入浅出pandas-3 Day 74 · 深入浅出pandas-3
75深入浅出pandas-4 Day 75 · 深入浅出pandas-4
76深入浅出pandas-5 Day 76 · 深入浅出pandas-5
77深入浅出pandas-6 Day 77 · 深入浅出pandas-6
78数据可视化-1 Day 78 · 数据可视化-1
79数据可视化-2 Day 79 · 数据可视化-2
80数据可视化-3 Day 80 · 数据可视化-3
81浅谈机器学习 Day 81 · 浅谈机器学习
82k最近邻算法 Day 82 · k最近邻算法
83决策树和随机森林 Day 83 · 决策树和随机森林
84朴素贝叶斯算法 Day 84 · 朴素贝叶斯算法
85回归模型 Day 85 · 回归模型
86K-Means聚类算法 Day 86 · K-Means聚类算法
87集成学习算法 Day 87 · 集成学习算法
88神经网络模型 Day 88 · 神经网络模型
89自然语言处理入门 Day 89 · 自然语言处理入门
90机器学习实战 Day 90 · 机器学习实战
91团队项目开发的问题和解决方案 Day 91 · 团队项目开发的问题和解决方案
92Docker容器技术详解 Day 92 · Docker容器技术详解
93MySQL性能优化 Day 93 · MySQL性能优化
94网络API接口设计 Day 94 · 网络API接口设计
95使用Django开发商业项目 Day 95 · 使用Django开发商业项目
96软件测试和自动化测试 Day 96 · 软件测试和自动化测试
97电商网站技术要点剖析 Day 97 · 电商网站技术要点剖析
98项目部署上线和性能调优 Day 98 · 项目部署上线和性能调优
99面试中的公共问题 Day 99 · 面试中的公共问题
100补充内容 Day 100 · 补充内容

来源与版权边界

来源为骆昊的《Python-100-Days》。当前仓库有 Day 01–100 的课程结构,但部分天在源文件中合并或拆成多篇。本讲义按学习日恢复 100 个可定位单元;“完整”指覆盖知识路线,不是原文替代品。

打开官方来源 · 读取于 2026-07-20 · commit 462bfc3308d8 · 未声明许可证