深入类加载机制
深入类加载机制初识类加载过程使用某个类时,如果该类的class文件没有加载到内存时,则系统会通过以下三个步骤来对该类进行初始化 1.类的加载(Load) → 2.类的连接(Link) → 3.类的初始化(Initialize) 类的加载(Load):将类的class文件读入内存,并为之创建一个java.lang.Class的对象,此过程由类加载器(ClassLoader )完成 类的连接(Link):将类中的数据加载到各个内存区域中 类的初始化(Initialize):JVM负责对类进行初始化 深入类加载过程类的完整生命周期 :加载、连接(验证、准备、解析)、初始化、使用、卸载 加载 通过一个类的全限定名来获取其定义的二进制字节流 将这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构 在堆中生成一个代表这个类的Class对象,作为方法区中这些数据的访问入口 注意: 相对于类加载过程的其他阶段而言,加载阶段是可控性最强的阶段,因为程序员可以使用系统的类加载器加载,还可以使用自己的类加载器加载,在这里我们只需要知道类加载器的作用就是上面虚拟机需要完成的三件...
面向对象
面向对象概念 现实生活: 类:抽象的概念,把具有相同特征和操作的事物归为一类 先有实体,再有类的概念 代码世界: 类:抽象的概念,把具有相同属性和方法的对象归为一类 编写顺序:先有类,再创建对象 类的作用:类相当于一个模板,刻画出具有相同属性和方法的对象 类 类中只有属性和方法 属性也叫做全局变量,属性分为成员变量和静态变量 方法分为成员方法和静态方法 1234567891011121314151617public class 类名{ //属性也叫做全局变量,分为成员变量和静态变量 //成员变量 数据类型 变量名; //静态变量 static 数据类型 变量名; //方法分为成员方法和静态方法 //成员方法 访问修饰符 返回值类型 方法名([参数]){} //静态方法 访问修饰符 static 返回值类型 方法名([参数]){}} 对象 创建对象的语法:类名 对象名 = new 类名...
ArrayList底层源码
12345public abstract class AbstractList<E> extends AbstractCollection<E>implements List<E>{ //外部操作数:记录了数据量变化的次数 //对于数据的更新(添加、删除、清空),modCount就会++ protected transient int modCount = 0;// 2} 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485public class ArrayList<E> extends AbstractList<E> implements List<E>{ //默认容量 priv...
TreeMap底层源码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>{ //外置比较器 private final Comparator<? super K> comparator; //根节点 private transient Entry<K,V> root;//null //元素个数 private transient int size = 0;...
Iterator底层源码
123456public abstract class AbstractList<E>{ //外部操作数 //添加元素、删除元素时会++,因为添加、删除会导致集合中的元素个数发生改变 protected transient int modCount = 0;//4} 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103public class ArrayList<E> extends AbstractList<E> implements List<E>{ //数据容器 transient Object[] ele...
LinkList底层源码
123456public abstract class AbstractList<E> extendsAbstractCollection<E>implements List<E> { //外部操作数 protected transient int modCount = 0;//0}public abstract class AbstractSequentialList<E> extends AbstractList<E> {} 12345678910111213141516171819202122232425262728293031323334353637383940414243public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>{ //元素个数 transient int size = 0;//0 //第一个...
TreeSet底层源码
123456789101112131415161718192021222324252627public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>{ //外置比较器 private final Comparator<? super K> comparator; public TreeMap() { comparator = null; } public TreeMap(Comparator<? super K> comparator) { this.comparator = comparator; } //key - new Student("麻生希", '女', 25, "2301", "001")...
Stack底层源码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748public class Vector<E> extends AbstractList<E> implements List<E>{ protected Object[] elementData;//new Object[10]{"杨勇1","杨勇2","杨勇3".....} protected int elementCount;//3 public synchronized void addElement(E obj) { modCount++; ensureCapacityHelper(elementCount + 1); elementData[elementCount++] = obj; ...
Vector底层源码
12345public abstract class AbstractList<E> extends AbstractCollection<E>implementsList<E> { //外部操作数 //涉及到元素个数变化(添加、删除、清空)时,外部操作数就会++ protected transient int modCount = 0;//3} 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758public class Vector<E> extends AbstractList<E> implements List<E>{ //数据容器 protected Object[] elementData;//new Object[10]{"麻生希","椎名空&q...
多线程
多线程一、什么是进程 进程是系统进行资源分配和调用的独立单元,每一个进程都有它的独立内存空间和系统资源。 二、单进程操作系统和多进程操作系统的区别 单进程操作系统:dos(一瞬间只能执行一个任务) 多进程单用户操作系统:Windows(一瞬间只能执行多个任务) 多进程多用户操作系统:Linux(一瞬间只能执行多个任务) 三、现在的多核CPU是否可以让系统在同一个时刻可以执行多个任务吗? 理论上是可以的 四、什么是线程,理解线程和进程的关系 什么是线程? 线程是进程里面的一条执行路径,每个线程同享进程里面的内存空间和系统资源 一个进程 可以有 多个线程:各个线程都有不同的分工 理解线程和进程的关系 进程 与 进程 之间的关系:进程之间的内存空间和系统资源是独立的 同一个进程里的多条线程 :线程之间的内存空间和系统资源是共享的 进程里:可以有一条或一条以上的线程 进程里只有一条线程的情况下,这条线程就叫做主线程 进程里有多条线程的情况下,只有一条线程叫做主线程 Ps:线程是在进程里的,他们是包含关系 五、我们应用的软件有哪些是多线程的应用? 都是 六、Java中,如...










