更早的文章

共 50 篇 · 第 3 页
  1. Web

    请使用performance.now()而不是new Date().getTime()

    在Web开发过程中,我们经常会遇到这样的需求,即比较两个时间点的时间差,大多数同学都会使用以下方法: 一般来说,这样做是不会出现什么问题的,但是假如 函数执行时间非常长,那么就会出现异常。 考虑以下场景: 当在执行 函数时,我手动或者使用NTP软件把系统时间修改了,那么 和 之间的差值就会变得不准确。 所以 这个函数是不可靠的,它受系统时间影响较大。因此我们需要另寻他法。幸运的是,WEB API给我们提供了 这个函数。 表示从页面加载到当前时间点所经过的毫秒数。它是以一个恒定的速率慢慢增加的,不…

    继续阅读 →
  2. Web

    前端模拟面试

    1. 请说一说 JavaScript 中闭包的概念以及它的作用 <details> <summary>查看答案</summary> 闭包是 JavaScript 中一个重要的概念,它允许函数在定义时访问其外部函数的变量和参数。 <br> 闭包的作用是: <ol> <li>实现私有变量,保护数据的安全性和隐私性。</li> <li> 可以让函数的变量值始终保持在内存中,延长变量的生命周期。</li> <li>可以模拟块级作用域,在 JavaScript 缺乏块级作用域的情况下实现类似的效果。</l…

    继续阅读 →
  3. Web

    JS中this的指向

    总结一下 的指向: 调用方式 示例 指向 解释 通过 调用 新对象 ,此时this指向 直接调用 全局对象 取决于运行环境,在浏览器中为 ,在node中为 通过对象调用 前面的对象 函数 的this指向 通过 / / 调用 第一个参数 ,此时this指向 由此可见,this的指向取决于调用方式,而不是函数定义方式。当你定义函数的时候, 的指向尚未确定。只有调用函数时,this的指向才会确定。

    继续阅读 →
  4. Web

    一文说清SKU算法的实现

    什么是SKU SKU(Stock Keeping Unit)是库存管理中的基本概念,指的是库存进出计量的单位,也是产品库存控制的最小可用单位。 SKU是商业运营中对商品进行管理和追踪的一种独特标识符,通常是由一串数字或字母数字组合而成的代码。 对于不同的商品,即使颜色、尺寸、款式等属性有所差异,也会被赋予不同的SKU号,这样就能在库存系统中精确区分每一种具体的产品变体。 业务场景 当我们在选择商品时,通常会根据用户每一次的选择,来找出其余属性是否能被选择,如果无法被选择,则需要将其置灰,避免用户…

    继续阅读 →
  5. Others

    使用Typescript实现一个LRU缓存算法

    1. 什么是 LRU 缓存算法 LRU(Least Recently Used)算法是一种常用的页面替换或缓存淘汰策略。它的核心思想是在资源有限的情况下,当需要添加新的数据项但存储空间已满时,优先淘汰最近最少使用的数据项,以保证最常访问或最近使用过的数据能够保留在缓存中。 2. 实现 LRU 算法的核心步骤 1. 数据结构选择 使用哈希表(如 HashMap)来实现 O(1)时间复杂度的查找和更新操作,用于存储键值对及其在缓存中的位置引用。 使用双端队列(Deque,例如 LinkedList)…

    继续阅读 →
  6. Web

    React深入理解

    React自从 React 16 版本引入 Fiber 架构后,渲染过程变得更加精细和可控。整个更新流程主要可以分为三个关键模块:Scheduler(调度器)、Reconciler(协调器) 和 Renderer(渲染器)。 关键模块 Scheduler(调度器) 调度器是React内部的一个核心模块,它负责决定何时以及如何执行更新任务。在React应用中,当状态发生变化时,会触发重新渲染,而调度器的作用就是根据任务优先级将这些更新任务排队。 Scheduler 遵循可中断的工作循环模型,允许高…

    继续阅读 →
  7. C/C++

    使用exiv2读取或者修改图片元数据

    0. 前言 开发环境为Windows,使用vcpkg安装exiv2库。关于vcpkg的安装,请参考vcpkg官方文档。 如果使用其他环境,请自行通过搜索引擎查找相关资料。 1. 安装 exiv2 2. CMmakeLists.txt 配置 3. 引入头文件 4. 读取图片元数据 5. 修改图片元数据 6. 完整代码

    继续阅读 →
  8. Web

    Typescript装饰器简介(下)

    在上一篇文章中,我们介绍了装饰器的基本概念,并通过一个简单的例子来展示了装饰器的使用方法。然后,Typescript同时支持装饰器的新语法和旧语法。本文来介绍Typescript的旧语法。 在本文中,所使用的语法均为旧语法。 1.装饰器配置 如果通过旧语法使用装饰器,需要在tsconfig.json中配置compilerOptions.experimentalDecorators为true。 2.装饰器的类型 属性装饰器 方法装饰器 参数装饰器 类装饰器 3. 装饰器语法 3.1 属性装饰器 3…

    继续阅读 →
  9. Web

    Typescript装饰器简介(上)

    1. 装饰器的作用 装饰器是一种特殊的声明,它可以被附加到类、方法或属性上,用来修改类,属性或者方法的行为。 2. 装饰器类型 类装饰器 方法装饰器 属性装饰器 Getter/Setter装饰器 accessor装饰器 3. 装饰器语法 目前TypeScript使用的语法是5.0引入的装饰器语法,Typescript同时支持两种语法,本文介绍新语法。旧语法会在下篇文章中介绍。 以下是几种装饰器的定义示例: 3.1 类装饰器 类装饰器接收两个参数:value和context。value表示被装饰的…

    继续阅读 →
  10. Others

    Mac终端部分快捷键

    快捷键 操作 ^ + A 移动光标至行首 ^ + E 移动光标至行尾 ^ + F 移动光标至下一个字符 ^ + B 移动光标至上一个字符 ^ + P 移动光标至上一行 ^ + N 移动光标至下一行 ^ + K 删除光标前一个字符 ^ + D 删除光标后一个字符 ^ + H 删除至行首 ^ + W 删除至下一个单词 ^ + U 删除至行首 ^ + Y 粘贴至上一行 ^ + T 交换光标处字符与上一个字符 ^ + G 移动光标至指定行 ^ + O 在光标处插入新行 ^ + I 在光标处插入新行 ^ …

    继续阅读 →