关注【索引目录】服务号,更多精彩内容等你来探索!
程序员 vs. 工程师:行业为何衰落
现在 IT 领域出现了明显的分工:
- “程序员”
们认为,学习几个库并关闭 Jira 中的任务就足够了。他们的观点是: - “不需要数学”
- “不需要英语”
( - “计算机科学是为了学术”
- 工程师
是多年来一直了解算法、硬件和分布式系统的人,因为没有这些,就无法构建复杂的解决方案。
那么 DDD 呢?或许也值得探索一下?))
问题在于:前者越来越多,他们让行业雪上加霜。他们的代码就像拐杖,系统不堪重负,他们的主要技能就是谷歌 Stack Overflow 或 AI。
1. 内存子系统:“快速代码”变慢的地方
- 错误共享
:当两个线程写入同一缓存行(64字节)的不同变量时,性能会下降10-100倍 - NUMA
:在多插槽系统中访问“外部”内存可能会慢 3-5 倍 - 预取器模板
:如何编写代码让硬件预取器为您工作
2. 超越锁的多线程
- RCU(读取-复制-更新)
:Linux 内核如何在 100 多个核心上处理同步 - Seqlocks
:针对读取密集型场景的优化(以及为什么它并不适合所有情况) - 不同架构上的内存顺序
:x86-TSO 与 ARM/POWER(为什么你的无锁代码会崩溃)
3. 编译器和执行器的特性
- 未定义行为(UB)
:如何 -O3将“工作”代码变成非工作代码 - “as-if”规则
:为什么编译器可以重新排序操作 - 内联汇编器的缺陷
:为什么 asm volatile它总是不够用
4. 深入分析网络堆栈
- TCP_NOTSENT_LOWAT
:如何通过套接字设置将延迟减少 2-3 倍 - eBPF/XDP
:在到达用户空间之前在内核中处理数据包 - QUIC 与 TCP
:为什么 HTTP/3 不是万能药(以及什么时候它更糟糕)
5. 超越 OWASP Top 10 的安全
- JIT喷涂
:如何通过热模式利用JS引擎 - Rowhammer
:通过物理效应读取/写入无需访问的内存 - 推测执行攻击
:防护措施为何会导致生产力降低 30-50%
6. 性能优化的细微差别
- PMU 计数器
:如何 perf stat正确解释(并非所有指标都同样有用) - VIPT 缓存
:为什么对齐在 ARM 和 x86 上的重要性不同 - MLP(内存级并行)
:如何衡量和改进
深度知识如何为非显而易见的解决方案创建神经连接
1. 洞察机制
当你学习时:
- C++ 中的内存顺序
→ 开始看到分布式系统中隐藏的竞争条件 - 预取 CPU 模式
→在分析之前预测算法中的瓶颈 - QUIC 内部
→ 在设计 API 时自动考虑权衡
这不是独立的知识——它是一个单一的系统,其中每个主题都相互增强。
2. 跨领域洞察的真实案例
- 加密+优化
:
了解AES-NI → 有助于优化 SSL 终止(速度提高 5-8 倍) - 网络 + 安全
:
了解TCP 重组→ 帮助您发现 IDS/IPS 中的漏洞 - 编译器 + 分布式系统
:LLVM 优化
知识→ 帮助您为 RPC 编写有效的序列化器
3. 为什么肤浅的知识不起作用
一位只学习过以下内容的“程序员”:
-
REST API → 不会出现HTTP/2 中的队头阻塞问题 -
基本 SQL → 无法理解索引合并如何影响性能 -
原始锁→无法识别高负载系统中的护航效应
一个实际的例子
情况:支付服务在负载下丢失交易。
常规开发人员:
-
将添加日志 -
增加超时
工程师:
-
检查内核中的 RCU(与应用程序冲突) -
通过 perf分析PCIe 丢包情况 -
查找网络堆栈中的TSO/GRO 问题 - 通过eBPF + 内存屏障
修复
精通哲学
当您投资于:
- 深入了解硬件
→你开始“感受”生产力 - 攻击分析
→设计系统时考虑安全性 - 阅读标准
→在边缘情况出现之前进行预测
这并不是关于“更多的知识”——而是关于思维的质量。
关注【索引目录】服务号,更多精彩内容等你来探索!

