- 博客(11)
- 收藏
- 关注
原创 ArrayList核心源码分析
ArrayList核心源码分析类继承图ArrayList实现了3个标记接口,RandomAccess、Cloneable、SerializableRandomAccess 随机访问(下标访问),更好的判断集合是ArrayList还是LinkedList,从而选择更好的遍历方式,提高性能Cloneable支持克隆机制Serializable 通知JVM对类进行序列化字段分析private static final long serialVersionUID = 86834525811
2021-07-29 15:27:04 105
原创 Java运算符
最近经常看到有人问,我这个判断明明是true为啥不进if判断啊诸如此类的问题。其根本原因是没有掌握Java运算符的优先级。现在我们一起来看下Java运算符的优先级在判断的时候我们常用的是 && 和 || ,从上图我们可以看到 &&与的优先级是高于||的,而()是优先级最高的,下面看个例子: int a = 2; int b = 3; int c = 2; int d = 3; ..
2021-07-13 15:59:54 96
原创 Spring源码编译
攻读Spring源码是作为高级Java开发必须经历的一道坎~而阅读Spring源码最好的方式就是去Spring官网把源码down下来,这样的好处是可以根据自己的理解做一些笔记,日后看到也会有成就感。经过了1个多小时的折腾,总算是把Spring源码编译并成功运行,在此记录一下...
2021-04-14 15:52:03 161 1
原创 二十三种设计模式之装饰器模式
上一篇文章我们一起探讨了代理模式,其主要目的是给目标类增强功能(没看的欢迎前往学习一下),属于结构型设计模式。今天给大家带来的是装饰器模式,它同样也是结构型设计模式,并且和代理模式在功能上有很多相通之处。装饰器模式顾名思义,指的是为一个基础类进行装饰,能够在程序运行时动态的为目标类增强功能,实现了比继承更为弹性的增强功能的作用。装饰器模式最重要第一个点就是这些类都是同根同源的,待会详见代码。装饰器模式的主要角色有:抽象组件、具体组件(被装饰加强的类)、抽象装饰器和具体装饰器(可看作一个个
2021-04-13 18:24:13 148
原创 二十三种设计模式之代理模式
今天来一起探讨下GOF二十三种设计模式的代理模式。代理模式是一种结构型设计模式,也是设计模式中较为重要的一种,原因在于代理模式(动态代理)可以自动帮我们的类增强功能,并且很多框架底层大量使用了代理模式,例如Spring的AOP等。在讲代理模式前,我有必要提一下代理和委托。相信大家看了很多网上代理模式的博客都会拿中介,黄牛买票作为例子吧。其实,房屋中介严格意义来讲不属于代理。上面是来自法律快车对于代理和委派的区别,指出了代理和委派的根本区别是是否对客户是透明的。举个例子,大家用黄牛买票的时
2021-04-08 18:11:53 141 1
原创 二十三种设计模式之建造者模式
今天来分析一下GOF二十三种设计模式的建造者模式,建造者模式也是一种创建型设计模式。建造者模式可以简化我们创建复杂对象的过程,客户端可以根据自己的需要去构建一个所需对象。建造模式大概有两种写法,第一种是严格要求构建对象的顺序的;第二种是客户端根据需要自由搭配。我们先来看下第一种写法的UML图可以看到第一种写法的建造模式有4个主要角色1.具体建造的对象 2.建造对象所对应的构建者 3.抽象的构建者 4. 指挥者可以理解为,一个盖房子的流程,首先需要地基,有了地基才能砌砖垒瓦,等..
2021-03-30 16:26:22 180
原创 二十三种设计模式之原型模式
今天继续探讨GOF二十三种设计模式的原型模式,原型模式也是属于创建型模式的一种原型模式通俗的讲就是对象复制的过程,即通过一个原型对象,我可以得到一个该对象的克隆。下面来看下原型模式的第一种写法--JDK原生的public interface IClon<T>{ T clone();}public class Shall implements IClon<Shall>,Cloneable { private String name; pri
2021-03-26 18:14:56 133
原创 Spring @Autowired注解用法介绍
Spring框架真的是程序员的春天,众所周知Spring的IOC控制反转将对象的声明周期交付给Spring容器来管理,同时可以自动注入对象之间的依赖。要实现自动注入我们可以使用@Autowired注解。这个注解默认是按照类型匹配,匹配不到或者匹配数量大于1再按照名字匹配(这里的名字指的是属性名)那么当我们某个接口有多个实现类,该如何解决这个问题?下面提供5中解决方案1.@Controllerpublic class PersonController { @Autowired.
2021-03-24 15:40:11 335
原创 二十三种设计模式之单例模式(二)
上篇文章介绍了基本的单例模式,也是大家听说比较多的单例模式写法,这几种单例模式每个都有自己的问题,比如看似完美的静态内部类单例写法也会被反射所破坏;当然我们是有解决方案的,比如 private SingleInnerClassInstance() { if (InnerSingleInstance.instance != null) { throw new RuntimeException("非法创建"); } }我在构造方法加上
2021-03-22 18:57:51 58
原创 二十三种设计模式之单例模式(一)
所有的单例模式大致可以归为5类,除了注册式外,其他几类实现方式步骤大致为构造方法私有,提供私有静态变量,提供全局访问点。下面会对这五类单例实现具体分析其优缺点一、饿汉式类加载的时候就实例化对象优点:程序的效率比较高缺点:当有大量类时会占用较大内存,是典型的空间换时间的做法。二、懒汉式三、注册式四、容器式五、ThreadLocal式...
2021-03-19 10:21:41 75
原创 二十三种设计模式之工厂模式浅析
二十三种设计模式之工厂模式浅析今天来谈谈GOF二十三种设计模式之一的工厂模式,工厂模式是一种创建型模式,使用工厂模式可以使得用户快速获取对象,达到复用代码、简化开发的作用。同时工厂模式是遵循开闭原则的一、静态工厂 静态工厂又叫简单工厂,犹如其名是最简单的工厂模式。创建一个工厂类,该类负责实现复杂的创建对象的逻辑,用户提供一个标识参数即可拿到这个对象。public class CourseFactory { public ICourse createCourse(Clas...
2021-03-18 10:43:08 221 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人