2024-07学习笔记

avatar
作者
筋斗云
阅读量:0

1.${}取值

在这些属性源中,命令行参数和JVM系统属性拥有最高的优先级,它们可以覆盖在Properties文件中定义的属性。而操作系统环境变量和Properties文件的优先级相对较低,但是Spring会根据配置的不同情况进行属性的合并和覆盖,最终将这些属性加载到Environment对象中供应用程序使用。

源码 

先用${}作为key去enviroment对象中取,取不到,就看是否包含冒号:

包含的话,就截取冒号前边的再去取

还是取不到,就取冒号后边的默认值

2.循环依赖

 A引用了B,B引用了C,C又引用了A,这种情况会造成循环依赖

比如A引用了B,B又引用了A

加载的时候,如果先加载A,然后会去加载被A引用的bean,就会加载B

那加载B的时候,也会加载被B引用的B,就会加载A

然后又回到了A,A中又去加载B,然后B中又加载A,这就死循环了,没完没了

allowCircularReferences 是一个Spring的配置属性,默认为false。当设置为true时,Spring容器允许循环依赖的发生,这时就会启用三级缓存来解决循环依赖问题。

allowCircularReferences 属性为true时,Spring容器才会启用三级缓存来管理循环依赖的情况。这样可以确保Bean的初始化顺序和状态管理正确,避免循环依赖导致的初始化问题或死锁。
综上所述,三级缓存在 allowCircularReferences 为true时才发挥作用,用于解决Spring应用程序中复杂的循环依赖问题。 

 3.@PostConstruct和@PreDestroy

@PostConstruct实例初始化的时候执行

@PreDestroy程序正常退出的时候执行,如果是OOM这种异常情况,就来不及执行

4.自连接思想

比如下边算出连着的三个数字

就是把一个表看成三个表,分别建立连接

a表和b表id差1,且值相等

b表和c表id差2,且值相等

下边这个一样,算两个连续的,那就是看成两个表,a和b的Id差1,然后a和b的值相等 

5.ifnull和coalesce

 

6.group_concat

我知道group_concat可以对group by分组函数中的字段进行拼接

但是我刚知道它里边还可以进行distiinct和排序

如图

 

 7.union all中最后一个order by

 8.substring

substring只写第一个数字不写第二个数字,意思就是从这个数字截取到最后为止

9. 把val等于某个值的,从链表中移除

用递归方法,比较简洁

 10.线程池工作方式

任务进来,先去找核心线程,如果核心线程数已经达到最大,就去排队,如果队列已经满了,才会去找空闲线程

最大线程数=核心线程数+非核心线程数,与队列数无关

最大线程数定义了线程池能够同时存在的最大线程数量,包括了核心线程数在内,但可以根据负载情况动态增加非核心线程。

 

1.FixThreadPool 

 

2.CacheThreadPool 

3.jmm 

jmm java memory modle  java内存模型

4.因为from区到to区是复制算法,所以二者1:1

11.锁

1.锁的膨胀

当一把锁第一次被线程持有的时候 偏向锁

如果这个线程再次加锁还是偏向锁

如果别的线程来加锁(交替执行)轻量锁

如果是资源竞争 重量锁

 

2.ReentrantLock

ReentrantLock 的公平锁和 AbstractQueuedSynchronizer (AQS) 之间有密切的关联,因为 ReentrantLock 的实现正是基于 AQS 框架。

3.实例锁和class锁不一样

所以两者没有资源竞争

 

但是静态方法的锁和class的锁一样,都是锁class 

 

4.synchronized是可重入锁

 递归方法上使用 synchronized 通常不会导致死锁,因为Java中的 synchronized 是可重入的锁。这意味着同一个线程可以多次获得同一个锁,而不会被自己已经持有的锁所阻塞。

5.实例的同步方法和非同步方法可以一起调用,不互相阻塞

6.锁是对象头的一个标识,锁不同的对象,就不会发生竞争

 

7.为什么不要在代码中写sout

 

8.volatile不保证原子性

 

9.cas

 cas是cpu级别的指令,快

java中的AtomicInteger,AtomicBoolean就是利用CAS达到线程安全的

12.一段模拟多线程并发的代码

4个任务并发执行

latch减到0的时候,await的阻塞解除

 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!