摘要:
一、服务端设置 1、第一种方式 进入bin目录下,执行:./catalina.sh jpda start 因为catalina.sh脚本中有以上命令,所以可以直接使用命令启动。 2、第二种方式 在catalina.sh脚本中配置如下参数: JAVA_OPTS="-Xdebug -Xrunjdwp:t 阅读全文
摘要:
一、客户端 1、构造(初始化) 由客户端的配置文件随容器的启动而进行初始化,配置文件如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns: 阅读全文
摘要:
定义:为另一个对象提供一个替身或占位符以控制对这个对象的访问。 一、静态代理 静态代理说白了就是把原先直接调用被代理类的方法放到代理类来调用,同时 我们可以在代理类额外的添加一些操作。 接口: package com.proxy.example; public interface Employ { 阅读全文
摘要:
定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 角色: 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法 阅读全文
摘要:
定义:确保一个类只有一个实例,并提供一个全局访问点。 一、线程不安全的 1、饱汉式,只有在被第一次调用的时候才创建实例。 package com.singleton; public class Singleton { // 利用静态变量创建唯一实例 private static Singleton 阅读全文
摘要:
HashMap是以key-value键值对的形式进行存储数据的,数据结构是以数组+链表或红黑树实现。 数据结构图如下: 一、关键属性 HashMap初始化和方法使用的属性。 /** * 默认初始容量16(2的4次方) */ static final int DEFAULT_INITIAL_CAPAC 阅读全文
摘要:
LinkedList由双向链表实现的集合,因此可以从头或尾部双向循环遍历。 LinkedList的操作都是对双向链表的操作,理解双向链表的数据结构就很容易理解LinkedList的实现。 双向链表由带前驱和后继的节点构成,简易如下: 如果添加一个c节点,简易步骤如下: 先创建一个新节点。然后把原先的 阅读全文
摘要:
ArrayList的实质就是动态数组。所以可以通过下标准确的找到目标元素,因此查找的效率高。但是添加或删除元素会涉及到大量元素的位置移动,所以效率低。 一、构造方法 ArrayList提供了3个构造方法 1、无参的,就是把表示集合的数组赋值为空。 public ArrayList() { this. 阅读全文
摘要:
定义:装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 对象: 抽象组件:定义一个抽象类或接口,来规范准备附加功能的类; 具体组件:将要被附加功能的类,实现抽象构件角色抽象类或接口; 抽象装饰者:持有对具体构件角色的引用并定义与抽象构件角色一致的接口; 具体装 阅读全文
摘要:
定义:观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 对象: 抽象主题角色:每个抽象主题角色都可以有任意数量的观察者。抽象主题提供可以增加和删除观察者角色的方法。 具体主题角色:在具体主题内部状态改变时,给所有登记过的观察者发出通知。 抽 阅读全文