• 数据库方面:

  1、删除表中所有数据:

    delete from tableName;

    truncate table tableName;

    执行速度:truncate > delete

  2、删除表结构:

    drop table  tableName;

  • jQuery方面:

  1、Math.round(x) ,x必须为数字。方法返回与 x 最接近的整数。对于 0.5,该方法将进行上舍入。比如:3.5 上舍入为 4 ,- 3.5  上舍入为 - 3;

  2、jQuery里隐藏/显示div

    $("# id").hide()

    $("# id").show()

 

  • 23种设计模式

    ① 创建型模式【5】:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

    ② 结构型模式【7】:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式

    ③ 行为型模式【11】:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介模式、解释器模式。

    六大原则:

      开闭原则【总原则】---》

      单一职责原则:每个类应该实现单一的职责,如若不然,就应该把类拆分

      里氏替换原则:任何基类可以出现的地方,子类一定可以出现

      依赖倒转原则:面向接口编程,依赖于抽象而不依赖于具体。写代码时用到具体类时,不与具体类交互,而与具体类的上层接口交互。

      接口隔离原则:每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。

      最少知道原则:一个类对自己依赖的类知道的越少越好。也就是说无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部,

    通过public方法提供给外部。这样当被依赖的类变化时,才能最小的影响该类。

      合成复用原则:原则是尽量首先使用合成/聚合的方式,而不是使用继承

   各种模式具体实例

    简单工厂模式【不属于23种设计模式】

      ①普通      

//简单工厂模式就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
//例如:举例发邮件或者发短信的例子:
//1、首先创建二者的共同接口
public interface sender {
      public void send();  
}

//2、创建具体实现类
public class MailSender implements Sender {
        @override
        public void send(){
        System.out.println("this is MailSender !");
    }  
}

public class SmsSender implements Sender {
        @override
        public void send(){
        System.out.println("this is SmsSender");
      }   
}

//3、建工厂类
public class SendFactory{
        
         public Sender produce(String type) {
                if("main".equals(type)) {
                        return new MailSender ();
               }else if("sms".equals(type)) {
                        return new SmsSender ();
               }else {
                        System.out.println("error input!");
               }
        }
}    
//测试一下
public class FactoryTest {  
  publicstaticvoid main(String[] args) {  

        SendFactory factory = new SendFactory();  

        Sender sender = factory.produce("sms");  

        sender.Send();  

    }  

}  

//输出:this is sms sender!

       

      ②多个方法

//1、创建二者的共同接口
public inteface Sender{
    public void send();
}

//2、创建具体实现类
public class SmsSender implements Sender{
    @override
    public void send(){
        system.out.println("this is sms message!");
    }
}

public class MailSender implements Sender{
    @override
    public void send(){
        system.out.println("this is mail message!");
    }
}

//3.创建工厂类
public class SendFactory{
    public Sender SmsProduce(){
        return new SmsSender();
    }
    
    public Sender MailProduce(){
        return new MailSender();
    }
}

//4.测试
public class FactoryTest {  
  
    public static void main(String[] args) {  
        SendFactory factory = new SendFactory();  
        Sender sender = factory.produceMail();  
        sender.Send();  
    }  
} 
//this is mail message!

       

      ③多个静态方法

//1、创建接口
public inteface Sender{
    public void send();
}

//2、创建具体实现类
public class MsmSender implements sender {
    @override
    public void send(){
        system.out.println("this is a msmMessage!");
    }
}

public class MailSender implements sender {
    @override
    public void send(){
        system.out.println("this is a MainMessage!");
    }
}

//3.创建静态多方法工厂类
public class SendFactory{
    public static Sender SmsProduce(){
        return new MsmSender();
    }
    
    public static sender mailProduce(){
        retrn new MailSender();
    }
}

//测试  多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可
public class test {
    public void main(String[] args) { 
        Sender send = Sender.MailSender();
        send.send();
    }
}
//this is a MainMessage!

 总体来说,工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种——静态工厂方法模式

 

    一、工厂方法模式

  简单工厂模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到工厂方法模式,创建一个工厂接口和创建多个工厂实现类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。

                

//1、创建共同接口
public inteface Sender{
    public void send();
}

//2、创建具体实现类
public class MsmSender implements Sender{
    @override
    public void send(){
        system.out.println("this is a MsmMessage!")
}

public class MailSender implements Sender{
    @override
    public void send(){
        system.out.println("this is a MailMessage!");
    }
}

//3、创建工厂接口
public inteface Provider{
    public Sender produce();
}

//4、创建工厂类实现工厂接口
public class MailFacory implements Provider{
    @override
    public Sender produce(){
        return new MailSender();
    }
}

public class MsmFactory implements Provider{
    @override
    public Sender produce(){
        return new MsmSender();
    }
}

//测试
public class test{
    public void main(String[] args){
        Provider provider = new MailFacory();
        Sender sender = provider.produce();
        sender.send();
    }
}

 

 

    二、抽象工厂模式

  我

   三、单例模式 

  在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:

1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。

2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。

3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。

//单例模式
//1、创建类
public class Singleton {
    //静态私有实例,防止被引用
    private static Singleton singleton = null;
    
    //私有构造方法,防止被实例化
    private Singleton(){
    }
    
    //静态工程方法,创建实例
    public static Singleton getInstence(){
        if(singleton==null){
            singleton = new Singleton();
        }
        return singleton;
    }
}

//2、多线程下synchorized
public static synchoSingleton Singleton getInstence(){
    if(singleton==null){
            singleton = new Singleton();
        }
        return singleton;
}
//synchronized关键字锁住的是这个对象,这样的用法,在性能上会有所下降,因为每次调用getInstance(),都要对对象上锁,事实上,只有在第一次创建对象的时候需要加锁,之后就不需要了,所以,这个地方需要改进。我们改成下面这个:
public static Singleton getInstence(){
    if(singleton==null){
        synchorized(singleton){
            singleton = new Singleton();
        }
    }
    return singleton;
}

 

posted on 2019-02-20 10:34  村头老树下听风  阅读(201)  评论(0编辑  收藏  举报