2009-08-24

富士通集群命令行

查看当前集群的状态
bash-2.05# hvdisp -a

Local System:  gx-sv01-dbRMS
Configuration: /opt/SMAW/SMAWRrms/build/config.us

Resource            Type    HostName            State        StateDetails
-----------------------------------------------------------------------------
gx-sv02-dbRMS       SysNode                     Online      
gx-sv01-dbRMS       SysNode                     Online      
UserApp_Sybase      userApp                     Online      
Machine001_UserApp_Sybase andOp   gx-sv02-dbRMS                   
Machine000_UserApp_Sybase andOp   gx-sv01-dbRMS       Online      
ManageProgram000_Cmd_sybase gRes                        Online      
UserApp_App         userApp                     Standby     
UserApp_App         userApp gx-sv02-dbRMS       Online
Machine001_UserApp_App andOp   gx-sv01-dbRMS       Offline     
Machine000_UserApp_App andOp   gx-sv02-dbRMS                   
ManageProgram000_Cmd_App gRes                        Offline     
Ipaddress000_Gls_sybase gRes                        Online      
MountPoint006_Fsys_sybase gRes                        Online      
MountPoint005_Fsys_sybase gRes                        Online      
MountPoint004_Fsys_sybase gRes                        Online      
MountPoint003_Fsys_sybase gRes                        Online      
MountPoint002_Fsys_sybase gRes                        Online      
MountPoint001_Fsys_sybase gRes                        Online      
Ipaddress000_Gls_App gRes                        Standby     




bash-2.05# hvcm -a
The user has invoked the hvcm command with the -a flag on a host where RMS is already running, sending request to start all remaining hosts.




切换主备
hvswitch UserApp_App gx-sv02-dbRMS




2009-08-19

深入JAVASDK笔记

一、javac的本质
"c:\Program Files\Java\jdk1.6.0_14\bin\java" -classpath "c:\Program Files\Java\jdk1.6.0_14\lib\tools.jar" com.sun.tools.javac.Main

"c:\Program Files\Java\jdk1.6.0_14\bin\javac"
执行结果一样
原因是:javac.exe就是一个包裹器,实际上是一个java程序。java.exe也是一个程序。javac.exe的作用不过是为了让你不用敲太 多的指令。
jdk里面的包括javac.exe,java.exe等等工具实际上也是用java开发出来的,因此我们必须要在安装jdk的同时安装jre,不然你的 jdk中的工具将会无法使用,而在C:\Program file\java中的jre是用来执行我们所写的java程序的



二、JDK和JRE的区别
"c:\Program Files\Java\jdk1.6.0_14\jre"和"c:\Program Files\Java\jre1.6.0_14"有什么区别?
在JDK目录下的jre包含Server、Client版本的JVM,如下:
-----------------------------------------------------------------------------------------------------
C:\Program Files\Java\jdk1.6.0_14\bin>java -version -server
java version "1.6.0_14-ea"
Java(TM) SE Runtime Environment (build 1.6.0_14-ea-b05)
Java HotSpot(TM) Server VM (build 14.0-b13, mixed mode)

C:\Program Files\Java\jdk1.6.0_14\bin>java -version -client
java version "1.6.0_14-ea"
Java(TM) SE Runtime Environment (build 1.6.0_14-ea-b05)
Java HotSpot(TM) Client VM (build 14.0-b13, mixed mode, sharing)
主要原因是:c:\Program Files\Java\jdk1.6.0_14\jre\bin目录下有:client和server两个目录,分别存放client和server版本 的jvm.dll
-----------------------------------------------------------------------------------------------------
在JRE目录下的jre只包含Client版本的JVM,不包含Server版本的JVM,如下:
-----------------------------------------------------------------------------------------------------
c:\Program Files\Java\jre1.6.0_14\bin>java -version -client
java version "1.6.0_14-ea"
Java(TM) SE Runtime Environment (build 1.6.0_14-ea-b05)
Java HotSpot(TM) Client VM (build 14.0-b13, mixed mode, sharing)

c:\Program Files\Java\jre1.6.0_14\bin>java -version -server
Error: no `server' JVM at `c:\Program Files\Java\jre1.6.0_14\bin\server\jvm.dll'.
主要原因是:c:\Program Files\Java\jre1.6.0_14\bin目录下有:仅有client目录,分别存放client版本的jvm.dll
-----------------------------------------------------------------------------------------------------


三、java.exe在哪个jvm中运行
    1.搜索当前目录和PATH有没有java.exe程序,找到后,再继续找在哪个jre环境中运行。
    2.自己的目录下有�有JRE目录。(不是很精确,请看jdk源码)
    3.父目录底下JRE子目录。
    4.查询Windows Registry(HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\CurrentVersion)
    5.根据查找的jre环境,运行java程序




2009-08-14

tar、gzip、gunzip组合命令打包、解压

解压:
gunzip < file.tar.gz | tar xvf �

压缩:
tar cvf - dir | gzip > file.tar.gz


如果要tar打包超过2G的文件,需要加"E"参数。

2009-08-13

五脏排毒最简单有效的方法

我们每个人体内都有毒素吗?很多身体问题就是毒素引发的吗?

面对排毒的风潮和疑问,中医是如何作为的?中医认为五脏之内都可能留存毒素,
堆积了毒素的脏器会在身体表面留下蛛丝马迹。现在就让我们学习如何找到毒素的
藏身之处,并且用最简单有效的方法更好地排除它。

