自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

转载 JDK中注解的底层实现

转载自https://www.throwable.club/2020/03/16/annotation-implementation/ 前提 用Java快三年了,注解算是一个常用的类型,特别是在一些框架里面会大量使用注解做组件标识、配置或者策略。但是一直没有深入去探究JDK中的注解到底是什么,底层是怎么实现了?于是参考了一些资料,做了一次稍微详细的分析。 JDK的注解描述 参考JavaSE-8里面的JLS-9.6对注解的描述如下: 注解的声明如下: {InterfaceModifier} @ inter

2020-06-22 16:35:50 243

原创 第十三章 建造者模式(Builder)

建造者模式的定义与特点 定义:将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建出不同的表示。 特点:建造者模式可以将一个产品的内部表象和生产过程相分离,从而可以通过一个建造过程而创建出不同内部表象的产品对象。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。 如果使用建造者模式,那么用户就只需...

2020-04-19 23:15:36 189

原创 第十二章 外观模式 (Facade)

外观模式的定义 外观模式又称为门面模式。其定义为:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。此模式是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。 外观(Facade)模式是“迪...

2020-04-18 21:40:42 170

原创 第十一章 迪米特法则

迪米特法则的定义 迪米特法则又可以称为***最少知道法则***。其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。 迪米特法则的实现方法 从迪米特法则的定义和特点可知,它强调以下两点: 从依赖者的角度来说,只依赖应该依赖的对象。 从被依赖者的角度说,只暴露应该暴露的方法。 所以,在运用迪米特...

2020-04-16 20:33:33 174

原创 第十章 模板方式模式 (Template Methods)

模板方法模式的定义和特点 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。当我们要完成在某一细节层次一致的一个过程或者一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,可以考虑用模板方法模式来处理。 该模式的主要优点如下。 它封装了不变...

2020-04-13 23:00:36 163

原创 第九章 原型模式 (Prototype)

原型模式的定义与特点 原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。 原型模式的结构与实现 模式的结构 原型模式包含以下主要角色。 抽象原型类:规定了具体原型对象必须实现的接口。 具体原型类:实现抽象原型类的 clone...

2020-04-12 20:11:35 135

原创 第八章 工厂方法模式 (Factory Method)

问题引入 在第四章的学习中,我们了解到了***开闭原则***,既对修改关闭,对扩展开放。反过头来去看第一章的简单工厂模式,其中的工厂类,代码如下: public class OperatorFactory { public Operator getOperator(String operator) { if ("+".equals(operator)) { ...

2020-04-11 20:52:42 201

原创 第七章 代理模式 (Proxy)

代理模式的定义与特点 代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 代理模式的主要优点有: 代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用; 代理对象可以扩展目标对象的功能; 代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度; 其主要缺点 ...

2020-04-10 20:17:47 269

原创 第六章 装饰器模式 (Decorator)

装饰模式的定义与特点 装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。 装饰(Decorator)模式的主要优点有: 采用装饰模式扩展对象的功能比采用继承方式更加灵活。 可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。 其主要缺点是: 装饰模式增加了许多子类,如果过度使用会使程序变得很复...

2020-04-09 20:41:33 306

原创 第五章 里氏替换原则和依赖倒置原则

里氏替换原则的定义 里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在 1987 年的“面向对象技术的高峰会议”(OOPSLA)上发表的一篇文章《数据抽象和层次》(Data Abstraction and Hierarchy)里提出来的,她提出:继承必须确保超类所拥有的性质在子类中仍然成立(Inherit...

2020-04-08 21:39:56 330

原创 第四章 开放封闭原则

开闭原则的定义 开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:软件实体应当对扩展开放,对修改关闭(Software entities should be open for extension,but c...

2020-04-07 21:13:57 141

原创 第三章 单一职责原则

定义 单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则,由罗伯特·C.马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中提出的。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分(There should never be more than one reason...

2020-04-06 19:39:27 294

原创 第二章 策略模式 (Strategy)

问题引入 假设说,现在我们需要给超市的收银员写一款计算器,能让他们计算出顾客所购买商品的总价格,其中每种商品有不同的价格和数量。需求只有这些的话,这个计算器比较容易写: public class Cashier { public static void main(String[] args) { Scanner scanner = new Scanner(System.i...

2020-04-05 21:40:07 170

原创 第一章 简单工厂模式 (Simple Factory)

问题引入 如果说要通过代码写一个计算器,来代替加减乘除的笔算。那该怎么写呢?比如说可以写成这样: public class Calculator { public static void main(String[] args) { double firstNumber = 0, secondNumber = 0; String sign = null; ...

2020-04-04 18:56:03 134

java并发编程的艺术

java并发编程的艺术高清版。腾飞兄弟的《聊聊并发》系列文章从发布以来一直高居InfoQ中文站浏览量的前列,每篇文章之后都有大量的读者评论,或是提问,或是补充相关知识,腾飞兄弟也都非常耐心地对读者的问题进行解答。并发是一个学科,Java中也有自己的一套处理并发的框架与体系;不过遗憾的是,很多读者对这一领域知之甚少,这也直接造成了很多人并不了解有关并发的理论与实践知识。幸运的是,腾飞的《聊聊并发》系列文章非常完美地填补了这一空白,文章从synchronized关键字、volatile实现原理到ConcurrentHashMap、ConcurrentLinkedQueue源码分析,再到阻塞队列和Fork/Join框架,为读者献上了一道丰盛的Java并发大餐。

2019-03-19

空空如也

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

TA关注的人

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