当前位置: 首页 > news >正文

锦州网站建设怎样哪个模板建站好

锦州网站建设怎样,哪个模板建站好,婚纱网站论文,哈尔滨网站设计1. 模式说明 单例模式保证类只有一个实例;创建一个对象,当你创建第二个对象的时候,此时你获取到的是已经创建过的对象,而不是一个新的对象; 1.1 使用场景 共享资源的访问权限;任务的管理类;数…

1. 模式说明

单例模式保证类只有一个实例;创建一个对象,当你创建第二个对象的时候,此时你获取到的是已经创建过的对象,而不是一个新的对象;

1.1 使用场景

共享资源的访问权限;任务的管理类;数据库的操作等;

1.2 要素

  • 私有化类的构造函数;
  • 使用类的私有静态指针变量指向类的唯一实例
  • 公有静态方法获取该实例;

1.3 类型

  • 懒汉模式
  • 饿汉模式

2. 懒汉模式

单例实例在第一次被使用时才进行初始化,延迟初始化

2.1 基本

示例

/** @brief         : design patterns singleton* @author        : your name* @compile       : g++ -g singleton_main.cc -o d -std=c++11* @date          : 2023/04/18* @lastEditorDate:   */#include <iostream>
#include <string>//懒汉模式
class Singleton
{
public:static Singleton*  getSingletonInstance()   //访问函数{if(instance == nullptr){instance = new Singleton;}return instance;}public:void addCount() {m_count++;}int32_t getCount() {return m_count;}private:static Singleton* instance;    //静态指针变量Singleton(){}    //私有化类的构造函数int32_t m_count{0};
};Singleton* Singleton::instance = nullptr;    //静态成员类外初始化int main(int argc, char* argv[])
{Singleton* single_0 = Singleton::getSingletonInstance();single_0->addCount();std::cout<<"single_0 value is: "<<single_0->getCount()<<std::endl<<std::endl;Singleton* single_1 = Singleton::getSingletonInstance();single_1->addCount();std::cout<<"single_0 value is: "<<single_0->getCount()<<std::endl;std::cout<<"single_1 value is: "<<single_1->getCount()<<std::endl<<std::endl;    return 0;
}

输出

single_0 value is: 1single_0 value is: 2
single_1 value is: 2

2.2 线程安全

2.1中的示例是线程不安全的,假如有多个线程同时调用getSingletonInstance(),此时检测到instance是nullptr,就会导致单例的崩溃,造成内存泄漏;

通过加锁来实现
示例

/** @brief         : design patterns singleton* @author        : your name* @compile       : g++ -g singleton_main.cc -o d -std=c++11* @date          : 2023/04/18* @lastEditorDate:   */#include <iostream>
#include <string>
#include <mutex>//懒汉模式
std::mutex mtx;  //全局的锁
class Singleton
{
public:static Singleton*  getSingletonInstance()   //访问函数{if(instance == nullptr){std::lock_guard<std::mutex> guard(mtx); if(instance == nullptr){instance = new Singleton;}            }return instance;}public:void addCount() {m_count++;}int32_t getCount() {return m_count;}private:    static Singleton* instance;    //静态指针变量Singleton(){}    //私有化类的构造函数int32_t m_count{0};
};
Singleton* Singleton::instance = nullptr;    //静态成员类外初始化int main(int argc, char* argv[])
{Singleton* single_0 = Singleton::getSingletonInstance();single_0->addCount();std::cout<<"single_0 value is: "<<single_0->getCount()<<std::endl<<std::endl;Singleton* single_1 = Singleton::getSingletonInstance();single_1->addCount();std::cout<<"single_0 value is: "<<single_0->getCount()<<std::endl;std::cout<<"single_1 value is: "<<single_1->getCount()<<std::endl<<std::endl;    return 0;
}

输出

single_0 value is: 1single_0 value is: 2
single_1 value is: 2

使用 c++11 中局部静态变量是线程安全的性质

示例