五脏排毒DIY

五脏之毒是什么?

在中医看来,我们体内有很多毒素,凡是不能及时排出体外、对我们的身体和精神
会产生不良作用的物质都可以称为"毒",例如瘀血、痰湿、寒气、食积、气郁、上
火。这些毒素堆积在五脏之内,就会加速五脏的衰老,然后由五脏供养的皮肤、筋
骨、肌肉、神经也就跟着一起衰老了。虽然毒素深藏,但它们在身体表面还是留下
了蛛丝马迹,不同的样貌代表毒素藏在哪里,现在,我们要找出毒素的藏身处,尽
快把它赶出身体。

如果肝脏有了毒素
表现在

1. 指甲表面有凸起的棱线,或是向下凹陷。中医认为"肝主筋",指甲是"筋"的一
部分,所以毒素在肝脏蓄积时,指甲上会有明显的信号。

2. 乳腺出现增生,经前乳腺的胀痛明显增加。乳腺属于肝经循行路线上的要塞,
一旦肝经中有"毒"存在,乳腺增生随即产生,尤其在经血即将排出时,会因气血的
充盛而变得胀痛明显。

3. 情绪容易抑郁。肝脏是体内调控情绪的脏器,一旦肝内的毒不能及时排出,阻
塞气的运行,就会产生明显的不良情绪。

4. 偏头痛, 脸部的两侧长痘痘,还会出现痛经。脸部两侧以及小腹,是肝经和它
的搭档胆经的"一亩三分地",一旦肝的排毒不畅快,自己的后院就会先着火。

怎么排毒更顺畅

1. 吃青色的食物。按中医五行理论,青色的食物可以通达肝气,起到很好的疏
肝、解郁、缓解情绪作用,属于帮助肝脏排毒的食物。中医专家推荐青色的橘子或
柠檬,连皮做成青橘果汁或是青柠檬水,直接饮用就好。

2. 枸杞提升肝脏的耐受性。除了排毒之外,还应该提升肝脏抵抗毒素的能力。这
种食物首推枸杞,它具有很好的保护肝脏的作用,可以提升肝脏对毒素的耐受性。
食用时以咀嚼着吃最好,每天吃一小把。

3. 按压肝脏排毒要穴。这是指太冲穴,位置在足背第一、二跖骨结合部之前的凹
陷中。用拇指按揉3~5分钟,感觉轻微酸胀即可。不要用太大的力气,两只脚交替
按压。

4. 眼泪排毒法。相较于从不哭泣的男人,女人寿命更长,这不能不说和眼泪有关
系。中医早已有了这个认识,而且也被西方医学所证实。作为排泄液的泪液,同汗
液和尿液一样,里面确实有一些对身体有害的生化毒素。所以,难受时、委屈时、
压抑时就干脆哭出来吧。对于那些"乐天派",周末的午后看一部悲情的电影,让泪
水随着情节流淌也是一种主动排毒方式。

如果心脏有了毒素
表现在

1. 舌头溃疡。中医认为舌和心脏的关系最为密切,所以溃疡长在舌头上,通常认
为是心脏有内火,或是火毒。

2. 额头长痘。额头是心脏管辖的一个属地,心火旺盛成为火毒时,这个属地也会
沸腾,于是此起彼伏地出现很多痘痘。

3. 失眠,心悸。心脏处于不停的工作中,当火毒停留于心而无法排除时,睡眠不
会安稳。

4. 胸闷或刺痛。心脏内出现瘀血也是一种毒素,就像是在公路上堵车,轻一些的
是胸闷,重一些的则会出现刺痛。

怎么排毒更顺畅

1. 吃苦排毒。首推莲子芯,它味苦,可以发散心火,虽然有寒性,但不会损伤人
体的阳气,所以一向被认为是最好的化解心脏热毒的食物。可以用莲子芯泡茶,不
妨再加些竹叶或生甘草,能增强莲子芯的排毒作用。

2. 按压心脏排毒要穴。这是指少府穴,位置在手掌心,第4、5掌骨之间,握拳时
小指与无名指指端之间。按压这个穴位不妨用些力,左右手交替。
3. 绿豆利尿排毒。绿豆可以通过利尿、清热的办法,来化解并排出心脏的毒素,
但吃绿豆时要用液体的形式,例如绿豆浆或绿豆汤,绿豆糕的效果会差一些。


心脏最佳排毒时间

中午11~13点是心脏最强的时间,可以吃些保心、助排毒的食物,例如茯苓、坚
果、黄豆、黑芝麻、小枣、莲子等。

如果脾脏有了毒素
表现在

1. 面部长色斑。长斑的女性通常消化系统能力弱一些。

2. 白带过多。脾主管体内排湿,如果湿气过多,超出了脾的能力,就会出现体内
湿气过盛,白带增多是其中的一个体现。

3. 脂肪堆积。脂肪在中医里另有一个名字:痰湿,是由于脾的消化功能不佳,不
能及时把垃圾毒素排出体外而产生的。有效的减肥必须围绕恢复脾胃正常代谢痰湿
的主题来做,否则就会反弹。

4. 口气明显,唇周长痘或溃疡。口唇周围都属于脾,当脾中的毒素无法排出体
外,蓄积的毒素就要找机会从这些地方爆发出来。

怎么排毒更顺畅

