java知识补充
文章平均质量分 95
Younjzxx
深度学习从入门到Java开发
展开
-
到底为什么TCP建立连接要三次握手,而不是两次或者四次或者其他?
为什么不是两次 根本问题就在于:客户端发送了一个请求,因为网络拥堵或者其他原因没有传过去,客户端一直收不到确认。超时重传,并且成功建立连接。此时没有传过去的请求又恢复了发送,服务器认为这是一个正常的新的请求。接受并且发送确认給客户端,但是对于客户端,他真正想要的连接已经建立了,此时再次接受到这个请求他想发送拒绝的请求给服务端,但遗憾的是这时候只有两次握手。不能发送。这个连接就一直占用网络资源,被服...原创 2020-04-03 15:11:05 · 349 阅读 · 0 评论 -
java知识补充四:HashMap细节回顾
HashMap的存储方式 一般情况下,HashMap是以数组加链表的形式存储的,和数据结构中的散列表的概念基本相同。 在java的HashMap中,每一对key-value键值对被看做一对Entry. java会根据entry中的key计算hash值。根据这个hash值计算出哈希表中要存储的哈希桶中,如果计算出不同key的哈希值相同,那么此时就产生了哈希碰撞(哈希冲突)那么在同一哈希桶中以链表形式...原创 2020-02-19 21:59:17 · 642 阅读 · 0 评论 -
java知识补充三:java锁有哪几种?公平/非公平,可重入,递归锁,自旋锁...
公平锁和非公平锁: 所谓公平锁就是各个线程争抢锁的时候要按照申请锁的顺序来,不能随意加塞,类似排队打饭 先来后到。 非公平锁则相反,谁先抢到锁,谁就先执行,没有抢到,才按照申请锁的顺序来执行。有可能后申请的线程比先申请的线程优先获取到锁,在高并发的情况下,有可能造成优先级反转或者饥饿现象。 公平锁/非公平锁的创建: 并发包ReentrantLock的创建可以指定构造函数的boolean类型来得到公...原创 2020-02-12 16:10:05 · 108 阅读 · 0 评论 -
java知识补充二:CAS以及产生的的ABA问题
CAS概念: 之前复习volatile关键字的时候,指出volatile不保证原子性。但是使用Atomic包内的类可以保证其原子性。 CAS: Compare And Swap 比较并交换,即java.util.concurrent.atomic下的AtomicXxxx类里面定义的各种比较并交换方法。 CAS的全称为Compare-And-Swap ,它是一条CPU并发原语. 它的功能是判断内存某...原创 2020-02-11 16:30:01 · 135 阅读 · 0 评论 -
java知识补充一:volatile关键字
说到volatile关键字,第一反应就是三点: 保证可见性 不保证原子性 禁止指令重排 概括:它是java虚拟机提供的一个轻量级的同步机制,基本上遵守了jmm的规范,它保证可见性,不保证原子性,保证有序性。 下面将一一展开学习volatile关键字的使用及原理: 可见性 JMM:java内存模型 JMM(Java内存模型Java Memory Model)本身是一种抽象的概念 并不真实存在,它...原创 2020-02-10 22:41:26 · 130 阅读 · 0 评论