- 博客(33)
- 收藏
- 关注
原创 DesignPattrn-中介者模式
中介者模式相当于中间平台,一切操作都有中间平台去分发,中介者模式,兴义了一个中介对象来封装一些列对象之间的交互关系。中介者是各个对昂之间不需要显示地相互引用,从而使耦合性降低,而且可以独立改变他们之间的交互行为。对应现实生活中,中介者模式,打牌总有输赢,对应的每个参与者货币的变化:/// <summary>/// 抽象牌友类/// </summary>public...
2019-02-27 12:55:58 133
原创 MyBatis-$&#的区别
动态sql是mybatis的主要特性,在mapper中定义的参数传到xml中之后,在查询之前mybatis会对其进行动态解析,mybatis支持两种动态sql语法:#{ }以及${ }#是将传入拉丝的值当做字符串形式$是将传入的数据直接显示生成sql语句#可以防止sql注入,#{ }:解析一个jdbc预编译语句的参数标记,一个#{ } 被解析为一个参数占位符。${ } : 仅仅作为一纯粹...
2019-02-27 11:39:57 1289
原创 JavaCore-Collection详解
Collection详解:HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底层实现。HashMap和Hashtable的区别。ArrayList、LinkedList、Vector的区别。HashMap和ConcurrentHashMap的区别。HashMap和LinkedHashMap的区别。HashMap是线...
2019-02-26 08:53:52 701
原创 JavaCore-反射
Class类Java语言中,两个东西不是面向对象的,一个是静态的东西,一个基本数据类型类也是对象,类是java.lang.class 类的实例,比如 :A类是java.lang.class 类的实例对象Class类型(类的类型)是只有虚拟机才可以创建。Class c1 = Foo.class;Class c2 = foo1.getClass();Class c3 = Class.for...
2019-02-24 16:39:50 152
原创 JavaCore-Enum工作中常用API
static Enum valueOf(Class enumClass,String name)//返回指定名字,给定类的枚举常量String toString()//返回枚举常量名int ordinal()//返回枚举常量在enum声明中的位置,位置为0开始计数int compareto(E other)//如果枚举常量出现在other之前,则返回一个负值,如果this==other 则返...
2019-02-24 13:32:30 285
原创 JavaCore-hashCode和equals若干问题解答
equals()的作用equals用来判断两个对象是否相等JDK中定义equals的源码如下:public boolean equals(Object obj){ return (this == obj) }在Object中定义了equals方法,所有Java类都实现了equals方法,所有类都可以同步不动equals去比较两个对象是否相等,但默认的equals方法等价于==方法。...
2019-02-24 12:44:02 153
原创 CommandPattern-命令模式
角色:Command: 定义命令的统一接口ConcreteCommand:Command接口的实现者,用来执行具体的命令Receiver:命令的实际执行者Invoker:命令的请求者,这个角色用来对各个命令进行控制使用场景:1 命令的发送者和命令执行者有不同的生命周期,命令发送了并不是立即执行2 命令模式是对功能方法的抽象,不是对对象的抽象3 命令模式是将功能提升到对象来操作,以便...
2019-02-22 14:37:59 124
原创 Iterator-迭代器模式
定义:迭代器模式(Iterator)提供了一种方法顺序访问一个聚合对象中的各种元素而又不暴露该对象的内部表示。角色构成:Iterator(迭代器角色):定义遍历元素所需要的方法,一般来说三个方法。取得下一个元素next()判断是否遍历结束hasNext()移出当前对象remove()ConcreteInerator(具体的迭代器角色):实现迭代器接口中定义的方法,完成集合迭代Ag...
2019-02-22 13:35:21 106
原创 StatusPattern-状态模式
定义:对象行为的变化是由于状态的改变引入,当内部状态发生变化的时候,就会改变对象的行为,从客户端的角度看似乎就改变了整个类。目的:将状态和行为分割开来,减少相互的依赖理解:将状态封装成独立的类,并将动作委托到代表当前状态的对象。客户不会和状态进行交互,全盘了解状态是context的工作。状态模式中,每个状态通过持有context的引用,来实现状态转移。与策略模式对比:相似之处:...
2019-02-22 11:34:20 123
原创 MemoPattern-备忘录模式
定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在改对象之外保存这个状态,以后可以将对象恢复到原先保存的状态。应用场景:适用于功能比较复杂,但余姚维护or记录属性历史的功能。涉及角色:Originator(发起者):负责创建一个备忘录Memo,用来记录当前时刻自身的内部状态,并可以恢复备忘录内部状态,可以根据需要决定memo存储自己的那些内部状态。Memo(备忘录):负责存储O...
2019-02-22 09:35:04 164
原创 BuildPattern-建造者模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造的过程都是相似的,但可以创造出形形色色的东西结构:被创造者创建过程接口(定义了创建标准)创建指导类复杂对象的构建(创建指导类),表示(创建过程接口),两者分离。被创建者:public class Human { private String head; private String body;...
2019-02-22 08:27:27 190
原创 JavaCore-泛型详解
分类:泛型类泛型接口泛型方法泛型类:public class ArrayList&amp;amp;amp;lt;E&amp;amp;amp;gt; extends AbstractList&amp;amp;amp;lt;E&amp;amp;amp;gt; implements List&amp;amp;amp;lt;E&amp;amp;amp;gt;, RandomAccess, Cl
2019-02-20 13:51:59 242
原创 ChainOfResponsibility-责任链模式
责任链模式:请求接受者的多个对象通过对其后继者的引用而连接起来形成一条链。请求在这条链上传递,直到链上的某一个接受者处理这个请求。每个 接受者都可以选择自行处理请求or向后继者传递请求。优点:将请求者和处理者分开,两者解耦,提供灵活性缺点:请求从链头遍历到链尾,当链很长的时候,会有性能问题可以在Handler中设置一个最大节点数量,在setNext方法中判断是否超过最大节点数,超过...
2019-02-20 10:53:18 113
原创 JavaCore-InnerClass-内部类
内部类基础将一个类定义在另一个类里面or方法里面。就是内部类分为:成员内部类局部内部类匿名内部类静态内部类成员内部类:成员内部类可以无条件的访问外部类的所有成员属性和成员方法(包括private成员和静态成员)class Circle { private double radius = 0; public static int count =1; publ...
2019-02-20 08:47:04 158
原创 JavaConcurrency-5-线程组
线程组:线程组表示一个线程的集合,线程组还可以包含其他的线程组,线程组构成一棵树,在树中,除了初始线程组外,每个线程组都有一个父线程组。允许线程访问有关自己的线程组信息,但是不允许访问有关其线程组的父线程组or其他任何线程组的信息。ThreadGroup(String name) 构造一个新线程组。ThreadGroup(ThreadGroup parent, Stri...
2019-02-18 19:44:49 157
原创 JavaConcurrency -4-Volatile关键字解析
1内存模型的相关概念:i=i+1;当程序在运行过程中,会将运算需要的数据从主存(物理内存)中复制一份到CPU的高速缓存当中,CPU进行计算时,就可以直接从它的告诉缓存读取数据和向其中写入数据,当运算结束之后,再将告诉缓存中的数据刷新到主存中。当线程执行这条语句时,会先从主存当中读取i的值,然后复制一份到告诉缓存中,然后CPU执行对i进行加1操作,然后将数据写入高速缓存,最后将告诉缓存中i最...
2019-02-18 16:05:00 127
原创 Nginx-1-负载均衡配置策略
nginx Upstream的4中负载均衡分配策略:1 轮循(默认)2 权重 weight3 ip_hash IP绑定4 fair(第三方)5 url_hash(第三方)什么是负载均衡:当一台服务器单位时间的访问量越大时,服务器压力就会越来越大,达到超过自身承受能力的时候,服务器会崩溃。为了避免崩溃,需要负载均衡的方式来分担服务器压力。可以建立很多服务器,组成一个服务器集群,当用户...
2019-02-18 09:04:48 256
原创 Spring-1-SpringMVC模块处理请求流程
SpringMVC核心处理流程1发起请求到前端控制器(DispatcherServlet)2 前端控制器请求HandlerMapping查找Handler3 处理器映射器HandlerMapping向前端控制器返回Handler,handlerMapping会把请求映射我HandlerExcutionChina对象(包含一个Handler处理器(Controller),多个HandlerI...
2019-02-18 08:23:36 229
原创 JavaConcurrency -3-Thread操作
终止线程Thread 提供了一个stop方法,已经废弃,强行把在执行的线程停止,可能导致数据不一致。线程终止,我们自行决定线程何时退出:class MyThread extends Thread{ volatile boolean stopme = false; public void stopeMe(){ stopme = true; } @Override public ...
2019-02-17 22:00:22 131
原创 JavaConcurrency -2-Synchronized关键字
Synchronized是Java的关键字,同步锁修饰对象由如下几种1 修饰代码块,被修饰的代码块称为 同步语句块,锁作用的对象时调用该代码块的对象2修饰方法,被修饰的方法称为同步方法,锁作用的对象 是 调用这个方法的对象3修饰静态方法,锁作用的对象 是 这个类的所有对象。4修饰类,锁作用的对象 是 这个类的所有对象。代码转载于LovelyBear2019的博客1 修饰代码块一个线...
2019-02-17 16:00:29 103
原创 JavaConcurrency -1-3种方式创建线程
创建线程两种方式:1 继承Thread类2 实现Runnable接口继承Thread类,必须重写run方法,在run方法中定义需要执行的任务class MyThread extends Thread{ private static int num = 0; public MyThread(){ num++; } @Ov...
2019-02-17 12:26:50 218
原创 Java8 函数式接口+Lambda表达式
函数式接口(Functional interface)就是一个且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为lambda表达式。如果定义一个函数式接口如下:interface GreetingService { void sayMessage(String message);}那么就可以使用Lambda表达式来标识该接口的一个实现,(Java...
2019-02-17 10:08:40 297
原创 Comparable和Comparator 2个接口的作用和区别
Comparable和Comparator两个接口很相似,担忧有所不同。定义:public interface Comparable&amp;amp;amp;lt;T&amp;amp;amp;gt; { public int compareTo(T o);}public interface Comparator&amp;amp;amp;lt;T&amp;amp;amp;gt; { int compare(T o1, T o2
2019-02-16 10:34:56 1779
原创 Proxy-代理模式
代理模式给一个对象提供了一个代理对象,并由代理对象控制对原对象的引用,是装饰器模式(Decorator)模式的应用。静态代理:运行之前,代理类文件已经被创建动态代理:代理类在程序运行时动态生成,主要分为JDK动态代理和cglib动态代理。public interface Subject { void request();}public class RealSubject implem...
2019-02-15 22:19:57 164
原创 Observer-观察者模型
概念:定义对象间的一种一对多的依赖关系当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,本质是触发联动结构:1 目标对象的定义2 具体的目标对象定义3 观察者的接口定义4 观察者的具体实现触发时机:是在完成状态维护后触发,因为通知会传递数据,不能先通知,后改数据,这会导致观察者和目标对象状态不一致通知观察着的顺序是不一定的,观察者的实现,不能依赖于通知的顺序...
2019-02-15 13:33:31 182
原创 Decorator- 装饰器模式
目的:通常给对象添加功能,要么直接修改对象添加相应的功能,要么派生子类来扩展,或者是使用对象组合的方式。显然直接修改对应的类的方式不可取,在面向对象的设计中,我们应该尽量使用组合对象而不是继承对象来扩展和复用功能,装饰器模式就是基于对象组合的方式的。装饰器模式动态的给一个对象附加了更多的责任,被装饰对象在装饰前和装饰后,不会有什么不同。装饰器模式可以在不用创建更多子类的情况下,将对象的功能加...
2019-02-15 12:48:55 133
原创 Adapter-装饰器(适配器)模式
概念:将一个接口转换成客户希望的另一种接口,适配器模式使得接口不兼容的那些类可以一起工作,别名为包装器(Wrapper)。从而使得原本因接口不匹配而无法在一起工作的两个类能够在一起工作。实现这个目的有两个方法,继承or组合1,使用继承(类适配器模式)2,使用组合(对象适配器模式)角色:Target 请求接口Adapter装饰器类Adaptee 被适配类//使用继承,类适配器模式...
2019-02-12 13:20:43 171
原创 Delegate-委派模式
定义一个抽象接口,它有若干实现类,他们真正执行业务方法,这些子类是具体任务角色,定义委派者角色也实现该接口,但它负责在各个具体角色实例间做出决定,由它判断调用具体实现的方法。委派模式对外隐藏了具体实现,仅将为拍着角色暴露给外部,如Spring的DispatchServlet,有点是对内隐藏实现,易于扩展,简化调用,在Spring,MyBatis等开源框架中,均有运用。有点像 老板给经理下达任务...
2019-02-12 11:35:49 343
原创 Prototype-原型模式
原型模式:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。主要的三个角色:Prototype: 抽象原型类,声明克隆自身的接口ConcretePrototype: 具体原型类,实现克隆的具体操作CLient: 客户类,让一个原型克隆自身,从而获得一个新的对象。public class Resume implements Cloneable { private ...
2019-02-12 00:45:51 116
原创 Factory- 工厂模式
1 简单工厂 Simple Factory产品类abstract class BMW { public BMW(){ } } public class BMW320 extends BMW { public BMW320() { System.out.println("制造--&gt;BMW320");...
2019-02-11 23:27:59 85
原创 Singleton-单例模式
1 饿汉模式public class Singleton{ //1 将构造方法私有化,不允许外部直接创建对象 private Singleton(){ } //2 创建类的唯一实例 private static Singleton instance=new Singleton(); //3 提供一个用于获取实例的方法 public static Singleton getI...
2019-02-11 16:52:20 128 1
原创 Strategy-策略模式
策略模式:特点:客户端不会受算法改变影响定义算法族分别封装起来抽象出不变的部分,对新增需求的弹性支持定义:策略模式将可变的部分从程序中抽象分离成算法接口在该接口下分别封装一系列的算法实现原则:开发过程,多用组合,少于继承。(Effective Java)加入抽象接口,由接口代理行为,注入方式有两种 构造和setter函数找出应用中需要变化的部分,把他们独立出来,不要和那些...
2019-02-11 14:47:49 131
原创 Template-模板模式
定义抽象积累,为所有子类提供一个算法框架,用final修饰,避免子类修改公用方法,不变的方法,用private修饰。不公用方法,变得方法,用protected abstract修饰添加钩子方法,用protect 修饰,并在公用方法中加入钩子方法,以及模板逻辑,钩子方法提供一个默认or空的实现,具体的子类可以自行决定是否挂钩,以及如何挂钩原则:子类不能改变整体设计,好莱坞原则,可提供服务,...
2019-02-11 10:38:45 326
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人