- 博客(34)
- 收藏
- 关注
原创 Spring Cloud 微服务重点知识小结
服务注册:Consul,是HashiCorp 公司开发的独立第三方中间件。服务发现:Eureka、Nacos(阿里)服务调用:OpenFiegn负载均衡:Ribbon 已停更,Spring Cloud LoadBalancer 是官方替代服务熔断、限流、降级:Hystrix停止维护,Sentinel(阿里)网关:Spring Cloud GatewayEureka 保证服务能注册、能发现,哪怕数据不准。设计目标:AP 系统(高可用优先)核心原理:客户端拉取 + 心跳续约 + 最终一致性① 服务注册(Regi
2026-03-21 17:46:18
541
原创 Spring核心原理小结
IOC:对象交给 Spring 管理,不用自己 newDI:Spring 自动给对象注入依赖AOP:不改代码,统一增强方法容器:用 Map 存 Bean,高效管理底层:反射 + 动态代理。
2026-03-19 11:40:52
372
原创 ThreadLocal 原理 & 内存泄漏
ThreadLocal 是线程本地变量,作用是为每个线程独立创建一个变量副本,线程之间互不干扰,实现线程封闭,解决多线程下变量共享的并发安全问题。无用对象(不再使用的对象)持续占用内存,GC 无法回收,导致内存浪费甚至 OOM。key 被回收了,但 value 还活着,且永远用不到、也收不回 → 内存泄漏4.本质是线程自带的 Map,实现线程间变量隔离key 弱引用被回收 + value 强引用存活 + 线程不销毁手动调用 remove (),最安全、最标准的写法。
2026-03-17 18:19:03
324
原创 Java 服务最常见的线上性能故障
3.1.2. 外部接口调用慢(HTTP/Dubbo)3.1.1. 慢 SQL / DB 慢(最常见)无泄漏 → 调大内存 + 优化代码。jstat 看 FGC 是否频繁。异步任务太多 → 用 MQ 削峰。3.1.3. Redis 问题。有泄漏 → MAT 分析。(几十万、上百万条)
2026-03-17 18:00:11
353
原创 CPU 高、内存泄漏、GC 频繁排查思路
CPU高、内存泄露、GC频繁是Java 服务最常见的线上性能故障,且高度关联:内存泄漏 → 堆内存不足 → GC 频繁 → CPU 飙升。
2026-03-17 11:42:46
358
原创 Java类加载机制
(Parent Delegation Model),该模型规定了类加载器之间的层次关系和类加载顺序。简单理解:把 “类名 / 方法名 / 字段名” 变成真正的内存地址。,不按照默认的向上委托逻辑执行,直接自己加载类,就打破了双亲委派。,最终变成可以直接使用的 Java 类型,这个全过程就是。:本地文件、JAR、网络、动态生成等。:保证基础类统一,不会出现多个版本冲突。:保证一个类在 JVM 中只加载一次。JVM 不直接加载类,而是交给。的方法,自定义加载器时重写它。类加载器的顺序是从上到下。
2026-03-17 10:33:43
371
原创 JDK并发灵魂AQS知识小结
AQS全称:AbstractQueuedSynchronizer(抽象队列同步器)定位:JDK 提供的底层同步框架,是锁和同步器的基础模板。作用:统一封装了线程排队、阻塞、唤醒、状态管理的逻辑,让开发者实现锁时,只需要关心 “能不能加锁”,不用管排队和阻塞。AQS = 一个同步状态 state + 一个 CLH 同步队列 + 一套线程阻塞 / 唤醒机制同一时刻,只有一个线程能获取同步状态,其他线程必须阻塞排队。同一时刻,可以有多个线程同时获取同步状态。
2026-03-12 12:00:32
391
原创 索引的使用及其原理
各种不同类型的数据库都有索引,且支持的索引类型不同。那么这些索引有什么不同之处,索引的原理是什么,怎样利用索引实现最优的查询......
2026-03-06 11:06:08
305
原创 长SQL、慢SQL怎样进行优化
长SQL:通常指语句结构复杂、代码行数多、嵌套层级深的SQL语句。慢SQL:通常指执行耗时过长、影响系统响应速度的SQL语句。“长SQL”是代码的表象,“慢SQL”是系统的症状。真正的性能优化,不是追求SQL越短越好,而是要理解数据流动路径、掌握执行成本、尊重数据库引擎的运行逻辑。每日自动生成慢查询报告开发人员上线前必须通过执行计划审查设立SQL性能红线,超时语句自动阻断。
2026-03-02 11:39:26
545
原创 微服务架构常用技术整理
微服务架构技术的核心是将应用拆分为一组松耦合、可独立部署的小型服务,每个服务围绕特定业务能力构建,通过轻量级通信机制交互。其关键技术栈有哪些,各自的适用场景有哪些,应该如何取舍?
2026-01-29 16:07:13
844
原创 开发工作中哪些需要在Apollo进行配置
日常开发工作中,哪些信息是需要在Apollo配置,哪些配置在yml文件,哪些需要定义常量/枚举进行配置?
2026-01-20 11:26:13
705
原创 查询同一用户最新的一条交易记录
先说下遇到的业务场景:需要根据用户号获取该用户交易时间最新的一条交易记录。那么实现方式有几种,每种之间有什么区别呢?3、窗口函数:适用于支持窗口函数的数据库(如PostgreSQL、SQL Server),效率较高。2、通过该条交易记录的id关联到支付数据,筛选出支付成功的数据。1、子查询:适用于大多数数据库,但可能在大数据量时效率较低。2、连接表:适用于所有数据库,但可能在大数据量时效率较低。1、查询每个用户的最新一条有效交易记录。
2026-01-13 16:44:57
279
原创 集合-算法
java集合List、Set、Map和栈、队列、树、图之间有什么关系?是不是List、Set、Map这些的底层是用具体的数据结构实现的?
2026-01-07 18:17:32
158
原创 关于Java里Function的初体验
Java.util.Function包中的核心函数式接口,由Java8引入,用于表示接受一个参数并产生结果。包含抽象方法该方法R。
2026-01-05 12:29:40
896
原创 前后端校验,如何分工
那实际生成的配置信息应该是商品名称a,商品名称b、管理人名称aa、价格aa1,这里就需要去除重复信息商品名称a,像这种复杂信息 的校验,就应该是后端来完成。比如,用户的输入校验,哪些是前端需要做的,哪些是后端需要做的。配置解析参数时,需要根据商品的名称、管理人名称、价格,确定该商品是否符合上架要求,但是要求用户在配置时不能出现相同的商品名称。现在,待入库的配置信息已经组装成list了,需要对list中的重复信息做处理,具体代码如下。检查返回的数据中是否包含敏感信息(如密码、私钥),避免前端直接处理或存储。
2026-01-04 17:41:00
1022
原创 Java里的比较、去重、排序
需要注意的是在Java中重写equals()方法时必须同时重写hashCode()方法,核心原因是为了维护两者之间的契约关系,确保对象在哈希集合(如HashMap、HashSet)中能够被正确存储和检索。由于是列表的去重,所以理所当然的想到了Set(无序、不允许存储重复元素)、List(有序、允许存储重复元素),即使用这两种集合的特性进行去重操作。,使用equals方法,不建议使用 == , 因为 == 有一定的局限性,对于Integer等包装类,Java 5引入了自动装箱机制。
2025-12-31 11:21:15
400
原创 切面、拦截器、过滤器的那些事
当请求到达Struts 2的ServletDispatcher时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。处理完成后,它会交给下一个过滤器处理,这样,客户的请求在过滤链里逐个处理,直到请求发送到目标为止。在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
2025-12-12 16:30:20
380
原创 系统QPS提高了,应该怎么办?
1、架构调整:服务架构是否需要调整(是否需要增加服务器)、数据库是否满足需求(是否需要做读写库分离、表结构的水平拆分或者垂直拆分)、中间件等是否满足需求(Redis、Dubbo的架构是否需要做调整)2、缓存策略3、熔断机制。
2025-09-23 16:20:44
220
原创 HashMap为什么是线程不安全的?
最近在准备换工作,复习到ConcurrentHashMap相关知识。面试的时候面试官问道:为什么HashMap是线程不安全的。当时回答的是因为HashMap使用的是synchronized关键字,而ConcurrentHashMap使用的是CAS乐观锁。但是本质上并没有回答面试官的问题,因此特意写此文章,作为记录。这里着重写HashMap为什么不是线程安全的。下面开始正文。。。HashMap的非线程安全性源于其,在并发操作中等问题。
2025-09-23 16:01:35
215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