黑马点评threadlocal

今天面试,面试官对于threadlocal的使用提问。然后鼠🐭发现不太了解这部分的使用,就说了一个方便以后的使用,面试官不太满意。
1 每次请求都会携带token,直接用redis查询不就可以了吗,为什么还要存到threadlocal
2 用户请求也不一定是一个线程,一个线程过来没有用到另一个线程的信息怎么办#牛客AI配图神器#
全部评论
其实根本原因是TL存储的不是token,而是用户每次请求携带的token解析出来的用户信息,通常是在拦截器中进行解析存储到TL,这样就不存在第二个问题了
52 回复 分享
发布于 03-18 23:49 浙江
jwt最大的优点就是无状态,去中心化存储。存到Redia里就不需要jwt了
11 回复 分享
发布于 03-19 09:32 北京
第一个你是把token放ThreadLocal里了吗。token不会存在ThreadLocal里,因为鉴权token一般每次发送请求的客户端是一样的,但你每一次请求都会分配和上一次请求不一样的线程,你把token存在threadlocal里面就没法验证token了。在一个线程的执行过程里为了不让后面每次拿数据都得访问一次数据库才会鉴权之后把用户信息存在Threadlocal里。 第二个问题没太懂,如果是说Threadlocal数据无法子父线程间共享可以用InheritableThreadLocal或者Transimittablethreadlocal
6 回复 分享
发布于 03-18 18:58 广东
你思考一下openfeign请求为什么丢失就懂了
3 回复 分享
发布于 03-24 20:20 湖南
以xx外卖为例谈谈我的浅薄认知:1.是不是一定要有threadlocal:可以没有的 只需要在每个接口的函数后面读一下header的cookie带的jwt 然后解析即可 2.用threadlocal的好处:a.更好的实现流程前后解耦和 让每部分专注于自己的内容 业务就业务 鉴权就鉴权 b.方便流程中前一级的信息向后一级传递 thradlocal里面可以携带任意信息 c.类似全局exception处理 规范 省事
1 回复 分享
发布于 04-26 20:37 福建
m
1 回复 分享
发布于 03-22 18:08 福建
第一个问题,如果每次请求都会携带token,然后通过redis查询,就会出现每个请求映射到控制器之后,控制器的方法都需要实现响应的解析请求头获取JWT,然后再去redis查询,通过拦截器可以轻松实现,不需要大量的代码冗余,而且后期如果需要改变响应的JWT解析规则,或者使用另外的验证规则,就不得不修改具体业务代码。而且高并发场景下,redis的性能一旦被严重影响,将会影响用户请求,尽管改请求不需要与redis交互。
点赞 回复 分享
发布于 05-29 18:44 福建
m
点赞 回复 分享
发布于 05-15 18:06 湖北
m
点赞 回复 分享
发布于 04-26 11:37 湖南
threadlocal不是一般存用户解析的信息的吗,前端发送token,后端解析token存到threadlocal,供其他功能使用
点赞 回复 分享
发布于 04-21 23:39 河南
m
点赞 回复 分享
发布于 04-13 21:42 四川
m
点赞 回复 分享
发布于 04-13 11:51 北京
因为token解析同样需要时间,而且redis和jvm通信也需要时间啊,threadlocal是本地的速度更快。
点赞 回复 分享
发布于 04-12 13:37 上海
m
点赞 回复 分享
发布于 04-09 01:24 广东
m
点赞 回复 分享
发布于 04-08 11:07 湖南
mark
点赞 回复 分享
发布于 04-06 17:54 陕西
m
点赞 回复 分享
发布于 04-05 14:58 天津
m
点赞 回复 分享
发布于 04-04 01:30 江苏
m
点赞 回复 分享
发布于 04-01 08:14 湖南
m
点赞 回复 分享
发布于 03-30 23:07 江苏

相关推荐

05-23 21:25
已编辑
电子科技大学 Java
前段时间太忙,一直未更新,好在前几天通过了毕业论文答辩,算是给学生时代一个交代。接下来说一下项目,对于求职,项目是必不可少的,这些项目是和面试官聊天的主要内容。很多人认为,一定要搞一个特别高大上的项目,要涉及到很多或者复杂的技术,其实这是一个误区。在我看来,校招中面试被问到最多的是:你从项目中学到了什么、项目的难点或亮点是什么、参与程度怎么样、为什么要用XXX技术栈/中间件。很多人说网上的项目烂大街,其实这个并不重要,因为技术栈大差不差,重要的是怎么把项目包装成一个完整的故事,讲好故事比做更多更难的项目更有意义。以我图中的项目为例,实际上是将黑马点评与学成在线各取一部分缝合起来的。从优化前的“使用了XX中间件”到优化后的“使用了XXX,对XXX进行了优化,提升了XXX”,后者更能说明自己对项目的独到见解。对于每一个写上去的,一定要多问自己为什么要这样做,是否提升了项目的性能等,而不是为了复杂而复杂,项目中自己纠结或者挣扎很久的点,正是面试官和你聊的最多的。同时,项目中的技术点多与八股结合,这也是互联网大厂经常问到的场景题,实际上就是八股的拓展应用,如在项目中如何实现数据库与缓存同步等,不同的处理方法带来的优势和弊端各不相同。最后,写上去的部分一定要是自己熟悉的,坚决不能挖坑,否则问到了不会面试成绩大打折扣。
点赞 评论 收藏
分享
评论
54
301
分享

创作者周榜

更多
牛客网
牛客企业服务