Gbiner
Gbiner

let me = me.better();

All Posts in 2023.2


偶遇“曼哈顿距离”

在代码中偶然发现一个看似不完整的距离计算公式后,一段关于曼哈顿距离的探索由此展开。当常规的平方根被舍弃,取而代之的是坐标轴差值的绝对值相加时,这个看似违背直觉的算法背后,隐藏着城市规划与数学的奇妙关联——曼哈顿距离正是源于纽约方格布局的路径约束,将二维空间的移动限制在轴向投影的总和。这种非欧几里得的度量方式,既源于赫尔曼·闵可夫斯基对几何公理的重新定义,又完美适配了早期计算机处理像素网格的性能需求。当数据呈现离散特性时,曼哈顿距离的轴向叠加反而成为优势,它拒绝虚构直线路径的幻觉,转而忠实还原现实中的路径限制。然而这种优势在高维空间中却成为缺陷,当维度增加时,轴向距离的累加会让数值失真,在需要精确度量的场景中反而可能误导判断。这个看似简单的数学概念,既揭示了计算性能与精度的永恒博弈,也暗示了不同维度空间中路径认知的差异。当我们面对数据建模的抉择时,是否应该优先考虑计算效率?在现实世界存在物理约束的场景中,欧几里得距离是否真的比曼哈顿距离更"正确"?或许更值得思考的是:在维度爆炸的现代数据世界,我们是否正在用错误的度量方式丈量真实?--Qwen3

Game Algorithm manhattan-distance distance-algorithm vector-math taxicab-geometry computer-science mathematics

什么是C++的野指针?

C++中的野指针是悬在内存安全边缘的利刃它并非空指针而是指向无主内存的危险存在当指针变量未初始化时编译器赋予的随机地址如同打开潘多拉魔盒可能引发不可预测的崩溃当内存被释放后若未及时将指针置空残留的无效地址如同定时炸弹随时可能引爆程序异常而指向栈内存的指针则在函数返回后成为游荡的幽灵将程序推向未知深渊这种内存安全陷阱的根源在于指针生命周期与所指向内存的不匹配未初始化的指针如同在迷宫中乱窜的箭头释放后的指针若不置空则可能成为指向他人领地的入侵者而栈内存的短命特性更让指针在函数退出后失去锚点开发者需要建立双重防护意识初始化时必须显式赋值释放时务必同步置空这种内存管理的艺术不仅考验对语言特性的理解更需要培养防御性编程思维你是否想过一个未初始化的指针可能引发多米诺骨牌效应?当野指针与多线程相遇又会碰撞出怎样的火花?在智能指针盛行的现代C++为何野指针问题仍未彻底消失?或许答案就藏在你每次忘记置空的指针里--Qwen3

Tutorial C++ wild-pointer c-plus-plus memory-management uninitialized-pointer null-pointer-assignment scope-issue