自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JAVA入门中

继续前行

  • 博客(214)
  • 资源 (6)
  • 收藏
  • 关注

原创 源码阅读(39):Java中线程安全的Queue、Deque结构——LinkedTransferQueue(2)

LinkedTransferQueue是从JDK 1.7+版本开始提供的一个无界阻塞式队列,它是Java容器框架中一种比较特殊的阻塞式队列,特殊性体现在它实现的TransferQueue接口。后者的特点是可定义一种数据对象消费者和生产者的配对交换方式,保证了生产者线程和消费者线程的配对处理(注意,不是数据配对而是线程配对),这样做的好处是,可以使用CAS原理进行LinkedTransferQueue队列集合的线程安全性控制,而不是使用AQS原理。

2020-06-16 22:24:20 2338

原创 源码阅读(38):Java中线程安全的Queue、Deque结构——LinkedTransferQueue(1)

LinkedTransferQueue是从JDK 1.7+版本开始提供的一个无界阻塞式队列,它是Java容器框架中一种比较特殊的阻塞式队列,特殊性体现在它实现的TransferQueue接口。后者的特点是可定义一种数据对象消费者和生产者的配对交换方式,保证了生产者线程和消费者线程的配对处理(注意,不是数据配对而是线程配对),这样做的好处是,可以使用CAS原理进行LinkedTransferQueue队列集合的线程安全性控制,而不是使用AQS原理。

2020-06-16 22:20:18 2809 3

原创 源码阅读(37):Java中线程安全的Queue、Deque结构——PriorityBlockingQueue

PriorityBlockingQueue是一种无界阻塞队列,其内部核心结构和我们前文中已经介绍过的PriorityQueue队列集合类似,都是基于小顶堆树进行工作。本文不会赘述介绍PriorityQueue时已经详解过的内容,例如小顶堆树的工作原理等。本文将集中精力在几个PriorityBlockingQueue队列集合的核心方法的介绍上,这些方法都是,帮助PriorityBlockingQueue队列在多线程场景下正确工作的重要方法。

2020-05-31 17:53:12 2389

原创 源码阅读(36):Java中线程安全的Queue、Deque结构——LinkedBlockingQueue(2)

之前花了大量的篇幅介绍了一个Java中线程安全的Queue结构:ArrayBlockingQueue。主要是为了归纳分类这些线程安全性的Queue、Deque结构的设计共性。实际上ArrayBlockingQueue已经拥有了其它线程安全的Queue结构的大部分处理特点。基于介绍ArrayBlockingQueue时我们描述的这些设计共性,本系列开始为读者介绍另一个重要的阻塞性队列LinkedBlockingQueue。LinkedBlockingQueue是一种内部基于链表的,使用在高并发场景下的阻塞队列

2020-05-23 08:59:20 2251

原创 源码阅读(35):Java中线程安全的Queue、Deque结构——LinkedBlockingQueue(1)

之前花了大量的篇幅介绍了一个Java中线程安全的Queue结构:ArrayBlockingQueue。主要是为了归纳分类这些线程安全性的Queue、Deque结构的设计共性。实际上ArrayBlockingQueue已经拥有了其它线程安全的Queue结构的大部分处理特点。基于介绍ArrayBlockingQueue时我们描述的这些设计共性,本系列开始为读者介绍另一个重要的阻塞性队列LinkedBlockingQueue。LinkedBlockingQueue是一种内部基于链表的,使用在高并发场景下的阻塞队列

2020-05-23 08:58:10 2303 3

原创 源码阅读(34):Java中线程安全的Queue、Deque结构——ArrayBlockingQueue(4)

继续讲解ArrayBlockingQueue中的迭代器工作细节

2020-05-23 08:56:00 2178

原创 源码阅读(33):Java中线程安全的Queue、Deque结构——ArrayBlockingQueue(3)

