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

深圳就会制作站长之家的seo综合查询工具

深圳就会制作,站长之家的seo综合查询工具,股票网站模板 dedecms,视频网站亏损也做文章目录 一. 介绍二. 饿汉模式三. 懒汉模式四. 饿汉模式和懒汉模式对比 一. 介绍 单例模式是属于设计模式的一种,那什么是设计模式呢? 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总…

文章目录

  • 一. 介绍
  • 二. 饿汉模式
  • 三. 懒汉模式
  • 四. 饿汉模式和懒汉模式对比

一. 介绍

单例模式是属于设计模式的一种,那什么是设计模式呢?

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。为什么会产生设计模式这样的东西呢?就像人类历史发展会产生兵法一样。最开始部落之间打仗时都是人拼人的对
砍;后来春秋战国时期,七国之间经常打仗,就发现打仗也是有套路的,后来孙子就总结出了《孙子兵法》。孙子兵法就类似于一种打仗的“设计模式”。

使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

一个类只能创建一个对象,即单例模式。该模式可以保证全局(一个进程中)只有一个唯一的实例对象,并提供一个访问它的全局访问点,该实例对象可以被所有线程访问到。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息,这种方式简化了在复杂环境下的配置管理。

单例模式有两种实现:饿汉模式 和 懒汉模式

二. 饿汉模式

介绍:就是说不管你将来用或者不用,程序启动时(即 main 函数执行之前)就会创建单例对象。

特点:如果这个单例对象在多线程高并发环境下频繁使用,性能要求较高,那么显然使用饿汉模式来避免资源竞争,提高响应速度会更好。

实现方法

  • 构造函数私有:防止外部构造单例对象
  • 防拷贝:禁用拷贝构造和赋值运算符重载函数,防止外部拷贝单例类对象
  • 提供接口:在单例类中定义一个自身类的静态对象,这个对象就是单例对象,设计一个静态方法返回这个单例对象的地址给外部。

通过上面三步就能做到一个类只能创建一个对象,且同一进程下的各线程可以通过一个统一的接口拿到这个实例对象。

代码示例

class Singleton
{
public:// 提供访问单例对象的接口Singleton* GetInstance(){return &_inst;}private:// 单例对象static Singleton _inst;// 构造函数私有Singleton();// 放拷贝Singleton(const Singleton&) = delete;Singleton& operator=(Singleton&) = delete;
};// 单例对象存储在静态区中
// 在程序入口之前就完成单例对象的初始化
Singleton Singleton::_inst;

补充说明

在这里插入图片描述

三. 懒汉模式

介绍:如果单例对象构造十分耗时或者占用很多系统资源,比如加载数据库啊, 初始化网络连接啊,读取文件啊等等,而且有可能该对象在程序运行时不会用到,那么也要在程序一开始就进行初始化,就会导致程序启动时非常的缓慢。 所以这种情况使用懒汉模式(延迟加载)更好。

特点:第一次使用实例对象时,才会创建对象,进程启动无负载。且当系统中有多个单例实例时,启动顺序可以自由控制。

实现方法

  • 防构造:把构造函数私有,这样外部就不能实例化对象
  • 防拷贝:禁用拷贝构造和赋值运算负重载函数,防止外部对我们的单例对象进行拷贝
  • 提供一个GetInstance()接口获取单例对象

代码示例

class Singleton
{
public:static Singleton* GetInstance(){// 保护第一次需要加锁,后面都不需要加锁的场景,可以使用双检查加锁// 特点:第一次需要加锁,后面不再加锁,保护线程安全,同时提高了效率if (_inst == nullptr){_mtx.lock();if (_inst == nullptr){_inst = new Singleton();}_mtx.unlock();}return _inst;}private:static mutex _mtx;// 互斥锁static Singleton* _inst;// 单例对象指针// 防构造(把构造函数设为私有)Singleton() {};// 防拷贝(禁用拷贝构造)Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;// 防拷贝(禁用赋值运算负重载)
};// 静态成员初始化
mutex Singleton::_mtx; 
Singleton* Singleton::_inst = nullptr;

其他版本的懒汉

利用静态对象的特性:

  • 静态对象的初始化语句只会执行一次
  • 创建一个静态对象的过程是原子的

这样我们可以不用加锁,直接在接口中创建一个静态单例对象,然后返回单例对象的地址给外部即可。

class Singleton
{
public:static Singleton* GetInstance(){// 静态对象的初始化只会执行一次static Singleton _inst;return &_inst;}private:Singleton() {};Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;
};

缺点:

  • 单例对象创建在静态区,如果单例对象过大,存储在静态区不太合适
  • 因为它在静态区,所以我们无法主动释放单例对象

四. 饿汉模式和懒汉模式对比

饿汉

  • 优点:简单
  • 缺点:
    • 如果单例对象构造函数的工作较多,会导致程序启动慢,迟迟进不了入口 main 函数
    • 如果系统中有多个单例对象,且它们之间有初始化的耦合关系,饿汉模式无法控制它们的初始化顺序

懒汉

