摘要:
HashTable 底层数组+链表实现,无论可以还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 ConcurrentHashMap 底层采用分段的数组+链表实现,线程安全 通过把整个Map分 阅读全文
摘要:
synchronized底层对应的JMM模型8大原子操作lock与unlock synchronized原理分析 加锁: 同步实例方法,锁是当前实例对象 同步类方法,锁是当前类对象 同步代码块,锁是括号里面的对象 原理: synchronized标记的对象在编译为指令的时候,是被moniterent 阅读全文
摘要:
MYSQL索引分类 在一个表中,主键索引只能有一个,唯一索引可以有多个 主键索引:即一个索引只包含单个列,一个表可以有多个单值索引。 --该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULLALTER TABLE tb1_name ADD RPIMARY KEY(column_list) 阅读全文
摘要:
算法类型: 标记-清除算法:标记无用对象,然后进行清除回收。缺点:效率不高,无法清除垃圾碎片。 标记-压缩算法:标记无用对象,让所有存活的对象都向一端移动,然后直接清除掉端边界以外的内存。 复制算法:按照容量划分二个大小相等的内存区域,当一块用完的时候将活着的对象复制到另一块上,然后再把已使用的内存 阅读全文
摘要:
一、GC存在的意义 GC是垃圾回收的意思(gabage collection),内存处理器是编程人员容易出现问题的地方,忘记或者错误的内存回收导致程序或者系统的不稳定甚至崩溃,java的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,java语言没有提供释放已分配内存的俄显示操作方 阅读全文
摘要:
JVM内存模型包括:类加载器、执行引擎、本地方法库、运行时数据区 1.类加载器 JVM中类加载器会把 Java 代码转换成字节码,主要使用双亲委派机制实现类的加载,加载机制为:当前程序类-->扩展程序类-->根加载器(rz.jar) 类加载器分类: 启动类加载器(Bootstrap ClassLoa 阅读全文
摘要:
JDK中包含JRE,JRE中包含JVM,JVM中有platforms,如下图所示: 阅读全文
摘要:
线程阻塞的原因,有三大类: 1.获取锁,得不到,就进入到等待锁的阻塞队列。 只有占有锁的线程,释放锁时,才会唤醒这个队列中的线程。 notify不会唤醒该队列中的线程 2.正在占用锁的线程,调用了wait,就进入wait阻塞队列。 只有obj.notify()方法,才会唤醒这个队列中的线程。 一般的 阅读全文
摘要:
有四种 调用构造器创建对象; 使用类反射创建对象 使用clone方法创建; 使用反序列化创建对象 阅读全文
摘要:
封装 对外隐藏复杂的实现过程,暴露出简单的使用方法。 隔离变化。 提高代码重用性。 保护数据。 继承 提高代码重用性。(如果仅仅是为了重用,name可以优先考虑组合) 多态的前提。 多态 多态的前提:继承 多态的作用:提高代码扩展性(dao、jdbc) 多态的体现:向上转型 多态的限制:向上转型发生 阅读全文