- Java提供了哪些IO方式?NIO如何实现复用?
- java有几种文件拷贝方式?哪一种最高效?
- synchronized和ReentrantLock有什么区别呢?
- synchronized底层如何实现?什么是锁的升级、降级?
- 为什么ConcurrentHashMap的读操作不需要加锁
- Java集合之LinkedHashMap
- Exception和Error有什么区别?
- 谈谈final,finally,finalize的区别,有什么不同
- 强引用、软引用、弱引用、幻象引用有什么区别
- String、StringBuffer、StringBuilder有什么区别
- 动态代理是基于什么原理
- CGLib动态代理原理及实现
- Java基础之int和Integer有什么区别
- 对比Vector、ArrayList、LinkedList有何区别
- 对比Hashtable、HashMap、TreeMap有什么不同
Java提供了哪些IO方式?NIO如何实现复用?
https://blog.csdn.net/ty13572053785/article/details/82859394
IO 包含 同步阻塞IO 同步非阻塞IO IO多路复用 异步非阻塞IO
同步阻塞IO 关联(实例) JavaIO
同步非阻塞IO 关联(实例)NIO
IO多路复用 关联(实例) NIO
异步非阻塞IO 关联(实例)NIO 2
JavaIO 关联 NIO
JavaIO面向流,是阻塞IO,一个线程处理一个连接
NIO面向缓冲区,非阻塞IO,单线程管理多个连接
NIO 关联 Channel,Buffer,Selector
java有几种文件拷贝方式?哪一种最高效?
https://www.jianshu.com/p/5092a511904a
操作系统 包含 用户态空间 内核态空间
NIO 关联 零拷贝
synchronized和ReentrantLock有什么区别呢?
https://blog.csdn.net/qq_41936805/article/details/94905395
synchronized 关联 ReentrantLock
synchronized语义和ReentrantLock基本是相同
synchronize只能是非公平的,ReentrantLock是粒度更细的synchronize,可以带超时的获取锁尝试,中断请求
线程安全 包含(特性) 原子性 可见性 有序性
可见性 关联 volatile
synchronized底层如何实现?什么是锁的升级、降级?
https://blog.csdn.net/qq_41936805/article/details/95331051
synchronized 关联 Monitor
Monitor 关联 互斥锁
jdk1.6以前 Monitor的实现依赖于操作系统内部的互斥锁,因为需要用户态到内核态的切换,所以效率低
Monitor 包含 偏斜锁 轻量级锁 重量级锁
轻量级锁 关联 MarkWord CAS
Lock 关联 ReadWriteLock
ReadWriteLock 并不是 实现Lock的接口
为什么ConcurrentHashMap的读操作不需要加锁
https://mp.weixin.qq.com/s/Dx8N6agTuwnoNbVFe2nthQ
ConcurrentHashMap
1.7 分段锁
1.8 红黑树优化链表 cas + synchronized
ConcurrentHashMap 关联 volatile
读操作不加锁 因为数组使用volatile修饰, 保证数组扩容的时候可见性
Java集合之LinkedHashMap
https://www.cnblogs.com/xiaoxi/p/6170590.html
LRU 关联(实例) LinkedHashMap
LinkedHashMap构造方法中的accessOrder,
true 所有的Entry按照访问的顺序排列,
false 所有的Entry按照插入的顺序排列
Exception和Error有什么区别?
https://blog.csdn.net/LouisQMei/article/details/80764150
Throwable 包含 Exception Error
Exception 包含 RuntimeException 非运行时异常
Exception 关联 Error
谈谈final,finally,finalize的区别,有什么不同
https://blog.csdn.net/lov2_y1y1/article/details/87919005
final
修饰类(不可被继承),方法(不可被重写),变量(不可被修改)
finally
finalize 关联 gc
gc回收前调用的方法
强引用、软引用、弱引用、幻象引用有什么区别
https://www.jianshu.com/p/86efa167a627
对象引用 类型包含 强引用 软引用 幻象引用
String、StringBuffer、StringBuilder有什么区别
https://blog.csdn.net/yiguang_820/article/details/93849455
AbstractStringBuilder 包含(继承自) StringBuffer StringBuilder
String StringBuffer StringBuilder 关联 final
StringBuffer 关联 StringBuilder
StringBuffer使用synchronized保证线程安全
String 关联 StringBuffer
String内部的char[] 是final的,拼接的时候频繁操作会产生大量无用对象
StringBuffer 内部的char[] 不是final修饰的
动态代理是基于什么原理
https://www.jianshu.com/p/e20dab96df8a
动态代理 关联 反射
代理 包含 动态代理 静态代理
静态代理 关联(实例) RMI
动态代理 关联(实例) JDK动态代理 cglib
JDK动态代理 关联 cglib
JDK动态代理使用 代码简单,依赖少,但是基于接口 cglib通过生成子类的方式避开接口限制
CGLib动态代理原理及实现
https://blog.csdn.net/yakoo5/article/details/9099133/
字节码 关联(实例) cglib
Java基础之int和Integer有什么区别
https://blog.csdn.net/chenliguan/article/details/53888018
java数据类型 包含 基本数据类型 引用数据类型
基本数据类型 包含 boolean byte int char long short double float
引用数据类型 包含 数组 类 接口
类 包含 包装类
包装类 关联 基本数据类型
两者利用 自动装箱/拆箱机制互相转换
包装类需要实例化才能使用
包装类的默认值为null
包装类 关联 静态常量池
new 出来的两个包装类实例一定不相等
不是new出来的两个包装类实例 可能因为都在静态常量池cache数组中, 所以相等 int的范围默认为[-128, 127]
对比Vector、ArrayList、LinkedList有何区别
https://www.cnblogs.com/CherryTab/p/12115897.html
List 包含(继承) Vector ArrayList LinkedList
Vector 关联 ArrayList
内部都以数组形式存储 Vecotr线程安全 扩容时会提高1倍 ArrayList线程不安全 扩容时会提高0.5倍
LinkedList 关联 Vector ArrayList
LinkedList进行节点插入、删除却要高效得多 随机访问性能则要比动态数组慢
Collection 包含(继承) List, Set, Queue
Queue 包含(继承) Deque
对比Hashtable、HashMap、TreeMap有什么不同
https://www.jianshu.com/p/46a99edece8a
Map 包含(继承) Hashtable、HashMap、TreeMap
Hashtable 关联 hashmap
Hashtable 线程安全,不支持null键和值
HashMap 支持null键和值,线程不安全
