小内存 Java 服务如何优雅处理大文件
在很多实际生产环境中,我们的 Java 服务并不是“豪华配置”: 如果处理不当,很容易: 本文将分享一套低内存、可扩展、生产可用的解决方案。 一、典型错误做法(千万别这样) ❌ 1. 一次性读入内存 ...
最新内容
在很多实际生产环境中,我们的 Java 服务并不是“豪华配置”: 如果处理不当,很容易: 本文将分享一套低内存、可扩展、生产可用的解决方案。 一、典型错误做法(千万别这样) ❌ 1. 一次性读入内存 ...
——写 1 个大文件 vs 写多个小文件,差距到底有多大? 在做磁盘性能分析、日志设计、数据落盘或者存储选型时,经常会遇到这样的问题: 答案是:有差距,而且跟存储介质关系非常大。 这篇文章从 IOPS...
在日常 Java 开发中,经常会遇到这样一个需求:Map 需要按照 value 排序。 但 Java 标准库里的 Map 有一个特点: 👉 没有一种 Map 天然支持按 value 排序。 因此,按 ...
背景 在网络问题排查、协议分析或回放测试中,我们经常需要从 pcap/cap 文件中提取报文数据。 但很多 Java 方案会遇到这些问题: 目标很明确: 用 Java 直接读取 .pcap 文件,返回...
在日常使用 Map 的时候,我们经常会遇到这样的需求: 那么问题来了:Map.compute 方法能不能用来删除元素? compute 方法的语义 Map.compute(key, remapping...
在使用 Caffeine 缓存时,经常会遇到一个问题:配置了基于时间的过期策略,为什么数据过期后还在内存里? 本文将深入解析 Caffeine 的时间老化触发原理,以及如何通过 Scheduler 实...
在高并发编程中,线程安全队列是最常见的数据结构之一,广泛用于生产者-消费者模型。然而,常见的线程安全队列并不都是有界的,而在很多业务场景下,我们必须要限制队列容量(避免内存无限膨胀,造成 OOM)。本...
在 Spring Boot 的配置文件 application.yml 中,我们经常需要配置数组参数,例如: 这是最常见的写法:array 是一个 key,对应的值是一个数组,数组中的每个元素用 - ...
在日常业务中,缓存是提升系统性能的重要手段。Caffeine 作为 Java 中性能最好的本地缓存库之一,被广泛使用。但在实际使用过程中,我们经常会遇到一个需求: 如何让某个前缀下的所有 key 批量...
在 Java 中,使用 Map 存储内存数据并定时持久化到磁盘,是很多系统常见的需求,如缓存、配置中心、本地任务队列等。为了保证高性能和低延迟,选择一个高效的序列化框架至关重要。本文将介绍如何使用 K...