Mongodb 聚合管道模板

Mongodb 的 aggregate 在数据查询、分析等操作中是一个强大的聚合操作,但我发现在尝试编写它时,即使是非常简单的语法,也总是需要参考官方文档或 ChatGPT 或 Perplexity 等 AI 工具,因此我总结了一些常用的模式作为模板,以便在工作中快速参考。

Nodejs 性能贴士

Nodejs 性能贴士。

React 基础知识和陷阱

React 基础知识和陷阱。大部分来自官方文档

如何在WSL中启用音频和CJK

在Windows 11的wsl2上新安装 ubuntu 22.04后,可能会遇到一些问题,例如打开播放音频的网页时没有声音输出,或者浏览器无法正确显示包含 CJK 字符的网页,以下列举了一些快速解决方案。

Service Worker 和 Web Worker 之间的区别

Web Worker 和 Service Worker 都是在后台运行的 JavaScript Worker,独立于浏览器主线程。但它们的用途不同,且具有不同的特征。

Terraform 快速参考

常用 Terraform 命令和操作方法的快速参考。

带回调的异步并行行为

async 库具有一个名为 parallel 的便捷方法,该方法接受要运行的异步函数集合以及一个可选的回调函数,在所有函数成功完成后运行该回调函数。

如何从 UEFI 中删除双启动 ghost 条目

尝试双启动 Windows 11 和 Ubuntu 后,我决定删除 Ubuntu。理由是可能是未知硬件驱动程序问题,导致无论 CPU 几乎为零还是内存使用率很低的情况下,我的笔记本电脑的风扇都会一直发出噪音。按照互联网上找到的指南中的步骤,我删除了 Ubuntu 分区,并从磁盘管理工具将 Windows 分区扩展回原始卷。但还有一个遗留问题,即 UEFI(BIOS)有一个 Ubuntu 的幽灵启动项,似乎没有直接删除的方法。在网上搜索了一段时间后,我终于发现下面的方法被证明是可靠的。

跨编辑器和平台的最小统一编程快捷键

跨编辑器和平台的最小统一编程快捷键。

使用 Redis 作为分布式锁用于简单的用例

我最近遇到了一个系统问题,我们编写的一些作为 Ruby​​ Rake 任务的批处理作业会出现重复调用,进而导致数据库中出现重复记录或在 Slack 中出现重复警报。这肯定是一个基础设施问题,但在从基础设施方面修复它之前,我需要从编码角度找到一种解决方法。尝试将所有内容重写为尽可能幂等的不太现实,增强应用程序级别验证或数据库唯一性约束也不是一个选择,因为并非所有作业都可以是幂等的,也并非所有作业都会写入数据库,此外问题是由竞争条件引起的,不是来自两个线程,而是来自两个进程。经过一些研究和实验,我决定使用“Redis”作为一个简单的分布式锁解决方案,它已经在我们的应用程序中可用,不需要任何额外的设置,而且它是一个单一实例,因此没有复制同步问题。“Redis”是单线程架构,因此无论有多少并发客户端尝试写入它,它都可以保证是顺序和原子的。我发现可以利用这种性质来解决面临的问题。