- 博客(10)
- 收藏
- 关注
原创 Redis的删除策略:
Redis使用内存存储数据,在执行每一个命令前,会调用FreeMemoryIFNeeded()检查内存是否充足,如果内存不满足新加入数据的最低存储要求,redis要删除一些数据为清理空间。需要注意的时,逐出过程并不是100%的能够清理出足够的空间,如果不成功反复执行,在所有数据都尝试完毕后,如果还是不能满足内存清理的要求,将会出现错误信息。:在系统启动前,提交将相关的缓存数据直接加载到缓存系统,避免在用户请求的时候,先查数据库,然后再缓存数据的问题,等下次访问该数据时,如果未过期,返回数据。
2024-03-25 23:44:20 526
原创 负载均衡算法
缺点:容易负债不均衡,比如新注册的用户活跃度高,旧用户活跃度低,那么压力就全在新增的服务节点上,旧服务节点性能浪费。而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。它的目的就通过调度集群,达到最佳化资源使用,最大化吞吐率,最小化响应时间,避免单点过载的问题。当某一用户成为热点用户,那么会有巨大的流量涌向这个节点,导致冷热分布不均衡,无法有效利用起集群的性能。,响应速度慢的服务节点分配更少的请求,俗称能者多劳,扶贫救弱。
2024-03-14 01:08:25 917
原创 shiro运行原理
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。三个核心组件:Subject、Security Manager、Realms。在resource下创建ini后缀文件。2.创建shiro的配置文件。1.添加maven依赖。
2024-03-08 00:31:18 398 1
原创 redis的持久化方式
但是,如果主线程要修改一块数据,那 么,这块数据就会被复制一份,生成该数据的副本。如果开启了混合持久化,AOF在重写时,不再是单纯将内存数据转换为RESP命令写入AOF文件,而是将 重写这一刻之前的内存做RDB快照处理,并且将RDB快照内容和增量的AOF修改内存数据的命令存在一 起,都写入新的AOF文件,新的文件一开始不叫appendonly.aof,等到重写完新的AOF文件才会进行改名,覆盖原有的AOF文件,完成新旧两个AOF文件的替换。本质上也是AOF的方式,但是对AOF文件进行了优化(压缩)
2024-03-04 01:29:06 962
原创 AOP运行原理
再者,如果增加一个方法,除了实现类需要实现这个方法外,所有的代理类也要实现此方法。简单的从字面意思看出:如果有接口,则使用 JDK 代理,反之使用 CGLIB ,这刚好印证了前文所阐述的内容。使用 JDK 生成的动态代理的前提是目标类必须有实现的接口。代理是一个中间层,它可以拦截对目标对象的访问,并在目标对象的方法执行前后插入额外的逻辑。通过代理和切点的结合,AOP可以在不修改原有代码的情况下,实现对横切关注点的增强。动态代理模式:动态代理类的源码是在程序运行期间,通过 JVM 反射等机制动态生成。
2024-01-31 16:51:04 1016
原创 Spring中的bean的生命周期
首先是一个简单的Spring Bean,调用Bean自身的方法和Bean级生命周期接口方法,为了方便演示,它实现了BeanNameAware、BeanFactoryAware、InitializingBean和DiposableBean这4个接口,同时有2个方法,对应配置文件中的init-method和destroy-method。初始化Bean:在Bean属性填充完成后,Spring会调用Bean的初始化方法对Bean进行一些额外的初始化操作。这个阶段是通过调用setter方法来完成的。
2024-01-08 00:55:17 495
原创 HashSet去重原理解析
如果该位置上已经有元素了,HashSet 会调用该元素的 equals() 方法与新元素进行比较,如果 equals() 方法返回 true,HashSet 就认为这两个元素是相同的,不会将新元素添加进去。可以看出添加的两个元素的key值相同,value值也相同,按照HashSet的定义因该是不能同时存在于一个集合中的,但是运行后得出的hashCode()值不同,因此都可以添加进set集合中,这个时候,就需要在Student类中重写hascode() 和 equals()方法了。
2023-10-29 23:16:31 319
原创 ArrayList 和 LinkedList 的区别
不需要移动,需要扩容。//ensureCapacityInternal 容量!频繁访问列表中的某一个元素。只需要在列表末尾进行添加和删除元素操作。
2023-10-17 00:06:55 81
原创 StringBuffer的扩容原理
在Java中,String是一个常量,一旦创建其值后不能更改但可以共享。如果我们把多个字符串进行连接(拼接)操作,就会开辟很多空间,从而造成了大量内存空间的浪费。为了解决这个问题,我们需要用到StringBuffer类和StringBuilder类。
2023-10-09 18:07:27 161
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人