-
二叉树与递归 - 总结
心智模型 解决二叉树问题的一个通用心法 把两边节点都看成黑盒,而避免考虑太多细节陷进去。 我们仅在根节点、左黑盒、右黑盒三个东西里考虑问题。 递归函数其实是一个可复用的模式,想清楚设计一个模式对所有节点都适用。 最后考虑一下边界情况,如递归到最深处会怎样。 一些优化思路: 内部创建的函数,如果用到了外部变量,是否可以优化成纯函数? 是否有不需要搜索的地方,可以短路、剪枝?(这通常可... -
二分查找算法总结
关于二分查找 在一个已经排序的数组中找到目标值, 是二分查找的常见用途。 我们选一个区间中点 mid ,然后不断比较 target 和 mid ,根据比较结果来重新调整区间范围,这使得我们可以跳过很多不需要遍历的元素,而节省时间复杂度。 有两个比较重要的总结: 什么时候用二分查找?必须有序数组吗? 刚学的时候往往认为无序数组中,二分查找就没用了。实际上下面三点很重要: 二分查找真正需要的... -
链表题总结
链表这种数据结构,解题的时候空间复杂度往往是 O(1) 关于 dummy node 有时候,解法中需要设置一个 dummy 节点,指向 head: 1 const dummy: ListNode = { val: 0, next: head }; 这种技巧在 head 节点有可能被删除或更改的情况下会很有用。 关于循环终止条件的设置 下面这两种终止条件都是很常见的: 123w... -
Windows 安装 choco 命令(包管理器)
win + x 键一起按,选择“终端管理员”,以此在管理员模式中打开终端 下面的一行命令搞定: 1Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityP... -
使用 OverlayScrollbars 优雅的自定义滚动条
我对 windows 系统中的浏览器滚动条样式一直很不满意,它巨丑,但我忍了。直到我在某天开发网站时候遇到了一个问题…
-
Server Action,TanStack Query ... 我到底要用谁
区分 一句话总结: 读操作,管理数据状态 => TanStack Query 写操作,现代、优雅的数据变更 => Server Action TanStack Query 更像是 “读操作和状态同步管理器”,像是管家,解决的是「我怎么在客户端管理这份数据(缓存、状态、重新获取)」。 而 Server Action 更像是一种工具,解决的是「我怎么和服务器对话,封装业... -
使用 TanStack Query 管理服务器状态(Server State)
为什么需要 TanStack Query 工作在客户端,用来在客户端管理服务器状态。 服务器状态有其独特的特点: 它存储在远程,我们无法直接控制。 它需要异步获取。 它可能被其他人修改,导致我们本地的数据“过时”(stale)。 它和缓存、重试、数据同步等概念紧密相关。 想象下面这些场景: 代码冗余:每个需要请求数据的组件,几乎都要重复写一遍 isLoad... -
使用 React Hook Form 现代、高效的处理表单
核心心法:非受控组件 (Uncontrolled Components) RHF 管理的表单,在数据更改时不会立刻渲染,而是类似于非受控组件那样特定时刻部分渲染,这带来了更高的性能。 但是同时,它又提供了一系列很实用的工具,能让你享受到受控组件一般的开发管理体验。 要理解 RHF,首先必须理解受控组件和非受控组件的区别。 受控组件 (Controlled Component):这是我们... -
Server Actions —— 前后端交互的未来形态
概述 Server Actions 是可以直接从客户端代码(尤其是 Client Components)中调用的异步函数,但它们的函数体本身只在服务器上执行。 在这种模式下,你不会在浏览器 DevTools 的 Network 面板中看到任何请求,因为请求由服务器帮你完成了。这个看起来是多加了一层服务器在中间转发,不过也会带来几项优点: 服务器会自动缓存,大量客户端使用同一份数据的时候,... -
使用 Zod 进行表单校验
官网:Intro | Zod Note Zod 是一个现代化、强大的,用于表单校验的库,其设计能很好的支持服务端渲染等现代化的未来场景,同时更是广泛支持各种框架和组件库,他被 NextJS 官方推荐使用。 我认为 zod 的两个最大优点: 不止是运行时的数据校验,也提供开发时的类型安全(请见本文下面的:[[#3. 推断类型]]) 一次声明,处处验证。定义好一次后,可以给客...