一旦Itr迭代器完成初始化,就可以开始使用了。而使用迭代器最常见的方法就是使用hasNext()方法和next()方法进行配合。另外从JDK 1.8+开始,还可以使用Lambda表达式进行表达,最后ArrayBlockingQueue队列集合的迭代器还支持remove()方法的使用。

2020-04-30 20:33:38 2030

原创 源码阅读(32):Java中线程安全的Queue、Deque结构——ArrayBlockingQueue(2)

本篇内容我们专门分析ArrayBlockingQueue中迭代器的工作情况,ArrayBlockingQueue迭代器非常有阅读意义,是java集合框架中比较有代表性的结构之一。

2020-04-29 18:30:52 2253

原创 源码阅读(31):Java中线程安全的Queue、Deque结构——ArrayBlockingQueue(1)

ArrayBlockingQueue是一种经常使用的线程安全的Queue结构,它是一种内部基于数组的,使用在高并发场景下的阻塞队列,也是一种容量有界的队列。该队列符合先进先出(FIFO)的工作原则,也就是说该队列头部的元素是最先进入队列集合的,也是最先被调用者取出的元素;该队列尾部的元素是最后进入队列集合的,也是按时间顺序会最后被调用者取出的元素。

2020-04-09 21:46:52 2725

原创 源码阅读(30):Java中线程安全的Queue、Deque结构——概述(1)

如果要将java.util.concurrent工具包中的各种工具类进行详细的功能分类,那么在这个工具包中可以将“队列”性质的工具类专门作为一个独立的功能分类。为了适应高并发的程序工作场景,java.util.concurrent工具提供了丰富用于高并发场景的,线程安全的Queue/Deque结构集合

2020-03-31 17:03:23 3329 2

原创 源码阅读(29):Java中线程安全的List结构——CopyOnWriteArrayList(2)

从本文开始我们将介绍多线程(高并发)场景下的多种数据结构,这些数据结构基本来源于java.util.concurrent工具包。通过后续多篇文章的讲解我们将会发现,**高并发场景下的数据结构,其关注的最优先问题往往不是数据结构的整体性能,而是数据正确性和特定使用场景下的高性能**。

2020-03-25 20:54:45 2194 1

原创 源码阅读(28):Java中线程安全的List结构——CopyOnWriteArrayList(1)

从本文开始我们将介绍多线程(高并发)场景下的多种数据结构,这些数据结构基本来源于java.util.concurrent工具包。通过后续多篇文章的讲解我们将会发现,**高并发场景下的数据结构,其关注的最优先问题往往不是数据结构的整体性能,而是数据正确性和特定使用场景下的高性能**。

2020-03-23 21:33:15 2327 1

原创 源码阅读(27):Java中主要的Set结构——LinkedHashSet、TreeSet等结构

和HashSet类似,Java中另外两个主要的Set集合结构也做了这样依赖结构,既是LinkedHashSet集合继承了HashSet,并实际应用HashSet集合中构造函数,完成实例化;TreeSet集合内部结构依赖于TreeMap集合,也就是说TreeSet内部数据结构同样是红黑树。

2020-03-15 10:15:17 1886

原创 源码阅读(26):Java中主要的Set结构——HashSet

在全面理解了HashMap结构后,理解HashSet数据结构也就足够简单了——HashSet内部就是对HashMap数据结构的依赖。HashMap结构的Key就是HashSet存储的数据,HashMap结构的Value则是一个固定对象记为“PRESENT”:

2020-03-02 19:44:41 2108 1

原创 源码阅读(25):Java中主要的Set结构——概述

而我们在介绍Set集合前,先介绍Java中多个原生的Map容器,是因为Java中多个原生的Set集合都依赖于对应的Map容器进行实现。例如后文将要介绍的HashSet集合,其内部主要依赖于HashMap进行实现,前者的子类LinkedHashSet也是如此;

2020-01-11 18:56:03 3168 1

原创 源码阅读(24):Java中其它主要的Map结构——LinkedHashMap容器(下)

