-
MySQL储存过程和存储函数
1. 存储过程1.1 语法:CREATE PROCEDURE 储存过程名(IN|OUT|INOUT 参数名 参数类型, ...)[characteristics ...]BEGIN 存储过程体END说明: 参数前面符号的意思: IN:有入参无返回值 OUT:无入参有返回值 INOUT:有入参有返回值 形参可以是MySQL中的任何类型 characteristics ...表示创建储存过程中指定的对储存过程的约束条件,其取值信息...…
-
请使用performance.now()而不是new Date().getTime()
在Web开发过程中,我们经常会遇到这样的需求,即比较两个时间点的时间差,大多数同学都会使用以下方法:const time1 = new Date().getTime();doSomething();const time2 = new Date().getTime();console.log('doSomething一共花费的时间为:', time2 - time1);一般来说,这样做是不会出现什么问题的,但是假如doSomething()函数执行时间非常长,那么就会出现异常。考虑以下场景:...…
-
前端模拟面试
1. 请说一说 JavaScript 中闭包的概念以及它的作用查看答案闭包是 JavaScript 中一个重要的概念,它允许函数在定义时访问其外部函数的变量和参数。 闭包的作用是:实现私有变量,保护数据的安全性和隐私性。 可以让函数的变量值始终保持在内存中,延长变量的生命周期。可以模拟块级作用域,在 JavaScript 缺乏块级作用域的情况下实现类似的效果。2. 谈谈你对 Vue 组件通信方式的理解查看答案Vue 父子组件通信:父组件向子组件传值:使用 props 。父组件在使用子组件时...…
-
JS中this的指向
总结一下this的指向: 调用方式 示例 指向 解释 通过new调用 new Foo() 新对象 const foo = new Foo(),此时this指向foo 直接调用 foo() 全局对象 取决于运行环境,在浏览器中为window,在node中为global ...…
-
一文说清SKU算法的实现
什么是SKUSKU(Stock Keeping Unit)是库存管理中的基本概念,指的是库存进出计量的单位,也是产品库存控制的最小可用单位。SKU是商业运营中对商品进行管理和追踪的一种独特标识符,通常是由一串数字或字母数字组合而成的代码。对于不同的商品,即使颜色、尺寸、款式等属性有所差异,也会被赋予不同的SKU号,这样就能在库存系统中精确区分每一种具体的产品变体。业务场景当我们在选择商品时,通常会根据用户每一次的选择,来找出其余属性是否能被选择,如果无法被选择,则需要将其置灰,避免用户选择...…
-
使用Typescript实现一个LRU缓存算法
1. 什么是 LRU 缓存算法LRU(Least Recently Used)算法是一种常用的页面替换或缓存淘汰策略。它的核心思想是在资源有限的情况下,当需要添加新的数据项但存储空间已满时,优先淘汰最近最少使用的数据项,以保证最常访问或最近使用过的数据能够保留在缓存中。2. 实现 LRU 算法的核心步骤 数据结构选择 使用哈希表(如 HashMap)来实现 O(1)时间复杂度的查找和更新操作,用于存储键值对及其在缓存中的位置引用。 使用双端队列(Deque,例...…
-
React深入理解
React自从 React 16 版本引入 Fiber 架构后,渲染过程变得更加精细和可控。整个更新流程主要可以分为三个关键模块:Scheduler(调度器)、Reconciler(协调器) 和 Renderer(渲染器)。关键模块Scheduler(调度器) 调度器是React内部的一个核心模块,它负责决定何时以及如何执行更新任务。在React应用中,当状态发生变化时,会触发重新渲染,而调度器的作用就是根据任务优先级将这些更新任务排队。 Scheduler 遵循可...…
-
使用exiv2读取或者修改图片元数据
0. 前言开发环境为Windows,使用vcpkg安装exiv2库。关于vcpkg的安装,请参考vcpkg官方文档。 如果使用其他环境,请自行通过搜索引擎查找相关资料。1. 安装 exiv2vcpkg install exiv22. CMmakeLists.txt 配置include("C:\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake") # 此处修改为你的vcpkg安装路径find_package(exiv2 CONFIG REQUIRED)ta...…
-
Typescript装饰器简介(下)
在上一篇文章中,我们介绍了装饰器的基本概念,并通过一个简单的例子来展示了装饰器的使用方法。然后,Typescript同时支持装饰器的新语法和旧语法。本文来介绍Typescript的旧语法。在本文中,所使用的语法均为旧语法。1.装饰器配置如果通过旧语法使用装饰器,需要在tsconfig.json中配置compilerOptions.experimentalDecorators为true。{ "compilerOptions": { "experimentalDecorators": ...…
-
Typescript装饰器简介(上)
1. 装饰器的作用装饰器是一种特殊的声明,它可以被附加到类、方法或属性上,用来修改类,属性或者方法的行为。2. 装饰器类型 类装饰器 方法装饰器 属性装饰器 Getter/Setter装饰器 accessor装饰器3. 装饰器语法目前TypeScript使用的语法是5.0引入的装饰器语法,Typescript同时支持两种语法,本文介绍新语法。旧语法会在下篇文章中介绍。以下是几种装饰器的定义示例:3.1 类装饰器type ClassDecorator = (value: Funct...…