Java
文章平均质量分 82
Fury97
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【源码分析】深入理解HashMap 学习手记
本文基于JDK1.6 HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。 HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。 HashMap 实现了Serial...转载 2018-07-17 11:18:59 · 374 阅读 · 0 评论 -
Java垃圾收集算法与垃圾回收器全解
目录垃圾回收判定算法判定算法一:引用计数算法判定算法二:可达性分析算法可作为GC Roots的对象Java中的引用类型方法区的回收垃圾回收算法回收算法一:标记——清除算法回收算法二:复制算法传统复制算法变种复制算法回收算法三:标记——整理算法垃圾回收器回收器一:Serial收集器回收器二:ParNew收集器回收器三:Parallel ...原创 2018-08-10 14:40:42 · 647 阅读 · 0 评论 -
【Java并发】重入锁ReentrankLock解析
转载请注明出处https://blog.youkuaiyun.com/Fury97/article/details/81367900 目录重入锁为什么需要重入锁重入锁有哪些ReentrankLock如何实现重入公平锁与不公平锁ReentrankLock中公平锁的实现方法公平锁和非公平锁的优缺点重入锁顾名思义,就是可以支持重进入的锁,它表示该锁能够支持一个线程对资源的...原创 2018-08-02 22:18:35 · 1804 阅读 · 0 评论 -
【Java并发】Volatile超详细全解!看完让你像了解自己一样了解它
转载请注明出处: https://blog.youkuaiyun.com/Fury97/article/details/81462888其实写这篇文章之前犹豫了很久要不要写,感觉Volatile这个东西吧很熟悉,概念也基本都了解,但是有时候还是有点稀里糊涂。面试时问的如果比较刁钻,我还是没办法很好的回答出来,说明还是没有深入理解它。我决定在这里,好好的将Volatile这个小朋友总结一下。目录...原创 2018-08-06 23:34:20 · 802 阅读 · 0 评论 -
【Java并发】理解ConcurrentHashMap实现原理
ConcurrentHashMap是线程安全且高效率的HashMap,本文我们将研究一下该容器的具体实现。目录为什么要使用ConcurrentHashMapConcurrentHashMap实现JDK1.5中ConcurrentHashMap的数据结构如图get方法put方法JDK1.8中 ConcurrentHashMap的数据结构如图put方法get...原创 2018-08-03 14:59:54 · 408 阅读 · 0 评论 -
JAVA类加载机制详细介绍
目录 类的生命周期 类加载的过程阶段1:加载阶段2:验证阶段3:准备阶段4:解析阶段5:初始化方法的几个注意事项()>类的生命周期 类加载的过程阶段1:加载加载是类加载的第一个阶段,需要完成三件事情:通过一个类的全限定名来获取定义该类的二进制字节流。 将这个字节流的表现的“静态存储结构”转化为方法区的运行时数据结构。 在内...原创 2018-08-12 16:20:47 · 344 阅读 · 0 评论 -
TCP三次握手与四次挥手
背景描述通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程。而端到端的通信才应该是应用进程之间的通信。UDP,在传送数据前不需要先建立连接,远地的主机在收到UDP报文后...转载 2018-08-24 11:51:43 · 340 阅读 · 1 评论 -
TCP控制拥塞的四种算法:慢开始,拥塞避免,快重传,快恢复
我们在开始假定:1:数据是单方向传递,另一个窗口只发送确认. 2:接收方的缓存足够大,因此发送方的大小的大小由网络的拥塞程度来决定.一:慢开始算法和拥塞避免算法发送方会维持一个拥塞窗口,刚开始的拥塞窗口和发送窗口相等,一般开始均设置1,然后我们每收到一个确认,就让拥塞窗口大小变为原来的两倍,接着发送分组也是原来的两倍,以此类推,当窗口值等于16(慢开始门限),然后我们开始采用”...转载 2018-08-30 10:28:18 · 9686 阅读 · 0 评论 -
【Java并发】等待/通知机制详解
转载请注明出处https://blog.youkuaiyun.com/fury97/article/details/81336047目录等待/通知机制同步队列示例举例说明应用场景等待/通知的经典范式Thread.join() 等待/通知机制当一个线程修改了一个对象的值,而另一个线程感知到了变化,然后进行相应的操作,整个过程开始于一个线程,最终执行的又是另一个线程。 ...原创 2018-08-01 18:40:02 · 599 阅读 · 0 评论 -
【Java并发】Thread类中的start()和run()方法的区别
目录 概念解释示例 概念start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法的效果不一样。当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程。解释假设我们定义了一个public class test implements Runnable{ ...原创 2018-08-05 17:43:52 · 533 阅读 · 0 评论 -
【Java集合】ArrayList自动扩容机制
目录扩充容量的方法ensureCapacity。Arrays.copyof()方法总结: 扩充容量的方法ensureCapacity。ArrayList在每次增加元素(可能是1个,也可能是一组)时,都要调用该方法来确保足够的容量。当容量不足以容纳当前的元素个数时,就设置新的容量为旧的容量的1.5倍加1,如果设置后的新容量还不够,则直接新容量设置为传入的参数(也就是所需的容...原创 2018-07-17 15:04:39 · 1239 阅读 · 0 评论 -
HashTable与HashMap的区别
目录 HashTable与HashMap继承结构的区别HashMap支持NULL值,HashTable不支持HashTable与HashMap在存储结构和解决冲突的方法上都是相同的HashTable是线程安全的,HashMap不是 HashTable已经被淘汰了,不要在代码中再使用它。HashTable与HashMap继承结构的区别从图中可以看出,两个类的继承...转载 2018-07-17 16:45:42 · 267 阅读 · 0 评论 -
深入理解LinkedList
LinkedList简介 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈、队列和双端队列来使用。 LinkedList同样是非线程安全的,只在单线程下适合使用。 LinkedList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆。(源...转载 2018-07-18 09:46:52 · 283 阅读 · 0 评论 -
【Java并发】浅谈Java内存区域与内存模型
目录理解Java内存区域与Java内存模型Java内存区域栈、堆、方法区举例说明:Java内存模型概述JMM存在的必要性原子性理解指令重排可见性JMM提供的解决方案JMM中的happens-before 原则有序性 理解Java内存区域与Java内存模型Java内存区域栈、堆、方法区 JAVA的JVM的内存可分为3个区:堆...转载 2018-07-18 15:20:30 · 742 阅读 · 0 评论 -
Java中的静态初始化和非静态初始化
1. Java中的初始化Java与C++的一个不同之处在于,Java不仅有构造函数,还有一个“初始化块”(Initialization Block)的概念。Java中的初始化块在创建Java对象时隐式执行,并且是在构造函数之前执行。2. 静态初始化// 定义static { ...}静态初始化块执行的优先级高于非静态初始化块,在对象装载到JVM中时执行一次,仅能初始化...转载 2018-07-24 17:41:43 · 774 阅读 · 0 评论 -
Java对象初始化详解
Java对象初始化详解在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本文在最后也会对类的初始化进行介绍,相对于对象初始化来说,类的初始化要相对简单一些)。 1.Java对象何时被初始化 Java对象在其被创建时初始化,在Java代码中,有两种...转载 2018-07-26 18:01:42 · 734 阅读 · 0 评论 -
【Java并发】偏向锁、轻量级锁、重量级锁的区别
Synchronized一直是多线程并发编程中的重要角色,但是在Java1.6中,为了减少获得锁带来的性能消耗,引入了偏向锁和轻量级锁。目录锁的状态:偏向锁轻量级锁重量级锁偏向锁、轻量级锁、重量级锁应用场景锁的状态:无锁状态 偏向锁状态 轻量级锁状态 重量级锁状态四种状态会随着竞争的情况逐渐升级,而且是不可逆的过程,即不可降级。要注意的是,这四种状态都...原创 2018-07-30 17:37:57 · 765 阅读 · 2 评论 -
【Java并发】happens-before介绍
面试官:讲讲happens-beforehappens-before是判断数据是否存在竞争、线程是否安全的重要依据JMM的自我介绍Hello 大家好,我原名叫Java Memory Model(Java 内存模型),大家都叫我JMM,简洁又好听,我挺喜欢。并发编程这块,没有我可是不行的,我要解决的问题就是一个线程对共享变量的写入何时对另一个线程可见比如一个线程给 变量 a 赋值...转载 2018-07-31 16:36:23 · 343 阅读 · 0 评论 -
HashMap中的全部Value转入List中的方法
今天工作中需要使用HashMap来排重,然后将最终Value集插入ListList.addAll()方法不支持HashMap,所以只好自己coding 解决办法Set<Map.Entry<String,Department>> entry =departmentHashMap.entrySet(); for(Map.Entry<Str...原创 2019-01-18 14:17:03 · 5556 阅读 · 0 评论
分享