存档

2008年4月 的存档

U盘打不开快速解决办法

2008年4月30日 没有评论

    上午帮一个同事处理这个小问题的方法如下:

    U盘打不开多是因为中了U盘病毒,这些病毒基本都有一个特征,利用U盘的自动播放功能,在U盘中建立了一个autorun.inf文件和一些exe 可执行病毒程序,当在电脑上插上U盘或双击打开时,就会通过autorun.inf文件执行制定的exe病毒程序。其实解决这个问题很简单,直接删除掉autorun.inf文件就行了,可是,很多时候,autorun.inf文件被设置成隐藏的了,而且即使在文件夹选项里设成显示所有文件也看不到,这时候可以利用windows带的命令提示符来解决在开始菜单运行cmd,即可打开命令提示符界面,输入U盘的盘符,如我的U盘是G盘,输入g:回车,再输入强制删除只读的隐藏文件命令是 del /f /a:h autorun.inf,如果没有提示错误信息那就成功了,拔下U盘,重新插上,OK,U盘又可以打开了。

分类: 全部文章, 生活点滴 标签:

Windows XP SP3 简体中文版下载地址

2008年4月30日 没有评论

      windows XP SP3 简体中文版下载地址http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-chs_D7067E86ABD4257454200D0C398D71C4CE6CD33E.exe,第一时间下载安装上,界面上似乎没有丝毫改变,看了一些评测,说是性能上有提升,而且有20%之多,感觉是快了一点,最直观的是打开添加/删除程序窗口是快多了,而且不会出现正在复制列表的提示了,还有多了个silverlight程序,听说微软用来与flash一争高下的IE插件,微软垄断霸道的风格依然不减啊!

    上面的地址是微软官方升级服务器上的,可以直接用迅雷下载,300多M,需要的朋友抓紧时间体验一下sp3哦!

分类: 全部文章, 生活点滴 标签:

爱情三十六计

2008年4月13日 没有评论
第一计:不论吃什么好吃的,都会让她先吃第一口(咽到了,她说我害她)
第二计:永远站在她的左边牵着她的手,就算吃饭时也是坐在她的左边用左手握着她的左手(我们在逆行,行人车辆从右侧掠过,我却坚决站到她左面,结果……)
第三计:她的身体不好,陪着她去锻炼身体,陪她去游泳(锻炼途中我随便看了眼旁边跑过去的女孩,三天没和我说话)
第四计:不论有多忙,忙完了都会第一个打电话给她(她还以为我很闲,开始怀疑我有没有认真工作……)
第五计:爬山的时候她累了,要背着她,大汗淋淋也不说累(一起滚下山……)
第六计:她对紫外线过敏,夏天的时候为她打伞(不小心一下没完全遮住,她怒了,说我不关心她,要我检讨。)
第七计:她不会用刀子,在吃皮萨的时候先把皮萨切成一小块一小块的然后再拿给她吃(可能是我眼力不好,拿了稍微小了1毫克的那块给她,她明察秋毫,海扁了我一顿)
第八计:吃她剩下的饭菜(她以为我胃口好,怕我吃不饱之后每天特意剩下很多……)
第九计:在一个雨夹雪的夜晚,把鱼肉中的刺细心挑出来喂她吃晚饭(我激动万分的说,刺都挑出来了,她高兴放心的大口吃,1分钟后我拨通了120……)
第十计:让她擦过鼻涕的面巾纸直接放到你的口袋里,看到果皮箱以后你再掏出来扔掉(粘在了裤兜上,她要我牵她,我不肯,她哭着给了我一巴掌跑掉了,我坐在垃圾桶旁边祈祷)
第十一计:看电影的时候,让她可以舒服的*在你的右肩膀,抱着你的右胳膊(她怀疑我是故意靠近右边坐着的女士)
第十二计:她和好朋友出去玩,要会惦记,手机开到很晚,一直等到她回家的电话才睡觉(她玩的很累,忘记了,第二天早上我照镜子发现自己突然老了许多)
第十三计:知道她的一切爱好,尽量去适应她的口味(她总是对我说“拜托你有点个性好不好,你到底是不是个男人?!)
第十四计:去外地出差,会想她打电话给她,如果有时间都会带礼物给她(她规定三小时汇报一次我的地理位置,并且不按时抽查,礼物少了就要家法伺候)
第十五计:不论什么时候打她的手机,都要坦然告诉她你在哪里在做什么(我出门了,我下楼梯呢,我到楼下了,楼下居委会大娘和我打招呼呢,我到地铁站了,信号没了……)
第十六计:你所有的密码都要让她知道,也从来不改(有天我突然发现登陆不了银行帐号,后来知道,她家电脑里养了几只木马……)
第十七计:尽量抽时间陪她,即使是很短的时间也会来看她(父母似乎有点寂寞,我多少年没见到朋友们了,不知道他们还活着吗)

