探索单实例

问题描述

第一种单实例publicstaticSingletonclass{staticinta;staticintb;staticSingleton{}}这是不是一种最简单的单实例,内存中只有一份??还是每线程一份?如果是每线程一份那static关键字的意义何在呢?我在xp的iis中测试过这种单实例,结果是每刷新一次,就调用一次Singleton的静态构造函数,很费解啊.假如这是一种单实例,个人认为这是首选使用的单实例,因为简单,容易使用----------------------------------------第二中单实例usingSystem;  publicclassSingleton  {  privatestaticSingletoninstance;  privateSingleton(){}  publicstaticSingletonInstance  {  get  {  if(instance==null)  instance=newSingleton();  returninstance;  }  }  }这种方案在.Net下面是线程不安全的,每个线程进来会创建不同的类型实例。(引用别人的说明)static修饰的东西不是只有一个副本,都一直放在内存中吗,为什么每个线程进来会创建不同的类型实例?--------------------------------------------第三中单实例publicsealedclassSingleton  {  privatestaticreadonlySingletoninstance=newSingleton();  privateSingleton(){}  publicstaticSingletonInstance  {  get  {  returninstance;  }  }  }毫无疑问,这是一种线程安全的单实例,因为有readonly修饰----------------------------------------------publicclassSingletonProviderwhereT:new()  {  SingletonProvider(){}  publicstaticTInstance  {  get{returnSingletonCreator.instance;}  }  classSingletonCreator  {  staticSingletonCreator(){}  internalstaticreadonlyTinstance=newT();  }  }  publicsealedclassSingleton  {  privatestaticvolatileSingletoninstance;  privatestaticobjectsyncRoot=newObject();  privateSingleton(){}  publicstaticSingletonInstance  {  get  {  if(instance==null)  {  lock(syncRoot)  {  if(instance==null)  instance=newSingleton();  }  }  returninstance;  }  }  }这两种都是单实例,感觉象在脱裤子放屁,绕弯子-------------------------------------------个人认为static修饰的类就是单实例了static修饰的变量是线程不安全的,每个线程都可以任意修改变量的值,即static变量在内存中对所有线程是共享的因此static修饰的类虽然是线程不安全的,但对所有线程还是共享的,所以也是一种单实例可我在xp的iis中测试,每刷新一次static类的构造函数都要被调用一次,请各位支招,谢谢!我开发的一些组件类经常需要很多参数,每个组件有一个配置类,如果页面使用到组件需要传递配置类给组件,因此我想实例化好一些配置类在内存中,这样所有线程都共享这些配置类,多好啊,省得每次使用组件都得初始化

解决方案

解决方案二:
xp的iis真是烂东西,我在2003的iis中无论刷新或者重新打开网页多少次static修饰的类和变量始终就在内存中,不会重新创建妈的,回家就装2003,

时间: 2024-10-22 04:28:08

探索单实例的相关文章

CSS网页设计实例:网页登陆表单实例

文章简介:网页登陆表单实例. W3cplus从今天刚开推出藤藤练习的CSS3系列.出这个系列主要是为了让同样有着CSS3兴趣的同学更有动力,在这个系列中都是由W3cplus美女成员藤藤每天根据国外搜集的有关psd设计图,然后将设计图通过css3的代码转换成DEMO案例.一是为了自己提高,二是与其他有同样爱好的同学一起分享.如果你喜欢,那就持续关注w3cplus的有关更新. 这个案例主要制作的是一个登录表单,在这个案例中使用了box-shadow.gradient,transform和transi

关于构造单实例类的一个问题

最近一个朋友问我创建单实例的一个问题,他写了一个C++单实例类CSingleton,其构造函数也是private类型.这个类有一个静态函数:GetInstance,它返回单实例类对象的引用,只要用这个函数声明实例便可以限制对象的复制:// 这一句编译器通不过 CSingleton temp = CSingleton::GetInstance(); 但是编译器始终在上面这行代码处受阻.这到底是为什么呢? 其实,这个问题只要弄清楚编译器处理单实例类的一些细节,问题便会迎刃而解.当编译器碰到上面的这条

单实例设计模式的实现

