自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java逃逸分析

是一种有效减少Java程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。能够分析出一个新的对象的引用范围从而决定是否要将这个对象分配到堆上。

2023-08-10 23:58:37 69 1

原创 普通内部类和静态内部类的区别

一个普通内部类不能脱离外部类实体被创建,且可以访问外部类的数据和方法,因为他就在外部类里面。即普通内部类需要外部类的对象创建outer.new Inner()。静态内部类可以直接new Outer.Inner()创建。普通内部类持有对外部类的引用,静态内部类没有持有外部类的引用。(普通内部类引用外部类,会导致不会被垃圾回收,内存泄漏)普通内部类能够访问外部类的静态和非静态成员,静态内部类只能访问外部类的静态成员。反编译后,可以看到普通内部类有外部类引用。静态内部类即加上static的内部类。

2023-08-10 23:06:24 29 1

原创 使用redis缓存的注意点

布隆过滤器由「初始值都为 0 的位图数组」和「 N 个哈希函数」两部分组成。标记一个数据时,使用n个哈希函数对其取哈希,然后用数组的长度取余。将数组中对应的下标置为1。当然,可能有哈希冲突的情况。但影响不大。因为查询布隆过滤器说数据存在,并不一定证明数据库中存在这个数据,但是查询到数据不存在,数据库中。

2023-08-06 15:43:38 114

原创 Redis学习笔记

Redis 在执行完一条写操作命令后,就会把该命令以追加的方式写入到一个文件里,然后 Redis 重启时,会读取该文件记录的命令,然后逐一执行命令的方式来进行数据恢复。

2023-08-04 14:57:57 26 1

原创 redis缓存更新策略

这种方案可以不在业务中关心缓存处理,而是直接订阅mysql的binlog日志,发现有数据更新,就删除对应缓存。为了解决这两种方案的缺陷,可以使用延迟双删,即先进行缓存清除,再执行update,最后(延迟N秒)再执行缓存清除。不过有一种少见的极端情况,即缓存到期,读请求先来然后延迟,导致写入旧数据。第2种的缺陷:从更新数据库到删缓存的时间内,查询到的缓存为旧数据,也就是造成查询延迟。第1种的缺陷:删了缓存,另一个请求来查,发现缓存为空,查到旧数据保存到缓存中。可以将删除失败的缓存发到mq,由消费者进行重试。

2023-07-31 10:47:58 77 1

原创 spring循环依赖

在 initializeBean 方法执行完成之后,AService 会继续去检查最终的 Bean 是不是还是一开始的 Bean,如果不是(变成了代理类),就去检查初始 Bean 有没有被其他 Bean 引用过,如果被引用过,就会抛出来异常,也就是上图大家看到的异常信息。即去三级缓存中取出beanFactory并执行这里的 getObject 方法,这个方法在执行的过程中,会去判断是否需要生成一个代理对象,如果需要就生成代理对象返回,如果不需要生成代理对象,则将原始对象返回即可。

2023-07-19 17:52:33 30

原创 java异常处理的理解

异常的基础知识。

2023-06-05 16:37:00 32 1

空空如也

空空如也

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

TA关注的人

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