Moonike Blogs
  • 首页
  • 归档
  • 分类
  • 关于

基于 Redis 实现令牌桶限流和动态配置 QPS

场景介绍这几天没什么需求,再来复现一个公司的业务场景。用量明细分析模块我们在某次迭代中新开发的一个模块,它的主要作用是接收子应用上传的用量明细,但是由于用量明细经常会有波动,这会导致子应用短时间内进行多次上报,大量消耗资源。考虑到这是一个新的小模块,因此我们采用了基于 Redis 和令牌桶算法来实现限流。同时又因为各个子应用的上报频率波动较大,所以还开发了根据角色来动态配置 QPS 的功能。 简单
2025-05-23
场景问题

百万量级 Excel 数据下,EasyExcel 和 Apache POI 的对比

简单介绍 EasyExcel 和 POIEasyExcel 和 Apache POI 是 Java 中常用的处理 Excel 文件的开源工具库。 Apache POI 是功能全面的 Excel 读写库,支持 .xls 和 .xlsx 格式,适合复杂的 Excel 操作,比如自定义样式、图表、公式等。但它在处理大文件时内存占用较高,效率相对较低。 EasyExcel 是阿里巴巴 2017 年开源的
2025-05-22
场景问题

浅谈 JVM 堆内存

堆内存是做什么的堆内存用来存放 Java 中的 实例对象和数组。当我们 new 一个对象或者创建一个数组的时候,就会在堆内存中开辟一段空间用于存放它们。堆内存也有一些特点: 堆内存是 JVM 内存中最大的一部分 堆内存是线程共享的,也是垃圾回收的主要回收区 一个 JVM 实例只存在一个堆内存 堆内存可以在运行时动态地分配大小 堆内存是先进先出 FIFO 的 堆内存的组成部分首先思考一个问题,为
2025-05-19
Java > Java虚拟机

试着理解滑动窗口

什么是滑动窗口大多数人第一次接触滑动窗口(Sliding Window)算法应该是在学习 TCP 协议时。在 TCP 协议中,滑动窗口算法被用来进行流量控制,发送方和接收方均维护一个窗口,窗口大小根据流量变化而变化,从而使消息的发送方和接收方能够以一个合适的速度进行信息传输,从而达到流量控制的效果。而滑动窗口算法则是一个更加广泛的概念,其被广泛用于解决 连续性问题 ,如连续子数组,连续子串等。 能
2025-05-15
算法 > 一些思考

Java 注解(Annotation)

什么是注解Java 注解(Annotation)是一种 元数据(描述数据的数据),以 @注解名 的形式附加在类、方法、字段等代码元素上,用于提供额外信息。注解不会也不能影响代码的实际逻辑,仅起到辅助性的作用,其包含在 java.lang.annotation 包中。 注解的用处 代码标记:如 @Deprecated 标记过时方法。 框架配置:如 Spring 的 @Controller、MyBat
2025-05-13
Java > Java基础

线上 CPU 高使用率的处理思路

CPU 使用率 100% 会导致什么问题 服务响应变慢甚至不可用:因为 CPU 资源被耗尽,导致无法及时处理请求,从而造成服务响应变慢甚至不可用,影响用户体验。 系统资源竞争加剧:多线程/多进程争抢CPU,锁竞争加剧,进一步拖慢系统。同时由于请求挤压,可能会最终会导致请求丢失。 其他资源受影响:高CPU通常伴随高内存、磁盘IO、网络IO压力,可能引发更多资源瓶颈问题。 导致 CPU 高
2025-05-12
运维

Leetcode 148:排序链表

题目背景给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 实现代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152class Solution {private: // 寻找链表的中间结点 ListNode*
2025-05-09
算法 > 刷穿Leetcode

如何编写一个规范的版权声明

先说结论,正确的格式应该是:Copyright [时间] [作者名]. All rights reserved. 对于可视化的版权声明,应该具备如下三部分。 符号 ©,或单词“Copyright”版权,或缩写 “Copr.” 作品初次公开发表的年份。如果是之前发表材料的编辑或者衍生(编辑比如:文选,衍生比如:翻译或者编剧),有权利使用编辑或者衍生作品的最初发表年份。画报,绘画或者雕塑复制在贺卡,
2025-05-09
学的有点杂

ThreadLocal原理详解

什么是 ThreadLocalThreadLocal 是一个线程级别的变量,每个线程都有一个 ThreadLocal 的副本,竞态条件被彻底消除,在并发情况下是绝对安全的变量。当我们执行 ThreadLocal<T> value = new ThreadLocal<T>(); ,系统会自动在每一个线程上创建一个 T 的副本,副本之间彼此独立,互不影响,可以用 ThreadL
2025-05-08
Java > Java基础

函数式接口

什么是函数式接口函数式接口是Java 8引入的概念,指只包含一个抽象方法的接口。这些接口可以使用Lambda表达式来表示,使代码更加简洁。 函数式接口的特点: 只有一个抽象方法(Single Abstract Method,简称SAM) 可以有多个默认方法或静态方法 通常使用@FunctionalInterface注解标记(非必须,但推荐使用) Java内置的常用函数式接口Java 8 在 j
2025-04-22
Java > Java基础
1234

搜索

Copyright 2025 Moonike. All rights reserved.
Powed by Hexo Fluid
载入天数... 载入时分秒...
总访问量 次 总访客数 人