自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 ConcurrentHashMap源码阅读03

为了更快速方便地理解ConcurrentHashMap的设计原理,这篇文章我们主要从以下几个视角来探讨ConcurrentHashMap的内部实现:内部结构、初始化、put操作的不同情况、扩容流程、线程安全及红黑树的转化等。

2019-11-26 17:17:15 465

原创 ConcurrentHashMap源码阅读02

在上一篇我们介绍了ConcurrentHashMap的常量、存储单元及成员变量。今天我们就结合测试案例来探究一下ConcurrentHashMap中put方法的实现原理。

2019-10-16 20:35:39 195

原创 Jenkins自动化部署纪实

1、一个大小写引发的血案之前在项目中,因为不小心提交了一个首字母本应该为大写的Java文件,因疏忽导致提交了小写代码,后面改成大写后使用Jenkins自动构建时编译报错:这个问题怎么产生的,这个我没有去研究,估计和git的原理有关。现将现象描述如下:在IDEA上面是正常的为大写,看不到小写文件,码云仓库中看到的也是正常的大写,看不到小写文件。但是,单独对项目进行git clon...

2019-07-02 21:28:04 241

原创 ConcurrentHashMap源码阅读01

之前我们阅读了HashMap等集合框架的源码,这次我们把视线转移到java.util.concurrent上,探索下包括ConcurrentHashMap在内的JUC框架的奥秘。

2019-06-09 18:04:59 246

原创 Hashtable源码阅读

我们之前已经阅读过HashMap的源码了,我们知道Hashtable与HashMap都可以用来存储<K,V>键值对,但是HashMap相对高效,而Hashtable可以保证线程安全。那么接下来我们就一起深入Hashtable的源码来一探究竟。

2019-06-03 23:25:00 162

原创 HashSet源码阅读

之前我们研究了HashMap的源码,那么接下来我们趁热打铁来看下HashSet的源码中有什么奥妙。

2019-06-03 20:12:58 500

原创 LinkedList源码阅读

我们之前已经进行过ArrayList的源码阅读,我们知道,同样继承了List接口的LinkedList,比起ArrayList而言,LinkedList在新增元素和删除元素时表显要好,那么今天我们就一起看看LinkedList源码中蕴含了什么秘密。

2019-06-03 17:33:17 96

原创 HashMap源码阅读08

之前的HashMap源码阅读系列给我们呈现了HashMap内部的基本结构,还有扩容条件及过程分析等,今天我们就来进行一个整体的总结,主要包括与JDK1.7的对比和主要方法的流程总结。

2019-06-01 21:41:43 136

原创 HashMap源码阅读07

上一篇我们研究了treeifyBin方法,发现在链表长度超过8并且节点数组长度超过64时,HashMap会将链表转化成一条双向链表,再将这条双向链表转化成一棵红黑树。这一篇文章我们就一起来看下HashMap是如何将双向链表转化成红黑树的。

2019-05-31 10:57:39 144

原创 红黑树(Red-Black Tree)

由于上篇文章《HashMap源码阅读06》中,我们提到了红黑树的概念。今天我们就来了解下红黑树,对它有一个基本的认识。

2019-05-30 22:18:23 249

原创 HashMap源码阅读06

上篇文章中介绍了treeifyBin方法,我们找到了另一个引起HashMap扩容的原因。这次我们一起来看下treeifyBin方法除了扩容之外,还能做什么事。

2019-05-28 17:41:36 196 1

原创 HashMap源码阅读05

记得上一篇文章中,提到了一段代码:treeifyBin(tab, hash);这次我们就来看看,这个方法做了什么。

2019-05-28 11:45:48 104

原创 HashMap源码阅读04

上一篇文章我们呈现了HashMap在扩容时对链表节点的处理过程,这篇文章我们就对其中规律一探究竟。

2019-05-28 10:22:01 314

原创 HashMap源码阅读03

上篇文章中我们研究了当HashMap调用put方法,出现“hash冲突”时的处理机制。我们在整理HashMap的内部存储结构的基础上进一步呈现了当HashMap在扩容时,原有链表结构上的节点是如何处理的过程。

2019-05-27 16:54:05 102

原创 HashMap源码阅读02