1. 吃酸助脾脏排毒。例如乌梅、醋,这是用来化解食物中毒素的最佳食品,可以
增强肠胃的消化功能,使食物中的毒素在最短的时间内排出体外。同时酸味食物还
具有健脾的功效,可以很好地起到"抗毒食品"的功效。

2. 按压脾脏排毒要穴。这是指商丘穴,位置在内踝前下方的凹陷中,用手指按揉
该穴位,保持酸重感即可,每次3分钟左右,两脚交替做。

3. 饭后走一走。运动可以帮助脾胃消化,加快毒素排出的速度,不过需要长期坚
持,效果才会更好。

脾脏最佳排毒时间

餐后是最容易产生毒素的时刻,食物如果不能及时的消化或是吸收,毒素就会积累
很多。除了饭后走一走,因为甘味健脾,还可以在吃完饭1小时吃1个水果,帮助健
脾、排毒。

如果肺脏有了毒素
表现在

1. 皮肤呈锈色,晦暗。中医认为肺管理全身的皮肤,皮肤是否润泽、白皙,都要
依靠肺的功能良好。当肺中毒素比较多时,毒素会随着肺的作用沉积到皮肤上,使
肤色看起来没有光泽。

2. 便秘。中医认为,肺脏和大肠是一套系统,当上面肺脏有毒素时,下面肠道内
也会有不正常淤积,就出现了便秘。

3. 多愁善感,容易悲伤。毒素在肺,会干扰肺内的气血运行,使得肺脏不能正常
舒畅胸中的闷气,被压抑得多愁善感起来。

怎么排毒更顺畅

1 萝卜是肺脏的排毒食品。在中医眼中,大肠和肺的关系最密切,肺排出毒素程度
取决于大肠是否通畅,萝卜能帮助大肠排泄宿便,生吃或拌成凉菜都可以。

2 百合提高肺脏抗毒能力。肺脏向来不喜欢燥气,在燥的情况下,容易导致积累毒
素。蘑菇、百合有很好的养肺滋阴的功效,可以帮肺脏抗击毒素,食用时加工时间
不要过长,否则百合中的汁液会减少,防毒效果要大打折扣。

3按压肺脏排毒要穴。有利肺脏的穴位是合谷穴,位置在手背上,第1、2掌骨间,
当第2掌骨桡侧的中点处,可以用拇指和食指捏住这个部位,用力按压。

4 排汗解毒。肺管理皮肤,所以痛痛快快地出一身汗,让汗液带走体内的毒素,会
让我们的肺清爽起来。除了运动以外,出汗的方法还可以是热水浴,浴前水中加一
些生姜和薄荷精油,使汗液分泌得更畅快,排出身体深处的毒素。

5 深呼吸。每次呼吸时,肺内都有残余的废气无法排出,这些废气相对于那些新
鲜、富含氧气的空气来讲,也是一种毒素。只需几个深呼吸,就能减少体内废气的
残留。

肺脏最佳排毒时间

肺脏最强的时间是早7点~9点,此时最好能够通过运动排毒。在肺最有力的时候进
行慢跑等有氧运动,能强健肺排出毒素的功能。

如果肾脏有了毒素
表现在

1. 月经量少,或经期短,颜色暗。月经的产生和消失,都是肾功能是否旺盛的表
现,如果肾脏中有很多毒素,经血就会减少。

2. 水肿。肾脏管理体内的液体运行,肾脏堆积毒素后,排出多余液体的能力降
低,就出现了水肿。

3. 下颌长痘。脸部下颌部位由肾管辖,肾的排毒不足,多余的毒素会表现在下颌
部位。

4. 容易疲倦。身体内的毒素消耗了肾的能量,肾脏提供的能量减少,于是出现体
倦,神疲思睡,四肢无力。

怎么排毒更顺畅

1. 肾脏排毒食品:冬瓜。冬瓜富含汁液,进入人体后,会刺激肾脏增加尿液,排
出体内的毒素。食用时可用冬瓜煲汤或清炒,味道尽量淡一些。

2. 肾脏抗毒食品:山药。山药虽然可以同时滋补很多脏器,但最终还是以补肾为
主,经常吃山药可以增强肾脏的排毒功能。拔丝山药是很好的一种食用方法,用焦
糖 "炮制"过的山药,补肾抗毒的功效会相应增强。

3. 按压肝脏排毒要穴:涌泉穴。这是人体最低的穴位,如果人体是一幢大楼,这
个穴位就是排污下水管道的出口,经常按揉它,排毒效果明显。涌泉穴位置在足底
的前 1/3处(计算时不包括足趾),这个穴位比较敏感,不要用太大的力度,稍有
感觉即可,以边按边揉为佳,持续5分钟左右即可。

肾脏最佳排毒时间

肾脏最适合排毒的时间是早晨5~7点,身体经过一夜的修复,到了早晨毒素都聚集
在肾脏,所以早晨起来最好喝一杯白水,冲刷一下肾脏,将毒素排出体外

43个你必知的健康常识