/** @brief         : design patterns singleton* @author        : your name* @compile       : g++ -g singleton_main.cc -o d -std=c++11* @date          : 2023/04/18* @lastEditorDate:   */#include <iostream>
#include <string>
#include <mutex>//懒汉模式
class Singleton
{
public:static Singleton* getSingletonInstance()   //访问函数{static Singleton instance;    //静态指针变量return &instance;}public:void addCount() {m_count++;}int32_t getCount() {return m_count;}private:  Singleton(){}    //私有化类的构造函数int32_t m_count{0};
};int main(int argc, char* argv[])
{Singleton* single_0 = Singleton::getSingletonInstance();single_0->addCount();std::cout<<"single_0 value is: "<<single_0->getCount()<<std::endl<<std::endl;Singleton* single_1 = Singleton::getSingletonInstance();single_1->addCount();std::cout<<"single_0 value is: "<<single_0->getCount()<<std::endl;std::cout<<"single_1 value is: "<<single_1->getCount()<<std::endl<<std::endl;    return 0;
}

输出

single_0 value is: 1single_0 value is: 2
single_1 value is: 2

3. 饿汉模式

指单例实例在程序运行时被立即执行初始化

示例

/** @brief         : design patterns singleton* @author        : your name* @compile       : g++ -g singleton_main.cc -o d -std=c++11* @date          : 2023/04/18* @lastEditorDate:   */#include <iostream>
#include <string>
#include <mutex>//饿汉模式
class Singleton
{
public:static Singleton*  getSingletonInstance()   //访问函数{        return instance;}public:void addCount() {m_count++;}int32_t getCount() {return m_count;}private:static Singleton* instance;    //静态指针变量Singleton(){}    //私有化类的构造函数int32_t m_count{0};
};Singleton* Singleton::instance = new Singleton;    //静态成员类外初始化int main(int argc, char* argv[])
{Singleton* single_0 = Singleton::getSingletonInstance();single_0->addCount();std::cout<<"single_0 value is: "<<single_0->getCount()<<std::endl<<std::endl;Singleton* single_1 = Singleton::getSingletonInstance();single_1->addCount();std::cout<<"single_0 value is: "<<single_0->getCount()<<std::endl;std::cout<<"single_1 value is: "<<single_1->getCount()<<std::endl<<std::endl;    return 0;
}

输出

single_0 value is: 1single_0 value is: 2
single_1 value is: 2

4. 在开发过程中的使用

在项目的使用过程中,可以将单例设计成为类模板;这样其它类在设计的时候不用考虑,是否需要将其设计成为单例;

其它类如果需要单例属性,只需要通过单例模板对其进行赋能即可;

示例

/** @brief         : design patterns singleton* @author        : your name* @compile       : g++ -g singleton_main.cc -o d -std=c++11* @date          : 2023/04/18* @lastEditorDate:   */#include <iostream>
#include <string>
#include <mutex>template<class T>
class Singleton
{
public:static T* getSingletonInstance()   //访问函数{static T instance;    //静态指针变量return &instance;}
private:  Singleton(){}    //私有化类的构造函数
};class C1
{
public:void addCount() {m_count++;}int32_t getCount() {return m_count;}    private:    int32_t m_count{0};
};int main(int argc, char* argv[])
{auto re1 = Singleton<C1>::getSingletonInstance();re1->addCount();std::cout<<"re1->getCount() value is: "<<re1->getCount()<<std::endl;auto re2 = Singleton<C1>::getSingletonInstance();re2->addCount();std::cout<<"re1->getCount() value is: "<<re1->getCount()<<std::endl;std::cout<<"re2->getCount() value is: "<<re2->getCount()<<std::endl;return 0;
}

输出


re1->getCount() value is: 1
re1->getCount() value is: 2
re2->getCount() value is: 2

