自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL并发事务问题和隔离级别

如果有一个事务A,查询了一条数据后,又将其修改,还没有提交的时候,有一个事务B去查询数据,获取到了还没提交的数据,这就是脏读。

2024-11-27 09:14:25 462

原创 数据库索引失效的场景

给tb _seller创建联合索引,字段顺序:name,status,address。

2024-11-27 08:38:48 546

原创 Redis的哨兵模式

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。

2024-11-26 18:57:54 490

原创 Redis的主从复制

单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。其中是一个结点是主节点,其他的都是从结点,主节点负责写操作,从节点负责写操作,所以在主节点写操作结束后,需要向从节点同步数据,这样就实现了读写分离。

2024-11-26 17:08:56 517

原创 redis的内存淘汰策略

数据的淘汰策略:当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略redis的数据淘汰策略一共有8种LRU(Least Recently Used)最近最少使用。用前时间减去最后一次访问时间,这个值越大则淘汰优先级越高。LFU(Least Frequently Used)最少频率使用。会统计每个key的访问频率,值越小淘汰优先级越高。

2024-11-26 14:16:55 490

原创 redis的数据删除策略

惰性删除:设置该key过期时间后,我们不去管它,当需要该key时,我们在检查其是否过期,如果过期,我们就删掉它,反之返回该key。

2024-11-26 12:58:08 286

原创 JVM的垃圾回收算法有哪些

优缺点同标记清除算法,解决了标记清除算法的碎片化的问题,同时,标记压缩算法多了一步,对象移动内存位置的步骤,其效率也有有一定的影响。老年代的垃圾回收器一般使用标记整理算法。标记算法是将内存分成两块相等的区域,把标记的对象清除后,就会把存活的对象整理复制到另一块内存,一般年轻代的垃圾回收会采用复制算法。分配的2块内存空间,在同一个时刻,只能使用一半,内存使用率较低。

2024-11-26 08:55:55 818

原创 java对象什么时候被垃圾回收?

简单一句就是:如果一个或多个对象没有任何的引用指向它了,那么这个对象现在就是垃圾,如果定位了垃圾,则有可能会被垃圾回收器回收。如果要定位什么是垃圾,有两种方式来确定,第一个是引用计数法,第二个是可达性分析算法。

2024-11-26 08:44:27 1028

原创 HashMap的扩容机制

首先会判断旧容量是否大于0,如果不大于,则会给一个默认的容量16新建一个数组。

2024-11-25 20:19:35 469

原创 HashMap的put方法的具体流程

第一个属性是指的默认的容量值为2的四次方也就是16第二个属性是加载因子,默认为0.75 ,扩容的阈值就是数组的长度*加载因子第三个属性是HashMap用来存储数据的数组,这个Node类,是HashMap的内部类,第一个属性是hash值,第二个key,第三个是value,第四个是用来指向下一个节点的指针第四个属性是记录集合从存储元素的个数。

2024-11-25 19:46:07 540

原创 HashMap实现原理

当我们往HashMap中put元素时,利用key的hashCode重新hash计算出当前对象的元素在数组中的下标。存储时,如果出现hash值相同的key,此时有两种情况。

2024-11-24 17:09:09 304

原创 ArrayList源码分析,扩容机制

关键的几个就是初始容量DEFAULT_CAPACITY,用来存储数据的数组elementData,元素的个数size。

2024-11-23 18:51:18 350

原创 什么是虚拟机栈

栈帧过大会导致线程数变少,例如,机器总内存为512m,目前能活动的线程数则为512个,如果把栈内存改为2048k,那么能活动的栈帧就会减半。垃圾回收主要指的是堆内存,当栈帧弹栈后,内存就会自动释放。未必,默认的栈内存通常为1024k。

2024-11-23 16:54:23 352

原创 Java堆详解

java堆是一个线程共享的区域:主要用来保存对象实例,数组等,当堆中没有内存空间可分配给实例,也无法再扩展时,则抛出OutOfMemoryError异常。在年轻代中有eden区,和s0,s1区,这两个也是幸存者区,大小严格相同 ,在经历垃圾回收后,eden区的对象会被放进幸存者区,如果多次垃圾回收之后对象依然存活,就会把对象放进老年代区;在老年代里主要保存着生命周期较长的对象。

2024-11-23 16:09:43 411

原创 类加载器和双亲委派模型

自定义类继承ClassLoader,实现自定义类加载规则双亲委派模型:简单来讲就是如果一个类要加载,会先走默认的类加载器,如果这个类加载器有上级,就会委托上一级的类加载器进行加载,一直委托到启动类加载器,如果该加载器的加载目录中没有该类,则委托下级加载器进行加载。

2024-11-23 15:33:42 445

原创 springMVC执行流程

handler:处理器映射器中某一个控制器的某一个方法,在底层是一个map集合,键为路径,值为方法名处理器执行链:包含了要执行的方法名,如果有拦截器,就会将拦截器和方法名一起封装到处理器执行链。

2024-11-22 18:34:02 328

原创 spring的循环依赖

对象A在创建的时候会生成一个A的类工厂放入三级缓存,在创建B的时候也会生成一个B的类工厂放入三级缓存,B需要注入A对象时,就会从三级缓存中获取A类工厂,然后A类工厂创建一个A对象,A对象会被放进二级缓存,此时会将A注入给B,这样B就可以正常创建,然后A也可以正常注入B对象,就可以解决循环依赖问题。简单来说就是对象A在创建完后就会放入二级缓存,然后对象B创建的时候,会从二级缓存中拿到半成品A对象并注入,这样对象B就可以完成创建,并且存进一级缓存,A也可以正常注入B对象,这就解决了循环依赖的问题。

2024-11-22 17:29:06 550

原创 bean的生命周期

Spring容器在进行实例化时,会将xml配置的的信息封装成一个BeanDefinition对象,Spring根据BeanDefinition来创建Bean对象,里面有很多的属性用来描述Bean通过反射来获取bean的相关属性,封装到BeanDefinition对象中。

2024-11-22 15:04:07 543

原创 一文搞懂Redis持久化策略

fork操作会完全复制一个与当前进程一样的子进程,包括内存数据。这意味着子进程可以访问父进程中的所有数据,从而不会影响父进程的运行过程。fork操作对主进程几乎没有阻塞,但是在开启新进程的时候会参数纳秒级阻塞,忽略不计通俗来说,它是因数据重复录入、共同处理等不规范操作而产生的混乱、无效数据。这些数据不能为企业带来价值,反而会占据存储空间,浪费企业的资源。因此,这些数据被称为“脏”数据,不仅没有价值,还会“污染”其他的数据。为了避免脏数据的产生,fork会采用copy-on-write技术。

2024-11-15 09:12:58 1688

原创 sping八股-spring事务失效的场景

当发生异常捕获时,spring事务将会失效代码示例:这里 int a = 1/0;会报出一个错误异常,将会导致事务失效。

2024-11-13 09:29:35 474

空空如也

空空如也

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

TA关注的人

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