1、常吃宵夜,会得胃癌,因为胃得不到休息。
2、一个星期只能吃四颗蛋,吃太多对身体不好。
3、鸡屁股含有致癌物,不要吃较好。
4、饭后吃水果是错误的观念,应是饭前吃水果。
5、女生月经来时,不要喝绿茶,反正茶类的不要喝就对了,多吃可以补血的东西。
6、喝豆浆时,不要加鸡蛋及糖,也不要喝太多。
7、空腹时不要吃蕃茄,最好饭后吃。
8、早上醒来,先喝一杯水,预防结石。
9、睡前三小时不要吃东西,会胖。
10、少喝奶茶,因为高热量、高油,没有营养价值可言,长期饮用,易罹患高血
压、糖尿病...等疾病。
11、刚出炉的面包不宜马上食用。
12、远离充电座,人体应远离30公分以上,切忌放在床边。
13、天天喝水八大杯。
14、每天十杯水,膀胱癌不会来。
15、白天多喝水,晚上少喝水。
16、一天不要喝两杯以上的咖啡,喝太多易导致失眠、胃痛。
17、多油脂的食物少吃,因为得花5~7小时去消化,并使脑中血液集中到肠胃,易
昏昏欲睡。
18、下午五点后,大餐少少吃,因为五点后身体不需那么多能量。
19、10种吃了会快乐的食物:深海鱼、香蕉、葡萄柚、全麦面包、菠菜、大蒜、番
茄、低脂牛奶、鸡肉、樱桃。
20、睡眠不足会变笨,一天须八小时睡眠,有午睡习惯较不会老。
21、最佳睡眠时间是在晚上10点~清晨6点。
22、每天喝酒不要超过一杯,因为酒精会抑制制造抗体的B细胞,增加细菌感染的
机会。
23、服用胶囊应以冷水吞服(可以第一个吃),睡前30分先服药,忌立即躺下。
24、酸梅具防止老化作用,青春永驻;肝火有毛病者宜多食用。
25、掉发因素:熬夜、压力、烟酒、香鸡排、麻辣锅、油腻食物、调味过重的料理。
26、帮助头发生长:多食用包心菜、蛋、豆类;少吃甜食(尤其是果糖)。
27、每天一杯柠檬汁、柳橙汁,不但可以美白,还可以淡化黑斑。
28、苹果:机车族、瘾君子、家庭主妇的常备良药;一天一颗,才能让自己有个干
干净净的肺。
29、抽烟又吃维他命(B胡萝卜素-A维他命的一种)会致癌,尽早戒烟,才是最健康
的做法。
30、女性不宜喝茶的五个时期:月经来时、孕妇、临产前、生产完后、更年期。
31、抽烟:关系最大的是肺癌、唇癌、舌癌、喉癌、食道癌,也与膀胱癌有关。
32、饮酒导致肝硬化,引发肝癌。
33、吃槟榔会导致口腔纤维化,引发口腔癌。
34、食物过于精细,缺乏纤维,含大量脂肪,尤其是胆固醇,会引发胃癌。
35、食物过于粗糙,营养不足时,导致食道癌、胃癌。
36、食品中的黄曲毒素、亚硝酸类物皆具有致癌性。
37、不抽烟,拒吸二手烟。
38、适量饮酒,不拚酒,不醉酒。
39、减少食用盐腌、烟熏、烧烤的食物。
40、每天摄取新鲜的蔬菜与水果。
41、每天摄取富含高纤维的五谷类及豆类。
42、每天摄取均衡的饮食,不过量。
43、正确饮食习惯:早上吃的像皇帝,中午吃的像平民,晚上吃的像乞丐。

SQL优化34条