第十八计:晚上睡前打电话给她,会陪我聊到很晚(很快我要找份新的工作,最好是夜班,看大门的那种。。。)
第十九计:她送你的东西都要用心保存(我花了三年积蓄在我家楼后买了间仓房,似乎,还不够,过些天还要贷款再买一间大些的……)
第二十计:为她拒绝别的女孩子的示好(在那瞬间,我感觉到阻击步枪正瞄准我的后脑勺)
第二十一计:看到她的脸色不好,会陪她去做美容,一直等在美容院门口(很快我开始整天躲避高利贷的追杀。)
第二十二计:在她遇到麻烦的事情时会为她想办法,安慰她(她完全按照我的方法做了,没几天她打电话对我说,她想亲手杀了我。)
第二十三计:约会过后要回家时,要在公车上一直看着她,一直到看不到为止(我发现有个男人出现在她面前,他们在说着什么,我从窗口跳下车……)
第二十四计:知道她总看电脑眼睛疼为她买眼药水(她告诉我那眼药水真好用,她再不为聊天聊到眼花而心烦了。等等,她和谁聊)
第二十五计:给她剪指甲,在她胃疼的时候用手捂着她的胃心疼的不得了(她说我剪的又慢又丑,我用手捂着她的胃1个小时,然后她用死神的眼神看着我说,你怎么还不去给我买药!)
第二十六计:会为她穿袜子穿鞋,走在路上看到她的鞋带松了会弯下腰为她系好(我说,有空把袜子打包邮给我,我给你洗完送回来,她怀恨在心,我弯下腰为她系鞋带时被她踹了一脚)
第二十七计:从不让她提重的东西(她骂我很没用,整天提重东西也不变壮。)
第二十八计:去寺院上香时为会她祈福(她说我迷信,又老土,并开始怀疑我是不是与某某邪教有关联)
第二十九计:上网查找她喜欢的故事和笑话,然后硬记下来见面时讲给她听(她面无表情地看着我被自己的笑话逗的哈哈大乐,连旁人都以为我疯了)
第三十计:会为了陪她而放弃自己的爱好,几乎不再玩游戏(为什么生活越来越平淡,我活着的理想是什么?过的啥这么没意思?我开始有了轻生的念头)

第三十一计:知道有人追她会不安,会吃醋生气(她说我没气度,并且不相信她,我为此写了份一万字的检讨,再也不敢干涉她私生活)
第三十二计:真诚对待她的朋友,在她们有困难的时候尽力去帮忙(有天晚上她终于忍受不住,打电话给我最后通牒说,“和我朋友保持点距离,不然就和我保持距离!”然后挂掉了电话)
第三十三计:保留你们的合影,并告诉周围所有的人你们是情侣(我不明白,为什么他们在背后叫我鸡婆)
第三十四计:看到她流泪会着急,看到她高兴会开心(我每天在着急与开心间轮转n次,没多久我预订了每周去看一次心理医生)
第三十五计:会为她流泪,担心和失眠(我终于断定,自己上辈子是个女人)
第三十六计:真心爱她,并对她说你会娶她(真心d哦~)(十几年后,我经常听见她对孩子们抱怨说“你们长大以后要言而有信,绝对别学你爸,说了1000次会娶我,结果只娶了我一次!)
本篇文章转自网络

分类: 全部文章, 经典网摘 标签:

十句经典的话

2008年4月11日 没有评论

