摘要: 自定义context:component-scan标签的解析流程 除了ComponentScan和Spring自己添加注册的BeanDefinition,其他所有的BeanDefinition都是基于XML解析流程。 而在解析component-scan标签时,使用了ComponentScanBea 阅读全文
posted @ 2024-06-15 22:04 vello 阅读(24) 评论(0) 推荐(0)
摘要: 1.将配置文件解析成Document对象 2.解析Document对象的每个Element标签 3.将Element标签解析成BeanDefinition对象 4.最后将BeanDefinition对象保存到DefaultLisableBeanFactory的BeanDefinitionNames和 阅读全文
posted @ 2024-06-15 22:00 vello 阅读(9) 评论(0) 推荐(0)
摘要: 1.AbstractApplicationContext.obtainBeanFactory方法中,模版调用 2.AbstractRefreshableApplicationContex.refreshBeanFactory 该方法中会创建 DefaultListableBeanFactory用于收 阅读全文
posted @ 2024-06-15 21:58 vello 阅读(28) 评论(0) 推荐(0)
摘要: 1.id 再Spring容器中作为Bean的唯一标识 2.name 用于为id属性创建一个或多个别名,用空格、逗号分开 3.class Bean的类名,全限定名 primary 多个相同Bean再容器中的优先级 5.parent 标注该Bean的父类Bean,继承父类Bean的所有属性 6.abst 阅读全文
posted @ 2024-06-15 21:08 vello 阅读(43) 评论(0) 推荐(0)
摘要: Spring的核心流程是读取配置文件,解析并封装成BeanDefinition,并将所有的BeanDefinition收集到一个叫DefaultListableBeanFactory的容器中。 一、setConfigLocation 设置配置路径方便后续对其进行解析 二、refresh方法,解析并封 阅读全文
posted @ 2024-06-15 20:56 vello 阅读(73) 评论(0) 推荐(0)
摘要: Spring有四种加载方式 一、ClassPathXMLApplicationContext classPath中的xml启动方式 二、AnnotationConfigurationApplicationContext 注解扫描的启动方式 三、FileSystemXMLApplicationCont 阅读全文
posted @ 2024-06-15 19:53 vello 阅读(36) 评论(0) 推荐(0)
摘要: 自旋锁 锁的四种状态 无所状态、偏向锁状态、轻量级锁状态、重量级锁状态。 偏向锁定义 大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,为了让线程获得锁的代价更低而引入了偏向锁。无竞争时不需要进行CAS操作来加锁和解锁。 轻量级锁 通过CAS操作来加锁和解锁 重量级锁 阅读全文
posted @ 2024-06-15 17:31 vello 阅读(21) 评论(0) 推荐(0)
摘要: Java 内存模型(JMM) 从抽象的角度来看,JMM 定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是 JMM 的一个抽象概念,并不真实 阅读全文
posted @ 2024-06-15 17:28 vello 阅读(17) 评论(0) 推荐(0)
摘要: 一、线程封闭 栈封闭,也就是局部变量表,每个线程单独拷贝一份到线程内存中 线程封闭,需要开发者自己实现,不靠谱 二、无状态的类 无任何成员变量的类,这种类一定是线程安全的。 三、让类不可变 1.加final关键字 2.不提供任何修改成员变量的入口。 3.volatile 不能保证线程安全,只能保证可 阅读全文
posted @ 2024-06-15 17:14 vello 阅读(18) 评论(0) 推荐(0)
摘要: 使用线程池带来的三个好处 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + 阅读全文
posted @ 2024-06-15 17:07 vello 阅读(55) 评论(0) 推荐(0)
摘要: 一、集合 Vector CopyOnWriteArrayList 和 CopyOnWriteArraySet ConcurrentSkipListSet 有序 Set 二、Map HashTable ConcurrentHashMap ConcurrentSkipListMap 有序 Map 三、队 阅读全文
posted @ 2024-06-15 17:00 vello 阅读(15) 评论(0) 推荐(0)
摘要: AtomicInteger AtomicIntegerArray AtomicReference AtomicStampedReference AtomicMarkableReference AtomicIntegerFieldUpdater AtomicLongFieldUpdater Atomi 阅读全文
posted @ 2024-06-15 16:44 vello 阅读(11) 评论(0) 推荐(0)
摘要: 假定有两个操作 A 和 B,如果从执行 A 的线程来看,当另一个线程执行 B 时, 要么将 B 全部执行完,要么完全不执行 B,那么 A 和 B 对彼此来说是原子的。 synchronized 关键字是基于阻塞的锁机制,也就是说当一个线程拥有锁的时候, 访问同一资源的其它线程需要等待,直到该线程释放 阅读全文
posted @ 2024-06-15 16:43 vello 阅读(21) 评论(0) 推荐(0)
摘要: 一、Fork-Join 二、CountDownLatch 三、CyclicBarrier 四、Semaphore 五、Exchange 六、Callable、Future和FutureTask 阅读全文
posted @ 2024-06-15 16:34 vello 阅读(8) 评论(0) 推荐(0)
摘要: 本质原因是ThreadLocalMap中的ThreadLocal对象是一个软引用类型,弱引用类型在在触发gc时被回收,也就是将ThreadLocalMap中的key回收了,但是threadLocalMap中的value未被回收,对应的ThreadLocalMap中的entry只有value,而没有k 阅读全文
posted @ 2024-06-15 16:30 vello 阅读(19) 评论(0) 推荐(0)
摘要: synchronized内置锁 对象锁和类锁: 对象锁是用于对象实例方法,或者一个对象实例上的,类锁是用于类的静态方法或者一个类的 class 对象上的。我们知道,类的对象实例可以有很多个,但是每个类只有一个 class 对象,所以不同对象实例的对象锁是互不干扰的,但是每个类只有一个类锁。 但是有一 阅读全文
posted @ 2024-06-15 16:23 vello 阅读(9) 评论(0) 推荐(0)
摘要: Thread 和 Runnable 的区别 Thread 才是 Java 里对线程的唯一抽象,Runnable 只是对任务(业务逻辑)的抽象。 Thread 可以接受任意一个 Runnable 的实例并执行 启动线程的方式有: 1、X extends Thread;,然后 X.start 2、X i 阅读全文
posted @ 2024-06-15 16:14 vello 阅读(21) 评论(0) 推荐(0)
摘要: 高并发编程的意义、好处和注意事项 由于多核多线程的 CPU 的诞生,多线程、高并发的编程越来越受重视和关注。 多线程可以给程序带来如下好处。 (1)充分利用 CPU 的资源 从上面的 CPU 的介绍,可以看的出来,现在市面上没有 CPU 的内核不使用多线程并发机制的,特别是服务器还不止一个 CPU, 阅读全文
posted @ 2024-06-15 15:35 vello 阅读(28) 评论(0) 推荐(0)
摘要: 并行 我们举个例子,如果有条高速公路 A 上面并排有 8 条车道,那么最大的并行车辆就是 8 辆,此条高速公路 A 同时并排行走的车辆小于等于 8 辆的时候,车辆就可以并行运行。 CPU 也是这个原理,一个 CPU 相当于一个高速公路 A,核心数或者线程数就相当于并排可以通行的车道;而多个 CPU 阅读全文
posted @ 2024-06-15 15:31 vello 阅读(21) 评论(0) 推荐(0)
摘要: CPU 时间片轮转机制 我们平时在开发的时候,感觉并没有受 cpu 核心数的限制,想启动线程就启动线程,哪怕是在单核 CPU 上,为什么?这是因为操作系统提供了一种 CPU 时间片轮转机制。 时间片轮转调度是一种最古老、最简单、最公平且使用最广的算法,又称 RR调度。每个进程被分配一个时间段,称作它 阅读全文
posted @ 2024-06-15 15:26 vello 阅读(311) 评论(0) 推荐(0)