上一篇:《猛男之八块腹肌养成记》
前言:一个程序员的告警
上一篇结尾我说:腹肌是吃出来的。
于是我开始认真地「吃」。为了增肌,每天算蛋白质,鸡蛋、牛奶、牛肉轮番上阵。小时候就有个朴素的认知:外国人为什么那么壮?因为吃牛肉、喝牛奶。长大开始健身,这个认知更坚定了——蛋白质嘛,当然是越多越好。
直到体检报告上弹出一条告警:
[ALERT] serum_uric_acid = 500 μmol/L
threshold = 420 μmol/L
severity = WARNING尿酸 500,超过了高尿酸血症常用的诊断界值 420。
作为程序员,我的第一反应是:这个 Bug 是我自己写进去的。 但真正 Debug 下去才发现,问题不是「牛肉吃多了」这么简单,而是——我根本没有一份像样的饮食规划,只是在疯狂堆一个参数。
所以这一篇,痛风只是引子,真正想聊的是:健身的人,到底该怎么规划饮食?
一、先看日志:尿酸是怎么积压的
尿酸的代谢,本质上是一个生产者-消费者模型:
💡 划重点:吃进去的嘌呤只占大约两成。遗传、肾脏排泄能力、体重、胰岛素抵抗,这些「基础设施」层面的因素同样关键。所以不能把尿酸 500 全甩锅给牛肉——就像线上出问题不能全怪最后一次提交的那个人。
但饮食是那 20% 里我唯一能自己改的代码,而复盘下来,我的饮食确实有好几个 Bug。
二、需求澄清:增肌到底需要多少蛋白质?
在聊「怎么吃」之前,先把需求文档写对。
我以前的需求是这样的:
需求:增肌
方案:蛋白质越多越好
验收:肌肉变大这就像写了一个没有上限的 while(true)。正确的需求应该是:
对规律做力量训练的人,每天每公斤体重 1.6–2.2 克蛋白质,通常已经足够支持增肌。超过这个区间,边际收益很低——就像给一个不缺内存的服务继续加内存,性能不会再明显提升,账单倒是一直在涨。
def daily_protein_target(weight_kg: float) -> tuple[int, int]:
"""规律力量训练人群的每日蛋白质参考区间(克)"""
return round(weight_kg * 1.6), round(weight_kg * 2.2)
daily_protein_target(75) # (120, 165)| 蛋白质摄入 | 状态 | 程序员类比 |
|---|---|---|
| < 1.2 g/kg | 明显不够 | 服务器内存不足,频繁 OOM |
| 1.6–2.2 g/kg | 刚刚好 | 资源配置合理,性能达标 |
| 远超 2.2 g/kg | 收益递减 | 疯狂加机器,QPS 没涨,账单涨了 |
三、饮食架构设计:蛋白质是接口,不是实现
我之前最大的 Bug,是把「补蛋白」硬编码成了「吃牛肉」:
class Protein:
def source(self):
return "beef" # 硬编码,技术债的开始蛋白质应该是一个接口,背后挂多个实现,按需组合:
蛋白质来源对照表
| 食物 | 大约蛋白质 | 嘌呤水平 | 程序员类比 |
|---|---|---|---|
| 鸡蛋 1 个 | ~6 g | 低 | 标准库函数,到处能用 |
| 牛奶 250 ml | ~8 g | 低 | 轻量级依赖,顺手引入 |
| 希腊酸奶 150 g | ~15 g | 低 | 好用的工具类 |
| 鸡胸肉(熟)100 g | ~30 g | 中 | 主力框架,扛大部分流量 |
| 鱼(熟)100 g | ~20 g | 中(沙丁鱼、凤尾鱼等偏高) | 性能好,但要挑版本 |
| 北豆腐 100 g | ~12 g | 中低 | 国产替代,靠谱 |
| 瘦牛肉(熟)100 g | ~26 g | 中 | 功能强大的第三方库,注意调用频率 |
| 乳清蛋白 1 勺 | ~20–25 g | 低 | 补丁,不是主程序 |
| 动物内脏 | 高 | 高 | 已废弃的 API,能不用就不用 |
数值为大致参考,不同品种、做法差异较大。
蛋白质还有一个容易被忽略的点:分配。一顿塞进去 80 克,和分成 4 顿各 30–40 克,效果不一样。肌肉合成更像是一个有并发上限的处理队列,均匀投递比一次性灌满更高效。
四、实战:一天的饮食排期
以 75 kg 为例,目标定在约 150 g(落在 120–165 g 区间内):
meals = {
"早餐": 12 + 8 + 6, # 鸡蛋×2 + 牛奶 + 燕麦
"午餐": 37 + 5, # 鸡胸肉 120g + 主食
"练后": 22 + 1, # 乳清 + 香蕉
"晚餐": 30 + 12 + 4, # 鱼 + 豆腐 + 主食
"睡前": 15, # 希腊酸奶
}
sum(meals.values()) # 152 g ✅ 在 120–165 区间内牛肉去哪了? 不是删掉,而是降级成「每周两三次」的轮换选项,比如把某天晚餐的鱼换成牛肉。中国居民膳食指南给的参考是:畜禽肉每周 300–500 g,鱼每周 300–500 g,蛋每周 300–350 g。按这个量吃,牛肉完全可以留在菜单里。
饮食配置文件
# diet.v2.yaml
protein:
target: "1.6–2.2 g/kg"
per_meal: "20–40 g,分 3–5 顿"
sources: 多样化 # 不再硬编码 beef
red_meat: 每周 2–3 次,控制总量
processed_meat: 尽量少 # 香肠、培根、火腿
carbs:
prefer: [糙米, 燕麦, 杂粮, 薯类]
timing: 训练前后可以适当多一些
fat:
prefer: [橄榄油, 坚果, 鱼类]
veggies_fruits: 每餐都有蔬菜,水果吃整个不喝果汁
hydration:
daily: 全天足量喝水
post_workout: 练完先喝水,不是先喝奶茶
blacklist:
- 动物内脏
- 浓肉汤 / 火锅汤底
- 啤酒和烈酒
- 含糖饮料🎯 Joey 的血泪教训:我以前练完一身汗,水没喝几口,先来一瓶冰可乐「奖励自己」。后来才知道:脱水会让尿酸排得更慢,含果糖的饮料会让尿酸产得更多——等于同时「加大生产、降低消费」,队列不爆才怪。
五、常见 Bug 与 Debug 指南
Bug 1:蛋白质越多越好
Bug 2:只靠一种食物补蛋白
原因:单一依赖。牛肉吃多了,嘌呤、饱和脂肪一起上来;而且天天吃牛肉,鱼、豆、蔬菜、全谷物都被挤出去了。
解决方案:多源化。参考上面的对照表,每天至少挑 3–4 种来源轮换。
Bug 3:一顿补齐全天蛋白
原因:白天忙着写代码,晚上一顿吃两斤肉。
解决方案:分 3–5 顿,每顿 20–40 g。早餐最容易缺,几个鸡蛋加一杯奶就能补上二十多克。
Bug 4:只监控肌肉,不监控代谢
原因:体重、围度、卧推重量每周都记;尿酸、血脂、血糖、肝肾功能从来不看。
解决方案:补监控。
# metabolic-alerts.yaml
- alert: UricAcidHigh
expr: serum_uric_acid > 420 # μmol/L
action: 调整饮食,找医生评估
- alert: AnnualCheckup
expr: days_since_last_blood_test > 365
action: 复查 尿酸 / 血脂 / 血糖 / 肝肾功能顺带一说:IARC(世卫组织下属的国际癌症研究机构)把加工肉列为 1 类致癌物,红肉列为 2A 类。这个分类表示的是证据有多确定,不是危险有多大——不是吃一口就致癌,问题在长期大量摄入。
六、平台兼容性:同一份代码,跑在不同的运行时
Debug 尿酸的时候顺便学到一个很有意思的知识:很多疾病有明显的性别差异。 痛风就是典型:绝经前女性的雌激素能促进尿酸排泄,相当于运行时自带了一个「消费端加速器」,男性没有这个默认配置。
男性明显更容易患的疾病
| 疾病 | 男女发病差异 | 主要原因 |
|---|---|---|
| 痛风 | 男性约为女性的 2–4 倍 | 雌激素促进尿酸排泄 |
| 肾结石 | 约 1.5–2 倍 | 代谢及尿液成分差异 |
| 帕金森病 | 约 1.5 倍 | 激素、神经保护机制差异 |
| 食管癌 | 约 2–4 倍 | 饮酒、吸烟及其他因素 |
| 肝癌 | 约 2–3 倍 | 激素、代谢及生活方式 |
| 胃癌 | 约 1.5–2 倍 | 环境、饮食及生物学因素 |
| 冠心病 | 男性较早发病,绝经前女性风险较低 | 雌激素及心血管代谢差异 |
| 腹主动脉瘤 | 约 4–6 倍 | 血管结构及吸烟等因素 |
| 睡眠呼吸暂停 | 男性更常见 | 上气道结构及脂肪分布 |
| 肺癌 | 男性总体较高(各国差异大) | 历史吸烟率及环境暴露 |
女性反而更容易患的疾病
| 疾病 | 女性风险特点 |
|---|---|
| 骨质疏松 | 明显更高,尤其绝经后 |
| 类风湿关节炎 | 约为男性的 2–3 倍 |
| 系统性红斑狼疮 | 约为男性的 9 倍 |
| 甲状腺疾病 | 明显更常见 |
| 多发性硬化症 | 更常见 |
| 偏头痛 | 约为男性的 2–3 倍 |
倍数为大致范围,不同国家、人群和统计口径会有差异。
对健身的人来说,这张表的意义是:别人的最佳实践,不一定能直接复制粘贴到你的环境里。
- 男生:尿酸、血压血脂、酒精,是需要重点监控的指标;体重控制好,对睡眠呼吸暂停也有帮助。
- 女生:力量训练对骨密度是实打实的好消息,再配合足够的钙和维生素 D,等于提前给骨质疏松打补丁。
- 至于自身免疫类疾病,饮食和训练管不了太多,定期体检、有症状及时就医才是正解。
七、终极问题:我们到底在练一个什么样的身体?
上一篇我把腹肌当成「最终产出」。尿酸 500 之后,我开始怀疑这个需求定义本身。
做过系统设计的人都知道,需求分两种:功能需求和非功能需求。
腹肌、胸肌、倒三角,这些是功能需求——用户(镜子、朋友圈)一眼就能看到。但一个系统好不好,往往取决于那些看不见的非功能需求:
| 维度 | 身体上对应什么 | 程序员类比 |
|---|---|---|
| 性能 | 力量、心肺耐力 | QPS 和响应时间 |
| 可用性 | 不受伤、关节灵活 | 全年 99.9% 在线,不宕机 |
| 稳定性 | 尿酸、血脂、血糖、血压都在正常区间 | 监控面板一片绿 |
| 可维护性 | 睡得好、恢复快、情绪稳 | 代码好读好改,不靠加班续命 |
| 可扩展性 | 年纪大了还有足够的肌肉和骨量 | 架构能扛住十年后的业务量 |
一个只有腹肌、但尿酸 500、天天腰疼、睡不好觉的身体,就像一个 Demo 做得很漂亮、但一上生产就报警的系统。
能跑通不代表没问题,单项指标好看也不代表系统健康。
八、写在最后
小时候觉得外国人壮,是因为他们吃牛肉、喝牛奶。
现在才明白,牛肉确实是好东西,但好东西也要讲究用量;蛋白质确实很重要,但它只是增肌的四个依赖之一。
作为一个程序员,这次我给自己的身体重新写了一份需求文档:
- 饮食是输入数据:不只要够,还要多样,垃圾进垃圾出
- 训练是算法优化:持续迭代,但别把系统跑崩
- 睡眠是内存清理:省不得
- 体检是监控告警:别等线上出事才看面板
- 身体是长期项目:不追求一次发版,追求十年稳定运行
最后送你一句话:
健身不是把自己吃成一头牛,而是让自己拥有一个更好的身体。
腹肌是给别人看的,代谢指标是给自己看的。增肌很重要,但健康才是长期主义。
如果你看完觉得太麻烦想放弃,没关系——毕竟这个系列叫「从入门到放弃」。但如果你真想练出一个又好看又好用的身体,记住:
每一次想用可乐「奖励自己」的时候,想想你的尿酸;每一次想一顿吃两斤肉的时候,想想你的肾。
我们健身房见!💪
本文仅为个人经验分享,不构成医疗建议。尿酸明显偏高或出现关节红肿疼痛,请及时就医。
评论
还没有评论,来说点什么吧。