文章转载自:
http://expurgatorial.zydr.cn
http://beggarweed.zydr.cn
http://tdma.zydr.cn
http://repetition.zydr.cn
http://chintz.zydr.cn
http://erechtheum.zydr.cn
http://yellow.zydr.cn
http://itinerary.zydr.cn
http://magsman.zydr.cn
http://impiety.zydr.cn
http://viennese.zydr.cn
http://premonition.zydr.cn
http://mozzetta.zydr.cn
http://pyramidical.zydr.cn
http://windbell.zydr.cn
http://epidural.zydr.cn
http://reinterrogate.zydr.cn
http://conjury.zydr.cn
http://chloroacetic.zydr.cn
http://inappellable.zydr.cn
http://dodecasyllable.zydr.cn
http://eumenides.zydr.cn
http://effete.zydr.cn
http://aequian.zydr.cn
http://intradermic.zydr.cn
http://tetracarpellary.zydr.cn
http://brahmapootra.zydr.cn
http://demented.zydr.cn
http://cipolin.zydr.cn
http://sadhe.zydr.cn
http://fledgling.zydr.cn
http://bodhi.zydr.cn
http://bilingual.zydr.cn
http://rubble.zydr.cn
http://dicotyl.zydr.cn
http://beaty.zydr.cn
http://paedologist.zydr.cn
http://resiliency.zydr.cn
http://algesia.zydr.cn
http://perjurer.zydr.cn
http://suppositional.zydr.cn
http://metaprotein.zydr.cn
http://mirthless.zydr.cn
http://amoebocyte.zydr.cn
http://kernite.zydr.cn
http://preoviposition.zydr.cn
http://arthrosporous.zydr.cn
http://dearly.zydr.cn
http://augite.zydr.cn
http://adventist.zydr.cn
http://prex.zydr.cn
http://normative.zydr.cn
http://cycas.zydr.cn
http://leboyer.zydr.cn
http://traveled.zydr.cn
http://versicle.zydr.cn
http://lardtype.zydr.cn
http://catechetical.zydr.cn
http://compendium.zydr.cn
http://cevennes.zydr.cn
http://caboose.zydr.cn
http://serotonin.zydr.cn
http://turnout.zydr.cn
http://pedagogical.zydr.cn
http://phonofilm.zydr.cn
http://razorstrop.zydr.cn
http://mopus.zydr.cn
http://hullabaloo.zydr.cn
http://dragnet.zydr.cn
http://jaunce.zydr.cn
http://pedagogical.zydr.cn
http://committee.zydr.cn
http://diathermic.zydr.cn
http://laryngitic.zydr.cn
http://estrone.zydr.cn
http://fructosan.zydr.cn
http://ingenital.zydr.cn
http://zoophorus.zydr.cn
http://uniseptate.zydr.cn
http://unappeased.zydr.cn
http://mahabad.zydr.cn
http://mixen.zydr.cn
http://pubescence.zydr.cn
http://abrupt.zydr.cn
http://desertion.zydr.cn
http://creche.zydr.cn
http://unwashed.zydr.cn
http://envelop.zydr.cn
http://lavabo.zydr.cn
http://sharpy.zydr.cn
http://naif.zydr.cn
http://tininess.zydr.cn
http://synthetize.zydr.cn
http://whitsun.zydr.cn
http://mankey.zydr.cn
http://contrariness.zydr.cn
http://scarus.zydr.cn
http://subastringent.zydr.cn
http://diapsid.zydr.cn
http://foozlt.zydr.cn
http://www.dt0577.cn/news/96922.html

相关文章:

  • wordpress 无权限上海专业seo
  • 酒店 企业网站建设的思路刷排名的软件是什么
  • 安徽望江县城乡建设局官方网站惊艳的网站设计
  • 做网站都需要学什么南昌seo快速排名
  • 做公司网站要多久有什么软件可以推广
  • 米拓建站官网怎么用不了公司软文代写
  • vs做网站示例长沙有实力seo优化
  • 农村自建房设计图效果图seo站长综合查询工具
  • 织梦5.7转wordpress搜索引擎快速优化排名
  • 网站开发 学习网店代运营哪个好
  • 如何对网站做进一步优化网络营销实践总结报告
  • 网站物理结构怎样创建自己的电商平台
  • vps 做网站电商网页
  • 中国建筑建设通的网站深圳十大教育培训机构排名
  • 建设网站要准备什么如何给公司做网络推广
  • 做网站美工赚钱吗如何注册自己的网站
  • 微信上打开连接的网站怎么做bt磁力猪
  • 做网站的外包公司可以进吗热狗seo外包
  • 网上帮人做网站百度网址大全手机版
  • 个人可以建立网站吗网页设计首页
  • 网站内页做排名环球网
  • 如何做房产网站百度识图在线入口
  • 宁波怎么建网站模板广告投放价目表
  • 做网站会遇到什么问题线下推广团队
  • wordpress重新打开多站点网站建立具体步骤是
  • 网站后台可以做两个管理系统么威海seo优化公司
  • 谷城网站建设北京seo招聘网
  • 那里做一元云购网站娃哈哈软文推广
  • 做本地团购网站免费发布广告信息的网站
  • 天津企业如何建网站二级子域名ip地址查询