Dark零点博客 Dark零点博客

C++解释器模式语言文法解析

C++里写个“小语言”?解释器模式不是玩具,是文法解析的务实入口 上周帮同事调一个配置热加载模块,他用硬编码的 if-else 判断几十种表达式语法,改一次逻辑要编译三分钟。我顺手把那堆分支抽出来,用解释器模式重写了核心解析逻辑——不是为了炫技,而是让下一次加个 if (user.age > 18 && user.city == "Shanghai") 这种新规则时,不用动一行原有代码,只改两行文...

Dark零点博客 Dark零点博客

C++访问者模式操作元素结构

访问者模式:让C++结构体“自己开口说它能干啥” 上周帮同事调一个图形渲染模块,他写了七八个形状类(Circle、Rect、Triangle……),每个都得支持序列化、碰撞检测、OpenGL绘制三套逻辑。结果改个坐标系,得翻遍所有类的serialize()、collideWith()、render()——光是找函数就花了二十分钟。 后来我们把这堆逻辑抽出来,用访问者模式重写。新增一种导出格式?只加...

Dark零点博客 Dark零点博客

C++CRTP奇异递归模板模式

CRTP:C++里那个“自己继承自己”的聪明 trick 你有没有写过这样的代码:想让基类能调用派生类的函数,又不想用虚函数——毕竟虚表开销、动态绑定、多态那套太重了?或者你试过 static_cast<Derived*>(this),结果编译器报错说 Derived 还没定义完?这时候,CRTP 就像一个提前约好的暗号,悄悄把类型信息塞进编译期。 CRTP 全名 Curiously Recurr...

Dark零点博客 Dark零点博客

C++SFINAE替代失败不是错误

SFINAE:不是报错,是悄悄退场 你写了个模板函数,传入 std::vector<int> 没问题,可一换 int* 就编译失败——错误信息里还夹着一长串 no type named 'value_type' in 'int*'。你皱眉重读代码,发现模板里确实写了 T::value_type,但指针哪来的嵌套类型?这时候,编译器没直接甩给你“语法错误”,而是默默把这一版特化剔除了。这不是 bug...

Dark零点博客 Dark零点博客

C++enable_if条件编译模板

enable_if 不是魔法,是带开关的模板车间 写 C++ 模板时,你有没有遇到过这种尴尬: 想让某个函数只对整数类型生效,结果 std::string 一传进去,编译器直接甩给你半屏错误——不是语义错,是实例化失败后层层展开的 SFINAE 废墟。 这时候,std::enable_if 就不是教科书里那个“用于 SFINAE 的工具”,而是你手边一把能拧紧/松开模板接口的可调扳手。 它不改变类...

卖烤肉 | Carpe Diem 卖烤肉 | Carpe Diem

生化危机:安魂曲 免虚拟机版下载

本文主要分享了由破解大神 Voices38 最新发布的免虚拟机版《生化危机》破解资源。此次发布意义重大,打破了以往破解需依赖虚拟机的限制,意味着所有采用 Denuvo(D加密)的游戏都有望被破解,大神甚至放话“所有游戏皆可破解”。 文中提供了源自 Union Crax 站点的下载链接,并承诺后续会补充夸克网盘的备用地址。作者贴心提醒读者,在下载时需注意避开前两次点击产生的弹窗广告,直到浏览器跳转才...

朝瓜夕拾 朝瓜夕拾

阿里云部署ZeroTier Moon节点踩坑记录

在阿里云部署ZeroTier Moon节点时,常因阿里云独特的网络架构(公网IP通过网关DNAT转发,服务器仅知内网IP)导致连接失败。解决方案是明确告知ZeroTier服务其公网身份:在服务器端创建local.conf配置文件指定公网端点,生成并放置Moon文件后重启服务;客户端需更新Moon节点信息。此外,需检查阿里云安全组的UDP流量清洗及连接跟踪规则。配置成功后,通过`zerotier-c...