Perfil de 毅夜巷FotosBlogListasMais Ferramentas Ajuda

Blog


31 de agosto

好充实的8月啊

整个8月份忙得不行了
让我有点回到络神的感觉了
虽然比去年十月份在络神的时候要好一点
不过也快差不多了
为啥我总是会碰上时间很紧的项目?
不过也许是所有的项目时间都会很紧
也许这就是程序员的宿命 T_T
 
令我欣慰的是
虽然只是个内部使用的小项目
但还是学到了很多东西
而且和可爱的同事们相处的也很好
以前做的项目是规模大,但业务逻辑相对简单
这个项目是规模小,业务逻辑相对复杂一点
现在的这个架构让我有耳目一新的感觉
使自己终于没有再局限于以前的那套架构当中
心里挺满足
而且敲代码的感觉还是那么的好 ^_^
新人能得到这样的磨炼真不错
 
唉,不过现在压力越来越大
时间太紧,而且之后还要接别人的活
有的任务感觉加班加点也不一定能按时做完
有点郁闷
不管怎样,只能硬着头皮,尽力去做了 >_<
 
==========================================
 
今天终于又发现了自己爱看的TVB剧——《搜神传》
感觉挺好,让我周末好好地放松了一回
哈哈,我从小就爱看TVB的古装剧
 
周末又要结束了
可怕的下周终于还是要来临
给自己打打气,加油~
02 de agosto

培训归来,减肥目标未实现

这周公司组织了一次新员工的入职培训
地点是在怀柔的民政培训基地
包括两天的拓展培训和三天的业务培训
 
周一在前往培训基地的路上,我定下了自己培训的目标——减肥
想借着毕业前后共减去10斤体重的势头,再接再励
 
到达基地之后,所有参加培训的新员工被分成五个小队
我被分到了五队——悟空队,一共五位大帅哥、一位特大帅哥(当然,就是本人我)和六位大美女
拓展训练的第一个项目是给我印象最深的项目
也是我最害怕的一个项目——高空断桥
(咦~~~每次提到这个名字我的心里就会一颤)
我是第二个上去的,爬到8米高的桥的头时
双腿忍不住在剧烈颤抖
不过这时候大脑里面很空,就想着要跨过断桥
做了几次深呼吸之后,感觉已经稳定了不少
虽然双腿还是在抖
稳定之后也没多想,左脚稍一用力
凭借着自己超强的爆发力,右脚一迈就过去了(呱唧呱唧)
 
上午整个队都完成断桥项目之后,终于到了令人期待的午餐时间
当我走进餐厅,看到一排的好菜之后
对自己达到培训目标的信心顿时降为0
(唉,怎能为了减肥而放弃眼前如此美味的佳肴呢?)
 
两天的拓展训练还有背摔、天梯等等,都挺有意思
更重要的是让整个队的人都互相熟悉了
哈哈,为之后一块儿玩杀人游戏打下了基础
 
周三晚上的晚会真是很经典,尤其是男女反串表演的音乐剧——白蛇传
笑得快趴下了,可惜我用文字表达不出来。
晚会上,我们队是合唱《北京欢迎你》,中间插了一小段搞笑画面
就是本人演了一小段孙悟空
如果不出意外,这应该是有史以来最肥的孙悟空吧
 
最后一个晚上玩得挺high,被队长叫去吃西瓜
顺便玩杀人游戏,本人在连续五、六次当平民之后
终于第一次当上了警察,但是,却被匪在第一轮给闷死了,真是命苦啊
不过还好第二次当警察时成功地干掉了匪
 
周五是培训的最后一天,因为下午就要回去了
所以中午我吃了好多,应该是把除了鱼之外的所有荤菜都尝了一下
唉,其实心里还真有点不舍得回来,在培训基地的日子真是太好了
可惜现实是残酷的,下周一还是得开始正常上班了
 
这五天过得真是很嗨皮,觉得同事个个都很好,而且很有意思
尤其觉得孙姐对我们太好了,还有潘哥,也很搞笑^_^
 
================================================================
 
现在很晚了,不过感觉很好,同学都睡了,周围是黑的,很安静
这时候听歌最享受了
一不小心写了这么多字,估计除了我自己没人会看完吧
 
对了,差点忘了呼应一下日志的主题了
回来之后,做的第一件事就是拿出体重秤,发现自己和培训之前的体重一样
15 de julho

上班第一天

终于正式到新公司上班了

今天只安排位置,还没安排电脑

看了一天的PL/SQL,补补自己的不足

感觉还不错

就是坐得太久屁股有点疼

 

一个全新的工作环境

充满了期待

有时会让我回想起在络神上班的日子

说起来我也是有一年多工作经验的人了,哈哈

 

在新的环境一切都要重新开始

熟悉环境,熟悉业务,熟悉同事

提醒自己:不要着急,不要着急

^_^

22 de abril

周末大放松(一)

快毕业了,学生时代就要真正过去了
抓紧最后的学生时光,好好的玩玩

哈哈,不想明天不想以后,今朝有酒今朝醉
虽然一天或一周的happy时光
也许会带来以后一个月或是更长时间的痛苦
但也比平平淡淡过完这最后时光要值

周六去了动物园
陪别人的同时,也是别人在陪我
(嗯,力的作用是相互的)
又是一个在北京五年多的时间里
无数次路过却从未进去过的地方

动物园中人比动物多多了,不过杨絮更多
看到的动物里,觉得最漂亮的就是红腹锦鸡了
金黄色的羽毛是相当地靓啊
让我联想到了黄金甲

白狐也很美,哈哈,让我联想到了诛仙里的九尾天狐小白
看着世界上最狡猾、最聪明的动物懒洋洋地趴在地上
无神的眼睛半睁着 心里突然有股怜悯之情

动物园中最让我失望的就是狮虎山了
瘦骨嶙峋的老虎,完全没有了百兽之王的威风
听不到狮吼和虎啸
可恶的狮子竟然钻洞里去了,把屁股对着游客

虽然没有买熊猫馆的票,但还是看到了国宝
PD都好脏,白色的毛都变黄了
应该是好久没洗澡了
不知道是不是因为洗澡对熊猫的身体不好

鹰山挺不错的,哈哈
景色有点像网游《热血传奇》中的蜈蚣洞附近

两栖爬行馆的动物比较恶心
蛇、蜥蜴、蟾蜍。。。
在馆中央有个巨大的展箱
贴着纸,上面写着"网蟒"
然后我们绕着展箱,寻找网蟒
半天都没找着
后来又发现一张纸,上面写着:展箱消毒。。。

小插曲:
我们草地上坐着休息的时候
一个小孩跑到我们身后,也坐了下来
小孩的妈妈笑着说:你怎么坐下了,学叔叔阿姨啊~~
哈哈,一时间我真没反应过来,那个叔叔阿姨是指我们
我的思维还停留在哥哥姐姐的阶段
(^_^,是不是说明我的心理年龄比实际年龄小啊?)
看看那小孩的妈妈,和我们的年龄也确实差不多

怪异的动物并没有影响我们的食欲
从动物园出来后去了PIZZA HUT
第一次吃必胜客,芝心PIZZA没想像中好吃
有点怀念当初吃猫眼PIZZA的感觉
那是第一次感到PIZZA竟然如此美味
我觉得PIZZA应该也算是容易饱肚子的食物了
看着不大,吃完之后还觉得有点撑

14 de abril

植物园散心

本来打算要去睡的,IM都关了,突然想,今天的事儿今天写
(其实应该算是昨天的事今天写了。。。)

今天天气确实不错,为了表达对老天爷的感谢,感谢他老人家赐予了我们这么好的天气,宿舍4人决定去植物园春游。

唉,周末出来玩确实要做好心理准备,人实在是太多了。我在634上,站并被挤着,前后两人把我夹在中间,肚子都挤扁了。

提前在香泉环岛下车,然后走着去植物园了,因为车上人挤,路上车堵,还是走着舒服。

在植物园里面看到了不少以前只闻其名的植物,也许以前见过,但是不认识。看了梅园、丁香园、牡丹园 等等。其实我一直是个植物盲,很多花啊、树啊都不认识,今天认识了梅花、丁香(一看到丁香花就想到了《丁香花》那首歌)、海棠,在牡丹园里没发现牡丹,就看到海棠了,不知道是不是走错路了。今天还有一个收获,就是分清了松树和柏树(不准笑我。。。),一路上很多油松、圆柏、侧柏。侧柏就是种在道路两侧的柏树,圆柏就是环绕在四周的柏树(以上这句纯属娱乐。。。)

今天看到了银杏树,久仰大名,今天终于得以一见芳容,树叶的形状给我印象挺深,不过不知道怎么用文字描述。一路上还看到了洋槐、国槐、冷杉。

不行了,撑不住了,去睡了,本来还想写很多的,不过想想写出来也是流水账,就算了

13 de abril

百感交集,乱得很呐

