- 博客(7)
- 收藏
- 关注
原创 雪花算法详解
Snowflake 是 Twitter 开源的分布式 ID 生成算法。Snowflake 由 64 bit 的二进制数字组成,雪花算法是一种分布式主键ID生成的解决方案。雪花算法生成后是一个 64bit 的 long 型的数值,组成部分引入了时间戳,基本保持了自增。
2025-07-14 11:44:45
609
原创 CAS自旋锁与锁升级
自旋锁,作为一种轻量级的同步机制,在并发编程中占据着不可或缺的地位。CAS是实现自旋锁的基础,CAS利用CPU指令保证了操作的原子性,以达到锁的效果,至于自旋锁---字面意思自己旋转。是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,当线程发现锁被占用时,会不断循环判断锁的状态,直到获取。这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU。这种非阻塞的获取方式,使得自旋锁在处理高并发场景时能够展现出卓越的性能。CAS是乐观锁的一种实现。
2025-07-09 17:33:48
940
原创 openFign详解
定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口。Feign是RPC框架中的一种,是Netflix开发的声明式、模板化的HTTP客户端,底层依然是走的HTTP调用,但表现形式是。指定的是调用服务的微服务名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现。工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码。
2025-07-08 17:02:15
398
原创 数据库事务
具体来说,在一个事务内执行相同的查询两次,可能会看到不同的结果集,因为在这两次查询之间,另一个事务插入或删除了一些行。但是,由于其他事务可以在当前事务期间更新数据,所以可能会出现不可重复读的情况,即同一查询在不同时间点执行可能会得到不同的结果。隔离性要求事务彼此之间是独立的,在并发执行时不会相互影响。这是最宽松的隔离级别,在这个级别下,事务可以读取其他事务尚未提交的数据(脏读)。定义:不可重复读是指在一个事务内两次读取同一行数据可能会得到不同的结果,因为在这两次读取之间,另一个事务对该行进行了更新并提交。
2025-06-24 11:49:31
509
原创 ThreadLocal详解使用
ThreadLocal叫做线程本地变量,ThreadLocal中填充的变量属于当前线程私有,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。ThreadLocal是java.lang下面的一个类,是用来解决java多线程程序中并发问题的一种途径;通过为每一个线程创建一份共享变量的副本来保证各个线程之间的变量的访问和修改互相不影响;优点:不存在线程不安全问题,也不会影响程序的执行性能。
2025-06-16 21:01:54
568
原创 Redis缓存
在高并发场景下,当非常热门的缓存键过期时,大量请求无法访问该键,进而直接访问数据库,从而给数据库带来巨大压力,甚至导致数据库宕机。解决方案:(1)热点数据预加载在缓存键失效之前,提前异步加载热点数据到缓存中,确保缓存不会在关键时刻失效。可以创建定时任务,每次判断是否为热点数据,如果是就读取后添加到缓存。对于已知的热点数据,可以在系统启动或业务高峰前提前加载进缓存。(2)互斥锁解决缓存击穿取值时首先到缓存中判断,若缓存中存在则直接获取。缓存中不存在时,尝试获取分布式锁。
2025-06-10 20:31:03
1070
原创 Kafka详解
副本,同一分区的不同副本保存的是相同的消息,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,且 Kafka 仍然能够继续工作,Kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,一个 leader 和若干个 follower;每个分区的多个副本中的"从副本",负责实时从 Leader 中同步数据,保持和 Leader 数据的同步。一个逻辑上的概念,包含很多 Partition,同一个 Topic 下的 Partiton 的消息内容是不相同的;
2025-06-07 10:32:42
1275
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人