上篇文章《HashMap源码阅读01》中记录了一个问题,当HashMap依次put键值对时,并没有按照由小到大的顺序排列,而是跳过了中间几个数字,今天我们就来一探究竟

2019-05-27 12:23:40 293 2

原创 HashMap源码阅读01

本篇文章介绍了JDK1.8中HashMap的内部结构及各种条件下调用put方法HashMap的行为。另外通过对HashMap的源码进行阅读,整理了部分注释及翻译,附在文章末尾。

2019-05-25 10:40:18 260

原创 ArrayList源码阅读

ArrayList源码阅读前言get方法add方法前言根据jdk8中ArrayList源码注释得知:对ArrayList源码注释进行阅读:Resizable-array implementation of the List interface. Implementsall optional list operations, and permits all elements, inclu...

2019-05-23 17:32:08 117

原创 单例模式的实现及其演变

单例模式的实现及其演变前言单例模式的结构演变1、饿汉式单例2、懒汉式单例类与双重检查锁定3、使用静态内部类实现单例模式前言单例模式是结构最简单的设计模式,在它的核心结构中只包含一个被称为单例类的特殊类。作为一种目标明确、结构简单、理解容易的设计模式,在软件开发中的使用频率相当高,在很多应用软件和框架中都得以广泛应用。单例模式的结构单例模式的结构图如下:其Java代码实现如下:pub...

2019-05-12 23:55:35 354

原创 UML类图

UML类图UML概述类与类的UML表示1、类2、类的UML图示类之间的关系1、关联关系Ⅰ双向关联Ⅱ 单向关联Ⅲ 自关联Ⅳ 多重性关联Ⅴ 聚合关系Ⅵ 组合关系2、依赖关系3、泛化关系4、接口与实现关系UML概述UML(Unified Modeling Language,统一建模语言)是当前面向对象软件系统建模的标准语言,适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具...

2019-05-12 18:12:00 2097

原创 对原型模式的思考01

原型模式中,我们可以利用序列化与反序列化来实现深克隆机制,利用这种方式得到的克隆对象是否与原对象有着不同的内存地址?来,我们验证一下!

2019-05-12 12:04:38 111

转载 Java设计模式之访问者模式

Java设计模式之访问者模式前言正文一、定义二、结构三、实现四、访问者模式与组合模式联用五、访问者模式优缺点与适用环境优点缺点适用环境前言访问者模式包括访问者和被访问者元素两个主要组成部分,这些被访问的元素具有不同的类型,且不同的访问者可以对其施加不同的访问操作。访问者模式使得用户可以在不修改现有系统的情况下扩展系统的功能,为这这些不同类型的元素增加新的操作。正文一、定义定义如下:访...

2019-04-17 16:31:01 151

转载 Java设计模式之模板方法模式

Java设计模式之模板方法模式前言正文一、定义二、结构三、实现1、模板方法2、基本方法两类钩子方法四、模板方法模式优缺点与适用环境优点缺点适用环境前言模板方法模式是结构最简单的行为型设计模式,它是一种类型为模式,在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式可以将一些复杂的流程的实现步骤封装在一系列基本方法中,在抽象父类中提供了一个称为模板方法的方法来定义这些基本方法的执行次序...

2019-04-17 12:06:13 277

转载 Java设计模式之策略模式

Java设计模式之策略模式前言正文一、定义二、结构三、实现四、Java SE中的布局管理五、策略模式优缺点与适用环境优点缺点适用环境前言策略模式对应于解决某一问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便地更换算法或者增加新的算法。策略模式实现了算法定义和算法使用的分离,它通过继承和多态的机制实现对算法族的使用和管理,是一个简单、实用的设计模式。正文一、定义...

2019-04-17 10:50:21 127

转载 Java设计模式之状态模式

Java设计模式之状态模式前言正文一、定义二、结构三、实现四、共享状态五、使用环境类实现状态转换六、状态模式优缺点与适用环境优点缺点适用环境前言状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。当系统中的某个对象存在多个状态,这些状态之间可以进行转换,而且对象在不同状态下行为不相同时可以使用状态模式。正文状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,...

2019-04-17 09:41:20 142

转载 Java设计模式之观察者模式