喜:每天都有开心的时候,那就是吃饭和睡觉,晚上吃了大盘鸡,吃得时候很开心,吃完之后强烈的罪恶感油然而生,离减肥目标又远了。
怒:西方媒体对ZD问题的不实报道,在不实报道引导下的西方愚民们,还以世界救世主自居,来批评中国,抵制奥运。 看着网上那些歪曲事实的照片和文字,真想破口大骂。
哀:这事就比较复杂了,感觉自己陷入一个坑里,有些事明知不可能,不会有好结果,却无法自拔,唉,恨自己。
愁:毕设啊~~
激动:在FIT上看到PP发的帖子,很激动,很感人。帖子内容主要是 组织在德国的华人进行反对ZD大游行。帖子内容很多,可以看出他们为了组织游行,投入了很多。
该游行时就游行,该抗议和就抗议,和平发展的环境是去争取的,保持沉默的话,敌人是不会给你一个好环境,让你安心发展的。
08 de abril

大家来支持北京奥运

外国媒体太可恶了,CNN上的投票,要抵制北京奥运
大家来投票吧
http://edition.cnn.com/CNN/Programs/lou.dobbs.tonight/
右下角有个投票:
Do you believe world leaders should boycott the opening ceremonies of the Olympics in Beijing to protest the gross violations of human rights in China?
Yes 65% 4740 
No 35% 2549
我们暂时处于劣势 我们要逆转,大家选No
31 de março

继续陪同学

昨天太累了,而且到晚上1点才睡,原以为今天要睡个懒觉的

 

没想到天生就具备勤劳的美德的我,还是7点20就醒了

 

上午休息,呵呵,看了几集太极

 

唉,胡杏儿啊胡杏儿,我真的不喜欢看你的戏

 

不过本来看这部电视剧就是冲着赵文卓的武戏去的

 

虽然不喜欢胡杏儿,但还是坚持看下去

 

在这部戏里吴美珩的形象还是不错的

 

觉得这个造型比她的现代装要好看多了

 

快10点的时候某同学为了爆电话卡给我打电话

 

聊了1个半小时-_-b

 

(事实上应该说是无聊了一个半小时,单纯地爆电话卡)

 

害我另外一同学打了几次电话都没打进来

 

=========================

 

中午陪着初中同学去了鸟巢

 

还在施工,所以不能近距离接触

 

一堆游客在附近的天桥上拍照

 

还是第一次看到这种情景

 

感觉水立方和鸟巢比起来太小了

 

又不能近距离看,所以没感觉出水立方的魅力

 

不过水立方应该在晚上的时候非常漂亮吧(我猜。。)

 

=========================

 

今天晚上的活动是重头戏,哇哈哈

 

来北京快六年了,这是第一次看中超联赛

 

虽然之前看过校队和国安的比赛

 

不过当时国安没有上多少主力

 

这次终于可以在现场见识国安的实力了

 

其实最主要的还是体会一下赛场上的气氛

 

进场的时候看到大屏幕上写着"迎奥运 讲文明 拒绝京骂"

 

而且开场的时候球迷也还是比较文明的

 

哈哈,没过多久京骂终于出来了

 

终于体会到了"万人齐骂"的磅礴气势

 

同学果然是个铁杆球迷

 

而且在广州经常到现场看球

 

所以很有经验,骂得那是相当带劲

 

我比较害羞,公共场合还是没好意思骂人

 

整场下来,我只喊NB,没喊SB

 

比赛还行吧,大部分时间比较平淡

 

但国安的两个进球还是挺不错的

 

国安赢了,大家很hi很高兴

 

主场球迷还掀了四圈的人浪

 

哈哈,客队球迷比较可怜,不过助威声也不小

 

晚上看完球后无论是在等车的时候还是在公交车上

 

球迷还是相当兴奋的

 

一路高喊"国安冠军"、"国安双冠王"

 

(看球小插曲:在我左前方有一女生一个人在看球,

 

穿着国安的球衣,拿着望远镜,很专注,没怎么见她开口

 

时不时地笑一笑,赛场上的气氛确实让人觉得很愉快

 

嘿嘿,她不是美女,不过女生一个人来看球让我觉得很好奇

 

非常想去搭讪,无奈自己胆儿小

 

最终还是没和她说上话)

30 de março

今天终于没有“宅”了

流水帐现在开始:

 

今天一个很铁的初中同学来北京了,他是个铁杆足球迷

 

见面之后的第一件事就是让我带他去丰体买明天晚上国安的球票

 

唔。。没去过丰体,首先电话求助同学,让他上网查怎么坐车,未果

 

幸好我的手机中装了个NB软件"都市行"(这不是广告。。。)

 

按照都市行查到的换乘方案到了丰体,买了4张最便宜的票^_^,反正到时体育馆肯定坐不满,

 

可以往前坐。

 

然后带着同学进行天安门周边一日游

 

路线 王府井->故宫->国家大剧院

 

好久没去王府井了,和以前有点变化,好多店面都在装修

 

在小吃一条街吃了点东西就往故宫去了

 

在午门外排队买票,唉,研究生真惨,不能买学生票

 

排队的时候有不少代人买学生票的,代买学生票30/张 (实际票价 学生票20 成人票40)

 

我们发扬了不占小便宜的优良传统,买了2张成人票

 

事实证明:不占小便宜是正确的

 

因为检票的时候会检查学生证,哈哈,上次来故宫的时候没有这么严

 

好多没有学生证的人拿着学生票也进不去(我没有幸灾乐祸。。)

 

今天我们比较聪明,没钱请导游,就跟着别人的团走,蹭听,哇哈哈,学了不少历史知识

 

(插播历史小知识:和珅这人有个特点,他虽然是个大贪官,但却不挥霍

 

贪来的钱都存起来了,乾隆之所以不杀和珅就是这个原因,把和珅当作第二个国库

 

乾隆说如果钱自己存起来,还要找人看管,多麻烦呀,而这些钱让和珅贪了

 

相当于让和珅保管,安全、省事儿。 以上小知识从导游那听来的,不保证真实性)

 

听到不少小故事,可惜不能拿来分享,因为我只记住了上面那一个

 

这次游故宫发现有很多地方都提供了休息的椅子,我第一次去的时候都没有

 

(2002年,那是一个秋天,有一群新生,在北京的故宫里走得累死了)

 

导游带着团走完主要的几个地方之后就出去了,我和同学又去其他的殿逛了逛

 

游荡了3个多小时之后,我们从故宫出来,去了国家大剧院

 

跟这个很帅的建筑合了个影

 

======================================

 

最近心情不是很好,很乱很复杂,出去转转感觉挺好

 

同学没带数据线来北京,照片无法奉上,可惜了

16 de outubro

[转]常用linux命令

一些常用的基本命令:

uname -a    查看内核版本      
ls -al    显示所有文件的属性
pwd         显示当前路径       
cd -    返回上一次目录     cd ~    返回主目录
date s      设置时间、日期         
cal      显示日历     cal 2006
bc          计算器具              
man  & info     帮助手册
locale     显示当前字体     locale -a    所有可用字体     /etc/sysconfig/i18n设置文件
LANG=en    使用英文字体           
sync       将数据同步写入硬盘       
shutdonw -h now & half & poweroff  关机
reboot     重启                  
startx  &  init 5   进入图形介面
/work  & ?work    向上、下查找文档内容
chgrp      改变档案群组  chgrp testing install.log   
chown     改变所属人   chown root:root install.log
chmod      改变属性     chmod 777 install.log     read=4  write=2  execute=1
cp   复制   cp filename
rm   删除文件  rm -rf filename   强制删除文件
rmdir   删除文件夹
mv  移动    mv 123.txt 222.txt  重命名
mkdir     创建文件夹
touch     创建文件  更新当前时间
cat       由第一行开始显示     cat |more  分页
nl        在内容前加行号
more  &  less   一面一面翻动
head -n filename   显示第N行内容
tail -n filename  显示后N行内容
od        显示非纯文档
df -h 显示分区空间
du  显示目录或文件的大小
fdisk   分区设置    fdisk -l /dev/hda  显示硬盘分区状态
mkfs    建立各种文件系统  mkfs -t ext3  /dev/ram15  
fsck    检查和修复LINUX档案
ln      硬链接   ln -s  软件链接
whereis   查找命令
locate    查找
find      查找   find / -name "***.***"
which     查看工具
whoami    显示当前用户
gcc -v    查看GCC版本
chattr +i filename  禁止删除   chattr -i filename  取消禁止
lsattr    显示隐藏档属性
updatedb  更新资料库
mke2fs    格式化   mkfs -t ext3
dd if=/etc/passwd of=/tmp/passwd.bak    备份
mount     列出系统所有的分区
mount -t iso9660 /dev/cdrom /mnt/cdrom   挂载光盘
mount -t vfat /dev/fd0 /mnt/floppy       挂载软盘
mount -t vfat -o iocharset=utf8,umask=000 /dev/hda2 /mnt/hda2   挂载fat32分区
mount -t ntfs -o nls=utf8,umask=000 /dev/hda3 /mnt/hda3         挂载ntfs分区
Linux-NTFS Project: net/">http://linux-ntfs.sourceforge.net/
umount /mnt/hda3  缷载
ifconfig   显示或设置网络设备
service network restart   重启网卡 
ifdown eth0  关闭网卡
ifup eth0    开启网卡
clear    清屏
history    历史记录       !55  执行第55个指令
stty   设置终端    stty -a
fdisk /mbr   删除GRUB
at     僅進行一次的工作排程
crontab   循環執行的例行性命令    [e]编辑,[l]显示,[r]删除任务
&       后台运行程序    tar -zxvf 123.tar.gz & --------->后台运行
jobs    观看后台暂停的程序   jobs -l
fg      将后台程序调到前台   fg n ------>n是数字,可以指定进行那个程序
bg      让工作在后台运行
kill    结束进程    kill -9 PID     [9]强制结束,[15]正常结束,[l]列出可用的kill信号
ps aux  查看后台程序  
top     查看后台程序   top -d 2    每两秒更新一次        top -d 2 -p10604   观看某个PID
        top -b -n 2 > /tmp/top.txt ----->将 top 的资信进行 2 次,然后将结果输出到 /tmp/top.txt   
