研发工程化
CEO 速通班
From CEO to Code Reader · 6 Weeks Sprint
你已经是 产品、设计、运营、市场 的多面手。
剩下的最后一块——研发——不该是你的盲区。
- ✦ 产品:从 0 到 1 定义用户场景
- ✦ 设计:审美、版式、品牌、视觉语言
- ✦ 运营:流量、增长、留存、商业化
- ✦ 市场:定位、传播、价格、渠道
- ✦ 看得懂代码库:知道在哪里、是什么
- ✦ 参与得了架构:选型、权衡、风险
- ✦ 识别得出忽悠:5 个问题问到底
- ✦ 用得起 AI:自己改前端、自己读后端
研发会用更直接的语言跟你对话。
当 CEO 看不懂,研发会用术语保护自己。
不是当工程师。
是看得懂、说得过、改得动。
你不会被忽悠。当研发说"P99 跌了、QPS 抖了、ES 索引重建中",你脑中有画面,不需要追问。
你能参与决策。"做微服务还是不做?" 你能从工期、运维成本、团队规模、未来扩展四个维度讨论。
你能自己动手。用 Claude Code 给千图首页改一个组件、给后端加一个埋点、读懂 ES 配置文件。
市面上的研发课都在教"八股文"。
我们这本只教"第一性原理"。
❌ 传统研发课(八股文)
- "什么是 HTTP?" → 7 层模型背诵
- "什么是数据库索引?" → B+ 树结构图
- "什么是微服务?" → SOA / DDD 概念
- "什么是 Redis?" → 9 种数据结构
- "什么是 Kubernetes?" → Pod/Node 术语
→ 学完会考试,不会工作。
✅ 本课程(第一性原理)
- "用户点登录到看见首页" → 全链路
- "千图搜图为什么快" → 倒排索引本质
- "为什么千图选微服务而不是单体" → 真实权衡
- "Redis 解决了什么问题" → 缓存的存在意义
- "K8s 解决的真实痛点" → 部署演进史
→ 学完知道"为什么",能做决策。
每一册 = 一次费曼循环。
识 · 概念
读图文,了解概念的"它解决了什么问题"。
玩 · 实验
动手 5-15 分钟:用 Claude Code/DevTools 跑通一个 mini demo。
说 · 复述
用大白话给身边的人讲一遍(产品同事 / 投资人 / 家人)。
考 · 小测
10 题选择 + 1 题开放题,识别学得透不透。
本课程把"讲给非工程师"作为通过标准,而不是"刷题正确率"。
我们走「业务 → 机制 → 代码」,
不走研发的「语法 → 框架 → 业务」。
- 学语法(Java/Python/JS)— 3 个月
- 学框架(Spring/React/Django)— 2 个月
- 学工程(Git/CI/部署)— 1 个月
- 看真实代码 — 还要 1 个月
- 才能开始改业务 — 7 个月+
→ 你没这个时间,也不需要。
- 看真实业务的全链路(登录/搜图/支付)
- 拆出"每一步在做什么、为什么这样做"
- 看少量关键代码(10-20 行的核心片段)
- 用 AI 工具直接读懂、直接修改
- 开始参与架构讨论、做决策
→ 6-8 周到位。
8 册分布在 6 周,
每册 3-5 天,含阅读 + 实验 + 复述 + 小考。
学完以后,你的研发理解能力从内圈跳到外圈。
每册都是同一个五段式。
读法稳定,进度可预测。
这不是单方面的课程,是你和我的合作。
- ① 每册预留 3-5 天,不一口气塞完
- ② 每册动手做实验,不只是读
- ③ 每册讲给一个人听(柚柚 5 岁版亦可)
- ④ 小考 不通过就重读,不糊弄
- ⑤ 学完去千图 GitHub 仓库真的读一段代码
- ① 每册图视比 70% 以上,文字仅作注脚
- ② 每个概念先讲"它解决了什么问题",再讲实现
- ③ 每个术语配 PM 翻译卡:研发说什么、老板该听到什么
- ④ 每册千图业务锚定,不堆通用例子
- ⑤ 你不通过小考,我重写讲法,不甩锅给"学员悟性"
研发世界
地图
在千图这样规模的公司里,研发不是一个职业,是八个职业。能区分前端 / 后端 / 全栈 / 架构师 / DevOps / SRE / QA / 数据 / AI,是看懂研发组织架构的起点。
从"用户看见"到"代码跑起来不挂"——
每个岗位都守一段。
前端 FE
用户看到的所有像素。HTML/CSS/JS/React/Vue。
后端 BE
业务规则、数据存储、API。Java/Go/Python。
全栈 FS
前后端都干。小公司 / 创业团队主力。
架构师 Arch
画图、定方向、决技术选型。半管理半技术。
DevOps
让代码从仓库跑到线上。CI/CD / K8s / Docker。
SRE
让线上不挂。监控 / 告警 / 故障演练。
QA 测试
代码上线前的最后一关。功能/性能/兼容性。
数据/AI
数据工程师 / 算法 / AI 工程师。模型 + 数据管道。
前端工程师的一天(千图首页改版项目)
- 用户看到的每一个像素
- 用户感受到的每一次交互(点击/动效/反馈)
- 页面加载速度(首屏 / FCP / LCP)
- 多端兼容(PC / 手机 / 平板)
- "这个按钮的点击区域够大吗?"
- "首屏LCP多少秒?"
- "这个组件能复用吗?还是只能这一页用?"
- "换设计稿后,多少工作量?"
后端工程师的一天(千图付费会员升级接口)
- 给前端 / 移动端 提供 API
- 业务规则的正确性(钱不能错、订单不能丢)
- 数据存储 表结构 + 索引设计
- 性能:QPS / 延迟 / 资源占用
- "这接口幂等吗?" (用户重复点会扣两次吗?)
- "失败率多少?错误怎么对账?"
- "QPS 涨 10 倍扛得住吗?"
- "这数据谁能改?谁能查?"
"全栈"不是 1+1,是取舍。
千图什么时候用全栈,什么时候用专精?
全栈工程师
专精工程师
架构师不是"高级程序员",是研发的产品经理。
他思考的是3-5 年后的事。
业务能跑通
这次需求能不能在 deadline 之前上线?
还能加新需求吗
下一个迭代加新字段、新接口会不会改死老代码?
系统不被推翻
业务从 100 万用户长到 1 亿,架构不需要重写?
让所有人看到同一个未来
Architecture Decision Record,决策留痕
5 维打分,剔除主观偏好
现在 → 6 月 → 18 月分步骤
研发只负责"代码能跑通",
这俩负责"代码跑到线上" + "线上不挂"。
DevOps · "建路的人"
让代码从研发电脑→测试环境→线上服务器,自动化、可重复、不依赖人。
SRE · "守路的人"
代码上线后,监控所有指标、第一时间发现故障、第一时间恢复。可用性 4 个 9 / 5 个 9。
最后两类岗位:守门员与未来兵种。
QA · 守门员
代码合并前的最后一道防线。手测 + 自动化测试 + 性能测试 + 兼容性测试。
数据 / AI · 未来兵种
三个细分角色,外行常常混为一谈:
画一张千图研发组织架构图。
列出千图研发团队的真实岗位与人数(你应该比 Claude 更清楚),按"产品线 × 岗位类型"画一张矩阵图。
- 飞书 多维表格(按行列填)
- 或 Excalidraw(手画风格)
- 或 Figma / Whimsical(专业风格)
- 能说出每个岗位的产出物
- 能说出每个团队的核心 KPI
- 能识别哪个岗位现在缺人 / 冗余
30-45 分钟(含跟 VP 沟通校对时间)
5 题选择 + 1 题开放。
点选你认为对的答案,会有反馈。
一次请求的
旅程
用户在千图首页点击搜索"猫",从手指按下到看到结果——200 毫秒里发生了什么?拆开这 200ms,就是看懂整个互联网架构的起点。
你在 qiantu.com 搜"猫",
200ms 里发生了 7 件事。
200ms 是流畅的上限。超 500ms 用户会感觉"卡"。
最长的那条 = 优化重点。本图中是"渲染"。
"我们的 P99 时间分布在哪一段?怎么压?"
DNS = 把 qiantu.com 翻译成 IP 地址。
没有它,你打不通服务器的"电话"。
人类记得住 qiantu.com,记不住 39.107.42.18。DNS 就是"人类语言 → 机器语言"的翻译器。
DNS 结果会被浏览器、路由器、运营商层层缓存。所以第二次访问 DNS 几乎是 0ms。
研发说"DNS 污染"= 用户被劫持,访问千图被导到假网站。需要 HTTPDNS / DNS over HTTPS 防御。
为什么千图图片加载飞快?
答案是 CDN。
如果上海用户每次都访问北京源站,要 30ms。如果把图片放在上海的 CDN 节点,1ms 就拿到。
- 缓存静态资源(图片/CSS/JS)
- 就近接入(用户去最近的节点)
- 边缘计算(在节点上做轻量逻辑)
- "我们的 CDN 命中率多少?"(> 90% 才及格)
- "带宽成本占总成本比例?"(千图图片站重灾区)
- "图片更新策略怎么定?刷新机制?"
网关 = 城门,负载均衡 = 门口的引导员。
所有流量都从这里进来,然后分散到几百台服务器。
- 鉴权:你登录了吗?Token 有效吗?
- 限流:单 IP 一秒最多 100 次
- 分发:/api/user → 用户服务,/api/order → 订单服务
- 日志:所有请求落到日志系统
- 轮询:依次分配(最简单)
- 最少连接:哪台空闲发哪台
- 哈希:同一用户固定到同一台(session 黏滞)
研发说"限流降级了" = 流量太大,主动拒绝一部分请求,保护核心。你该问:"核心是哪些?被牺牲的是哪些?"
业务规则的所有判断,都在这里发生。
会员折扣、库存扣减、积分计算……
- 鉴权:核对用户身份
- 校验:参数合法吗?状态对吗?
- 外部调用:支付 / 短信 / 三方接口
- 持久化:写数据库
- 异步消息:触发后续动作
这段代码慢,整个请求就慢。优化重点:尽量异步、能缓存就缓存、能批量就批量。
"如果支付成功但数据库写失败怎么办?"——这是"分布式事务"问题,无银弹,要权衡。
所有"用户的状态"、"订单"、"关系"
都躺在数据库里。
没索引 = 翻完整本书找一个词。有索引 = 查目录直接翻到那一页。千图用户表 5000 万行,没索引一次查询要 60 秒,加索引后 10ms。
数据库一次查询 10ms。
Redis 一次查询 0.1ms。100 倍差距。
"热点数据" 重复查询造成数据库压力。把热门内容放内存,从磁盘搬到内存,速度 ×100。
- 击穿:一个 key 失效瞬间,请求全打 DB
- 穿透:查不存在的数据,缓存无用
- 雪崩:大量 key 同时失效
首页热门图、热搜词、用户会话、限流计数器——全靠 Redis。Redis 挂了,千图首页打不开。
数据回到浏览器之后,
还要渲染——把 JSON 变成你眼睛看到的图。
浏览器读到 <html> → 建 DOM 树(结构)
CSS 应用到每个节点 → 算颜色、字号、布局位置
显卡把每一帧像素画到屏幕。60FPS = 每帧 16.6ms。
把七段串起来:这就是一次请求。
遇到任何一段慢,你都能定位到环节。
用 Chrome DevTools 抓千图首页的真实请求瀑布图。
- 在 Chrome 打开
qiantu.com - 右键 → 检查(或 F12)
- 切到 Network 面板
- 刷新页面(Cmd+R)
- 观察瀑布图:每个请求多长
- Time:单次请求耗时
- Size:传输大小(图片 / JS 大小)
- Waterfall:哪些可以并行?
- Cache (200 from cache):命中缓存吗?
- Status:是否都是 200 OK
5 题选择 + 1 题诊断。
点选答案查看反馈。
数据库
与数据建模
所有"状态"都存在数据库里——用户、订单、积分、AI Token。看懂表结构和索引,就看懂了千图业务的核心模型。这一册是所有 CEO 必须懂的硬骨头。
数据库 = 一个超级 Excel,
但是千万人同时读写不打架,电断了数据不丢。
- Atomic 原子:要么全成,要么全败(不能"扣了钱没发货")
- Consistent 一致:数据规则永远成立
- Isolated 隔离:你改的时候别人看不到中间状态
- Durable 持久:写入后断电也不丢
研发说"事务回滚" = 一组操作失败了,把所有改动全部撤销,回到初始状态。支付场景必备。
这张图把千图业务的核心实体串起来。
箭头 = 谁引用谁。
唯一标识,类似身份证号
引用另一张表的主键
让查询快 100 倍
这三个概念,看懂表结构的钥匙。
研发讨论 80% 的 DB 话题离不开它们。
独一无二的身份证
每行数据的唯一标识,永不重复。通常是自增整数或 UUID。
用 id 而不用 email 当主键 → 后续可改邮箱
引用另一张表的主键
表达"这条订单属于哪个用户"。FK 保证引用的合法性。
实践中:大厂常常不加 FK 约束,靠业务保证
查询的加速器
本质是"目录"。让数据库快速定位,避免全表扫描。
索引≠免费午餐:每加一个索引,写入就慢一点
不同场景用不同库。
千图同时用三种。
MySQL / PostgreSQL
表 + 行 + 列,强一致,事务保证。钱、订单、用户必须用。
用户表、订单表、积分表、AI Token 计费表
MongoDB / Redis / ES
文档 / KV / 全文索引,灵活、快、扩展性强。不要求强一致的场景。
用户会话(Redis)、内容标签(Mongo)、搜图(ES)
Milvus / Pinecone
存"语义向量",做相似度搜索。AI 时代必备。
"以图搜图"、"找相似设计"、RAG 知识检索
事务 = 要么全部成功,要么全部回到原点。
支付、转账、库存——离开事务,业务必崩。
千图用户付了 99 元升级会员,第一步扣款成功,第二步升级权限失败,第三步发邮件失败。
结果:用户扣了钱,但权限没拿到。客诉爆炸。
不用学全套 SQL,
读懂这5 句,你能看懂 80% 的查询。
"从 users 表里查所有付费用户的 id/name/plan"
"插入一条新订单"
"把用户 123 升级为付费"
"删除 2023 年前已取消的订单"
"统计每个付费用户的订单数和总金额"——这一句开始就是慢查询的高发区。
某天你的研发说:"首页慢了,P99 跳到 800ms。"
真相在 EXPLAIN 里。
- SELECT * 查所有列(浪费 IO)
- LIKE '%cat%' 索引失效(前缀模糊)
- ORDER BY created_at 无索引
- 结果:扫 1 亿行,800ms
- 用单独的 asset_tags 倒排表
- ORDER BY 主键,自动有序
- 只查必要字段
- 结果:扫 1000 行,5ms
800ms
5ms
×160
用 Claude Code,让 AI 帮你读懂 EXPLAIN。
- 找研发要一条线上的 SQL(自己看着挑感兴趣的)
- 让研发跑
EXPLAIN [SQL] - 把结果粘给 Claude Code
- 问:"这条 SQL 有问题吗?如何优化?"
- 读 AI 解释,对照本课程的概念验证
能用大白话给研发复述:这条 SQL 走的什么索引、扫了多少行、瓶颈在哪。
三个魔法关键字 · 看 EXPLAIN 结果:
type:const > ref > range > ALL(全表扫,烂!)
rows:越小越好
key:是否用了索引(NULL = 没用)
5 题选择 + 1 题设计。
架构与
权衡
"我们要不要做微服务?" 这是 CEO 最常被问的研发问题之一。架构没有最优解,只有最适合此刻团队规模、业务阶段的解。这一册教你看懂主流架构的真实代价。
所有功能在一个工程里,
编译成一个包,部署到一台/几台机器。
- 简单:写、测、部署都直接
- 性能:模块间调用零网络开销
- 事务:本地事务一致性强
- 团队小:5 人以下完美
- 代码膨胀:50 万行后改一行编译 5 分钟
- 故障扩散:一个 bug 整个系统挂
- 团队冲突:20 人同时改一个工程 = 合并地狱
- 技术固化:全栈用同一种语言
每个业务能力 = 独立的小服务。
用户服务 / 订单服务 / 支付服务 / 搜图服务……各自部署、各自扩缩。
- 团队独立:每个服务一小队人
- 技术异构:搜图用 Python,订单用 Java
- 故障隔离:搜图挂不影响支付
- 独立扩缩:双 11 只扩订单不扩用户
- 调用变复杂:跨服务调用 + 容错
- 分布式事务:跨服务一致性巨痛
- 运维爆炸:从 1 个变 30 个要监控
- 排查困难:链路追踪/日志收集是必需品
"服务器我不管"——
你只写函数,平台帮你跑、帮你扩、帮你收钱。AI 时代的主流形态。
- 自动起容器 / 杀容器
- 流量大自动扩 1000 实例
- 没流量降到 0 不收钱
- HTTPS / 负载均衡 / 灰度
- Vercel (前端 + Edge Functions)
- AWS Lambda / Cloudflare Workers
- 阿里云函数计算 / 腾讯云 SCF
- AI 创业项目 90%+
首次调用 1-3 秒
迁移成本高
本地难复现
单次最长 15 分钟
下次研发说"我们要做微服务",
用这5 维矩阵压一压,逼出真实理由。
不是"一开始就微服务",
而是"单体活到瓶颈再拆"。
"用单体到上市"
Stripe 早期是 Ruby on Rails 单体,2020 年 IPO 前依然有大量单体代码。Stripe 工程师博客名言:"复杂度推迟到必须解决时"。
"3 年从单体到微服务"
Pinterest 2014 年开始拆,到 2017 年才完成。整个过程渐进式,每次只拆一个高峰瓶颈的模块。
"按业务域拆 + AI 用 Serverless"
核心业务(搜图/订单/会员)大概率是微服务,AI 生图模块用 Serverless(按调用次数计费,配合 GPU 弹性)。
把矩阵翻译成流程图。
下次会议上你可以直接照着问。
基于业务规模 + 行业惯例,
千图大概率长这样:
把 S50 的千图架构推测图,拿去和研发 VP 对一对。
- 截图保存 S50 的架构推测图
- 找研发 VP / Tech Lead,给他看图
- 问:"这张图哪里错了?哪里漏了?"
- 记录修正版(语言、版本、规模)
- 问"我们目前的架构演进路线是?"
- ❌ "我们是不是该上微服务?" (设套)
- ❌ "这是不是太老了?" (评判性)
- ✅ "现在最容易崩的瓶颈在哪?" (开放性)
- ✅ "如果重来一次你会怎么做?" (反思性)
- 我们的核心服务有几个?分别用什么语言?
- 最大单一故障会让什么停摆?(识别 Single Point of Failure)
- 性能瓶颈现在排第一的是?(数据库?某个外部服务?)
- 下一步重构计划是什么?(看 6 个月路线)
- AI 业务的架构有什么不同?(推理服务 / Token 计费)
5 题选择 + 1 题决策。
千图核心
场景实战
所有前 4 册学的概念,全部在这一册落地到千图业务:登录、支付、搜图、AI 生图。看完你会知道千图每一个页面的"背后代码故事"。
用户密码绝对不能存明文。
用哈希 + 加盐,让黑客拿到数据库也无能为力。
数据库泄露 → 所有用户密码裸奔 → 一夜 P0 故障
单向:明文→密文,无法逆推
每个用户独立的随机字符串
业界标准 · 慢哈希(防暴力破解)
HTTP 是无状态的。
每次请求服务器都不认识你——除非你带"身份证"。
服务器记忆型
- 登录成功 → 服务器生成 session_id
- session_id 存 Redis,过期时间 7 天
- 浏览器存 cookie={session_id}
- 每次请求带 cookie → 服务器查 Redis
代价:每次请求查 Redis,依赖中心化存储
自描述型 Token
- 登录成功 → 服务器签发 JWT(含 user_id + 过期时间)
- JWT 整个发给浏览器
- 浏览器 localStorage 或 cookie 存 JWT
- 每次请求带 JWT → 服务器只验签名
代价:登出不立即生效(要黑名单机制)
eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxMjMsImV4cCI6MTcxNjk5OTk5OX0.x9k4Lz...
Header Payload Signature
用户懒得注册?
用 OAuth,让微信/Google 帮你认证。
这就是前后端接口对接的样子。
左边是前端代码,右边是后端代码,中间是 JSON。
千图会员升级,9 步走完。
每一步都可能出问题,每一步都要对账兜底。
支付 = 异步过程。
"你不知道用户什么时候付完",所以支付平台主动来通知你。
"调支付接口,等用户支付完,等到结果再返回。"
- HTTP 连接最长撑 30 秒,扛不住用户支付 2 分钟
- 用户扫码后跳到支付 App,前端连接已断
- 等待期间服务器资源占用严重
"千图先返回订单号,前端轮询。支付平台支付成功后,主动调千图的回调 URL。"
支付不是"扣完钱就结束"。
后面还有对账、退款、争议三件大事。
千图账 == 微信账 ?
每天 02:00,下载昨天微信支付的所有流水,跟千图自己的订单表比对:
- 金额是否一致?
- 笔数是否一致?
- 有"微信付了千图没记"的吗?(漏单)
- 有"千图记了微信没付"的吗?(脏单)
原路退回
用户申请退款 → 千图人工审核(或自动审批) → 调支付平台退款接口 → 用户原路退回(支付宝退到余额宝,微信退到零钱)。
坑:退款超时 → 后台显示什么状态?
用户投诉 / 反诈
用户向微信投诉"千图扣了我的钱",微信收到客诉会要千图举证。研发要准备:
- 订单完整链路日志
- 用户操作记录截图
- 风控分(首次付款?小号?)
- 72 小时内回复举证
千图 5 亿张图,搜"猫" 50ms 返回。
秘密是 倒排索引(不是 SQL)。
"扫一遍 5 亿张图,找标签里有'猫'的。"
提前建好"词 → 文档列表"的字典。查"猫",直接看字典。
搜"可爱的猫" = 查 "可爱" + 查 "猫",取交集 → 23, 891
用户搜"橙色 vintage 海报"——
关键词不在标签里怎么办?语义匹配来救场。
OpenAI 2021 模型。能把文字和图片都压成同一空间的向量(512 维数组)。两个向量越近,语义越近。
- 所有图片提前用 CLIP 算好向量,存 Milvus
- 用户输入"橙色海报",文字也过 CLIP
- Milvus 找最近的 1000 个图片向量
- 返回前 50 张 → 走 Rerank 模型重排
业界搜索 = 召回 + Rerank。
第一阶段快但粗,第二阶段慢但准。
用 ES (倒排) + Milvus (向量) 并行召回,宁多勿漏。
用深度学习模型(千图自训练)综合相关度、热度、个性化排序。
"想推付费图" → Rerank 加付费图权重。"排序是商业决策"。
用户输入"橙色 vintage 海报" → 千图返回 4 张图。
背后是队列 + GPU + Token 计费三件套。
GPU 一次只能跑 1-4 个任务,峰值流量必须排队,不能挂掉。
用 K8s + Triton / vLLM,按"GPU 利用率"分发,平摊压力。
前端轮询 / WebSocket,"图生成好了" → 推送给用户。
用 Claude Code mock 一次完整支付回调。
实际感受"异步通知"和"幂等"的味道。
- 新建一个目录 / 项目,告诉 Claude Code:
- "帮我写一个 Node.js 模拟支付服务,含 /api/pay/create 和 /api/pay/callback 两个接口,要做幂等校验。"
- 跑起来(npm start)
- 用 Postman/curl 请求三次同一个回调
- 验证:只更新订单一次
- 明白"事件驱动"是什么感觉
- 明白"幂等"为什么是支付的命门
- 会用 AI 工具调用、跑通、调试
6 题选择 + 1 题方案题。
非功能性
需求
"功能能跑通"只是第一步。CEO 要会读的是"功能背后的非功能"——性能、稳定性、安全性、可观测性。这些指标决定千图能不能扛住双 11,能不能不被黑。
研发说话张口闭口 QPS / TPS / 延迟 / 吞吐,
这 4 个概念一定要分清。
每秒查询数
Queries Per Second。一秒钟服务器处理多少次请求。
每秒事务数
Transactions Per Second。QPS 的"重型版",含写入/事务。
单次延迟
一次请求从发出到拿到结果用了多少毫秒。
吞吐量
单位时间通过的数据量。常用于带宽 / 文件传输。
研发说"P99 跌了"——
意思是100 个用户里有 1 个慢到放弃。
假设 100 次请求里:
1 次 · 5000ms
平均 = 99.5ms(看起来还好)
实际有 1% 用户卡 5 秒(崩溃)
→ 平均值掩盖了真实痛苦,所以业界用 分位数。
双 11 流量翻 50 倍,
这四件套护千图周全。
扛住读流量
热门内容提前预热到 Redis / CDN,95%+ 请求不打数据库。
守住承载力
单用户 100 QPS / IP 1000 QPS / 总入口 10 万 QPS。超过的直接拒绝。
隔离故障
A 服务挂了别人就别再调它了。等 30 秒后再试探一次。
保核心舍周边
推荐挂了就显示热门榜;动效慢了就关闭;评论加载失败就静默。
"四个 9" = 99.99%。
看着很高,一年还能挂 52 分钟。
OWASP Top 10 太长。
千图最常遇的就这 5 种。
原理:用户在登录框输入 ' OR 1=1 --,被拼到 SQL 里,绕过验证。
防御:参数化查询 / ORM 框架,永远不拼字符串。
原理:用户在评论里塞 <script>偷 cookie</script>,其他人查看时被执行。
防御:所有用户输入转义后才输出。
原理:钓鱼网站借用你的登录态自动调千图接口(如转账)。
防御:CSRF token / SameSite cookie。
原理:URL 里 user_id=123 改成 user_id=456,看到别人的订单。
防御:每个接口校验"当前登录人能否操作这条数据"。
原理:黑产用脚本批量调千图免费 API(如生图试用),1 天烧光 GPU 预算。
防御:限流 + 验证码 + 风控(IP/设备指纹/行为分析) + 鉴权 + 业务规则审计。
下面这 4 种攻击,每周都在发生。
研发说"风控规则该升级了",他在说这些。
黑产注册 1 万个小号 → 每个号薅 5 张免费生图 → 卖到淘宝 0.5 元一张。
千图防御:设备指纹去重 + 手机号实名 + 行为评分(连续请求 5 张 = 异常)
竞品脚本扫千图 5000 万张图,下载后倒卖。
千图防御:水印 + 加密 URL + 单 IP 限速 + 用户行为反爬模型
薅羊毛群组织 1000 人同时领"新用户 9.9 元会员"。
千图防御:实名 + 设备 + IP 三段验证 + 群体行为识别
黑客拿其他网站泄露的用户名密码组合,尝试登录千图。
千图防御:登录频率限制 + 异常 IP 二次验证 + 弱密码拦截
一个合格的研发仪表盘,CEO 也该会看。
让千图研发把你拉进 Grafana 看板,亲自看一次。
- 找 SRE / 后端 VP:要 Grafana 只读访问
- 看千图核心服务(首页 / 订单 / 搜图)
- 找出"P99 在过去 7 天里最高峰"
- 问那次是什么原因?怎么恢复的?
- 看告警规则:哪些指标超过线会告警?
- 我们的 SLO 是多少?
- 当前 SLO 达标率?
- 告警频率 / 误报率?
- P99 历史最差是哪个时间点?
- 最常 P0 故障的服务是哪个?
你能在看板上 独立指认:
- QPS / P99 / 错误率 三个面板
- "哪条线是健康的,哪条线异常"
- 看出"异常" 和"趋势" 的区别
- 读懂告警规则的阈值
5 题选择 + 1 题运营判断。
语言与代码
阅读法
为什么有 Java / Go / Python / JS 这么多语言?怎么不学语言就能读懂代码?这一册教你"看代码的方法论"——不为写代码,只为读懂研发提交的 PR 和千图 GitHub 仓库。
语言不是"好坏",是"擅长什么"。
这 4 个维度看一眼就明白。
→ 大项目用强类型,小脚本用动态
→ 性能敏感用编译型
"查询用户列表,过滤付费用户" —— 5 种语言写法对照。
不会写代码,也能读代码。
关键是知道从哪儿开始读。
main / app.js
每个程序都有"启动入口"。前端找 index.html / main.tsx;后端找 main.java / app.py / server.go。
routes / controllers
找"API 路由表"。看 @GetMapping / app.get('/...'),立刻知道这个项目对外提供哪些能力。
tests / specs
测试代码 = "这段代码该怎么用" 的实例文档。比注释还可靠。
Java 长这样。
看 6 个关键词就够了。
- class:定义一个"类"(蓝图)
- public/private:可见性(外部能调吗)
- @Service / @Controller:标记这个类是干嘛的(Spring 注解)
- @Autowired:自动注入依赖
- @Transactional:这个方法是事务
- return / throw:返回值 / 抛异常
Python 比 Java 短一半。
AI 业务标配。
- def / async def:定义函数
- @app.post:装饰器(标记接口路径)
- 缩进表示代码块(不是花括号)
- prompt: str:类型注解
- # 开头:注释
JavaScript 是浏览器原生。
TypeScript 给 JS 加了类型,是千图前端主力。
- interface:定义数据形状(TS 特性)
- useState / useEffect:React Hooks
- JSX 语法:HTML 混在 JS 里
- 箭头函数:
() => ...
Go 短小快速,写网关。
SQL 不是编程语言,是查数据的标准。
关键词:func / package / go (协程) / chan (通道)
看到这些动词:SELECT / INSERT / UPDATE / DELETE / JOIN / GROUP BY 就够用了。
让 Claude Code 帮你读千图真实代码。
这次是进千图代码库的开端。
- 跟 CTO 要千图某个小项目仓库的读权限(如内部 admin / Skill)
git clone到本地- 用 Claude Code 打开项目目录
- 问:"这个项目是干什么的?解释项目结构。"
- 找一个接口,问:"这个接口的完整流程是什么?"
- 挑战:让 Claude Code 改一行 CSS / 加一条日志
- 能 5 分钟说清项目主要功能
- 能看懂3 个接口的实现
- 能改一行 + git diff 看变化
5 题选择 + 1 题代码阅读。
AI 时代研发
新世界
AI 项目和传统项目 不一样——Token 不是免费的,GPU 是稀缺资源,Prompt 是新接口。这一册让你看懂千图 AI 业务的全部技术栈,并自己用 AI 工具改千图前端代码。
"AI 项目就是普通项目加 API 调用"——
这是最危险的误解。
"用户输入一句话"到"AI 输出回复",
这 7 步发生了什么。
中文 ≈ 1.5 字 / token,英文 ≈ 0.75 词 / token
Claude Opus 4.6 = 200k token = ~30 万中文字
不等全部生成就一边发一边显示
让 LLM 查千图自己的资料再回答。
客服 / 智能搜图 / 助手 都靠这个。
你日常用的飞书 lark-cli Skill,
背后是多步 Agent 编排。
LLM 自己没"手"。
给它工具,它就能调 API / 读文件 / 发飞书。
- 研发给 LLM 一份"工具列表"(函数签名)
- LLM 看到问题,自己判断"该调哪个工具"
- LLM 输出"调用指令" + 参数
- 研发的代码实际执行工具
- 结果回传给 LLM,LLM 继续推理或返回答案
每个 Token 真的要花钱。
不算清楚 Token 模型,AI 业务亏到看不见。
AI 项目三个钱袋子同时往外流。
哪个最贵?取决于业务模式。
缩短 Prompt / 缓存 / 用更便宜模型 / 流式输出(用户提前看到,可中断)
用 LoRA 微调小模型 / 量化(FP8 / INT4) / Spot 实例 / Serverless
队列 + 优先级 / 业务降级(免费用户排队,付费插队) / 错峰调度
"AI 工程师"不是一个岗位。
千图招聘的时候要分清这 4 类人。
业务 + AI
把 AI 能力嵌入产品。RAG / Agent / Tool Use 都用熟。千图最需要的人。
训练 + 部署
微调模型、训练自己的模型、部署推理服务。需要懂 GPU / CUDA。
提示词 + 评测
不写代码,但负责"把模型调出来好用"。千图的 Skill 作者就是 Prompt Engineer。
数据 + 管道
建训练 / 评测数据集,搭数据管道,做标注质量管理。
"用嘴写代码" = Vibe Coding。
你描述你想要的,AI 写代码。
- 讲清楚结果,不是讲实现:
"首页搜索框加圆角" 而非 "border-radius 12px" - 给 AI 上下文:
"这是 Next.js 项目,搜索框在 components/Search.tsx" - 分步骤:
先改样式,跑通;再改逻辑,再跑通 - 看 diff:
永远 review AI 的修改,不要全盘接受 - 立刻跑:
改完立刻 npm run dev,眼见为实
用 Vibe Coding 实际改千图前端某个组件。
这是结业的"毕业作品"。
- 找 CTO / 前端 VP 给你某个仓库的写权限(或新建一个 fork)
- 挑一个"很小的改动":调按钮颜色 / 加个埋点 / 改文案
- 用 Claude Code 完成修改 + 自测
- 提 Pull Request
- 让研发 Code Review
- 合并 → 上线(用千图 CI/CD)
你自己提的代码改动,被合并到了千图代码库,并且实际上线了。
- 难度 ★:改一行文案 / 颜色 / 间距
- 难度 ★★:加一个埋点 (track event)
- 难度 ★★★:给某个组件加 hover 动效
- 难度 ★★★★:在 admin 后台加一个筛选条件
- 难度 ★★★★★:写一个新的小 page(如"给我的"我的收藏页)
5 题选择 + 1 题方案设计。
研发开会 30 分钟,能讲 50 个英文缩写。
这 30 个最常出现。
每秒请求
每秒事务
99% 分位
服务等级
服务目标
恢复时间
重复不出错
不等结果
等到结果
A 改不影响 B
省 DB
查询加速
守住阈值
隔离故障
保核心
撤销变更
小流量验证
双环境切换
持续集成
持续部署
容器编排
边缘加速
域名解析
私有网络
检索增强
大语言模型
AI 单位
向量化
工具协议
智能体
研发说"这个改成异步的",
老板该听到:"用户不用等结果,可以先干别的"。
研发说"耦合太重",
老板该听到:"改一个地方会牵连一大片,需要重构"。
基础设施 4 件套。
稳定性 4 件套。
CI / CD / 灰度 / 回滚 / 蓝绿。
每天会议、钉钉群、需求评审的高频 10 句。
研发说"这功能要做 4 周"。
问这 5 个问题,真实工期常常砍半。
→ 找瓶颈。常常是某个老接口要改 / 某个外部依赖要协调。砍掉非关键路径。
→ 逼出 MVP。让研发自己说"最小可发布版本"是什么。
→ 80% 时间被"重造轮子"消耗。用现成的开源库 / SaaS 服务。
→ 区分必要 vs 锦上添花。研发倾向"把nice-to-have" 当必要。
→ 2026 年这个问题非问不可。简单 CRUD / 组件 / 文案 用 AI 能砍 40-60% 时间。
读这段对话,每个黑话你都听得懂吗?
CTO:"昨晚 P99 在 11 点抖了一下,飙到 800ms,错误率 0.3%。SRE 排查后发现是订单服务的某个慢 SQL没走索引,主库 CPU 飚到 95%。临时限流 + 降级,半小时恢复。"
后端 Lead:"我们这个 SQL 加了 EXPLAIN 看了下,type=ALL 全表扫。已经加了联合索引,灰度 30% 验证中。明天蓝绿全量。"
CTO:"这次故障升 P1 复盘。我担心主从延迟变大,缓存击穿风险也要看下。SLO 这个月 99.95%,budget 还剩多少?"
SRE:"error budget 已经烧掉 60%。下周不允许大改动。"
AI 团队:"我们昨天上线了新的 RAG Agent,Token 消耗翻倍,单次调用 4k tokens。已经在加缓存 + 切到 Haiku 做降级。"
这张表你可以直接打印贴墙上,
跟研发对话时随时查。
8 周里你会反复用到的9 个工具。
建议都装上、都试用一次。
AI 编程主力
读代码、改代码、提 PR。Wayne 本课程的核心工具。
AI IDE 编辑器
桌面 IDE,AI 内嵌。比 VS Code 体验更顺。
浏览器神器
看请求、改样式、抓性能。F12 就是 CEO 的显微镜。
代码协作 GUI
不会命令行也能 clone / commit / push。
API 测试
手动调千图后端接口,看真实返回,做调试。
架构图手画风
画系统架构图最顺手。研发也爱用。
数据库 GUI
连千图 DB 看表结构、跑 SELECT 看数据。
监控看板
看千图各服务的 QPS、延迟、错误率。
笔记 + 沉淀
学完每册写笔记 + 整理 ADR。归档到 Wayne 研究室知识库。
不是每个人都能 6 周学完。
3 条退路给你兜底。
从 6 周变 12 周
每周只学半册。一年内学完。没有任何耻辱,CEO 时间本来就紧。
CEO 60% 解决方案
前 5 册(基础+数据+架构+千图实战)覆盖你 80% 的研发对话。剩下 3 册按需补。
1 对 1 答疑
挑一位你信任的研发同事,每周喝个咖啡聊 30 分钟。你提问,他回答。速度 ×3。
综合大考
完成 8 册学习后,用这套综合考试检验你是否真的从"看不懂"跨到"能讨论"。
5 题 / 岗位+请求
5 题 / DB+选型
5 题 / 登录+支付
5 题 / RAG+Token
5 题 / 翻译卡
岗位 + 请求旅程。
数据库 + 架构选型。
登录 + 支付 + 搜图。
RAG / Token / Agent。
研发说的话,你能翻译吗?
下面是一段仿千图真实代码片段。
请用大白话讲出它在做什么 + 哪里可能出问题。
不是看分数,是看这 3 件事你能做吗?
能读懂代码
能 clone 千图任意一个项目 → 用 Claude Code 解释主流程 → 5 分钟说清这个项目在做什么。
能参与设计
在架构评审会上,能提出 ≥ 2 个有质量的问题(不是"性能怎么样",而是"P99 在 80% 流量下能撑多少")。
能改代码上线
用 Vibe Coding,自己改千图前端某组件并合并 PR 上线。这是从"讨论"到"实操" 的分水岭。
这是中国 CEO 的 5% 之列 ✦
读完这本导览册,
你已经做出了开始的决定。
研发工程化 · CEO 速通班 学习契约
本人 王伟(Wayne),承诺:
- 在 6-8 周内完成 8 册学习
- 每册动手做实验 + 完成小考
- 每册用大白话讲给一个非技术人听
- 结业时提交一次真实代码 PR 到千图仓库
- 学习过程记录到 Notion 知识库 · Wayne 研究室
Let's
Start.
120 页导览册结束。
下一份交付 = 第 01 册 · 研发世界地图。
主讲 Claude · 学员 王伟(千图网 CEO)
www·wwei·ai