LinkedHashMap容器是Java容器框架中从很早的版本就开始提供的(JDK 1.4+),该容器又被这样认为:“LinkedHashMap = HashMap + LinkedList”。

2020-01-05 18:52:44 2534

原创 源码阅读(23):Java中其它主要的Map结构——LinkedHashMap容器(上)

LinkedHashMap容器是Java容器框架中从很早的版本就开始提供的(JDK 1.4+),该容器又被这样认为:“LinkedHashMap = HashMap + LinkedList”。

2019-12-19 21:55:12 2364

原创 源码阅读(22):Java中其它主要的Map结构——TreeMap容器(2)

在Java自带的Map容器中,HashMap容器就是基准,构成这个基准容器的数据组织结构包括三个要素:数组、链表和红黑树。也就是说如果读者想彻底了解Java自带的Map容器的工作细节,就必须清楚掌握HashMap容器的工作细节,然后在这个基础上再进行“知识移植”即可。从本章节开始,我们将对Java自带的除HashMap以外的多种Map容器进行介绍,因为有了HashMap容器的知识基础,所以这些容器的讲解只会重点说明在设计上有差异的地方。

2019-12-11 15:44:06 2517

原创 源码阅读(21):Java中其它主要的Map结构——TreeMap容器(1)

在Java自带的Map容器中,HashMap容器就是基准,构成这个基准容器的数据组织结构包括三个要素:数组、链表和红黑树。也就是说如果读者想彻底了解Java自带的Map容器的工作细节,就必须清楚掌握HashMap容器的工作细节,然后在这个基础上再进行“知识移植”即可。从本章节开始,我们将对Java自带的除HashMap以外的多种Map容器进行介绍,因为有了HashMap容器的知识基础,所以这些容器的讲解只会重点说明在设计上有差异的地方。

2019-11-30 22:48:38 2335 2

原创 源码阅读(20):Java中主要的Map结构——HashMap容器(下2)

HashMap容器从字面的理解就是,基于Hash算法构造的Map容器。从数据结构的知识体系来说,HashMap容器是散列表在Java中的具体表达(并非线性表结构)。具体来说就是,利用K-V键值对中键对象的某个属性(默认使用该对象的“内存起始位置”这一属性)作为计算依据进行哈希计算(调用hashCode方法),然后再以计算后的返回值为依据,将当前K-V键值对在符合HashMap容器构造原则的基础上,放置到HashMap容器的某个位置上,且这个位置和之前添加的K-V键值对的存储位置完全独立,不一定构成连续的存储

2019-11-13 09:34:29 2271 3

原创 源码阅读(19):Java中主要的Map结构——HashMap容器(下1)

HashMap容器从字面的理解就是,基于Hash算法构造的Map容器。从数据结构的知识体系来说,HashMap容器是散列表在Java中的具体表达(并非线性表结构)。具体来说就是,利用K-V键值对中键对象的某个属性(默认使用该对象的“内存起始位置”这一属性)作为计算依据进行哈希计算(调用hashCode方法),然后再以计算后的返回值为依据,将当前K-V键值对在符合HashMap容器构造原则的基础上,放置到HashMap容器的某个位置上,且这个位置和之前添加的K-V键值对的存储位置完全独立,不一定构成连续的存储

2019-11-11 19:36:18 9571

原创 源码阅读(18):Java中主要的Map结构——HashMap容器(中)

HashMap容器从字面的理解就是,基于Hash算法构造的Map容器。从数据结构的知识体系来说,HashMap容器是散列表在Java中的具体表达(并非线性表结构)。具体来说就是,利用K-V键值对中键对象的某个属性(默认使用该对象的“内存起始位置”这一属性)作为计算依据进行哈希计算(调用hashCode方法),然后再以计算后的返回值为依据,将当前K-V键值对在符合HashMap容器构造原则的基础上,放置到HashMap容器的某个位置上,且这个位置和之前添加的K-V键值对的存储位置完全独立,不一定构成连续的存储