Java设计模式之观察者模式前言正文一、定义二、结构三、实现四、JDK对观察者模式的支持1、Observer接口2、Observable类五、观察者模式与Java事件处理六、观察者模式与MVC七、观察者模式优缺点与适用环境优点缺点适用环境前言观察者模式用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。在观察者模式中发生改变的对象称为观察目标,而...

2019-04-16 21:24:31 99

转载 Java设计模式之备忘录模式

Java设计模式之备忘录模式前言正文一、定义二、结构三、实现四、实现多次撤销五、备忘录优缺点与适用环境优点缺点适用环境前言备忘录模式是软件系统的“月光宝盒”,它提供了一种对象状态的撤销实现机制,当系统中的某个对象需要恢复到某一历史状态时可以使用备忘录模式进行设计。正文一、定义定义如下:备忘录模式: 在不破坏封装的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以...

2019-04-16 20:17:29 335

转载 Java设计模式之中介模式

Java设计模式之中介模式前言正文一、定义二、结构三、实现四、扩展中介者与同事类五、中介者模式优缺点与适用环境优点缺点适用环境前言对于那些对象之间存在复杂交互关心的系统,中介者模式提供了 一种简化复杂交互的解决方案,它通过引入中介者将原本对象之间的两两交互转化为每个对象与中介者之间的交互,中介者可以对对象之间的通信进行控制与协调,降低原有系统的耦合度,使得系统更加灵活,也更易于扩展。正文如...

2019-04-16 18:59:24 100

转载 Java设计模式之迭代器模式

Java设计模式之迭代器模式前言正文一、定义二、结构三、实现四、使用内部类实现迭代器五、Java内置迭代器六、迭代器模式优缺点与适用环境优点缺点适用环境前言迭代器用于对一个聚合对象进行遍历。通过引入迭代器可以将数据的遍历功能从聚合对象中分离出来,聚合对象只负责存储数据,而遍历数据由迭代器完成,简化了聚合对象的设计,更符合单一职责原则的要求。正文在软件系统中,聚合对象拥有两个职责:一是存储数...

2019-04-16 17:18:15 338

转载 Java设计模式之解释器模式

Java设计模式之解释器模式前言正文一、定义二、文法规则和抽象语法树三、结构四、实现五、解释器模式优缺点与适用环境优点缺点适用环境前言解释器模式用于描述如何构成一个简单的语言解释器,主要应用于使用面向对象语言开发的解释器的设计。当需要开发一个新的语言时可以考虑使用解释器模式。正文在某些情况下,为了更好地描述某些特定类型的问题可以创建一种新的语言,这种语言拥有自己的表达式和结构,即文法规则,...

2019-04-16 16:18:53 743

转载 Java设计模式之命令模式

Java设计模式之命令模式前言正文一、定义二、结构三、实现四、实现命令队列五、记录请求日志六、宏命令七、命令模式优缺点与适用环境优点缺点适用环境前言命令模式是常用的行为型设计模式之一,它将请求发送者与请求接收者解耦,请求发送者通过命令对象来间接引用接收者,使得系统具有更好的灵活性,可以在不修改现有系统源代码的情况下让相同的发送者对应不同的接收者。正文命令模式可以将请求发送者和接收者完全解耦...

2019-04-16 11:18:11 322

转载 Java设计模式之职责链模式

Java设计模式之职责链模式前言正文一、定义二、结构三、实现四、纯与不纯的职责链模式1、纯的职责链模式2、不纯的职责链模式五、职责链模式优缺点与适用环境优点缺点适用环境前言在系统中如果存在多个对象可以处理同一请求,则可以通过职责链模式将这些处理请求的对象连成一条链,让请求沿着该链进行传递。如果链上的对象可以处理该请求则进行处理,否则将请求转发给下家来处理。职责链模式可以将请求的发送者和接收者解...

2019-04-15 19:05:36 333

转载 Java设计模式之代理模式

Java设计模式之代理模式前言正文一、定义二、结构三、实现四、远程代理五、虚拟代理六、Java动态代理1、Proxy类2、InvocationHandler接口七、代理模式优缺点与适用环境优点缺点适用环境前言代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。...

2019-04-15 13:34:18 112

转载 Java设计模式之享元模式

