自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 问答 (2)
  • 收藏
  • 关注

原创 JDK分析-Stack源码

1.Stack源码public class Stack<E> extends Vector<E> { // 版本ID。这个用于版本升级控制,这里不须理会! private static final long serialVersionUID = 1224463164541339165L; // 构造函数 public Stack() { } // push函数:将元素存入栈顶 public E push(E item) {

2020-11-19 22:51:04 103

原创 Java设计模式-中介者模式

19、中介者模式中介模式的设计思想跟中间层很像,通过引⼊中介这个中间层,将⼀组对象之间的交互关系 (或者依赖关系)从多对多(⽹状关系)转换为⼀对多(星状关系)。原来⼀个对象要跟 n 个对象交互,现在只需要跟⼀个中介对象交互,从⽽最⼩化对象之间的交互关系,降低了代码 的复杂度,提⾼了代码的可读性和可维护性。UML类图:**抽象中介者:**定义了各个同事之间交互需要的方法。**具体中介者:**需要了解维护各个同事对象,并且负责协调各个具体同事之间的交互。**抽象同事类:**约束具体同事类的类型、并且

2020-10-18 11:03:46 145

原创 Java设计模式-观察者模式

18、观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。UML类图:具体实例:气象台有温度、湿度的数据,而百度天气网站、新浪天气网站要展示气象台的温度、湿度的数据。具体示例的UML类图:Java代码:// 观察者public interface Observer { void update(float temperature, float humidity);

2020-10-18 11:01:37 124

原创 Java设计模式-迭代器模式

17、迭代器模式**迭代器模式(Iterator):**提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。在容器里存放了大量的同类型对象,我们如果想逐个访问容器中的对象,就必须要知道容器的结构。比如,ArrayList 和 LinkedList 的遍历方法一定是不一样的,这对于容器的使用者而言,肯定是一个巨大的负担。作为容器的使用者,我肯定希望所有的容器能提供一个统一的接口,这个接口可以遍历容器中的所有内容,又可以把容器的细节屏蔽掉。确实存在这样的一个统一的接口,这个接口就是

2020-10-18 11:00:23 101

原创 Java设计模式-访问者模式

16、访问者模式**访问者(Visitor)模式的定义:**将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。访问者模式的使用场景:对象结构比较稳定,但经常需要在此对象结构上定义新的操作。需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免这些操作“污染”这些对象的类,也不希望在增加新操作时修改这些类。

2020-10-18 10:59:13 123

原创 Java设计模式-命令模式

15、命令模式命令模式就是将“动作的请求者”从“动作的执行者”对象中解耦。具体示例:遥控器可以操控多个电器,每个电器有开和关两个按钮(分别对应开和关命令)。UML类图:Java代码:// 命令接口public interface Command { void execute();}// 开灯命令public class LightOnCommand implements Command { Light light; public LightOnCommand

2020-10-18 10:57:53 105

原创 Java设计模式-模板模式

14、模板模式模板模式就是一个抽象类公开定义了执行它的方法的模板。它定义了一个操作中的算法核心,然后将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定的步骤。具体例子:假如到银行办理业务,有 取号、办理具体业务、反馈评分 这些步骤。UML类图:Java代码:// 抽象的银行类public abstract class BankTemplate { //取号操作 public void takeNumber(){ S

2020-10-18 10:57:06 61

原创 Java设计模式-享元模式

13、享元模式说到享元模式,第一个想到的应该就是池技术了,String常量池、数据库连接池、缓冲池等等都是享元模式的应用,所以说享元模式是池技术的重要实现方式。享元模式是运用共享技术有效的支持大量细粒度的对象。享元对象能做到共享的关键是区分了内部状态以及外部状态:内部状态:可以共享,不会随环境改变而改变。外部状态:不可以共享,会随环境改变而改变。享元模式通用UML类图:具体例子:以围棋为例子,围棋颜色、大小是可以共享的,所以颜色和大小可以称为内部状态,但围棋在棋盘上的位置是不共享的,所以

2020-10-18 10:56:22 82

原创 Java设计模式-外观模式

12、外观模式**外观模式:**又叫门面模式,提供一个统一的接口,用来访问子系统中的一群接口。问题提出:系统常常划分为若干个子系统,但是如何做到各个系统之间的通信和相互依赖关系达到最小呢?外观模式为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。引入外观角色之后,用户只需要直接与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。通过子系统的互相组合,可以产生多个外观类。例子:一个电源总开关可以控制四盏灯、一个风扇

2020-10-18 10:55:16 166

原创 Java设计模式-组合模式

11、组合模式**组合模式:**将对象组合成树形结构以表示“部分-整体”的层次结构。应用场景:大学里有多个学院,每个学院有多个专业。UML类图://抽象的组织类public abstract class Organization { protected String name; public Organization(String name){ super(); this.name = name; } protected void

2020-10-18 10:54:27 71

原创 Java设计模式-装饰者模式

10、装饰者模式装饰者模式:动态的将新功能附加到对象上。体现了开闭原则。应用场景:咖啡店里有深焙咖啡、浓缩咖啡。咖啡可以加的调料有巧克力调料、奶泡调料。装饰者类图如下:代码:public abstract class Coffee { protected String description; protected Integer price; public abstract String getDescription(); public abstract Inte

2020-10-18 10:52:50 191 2

原创 Java设计模式-桥接模式

9、桥接模式定义:将抽象部分与它实现部分分离,是它们都可以独立地变化。桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量。**应用场景:**一个类存在两个独立变化的维度,且这两个维度都需要进行扩展时,可以使用桥接模式。举例:电脑品牌有苹果、联想,电脑的种类有台式机、笔记本,所以电脑是两个维度,这两个维度可以扩展,比如加一个戴尔品牌等。那么我们可以使用桥接模式来低耦合。如下图:当我们需要扩展一个品牌或者电脑类型时只需要横向扩展。代码如下://品牌public

2020-10-17 15:08:25 90

原创 Java设计模式-适配器模式

8、适配器模式1、对象适配器适配器模式是作为两个不兼容的接口之间的桥梁,让原来不兼容的两个接口协同工作。意图:将一个类的接口转换成客户希望的另一个接口。**注意事项:**适配器不是在详细设计时添加的,而是解决正在服役的项目要添加新的功能导致不兼容的问题。实例背景:播放器Player只能播放Mp4音频文件,而我们要播放的音频文件Mp3的格式为Mp3,所以需要一个适配器Adapter来将Mp3转换为Mp4。//Mp3文件public class Mp3 { public void pla

2020-10-17 15:07:15 83

原创 Java设计模式-原型模式

7、原型模式**原型模式的定义:**用一个已经创建好的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。(深复制)这种模式是实现一个接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。**如何实现:**在Java中,就是让类继承Cloneable,重写clone方法。public class Propoty implements Cloneable { String name; Date date; public Propot

2020-10-17 15:06:22 63

原创 Java设计模式-建造者模式

6、建造者模式属于创建型模式。定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。(举例:就是要创建跳舞机器人和创建唱歌机器人,我们只需更建造者说我们需要跳舞机器人,它就会给我们创建跳舞机器人,创建唱歌机器人同理,这就是构建与表示分离,用同样的构建过程创建不同的表示。)与工厂模式的区别是:建造者模式更加关注于零件装配的顺序,一般用来创建更为复杂的对象。建造者模式最重要的就是Director(领导者),规定了建造的顺序。优点:易于扩展。想要唱歌机器人只要单独将这个类

2020-10-17 15:05:39 120

原创 Java设计模式-工厂模式

5、工厂模式工厂就是创建产品,该模式就是将创建对象的任务交给工厂。1、简单工厂模式也称为静态工厂模式,不属于32种经典设计模式,违背“开闭原则”,举例如下:上面是UML类图,其中是类的一些关系。代码如下:public interface Car { void printName();}public class BMW implements Car { @Override public void printName() { System.out.pr

2020-10-17 15:04:20 67

原创 Java设计模式-单例模式

4、单例模式单例模式就是确保某个类只有一个实例,有三种实现方式:饿汉模式、懒汉模式、静态内部类。(枚举类也是实现单例)单例有三个特点:1、私有构造函数;2、有指向自己实例的私有静态引用;以自己实例为返回值的静态公有方法。1、饿汉模式就是在类加载初始化的时候就主动创建实例。优点:线程安全,调用效率高。缺点:在还没被使用前一直占用内存,浪费内存空间。//饿汉模式public class Single { private Single(){ //注意是私有 } pr

2020-10-17 15:01:58 84

原创 Java设计模式-面向对象7大原则

1、面向对象7大原则**1、开闭原则:**对扩展开放,对修改改变。**2、里氏替换原则:**只要父类出现的地方,子类都可以替换他,使用者可能都不知道到底是子类还是父类(就是子类继承了超类,在子类中保持超类的特性)**3、单一职责原则:**对类来说,就是一个类应该只负责一项职责。**4、依赖倒置原则:**要面向接口编程,不要面向实现编程。**5、接口隔离原则:**客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。**6、迪米特原则:**一个类对自己依赖的其他类知道的越

2020-10-17 14:54:57 229

原创 spring底层源码分析-Spring AOP概述

3、Spring AOP概述3.1 Advice通知**Advice通知定义连接点做什么。**在Spring AOP的实现中使用了Advice这个统一接口,并通过这个接口 提供了更具体的通知类型,如:BeforeAdvice、AfterAdvice、ThrowsAdvice等。3.1.1 前置通知接口BeforAdvice接口,定义了为待增强的目标方法设置的前置增强接口MethodBeforeAdvice接口(MethodBeforeAdvice接口继承BeforAdvice接口),使用这个Met

2020-10-17 14:47:11 75

原创 spring底层源码分析-Bean的生命周期

2、Bean的生命周期Spring Bean的完整生命周期从创建Spring容器开始,直到最终Spring容器销毁Bean。大致流程如下:2.1 BeanFactoryPostProcessor中文名为:BeanFactory后置处理器。就是可以管理我们的Bean工厂的BeanDefinition(还未实例化)数据,可以修改BeanDefinition的属性(例如从单例修改为多例)。是Bean生命周期最先开始的类。BeanFactoryPostProcessor的实现脑图:[外链图片转存失败

2020-10-17 14:43:34 131

原创 spring底层源码分析-IOC容器的初始化过程

1、IOC容器的初始化过程完成初始化可以由以下几行代码完成:ClassPathResource res = new ClassPathResource("beans.xml"); //找到xml配置文件//DefaultListableBeanFactory是IOC容器的具体实现,内含currentHashMap,实现了BeanDefinitionRegistry接口。DefaultListableBeanFactory factory = new DefaultListableBeanFa

2020-10-17 14:35:49 294

原创 libstdc++.so.6: version `GLIBCXX_3.4.21' not found解决方法

libstdc++.so.6: version `GLIBCXX_3.4.21’ not found解决方法这种情况说明libstdc++.so.6连接的版本不够高。直接:wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip(如果需要更高版本可以去百度找一下)然后解压:unzip libstdc....

2019-12-28 18:00:31 900

原创 JDBC基础

1.驱动类加载装载MySQL驱动:Class.forName(“com.mysql.jdbc.Driver”);需要搭配try, catch (ClassNotFoundException e)try { Class.forName("com.mysql.jdbc.Driver");}catch (ClassNotFoundException e){ System.out.p...

2019-12-24 00:38:26 92

原创 Mybatis

这个学习内容是借鉴的,忘记是转载哪里了。做笔记是为了不让我遗忘太快。里面的过程和代码都已经自己实现过了,同时有一些也加了自己的理解。1.Mybatis的入门1.mybatis环境搭建的基本架构第一步:创建maven工程并导入坐标第二步:创建实体类和dao的接口第三步:创建Mybatis的主配置文件SqlMapConifg.xml 名字可以随意,但后缀名要一样<?...

2019-12-24 00:36:34 120

转载 SpringMVC

这个学习内容是借鉴的,做笔记是为了不让我遗忘太快。里面的过程和代码都已经自己实现过了,同时有一些也加了自己的理解。1.SpringMVC入门案例1.案例程序​ 1.新建MAVEN工程,并且要选择webapp,建立后在pom.xml中加入以下代码:<!-- 版本锁定:指定Spring版本 --><properties> <spring.version&gt...

2019-12-24 00:32:34 128

转载 spring

这个学习内容是借鉴的,做笔记是为了不让我遗忘太快。里面的过程和代码都已经自己实现过了,同时有一些也加了自己的理解。1.程序的耦合和解耦耦合: 程序间的依赖关系.在开发中,应该做到解决编译期依赖,即编译期不依赖,运行时才依赖`.解耦的思路: 使用反射来创建对象,而避免使用new关键字,并通过读取配置文件来获取要创建的对象全限定类名.解耦实例1:JDBC驱动注册JDBC操作中注册驱动时,我...

2019-12-24 00:26:21 120

原创 《Java语言程序设计:基础篇》

此笔记是在学习《Java语言程序设计:基础篇》所记录下的一些遗忘点。所记录的内容基本来自书上。2.基本程序设计2.18.1 字符串和数字的转换int a = Integer.parseInt(String) //将数字字符串转换为整数double d=Double.parseDouble(String) //将数字字符串转换为浮点数3.选择3.17 格式化控制台输出System....

2019-12-24 00:06:11 1123

空空如也

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

TA关注的人

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