Browsed by
Month: August 2007

一个单例模式的变种形式—-可控多例模式

一个单例模式的变种形式—-可控多例模式

单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 实现单例模式的思路是:一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称);当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用;同时我们还将该类的构造函数定义为私有方法,这样其他处的代码就无法通过调用该类的构造函数来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例。 这里,我不想多说这个模式,而是说明另一种模式。 假设系统中出现这样的情况:系统中不仅仅只需要出现1个实例,而是最多只能出现2个或3个呢?单例模式明显就不能用了,怎么办,其实也很简单,修改单例的类,让其返回对象的函数检测系统中已存在的实例个数,如果超过了,就抛出异常,否则则返回一个实例。 另外,因为要严格控制系统中已创建实例的个数,就需要一个计数器,java和c++不同,没有析构函数,所以,就要求使用者调用一个释放的方法,来告诉系统已经消除了该实例。 既然已经想到了修改某个单例类,能不能更简单一些,创造一个框架性的东西,让想采用该模式设计的类,只要继承这套框架就可以使用了呢?也是可以的。具体是这样实现的,利用jdk1.5的模板功能,创造一个Count的模板类,该类负责统计数目和抛出异常,所有想使用这个模式的类,继承该Count类就可以了。具体请看下面的代码。 /** * 单例模式的变种,可以控制建立实例的数目 * * 计数器类 * * 如果超过建立制定数目的实例,则抛出MaxInstanceException异常 * * @author roye( royelee_007@hotmail.com ) * @version 0.1 * @see MaxInstanceException */class Count<T>{ public static int objectNum = 0;  private static int OBJECT_SUM = 1;  protected Count() throws MaxInstanceException{  //System.out.println("objectNum = " + objectNum);    ++objectNum;    if(objectNum > OBJECT_SUM){   throw new MaxInstanceException();  }    init(); }  /*  * 可以改变此函数来获得不同的初始化效果  */ protected void init(){  //…. }  /*  * 每一个实例被释放时,一定要调用这个函数,否则无法创建新的实例  */ public void release(){  –objectNum; }  /*  * 指定某个类的最大实例数目,默认为1个实例  */ protected static void setObejctSum(int s){  OBJECT_SUM  = s; }} class MaxInstanceException extends Exception{}; /* * 一个例子,请注意该类的构造函数和getInstance函数的形式。必须按照此形式,才能顺利采用Count的框架 * * @author roye( royelee_007@hotmail.com ) * @version 0.1 * @see Count<T> */class Print extends Count<Print>{ private Print() throws MaxInstanceException{ }  public static…

Read More Read More

用数据想象

用数据想象

今天去几个贴吧,记录下了当前的会员数。   唐禹哲吧 本吧已有会员6442炎亚纶吧 本吧已有会员10727吴尊吧    本吧已有会员12508   周杰伦吧 本吧已有会员30599   王力宏吧 本吧已有会员6866 刘德华吧 本吧已有会员4866 

Private Members in JavaScript

Private Members in JavaScript

Douglas Crockfordwww.crockford.com  JavaScript is the world’s most misunderstood programming language. Some believe that it lacks the property of information hiding because objects cannot have private instance variables and methods. But this is a misunderstanding. JavaScript objects can have private members. Here’s how. ObjectsJavaScript is fundamentally about objects. Arrays are objects. Functions are objects. Objects are objects. So what are objects? Objects are collections of name-value pairs. The names are strings, and the values are strings, numbers, booleans, and objects (including…

Read More Read More

JavaScript:The World's Most Misunderstood Programming Language

JavaScript:The World's Most Misunderstood Programming Language

Douglas Crockfordwww.crockford.com JavaScript, aka Mocha, aka LiveScript, aka JScript, aka ECMAScript, is one of the world’s most popular programming languages. Virtually every personal computer in the world has at least one JavaScript interpreter installed on it and in active use. JavaScript’s popularity is due entirely to its role as the scripting language of the WWW. Despite its popularity, few know that JavaScript is a very nice dynamic object-oriented general-purpose programming language. How can this be a secret? Why is this…

Read More Read More

我做的两个Google 桌面小工具

我做的两个Google 桌面小工具

前段时间做的两个gadget,今天登陆Google 桌面小工具,发现已经可以下载了,也算值得高兴的一件事情吧。(ps:其实今天挺郁闷的。)   下载地址: 每日英文每日英文,是您英文学习的好帮手,每日自动更新8类英文句子。日积月累,你的英文水平一定有所进步。 http://desktop.google.com/plugins/i/DailyEnglish.html   15 game这是一个益智游戏,每一轮你要在1-9中选择一个数(选过的不能再选),如果其中3个数的和为15,你就赢了,而当电脑先达到了目标,你就输了。 http://desktop.google.com/plugins/i/15game.html

QT 遇到的缺Debug lib问题1则

QT 遇到的缺Debug lib问题1则

问题: 我用QT DESIGNER產生了.ui檔之後,在經過 qmake -project test.ui =>造出a.pro之後 qmake a.pro =>造出了Makefile…..等等檔之後 make =>這裡會出現錯誤 如下!! mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory `D:/a’ g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runt ime-pseudo-reloc -Wl,-subsystem,windows -o "debuga.exe" -L"C:Qt4.0.1lib" – lmingw32 -lqtmaind -lQtCored4 -lQtGuid4 c:mingwbin..libgccmingw323.4.2……..mingw32binld.exe: cannot fin d -lqtmaind collect2: ld returned 1 exit status mingw32-make[1]: *** [debuga.exe] Error 1 mingw32-make[1]: Leaving directory `D:/a’ mingw32-make: *** [debug] Error 2 不知道是為什們??   解答: 這是因為你沒有編譯Qt之Debug的Lib。 安裝完Qt後,在Qt的工作群組裏應該有個 「Qt 4.0.1 (Build Debug Libraries)」的捷徑,點選它, 會跳至Console畫面,接著它會問一個版權的問題,你按 「y」,然後它就開始執行編譯Lib的動作,大約會花個 五小時以上吧!(我猜的,因為我該它自己Run後,就去睡大覺了!) 之後你再編譯程式時,就不會有類似的問題了! ps:編譯Qt程式的指令順序 qmake -project qmake make 若要編譯release版,則最後一個指令改為make…

Read More Read More

图标集——适用于网页和应用软件

图标集——适用于网页和应用软件

Name License Author Screenshot twotone Free Paul view ColorCons CC Ken Saunders view Xi4Dox CC(ish) Panoramix view Icon Pack CC(ish) Kelli Shaver view Neu! LGPL Silvestre Herrera view Dropline GNU Silvestre Herrera view Ganato Free Lidia Gana view Yasis GNU Silvestre Herrera view Dropline Neu! GNU Silvestre Herrera view Dropline Etiquette GNU Silvestre Herrera view Ricebowl LGPL Phytonix view Tango CC Tango Desktop Project view Mini GPL Mark James view Silk CC Mark James view Flags CC Mark James view…

Read More Read More

临死前一秒钟会看到什么-为人们揭开死亡的真相!

临死前一秒钟会看到什么-为人们揭开死亡的真相!

      美国著名心理学家雷蒙德·A·穆迪博士在研究过150个濒死体验者(经历过“临床死亡”后复生的人)的案例之后,试图为人们揭开死亡真相。        尽管濒死体验发生的情境,以及亲历该种体验的个人性格都有着巨大的差别,但需要肯定的是,在这些人“濒死体验”的陈述中,存在着不可忽视的相似性——我把它们大体归纳为14条,他们是按照感受出现的先后次序排列的。       1.明知死讯    他们亲耳听到医生或是在场的其他人明确宣告自己的死亡。他会感觉到生理的衰竭到达极限。    2.体验愉悦    “濒死体验”的初期有一种平和安详、令人愉悦的感受。首先会感到疼痛,但是这种疼痛感一闪而过,随后会发觉自己悬浮在一个黑暗的维度中。一种从未体验过的最舒服的感觉将他包围。    3.奇怪声音    在“濒死”或者“死亡”的时候,有奇怪的声音飘然而至。一位年轻女子说,她听到一种类似乐曲的调子,那是一种美妙的曲调。    4.进入黑洞    有人反映他们感到被突然拉入一个黑暗的空间。你会开始有所知觉,那就像一个没有空气的圆柱体,感觉上是一个过渡地带,一边是现世,一边是异域。      5.灵魂脱体    发现自己站在了体外的某一处观察自己的躯壳。一个落水的男人回忆说,他自己脱离了身体,独自处在一个空间中,仿佛自己是一片羽毛。    6.语言受限    他们竭力想告诉他人自身所处的困境,但没有人听到他们的话。有一名女子说,我试着跟他们说话,但是没人能听到。    7.时间消失    脱体状态下,对时间的感受消失了。有人回忆说,那段时间里,他曾不停地出入自己的肉体。    8.感官灵敏    视觉、听觉比之前更加灵敏。一个男子说,他从未看得如此清楚过,视力水平得到了不可思议的增强。    9.孤独无助    在这之后,会出现强烈的孤立感和孤独感。一位男子说,他无论怎样努力都无法和别人交流,所以,“我感到非常孤单”。      10.他“人”陪伴    这时,周围出现了别的“人”。这个“人”,要么是来协助他们安然过渡到亡者之国,要么是来告诉他们丧钟尚未敲响,得先回去再待一段时间。    11.出现亮光    在“濒死体验”最后的时刻,会出现亮光。这道光具有某种“人性”,非常明确的“人性”。    12.回望人生    这个时候,当事人会对一生做一次全景式的回顾。当亲历者用时间短语来描述它时,都是“一幕接着一幕,按事情发生的时间顺序移动的,甚至伴随着画面,当时的一些感觉和情感都得以重新体验”。    13.边界阻隔    在这时,人会遇到一道可以被称作是“边缘”或者“界限”之类的东西,阻隔你到某个地方去,关于它的形态有多种表述:一摊水、一团烟雾、一扇门、一道旷野中的篱笆,或者是一条线。      14.生命归来    如果有幸被救活了,在“濒死体验”进行到某种程度后,人们必须“回来”。在最开始的时候,许多人都想赶快回到身体中去,但是,随着濒死体验的深入,他开始排斥回到原来的身体,如果遇上了光的存在,这种情绪就更为强烈。    随后,你就真的“回来”了。    人是一种相当依赖精神的生物,当人“濒死”时,一道微弱的白光就可以让死亡变得不那么可怕。人死的时候,整个一生都将被重新评价,这种评价完全不依赖于你是否腰缠万贯,身份地位是否显赫,而仅仅取决于在你一生里与他人分享的爱和温暖有多少。  

IRC上的笑话,如果笑了请留言。

IRC上的笑话,如果笑了请留言。

<i8b4uUnderground> d-_-b<BonyNoMore> 你是怎么打出那个翻过来的b的?<BonyNoMore> 等等<BonyNoMore> 不要介意——————————————<kow`> "世界上有10种人… 一种是懂得二进制的,另一种是不懂二进制的."<SpaceRain> 那只是2种人,靠.<SpaceRain> 傻瓜(roye: 2进制的10  = 10进制的2)——————————————<Sonium> 有人会python语言吗?<lucky> HHHHHSSSSSHSSS<lucky> SSSSS<Sonium> 我是说编程语言(roye: python n.大蟒, 巨蟒 and 在计算机里面是一门编程语言)——————————————<Raven> 我试着把我的邮箱密码设成penis.<Raven> 但它说我的密码不够长. 🙁——————————————<jimmy_> 我使用诺顿<BoltBait> 诺顿是我见到过的最烦人的杀毒软件!<jimmy_> 你为什么这么说? 我几乎注意不到它的存在<BoltBait> 真的吗? 那我想它并没有工作.<jimmy_> …<jimmy_> 你可能是正确的<jimmy_> 诺顿的托盘图标不见了<jimmy_> shit!——————————————<Th3No0b> 我想做第二个希特勒<Th3No0b> 我会杀掉所有的犹太人和一个小丑<RageAgainsttheAmish> 为什么要杀小丑?<Th3No0b> 看见了吧?没有人关心犹太人<RageAgainsttheAmish> lmao——————————————<tag> Ouroboros: 让我们打乒乓球吧<Ouroboros> Ok.<tag> |    .<Ouroboros> .    |<tag> |  .<Ouroboros>    . |<tag> | .<Ouroboros>      | .<Ouroboros> 哎哟——————————————<Mendo> lmao 现在在我的屏幕上有一只淘气的蜘蛛,当我移动鼠标时它就会跟在鼠标后面 <spitfire> 哈哈mendo <spitfire> 截一张屏幕快照 <spitfire> 等等 <spitfire> 那样不会有效果(roye: After 2 sec you know what’s this mean.)——————————————<frank> 你能告诉我怎么安装GTA3吗?<knightmare> 首先,关掉你正在使用的所有程序frank 退出了IRC会话.<knightmare> …