-
一文说清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...…
-
Mac终端部分快捷键
快捷键 操作 ^ + A 移动光标至行首 ^ + E 移动光标至行尾 ^ + F 移动光标至下一个字符 ^ + B 移动光标至上一个字符 ^ + P 移动光标至上一行 ^ + N 移动光标至下一行 ^ + K ...…
-
使用GitHub Actions进行持久化构建
日前Github新推出了一项功能Actions,可利用该功能进行持久化构建,该功能十分强大,我们可以利用它进行自动化测试、部署、持久化构建。话不多说,我们来看一下具体怎么操作的吧?首先当你将你的项目上传到GitHub上后,会发现有一个Actions的标签,如图所示:然后我们点击这个标签 ,会看到一些推荐的工作流 ,可选的工作流还是挺多的,选择适合自己的工作流,由于我的项目是Vue,所以这里以NodeJS为例:点击“Set up this workflow”然后会让你编写你要构建的脚本,下面...…
-
解决git使用push提交到远程仓库出现403错误的问题
问题出现由于电脑之前切换过github账号,此次git clone的项目是原有账号的项目,然后提交到远程仓库时就出现了如下错误:remote: Permission to userName/repositorieName.git denied to clxering.fatal: unable to access 'https://github.com/userName/repositorieName.git/': The requested URL returned error: 403...…
-
如何优雅的关闭VMWare虚拟机
VMWare(以下简称VM)虚拟机大家应该都用过,但是关闭VM后,我们会发现托盘仍然有VM的图标,对于强迫症来说很不爽,因为此时VM并没有彻底关闭,那么如何让VM彻底关闭呢。下面介绍两种方法:第一种:通用法 首先我们打开VM,然后编辑->首选项,界面如下:然后将显示托盘图标选择为“从不”。 然后我们打开任务管理器,将VMWare开头的进程关闭,如图所示:如此即可。那么有没有更好的方法不用这么麻烦呢,当然有,接下来我们介绍第二种方法。第二种:脚本法首先我们在桌面新建文本文档,然后将...…