- 博客(24)
- 收藏
- 关注
原创 [特殊字符]Elasticsearch从入门到精通:核心概念与实战解析(附完整代码)
好了,今天的分享就到这里。总结一下重点ES真的是个很强大的工具,但用好它也不容易。建议大家先跑通Demo,理解核心概念结合实际业务场景练习关注性能优化和监控多看官方文档和社区经验有问题随时留言,我会一一回复的!
2025-12-20 20:42:51
770
原创 为何ThreadLocal不存数据却能实现线程隔离?一分钟让你彻底搞懂!
ThreadLocal 本身不存数据,它只是一个工具类,用于提供访问线程的私有数据。当我们调用 ThreadLocal.set()时,数据实际存入了当前线程的 ThreadLocalMap 中,其中 ThreadLocal 对象为 Key,用户数据为 Value。这种设计实现了线程隔离,且无需同步。但需注意:ThreadLocalMap 的 Key 是弱引用,而 Value 是强引用,若线程长期存活,必须调用 remove()防止 Value 内存泄漏(OOM)
2025-07-25 18:12:04
184
原创 一文吃透 Synchronized 锁升级:从无锁到重量级锁的完整流程与原理剖析
本文介绍了JVM中Synchronized锁的升级机制。对象头中的MarkWord记录锁状态信息,锁从无锁(001)逐步升级为偏向锁(101)、轻量级锁(00)和重量级锁(10)。首次获取锁时建立偏向锁,多线程竞争时撤销偏向锁转为轻量级锁,竞争加剧后升级为重量级锁。锁升级是单向过程,通过不同锁状态优化不同竞争场景下的性能:偏向锁适合无竞争,轻量级锁通过自旋避免阻塞,重量级锁处理激烈竞争。锁释放后对象回归无锁状态。该机制在保证线程安全的同时,有效提升了同步性能。
2025-07-08 18:19:28
1478
原创 黑马点评:Redis消息队列【学习笔记】
当前使用的是JDK提供的阻塞队列,使用的是JVM的内存,如果不加以限制,在高并发的情况下,就会有无数的订单对象需要创建并放到阻塞队列,超出JVM内存限制,导致内存溢出,虽然我们这里给长度设置了上限,但是如果订单太多,就塞不进去了 --->内存限制1.如果服务突然宕机/重启,由于JVM内存没有持久化机制,内存里的订单信息丢失,后台没有订单数据,但用户已经下单付款了 --->数据不一致。2.某一线程从队列里取出下单任务,若此时发生事故,任务就无法执行,但此时队列里已经没有该订单任务了 --->任务丢失。
2025-04-16 18:12:04
666
原创 黑马点评:优惠券秒杀【学习笔记】
before 秒杀券库存:进行高并发访问:可以发现部分成功,部分失败,正常来说应该100成功、100失败,但是:且now 秒杀券库存:经测试,误删问题得到解决。
2025-04-14 17:18:54
983
原创 黑马点评:商户查询缓存【学习笔记】
由于使用布隆过滤器成本更高,且容易出现误判(基于某次请求信息而生成的hash值映射出来的0/1值可能恰好也是其他信息所映射的0/1值),多用于较为大型的项目,故这里采用缓存空对象来解决缓存穿透问题。实现思路:易发现:首次请求不存在的商铺id时,先去数据库中查询,没查到->存 id:空值 到redis中,第二次查询相同的id时,由于redis中已存入该id对应的信息(空值),故不再访问数据库,一定程度上解决了缓存穿透。
2025-04-12 22:55:49
459
原创 微服务01
--> RestTemplate+注册中心 实现了服务的远程调用,但是远程调用的代码太复杂了,so引入OpenFeign,其利用SpringMVC的相关注解来声明4个参数,然后基于动态代理帮我们生成远程调用的代码。--->在网路层面上通过http路径访问,使用Spring提供的RestTemplate。此时cart-service:如何知道每一个实例的地址?到底该调用哪个实例呢?--->若商品微服务被调用较多,为应对高并发,我们进行了多实例部署。依然在调用该怎么办?
2025-02-09 13:24:40
197
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
3