我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并
汇总部分资料与大家分享!
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):
ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最
后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况
下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就
需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引
用的表.
(2) WHERE子句中的连接顺序.:
ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在
其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.
(3) SELECT子句中避免使用 ' * ':
ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数
据字典完成的, 这意味着将耗费更多的时间
(4) 减少访问数据库的次数:
ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读
数据块等;
(5) 在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数, 可以增加每次
数据库访问的检索数据量 ,建议值为200
(6) 使用DECODE函数来减少处理时间:
使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.
(7) 整合简单,无关联的数据库访问:
如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之
间没有关系)
(8) 删除重复记录:
最高效的删除重复记录方法 ( 因为使用了ROWID)例子:
DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID)
FROM EMP X WHERE X.EMP_NO = E.EMP_NO);
(9) 用TRUNCATE替代DELETE:
当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以
被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准
确地说是恢复到执行删除命令之前的状况) 而当运用TRUNCATE时, 回滚段不再存放
任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行
时间也会很短. (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML)
(10) 尽量多使用COMMIT:
只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为
COMMIT所释放的资源而减少:
COMMIT所释放的资源:
a. 回滚段上用于恢复数据的信息.
b. 被程序语句获得的锁
c. redo log buffer 中的空间
d. ORACLE为管理上述3种资源中的内部花费
(11) 用Where子句替换HAVING子句:
避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤.
这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减
少这方面的开销. (非oracle中)on、where、having这三个都可以加条件的子句
中,on是最先执行,where次之,having最后,因为on是先把不符合条件的记录过
滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快
的,where也应该比having快点的,因为它过滤数据后才进行sum,在两个表联接时
才用on的,所以在一个表的时候,就剩下where跟having比较了。在这单表查询统
计的情况下,如果要过滤的条件没有涉及到要计算字段,那它们的结果是一样的,
只是where可以使用rushmore技术,而having就不能,在速度上后者要慢如果要涉
及到计算的字段,就表示在没计算之前,这个字段的值是不确定的,根据上篇写的
工作流程,where的作用时间是在计算之前就完成的,而having就是在计算后才起
作用的,所以在这种情况下,两者的结果会不同。在多表联接查询时,on比where
更早起作用。系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,
再由where进行过滤,然后再计算,计算完后再由having进行过滤。由此可见,要
想过滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再
决定放在那里
(12) 减少对表的查询:
在含有子查询的SQL语句中,要特别注意减少对表的查询.例子:
SELECT TAB_NAME FROM TABLES WHERE (TAB_NAME,DB_VER) = ( SELECT
TAB_NAME,DB_VER FROM TAB_COLUMNS WHERE VERSION = 604)
(13) 通过内部函数提高SQL效率.:
复杂的SQL往往牺牲了执行效率. 能够掌握上面的运用函数解决问题的方法在实际
工作中是非常有意义的
(14) 使用表的别名(Alias):
当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样
一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误.
(15) 用EXISTS替代IN、用NOT EXISTS替代NOT IN:
在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在
这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率. 在子查询中,NOT
IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的
(因为它对子查询中的表执行了一个全表遍历). 为了避免使用NOT IN ,我们可以把
它改写成外连接(Outer Joins)或NOT EXISTS.
例子:
(高效)SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND EXISTS (SELECT
'X' FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = 'MELB')
(低效)SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND DEPTNO IN(SELECT
DEPTNO FROM DEPT WHERE LOC = 'MELB')
(16) 识别'低效执行'的SQL语句:
虽然目前各种关于SQL优化的图形化工具层出不穷,但是写出自己的SQL工具来解决
问题始终是一个最好的方法:
SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,
ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,
SQL_TEXT
FROM V$SQLAREA
WHERE EXECUTIONS>0
AND BUFFER_GETS > 0
AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8
ORDER BY 4 DESC;
(17) 用索引提高效率:
索引是表的一个概念部分,用来提高检索数据的效率,ORACLE使用了一个复杂的自
平衡B-tree结构. 通常,通过索引查询数据比全表扫描要快. 当ORACLE找出执行查
询和Update语句的最佳路径时, ORACLE优化器将使用索引. 同样在联结多个表时使
用索引也可以提高效率. 另一个使用索引的好处是,它提供了主键(primary key)的
唯一性验证.。那些LONG或LONG RAW数据类型, 你可以索引几乎所有的列. 通常,
在大型表中使用索引特别有效. 当然,你也会发现, 在扫描小表时,使用索引同样能
提高效率. 虽然使用索引能得到查询效率的提高,但是我们也必须注意到它的代价.
索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时,
索引本身也会被修改. 这意味着每条记录的INSERT , DELETE , UPDATE将为此多付
出4 , 5 次的磁盘I/O . 因为索引需要额外的存储空间和处理,那些不必要的索引
反而会使查询反应时间变慢.。定期的重构索引是有必要的.:
ALTER INDEX <INDEXNAME> REBUILD <TABLESPACENAME>
18) 用EXISTS替换DISTINCT:
当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句
中使用DISTINCT. 一般可以考虑用EXIST替换, EXISTS 使查询更为迅速,因为RDBMS
核心模块将在子查询的条件一旦满足后,立刻返回结果. 例子:
(低效):
SELECT DISTINCT DEPT_NO,DEPT_NAME FROM DEPT D , EMP E
WHERE D.DEPT_NO = E.DEPT_NO
(高效):
SELECT DEPT_NO,DEPT_NAME FROM DEPT D WHERE EXISTS ( SELECT 'X'
FROM EMP E WHERE E.DEPT_NO = D.DEPT_NO);
(19) sql语句用大写的;因为oracle总是先解析sql语句,把小写的字母转换成
大写的再执行
(20) 在java代码中尽量少用连接符"+"连接字符串!
(21) 避免在索引列上使用NOT 通常, 
我们要避免在索引列上使用NOT, NOT会产生在和在索引列上使用函数相同的影响.
当ORACLE"遇到"NOT,他就会停止使用索引转而执行全表扫描.
(22) 避免在索引列上使用计算.
WHERE子句中,如果索引列是函数的一部分.优化器将不使用索引而使用全表扫描.
举例:
低效:
SELECT … FROM DEPT WHERE SAL * 12 > 25000;
高效:
SELECT … FROM DEPT WHERE SAL > 25000/12;
(23) 用>=替代>
高效:
SELECT * FROM EMP WHERE DEPTNO >=4
低效:
SELECT * FROM EMP WHERE DEPTNO >3
两者的区别在于, 前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位
到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录.
(24) 用UNION替换OR (适用于索引列)
通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR
将造成全表扫描. 注意, 以上规则只针对多个索引列有效. 如果有column没有被索
引, 查询效率可能会因为你没有选择OR而降低. 在下面的例子中, LOC_ID 和
REGION上都建有索引.
高效:
SELECT LOC_ID , LOC_DESC , REGION
FROM LOCATION
WHERE LOC_ID = 10
UNION
SELECT LOC_ID , LOC_DESC , REGION
FROM LOCATION
WHERE REGION = "MELBOURNE"
低效:
SELECT LOC_ID , LOC_DESC , REGION
FROM LOCATION
WHERE LOC_ID = 10 OR REGION = "MELBOURNE"
如果你坚持要用OR, 那就需要返回记录最少的索引列写在最前面.
(25) 用IN来替换OR
这是一条简单易记的规则,但是实际的执行效果还须检验,在ORACLE8i下,两者的
执行路径似乎是相同的. 
低效:
SELECT…. FROM LOCATION WHERE LOC_ID = 10 OR LOC_ID = 20 OR LOC_ID = 30
高效
SELECT… FROM LOCATION WHERE LOC_IN IN (10,20,30);
(26) 避免在索引列上使用IS NULL和IS NOT NULL
避免在索引中使用任何可以为空的列,ORACLE将无法使用该索引.对于单列索引,
如果列包含空值,索引中将不存在此记录. 对于复合索引,如果每个列都为空,索
引中同样不存在此记录. 如果至少有一个列不为空,则记录存在于索引中.举例:
如果唯一性索引建立在表的A列和B列上, 并且表中存在一条记录的A,B值为(123,
null) , ORACLE将不接受下一条具有相同A,B值(123,null)的记录(插入). 然而
如果所有的索引列都为空,ORACLE将认为整个键值为空而空不等于空. 因此你可以
插入1000 条具有相同键值的记录,当然它们都是空! 因为空值不存在于索引列中,
所以WHERE子句中对索引列进行空值比较将使ORACLE停用该索引.
低效: (索引失效)
SELECT … FROM DEPARTMENT WHERE DEPT_CODE IS NOT NULL;
高效: (索引有效)
SELECT … FROM DEPARTMENT WHERE DEPT_CODE >=0;
(27) 总是使用索引的第一个列:
如果索引是建立在多个列上, 只有在它的第一个列(leading column)被where子句
引用时,优化器才会选择使用该索引. 这也是一条简单而重要的规则,当仅引用索
引的第二个列时,优化器使用了全表扫描而忽略了索引
28) 用UNION-ALL 替换UNION ( 如果有可能的话):
当SQL 语句需要UNION两个查询结果集合时,这两个结果集合会以UNION-ALL的方式
被合并, 然后在输出最终结果前进行排序. 如果用UNION ALL替代UNION, 这样排序
就不是必要了. 效率就会因此得到提高. 需要注意的是,UNION ALL 将重复输出两
个结果集合中相同记录. 因此各位还是要从业务需求分析使用UNION ALL的可行性.
UNION 将对结果集合排序,这个操作会使用到SORT_AREA_SIZE这块内存. 对于这块
内存的优化也是相当重要的. 下面的SQL可以用来查询排序的消耗量
低效:
SELECT ACCT_NUM, BALANCE_AMT
FROM DEBIT_TRANSACTIONS
WHERE TRAN_DATE = '31-DEC-95'
UNION
SELECT ACCT_NUM, BALANCE_AMT
FROM DEBIT_TRANSACTIONS
WHERE TRAN_DATE = '31-DEC-95'
高效:
SELECT ACCT_NUM, BALANCE_AMT
FROM DEBIT_TRANSACTIONS
WHERE TRAN_DATE = '31-DEC-95'
UNION ALL
SELECT ACCT_NUM, BALANCE_AMT
FROM DEBIT_TRANSACTIONS
WHERE TRAN_DATE = '31-DEC-95'
(29) 用WHERE替代ORDER BY:
ORDER BY 子句只在两种严格的条件下使用索引.
ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序.
ORDER BY中所有的列必须定义为非空.
WHERE子句使用的索引和ORDER BY子句中所使用的索引不能并列.
例如:
表DEPT包含以下列:
DEPT_CODE PK NOT NULL
DEPT_DESC NOT NULL
DEPT_TYPE NULL
低效: (索引不被使用)
SELECT DEPT_CODE FROM DEPT ORDER BY DEPT_TYPE
高效: (使用索引)
SELECT DEPT_CODE FROM DEPT WHERE DEPT_TYPE > 0
(30) 避免改变索引列的类型.:
当比较不同数据类型的数据时, ORACLE自动对列进行简单的类型转换.
假设 EMPNO是一个数值类型的索引列.
SELECT … FROM EMP WHERE EMPNO = '123'
实际上,经过ORACLE类型转换, 语句转化为:
SELECT … FROM EMP WHERE EMPNO = TO_NUMBER('123')
幸运的是,类型转换没有发生在索引列上,索引的用途没有被改变.
现在,假设EMP_TYPE是一个字符类型的索引列.
SELECT … FROM EMP WHERE EMP_TYPE = 123
这个语句被ORACLE转换为:
SELECT … FROM EMP WHERETO_NUMBER(EMP_TYPE)=123
因为内部发生的类型转换, 这个索引将不会被用到! 为了避免ORACLE对你的SQL进
行隐式的类型转换, 最好把类型转换用显式表现出来. 注意当字符和数值比较时,
ORACLE会优先转换数值类型到字符类型
(31) 需要当心的WHERE子句:
某些SELECT 语句中的WHERE子句不使用索引. 这里有一些例子.
在下面的例子里, (1)'!=' 将不使用索引. 记住, 索引只能告诉你什么存在于表
中, 而不能告诉你什么不存在于表中. (2) '||'是字符连接函数. 就象其他函数那
样, 停用了索引. (3) '+'是数学函数. 就象其他数学函数那样, 停用了索引. (4)
相同的索引列不能互相比较,这将会启用全表扫描.
(32) a. 如果检索数据量超过30%的表中记录数.使用索引将没有显著的效率提高.
b. 在特定情况下, 使用索引也许会比全表扫描慢, 但这是同一个数量级上的区别.
而通常情况下,使用索引比全表扫描要块几倍乃至几千倍!
(33) 避免使用耗费资源的操作:
带有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL语句会启动SQL引擎
执行耗费资源的排序(SORT)功能. DISTINCT需要一次排序操作, 而其他的至少需要
执行两次排序. 通常, 带有UNION, MINUS , INTERSECT的SQL语句都可以用其他方
式重写. 如果你的数据库的SORT_AREA_SIZE调配得好, 使用UNION , MINUS,
INTERSECT也是可以考虑的, 毕竟它们的可读性很强
(34) 优化GROUP BY:
提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉.下
面两个查询返回相同结果但第二个明显就快了许多.
低效:
SELECT JOB , AVG(SAL)
FROM EMP
GROUP by JOB
HAVING JOB = 'PRESIDENT'
OR JOB = 'MANAGER'
高效:
SELECT JOB , AVG(SAL)
FROM EMP
WHERE JOB = 'PRESIDENT'
OR JOB = 'MANAGER'
GROUP by JOB

