
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
原理:将时间划分为固定的时间窗口(例如1秒)。每个窗口内维护一个计数器,每来一个请求计数器加1。如果计数器超过阈值(如100次/秒),则拒绝请求。时间进入下一个窗口时,计数器归零。示例:限制每秒最多5个请求。窗口 [0:00, 0:01) 内处理了4个请求 → 通过;第5个请求通过,计数器=5;第6个请求被拒绝;时间到0:01,计数器清零。优点:实现极其简单,内存占用小,性能高。缺点临界突变问题。
Bitmap(位图)是一种基于位的数组结构,使用每一个 bit 位来存储一个二元状态(0/1,true/false,存在/不存在)。它将一个范围(如整数 ID、枚举值)直接映射到内存中的某个 bit 位置,从而实现极高的空间效率和快速的位置访问。核心思想:用 1 个 bit 代替原本需要 1 个 byte(甚至更多)才能存储的布尔信息。特性描述本质以 bit 为基本单位的数组,映射整数到状态内存N
下面以F5(硬件负载均衡)和Nginx(软件负载均衡)为例,从核心原理、性能、功能、成本、部署运维等多个方面,系统地对比硬件与软件负载均衡的异同。F5(硬件):用专用芯片把负载均衡做到极致性能和稳定性,是“流量高速公路上的硬隔离交换中心”。“硬隔离交换中心” = 用专用硬件芯片处理流量,与通用计算资源物理隔离,达到交换机级别的线速转发性能,承担数据中心入口的核心调度角色。Nginx(软件):用通用
优点缺点解决固定窗口的边界突发问题实现比固定窗口复杂限流精度可调(通过调整 slot 数量)需要存储多个 slot 的计数(内存高于固定窗口)对流量突发有很好的平滑效果如果使用 ZSET 方式,性能和内存会随请求线性增长适用分布式场景(配合 Redis)
BIO:适合连接数少且活跃的场景(如数据库连接池)。非阻塞 NIO(无 Selector):不实用,仅用于理解概念。IO 多路复用(Selector + epoll):Java 高并发网络编程的基础,适合处理大量长连接。Netty:生产环境首选,几乎所有 Java 高性能网络中间件(Dubbo、RocketMQ、Elasticsearch)都基于 Netty。
HotSpot(最通用,JDK 11/17/21 LTS)。OpenJ9。Azul Zing(商业)或(免费)。GraalVM。JIT的出现,本质上是解决Java跨平台解释执行效率低下的痛点。它通过运行时动态编译热点代码,使得Java在保持“Write Once, Run Anywhere”能力的同时,获得了接近甚至局部超越传统静态编译语言的性能。可以说,没有JIT,Java不可能在服务器端和高性
Spring 的核心是 IoC(Inversion of Control,控制反转)容器,它将对象的创建、装配、管理交给 Spring 框架,从而降低组件之间的耦合度。理解其底层原理,需要从 IoC 思想、Bean 定义与注册、依赖注入机制、Bean 生命周期、循环依赖解决 等多个维度深入剖析。Spring 的 IoC 容器通过 反射 和 工厂模式 实现对象的动态创建与装配。以典型的为例,启动代码
DispatcherServlet 接收请求 → HandlerMapping 定位 → HandlerAdapter 执行 → 拦截器干预 → 返回 ModelAndView → ViewResolver 渲染 → 输出响应阶段组件源码方法接收请求定位处理器执行处理器视图解析视图渲染Viewrender()拦截器回调preHandlepostHandle。
容器启动:Tomcat 等启动,加载web.xml或通过 SPI 发现配置。根容器加载的被 Tomcat 调用,最终调用创建并存入。Web容器加载:作为 Servlet 的,其init()被 Tomcat 调用,最终进入。父子关联中从拿到根容器,并通过建立父子关联。Bean 注册:子容器refresh()→ 扫描 →等 Bean 被注册。→建立 URL 映射。策略初始化→加载 Spring MVC
在秒杀活动场景中,高并发和库存超卖是两个核心挑战。使用 Redis 的内存操作速度以及原子性能力,可以高效地处理库存扣减与请求过滤,再配合 Java 后端进行异步落库、限流等操作,即可实现一个较为可靠的秒杀下单功能。下面给出一种常见的实现方案。








