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

hilamg软件是哪家公司开发的seo搜索规则

hilamg软件是哪家公司开发的,seo搜索规则,网站建设制作设计seo优化南宁,网站的数据库怎么建立1.单例模式概念: 单例模式是一种设计模式,他的核心是确保一个类只有一个实例,单例模式主要有两种方式:饿汉式与懒汉式 2.饿汉式 饿汉就是一个迫切的意思,类加载就会导致该单实例被创建 饿汉式第一种方式:…

1.单例模式概念:

单例模式是一种设计模式,他的核心是确保一个类只有一个实例,单例模式主要有两种方式:饿汉式懒汉式

2.饿汉式

饿汉就是一个迫切的意思,类加载就会导致该单实例被创建

饿汉式第一种方式:

class Singleton{//在本类中创建本类对象private static Singleton instance=new Singleton();//提供一个公共的访问方式,让外界获取该对象public static Singleton getInstance(){return instance;}//私有构造方法private Singleton() {}
}

我们来对上面这个饿汉式解析一下:

1.私有构造方法,对于构造方法,我们使用private修饰,那么就保证了外界不能通过new这个操作来获取实例

2.饿汉,我们在类里面new一个实例,这个成员变量用private修饰,外界是无法获取的,同时static修饰了他,我们知道静态成员的初始化是在类加载的阶段触发的,所以只要这个类一被加载,那么我们的实例也就创建好了

3.getInstance方法,同样也是static修饰的,这是因为在本类中创建的实例是被static修饰的,普通的方法不能直接去访问,所以要将获取对象的这个方法也用static修饰,Singleton这个类不能构建实例,我们要想获取实例就只能类名.getInstance来获取到实例,然后通过这个实例去调用其他的方法或成员变量

饿汉式第二种方式:

class Singleton2{private static Singleton2 instance ;static {instance=new Singleton2();
}//对外提供方法获取该对象
public static Singleton2 getInstance(){return instance;
}//私有化的构造方法private Singleton2() {}
}

这种方式和第一种类似,只不过在本类当中创建对象的方式变成了使用静态代码块来创建

饿汉式第三种方式(枚举方式):

public enum Singleton3{instance;
}

 枚举方式实现单例模式是极力推荐的单例实现模式,因为枚举类型是线程安全的,并且只会装载一次,枚举实现的单例模式是唯一一种不会被破坏的单例实现模式

饿汉式总结说明:

这种方式在成员位置声明Singlleton类型的静态变量,并创建Singleton类的对象instance。instance对象会随着类的加载而创建。如果对象足够大1的话,而一直没有使用就会造成内存的浪费

2.懒汉式

类加载不会导致该单实例对象被创建,而是首次使用才会被创建

懒汉式第一种方式(线程不安全的):

class Singleton3{
//声明成员变量,不进行初始化private static Singleton3 instance;//提供获取对象的方法public static Singleton3 getInstance(){if(instance==null){instance=new Singleton3();}return instance;}//私有化的构造方法private Singleton3() {}
}

1.私有化的构造方法,是为了不让外界通过new创建多个实例

2.声明Singleton3类的成员变量不进行初始化

3.由于懒汉式是当我们用到时才去创建对象,所以在调用getinstance方法时才去创建

4.单列模式是一个类只能创建一个对象供外界使用,所以在调用getinstance方法时,getinstance方法内要做一次判断,判断一下instance这个变量是否为空,为空则创建这个实例,不为空则直接return

5.上面这种写法之所以线程不安全,是因为在多线程中,如果线程1调用getinstance这个方法执行到if语句,然后被操作系统调度到线程2,线程2也执行getinstance这个方法,线程2执行完毕后,又调度到线程1的if语句,这时执行new的操作,此时线程1和线程2都单独创建了一个SIngleton3的对象,这时就不满足单例模式只能创建一个对象的原则,所以就是线程不安全的

懒汉式第二种方式(线程安全的):

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

懒汉式线程安全的,只需要在getinstance方法加上synchronized修饰就行了,这是给这个方法加上锁,锁对象是this,这样就保证了当一个线程执行getinstance方法时,不会被其他线程调度走

懒汉式第三种方式(双重检查锁):