第一句
如果我们之间有1000步的距离 
你只要跨出第1步
我就会朝你的方向走其余的999步

第二句
通常愿意留下来跟你争吵的人 
才是真正爱你的人

第三句
付出真心 才会得到真心 
却也可能伤得彻底
保持距离 就能保护自己 
却也注定永远寂寞

第四句
有时候 不是对方不在乎你 
而是你把对方看得太重

第五句
朋友就是把你看透了 还能喜欢你的人

第六句
就算是believe 中间也藏了一个lie

第七句
真正的好朋友 
并不是在一起就有聊不完的话题
而是在一起 就算不说话 
也不会感到尴尬

第八句
没有一百分的另一半 
只有五十分的两个人

第九句
为你的难过而快乐的 是敌人
为你的快乐而快乐的 是朋友
为你的难过而难过的 
就是那些 该放进心里的人

第十句
冷漠 有时候并不是无情 
只是一种避免被伤害的工具

本篇文章转自子竹居www.zizhuju.cn

分类: 全部文章, 经典网摘 标签:

java学习笔记-快速排序原理及java实现

2008年4月6日 没有评论

快 速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要 小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。最坏情况的时间复杂度为O(n2),最好 情况时间复杂度为O(nlog2n)。

   假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序。一趟快速排序的算法是:

1)、设置两个变量I、J,排序开始的时候I:=1,J:=N;

2)以第一个数组元素作为关键数据,赋值给X,即X:=A[1];

3)、从J开始向前搜索,即由后开始向前搜索(J:=J-1),找到第一个小于X的值,两者交换;

4)、从I开始向后搜索,即由前开始向后搜索(I:=I+1),找到第一个大于X的值,两者交换;

5)、重复第3、4步,直到I=J;

例如:待排序的数组A的值分别是:(初始关键数据X:=49)

                  A[1]    A[2]    A[3]    A[4]    A[5]     A[6]    A[7]:

                    49       38      65      97      76      13       27

进行第一次交换后: 27       38      65      97      76      13       49

                  ( 按照算法的第三步从后面开始找)

进行第二次交换后: 27       38      49      97      76      13       65

                 ( 按照算法的第四步从前面开始找>X的值,65>49,两者交换,此时I:=3 )

进行第三次交换后: 27       38      13      97      76      49       65

( 按照算法的第五步将又一次执行算法的第三步从后开始找)

进行第四次交换后: 27       38      13      49      76      97       65

( 按照算法的第四步从前面开始找大于X的值,97>49,两者交换,此时J:=4 )

     此时再执行第三步的时候就发现I=J,从而结束一躺快速排序,那么经过一躺快速排序之后的结果是:27       38      13      49      76      97       65,即所以大于49的数全部在49的后面,所以小于49的数全部在49的前面。

     快速排序就是递归调用此过程——在以49为中点分割这个数据序列,分别对前面一部分和后面一部分进行类似的快速排序,从而完成全部数据序列的快速排序,最后把此数据序列变成一个有序的序列,根据这种思想对于上述数组A的快速排序的全过程如图6所示:

初始状态                       {49    38    65    97    76    13    27}   

进行一次快速排序之后划分为     {27    38    13}    49 {76    97    65}

分别对前后两部分进行快速排序   {13}   27   {38}

                               结束        结束   {49   65}   76   {97}

                                                   49 {65}        结束

                                                       结束

                         图6   快速排序全过程

1)、设有N(假设N=10)个数,存放在S数组中;

2)、在S[1。。N]中任取一个元素作为比较基准,例如取T=S[1],起目的就是在定出 T应在排序结果中的位置K,这个K的位置在:S[1。。K-1]<=S[K]<=S[K+1..N],即在S[K]以前的数都小于S[K], 在S[K]以后的数都大于S[K];

3)、利用分治思想(即大化小的策略)可进一步对S[1。。K-1]和S[K+1。。N]两组数据再进行快速排序直到分组对象只有一个数据为止。

如具体数据如下,那么第一躺快速排序的过程是:

数组下标: 1     2     3     4     5     6     7     8     9     10

          45    36    18    53    72    30    48    93    15     36

           I                                                        J

