java集合
java集合
线程不安全的集合
HashMap的特点
HashMap的长度(容量)为什么要设计成2的幂?
HashTable的特点
TreeMap
ArrayList的特点
Vector的特点
LinkedList的特点
Set
ConcurrentModificationException异常
线程安全的集合
线程安全的 List
CopyOnWriteArrayList
线程安全的Set
线程安全的Map
ConcurrentHashMap
ConcurrentSkipListMap
java集合线程不安全的集合HashMap的特点
HashMap在Jdk8之前使用拉链法实现,jdk8之后使用拉链法+红黑树实现。
HashMap是线程不安全的,并允许null key 和 null value。**
HashMap在我当前的jdk版本(11)的默认容量为0,在第一次添加元素的时候才初始化容量为 16,之后才扩容为原来的2倍。
HashMap的扩容是根据 threshold决定的 : threshold = loadFactor * capacity。当 s ...
jvm-周阳
灰色:线程私有
亮色:所有线程共享,存在垃圾回收
1.类加载器.class结果类加载器 变成Class
jdk自己的类 是bootstrap 加载器 mull
自己编写的类走的是$AppClassLoader 加载器
sun.misc.Launcher jvm调用的入口程序
虚拟机自带的加载器启动类 bootstrap
扩展类 extension
应用程序类 appclassloader
用户自定义加载器java.lang.ClassLoader的子类,用户自己实现
双亲委派机制一个类收到了类加载请求,他首先不会尝试自己去加载这个类,而是把这个请求委派给父类去完成,每一个层次类加载器都是如此,因此所有的加载请求都应该传送到启动类加载其中,只有当父类加载器反馈自己无法完成这个请求的时候(在它的加载路径下没有找到所需加载的Class),子类加载器才会尝试自己去加载。
沙箱安全自定义string类,但是在加载自定义String类的时候会率先使用引导类加载器加载,而引导类加载器在加载的过程中会先加载jdk自带的文件(rt.jar包中java\lang\String.class), ...
jvm
JVM
JVM运行时内存分区
程序计数器
程序计数器的特点
Java虚拟机栈
栈帧
局部变量表
操作数栈
动态连接
方法出口
本地方法栈
堆
方法区
JavaVirtualMachineError
StackOverflowError
OutOfMemoryError
JVMPS:JVM部分参考了《深入理解Java虚拟机 - 第二版》(周志明).个人认为《深入理解Java虚拟机 - 第二版》上的部分内容已经过时有些知识请各位同学明鉴,此外我后续会根据 《深入理解Java虚拟机 - 第三版》的内容来做更新和修改。
JVM运行时内存分区
以HotSpot为例:
JDK8之前:
线程私有的部分有:程序计数器(PC寄存器),JAVA虚拟机栈,本地方法栈(native)。
线程共享部分有: GC堆,永久代(是方法区的一种实现)。
JDK8之后:
线程私有的部分不变, 线程共享部分的永久代改为了元空间(MetaSpace)(永久代和元空间都是方法区的实现),字符串常量池也移动到了heap空间
程序计数器程序计数器是一块较小的内存空间,它 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment
博客的搭建与备份https://www.jianshu.com/p/9b87aae19093
备份博客由于博 ...