摘要: public class Singleton { // 添加关键词 private volatile static Singleton instance; public Singleton getInstance() { if (instance == null) { synchronized (S 阅读全文
posted @ 2023-01-20 10:23 京木木 阅读(27) 评论(0) 推荐(0)
摘要: 从上图中可以看到AppClassLoader,ExtCLassLoader并不是真正的父子关系,而是都位于Launcher类里面的静态内部类,他们都分别继承了URLClassLoader 首先从上图中可以看出Launcher的构造器首先先创建了ExtClassLoader,那具体怎么创建的呢 进入g 阅读全文
posted @ 2023-01-17 10:25 京木木 阅读(550) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2023-01-16 10:47 京木木 阅读(34) 评论(0) 推荐(0)
摘要: 静态内部类是用static修饰的内部类。在jvm层面中,当外部类加载时并不会加载静态内部类。所以静态内部类可以实现懒汉单例模式并保证其线程安全 public class Singleton { private Singleton() { } private static class Singleto 阅读全文
posted @ 2023-01-12 09:52 京木木 阅读(773) 评论(0) 推荐(0)
摘要: 可以在security的配置文件中加一个PasswordEncoder的匿名类 阅读全文
posted @ 2022-11-17 22:04 京木木 阅读(737) 评论(0) 推荐(0)
摘要: nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。 nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohu 阅读全文
posted @ 2022-11-17 21:23 京木木 阅读(59) 评论(0) 推荐(0)
摘要: trylock就是尝试加锁,为非阻塞加锁,如果加上就返回true如果失败就返回false 这样可以通过trylock写一个自旋锁,写一个while语句尝试给某个线程加锁,直到加上之后返回true就结束自旋, lock为阻塞加锁,直到其他线程释放锁之后才结束阻塞 阅读全文
posted @ 2022-10-21 19:47 京木木 阅读(153) 评论(0) 推荐(0)
摘要: countDOwnLatch:当线程1调用await方法那么就会阻塞,线程2,线程3,线程4分别调用countDown方法,当线程4调用countDown方法那么阻塞的队列不管有多少个都会依此唤醒,并不会像AQS中的当一把锁释放时只会唤醒第一个线程所对应的节点,不论公平锁还是非公平锁,例如Reetr 阅读全文
posted @ 2022-10-21 19:37 京木木 阅读(39) 评论(0) 推荐(0)
摘要: CopyOnWriteArrayList是为了增加在写操作的时候的读操作的性能 因为并发问题主要是写操作,当一个线程进行写操作时,会使用Reetranlock加锁,然后会复制一份原数组在新数组上进行添加数据的操作 此时如果还有一个线程进行读操作那么依然不会因为加锁而阻塞,这样可以最大保证读操作性能 阅读全文
posted @ 2022-10-21 18:23 京木木 阅读(32) 评论(0) 推荐(0)
摘要: 间隙锁:其他事务没法在范围所包含的所有行记录以及行记录所在的原表所有间隙都会加上锁间隙锁是在可重复读隔离级别下生效 临建锁:行锁与间隙锁的组合 无索引的行锁会升级为表锁 锁主要是加在索引上的,如果字段没有索引则会变成表锁 阅读全文
posted @ 2022-10-20 18:32 京木木 阅读(81) 评论(0) 推荐(0)