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

用wordpress建立专业网站视频教程营销推广内容

用wordpress建立专业网站视频教程,营销推广内容,虚拟主机网站建设的几个步骤,做阿里巴巴网站装修要多久1.1 单例 创建一个单例对象 SingleModel , SingleModel 类有它的私有构造函数和本身的一个静态实例。 SingleModel 类提供了一个静态方法,供外界获取它的静态实例。 DesignTest 我们的演示类使用 SingleModel 类来获取 SingleModel 对象。 创建 Single…

1.1 单例

创建一个单例对象 SingleModel , SingleModel 类有它的私有构造函数和本身的一个静态实例。
SingleModel 类提供了一个静态方法,供外界获取它的静态实例。 DesignTest 我们的演示类使用
SingleModel 类来获取 SingleModel 对象。
创建 SingleModel :
public class SingleModel {
//创建 SingleModel 的一个对象
private static SingleModel instance = new SingleModel();
//让构造函数为 private,这样该类就不会被实例化
private SingleModel(){}
//获取唯一可用的对象
public static SingleModel getInstance(){
return instance;
}
public void useMessage(){
System.out.println("Single Model!");
}
}
测试:
public class DemoTest {
/****
* 单例模式测试
*/
@Test
public void testSingleModel(){
//不合法的构造函数
//编译时错误:构造函数 SingleModel() 是不可见的
//SingleModel singleModel = new SingleModel();
//获取唯一可用的对象
SingleModel singleModel1 = SingleModel.getInstance();
SingleModel singleModel2 = SingleModel.getInstance();
//显示消息
singleModel1.useMessage();
//创建的2个对象是同一个对象
System.out.println(singleModel1 == singleModel2);
}
}
输入结果如下:
Single Model!
true
我们测试创建 10 万个对象,用单例模式创建,仅占内存: 104 字节,而如果用传统方式创建 10 万个对
象,占内存大小为 2826904 字节。

1.2 扩展

单例模式有多种创建方式,刚才创建方式没有特别的问题,但是程序启动就需要创建对象,不管你用不
用到对象,都会创建对象,都会消耗一定内存。因此在单例的创建上出现了多种方式。
懒汉式:
1 、延迟加载创建,也就是用到对象的时候,才会创建
2 、线程安全问题需要手动处理 ( 不添加同步方法,线程不安全,添加了同步方法,效率低 )
3 、实现容易
案例如下: SingleModel1
 public class SingleModel1 {private static SingleModel1 instance;private SingleModel1(){}public static SingleModel1 getInstance(){if(instance == null){instance = new SingleModel1();}return instance;}}
如果在创建对象实例的方法上添加同步 synchronized , 但是每次 get 获取对象都必须排队竞争,效率极
低,代码如下:
添加同步会解决多线程安全的问题但是会明显的降低获取对象实例的效率。
public static synchronized SingleModel1 getInstance() {if (instance == null){instance = new SingleModel1();}return instance;}
双重校验锁: SingleModel2
这种方式采用双锁机制,安全且在多线程情况下能保持高性能。
public class SingleModel2 {//不实例化private static SingleModel2 instance;//让构造函数为 private,这样该类就不会被实例化private SingleModel2(){}//获取唯一可用的对象public static SingleModel2 getInstance(){
//instance为空的时候才创建对象if(instance==null){
//同步锁,效率比懒汉式高synchronized (SingleModel2.class){
//这里需要判断第2次为空if(instance==null){instance = new SingleModel2();}}}return instance;}public void useMessage(){System.out.println("Single Model!");}}
指令重排问题
对象创建,一般正确流程如下:
  1. 申请内存空间
  2. 创建并初始化对象
  3. 将变量指向申请的内存空间地址
但其实在对象创建的时候,也有可能发生 指令重排问题,也就是上面流程会被打乱:
  1. 申请内存空间
  2. 将变量指向申请的内存空间地址 //这一步后,变量不再为null,但是初始化其实并没完成
  3. 创建并初始化对象
如果是这样的话,双检锁在多线程情况下也会出现问题,需要添加 volatile 属性,该属性能防止指令
重排,代码如下:
    public class SingleModel2 {//不实例化private static volatile SingleModel2 instance;//让构造函数为 private,这样该类就不会被实例化private SingleModel2(){}//获取唯一可用的对象public static SingleModel2 getInstance(){
//instance为空的时候才创建对象if(instance==null){
//同步锁,效率比懒汉式高synchronized (SingleModel2.class){
//这里需要判断第2次为空if(instance==null){instance = new SingleModel2();}}}return instance;}public void useMessage(){System.out.println("Single Model!");}}

1.3 单例模式特点

  1. 单例类只能有一个实例。 A a = new A()
  2. 单例类必须自己创建自己的唯一实例。
  3. 单例类必须给所有其他对象提供这一实例。

1.4单例模式优点:

  1. 在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例。
  2. 避免对资源的多重占用(比如写文件操作)。

http://www.yidumall.com/news/102024.html

相关文章:

  • 上海 宝安网站建设 网络服务昆明百度推广开户
  • 微信如何开通小程序搜索引擎优化课程
  • 网站内部优化做引流推广的平台600
  • 深圳 网站开发惠州网络营销公司
  • 网站建设感谢信湖南网站建设加盟代理
  • 个人网站备案流程百度小说搜索风云榜
  • 辽宁手机版建站系统开发百度seo排名优化
  • 榆林网站建设哪家好信阳seo
  • 网站诊断分析报告模板及优化执行方案.doc网站建设的一般步骤
  • 企业网站建设有什么好处今日热点新闻头条国内
  • 网站的联系我们怎么做百度导航下载2020新版语音
  • 英文购物网站建设襄阳网站推广优化技巧
  • 做网站预算整站seo服务
  • 宠物论坛网站策划书韶关疫情最新消息
  • 重庆网站制作那家好学网络运营需要多少钱
  • 网站开发亿码酷流量百度荤seo公司
  • wordpress 开发指南网站排名优化公司
  • behance设计网站官网网页搜索优化
  • 中国宁波网站广东优化疫情防控措施
  • 橘子建站是什么有哪些网络营销公司
  • 湖北网站建设平台应用商店aso优化
  • 做网站申请个体户淘宝seo 优化软件
  • 苏州建设有限公司seo刷网站
  • 做网站需要什么样的电脑配置电商热门关键词
  • wordpress设置标题字体厦门seo网站推广优化
  • 青岛高级网站建设服务bt磁力在线种子搜索神器下载
  • 上海百度做网站深圳搜狗seo
  • 毕业设计做网站选题深圳优化公司义高粱seo
  • 少儿编程免费网站郑州企业网站seo
  • 杭州建设厅官方网站石家庄关键词优化软件