- 博客(19)
- 收藏
- 关注
原创 synchronized是怎么保证可见性的
内存屏障强制内存可见性规则建立线程间操作顺序锁释放时写回主内存锁获取时刷新工作内存这使得不仅能保证原子性,还能保证可见性,是一种"重量级"但全面的同步解决方案。
2025-07-06 10:24:40
386
原创 volatile解决线程安全
volatile通过内存可见性保证解决可见性问题volatile通过内存屏障禁止重排序解决有序性问题volatile的写-读与锁的释放-获取有相同的内存语义volatile不能保证原子性(如i++操作仍需synchronized或Atomic类)示例说明java// 没有volatile可能导致可见性问题// 使用volatile解决volatile适用于"一写多读"的场景,是比synchronized更轻量级的同步机制。
2025-07-06 10:24:07
796
原创 锁的键理解
一个Redisson分布式锁锁的是用户id,指的是只有某个先进来的用户把代码块执行完了过后,其它用户线程才能继续抢锁。还是指每个用户都能同时进入锁的代码块里面执行,因为锁的是userid,代表不同用户是不同的锁,请求可以同时进行。那种理解是正确的?
2025-07-04 15:44:50
406
原创 服务端要存储access Token和RefreshToken吗?
Token类型服务端存储原因否无状态,依赖签名验证和过期时间。是需主动管理生命周期(生成、撤销、过期),防止被盗用后无限获取新Token。通过这种设计,既保持了JWT的无状态优势(Access Token),又通过Refresh Token的集中管理实现了安全的会话控制。
2025-07-04 14:28:00
1053
原创 踢人下线是什么意思?JWT的双Token怎么实现踢人下线。怎么防止被篡改。Token登出怎么处理。
"踢人下线"是指强制终止某个用户的登录状态,使其需要重新登录才能继续访问系统。这在以下场景中很常见:管理员强制下线某个用户检测到异常登录行为用户修改密码后使旧会话失效账号被封禁时。
2025-07-04 14:26:54
552
原创 RabbitMQ使用死信队列取消未支付订单,并发异常情况
最后一秒的时候用户进行支付了,但是接收到微信/支付宝的回调大于1s。相对于同时收到了用户未支付的消息和微信/支付宝 回调的消息。超时取消的消息在前,支付回调的消息在后。这种情况怎么处理。?:尝试将状态从未支付(UNPAID) → 已支付(PAID):尝试将状态从未支付(UNPAID) → 已取消(CANCELED):若更新影响行数为0,说明状态已变更,需:支付回调后到 → 触发(因订单已取消)取消消息后到 → 忽略或记录告警(因订单已支付)再次检查支付状态(查支付平台)。
2025-07-03 23:07:43
577
原创 秒杀项目中redis的数据结构,hash,string,set的选择场景,一人多单的限购数量实现
String 用于计数:简单、高效、原子性强,完美适配库存和购买计数场景。Set 用于唯一性校验:适合记录用户是否参与过活动。Hash 用于结构化数据:适合存储多字段键值对。
2025-04-19 16:40:04
730
原创 库存扣减方案
用户提交订单时,做的是reids中库存预扣,只有当实际支付完成后,才会做数据库层的库存扣减。在用户提交订单时、支付完成时、订单取消或下单失败时、运营更新商品时,都会涉及到库存的操作,所以本文分别就这几种场景,设计出对应的库存扣减逻辑。为了防止redis和数据的库存出现不一致的情况,每天都需要进行检查;库存以数据库中实际库存为主,将数据库中的库存减去未支付订单扣减的库存,更新到redis中。用户支付时,有可能会出现库存不足,给用户造成不好的购物体验。为了扛住高并发,我这里在两个地方做了库存扣减,第一个使用。
2025-04-16 20:31:28
620
原创 Jwt,双Token机制复习。
前端设置不了Token的有效期,只能后端设置。前端只能设置Cookies的有效期。如果Token过期了,Cookies携带的Token传递到后端就解析不出来username,为null。
2025-04-11 10:28:36
245
原创 mall项目,mall-admin-web项目,双token机制问题
但是作者这里实现的后端接口,前端项目mall-admin-web下的api包都没有找到对应的接口不是根本就作用不了这个接口的吗?用apifox测试,也是进入不了/refreshToken这个controller,都被Securityconfig的几个自定义处理类返回了错误数据。有正在学习mall项目的同胞吗?想学习作品的双token机制。
2025-04-09 18:43:51
216
原创 mall项目权限管理系统登录鉴权过程,以及角色动态菜单控制展示
此时 SecurityContextHolder上下文里面已经set了,存储用户信息配置好了的 UsernamePasswordAuthenticationToken。//这里还有点不理解,展示的数据只有左侧菜单列表,右上角的头像。/info接口为何还要搜集当前登录用户的角色信息,似乎没有用上?几乎是/login接口执行完过后返回给前端,立马执行/info接口。最先进入SecurityConfig,根据从配置的拒绝处理类,拦截器,过滤器等等依次执行。login的最后一行过后,还是首页界面,没有进行跳转。
2025-04-06 14:28:25
253
原创 Mall动态权限管理
此时 configAttributes 里面存的是 请求这个路径 需要的 needAuthority和登陆的时候存储的当前用户的授权一个个比对。那就放行,否者抛出异常提示:没有权限。同时在 DynamicSecurityMetadataSource类加载前,loadDataSource就已经把资源那张表的url和name数据存到configAttributeMap里面了。第五步:下一步就跳转到了,DynamicSecurityFilter的第59行。执行到第57行过后,会先跳转到下一步的类的代码。
2025-04-06 11:01:32
175
原创 苍穹外卖项目知识点
修改菜品表的信息包括修改菜品的基本信息和菜品口味信息。口味信息把原来的所有口味全部删除过后再全部插入新的数据。属性拷贝,源类和目标类的属性名都要一样。像这种debug运行到55行过后,再在57行打断点再放行,依旧可以断点调试57行。处理用户下单等类似逻辑的时候,要首先考虑异常处理情况先进行处理。两个integer数来计算合格率转为double的处理方式。修改菜品涉及根据id菜品和对应的口味信息封装到VO对象中。重点看stream流和这个string工具类的用法。然后插入的测试数据没有id,而需要插入id。
2025-01-17 15:33:42
289
原创 【无标题】初学Android 开发,检测不到jdk
第一天在idea按着网上教程配置完,jdk,sdk,环境变量都配置好好的,都写了一个demo了。第二天要写spring的项目,然后手贱把这里面的几项Android SDKS删除了。今天重新启动,重新add。2.重新点进去,next,走一遍刚开始配置的步骤。因为配置过,会很快。Android SDK,之前写过的这个安卓demo死活有问题。1.保证以下的地方都配置的一样的。
2024-10-23 21:36:02
394
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