摘要: 哈希表是什么 是一种用于存储键值对(key-value pair)的数据结构。在哈希表中,通过哈希函数将键(key)映射到数组的某个位置(索引),然后在该位置存储对应的值(value)。 哈希表适用于处理需要根据键快速查找的场景,如数据库索引、缓存等。 哈希表的关键特性: 键的唯一性:每个键在哈希表 阅读全文
posted @ 2025-03-09 23:15 我是格鲁特 阅读(44) 评论(0) 推荐(0)
摘要: 链表(Linked List)是一种线性数据结构,它由一系列的节点组成,其中每个节点包含两部分: 数据部分:存储节点的实际数据。 指针部分:存储指向下一个节点的引用(或指针)。 与数组不同,链表中的元素不需要在内存中是连续的。每个节点通过指针连接到下一个节点,形成一个链式结构。 链表有多个变种,包括 阅读全文
posted @ 2025-03-09 23:04 我是格鲁特 阅读(19) 评论(0) 推荐(0)
摘要: 栈(Stack) 栈是一种遵循 后进先出(LIFO, Last In First Out)原则的数据结构。也就是说,最后被放入栈中的元素会最先被取出。 push():将一个或多个元素添加到数组的末尾,返回新数组的长度。 pop():移除数组的最后一个元素,并返回该元素。 peek()(自定义方法): 阅读全文
posted @ 2025-03-09 23:00 我是格鲁特 阅读(28) 评论(0) 推荐(0)
摘要: 数组中找到两个数,它们的和等于给定的目标值 判断一个字符串是否是回文字符串 二分查找法(变种的:数组峰值) 快速排序算法 动态规划: 爬楼梯 最小子序列和 栈的应用: 括号匹配 常数时间内找出栈中的最小元素 随机数相关: js抽奖算法 js生成指定范围的随机数 深拷贝函数的实现 双指针边界总结 阅读全文
posted @ 2025-03-09 22:51 我是格鲁特 阅读(43) 评论(0) 推荐(0)
摘要: 在一个给定的数字数组中找到两个数,它们的和等于给定的目标值。可以通过多种方法来解决这个问题,以下是两种常见且高效的解决方案。 方法 1:使用哈希表 (Set 或 Map) 通过哈希表来存储已经遍历过的数字,利用哈希表的快速查找特性来实现。在遍历数组的同时,检查当前数字与目标值的差值是否已经存在于哈希 阅读全文
posted @ 2025-03-09 22:46 我是格鲁特 阅读(60) 评论(0) 推荐(0)
摘要: 回文字符串是指正着读和反着读都相同的字符串。比如 "racecar" 或 "level"。 方法 1:使用双指针法 通过使用两个指针,一个指向字符串的开始,另一个指向字符串的结束,逐个比较字符。 function isPalindrome(str) { let left = 0; let right 阅读全文
posted @ 2025-03-09 22:39 我是格鲁特 阅读(56) 评论(0) 推荐(0)
摘要: 前端中常用的模块格式主要有:CommonJS、ESM、AMD. 模块化方式特点使用场景代码示例 CommonJS 同步加载模块 主要用于 Node.js 环境 服务器端(Node.js)使用 module.exports 或 exports 对外暴露模块 使用require导入模块 const ad 阅读全文
posted @ 2025-03-09 22:25 我是格鲁特 阅读(11) 评论(0) 推荐(0)
摘要: React 的 Context API 是 React 提供的一种用于在组件树中共享数据的机制,可以让我们不需要通过 props 一层层地传递数据,避免了在深层嵌套的组件中逐级传递相同的数据 Context API 的核心概念 Context: Context 是 React 提供的对象,它可以在整 阅读全文
posted @ 2025-03-09 22:17 我是格鲁特 阅读(86) 评论(0) 推荐(0)
摘要: useReducer 是 React 中用于处理复杂状态逻辑的 Hook。它可以帮助你将一个复杂的状态对象分解成更细粒度的子状态,并通过定义动作(actions)来管理这些状态的变化。 具体来说,useReducer 适用于需要多个子状态或者依赖多个操作的场景。它的核心是通过一个 reducer 函 阅读全文
posted @ 2025-03-09 22:04 我是格鲁特 阅读(54) 评论(0) 推荐(0)
摘要: 虚拟dom是react的核心概念,它使用js对象来反应真实dom的结构。 当组件的状态变更后,react会计算出新的虚拟dom树,并跟前一次的虚拟dom树进行对比,找出差异(也就是需要更新的部分),最后仅将这些差异应用到真实 DOM 中。通过这种方式,React 避免了对真实 DOM 的频繁操作,从 阅读全文
posted @ 2025-03-09 21:53 我是格鲁特 阅读(85) 评论(0) 推荐(0)
摘要: 在 Node.js 中,当你使用 require() 加载一个模块时,模块会被缓存,这样当你再次 require() 同一个模块时,Node 会直接返回缓存中的模块,而不会重新加载它。这个机制提高了性能,避免了重复加载相同模块。 Node.js 将加载的模块存储在 require.cache 对象中 阅读全文
posted @ 2025-03-09 21:24 我是格鲁特 阅读(35) 评论(0) 推荐(0)
摘要: Express 中间件通常被描述为“洋葱圈模型”(Onion Model)。这个模型是用来形象化描述中间件的执行顺序和生命周期的。 在 Express 中,中间件是按顺序执行的,并且可以有两种类型的执行路径: 请求阶段(Request Phase):请求从外到内穿过中间件栈,直到到达路由处理函数或其 阅读全文
posted @ 2025-03-09 21:22 我是格鲁特 阅读(65) 评论(0) 推荐(0)