Java设计模式之享元模式前言正文一、享元池二、享元的内部状态和外部状态三、定义四、结构五、实现六、单纯享元模式与复合享元模式1、单纯享元模式2、复合享元模式七、享元模式与String类八、享元模式优缺点与适用环境优点缺点适用环境前言当系统中存在大量相同或者相似的对象时,享元模式是一种值得考虑的解决方案,它通过 共享技术实现相同或相似的细粒度对象的复用,从而节约了内存空间、提高了系统性能。在享...

2019-04-13 20:38:25 436

转载 Java设计模式之外观模式

Java设计模式之外观模式前言正文一、定义二、实现三、抽象外观类四、外观模式优缺点与适用环境优点缺点适用环境前言外观哦是是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,使子系统与客户端的耦合度降低,且客户端调用非常方便。正文在外观模式中,一个子系统的外部与其内部的通信通过一个统一的外观类进行,外观类将客户类与...

2019-04-12 18:24:37 334

转载 Java设计模式之装饰模式

Java设计模式之装饰模式前言正文一、定义二、结构三、实现四、透明装饰模式与半透明装饰模式1、透明装饰模式2、半透明装饰模式五、装饰模式优缺点与适用环境优点缺点适用环境前言装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。装饰模式降低了系统的耦合度,可以动态增加或删除对象的职责,并使需要装饰的具体构件类和用于装饰的具...

2019-04-12 16:34:27 496

转载 Java设计模式之组合模式

Java设计模式之组合模式前言正文一、定义二、结构三、实现四、透明组合模式与安全组合模式1、透明组合模式2、安全组合模式五、组合模式优缺点与适用环境优点缺点适用环境前言组合模式关注那些包含叶子构件和容器构件的结构以及它们的组织形式,在叶子构件中不包含成员对象,而容器构件中可以包含成员对象,这些对象通过递归组合可构成一个树形结构。组合模式使用面向对象的方式来处理树形结构,它为叶子构件和容器构件提...

2019-04-12 12:55:24 148

转载 Java设计模式之桥接模式

Java设计模式之桥接模式前言正文一、定义二、结构三、实现四、桥接模式与适配器模式的联用五、桥接模式优缺点与适用环境优点缺点适用环境前言桥接模式是一种很实用的结构型设计模式,如果系统中的某个类存在两个独立变化的维度,通过桥接模式可以将这两个维度分离出来,使两者可以独立扩展。桥接模式用一种巧妙的方式处理多层继承存在的问题,用抽象关联来取代传统的多层继承,将类之间的静态继承关系转换为动态的对象组合...

2019-04-11 21:33:48 272 1

转载 Java设计模式之适配器模式

Java设计模式之适配器模式前言正文一、定义二、分类三、结构四、缺省适配器模式五、双向适配器六、适配器模式优缺点与适用环境优点类适配器模式:对象适配器模式:缺点类适配器模式:对象适配器模式:适用环境前言适配器模式是一种使用频率非常高的结构型设计模式,如果系统中存在不兼容的接口,可以通过引入一个适配器来使原本因为接口不兼容而不能在一起工作的两个类能够协同工作。在GoF设计模式中包含7种结构型模...

2019-04-11 17:22:40 306

转载 Java设计模式之单例模式

Java设计模式之单例模式前言正文一、定义二、要点三、单例模式的实现四、饿汉式单例与懒汉式单例1、饿汉式单例类2、懒汉式单例类与双重检查锁定3、饿汉式单例类与懒汉式单例类的比较4、使用静态内部类实现单例模式五、单例模式优缺点与适用环境优点缺点适用环境前言单例 模式是结构最简单的设计模式,在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以确保系统中的一个类只有一个实例而且该实例易于...

2019-04-11 15:39:18 298

转载 Java设计模式之原型模式

Java设计模式之原型模式前言正文一、定义二、工作原理三、结构四、浅克隆与深克隆1、浅克隆2、深克隆五、原型模式实现1、通用实现方法2、Java语言中的clone()方法和Cloneable接口3、深克隆解决方案4、原型管理器六、原型模式优缺点与适用环境优点缺点适用环境前言原型模式是一种特殊的创建型模式,它通过复制一个已有对象来获取更多相同或相似的对象。原型模式可以提高相同类型对象的创建效率,...

2019-04-11 11:53:31 436

空空如也

空空如也

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

TA关注的人

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