pstree   以树状图显示程序    [A]以 ASCII 来连接, [u]列出PID, [p]列出帐号
killall   要刪除某個服务    killall -9 httpd
free      显示内存状态     free -m  -------->以M为单位显示
uptime    显示目前系统开机时间
netstat   显示网络状态    netstat -tulnp------>找出目前系统上已在监听的网络连接及其 PID
dmesg     显示开机信息    demsg | more
nice      设置优先权      nice -n -5 vi & ----->用 root 给一個 nice 置为 -5 ,用以执行 vi
renice    调整已存在优先权
runlevel  显示目前的runlevel
depmod    分析可载入模块的相依性
lsmod     显示已载入系统的模块
modinfo   显示kernel模块的信息
insmod    载入模块
modprobe   自动处理可载入模块
rmmod     删除模块
chkconfig   检查,设置系统的各种服务     chkconfig --list ----->列出各项服务状态
ntsysv     设置系统的各种服务
cpio      备份文件
压缩命令:
 *.Z      compress 程序压缩的档案;
 *.bz2    bzip2 程序压缩的档案;
 *.gz     gzip 程序压缩的档案;
 *.tar    tar 程序打包的资料,並没有压缩過;
 *.tar.gz tar 程序打包的档案,其中並且经过 gzip 的压缩
compress filename  压缩文件  加[-d]解压  uncompress
gzip filename   压缩  加[-d]解压  zcat 123.gz 查看压缩文件内容
bzip2 -z filename  压缩  加[-d]解压   bzcat filename.bz2  查看压缩
 
文件内容
tar -cvf /home/123.tar /etc  打包,不压缩
tar -xvf 123.tar   解开包
tar -zxvf /home/123.tar.gz  以gzip解压
tar -jxvf /home/123.tar.bz2  以bzip2解压
tar -ztvf /tmp/etc.tar.gz   查看tar内容
cpio -covB  > [file|device]   份份
cpio -icduv < [file|device]   还原
 
vi一般用法
一般模式              编辑模式                  指令模式
h 左               a,i,r,o,A,I,R,O             :w 保存
j 下                进入编辑模式                :w! 强制保存
k 上                dd 删除光标当前行           :q! 不保存离开
 
l 右                ndd 删除n行                 :wq! 保存后离开
0 移动到行首        yy 复制当前行                :e! 还原原始档
$ 移动到行尾        nyy 复制n行                  :w filename 另存为
H 屏幕最上          p,P 粘贴                     :set nu 设置行号
M 屏幕中央          u  撤消                      :set nonu 取消行号
L 屏幕最下          [Ctrl]+r 重做上一个动作       ZZ 保存离开
G 档案最后一行      [ctrl]+z 暂停退出            :set nohlsearch   永久地关闭高亮显示
/work 向下搜索                                   :sp 同时打开两个文档
?work 向上搜索                                   [Ctrl]+w 两个文档设换
gg 移动到档案第一行                              :nohlsearch    暂时关闭高亮显示
 
认识SHELL
alias    显示当前所有的命令别名      alias lm="ls -al"   命令别名    unalias lm 取消命令别名
type      类似which
exprot    设置或显示环境变量
exprot PATH="$PATH":/sbin  添加/sbin入PATH路径
echo $PATH    显示PATH路径
bash      进入子程序
name=yang     设定变量
unset name    取消变量
echo $name    显示变量的内容
myname="$name its me"   &   myname='$name its me'     单引号时$name失去变量内容
ciw=/etc/sysconfig/network-scripts/     设置路径
env      列出所有环境变量
echo $RANDOM    显示随意产生的数
set      设置SHELL
PS1='[\u@\h \w \A #\#]\$ '     提示字元的设定
   [root@linux ~]# read [-pt] variable     -----------读取键盘输入的变量
   参数:
   -p  :后面可以接提示字元!
   -t  :后面可以接等待的『秒数!』
declare    声明 shell 变量
ulimit -a   显示所有限制资料
 ls /tmp/yang && echo "exist" || echo "not exist"
 意思是说,当 ls /tmp/yang 执行后,若正确,就执行echo "exist" ,若有问题,就执行echo "not exist"
 echo $PATH | cut -d ':' -f 5       以:为分隔符,读取第5段内容
 export | cut -c 10-20      读取第10到20个字节的内容
 last | grep 'root'    搜索有root的一行,加[-v]反向搜索
 cat /etc/passwd | sort    排序显示
 cat /etc/passwd | wc      显示『行、字数、字节数』
正规表示法
[root@test root]# grep [-acinv] '搜寻字串' filename
       参数說明:
       -a :将 binary 档案以 text 档案的方式搜寻资料
       -c :计算找到 '搜寻字串' 的次数
       -i :忽略大小写的不同,所以大小写视为相同
       -n :输出行号
       -v :反向选择,亦即显示出沒有 '搜寻字串' 內容的那一行!
 grep -n 'the' 123.txt     搜索the字符 -----------搜寻特定字串      
 grep -n 't[ea]st' 123.txt    搜索test或taste两个字符---------利用 [] 来搜寻集合字元
 grep -n '[^g]oo' 123.txt     搜索前面不为g的oo-----------向选择 [^]
 grep -n '[0-9]' 123.txt  搜索有0-9的数字
 grep -n '^the' 123.txt 搜索以the为行首-----------行首搜索^
 grep -n '^[^a-zA-Z]' 123.txt  搜索不以英文字母开头
 grep -n '[a-z]$' 123.txt    搜索以a-z结尾的行---------- 行尾搜索$
 grep -n 'g..d' 123.txt     搜索开头g结尾d字符----------任意一个字元 .
 grep -n 'ooo*' 123.txt     搜索至少有两个oo的字符---------重复字元 *
sed    文本流编辑器    利用脚本命令来处理文本文件
awd    模式扫描和处理语言
 nl 123.txt | sed '2,5d'   删除第二到第五行的内容
diff     比较文件的差异
cmp      比较两个文件是否有差异
patch    修补文件
pr       要打印的文件格式化
帐号管理
/etc/passwd    系统帐号信息
/etc/shadow    帐号密码信息    经MD5 32位加密
     在密码栏前面加『 * 』『 ! 』禁止使用某帐号
/etc/group     系统群组信息
/etc/gshadow
newgrp    改变登陆组
useradd  &  adduser    建立新用户  ---------> useradd -m test  自动建立用户的登入目录
          useradd -m -g pgroup test --------->指定所属级
/etc/default/useradd   相关设定
/etc/login.defs       UID/GID 有关的設定
passwd    更改密码 -----------> passwd test
usermod   修改用户帐号
userdel   删除帐号 ----------->userdel -r test
chsh      更换登陆系统时使用的SHELL   [-l]显示可用的SHELL;[-s]修改自己的SHELL
chfn      改变finger指令显示的信息
finger    查找并显示用户信息
id        显示用户的ID ----------->  id test
groupadd   添加组
groupmod   与usermod类似
groupdel   删除组
su test    更改用户   su -    进入root,且使用root的环境变量
sudo       以其他身份来执行指令
visudo     编辑/etc/sudoers      加入一行『 test ALL=(ALL) ALL 』
           %wheel ALL = (ALL) ALL               系统里所有wheel群组的用户都可用sudo
           %wheel ALL = (ALL) NOPASSWD: ALL     wheel群组所有用户都不用密码NOPASSWD
       User_Alias ADMPW = vbird, dmtsai, vbird1, vbird3         加入ADMPW组
       ADMPW ALL = NOPASSWD: !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, \
       !/usr/bin/passwd root      可以更改使用者密码,但不能更改root密码 (在指令前面加入 ! 代表不可)
PAM (Pluggable Authentication Modules, 嵌入式模组)
who & w     看谁在线                    
last        最近登陆主机的信息
lastlog     最近登入的时间    读取 /var/log/lastlog
talk        与其他用户交谈
write       发送信息    write test   [ctrl]+d 发送
mesg        设置终端机的写入权限    mesg n 禁止接收     mesg y
wall        向所有用户发送信息    wall this is q test
mail        写mail  

