自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 准备1234

一、用一个 volatile int state 来表示同步状态AQS 内部定义了一个名为 state 的成员变量,用来表示资源的当前状态。比如:在 ReentrantLock 中,state 表示锁的重入次数;这个 state 是整个同步机制的核心,所有线程都围绕它来竞争资源。线程之间可见性关键就在于:state 字段被声明为 volatile 类型。

2026-04-27 11:35:07 158

原创 一些基础问题

线程内独立副本,靠 ThreadLocalMap 实现Key 是弱引用,防内存泄漏(但不彻底)不 remove → 内存泄漏(尤其是线程池)Full GC 是指对整个堆(Young + Old)以及方法区(MetaSpace / PermGen)进行的垃圾回收。通常耗时较长,会引发“Stop-The-World”(STW),严重影响系统响应。STW:是 JVM 在执行某些垃圾回收(GC)操作时,暂停所有应用线程的现象。🔹 老年代满,最常见🔹 MetaSpace 不够也触发。

2026-04-16 10:49:26 344

原创 手写工厂模式

工厂模式(Factory Pattern)是一种创建型设计模式,用于封装对象的创建过程。它将对象的实例化逻辑从客户端代码中解耦出来,使得系统更灵活、可扩展。简单工厂(Simple Factory)—— 非标准 GOF 模式,但常用工厂方法(Factory Method)抽象工厂(Abstract Factory)本回答以最常用的简单工厂 + 工厂方法为例进行说明。项目内容工厂模式目的封装对象创建过程,解耦客户端与具体类核心思想“让子类或工厂决定实例化哪一个类”关键好处。

2026-04-01 16:33:04 327

原创 手写责任链

项目内容模式目的解耦请求发送者与接收者,支持动态处理流程关键角色Handler(抽象)、(具体)、RequestResponse核心机制next指针实现链式调用,每个节点决定是否处理或转发优势解耦、可扩展、灵活、符合单一职责适用场景审批流、过滤器链(如 Servlet Filter)、中间件处理等响应封装使用统一Response对象,支持成功/失败状态、消息、数据Spring Security 的过滤器链(Filter Chain)Netty 的 ChannelPipeline。

2026-04-01 16:06:10 335

原创 IO-必问

而虚拟线程是“每个连接一个线程”,只是线程很轻。特别是在Linux上,每个线程默认要2MB栈空间,一两万个连接就崩了。现在虚拟线程轻量得多,一个线程栈才几百字节,能轻松创建百万级。Netty加了一层计数检测,如果短时间内连续空轮询超过阈值,就重建Selector,规避问题。你映射一个10G文件,就算堆只有1G,也会成功,但可能导致系统swap甚至崩溃。,比如让Selector也能感知虚拟线程的阻塞,实现“异步但同步写法”。说实话,这三个词刚学Java的时候也背过,但真正搞懂是在做了几个高并发系统之后。

2026-03-27 16:56:19 342

原创 Nacos&Nginx

Nacos(读作 “nay-kos”)是阿里巴巴开源的一个👉 相当于把“注册中心”和“配置中心”一锅端了,微服务刚起来的时候首选。

2026-03-27 16:22:11 332

原创 Redis必问

这样做的好处是:既保留了 JWT 跨服务、无状态的优点,又能通过 Redis 主动控制登录状态,比如退出登录时删掉 key,就能立刻失效。如果没了,说明已退出,直接拒绝。比如半夜批量任务刷新缓存,TTL 全设成 2 小时,结果两小时后一起失效,数据库瞬间被打崩。比如有人恶意请求 id = -1 的用户信息,缓存没有,数据库也没有,每次都要打到 DB。,后来发现不是原子操作,可能 set 成功但 expire 失败,导致锁永远不释放。:比如锁设了30秒,但业务跑了40秒,另一个线程拿到锁,造成并发。

2026-03-26 17:30:09 327

原创 SpringBoot问答

做过一次公司内部的通用组件封装。

2026-03-26 16:34:45 403

原创 IO&并发

CAS 是一种无锁算法,通过 CPU 提供的原子指令(如cmpxchgif (内存地址V的值 == 预期值A) {将该地址的值更新为B;返回 true;} else {返回 false;Java 中由Unsafe类提供底层支持,就是基于此实现。// 底层使用 CAS 循环尝试。

2026-03-25 09:57:53 388

原创 MySQL-必问

先按 a 排序 → a 相同再按 b 排序 → b 相同再按 c 排序。⏱️ 效果:从 2s → 20ms,QPS 从 100 → 5000+✅ 因此同一个事务多次读取同一行,看到的是第一次读取时的快照版本。:确保 redo log 与 binlog 数据一致。📌 这是 MySQL 实现主从复制数据强一致性的基石。💬 高级提示:MySQL 8.0.29+ 支持。,可以在存储引擎层过滤 c 字段,减少回表次数。📌 注意:MySQL 5.7+ 支持。不仅锁住该值,还锁定。LIKE '%张三'

2026-03-23 15:16:23 401

原创 Spring-必问

创建编写MyService和添加使用控制装配逻辑。

2026-03-23 11:36:01 372

原创 Spring-IoC如何初始化

步骤做了什么关键产出1. 加载把 XML 文件读进内存2. 解析读<bean>标签内容提取出 id 和 class3. 生成封装成 BeanDefinition“造人说明书”4. 注册放进 beanDefinitionMap登记备案,等后续使用💡 最终:XML → BeanDefinition → 注册 → 创建对象 → 放入IoC容器 → 可被@Autowired使用。

2026-03-19 18:04:30 213

原创 聊天系统设计-面试

负责:TLS 终止(HTTPS → WS)IP 黑名单、限流(Sentinel)路由到具体的 IM 服务实例使用 Nginx 的ngx_stream模块支持 WebSocket 代理✅ 优势:轻量、高性能、成熟稳定。

2026-03-18 17:51:44 338

原创 短链系统设计-面试

Hash算法、发号器(Leaf/Snowflake)、缓存策略、跳转性能、防刷机制。

2026-03-18 11:11:13 327

原创 Redis

利用工厂模式, 工厂类中可以创建redis/zookeeper等template再通过继承Lock接口来实现redis的锁, 在其中重写lock/tryLock/unLock等方法最后只需要注入工厂类调用方法就行使用Lua脚本来减少网络开销。通过将获取锁和设置过期时间的操作合并为一个原子操作,保证线程安全性, 可以减少网络往返次数,提高性能。考虑到业务复杂性, 可能需要到重入问题, 所以通过Lock接口来解决。

2026-03-13 15:46:49 559

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除