举例一:SpringBoot+shiro+redis 一个账户只允许一处登录,强制用户下线
这个小难点实现了,一个用户只允许登录一个功能。
大概思路是:
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调优,数据库调优,比如分库分表之类的等等。
这个东西,一定要自己去积累,很多应届生或者初学者,照着网上的敲了一遍,其实还是理解不是那么深透。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。