/etc/default/useradd    家目录默认设置
quota      显示磁盘已使用的空间与限制     quota -guvs ----->秀出目前 root 自己的 quota 限制值
           quota -vu   查询
quotacheck   检查磁盘的使用空间与限制     quotacheck -avug  ----->将所有的在 /etc/mtab 內,含有 quota 支援的 partition 进行扫描
             [-m] 强制扫描 
     quota一定要是独立的分区,要有quota.user和quota.group两件文件,在/etc/fstab添加一句:
     /dev/hda3 /home ext3 defaults,usrquota,grpquota 1 2
     chmod 600 quota*         设置完成,重启生效
edquota    编辑用户或群组的quota  [u]用户,[g]群组,[p]复制,[t]设置宽限期限
           edquota -a yang       edquota -p yang -u young ----->复制   
quotaon    开启磁盘空间限制     quotaon -auvg -------->启动所有的具有 quota 的 filesystem
quotaoff   关闭磁盘空间限制     quotaoff -a  -------->关闭了 quota 的限制
repquota -av     查阅系統內所有的具有 quota 的 filesystem 的限值状态

Quota 从开始准备 filesystem 的支援到整个设定結束的主要的步骤大概是:
1、设定 partition 的 filesystem 支援 quota 参数:
由于 quota 必须要让 partition 上面的 filesystem 支援才行,一般来说, 支援度最好的是 ext2/ext3 ,
其他的 filesystem 类型沒有试过啦! 启动 filesystem 支援 quota 最簡單就是編輯 /etc/fstab ,
使得準備要開放的 quota 磁碟可以支援 quota 囉;
2、建立 quota 記錄檔:
剛剛前面講過,整個 quota 進行磁碟限制值記錄的檔案是 aquota.user/aquota.group,
要建立這兩個檔案就必須要先利用 quotacheck 掃瞄才行喔!
3、編輯 quota 限制值資料:
再來就是使用 edquota 來編輯每個使用者或群組的可使用空間囉;
4、重新掃瞄與啟動 quota :
設定好 quota 之後,建議可以再進行一次 quotacheck ,然後再以 quotaon 來啟動吧!

开机流程简介
1、載入 BIOS 的硬體資訊,並取得第一個開機裝置的代號;
2、讀取第一個開機裝置的 MBR 的 boot Loader (亦即是 lilo, grub, spfdisk 等等) 的開機資訊;
3、載入 Kernel 作業系統核心資訊, Kernel 開始解壓縮,並且嘗試驅動所有硬體裝置;
4、Kernel 執行 init 程式並取得 run-level 資訊;
5、init 執行 /etc/rc.d/rc.sysinit 檔案;
6、啟動核心的外掛模組 (/etc/modprobe.conf);
7、init 執行 run-level 的各個批次檔( Scripts );
8、init 執行 /etc/rc.d/rc.local 檔案;
9、執行 /bin/login 程式,並等待使用者登入;
10、登入之後開始以 Shell 控管主機。
在/etc/rc.d/rc3.d內,以S开头的为开机启动,以K开头的为关闭,接着的数字代表执行顺序
GRUB vga设定
彩度\解析度  640x480  800x600  1024x768  1280x1024   bit
    256        769      771      773       775      8 bit
   32768       784      787      790       793     15 bit
   65536       785      788      791       794     16 bit
   16.8M       786      789      792       795     32 bit
 
./configure    检查系统信息       ./configure --help | more  帮助信息
make clean     清除之前留下的文件
make           编译
make install   安装
rpm -q  ----->查询是否安装             rpm -ql ------>查询该套件所有的目录
rpm -qi ----->查询套件的说明资料       rpm -qc[d] ----->设定档与说明档
rpm -ivh  ---->安装                    rpm -V  -------->查看套件有否更动过
rpm -e  ------>删除                    rpm -Uvh ------->升级安装 
--nodeps ----->强行安装                --test ----->测试安装
05 de outubro

[转]说说大型高并发高负载网站的系统架构

说说大型高并发高负载网站的系统架构

By Michael

转载请保留出处:俊麟 Michael’s blog (http://www.toplee.com/blog/?p=71)
Trackback Url : http://www.toplee.com/blog/wp-trackback.php?p=71

  我在CERNET做过拨号接入平台的搭建,而后在Yahoo&3721从事过搜索引擎前端开发,又在MOP处理过大型社区猫扑大杂烩的架构升级等工作,同时自己接触和开发过不少大中型网站的模块,因此在大型网站应对高负载和并发的解决方案上有一些积累和经验,可以和大家一起探讨一下。


  一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。

  大型网站,比如门户网站。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。

  上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,下面我从低成本、高性能和高扩张性的角度来说说我的一些经验。

1、HTML静态化
  其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,我们无法全部手动去挨个实现,于是出现了我们常见的信息发布系统CMS,像我们常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的,信息发布系统可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不可少的。

  除了门户和信息发布类型的网站,对于交互性要求很高的社区类型网站来说,尽可能的静态化也是提高性能的必要手段,将社区内的帖子、文章进行实时的静态化,有更新的时候再重新静态化也是大量使用的策略,像Mop的大杂烩就是使用了这样的策略,网易社区等也是如此。目前很多博客也都实现了静态化,我使用的这个Blog程序WordPress还没有静态化,所以如果面对高负载访问,www.toplee.com一定不能承受 :)

  同时,html静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可以考虑使用html静态化来实现,比如论坛中论坛的公用设置信息,这些信息目前的主流论坛都可以进行后台管理并且存储再数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考虑将这部分内容进行后台更新的时候进行静态化,这样避免了大量的数据库访问请求。

  在进行html静态化的时候可以使用一种折中的方法,就是前端使用动态实现,在一定的策略下进行定时静态化和定时判断调用,这个能实现很多灵活性的操作,我开发的台球网站故人居(www.8zone.cn)就是使用了这样的方法,我通过设定一些html静态化的时间间隔来对动态网站内容进行缓存,达到分担大部分的压力到静态页面上,可以应用于中小型网站的架构上。故人居网站的地址:http://www.8zone.cn,顺便提一下,有喜欢台球的朋友多多支持我这个免费网站:)

2、图片服务器分离
  大家知道,对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃。

  在应用服务器和图片服务器上,可以进行不同的配置优化,比如Apache在配置ContentType的时候可以尽量少支持,尽可能少的LoadModule,保证更高的系统消耗和执行效率。

  我的台球网站故人居8zone.cn也使用了图片服务器架构上的分离,目前是仅仅是架构上分离,物理上没有分离,由于没有钱买更多的服务器:),大家可以看到故人居上的图片连接都是类似img.9tmd.com或者img1.9tmd.com的URL。

  另外,在处理静态页面或者图片、js等访问方面,可以考虑使用lighttpd代替Apache,它提供了更轻量级和更高效的处理能力。

3、数据库集群和库表散列
  大型网站都有复杂的应用,这些应用必须使用数据库,那么在面对大量访问的时候,数据库的瓶颈很快就能显现出来,这时一台数据库将很快无法满足应用,于是我们需要使用数据库集群或者库表散列。

  在数据库集群方面,很多数据库都有自己的解决方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是类似的方案,您使用了什么样的DB,就参考相应的解决方案来实施即可。

  上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用DB类型的限制,于是我们需要从应用程序的角度来考虑改善系统架构,库表散列是常用并且最有效的解决方案。我们在应用程序中安装业务和应用或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列,比如用户表,按照用户ID进行表散列,这样就能够低成本的提升系统的性能并且有很好的扩展性。sohu的论坛就是采用了这样的架构,将论坛的用户、设置、帖子等信息进行数据库分离,然后对帖子、用户按照板块和ID进行散列数据库和表,最终可以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。

4、缓存
  缓存一词搞技术的都接触过,很多地方用到缓存。网站架构和网站开发中的缓存也是非常重要。这里先讲述最基本的两种缓存。高级和分布式的缓存在后面讲述。

  架构方面的缓存,对Apache比较熟悉的人都能知道Apache提供了自己的mod_proxy缓存模块,也可以使用外加的Squid进行缓存,这两种方式均可以有效的提高Apache的访问响应能力。

  网站程序开发方面的缓存,Linux上提供的Memcached是常用的缓存方案,不少web编程语言都提供memcache访问接口,php、perl、c和java都有,可以在web开发中使用,可以实时或者Cron的把数据、对象等内容进行缓存,策略非常灵活。一些大型社区使用了这样的架构。

  另外,在使用web语言开发的时候,各种语言基本都有自己的缓存模块和方法,PHP有Pear的Cache模块和eAccelerator加速和Cache模块,还要知名的Apc、XCache(国人开发的,支持!)php缓存模块,Java就更多了,.net不是很熟悉,相信也肯定有。