2019-10-24 22:56:14 2416

原创 源码阅读(17):红黑树在Java中的实现和应用

红黑树又叫做自平衡二叉查找树,由于其稳定的查找特性,红黑树在Java中有广泛的应用——例如我们将要讲解的TreeMap容器和当前讲解的HashMap容器中都有对红黑树的应用。红黑树的操作原理相对于我们已经讲解过的堆树要复杂一些,但也并不是说无法理解,读者只需要跟随本节的介绍思路进行理解,并自行动手对其中提到的关键点进行验证,即可掌握红黑树的基本原理。

2019-10-13 12:04:24 2264

原创 源码阅读(16):Java中主要的Map结构——HashMap容器(上)

HashMap容器从字面的理解就是,基于Hash算法构造的Map容器。从数据结构的知识体系来说,HashMap容器是散列表在Java中的具体表达(并非线性表结构)。

2019-09-29 23:46:44 1864 1

原创 源码阅读(15):Java中主要的Map结构——概述

Map结构同样属于Java Collections Framework的知识范畴,但是代表Map结构的顶级接口java.util.Map并没有继承java.util.Collection接口。这是因为Map结构属于映射式容器,既是一个Key键对应一个Value值(所以称为键值对),且同一个容器中不能出现两个相同的Key键信息。

2019-09-29 23:45:44 2616

原创 源码阅读(14):Java中主要的Queue、Deque结构——PriorityQueue集合(下)

PriorityQueue集合是线程不安全的,但这不影响它成为Java体系统非常重要的Quere性质的集合。PriorityQueue集合很好展示了树结构向数组结构的降维,并如何将其引入到实现中的方式。

2019-09-09 16:08:01 1850

原创 源码阅读(13):Java中主要的Queue、Deque结构——PriorityQueue集合(中)

PriorityQueue集合是线程不安全的,但这不影响它成为Java体系统非常重要的Quere性质的集合。PriorityQueue集合很好展示了树结构向数组结构的降维,并如何将其引入到实现中的方式。

2019-09-09 16:05:52 1455

原创 源码阅读(12):Java中主要的Queue、Deque结构——PriorityQueue集合(上)

PriorityQueue集合是线程不安全的,但这不影响它成为Java体系统非常重要的Quere性质的集合。PriorityQueue集合很好展示了树结构向数组结构的降维,并如何将其引入到实现中的方式。

2019-08-26 09:47:19 2293

原创 源码阅读(11):Java中主要的Queue、Deque结构——ArrayDeque集合(下)

在Java体系中凡是具有队列操作特定的集合结构,都实现或者间接实现了java.util.Queue接口;凡是具有双端队列操作特性的集合结构,都实现或者间接实现了java.util.Deque接口。

2019-08-15 20:54:00 1859 1

原创 源码阅读(10):Java中主要的Queue、Deque结构——ArrayDeque集合(上)

在Java体系中凡是具有队列操作特定的集合结构,都实现或者间接实现了java.util.Queue接口;凡是具有双端队列操作特性的集合结构,都实现或者间接实现了java.util.Deque接口。

2019-08-09 09:20:21 2045

原创 源码阅读(9):Java中主要的Queue、Deque结构——概述

在Java体系中凡是具有队列操作特定的集合结构,都实现或者间接实现了java.util.Queue接口;凡是具有双端队列操作特性的集合结构,都实现或者间接实现了java.util.Deque接口。

2019-08-09 09:18:25 1769

原创 源码阅读(8):Java中主要的List、Deque结构——LinkedList集合(下)

典型的数据结构中,对于“表”结构的定义是:在一维空间下元素按照某种逻辑结构进行线性连接排列的数据结构(一对一)。java中集合定义中所包括的链表(ArrayList)、链表(LinkedList)、各种队列(Queue/Deque)、栈(Stack)等都满足这样的定义。本文及后续的几篇文章中将介绍Java集合结构中关于List接口、Queue接口、Set接口下的重要实现类。注意,关于java.util.concurrent包下对于List接口、Queue接口和Set接口实现类的介绍,将在后续专门的文章介绍