人生应该记住的16句话

1、再烦,也别忘微笑;再急,也要注意语气;再苦,也别忘坚持;再累,也要爱自己。

2、低调做人,你会一次比一次稳健;高调做事,你会一次比一次优秀。

3、成功的时候不要忘记过去;失败的时候不要忘记还有未来。

4、有望得到的要努力,无望得到的不介意,则无论输赢姿态都会好看。

5、生活不是单行线,一条路走不通,你可以转弯。

6、泪水和汗水的化学成分相似,但前者只能为你换来同情,后者却可以为你赢的成功。

7、变老是人生的必修课,变成熟是选修课。

8、以锻炼为本,学会健康;以修进为本,学会求知;

以道德为本,学会做人;以适应为本,学会生存。

9、人生四项基本原则:懂得选择,学会放弃,耐得住寂寞,经得起诱惑。

10、当所有人都低调的时候,你可以高调,但不能跑调。

11、学会忘记是生活的技术,学会微笑是生活的艺术。

12、什么是好工作:一不影响生活作息,二不影响家庭团聚,三能养家糊口。

13、懒惰像生锈一样,比操劳更消耗身体。

14、让梦想成真的最好办法就是醒来。

15、哲人无忧,智者常乐。并不是因为所爱的一切他都拥有了,而是所拥有的一切他都爱。

