自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 RedissonRateLimiter限流器原理解析

通过redisson客户端获取一个限流器对象时,只需要指定限流器名称即可获取参考代码如下//如果有密码还要链式设置密码 RedissonClient redisson = Redisson . create(config);// 获取一个限流器 RRateLimiter rateLimiter = redisson . getRateLimiter("yourLimiterName");

2024-08-25 14:00:46 2355

原创 介绍spring解析@Transactional注解的核心逻辑

介绍spring解析@Transactional注解的核心逻辑spring的org.springframework.transaction.annotation.Transactional 注解的原理和执行逻辑分析。

2025-10-30 23:42:48 226

原创 Netty学习 - 什么是Netty

Netty 组件对应 Java NIO 的概念/封装提供的价值Channel更丰富的 API,统一的异步操作接口EventLoopSelector封装了复杂的 Selector 操作和线程管理,提供了清晰的 Reactor 线程模型业务处理逻辑链提供责任链模式,将业务逻辑解耦成一个个 Handler,高度可定制和可扩展ByteBufByteBuffer更强大、更易用的数据缓冲区,支持池化,提升性能Future提供完善的异步操作监听机制。

2025-09-21 09:06:39 453

原创 记录一个Oracle OpenJDK 21.0.5的bug导致OOM

随着时间的推移,直接内存使用量一直向上,很快超过了1G,即使系统已经发生了gc,直接内存的适用量也并没有,我尝试上传了一个300M的文件,直接内存使用量随即增加了300M.这是直接内存使用量来到了1.8G,当我再次上传300M文件时,果不其然,OOM再次发生!这里的内存实际上应该是已经释放了,但是被错误的统计到了直接内存的使用量上。于是我继续跟进源码,进入到了jdk的源码之后,发现使用的是 sun.nio.ch.ChannelInputStream这个io工具类,这个是jdk的内部类,外部无法直接使用。

2025-06-07 13:17:39 1322

原创 nacos的配置更新同步客户原理

Nacos 作为配置中心,在配置发生变化时通过**长轮询(Long Polling)**机制实现配置的实时同步。其核心原理是客户端发起一个带有超时时间的配置监听请求,服务端会持有该请求直到配置变更或超时。当配置变更时,服务端立即响应,客户端随即拉取最新配置。

2025-03-16 14:47:13 592

原创 git reset 四个模式:soft、mixed、hard、keep区别

首先这里创建了两个文件a.txt 和 b.txt在a.txt变更2中仅修改了a.txt;b.txt没有变更然后将b修改后,进行了add操作,提交到了暂存区:使用git status可以看到暂存区记录了b.txt的修改现在我们再分别将a、b文件进行修改如果直接使用git reset --keep进行回退会发现报错,因为上一个版本修改了a文件,并且我们工作区也对a进行了修改,这时git不允许回退。

2023-12-02 12:50:59 3488

原创 纯java从0到1实现一个布隆过滤器

纯java从0到1实现一个布隆过滤器gitee地址本文简介布隆过滤器原理主要介绍如何使用java实现一个bloom filter一、位图我们知道布隆过滤器实际上就是一个超级大的位图;上面维护了所有黑名单(或者白名单)数据。一个key过来或根据hash运算获取到所有对应位图上的点位,判断这些点位是否全为1.如果全为1,那么判定此key已经添加进了位图(存在一定误判率)若果有一个不为1,那么此key一定没有添加进位图(不存在误判)二、几个重要参数样本量(个):n失误率(小数):p

2021-11-14 21:52:49 288

原创 增强for循环引发并发修改异常的原理分析

增强for循环(迭代器)引发并发修改异常ConcurrentModificationException是RuntimeException的一个子类,一般在多线程操作没有线程安全机制的集合对象的时候会触发这个异常(如ArrayList,HashMap等等)需要特别注意的是,在进行集合的增强for循环遍历时,在增强for循环内部,通过集合的引用直接操作集合也会触发这个异常。//对集合进行操作引发并发修改异常public static void main(String[] args) {

2021-04-25 17:12:31 1909

原创 使用idea集成maven创建Struts2项目

使用idea继承maven创建Struts2项目前言本科毕设课题是基于Struts2框架设计一个B/S架构的管理系统,因为框架没得选择,只能使用Struts2来,这里记录了如何使用idea继承maven项目管理工具来创建Struts工程的具体步骤。0.环境简介idea:2019.3.3maven:3.6.3jdk:1.8.0_2611.创建web项目2.添加struts2依赖<dependency> <groupId>org.apache.struts<

2021-03-16 22:26:40 1156 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除