5、镜像
  镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,比如ChinaNet和EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点,数据进行定时更新或者实时更新。在镜像的细节技术方面,这里不阐述太深,有很多专业的现成的解决架构和产品可选。也有廉价的通过软件实现的思路,比如Linux上的rsync等工具。

6、负载均衡
  负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。

  负载均衡技术发展了多年,有很多专业的服务提供商和产品可以选择,我个人接触过一些解决方法,其中有两个架构可以给大家做参考。另外有关初级的负载均衡DNS轮循和较专业的CDN架构就不多说了。

6.1 硬件四层交换
  第四层交换使用第三层和第四层信息包的报头信息,根据应用区间识别业务流,将整个区间段的业务流分配到合适的应用服务器进行处理。 第四层交换功能就象是虚IP,指向物理服务器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上,需要复杂的载量平衡算法。在IP世界,业务类型由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。

  在硬件四层交换产品领域,有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂贵,但是物有所值,能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了。

6.2 软件四层交换
  大家知道了硬件四层交换机的原理后,基于OSI模型来实现的软件四层交换也就应运而生,这样的解决方案实现的原理一致,不过性能稍差。但是满足一定量的压力还是游刃有余的,有人说软件实现方式其实更灵活,处理能力完全看你配置的熟悉能力。

  软件四层交换我们可以使用Linux上常用的LVS来解决,LVS就是Linux Virtual Server,他提供了基于心跳线heartbeat的实时灾难应对解决方案,提高系统的鲁棒性,同时可供了灵活的虚拟VIP配置和管理功能,可以同时满足多种应用需求,这对于分布式的系统来说必不可少。

  一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性,随时往架构里面增减节点都非常容易。这样的架构我准备空了专门详细整理一下和大家探讨。

