- 博客(5)
- 收藏
- 关注
原创 spring源码实战应用,对外提供的starter中如何强制实现某个接口
首先讲下需求,这是最近做的一个项目,提供一个SDK让其他业务系统使用,但是因为项目内部使用了Shiro权限框架,获取用户信息的时候,定义了一个UserService接口,用户在使用我们提供的框架时,必须要实现UserService接口,所以最终需求就是,需要强制用户在自己的代码模块实现UserService接口。但是此时把@Service注解加上的话,那么就会有问题,在此启动不会报错 但是初始化方法@PostConstruct不会被执行,同时,@Autowired进行依赖注入的时候,也是为null的。
2024-04-02 14:11:03
578
1
原创 面试记录-怎么保证redis和mysql的一致性;
延时双删也是可以保证数据的最终一致性的,但是在整个事务执行的过程中,如果在并发情况下,有其他线程在第二步没有更新完mysql之前进行查询,那么查询到的依然是旧的数据,并且在更新mysql之后也要保证等待的时间要在mysql更新之后,最后再次删除redis中的数据。这个方案在不考虑特殊情况下可以保证数据的最终一致性,但是在并发的情况下,在第二步删除redis的操作没有完成时,有另外的线程进来查询数据,那么查询到的就是旧的数据,但是优点是只需要删除一次缓存的数据。
2024-03-22 05:45:02
293
1
原创 面试记录-哪种Map可以存放null键值,其他的为什么不行?
而HashTable和ConcurrentMap作为安全的集合,在设计之初是要考虑到线程安全的问题,也就是说有多个线程同时对键值进行修改,那么此时在 使用contains(key)方法的时候就会出现一个歧义,到底是key为null呢,还是说根本不存在null这个key呢,这时候就产生了歧义,所以安全的集合键值都是不能为null的。也就是说作者在设计HashMap集合之初,就完全没有考虑他的安全性,默认的就是单线程执行的;其实这个问题问的是比较刁钻的,因为要从源码设计的角度去回答这个问题,
2024-03-22 05:08:30
193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人