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

广州个人网站建设培训心得体会范文大全1000字

广州个人网站建设,培训心得体会范文大全1000字,Wordpress 页面拼接,网上商城平台开发复习一下: 单例模式(Singleton Pattern) 原理: 单例模式确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。它通过将类的构造函数设为私有,防止外部代码直接实例化该类。同时,提供…

复习一下:

单例模式(Singleton Pattern)

原理:

单例模式确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。它通过将类的构造函数设为私有,防止外部代码直接实例化该类。同时,提供一个静态方法来获取唯一的实例。在首次调用获取实例的方法时,会创建这个实例,之后的调用都返回这个已创建的实例。

示例代码:
class Singleton {
private:static Singleton* instance;Singleton() {}
public:static Singleton* getInstance() {if (instance == nullptr) {instance = new Singleton;}return instance;}
};
Singleton* Singleton::instance = nullptr;
使用场景:

适用于资源共享的情况,如数据库连接池。因为只需要一个数据库连接池实例来管理连接,避免多次创建和销毁连接池带来的开销。还用于日志系统,全局只有一个日志对象记录各种日志信息,方便统一管理和配置。

优化

上面的代码虽然实现了单例模式,但存在线程安全问题。在多线程环境下,多个线程可能同时检查到 instance 为 nullptr,从而创建多个实例。可以使用双重检查锁定(Double-Checked Locking)或者静态局部变量的方式来优化。

  • 双重检查锁定

    双重检查锁定会在第一次检查 instance 是否为 nullptr 之后加锁,再次检查 instance 是否为 nullptr,以确保只有一个线程能创建实例。

    #include <mutex>class Singleton {
    private:static Singleton* instance;static std::mutex mutex_;Singleton() {}
    public:static Singleton* getInstance() {if (instance == nullptr) {std::lock_guard<std::mutex> lock(mutex_);if (instance == nullptr) {instance = new Singleton;}}return instance;}
    };
    Singleton* Singleton::instance = nullptr;
    std::mutex Singleton::mutex_;
    
  • 静态局部变量

    C++11 之后,静态局部变量的初始化是线程安全的,因此可以使用静态局部变量来实现单例模式。

    class Singleton {
    private:Singleton() {}
    public:static Singleton& getInstance() {static Singleton instance;return instance;}
    };
    

    这种方式更为简洁,并且自动处理了线程安全问题,也避免了手动管理内存。

    使用静态局部变量的方式来实现单例模式,其原理主要基于静态局部变量的两个关键特性:延迟初始化和线程安全初始化。

    延迟初始化

    静态局部变量是在程序第一次执行到其定义处时才进行初始化的。也就是说,只有当首次调用包含该静态局部变量的函数时,这个静态局部变量才会被创建并初始化。

    在单例模式的实现中,静态局部变量的这种特性能够确保单例实例是在真正需要使用它的时候才被创建,而非在程序启动阶段就创建,这样可以避免不必要的资源浪费。

    线程安全初始化

    C++11 标准规定,静态局部变量的初始化是线程安全的。这意味着在多线程环境下,即使多个线程同时调用包含静态局部变量的函数,也能保证该静态局部变量只会被初始化一次。

    当多个线程同时尝试访问并初始化这个静态局部变量时,标准要求编译器必须保证只有一个线程能够执行初始化操作,其他线程需要等待初始化完成后才能继续执行。这样一来,就确保了单例模式中实例的唯一性。

http://www.dtcms.com/wzjs/350612.html

相关文章:

  • 个人简约网站模板seo排名优化厂家
  • 婴幼儿网站模板企业如何建站
  • 利用帝国软件如何做网站seo知识分享
  • 南昌百度网站快速排名百度推广技巧方法
  • 贵港做网站化司关键词搜索排名优化
  • 重庆网站建设套餐流程优化
  • 朋友圈网站文章怎么做桂平网络推广
  • 南充网站建设化工网站关键词优化
  • 源代码网站和模板做的区别免费b站推广软件
  • 宁波网站开发百度指数如何分析
  • 为什么做的网站在浏览器搜不到沈阳网站推广优化
  • 图片怎么做网站背景怎么建立网站的步骤
  • 给国外做网站最近实时热点新闻事件
  • 豪华大气的旅行社网站源码沈阳seo排名优化教程
  • 西安网站制作的公司百度seo运营工作内容
  • 深圳做网站网络公司北京网络推广公司wyhseo
  • 用dw做的网站容易变形湖南网站seo找行者seo
  • 网站建设销售问你告诉我怎么制作中国站长之家网站
  • 做品牌特卖的网站手机网站百度关键词排名
  • 十种人不适合学建筑seo狂人
  • asp net mvc做网站如何刷关键词指数
  • 做兼职那个网站靠谱吗站长工具综合权重查询
  • 做网站番禺如何创建自己的网站
  • 网站开发美学seo外链建设的方法有
  • 做网站按什么收费多少钱搜索关键词排名优化
  • 网站怎么做关键词搜索排面搜索
  • 赣州建设网站公司广州头条新闻最新
  • 餐饮品牌推广方案杭州关键词推广优化方案
  • 网站联盟系统站长工具网
  • 网站登录破解网站关键词