- 博客(5)
- 收藏
- 关注
原创 hashmap put()原理
public V put(K key, V value) { //hash(key):根据hash算法算出key的哈希值 return putVal(hash(key), key, value, false, true); }static final int hash(Object key) { int h; // h >>> 16:无符号右移16位 ^ :异或 //异或:相同取0,不同取1 //(h = key.hashCode()) ..
2021-11-08 19:27:04
160
原创 为什么说HashMap线程不安全问题?
HashMap有哪些线程安全问题?所有的jdk都存在的线程不安全全问题:数据覆盖jdk1.7:当出现哈希冲突,jdk1.7采用的是头插法,存在安全问题,数据丢失,链表环化到程序卡死。线程问题一分析:数据覆盖导致插入数据丢失当在同一时刻多个线程同时操作共享数据,就存在着线程安全的问题。HashMap的共享数据是哈希表table,如果线程A在准备完数据后,还没来得及将数据插入table中,此时线程A被挂起,线程B获取CPU执行时间,并完成数据的插入,table被更新了,但是线程A并不知道table“
2021-11-08 19:14:09
365
原创 JAVA执行引擎工作原理:方法调用的原理一
这里写自定义目录标题方法调用真实的机器调用C语言函数调用JVM的函数调用机制JVM作为一款虚拟机,也必然要涉及计算机核心的3大功能。1.方法调用方法作为程序组成的基本单元,作为原子指令的初步封装,计算机必须能够支持方法的调用。同样, Java语言的原子指令是字节码, Java方法是对字节码的封装,因此JVM必须支持对Java方法的调用。2.取指这里的“取指”,是指取出指令。还是那句话,方法是对原子指令的封装,计算机进入方法后,最终需要逐条取出这些指令并逐条执行。 Java方法也不例外,因此JVM进
2021-11-08 17:03:44
1235
原创 java跨平台的实现
write once ,run anyWhere:一处编写,到处运行。由于计算器只认识机器语言,所以所有的编程语言都需要经过这一步:“翻译”,将编程语言翻译成机器语言,机器语言只与硬件有关,与平台无关(平台一般指操作系统,如Linux、Windows)。如果想要在不同的平台运行同一份源代码,应该如何兼容不同的平台?1.通过编译器实现兼容。第一种方式可以通过在不同的系统安装特定的编译器,编译器能够将同样一段的程序翻译成机器指令,从而实现编程语言的兼容性。虽然编译器能够实现程序兼容,但是做不到完全的跨平台
2021-11-07 13:28:30
886
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人