Perfil de 毅夜巷FotosBlogListasMais ![]() | Ajuda |
|
31 de agosto 好充实的8月啊整个8月份忙得不行了
让我有点回到络神的感觉了 虽然比去年十月份在络神的时候要好一点 不过也快差不多了 为啥我总是会碰上时间很紧的项目? 不过也许是所有的项目时间都会很紧 也许这就是程序员的宿命 T_T 令我欣慰的是
虽然只是个内部使用的小项目 但还是学到了很多东西 而且和可爱的同事们相处的也很好 以前做的项目是规模大,但业务逻辑相对简单 这个项目是规模小,业务逻辑相对复杂一点 现在的这个架构让我有耳目一新的感觉 使自己终于没有再局限于以前的那套架构当中 心里挺满足 而且敲代码的感觉还是那么的好 ^_^ 新人能得到这样的磨炼真不错 唉,不过现在压力越来越大
时间太紧,而且之后还要接别人的活 有的任务感觉加班加点也不一定能按时做完 有点郁闷 不管怎样,只能硬着头皮,尽力去做了 >_< ==========================================
今天终于又发现了自己爱看的TVB剧——《搜神传》
感觉挺好,让我周末好好地放松了一回 哈哈,我从小就爱看TVB的古装剧 周末又要结束了
可怕的下周终于还是要来临 给自己打打气,加油~ 02 de agosto 培训归来,减肥目标未实现这周公司组织了一次新员工的入职培训
地点是在怀柔的民政培训基地 包括两天的拓展培训和三天的业务培训 周一在前往培训基地的路上,我定下了自己培训的目标——减肥
想借着毕业前后共减去10斤体重的势头,再接再励 到达基地之后,所有参加培训的新员工被分成五个小队
我被分到了五队——悟空队,一共五位大帅哥、一位特大帅哥(当然,就是本人我)和六位大美女 拓展训练的第一个项目是给我印象最深的项目
也是我最害怕的一个项目——高空断桥 (咦~~~每次提到这个名字我的心里就会一颤) 我是第二个上去的,爬到8米高的桥的头时
双腿忍不住在剧烈颤抖 不过这时候大脑里面很空,就想着要跨过断桥 做了几次深呼吸之后,感觉已经稳定了不少 虽然双腿还是在抖 稳定之后也没多想,左脚稍一用力 凭借着自己超强的爆发力,右脚一迈就过去了(呱唧呱唧) 上午整个队都完成断桥项目之后,终于到了令人期待的午餐时间
当我走进餐厅,看到一排的好菜之后 对自己达到培训目标的信心顿时降为0 (唉,怎能为了减肥而放弃眼前如此美味的佳肴呢?) 两天的拓展训练还有背摔、天梯等等,都挺有意思
更重要的是让整个队的人都互相熟悉了 哈哈,为之后一块儿玩杀人游戏打下了基础 周三晚上的晚会真是很经典,尤其是男女反串表演的音乐剧——白蛇传
笑得快趴下了,可惜我用文字表达不出来。 晚会上,我们队是合唱《北京欢迎你》,中间插了一小段搞笑画面 就是本人演了一小段孙悟空 如果不出意外,这应该是有史以来最肥的孙悟空吧 最后一个晚上玩得挺high,被队长叫去吃西瓜
顺便玩杀人游戏,本人在连续五、六次当平民之后 终于第一次当上了警察,但是,却被匪在第一轮给闷死了,真是命苦啊 不过还好第二次当警察时成功地干掉了匪 周五是培训的最后一天,因为下午就要回去了
所以中午我吃了好多,应该是把除了鱼之外的所有荤菜都尝了一下 唉,其实心里还真有点不舍得回来,在培训基地的日子真是太好了
可惜现实是残酷的,下周一还是得开始正常上班了 这五天过得真是很嗨皮,觉得同事个个都很好,而且很有意思
尤其觉得孙姐对我们太好了,还有潘哥,也很搞笑^_^ ================================================================
现在很晚了,不过感觉很好,同学都睡了,周围是黑的,很安静
这时候听歌最享受了 一不小心写了这么多字,估计除了我自己没人会看完吧 对了,差点忘了呼应一下日志的主题了 回来之后,做的第一件事就是拿出体重秤,发现自己和培训之前的体重一样 15 de julho 上班第一天终于正式到新公司上班了 今天只安排位置,还没安排电脑 看了一天的PL/SQL,补补自己的不足 感觉还不错 就是坐得太久屁股有点疼
一个全新的工作环境 充满了期待 有时会让我回想起在络神上班的日子 说起来我也是有一年多工作经验的人了,哈哈
在新的环境一切都要重新开始 熟悉环境,熟悉业务,熟悉同事 提醒自己:不要着急,不要着急 ^_^ 22 de abril 周末大放松(一)快毕业了,学生时代就要真正过去了 哈哈,不想明天不想以后,今朝有酒今朝醉 周六去了动物园 动物园中人比动物多多了,不过杨絮更多 白狐也很美,哈哈,让我联想到了诛仙里的九尾天狐小白 动物园中最让我失望的就是狮虎山了 虽然没有买熊猫馆的票,但还是看到了国宝 鹰山挺不错的,哈哈 两栖爬行馆的动物比较恶心 小插曲: 怪异的动物并没有影响我们的食欲 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) 我在CERNET做过拨号接入平台的搭建,而后在Yahoo&3721从事过搜索引擎前端开发,又在MOP处理过大型社区猫扑大杂烩的架构升级等工作,同时自己接触和开发过不少大中型网站的模块,因此在大型网站应对高负载和并发的解决方案上有一些积累和经验,可以和大家一起探讨一下。
大型网站,比如门户网站。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。 上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,下面我从低成本、高性能和高扩张性的角度来说说我的一些经验。 1、HTML静态化 除了门户和信息发布类型的网站,对于交互性要求很高的社区类型网站来说,尽可能的静态化也是提高性能的必要手段,将社区内的帖子、文章进行实时的静态化,有更新的时候再重新静态化也是大量使用的策略,像Mop的大杂烩就是使用了这样的策略,网易社区等也是如此。目前很多博客也都实现了静态化,我使用的这个Blog程序WordPress还没有静态化,所以如果面对高负载访问,www.toplee.com一定不能承受 同时,html静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可以考虑使用html静态化来实现,比如论坛中论坛的公用设置信息,这些信息目前的主流论坛都可以进行后台管理并且存储再数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考虑将这部分内容进行后台更新的时候进行静态化,这样避免了大量的数据库访问请求。 在进行html静态化的时候可以使用一种折中的方法,就是前端使用动态实现,在一定的策略下进行定时静态化和定时判断调用,这个能实现很多灵活性的操作,我开发的台球网站故人居(www.8zone.cn)就是使用了这样的方法,我通过设定一些html静态化的时间间隔来对动态网站内容进行缓存,达到分担大部分的压力到静态页面上,可以应用于中小型网站的架构上。故人居网站的地址:http://www.8zone.cn,顺便提一下,有喜欢台球的朋友多多支持我这个免费网站:) 2、图片服务器分离 在应用服务器和图片服务器上,可以进行不同的配置优化,比如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、镜像 6、负载均衡 负载均衡技术发展了多年,有很多专业的服务提供商和产品可以选择,我个人接触过一些解决方法,其中有两个架构可以给大家做参考。另外有关初级的负载均衡DNS轮循和较专业的CDN架构就不多说了。 6.1 硬件四层交换 在硬件四层交换产品领域,有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂贵,但是物有所值,能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了。 6.2 软件四层交换 软件四层交换我们可以使用Linux上常用的LVS来解决,LVS就是Linux Virtual Server,他提供了基于心跳线heartbeat的实时灾难应对解决方案,提高系统的鲁棒性,同时可供了灵活的虚拟VIP配置和管理功能,可以同时满足多种应用需求,这对于分布式的系统来说必不可少。 一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性,随时往架构里面增减节点都非常容易。这样的架构我准备空了专门详细整理一下和大家探讨。 总结: 转载请保留出处:俊麟 Michael’s blog (http://www.toplee.com/blog/?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 文件类型表
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 DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’; 2、未配置本地服务
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*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 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中。 |
|
|