会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
三枣
首页
联系
订阅
管理
上一页
1
2
3
下一页
2019年4月11日
JDK源码分析(11)之 BlockingQueue 相关
摘要: 本文将主要结合源码对 JDK 中的阻塞队列进行分析,并比较其各自的特点; 一、BlockingQueue 概述 说到阻塞队列想到的第一个应用场景可能就是生产者消费者模式了,如图所示; 根据上图所示,明显在入队和出队的时候,会发生竞争;所以一种很自然的想法就是使用锁,而在 JDK 中也的确是通过锁来实
阅读全文
posted @ 2019-04-11 11:33 三枣
阅读(758)
评论(0)
推荐(1)
2019年4月7日
并发系列(5)之 Future 框架详解
摘要: 本文将主要讲解 J.U.C 中的 Future 框架,并分析结合源码分析其内部结构逻辑; 一、Future 框架概述 JDK 中的 Future 框架实际就是 Future 模式的实现,通常情况下我们会配合线程池使用,但也可以单独使用;下面我们就单独使用简单举例; 1. 应用实例 打印: 如上面代码
阅读全文
posted @ 2019-04-07 19:25 三枣
阅读(939)
评论(0)
推荐(0)
2019年4月4日
并发系列(4)之 AbstractQueuedSynchronizer 源码分析
摘要: 本文将主要讲述 的内部结构和实现逻辑,在看本文之前最好先了解一下 队列锁, 就是根据 队列锁的变种实现的,因为本身 比较复杂不容易看清楚他本身的实现逻辑,所以查看 队列锁的实现,可以帮助我们理清楚他内部的关系;关于队列锁的内容可以参考 , "CLH、MCS 队列锁简介" ; 一、AQS 结构概述 在
阅读全文
posted @ 2019-04-04 20:51 三枣
阅读(1353)
评论(0)
推荐(1)
2019年3月20日
并发系列(3)之 CLH、MCS 队列锁简介
摘要: 这篇博客主要是作为 AbstractQueuedSynchronizer 的背景知识介绍;平时接触也非常的少,如果你不感兴趣可以跳过;但是了解一下能更加的清楚 AQS 的设计思路; 一、自旋锁简介 通常情况下解决多线程共享资源逻辑一致性问题有两种方式: 互斥锁:当发现资源被占用的时候,会阻塞自己直到
阅读全文
posted @ 2019-03-20 20:42 三枣
阅读(6391)
评论(0)
推荐(4)
2019年3月15日
并发系列(2)之 ThreadLocal 详解
摘要: 本文将主要结合源码讲述 ThreadLocal 的使用场景和内部结构,以及 ThreadLocalMap 的内部结构;另外在阅读文本之前只好先了解一下引用和 HashMap 的相关知识,可以参考 "Reference 框架概览" 、 "Reference 完全解读" 、 "HashMap 相关" ;
阅读全文
posted @ 2019-03-15 11:03 三枣
阅读(3875)
评论(0)
推荐(1)
2019年3月14日
并发系列(1)之 Thread 详解
摘要: 本文主要结合 源码,梳理 Java 线程的整体脉络; 一、线程概述 对于 Java 中的线程主要是依赖于系统的 API 实现的,这一点可以从 ;源码中关键的方法都是 方法看出,也可以直接查看 OpenJDK 源码看出来,这一点后面还会讲到;对于 JDK1.8 而言,他的 Windows 版和 Lin
阅读全文
posted @ 2019-03-14 10:36 三枣
阅读(1821)
评论(0)
推荐(1)
2019年3月11日
数据结构系列(5)之 红黑树
摘要: 本文将主要讲述平衡二叉树中的红黑树,红黑树是一种我们经常使用的树,相较于 AVL 树他无论是增加还是删除节点,其结构的变化都能控制在常树次;在 JDK 中的 TreeMap 同样也是使用红黑树实现的; 一、结构概述 红黑树是在AVL 树平衡条件的基础上,进一步放宽条件,从而使得红黑树在动态变化的时候
阅读全文
posted @ 2019-03-11 11:38 三枣
阅读(1239)
评论(0)
推荐(3)
2019年3月7日
数据结构系列(4)之 B 树
摘要: 本文将主要讲述另一种树形结构, B 树 ;B 树是一种 多路平衡查找树 ,但是可以将其理解为是由二叉查找树合并而来;它主要用于在不同存储介质之间查找数据的时候,减少 I/O 次数(因为一次读一个节点,可以读取多个数据); 一、结构概述 B 树,多路平衡查找树,即有多个分支的查找树;如图所示: B 树
阅读全文
posted @ 2019-03-07 16:41 三枣
阅读(757)
评论(0)
推荐(1)
2019年3月5日
数据结构系列(3)之 伸展树
摘要: 本文将主要讲述 BBST 家族的另一种相对奇特的树, 伸展树 ;伸展树的相较于其他的 BBST,结构更加简单,因为伸展树不需要平衡因子、颜色等信息,他的节点就是 BST 的节点,同时他甚至没有时刻维护全树的平衡状态,却仍然能保持各项操作达到分摊 ; 一、结构概述 伸展树的结构和二叉树完全相同,只是在
阅读全文
posted @ 2019-03-05 14:19 三枣
阅读(755)
评论(1)
推荐(0)
2019年3月2日
数据结构系列(2)之 AVL 树
摘要: 本文将主要讲解平衡二叉树中的 AVL 树,其中将重点讲解二叉树的重平衡方法,即左旋和右旋,以及 3+4 重构;这些方法都是后面要讲的 B 树,红黑树等 BBST 的重要基础;此外在看本文之前最好先看一下 "二叉搜索树" ; 一、结构概述 前一篇博客里面讲了,二叉树同时具有 向量的静态查找 和 列表的
阅读全文
posted @ 2019-03-02 22:44 三枣
阅读(829)
评论(0)
推荐(1)
2019年2月27日
数据结构系列(1)之 二叉搜索树
摘要: 本文将主要以动图方式展示二叉搜索树的结构,以及动态操作;但是对于基本的概念和性质则不会有过多的提及,如果想系统了解建议查看邓俊辉老师的《数据结构》课程; 一、结构概述 二叉树:融合了 向量的静态操作 (二分查找)和 列表的动态操作 (插入和删除)的优点;使得树成了应用广泛的数据结构; 二叉搜索树:即
阅读全文
posted @ 2019-02-27 17:01 三枣
阅读(1073)
评论(0)
推荐(2)
2019年2月21日
Java 泛型完全解读
摘要: 对于泛型的使用我想大家都非常熟悉,但是对于类型擦除,边界拓展等细节问题,可能不是很清楚,所以本文会重点讲解一下;另外对泛型的了解其实可以看出,一个语言特性的产生逻辑,这对我们平时的开发也是非常有帮助的; 一、为什么会出现泛型 首先泛型并不是Java的语言特性,是直到 JDK1.5 才支持的特性(具体
阅读全文
posted @ 2019-02-21 20:24 三枣
阅读(1295)
评论(0)
推荐(0)
2019年2月13日
JDK源码分析(10)之 Hashtable 相关
摘要: 本文的目的并不是让你对 更加了解,然后灵活运用;因为 的一个历史遗留的类,目前并不建议使用,所以本文主要和 对比,感受同样功能的不同实现,知道什么是好的代码;所以在阅读本文之前最好先了解一下 ,可以参考 "HashMap 相关" ; 一、 类定义 可以看到它和 虽然都是哈希表,但是结构完全不一样,他
阅读全文
posted @ 2019-02-13 20:48 三枣
阅读(463)
评论(0)
推荐(1)
2019年2月12日
JDK源码分析(9)之 WeakHashMap 相关
摘要: 平时我们使用最多的数据结构肯定是 HashMap,但是在使用的时候我们必须知道每个键值对的生命周期,并且手动清除它;但是如果我们不是很清楚它的生命周期,这时候就比较麻烦;通常有这样几种处理方式: 由一个线程定时处理,可以是 或者 ; 利用重写 ,实现 FIFOCache 或者 LRUCache;可以
阅读全文
posted @ 2019-02-12 21:14 三枣
阅读(729)
评论(0)
推荐(0)
2019年1月31日
JDK源码分析(8)之 Reference 完全解读
摘要: 在阅读本文之前最好对 Reference 框架有一个整体的把握,可以参考我上一篇博客 "Reference 框架概览" ;本文主要讲了 的子类实现和应用( ); Java 引用的强弱关系 : 一、StrongReference 强引用 :我们通常使用的引用,形如 此时从 stack 中的 o,到 h
阅读全文
posted @ 2019-01-31 18:36 三枣
阅读(1243)
评论(0)
推荐(0)
上一页
1
2
3
下一页