(1)     36    36    18    53    72    30    48    93    15     45

(2)     36    36    18    45    72    30    48    93    15     53

(3)     36    36    18    15    72    30    48    93    45     53

(4)     36    36    18    15    45    30    48    93    72     53

(5)     36    36    18    15    30    45    48    93    72     53

通过一躺排序将45放到应该放的位置K,这里K=6,那么再对S[1。。5]和S[6。。10]分别进行快速排序。

    /**

    * 交换指定数组a的两个变量的值

    * @param a 数组应用

    * @param i 数组下标

    * @param j 数组下标

    */

    public static void swap(int a[], int i, int j) {

       

        if(i == j) return;

        int tmp = a[i];

        a[i] = a[j];

        a[j] = tmp;

    }

    /**

    *

    * @param array 待排序数组

    * @param low 数组下标下界

    * @param high 数组下标上界

    * @return pivot

    */

    public static int partition(int array[], int low, int high) {

        //当前位置为第一个元素所在位置

        int p_pos = low;

        //采用第一个元素为轴

        int pivot = array[p_pos];

        

        for (int i = low + 1; i <= high; i++) {

            if (array[i] < pivot) {            

               

                p_pos++;

                swap(array, p_pos, i);

            }

        }

        swap(array, low, p_pos);

        return p_pos;

    }

    /**

     * 快速排序实现

     * @param array

     * @param low

     * @param high

     */

    public static void quickSort(int array[], int low, int high) {

        if (low < high) {

            int pivot = partition(array, low, high);

            quickSort(array, low, pivot – 1);

            quickSort(array, pivot + 1, high);

        }

    }v

分类: 全部文章, 学习笔记 标签:

java学习笔记-构建器的调用顺序

2008年4月5日 没有评论
        用于基础类的构建器肯定在一个衍生类的构建器中调用,而且逐渐向上链接,使每个基础类使用的构建器都能得到调用。之所以要这样做,是由于构建器负有一项特殊任务:检查对象是否得到了正确的构建。一个衍生类只能访问它自己的成员,不能访问基础类的成员(这些成员通常都具有private 属性)。只有基础类的构建器在初始化自己的元素时才知道正确的方法以及拥有适当的权限。所以,必须令所有构建器都得到调用,否则整个对象的构建就可能不正确。那正是编译器为什么要强迫对衍生类的每个部分进行构建器调用的原因。在衍生类的构建器主体中,若我们没有明确指定对一个基础类构建器的调用,它就会“默默”地调用默认构建器。如果不存在默认构建器,编译器就会报告一个错误(若某个类没有构建器,编译器会自动组织一个默认构建器)。

下面让我们看看一个例子,它展示了按构建顺序进行合成、继承以及多形性的效果:

//: Sandwich.java
// Order of constructor calls
class Meal {
Meal() { System.out.println(“Meal()”); }
}
class Bread {
Bread() { System.out.println(“Bread()”); }
}

class Cheese {
Cheese() { System.out.println(“Cheese()”); }
}

class Lettuce {
Lettuce() { System.out.println(“Lettuce()”); }
}

class Lunch extends Meal {
Lunch() { System.out.println(“Lunch()”);}
}

class PortableLunch extends Lunch {
PortableLunch() {
System.out.println(“PortableLunch()”);
}
}

class Sandwich extends PortableLunch {
Bread b = new Bread();
Cheese c = new Cheese();
Lettuce l = new Lettuce();

Sandwich() {
System.out.println(“Sandwich()”);
}

public static void main(String[] args) {
new Sandwich();
}
} ///:

这个例子在其他类的外部创建了一个复杂的类,而且每个类都有一个构建器对自己进行了宣布。其中最重要

的类是Sandwich,它反映出了三个级别的继承(若将从Object的默认继承算在内,就是四级)以及三个成

员对象。在 main()里创建了一个Sandwich 对象后,输出结果如下:

Meal()

Lunch()

PortableLunch()

Bread()

Cheese()

Lettuce()

Sandwich()

这意味着对于一个复杂的对象,构建器的调用遵照下面的顺序:

(1) 调用基础类构建器。这个步骤会不断重复下去,首先得到构建的是分级结构的根部,然后是下一个衍生类,等等。直到抵达最深一层的衍生类。

(2) 按声明顺序调用成员初始化模块。

(3) 调用衍生构建器的主体。

构建器调用的顺序是非常重要的。进行继承时,我们知道关于基础类的一切,并且能访问基础类的任何public和protected 成员。这意味着当我们在衍生类的时候,必须能假定基础类的所有成员都是有效的。采用一种标准方法,构建行动已经进行,所以对象所有部分的成员均已得到构建。但在构建器内部,必须保证使用的所有成员都已构建。为达到这个要求,唯一的办法就是首先调用基础类构建器。然后在进入衍生类构建器以后,我们在基础类能够访问的所有成员都已得到初始化。此外,所有成员对象(亦即通过合成方法置于类内的对象)在类内进行定义的时候(比如上例中的b,c 和l),由于我们应尽可能地对它们进行初始化,所以也应保证构建器内部的所有成员均为有效。若坚持按这一规则行事,会有助于我们确定所有基础类成员以及当前对象的成员对象均已获得正确的初始化。

分类: 全部文章, 学习笔记 标签:

桌面什么都没有,explorer.exe 不是有效的win32程序

2008年4月4日 没有评论
       晚上郁闷坏了,本来闲着无事,想给XP系统换个主题,先要破解UXTheme .dll,于是找了个程序,运行,XP提示系统文件被覆盖,重启,情况就在这时候发生了,开机桌面除了一张墙纸什么都没了,幸亏CTRL+ALT+DEL还能调出任务管理器,这就不怕了,然而从任务管理器运行explorer.exe,却说explorer.exe 不是有效的win32程序,第一反应是系统文件被损坏了,或者中毒了,从任务管理器运行一些安全工具,安全卫士,卡巴斯基都用上了,没扫描出什么名堂,再新建运行一个IE,能上网就好办,百度一下,第一时间找到跟我一样情况的同胞们的报告,说是AV终结者病毒,于是下了个专杀工具,还是没搞定。。。
      幸亏我不是菜鸟,飞速开动我聪明的大脑,任务管理器可以运行其他程序,唯独不能运行explorer.exe,这说明是explorer.exe的问题,其实一些重要的系统文件,XP都有备份的,explorer.exe在C:\WINDOWS\system32\dllcache就有个备份,不过首先要从文件夹选项里显示所有文件,包括系统文件,因为dllcache是隐藏的!可是桌面什么都没有,怎么找到文件,怎么修改文件夹选项里,其实很简单,只要打开任务管理,新建运行随便输入一个网址,就会打开一个IE窗口,再在IE地址栏输入C:回车,OK,IE就变成了临时的explorer.exe。从C:\WINDOWS\system32\dllcache拷贝explorer.exe(文件大小955KB)粘贴到C:\WINDOWS和C:\WINDOWS\system32目录,再轻巧的双击下,OK,久违的桌面图标,久违的任务栏终于出现了,爱弥陀佛,以后再也不用这些乱七八糟的随意修改系统文件的程序了。。。
分类: 全部文章, 生活点滴 标签:

计划的回报

2008年4月3日 没有评论
        如果没有仔细拟定的设计图,当然不可能建起一所房子。如建立的是一所狗舍,尽管设计图可以不必那么详尽,但仍然需要一些草图,以做到心中有数。软件开发则完全不同,它的“设计图”(计划)必须详尽而完备。在很长的一段时间里,人们在他们的开发过程中并没有太多的结构,但那些大型项目很容易就会遭致失败。通过不断的摸索,人们掌握了数量众多的结构和详细资料。但它们的使用却使人提心吊胆在意——似乎需要把自己的大多数时间花在编写文档上,而没有多少时间来编程(经常如此)。我希望这里为大家讲述的一切能提供一条折衷的道路。需要采取一种最适合自己需要(以及习惯)的方法。不管制订出的计划有多么小,但与完全没有计划相比,一些形式的计划会极大改善你的项目。请记住:根据估计,没有计划的50%以上的项目都会失败!
摘自:《think in java 中文版》1.12.7节
分类: 全部文章, 经典网摘 标签: