Java SE
sysong13
这个作者很懒,什么都没留下…
展开
-
Java大数BigInteger的原理
引言在java中,整型分为Integer(4 bytes 32位)和Long(8 bytes 64位)两种类型,因此java中一个整数最多只能占64个bits,并且java中不存在无符号数,无论是Integer类型还是Long类型都是有符号数。当我们需要表示一个超过64 bits的数时,就需要用到BigInteger类型,BigInteger是java包提供的一个大数类型,它的原理就是将大数拆分成一个int[]表示,理论上该int[]数组的长度可以无限增大,该类提供了普通整型具有的所有运算方法,包括加减原创 2020-12-07 16:15:19 · 2823 阅读 · 0 评论 -
Java集合框架之ArrayList源码解析
目录成员变量及构造方法Add方法Add(int index)方法addAll(Collection c)方法remove(int index)方法成员变量及构造方法public class ArrayList<E> extends AbstractList<E> implements List<E>, Rand...原创 2019-07-03 20:40:49 · 136 阅读 · 0 评论 -
JVM学习之类加载过程
类加载过程发生在java程序编译和运行之间,java运行过程可以分为 编译 -> 类加载 -> 执行类加载由jvm完成,可以分为三步:加载 -> 链接-> 初始化 (这里的加载和类加载不同)1. 加载我们知道编译.java文件之后会生成.class文件,这一步就是将编译生成的.class二进制文件加载到内存,放在运行时区域的方法区内供程序使用,然后在堆中创建该类...原创 2019-07-09 21:37:42 · 105 阅读 · 0 评论 -
Java多线程学习之内存模型
目录1. Java的内存模型1.1 JVM内存结构1.2 多线程下Java的内存模型1.3 多线程的不可见问题1. Java的内存模型1.1 JVM内存结构Java中的每个线程拥有独立的栈空间,但是同一个进程中的多线程共享一块堆内存,JVM的内存结构:1)程序计数器:每个线程私有的,当前线程执行字节码的行号指示器2)虚拟机栈:每个线程被分配一段栈,线程...原创 2019-07-04 20:24:56 · 110 阅读 · 0 评论 -
Java多线程学习之ThreadLocal类的简单理解
ThreadLocal提供了线程本地变量,当创建一个ThreadLocal变量后,每个线程访问ThreadLocal变量的时候访问的都是自己线程中的变量,而不是共享变量。1ThreadLocal类的使用先看一个例子public class TestThreadLocals { static ThreadLocal<String> local = new Thre...原创 2019-07-04 21:14:16 · 159 阅读 · 0 评论 -
详细解释HashMap中tableSizeFor函数
最近在看一些集合的源码,看到HashMap感觉用到了很多移位运算的技巧,看了好一会儿才明白,记一下以免以后再忘了后面有时间会整理完整的源码HashMap中有这样一段代码,当初始化HashMap时,如果指定了初始容量initialCapacity,由于哈希桶的数目必须是2的n次幂,因此要把initialCapacity转化为比它大的最小的2的n次幂数,例如initialCapacity = ...原创 2019-07-10 16:30:27 · 1293 阅读 · 0 评论 -
Java源码阅读之HashMap
目录putVal方法迭代器的实现方法迭代器迭代器的获取putVal方法final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; in...原创 2019-07-17 14:36:24 · 126 阅读 · 0 评论