首页 文章 精选 留言 我的

文章列表

共 232857 篇
Node.js 中处理大文件上传:流式写入与背压控制实践

Node.js 中处理大文件上传:流式写入与背压控制实践

在后台管理系统里做文件上传功能时,遇到几十兆甚至上百兆的文件很常见。如果直接把 req 里的数据全部读进内存再写盘,进程内存会迅速上涨,几个并发上传就能把服务打挂。更隐蔽的问题是,即使你用了 fs.createWriteStream 边读边写,如果不处理可写流的背压信号,write() 返回 false 后继续灌数据,内部缓冲区会越积越大,最终同样导致内存问...

Node.js 中处理大文件上传:流式解析 multipart 的踩坑记录

Node.js 中处理大文件上传:流式解析 multipart 的踩坑记录

团队做了一个内部用的素材管理系统,需要支持上传几百 MB 甚至 1~2 GB 的视频和设计稿。最初用 express 配合 multer 的默认配置,小文件没问题,但一到几百 MB 就开始出现内存飙高、请求超时,偶尔整个进程被 OOM Killer 干掉。排查后发现 multer 默认会把上传内容缓冲到内存或临时磁盘,并且在某些配置下整个文件读入内存后才交给...

Node.js 中处理大文件上传的流式方案与内存踩坑实录

Node.js 中处理大文件上传的流式方案与内存踩坑实录

文件上传功能看起来简单,但在 Node.js 里一旦文件体积上到几百 MB 甚至几个 GB,用错方式就会直接把进程内存打满。常见场景是后台管理系统的批量导入、视频素材上传、日志归档回传,开发者习惯用 multer 默认配置或 req.on('data') 手工拼接 Buffer,结果在并发上传时内存曲线飙升,甚至触发 OOM 被系统杀掉。问题根源在于默认把整...

Node.js 中 fs.createReadStream 的 highWaterMark 到底怎么影响内存和速度

Node.js 中 fs.createReadStream 的 highWaterMark 到底怎么影响内存和速度

处理大文件上传或日志分析时,很多 Node.js 项目会用 fs.createReadStream 逐块读取文件,但很少有人认真设置 highWaterMark。这个参数默认 64KB,直接决定了每次从磁盘读取多少字节、内部缓冲区有多大,以及背压(backpressure)触发的频率。实际开发中常见的情况是:读取小文件时速度尚可,换成几百 MB 的日志文件后...

Golang 中 time.Timer 的正确释放方式:避免 goroutine 泄漏与 Reset 陷阱

Golang 中 time.Timer 的正确释放方式:避免 goroutine 泄漏与 Reset 陷阱

在 Go 里用 time.After 或者 time.NewTimer 做超时控制几乎是日常操作,但真正把 Timer 用对的人并不多。常见问题集中在两块:一是 time.After(d) 在 select 提前返回时计时器并不会被回收,高频率调用会持续堆积临时对象,直到 d 到期才释放;二是 Timer.Reset 的语义和直觉不符,如果不清空 chann...

Java 线程池里 submit 和 execute 的异常处理差异,踩过一次才知道

Java 线程池里 submit 和 execute 的异常处理差异,踩过一次才知道

线上一个定时任务偶尔会静默失败,日志里只有任务开始的信息,没有结束也没有异常堆栈,排查了半天才发现问题出在 ExecutorService.submit() 上。很多人在用线程池时把 execute 和 submit 当成可以互相替换的写法,实际上两者对异常的处理完全不同:execute 会把任务抛出的异常直接交给线程的 UncaughtExceptionH...

Node.js 中 stream.pipeline 的错误处理为什么比 pipe 更可靠

Node.js 中 stream.pipeline 的错误处理为什么比 pipe 更可靠

用 Node.js 处理文件上传、日志转发或者数据库导出时,流式读写几乎躲不开。很多人习惯用 readable.pipe(writable) 把数据从源头接到目标,代码短、能跑,但一旦中间某个流报错,问题就来了:pipe 不会自动销毁上游流,也不会把错误从目标流传回源头,监听器漏挂一个就可能让进程挂着一个未捕获异常,或者让文件句柄迟迟不释放。更隐蔽的是,当可...

Node.js 中优雅处理异步任务超时:AbortController 与 Promise.race 的陷阱与选择

Node.js 中优雅处理异步任务超时:AbortController 与 Promise.race 的陷阱与选择

在 Node.js 后端开发里,调用外部 API 或执行耗时数据库查询时,给异步操作设置超时几乎是必备的防御手段。很多开发者第一反应是 Promise.race 配合 setTimeout,但这种方式只能让外层 Promise 提前 reject,底层请求并不会真正取消,导致连接泄漏、定时器未清理,甚至在并发高时拖垮服务。Node.js 从 v15 开始稳定...

从披露到验证:上市公司对外投资公告跟踪的信息管道设计与分级监测机制

从披露到验证:上市公司对外投资公告跟踪的信息管道设计与分级监测机制

对外投资公告的跟踪,本质上是一个在信息不完全条件下的信号识别问题:公告只提供事件起点,真实进展散布于工商、招投标、招聘等异构数据源中,且各源时效与可信度不一。可投入的人力与注意力构成硬约束,覆盖广度与核查深度之间存在天然取舍。本文将其建模为目标界定、数据补全与分级节奏三个环节——目标分层决定核查资源如何分配,交叉验证负责还原推进链条,...

#WorkBuddy# #AI办公# 七目录对账全平,C 盘却再掉 1.63GB:真凶藏在复扫看不见的卷影差异区,顺带抓到一周升两次级的夸克三版本共存

#WorkBuddy# #AI办公# 七目录对账全平,C 盘却再掉 1.63GB:真凶藏在复扫看不见的卷影差异区,顺带抓到一周升两次级的夸克三版本共存

上一轮体检(11 月 6 日)留了一个观察项:那台 Windows 机器的 C 盘可用空间从 33.40GB 掉到 31.77GB,一天少了 1.63GB,下行趋势重启。今天自动化到点开工,把这条线索接过来接着查。结论先说:顶层七个目录的复扫对账几乎全平,但磁盘水位还在掉——差额不在任何被扫的目录里,而在整条扫描线的结构性盲区里。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册