总结:
  对于大型网站来说,前面提到的每个方法可能都会被同时使用到,Michael这里介绍得比较浅显,具体实现过程中很多细节还需要大家慢慢熟悉和体会,有时一个很小的squid参数或者apache参数设置,对于系统性能的影响就会很大,希望大家一起讨论,达到抛砖引玉之效。

  转载请保留出处:俊麟 Michael’s blog (http://www.toplee.com/blog/?p=71)
Trackback Url : http://www.toplee.com/blog/wp-trackback.php?p=71

30 de setembro

最近心里真的很难受

月初到上海徐汇中心医院去看爸爸
 
到上海的时候,妈妈在医院门口等我
 
之前我只知道爸爸病了,对于病情却了解不多
 
家里人也只告诉我爸爸的病还在诊断
 
跟着妈妈走进医院住院部的电梯
 
妈妈按下了5层的按钮,在电梯里我看到了5层是肿瘤科
 
此时心里一沉,已经感觉到情况不乐观
 
但我还是安慰着自己:还在诊断,不一定就是肿瘤
 
进了病房,看到躺在病床上看书的爸爸
 
爸爸以前就很瘦,165的身高,不到110斤的体重
 
现在看上去比以前更瘦了
 
我坐到爸爸的床边,还像以前那样,捏捏爸爸的脸,开开玩笑,闲聊几句
 
我心里知道,精神状态很重要,我不能让爸爸看到我难过的表情
 
一会儿由于医生在8:00-10:00这段时间要查房,不能让家属在里面
 
所以我妈带着我出去了,在路上妈妈把爸爸的病情告诉了我
 
说已经在心包的积水中发现了癌细胞,目前癌细胞的扩散程度和来源还需要进行检查才能确定
 
此时我已经感觉到鼻子很酸,我说不出话来,只是听妈妈说着,这些天从南昌大学第一附属医院转院过来的事情
 
接下来的几天,每次一进医院的门口,我就感觉到巨大的压力
 
心里发虚,觉得自己的腿都在微微的颤抖
 
但在爸爸面前我仍然和往常一样
 
讲在公司实习的事,告诉他,儿子很努力
 
下午天气变热了,爸爸出了些汗,要换衣服了
 
我帮爸爸擦身子,这是我第一次帮爸爸擦身子
 
看到爸爸瘦瘦的双腿,心里又是一酸
 
我尽量低着头,不让爸爸看到我的脸
 
在我要离开上海的那天下午,医生给爸爸做了一个ECT检查
 
检查的时候,我和妈妈在外面等着,没多久医生带着凝重的神情出来了
 
告诉我们,癌细胞已经扩散到骨头
 
此时,我觉得整个人都要垮了,妈妈已经开始流泪
 
我说不出话来,背对着妈妈,在眼眶中打转的眼泪终于忍不住流了下来
 
在爸爸检查完毕出来之前,我们已经擦干了眼泪,好像什么事都没发生一样,带着爸爸回病房
 
回京之后,繁忙地工作会让我暂时忘记了伤心
 
但每次和爸爸发短信的时候,我总会忍不住,眼泪一瞬间就充满了眼眶
 
最近晚上总是梦见爸爸,记得在前天的梦里,自己哭得很大声很大声
 
每次早上梦醒的时候,心里感觉无比的压抑
 
=============================================================
 
让人难受的事情一件接着一件
 
昨天晚上在网上看到soff被采访的视频
 
看着soff的头发和穿的衣服,心里非常难受
 
我觉得自己的力量的真的很小很小
 
在种种困难面前无能为力
 
我真想狠狠的痛扁马化腾,真想腾讯完蛋
 
这么大的一个公司为什么要对一个个人做得这么绝呢
 
看完视频之后,心情无法平静下来,回想起以前神采奕奕的soff
 
我不知道我能做些什么
 
目前能做的就是三天后不再使用QQ
 
这三天利用QQ的QMD中通知好友,我将不再使用QQ
23 de setembro

[转]content type 文件类型表

 
Description of Data Content Typical Filename Extensions MIME type/subtype
     
Text and Text-Related Types    
HTML text data (RFC 1866) html htm text/html
Plain text: documents; program listings txt c c++ pl cc h text/plain
Richtext (obsolete - replaced by text/enriched)   text/richtext
Structure enhanced text (etx?) text/x-setext
Enriched text markup (RFC 1896)   text/enriched
Tab-separated values (tabular) (tsv?) text/tab-separated-values
SGML documents (RFC 1874)   text/sgml
Speech synthesis data (MVP Solutions) talk text/x-speech
     
Document Stylesheet Types    
Cascading Stylesheets css text/css
DSSSL-online stylesheets   application/dsssl (proposed)
     
Image Types    
GIF gif image/gif
X-Windows bitmap (b/w) xbm image/x-xbitmap
X-Windows pixelmap (8-bit color) xpm image/x-xpixmap
Portable Network Graphics png image/x-png
Image Exchange Format (RFC 1314) ief image/ief
JPEG jpeg jpg jpe image/jpeg
TIFF tiff tif image/tiff
RGB rgb image/rgb
    image/x-rgb
Group III Fax (RFC 1494) g3f image/g3fax
X Windowdump format xwd image/x-xwindowdump
Macintosh PICT format pict image/x-pict
PPM (UNIX PPM package) ppm image/x-portable-pixmap
PGM (UNIX PPM package) pgm image/x-portable-graymap
PBM (UNIX PPM package) pbm image/x-portable-bitmap
PNM (UNIX PPM package) pnm image/x-portable-anymap
Microsoft Windows bitmap bmp image/x-ms-bmp
CMU raster ras image/x-cmu-raster
Kodak Photo-CD pcd image/x-photo-cd
Computer Graphics Metafile cgm image/cgm
North Am. Presentation Layer Protocol   image/naplps
CALS Type 1 or 2 mil cal image/x-cals
Fractal Image Format (Iterated Systems) fif image/fif
QuickSilver active image (Micrografx) dsf image/x-mgx-dsf
CMX vector image (Corel) cmx image/x-cmx
Wavelet-compressed (Summus) wi image/wavelet
AutoCad Drawing (SoftSource) dwg image/vnd.dwg
    image/x-dwg
AutoCad DXF file (SoftSource) dxf image/vnd.dxf
    image/x-dxf
Simple Vector Format (SoftSource) svf image/vnd.svf
    also vector/x-svf
     
Audio/Voice/Music Related Types    
"basic"audio - 8-bit u-law PCM au snd audio/basic
Macintosh audio format (AIpple) aif aiff aifc audio/x-aiff
Microsoft audio wav audio/x-wav
MPEG audio mpa abs mpega audio/x-mpeg
MPEG-2 audio mp2a mpa2 audio/x-mpeg-2
compressed speech (Echo Speech Corp.) es audio/echospeech
Toolvox speech audio (Voxware) vox audio/voxware
RapidTransit compressed audio (Fast Man) lcc application/fastman
Realaudio (Progressive Networks) ra ram application/x-pn-realaudio
NIFF music notation data format   application/vnd.music-niff
MIDI music data mmid x-music/x-midi
Koan music data (SSeyo) skp application/vnd.koan
    application/x-koan
Speech synthesis data (MVP Solutions) talk text/x-speech
     
Video Types    
MPEG video mpeg mpg mpe video/mpeg
MPEG-2 video mpv2 mp2v video/mpeg-2
Macintosh Quicktime qt mov video/quicktime
Microsoft video avi video/x-msvideo
SGI Movie format movie video/x-sgi-movie
VDOlive streaming video (VDOnet) vdo video/vdo
Vivo streaming video (Vivo software) viv video/vnd.vivo
    video/vivo
Special HTTP/Web Application Types    
Proxy autoconfiguration (Netscape browsers) pac application/x-ns-proxy-autoconfig
See Chapter 6   application/x-www-form-urlencoded
See Chapter 9   application/x-www-local-exec
See Chapter 9 (Netscape extension)   multipart/x-mixed-replace
See Chapter 9 and Appendix B   multipart/form-data
Netscape Cooltalk chat data (Netscape) ice x-conference/x-cooltalk
Interactive chat (Ichat)   application/x-chat
     
Application Types    
     
Text-Related    
PostScript ai eps ps application/postscript
Microsoft Rich Text Format rtf application/rtf
Adobe Acrobat PDF pdf application/pdf
    application/x-pdf
Maker Interchange Format (FrameMaker) mif application/vnd.mif
    application/x-mif
Troff document t tr roff application/x-troff
Troff document with MAN macros man application/x-troff-man
Troff document with ME macros me application/x-troff-me
Troff document with MS macros ms application/x-troff-ms
LaTeX document latex application/x-latex
Tex/LateX document tex application/x-tex
GNU TexInfo document texinfo texi application/x-texinfo
TeX dvi format dvi application/x-dvi
MacWrite document ?? application/macwriteii
MS word document ?? application/msword
WordPerfect 5.1 document ?? application/wordperfect5.1
SGML application (RFC 1874)   application/sgml
Office Document Architecture oda application/oda
Envoy Document evy application/envoy
Wang Info. Tranfer Format (Wang)   application/wita
DEC Document Transfer Format (DEC)   application/dec-dx
IBM Document Content Architecture (IBM)   application/dca-rft
     
CommonGround Digital Paper (No Hands Software)   application/commonground
FrameMaker Documents (Frame) doc fm frm frame application/vnd.framemaker
    application/x-framemaker
Remote printing at arbitrary printers (RFC 1486)   application/remote-printing
     
Archive/Compressed Archives    
Gnu tar format gtar application/x-gtar
4.3BSD tar format tar application/x-tar
POSIX tar format ustar application/x-ustar
Old CPIO format bcpio application/x-bcpio
POSIX CPIO format cpio application/x-cpio
UNIX sh shell archive shar application/x-shar
DOS/PC - Pkzipped archive zip application/zip
Macintosh Binhexed archive hqx application/mac-binhex40
Macintosh Stuffit Archive sit sea application/x-stuffit
Fractal Image Format fif application/fractals
Binary, UUencoded bin uu application/octet-stream
PC executable exe application/octet-stream
WAIS "sources" src wsrc application/x-wais-source
NCSA HDF data format hdf application/hdf
     
Downloadable Program/Scripts    
Javascript program js ls mocha text/javascript
    application/x-javascript
VBScript program   text/vbscript
UNIX bourne shell program sh application/x-sh
UNIX c-shell program csh application/x-csh
Perl program pl application/x-perl
Tcl (Tool Control Language) program tcl application/x-tcl
Atomicmail program scripts (obsolete)   application/atomicmail
Slate documents - executable enclosures (BBN)   application/slate
Undefined binary data (often executable progs)   application/octet-stream
RISC OS Executable programs (ANT Limited)   application/riscos
     
Animation/Multimedia    
Andrew Toolkit inset   application/andrew-inset
FutureSplash vector animation (FutureWave) spl application/futuresplash
mBED multimedia data (mBED) mbd application/mbedlet
Macromedia Shockwave (Macromedia)   application/x-director
Sizzler real-time video/animation   application/x-sprite
PowerMedia multimedia (RadMedia) rad application/x-rad-powermedia
     
Presentation    
PowerPoint presentation (Microsoft) ppz application/mspowerpoint
PointPlus presentation data (Net Scene) css application/x-pointplus
ASAP WordPower (Software Publishing Corp.) asp application/x-asap
Astound Web Player multimedia data (GoldDisk) asn application/astound
Special Embedded Object    
OLE script e.g. Visual Basic (Ncompass) axs application/x-olescript
OLE Object (Microsoft/NCompass) ods application/x-oleobject
OpenScape OLE/OCX objects (Business@Web) opp x-form/x-openscape
Visual Basic objects (Amara) wba application/x-webbasic
Specialized data entry forms (Alpha Software) frm application/x-alpha-form
client-server objects (Wayfarer Communications) wfx x-script/x-wfxclient
General Applications    
Undefined binary data (often executable progs)   application/octet-stream
CALS (U.S. D.O.D data format - RFC 1895)   application/cals-1840
Pointcast news data (Pointcast) pcn application/x-pcn
Excel spreadsheet (Microsoft)   application/vnd.ms-excel
    application/x-msexcel
    application/ms-excel
PowerPoint (Microsoft) ppt application/vnd.ms-powerpoint
    application/ms-powerpoint
Microsoft Project (Microsoft)   application/vnd.ms-project
Works data (Microsoft)   application/vnd.ms-works
MAPI data (Microsoft)   application/vnd.ms-tnef
Artgallery data (Microsoft)   application/vnd.artgalry
SourceView document (Dataware Electronics) svd application/vnd.svd
Truedoc (Bitstream)   application/vnd.truedoc
Net Install - software install (20/20 Software) ins application/x-net-install
Carbon Copy - remote control/access (Microcom) ccv application/ccv
Spreadsheets (Visual Components) vts workbook/formulaone
Cybercash digital money (Cybercash)   application/cybercash
Format for sending generic Macintosh files   application/applefile
Active message -- connect to active mail app.   application/activemessage
X.400 mail message body part (RFC 1494)   application/x400-bp
USENET news message id (RFC 1036)   application/news-message-id
USENET news message (RFC 1036)   application/news-transmission
     
Multipart Types (mostly email)    
Messages with multiple parts   multipart/mixed
Messages with multiple, alternative parts   multipart/alternative
Message with multiple, related parts   multipart/related
Multiple parts are digests   multipart/digest
For reporting of email status (admin.)   multipart/report
Order of parts does not matter   multipart/parallel
Macintosh file data   multipart/appledouble
Aggregate messages; descriptor as header   multipart/header-set
Container for voice-mail   multipart/voice-message
HTML FORM data (see Ch. 9 and App. B)   multipart/form-data
Infinite multiparts - See Chapter 9 (Netscape)   multipart/x-mixed-replace
     
Message Types (mostly email)    
MIME message   message/rfc822
Partial message   message/partial
Message containing external references   message/external-body
Message containing USENET news   message/news
HTTP message   message/http
     
2D/3D Data/Virtual Reality Types    
VRML data file wrl vrml x-world/x-vrml (changing to model/vrml)
WIRL - VRML data (VREAM) vrw x-world/x-vream
Play3D 3d scene data (Play3D) p3d application/x-p3d
Viscape Interactive 3d world data (Superscape) svr x-world/x-svr
WebActive 3d data (Plastic Thought) wvr x-world/x-wvr
QuickDraw3D scene data (Apple) 3dmf x-world/x-3dmf
     
Scientific/Math/CAD Types    
Chemical types -- to communicate information about chemical models   chemical/* (several subtypes)
Mathematica notebook ma application/mathematica
Computational meshes for numerical simulations msh x-model/x-mesh(evolving to model/mesh)
Vis5D 5-dimensional data v5d application/vis5d
IGES models -- CAD/CAM (CGM) data igs application/iges(evolving to model/iges?)
Autocad WHIP vector drawings dwf drawing/x-dwf
     
Largely Platform-Specific Types    
Silicon Graphics Specific Types    
Showcase Presentations showcase slides sc sho show application/x-showcase
Insight Manual pages ins insight application/x-insight
Iris Annotator data ano application/x-annotator
Directory Viewer dir application/x-dirview
Software License lic application/x-enterlicense
Fax manager file faxmgr application/x-fax-manager
Fax job data file faxmgrjob application/x-fax-manager-job
IconBook data icnbk application/x-iconbook
? wb application/x-inpview
Installable software in 'inst' format inst application/x-install
Mail folder mail application/x-mailfolder
? pp ppages application/x-ppages
Data for printer (via lpr) sgi-lpr application/x-sgi-lpr
Software in 'tardist' format tardist application/x-tardist
Software in compressed 'tardist' format ztardist application/x-ztardist
WingZ spreadsheet wkz application/x-wingz
Open Inventor 3-D scenes iv graphics/x-inventor
31 de agosto

[转]养宠物宝典

养QQ宠物很久了,上一个宠物生病了,没元宝买药了 ,坚决不花RMB
 
重新领养了一个,这次要好好照顾
 
原文比较多,就没全部转过来,而且是比较早的时候的文章了,不知道还适不适用
--------------------------------------------------------------
 
QQ宠物食物用品优惠采购指南
经过分析 平均点数是这样算的:

   清洁 360点 = 10元宝
   饥饿 360点 = 10元宝

   智慧 2 点 = 5 元宝
   武力 2 点 = 5 元宝
   魅力 2 点 = 5 元宝

现在官方已经发卖的
   食品分   -保健-  -冷饮-  -零食-  -面食-  -海鲜-  5大类.
   日用品分 -电器-  -清洁-  -护肤-  -香水-  -护发-  5大类.

其中按以上规定 平均点数 发卖的物品 无优惠可言,一次性高价格的物品:比如恢复量在900或以上的几种
食品类 中的物品 元宝少的玩家特别注意下:

冷饮类:   香瓜果冻         60 元宝        1080 饥饿      15 魅力
零食类:  甜心巧克力       50 元宝          900 饥饿      12 魅力
面食类:  鱼形曲奇饼       60 元宝        1080 饥饿      15 武力
海鲜类:  新鲜红衫鱼       50 元宝          900 饥饿      12 武力
        深海金枪鱼       50 元宝          900 饥饿      12 武力
        大对虾           50 元宝          900 饥饿      12 武力

这里我把它们分为  -恢复900型-  和  -恢复1080型-

按照 规定平均点数计算:

-恢复900型-  12点魅力(或 武力)=30元宝    恢复720饥饿=20元宝     结论: 差价赠送 恢复180饥饿=5元宝
-恢复1080型- 恢复1080饥饿=30元宝  12点魅力(或 武力)=30元宝     结论: 差价赠送  3个属性点=7.5元宝

适用: -恢复900型-  想花少些钱做正事 养宠物的朋友
      -恢复1080型- 想强化宠物属性 或争夺官方活动属性排行榜的朋友

提示:毕竟宠物是叫我们开心玩的,什么都吃吃试试,可能会有不同的动作表情哦~!


饥饿值(受心情值的影响):
①心情值 非常好       每分钟消耗 2 个点
②心情值 一般         每分钟消耗 4.5 个点
省钱心得:购买   保健类 钙片          40元宝+720点 智慧8
安姆巧克力       40元宝+720点 魅力8

清洁值:
①不打工     每分钟消耗 2 个点
②打工时     每分钟消耗 3 个点

省钱心得:购买   清洁类香皂        20元宝+720

健康值:
①饥饿不能超过 1800 点
②清洁不能低于 1080 点
 
-----------------------------------------------------------------
 
QQ宠物包治百病小秘方

你的生病了吗?看病可要花50个元宝的哦,看看小秘方,自己开药吧。

      我的鼻子好象又塞啦!----------------------------感冒——板蓝根

  阿- -嚏!这是我今天的第一百零一个喷嚏!--------重感冒——银翘丸

  我今天好像吐哦!--------------------------------胃炎——蓝色消炎药水

  救命啊,主人!我胸口发疼,呼吸困难,难受死啦!--肺炎——金色消炎药水

  我不想死啊,呜呜呜呜呜……----------------------胃癌——仙人汤

  狠心的主人,你一直不理我,我就要窒息而死了!----垂危——通风散

  发烧——退烧药

  我的肚子胀胀的,好难受哦!---------------------肚子胀——消食片

  我的胃好疼,好心的主人,到我去看病吧!---------胃溃疡——龙胆草

  主人,我……我呼吸好困难……--------------------哮喘——定喘丸

  主人,我已经咳好久了,你怎么还不管我啊--------支气管炎——甘草剂

  咳咳!咳咳咳!----------------------------------咳嗽——枇杷糖浆

  死亡——回魂丹
 
----------------------------------------------------------------------------------
 
 
宠物打工完全攻列
10级:
厨师   10级 +28金钱   +4智慧值/小时 街道管理员 10级 +28金钱   +4智慧值/小时

15级:
电影演员 15级 +30金钱   +6魅力值/小时
相声演员 15级 +30金钱   +6魅力值/小时
小品演员 15级 +30金钱   +6魅力值/小时
歌手 15级 +30金钱   +6魅力值/小时
摄影师   15级 +30金钱   +6智慧值/小时
新闻记者 15级 +30金钱   +6智慧值/小时
撰稿人   15级 +30金钱   +6智慧值/小时
漫画家   15级 +30金钱   +6智慧值/小时
警察     15级 +30金钱   +6智慧值/小时

20级:
舞蹈家    20级 +32金钱   +8魅力值/小时
杂技师    20级 +32金钱   +8魅力值/小时
指挥家    20级 +32金钱   +8魅力值/小时
律师      20级 +32金钱   +8智慧值/小时
建筑工程师   20级 +32金钱   +8智慧值/小时

25级:
电视台台长   25级 +34金钱   +10魅力值/小时
主编      25级 +34金钱   +10智慧值/小时
警长      25级 +34金钱   +10智慧值/小时

30级:
法官      30级 +36金钱   +12智慧值/小时
 
------------------------------------------------------------
 
QQ宠物升级成长值表
级数  成长值   每级所需成长值 增加值
01   1  +2        +1
02   3  +3        +2
03   6  +5        +2
04   11  +7        +3
05   18   +10        +4
06   28   +14        +3
07   42   +17        +4
08   59   +21        +5
09   80   +26        +5
10   106   +31        +6
11   137   +37        +6
12   174   +43        +7
13   217   +50        +8
14   267   +58        +7
15   325   +65        +8
16   390   +73        +9
17   463   +82        +9
18   545   +91         +10
19   636    +101         +10
20   737    +111         +11
21   848    +122         +12
22   970    +134         +11
23   1104    +145         +12
24   1249    +157         +13
25   1406    +170         +13
26   1576    +183         +14
27   1759    +197         +14
28   1956    +211         +15
29   2167    +226         +16
30   2393    +242         +15
31   2635    +257         +16
32   2892    +273         +17
33   3165    +290         +17
34   3455    +307         +18
35   3762    +325         +18
36   4087    +343         +19
37   4430    +362         +20
38   4792    +382         +19
39   5174        +401
40     5575
 
-------------------------------------------------------------------------------------
 
宝宝旅游问题汇总[12日更新]


1,  宠物活跃度是什么?宠物活跃度有什么用?如何增加活跃度?
答:“活跃度”是Q宠旅游版本新推出的一个宠物属性值,直观上它表明Q宠出去旅游的活跃程度,
而实际上,它不仅跟旅游时间的长短有关,而且跟Q宠的等级直接相关。越高级的宠物,旅游的时
间越长,活跃度就越高!从另外一个角度,活跃度是Q宠在线活跃性与旅游活跃性的综合表现!

“活跃度”Q宠旅游时代的综合魅力体现,“活跃度”的高低决定了Q宠宝贝是否能够乘坐更高级、
更炫酷的旅游交通工具!而交通工具又直接体现了Q宠旅游时代时尚品味的高低!如果你希望你的
Q宠宝贝乘坐更炫更酷的交通工具去你的好友家里拜访,如果你希望你的Q宠宝贝在旅游过程中更加
拉凤,那么就一定要努力增加“活跃度”!炫酷的旅游,让Q宠世界一切皆有可能!想想在旅游过
程中一个帅气/美丽的异性Q宠被你的Q宠以最炫酷的姿态深深的吸引……美丽的邂逅,体面的外出
排场,炫酷的旅游新生活,一切源自于“活跃度”!

“活跃度”是Q宠旅游的综合体现,除了跟等级与旅游时间长短有关之外,还有其他增加活跃的途径,
譬如幸运旅游事件的发生也可以让你的Q宠宝贝获得活跃度的奖励!  

2,  我的宠物为什么无法进行旅游?
答:宠物处于打工、学习、社区游戏状态,宠物未处于不良状态——旅游发起宠物处于饥饿、肮脏、
生病、死亡状态,被访问宠物处于死亡状态都不能使用。另外如果有宠物来你家做客,楼主的宠物
也是无法外出旅游的
 

3,宠物旅游的三种形式有什么不同的?
答:随便逛逛——在旅游的开始, 宠物进入为旅游滞留时间提供的公共场所。
逛好友圈——是从玩家的最近联系且宠物在线好友圈中选择(必须上线,隐身看不见好友名字,每次旅游最多三个)
拜访好友——系统生成最近联系且宠物在线好友列表,访问对象由来访玩家从列表中选择的单个好友访问的线路
 

4,  我家宝宝都拣了10YB是不是真?
答:当然是真的,每次旅游前先检察下帐户再去哦,看你的运气了。


5, 旅游时特殊事件会不会另外增加活跃度
答:是有可能,但是不是绝对


6,宝宝出去旅游了半天不回来的原因,有时间限制吗?
答:旅游时间是随机的,因为宝宝中途捡到元宝、带MM,GG回家就会中断旅游


7,“活跃度综合排名"是什么意思?
答:旅游之星大比拼活动
活动时间: 2006年11月8日起
活动内容:
   只要您的Q宠宝贝在活动时间内,活跃度综合排名在前100名之内,更可获得3000个元宝的奖励。排名前十的玩家还可获得珍藏版QQ宠物靠枕一个!礼品多多!大家一起加油吧~!您的Q宠宝贝今天旅游了吗?
活动规则:
 每位用户可到宠物社区俱乐部,查看最新活跃度个人排名情况。
 活跃度综合排名在前 100 名之内,将被评为“旅游之星”,可获得 3000 个元宝的奖励,排名前十的玩家还可获得珍藏版 QQ 宠物靠枕一个!
 获奖名单将于2006年12月7日公布,奖励将于2006年12月20日前送出,届时请留意QQ宠物官方网站。

8,一台电脑两个QC能够互相拜访吗?
答:一台电脑可以多只宝宝互相出去进来拜访,也可以自己挂的宝宝多只互访
 
---------------------------------------------------------------------------------------
29 de agosto

[转]有效创建oracle dblink 的两种方式

 
两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用dblink。

其实dblink和数据库中的view差不多,建dblink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码。

创建可以采用两种方式: 

1、已经配置本地服务

以下是引用片段:
  create public database
  link fwq12 connect to fzept
  identified by neu using 'fjept'

CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;

2、未配置本地服务

 

以下是引用片段:
create database link linkfwq
   connect to fzept identified by neu
   using '(DESCRIPTION =
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))
   )
   (CONNECT_DATA =
   (SERVICE_NAME = fjept)
   )
   )';

host=数据库的ip地址,service_name=数据库的ssid。

其实两种方法配置dblink是差不多的,我个人感觉还是第二种方法比较好,这样不受本地服务的影响。

数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.

数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样

数据库全局名称可以用以下命令查出

SELECT * FROM GLOBAL_NAME;

查询远端数据库里的表

SELECT …… FROM 表名@数据库链接名;

查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。

附带说下同义词创建:

CREATE SYNONYM同义词名FOR 表名;

CREATE SYNONYM同义词名FOR 表名@数据库链接名;

删除dblink:DROP PUBLIC DATABASE LINK linkfwq。

如果创建全局dblink,必须使用systm或sys用户,在database前加public。

参考资料:

http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14231/ds_admin.htm#i1008271

28 de agosto

[转]oracle 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*FormsPro*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只在删除全表适用,TRUNCATEDDL不是DML)
(10) 尽量多使用COMMIT
只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:
COMMIT
所释放的资源:
a.
回滚段上用于恢复数据的信息.
b.
被程序语句获得的锁
c. redo log buffer
中的空间
d. ORACLE
为管理上述3种资源中的内部花费
(11) Where子句替换HAVING子句:
避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销. (oracle)onwherehaving这三个都可以加条件的子句中,on是最先执行,where次之,having最后,因为on是先把不符合条件的记录过滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快的,where也应该比having快点的,因为它过滤数据后才进行sum,在两个表联接时才用on的,所以在一个表的时候,就剩下wherehaving比较了。在这单表查询统计的情况下,如果要过滤的条件没有涉及到要计算字段,那它们的结果是一样的,只是where可以使用rushmore技术,而having就不能,在速度上后者要慢如果要涉及到计算的字段,就表示在没计算之前,这个字段的值是不确定的,根据上篇写的工作流程,where的作用时间是在计算之前就完成的,而having就是在计算后才起作用的,所以在这种情况下,两者的结果会不同。在多表联接查询时,onwhere更早起作用。系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由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替代INNOT 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)的唯一性验证.。那些LONGLONG 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
高效
SELECTFROM LOCATION WHERE LOC_IN  IN (10,20,30);
(26) 避免在索引列上使用IS NULLIS NOT NULL
避免在索引中使用任何可以为空的列,ORACLE将无法使用该索引.对于单列索引,如果列包含空值,索引中将不存在此记录. 对于复合索引,如果每个列都为空,索引中同样不存在此记录. 如果至少有一个列不为空,则记录存在于索引中.举例: 如果唯一性索引建立在表的A列和B列上, 并且表中存在一条记录的A,B值为(123,null) , ORACLE将不接受下一条具有相同A,B值(123,null)的记录(插入). 然而如果所有的索引列都为空,ORACLE将认为整个键值为空而空不等于空. 因此你可以插入1000 条具有相同键值的记录,当然它们都是空! 因为空值不存在于索引列中,所以WHERE子句中对索引列进行空值比较将使ORACLE停用该索引.
低效: (索引失效)
SELECTFROM  DEPARTMENT  WHERE  DEPT_CODE IS NOT NULL;
高效: (索引有效)
SELECTFROM  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 BYSQL语句会启动SQL引擎
执行耗费资源的排序(SORT)功能. DISTINCT需要一次排序操作, 而其他的至少需要执行两次排序. 通常, 带有UNION, MINUS , INTERSECTSQL语句都可以用其他方式重写. 如果你的数据库的SORT_AREA_SIZE调配得好, 使用UNION , MINUS, INTERSECT也是可以考虑的, 毕竟它们的可读性很强
(34) 优化GROUP BY:
提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉.下面两个查询返回相同结果但第二个明显就快了许多.
低效:
SELECT JOB , AVG(SAL)
FROM EMP
GROUP JOB
HAVING JOB = ‘PRESIDENT'
OR JOB = ‘MANAGER'
高效:
SELECT JOB , AVG(SAL)
FROM EMP
WHERE JOB = ‘PRESIDENT'
OR JOB = ‘MANAGER'
GROUP JOB
 
01 de agosto

java添加与删除cookie

添加
  Cookie myCookie= new Cookie("mycookie", "hello");
  mycookie.setMaxAge(cookieTimeLength);//设置cookie的生存时间
  mycookie.setPath("/");
  response.addCookie(nameCookie);
 
删除
  Cookie delMyCookie= new Cookie("mycookie",null);
  delMyCookie.setMaxAge(0);
  delMyCookie.setPath("/");
  response.addCookie(delMyCookie);
 
==============================
有时cookie删除未成功的原因 是增加cookie是没有调用setPath()方法
或者增加和删除的setPath()不一致
 
28 de julho

最近变化真大

最近变化很大,倒不是自己变了,而是周围的环境变了
 
昨天组长离职了,现在看一眼公司的人,同我刚来的时候变化真大
 
心里突然有种伤感,组长的离开更让我感觉少了依靠
 
剩下的工作虽然不多,但由于组内只剩两个人了,工作量还是不小
 
感觉自己的性格就是那样,一件事在做之前,总是感觉没有十分的把握
 
不过会投入十二分的精力去努力做
 
--------------------------------------
 
昨天指导老师说要开始准备毕设的文献综述和开题报告了
 
接下来的一年应该是没有轻松的日子过了
 
最后的论文真希望自己能有点突破或者创新
 
可是现在自己还没有底,不知道该从哪个方面突破
 
不过应该在看完20篇文献之后,应该能有所领悟吧
21 de julho

[转]页面字符串超过宽度自动换行

在td 中 加入 style="word-wrap: break-word; word-break: break-all;" ,在IE下好用,据说在FF下没用
21 de junho

[转]在struts中,关于DispatchAction的validation问题

    在用struts框架开发的Web应用中,一般是一个业务操作(Action)对应一个ActionForm,但对于同一个ActionForm一般有CURD(添加,修改,删除,查询)四种操作,这意味着在通常情况下一个ActionForm可能会对应着四个Action,这样在一个系统中Action的数量很大,为了减少Action的个数,Struts引入了DispatchAction,对同一类业务的操作(CURD)只用了一个继承于DispatchAction的Action。
   但在配置文件中mapping,validate属性配置了对ActionForm是否进行验证。而在一个DispatchAction中有些操作(添加,修改)需要validate,删除和查询不需要验证。
   有两种方法解决:
   1.(我以前用的方法)把配置文件中的validate属性设为false,表示不对ActionForm进行验证(当然在validation.xml文件还是要配置该form),对需要进行验证的操作如添加,修改,则在其action方法中的显示调用validate方法进行验证。
   public ActionForward add(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
          HttpServletResponse response) 
{
        
        DynaValidatorForm adminForm 
= (DynaValidatorForm) form;
        
//显示进行验证
        ActionErrors errors=adminForm.validate(mapping,request);
        
if(!errors.isEmpty()){
           
//不符合验证规则
            this.saveErrors(request,errors);
            
return mapping.getInputForward();
        }

        
//验证通过,其它的操作
        
         return mapping.findForward("success");
    }
      2.把配置文件中的validate属性设为true,表示对ActionForm进行验证,然后修改ActionForm里的validate方法(这种方法不适合于动态ActionForm,因其没有validate方法)

    public ActionErrors validate(
            ActionMapping mapping,
            HttpServletRequest request) 
{
        
            String param 
=request.getParameter("method");
            
//若是添加或者修改操作,则进行验证    
            if(param.equals("add")||param.equals("update"))
                
return super.validate(mapping,request);
            
else
                
return null;//否则不验证
    }

   总结:两种方法均能达到目的,但一种方法对要验证的操作需要分别在其Action方法开始前显式进行验证,相比第二种方法,代码较多,而第二种方法较为简洁,但不能用于动态ActionForm中。