源码解读
学海无涯青山无尽
这个作者很懒,什么都没留下…
展开
-
关于java系统变量获取源码
结果中包含jre/lib下jar包、项目打包之后classes下文件、mavan配置依赖的jar包。查看源码,寻找获取方式。native方法,需要查看jvm源码。原创 2023-03-29 17:12:05 · 114 阅读 · 0 评论 -
随笔03 如何让二进制编码第一次出现一的以后位置都变为一
感觉应该是这样。加入现在这个数不是二的整次方,那么就这样让他变成2的整次方。前提条件是这个是大于最小初始化容量8还有一个前提,就是用二进制表示这个数,比如说是分两种情况a.0000 0000 0000 0000 0000 0000 0100 0000b.0000 0000 0000 0000 0000 0000 0110 0000第一个1出现在第26位,那么要做的就是先把第27-32的0 全部替换位1,用上边这个数+1前置知识:0|1=11|0=10|0=01|1=1所以第原创 2022-03-14 17:37:30 · 158 阅读 · 0 评论 -
随笔02-源码中经常出现的位运算
ArrayDeque public int size() { return (tail - head) & (elements.length - 1); } public void addFirst(E e) { if (e == null) throw new NullPointerException(); elements[head = (head - 1) & (elements.原创 2022-03-14 16:41:42 · 91 阅读 · 0 评论 -
随笔-01 ArrayDeque的size源码问题
随笔-01 ArrayDeque的size源码问题ArrayDeque 使用循环数组实现,问题:我想知道队列的元素个数,随后去查看size源码。然后模拟一个循环队列放入元素,根据源码计算个数始终比实际的少一位。然后去查看addFirst和addLast源码,发现头结点插入数据后,头结点index会减一,然后元素会放到新的索引上。但是在尾结点插入元素后,新的元素直接放到tail上,然后尾结点的索引加一。这也就说明了tail的index处没有数据,从而对应了size的源码。那么为什么会这样呢?因为开始的原创 2022-03-14 16:22:58 · 61 阅读 · 0 评论