2019-07-17 14:47:55 2168 5

原创 源码阅读(7):Java中主要的List、Deque结构——LinkedList集合(中)

典型的数据结构中,对于“表”结构的定义是:在一维空间下元素按照某种逻辑结构进行线性连接排列的数据结构(一对一)。java中集合定义中所包括的链表(ArrayList)、链表(LinkedList)、各种队列(Queue/Deque)、栈(Stack)等都满足这样的定义。本文及后续的几篇文章中将介绍Java集合结构中关于List接口、Queue接口、Set接口下的重要实现类。注意,关于java.util.concurrent包下对于List接口、Queue接口和Set接口实现类的介绍,将在后续专门的文章介绍

2019-07-10 22:50:46 2918 14

原创 源码阅读(6):Java中主要的List、Deque结构——LinkedList集合(上)

典型的数据结构中,对于“表”结构的定义是:在一维空间下元素按照某种逻辑结构进行线性连接排列的数据结构(一对一)。java中集合定义中所包括的链表(ArrayList)、链表(LinkedList)、各种队列(Queue/Deque)、栈(Stack)等都满足这样的定义。本文及后续的几篇文章中将介绍Java集合结构中关于List接口、Queue接口、Set接口下的重要实现类。注意,关于java.util.concurrent包下对于List接口、Queue接口和Set接口实现类的介绍,将在后续专门的文章介绍

2019-07-03 21:12:08 3469 2

原创 源码阅读(5):Java中主要的List结构——Stack集合

典型的数据结构中,对于“表”结构的定义是:在一维空间下元素按照某种逻辑结构进行线性连接排列的数据结构(一对一)。java中集合定义中所包括的链表(ArrayList)、链表(LinkedList)、各种队列(Queue/Deque)、栈(Stack)等都满足这样的定义。本文及后续的几篇文章中将介绍Java集合结构中关于List接口、Queue接口、Set接口下的重要实现类。注意,关于java.util.concurrent包下对于List接口、Queue接口和Set接口实现类的介绍,将在后续专门的文章介绍

2019-06-28 21:03:41 1794 4

原创 源码阅读(4):Java中主要的List结构——ArrayList集合(下)

典型的数据结构中,对于“表”结构的定义是:在一维空间下元素按照某种逻辑结构进行线性连接排列的数据结构(一对一)。java中集合定义中所包括的链表(ArrayList)、链表(LinkedList)、各种队列(Queue/Deque)、栈(Stack)等都满足这样的定义。本文及后续的几篇文章中将介绍Java集合结构中关于List接口、Queue接口、Set接口下的重要实现类。注意,关于java.util.concurrent包下对于List接口、Queue接口和Set接口实现类的介绍,将在后续专门的文章进行介

2019-06-20 23:10:25 2436 2

原创 源码阅读(3):Java中主要的List结构——ArrayList集合(上)

典型的数据结构中,对于“表”结构的定义是:在一维空间下元素按照某种逻辑结构进行线性连接排列的数据结构(一对一)。java中集合定义中所包括的链表(ArrayList)、链表(LinkedList)、各种队列(Queue/Deque)、栈(Stack)等都满足这样的定义。本文及后续的几篇文章中将介绍Java集合结构中关于List接口、Queue接口、Set接口下的重要实现类。注意,关于java.util.concurrent包下对于List接口、Queue接口和Set接口实现类的介绍,将在后续专门的文章进行介

2019-06-20 23:09:08 3925 9

原创 源码阅读(2):Java中主要的List结构——Vector集合