16、人生有几件绝对不能失去的东西:自制的力量,冷静的头脑,希望和信心。

09年搞笑签名

1、执子之手,方知子丑,泪流满面,子不走我走。
2、西游记告诉我们:凡是有后台的妖怪都被接走了,凡是没后台的都被一棒子打
死了。
3、你有什么不开心的事?说出来让大家开心一下。
4、我那么喜欢你,你喜欢我一下会死啊。
5、我又不是人民币,怎么能让人人都喜欢我?!
6、令人不能自拔的,除了牙齿还有爱情。
7、当生活心怀歹毒地将一切都搞成了黑色幽默,我顺水推舟把自己变成了一个受
过高等教育的流氓。
8、时间太瘦,指缝太宽。
9、小姑娘们梦中都想找一匹白马,睁开眼发现满世界都是灰不溜秋的驴,悲痛欲
绝后,只能从驴群中挑个身强力壮的,这样的驴就被命名为:经济适用男 。
10、我就要哭,我就要闹,一宿一宿不睡觉,手里拿瓶安眠药,拿根小绳要上吊。
再丑也要谈恋爱,谈到世界充满爱。
11、我们的目标:向钱看,向厚赚。
12、我是你转身就忘的路人甲,凭什么陪你蹉跎年华到天涯?
13、没有医保和寿险的,天黑后不要见义勇为……
14、挤公交是包含散打、瑜珈、柔道、平衡木等多种体育和健身项目于一体的综合
性运动。
15、老娘法眼一开就知道你是个妖孽了。
16、手插口袋,谁都不爱 。
17、手拿菜刀砍电线,一路火花带闪电。
18、单身并不难,难的是应付那些千方百计想让你结束单身的人 。
19、幸福是什么?幸福就是你吃鱼,我吃肉,看着别人啃骨头。
20、念了十几年书,想起来还是幼儿园比较好混!
21、我当年也是个痴情的种子,结果下了场雨……淹死了。
22、很多人说婚姻是爱情的坟墓,但是能够入土为安的爱情总比暴尸街头要好 。
23、有空学风水去,死后占个好墓也算弥补了生前买不起好房的遗憾
24、据说,人只有两个选择,忙着死或是忙着活,我想我有了第三种选择:忙着等
死 。
25、春困夏乏秋无力,冬日正好眠。
26、思念不能自已,痛苦不能自理,结果不能自取,幸福不能自予。
27、小时候我以为自己长大后可以拯救整个世界,等长大后才发现整个世界都拯救
不了我。
28、如果你注定不能给予我期待的回应.那么就保持在安全距离之外吧。
29、请不要把我对你的容忍,当成你不要脸的资本。
30、女子无才便是德,我一定是太缺德了。
31、诸葛亮出山前也没带过兵啊,你们凭啥要我有工作经验。
32、用嘻哈的蓝调精神来过二胡一样的生活。
33、鸵鸟的幸福,只是一堆沙子。
34、老天,太蓝!大海,太咸!人生,太难!工作,太烦!和你,有缘!想你,失
眠!见你,太远!
35、一觉醒来,天都黑了。
36、喝药递瓶,上吊给绳,跳楼的挥着小手绢送行。
37、铁杵能磨成针,但木杵只能磨成牙签,材料不对,再努力也没用。
38、你要搞清楚自己人生的剧本――不是你父母的续集,不是你子女的前传,更不是
你朋友的外篇。
39、树愈静而风不止,我愈恋而他不在。
40、多想某天醒来睁开眼,发现自己坐在小学教室的课桌椅上。老师掷来的粉笔头
正好打在额头上。
41、少年不胡作妄为,大胆放肆,试问老年时哪来的题材话当年。
42、作为一个怪兽,我的愿望是至少消灭一个奥特曼。
43、再过几十年 我们来相会 送到火葬场 全部烧成灰 你一堆我一堆 谁也不认识
谁 全部送到农村做化肥~
44、学问之美,在于使人一头雾水;诗歌之美,在于煽动男女出轨;女人之美,在
于蠢得无怨无悔;男人之美,在于说谎说得白日见鬼。
45、我以为我很颓废,今天我才知道,原来我早报废了。
46、不成熟男人的标志是可以为了理想壮烈的牺牲,成熟男人的标志的可以为了理
想卑贱的活着。
47、生活就像宋祖德的嘴,你永远都不知道下一个倒霉的会是谁。
48、阳光温热,岁月静好,你还不来,我怎敢老去?
49、人又不聪明,还学别人秃顶。
50、我以神的姿态,闪耀在这美的瞬间.凡人勿扰…
51、年轻的时候,我们常常冲着镜子做鬼脸;年老的时候,镜子算是扯平了。
52、要努力!!为了你的奥迪我的迪奥。
53、我是白领:今天领了薪水,交了房租水电,买了油米泡面,摸了口袋,感叹一
声,这个月工资又白领了…
54、执子之手,将子拖走。子说不走,好吧,关门放狗!
55、生活,就是这样.永远占领着绝对领导的位置,当无数的傻子高呼着自己控制了
生活,掌握了命运.却没看到,生活在更高的苍穹上.露出讥笑的嘲讽的面孔。
56、他就是一盆水,倒入你的米堆里,若干年后,清水变成了醇香的酒,而你变成
了一堆废弃的烂米,不是没用了,还可以拿来喂猪的。
57、不愿做奴隶的人民,愿做人民币的奴隶。
58、我不是天桥上算命的,唠不出那么多你爱听的磕。
59、生活二字二几十年来回味得我大小脑抽搐,脊髓痉挛。始终不得要领。
60、真的猛士,敢于直面自己未化妆的脸。
61、天山童姥――外表正太,内心却有三百六十五道裂痕,每道裂痕上书春夏秋冬四
字,沧桑到妖。
62、世事往往如此,想回头也已经来不及,即使你肯沦为劣马,不一定有回头草在
等着你。
63、曾经我们都以为自己可以为爱情死,其实爱情死不了人,它只会在最疼的地方
扎上一针,然后我们欲哭无泪,我们辗转反侧,我们久病成医,我们百炼成钢。你
不是风儿,我也不是沙,再缠绵也到不了天涯,擦干了泪,明天早上,我们都要上
班。
64、曾经和朋友一起仰望星空,随之我们泪流满面,他是因为失恋,我则是因为扭
伤了脖子。
65、其实你我都一样,人人都在装,关键是要装像了,装圆了,有一个门槛,装成
了就迈进去,成为传说中的性情中人,没装好,就卡在那里了。就是卡门。