单实例设计可能是使用最广泛的设计模式.其思想意图是保证一个类只有一个实例,并且提供类对象的全程访问.单实例对象应用的范围很广:如GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘.本文将讨论如何用C++实现单实例模式,并解释如何优化单线程应用的设计. 设计方案 使用全程对象能够保证方便地访问实例,但是不能保证只声明一个对象-也就是说除了一个全程实例外,仍然能创建相同类的本地实例.单实例模式通过类本身来管理其唯一实例,这种特性提供了

Oracle中如何恢复rac db(raw)到单实例下

os:redhat as 4 oracle:oracle10gR2 客户提出了这样一个要求,演示一下rac db到单实例的恢复,他们的目的是检验生产环境的备份有效性 下面是思路和主要步骤: 1.先在rac db下生成一个init参数文件 2.修改参数,cluster_database为false以及屏蔽local_listener等和集群相关的参数 3.通过rman备份rac db(为了简单我使用了catalog) 4.拷贝参数文件和rac db备份到单实例机器上 5.在单实例机器上创建bdum

oracle如何利用STANDBY将单实例数据库升级为RAC环境(四)

利用Oracle的STANDBY技术,可以将单实例数据库升级到RAC数据库.这种方式可以有效的降低单实例迁移到RAC环境的停机时间. 这篇文章描述整个操作过程中碰到的错误. 最开始碰了几个初始化参数设置的小错误,主要问题是FLASH_RECOVERY_AREA设置到ASM实例上导致了问题: SQL> startup nomount pfile=/export/home/oracle/inittest11gr1.ora ORA-01261: Parameter db_recovery_file_d

oracle如何利用STANDBY将单实例数据库升级为RAC环境(三)

利用Oracle的STANDBY技术,可以将单实例数据库升级到RAC数据库.这种方式可以有效的降低单实例迁移到RAC环境的停机时间. 这篇文章描述单实例环境与RAC环境的SWITCHOVER过程. 前面已经成功搭建了单实例数据库TEST11G的RAC环境STANDBY数据库TEST11GR.STANDBY数据库的两个实例可以同时以READ ONLY方式启动. 下面为了执行SWITCHOVER操作,可以先关闭实例2: bash-3.00$ export ORACLE_SID=test11gr2 b

oracle如何利用STANDBY将单实例数据库升级为RAC环境(二)STANDBY数据库的建立

利用Oracle的STANDBY技术,可以将单实例数据库升级到RAC数据库.这种方式可以有效的降低单实例迁移到RAC环境的停机时间. 这篇文章介绍STANDBY数据库的建立. 上一篇完成了绝大部分准备的工作,下面在打开数据库之前,还要设置一下目标数据库上的密码文件. 在STANDBY的RAC环境的两个节点上分别拷贝密码文件: bash-3.00$ cd $ORACLE_HOME/dbs bash-3.00$ ftp 172.0.2.61 Connected to 172.0.2.61. 220

oracle如何利用STANDBY将单实例数据库升级为RAC环境(一)

利用Oracle的STANDBY技术,可以将单实例数据库升级到RAC数据库.这种方式可以有效的降低单实例迁移到RAC环境的停机时间. 这篇文章介绍STANDBY数据库建立的准备工作. 首先需要确保目标服务器上的RAC环境已经建立,如果使用ASM作为存储机制,则ASM实例也配置完成. 下面开始STANDBY数据库建立的过程,更改源数据库的FORCE LOGGING属性: bash-3.00$ sqlplus "/ as sysdba" SQL*Plus: Release11.1.0.6.

Oracle 10g RAC RMAN备份异机单实例恢复

本文通过将Oracle 10g RAC RMAN的完整的备份进行异机恢复的过程,可以对在恢复的过程中可以发现备份时的一些问题.比如规档日志的冗余,控制文件与参数文件的自动备份的利用等,本示例是拿了rman的备份集进行备份的,所以在最后的启动数据库的过程中出现了问题,提示控制文件过旧等问题,所以备份需要经过详细高可用的设计,才能在恢复过程中降低风险. Oracle 11g R2 RAC on OEL5.8 x64安装笔记 http://koumm.blog.51cto.com/703525/128