随笔分类 - Java
摘要:### ApplicationContext 和 BeanFactory 的区别 BeanFactory是Spring中非常核心的组件,表示Bean工厂可以生成Bean,维护Bean,而ApplicationContext继承了BeanFactory,所以ApplicationContext拥有Be
阅读全文
摘要:### ctl (control) 在Java中,线程池(Thread Pool)是一种用于管理和复用线程的机制。在Java的线程池实现中,ctl是一个表示线程池状态和线程数量的变量。 具体来说,ctl是一个32位的整数,其中高3位表示线程池的状态,低29位表示线程池中的线程数量。这样的设计可以同时
阅读全文
摘要:### 懒汉式 懒汉式单例模式在第一次调用的时候进行实例化。 #### 1. 适用于单线程环境(不推荐) 此方式在单线程的时候工作正常,但在多线程的情况下就有问题了。如果两个线程同时运行到判断instance是否为null的if语句,并且instance的确没有被创建时,那么两个线程都会创建一个实例
阅读全文
摘要:Java默认有2个线程:`main` + `GC` 并发:CPU单核,交替执行 并行:CPU多核,多个线程可以同时执行(提高使用效率:线程池) ```java Runtime.getRuntime().availableProcessors() //当前CPU可用核数 ``` ### 多线程实现方式
阅读全文
摘要:| Synchronized | ReentrantLock | | : : | : : | | Java中的一个关键字 | JDK提供的一个类 | | 自动加锁与释放锁 | 需要手动加锁与释放锁 | | JVM层面的锁 | API层面的锁 | | 非公平锁 | 公平锁或非公平锁 | | 锁的是对象
阅读全文
摘要:#### SOLID原则是面向对象设计和编程中的一组基本原则,其中SOLID分别是以下五个原则的首字母缩写: - 单一职责原则(Single Responsibility Principle,SRP)。一个类或者模块只应该有一个单一的责任。这个原则告诉我们,一个类应该只负责一项功能,不要试图把太多的
阅读全文
摘要:虚拟机栈 : Java 虚拟机栈是线程私有的数据区,Java 虚拟机栈的生命周期与线程相同,虚拟机栈也是局部变量的存储位置。方法在执行过程中,会在虚拟机栈种创建一个 栈帧(stack frame) 本地方法栈: 本地方法栈也是线程私有的数据区,本地方法栈存储的区域主要是 Java 中使用 nativ
阅读全文
摘要:### HashMap 和 HashTable 的区别 | HashMap | HashTable | | : : | : : | | 线程不安全 | 线程安全 | | 继承 AbstractMap | 继承 Dictionary | | 允许空的 key 和 value 值 | 不允许空的 key
阅读全文
摘要:String 代表的是 Java 中的字符串 , String 类比较特殊,它整个类都是被 final 修饰的,也就是说,String 不能被任何类继承,任何 修改 String 字符串的⽅法都是创建了⼀个新的字符串(保证了线程安全性)。 不可变对象不是真的不可变,可以通过 反射 来对其内部的属性和
阅读全文
摘要:### JDK, JRE, JVM JDK(Java Development Kit) - 开发工具 - 基本类库 - javac 编译 - javap 反编译 - javadoc - 运行环境 JRE(Java Runtime Environment) - JVM(Java Virtual Mec
阅读全文