- 博客(13)
- 收藏
- 关注
原创 HTTP 与 HTTPS详解
是 W3C/IEETF 定义的应用层协议,用于分布式超媒体信息系统。它设计之初就是为了传输 HTML,但后来演变成了几乎所有 Web 通信的载体(REST API、GraphQL、文件上传、实时通信都基于它或它的变体)。客户端 - 服务器模型:主动方永远是客户端,服务器被动响应请求 - 响应(Request-Response):一次请求对应一次响应无状态(Stateless):协议本身不记得你上一次说了什么文本(HTTP/1.x):人可读,便于调试元数据驱动。
2026-09-14 19:59:40
235
原创 数据库热门知识详解
的修改,如果对应的数据页不在Buffer Pool中,不立即从磁盘读取该页,而是将修改操作记录到Change Buffer。因为InnoDB的数据是按主键聚簇的,数据可能因页分裂(Page Split)而移动位置,行地址会变,但主键不变。InnoDB监控到某些索引页被频繁访问时,自动在Buffer Pool中为这些页建立哈希索引,使等值查询从B+树查找变为O(1)哈希查找。不需要人工干预,也无法手动创建。先写日志,再写数据页。联合索引(a,b,c)等价于先按a排序,a相同按b排序,b相同按c排序。
2026-09-13 23:47:27
68
原创 OpenFeign详解
OpenFeign 的底层原理可以概括为:通过 JDK 动态代理,将带有注解的接口方法调用,动态地转换为 HTTP 请求,并交由底层 HTTP 客户端执行。其本质是 “动态代理 + 七大核心组件” 的协作。OpenFeign 是一个声明式的 Web 服务客户端,它的目标是让远程调用像调用本地方法一样简单。其核心思想是:你只需要定义一个 Java 接口并加上注解,OpenFeign 就能在运行时为你生成一个代理对象,这个代理对象会负责构造并发送 HTTP 请求,处理响应,最后将结果返回给你。整条链路分两个阶段
2026-09-11 16:32:54
227
原创 AotmicInteger原子类详解
AtomicInteger 是 Java 提供的一个用于处理整数类型(int)的原子操作类,位于 java.util.concurrent.atomic 包中。它的主要作用是保证在多线程环境下对整数的操作是线程安全且高效的。通过 AtomicInteger,你可以避免使用传统的 synchronized 关键字来实现线程安全,从而提高程序的性能。
2025-08-14 17:20:21
423
原创 雪花算法详解
Snowflake 是 Twitter 开源的分布式 ID 生成算法。Snowflake 由 64 bit 的二进制数字组成,雪花算法是一种分布式主键ID生成的解决方案。雪花算法生成后是一个 64bit 的 long 型的数值,组成部分引入了时间戳,基本保持了自增。
2025-07-14 11:44:45
918
原创 CAS自旋锁与锁升级
自旋锁,作为一种轻量级的同步机制,在并发编程中占据着不可或缺的地位。CAS是实现自旋锁的基础,CAS利用CPU指令保证了操作的原子性,以达到锁的效果,至于自旋锁---字面意思自己旋转。是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,当线程发现锁被占用时,会不断循环判断锁的状态,直到获取。这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU。这种非阻塞的获取方式,使得自旋锁在处理高并发场景时能够展现出卓越的性能。CAS是乐观锁的一种实现。
2025-07-09 17:33:48
1081
原创 openFign详解
定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口。Feign是RPC框架中的一种,是Netflix开发的声明式、模板化的HTTP客户端,底层依然是走的HTTP调用,但表现形式是。指定的是调用服务的微服务名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现。工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码。
2025-07-08 17:02:15
665
原创 数据库事务
具体来说,在一个事务内执行相同的查询两次,可能会看到不同的结果集,因为在这两次查询之间,另一个事务插入或删除了一些行。但是,由于其他事务可以在当前事务期间更新数据,所以可能会出现不可重复读的情况,即同一查询在不同时间点执行可能会得到不同的结果。隔离性要求事务彼此之间是独立的,在并发执行时不会相互影响。这是最宽松的隔离级别,在这个级别下,事务可以读取其他事务尚未提交的数据(脏读)。定义:不可重复读是指在一个事务内两次读取同一行数据可能会得到不同的结果,因为在这两次读取之间,另一个事务对该行进行了更新并提交。
2025-06-24 11:49:31
604
原创 ThreadLocal详解使用
ThreadLocal叫做线程本地变量,ThreadLocal中填充的变量属于当前线程私有,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。ThreadLocal是java.lang下面的一个类,是用来解决java多线程程序中并发问题的一种途径;通过为每一个线程创建一份共享变量的副本来保证各个线程之间的变量的访问和修改互相不影响;优点:不存在线程不安全问题,也不会影响程序的执行性能。
2025-06-16 21:01:54
653
原创 Redis缓存
在高并发场景下,当非常热门的缓存键过期时,大量请求无法访问该键,进而直接访问数据库,从而给数据库带来巨大压力,甚至导致数据库宕机。解决方案:(1)热点数据预加载在缓存键失效之前,提前异步加载热点数据到缓存中,确保缓存不会在关键时刻失效。可以创建定时任务,每次判断是否为热点数据,如果是就读取后添加到缓存。对于已知的热点数据,可以在系统启动或业务高峰前提前加载进缓存。(2)互斥锁解决缓存击穿取值时首先到缓存中判断,若缓存中存在则直接获取。缓存中不存在时,尝试获取分布式锁。
2025-06-10 20:31:03
1198
原创 Kafka详解
副本,同一分区的不同副本保存的是相同的消息,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,且 Kafka 仍然能够继续工作,Kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,一个 leader 和若干个 follower;每个分区的多个副本中的"从副本",负责实时从 Leader 中同步数据,保持和 Leader 数据的同步。一个逻辑上的概念,包含很多 Partition,同一个 Topic 下的 Partiton 的消息内容是不相同的;
2025-06-07 10:32:42
1788
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