DongYuanxin's Blog

TCB CLI源码分析--利用IoC和DI打造复杂命令行工具

好的代码总是令人读有所得。优秀的设计可以让代码在复杂应用场景下保持整洁。 背景 随着nodejs的流行,很多前端开发不光可以在浏览器中编写交互,还可以借助nodejs,在命令行中编写强大的CLI工具,方便其它开发者快速使用产品能力。 类似国外的Vercel,云开发也开发了一套自己的CLI工具。它支持命令行登录、托管前端网站、部署容器、部署云函数等等。文档在: https://docs...

利用LRU(哈希链表)实现本地缓存

认识哈希链表 本质就是:散列表+链表。它被用于实现LRU等算法。 作用: 散列表:提供O(1) 复杂度下的快速读 双向链表:提供 O(1) 复杂度下的快速增删修改 认识LRU算法 LRU 是 Least Recently Used 的缩写,这种算法认为最近使用的数据是热门数据,下一次很大概率将会再次被使用。而最近很少被使用的数据,很大概率下一次不再用到。当缓存容量的...

BitMap 优化美业模版的「预约模块」

预约功能难点 在实现云开发微搭低代码的「美业行业模版」时,经常会对在工作日预约周末的某项服务,并且制定特定的技师。在预约的时候,可能会发生重复预约。 什么是重复预约呢? 例如:预约A中,预约了员工A在 2021/10/01 的 9:00 -10:00;预约B中,预约了员工B在 2021/10/01 的 8:00 - 12:00 ;两个预约在时间段上有重叠。 预约难点体现在: 为...

如何通过WebWorker与时间分片优化JS长任务?

前端长任务 Js 是单线程的语言。如果一段 js 代码的逻辑占用了大量 CPU,那么就会造成「阻塞」,从而导致后面的渲染逻辑迟迟无法执行。 一般来说,超过 50ms 的任务,就是「长任务」。 长任务优化 1: 使用 Web Worker 对于长任务,在浏览器环境下,可以使用 Worker 规范,来开启子线程专门用来计算,主线程只负责发起计算任务和读取计算结果。 在 nodejs 中,可...