• 每日接触概念不清知识点2018.8.13


    每日接触概念不清知识点2018.8.13

    面向对象的四大特性

    1)封装:

    面向对象的语言中的封装是以类来体现的,在一个类中包含属性和方法,封装有利于项目的模块化,达到高内聚低耦合的目的。

    2)抽象:

    在面向对象的语言中抽象是以抽象类来体现的,由于抽象类不是一个具体的对象,所以不能直接被实例化,抽象有利于项目的维护和扩展。

    3)继承:

    在面向对象的语言中,继承就类似于父子关系,儿子可以继承父亲的一些优秀的特性,继承可以实现程序的重用和复用。

    4)多态:

            不同子类的对象赋值给父类的引用表现出来的行为是不一样的,多态可以达到类的多重继承。

     

    命令模式

    命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传递给调用对象。调用对象寻找可以处理该命令的合适对象,并把该命令传给相应的对象,该对象执行命令。

    单例模式(饿汉、懒汉)

    确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

    /**

     * 饿汉式实现单例模式

     */

    public class Singleton {

        private static Singleton instance = new Singleton();

     

        private Singleton() {

        }

     

        public static Singleton getInstance() {

            return instance;

        }

    }

      饿汉式顾名思义,就是这个汉子很饿,一上来就把单例对象创建出来了,要用的时候直接返回即可,这种是单例模式中最简单的一种实现方式。但是问题也比较明显。单例在还没有使用到的时候,初始化就已经完成了。如果程序从头到位都没用使用这个单例的话,单例的对象还是会创建,这就造成了不必要的资源浪费。

    /**
     * 懒汉式实现单例模式
     */
    public class Singleton {
        private static Singleton instance;
     
        private Singleton() {
        }
     
        // synchronized方法,多线程情况下保证单例对象唯一
        public static synchronized Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }

    }

      饿汉式也顾名思义,就是这个汉子比较懒,一开始的时候什么也不做,知道要使用的时候采取创建实例的对象。getInstance()方法中添加了synchronized关键字,使其变成一个同步方法,目的是为了在多线程环境下保证单例对象唯一。 
      优点: 只有在使用时才会实例化单例,一定程度上节约了资源。 
      缺点: 第一次加载时要立即实例化,反应稍慢。每次调用getInstance()方法都会进行同步,这样会消耗不必要的资源。这种模式一般不建议使用。

     

    工厂模式

    #include <iostream>

    using namespace std;

    class Base

    {

    public:

                virtual void show(void) = 0;

    };

    class A : public Base

    {

    public:

                void show(void)

                {

                           cout << "-----我是类A-----" << endl;

                }

    };

    class B : public Base

    {

    public:

                void show(void)

                {

                           cout << "-----我是类B-----" << endl;

                }

    };

    class C : public Base

    {

    public:

                void show(void)

                {

                           cout << "-----我是类C-----" << endl;

                }

    };

    class D : public Base

    {

    public:

                void show(void)

                {

                           cout << "-----我是类D-----" << endl;

                }

    };

    enum CLASS_TYPE {TYPE_A=1,TYPE_B,TYPE_C,TYPE_D};

    Base* create_class(CLASS_TYPE type)

    {

                switch(type)

                {

                           case TYPE_A: return new A;

                           case TYPE_B: return new B;

                           case TYPE_C: return new C;

                           case TYPE_D: return new D;

                }

    }

    int main()

    {

                Base* b1 = create_class(TYPE_A);

                b1->show();

                Base* b2 = create_class(TYPE_B);

                b2->show();

                Base* b3 = create_class(TYPE_C);

                b3->show();

                Base* b4 = create_class(TYPE_D);

                b4->show();

    }

     

    内存泄漏

    内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。

    内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

  • 相关阅读:
    Hystrix服务降级
    postman使用教程12-预处理(pre-request) 发送请求
    postman使用教程11- sign 签名预处理(pre-request)
    postman使用教程10-请求前参数预处理(pre-request)
    postman使用教程9-点 code 按钮生成代码段
    postman使用教程8-设置断言(Tests脚本编写)
    postman使用教程7-参数化引用外部文件(txt/csv/json)测试数据
    postman使用教程6-引用随机变量($guid,$timestamp,$randomInt)
    postman使用教程5-Test脚本中自定义变量(参数关联 提取 token 和引用 token )
    postman使用教程4-集合变量(collection variables)的使用
  • 原文地址:https://www.cnblogs.com/gzk1171848896/p/9470269.html
Copyright © 2020-2023  润新知