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

网站开发所需要的语言连云港网站建设公司

网站开发所需要的语言,连云港网站建设公司,搜索引擎网络排名,官网设计公司有哪些文章目录 一. 设计模式二. 单例模式三. 饿汉模式四. 懒汉模式结束语 一. 设计模式 单例模式是一种设计模式 设计模式(Design Pattern)是一套被反复使用#xff0c;多数人知晓的#xff0c;经过分类的#xff0c;代码设计经验的总结。 为什么要有设计模式 就像人类历史发展会… 文章目录 一. 设计模式二. 单例模式三. 饿汉模式四. 懒汉模式结束语 一. 设计模式 单例模式是一种设计模式 设计模式(Design Pattern)是一套被反复使用多数人知晓的经过分类的代码设计经验的总结。 为什么要有设计模式 就像人类历史发展会产生兵法最开始部落之间打仗都是谁人多谁获胜。但后来春秋战国时期七国之间经常战争发现战争也是有套路的后来孙子就总结了《孙子兵法》。设计模式也是如此。 设计模式可以提高代码的可重用性让代码更容易被他人理解保证代码可靠性。设计模式使代码编写真正工程化设计模式是软件工程的基石脉络如同大厦的结构一般 二. 单例模式 一个类只能创建一个对象即单例模式该模式可以保证系统重该类只有一个实例并提供一个访问它的全局访问点该实例被所有程序模块共享。 比如在某个服务器程序中该服务器的配置信息存放在一个文件中这些配置数据由一个单例对象统一读取然后服务进程中的其他对象再通过这个单例对象获取这些配置信息这种方式简化了在复杂环境下的配置管理 单例模式有两种实现方式饿汉模式懒汉模式 三. 饿汉模式 饿汉模式是在最开始就创建对象即main函数开始前对象就已经存在 要点有以下几个 因为全局只能有一个对象所以需要将构造函数私有化内部封装static静态对象指针然后类外初始化提供静态成员函数返回静态对象指针使用互斥锁保证数据读取的线程安全 //饿汉模式 //在main函数调用前对象就存在 class Singleton { public://静态成员变量获取对象指针static Singleton*GetInstance(){return _ins;}//添加数据void Add(const char*str){_vmtx.lock();_v.push_back(str);_vmtx.unlock();}//打印数据void Print(){_vmtx.lock();for (auto e : _v){cout e endl;}_vmtx.unlock();}private://构造函数私有化Singleton(){} private:vectorstring _v;//存储数据mutex _vmtx;//互斥锁static Singleton*_ins;//静态指针 };//静态成员变量类外初始化 Singleton* Singleton::_ins new Singleton();饿汉模式的优点就是相对于懒汉模式较为简单 缺点是程序刚开始时就创建如果对象较大可能导致进程启动慢且如果有多个单例类对象实例启动顺序不确定 如果这个单例对象在多线程并发环境下频繁使用性能要求较高那么显然使用饿汉模式来避免资源竞争提高响应速度更好 四. 懒汉模式 懒汉模式是在第一次使用实例对象时才创建对象 如果单例对象构造十分耗时或者占用很多资源比如加载插件初始化网络连接读取文件等为了不影响程序启动可以使用懒汉模式延迟加载 简易的懒汉模式 class Singleton { public://静态成员变量获取对象指针static Singleton*GetInstance(){static Singleton _ins;return _ins;}//添加数据void Add(const char*str){_vmtx.lock();_v.push_back(str);_vmtx.unlock();}//打印数据void Print(){_vmtx.lock();for (auto e : _v){cout e endl;}_vmtx.unlock();}private://构造函数私有化Singleton(){} private:vectorstring _v;//存储数据mutex _vmtx;//互斥锁 };但stactic对象在C11前无法保证线程安全C11后保证static对象初始化时线程安全的 复杂的懒汉模式 要点有如下几个 懒汉模式的GetInstance需要有双检查加锁同时因为是静态成员函数所以还需要封装一个静态的互斥锁保护可以使用DelInstance显示释放但也可以通过回收机制在程序结束时回收资源。 做法是内部定义一个类该类的析构函数会显示调用DelInstance然后再定义一个全局的回收机制对象这样程序结束时会自动销毁回收机制对象同时调用DelInstance //懒汉模式 //第一次调用GetInstance才有对象 class Singleton { public://静态成员变量获取对象指针static Singleton*GetInstance(){//双检查加锁if (_ins nullptr)//提高效率{_imtx.lock();//第一次调用为空才初始化if (_ins nullptr)//线程安全{_ins new Singleton();}_imtx.unlock();}return _ins;}//添加数据void Add(const char*str){_vmtx.lock();_v.push_back(str);_vmtx.unlock();}//打印数据void Print(){_vmtx.lock();for (auto e : _v){cout e endl;}_vmtx.unlock();}//销毁static void DelInstance(){_imtx.lock();if (_ins){delete _ins;_ins nullptr;}_imtx.unlock();}//回收机制class GC{public:~GC(){DelInstance();}};static GC _gc;//声明 private://构造函数私有化Singleton(){} private:vectorstring _v;//存储数据mutex _vmtx;//保护vector的互斥锁static Singleton*_ins;//静态指针static mutex _imtx;//保护Singleton初始化的互斥锁 };//静态成员变量类外初始化为空 Singleton* Singleton::_ins nullptr; mutex Singleton::_imtx;//程序结束时会调用其析构函数内部再调用DelInstance() Singleton::GC Singleton::_gc;//定义结束语 感谢你的阅读 如果觉得本篇文章对你有所帮助的话不妨点个赞支持一下博主拜托啦这对我真的很重要。
http://www.zqtcl.cn/news/883018/

相关文章:

  • html源码网seo搜索优化工程师招聘
  • 做的网站在小窗口中怎么保持中间广东省公共资源交易中心地址
  • 合肥做网站汇站网织梦网站广告代码教程
  • 复兴专业做网站wordpress搬家502
  • 代做毕网站淘宝权重查询
  • 有专做高端折扣女装的网站吗大连最好的做网站的公司
  • 网站需求嘉兴seo关键词优化
  • 自己开发微网站上海成品网站
  • 国外对企业网站开发的研究山西住房与城乡建设厅定额网站
  • 国家工信部网站备案postfix wordpress
  • 兴宁电子商务网站建设网站模板在线制作
  • 汕头整站优化营销推广网
  • 云服务器搭建网站教程加盟教育培训机构
  • 建筑网站设置工资单人换了怎么换太原做网站找谁
  • 网站做推广需要什么条件重庆网站推广哪家服务好
  • 怎样做理财网站wordpress做产品页教程视频
  • 官网模板建站塔山双喜北京网站建设兴田德润官网多少
  • 网站优化推广外包深圳专业网站建设定制
  • 网站开发aichengkeji元凤建盏简介
  • 移动端网站怎么制作asp做的网站如何发布
  • 做的网站用户密码在哪里找凡科申请的网站和qq空间一样吗
  • 如何自己做网站发布到服务器上面wordpress没有幻灯片
  • 闽侯县建设局网站企业建设网站例文
  • 家居类企业响应式网站搭建电商系统
  • 临沂哪里做网站比较好中国建设银行企业信息门户网站
  • 低价建网站提高网站订单转化率
  • 家居网站应该怎么做网站seo推广软件
  • 旅游网站建设报告关键词优化排名价格
  • 上海网站开发caiyiduo微信建微网站
  • 做网站和做网店哪个好用cms做单页网站怎么做