06 2025 档案

摘要:问题:线程池是如何知道一个线程的任务已经执行完成了? 1、线程池中的工作线程去执行任务的run方法,当run方法结束,那这个任务就结束了。 2、通过isTerminated方法去判断线程池的运行状态,可以循环去判断isTerminated()方法的返回值,来判断线程池所有任务是否已经执行完成;需要先 阅读全文
posted @ 2025-06-27 17:41 fanblog 阅读(72) 评论(0) 推荐(0)
摘要:接口变慢怎么排查 是单个接口慢,还是整个系统都慢,跟中毒似的,全系统都慢,大概率是公共组件或数据库出问题了。 比如:中间件炸了,主库顶不住了,限流策略忘了配 排查流程 1、先看普罗米修斯,响应时间、错误率、QPS波动情况,先判断是不是全局性的问题 2、使用skywalking这种链路追踪工具把整个链 阅读全文
posted @ 2025-06-27 17:20 fanblog 阅读(128) 评论(0) 推荐(0)
摘要:jvm垃圾回收算法 1、标记清除算法: 把死的全清了,毛病就是内存碎片多,内存不整齐; 特点:简单但有碎片 2、标记复制算法: 不在一块地方搅和,两块地方轮着用,今儿用这块,明儿用那块,把活的全挪到一块干净地,原来那块用过的全回收。缺点是浪费内存空间(一半地方未利用) 特点:高效但浪费空间 3、标记 阅读全文
posted @ 2025-06-27 16:52 fanblog 阅读(19) 评论(0) 推荐(0)
摘要:spring三级缓存流程图如下: 一开始,一二三级缓存都没有A,先造一个A实例,造一个原始版本,啥属性没有,啥代理没加,先放这备着; 填充属性,发现需要B对象;spring去“仓库”找B(一二三级缓存都没有B),说明B也没造出来; 开始造B,然后填充B的属性,发现依赖A; 在一二级缓存都没有找到A, 阅读全文
posted @ 2025-06-21 11:02 fanblog 阅读(52) 评论(0) 推荐(0)
摘要:一般的,如B继承A class A: pass class B(A): pass 那A能不能继承自己呢? 虽然有报警,但是运行不报错。 给A类添加一些属性 class A: def __init__(self): self.x = 10 pass class A(A): def __init__(s 阅读全文
posted @ 2025-06-14 21:07 fanblog 阅读(6) 评论(0) 推荐(0)
摘要:在java虚拟机(JVM)中,堆内存区域通常是线程共享的。这意味着所有的对象实例和数组都在这个共享的堆中分配,并可以被多个线程访问。 TLAB 为每个线程分配了一个独立的内存块,用于快速的分配对象。 在标准JVM实现总,堆通常是一个共享资源,以支持java应用程序的多线程特性。然而,通过TLAB和其 阅读全文
posted @ 2025-06-14 20:23 fanblog 阅读(8) 评论(0) 推荐(0)
摘要:凌晨系统挂了几分钟,幸好是凌晨零点,要是在大促就完了。促销活动经常在零点呀!!!! 排查监控与日志,但没找到任何有用的线索。 看起来进程重启了,凌晨流量没啥波动呀,也没有oom killer的日志,进程线程丢失了。 要不写个脚本监测cpu、堆内存使用率,当占用高时,自动jstack、jmap保存现场 阅读全文
posted @ 2025-06-14 16:23 fanblog 阅读(21) 评论(0) 推荐(0)
摘要:mysql数据库,存储引擎innodb,如下sql select count(*) from orders where DATE(created_at) = '2025-01-01'; created_at是建立了索引的,正常情况是希望走索引的 问题是这里用了date函数,导致innodb不能走cr 阅读全文
posted @ 2025-06-12 21:02 fanblog 阅读(10) 评论(0) 推荐(0)
摘要:springboot启动原理 首先需要有一个@SpringBootApplication注解的启动类。 这个注解本质上是由@EnableAutoConfiguration、@SpringBootConfiguration、@ComponentScan 这“三”个注解“连”起来构成。 @EnableA 阅读全文
posted @ 2025-06-11 17:22 fanblog 阅读(170) 评论(0) 推荐(0)
摘要:介绍5.x版本的spring,体内最核心的运行原理之一,IOC中bean的生命周期。 妥善管理和使用这些bean,bean会经历三个大的阶段:产生、使用、消耗,其中产生最为复杂 为了精准的了解对bean的要求,通过“加载bean定义” loadBeanDefinitions方法,用xml,注解扫描等 阅读全文
posted @ 2025-06-11 11:59 fanblog 阅读(46) 评论(0) 推荐(0)
摘要:springboot自动装配到底有什么作用?有什么帮助,和普通配置到底有什么区别? 为什么中间件都会用自动装配来集成?(nacos、redis..) 先看普通配置,要求必须有Student对象存在,学校对象才会创建 再创建个学生配置,里面注册了学生对象 结果,只有student对象创建,学校对象sc 阅读全文
posted @ 2025-06-11 10:01 fanblog 阅读(11) 评论(0) 推荐(0)
摘要:MVCC全称:Multi Version Concurrency Control 多版本并发控制 当对一个表,先进行写操作,再进行读操作,就要等写操作完了之后,才能进行读操作,这就是所谓的读写冲突。 要是在并发比较高的情况下,性能就会比较低下,而mvcc就是要解决这个问题,让读写不再冲突。 这里的读 阅读全文
posted @ 2025-06-10 17:02 fanblog 阅读(11) 评论(0) 推荐(0)
摘要:在函数中创建的线程池会被gc回收吗?创建一个线程池,给线程池执行一个任务,然后在main函数中调用了这个函数。在execute函数结束的时候,没有任何人去引用这个executor,那么这个线程池会被回收吗? import java.util.concurrent.ArrayBlockingQueue 阅读全文
posted @ 2025-06-09 20:55 fanblog 阅读(24) 评论(0) 推荐(0)
摘要:定义一个threadpool类 public class MyThreadPool { void execute(Runnable runnable) {} } 定义一个Main类 public class Main { public static void main(String[] args) 阅读全文
posted @ 2025-06-04 22:00 fanblog 阅读(14) 评论(0) 推荐(0)