典型的数据结构中,对于“表”结构的定义是:在一维空间下元素按照某种逻辑结构进行线性连接排列的数据结构(一对一)。java中集合定义中所包括的链表(ArrayList)、链表(LinkedList)、各种队列(Queue/Deque)、栈(Stack)等都满足这样的定义。本文及后续的几篇文章中将介绍Java集合结构中关于List接口、Queue接口、Set接口下的重要实现类。注意,关于java.util.concurrent包下对于List接口、Queue接口和Set接口实现类的介绍,将在后续专门的文章进行介

2019-06-10 23:47:42 3120 2

原创 源码阅读(1):Java中主要的List结构——概述

典型的数据结构中,对于“表”结构的定义是:在一维空间下元素按照某种逻辑结构进行线性连接排列的数据结构(一对一)。java中集合定义中所包括的链表(ArrayList)、链表(LinkedList)、各种队列(Queue/Deque)、栈(Stack)等都满足这样的定义。本文及后续的几篇文章中将介绍Java集合结构中关于List接口、Queue接口、Set接口下的重要实现类。

2019-06-10 23:44:49 6961 3

原创 Java并发基石——所谓“阻塞”:Object Monitor和AQS(3)

上文我们较为详细的介绍了Java线程调度中的Object Monitor机制以及其工作情况,本文我们开始介绍Java线程调度中的另一种实现机制AQS,包括它的使用方式和底层工作原理。

2019-01-16 20:43:22 3138 7

基于业务抽象设计思想完成的Flink流式处理示例

该实例主要配合 《软件设计不是CRUD(21):在流式数据处理系统中进行业务抽象落地——需求分析》 《软件设计不是CRUD(22):在流式数据处理系统中进行业务抽象落地——设计思考》 《软件设计不是CRUD(23):在流式数据处理系统中进行业务抽象落地——详细编码》 这三篇文章进行代码落地的详细讲解。 其中的示例主要内容是多种测速雷达的数据收集和数据清洗、数据落库工作。 注意,其中的kafka、flink集群都需要读者自行进行安装,然后可用本源代码进行打包运行。

2024-06-18

使用业务抽象思想设计的具有低耦合性的组织机构模块(示例)

对应业务抽象专栏低6、7、8三篇文章 其中有两个目录 simple-org:存放示例组织机构模块的完整代码 simple-for-org-boot:存放应用程序启动脚手架(使用spring-boot)

2023-12-11

命令模式实现事务补偿2

这个是最新的版本,之前那个上传的资源不完善,请不要下载。这是一个使用命令模式自行实现的事务补偿机制,用于跨平台多原子服务协调调用异常时的逆向操作。

2017-02-08

命令模式实现事务补偿

这是一个使用命令模式自行实现的事务补偿机制,用于跨平台多原子服务协调调用异常时的逆向操作。

2017-02-03

图片服务系统工程代码

这个图片服务系统工程代码配合我的博文http://blog.csdn.net/yinwenjie/article/details/54016015进行下载阅读。

2017-01-18

自己设计ESB组件的主要代码

这个资源是我的专题“系统间通信”中第41篇到44篇文章的主要代码。其中包含了ESB-Client的主要代码和ESB-Broker的主要代码。详细的资源说明可以查看我的博客:http://blog.csdn.net/yinwenjie/article/details/52141093

2016-08-11

OASIS Advanced Message Queueing Protocol (AMQP) Version 1.0

ISO/IEC组织定义的AMQP协议的标准规范。目前版本号为version 1.0

2016-03-14

zookeeper + thrift实现的RPC 服务治理框架演示

服务治理框架,一般存在与RPC的上一层,用来在大量RPC服务至上,协调客户端和服务器的调用工作。这个示例工程和我的博客《架构设计:系统间通信(13)——RPC实例Apache Thrift 下篇》(http://blog.csdn.net/yinwenjie/article/details/49869535)相对应。相关的设计和代码说明,请参见我的博客。另外,工程已经测试过了,可以直接下载导入eclipse运行,您需要maven的支持。

2015-11-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除