全部安全开发新闻数码摄影汽车北京AIIT其他
  • 文章封面

    只改了一个成员声明顺序,我把一个“玄学崩溃”变成了可解释的 bug

    作者:everystep发布日期:2026-01-02 07:27:00

    那天我都准备下班了。工位灯都关了一半。群里突然有人 @我。“线上有个小服务。启动就崩。刚发的版本。”我第一反应是。谁又把构造函数玩坏了。因为这种事故有个味道。像新买的咖啡机。啪一声。跳闸。我们那会儿刚

    阅读全文
  • 文章封面

    空类为啥也要收你 1 个字节?不懂这个,迟早在“对象地址”上翻车

    作者:everystep发布日期:2025-12-31 07:00:00

    我第一次看到这句输出。是很多年前。一个老同事把打印丢给我。他说。“你看,C++ 连空都不让你空。”#include <iostream>struct Empty {};int main() {

    阅读全文
  • 文章封面

    auto 一用就爽?先把引用和 const 这关过了

    作者:everystep发布日期:2025-12-31 07:00:00

    auto 这东西。我第一次认真看它。不是在 C++11。是在更早的老代码里。那种你一打开就能闻到“2003 年味道”的工程。你会看到一堆熟悉的老朋友。static。extern。register。还有

    阅读全文
  • 文章封面

    把 C++ 的“面向对象”刮掉:剩下的就是 C、指针、和编译器的手法

    作者:everystep发布日期:2025-12-30 07:00:00

    我刚学 C 的时候。函数很“老实”。你要它改谁。你就把谁的地址传进去。void inc(int* p) { ++*p;}int x = 0;inc(&x);你看。谁被改。一眼就知道。后来我第一次

    阅读全文
  • 文章封面

    内存不是黑盒:把它想成一排“字节格子”,一切突然就通了

    作者:everystep发布日期:2025-12-30 07:00:00

    内存不是黑盒。你把它想成一排“字节格子”。从地址 0 排到地址 N-1。每一格。正好 1 个字节。很多问题就不再神秘。比特。字节。地址。sizeof。会在同一张图上对齐。很多教材也会用一句话开头。然后

    阅读全文
  • 文章封面

    把对象当内存看懂一次,你的 C++ 会突然顺很多

    作者:everystep发布日期:2025-12-29 07:00:00

    我最早学 C 的时候。老师不爱讲“对象”。他只讲内存。讲地址。讲 malloc。然后拍着黑板说。“结构体就是一段连续的字节。”这句话听起来粗。但它很诚实。后来我开始写 C++。同样的结构体。突然就能有

    阅读全文
  • 文章封面

    成员顺序随手一换,sizeof 直接翻倍:你写的不是结构体,是利息

    作者:everystep发布日期:2025-12-29 07:00:00

    我第一次被 sizeof 教做人。不是在课堂。是在一次很真实的协议联调里。那会儿我还年轻。看见结构体就手痒。总觉得它天生适合当包头。于是我写了一个很朴素的东西。#include <cstdint>st

    阅读全文
  • 文章封面

    用现代 C++ 手搓一个 RISC-V 模拟器

    作者:everystep发布日期:2025-12-28 07:00:00

    ——给求职焦虑的你,一个能写进简历、也能讲进面试的虚拟 CPU 项目很多年之后。你再回头看那段找工作的时间。大概率只记得两件事。一件事。刷题。刷到怀疑人生。另一件事。面试官翻着你的简历。抬头问一句:“

    阅读全文
  • 文章封面

    网络字节序为什么偏偏选大端?历史不是整齐的,但坑很整齐

    作者:everystep发布日期:2025-12-28 07:00:00

    如果你把时间往回拨。拨到那种“机房时代”。一台机器。一套生态。CPU、总线、外设。乃至编译器和文件格式。都在同一个家族谱里。那时候你很少听人争论“字节顺序”。不是因为大家更聪明。是因为边界更少。数据大

    阅读全文
  • 文章封面

    同事看到你还在写 it != end():他已经在心里扣分了

    作者:everystep发布日期:2025-12-27 07:00:00

    我第一次在代码评审里看到那种 for 循环。长得像一段咒语。你看得懂。但你不想再看第二遍。std::vector<int> v{1, 2, 3};for (std::vector<int>::iter

    阅读全文
  • 文章封面

    C++11 的花括号是把双刃剑:能救命,也能搞出事故

    作者:everystep发布日期:2025-12-27 07:00:00

    我很早就认识花括号。那会儿还在写 C。它的工作很单纯。给数组塞初值。给 struct 填字段。int a[3] = {1, 2, 3};struct Point { int x; int y; };P

    阅读全文
  • 文章封面

    空指针这事,C++ 吵了很多年:最后为什么是 nullptr 胜出

    作者:everystep发布日期:2025-12-26 07:00:00

    空指针这事。在 C++ 圈子里。真吵了很多年。有人说。写 0 就行。反正大家都懂。有人说。别装。老代码都写 NULL。还有人更直接。说这不是风格问题。是类型系统的问题。要解决就得给“空”一个类型。后来

    阅读全文
  • 文章封面

    printf 又坑我一次:C++20 std::format 来收拾残局

    作者:everystep发布日期:2025-12-26 07:00:00

    printf 这套东西。来自 C 的年代。那时候机器慢。内存小。接口越薄越好。可变参数一上。大家都觉得很优雅。然后代价就被悄悄塞进了“约定”。格式串要和参数对齐。你不对齐。它也不一定立刻骂你。它可能当

    阅读全文
  • 文章封面

    看懂 lambda,你就懂 C++11 在补哪一块历史窟窿

    作者:everystep发布日期:2025-12-25 07:00:00

    lambda 不是突然冒出来的。它是 C++ 很长一段历史里。“回调”和“算法”把人逼出来的产物。九十年代 STL 把算法搬进标准库。sort、find_if、for_each 这些东西一出来。大家就

    阅读全文
  • 文章封面

    C++ 的默认规则有多阴?你写得越认真,它越不给你面子

    作者:everystep发布日期:2025-12-24 07:00:00

    我写 C 的那几年。struct 就是一块内存。你负责填。编译器不插嘴。你也不用去猜它的心思。后来开始写 C++。一开始还挺爽。我什么也没写。对象居然能“默认就能用”。还能拷贝。还能赋值。那会儿我以为

    阅读全文
  • 文章封面

    为什么我在新代码里几乎只写 enum class

    作者:everystep发布日期:2025-12-23 07:00:00

    我第一次用 enum。是在一个还带着 C 味道的 C++ 项目里。那项目很老。老到你能在角落里闻到宏定义的烟味。当时我们刚从 #define RED 1 这种写法里缓过劲。看到 enum。心里一乐。“

    阅读全文
  • 文章封面

    UI 不该认识业务:命令模式把耦合切开,顺手送你撤销重做

    作者:everystep发布日期:2025-12-22 22:03:31

    命令这东西。比“设计模式”这个词老得多。我第一次听到“命令”这个词。不是在 UML。也不是在 GoF。是在机房。最早的“命令”不是对象。也不是函数。甚至不是代码。它是一张纸。一摞打孔卡。或者操作员手里

    阅读全文
  • 文章封面

    只需加一层“壳”,就能让你的对象百毒不侵

    作者:everystep发布日期:2025-12-20 07:00:00

    职场里总有这么一种人。看着好像不干核心大活。但他不可或缺。老板找技术大牛签字,他挡着:“大牛在闭关,先放我这。”外部门来扯皮,他拦着:“这事儿不归我们管,出门左转。”甚至只有等到真正的大项目落地时。他

    阅读全文
  • 文章封面

    当年 Unix 管道教我的事:装饰器是加料,适配器是翻译

    作者:everystep发布日期:2025-12-19 07:00:00

    我第一次真正“见到”装饰器。不是在 GoF。也不是在课堂。是在很早的 Unix 管道里。你写一条命令。前面负责产出。后面负责过滤。再后面负责格式化。最后丢进文件。每一段都像个小程序。每一段都只干一件事

    阅读全文
  • 文章封面

    一个 Adapter,干掉满工程的复制粘贴转换

    作者:everystep发布日期:2025-12-18 07:00:00

    九十年代写 C++。环境比今天朴素很多。库没有现在这么全。工具链也没现在这么顺。大家嘴上骂“祖传代码”。手上还得靠它跑生产。那会儿工程现场最常吵的词。一个叫“复用”。一个叫“兼容”。你接了一个新库。它

    阅读全文
  • 文章封面

    当你的 C++ 代码长成一片原始森林:结构型模式教你砍出一条路

    作者:everystep发布日期:2025-12-17 07:00:00

    如果说创建型模式关心的是“对象怎么出生、谁来拍板 new 谁”, 那结构型模式盯着的,就是那些已经出生、满地乱跑的对象,是怎么被你拼在一起的。很多人第一次意识到“结构这件事有点不对劲”,往往是在一个写

    阅读全文
  • 文章封面

    求求你们,别再手动写析构函数了

    作者:everystep发布日期:2025-12-16 07:00:00

    我第一次听到 Rule of 3。是在一次线上事故复盘会上。会议室里烟味很重。日志也很重。那位老前辈把一段代码甩到投影上。struct Buf { int* p = new int[4];

    阅读全文
  • 文章封面

    我见过太多 copy 事故:深拷贝浅拷贝这点事得讲明白

    作者:everystep发布日期:2025-12-15 07:00:00

    我见过很多“深拷贝 / 浅拷贝”的事故现场。它们的开头都挺朴素。你写下一行。看着很正派。甚至还有点洁癖。std::vector<T*> copy = v;编译过了。单测也过了。然后你就把它合了。等到某

    阅读全文
  • 文章封面

    设计模式不是用来背的:把单例、工厂、Builder 串成一条进化时间线

    作者:everystep发布日期:2025-12-14 07:00:00

    如果把你写代码这几年剪成一支 vlog,大概会有一个反复出现的镜头:手指一抖,new 一下;上面挂个指针,下面顺手加个注释;心里默念一句:先跑起来,真出事再说。很长一段时间,大家都这么写。那会儿 C

    阅读全文
  • 文章封面

    原型模式:当 new 都不好使的时候,如何优雅地复制对象?

    作者:everystep发布日期:2025-12-13 07:00:00

    我在 C++ 老项目里见过一种熟悉的“心态崩溃瞬间”。大家都在赶上线,日志刷得飞起,CI 一片绿。 这时候产品在群里轻描淡写来一句:“这套不错,同款再来一份,改两项就行。”外行看:两项配置,小事一桩。

    阅读全文
  • 文章封面

    别再让新人背参数顺序了:用 Builder 把复杂对象交给“装修队长”

    作者:everystep发布日期:2025-12-12 07:00:00

    如果说抽象工厂是"一整套家居套餐一起换皮", 那 Builder 更像是:请了个懂行的装修队长。户型早就定好了, 你只管说:墙怎么刷、灯怎么装、地板用什么材质。工厂帮你定户型, Builder 盯着装

    阅读全文
  • 文章封面

    单例是真香还是原罪?用 C++ 把这 3 个误会说清楚

    作者:everystep发布日期:2025-12-11 07:00:00

    在所有设计模式里,如果要评个「又常见、又容易被骂」的前三名,单例肯定占一个坑。写过几年 C++ 的人,多半都见过类似的吐槽:所谓单例,就是给全局变量穿了件西装。这话听着有点阴阳怪气,但也不算冤。要把单

    阅读全文
  • 文章封面

    这 3 个信号一出现,你就该用抽象工厂而不是一堆散落的工厂方法了

    作者:everystep发布日期:2025-12-10 07:00:00

    如果说工厂方法是"把简单工厂长胖的那摊事,按场景拆成一排小工厂", 那抽象工厂大概就是:不光要决定“造哪种椅子”, 还要顺手把同一风格的桌子、沙发、床头柜一起配齐。一句话:我不是只卖一把椅子,而是卖一

    阅读全文
  • 文章封面

    这 3 个信号一出现,你就该用工厂方法而不是简单工厂了

    作者:everystep发布日期:2025-12-09 07:00:00

    如果说简单工厂是"给满地乱飞的 new 搞个前台窗口", 那工厂方法大概就是:把那个前台拆成一排窗口, 每个窗口只接待自己那一类客人, 具体怎么服务,交给各个窗口自己决定。很多团队都是这样一路走过来的

    阅读全文
  • 文章封面

    用现代 C++ 从零构建一个 mini-Redis:一个真能写进简历的硬核后台项目

    作者:everystep发布日期:2025-12-09 07:00:00

    C++ 程序员的成长之路,大概率是这么铺的:手里捧着那本比砖头还沉的《C++ Primer》,从指针硬啃到 RAII,从模板死磕到右值引用。后来 lambda 来了,std::async 来了,你咬咬

    阅读全文
上一页下一页