2026 第 16 周

更新:
  • 旧人不知我近况,新人不知我过往
  • 获取信息不代表你真的掌握了知识和技能 Ref

  • 一人干活,众人围观; 礼崩乐坏; 悲观者正确,乐观者前行
  • Git 中 rebase 和 merge 差异
  • 宏任务: setTimeout/setInterval/setImmediate[时间驱动], postMessage[跨上下文 - iframe/window/worker, 设计是为了 ipc; 事件驱动], MessageChannel[优先级比 setTimeout/setInterval 更高, 并且不受后台 Tab 影响; 运行时刚好满足调度器], XHR/Fetch/WebSocket, Event, Scheduler: postTask() - 带优先级[user-blocking/user-visible/background]的智能宏任务; 微任务: queueMicrotask(), Promise.then/catch/finally, MutationObserver; 特殊任务: requestAnimationFrame[Paint 之前(后台标签会降频)], requestIdleCallback[Paint 之后(空闲时) - 不稳定]
  • 在不确定中作出判断,在系统之间进行翻译,在现实中承担后果 Ref

  • 你可以摆, 可以摸鱼, 但不能真的菜, 该拿出手的时候必须拿得出手 Ref

  • QWenCode, fatetell - 比较火的运势
  • 總有一天你會靜下心來,像個局外人一樣,回顧自己的故事,然後笑著搖搖頭,浮生不過夢一場 - 弘一法師

  • 1.一个问题能否被形式化并由机器求解。2.应该选什么表示、算法或计算模型来求解。3.在时间、空间、数据和硬件约束下,能否把它做到足够可行。一个问题可计算,但如果是NP-hard的,实践中跟不可计算差别不大。4.如何把它实现为可运行、可扩展、可验证的系统。​ Ref

  • 遇到烂人烂事时,立刻认怂,迅速抽身 Ref

  • Math.clz32()
  • TaskController, AbortController
  • stale, indicator, sentinel, migrate, evict - Evict Policy
  • 別在不快樂的地方待太久 Ref

  • a) 质疑每项需求[绝大多数都是愚蠢的] b)删除需求中所以不必要的部分和流程[规避以防万一] c)简化和优化[不要去优化一个本不应该存在的东西] d) 加快周转时间 e) 自动化 Ref

  • type _ParkedCoverage = [
      Exclude<Extract<TaskState["status"], `parked:${string}`>, ParkedStatus>,
    ] extends [never] ? true : never;
    const _assertParkedCoverage: _ParkedCoverage = true;
    void _assertParkedCoverage;
  • // 红黑树
    // https://www.zhihu.com/question/311272920/answer/2020430696246694880
    
    // 叶子节点是黑 - null
    // 从任意节点到其所有叶子路径上,黑色节点数量相同
    // 插入节点是红
    // 红红 - 违规,需要按下面流程处理
    // P -> parent, U -> uncle, G -> grandparent, N 新插入节点
    while (color(parent(N)) == RED) {
        P = parent(N);
        G = parent(P);
    
        if (P == left(G)) {
            U = right(G);
    
            if (color(U) == RED) {
                // Case 1:recolor
                setBlack(P);
                setBlack(U);
                setRed(G);
                N = G;                // ← 向上推进(关键)
            } else {
                if (N == right(P)) {
                    // Case 2:先旋(LR)
                    N = P;            // ← 关键:重定位 N
                    leftRotate(N);    // 实际是对原 P 旋
                }
                // Case 3
                P = parent(N);        // ← 重新取(因为上面可能旋过)
                G = parent(P);
    
                setBlack(P);
                setRed(G);
                rightRotate(G);
                break;                // ← 不再向上
            }
    
        } else { // 对称(P 在右侧)
            U = left(G);
    
            if (color(U) == RED) {
                // Case 1
                setBlack(P);
                setBlack(U);
                setRed(G);
                N = G;
            } else {
                if (N == left(P)) {
                    // Case 2(RL)
                    N = P;
                    rightRotate(N);
                }
                // Case 3
                P = parent(N);
                G = parent(P);
    
                setBlack(P);
                setRed(G);
                leftRotate(G);
                break;
            }
        }
    }
    
    setBlack(root);
    
    /*
    Case1, ReColor
P -> 黑
U -> 黑
    G -> 红
    N = G (向上继续检查)
    
    Case2, Rotate 之后得到 Case3
    内侧节点: 
    左子树里:右孩子(LR) -> LeftRotate
    右子树里:左孩子(RL) -> RightRotate
    
    Case3, ReColor + Rotate
    外侧节点:
    左子树:左孩子(LL)
    右子树:右孩子(RR)
    
    P → 黑
    G → 红
    对 G 做旋转(右旋)
    */