举例一:SpringBoot+shiro+redis 一个账户只允许一处登录,强制用户下线

这个小难点实现了,一个用户只允许登录一个功能。

java面试:你做项目过程中遇到什么问题?

大概思路是:

1.每次请求获取他的session和sessionid

2.如果用户没有登录,走正常登录流程

3.如果用户来获取队列,但是队列里面没有数据,那么就新建一个存,将sessionid存到队列里面,用户名存到session里面

4.如果队列的size大于0,判断队列里面的sessionid和session里面的用户是否一样。

5.如果sessionid不一样,但是用户名是一样的,存到队列里面,那么这时候size>1

6.如果队列里面的数据大于1,那么就清楚掉老的sessionid。

7.更新缓存。

java面试:你做项目过程中遇到什么问题?
1、redis存一些热点数据,没有设置过期时间,采用默认相同的 过期时间,后来数据同时失效。大量的请求就落到了数据库,数据库数据库差点崩了。
2、循环嵌套循环,后来采用Java8新特性,提取一个集合某一对象的其中一个属性(例如id)有效的可以解决循环嵌套。
3、redis数据与数据库数据不同,出现了脏数据,没有设置过期时间。后来前端在请求数据的时候一直都是,先删除缓存,在更新数据库,在增删改时候我们都会删除一次缓存的,
4、使用分页插件没有实现分页。因为spring boot版本与pagehelper版本不兼容。
5、一对多数据查询翻倍:不写join链接,采用的是<select>这个标签。问题原因:多查了

关于java面试:你做项目过程中遇到什么问题?

你还可以弄jvm调优,数据库调优,比如分库分表之类的等等。

这个东西,一定要自己去积累,很多应届生或者初学者,照着网上的敲了一遍,其实还是理解不是那么深透。

 

RIPRO主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
叶子it资源网 » java面试:你做项目过程中遇到什么问题?

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

发表回复

提供最优质的资源集合

立即查看 了解详情
开通VIP 享更多特权,建议使用QQ登录