2009-08-05

学习J2ME编程需要掌握的七种技术

J2ME编程是Java在智能家电领域的应用,主要包含以下技术:

1、 高级用户界面

高级用户界面是指J2ME编程中用到的Form(窗体)、TextBox(文本框)、List(列表框)和Alert(提示信息框)等的使用,以及其中的 一些控件的使用,当然也包括相应的事件处理。应用在一般的如登陆窗体、关于窗体和提示等。

2、 低级用户界面

低级用户界面指Canvas类和Graphics类等的使用,以及相应的事件处理,应用与游戏编程以及特殊界面的绘制等。

3、 记录存储系统

记录存储系统是手机中支持的用于数据永久保存的技术。因为手机中没有数据文件的概念,所以一般需要保存的数据只能以记录的形式保存。

4、 声音处理系统

MIDP1.0不支持声音处理,但是很多手机厂商如Nokia、Siemens等都支持,所以播放声音也是一项需要掌握的技术。该技术使用的API多和手 机厂商相关。但是MIDP2.0就提供了通用的支持。

5、 网络编程

网络编程指在手机中通过GPRS或者CDMA网络以HTTP协议或者SOCKET的形式连接网络。现在的手机支持HTTP网络编程的占大多数,支持 SOCKET的相对很少。所以网络编程暂时也就是使用HTTP协议进行编程。

6、 多线程

多线程是J2ME应用中比较核心的技术之一,因为进行网络编程和低级用户界面编程是为了响应迅速,都需要处理成多线程。所以也必须熟练掌握。

7、 短信息编程

很多手机都提供了用于发送短信息的API,如NOKIA、SIEMENS、SAMSUNG等,所以在J2ME中发送短信息也是一个比较常用的技术。

8、 其他

当然根据厂商的不同还提供了其他的一些技术,如Siemens的API中支持文件,Nokia的API支持读取系统通讯录等等。
 

2009-08-04

全球根DNS服务器IP地址

----------------------------------------------------
全球根DNS服务区地址
----------------------------------------------------
ping 延时较大
198.41.0.4
192.228.79.201
192.33.4.12
128.8.10.90
192.58.128.30
193.0.14.129
199.7.83.42
202.12.27.33
----------------------------------------------------
ping不通
192.203.230.10
192.112.36.4
128.63.2.53
----------------------------------------------------
ping较快
192.5.5.241
202.12.27.33
192.36.148.17
----------------------------------------------------