![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java学习
文章平均质量分 73
yjx_python
Python初级学习者,希望大家指正,共同进步
展开
-
JAVA 锁升级过程,进行一致性Hash,偏向锁与轻量级锁是否会升级
文章目录起因Mark Word(HotSpot)内存可视化工具无锁状态偏向锁轻量级锁重量级锁锁升级过程起因在周志明先生的《深入理解JAVA虚拟机》中,锁优化的章节讲到了,当一个对象当前正处于偏向锁状态,又收到需要计算其一致性哈希码的请求时,它的偏向状态会被立刻撤销,并且锁会膨胀成重量级锁,究其原因是因为对象头的Mark Word中,存储偏向锁的线程ID地址跟存储一致性Hash的比特位是冲突的那么,如果对象轻量级锁,重量级锁的Mark Word难道不会跟Hash编码冲突吗,轻量级锁进行一致性Hash操作原创 2021-09-07 22:29:15 · 410 阅读 · 2 评论 -
Java IO详解:从IO了解数据缓存的基本思想(四)
Stream文章目录StreamInputStreamread(byte b[], int off, int len)skip(long n)available()close()mark(),reset(),markSupported()OutputStreamwrite(byte b[], int off, int len)flush()InputStreamInputStream是所有从文件中获取字节流的超类,子类必须实现read()方法来获取下一个字节//返回的是0-255的数字,如果没有下一原创 2021-08-10 01:06:56 · 150 阅读 · 0 评论 -
Java IO详解:从IO了解数据缓存的基本思想(三)
Stream文章目录StreamInputStreamread(byte b[], int off, int len)skip(long n)available()close()mark(),reset(),markSupported()OutputStreamwrite(byte b[], int off, int len)flush()InputStreamInputStream是所有从文件中获取字节流的超类,子类必须实现read()方法来获取下一个字节//返回的是0-255的数字,如果没有下一原创 2021-08-10 01:05:43 · 197 阅读 · 0 评论 -
Java IO详解:从IO了解数据缓存的基本思想(二)
Buffer(以ByteBuffer为例)文章目录Buffer(以ByteBuffer为例)简介初始化put()写入flip(),切换为读就绪状态get()读取Mark()标记,reset()恢复标记位简介Buffer是一个线性有序集合,主要有三个标识:capacity, limit, position**capacity**就是Buffer的容量,不为负且不改变**limit**标识第一个不能读/写的元素索引,不为负且不大于capacity**position**标识下一个要被读/写的元素索原创 2021-08-10 01:04:32 · 116 阅读 · 0 评论 -
Java IO详解:从IO了解数据缓存的基本思想(一)
JAVA IO相关知识文章目录JAVA IO相关知识Java IO 与NIO的不同:IO硬件原理IO硬件设备IO四种控制方式1.直接程序控制2.中断驱动控制方式3.直接存储器访问控制方式(DMA)4.通道方式Java IO 与NIO的不同:IO是面向stream的,可以指定每次读取一定长度的字节,但是不能回退的访问数据,如果需要这么做则小把他存在缓存区中NIO是面向buffer的,数据先读取到buffer中,再做处理,可以在其中进行数据的前后访问IO是Blocking的,阻塞式的,对于一个原创 2021-08-10 01:02:28 · 159 阅读 · 0 评论 -
TreeMap源码阅读-基于Java8
TreeMap文章目录TreeMap简介构造方法方法详解successor() 查找下个节点getCeilingEntry()/getFloorEntry 获取[low,key]/[key,high]的最大/小值,没有返回nullgetHigherEntry()/getLowerEntry获取[low,key)/(key,high]的最大/小值,没有返回nullDescendingMap()翻转mapsubMap()+headMap()+tailMap()简介TreeMap是一个直接由红黑树实现的结构原创 2021-08-10 00:54:56 · 202 阅读 · 0 评论 -
LinkedHashMap源码阅读-基于Java8
LinkedHashMap文章目录LinkedHashMap简介afterNodeRemovalafterNodeInsertionafterNodeAccess使用LinkedHashMap实现LRU缓存简介趁着热乎劲,赶紧看下LinkedHashMap,直观上来看,它依旧是一个HashMap,但是又是Linked,有序的链表,其实就是把节点穿插成双向链表,由于继承的hashMap,所以它各种方法其实一样的,只不过在做完map的数组+链表/红黑树部分后,要把链表也做相应的操作,之前也看到过,具体方法原创 2021-08-10 00:53:08 · 168 阅读 · 0 评论 -
HashMap源码阅读-基于Java8
HashMap文章目录HashMap1.继承关系2.几个变量3.resize4.put4.1.treeifyBin()4.2.TreeNode.treeify()4.3.TreeNode.putTreeVal()5.get4.1.TreeNode.getTreeNode6.remove1.继承关系继承自 AbstractMap ,实现了 Map 接口,但是其实有点奇怪的是,明明它们的方法都是一样的,在stackoverflow找到了答案(点击这里跳转)public class HashMap<原创 2021-08-10 00:49:45 · 93 阅读 · 0 评论 -
ConcurrentHashMap源码阅读-基于Java8
ConcurrentHashMap文章目录ConcurrentHashMap1.继承关系核心原子性操作2.put2.1treeifyBin()3.get4.remove(),replace()1.继承关系public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable{}跟 map 一样,继承自 Abstrac原创 2021-08-10 00:48:27 · 66 阅读 · 0 评论 -
Java集合框架详解
Java集合框架总结目录一、思维导图?二、详解1.java.util.Collection\1.1.java.util.Collection\总结目录Java的学习一直比较零散,接下来系统的做一些总结归纳,提升自我一、思维导图?橙色的是接口类 ,青色的是实体类二、详解1.java.util.Collection<E>集合是 无序、不唯一 的,提供了一些通用的方法,常见的有:int size();集合大小boolean isEmpty(); 是否置空boolean co原创 2020-08-27 17:12:57 · 117 阅读 · 0 评论