OpenResty 文件上传实战:从 lua-resty-upload 流式读取到落盘封装

这篇文章围绕 OpenResty 的文件上传实现,梳理了 `lua-resty-upload` 的流式读取方式、常见 token 结构,以及一个可直接落地的上传封装。文中保留关键配置、Lua 代码和测试请求,并指出文件大小、扩展名、目录创建与返回结果这些实现细节。

OpenResty 文件上传实战:从 lua-resty-upload 流式读取到落盘封装

Linux 环境中 Node.js 如何进行依赖管理

这篇文章围绕 Linux 下 Node.js 项目的依赖管理展开,分别梳理 npm 与 yarn 的安装、初始化、增删改查命令,以及两者在默认生态、锁文件和使用场景上的区别,方便你快速选型并直接上手。 在 Linux 环境里做 Node.js 开发,真正影响效率的往往不是写代码本身,而是依赖能不能装得稳、管得清、团队里还能保持一致。

Linux 环境中 Node.js 如何进行依赖管理

Java 编译在 Debian 上如何进行自动化构建

在 Debian 上做 Java 自动化构建,关键不只是装好 JDK 和构建工具,更要把构建脚本、CI/CD 平台、测试与触发机制串成闭环。本文按落地顺序梳理环境准备、工具选择与常用命令,适合用来快速搭建基础流程。

Java 编译在 Debian 上如何进行自动化构建

Ubuntu 上如何用 JavaScript 快速跑通 WebSocket 通信

这篇文章用一个最小可运行示例,演示如何在 Ubuntu 上用 JavaScript 搭建 WebSocket 通信:先安装 Node.js 和 `ws`,再分别编写服务端与浏览器客户端,最后验证连接是否成功。 想在 Ubuntu 上把 WebSocket 通信先跑通,最容易卡住的往往不是 API 本身,而是环境、端口监听和浏览器连接这几步是否衔接正确。

Ubuntu 上如何用 JavaScript 快速跑通 WebSocket 通信

Kotlin `return@find` 用法讲清:它返回的不是外层函数

`return@find` 是 Kotlin 里常见的标签返回写法,核心作用不是“结束整个函数”,而是只从 `find {}` 这段 lambda 中返回结果。本文结合示例拆清它与普通 `return` 的区别,并说明为什么在 `find`、`forEach`、`map` 等高阶函数里需要这种显式写法。

Kotlin `return@find` 用法讲清:它返回的不是外层函数

SQL 触发器抛出异常后,事务为什么会被回滚

触发器里一旦抛错,为什么有的库会自动回滚,有的却只是报错后继续保留数据?关键不在“触发器会不会回滚”,而在数据库引擎、事务设置和异常传播链路。本文用 MySQL 与 SQL Server 对照拆开讲清常见误判与排查方法。

SQL 触发器抛出异常后,事务为什么会被回滚

用 Go 开发 AI Agent,三套主流框架怎么选

Go 不只是高并发后端语言,也开始成为构建 AI Agent 的现实选择。本文从并发、类型安全和部署效率切入,对比 LangChainGo、Google ADK-Go、Eino 三个代表性框架,并给出按团队栈、项目复杂度和生态诉求做判断的选型思路。

用 Go 开发 AI Agent,三套主流框架怎么选

Oracle 21c 中怎么用 ROW_NUMBER() 查询分组最新记录?

在 Oracle 21c 里,想查“每组最新一条记录”,核心不是单独使用 ROW_NUMBER(),而是先按分组键和时间等“新旧字段”做窗口排序,再取编号为 1 的行。本文同时说明它为何不能直接和 GROUP BY 混用、并列记录该换用什么函数,以及索引应如何配合。

Oracle 21c 中怎么用 ROW_NUMBER() 查询分组最新记录?