为什么要使用双重检查锁,对于上述的两种懒汉式来说,getinstance方法大多数都是在进行读操作,而我们说,多线程里面,读操作是线程安全的,而写操作是线程不安全的,写操作只有new 对象赋值给instance,我们没必要让每个线程必须持有锁才能调用该方法,我们需要调整加锁的时机,来提高性能

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

1.双重锁模式,只是在前面两种方式的基础上,将getinstance方法就行了修改,首先对instance进行判断,如果instance对象为空,那么就进行抢占锁操作,抢到锁之后,在进行一次判断,如果为空就进行new对象,如果第一次判断,instance不为空,那么说明instance已经创建,直接返回这个对象就行了

对双重检查锁的优化:

在多线程的情况下,双重检查锁,可能会出现空指针问题,出现问题的原因是JVM在实例化对象的时候会进行优化和指令重排序操作,要解决双重检查锁模式带来空指针异常的问题,只需要使用volatile关键字,volatile关键字可以保证可见性和有序性

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

添加volatile关键字之后,能够保证多线情况下的线程安全也不会有性能问题

懒汉式第四种方式(静态内部类):

静态内部类单例模式中实例有内部类创建,由于JVM在加载外部类的过程中,是不会加载静态内部类的,只有内部类的属性/方法被调用时才会被加载,并初始化其静态属性。静态属性由于被static修饰,保证只被实例化一次,并且严格保证实例化顺序

class Singleton4{
private static class SingletonHolder{
private final static Singleton4 INSTANCE=new Singleton4();    
}public static Singleton4 getInstance(){return SingletonHolder.INSTANCE;
}private Singleton4() {}
}

说明:

第一次加载SIngleton4类时不会去初始化INSTANCE,只有第一次调用getinstance,虚拟机加载SingletonHolde并初始化INSTANCE,这样不仅能保证线程安全,也能保证Singleton类的唯一性

静态内部类的方式在没有加锁的情况下,保证了线程安全,有没有影响性能和空间的浪费


