博客
关于 GPU、LLM、MLOps、Kubernetes 以及心态的文章 · 829 篇
#2026-03 168#ai 110#llm 90#ai-papers 62#career 60#kubernetes 54#mindset 51#ai-platform 48#devops 42#security 41#deep-learning 35#performance 33#psychology 32#mlops 30#observability 29#2026-04 26#database 23#linux 22#robotics 22#rust 22#ai-agent 21#mcp 20#productivity 20#culture 19#evaluation 19#gpu 18#transformer 18#electronics 17#paper-review 17#pytorch 17#developer-tools 16#distributed-systems 16#engineering 16#learning 16#open-source 16#rag 16#fundamentals 15#network 15#postgresql 15#2026-08 14
git 变慢的时候 — 让大型仓库重新变快的结构性处方
仓库变慢的原因不止一个。提交历史太长、文件数量太多、里面塞了大的二进制文件,这是三个不同的问题,处方也各不相同。本文先从区分原因的测量命令讲起,说明浅克隆和部分克隆为什么不是彼此的替代品而是用途不同的工具,sparse-checkout 和文件监视如何把 status 缩短,以及 commit-graph 为什么能把日志和合并基准点的计算改变得那么明显。文中还讲了"用 aggressive 跑 gc"这条常见建议为什么大多是亏的,为什么
2026-07-26 · 16 分钟阅读 #git#performance#monorepo#git-lfs#version-control包豪斯:14年改变了100年——读懂事物形状的方法
1919年在魏玛开校、1933年在纳粹压力下关门的包豪斯,只存在了整整14年。学生人数始终维持在数百人的规模,建筑系是开校八年之后才有的,卖得最多的产品也不是那把著名的钢管椅,而是壁纸。本文梳理预备课程与工坊制度、"形式追随功能"其实出自路易斯·沙利文之口这一点、女学生不得不涌向织造工坊的结构,以及关校反而造就的全球化——并在"极简主义是否永远正确"这一反论之后,以从身边任何一件东西反推其形状理由的观察法收尾。
2026-07-26 · 23 分钟阅读 #humanities#design#architecture#design-history#modernismDocker 构建缓存为什么总是失效 — 层缓存键、ARG 与 BuildKit 缓存挂载
从缓存键这一层解释:为什么只改了一行代码,npm ci 却要重跑五分钟。文章讲清 RUN 的缓存键是命令字符串、而 COPY 的缓存键是文件内容哈希这一差别,一层失效就会连带失效其下所有层的规则,以及 ARG 在 BuildKit 与旧构建器上行为不同的那个点。再结合 CI runner 本来就没有缓存这一事实,用真实命令和输出梳理缓存挂载不会被导出到镜像仓库缓存的陷阱、cache-from 与 cache-to 的 mode 差异,以
2026-07-26 · 14 分钟阅读 #docker#buildkit#build-cache#ci-cd#devopsgit merge vs rebase — 什么时候用哪个,为什么共享分支不做 rebase
merge 和 rebase 的差别,看图不准,看提交哈希才准。变基不是移动提交的命令,而是创建父提交不同的新提交的命令,而哈希会变这一个事实,就是"不要对共享分支做 rebase"这条黄金法则的唯一依据。本文用真实的提交哈希和 reflog 输出展示这个变化,用 first-parent 日志反驳"合并提交是噪音"的成见,讲清楚压缩合并从 bisect 和 cherry-pick 那里拿走了什么,变基过程中同一个冲突反复出现的原因以及
2026-07-26 · 16 分钟阅读 #git#rebase#merge#version-control#workflow容器与 VM 究竟差在哪里 — namespace、cgroup,以及共享内核的账单
先说清"容器是轻量级 VM"这种说法为什么会带来误解。容器只是一个被命名空间遮住视野、被 cgroup 限制了资源的普通 Linux 进程,它原样共享宿主机内核。文章用真实命令确认 pid/mnt/net/uts/ipc/user/cgroup 各自隔离了什么、cgroup v2 又限制了什么,并讨论共享内核带来的后果:sysctl 共享、对内核版本的依赖,以及容器逃逸。最后延伸到 gVisor、Kata 和 Firecracker 存
2026-07-26 · 18 分钟阅读 #docker#container#linux-namespace#cgroup#virtualizationDocker 网络模式与连接问题 — bridge、host、overlay,以及 127.0.0.1 的陷阱
把"容器起来了却连不上"这类状况,按各模式的工作原理逐一拆开。文章讲清默认 bridge 下容器为什么无法用名字互相找到、用户自定义网络的内置 DNS 起了什么作用、端口发布实际生成的 iptables DNAT 规则,以及把绑定地址限制在 127.0.0.1 的安全含义。还会用真实命令和输出梳理容器里的回环并不是宿主机以及 host.docker.internal、应用只绑定回环导致外部连不上的问题、UFW 拦不住已发布端口的机制,以
2026-07-26 · 17 分钟阅读 #docker#docker-network#iptables#networking#devops建了索引却不走索引的原因 — 那些优化器对而你错的情况
本文按原因梳理为什么建了索引之后执行计划里依然是 Seq Scan。选择性太低导致优化器故意忽略、列上套了函数或运算而不再 sargable、类型不匹配触发隐式转换、LIKE 前导通配符、OR 条件、复合索引的前导列规则、统计信息老化,直到 NULL 的处理,全部用真实 SQL 和执行计划来确认。同时也讨论部分索引与表达式索引成为答案的场景,以及索引反而有害的情况。
2026-07-26 · 18 分钟阅读 #database#postgresql#index#query-optimization#mysql连接池开太大反而吃亏的原因 — 把队列排在哪里
本文梳理把连接池调大反而变慢这一现象背后的原理。在 PostgreSQL 的进程模型下连接为什么昂贵,既然磁盘与 CPU 的并行度有限,为什么把队列排在连接池而不是数据库内部更划算,以及常被引用的核数公式的依据与局限。文章还会结合真实查询讲解微服务中实例数乘以池大小超过最大连接数的典型事故、PgBouncer 的三种模式与事务模式下无法使用的功能、如何用 idle in transaction 抓连接泄漏,以及无服务器环境的特殊性。
2026-07-26 · 21 分钟阅读 #database#postgresql#connection-pool#pgbouncer#performanceDockerfile 里反复出现的错误 — 以 root 运行、PID 1,以及留在镜像里的密钥
把那些构建能过、只在生产环境炸掉的 Dockerfile 问题,从原因说起。没写 USER 因而以 root 运行的容器、latest 标签与可复现性、为什么该避开 ADD、shell form 的 CMD 吞掉 SIGTERM 导致每次部署白扔 10 秒并以 137 退出的机制、PID 1 的僵尸回收职责与 tini、用 ARG 和 ENV 传入的令牌残留在 docker history 里的问题,以及 BuildKit 的 secr
2026-07-26 · 16 分钟阅读 #docker#dockerfile#container-security#pid1#devops给 Docker 镜像瘦身 — 层的真相、multi-stage build,以及基础镜像的真实代价
先从如何用 dive 逐层定位 Docker 镜像膨胀到 1.9GB 的根源讲起。文章会解释为什么联合文件系统让 RUN rm 连一个字节都减不掉、多阶段构建到底该把什么复制进最终阶段、alpine 的 musl libc 通过 Python wheel 重新编译和 DNS 问题收取的隐性成本,以及 distroless 与 slim 的取舍 — 全部配上真实的 Dockerfile 与真实输出。最后讲清楚比体积更能决定部署速度的层复用
2026-07-26 · 16 分钟阅读 #docker#dockerfile#multi-stage-build#container#devops死锁的诊断与预防 — 如何从日志中锁定那两条查询
本文按顺序梳理遇到 deadlock detected 错误时应该看什么。如何逐行解读 PostgreSQL 的死锁报告和 MySQL 的 SHOW ENGINE INNODB STATUS 输出,从而锁定究竟是哪两条查询纠缠在了一起;并讨论实务中反复出现的三种模式:更新顺序不一致、因缺少索引导致锁范围扩大、以及外键引发的父行加锁。文章还包含 deadlocktimeout 与 locktimeout 的设置,以及不把普通锁等待误诊为死
2026-07-26 · 21 分钟阅读 #database#postgresql#deadlock#locking#mysqlEXPLAIN ANALYZE 阅读法 — 从执行计划中找出真正瓶颈的顺序
本文梳理如何从头到尾读懂 EXPLAIN ANALYZE 的输出。应该按什么顺序读节点,cost 为什么不是时间单位,预估行数与实际行数之间的偏差说明了什么,loops 会被相乘的陷阱又该如何避开,全部结合真实输出来讲解。同时涵盖 Nested Loop、Hash Join、Merge Join 各自被选中的条件,以及如何用 BUFFERS 判断缓存命中。文章还会给出依据,说明 Seq Scan 并不总是坏事。
2026-07-26 · 17 分钟阅读 #database#postgresql#explain#query-optimization#performance人物是怎么变的 — 角色弧光设计的语法
情节是事件的顺序,弧光是人的变化。在好的故事里,这两者共用同一批事件,并且互相推着往前走。丢掉虚假信念的正向型、向虚假信念屈服的负向型、人物不变而世界改变的平坦型,这三种弧光,以及推动它们的引擎 — 想要的与需要的之间的错位;人物不是靠说明、而是靠压力下的选择显形的原则;背景故事为什么要藏起来;陪衬角色与反英雄又是如何运作的。文末附上可以自己动手做的观察练习。
2026-07-26 · 18 分钟阅读 #storytelling#character#fiction#narrative#craft米尔格拉姆服从实验再检视 — 65%这个数字的背面
1961年始于耶鲁的米尔格拉姆实验,长期被压缩成一句话:65%的参与者一路加到了最高电压。可那个数字只是多达24个变式实验中某一个条件的值;换个条件,服从率会在0%到92.5%之间大幅摆动。吉娜·佩里在耶鲁档案室查到的,是实验者反复施加剧本之外的压力、且相当多参与者其实怀疑这是骗局的证据。哈斯拉姆与赖歇尔提出了另一种解释:不是盲目服从,而是对科学这一大义的认同;2009年伯格用只做到150伏就停下的设计做了部分重现,得到了接近的比例。本
2026-07-26 · 16 分钟阅读 #psychology#paper-review#social-psychology#obedience#research-ethics38人从一开始就不存在 — 旁观者效应的神话与真实的实验
1964年,《纽约时报》报道说,基蒂·吉诺维斯被杀害的过程中有38名邻居只是袖手旁观——旁观者效应这个概念就此诞生。可是2007年发表在《美国心理学家》上的核查指出,那个数字和大量情节相当程度上并非事实:能够目击的人少得多,报警是有的,还有一位邻居下到现场把她抱在怀里。即便如此,那篇报道催生的达利与拉塔内1968年的实验是真的,而且可以重复。我们用代码看看个人介入的概率与群体介入的概率如何分道扬镳,并一路追到219段真实监控录像给出的答
2026-07-26 · 18 分钟阅读 #psychology#paper-review#social-psychology#ethics#communication真正把 Core Web Vitals 修好 — 用数字压下 LCP、INP、CLS 的顺序
Lighthouse 拿了 98 分,Search Console 却一直亮红灯,原因是这两个工具测的根本不是同一件事。本文先梳理 LCP、INP、CLS 各自测量什么,以及阈值为什么以 75 百分位为准。接着以可落地的程度讲清:如何把 LCP 拆成 TTFB、资源发现延迟、加载时长、渲染延迟四段来决定该修哪里,INP 取代 FID 的原因以及真正让出长任务的代码,还有 CLS 的三大元凶与各自准确的解法。最后延伸到把性能预算挂在单项指
2026-07-26 · 20 分钟阅读 #performance#core-web-vitals#lcp#inp#clsTLS 握手与证书错误解读 — 为什么浏览器能通而 curl 失败
浏览器上的锁标显示一切正常,唯独 curl 和服务端调用因证书错误而失败,这属于服务器配置问题。因为浏览器会通过 AIA 扩展自行下载缺失的中间证书,而 OpenSSL 系的客户端不会。本文整理了如何按消息顺序阅读 TLS 1.3 握手、没有 SNI 时会发生什么、证书链校验在哪里断掉,以及包括 unable to get local issuer certificate 在内的各条错误消息的成因,并配上 openssl sclient
2026-07-26 · 19 分钟阅读 #network#tls#ssl#openssl#security孤独感就像饥饿 — 学会读懂匮乏发出的信号
孤独感不是独自一人的状态,而是想要的关系与实际的关系之间的落差。约翰·卡乔波把这种感觉看作与饥饿、口渴同一族的匮乏信号:它天生就会痛,正是为了把我们重新推向人群。本文梳理了哈佛成人发展研究追踪八十多年的发现与它的局限、陌生人之间的简短交谈会让心情变好的通勤列车实验,以及成年人的友谊为什么在结构上这么难,又该拿它怎么办。
2026-07-26 · 19 分钟阅读 #mindset#healing#loneliness#relationships#connection明明还有空间却报 No space left on device — inode 耗尽、已删除但仍被打开的文件、保留块
df 显示还有空闲空间,却连一个文件都创建不了,直接返回 ENOSPC。原因几乎总是五种之一:inode 耗尽、已删除但仍被进程打开的文件、ext4 的保留块、被另一个文件系统挂载遮蔽而看不见的文件,以及容器的 overlay 上限。本文整理如何用 df -i、lsof +L1、tune2fs 和绑定挂载逐一确认并解决,以及 inotify 报出同样错误文字的陷阱。
2026-07-26 · 21 分钟阅读 #linux#filesystem#ext4#troubleshooting#storage事务隔离级别与真实的异常现象 — 标准定义与实现产生分歧的地方
本文梳理四种事务隔离级别以及 dirty read、non-repeatable read、phantom read,但不会止步于教科书里的那张表。文章用真实的 SQL 会话展示:PostgreSQL 的 Read Committed 为什么根本产生不了 dirty read,Repeatable Read 为什么其实是快照隔离、并把重试直列化失败的责任交给了应用,以及 MySQL InnoDB 的 Repeatable Read 如何
2026-07-26 · 19 分钟阅读 #database#postgresql#transaction#isolation-level#mysql