博客 · 第 2 页
关于工程、设计与一些随手记录。
两个着色器做水:水洼、溪流与瀑布
岛上没有水面模拟,也没有反射。两个 ShaderMaterial 分别负责平躺的水与竖直落下的水,共用一组 time 与 night 变量。
3D 的加载预算:分包、可见才加载、以及什么时候该停下
一个 3D 页面有三笔成本 —— 下载、首帧编译、每帧绘制。三笔都要单独设预算,任何一笔失控都会让「好看」变成「卡」。
原子写文件:先写临时文件,再 rename
直接覆写会在断电、崩溃、并发读的那一刻留下半个文件。临时文件加 rename 借文件系统的原子性把「半个文件」变成不可能。
Base64:它不是加密,也不是压缩
Base64 把 3 字节编码成 4 个可打印字符,体积涨三分之一。它解决的是「二进制不能安全穿过文本通道」,不是保密。
大 O 的误用:常数和前提比阶更常决定成败
O(n log n) 的排序可能慢过 O(n²) 的插入排序,O(1) 的哈希表可能慢过数组线性扫。判断性能前先确认输入规模、常数和内存局部性。
用 @layer 把样式优先级从「比权重」变成「排顺序」
样式失控的根源不是选择器写得不够具体,而是所有人都靠加权重解决问题。级联层让顺序显式化:层与层之间比顺序,层内部才比特异性。