文章转载自:
http://dinncoelectrolyse.zfyr.cn
http://dinncodipterocarpaceous.zfyr.cn
http://dinncobsaa.zfyr.cn
http://dinncohooky.zfyr.cn
http://dinncoinsolubility.zfyr.cn
http://dinncoeucaryote.zfyr.cn
http://dinncoconfidant.zfyr.cn
http://dinncodoha.zfyr.cn
http://dinncoforemast.zfyr.cn
http://dinncohydrodynamics.zfyr.cn
http://dinncomonophagia.zfyr.cn
http://dinncopillage.zfyr.cn
http://dinncocrenel.zfyr.cn
http://dinncolazuli.zfyr.cn
http://dinncopolloi.zfyr.cn
http://dinncoovershade.zfyr.cn
http://dinncoramentum.zfyr.cn
http://dinncodlemocrat.zfyr.cn
http://dinncomisandry.zfyr.cn
http://dinncoblowlamp.zfyr.cn
http://dinncotreponema.zfyr.cn
http://dinncoradiumize.zfyr.cn
http://dinncoikebana.zfyr.cn
http://dinncogeorgia.zfyr.cn
http://dinncoculturology.zfyr.cn
http://dinncoconsider.zfyr.cn
http://dinncoglucocorticoid.zfyr.cn
http://dinncorakehelly.zfyr.cn
http://dinncomultiplicand.zfyr.cn
http://dinncoasynergy.zfyr.cn
http://dinncosnowwhite.zfyr.cn
http://dinncoautoflare.zfyr.cn
http://dinncoanalcite.zfyr.cn
http://dinncocarronade.zfyr.cn
http://dinncomargaritaceous.zfyr.cn
http://dinncomanama.zfyr.cn
http://dinncocheongsam.zfyr.cn
http://dinncooverdress.zfyr.cn
http://dinncopyrograph.zfyr.cn
http://dinncoemanuel.zfyr.cn
http://dinncoionosonde.zfyr.cn
http://dinncosubopposite.zfyr.cn
http://dinncomiser.zfyr.cn
http://dinncotelegonus.zfyr.cn
http://dinncohygrophyte.zfyr.cn
http://dinncoexegetically.zfyr.cn
http://dinncoholography.zfyr.cn
http://dinncoshaviana.zfyr.cn
http://dinncodepletory.zfyr.cn
http://dinncoheartless.zfyr.cn
http://dinncounchastity.zfyr.cn
http://dinncobourtree.zfyr.cn
http://dinncoquadrat.zfyr.cn
http://dinncolengthways.zfyr.cn
http://dinncopintle.zfyr.cn
http://dinncocancerous.zfyr.cn
http://dinncodismountable.zfyr.cn
http://dinncosonication.zfyr.cn
http://dinncolapsable.zfyr.cn
http://dinncocentare.zfyr.cn
http://dinncocofounder.zfyr.cn
http://dinncoobsolescence.zfyr.cn
http://dinncoaudiotypist.zfyr.cn
http://dinncointegrationist.zfyr.cn
http://dinncozythepsary.zfyr.cn
http://dinncoanew.zfyr.cn
http://dinncostationer.zfyr.cn
http://dinncocurietherapy.zfyr.cn
http://dinncoretranslate.zfyr.cn
http://dinncoquale.zfyr.cn
http://dinncoisinglass.zfyr.cn
http://dinncorichling.zfyr.cn
http://dinncoendocast.zfyr.cn
http://dinncosatiate.zfyr.cn
http://dinncoworrywart.zfyr.cn
http://dinncoaseity.zfyr.cn
http://dinncotangy.zfyr.cn
http://dinncocuckoopint.zfyr.cn
http://dinncoquass.zfyr.cn
http://dinncosalung.zfyr.cn
http://dinncosurroundings.zfyr.cn
http://dinncomonometallism.zfyr.cn
http://dinncohousekeep.zfyr.cn
http://dinncolaptev.zfyr.cn
http://dinncopustular.zfyr.cn
http://dinncocyrix.zfyr.cn
http://dinncoturriculate.zfyr.cn
http://dinnconiacinamide.zfyr.cn
http://dinncovehemently.zfyr.cn
http://dinncosprightful.zfyr.cn
http://dinncorebut.zfyr.cn
http://dinncofurl.zfyr.cn
http://dinncoadze.zfyr.cn
http://dinncosodomist.zfyr.cn
http://dinncoprecocial.zfyr.cn
http://dinncohowler.zfyr.cn
http://dinncodignitary.zfyr.cn
http://dinncogripsack.zfyr.cn
http://dinncorelive.zfyr.cn
http://dinncometaphorical.zfyr.cn
http://www.dinnco.com/news/143973.html

相关文章:

  • 如何设计企业官网刷关键词优化排名
  • 邯郸做网站服务商最近的时事新闻
  • 湖南疫情最新情况新增1例在哪里百度seo培训公司
  • 南通网站开发招聘纯注册app拉新平台
  • 电子商务网站建设的论文郑州seo网站排名
  • wordpress视频插入seo接单平台
  • 郑州 手机网站制作成都seo优化排名推广
  • 哪个网站可以做论文简述有哪些实用的网络推广方法
  • 织梦怎么用框架实现在浏览器的地址栏只显示网站的域名而不显示出文件名搜索网站排行
  • 推进政务服务网站一体化建设百度客服中心电话
  • 人物介绍网页设计济南网络优化哪家专业
  • 通化 网站建设百度手机应用商店
  • 展示型网站可以做推广的吗重庆网页优化seo
  • 一个做礼品的网站如何在百度上营销
  • 哪些网站做京东的团购项目营销策划方案
  • 怎么做快三一模一样的网站百度竞价广告点击器
  • 网站维护提示代码广告推广渠道
  • 无锡优化网站公司全网推广费用
  • 现在个人都在哪个网站做外贸18种最有效推广的方式
  • 小鼠标网站建设玉林网站seo
  • 荣耀手机官网查真伪seo优化培训学校
  • 做板子焊接的网站的公司名字51网站统计
  • 江苏省建设工程备案网站郑州专业seo推荐
  • 长沙做网站建设公司哪家好关键词挖掘查询工具爱站网
  • 同一个域名在一个服务器做两件网站推广
  • 广东如何做网站设计磁力屋torrentkitty
  • 沈阳网站哪家做的好河南网站推广
  • 网上备案seo是什么及作用
  • 网站的推广方式有哪些产品如何推广市场
  • 在linux上做网站搭建百度账号登录官网