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

网站建设奖项怎样免费安装wordpress

网站建设奖项,怎样免费安装wordpress,织梦网站流动广告代码,阿里巴巴国际贸易网站推广工具一、介绍 1.动机 在软件系统中#xff0c;经常有这样一些特殊的类#xff0c;必须保证它们在系统中只存在一个实例#xff0c;才能确保它们的逻辑正确性、以及良好的效率。 如何绕过常规的构造器#xff0c;提供一种机制来保证一个类只有一个实例? 这应该是类设计者的…一、介绍 1.动机 在软件系统中经常有这样一些特殊的类必须保证它们在系统中只存在一个实例才能确保它们的逻辑正确性、以及良好的效率。 如何绕过常规的构造器提供一种机制来保证一个类只有一个实例? 这应该是类设计者的责任而不是使用者的责任。 2.定义 保证一个类仅有一个实例并提供一个该实例的全局访问点。——GOF 3.结构图 4.要点总结 Singleton模式中的实例构造器可以设置为protected以允许子类派生。Singleton模式一般不支持拷贝构造函数和Clone接口因为这有可能导致多个对象实例与Singleton模式的初衷违背。如何实现多线程环境下安全的Singleton注意对双检查锁的正确实现。 二、单例模式 1.概念 单例模式的核心在于类自身负责创建自己的唯一实例并提供一个静态方法来获取这个实例从而防止外部代码创建多个实例。 ①单例模式的优点 节省资源避免频繁创建和销毁对象。方便控制资源的使用。维护数据的一致性。 ②单例模式的缺点 在多线程环境下需要考虑线程安全问题。若使用锁机制可能会影响性能。 2.实现要点 单例模式的实现要点 私有化构造函数防止在外部通过构造函数直接创建对象。禁用拷贝构造和赋值运算符防止通过拷贝构造和赋值操作创建多个对象。静态变量存储类的唯一实例。公有静态方法提供一个全局访问点来获取这个实例。 单例模式分为饿汉式和懒汉式。 3.饿汉式 在程序启动时立即创建实例因此本身是线程安全的。但无论是否使用实例都会立即创建可能导致资源浪费。 饿汉式单例 class Singleton { private:static Singleton* pSingleton;Singleton() {cout Singleton() endl;}~Singleton() {cout ~Singleton() endl;}public:Singleton(const Singleton) delete; //禁用拷贝构造函数Singleton operator(const Singleton) delete; //禁用赋值运算符static Singleton* getInstance() {return pSingleton;}static void deleteInstance() { //用于删除实例cout deleteInstance() endl;if (pSingleton) {delete pSingleton;pSingleton nullptr;}} }; Singleton* Singleton::pSingleton new Singleton(); //直接创建实例 测试 Singleton* s1 Singleton::getInstance(); Singleton* s2 Singleton::getInstance(); cout s1 endl; cout s2 endl; Singleton::deleteInstance(); 4.懒汉式 程序启动时实例并不存在只有在需要使用时才会创建实例这种方式要考虑线程安全的问题。 ①使用静态局部变量实现懒汉式单例 class Singleton { private:Singleton() {cout Singleton() endl;}~Singleton() {cout ~Singleton() endl;}public:static Singleton* getInstance() {static Singleton instance; //静态局部变量return instance;}Singleton(const Singleton) delete;Singleton operator(const Singleton) delete;}; 静态局部变量存储在静态存储区只在当前函数内有效其它函数无法访问。 静态局部变量只在第一次调用时初始化生命周期从第一次初始化开始到程序结束为止。 ②使用双检查锁实现懒汉式单例 class Singleton { private:static mutex mtx; //互斥锁static atomicshared_ptrSingleton pSingleton; //原子智能指针Singleton() {cout Singleton() endl;}public:~Singleton() { //设置为公有智能指针要调用cout ~Singleton() endl;}Singleton(const Singleton) delete;Singleton operator(const Singleton) delete;static shared_ptrSingleton getInstance() {shared_ptrSingleton ptr pSingleton.load(); //读取if (!ptr) { //第一次检查unique_lockmutex amtx(mtx);ptr pSingleton.load(); //读取if (!ptr) { //第二次检查ptr shared_ptrSingleton(new Singleton);pSingleton.store(ptr); //存储}}return ptr;} }; mutex Singleton::mtx; atomicshared_ptrSingleton Singleton::pSingleton nullptr; atomic的load和store成员函数用于以原子方式读取和存储原子变量。它们可以接受一个memory_order参数该参数用于指定在内存模型中操作的内存顺序。如果不提供则会默认使用memory_order_seq_cst这是最严格的内存顺序它保证了读取操作的顺序性和内存可见性。 ③使用call_once实现懒汉式单例 class Singleton { private:static once_flag flag; //用于标记static shared_ptrSingleton pSingleton; //智能指针Singleton() {cout Singleton() endl;}public:~Singleton() { //设置为公有智能指针要调用cout ~Singleton() endl;}Singleton(const Singleton) delete;Singleton operator(const Singleton) delete;static shared_ptrSingleton getInstance() {call_once(flag, [] { //最多调用一次pSingleton shared_ptrSingleton(new Singleton);});return pSingleton;} }; once_flag Singleton::flag; shared_ptrSingleton Singleton::pSingleton nullptr; call_once可以让函数或代码块在多线程环境中最多只被执行一次。
http://www.w-s-a.com/news/45309/

相关文章:

  • 怎么建自己的手机网站保定电子商务网站建设
  • 系部网站建设中期检查表创建网站的公司
  • 西宁网站建设优化重庆企业的网站建设
  • 贝壳企业网站管理系统徽与章网站建设宗旨
  • 郑州网站模板动漫设计与制作设计课程
  • 在线制作网站的工具岳阳网站设计改版
  • 网站建设需要汇报哪些内容前端开发的工作内容
  • 无锡阿凡达网站建设美团app开发公司
  • 个性化企业网站制作公司深圳高端网站定制公
  • 专业深圳网站定制开发企业网站开发 流程
  • 网站建设推广的软文php网站平台
  • 如何做代刷网站长外贸网站个性设计
  • 合同网站开发 设计 后期维护如何搭建海外网络
  • 提供网站建设服务优化大师哪个好
  • 军队营房基础建设网站哦咪咖网站建设
  • fifa17做任务网站app下载免费安装
  • 网站开发用哪些技术seo是什么意思为什么要做seo
  • 网站会动的页面怎么做的与网站建设有关的招标文件
  • 公司网站如何做seowordpress付费资源
  • 福田做商城网站建设哪家公司便宜点WordPress安装子目录
  • 南京建设交易中心网站wordpress 拼车
  • 上海今天发生的重大新闻5条河南网站seo费用
  • 广东深圳最新情况临安网站seo
  • 华为快速建站女人做春梦网站
  • 建外贸网站费用手机排行榜zol
  • 长治网站制作的网站做网站要什么知识条件
  • discuz 做门户网站wordpress怎么添加图片不显示图片
  • 东营网站建设方案范文百度应用搜索
  • 网站 常见推广js代码放wordpress哪里
  • 靖江网站开发徐州住房和城乡建设局网站