- 博客(20)
- 收藏
- 关注
原创 MySQL并发事务问题和隔离级别
如果有一个事务A,查询了一条数据后,又将其修改,还没有提交的时候,有一个事务B去查询数据,获取到了还没提交的数据,这就是脏读。
2024-11-27 09:14:25
462
原创 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的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关注的人
RSS订阅