随笔分类 - java基础
摘要:摘抄自:https://www.zhihu.com/question/20400700/answer/117464182
阅读全文
摘要:用户空间和内核空间用户程序有用户态和内核态两种状态。用户态就是执行在用户空间中,不能直接执行系统调用。必须先切换到内核态,也就是系统调用的相关数据信息必须存储在内核空间中,然后执行系统调用。 操作硬盘等资源属于敏感操作,为了内核安全,用户线程不能直接调用。而是采用了操作系统内核提供了系统调用接口,用
阅读全文
摘要:private int hash(K key) { // 为啥要把hash值和0x7FFFFFFF做一次按位与操作呢, // 主要是为了保证得到的index的第一位为0,也就是为了得到一个正数。 // 因为有符号数第一位0代表正数,1代表负数。 return (key.hashCode() & 0x
阅读全文
摘要:摘抄自:https://blog.csdn.net/suifeng629/article/details/81567777
阅读全文
摘要:摘抄自:https://blog.csdn.net/mu_wind/article/details/103167595 Java各种同步锁详解 1 锁分类概述 1.1 乐观锁 & 悲观锁 1.2 自旋锁 & 适应性自旋锁 1.3 公平锁 & 非公平锁 1.4 可重入锁 & 不可重入锁 1.5 共享锁
阅读全文
摘要:单例模式的五种实现方式 1、饿汉式(线程安全,调用效率高,但是不能延时加载): 1 2 3 4 5 6 7 public class ImageLoader{ private static ImageLoader instance = new ImageLoader; private ImageLo
阅读全文
摘要:摘抄自:https://www.cnblogs.com/gocode/p/analysis-source-code-of-ConcurrentHashMap.html 1.引子 并发编程中使用HashMap可能导致程序死循环。因为多线程会put方法添加键值对时将导致HashMap的Entry链表形成
阅读全文
摘要:static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>> 16; return (n < 0) ? 1 :
阅读全文
摘要:内部类什么是内部类?在Java中,可以将一个类的定义放在另外一个类的定义内部,这就是内部类。内部类本身就是类的一个属性,与其他属性定义方式一致。 内部类的分类有哪些内部类可以分为四种:成员内部类、局部内部类、匿名内部类和静态内部类。 静态内部类定义在类内部的静态类,就是静态内部类。 public c
阅读全文
摘要:switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上在 Java 5 以前,switch(expr)中,expr 只能是 byte、short、char、int。从 Java5 开始,Java 中引入了枚举类型,expr 也可以是 enum 类型,从
阅读全文
摘要:为什么要讲容量设置为2的N次放 1 h&(length-1)=h%length length必须为2的N次方 2 位运算符耗时:2640ms 取模运算:25157 (取模运算太耗费时间) 3 数组扩容,大量rehash(取模)
阅读全文
摘要:ArrayList : 默认大小: private static final int DEFAULT_CAPACITY = 10; 扩容后数量:int newCapacity = oldCapacity + (oldCapacity >> 1); 加上原来的一半HashMap:默认大小:static
阅读全文
摘要:大家都知道(jdk1.8)HashMap中计算数组下标是HashMap的核心算法。小编今天在看HashMap源码中看到了hash(Object key)方法百思不得其解。小编问百度,查找相关博客,甚至连HashMap的关于hash(Object key)英文解释都看了。但是都只是说了为了尽量均匀,没
阅读全文
摘要:https://blog.csdn.net/soonfly/article/details/70147205 在翻《深入理解Java虚拟机》的书时,又看到了2-7的 String.intern()返回引用的测试。其实要搞明白String.intern(),我总结了下面几条规则:一、new Strin
阅读全文
摘要:摘抄自:https://blog.csdn.net/lipr86/article/details/78674572 1. 粉红色的是受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被捕
阅读全文
摘要:你知道 hash 的实现吗?为什么要这样实现? 在 JDK 1.8 的实现中,是通过 hashCode() 的高16位异或低16位实现的:(h = k.hashCode()) ^ (h >>> 16)。 主要是从速度、功效、质量 来考虑的,这么做可以在桶的 n 比较小的时候,保证高低 bit 都参与
阅读全文
摘要:首先,capacity 为 2的整数次幂的话,计算桶的位置 h&(length-1) 就相当于对 length 取模,提升了计算效率; 其次,capacity 为 2 的整数次幂的话,为偶数,这样 capacity-1 为奇数,奇数的最后一位是 1,这样便保证了 h&(capacity-1) 的最后
阅读全文
摘要:IO操作概念在Unix系统中,一切都是文件。文件就是流的概念,在进行信息的交流过程中,对这些流进行数据的收发操作就是IO操作 我们都知道unix(like)世界里,一切皆文件,而文件是什么呢?文件就是一串二进制流而已,不管socket,还是FIFO、管道、终端,对我们来说,一切都是文件,一切都是流。
阅读全文
摘要:五种线程池的分类和作用 (转载自:http://www.cnblogs.com/vince66/p/9325638.html) 1、newCachedThreadPool 作用:创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们,并在需要时使用提供的 ThreadFactor
阅读全文