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

南宁做网站开发的公司有哪些如何根据仿站做网站

南宁做网站开发的公司有哪些,如何根据仿站做网站,百度一下就会知道了,ui培训报名单例模式是设计模式的一种,先谈谈什么是设计模式? 大家应该都知道棋谱、剑谱之类的,就是一些“高手”在经历过长期的累计之后,更具经验写出的具有固定套路的处理“方法”,只要按照这个套路来,在对局之中必然…

单例模式是设计模式的一种,先谈谈什么是设计模式?

大家应该都知道棋谱、剑谱之类的,就是一些“高手”在经历过长期的累计之后,更具经验写出的具有固定套路的处理“方法”,只要按照这个套路来,在对局之中必然是不会吃亏的,甚至能够一招制敌。

那么在我们日常的开发中也有大佬们针对一些十分常见的场景,抽象出固定的套路。一些小白在学习了大佬总结的设计模式之后,就像是掌握了套路,针对适用的场景就不会吃亏。

单例模式的使用场景是什么呢?单例模式能够保证某个类的在程序中只存在唯一的一份,就算是new多个实例,实际上也是同一份。

这一点在很多场景上都需要. 比如 JDBC 中的 DataSource 实例就只需要一个.

单例模式的具体实现方式可以分为 饿汉模式 和 懒汉模式:

饿汉模式:

类加载的同时创建实例。

class Singleton{//static 修饰 是类属性 直接在类加载的时候将实例创建出来,饿汉模式private static Singleton instance = new Singleton();//为了避免Singleton类不小心被复制出多份//将构造方法设置为private。这样在类外面就没有办法通过new的方式来创建 Singleton这个实例了private Singleton() {}public static Singleton getInstance(){return instance;}
}

懒汉模式-单线程版本

类加载的时候不创建实例. 第一次使用的时候才创建实例.

class SingletonLazy{private static SingletonLazy instance = null;private SingletonLazy(){}public static SingletonLazy getInstance(){if(instance == null){instance = new SingletonLazy();}return instance;}
}

懒汉模式-多线程版本

为什么这里的懒汉模式需要考虑多线程版本呢?因为上面的单线程的代码存在线程安全的问题。不安全是因为在getInstance当中有对instance的写操作,涉及到写操作的时候就要小心了。如果在第一次创建实例的时候有多个线程同时调用了getInstance方法就会导致创建出多个不同的实例了,与我们的单例模式初衷所悖。因此需要对这里的写操作加锁:

class Singleton {private static Singleton instance = null;private Singleton() {}public synchronized static Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}
}

懒汉模式-多线程改进版本

上面的代码还存在着两个不足

  1. 加锁是一个开销比较高的操作,我们也看到了之所以线程不安全是因为在第一次创建实例的时候有可能有多个线程同时施行,导致了创建出多个不同的实例。那么我们只需要针对首次创建实例的时候加锁,后续的操作就没有必要加锁了。这样可以提升很大的效率。
  2. 同时为了避免“内存可见性”导致读取的instance存在偏差,于是补充上volatile
class SingletonThread {private static volatile SingletonThread instance = null;private SingletonThread() {}public static SingletonThread getInstance() {if (instance == null) {synchronized (SingletonThread.class) {if (instance == null) {instance = new SingletonThread();}}}return instance;}
}

注意理解两个if判定。

虽然两个if的判定条件是一样的但是两者的含义却大大不同。第一个if判定是判定instance是否是第一次创建,如果没有创建的话就开始创建实例并且加锁。第二个if判定抢夺到锁后,instance是否已经被创建了。两个if语句不可以省略任意一个。

http://www.yayakq.cn/news/705726/

相关文章:

  • 门户网站的主要功能交易平台网站开发教程百度云
  • 求职招聘网站建设投标书做网站上市的公司
  • 渭南网站建设网站排名优化wordpress首页幻灯片重复显示
  • 网站建设人工智能开发华能招标采购电子商务平台
  • 成都网站建设 全美网站界面设计实训的意义
  • 东莞企业网站搭建制作公司宣传推广方案
  • 网站建设论坛fantodo深圳百度网站排名优化
  • 河南便宜网站建设价格低双语网站建设方案
  • 长春网站建设哪个公司好html网站模板 免费
  • h5自适应网站源码网站功能需求用什么做
  • 上海网站备案核验单状态查询永川做网站的公司
  • 淮安做网站 卓越凯欣seo全网营销公司
  • 如何做网站怎么赚钱在网上可以做宣传的有那些网站
  • 养老网站建设合同怎么建设自己网站首页
  • 找人做app网站做试试彩网站
  • 长春火车站在哪个街道做学校的网站推广发展前景
  • 台州网站建设咨询怎么做二手房网站
  • 自由室内设计师接单网站西安 网站 制作
  • 网站安全设计用wordpress制作网站模板
  • 禁止域名访问网站网站源代码购买
  • 网站开发怎么挣外快wordpress主题 路径
  • 一个网站开发北京今天出现什么情况了
  • 中国最大的做网站的公司网页制作软件
  • 推广网站的软件wordpress模版制作工具
  • 新手怎么学做网站重庆航运建设发展有限公司网站
  • 网站建设企业资质等级门户网站做等保需要备案哪些
  • 官方网站建设需要哪个部门审批石柱土家族网站建设
  • 网站怎么更换页面图片wordpress企业建站教程
  • 团购做的好的网站python 发表wordpress
  • 网站建设7个主要流程seo外链工具