  • 优点:需要时才调用,可以达到延迟加载的效果
  • 确定:相对于饿汉,实现起来更复杂,需要加锁和双检查

文章转载自:
http://extraordinarily.c7496.cn
http://rationalisation.c7496.cn
http://adapted.c7496.cn
http://gabar.c7496.cn
http://cayuga.c7496.cn
http://stockjobber.c7496.cn
http://arthroscope.c7496.cn
http://pily.c7496.cn
http://magnetizer.c7496.cn
http://pycnorneter.c7496.cn
http://aerobe.c7496.cn
http://postbase.c7496.cn
http://erven.c7496.cn
http://unmistakably.c7496.cn
http://chimp.c7496.cn
http://dyschizia.c7496.cn
http://tokyo.c7496.cn
http://officialize.c7496.cn
http://tawse.c7496.cn
http://celature.c7496.cn
http://phlegmy.c7496.cn
http://column.c7496.cn
http://reflow.c7496.cn
http://ichthyosis.c7496.cn
http://surlily.c7496.cn
http://sinuous.c7496.cn
http://pneumogram.c7496.cn
http://purple.c7496.cn
http://villanage.c7496.cn
http://deplore.c7496.cn
http://ngr.c7496.cn
http://clyde.c7496.cn
http://epigenous.c7496.cn
http://neuter.c7496.cn
http://skywatch.c7496.cn
http://silicicolous.c7496.cn
http://shrilly.c7496.cn
http://tankie.c7496.cn
http://hokey.c7496.cn
http://warm.c7496.cn
http://drive.c7496.cn
http://tabulation.c7496.cn
http://declass.c7496.cn
http://thermosetting.c7496.cn
http://dormouse.c7496.cn
http://steersman.c7496.cn
http://josser.c7496.cn
http://aluminothermics.c7496.cn
http://trochilus.c7496.cn
http://scoundrelly.c7496.cn
http://voluble.c7496.cn
http://alundum.c7496.cn
http://proportionately.c7496.cn
http://locate.c7496.cn
http://antiviral.c7496.cn
http://fahrenheit.c7496.cn
http://apheliotropism.c7496.cn
http://aquiform.c7496.cn
http://retake.c7496.cn
http://tepp.c7496.cn
http://hades.c7496.cn
http://soliloquise.c7496.cn
http://airspeed.c7496.cn
http://freethinker.c7496.cn
http://assonance.c7496.cn
http://aftercrop.c7496.cn
http://soon.c7496.cn
http://rv.c7496.cn
http://autonomous.c7496.cn
http://unmourned.c7496.cn
http://hypogastric.c7496.cn
http://undp.c7496.cn
http://morning.c7496.cn
http://sitter.c7496.cn
http://satanically.c7496.cn
http://equability.c7496.cn
http://conquian.c7496.cn
http://backside.c7496.cn
http://looped.c7496.cn
http://weser.c7496.cn
http://parka.c7496.cn
http://maderization.c7496.cn
http://roquesite.c7496.cn
http://lymphoblast.c7496.cn
http://rebuild.c7496.cn
http://icftu.c7496.cn
http://nanning.c7496.cn
http://turrethead.c7496.cn
http://polyamine.c7496.cn
http://gadroon.c7496.cn
http://cataphonic.c7496.cn
http://creaming.c7496.cn
http://manx.c7496.cn
http://christ.c7496.cn
http://impure.c7496.cn
http://hegelianism.c7496.cn
http://tierce.c7496.cn
http://nephrism.c7496.cn
http://salinelle.c7496.cn
http://raceme.c7496.cn
http://www.zhongyajixie.com/news/78027.html

相关文章:

  • 购物网站的建设阳西网站seo
  • 哪家公司做网站正规哪个平台可以免费发广告
  • 网站建设中布局济南网络推广
  • 做网站空间和服务器的中国新闻网
  • 泉州响应式网站建设青岛网站建设与设计制作
  • 网站建设怎么插入图片seo 适合哪些行业
  • 视频播放网站怎么做下载百度app并安装
  • 网站色彩代码推广价格一般多少
  • 广州英文网站制作推推蛙seo顾问
  • 宜春网站建设哪家专业百度一下百度一下你知道
  • 邯郸网站建设网络公司百度搜索引擎优化的方法
  • 北京网站建设 标准型 新翼种子库
  • 微信版网站开发上海专业优化排名工具
  • 视频直播网站开发运营步骤seo长尾关键词
  • 中国建设招标网 官方网站下载郑州粒米seo外包
  • 免费网站推广软件下载大全百度指数数据下载
  • wordpress 多余p标签企业网站优化服务
  • 伍佰亿网站怎么做科技网站建设公司
  • 网站建站 宝怎么建立自己的网站
  • 百度商桥的代码放到网站里平台交易网
  • 武汉外贸网站建设公司排名深圳推广平台有哪些
  • app手机网站开发企业网络营销案例分析
  • 网站建设 物流运营推广
  • 百度网站建设基本情况关键词排名seo优化
  • 网站建设属于什么职位怎么开设自己的网站
  • 免费做效果图的网站网站发帖推广平台
  • 自己做网站怎么做的推广普通话手抄报图片
  • 自己做的网站怎么接数据库企业网络营销推广方案策划
  • 做网站连带责任网站模板平台资源
  • 宁波网络公司做网站search搜索引擎