<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>杂物间</title>
	<atom:link href="http://rovertang.com/fav/feed" rel="self" type="application/rss+xml" />
	<link>http://rovertang.com/fav</link>
	<description>藏一些网络好东东</description>
	<lastBuildDate>Sat, 18 Feb 2012 01:30:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>常用英文单词</title>
		<link>http://rovertang.com/fav/archives/52</link>
		<comments>http://rovertang.com/fav/archives/52#comments</comments>
		<pubDate>Sat, 18 Feb 2012 01:30:01 +0000</pubDate>
		<dc:creator>Rover</dc:creator>
				<category><![CDATA[生活&情感]]></category>
		<category><![CDATA[英文单词]]></category>

		<guid isPermaLink="false">http://rovertang.com/fav/?p=52</guid>
		<description><![CDATA[<pre>阿拉伯半岛 Arabia
阿什兰 Ashland
啊 ah
啊哈 aha
癌症 cancer
爱 love
安静的 silent
安静地 silently
安全  safety
安全的 safe
安装;修理 fix
按钮;纽扣 button
按顺序 in order
按照,如同,当…,因为 as
昂贵的 expensive
嗷,哎哟 ouch
奥林匹克的 Olympic
澳大利亚 Australia
澳大利亚人 Aussie
澳大利亚人 Australian
澳门 Macao
八 eight
八月 August
巴黎 Paris
巴西 Brazil
爸爸 dad
白菜 cabbage
白金汉宫 Puckingham Palace
白色的 white
白天 daytime
百 hundred
百货商店 department
百万 million
柏林 Berlin
班级,年级;同班同学 class
办公室 office
邦戴 Bondy
帮助 help
傍晚;晚上 evening
棒球,垒球 baseball
磅;镑 pound
保持;使得… keep
保护 protect
报告;报导 report
报纸 newspaper
抱怨 complain
杯子 cup
悲伤的;难过的 sad
北方;北部 north
北方的;北部的 northern
贝加尔湖 Paikal Lake
贝类;甲克虫 shellfish
背包 backpack
背诵 learn …by heart
本质的;主要的 essential
绷带 bandage
鼻子 nose
比…;比较… than
比较 compare
比较 comparison
比较级的 comparative
比利时 Belgium
比例,比率 rate
比萨饼 pizza
比赛 match
比赛,竞赛 competition
比赛者;选手 player
必须 must
必须的 necessary
毕业 graduate
壁炉 fireplace
避免 avoid
避暑胜地 summer resort
边 side
边;边缘 edge
边缘 rim
鞭炮 firecrackers
便帽;军帽 cap
便士 penny (pence)
便条;纸币 note
便宜的 cheap
变成;成为 become
变换,改变 change
遍及 throughout
标点符号 puntuation
标记;符号;痕迹 sign
标签 label
表达 expression
表格;构成,组成 form
表演;成绩 performance
别的,其他的;另外的人 other
别的;其他的 else
冰 ice
冰雕 ice carving
冰激凌 ice cream
冰山 iceberg
并排 side by side
病假 sick leave
病人 patient
拨(电话) dial
波士顿 Boston
玻璃(杯) glass
脖子 neck
博物馆 museum
不 not
不,不是;没有 no
不安的 restless
不安的 uneasy
不按次序排队的人 jumper
不出名的 unknown
不好不坏的,马马虎虎的 so-so
不见的 missing
不健康的 unhealthy
不久；很快 soon
不可能的 impossible
不平常的 unusual
不同;差异 difference
不同的 different
不喜欢,厌恶 dislike
不走运的;不幸的 unlucky
布 cloth
布鲁塞尔 Brussels
部分 part
擦;磨 rub
猜 guess
猜想 suppose
裁缝 tailor
裁判，法官 judge
菜单 menu
参加 join
餐厅 dining-room
操场 playground
操作;动手术 operate
嘈杂的 noisy
嘈杂声,响声 noise
草;草地 grass
厕所 toilet
叉子 fork
茶;茶叶 tea
茶壶 teapot
察觉;领悟;了解 realize
长的 long
长筒袜 stocking
尝味;有...味道 taste
畅销货(书) best-seller
唱唱歌 sing
唱诵 chant
抄写,誊写;复制 copy
超过…,经过…;过去(的) past
超级市场 supermarket
朝着…;向… towards
潮湿的 moist
潮湿的 wet
车站 station
陈列,展览 display
陈述 statement
称…的重量 weigh 
成就;成功 success
成立;建立 found
成年人 adult
成员 member
城堡 castle
城市 city
城镇 town
乘…,通过… by
乘独木舟 canoe
乘客 passenger
乘以 multiply
吃 eat
池塘;水坑 pool
迟的 late
尺寸 size
尺子 ruler
冲;奔跑 rush
冲浪 surf
冲浪运动 surfing
冲浪者 surfer
虫;蠕虫 worm
宠物 pet
出口 exit
出去,在外面 out
出生(bear的过去分词) born
出声地, aloud
出现;露面 appear
出租车 taxi
除…之外 except
除非…;如果…不… unless
厨房 kitchen
穿着 wear
传播 spread
传单 leaflet
传递;通过 pass
传统的 traditional
传真 fax
窗子 window
床 bed
吹,刮 blow
春天 spring
磁带 tape
此后;自…以来;由于…;既然… since
此刻,瞬间 moment
从… from
从来不;决不 never
匆忙 hurry
聪明的;机灵的 clever
粗鲁的;激烈的;粗糙的 rough
粗体 bold type
粗心的 careless
粗心地 carelessly
村庄 village
错误 mistake
错误的 wrong
答复;回复 reply
打;撞;击中 hit
打包 pack
打电话,叫喊;电话通话 call
打开;开放的 open
打破(过去式) broke
打破,折断;课间休息 break
打扫;干净的, clean
打印机 printer
打字 type
大道,大街 avenue
大的 big
大的  large
大量地；猛烈地 heavily
大陆;本土 mainland
大门 gate
大米,米饭;水稻 rice
大声的;响亮的 loud
大声地;高声地 loudly
大厅 hall
大象 elephant
大笑;笑声 laugh
大写的 capital
大学生运动会 UNIVERSIADE
大众的;流行的 popular
代词 pronoun
代替 instead
带来;拿来 bring
单程的 one-way
单一的 single
担心，使…担心 worry
担心的,烦恼的 worried
但是;除了 but
蛋糕,,饼 cake
当然 certainly
岛屿 island
倒,灌;倾泻 pour
倒空,清空 empty
倒塌 collapse
倒下 fall
到…;往…;(不定式符号,无词义) to
到…里 into
到…上 onto
到处 everywhere
到达;抵达 arrive
到达;够着 reach
道路;公路 road
得到;到达 get
得分;获胜 score
德国 Germany
德国人 German(s)
的确;确信的  sure
灯笼 lantern
登记处 check-in
等候 wait
等候室 waiting room
低的 low
敌人 enemy
底部 bottom
地板 floor
地方 place
地理(学) geography
地面 ground
地球,地球仪 globe
地图 map
地下的 underground
地震 earthquake
地址 address
第……号 No. =number
第八 eighth
第二 second
第二十 twentieth
第二十一 twenty-first
第九 ninth
第三 third
第十八 eighteenth
第十二 twelfth
第四 fourth
第五 fifth
第一,首先;最初 first
电报 telegraph
电冰箱 fridge
电池 battery
电话;打电话 phone(=telephone)
电话;打电话给… telephone
电话传呼机 beeper
电脑,计算机 computer
电视机 TV
电梯;(云雾)消散 lift
电影 film
电影 movie
电影院;电影 cinema
电子的 electronic
电子邮件 e-mail
雕刻 carve
钓鱼 fishing
调查 survey
调羹;汤匙;勺子 spoon
调制解调器 modem
掉下,落下;滴,水滴 drop
顶部 top
定货单,点菜;订购, order
丢失 lose
丢失的 lost
东北;东北部 northeast
东方(的) east
东京 Tokyo
东西;事情 thing
冬天 winter
动物 animal
动物园 zoo
洞;坑 hole
都;全部;所有的 all
陡峭的,险峻的 steep
豆腐 tofu
独特的 unique
独自地 alone
妒忌的 jealous
短的 short
短袜 sock
短语 phrase
段落 passage
堆 pile
队;组 team
队长(足球队);船长,上尉 captain
对不起的 sorry
对的;右边的;正好;恰好 right
对话 dialogue
多伦多 Toronto
多么;怎么样 how
多雪的;降雪的 snowy
多雨的;下雨的 rainy
多云的 cloudy
躲藏 hide
俄国;俄罗斯 Russia
俄国的;俄语;俄国人 Russian
呃,啊 er
儿子 son
耳朵 ear
二 two
二手的 secondhand
二月 February
发动 launch
发动机 engine
发光;照耀 shine
发明 invent
发明 invention
发明家 inventor
发生 happen
发送;寄;派遣 send
发现:找到 find
发现;发觉 discover
发型 hair style
发芽 sprout
发音 pronounce
发展 develop
乏味的 dull
法国 France
法国的;法语 French
法国人 Frenchman
翻译 translate
饭馆 restaurant
防止 prevent
妨碍;打扰 disturb
房顶 roof
房间;空间 room
房子 house
访问 visit
访问者 visitor
放 put
放松 relax
飞;乘飞机去;放(风筝) fly
飞机 aeroplane
飞机 plane
飞机场 airport
非常 very
非洲 Africa
肥胖的 fat
肥皂 soap
废物;浪费;废弃的 waste
肺结核 TB
分角色表演 role play
分类 classify
分享 share
分钟 minute
坟墓 tomb
粉红色 pink
风 wind
风筝 kite
疯狂的 crazy
蜂蜜 honey
夫妻,一对 couple
夫人 Mrs.
服务生 waiter
符号,象征 symbol
父母 parent;  parents
父亲 father
付钱 pay
妇女 woman
妇女(pl.) women
复活节兔子 Easter Bunny
复述 retell
复数的 plural
复习 review
副词 adverb
覆盖 cover
改善 improve
改写 rewrite
改正;正确的; correct
干的;把…弄干 dry
干种子 berry
杆子 pole
敢于 dare
感恩节 Thanksgiving
感激的 grateful
感激的 thankful
感觉 feel
感谢 thank
感兴趣的 interested
刚;正好;仅仅 just
钢笔 pen
钢琴 piano
高的 tall
高的(地) high
高度 height
高尔夫球 golf
高兴;愉快 pleasure
高兴的 delighted
高兴的 glad
高兴的 pleased
高兴地,快乐地  happily
高音喇叭 loudspeaker
告诉;吩咐 tell
胳臂 arm
歌,歌曲;歌谣 song
歌唱者;歌手 singer
歌剧;戏剧 opera
个人的;私人的 personal
各个,每个 each
给 give
根据 according to
跟随 follow
更多的;更加 more
更好;较好的 better
更坏的;更差的 worse
更少的 less
更远的 farther
更早的;更早地 earlier
工厂 factory
工程 project
工程师 engineer
工具 tool
工人 worker
工作 job
工作 work
工作场所 workplace
公车停靠站 bus station
公车停靠站 bus stop
公共的;公众的 public
公鸡 rooster
公交车 bus
公斤;千克 kilo
公平的 fair
公司 company
公寓 flat
公园;停放(车辆) park
宫殿 palace
贡献 contribution
狗 dog
购买 buy
购物;买东西 shopping
孤独的 lonely
古代的 ancient
古典的,传统的 classical
谷仓 barn
鼓励 encourage
故事;(楼)层 story
雇员 employee
瓜 melon
拐弯处 turning
关闭 close
关闭 shut
关键的 critical
关门的 closed
关于…；大约 about
观点 opinion
冠军 champion
盥洗室;厕所 washroom
光;轻的,浅色的 light
广泛地;广阔地 widely
广告 ad(=advertisement)
规则;规定 rule
规则的，定时的 regular
轨道;跑道 track
轨道;铁路 rail
鬼 ghost
棍棒 stick
国际象棋 chess
国家的 national
果汁 juice
过程;经过;道路 course
哈佛大学 Harvard
海(河)滩 beach
海报,广告 poster
海豹 seal
海底的 undersea
海豚 dolphin
海峡,航道;频道 channel
海鲜;海产品 seafood
海洋 ocean
海洋 sea
害怕的 afraid
害怕的 scared
害羞的;腼腆的 shy
汉堡包 hamburger
旱灾,干旱 drought
航班;飞行 flight
豪华，庄重的 grand
好;健康的;好吧 well
好的 good
好的 OK
好的:(身体)好的 fine
好几个 several
好哇 hooray
好象;似乎 seem
好心的 kind-hearted
合理的,公道的 reasonable
合适的 suitable
合同 contract
合作;协同工作 teamwork
何时;当…时 when
和;又;而 and
和…;有…;关于… with
河岸,银行 bank
核桃 walnut
黑板 blackboard
黑的 black
嘿 hey
很,十分 quite
很棒的;好极了的 terrific
很可能;大概 probably
哼 hmn
横穿…,穿过… across
烘烤 bake
红的 red
洪水;淹没 flood
猴子 monkey
后来;以后 later
厚的;粗的 thick
呼喊;喊叫 shout
呼吸 breathe
狐狸 fox
胡椒 pepper
胡萝卜 carrot
壶 pot 
湖泊 lake
护士 nurse
护照 passport
花 flower
花费；度过 spend
花园;菜园 garden
华盛顿 Washington
滑冰;溜冰 skate
滑旱冰 roller-skating
滑稽的 funny
滑雪 ski
化石 fossil
化学 chemistry
化妆 costume
划船 boating
划分 divide
划水 paddle
画 draw
画家 painter
话题,主题 topic
怀基基 Waikiki
坏的 bad
欢呼 cheer
欢呼声 yippee
欢迎 welcome
还(没有) yet
环境 environment
患病的  sick
黄色的 yellow
黄油 butter
灰色的 grey
回,向后;背部 back
回答 answer
回来;归还 return
会话 conversation
会见,采访 interview
会见,遇见 meet
会议 meeting
昏暗的 dim
婚礼 wedding
混合 mix up
混合，混和 mix
活动 activity
活动的;动人的 moving
活着的 alive
火 fire
火车;训练,培养 train
火鸡 turkey
火箭 rocket
火奴鲁鲁 Honolulu
伙伴,搭档 partner
或者；否则 or
货物 load
获胜者 winner
饥饿的 hungry
机会 chance
机器 machine
机器人 robot
机械的 mechanical
鸡,鸡肉 chicken
鸡蛋,蛋 egg
积极的 active
激光唱片 CD
吉普车 jeep
极地 polar region
疾病 disease
几乎 almost
几乎不 hardly
计划 plan
记得 remember
记号;标记;痕迹 mark
记录 record
记忆存贮器 memory
记者 journalist
技师 mechanic
技术;工艺学 technology
季节 season
继续 continue
加 plus
加利福尼亚号 Californian
加拿大 Canada
加拿大人 Canadian
夹克衫 jacket
佳能(相机名) Canon
家;在家,到家 home
家庭 family
家庭作业 homework
家务 housework
家乡 hometown
甲壳虫乐队 Beatles
价格 price
价钱为…,花费 cost
驾驶 drive
驾驶;掌舵 steer
架子;搁板 shelf
假如;如果 if
假设 imagine
假设 suppose
坚果,果仁 nut
肩膀 shoulder
监视器 monitor
捡起 pick
减去 minus
剪刀 scissors
检查 check
建议 suggest
建议，忠告 advice
建造 build
建筑(物) building
健康 health
健康的 healthy
健康地 healthily
键盘 keyboard
江河;河 river
将 shall
将,愿意 would
将;应该 should
将近;几乎 nearly
将来 future
将要 will
奖品;奖赏 prize
降水 rainfall
交通 traffic
礁岩 reef
角落;拐角 corner
绞死 hang
饺子 dumpling
脚 foot (feet)
脚步;走;踏,踩 step
脚趾 toe
搅动 stir
叫,鸣叫 crow
叫喊(动物声) yip
轿车,汽车 car
教;教书 teach
教练 coach
教师 teacher
教室 classroom
教堂;教会 church
教育 education
接力(赛) relay
接收;收到;得到 receive
街道 street
节假日 holiday
节目 programme
节日(的) festival
结冰;凝固 freeze
结果 result
结婚 marry
结尾,结局 ending
她 she
她(宾格) her
她的 hers
她自己 herself
姐;妹 sister
解决;解答 solve
介绍 introduce
介意,关心;小心,照顾 care
借 borrow
借(出) lend
今天 today
今晚 tonight
金属 metal
仅仅;只有 only
紧张不安的 nervous
尽管,虽然 although
尽管;虽然 though
近来 lately
进步;提高;前进 progress
进攻;袭击 attack
进入;回车键 enter
经常 often
经理 manager
经验 experience
惊奇,惊讶;对…感到怀疑 wonder
惊奇,惊讶;使…吃惊 surprise
精彩的 wonderful
精确地 exactly
精神 spirit
景色 scenery
警察 policeman
警察;警方 police
警告;提醒 warn
警官,监督员 inspector
竞争 compete
镜子 mirror
九 nine
九十 ninety
九月 September
酒,红酒 wine
救生船 lifeboat
居住;生活 live
橘子,桔子;橙色的 orange
沮丧的 frustrated
句子 sentence
巨大的 huge
拒绝 refuse
俱乐部 club
俱乐部;社团 club
剧场;戏院 theatre
聚会 get-together
聚会 party
聚酯化合物 polyester
卷笔刀 sharpener
决定 decide
决定 decision
攫取;抓取 grab
咔哒声;发出咔哒声 click
咖啡 coffee
卡车 truck
开端;开始 beginning
开花 bloom
开罗 Cairo
开始,着手;出发 start
开始:着手 begin
看;看起来 look
看待;当作 regard
看见;看望 see
看门人 gatekeeper
慷慨;豁达 generosity
考试 exam
考试 examination
科学 science
科学家 scientist
咳嗽 cough
可带走的（熟食） take-away
可口可乐 coke
可能的 possible
可怕的;感到不舒服的 terrible
可移动的 mobile
可以 may
可以…;行; could
课 lesson
课本 textbook
课桌 desk
空白处 blank
空的;清空,倒空 empty
空调机 air conditioner
空间;太空 space
空气 air
恐怖的 scary
恐怖主义者 terrorist
恐龙 dinosaur
口袋,衣袋 pocket
口对口的 mouth-to-mouth
口渴的 thirsty
哭;叫喊 cry
骷髅 skeleton
裤子 trousers
酷妹 foxy ladies
夸奖 praise
跨越,横跨;十字形 cross
快的;迅速的 quick
快的;迅速地 fast
快地;迅速地 quickly
快乐的;幸福的 happy
筷子 chopstick
宽的 wide
昆虫 insect
捆扎;系 tie
困难 difficulty
困难的 difficult
困难的;努力地;硬的 hard
括号 bracket
垃圾;废物 rubbish
垃圾;扔垃圾 litter
垃圾箱 dustbin
拉,拽,拖,拔 pull
蜡烛 candle
来 come
来回的;往返的(车票等) round-trip
栏目 column
蓝的 blue
篮球 basketball
篮子 basket
懒惰的 lazy
狼 wolf
浪;波浪 wave
老板 boss
老的 old
老虎 tiger
老鼠;鼠标 mouse
乐队 band
雷声 boon
累的 tired
冷的 cold
梨子 pear
离开 away
离开 off
离开;出发 leave
礼貌的 polite
礼貌地 politely
礼堂,演讲厅 auditorium
礼物 gift
礼物 present
里士满 Richmond
理解 understand
理由 reason
历史 history
历险，冒险 adventure
利物浦 Liverpool
例子;榜样 example
连接 connect
怜悯,同情;遗憾的事 pity
联盟 league
脸 face
练习 practice
练习 practise
练习;锻炼 exercise
凉爽的;(口语)酷 cool
两层 two-story
两次;两倍 twice
两者;(二者)都 both
两者都不;(两者)无一个 neither
了望塔 watchtower
邻居 neighbour
邻里;街坊 neighbourhood
铃响；打电话 ring
铃子 bell
零 zero
领导,带领 lead
令人兴奋的 exciting
令人厌烦的 boring
令人愉快的;好的,漂亮的 nice
另一，又一 another
溜溜球 yo-yo
流行歌手 pop singer
六 six
六月 June
笼子;鸟笼 cage
聋的 deaf
楼道,楼梯 stairway
陆地,大地;地球 earth
陆地;登陆,降落 land
录象 video
鹿 deer
路;方法 way
路线;去路 path
旅程 journey
旅馆 hotel
旅行 travel
旅行;绊倒,失误 trip
旅行者 traveller
旅游者;观光者 tourist
绿色的 green
伦敦 London
轮船 ship
轮流;翻转;变得 turn
轮子 wheel
罗马 Rome
妈妈 mum
妈咪 mummy
麻烦 trouble
马 horse
马卡哈 Makaha
埋葬 bury
卖;售 sell
满的 full
曼彻斯特 Manchester
慢的;慢慢地;放慢 slow
慢慢地 slowly
忙的 busy
猫 cat
毛笔 writing-brush
毛衣;运动衣 sweater
帽子 hat
没有人 nobody
没有什么东西 nothing
没有一个人;没有任何东西 none
每个 every
每个人;大家 everybody
每个人;大家 everyone
每件事 everything
美分 cent
美国 America
美国 USA
美国的,美国人 American
美丽的;漂亮的 beautiful
美利坚合众国 the United States
美味的 delicious
美元 dollar
门 door
门口的垫子 doormat
门铃 door-bell
猛敲;砰砰声 bang
迷、球迷、影迷 fan
谜语 riddle
米(长度单位) metre (meter)
秘密 secret
秘书 secretary
密码;符号;编码 code
蜜蜂 bee
绵羊 sheep
棉花 cotton
面包 bread
面粉 flour
面条 noodle
描述;描写 description
描述;叙述 describe
庙会 temple fairs
名字;姓名 name
明亮的 bright
明亮地 brightly
明天 tomorrow
明信片 postcard
模型;模范 model
摩托车 motorbike
魔法的 magical
魔鬼 thriller
末梢;结束 end
莫斯科 Moscow
墨尔本 Melbourne
墨西哥 Mexico
某人,有人 somebody
某人,有人 someone
某事(物) something
母鸡 hen
母亲 mother
木板 board
木头 wood
目的 purpose
目的地 destination
目击者 witness
牧羊人 shepherd
拿;握 hold
拿出;提供 offer
拿到;带到;花费,耗费 take
哪个;哪些 which
那个 that
那里;(引导词,无词义) there
那些 those
奶奶;婆婆 grandma
奶牛,母牛 cow
奶油;乳脂 cream
男衬衫 shirt
男孩 boy
男人 man 
男人们(man的复数) men
男生 schoolboy
南方;南部 south
南瓜 pumpkin
难过地;悲哀地 sadly
难闻的  smelly
闹钟 alarm clock
能;可以;会 can
能量 energy
嗯 um
尼泊尔 Nepal
尼龙 nylon
你(们)的 your
你(们)的 yours
你,你们(主格,宾格) you 
你好 hi
你们自己 yourselves
你自己 yourself
年 year
年级 grade
年龄 age
年轻的 young
鸟 bird
宁愿;更喜欢 prefer
牛奶 milk 
牛肉 beef
纽基 Newquay
农场 farm
农民 farmer
农田 farmland
农业;耕种 farming
努力;尝试;射门 shot
女衬衫 blouse
女儿 daughter
女服;(统指)衣服 dress
女孩 girl
女裙 skirt
女士 Ms
女士;夫人 lady
女士;夫人 madam
女售货员 salesgirl
欧洲 Europe
爬 climb
排;行 row
排球 volleyball
牌子,品牌 brand
盘,碟,一道菜 dish
盘子 plate
跑;运行 run
烹调;厨师 cook
朋友 friend
皮肤 skin
皮革 leather
啤酒 beer
匹配 match
骗子 cheater
漂亮的 pretty
漂亮的,好看的 good-looking
票 ticket
拼写 spell
贫穷,贫困 poverty
乒乓球 ping-pong
平底锅 pan
平方;广场；※方格 square
平衡 balance
平静(的)地 still
平静的 calm
平静的;安静的 quiet
平静地;安静地 quietly
平躺 lie
苹果 apple
屏幕;银幕 screen
瓶子 bottle
破的 broken
葡萄 grape
普遍的,普通的 common
普通的 ordinary
瀑布 waterfall
七 seven
七月 July
妻子 wife
期望 expect
奇怪的;陌生的 strange
骑 ride
乞求:恳求 beg
企鹅 penguin
起居室 living room
起居室 sitting-room
汽车 vehicle
千 thousand
千米 kilometre
铅笔 pencil
铅笔盒 pencil-box
前锋（足球比赛） striker
前面(的) front
前夕 eve
钱;钱币 money
钱包 purse
钱夹;皮夹 wallet
潜水 dive
潜水员 diver
强盗;盗贼 robber
强壮的;坚强的 strong
墙 wall
抢劫 rob
抢劫案,抢劫 robbery
敲 knock
敲打;打败 beat
桥;桥牌 bridge
巧克力 chocolate
切,砍 cut
亲爱的,贵的 dear
亲戚;亲人 relative
勤奋的 hardworking
青蛙 frog
轻柔地 gently
清楚的,清晰的,明亮的 clear
清楚地 clearly
清洁工 cleaner
情景 situation
晴朗的,阳光充足的 sunny
请;使...高兴 please
庆祝 celebrate
穷的;可怜的 poor
秋天 autumn
球 ball
球门,得分 goal
球拍(网球、羽毛球拍) racket
去;尝试 go
确实;真正地 really
然而 however
然后;那时 then
让 let
绕着… around
热的 hot
热狗 hot dog
人 person
人口;人数 population
人类(的) human
人民;人们 people
人造的 man-made
忍受,受痛苦 suffer
任何;一些 any
任何人 anybody
任何人 anyone
任何事(物) anything
任务 task
仍然 still
日报 daily
日本 Japan
日本的(人) Japanese
日光 daylight
日光;阳光 sunshine
日记 diary
日历 calendar
日期 date
日元 yen
容易的 easy
肉 meat
乳酪,奶酪 cheese
入口 entrance
软件 software
瑞典 Sweden
瑞典的 Swedish
瑞士 Switzerland
瑞士的 Swiss
赛跑 race
赛跑运动员 runner
三 three
三明治 sandwich
三十 thirty
三月 March
伞;雨伞 umbrella
扫;扫除 sweep
扫帚 broom
森林 forest
杀死 kill
沙拉 salad
沙漠 desert
沙子 sand
鲨鱼 shark
傻子 fool
山,山脉 mountain
山脉 ridge
珊瑚 coral
闪光 gleam
善良;美德 goodness
伤害 harm
商店;买东西 shop
商店;贮存 store
商人 businessman
商业;生意;事务 business
上(菜);开(饭);服务 serve
上午 a.m.
烧焦的,烧过的 burnt
少数民族的 ethnic
蛇 snake
社会 society
射击;射死 shoot
身份证 ID
身体 body
深的 deep
深色的;黑暗的 dark
婶婶,阿姨 aunt
甚至 even
升起;上升 rise
生病的 ill
生产 produce
生动的 lively
生活;生命 life
生气的 angry
生日 birthday
生物(学) biology
声音；听起来 sound
省;省份 province
圣诞节 Christmas
失败 fail
失望的 disappointed
诗 poem
狮子 lion
十 ten
十二 twelve
十二月 December
十三 thirteen
十四 fourteen
十五 fifteen
十一 eleven
十一月 November
十亿 billion
十月 October
十字路口;交叉点 crossing
什么 what
石膏 plaster
时间;次数 time
时间表 timetable
实验室 lab(=laboratory)
实用的,实际的 practical
食物 food
食欲,胃口 appetite
使...沮丧 frustrate
使...适合,适合 fit
使…惊愕 amaze
使…痊愈 heal
使开始;启程;安放;装置 set
使人惊异的 amazing
使受伤,痛 hurt
使陷入困境;设陷阱捕捉 trap</pre>]]></description>
			<content:encoded><![CDATA[<pre>阿拉伯半岛 Arabia
阿什兰 Ashland
啊 ah
啊哈 aha
癌症 cancer
爱 love
安静的 silent
安静地 silently
安全  safety
安全的 safe
安装;修理 fix
按钮;纽扣 button
按顺序 in order
按照,如同,当…,因为 as
昂贵的 expensive
嗷,哎哟 ouch
奥林匹克的 Olympic
澳大利亚 Australia
澳大利亚人 Aussie
澳大利亚人 Australian
澳门 Macao
八 eight
八月 August
巴黎 Paris
巴西 Brazil
爸爸 dad
白菜 cabbage
白金汉宫 Puckingham Palace
白色的 white
白天 daytime
百 hundred
百货商店 department
百万 million
柏林 Berlin
班级,年级;同班同学 class
办公室 office
邦戴 Bondy
帮助 help
傍晚;晚上 evening
棒球,垒球 baseball
磅;镑 pound
保持;使得… keep
保护 protect
报告;报导 report
报纸 newspaper
抱怨 complain
杯子 cup
悲伤的;难过的 sad
北方;北部 north
北方的;北部的 northern
贝加尔湖 Paikal Lake
贝类;甲克虫 shellfish
背包 backpack
背诵 learn …by heart
本质的;主要的 essential
绷带 bandage
鼻子 nose
比…;比较… than
比较 compare
比较 comparison
比较级的 comparative
比利时 Belgium
比例,比率 rate
比萨饼 pizza
比赛 match
比赛,竞赛 competition
比赛者;选手 player
必须 must
必须的 necessary
毕业 graduate
壁炉 fireplace
避免 avoid
避暑胜地 summer resort
边 side
边;边缘 edge
边缘 rim
鞭炮 firecrackers
便帽;军帽 cap
便士 penny (pence)
便条;纸币 note
便宜的 cheap
变成;成为 become
变换,改变 change
遍及 throughout
标点符号 puntuation
标记;符号;痕迹 sign
标签 label
表达 expression
表格;构成,组成 form
表演;成绩 performance
别的,其他的;另外的人 other
别的;其他的 else
冰 ice
冰雕 ice carving
冰激凌 ice cream
冰山 iceberg
并排 side by side
病假 sick leave
病人 patient
拨(电话) dial
波士顿 Boston
玻璃(杯) glass
脖子 neck
博物馆 museum
不 not
不,不是;没有 no
不安的 restless
不安的 uneasy
不按次序排队的人 jumper
不出名的 unknown
不好不坏的,马马虎虎的 so-so
不见的 missing
不健康的 unhealthy
不久；很快 soon
不可能的 impossible
不平常的 unusual
不同;差异 difference
不同的 different
不喜欢,厌恶 dislike
不走运的;不幸的 unlucky
布 cloth
布鲁塞尔 Brussels
部分 part
擦;磨 rub
猜 guess
猜想 suppose
裁缝 tailor
裁判，法官 judge
菜单 menu
参加 join
餐厅 dining-room
操场 playground
操作;动手术 operate
嘈杂的 noisy
嘈杂声,响声 noise
草;草地 grass
厕所 toilet
叉子 fork
茶;茶叶 tea
茶壶 teapot
察觉;领悟;了解 realize
长的 long
长筒袜 stocking
尝味;有...味道 taste
畅销货(书) best-seller
唱唱歌 sing
唱诵 chant
抄写,誊写;复制 copy
超过…,经过…;过去(的) past
超级市场 supermarket
朝着…;向… towards
潮湿的 moist
潮湿的 wet
车站 station
陈列,展览 display
陈述 statement
称…的重量 weigh
成就;成功 success
成立;建立 found
成年人 adult
成员 member
城堡 castle
城市 city
城镇 town
乘…,通过… by
乘独木舟 canoe
乘客 passenger
乘以 multiply
吃 eat
池塘;水坑 pool
迟的 late
尺寸 size
尺子 ruler
冲;奔跑 rush
冲浪 surf
冲浪运动 surfing
冲浪者 surfer
虫;蠕虫 worm
宠物 pet
出口 exit
出去,在外面 out
出生(bear的过去分词) born
出声地, aloud
出现;露面 appear
出租车 taxi
除…之外 except
除非…;如果…不… unless
厨房 kitchen
穿着 wear
传播 spread
传单 leaflet
传递;通过 pass
传统的 traditional
传真 fax
窗子 window
床 bed
吹,刮 blow
春天 spring
磁带 tape
此后;自…以来;由于…;既然… since
此刻,瞬间 moment
从… from
从来不;决不 never
匆忙 hurry
聪明的;机灵的 clever
粗鲁的;激烈的;粗糙的 rough
粗体 bold type
粗心的 careless
粗心地 carelessly
村庄 village
错误 mistake
错误的 wrong
答复;回复 reply
打;撞;击中 hit
打包 pack
打电话,叫喊;电话通话 call
打开;开放的 open
打破(过去式) broke
打破,折断;课间休息 break
打扫;干净的, clean
打印机 printer
打字 type
大道,大街 avenue
大的 big
大的  large
大量地；猛烈地 heavily
大陆;本土 mainland
大门 gate
大米,米饭;水稻 rice
大声的;响亮的 loud
大声地;高声地 loudly
大厅 hall
大象 elephant
大笑;笑声 laugh
大写的 capital
大学生运动会 UNIVERSIADE
大众的;流行的 popular
代词 pronoun
代替 instead
带来;拿来 bring
单程的 one-way
单一的 single
担心，使…担心 worry
担心的,烦恼的 worried
但是;除了 but
蛋糕,,饼 cake
当然 certainly
岛屿 island
倒,灌;倾泻 pour
倒空,清空 empty
倒塌 collapse
倒下 fall
到…;往…;(不定式符号,无词义) to
到…里 into
到…上 onto
到处 everywhere
到达;抵达 arrive
到达;够着 reach
道路;公路 road
得到;到达 get
得分;获胜 score
德国 Germany
德国人 German(s)
的确;确信的  sure
灯笼 lantern
登记处 check-in
等候 wait
等候室 waiting room
低的 low
敌人 enemy
底部 bottom
地板 floor
地方 place
地理(学) geography
地面 ground
地球,地球仪 globe
地图 map
地下的 underground
地震 earthquake
地址 address
第……号 No. =number
第八 eighth
第二 second
第二十 twentieth
第二十一 twenty-first
第九 ninth
第三 third
第十八 eighteenth
第十二 twelfth
第四 fourth
第五 fifth
第一,首先;最初 first
电报 telegraph
电冰箱 fridge
电池 battery
电话;打电话 phone(=telephone)
电话;打电话给… telephone
电话传呼机 beeper
电脑,计算机 computer
电视机 TV
电梯;(云雾)消散 lift
电影 film
电影 movie
电影院;电影 cinema
电子的 electronic
电子邮件 e-mail
雕刻 carve
钓鱼 fishing
调查 survey
调羹;汤匙;勺子 spoon
调制解调器 modem
掉下,落下;滴,水滴 drop
顶部 top
定货单,点菜;订购, order
丢失 lose
丢失的 lost
东北;东北部 northeast
东方(的) east
东京 Tokyo
东西;事情 thing
冬天 winter
动物 animal
动物园 zoo
洞;坑 hole
都;全部;所有的 all
陡峭的,险峻的 steep
豆腐 tofu
独特的 unique
独自地 alone
妒忌的 jealous
短的 short
短袜 sock
短语 phrase
段落 passage
堆 pile
队;组 team
队长(足球队);船长,上尉 captain
对不起的 sorry
对的;右边的;正好;恰好 right
对话 dialogue
多伦多 Toronto
多么;怎么样 how
多雪的;降雪的 snowy
多雨的;下雨的 rainy
多云的 cloudy
躲藏 hide
俄国;俄罗斯 Russia
俄国的;俄语;俄国人 Russian
呃,啊 er
儿子 son
耳朵 ear
二 two
二手的 secondhand
二月 February
发动 launch
发动机 engine
发光;照耀 shine
发明 invent
发明 invention
发明家 inventor
发生 happen
发送;寄;派遣 send
发现:找到 find
发现;发觉 discover
发型 hair style
发芽 sprout
发音 pronounce
发展 develop
乏味的 dull
法国 France
法国的;法语 French
法国人 Frenchman
翻译 translate
饭馆 restaurant
防止 prevent
妨碍;打扰 disturb
房顶 roof
房间;空间 room
房子 house
访问 visit
访问者 visitor
放 put
放松 relax
飞;乘飞机去;放(风筝) fly
飞机 aeroplane
飞机 plane
飞机场 airport
非常 very
非洲 Africa
肥胖的 fat
肥皂 soap
废物;浪费;废弃的 waste
肺结核 TB
分角色表演 role play
分类 classify
分享 share
分钟 minute
坟墓 tomb
粉红色 pink
风 wind
风筝 kite
疯狂的 crazy
蜂蜜 honey
夫妻,一对 couple
夫人 Mrs.
服务生 waiter
符号,象征 symbol
父母 parent;  parents
父亲 father
付钱 pay
妇女 woman
妇女(pl.) women
复活节兔子 Easter Bunny
复述 retell
复数的 plural
复习 review
副词 adverb
覆盖 cover
改善 improve
改写 rewrite
改正;正确的; correct
干的;把…弄干 dry
干种子 berry
杆子 pole
敢于 dare
感恩节 Thanksgiving
感激的 grateful
感激的 thankful
感觉 feel
感谢 thank
感兴趣的 interested
刚;正好;仅仅 just
钢笔 pen
钢琴 piano
高的 tall
高的(地) high
高度 height
高尔夫球 golf
高兴;愉快 pleasure
高兴的 delighted
高兴的 glad
高兴的 pleased
高兴地,快乐地  happily
高音喇叭 loudspeaker
告诉;吩咐 tell
胳臂 arm
歌,歌曲;歌谣 song
歌唱者;歌手 singer
歌剧;戏剧 opera
个人的;私人的 personal
各个,每个 each
给 give
根据 according to
跟随 follow
更多的;更加 more
更好;较好的 better
更坏的;更差的 worse
更少的 less
更远的 farther
更早的;更早地 earlier
工厂 factory
工程 project
工程师 engineer
工具 tool
工人 worker
工作 job
工作 work
工作场所 workplace
公车停靠站 bus station
公车停靠站 bus stop
公共的;公众的 public
公鸡 rooster
公交车 bus
公斤;千克 kilo
公平的 fair
公司 company
公寓 flat
公园;停放(车辆) park
宫殿 palace
贡献 contribution
狗 dog
购买 buy
购物;买东西 shopping
孤独的 lonely
古代的 ancient
古典的,传统的 classical
谷仓 barn
鼓励 encourage
故事;(楼)层 story
雇员 employee
瓜 melon
拐弯处 turning
关闭 close
关闭 shut
关键的 critical
关门的 closed
关于…；大约 about
观点 opinion
冠军 champion
盥洗室;厕所 washroom
光;轻的,浅色的 light
广泛地;广阔地 widely
广告 ad(=advertisement)
规则;规定 rule
规则的，定时的 regular
轨道;跑道 track
轨道;铁路 rail
鬼 ghost
棍棒 stick
国际象棋 chess
国家的 national
果汁 juice
过程;经过;道路 course
哈佛大学 Harvard
海(河)滩 beach
海报,广告 poster
海豹 seal
海底的 undersea
海豚 dolphin
海峡,航道;频道 channel
海鲜;海产品 seafood
海洋 ocean
海洋 sea
害怕的 afraid
害怕的 scared
害羞的;腼腆的 shy
汉堡包 hamburger
旱灾,干旱 drought
航班;飞行 flight
豪华，庄重的 grand
好;健康的;好吧 well
好的 good
好的 OK
好的:(身体)好的 fine
好几个 several
好哇 hooray
好象;似乎 seem
好心的 kind-hearted
合理的,公道的 reasonable
合适的 suitable
合同 contract
合作;协同工作 teamwork
何时;当…时 when
和;又;而 and
和…;有…;关于… with
河岸,银行 bank
核桃 walnut
黑板 blackboard
黑的 black
嘿 hey
很,十分 quite
很棒的;好极了的 terrific
很可能;大概 probably
哼 hmn
横穿…,穿过… across
烘烤 bake
红的 red
洪水;淹没 flood
猴子 monkey
后来;以后 later
厚的;粗的 thick
呼喊;喊叫 shout
呼吸 breathe
狐狸 fox
胡椒 pepper
胡萝卜 carrot
壶 pot
湖泊 lake
护士 nurse
护照 passport
花 flower
花费；度过 spend
花园;菜园 garden
华盛顿 Washington
滑冰;溜冰 skate
滑旱冰 roller-skating
滑稽的 funny
滑雪 ski
化石 fossil
化学 chemistry
化妆 costume
划船 boating
划分 divide
划水 paddle
画 draw
画家 painter
话题,主题 topic
怀基基 Waikiki
坏的 bad
欢呼 cheer
欢呼声 yippee
欢迎 welcome
还(没有) yet
环境 environment
患病的  sick
黄色的 yellow
黄油 butter
灰色的 grey
回,向后;背部 back
回答 answer
回来;归还 return
会话 conversation
会见,采访 interview
会见,遇见 meet
会议 meeting
昏暗的 dim
婚礼 wedding
混合 mix up
混合，混和 mix
活动 activity
活动的;动人的 moving
活着的 alive
火 fire
火车;训练,培养 train
火鸡 turkey
火箭 rocket
火奴鲁鲁 Honolulu
伙伴,搭档 partner
或者；否则 or
货物 load
获胜者 winner
饥饿的 hungry
机会 chance
机器 machine
机器人 robot
机械的 mechanical
鸡,鸡肉 chicken
鸡蛋,蛋 egg
积极的 active
激光唱片 CD
吉普车 jeep
极地 polar region
疾病 disease
几乎 almost
几乎不 hardly
计划 plan
记得 remember
记号;标记;痕迹 mark
记录 record
记忆存贮器 memory
记者 journalist
技师 mechanic
技术;工艺学 technology
季节 season
继续 continue
加 plus
加利福尼亚号 Californian
加拿大 Canada
加拿大人 Canadian
夹克衫 jacket
佳能(相机名) Canon
家;在家,到家 home
家庭 family
家庭作业 homework
家务 housework
家乡 hometown
甲壳虫乐队 Beatles
价格 price
价钱为…,花费 cost
驾驶 drive
驾驶;掌舵 steer
架子;搁板 shelf
假如;如果 if
假设 imagine
假设 suppose
坚果,果仁 nut
肩膀 shoulder
监视器 monitor
捡起 pick
减去 minus
剪刀 scissors
检查 check
建议 suggest
建议，忠告 advice
建造 build
建筑(物) building
健康 health
健康的 healthy
健康地 healthily
键盘 keyboard
江河;河 river
将 shall
将,愿意 would
将;应该 should
将近;几乎 nearly
将来 future
将要 will
奖品;奖赏 prize
降水 rainfall
交通 traffic
礁岩 reef
角落;拐角 corner
绞死 hang
饺子 dumpling
脚 foot (feet)
脚步;走;踏,踩 step
脚趾 toe
搅动 stir
叫,鸣叫 crow
叫喊(动物声) yip
轿车,汽车 car
教;教书 teach
教练 coach
教师 teacher
教室 classroom
教堂;教会 church
教育 education
接力(赛) relay
接收;收到;得到 receive
街道 street
节假日 holiday
节目 programme
节日(的) festival
结冰;凝固 freeze
结果 result
结婚 marry
结尾,结局 ending
她 she
她(宾格) her
她的 hers
她自己 herself
姐;妹 sister
解决;解答 solve
介绍 introduce
介意,关心;小心,照顾 care
借 borrow
借(出) lend
今天 today
今晚 tonight
金属 metal
仅仅;只有 only
紧张不安的 nervous
尽管,虽然 although
尽管;虽然 though
近来 lately
进步;提高;前进 progress
进攻;袭击 attack
进入;回车键 enter
经常 often
经理 manager
经验 experience
惊奇,惊讶;对…感到怀疑 wonder
惊奇,惊讶;使…吃惊 surprise
精彩的 wonderful
精确地 exactly
精神 spirit
景色 scenery
警察 policeman
警察;警方 police
警告;提醒 warn
警官,监督员 inspector
竞争 compete
镜子 mirror
九 nine
九十 ninety
九月 September
酒,红酒 wine
救生船 lifeboat
居住;生活 live
橘子,桔子;橙色的 orange
沮丧的 frustrated
句子 sentence
巨大的 huge
拒绝 refuse
俱乐部 club
俱乐部;社团 club
剧场;戏院 theatre
聚会 get-together
聚会 party
聚酯化合物 polyester
卷笔刀 sharpener
决定 decide
决定 decision
攫取;抓取 grab
咔哒声;发出咔哒声 click
咖啡 coffee
卡车 truck
开端;开始 beginning
开花 bloom
开罗 Cairo
开始,着手;出发 start
开始:着手 begin
看;看起来 look
看待;当作 regard
看见;看望 see
看门人 gatekeeper
慷慨;豁达 generosity
考试 exam
考试 examination
科学 science
科学家 scientist
咳嗽 cough
可带走的（熟食） take-away
可口可乐 coke
可能的 possible
可怕的;感到不舒服的 terrible
可移动的 mobile
可以 may
可以…;行; could
课 lesson
课本 textbook
课桌 desk
空白处 blank
空的;清空,倒空 empty
空调机 air conditioner
空间;太空 space
空气 air
恐怖的 scary
恐怖主义者 terrorist
恐龙 dinosaur
口袋,衣袋 pocket
口对口的 mouth-to-mouth
口渴的 thirsty
哭;叫喊 cry
骷髅 skeleton
裤子 trousers
酷妹 foxy ladies
夸奖 praise
跨越,横跨;十字形 cross
快的;迅速的 quick
快的;迅速地 fast
快地;迅速地 quickly
快乐的;幸福的 happy
筷子 chopstick
宽的 wide
昆虫 insect
捆扎;系 tie
困难 difficulty
困难的 difficult
困难的;努力地;硬的 hard
括号 bracket
垃圾;废物 rubbish
垃圾;扔垃圾 litter
垃圾箱 dustbin
拉,拽,拖,拔 pull
蜡烛 candle
来 come
来回的;往返的(车票等) round-trip
栏目 column
蓝的 blue
篮球 basketball
篮子 basket
懒惰的 lazy
狼 wolf
浪;波浪 wave
老板 boss
老的 old
老虎 tiger
老鼠;鼠标 mouse
乐队 band
雷声 boon
累的 tired
冷的 cold
梨子 pear
离开 away
离开 off
离开;出发 leave
礼貌的 polite
礼貌地 politely
礼堂,演讲厅 auditorium
礼物 gift
礼物 present
里士满 Richmond
理解 understand
理由 reason
历史 history
历险，冒险 adventure
利物浦 Liverpool
例子;榜样 example
连接 connect
怜悯,同情;遗憾的事 pity
联盟 league
脸 face
练习 practice
练习 practise
练习;锻炼 exercise
凉爽的;(口语)酷 cool
两层 two-story
两次;两倍 twice
两者;(二者)都 both
两者都不;(两者)无一个 neither
了望塔 watchtower
邻居 neighbour
邻里;街坊 neighbourhood
铃响；打电话 ring
铃子 bell
零 zero
领导,带领 lead
令人兴奋的 exciting
令人厌烦的 boring
令人愉快的;好的,漂亮的 nice
另一，又一 another
溜溜球 yo-yo
流行歌手 pop singer
六 six
六月 June
笼子;鸟笼 cage
聋的 deaf
楼道,楼梯 stairway
陆地,大地;地球 earth
陆地;登陆,降落 land
录象 video
鹿 deer
路;方法 way
路线;去路 path
旅程 journey
旅馆 hotel
旅行 travel
旅行;绊倒,失误 trip
旅行者 traveller
旅游者;观光者 tourist
绿色的 green
伦敦 London
轮船 ship
轮流;翻转;变得 turn
轮子 wheel
罗马 Rome
妈妈 mum
妈咪 mummy
麻烦 trouble
马 horse
马卡哈 Makaha
埋葬 bury
卖;售 sell
满的 full
曼彻斯特 Manchester
慢的;慢慢地;放慢 slow
慢慢地 slowly
忙的 busy
猫 cat
毛笔 writing-brush
毛衣;运动衣 sweater
帽子 hat
没有人 nobody
没有什么东西 nothing
没有一个人;没有任何东西 none
每个 every
每个人;大家 everybody
每个人;大家 everyone
每件事 everything
美分 cent
美国 America
美国 USA
美国的,美国人 American
美丽的;漂亮的 beautiful
美利坚合众国 the United States
美味的 delicious
美元 dollar
门 door
门口的垫子 doormat
门铃 door-bell
猛敲;砰砰声 bang
迷、球迷、影迷 fan
谜语 riddle
米(长度单位) metre (meter)
秘密 secret
秘书 secretary
密码;符号;编码 code
蜜蜂 bee
绵羊 sheep
棉花 cotton
面包 bread
面粉 flour
面条 noodle
描述;描写 description
描述;叙述 describe
庙会 temple fairs
名字;姓名 name
明亮的 bright
明亮地 brightly
明天 tomorrow
明信片 postcard
模型;模范 model
摩托车 motorbike
魔法的 magical
魔鬼 thriller
末梢;结束 end
莫斯科 Moscow
墨尔本 Melbourne
墨西哥 Mexico
某人,有人 somebody
某人,有人 someone
某事(物) something
母鸡 hen
母亲 mother
木板 board
木头 wood
目的 purpose
目的地 destination
目击者 witness
牧羊人 shepherd
拿;握 hold
拿出;提供 offer
拿到;带到;花费,耗费 take
哪个;哪些 which
那个 that
那里;(引导词,无词义) there
那些 those
奶奶;婆婆 grandma
奶牛,母牛 cow
奶油;乳脂 cream
男衬衫 shirt
男孩 boy
男人 man
男人们(man的复数) men
男生 schoolboy
南方;南部 south
南瓜 pumpkin
难过地;悲哀地 sadly
难闻的  smelly
闹钟 alarm clock
能;可以;会 can
能量 energy
嗯 um
尼泊尔 Nepal
尼龙 nylon
你(们)的 your
你(们)的 yours
你,你们(主格,宾格) you
你好 hi
你们自己 yourselves
你自己 yourself
年 year
年级 grade
年龄 age
年轻的 young
鸟 bird
宁愿;更喜欢 prefer
牛奶 milk
牛肉 beef
纽基 Newquay
农场 farm
农民 farmer
农田 farmland
农业;耕种 farming
努力;尝试;射门 shot
女衬衫 blouse
女儿 daughter
女服;(统指)衣服 dress
女孩 girl
女裙 skirt
女士 Ms
女士;夫人 lady
女士;夫人 madam
女售货员 salesgirl
欧洲 Europe
爬 climb
排;行 row
排球 volleyball
牌子,品牌 brand
盘,碟,一道菜 dish
盘子 plate
跑;运行 run
烹调;厨师 cook
朋友 friend
皮肤 skin
皮革 leather
啤酒 beer
匹配 match
骗子 cheater
漂亮的 pretty
漂亮的,好看的 good-looking
票 ticket
拼写 spell
贫穷,贫困 poverty
乒乓球 ping-pong
平底锅 pan
平方;广场；※方格 square
平衡 balance
平静(的)地 still
平静的 calm
平静的;安静的 quiet
平静地;安静地 quietly
平躺 lie
苹果 apple
屏幕;银幕 screen
瓶子 bottle
破的 broken
葡萄 grape
普遍的,普通的 common
普通的 ordinary
瀑布 waterfall
七 seven
七月 July
妻子 wife
期望 expect
奇怪的;陌生的 strange
骑 ride
乞求:恳求 beg
企鹅 penguin
起居室 living room
起居室 sitting-room
汽车 vehicle
千 thousand
千米 kilometre
铅笔 pencil
铅笔盒 pencil-box
前锋（足球比赛） striker
前面(的) front
前夕 eve
钱;钱币 money
钱包 purse
钱夹;皮夹 wallet
潜水 dive
潜水员 diver
强盗;盗贼 robber
强壮的;坚强的 strong
墙 wall
抢劫 rob
抢劫案,抢劫 robbery
敲 knock
敲打;打败 beat
桥;桥牌 bridge
巧克力 chocolate
切,砍 cut
亲爱的,贵的 dear
亲戚;亲人 relative
勤奋的 hardworking
青蛙 frog
轻柔地 gently
清楚的,清晰的,明亮的 clear
清楚地 clearly
清洁工 cleaner
情景 situation
晴朗的,阳光充足的 sunny
请;使...高兴 please
庆祝 celebrate
穷的;可怜的 poor
秋天 autumn
球 ball
球门,得分 goal
球拍(网球、羽毛球拍) racket
去;尝试 go
确实;真正地 really
然而 however
然后;那时 then
让 let
绕着… around
热的 hot
热狗 hot dog
人 person
人口;人数 population
人类(的) human
人民;人们 people
人造的 man-made
忍受,受痛苦 suffer
任何;一些 any
任何人 anybody
任何人 anyone
任何事(物) anything
任务 task
仍然 still
日报 daily
日本 Japan
日本的(人) Japanese
日光 daylight
日光;阳光 sunshine
日记 diary
日历 calendar
日期 date
日元 yen
容易的 easy
肉 meat
乳酪,奶酪 cheese
入口 entrance
软件 software
瑞典 Sweden
瑞典的 Swedish
瑞士 Switzerland
瑞士的 Swiss
赛跑 race
赛跑运动员 runner
三 three
三明治 sandwich
三十 thirty
三月 March
伞;雨伞 umbrella
扫;扫除 sweep
扫帚 broom
森林 forest
杀死 kill
沙拉 salad
沙漠 desert
沙子 sand
鲨鱼 shark
傻子 fool
山,山脉 mountain
山脉 ridge
珊瑚 coral
闪光 gleam
善良;美德 goodness
伤害 harm
商店;买东西 shop
商店;贮存 store
商人 businessman
商业;生意;事务 business
上(菜);开(饭);服务 serve
上午 a.m.
烧焦的,烧过的 burnt
少数民族的 ethnic
蛇 snake
社会 society
射击;射死 shoot
身份证 ID
身体 body
深的 deep
深色的;黑暗的 dark
婶婶,阿姨 aunt
甚至 even
升起;上升 rise
生病的 ill
生产 produce
生动的 lively
生活;生命 life
生气的 angry
生日 birthday
生物(学) biology
声音；听起来 sound
省;省份 province
圣诞节 Christmas
失败 fail
失望的 disappointed
诗 poem
狮子 lion
十 ten
十二 twelve
十二月 December
十三 thirteen
十四 fourteen
十五 fifteen
十一 eleven
十一月 November
十亿 billion
十月 October
十字路口;交叉点 crossing
什么 what
石膏 plaster
时间;次数 time
时间表 timetable
实验室 lab(=laboratory)
实用的,实际的 practical
食物 food
食欲,胃口 appetite
使...沮丧 frustrate
使...适合,适合 fit
使…惊愕 amaze
使…痊愈 heal
使开始;启程;安放;装置 set
使人惊异的 amazing
使受伤,痛 hurt
使陷入困境;设陷阱捕捉 trap</pre>
<div style=float:right><!-- JiaThis Button BEGIN -->
<div id="ckepop">
	<a class="jiathis_button_copy"></a>
	<a class="jiathis_button_email"></a>
	<a class="jiathis_button_fav"></a>
	<a class="jiathis_button_print"></a>
	<a class="jiathis_button_tsina"></a>
	<a class="jiathis_button_tqq"></a>
	<a class="jiathis_button_qzone"></a>
	<a class="jiathis_button_renren"></a>
	<a class="jiathis_button_kaixin001"></a>
	<a class="jiathis_button_baidu"></a>
	<a class="jiathis_button_tsohu"></a>
	<a class="jiathis_button_t163"></a>
	<a class="jiathis_button_douban"></a>
	<a class="jiathis_button_twitter"></a>
	<a class="jiathis_button_fanfou"></a>
	<a href="http://www.jiathis.com/share?uid=1571159" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank"></a>
	<a class="jiathis_counter_style"></a>
</div>
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jia.js?uid=1571159" charset="utf-8"></script>
<!-- JiaThis Button END --></div>]]></content:encoded>
			<wfw:commentRss>http://rovertang.com/fav/archives/52/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>活着是一种修行&#8212;&#8212;《非诚勿扰2》三句经典台词浅析</title>
		<link>http://rovertang.com/fav/archives/50</link>
		<comments>http://rovertang.com/fav/archives/50#comments</comments>
		<pubDate>Tue, 31 Jan 2012 08:54:02 +0000</pubDate>
		<dc:creator>Rover</dc:creator>
				<category><![CDATA[生活&情感]]></category>
		<category><![CDATA[影评]]></category>
		<category><![CDATA[非诚勿扰]]></category>

		<guid isPermaLink="false">http://rovertang.com/fav/?p=50</guid>
		<description><![CDATA[<p><strong>活着是一种修行</strong></p>  <p>——《非诚勿扰2》三句经典台词浅析</p>  <p>雪 草</p>  <p>第一时间看了《非诚勿扰2》，感受颇深。导演冯小刚和编剧王朔这次的合作不只是想逗乐观众，更多的是表达出了人到中年后，对人生对爱情对婚姻的理解，对死亡和分离的感悟，这给影片增添了一层淡淡的悲情色彩。</p>  <p>其中的悲情色彩增一分则长，减一分则短，刚好让剧情深刻起来。而这正是与我们的生活息息相关的，既完全源于生活，又让我们对生活的感悟得到了升华。大多数观影者都被电影打动，主要是从经典台词里揣摩出人生哲理来，这些哲理让人在面对生离死别，触动你内心最柔软的部分时，眼泪落得心甘情愿。</p>  <p>电影的故事情节很简单，故事的推进离不开上半部的离婚典礼和下半部的人生告别会，虽然偶有粗糙的成分，但因整个故事在推进的过程中深刻且富有哲理，再加上冯小刚和王朔对文字的洞察力和蛊惑力非比寻常，使得瑕不掩瑜。于是，整个故事仍称得上精彩。我主要从三句经典、值得揣摩的台词说起，结合自己的人生感悟，略谈一下的理解。</p>  <p><strong>“</strong><strong>婚姻怎么选都是错的，长久的婚姻就是将错就错。</strong><strong>”</strong></p>  <p>此话咋一看似乎有点颓废，带了点调侃的味道，好似人世间的婚姻都没有高质量的，没有如人愿的一般。但细想来，这话其实还有一定的道理。</p>  <p>处于婚姻围城中的男女，不管彼此之间多么相爱，一旦这种爱因为柴米油盐的琐事成为一种常态，就会变得枯燥乏味，细水长流，再也没有波澜壮阔烦的伟岸，也很难会有惊涛骇浪的壮观（惊涛骇浪不一定全是壮观，还有可能是颠覆性的破坏）。</p>  <p>更多的时候，婚姻的中的男女激情消退，神秘感荡然无存，之前为了追求对方而藏起来的缺点和短处不仅暴露无遗，而且还会无限放大。这样使得彼此之间的好感消失殆尽，缺点掩盖优点，短处遮蔽长处，曾经情人眼里的西施变成了效颦的东施。</p>  <p>这个时候，婚姻中的双方都会认为选择是错的，可能都还会生出许多的设想，假如换成别人，是否就是对的呢？很难说。多数人还是会选择长久的婚姻，并不是因为他们彼此非常满意，而是因为他们知道和谁过都是一样的错误，没有完美的人，没有能完全包容的人，于是只能将错就错。</p>  <p>将错就错是一种人生态度。电影结尾处，秦奋手拿戒指，单膝跪地，对笑笑说：“一辈子很短，我愿意和你将错就错。”将错就错也是一种勇气，是“明知山有虎，偏上虎山行”的勇气。</p>  <p>高质量的婚姻应该是在平平淡淡的细水长流中，能偶尔出现彼此间的交流和碰撞，偶尔还会有交会的愉悦和幸福。简而言之，高质量的婚姻中，必须有双方共同的爱好和共同的成果，这些爱好和成果是让彼此都有成就，都小心翼翼地关爱和呵护的。孩子是成果之一。</p>  <p>“<strong>居家过日子，犯不着肝胆相照，虚着点和气。</strong>”</p>  <p>我相信，20岁的年龄是说不出这样的话的，如果听这话的人是20岁，他的感受也不会真正深刻。</p>  <p>我理解这里的“肝胆相照”应该是步调一致，在想事情和考虑问题的时候都能一唱一和，彼此心有灵犀，心照不宣。而这里的“虚”不是指虚伪，而是在无关原则时，能让对方高兴，哄对方开心。</p>  <p>从古至今，别说朋友、夫妻了，就说亲兄弟、亲姊妹、亲母子、亲父女，能有哪两个人在做事和处事上完全步调一致呢？这世间没有完全相同的两个人，每个人都是有着独立的思想和行为，所以分歧是正常的，不分歧倒不正常了。</p>  <p>可是，在我们身边，多少的矛盾和事端的产生都是在于一方想说服另外一方，想让彼此肝胆相照呢？</p>  <p>所以，一家人居家过日子，别幻想让对方肝胆相照，别试图说服对方，更别奢求步调一致，只要你所坚定的原则问题不动摇，其他的都可以“虚”着点，只要相安无事就行。</p>  <p>比如婆媳之间，这关系如果处理不当，很容易引发火药捻。和夫妻相比，婆媳之间肝胆相照的成分会更弱一些，因为你不爱这个人，你们是由于婚姻、孩子的原因而不得不朝夕相处。因为年龄和时代的差别，婆媳间共通的东西很少，这就要求你在选定一样原则性的东西（比如孩子的教育）不动摇之外，其他的吃饭、穿衣、絮叨什么的都可听之任之。适当的时候“虚”着点，不仅是需要，而且是必须。</p>  <p>虚着点，全家和气，家庭幸福，前提是坚持内心的原则不动摇。</p>  <p><strong>“</strong><strong>这不是病，这是命。我的命找我来了，我只能从命。</strong><strong>”</strong></p>  <p>这是李香山在发现自己病两周后对秦奋说的话。按理说，作为环球总裁的他，有足够的钱去治病，可以让自己再维持多些时日，但是李香山选择了不治，从命，要有尊严地死。</p>  <p>有人说，命是人无法控制的，在命面前，我们每一个凡夫俗子都从命。就眼前所能看到的，其实是人生而不平等的，有的人生就是官宦子弟，有的人是名人之后，而有的人从出生那一刻起就变成了孤儿。</p>  <p>我们所能改变的是运。你的努力，你的修炼，并不能决定你的出身，也不能改变你的命，但是可以让你躲过人生的灾难，可以让你的运气发生从坏到好的转变。</p>  <p>我们周围有很多的人，都在同命运抗争，希望能得到和别人一样的权利，过上和别人一样的生活。比如张海迪、史铁生等，他们在接受自己残缺、疾病的身体的同时，同命运搏斗，其实改变的仍旧只是运气，而命是生来就定的。结果他们的运气都还不错，都有所成就，值得很多命很好的人学习。但是很不幸的是，史铁生先生却最终因脑溢血离我们而去，他最终也没有逃过命的安排。</p>  <p>尽人事，听天命。这是我们所熟知的道理。凡事都应该在尽力之后从命，这不仅是一种洒脱，而且也是人生逐渐成熟的标志。如果凡事不努力，都归结到命上，那样的人生就成了消极的人生，活着也就失去了意义。</p>  <p>从命也需要勇气。每个人都应该拥有这份勇气，这样才会淡定平和。</p>  <p>我们需要在认清现状，努力之后，从命；对于自己无法控制的事情，从命；面对已成无法改变的事实，从命。否则，再做无谓的挣扎，只能是耗费体力，自寻烦恼。</p>  <p>是的，正如仓央嘉措所说，活着是一种修行。每一件事，每一次经历，都让我们学习、磨练、修行。</p>  <p>在不断的修行中，学会爱，学会生活，学会接受无法改变的命运，学会平静地面对死亡和分离。无论在婚姻里，在生活中，都应该保持一份平静和从容，让自己不悲不喜，不来不去。</p>]]></description>
			<content:encoded><![CDATA[<p><strong>活着是一种修行</strong></p>
<p>——《非诚勿扰2》三句经典台词浅析</p>
<p>雪 草</p>
<p>第一时间看了《非诚勿扰2》，感受颇深。导演冯小刚和编剧王朔这次的合作不只是想逗乐观众，更多的是表达出了人到中年后，对人生对爱情对婚姻的理解，对死亡和分离的感悟，这给影片增添了一层淡淡的悲情色彩。</p>
<p>其中的悲情色彩增一分则长，减一分则短，刚好让剧情深刻起来。而这正是与我们的生活息息相关的，既完全源于生活，又让我们对生活的感悟得到了升华。大多数观影者都被电影打动，主要是从经典台词里揣摩出人生哲理来，这些哲理让人在面对生离死别，触动你内心最柔软的部分时，眼泪落得心甘情愿。</p>
<p>电影的故事情节很简单，故事的推进离不开上半部的离婚典礼和下半部的人生告别会，虽然偶有粗糙的成分，但因整个故事在推进的过程中深刻且富有哲理，再加上冯小刚和王朔对文字的洞察力和蛊惑力非比寻常，使得瑕不掩瑜。于是，整个故事仍称得上精彩。我主要从三句经典、值得揣摩的台词说起，结合自己的人生感悟，略谈一下的理解。</p>
<p><strong>“</strong><strong>婚姻怎么选都是错的，长久的婚姻就是将错就错。</strong><strong>”</strong></p>
<p>此话咋一看似乎有点颓废，带了点调侃的味道，好似人世间的婚姻都没有高质量的，没有如人愿的一般。但细想来，这话其实还有一定的道理。</p>
<p>处于婚姻围城中的男女，不管彼此之间多么相爱，一旦这种爱因为柴米油盐的琐事成为一种常态，就会变得枯燥乏味，细水长流，再也没有波澜壮阔烦的伟岸，也很难会有惊涛骇浪的壮观（惊涛骇浪不一定全是壮观，还有可能是颠覆性的破坏）。</p>
<p>更多的时候，婚姻的中的男女激情消退，神秘感荡然无存，之前为了追求对方而藏起来的缺点和短处不仅暴露无遗，而且还会无限放大。这样使得彼此之间的好感消失殆尽，缺点掩盖优点，短处遮蔽长处，曾经情人眼里的西施变成了效颦的东施。</p>
<p>这个时候，婚姻中的双方都会认为选择是错的，可能都还会生出许多的设想，假如换成别人，是否就是对的呢？很难说。多数人还是会选择长久的婚姻，并不是因为他们彼此非常满意，而是因为他们知道和谁过都是一样的错误，没有完美的人，没有能完全包容的人，于是只能将错就错。</p>
<p>将错就错是一种人生态度。电影结尾处，秦奋手拿戒指，单膝跪地，对笑笑说：“一辈子很短，我愿意和你将错就错。”将错就错也是一种勇气，是“明知山有虎，偏上虎山行”的勇气。</p>
<p>高质量的婚姻应该是在平平淡淡的细水长流中，能偶尔出现彼此间的交流和碰撞，偶尔还会有交会的愉悦和幸福。简而言之，高质量的婚姻中，必须有双方共同的爱好和共同的成果，这些爱好和成果是让彼此都有成就，都小心翼翼地关爱和呵护的。孩子是成果之一。</p>
<p>“<strong>居家过日子，犯不着肝胆相照，虚着点和气。</strong>”</p>
<p>我相信，20岁的年龄是说不出这样的话的，如果听这话的人是20岁，他的感受也不会真正深刻。</p>
<p>我理解这里的“肝胆相照”应该是步调一致，在想事情和考虑问题的时候都能一唱一和，彼此心有灵犀，心照不宣。而这里的“虚”不是指虚伪，而是在无关原则时，能让对方高兴，哄对方开心。</p>
<p>从古至今，别说朋友、夫妻了，就说亲兄弟、亲姊妹、亲母子、亲父女，能有哪两个人在做事和处事上完全步调一致呢？这世间没有完全相同的两个人，每个人都是有着独立的思想和行为，所以分歧是正常的，不分歧倒不正常了。</p>
<p>可是，在我们身边，多少的矛盾和事端的产生都是在于一方想说服另外一方，想让彼此肝胆相照呢？</p>
<p>所以，一家人居家过日子，别幻想让对方肝胆相照，别试图说服对方，更别奢求步调一致，只要你所坚定的原则问题不动摇，其他的都可以“虚”着点，只要相安无事就行。</p>
<p>比如婆媳之间，这关系如果处理不当，很容易引发火药捻。和夫妻相比，婆媳之间肝胆相照的成分会更弱一些，因为你不爱这个人，你们是由于婚姻、孩子的原因而不得不朝夕相处。因为年龄和时代的差别，婆媳间共通的东西很少，这就要求你在选定一样原则性的东西（比如孩子的教育）不动摇之外，其他的吃饭、穿衣、絮叨什么的都可听之任之。适当的时候“虚”着点，不仅是需要，而且是必须。</p>
<p>虚着点，全家和气，家庭幸福，前提是坚持内心的原则不动摇。</p>
<p><strong>“</strong><strong>这不是病，这是命。我的命找我来了，我只能从命。</strong><strong>”</strong></p>
<p>这是李香山在发现自己病两周后对秦奋说的话。按理说，作为环球总裁的他，有足够的钱去治病，可以让自己再维持多些时日，但是李香山选择了不治，从命，要有尊严地死。</p>
<p>有人说，命是人无法控制的，在命面前，我们每一个凡夫俗子都从命。就眼前所能看到的，其实是人生而不平等的，有的人生就是官宦子弟，有的人是名人之后，而有的人从出生那一刻起就变成了孤儿。</p>
<p>我们所能改变的是运。你的努力，你的修炼，并不能决定你的出身，也不能改变你的命，但是可以让你躲过人生的灾难，可以让你的运气发生从坏到好的转变。</p>
<p>我们周围有很多的人，都在同命运抗争，希望能得到和别人一样的权利，过上和别人一样的生活。比如张海迪、史铁生等，他们在接受自己残缺、疾病的身体的同时，同命运搏斗，其实改变的仍旧只是运气，而命是生来就定的。结果他们的运气都还不错，都有所成就，值得很多命很好的人学习。但是很不幸的是，史铁生先生却最终因脑溢血离我们而去，他最终也没有逃过命的安排。</p>
<p>尽人事，听天命。这是我们所熟知的道理。凡事都应该在尽力之后从命，这不仅是一种洒脱，而且也是人生逐渐成熟的标志。如果凡事不努力，都归结到命上，那样的人生就成了消极的人生，活着也就失去了意义。</p>
<p>从命也需要勇气。每个人都应该拥有这份勇气，这样才会淡定平和。</p>
<p>我们需要在认清现状，努力之后，从命；对于自己无法控制的事情，从命；面对已成无法改变的事实，从命。否则，再做无谓的挣扎，只能是耗费体力，自寻烦恼。</p>
<p>是的，正如仓央嘉措所说，活着是一种修行。每一件事，每一次经历，都让我们学习、磨练、修行。</p>
<p>在不断的修行中，学会爱，学会生活，学会接受无法改变的命运，学会平静地面对死亡和分离。无论在婚姻里，在生活中，都应该保持一份平静和从容，让自己不悲不喜，不来不去。</p>
<div style=float:right><!-- JiaThis Button BEGIN -->
<div id="ckepop">
	<a class="jiathis_button_copy"></a>
	<a class="jiathis_button_email"></a>
	<a class="jiathis_button_fav"></a>
	<a class="jiathis_button_print"></a>
	<a class="jiathis_button_tsina"></a>
	<a class="jiathis_button_tqq"></a>
	<a class="jiathis_button_qzone"></a>
	<a class="jiathis_button_renren"></a>
	<a class="jiathis_button_kaixin001"></a>
	<a class="jiathis_button_baidu"></a>
	<a class="jiathis_button_tsohu"></a>
	<a class="jiathis_button_t163"></a>
	<a class="jiathis_button_douban"></a>
	<a class="jiathis_button_twitter"></a>
	<a class="jiathis_button_fanfou"></a>
	<a href="http://www.jiathis.com/share?uid=1571159" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank"></a>
	<a class="jiathis_counter_style"></a>
</div>
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jia.js?uid=1571159" charset="utf-8"></script>
<!-- JiaThis Button END --></div>]]></content:encoded>
			<wfw:commentRss>http://rovertang.com/fav/archives/50/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>纯真IP数据库格式读取方法(JAVA/PHP/Python)</title>
		<link>http://rovertang.com/fav/archives/48</link>
		<comments>http://rovertang.com/fav/archives/48#comments</comments>
		<pubDate>Tue, 31 Jan 2012 01:32:52 +0000</pubDate>
		<dc:creator>Rover</dc:creator>
				<category><![CDATA[网站&程序]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://rovertang.com/fav/?p=48</guid>
		<description><![CDATA[<p><strong>一、基本结构</strong></p>  <p>QQWry.dat文件在结构上分为3块：文件头，记录区，索引区。一般我们要查找IP时，先在索引区查找记录偏移，然后再到记录区读出信息。由于记录区的记录是不定长的，所以直接在记录区中搜索是不可能的。由于记录数比较多，如果我们遍历索引区也会是有点慢的，一般来说，我们可以用二分查找法搜索索引区，其速度比遍历索引区快若干数量级。图1是QQWry.dat的文件结构图。</p>  <p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/qqwry_dat_overview.gif"><img title="QQWry.dat文件结构 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="114" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/qqwry_dat_overview.gif" width="294" border="0" /></a></p>  <p>图1. QQWry.dat文件结构</p>  <p>要注意的是，QQWry.dat里面全部采用了little-endian字节序。</p>  <p><strong>1、文件头</strong></p>  <h5>QQWry.dat的文件头只有8个字节，其结构非常简单，首四个字节是第一条索引的绝对偏移，后四个字节是最后一条索引的绝对偏移。</h5>  <p><strong>2、记录区</strong></p>  <p>每条IP记录都由国家和地区名组成，国家地区在这里并不是太确切，因为可能会查出来“清华大学计算机系”之类的，这里清华大学就成了国家名了，所以这个国家地区名和IP数据库制作的时候有关系。所以记录的格式有点像QName，有一个全局部分和局部部分组成，我们这里还是沿用国家名和地区名的说法。</p>  <p>于是我们想象着一条记录的格式应该是: [IP地址][国家名][地区名]，当然，这个没有什么问题，但是这只是最简单的情况。很显然，国家名和地区名可能会有很多的重复，如果每条记录都保存一个完整的名称拷贝是非常不理想的，所以我们就需要重定向以节省空间。所以为了得到一个国家名或者地区名，我们就有了两个可能：第一就是直接的字符串表示的国家名，第二就是一个4字节的结构，第一个字节表明了重定向的模式，后面3个字节是国家名或者地区名的实际偏移位置。对于国家名来说，情况还可能更复杂些，因为这样的重定向最多可能有两次。</p>  <p>那么什么是重定向模式？根据上面所说，一条记录的格式是[IP地址][国家记录][地区记录]，如果国家记录是重定向的话，那么地区记录是有可能没有的，于是就有了两种情况，我管他叫做模式1和模式2。我们对这些格式的情况举图说明：</p>  <p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_1.gif"><img title="IP记录的最简单形式 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="92" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_1.gif" width="193" border="0" /></a></p>  <p>图2. IP记录的最简单形式</p>  <p>图2表示了最简单的IP记录格式，我想没有什么可以解释的</p>  <p><img title="重定向模式1 " height="173" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_2.gif" width="475" /></p>  <p>图3. 重定向模式1</p>  <p>图3演示了重定向模式1的情况。我们看到在模式1的情况下，地区记录也跟着国家记录走了，在IP地址之后只剩下了国家记录的4字节，后面3个字节构成了一个指针，指向了实际的国家名，然后又跟着地址名。模式1的标识字节是0×01。</p>  <p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_3.gif"><img title="重定向模式2 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="175" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_3.gif" width="475" border="0" /></a></p>  <p>图4. 重定向模式2</p>  <p>图4演示了重定向模式2的情况。我们看到了在模式2的情况下（其标识字节是0×02），地区记录没有跟着国家记录走，因此在国家记录之后4个字节之后还是有地区记录。我想你已经明白了模式1和模式2的区别，即：模式1的国家记录后面不会再有地区记录，模式2的国家记录后会有地区记录。下面我们来看一下更复杂的情况。</p>  <p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_5.gif"><img title="混和情况1 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="206" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_5.gif" width="583" border="0" /></a></p>  <p>图5. 混和情况1</p>  <p>图5演示了当国家记录为模式1的时候可能出现的更复杂情况，在这种情况下，重定向指向的位置仍然是个重定向，不过第二次重定向为模式2。大家不用担心，没有模式3了，这个重定向也最多只有两次，并且如果发生了第二次重定向，则其一定为模式2，而且这种情况只会发生在国家记录上，对于地区记录，模式1和模式2是一样的，地区记录也不会发生2次重定向。不过，这个图还可以更复杂，如图7：</p>  <p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_6.gif"><img title=" 混和情况2 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="268" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_6.gif" width="583" border="0" /></a></p>  <p>图6. 混和情况2</p>  <p>图6是模式1下最复杂的混和情况，不过我想应该也很好理解，只不过地区记录也来重定向而已，有一点我要提醒你，如果重定向的地址是0，则表示未知的地区名。</p>  <p>所以我们总结如下：一条IP记录由[IP地址][国家记录][地区记录]组成，对于国家记录，可以有三种表示方式：字符串形式，重定向模式1和重定向模式2。对于地区记录，可以有两种表示方式：字符串形式和重定向，另外有一条规则：重定向模式1的国家记录后不能跟地区记录。按照这个总结，在这些方式中合理组合，就构成了IP记录的所有可能情况。</p>  <p><strong>二、设计的理由</strong></p>  <p>在我们继续去了解索引区的结构之前，我们先来了解一下为何记录区的结构要如此设计。我想你可能想到了答案：字符串重用。没错，在这种结构下，对于一个国家名和地区名，我只需要保存其一次就可以了。我们举例说明，为了表示方便，我们用小写字母代表IP记录，C表示国家名，A表示地区名：</p>  <ol>   <li>有两条记录a(C1, A1), b(C2, A2)，如果C1 = C2, A1 = A2，那么我们就可以使用图3显示的结构来实现重用 </li>    <li>有三条记录a(C1, A1), b(C2, A2), c(C3, A3)，如果C1 = C2, A2 = A3，现在我们想存储记录b，那么我们可以用图6的结构来实现重用 </li>    <li>有两条记录a(C1, A1), b(C2, A2)，如果C1 = C2，现在我们想存储记录b，那么我们可以采用模式2表示C2，用字符串表示A2</li> </ol>  <p>你可以举出更多的情况，你也会发现在这种结构下，不同的字符串只需要存储一次。</p>  <p><strong>三、索引区</strong></p>  <p>在”了解文件头”部分，我们说明了文件头实际上是两个指针，分别指向了第一条索引和最后一条索引的绝对偏移。如图8所示：</p>  <p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/header_to_index.gif"><img title="文件头指向索引区图示 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="299" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/header_to_index.gif" width="485" border="0" /></a></p>  <p>图8. 文件头指向索引区图示</p>  <p>实在是很简单，不是吗？从文件头你就可以定位到索引区，然后你就可以开始搜索IP了！每条索引长度为7个字节，前4个字节是起始IP地址，后三个字节就指向了IP记录。这里有些概念需要说明一下，什么是起始IP，那么有没有结束IP？ 假设有这么一条记录：166.111.0.0 – 166.111.255.255，那么166.111.0.0就是起始IP，166.111.255.255就是结束IP，结束IP就是IP记录中的那头4个字节，这下你应该就清楚了吧。于是乎，每条索引配合一条记录，构成了一个IP范围，如果你要查找166.111.138.138所在的位置，你就会发现166.111.138.138落在了166.111.0.0 – 166.111.255.255 这个范围内，那么你就可以顺着这条索引去读取国家和地区名了。那么我们给出一个最详细的图解吧：</p>  <p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/overall_format.gif"><img title="文件详细结构 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="254" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/overall_format.gif" width="606" border="0" /></a></p>  <p>图9. 文件详细结构</p>  <p>现在一切都清楚了是不是？也许还有一点你不清楚，QQWry.dat的版本信息存在哪里呢？ 答案是：最后一条IP记录实际上就是版本信息，最后一条记录显示出来就是这样：255.255.255.0 255.255.255.255 纯真网络 2004年6月25日IP数据。OK，到现在你应该全部清楚了。</p>  <p><strong>四、使用示例</strong></p>  <p>下一步：我给出一个读取IP记录的程序片断，此片断摘录自LumaQQ源文件edu.tsinghua.lumaqq.IPSeeker.java，如果你有兴趣，可以下载源代码详细看看。</p>  <pre>/**
* 给定一个ip国家地区记录的偏移，返回一个IPLocation结构
* @param offset 国家记录的起始偏移
* @return IPLocation对象
*/
private IPLocation getIPLocation(long offset) {&#160; try {&#160;&#160; // 跳过4字节ip&#160;&#160; ipFile.seek(offset + 4);&#160;&#160; // 读取第一个字节判断是否标志字节&#160;&#160; byte b = ipFile.readByte();&#160;&#160; if(b == REDIRECT_MODE_1) {&#160;&#160;&#160; // 读取国家偏移&#160;&#160;&#160; long countryOffset = readLong3();&#160;&#160;&#160; // 跳转至偏移处&#160;&#160;&#160; ipFile.seek(countryOffset);&#160;&#160;&#160; // 再检查一次标志字节，因为这个时候这个地方仍然可能是个重定向&#160;&#160;&#160; b = ipFile.readByte();&#160;&#160;&#160; if(b == REDIRECT_MODE_2) {&#160;&#160;&#160;&#160; loc.country = readString(readLong3());&#160;&#160;&#160;&#160; ipFile.seek(countryOffset + 4);&#160;&#160;&#160; } else&#160;&#160;&#160; loc.country = readString(countryOffset);&#160;&#160;&#160; // 读取地区标志&#160;&#160;&#160; loc.area = readArea(ipFile.getFilePointer());&#160;&#160; } else if(b == REDIRECT_MODE_2) {&#160;&#160;&#160; loc.country = readString(readLong3());&#160;&#160;&#160; loc.area = readArea(offset + 8);&#160;&#160; } else {&#160;&#160;&#160; loc.country = readString(ipFile.getFilePointer() - 1);&#160;&#160;&#160; loc.area = readArea(ipFile.getFilePointer());&#160;&#160; }&#160;&#160; return loc;&#160; } catch (IOException e) {&#160;&#160; return null;&#160; }
}

/**
* 从offset偏移开始解析后面的字节，读出一个地区名
* @param offset 地区记录的起始偏移
* @return 地区名字符串
* @throws IOException 地区名字符串
*/
private String readArea(long offset) throws IOException {&#160; ipFile.seek(offset);&#160; byte b = ipFile.readByte();&#160; if(b == REDIRECT_MODE_1 &#124;&#124; b == REDIRECT_MODE_2) {&#160;&#160; long areaOffset = readLong3(offset + 1);&#160;&#160; if(areaOffset == 0)&#160;&#160; return LumaQQ.getString(&#34;unknown.area&#34;);&#160;&#160; else&#160;&#160; return readString(areaOffset);&#160; } else&#160; return readString(offset);
}

/**
* 从offset位置读取3个字节为一个long，因为java为big-endian格式，所以没办法
* 用了这么一个函数来做转换
* @param offset 整数的起始偏移
* @return 读取的long值，返回-1表示读取文件失败
*/
private long readLong3(long offset) {&#160; long ret = 0;&#160; try {&#160;&#160; ipFile.seek(offset);&#160;&#160; ipFile.readFully(b3);&#160;&#160; ret &#124;= (b3[0] &#38; 0xFF);&#160;&#160; ret &#124;= ((b3[1] &#60;&#60; 8) &#38; 0xFF00);&#160;&#160; ret &#124;= ((b3[2] &#60;&#60; 16) &#38; 0xFF0000);&#160;&#160; return ret;&#160; } catch (IOException e) {&#160;&#160; return -1;&#160; }
}

/**
* 从当前位置读取3个字节转换成long
* @return 读取的long值，返回-1表示读取文件失败
*/
private long readLong3() {&#160; long ret = 0;&#160; try {&#160;&#160; ipFile.readFully(b3);&#160;&#160; ret &#124;= (b3[0] &#38; 0xFF);&#160;&#160; ret &#124;= ((b3[1] &#60;&#60; 8) &#38; 0xFF00);&#160;&#160; ret &#124;= ((b3[2] &#60;&#60; 16) &#38; 0xFF0000);&#160;&#160; return ret;&#160; } catch (IOException e) {&#160;&#160; return -1;&#160; }
}

/**
* 从offset偏移处读取一个以0结束的字符串
* @param offset 字符串起始偏移
* @return 读取的字符串，出错返回空字符串
*/
private String readString(long offset) {&#160; try {&#160;&#160; ipFile.seek(offset);&#160;&#160; int i;&#160;&#160; for(i = 0, buf[i] = ipFile.readByte(); buf[i] != 0; buf[++i] = ipFile.readByte());&#160;&#160; if(i != 0)&#160;&#160; return Utils.getString(buf, 0, i, &#34;GBK&#34;);&#160; } catch (IOException e) {&#160;&#160; log.error(e.getMessage());&#160; }&#160; return &#34;&#34;;
}</pre>

<p>代码并不复杂，getIPLocation是主要方法，它检查国家记录格式，并针对字符串形式，模式1，模式2采用不同的代码，readArea则相对简单，因为只有字符串和重定向两种情况需要处理。</p>

<p>以下为PHP版：</p>

<pre>&#60;?php
/**
* IP 地理位置查询类
*
* @author 马秉尧
* @version 1.5
* @copyright 2005 CoolCode.CN
*/
class IpLocation {&#160; /**&#160; * QQWry.Dat文件指针&#160; *&#160; * @var resource&#160; */&#160; var $fp;&#160; /**&#160; * 第一条IP记录的偏移地址&#160; *&#160; * @var int&#160; */&#160; var $firstip;&#160; /**&#160; * 最后一条IP记录的偏移地址&#160; *&#160; * @var int&#160; */&#160; var $lastip;&#160; /**&#160; * IP记录的总条数（不包含版本信息记录）&#160; *&#160; * @var int&#160; */&#160; var $totalip;&#160; /**&#160; * 返回读取的长整型数&#160; *&#160; * @access private&#160; * @return int&#160; */&#160; function getlong() {&#160;&#160; //将读取的little-endian编码的4个字节转化为长整型数&#160;&#160; $result = unpack('Vlong', fread($this-&#62;fp, 4));&#160;&#160; return $result['long'];&#160; }&#160; /**&#160; * 返回读取的3个字节的长整型数&#160; *&#160; * @access private&#160; * @return int&#160; */&#160; function getlong3() {&#160;&#160; //将读取的little-endian编码的3个字节转化为长整型数&#160;&#160; $result = unpack('Vlong', fread($this-&#62;fp, 3).chr(0));&#160;&#160; return $result['long'];&#160; }&#160; /**&#160; * 返回压缩后可进行比较的IP地址&#160; *&#160; * @access private&#160; * @param string $ip&#160; * @return string&#160; */&#160; function packip($ip) {&#160;&#160; // 将IP地址转化为长整型数，如果在PHP5中，IP地址错误，则返回False，&#160;&#160; // 这时intval将Flase转化为整数-1，之后压缩成big-endian编码的字符串&#160;&#160; return pack('N', intval(ip2long($ip)));&#160; }&#160; /**&#160; * 返回读取的字符串&#160; *&#160; * @access private&#160; * @param string $data&#160; * @return string&#160; */&#160; function getstring($data = &#34;&#34;) {&#160;&#160; $char = fread($this-&#62;fp, 1);&#160;&#160; while (ord($char) &#62; 0) {&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 字符串按照C格式保存，以\0结束&#160;&#160;&#160; $data .= $char;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 将读取的字符连接到给定字符串之后&#160;&#160;&#160; $char = fread($this-&#62;fp, 1);&#160;&#160; }&#160;&#160; return $data;&#160; }&#160; /**&#160; * 返回地区信息&#160; *&#160; * @access private&#160; * @return string&#160; */&#160; function getarea() {&#160;&#160; $byte = fread($this-&#62;fp, 1);&#160;&#160;&#160; // 标志字节&#160;&#160; switch (ord($byte)) {&#160;&#160;&#160; case 0:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 没有区域信息&#160;&#160;&#160; $area = &#34;&#34;;&#160;&#160;&#160; break;&#160;&#160;&#160; case 1:&#160;&#160;&#160; case 2:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 标志字节为1或2，表示区域信息被重定向&#160;&#160;&#160; fseek($this-&#62;fp, $this-&#62;getlong3());&#160;&#160;&#160; $area = $this-&#62;getstring();&#160;&#160;&#160; break;&#160;&#160;&#160; default:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 否则，表示区域信息没有被重定向&#160;&#160;&#160; $area = $this-&#62;getstring($byte);&#160;&#160;&#160; break;&#160;&#160; }&#160;&#160; return $area;&#160; }&#160; /**&#160; * 根据所给 IP 地址或域名返回所在地区信息&#160; *&#160; * @access public&#160; * @param string $ip&#160; * @return array&#160; */&#160; function getlocation($ip) {&#160;&#160; if (!$this-&#62;fp) return null;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 如果数据文件没有被正确打开，则直接返回空&#160;&#160; $location['ip'] = gethostbyname($ip);&#160;&#160; // 将输入的域名转化为IP地址&#160;&#160; $ip = $this-&#62;packip($location['ip']);&#160;&#160; // 将输入的IP地址转化为可比较的IP地址&#160;&#160; // 不合法的IP地址会被转化为255.255.255.255&#160;&#160; // 对分搜索&#160;&#160; $l = 0;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 搜索的下边界&#160;&#160; $u = $this-&#62;totalip;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 搜索的上边界&#160;&#160; $findip = $this-&#62;lastip;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 如果没有找到就返回最后一条IP记录（QQWry.Dat的版本信息）&#160;&#160; while ($l &#60;= $u) {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 当上边界小于下边界时，查找失败&#160;&#160;&#160; $i = floor(($l + $u) / 2);&#160; // 计算近似中间记录&#160;&#160;&#160; fseek($this-&#62;fp, $this-&#62;firstip + $i * 7);&#160;&#160;&#160; $beginip = strrev(fread($this-&#62;fp, 4));&#160;&#160;&#160;&#160; // 获取中间记录的开始IP地址&#160;&#160;&#160; // strrev函数在这里的作用是将little-endian的压缩IP地址转化为big-endian的格式&#160;&#160;&#160; // 以便用于比较，后面相同。&#160;&#160;&#160; if ($ip &#60; $beginip) {&#160;&#160;&#160;&#160;&#160;&#160; // 用户的IP小于中间记录的开始IP地址时&#160;&#160;&#160;&#160; $u = $i - 1;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 将搜索的上边界修改为中间记录减一&#160;&#160;&#160; }&#160;&#160;&#160; else {&#160;&#160;&#160;&#160; fseek($this-&#62;fp, $this-&#62;getlong3());&#160;&#160;&#160;&#160; $endip = strrev(fread($this-&#62;fp, 4));&#160;&#160; // 获取中间记录的结束IP地址&#160;&#160;&#160;&#160; if ($ip &#62; $endip) {&#160;&#160;&#160;&#160; // 用户的IP大于中间记录的结束IP地址时&#160;&#160;&#160;&#160;&#160; $l = $i + 1;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 将搜索的下边界修改为中间记录加一&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; else {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 用户的IP在中间记录的IP范围内时&#160;&#160;&#160;&#160;&#160; $findip = $this-&#62;firstip + $i * 7;&#160;&#160;&#160;&#160;&#160; break;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 则表示找到结果，退出循环&#160;&#160;&#160;&#160; }&#160;&#160;&#160; }&#160;&#160; }&#160;&#160; //获取查找到的IP地理位置信息&#160;&#160; fseek($this-&#62;fp, $findip);&#160;&#160; $location['beginip'] = long2ip($this-&#62;getlong());&#160;&#160; // 用户IP所在范围的开始地址&#160;&#160; $offset = $this-&#62;getlong3();&#160;&#160; fseek($this-&#62;fp, $offset);&#160;&#160; $location['endip'] = long2ip($this-&#62;getlong());&#160;&#160;&#160;&#160; // 用户IP所在范围的结束地址&#160;&#160; $byte = fread($this-&#62;fp, 1);&#160;&#160;&#160; // 标志字节&#160;&#160; switch (ord($byte)) {&#160;&#160;&#160; case 1:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 标志字节为1，表示国家和区域信息都被同时重定向&#160;&#160;&#160; $countryOffset = $this-&#62;getlong3();&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 重定向地址&#160;&#160;&#160; fseek($this-&#62;fp, $countryOffset);&#160;&#160;&#160; $byte = fread($this-&#62;fp, 1);&#160;&#160;&#160; // 标志字节&#160;&#160;&#160; switch (ord($byte)) {&#160;&#160;&#160;&#160; case 2:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 标志字节为2，表示国家信息又被重定向&#160;&#160;&#160;&#160; fseek($this-&#62;fp, $this-&#62;getlong3());&#160;&#160;&#160;&#160; $location['country'] = $this-&#62;getstring();&#160;&#160;&#160;&#160; fseek($this-&#62;fp, $countryOffset + 4);&#160;&#160;&#160;&#160; $location['area'] = $this-&#62;getarea();&#160;&#160;&#160;&#160; break;&#160;&#160;&#160;&#160; default:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 否则，表示国家信息没有被重定向&#160;&#160;&#160;&#160; $location['country'] = $this-&#62;getstring($byte);&#160;&#160;&#160;&#160; $location['area'] = $this-&#62;getarea();&#160;&#160;&#160;&#160; break;&#160;&#160;&#160; }&#160;&#160;&#160; break;&#160;&#160;&#160; case 2:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 标志字节为2，表示国家信息被重定向&#160;&#160;&#160; fseek($this-&#62;fp, $this-&#62;getlong3());&#160;&#160;&#160; $location['country'] = $this-&#62;getstring();&#160;&#160;&#160; fseek($this-&#62;fp, $offset + 8);&#160;&#160;&#160; $location['area'] = $this-&#62;getarea();&#160;&#160;&#160; break;&#160;&#160;&#160; default:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 否则，表示国家信息没有被重定向&#160;&#160;&#160; $location['country'] = $this-&#62;getstring($byte);&#160;&#160;&#160; $location['area'] = $this-&#62;getarea();&#160;&#160;&#160; break;&#160;&#160; }&#160;&#160; if ($location['country'] == &#34; CZ88.NET&#34;) {&#160; // CZ88.NET表示没有有效信息&#160;&#160;&#160; $location['country'] = &#34;未知&#34;;&#160;&#160; }&#160;&#160; if ($location['area'] == &#34; CZ88.NET&#34;) {&#160;&#160;&#160; $location['area'] = &#34;&#34;;&#160;&#160; }&#160;&#160; return $location;&#160; }&#160; /**&#160; * 构造函数，打开 QQWry.Dat 文件并初始化类中的信息&#160; *&#160; * @param string $filename&#160; * @return IpLocation&#160; */&#160; function IpLocation($filename = &#34;QQWry.Dat&#34;) {&#160;&#160; $this-&#62;fp = 0;&#160;&#160; if (($this-&#62;fp = @fopen($filename, 'rb')) !== false) {&#160;&#160;&#160; $this-&#62;firstip = $this-&#62;getlong();&#160;&#160;&#160; $this-&#62;lastip = $this-&#62;getlong();&#160;&#160;&#160; $this-&#62;totalip = ($this-&#62;lastip - $this-&#62;firstip) / 7;&#160;&#160;&#160; //注册析构函数，使其在程序执行结束时执行&#160;&#160;&#160; register_shutdown_function(array(&#38;$this, '_IpLocation'));&#160;&#160; }&#160; }&#160; /**&#160; * 析构函数，用于在页面执行结束后自动关闭打开的文件。&#160; *&#160; */&#160; function _IpLocation() {&#160;&#160; if ($this-&#62;fp) {&#160;&#160;&#160; fclose($this-&#62;fp);&#160;&#160; }&#160;&#160; $this-&#62;fp = 0;&#160; }
}
?&#62;</pre>

<p>以下为Python版的读取程序：</p>

<pre>#!/usr/bin/env python
# coding: utf-8

'''用Python脚本查询纯真IP库

QQWry.Dat的格式如下:

+----------+
&#124;&#160; 文件头&#160; &#124;&#160; (8字节)
+----------+
&#124;&#160; 记录区&#160; &#124; （不定长）
+----------+
&#124;&#160; 索引区&#160; &#124; （大小由文件头决定）
+----------+

文件头：4字节开始索引偏移值+4字节结尾索引偏移值

记录区： 每条IP记录格式 ==&#62; IP地址[国家信息][地区信息]&#160;&#160;&#160; 对于国家记录，可以有三种表示方式：&#160;&#160;&#160;&#160;&#160;&#160;&#160; 字符串形式(IP记录第5字节不等于0x01和0x02的情况)，&#160;&#160;&#160;&#160;&#160;&#160;&#160; 重定向模式1(第5字节为0x01),则接下来3字节为国家信息存储地的偏移值&#160;&#160;&#160;&#160;&#160;&#160;&#160; 重定向模式(第5字节为0x02),&#160;&#160;&#160; 对于地区记录，可以有两种表示方式： 字符串形式和重定向&#160;&#160;&#160; 最后一条规则：重定向模式1的国家记录后不能跟地区记录

索引区： 每条索引记录格式 ==&#62; 4字节起始IP地址 + 3字节指向IP记录的偏移值&#160;&#160;&#160; 索引区的IP和它指向的记录区一条记录中的IP构成一个IP范围。查询信息是这个&#160;&#160;&#160; 范围内IP的信息

'''

import sys
import socket
from struct import pack, unpack

class IPInfo(object):&#160;&#160;&#160;&#160; '''QQWry.Dat数据库查询功能集合&#160;&#160;&#160;&#160; '''&#160;&#160;&#160;&#160; def __init__(self, dbname):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ''' 初始化类，读取数据库内容为一个字符串，&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 通过开始8字节确定数据库的索引信息'''&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; self.dbname = dbname&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; f = file(dbname, 'r')&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; self.img = f.read()&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; f.close()&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # QQWry.Dat文件的开始8字节是索引信息,前4字节是开始索引的偏移值，&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 后4字节是结束索引的偏移值。&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (self.firstIndex, self.lastIndex) = unpack('II', self.img[:8])&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 每条索引长7字节，这里得到索引总个数&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; self.indexCount = (self.lastIndex - self.firstIndex) / 7 + 1&#160;&#160;&#160;&#160; def getString(self, offset = 0):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ''' 读取字符串信息，包括&#34;国家&#34;信息和&#34;地区&#34;信息&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; QQWry.Dat的记录区每条信息都是一个以'\0'结尾的字符串'''&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o2 = self.img.find('\0', offset)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #return self.img[offset:o2]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 有可能只有国家信息没有地区信息，&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; gb2312_str = self.img[offset:o2]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; try:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; utf8_str = unicode(gb2312_str,'gb2312').encode('utf-8')&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; except:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return '未知'&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return utf8_str&#160;&#160;&#160;&#160; def getLong3(self, offset = 0):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; '''QQWry.Dat中的偏移记录都是3字节，本函数取得3字节的偏移量的常规表示&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; QQWry.Dat使用“字符串“存储这些值'''&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; s = self.img[offset: offset + 3]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; s += '\0'&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # unpack用一个'I'作为format，后面的字符串必须是4字节&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return unpack('I', s)[0]&#160;&#160;&#160;&#160; def getAreaAddr(self, offset = 0):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ''' 通过给出偏移值，取得区域信息字符串，'''&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; byte = ord(self.img[offset])&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if byte == 1 or byte == 2:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 第一个字节为1或者2时，取得2-4字节作为一个偏移量调用自己&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; p = self.getLong3(offset + 1)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return self.getAreaAddr(p)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return self.getString(offset)&#160;&#160;&#160;&#160; def getAddr(self, offset, ip = 0):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; img = self.img&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o = offset&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; byte = ord(img[o])&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if byte == 1:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 重定向模式1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # [IP][0x01][国家和地区信息的绝对偏移地址]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 使用接下来的3字节作为偏移量调用字节取得信息&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return self.getAddr(self.getLong3(o + 1))&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if byte == 2:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 重定向模式2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # [IP][0x02][国家信息的绝对偏移][地区信息字符串]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 使用国家信息偏移量调用自己取得字符串信息&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cArea = self.getAreaAddr(self.getLong3(o + 1))&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o += 4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 跳过前4字节取字符串作为地区信息&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; aArea = self.getAreaAddr(o)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return cArea, aArea&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if byte != 1 and byte != 2:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 最简单的IP记录形式，[IP][国家信息][地区信息]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 重定向模式1有种情况就是偏移量指向包含国家和地区信息两个字符串&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 即偏移量指向的第一个字节不是1或2,就使用这里的分支&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 简单地说：取连续取两个字符串！&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cArea = self.getString(o)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #o += len(cArea) + 1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 我们已经修改cArea为utf-8字符编码了，len取得的长度会有变，&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 用下面方法得到offset&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o = self.img.find('\0',o) + 1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; aArea = self.getString(o)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return cArea, aArea&#160;&#160;&#160;&#160; def find(self, ip, l, r):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ''' 使用二分法查找网络字节编码的IP地址的索引记录'''&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if r - l &#60;= 1:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return l&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; m = (l + r) / 2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o = self.firstIndex + m * 7&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; new_ip = unpack('I', self.img[o: o+4])[0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ip &#60;= new_ip:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return self.find(ip, l, m)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return self.find(ip, m, r)&#160;&#160;&#160;&#160; def getIPAddr(self, ip):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ''' 调用其他函数，取得信息！'''&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 使用网络字节编码IP地址&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ip = unpack('!I', socket.inet_aton(ip))[0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 使用 self.find 函数查找ip的索引偏移&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; i = self.find(ip, 0, self.indexCount - 1)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 得到索引记录&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o = self.firstIndex + i * 7&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 索引记录格式是： 前4字节IP信息+3字节指向IP记录信息的偏移量&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 这里就是使用后3字节作为偏移量得到其常规表示（QQWry.Dat用字符串表示值）&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o2 = self.getLong3(o + 4)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # IP记录偏移值+4可以丢弃前4字节的IP地址信息。&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (c, a) = self.getAddr(o2 + 4)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return c, a&#160;&#160;&#160;&#160; def output(self, first, last):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for i in range(first, last):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o = self.firstIndex +&#160; i * 7&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ip = socket.inet_ntoa(pack('!I', unpack('I', self.img[o:o+4])[0]))&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; offset = self.getLong3(o + 4)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (c, a) = self.getAddr(offset + 4)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; print &#34;%s %d %s/%s&#34; % (ip, offset, c, a)

def main():&#160;&#160;&#160;&#160; i = IPInfo('QQWry.Dat')&#160;&#160;&#160;&#160; (c, a) = i.getIPAddr(sys.argv[1])&#160;&#160;&#160;&#160; print '%s %s/%s' % (sys.argv[1], c, a)

if __name__ == '__main__':&#160;&#160;&#160;&#160; main()

# changelog
# 时间：2009年5月29日
# 1. 工具下面网友的建议，修改&#34;o += len(cArea) + 1&#34;
#&#160;&#160;&#160; http://linuxtoy.org/archives/python-ip.html#comment-113960
#&#160;&#160;&#160; 因为这个时候我已经把得到的字符串变成utf-8编码了，长度会有变化！</pre>

<p><strong>五、总结</strong></p>

<p>纯真IP数据库的结构使得查找IP简单迅速，不过你想要编辑它却是比较麻烦的，我想应该需要专门的工具来生成QQWry.dat文件，由于其文件格式的限制，你要直接添加IP记录就不容易了。不过，能查到IP已经很开心了，希望纯真记录越来越多～。</p>

<p>下面就为大家推荐一款IP数据库解压软甲：IPLook，其可将QQIP库(如纯真版、Phoenix版、梧州版等)转换成txt文件格式；可将txt文件格式的IP数据转换成dat文件格式(QQWry.dat),轻松打造自己的IP库。</p>

<p>IPLook下载地址：<a href="http://vdisk.weibo.com/s/nPtD">http://vdisk.weibo.com/s/nPtD</a></p>

<p>QQWry.dat下载地址：<a href="http://www.cz88.net/fox/">http://www.cz88.net/fox/</a></p>

<p>参考地址：<a href="http://lumaqq.linuxsir.org/article/qqwry_format_detail.html">http://lumaqq.linuxsir.org/article/qqwry_format_detail.html</a></p>]]></description>
			<content:encoded><![CDATA[<p><strong>一、基本结构</strong></p>
<p>QQWry.dat文件在结构上分为3块：文件头，记录区，索引区。一般我们要查找IP时，先在索引区查找记录偏移，然后再到记录区读出信息。由于记录区的记录是不定长的，所以直接在记录区中搜索是不可能的。由于记录数比较多，如果我们遍历索引区也会是有点慢的，一般来说，我们可以用二分查找法搜索索引区，其速度比遍历索引区快若干数量级。图1是QQWry.dat的文件结构图。</p>
<p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/qqwry_dat_overview.gif"><img title="QQWry.dat文件结构 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="114" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/qqwry_dat_overview.gif" width="294" border="0" /></a></p>
<p>图1. QQWry.dat文件结构</p>
<p>要注意的是，QQWry.dat里面全部采用了little-endian字节序。</p>
<p><strong>1、文件头</strong></p>
<h5>QQWry.dat的文件头只有8个字节，其结构非常简单，首四个字节是第一条索引的绝对偏移，后四个字节是最后一条索引的绝对偏移。</h5>
<p><strong>2、记录区</strong></p>
<p>每条IP记录都由国家和地区名组成，国家地区在这里并不是太确切，因为可能会查出来“清华大学计算机系”之类的，这里清华大学就成了国家名了，所以这个国家地区名和IP数据库制作的时候有关系。所以记录的格式有点像QName，有一个全局部分和局部部分组成，我们这里还是沿用国家名和地区名的说法。</p>
<p>于是我们想象着一条记录的格式应该是: [IP地址][国家名][地区名]，当然，这个没有什么问题，但是这只是最简单的情况。很显然，国家名和地区名可能会有很多的重复，如果每条记录都保存一个完整的名称拷贝是非常不理想的，所以我们就需要重定向以节省空间。所以为了得到一个国家名或者地区名，我们就有了两个可能：第一就是直接的字符串表示的国家名，第二就是一个4字节的结构，第一个字节表明了重定向的模式，后面3个字节是国家名或者地区名的实际偏移位置。对于国家名来说，情况还可能更复杂些，因为这样的重定向最多可能有两次。</p>
<p>那么什么是重定向模式？根据上面所说，一条记录的格式是[IP地址][国家记录][地区记录]，如果国家记录是重定向的话，那么地区记录是有可能没有的，于是就有了两种情况，我管他叫做模式1和模式2。我们对这些格式的情况举图说明：</p>
<p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_1.gif"><img title="IP记录的最简单形式 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="92" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_1.gif" width="193" border="0" /></a></p>
<p>图2. IP记录的最简单形式</p>
<p>图2表示了最简单的IP记录格式，我想没有什么可以解释的</p>
<p><img title="重定向模式1 " height="173" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_2.gif" width="475" /></p>
<p>图3. 重定向模式1</p>
<p>图3演示了重定向模式1的情况。我们看到在模式1的情况下，地区记录也跟着国家记录走了，在IP地址之后只剩下了国家记录的4字节，后面3个字节构成了一个指针，指向了实际的国家名，然后又跟着地址名。模式1的标识字节是0×01。</p>
<p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_3.gif"><img title="重定向模式2 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="175" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_3.gif" width="475" border="0" /></a></p>
<p>图4. 重定向模式2</p>
<p>图4演示了重定向模式2的情况。我们看到了在模式2的情况下（其标识字节是0×02），地区记录没有跟着国家记录走，因此在国家记录之后4个字节之后还是有地区记录。我想你已经明白了模式1和模式2的区别，即：模式1的国家记录后面不会再有地区记录，模式2的国家记录后会有地区记录。下面我们来看一下更复杂的情况。</p>
<p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_5.gif"><img title="混和情况1 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="206" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_5.gif" width="583" border="0" /></a></p>
<p>图5. 混和情况1</p>
<p>图5演示了当国家记录为模式1的时候可能出现的更复杂情况，在这种情况下，重定向指向的位置仍然是个重定向，不过第二次重定向为模式2。大家不用担心，没有模式3了，这个重定向也最多只有两次，并且如果发生了第二次重定向，则其一定为模式2，而且这种情况只会发生在国家记录上，对于地区记录，模式1和模式2是一样的，地区记录也不会发生2次重定向。不过，这个图还可以更复杂，如图7：</p>
<p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_6.gif"><img title=" 混和情况2 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="268" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/ip_record_6.gif" width="583" border="0" /></a></p>
<p>图6. 混和情况2</p>
<p>图6是模式1下最复杂的混和情况，不过我想应该也很好理解，只不过地区记录也来重定向而已，有一点我要提醒你，如果重定向的地址是0，则表示未知的地区名。</p>
<p>所以我们总结如下：一条IP记录由[IP地址][国家记录][地区记录]组成，对于国家记录，可以有三种表示方式：字符串形式，重定向模式1和重定向模式2。对于地区记录，可以有两种表示方式：字符串形式和重定向，另外有一条规则：重定向模式1的国家记录后不能跟地区记录。按照这个总结，在这些方式中合理组合，就构成了IP记录的所有可能情况。</p>
<p><strong>二、设计的理由</strong></p>
<p>在我们继续去了解索引区的结构之前，我们先来了解一下为何记录区的结构要如此设计。我想你可能想到了答案：字符串重用。没错，在这种结构下，对于一个国家名和地区名，我只需要保存其一次就可以了。我们举例说明，为了表示方便，我们用小写字母代表IP记录，C表示国家名，A表示地区名：</p>
<ol>
<li>有两条记录a(C1, A1), b(C2, A2)，如果C1 = C2, A1 = A2，那么我们就可以使用图3显示的结构来实现重用 </li>
<li>有三条记录a(C1, A1), b(C2, A2), c(C3, A3)，如果C1 = C2, A2 = A3，现在我们想存储记录b，那么我们可以用图6的结构来实现重用 </li>
<li>有两条记录a(C1, A1), b(C2, A2)，如果C1 = C2，现在我们想存储记录b，那么我们可以采用模式2表示C2，用字符串表示A2</li>
</ol>
<p>你可以举出更多的情况，你也会发现在这种结构下，不同的字符串只需要存储一次。</p>
<p><strong>三、索引区</strong></p>
<p>在”了解文件头”部分，我们说明了文件头实际上是两个指针，分别指向了第一条索引和最后一条索引的绝对偏移。如图8所示：</p>
<p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/header_to_index.gif"><img title="文件头指向索引区图示 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="299" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/header_to_index.gif" width="485" border="0" /></a></p>
<p>图8. 文件头指向索引区图示</p>
<p>实在是很简单，不是吗？从文件头你就可以定位到索引区，然后你就可以开始搜索IP了！每条索引长度为7个字节，前4个字节是起始IP地址，后三个字节就指向了IP记录。这里有些概念需要说明一下，什么是起始IP，那么有没有结束IP？ 假设有这么一条记录：166.111.0.0 – 166.111.255.255，那么166.111.0.0就是起始IP，166.111.255.255就是结束IP，结束IP就是IP记录中的那头4个字节，这下你应该就清楚了吧。于是乎，每条索引配合一条记录，构成了一个IP范围，如果你要查找166.111.138.138所在的位置，你就会发现166.111.138.138落在了166.111.0.0 – 166.111.255.255 这个范围内，那么你就可以顺着这条索引去读取国家和地区名了。那么我们给出一个最详细的图解吧：</p>
<p><a href="http://www.biaodianfu.com/wp-content/uploads/2011/06/overall_format.gif"><img title="文件详细结构 " style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="254" alt="" src="http://www.biaodianfu.com/wp-content/uploads/2011/06/overall_format.gif" width="606" border="0" /></a></p>
<p>图9. 文件详细结构</p>
<p>现在一切都清楚了是不是？也许还有一点你不清楚，QQWry.dat的版本信息存在哪里呢？ 答案是：最后一条IP记录实际上就是版本信息，最后一条记录显示出来就是这样：255.255.255.0 255.255.255.255 纯真网络 2004年6月25日IP数据。OK，到现在你应该全部清楚了。</p>
<p><strong>四、使用示例</strong></p>
<p>下一步：我给出一个读取IP记录的程序片断，此片断摘录自LumaQQ源文件edu.tsinghua.lumaqq.IPSeeker.java，如果你有兴趣，可以下载源代码详细看看。</p>
<pre>/**
* 给定一个ip国家地区记录的偏移，返回一个IPLocation结构
* @param offset 国家记录的起始偏移
* @return IPLocation对象
*/
private IPLocation getIPLocation(long offset) {&#160; try {&#160;&#160; // 跳过4字节ip&#160;&#160; ipFile.seek(offset + 4);&#160;&#160; // 读取第一个字节判断是否标志字节&#160;&#160; byte b = ipFile.readByte();&#160;&#160; if(b == REDIRECT_MODE_1) {&#160;&#160;&#160; // 读取国家偏移&#160;&#160;&#160; long countryOffset = readLong3();&#160;&#160;&#160; // 跳转至偏移处&#160;&#160;&#160; ipFile.seek(countryOffset);&#160;&#160;&#160; // 再检查一次标志字节，因为这个时候这个地方仍然可能是个重定向&#160;&#160;&#160; b = ipFile.readByte();&#160;&#160;&#160; if(b == REDIRECT_MODE_2) {&#160;&#160;&#160;&#160; loc.country = readString(readLong3());&#160;&#160;&#160;&#160; ipFile.seek(countryOffset + 4);&#160;&#160;&#160; } else&#160;&#160;&#160; loc.country = readString(countryOffset);&#160;&#160;&#160; // 读取地区标志&#160;&#160;&#160; loc.area = readArea(ipFile.getFilePointer());&#160;&#160; } else if(b == REDIRECT_MODE_2) {&#160;&#160;&#160; loc.country = readString(readLong3());&#160;&#160;&#160; loc.area = readArea(offset + 8);&#160;&#160; } else {&#160;&#160;&#160; loc.country = readString(ipFile.getFilePointer() - 1);&#160;&#160;&#160; loc.area = readArea(ipFile.getFilePointer());&#160;&#160; }&#160;&#160; return loc;&#160; } catch (IOException e) {&#160;&#160; return null;&#160; }
}

/**
* 从offset偏移开始解析后面的字节，读出一个地区名
* @param offset 地区记录的起始偏移
* @return 地区名字符串
* @throws IOException 地区名字符串
*/
private String readArea(long offset) throws IOException {&#160; ipFile.seek(offset);&#160; byte b = ipFile.readByte();&#160; if(b == REDIRECT_MODE_1 || b == REDIRECT_MODE_2) {&#160;&#160; long areaOffset = readLong3(offset + 1);&#160;&#160; if(areaOffset == 0)&#160;&#160; return LumaQQ.getString(&quot;unknown.area&quot;);&#160;&#160; else&#160;&#160; return readString(areaOffset);&#160; } else&#160; return readString(offset);
}

/**
* 从offset位置读取3个字节为一个long，因为java为big-endian格式，所以没办法
* 用了这么一个函数来做转换
* @param offset 整数的起始偏移
* @return 读取的long值，返回-1表示读取文件失败
*/
private long readLong3(long offset) {&#160; long ret = 0;&#160; try {&#160;&#160; ipFile.seek(offset);&#160;&#160; ipFile.readFully(b3);&#160;&#160; ret |= (b3[0] &amp; 0xFF);&#160;&#160; ret |= ((b3[1] &lt;&lt; <img src='http://rovertang.com/fav/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> &amp; 0xFF00);&#160;&#160; ret |= ((b3[2] &lt;&lt; 16) &amp; 0xFF0000);&#160;&#160; return ret;&#160; } catch (IOException e) {&#160;&#160; return -1;&#160; }
}

/**
* 从当前位置读取3个字节转换成long
* @return 读取的long值，返回-1表示读取文件失败
*/
private long readLong3() {&#160; long ret = 0;&#160; try {&#160;&#160; ipFile.readFully(b3);&#160;&#160; ret |= (b3[0] &amp; 0xFF);&#160;&#160; ret |= ((b3[1] &lt;&lt; <img src='http://rovertang.com/fav/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> &amp; 0xFF00);&#160;&#160; ret |= ((b3[2] &lt;&lt; 16) &amp; 0xFF0000);&#160;&#160; return ret;&#160; } catch (IOException e) {&#160;&#160; return -1;&#160; }
}

/**
* 从offset偏移处读取一个以0结束的字符串
* @param offset 字符串起始偏移
* @return 读取的字符串，出错返回空字符串
*/
private String readString(long offset) {&#160; try {&#160;&#160; ipFile.seek(offset);&#160;&#160; int i;&#160;&#160; for(i = 0, buf[i] = ipFile.readByte(); buf[i] != 0; buf[++i] = ipFile.readByte());&#160;&#160; if(i != 0)&#160;&#160; return Utils.getString(buf, 0, i, &quot;GBK&quot;);&#160; } catch (IOException e) {&#160;&#160; log.error(e.getMessage());&#160; }&#160; return &quot;&quot;;
}</pre>
<p>代码并不复杂，getIPLocation是主要方法，它检查国家记录格式，并针对字符串形式，模式1，模式2采用不同的代码，readArea则相对简单，因为只有字符串和重定向两种情况需要处理。</p>
<p>以下为PHP版：</p>
<pre>&lt;?php
/**
* IP 地理位置查询类
*
* @author 马秉尧
* @version 1.5
* @copyright 2005 CoolCode.CN
*/
class IpLocation {&#160; /**&#160; * QQWry.Dat文件指针&#160; *&#160; * @var resource&#160; */&#160; var $fp;&#160; /**&#160; * 第一条IP记录的偏移地址&#160; *&#160; * @var int&#160; */&#160; var $firstip;&#160; /**&#160; * 最后一条IP记录的偏移地址&#160; *&#160; * @var int&#160; */&#160; var $lastip;&#160; /**&#160; * IP记录的总条数（不包含版本信息记录）&#160; *&#160; * @var int&#160; */&#160; var $totalip;&#160; /**&#160; * 返回读取的长整型数&#160; *&#160; * @access private&#160; * @return int&#160; */&#160; function getlong() {&#160;&#160; //将读取的little-endian编码的4个字节转化为长整型数&#160;&#160; $result = unpack('Vlong', fread($this-&gt;fp, 4));&#160;&#160; return $result['long'];&#160; }&#160; /**&#160; * 返回读取的3个字节的长整型数&#160; *&#160; * @access private&#160; * @return int&#160; */&#160; function getlong3() {&#160;&#160; //将读取的little-endian编码的3个字节转化为长整型数&#160;&#160; $result = unpack('Vlong', fread($this-&gt;fp, 3).chr(0));&#160;&#160; return $result['long'];&#160; }&#160; /**&#160; * 返回压缩后可进行比较的IP地址&#160; *&#160; * @access private&#160; * @param string $ip&#160; * @return string&#160; */&#160; function packip($ip) {&#160;&#160; // 将IP地址转化为长整型数，如果在PHP5中，IP地址错误，则返回False，&#160;&#160; // 这时intval将Flase转化为整数-1，之后压缩成big-endian编码的字符串&#160;&#160; return pack('N', intval(ip2long($ip)));&#160; }&#160; /**&#160; * 返回读取的字符串&#160; *&#160; * @access private&#160; * @param string $data&#160; * @return string&#160; */&#160; function getstring($data = &quot;&quot;) {&#160;&#160; $char = fread($this-&gt;fp, 1);&#160;&#160; while (ord($char) &gt; 0) {&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 字符串按照C格式保存，以\0结束&#160;&#160;&#160; $data .= $char;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 将读取的字符连接到给定字符串之后&#160;&#160;&#160; $char = fread($this-&gt;fp, 1);&#160;&#160; }&#160;&#160; return $data;&#160; }&#160; /**&#160; * 返回地区信息&#160; *&#160; * @access private&#160; * @return string&#160; */&#160; function getarea() {&#160;&#160; $byte = fread($this-&gt;fp, 1);&#160;&#160;&#160; // 标志字节&#160;&#160; switch (ord($byte)) {&#160;&#160;&#160; case 0:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 没有区域信息&#160;&#160;&#160; $area = &quot;&quot;;&#160;&#160;&#160; break;&#160;&#160;&#160; case 1:&#160;&#160;&#160; case 2:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 标志字节为1或2，表示区域信息被重定向&#160;&#160;&#160; fseek($this-&gt;fp, $this-&gt;getlong3());&#160;&#160;&#160; $area = $this-&gt;getstring();&#160;&#160;&#160; break;&#160;&#160;&#160; default:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 否则，表示区域信息没有被重定向&#160;&#160;&#160; $area = $this-&gt;getstring($byte);&#160;&#160;&#160; break;&#160;&#160; }&#160;&#160; return $area;&#160; }&#160; /**&#160; * 根据所给 IP 地址或域名返回所在地区信息&#160; *&#160; * @access public&#160; * @param string $ip&#160; * @return array&#160; */&#160; function getlocation($ip) {&#160;&#160; if (!$this-&gt;fp) return null;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 如果数据文件没有被正确打开，则直接返回空&#160;&#160; $location['ip'] = gethostbyname($ip);&#160;&#160; // 将输入的域名转化为IP地址&#160;&#160; $ip = $this-&gt;packip($location['ip']);&#160;&#160; // 将输入的IP地址转化为可比较的IP地址&#160;&#160; // 不合法的IP地址会被转化为255.255.255.255&#160;&#160; // 对分搜索&#160;&#160; $l = 0;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 搜索的下边界&#160;&#160; $u = $this-&gt;totalip;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 搜索的上边界&#160;&#160; $findip = $this-&gt;lastip;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 如果没有找到就返回最后一条IP记录（QQWry.Dat的版本信息）&#160;&#160; while ($l &lt;= $u) {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 当上边界小于下边界时，查找失败&#160;&#160;&#160; $i = floor(($l + $u) / 2);&#160; // 计算近似中间记录&#160;&#160;&#160; fseek($this-&gt;fp, $this-&gt;firstip + $i * 7);&#160;&#160;&#160; $beginip = strrev(fread($this-&gt;fp, 4));&#160;&#160;&#160;&#160; // 获取中间记录的开始IP地址&#160;&#160;&#160; // strrev函数在这里的作用是将little-endian的压缩IP地址转化为big-endian的格式&#160;&#160;&#160; // 以便用于比较，后面相同。&#160;&#160;&#160; if ($ip &lt; $beginip) {&#160;&#160;&#160;&#160;&#160;&#160; // 用户的IP小于中间记录的开始IP地址时&#160;&#160;&#160;&#160; $u = $i - 1;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 将搜索的上边界修改为中间记录减一&#160;&#160;&#160; }&#160;&#160;&#160; else {&#160;&#160;&#160;&#160; fseek($this-&gt;fp, $this-&gt;getlong3());&#160;&#160;&#160;&#160; $endip = strrev(fread($this-&gt;fp, 4));&#160;&#160; // 获取中间记录的结束IP地址&#160;&#160;&#160;&#160; if ($ip &gt; $endip) {&#160;&#160;&#160;&#160; // 用户的IP大于中间记录的结束IP地址时&#160;&#160;&#160;&#160;&#160; $l = $i + 1;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 将搜索的下边界修改为中间记录加一&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; else {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 用户的IP在中间记录的IP范围内时&#160;&#160;&#160;&#160;&#160; $findip = $this-&gt;firstip + $i * 7;&#160;&#160;&#160;&#160;&#160; break;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 则表示找到结果，退出循环&#160;&#160;&#160;&#160; }&#160;&#160;&#160; }&#160;&#160; }&#160;&#160; //获取查找到的IP地理位置信息&#160;&#160; fseek($this-&gt;fp, $findip);&#160;&#160; $location['beginip'] = long2ip($this-&gt;getlong());&#160;&#160; // 用户IP所在范围的开始地址&#160;&#160; $offset = $this-&gt;getlong3();&#160;&#160; fseek($this-&gt;fp, $offset);&#160;&#160; $location['endip'] = long2ip($this-&gt;getlong());&#160;&#160;&#160;&#160; // 用户IP所在范围的结束地址&#160;&#160; $byte = fread($this-&gt;fp, 1);&#160;&#160;&#160; // 标志字节&#160;&#160; switch (ord($byte)) {&#160;&#160;&#160; case 1:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 标志字节为1，表示国家和区域信息都被同时重定向&#160;&#160;&#160; $countryOffset = $this-&gt;getlong3();&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 重定向地址&#160;&#160;&#160; fseek($this-&gt;fp, $countryOffset);&#160;&#160;&#160; $byte = fread($this-&gt;fp, 1);&#160;&#160;&#160; // 标志字节&#160;&#160;&#160; switch (ord($byte)) {&#160;&#160;&#160;&#160; case 2:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 标志字节为2，表示国家信息又被重定向&#160;&#160;&#160;&#160; fseek($this-&gt;fp, $this-&gt;getlong3());&#160;&#160;&#160;&#160; $location['country'] = $this-&gt;getstring();&#160;&#160;&#160;&#160; fseek($this-&gt;fp, $countryOffset + 4);&#160;&#160;&#160;&#160; $location['area'] = $this-&gt;getarea();&#160;&#160;&#160;&#160; break;&#160;&#160;&#160;&#160; default:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 否则，表示国家信息没有被重定向&#160;&#160;&#160;&#160; $location['country'] = $this-&gt;getstring($byte);&#160;&#160;&#160;&#160; $location['area'] = $this-&gt;getarea();&#160;&#160;&#160;&#160; break;&#160;&#160;&#160; }&#160;&#160;&#160; break;&#160;&#160;&#160; case 2:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 标志字节为2，表示国家信息被重定向&#160;&#160;&#160; fseek($this-&gt;fp, $this-&gt;getlong3());&#160;&#160;&#160; $location['country'] = $this-&gt;getstring();&#160;&#160;&#160; fseek($this-&gt;fp, $offset + 8);&#160;&#160;&#160; $location['area'] = $this-&gt;getarea();&#160;&#160;&#160; break;&#160;&#160;&#160; default:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 否则，表示国家信息没有被重定向&#160;&#160;&#160; $location['country'] = $this-&gt;getstring($byte);&#160;&#160;&#160; $location['area'] = $this-&gt;getarea();&#160;&#160;&#160; break;&#160;&#160; }&#160;&#160; if ($location['country'] == &quot; CZ88.NET&quot;) {&#160; // CZ88.NET表示没有有效信息&#160;&#160;&#160; $location['country'] = &quot;未知&quot;;&#160;&#160; }&#160;&#160; if ($location['area'] == &quot; CZ88.NET&quot;) {&#160;&#160;&#160; $location['area'] = &quot;&quot;;&#160;&#160; }&#160;&#160; return $location;&#160; }&#160; /**&#160; * 构造函数，打开 QQWry.Dat 文件并初始化类中的信息&#160; *&#160; * @param string $filename&#160; * @return IpLocation&#160; */&#160; function IpLocation($filename = &quot;QQWry.Dat&quot;) {&#160;&#160; $this-&gt;fp = 0;&#160;&#160; if (($this-&gt;fp = @fopen($filename, 'rb')) !== false) {&#160;&#160;&#160; $this-&gt;firstip = $this-&gt;getlong();&#160;&#160;&#160; $this-&gt;lastip = $this-&gt;getlong();&#160;&#160;&#160; $this-&gt;totalip = ($this-&gt;lastip - $this-&gt;firstip) / 7;&#160;&#160;&#160; //注册析构函数，使其在程序执行结束时执行&#160;&#160;&#160; register_shutdown_function(array(&amp;$this, '_IpLocation'));&#160;&#160; }&#160; }&#160; /**&#160; * 析构函数，用于在页面执行结束后自动关闭打开的文件。&#160; *&#160; */&#160; function _IpLocation() {&#160;&#160; if ($this-&gt;fp) {&#160;&#160;&#160; fclose($this-&gt;fp);&#160;&#160; }&#160;&#160; $this-&gt;fp = 0;&#160; }
}
?&gt;</pre>
<p>以下为Python版的读取程序：</p>
<pre>#!/usr/bin/env python
# coding: utf-8

'''用Python脚本查询纯真IP库

QQWry.Dat的格式如下:

+----------+
|&#160; 文件头&#160; |&#160; (8字节)
+----------+
|&#160; 记录区&#160; | （不定长）
+----------+
|&#160; 索引区&#160; | （大小由文件头决定）
+----------+

文件头：4字节开始索引偏移值+4字节结尾索引偏移值

记录区： 每条IP记录格式 ==&gt; IP地址[国家信息][地区信息]&#160;&#160;&#160; 对于国家记录，可以有三种表示方式：&#160;&#160;&#160;&#160;&#160;&#160;&#160; 字符串形式(IP记录第5字节不等于0x01和0x02的情况)，&#160;&#160;&#160;&#160;&#160;&#160;&#160; 重定向模式1(第5字节为0x01),则接下来3字节为国家信息存储地的偏移值&#160;&#160;&#160;&#160;&#160;&#160;&#160; 重定向模式(第5字节为0x02),&#160;&#160;&#160; 对于地区记录，可以有两种表示方式： 字符串形式和重定向&#160;&#160;&#160; 最后一条规则：重定向模式1的国家记录后不能跟地区记录

索引区： 每条索引记录格式 ==&gt; 4字节起始IP地址 + 3字节指向IP记录的偏移值&#160;&#160;&#160; 索引区的IP和它指向的记录区一条记录中的IP构成一个IP范围。查询信息是这个&#160;&#160;&#160; 范围内IP的信息

'''

import sys
import socket
from struct import pack, unpack

class IPInfo(object):&#160;&#160;&#160;&#160; '''QQWry.Dat数据库查询功能集合&#160;&#160;&#160;&#160; '''&#160;&#160;&#160;&#160; def __init__(self, dbname):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ''' 初始化类，读取数据库内容为一个字符串，&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 通过开始8字节确定数据库的索引信息'''&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; self.dbname = dbname&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; f = file(dbname, 'r')&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; self.img = f.read()&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; f.close()&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # QQWry.Dat文件的开始8字节是索引信息,前4字节是开始索引的偏移值，&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 后4字节是结束索引的偏移值。&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (self.firstIndex, self.lastIndex) = unpack('II', self.img[:8])&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 每条索引长7字节，这里得到索引总个数&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; self.indexCount = (self.lastIndex - self.firstIndex) / 7 + 1&#160;&#160;&#160;&#160; def getString(self, offset = 0):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ''' 读取字符串信息，包括&quot;国家&quot;信息和&quot;地区&quot;信息&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; QQWry.Dat的记录区每条信息都是一个以'\0'结尾的字符串'''&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o2 = self.img.find('\0', offset)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #return self.img[offset:o2]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 有可能只有国家信息没有地区信息，&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; gb2312_str = self.img[offset:o2]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; try:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; utf8_str = unicode(gb2312_str,'gb2312').encode('utf-8')&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; except:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return '未知'&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return utf8_str&#160;&#160;&#160;&#160; def getLong3(self, offset = 0):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; '''QQWry.Dat中的偏移记录都是3字节，本函数取得3字节的偏移量的常规表示&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; QQWry.Dat使用“字符串“存储这些值'''&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; s = self.img[offset: offset + 3]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; s += '\0'&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # unpack用一个'I'作为format，后面的字符串必须是4字节&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return unpack('I', s)[0]&#160;&#160;&#160;&#160; def getAreaAddr(self, offset = 0):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ''' 通过给出偏移值，取得区域信息字符串，'''&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; byte = ord(self.img[offset])&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if byte == 1 or byte == 2:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 第一个字节为1或者2时，取得2-4字节作为一个偏移量调用自己&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; p = self.getLong3(offset + 1)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return self.getAreaAddr(p)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return self.getString(offset)&#160;&#160;&#160;&#160; def getAddr(self, offset, ip = 0):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; img = self.img&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o = offset&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; byte = ord(img[o])&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if byte == 1:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 重定向模式1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # [IP][0x01][国家和地区信息的绝对偏移地址]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 使用接下来的3字节作为偏移量调用字节取得信息&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return self.getAddr(self.getLong3(o + 1))&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if byte == 2:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 重定向模式2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # [IP][0x02][国家信息的绝对偏移][地区信息字符串]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 使用国家信息偏移量调用自己取得字符串信息&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cArea = self.getAreaAddr(self.getLong3(o + 1))&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o += 4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 跳过前4字节取字符串作为地区信息&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; aArea = self.getAreaAddr(o)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return cArea, aArea&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if byte != 1 and byte != 2:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 最简单的IP记录形式，[IP][国家信息][地区信息]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 重定向模式1有种情况就是偏移量指向包含国家和地区信息两个字符串&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 即偏移量指向的第一个字节不是1或2,就使用这里的分支&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 简单地说：取连续取两个字符串！&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cArea = self.getString(o)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #o += len(cArea) + 1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 我们已经修改cArea为utf-8字符编码了，len取得的长度会有变，&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 用下面方法得到offset&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o = self.img.find('\0',o) + 1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; aArea = self.getString(o)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return cArea, aArea&#160;&#160;&#160;&#160; def find(self, ip, l, r):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ''' 使用二分法查找网络字节编码的IP地址的索引记录'''&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if r - l &lt;= 1:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return l&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; m = (l + r) / 2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o = self.firstIndex + m * 7&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; new_ip = unpack('I', self.img[o: o+4])[0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ip &lt;= new_ip:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return self.find(ip, l, m)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return self.find(ip, m, r)&#160;&#160;&#160;&#160; def getIPAddr(self, ip):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ''' 调用其他函数，取得信息！'''&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 使用网络字节编码IP地址&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ip = unpack('!I', socket.inet_aton(ip))[0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 使用 self.find 函数查找ip的索引偏移&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; i = self.find(ip, 0, self.indexCount - 1)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 得到索引记录&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o = self.firstIndex + i * 7&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 索引记录格式是： 前4字节IP信息+3字节指向IP记录信息的偏移量&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 这里就是使用后3字节作为偏移量得到其常规表示（QQWry.Dat用字符串表示值）&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o2 = self.getLong3(o + 4)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # IP记录偏移值+4可以丢弃前4字节的IP地址信息。&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (c, a) = self.getAddr(o2 + 4)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return c, a&#160;&#160;&#160;&#160; def output(self, first, last):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for i in range(first, last):&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o = self.firstIndex +&#160; i * 7&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ip = socket.inet_ntoa(pack('!I', unpack('I', self.img[o:o+4])[0]))&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; offset = self.getLong3(o + 4)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (c, a) = self.getAddr(offset + 4)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; print &quot;%s %d %s/%s&quot; % (ip, offset, c, a)

def main():&#160;&#160;&#160;&#160; i = IPInfo('QQWry.Dat')&#160;&#160;&#160;&#160; (c, a) = i.getIPAddr(sys.argv[1])&#160;&#160;&#160;&#160; print '%s %s/%s' % (sys.argv[1], c, a)

if __name__ == '__main__':&#160;&#160;&#160;&#160; main()

# changelog
# 时间：2009年5月29日
# 1. 工具下面网友的建议，修改&quot;o += len(cArea) + 1&quot;
#&#160;&#160;&#160; http://linuxtoy.org/archives/python-ip.html#comment-113960
#&#160;&#160;&#160; 因为这个时候我已经把得到的字符串变成utf-8编码了，长度会有变化！</pre>
<p><strong>五、总结</strong></p>
<p>纯真IP数据库的结构使得查找IP简单迅速，不过你想要编辑它却是比较麻烦的，我想应该需要专门的工具来生成QQWry.dat文件，由于其文件格式的限制，你要直接添加IP记录就不容易了。不过，能查到IP已经很开心了，希望纯真记录越来越多～。</p>
<p>下面就为大家推荐一款IP数据库解压软甲：IPLook，其可将QQIP库(如纯真版、Phoenix版、梧州版等)转换成txt文件格式；可将txt文件格式的IP数据转换成dat文件格式(QQWry.dat),轻松打造自己的IP库。</p>
<p>IPLook下载地址：<a href="http://vdisk.weibo.com/s/nPtD">http://vdisk.weibo.com/s/nPtD</a></p>
<p>QQWry.dat下载地址：<a href="http://www.cz88.net/fox/">http://www.cz88.net/fox/</a></p>
<p>参考地址：<a href="http://lumaqq.linuxsir.org/article/qqwry_format_detail.html">http://lumaqq.linuxsir.org/article/qqwry_format_detail.html</a></p>
<div style=float:right><!-- JiaThis Button BEGIN -->
<div id="ckepop">
	<a class="jiathis_button_copy"></a>
	<a class="jiathis_button_email"></a>
	<a class="jiathis_button_fav"></a>
	<a class="jiathis_button_print"></a>
	<a class="jiathis_button_tsina"></a>
	<a class="jiathis_button_tqq"></a>
	<a class="jiathis_button_qzone"></a>
	<a class="jiathis_button_renren"></a>
	<a class="jiathis_button_kaixin001"></a>
	<a class="jiathis_button_baidu"></a>
	<a class="jiathis_button_tsohu"></a>
	<a class="jiathis_button_t163"></a>
	<a class="jiathis_button_douban"></a>
	<a class="jiathis_button_twitter"></a>
	<a class="jiathis_button_fanfou"></a>
	<a href="http://www.jiathis.com/share?uid=1571159" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank"></a>
	<a class="jiathis_counter_style"></a>
</div>
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jia.js?uid=1571159" charset="utf-8"></script>
<!-- JiaThis Button END --></div>]]></content:encoded>
			<wfw:commentRss>http://rovertang.com/fav/archives/48/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>百度搜索URL参数解析</title>
		<link>http://rovertang.com/fav/archives/44</link>
		<comments>http://rovertang.com/fav/archives/44#comments</comments>
		<pubDate>Mon, 30 Jan 2012 11:55:49 +0000</pubDate>
		<dc:creator>Rover</dc:creator>
				<category><![CDATA[网站&程序]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://rovertang.com/fav/?p=44</guid>
		<description><![CDATA[百度的搜索URL存在着一定的规律和逻辑，下面的链接是我使用百度搜索“标点符”后得到的链接，下面就来一起分析下百度搜索结果URL的秘密。

<a href="http://www.baidu.com/s?wd=%E6%A0%87%E7%82%B9%E7%AC%A6&#38;rsv_spt=1&#38;issp=1&#38;rsv_bp=0&#38;ie=utf-8&#38;tn=baiduhome_pg&#38;inputT=2969">http://www.baidu.com/s?wd=%E6%A0%87%E7%82%B9%E7%AC%A6&#38;rsv_spt=1&#38;issp=1&#38;rsv_bp=0&#38;ie=utf-8&#38;tn=baiduhome_pg&#38;inputT=2969</a>

URL中的s?表示搜索，&#38;符号起到参数分割的作用。上述链接涉及到的参数如下：
<ul>
	<li>wd：Keyword，查询的关键词，有时还会是 word，比如<a href="http://www.hao123.com/">www.hao123.com</a>打开的链接就是word，wd后面的关键词使用gb2312进行编码，如果搜索词中出现空格则使用+号替换；</li>
	<li>rsv_spt：识别浏览器，目前测试下来Chrome、FireFox、Safari的为3，IE浏览器为1；</li>
	<li>rsv_bp：判断搜索位置：0为从百度首页进入，1为搜索结果顶部搜索，2为搜索结果底部搜索；</li>
	<li>ie：Input Encoding，查询关键词的编码，缺省设置为简体中文，即ie=gb2312；</li>
	<li>tn：搜索框来源标识，如百度首页的就是baiduhome_ph，hao123站来的sitehao123，遨游浏览器的为tn=myie2dg等。除了百度自身用来数据统计好，词数据还对百度搜索联盟分成起到跟踪作用。tn=baidulocal 表示百度站内搜索，返回的结果很干净，无广告干扰；</li>
	<li>inputT：搜索响应时间，单位是毫秒；</li>
</ul>
以上我上面的URL中出现的参数，但是百度的搜索引擎参数远远比上面的还要多。再来看看还有哪些参数：
<ul>
	<li>bs：Before Search，上一次搜索的关键词；百度会记录上一次用户的搜索词是什么；</li>
	<li>sr：结合bs使用。一般查询sr=0或者为空值，但sr=1时，查询将结合bs的值一起作为查询的关键字。默认值为0，除0，1外其它值无效。</li>
	<li>pn：Page Number，搜索结果的页码，从零开始计数。即pn = ${结果页码-1}*rn；</li>
	<li>rn：Record Number，搜索结果显示条数，缺省设置rn=10，取值范围:10-100；</li>
	<li>cl：Class，搜索类型，cl=3为网页搜索，cl=2为图片搜索；</li>
	<li>lm：搜索结果的时间限制。以天为单位，例如搜索最近一个月的网页，lm=30.默认值为0，表示没有时间限制；</li>
	<li>ct：语言限制。0-所有语言，1-简体中文网页，2-繁体中文网页；其它不确定或者无效或。默认值为0；</li>
	<li>q5：搜索内容位置限制。0-所有内容；1-网页标题(相当于使用’title:’查询前缀)；2-url(相当于使用’inurl:’查询前缀)；其它值等效于0，默认值为0 ；</li>
	<li>q6：搜索内容网站限制。例如q6=www.biaodianfu.com，表示只搜索<a href="http://www.biaodianfu.com/">http://www.biaodianfu.com/</a>的网页；相当于使用了’site:前缀’，默认值为空</li>
	<li>dq：不建议使用该参数。查询内容来原的地区限制。具体值有百度确定，默认值为空。使用这个参数的效果很差；</li>
	<li>oq：相关搜索的主词，例如，搜索“标点符”后点击“标点符号”，出现的相关搜索，用来记录来源词“标点符”，或输入搜索词，输入到一半点推荐关键词的那个词，两个通过出现rsp/rsv_bp进行区分；</li>
	<li>rsp：相关搜索词的位置，第一个推荐词为0，第二个为1，以此类推；</li>
	<li>usm：在百度搜索任何词从任何一页点到第三页以后的，都会随机出现usm的参数。当usm=0的时候是正常排名 。当usm=1的时候所有排名后移一位，当usm=2的时候排名后移两位，以此类推。而词参数影响排名的效果只对第三页以及第三页以后的有效，也就是说前20名的排名不受词因素影响。此参数具体作用未知；</li>
	<li>f：搜索判断，f=8用户自主搜索，f=3下拉框推荐，f=1相关搜索；</li>
	<li>rsv_ers：出现的值为rsv_ers=xn0或rsv_ers=xn1，目前还不知道具体的作用。</li>
	<li>rs_src：目前看到的都是rs_src=0，此参数与rsv_ers同时出现。</li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>百度的搜索URL存在着一定的规律和逻辑，下面的链接是我使用百度搜索“标点符”后得到的链接，下面就来一起分析下百度搜索结果URL的秘密。</p>
<p><a href="http://www.baidu.com/s?wd=%E6%A0%87%E7%82%B9%E7%AC%A6&amp;rsv_spt=1&amp;issp=1&amp;rsv_bp=0&amp;ie=utf-8&amp;tn=baiduhome_pg&amp;inputT=2969">http://www.baidu.com/s?wd=%E6%A0%87%E7%82%B9%E7%AC%A6&amp;rsv_spt=1&amp;issp=1&amp;rsv_bp=0&amp;ie=utf-8&amp;tn=baiduhome_pg&amp;inputT=2969</a></p>
<p>URL中的s?表示搜索，&amp;符号起到参数分割的作用。上述链接涉及到的参数如下：</p>
<ul>
<li>wd：Keyword，查询的关键词，有时还会是 word，比如<a href="http://www.hao123.com/">www.hao123.com</a>打开的链接就是word，wd后面的关键词使用gb2312进行编码，如果搜索词中出现空格则使用+号替换；</li>
<li>rsv_spt：识别浏览器，目前测试下来Chrome、FireFox、Safari的为3，IE浏览器为1；</li>
<li>rsv_bp：判断搜索位置：0为从百度首页进入，1为搜索结果顶部搜索，2为搜索结果底部搜索；</li>
<li>ie：Input Encoding，查询关键词的编码，缺省设置为简体中文，即ie=gb2312；</li>
<li>tn：搜索框来源标识，如百度首页的就是baiduhome_ph，hao123站来的sitehao123，遨游浏览器的为tn=myie2dg等。除了百度自身用来数据统计好，词数据还对百度搜索联盟分成起到跟踪作用。tn=baidulocal 表示百度站内搜索，返回的结果很干净，无广告干扰；</li>
<li>inputT：搜索响应时间，单位是毫秒；</li>
</ul>
<p>以上我上面的URL中出现的参数，但是百度的搜索引擎参数远远比上面的还要多。再来看看还有哪些参数：</p>
<ul>
<li>bs：Before Search，上一次搜索的关键词；百度会记录上一次用户的搜索词是什么；</li>
<li>sr：结合bs使用。一般查询sr=0或者为空值，但sr=1时，查询将结合bs的值一起作为查询的关键字。默认值为0，除0，1外其它值无效。</li>
<li>pn：Page Number，搜索结果的页码，从零开始计数。即pn = ${结果页码-1}*rn；</li>
<li>rn：Record Number，搜索结果显示条数，缺省设置rn=10，取值范围:10-100；</li>
<li>cl：Class，搜索类型，cl=3为网页搜索，cl=2为图片搜索；</li>
<li>lm：搜索结果的时间限制。以天为单位，例如搜索最近一个月的网页，lm=30.默认值为0，表示没有时间限制；</li>
<li>ct：语言限制。0-所有语言，1-简体中文网页，2-繁体中文网页；其它不确定或者无效或。默认值为0；</li>
<li>q5：搜索内容位置限制。0-所有内容；1-网页标题(相当于使用’title:’查询前缀)；2-url(相当于使用’inurl:’查询前缀)；其它值等效于0，默认值为0 ；</li>
<li>q6：搜索内容网站限制。例如q6=www.biaodianfu.com，表示只搜索<a href="http://www.biaodianfu.com/">http://www.biaodianfu.com/</a>的网页；相当于使用了’site:前缀’，默认值为空</li>
<li>dq：不建议使用该参数。查询内容来原的地区限制。具体值有百度确定，默认值为空。使用这个参数的效果很差；</li>
<li>oq：相关搜索的主词，例如，搜索“标点符”后点击“标点符号”，出现的相关搜索，用来记录来源词“标点符”，或输入搜索词，输入到一半点推荐关键词的那个词，两个通过出现rsp/rsv_bp进行区分；</li>
<li>rsp：相关搜索词的位置，第一个推荐词为0，第二个为1，以此类推；</li>
<li>usm：在百度搜索任何词从任何一页点到第三页以后的，都会随机出现usm的参数。当usm=0的时候是正常排名 。当usm=1的时候所有排名后移一位，当usm=2的时候排名后移两位，以此类推。而词参数影响排名的效果只对第三页以及第三页以后的有效，也就是说前20名的排名不受词因素影响。此参数具体作用未知；</li>
<li>f：搜索判断，f=8用户自主搜索，f=3下拉框推荐，f=1相关搜索；</li>
<li>rsv_ers：出现的值为rsv_ers=xn0或rsv_ers=xn1，目前还不知道具体的作用。</li>
<li>rs_src：目前看到的都是rs_src=0，此参数与rsv_ers同时出现。</li>
</ul>
<div style=float:right><!-- JiaThis Button BEGIN -->
<div id="ckepop">
	<a class="jiathis_button_copy"></a>
	<a class="jiathis_button_email"></a>
	<a class="jiathis_button_fav"></a>
	<a class="jiathis_button_print"></a>
	<a class="jiathis_button_tsina"></a>
	<a class="jiathis_button_tqq"></a>
	<a class="jiathis_button_qzone"></a>
	<a class="jiathis_button_renren"></a>
	<a class="jiathis_button_kaixin001"></a>
	<a class="jiathis_button_baidu"></a>
	<a class="jiathis_button_tsohu"></a>
	<a class="jiathis_button_t163"></a>
	<a class="jiathis_button_douban"></a>
	<a class="jiathis_button_twitter"></a>
	<a class="jiathis_button_fanfou"></a>
	<a href="http://www.jiathis.com/share?uid=1571159" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank"></a>
	<a class="jiathis_counter_style"></a>
</div>
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jia.js?uid=1571159" charset="utf-8"></script>
<!-- JiaThis Button END --></div>]]></content:encoded>
			<wfw:commentRss>http://rovertang.com/fav/archives/44/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>产品策划模板</title>
		<link>http://rovertang.com/fav/archives/39</link>
		<comments>http://rovertang.com/fav/archives/39#comments</comments>
		<pubDate>Mon, 30 Jan 2012 11:50:07 +0000</pubDate>
		<dc:creator>Rover</dc:creator>
				<category><![CDATA[产品&项目]]></category>
		<category><![CDATA[产品]]></category>

		<guid isPermaLink="false">http://rovertang.com/fav/?p=39</guid>
		<description><![CDATA[一． 产品描述
<ol>
	<li>是什么样的产品？</li>
	<li>产品特色是什么？</li>
	<li>和市场上的产品有什么不同？</li>
	<li>生命周期如和何延续？</li>
</ol>
二．市场分析
<ol>
	<li>市场上现有产品分析</li>
	<li>目标消费群分析</li>
	<li>潜在目标消费群</li>
	<li>产品资费分析</li>
	<li>用户操作习惯分析</li>
</ol>
三． 产品定位

四．市场推广
<ol>
	<li>阶段一</li>
	<li>阶段二</li>
	<li>阶段三</li>
	<li>阶段四</li>
</ol>
五．效益估算
<ol>
	<li>产品资费</li>
	<li>产品用户群数量</li>
	<li>产品潜在用户数量</li>
	<li>每月产品收益</li>
</ol>
六．产品内容介绍
<ol>
	<li>产品规则</li>
	<li>用户属性</li>
	<li>体系介绍</li>
	<li>用户等级</li>
	<li>主要功能介绍</li>
</ol>
七. 产品开发进度
<ol>
	<li>产品提案</li>
	<li>产品思路整合</li>
	<li>再次提案</li>
	<li>产品内容再次整合</li>
	<li>产品流程编写</li>
	<li>产品流程修改</li>
	<li>产品流程提交</li>
	<li>产品工单</li>
	<li>技术开发</li>
	<li>内部测试</li>
</ol>
八.产品人员列表和职责
<ol>
	<li>产品经理（项目经理）</li>
	<li>产品策划</li>
	<li>编辑人员</li>
	<li>技术人员</li>
	<li>测试人员</li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>一． 产品描述</p>
<ol>
<li>是什么样的产品？</li>
<li>产品特色是什么？</li>
<li>和市场上的产品有什么不同？</li>
<li>生命周期如和何延续？</li>
</ol>
<p>二．市场分析</p>
<ol>
<li>市场上现有产品分析</li>
<li>目标消费群分析</li>
<li>潜在目标消费群</li>
<li>产品资费分析</li>
<li>用户操作习惯分析</li>
</ol>
<p>三． 产品定位</p>
<p>四．市场推广</p>
<ol>
<li>阶段一</li>
<li>阶段二</li>
<li>阶段三</li>
<li>阶段四</li>
</ol>
<p>五．效益估算</p>
<ol>
<li>产品资费</li>
<li>产品用户群数量</li>
<li>产品潜在用户数量</li>
<li>每月产品收益</li>
</ol>
<p>六．产品内容介绍</p>
<ol>
<li>产品规则</li>
<li>用户属性</li>
<li>体系介绍</li>
<li>用户等级</li>
<li>主要功能介绍</li>
</ol>
<p>七. 产品开发进度</p>
<ol>
<li>产品提案</li>
<li>产品思路整合</li>
<li>再次提案</li>
<li>产品内容再次整合</li>
<li>产品流程编写</li>
<li>产品流程修改</li>
<li>产品流程提交</li>
<li>产品工单</li>
<li>技术开发</li>
<li>内部测试</li>
</ol>
<p>八.产品人员列表和职责</p>
<ol>
<li>产品经理（项目经理）</li>
<li>产品策划</li>
<li>编辑人员</li>
<li>技术人员</li>
<li>测试人员</li>
</ol>
<div style=float:right><!-- JiaThis Button BEGIN -->
<div id="ckepop">
	<a class="jiathis_button_copy"></a>
	<a class="jiathis_button_email"></a>
	<a class="jiathis_button_fav"></a>
	<a class="jiathis_button_print"></a>
	<a class="jiathis_button_tsina"></a>
	<a class="jiathis_button_tqq"></a>
	<a class="jiathis_button_qzone"></a>
	<a class="jiathis_button_renren"></a>
	<a class="jiathis_button_kaixin001"></a>
	<a class="jiathis_button_baidu"></a>
	<a class="jiathis_button_tsohu"></a>
	<a class="jiathis_button_t163"></a>
	<a class="jiathis_button_douban"></a>
	<a class="jiathis_button_twitter"></a>
	<a class="jiathis_button_fanfou"></a>
	<a href="http://www.jiathis.com/share?uid=1571159" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank"></a>
	<a class="jiathis_counter_style"></a>
</div>
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jia.js?uid=1571159" charset="utf-8"></script>
<!-- JiaThis Button END --></div>]]></content:encoded>
			<wfw:commentRss>http://rovertang.com/fav/archives/39/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>241个国家(区域)名称和三字码</title>
		<link>http://rovertang.com/fav/archives/34</link>
		<comments>http://rovertang.com/fav/archives/34#comments</comments>
		<pubDate>Tue, 17 Jan 2012 06:28:42 +0000</pubDate>
		<dc:creator>Rover</dc:creator>
				<category><![CDATA[导航&地图]]></category>
		<category><![CDATA[网站&程序]]></category>
		<category><![CDATA[国家名称]]></category>
		<category><![CDATA[国家编码]]></category>

		<guid isPermaLink="false">http://rovertang.com/fav/?p=34</guid>
		<description><![CDATA[<blockquote>   <p></p>    <p>AFG<strike>,</strike>Afghanistan      <br />AHO,Netherlands Antilles      <br />AIA,Anguilla      <br />ALA,Aaland Islands      <br />ALB,Albania      <br />ALG,Algeria      <br />AND,Andorra      <br />ANG,Angola      <br />ANT,Antigua &#38; Barbuda      <br />ARG,Argentina      <br />ARM,Armenia      <br />ARU,Aruba      <br />ASA,American Samoa      <br />ATA,Antarctica      <br />ATF,French Southern &#38; Atlantic Lands      <br />AUS,Australia      <br />AUT,Austria      <br />AZE,Azerbaijan      <br />BAH,Bahamas      <br />BAN,Bangladesh      <br />BAR,Barbados      <br />BDI,Burundi      <br />BEL,Belgium      <br />BEN,Benin      <br />BER,Bermuda      <br />BHU,Bhutan      <br />BIH,Bosnia &#38; Herzegovina      <br />BIZ,Belize      <br />BLR,Belarus      <br />BOL,Bolivia      <br />BOT,Botswana      <br />BRA,Brazil      <br />BRN,Bahrain      <br />BRU,Brunei      <br />BUL,Bulgaria      <br />BUR,Burkina Faso      <br />BVT,Bouvet Island      <br />CAF,Central African Rep.      <br />CAM,Cambodia      <br />CAN,Canada      <br />CAY,Cayman Islands      <br />CCK,Cocos (Keeling) Islands      <br />CGO,Congo (Rep.)      <br />CHA,Chad      <br />CHI,Chile      <br />CHN,China      <br />CIV,Cote d'Ivoire      <br />CMR,Cameroon      <br />COD,Congo (Dem. Rep.)      <br />COK,Cook Islands      <br />COL,Colombia      <br />COM,Comoros      <br />CPV,Cape Verde      <br />CRC,Costa Rica      <br />CRG,Montenegro      <br />CRO,Croatia      <br />CUB,Cuba      <br />CXR,Christmas Islands      <br />CYP,Cyprus      <br />CZE,Czech Republic      <br />DEN,Denmark      <br />DJI,Djibouti      <br />DMA,Dominica      <br />DOM,Dominican Republic      <br />ECU,Ecuador      <br />EGY,Egypt      <br />ERI,Eritrea      <br />ESA,El Salvador      <br />ESP,Spain      <br />EST,Estonia      <br />ETH,Ethiopia      <br />FIJ,Fiji      <br />FIN,Finland      <br />FLK,Falkland Islands      <br />FRA,France      <br />FRO,Faroe Islands      <br />FSM,Micronesia      <br />GAB,Gabon      <br />GAM,Gambia      <br />GBR,Great Britain      <br />GBS,Guinea-Bissau      <br />GEO,Georgia      <br />GEQ,Equatorial Guiana      <br />GER,Germany      <br />GHA,Ghana      <br />GIB,Gibraltar      <br />GLP,Guadeloupe      <br />GRE,Greece      <br />GRL,Greenland      <br />GRN,Grenada      <br />GUA,Guatemala      <br />GUF,French Guiana      <br />GUI,Guinea      <br />GUM,Guam      <br />GUY,Guyana      <br />GGY,Guernsey      <br />HAI,Haiti      <br />HKG,Hong Kong      <br />HMD,Heard Island &#38; McDonalds Islands      <br />HON,Honduras      <br />HUN,Hungary      <br />IMN,Isle of Man      <br />INA,Indonesia      <br />IND,India      <br />IOT,British Indian Ocean Territory      <br />IRI,Iran      <br />IRL,Ireland      <br />IRQ,Iraq      <br />ISL,Iceland      <br />ISR,Israel      <br />ISV,Virgin Islands (US)      <br />ITA,Italy      <br />IVB,Virgin Islands (UK)      <br />JAM,Jamaica      <br />JEY,Jersey      <br />JOR,Jordan      <br />JPN,Japan      <br />KAZ,Kazakhstan      <br />KEN,Kenya      <br />KGZ,Kyrgyzstan      <br />KIR,Kiribati      <br />KOR,South Korea      <br />KSA,Saudi Arabia      <br />KUW,Kuwait      <br />LAO,Laos      <br />LAT,Latvia      <br />LBA,Libya      <br />LBR,Liberia      <br />LCA,St Lucia      <br />LES,Lesotho      <br />LIB,Lebanon      <br />LIE,Liechtenstein      <br />LTU,Lithuania      <br />LUX,Luxembourg      <br />MAC,Macau      <br />MAD,Madagascar      <br />MAR,Morocco      <br />MAS,Malaysia      <br />MAW,Malawi      <br />MDA,Moldova      <br />MDV,Maldives      <br />MEX,Mexico      <br />MGL,Mongolia      <br />MHL,Marshall Islands      <br />MKD,Macedonia      <br />MLI,Mali      <br />MLT,Malta      <br />MMR,Myanmar (Burma)      <br />MNP,Northern Mariana Islands      <br />MON,Monaco      <br />MOZ,Mozambique      <br />MRI,Mauritius      <br />MTN,Mauritania      <br />MTQ,Martinique      <br />MYT,Mayotte      <br />NAM,Namibia      <br />NCA,Nicaragua      <br />NCL,New Caledonia      <br />NED,Netherlands      <br />NEP,Nepal      <br />NEW,Papua New Guinea      <br />NFK,Norfolk Island      <br />NGR,Nigeria      <br />NIG,Niger      <br />NIU,Niure      <br />NOR,Norway      <br />NRU,Nauru      <br />NZL,New Zealand      <br />OMA,Oman      <br />PAK,Pakistan      <br />PAN,Panama      <br />PAR,Paraguay      <br />PCN,Pitcairn      <br />PER,Peru      <br />PHI,Philippines      <br />PLW,Palau      <br />POL,Poland      <br />POR,Portugal      <br />PRK,North Korea      <br />PSE,Palestine      <br />PUR,Puerto Rico      <br />PYF,French Polynesia      <br />QAT,Qatar      <br />REU,Reunion      <br />ROM,Romania      <br />RSA,South Africa      <br />RUS,Russia      <br />RWA,Rwanda      <br />SAM,Western Samoa      <br />SEN,Senegal      <br />SER,Serbia      <br />SEY,Seychelles      <br />SHN,St Helena      <br />SIN,Singapore      <br />SJM,Svalbard &#38; Jan Mayen      <br />SKN,St Kitts &#38; Nevis      <br />SLE,Sierra Leone      <br />SLO,Slovenia      <br />SMR,San Marino      <br />SOL,Solomon Islands      <br />SOM,Somalia      <br />SPM,St Pierre &#38; Miquelon      <br />SRI,Sri Lanka      <br />STP,Sao Tome &#38; Principe      <br />SUD,Sudan      <br />SUI,Switzerland      <br />SUR,Suriname      <br />SVK,Slovakia      <br />SWE,Sweden      <br />SWZ,Swaziland      <br />SYR,Syria      <br />TAN,Tanzania      <br />TCA,Turks &#38; Caicos Islands      <br />TGA,Tonga      <br />THA,Thailand      <br />TJK,Tajikistan      <br />TKL,Tokelau      <br />TKM,Turkmenistan      <br />TLS,East Timor      <br />TOG,Togo      <br />TPE,Taiwan      <br />TRI,Trinidad &#38; Tobago      <br />TUN,Tunisia      <br />TUR,Turkey      <br />TUV,Tuvalu      <br />UAE,United Arabic Emirates      <br />UGA,Uganda      <br />UKR,Ukraine      <br />UMI,US minor outlying islands      <br />URU,Uruguay      <br />USA,United States      <br />UZB,Uzbekistan      <br />VAN,Vanuatu      <br />VAT,Vatican City      <br />VEN,Venezuela      <br />VIE,Vietnam      <br />VIN,St Vincent      <br />WLF,Wallis &#38; Futuna      <br />YEM,Yemen      <br />ZAM,Zambia      <br />ZIM,Zimbabwe</p></blockquote>]]></description>
			<content:encoded><![CDATA[<blockquote>
<p>AFG<strike>,</strike>Afghanistan      <br />AHO,Netherlands Antilles      <br />AIA,Anguilla      <br />ALA,Aaland Islands      <br />ALB,Albania      <br />ALG,Algeria      <br />AND,Andorra      <br />ANG,Angola      <br />ANT,Antigua &amp; Barbuda      <br />ARG,Argentina      <br />ARM,Armenia      <br />ARU,Aruba      <br />ASA,American Samoa      <br />ATA,Antarctica      <br />ATF,French Southern &amp; Atlantic Lands      <br />AUS,Australia      <br />AUT,Austria      <br />AZE,Azerbaijan      <br />BAH,Bahamas      <br />BAN,Bangladesh      <br />BAR,Barbados      <br />BDI,Burundi      <br />BEL,Belgium      <br />BEN,Benin      <br />BER,Bermuda      <br />BHU,Bhutan      <br />BIH,Bosnia &amp; Herzegovina      <br />BIZ,Belize      <br />BLR,Belarus      <br />BOL,Bolivia      <br />BOT,Botswana      <br />BRA,Brazil      <br />BRN,Bahrain      <br />BRU,Brunei      <br />BUL,Bulgaria      <br />BUR,Burkina Faso      <br />BVT,Bouvet Island      <br />CAF,Central African Rep.      <br />CAM,Cambodia      <br />CAN,Canada      <br />CAY,Cayman Islands      <br />CCK,Cocos (Keeling) Islands      <br />CGO,Congo (Rep.)      <br />CHA,Chad      <br />CHI,Chile      <br />CHN,China      <br />CIV,Cote d&#8217;Ivoire      <br />CMR,Cameroon      <br />COD,Congo (Dem. Rep.)      <br />COK,Cook Islands      <br />COL,Colombia      <br />COM,Comoros      <br />CPV,Cape Verde      <br />CRC,Costa Rica      <br />CRG,Montenegro      <br />CRO,Croatia      <br />CUB,Cuba      <br />CXR,Christmas Islands      <br />CYP,Cyprus      <br />CZE,Czech Republic      <br />DEN,Denmark      <br />DJI,Djibouti      <br />DMA,Dominica      <br />DOM,Dominican Republic      <br />ECU,Ecuador      <br />EGY,Egypt      <br />ERI,Eritrea      <br />ESA,El Salvador      <br />ESP,Spain      <br />EST,Estonia      <br />ETH,Ethiopia      <br />FIJ,Fiji      <br />FIN,Finland      <br />FLK,Falkland Islands      <br />FRA,France      <br />FRO,Faroe Islands      <br />FSM,Micronesia      <br />GAB,Gabon      <br />GAM,Gambia      <br />GBR,Great Britain      <br />GBS,Guinea-Bissau      <br />GEO,Georgia      <br />GEQ,Equatorial Guiana      <br />GER,Germany      <br />GHA,Ghana      <br />GIB,Gibraltar      <br />GLP,Guadeloupe      <br />GRE,Greece      <br />GRL,Greenland      <br />GRN,Grenada      <br />GUA,Guatemala      <br />GUF,French Guiana      <br />GUI,Guinea      <br />GUM,Guam      <br />GUY,Guyana      <br />GGY,Guernsey      <br />HAI,Haiti      <br />HKG,Hong Kong      <br />HMD,Heard Island &amp; McDonalds Islands      <br />HON,Honduras      <br />HUN,Hungary      <br />IMN,Isle of Man      <br />INA,Indonesia      <br />IND,India      <br />IOT,British Indian Ocean Territory      <br />IRI,Iran      <br />IRL,Ireland      <br />IRQ,Iraq      <br />ISL,Iceland      <br />ISR,Israel      <br />ISV,Virgin Islands (US)      <br />ITA,Italy      <br />IVB,Virgin Islands (UK)      <br />JAM,Jamaica      <br />JEY,Jersey      <br />JOR,Jordan      <br />JPN,Japan      <br />KAZ,Kazakhstan      <br />KEN,Kenya      <br />KGZ,Kyrgyzstan      <br />KIR,Kiribati      <br />KOR,South Korea      <br />KSA,Saudi Arabia      <br />KUW,Kuwait      <br />LAO,Laos      <br />LAT,Latvia      <br />LBA,Libya      <br />LBR,Liberia      <br />LCA,St Lucia      <br />LES,Lesotho      <br />LIB,Lebanon      <br />LIE,Liechtenstein      <br />LTU,Lithuania      <br />LUX,Luxembourg      <br />MAC,Macau      <br />MAD,Madagascar      <br />MAR,Morocco      <br />MAS,Malaysia      <br />MAW,Malawi      <br />MDA,Moldova      <br />MDV,Maldives      <br />MEX,Mexico      <br />MGL,Mongolia      <br />MHL,Marshall Islands      <br />MKD,Macedonia      <br />MLI,Mali      <br />MLT,Malta      <br />MMR,Myanmar (Burma)      <br />MNP,Northern Mariana Islands      <br />MON,Monaco      <br />MOZ,Mozambique      <br />MRI,Mauritius      <br />MTN,Mauritania      <br />MTQ,Martinique      <br />MYT,Mayotte      <br />NAM,Namibia      <br />NCA,Nicaragua      <br />NCL,New Caledonia      <br />NED,Netherlands      <br />NEP,Nepal      <br />NEW,Papua New Guinea      <br />NFK,Norfolk Island      <br />NGR,Nigeria      <br />NIG,Niger      <br />NIU,Niure      <br />NOR,Norway      <br />NRU,Nauru      <br />NZL,New Zealand      <br />OMA,Oman      <br />PAK,Pakistan      <br />PAN,Panama      <br />PAR,Paraguay      <br />PCN,Pitcairn      <br />PER,Peru      <br />PHI,Philippines      <br />PLW,Palau      <br />POL,Poland      <br />POR,Portugal      <br />PRK,North Korea      <br />PSE,Palestine      <br />PUR,Puerto Rico      <br />PYF,French Polynesia      <br />QAT,Qatar      <br />REU,Reunion      <br />ROM,Romania      <br />RSA,South Africa      <br />RUS,Russia      <br />RWA,Rwanda      <br />SAM,Western Samoa      <br />SEN,Senegal      <br />SER,Serbia      <br />SEY,Seychelles      <br />SHN,St Helena      <br />SIN,Singapore      <br />SJM,Svalbard &amp; Jan Mayen      <br />SKN,St Kitts &amp; Nevis      <br />SLE,Sierra Leone      <br />SLO,Slovenia      <br />SMR,San Marino      <br />SOL,Solomon Islands      <br />SOM,Somalia      <br />SPM,St Pierre &amp; Miquelon      <br />SRI,Sri Lanka      <br />STP,Sao Tome &amp; Principe      <br />SUD,Sudan      <br />SUI,Switzerland      <br />SUR,Suriname      <br />SVK,Slovakia      <br />SWE,Sweden      <br />SWZ,Swaziland      <br />SYR,Syria      <br />TAN,Tanzania      <br />TCA,Turks &amp; Caicos Islands      <br />TGA,Tonga      <br />THA,Thailand      <br />TJK,Tajikistan      <br />TKL,Tokelau      <br />TKM,Turkmenistan      <br />TLS,East Timor      <br />TOG,Togo      <br />TPE,Taiwan      <br />TRI,Trinidad &amp; Tobago      <br />TUN,Tunisia      <br />TUR,Turkey      <br />TUV,Tuvalu      <br />UAE,United Arabic Emirates      <br />UGA,Uganda      <br />UKR,Ukraine      <br />UMI,US minor outlying islands      <br />URU,Uruguay      <br />USA,United States      <br />UZB,Uzbekistan      <br />VAN,Vanuatu      <br />VAT,Vatican City      <br />VEN,Venezuela      <br />VIE,Vietnam      <br />VIN,St Vincent      <br />WLF,Wallis &amp; Futuna      <br />YEM,Yemen      <br />ZAM,Zambia      <br />ZIM,Zimbabwe</p>
</blockquote>
<div style=float:right><!-- JiaThis Button BEGIN -->
<div id="ckepop">
	<a class="jiathis_button_copy"></a>
	<a class="jiathis_button_email"></a>
	<a class="jiathis_button_fav"></a>
	<a class="jiathis_button_print"></a>
	<a class="jiathis_button_tsina"></a>
	<a class="jiathis_button_tqq"></a>
	<a class="jiathis_button_qzone"></a>
	<a class="jiathis_button_renren"></a>
	<a class="jiathis_button_kaixin001"></a>
	<a class="jiathis_button_baidu"></a>
	<a class="jiathis_button_tsohu"></a>
	<a class="jiathis_button_t163"></a>
	<a class="jiathis_button_douban"></a>
	<a class="jiathis_button_twitter"></a>
	<a class="jiathis_button_fanfou"></a>
	<a href="http://www.jiathis.com/share?uid=1571159" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank"></a>
	<a class="jiathis_counter_style"></a>
</div>
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jia.js?uid=1571159" charset="utf-8"></script>
<!-- JiaThis Button END --></div>]]></content:encoded>
			<wfw:commentRss>http://rovertang.com/fav/archives/34/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>修练</title>
		<link>http://rovertang.com/fav/archives/32</link>
		<comments>http://rovertang.com/fav/archives/32#comments</comments>
		<pubDate>Mon, 16 Jan 2012 07:39:14 +0000</pubDate>
		<dc:creator>Rover</dc:creator>
				<category><![CDATA[生活&情感]]></category>
		<category><![CDATA[修炼]]></category>

		<guid isPermaLink="false">http://rovertang.com/fav/?p=32</guid>
		<description><![CDATA[<p>一：沉稳   <br />&#160;&#160;&#160;&#160; （1）不要随便显露你的情绪。    <br />&#160;&#160;&#160;&#160; （2）不要逢人就诉说你的困难和遭遇。    <br />&#160;&#160;&#160;&#160; （3）在征询别人的意见之前，自己先思考，但不要先讲。    <br />&#160;&#160;&#160;&#160; （4）不要一有机会就唠叨你的不满。    <br />&#160;&#160;&#160;&#160; （5）重要的决定尽量有别人商量，最好隔一天再发布。    <br />&#160;&#160;&#160;&#160; （6）讲话不要有任何的慌张，走路也是。    <br />&#160;&#160;&#160;&#160; （7）自信是好，但是别忽略任何人的想法。    <br />&#160;&#160;&#160;&#160; （8）人无高低，不要一副拽拽的样子，对人对事，别忘了礼貌。你没有比任何人优秀。    <br />二：细心    <br />&#160;&#160;&#160;&#160; （1）对身边发生的事情，常思考它们的因果关系。    <br />&#160;&#160;&#160;&#160; （2）对做不到位的问题，要发掘它们的根本症结。    <br />&#160;&#160;&#160;&#160; （3）对习以为常的做事方法，要有改进或优化的建议。    <br />&#160;&#160;&#160;&#160; （4）做什么事情都要养成有条不紊和井然有序的习惯。    <br />&#160;&#160;&#160;&#160; （5）经常去找几个别人看不出来的毛病或弊端。    <br />&#160;&#160;&#160;&#160; （6）自己要随时随地对有所不足的地方补位。    <br />三：胆识    <br />&#160;&#160;&#160;&#160; （1）不要常用缺乏自信的词句    <br />&#160;&#160;&#160;&#160; （2）不要常常反悔，轻易推翻已经决定的事。    <br />&#160;&#160;&#160;&#160; （3）在众人争执不休时，不要没有主见。    <br />&#160;&#160;&#160;&#160; （4）整体氛围低落时，你要乐观、阳光。    <br />&#160;&#160;&#160;&#160; （5）做任何事情都要用心，因为有人在看着你。    <br />&#160;&#160;&#160;&#160; （6）事情不顺的时候，歇口气，重新寻找突破口，就结束也要干净利落。    <br />四：大度    <br />&#160;&#160;&#160;&#160; （1）不要刻意把有可能是伙伴的人变成对手。    <br />&#160;&#160;&#160;&#160; （2）对别人的小过失、小错误不要斤斤计较。    <br />&#160;&#160;&#160;&#160; （3）在金钱上要大方，学习三施（财施、法施、无畏施）    <br />&#160;&#160;&#160;&#160; （4）不要有权力的傲慢和知识的偏见。    <br />&#160;&#160;&#160;&#160; （5）任何成果和成就都应和别人分享。    <br />五：诚信    <br />&#160;&#160;&#160;&#160; （1）做不到的事情不要说，说了就努力做到。    <br />&#160;&#160;&#160;&#160; （2）虚的口号或标语不要常挂嘴上。    <br />&#160;&#160;&#160;&#160; （3）停止一切“不道德”的手段。    <br />&#160;&#160;&#160;&#160; （4）耍弄小聪明，要不得！    <br />六：担当    <br />&#160;&#160;&#160;&#160; （1）检讨任何过失的时候，先从自身或自己人开始反省。&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160; （2）事情结束后，先审查过错，再列述功劳。    <br />&#160;&#160;&#160;&#160; （3）一个计划，要统筹全局，规划未来。    <br />&#160;&#160;&#160;&#160; （4）勇于承担责任所造成的损失。    <br />七：内涵    <br />&#160;&#160;&#160;&#160; （1）学习各方面的知识，虚心观察周围的事物。眼界宽阔。    <br />&#160;&#160;&#160;&#160; （2）了解自己，培养属于自己的审美观。    <br />&#160;&#160;&#160;&#160; （3）笑对生活。懒惰要不得。培养健康的生活习惯。    <br />&#160;&#160;&#160;&#160; （4）不要盲目的做任何事。要有目标。    <br />&#160;&#160;&#160;&#160; （5）不仅仅只关注内在美，外在美也很重要。    <br />&#160;&#160;&#160;&#160; （6）不要整天的对着电脑，玩着无聊的东西。    <br />&#160;&#160;&#160;&#160; （7）理智的判断，学会控制情绪。</p>]]></description>
			<content:encoded><![CDATA[<p>一：沉稳   <br />&#160;&#160;&#160;&#160; （1）不要随便显露你的情绪。    <br />&#160;&#160;&#160;&#160; （2）不要逢人就诉说你的困难和遭遇。    <br />&#160;&#160;&#160;&#160; （3）在征询别人的意见之前，自己先思考，但不要先讲。    <br />&#160;&#160;&#160;&#160; （4）不要一有机会就唠叨你的不满。    <br />&#160;&#160;&#160;&#160; （5）重要的决定尽量有别人商量，最好隔一天再发布。    <br />&#160;&#160;&#160;&#160; （6）讲话不要有任何的慌张，走路也是。    <br />&#160;&#160;&#160;&#160; （7）自信是好，但是别忽略任何人的想法。    <br />&#160;&#160;&#160;&#160; （8）人无高低，不要一副拽拽的样子，对人对事，别忘了礼貌。你没有比任何人优秀。    <br />二：细心    <br />&#160;&#160;&#160;&#160; （1）对身边发生的事情，常思考它们的因果关系。    <br />&#160;&#160;&#160;&#160; （2）对做不到位的问题，要发掘它们的根本症结。    <br />&#160;&#160;&#160;&#160; （3）对习以为常的做事方法，要有改进或优化的建议。    <br />&#160;&#160;&#160;&#160; （4）做什么事情都要养成有条不紊和井然有序的习惯。    <br />&#160;&#160;&#160;&#160; （5）经常去找几个别人看不出来的毛病或弊端。    <br />&#160;&#160;&#160;&#160; （6）自己要随时随地对有所不足的地方补位。    <br />三：胆识    <br />&#160;&#160;&#160;&#160; （1）不要常用缺乏自信的词句    <br />&#160;&#160;&#160;&#160; （2）不要常常反悔，轻易推翻已经决定的事。    <br />&#160;&#160;&#160;&#160; （3）在众人争执不休时，不要没有主见。    <br />&#160;&#160;&#160;&#160; （4）整体氛围低落时，你要乐观、阳光。    <br />&#160;&#160;&#160;&#160; （5）做任何事情都要用心，因为有人在看着你。    <br />&#160;&#160;&#160;&#160; （6）事情不顺的时候，歇口气，重新寻找突破口，就结束也要干净利落。    <br />四：大度    <br />&#160;&#160;&#160;&#160; （1）不要刻意把有可能是伙伴的人变成对手。    <br />&#160;&#160;&#160;&#160; （2）对别人的小过失、小错误不要斤斤计较。    <br />&#160;&#160;&#160;&#160; （3）在金钱上要大方，学习三施（财施、法施、无畏施）    <br />&#160;&#160;&#160;&#160; （4）不要有权力的傲慢和知识的偏见。    <br />&#160;&#160;&#160;&#160; （5）任何成果和成就都应和别人分享。    <br />五：诚信    <br />&#160;&#160;&#160;&#160; （1）做不到的事情不要说，说了就努力做到。    <br />&#160;&#160;&#160;&#160; （2）虚的口号或标语不要常挂嘴上。    <br />&#160;&#160;&#160;&#160; （3）停止一切“不道德”的手段。    <br />&#160;&#160;&#160;&#160; （4）耍弄小聪明，要不得！    <br />六：担当    <br />&#160;&#160;&#160;&#160; （1）检讨任何过失的时候，先从自身或自己人开始反省。&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160; （2）事情结束后，先审查过错，再列述功劳。    <br />&#160;&#160;&#160;&#160; （3）一个计划，要统筹全局，规划未来。    <br />&#160;&#160;&#160;&#160; （4）勇于承担责任所造成的损失。    <br />七：内涵    <br />&#160;&#160;&#160;&#160; （1）学习各方面的知识，虚心观察周围的事物。眼界宽阔。    <br />&#160;&#160;&#160;&#160; （2）了解自己，培养属于自己的审美观。    <br />&#160;&#160;&#160;&#160; （3）笑对生活。懒惰要不得。培养健康的生活习惯。    <br />&#160;&#160;&#160;&#160; （4）不要盲目的做任何事。要有目标。    <br />&#160;&#160;&#160;&#160; （5）不仅仅只关注内在美，外在美也很重要。    <br />&#160;&#160;&#160;&#160; （6）不要整天的对着电脑，玩着无聊的东西。    <br />&#160;&#160;&#160;&#160; （7）理智的判断，学会控制情绪。</p>
<div style=float:right><!-- JiaThis Button BEGIN -->
<div id="ckepop">
	<a class="jiathis_button_copy"></a>
	<a class="jiathis_button_email"></a>
	<a class="jiathis_button_fav"></a>
	<a class="jiathis_button_print"></a>
	<a class="jiathis_button_tsina"></a>
	<a class="jiathis_button_tqq"></a>
	<a class="jiathis_button_qzone"></a>
	<a class="jiathis_button_renren"></a>
	<a class="jiathis_button_kaixin001"></a>
	<a class="jiathis_button_baidu"></a>
	<a class="jiathis_button_tsohu"></a>
	<a class="jiathis_button_t163"></a>
	<a class="jiathis_button_douban"></a>
	<a class="jiathis_button_twitter"></a>
	<a class="jiathis_button_fanfou"></a>
	<a href="http://www.jiathis.com/share?uid=1571159" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank"></a>
	<a class="jiathis_counter_style"></a>
</div>
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jia.js?uid=1571159" charset="utf-8"></script>
<!-- JiaThis Button END --></div>]]></content:encoded>
			<wfw:commentRss>http://rovertang.com/fav/archives/32/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>详细讲解PHP的日期时间函数date()</title>
		<link>http://rovertang.com/fav/archives/30</link>
		<comments>http://rovertang.com/fav/archives/30#comments</comments>
		<pubDate>Mon, 16 Jan 2012 01:33:39 +0000</pubDate>
		<dc:creator>Rover</dc:creator>
				<category><![CDATA[网站&程序]]></category>
		<category><![CDATA[date()]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://rovertang.com/fav/?p=30</guid>
		<description><![CDATA[<blockquote>   <pre>1，年-月-日<br />echo date('Y-m-j');<br />2007-02-6<br /><br />echo date('y-n-j');<br />07-2-6<br /><br />大写Y表示年四位数字，而小写y表示年的两位数字；<br />小写m表示月份的数字(带前导)，而小写n则表示不带前导的月份数字。<br /><br />echo date('Y-M-j');<br />2007-Feb-6<br /><br />echo date('Y-m-d');<br />2007-02-06<br /><br />大写M表示月份的3个缩写字符，而小写m则表示月份的数字(带前导0);<br />没有大写的J，只有小写j表示月份的日期，无前导o；若需要月份带前导则使用小写d。<br /><br />echo date('Y-M-j');<br />2007-Feb-6<br /><br />echo date('Y-F-jS');<br />2007-February-6th<br /><br />大写M表示月份的3个缩写字符，而大写F表示月份的英文全写。(没有小写f)<br />大写S表示日期的后缀，比如“st”、“nd”、“rd”和“th”，具体看日期数字为何。<br /><br />小结：<br />表示年可以用大写的Y和小写y;<br />表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);<br />表示日可以用小写d和小写j，大写S表示日期的后缀。<br /><br /><br />2，时:分:秒<br /><br />默认情况下，PHP解释显示的时间为“格林威治标准时间”，与我们本地的时间相差8个小时。<br /><br />echo date('g:i:s a');<br />5:56:57 am<br /><br />echo date('h:i:s A');<br />05:56:57 AM<br /><br />小写g表示12小时制，无前导0，而小写h则表示有前导0的12小时制。<br />当使用12小时制时需要表明上下午，小写a表示小写的“am”和“pm”，大写A表示大写的“AM”和“PM”。<br /><br />echo date('G:i:s');<br />14:02:26<br /><br />大写G表示24小时制的小时数，但是不带前导的；使用大写的H表示带前导的24小时制小时数<br /><br />小结：<br />字母g表示小时不带前导，字母h表示小时带前导；<br />小写g、h表示12小时制，大写G、H表示24小时制。<br /><br />3，闰年、星期、天<br /><br />echo date('L');<br />今年是否闰年：0<br /><br />echo date('l');<br />今天是：Tuesday<br /><br />echo date('D');<br />今天是：Tue<br /><br />大写L表示判断今年是否闰年，布尔值，为真返回1，否则为0；<br />小写l表示当天是星期几的英文全写(Tuesday)；<br />而使用大写D表示星期几的3个字符缩写(Tue)。<br /><br />echo date('w');<br />今天星期：2<br /><br />echo date('W');<br />本周是全年中的第 06 周<br /><br />小写w表示星期几，数字形式表示<br />大写W表示一年中的星期数<br /><br />echo date('t');<br />本月是 28 天<br /><br />echo date('z');<br />今天是今年的第 36 天<br /><br />小写t表示当前月份又多少天<br />小写z表示今天是本年中第几天<br /><br />4，其他<br /><br />echo date('T');<br />UTC<br />大写T表示服务器的时间区域设置<br /><br />echo date('I');<br />0<br />大写I表示判断当前是否为夏令时，为真返回1，否则为0<br /><br />echo date('U');<br />1170769424<br />大写U表示从1970年1月1日到现在的总秒数，就是Unix时间纪元的UNIX时间戳。<br /><br />echo date('c');<br />2007-02-06T14:24:43+00:00<br />小写c表示ISO8601日期，日期格式为YYYY-MM-DD，用字母T来间隔日期和时间，时间格式为HH:MM:SS，时区使用格林威治标准时间(GMT)的偏差来表示。<br /><br />echo date('r');<br />Tue, 06 Feb 2007 14:25:52 +0000<br />小写r表示RFC822日期。 </pre></blockquote>]]></description>
			<content:encoded><![CDATA[<blockquote><pre>1，年-月-日echo date('Y-m-j');2007-02-6

echo date('y-n-j');07-2-6

大写Y表示年四位数字，而小写y表示年的两位数字；小写m表示月份的数字(带前导)，而小写n则表示不带前导的月份数字。

echo date('Y-M-j');2007-Feb-6

echo date('Y-m-d');2007-02-06

大写M表示月份的3个缩写字符，而小写m则表示月份的数字(带前导0);没有大写的J，只有小写j表示月份的日期，无前导o；若需要月份带前导则使用小写d。

echo date('Y-M-j');2007-Feb-6

echo date('Y-F-jS');2007-February-6th

大写M表示月份的3个缩写字符，而大写F表示月份的英文全写。(没有小写f)大写S表示日期的后缀，比如“st”、“nd”、“rd”和“th”，具体看日期数字为何。

小结：表示年可以用大写的Y和小写y;表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);表示日可以用小写d和小写j，大写S表示日期的后缀。

2，时:分:秒

默认情况下，PHP解释显示的时间为“格林威治标准时间”，与我们本地的时间相差8个小时。

echo date('g:i:s a');5:56:57 am

echo date('h:i:s A');05:56:57 AM

小写g表示12小时制，无前导0，而小写h则表示有前导0的12小时制。当使用12小时制时需要表明上下午，小写a表示小写的“am”和“pm”，大写A表示大写的“AM”和“PM”。

echo date('G:i:s');14:02:26

大写G表示24小时制的小时数，但是不带前导的；使用大写的H表示带前导的24小时制小时数

小结：字母g表示小时不带前导，字母h表示小时带前导；小写g、h表示12小时制，大写G、H表示24小时制。

3，闰年、星期、天

echo date('L');今年是否闰年：0

echo date('l');今天是：Tuesday

echo date('D');今天是：Tue

大写L表示判断今年是否闰年，布尔值，为真返回1，否则为0；小写l表示当天是星期几的英文全写(Tuesday)；而使用大写D表示星期几的3个字符缩写(Tue)。

echo date('w');今天星期：2

echo date('W');本周是全年中的第 06 周

小写w表示星期几，数字形式表示大写W表示一年中的星期数

echo date('t');本月是 28 天

echo date('z');今天是今年的第 36 天

小写t表示当前月份又多少天小写z表示今天是本年中第几天

4，其他

echo date('T');UTC大写T表示服务器的时间区域设置

echo date('I');0大写I表示判断当前是否为夏令时，为真返回1，否则为0

echo date('U');1170769424大写U表示从1970年1月1日到现在的总秒数，就是Unix时间纪元的UNIX时间戳。

echo date('c');2007-02-06T14:24:43+00:00小写c表示ISO8601日期，日期格式为YYYY-MM-DD，用字母T来间隔日期和时间，时间格式为HH:MM:SS，时区使用格林威治标准时间(GMT)的偏差来表示。

echo date('r');Tue, 06 Feb 2007 14:25:52 +0000小写r表示RFC822日期。 </pre>
</blockquote>
<div style=float:right><!-- JiaThis Button BEGIN -->
<div id="ckepop">
	<a class="jiathis_button_copy"></a>
	<a class="jiathis_button_email"></a>
	<a class="jiathis_button_fav"></a>
	<a class="jiathis_button_print"></a>
	<a class="jiathis_button_tsina"></a>
	<a class="jiathis_button_tqq"></a>
	<a class="jiathis_button_qzone"></a>
	<a class="jiathis_button_renren"></a>
	<a class="jiathis_button_kaixin001"></a>
	<a class="jiathis_button_baidu"></a>
	<a class="jiathis_button_tsohu"></a>
	<a class="jiathis_button_t163"></a>
	<a class="jiathis_button_douban"></a>
	<a class="jiathis_button_twitter"></a>
	<a class="jiathis_button_fanfou"></a>
	<a href="http://www.jiathis.com/share?uid=1571159" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank"></a>
	<a class="jiathis_counter_style"></a>
</div>
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jia.js?uid=1571159" charset="utf-8"></script>
<!-- JiaThis Button END --></div>]]></content:encoded>
			<wfw:commentRss>http://rovertang.com/fav/archives/30/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DOS命令详解</title>
		<link>http://rovertang.com/fav/archives/25</link>
		<comments>http://rovertang.com/fav/archives/25#comments</comments>
		<pubDate>Mon, 16 Jan 2012 01:19:25 +0000</pubDate>
		<dc:creator>Rover</dc:creator>
				<category><![CDATA[电脑&网络]]></category>
		<category><![CDATA[DOS]]></category>

		<guid isPermaLink="false">http://rovertang.com/fav/?p=25</guid>
		<description><![CDATA[<blockquote>   <pre>dos下各种常见命令索引<br /><br />▲ dir<br /><br />▲ attrib<br /><br />▲ cd<br /><br />▲ copy<br /><br />▲ xcopy<br /><br />▲ del<br /><br />▲ undelete<br /><br />▲ deltree<br /><br />▲ dos=high<br /><br />▲ doskey<br /><br />▲ emm386.exe<br /><br />▲ fc<br /><br />▲ format<br /><br />▲ unformat<br /><br />▲ interlnk<br /><br />▲ intersvr<br /><br />▲ memmaker<br /><br />▲ memitem等<br /><br />▲ mscdex<br /><br />▲ msd<br /><br />▲ prompt<br /><br />▲ ramdrive<br /><br />▲ subst<br /><br />▲ mem<br /><br />▲ &#34;&#62; &#60; &#62;&#62; &#60;&#60;&#34;工具<br /><br />▲ move<br /><br />▲ append<br /><br />▲ call<br /><br />▲ defrag<br /><br />▲ device<br /><br />一、DIR 命令的格式：<br /><br />dir [D:][PATH][NAME][[/A][:attrib]][/o:[sorted][/s][/b][/l][/c[h]<br /><br />(1)dir /a:attrib 缺省包含所有文件(系统文件.隐含文件)<br /><br />attrib[:][h/-h]只显示隐含文件或非隐含文件.<br /><br />[r/-r]只显示只读文件或非只读文件<br /><br />[s/-s]只显示系统文件或非系统文件<br /><br />[a/-a]只显示要归档文件或非归档文件<br /><br />(2)/o[:]sorted:缺省完全按字母顺序,子目录显示在文件之前<br /><br />/o[n/-n]:按字母顺序或按文件名顺序/反向显示<br /><br />[e/-e]:按扩展名字母顺序/反向显示<br /><br />[d/-d]:按时间顺序/反向显示<br /><br />[s/-s]:按大小从大到小或/反向显示<br /><br />[g/-g]:按子目录先于文件或文件先于子目录<br /><br />(3)/s 参数:对当前目录及其子目录中所有文件进行列表<br /><br />列名:dir /s/a/o:n c:\&#62;PRN<br /><br />将c盘上的所有子目录和文件按隶属关系并根据子目录和文件字母顺序打印输出<br /><br />(4)/B 参数:将只显示文件名与扩展名<br /><br />(5)/L 参数:将全部用小写字母对文件或子目录进行列表<br /><br />训练:<br /><br />dir /a 列当前目录所有文件(含隐含及系统文件)<br /><br />dir /ah 列隐含文件(包含子目录(隐含的) dir /a-h<br /><br />dir /as 列系统文件 dir /a-s<br /><br />dir /ad 列子目录 dir /a-d<br /><br />dir /o 按字母顺序<br /><br />dir /B 只显示文件名与扩展名<br /><br />二、attrib [+r&#124;-r] [+a&#124;-a] [+s&#124;-s] [+h&#124;-h] [d: ] [name] [/s]<br /><br />缺省 attrib name 显示文件的(文件)属性<br /><br />attrib io.sys (或子目录)<br /><br />shr c:\ io.sys 指定为系统(s) 隐含(h) 只读(r)文件<br /><br />也可以attrib *.sys 显示扩展名为sys的文件属性<br /><br />参数 [+r&#124;-r] 将文件属性设置或解除 只读属性<br /><br />[+a&#124;-a] 将文件属性设置或解除 归档属性<br /><br />[+h&#124;-h] 将文件属性设置或解除 隐含属性 (尤其对子目录也起作用)<br /><br />/s 参数 将当前及当前子目录下的所有文件均起作用<br /><br />可以用来查找文件<br /><br />例子:<br /><br />attrib news86 列news86的文档属性<br /><br />attrib +r report.txt 设置为只读 attrib -s -h record.txt<br /><br />attrib +a a:*.*<br /><br />attrib -a a:*.bak<br /><br />xcopy a: b: /a 将A盘上的所有标志为&#34;归档&#34;属性的文件拷到B盘<br /><br />xcopy a: b: /m 将A盘上的所有文件拷到B盘后并移去归档属性<br /><br />三、cd 介绍: cd...返回上二级目录 &#34;.&#34;代表当前目录 &#34;.&#34;代表父目录<br /><br />cd ..\..返回到上级目录的父目录(祖目录)<br /><br />cd A:\ 将A盘的当前目录改为根目录<br /><br />cd A:\xx 将A盘的当前目录改为子目录xx下<br /><br />cd ..\98 先返回父目录,再进入父目录下的98子目录<br /><br />cd ..返回到父目录<br /><br />cd\98 进入根目录下的98子目录<br /><br />四、copy [/y][/-y][/v][ /B]<br /><br />copy /y 不加提示,对所有文件加以覆盖<br /><br />/-y 加以提示,对所有文件 (yes或no提问 )<br /><br />/v 拷贝以后加以校验<br /><br />/B 按二进制进行显示<br /><br />copy w1.wps con/b 可以将wps文件在屏幕上显示,而不必进入wps状态<br /><br />copy ..\98 将父目录下的98子目录下的所有文件全拷到当前子目录<br /><br />copy .\97 当当前目录下的97子目录下文件全部拷到当前目录<br /><br />copy . c:\ 将当前目录下的所有文件拷到c盘根目录<br /><br />. 意味着 *.* 文件<br /><br />copy nul a.abc 将a.abc 文件清空(文件长度改为0)<br /><br />copy 文件名+con 向文本文件中追加命令或内容<br /><br />copy con 文件名 创建文本文件(F6存盘退出)<br /><br />copy con prn 检测打印机的开关<br /><br />五、xcopy命令<br /><br />xcopy [source] [d:date] [/p] [/s] [/e] [/v] [/y]<br /><br />xcopy [d:date] xcopy a:b:\ /d:08/18/98/s/v 拷贝98.08.18年后的文件<br /><br />xcopy [/p] 提示创建子目录<br /><br />xcopy [/s] 连带子目录一起拷贝. 注意:若目标盘上不存在此子目录,而在目标<br /><br />盘的结束符又不以&#34;\&#34;为结束,则将提示:<br /><br />does destination specify a file name or directory name on the target<br /><br />[f=file,d=directory]?<br /><br />在目标盘上创建文件[按下]还是创建子目录[按下d] ?应选择d键<br /><br />xcopy[/v] 带较验<br /><br />*:(1) xcopy 不拷贝系统和隐含文件,应先予以修改属性再拷贝<br /><br />xcopy [/y] 覆盖时是否有提示, /y 不带提示<br /><br />若省略目标盘或子目录名,则拷贝到当前目录下<br /><br />六、 del /p<br /><br />加/p 可以在删除前是否提示<br /><br />如del后加子目录名,则将子目录下所有文件(隐含.系统.只读文件除外)全删除,<br /><br />加/p则可以确认.<br /><br />七、undelete [name] /au<br /><br />不加提示地将所有满足条件的文件恢复(能够恢复的),并将首字母置成&#34;#&#34;,若已<br /><br />存在,则按&#34;# % &#38; 0 1 2-9 a-z&#34;顺序加上.<br /><br />如:undelete *.dbf/au 将扩展名为&#34;dbf&#34;的文件全恢复,并以&#34;#&#34;开头,作为文件<br /><br />名, /list 仅列出可恢复的文件,而不恢复<br /><br />undelete /load 将undelete装入内存<br /><br />/unload 将undelete卸出内存<br /><br />/s[drive]对指定驱动器进行监测管理<br /><br />undelete/sc<br /><br />将 undelete驻留内存,?并创建一个隐含的sentry 子目录对c盘删除的文件进行<br /><br />管理 undelete/ds 恢复<br /><br />相应恢复命令可以用undelete即可完整恢复出文件名(非常完整)<br /><br />最常用undelete *.*<br /><br />deltree /y [drive:path]<br /><br />deltree 删除子目录及文件,尽管有些文件是系统文件或隐含文件<br /><br />它可以带有通配符,带有通配符时,它将删除符合条件的文件及子目录<br /><br />如:?undelete *.dbf/au 将扩展名为&#34;dbf&#34;的文件全恢复,并以&#34;#&#34;开头作为文件<br /><br />名.<br /><br />/list 仅列出可恢复的文件,而不作恢复操作.<br /><br />undelete/load 将undelete 装入内存.<br /><br />/unload将undelete 卸出内存.<br /><br />/s[drive] 对指定的驱动器进行监视管理.<br /><br />undelete/sc 将undelete 驻留内存,并创建一个隐含的sentry子目录对C盘删除<br /><br />的文件进行管理.相应恢复命令可以用undelete/ds 即可完整恢复出文件名(很完善).<br /><br />最常用的是undelete *.*<br /><br />八、deltree /y [drive:path]<br /><br />deltree 删除子目录及文件,尽管有些文件是系统或隐含的.<br /><br />它可以带有通配符,这时它将删除符合条件的文件或子目录.<br /><br />如:存在L1文件,L2子目录,L3文件,L4子目录<br /><br />deltree L*.* 将删除以上所有的文件和子目录,但在删除前加以确认,若不删除,<br /><br />可以输入&#34;N&#34;.<br /><br />/y 参数是在删除时不加以确认就进行操作的.<br /><br />它删除的文件可以用undelete恢复,?但不能恢复子目录及其下的文件,可以用特<br /><br />殊工具.如NORTON 8.0 等.<br /><br />若提前使用了undelete/s,?则可以在sentry子目录下找到完整的文件,但名已经<br /><br />改变了.<br /><br />九、dos=high[&#124;low[umb&#124;noumb]]<br /><br />dos=high,umb 则dos将自身装入高端内存(high)并能管理上位内存(umb).<br /><br />noumb 则不管理上位内存.<br /><br />在写入dos=high及umb 前应装入device=himem.sys<br /><br />为了将程序或驱动程序装入上位内存,必须使用dos=umb,可省出大部分常规内存.<br /><br />可以在config.sys的任何位置写上dos=high,umb<br /><br />若显示hma not avoiable 或 load down low 则表明不能使用高端内存.<br /><br />十、doskey 记录以前敲过的dos命令,可以用F7来显示,用&#34;↑↓&#34;来选择,用F9来输入<br /><br />选择的命令号.<br /><br />doskey/restall 重新装入一次,以前的命令行撤消.<br /><br />doskey/history 显示内存中所有的命令,可以&#34;&#62;&#34;显示到其它文件中,缩写&#34;/H&#34;.<br /><br />doskey dir=cls 则击入dir等同于cls一样.<br /><br />doskey/macros 可显示所有的宏定义,可使用&#34;&#62;&#34;重定义到文件中,可缩写&#34;/M&#34;.<br /><br />doskey dir= 可撤消对dir 的宏定义.<br /><br />doskey p=dir$tdir*.exe/p$tdir c:\t$tdir c:\t$*<br /><br />$t为命令的区分符,而$*为命令的结束符<br /><br />doskey/insert(overstrike)?在重新输入命令时,对旧命令的修改是插入还是覆<br /><br />盖状态(默认).<br /><br />十一、emm386.exe<br /><br />提供对扩展内存的管理,使应用程序象使用常规内存一样能够使用它.<br /><br />常见的用法是 在config.sys 中<br /><br />device=c:\dos\himem.sys<br /><br />device=c:\dos\emm386.exe ram<br /><br />d=64 将DMA 内存数量设置为64K<br /><br />noems 提供对上位内存的访问,但不提供对扩展内存的访问.<br /><br />应注意的是在windows中最好不要用它,因为windows本身有对扩展内存进行管理<br /><br />的程序.应采用windows中的管理器.<br /><br />十二、fc 命令 fc/b dt.dat dt2.dat&#62;b (作二进制代码比较)<br /><br />比较两个文件,一般用作存取进度,修改游戏存储文件用.<br /><br />实际代码位置应加上0100 如:0000 05E4:00 67<br /><br />实际用debug -e 修改时应加上0100 即 0000 06E4:00 67<br /><br />后面加上重定向文件&#34;&#62;P&#34; 可以将比较结果输出到p文件中.<br /><br />十三、format /q /u /s /n:sectors /f:size /c<br /><br />/q参数:快速格式化,仅扫描文件分配表和根目录区,仅对格式化过的磁盘有效.<br /><br />使用时应确保格式化过后没有增加新的坏道.<br /><br />/u参数:无条件格式化,并且不保存原来盘上的信息,可以防止&#34;unformat&#34;.<br /><br />/s参数:格式化为系统盘,也可以使用&#34;sys&#34;命令.<br /><br />/f:size size 可以为160 180 320 360 720 1200 1440 2800<br /><br />/n:sector n可以为1 格式为单面盘,容量为160k 180k<br /><br />可以为4 可以在5寸高密驱动器上格式化360k磁盘<br /><br />可以为8 可以在5寸高密驱动器上进行8个扇区的格式化.<br /><br />/c 重新测试坏扇区,缺省时如果一个扇区标记为&#34;坏&#34;,以后格式时就不在从新测<br /><br />试,仅作标记,使用&#34;/C&#34;时可以从新测试.<br /><br />十四、unformat 命令<br /><br />对用format 格式过,且未用&#34;/u&#34;参数的命令起作用,用它可以来重新修复已经损<br /><br />坏的硬盘分区表,但对网络盘不起作用.<br /><br />unformat drive:[/l][/test][/p]<br /><br />/l 显示每一个被unformat发现的文件和子目录,如果没有这个开关,只显示那些<br /><br />破碎的文件和子目录,可以用ctrl+s 暂停,按任意键继续.<br /><br />/test 仅作一个测试,不作实际的修复工作,作模拟过程.<br /><br />/p 一边测试一边打印.<br /><br />注:这种方法不能保证修复所有的文件,尤其是格式化后又添加过数据的磁盘.<br /><br />恢复后的文件依次存放在subdir1....2....3等子目录中.<br /><br />十五、interlnk 语法 interlnk g=e ,它可以通过串口或并口在两机间进行通讯.<br /><br />将服务器端上的e驱动器映射为客户端的g驱动器,以后对客户端而言,所有对g的<br /><br />操作都意味着对服务器的访问,取消映射的办法为interlnk g=<br /><br />单独输入interlnk 则显示所有的映射情况.<br /><br />注意:interlnk 必须在装入interlnk.exe 设备驱动程序才可以使用.<br /><br />所用的驱动器符号与config.?sys中lastdrv.exe设置的数目有关.可以作一个一<br /><br />端为25针,另一端为9针的串行线实现,具体接线方式如下:<br /><br />5 - 7 2 - 15<br /><br />3 - 2 3 - 13<br /><br />7 - 4 4 - 12<br /><br />6 - 6 5 - 10<br /><br />3 - 3 6 - 11<br /><br />8 - 5 15 - 2<br /><br />4 - 20 13 - 3<br /><br />9针 25针 12 - 4<br /><br />10 - 5<br /><br />11 - 6<br /><br />25 - 25<br /><br />25针 25针<br /><br />十六、interlnk.exe 与intersvr.exe<br /><br />interlnk.exe 重新定向对于客户驱动器或打印接口的请求到另外的服务器驱动<br /><br />器或打印机.<br /><br />语法:config.sys 中加入:<br /><br />device=c:\dos\interlnk.exe [drive:n][/noprinter][com][lpt]<br /><br />十七、memmaker[/b][/batch][session][/swap:drive]<br /><br />使用memmaker能够优化内存配置,?并将配置写入autoexec.bat和config.sys中.<br /><br />在这一过程中,需要重新启动几次机器.<br /><br />十八、memitem memcolor memdefault submenu 菜单选项include<br /><br />autoexec.bat 中如下: config.sys中如下:<br /><br />path c:\dos;c:\ucdos [menu]<br /><br />doskey menucolor=15,1(前景色15,背景色1)<br /><br />\mouse\mouse menuitem=base_config,this is a base<br /><br />goto %config% -&#62;选择项 menuitem=cced_config,this is a cced<br /><br />选项 提示<br /><br />:base_config menudefault=base_config,5<br /><br />goto exit -&#62;跳出 缺省为base_config,延迟时间5秒<br /><br />:cced_config [common]<br /><br />c:\dos\smartdrv.exe /l device=c:\dos\himem.sys<br /><br />goto exit 各项都包含的共同部分<br /><br />:exit -&#62;结束 [base_config]<br /><br />device=c:\dos\emm386.exe ram<br /><br />dos=high,umb<br /><br />[cced_config]<br /><br />device=c:\dos\smartdrv.exe/double_buffer<br /><br />include=base_config 包含base_config设置<br /><br />可以根据计算机的在不同情况下的配置要求来选择.<br /><br />十九、mscdex.exe 提供对光驱进行读写的程序<br /><br />mscdex/d:drive [/D:drive][/e][/k][/s][/l:letter]<br /><br />典型:config.sys 中device=c:\cdrom\cdrom.sys /d:mscd000<br /><br />autoexec.bat中 c:\dos\mscdex /d:mscd000 /l:g<br /><br />配置了一个光驱,符号为g<br /><br />参数/d:drive1为光驱身份号,须与config.sys中的符号一致,可有多个<br /><br />/d:mscd000 /d:mscd001<br /><br />/e:使用扩展内存装入光驱驱动程序.<br /><br />/s:使光驱在ms_net或windows是否设置为共享光驱<br /><br />/V是否在加载时显示内存.<br /><br />/L:letter 分配给光驱的盘符<br /><br />/m:number 指定缓冲器的数目<br /><br />应该注意的是:?如果用smartdrv.exe 加速对光驱的读写能力,应该在autoexec.<br /><br />bat中将mscdex.?exe 写在smartdrv.exe 之前,smartdrv.exe的使用可大幅提高<br /><br />对驱动器的读写能力.<br /><br />二十、msd的使用<br /><br />使用msd 可以整体检查计算机配置及系统信息<br /><br />包括:?驱动器参数,计算机cpu参数,内存大小参数,显示器类型,串.并口情况,以<br /><br />及各个IRQ占用情况,据此可以分析新增设备是否与原来设备有冲突.<br /><br />同时也可以通过分析内存驻留程序,判断内存中是否有病毒,有则标为&#34;???&#34;.<br /><br />二十一、prompt dos提示符<br /><br />$q 等于号 $t 当前时间 $d 当前日期 $p 当前驱动器符号<br /><br />$$ $号提示 $n当前驱动器 $g 大于号 $l小于号 $b 显示&#34;&#124;&#34;管道号<br /><br />$h 隐去提示符 $E显示&#34;&#60;-&#34;号<br /><br />对于其它文字,则直接显示文本本身prompt ljw,则显示为ljw提示符<br /><br />prompt 则仅显示当前驱动器号及大于号.<br /><br />二十二、ramdrive.sys 使用内存当做虚拟盘来使用<br /><br />应注意,所有数据都存在于内存中,应及时将其存到硬盘中,否则掉电后或者死机<br /><br />后将丢失全部数据,优点是运行速度快,但不能在windows中使用.<br /><br />示例:config.sys: device=c:\dos\ramdrive.sys /size[/e&#124;a]<br /><br />size为以k为单位的字节数,即建立的虚拟盘的大小.<br /><br />/e或/a 都是使用扩展内存来建立虚拟盘,?加参数的前提是必须先加载内存管理<br /><br />器himem.sys及emm386.exe.<br /><br />二十三、subst 将一个驱动器与一个子目录联接<br /><br />如:将对A:\l1\l2 子目录的请求映射为S盘,则输入<br /><br />subst s: a:\l1\l2 即可<br /><br />这样使用dir s:?等命令则显示的是a:\l1\l2子目录下的内容,其它copy del 一样<br /><br />可以用subst s: d 来取消这种映射.<br /><br />可以用subst 来显示各种联接情况<br /><br />注意:?可以采用subst a: c:a 来建立一个对于A的读写盘.对于某些安装软件<br /><br />来说,?必须使用A盘来安装,就可以使用先将所要安装的软件全部拷贝到C:a子<br /><br />目录中,然后输入subst a: c:a,再转到A:,就可以进行软件的安装了.<br /><br />二十四、mem /c /m /p /d 常规内存显示程序<br /><br />/c显示所有内存驻留程序的占用情况,分为conventional常规内存和uppermemory<br /><br />高端内存占用,并显示总的占用情况(常规 高端 保留 扩展内存)<br /><br />/p分页显示,页间暂停<br /><br />/m后加模块名 如:/m msdos 显示dos系统内存的占用.<br /><br />/d对常规 高端 保留 扩展内存加以详细例表说明<br /><br />通过分析,可以看出内存占用是否合理,以及各种程序是否正常加载,从而在此基<br /><br />础上使用内存优化工具memmaker进行各种管理,同时又可以分析出一些程序死机<br /><br />的原因,若有的地方显示&#34;???&#34;,则可以断定内存中有病毒的存在,有利于发现及消灭.<br /><br />二十五、各种管道工具的使用&#34;&#62; &#60; &#62;&#62; &#60;&#60;&#34;<br /><br />将各种命令造成的输出或所需要的输入重新定向<br /><br />如:dir *.bat /b&#62;p 可以将dir *.bat 例出的文件名输出到p文件中.<br /><br />time&#60;p&#62;&#62;p.bat<br /><br />p文件中仅存在一个回车符,则可以将时间追加进p.bat文件中<br /><br />&#34;&#62; &#62;&#62;&#34; 是将命令产生的输出重新定向,比如到文件或打印机中.<br /><br />&#62;&#62;产生的内容将追加进文件中,&#62;则将原文件内容覆盖.<br /><br />&#34;&#60; &#60;&#60;&#34; 是将命令所需要输入的内容重新定向.<br /><br />如:time&#60;p 在批中可以是时间代码或回车符,可以以此改变时间.<br /><br />需要说明的是 &#34;prn &#34;为打印机, &#34;null&#34;为空设备<br /><br />con 为显示器<br /><br />type p.bat&#62;prn 可将p.bat打印出来.<br /><br />copy null p 可将p文件删除掉<br /><br />copy con p 可以在屏幕上编辑p文件,F6可以存盘退出<br /><br />type p&#62;pp 完成p文件到pp 的复制<br /><br />type p&#124;more 可在屏满时暂停显示<br /><br />二十六、move 命令<br /><br />move [y/-y] filename1 filename2<br /><br />将文件1移动到文件2处<br /><br />如:move c:\dos\*.* c:\cced<br /><br />将dos子目录下的所有文件全部移动到cced 子目录下<br /><br />/y&#124;-y参数在目标目录不存在需要创建时,是否出现提示<br /><br />可以使用该命令修改子目录名称,如 move dos cced<br /><br />将dos目录名改为cced<br /><br />二十七、append 指定一些特殊数据文件的存放位置,如user.dat pe2.pro等一些非*.<br /><br />exe *.com *.bat 文件<br /><br />格式:append [:]终止以前存在的指定目录 append 显示指定情况<br /><br />append [path] append c:\user 等<br /><br />二十八、<br /><br />call 在一个批处理命令中调用另外一个批处理文件<br /><br />(1)不终止现有文件的运行,执行完掉用程序后立即返回.<br /><br />(2)被调用批处理命令必须以bat 为扩展名<br /><br />(3)调用批处理文件时,可以加上参数(%1-%9)以及环境变量如%baud%<br /><br />(4)不能使用管道工具及重定向工具<br /><br />二十九、device devicehigh loadhigh<br /><br />device 将指定的设备驱动程序装入内存中<br /><br />devicehigh将指定的设备驱动程序装入高端内存中<br /><br />loadhigh 将指定的设备驱动程序装入高端内存中<br /><br />三十、defrag 优化磁盘<br /><br />legend(传奇) optimize(优化) elapse(逝去) fragment(碎片)<br /><br />该命令执行对指定的盘进行优化处理(包括检查文件分配表,各文件状态,纠正错<br /><br />误),在执行时,可按照文件名大小,时间,扩展名对文件进行排序. </pre></blockquote>]]></description>
			<content:encoded><![CDATA[<blockquote><pre>dos下各种常见命令索引

▲ dir

▲ attrib

▲ cd

▲ copy

▲ xcopy

▲ del

▲ undelete

▲ deltree

▲ dos=high

▲ doskey

▲ emm386.exe

▲ fc

▲ format

▲ unformat

▲ interlnk

▲ intersvr

▲ memmaker

▲ memitem等

▲ mscdex

▲ msd

▲ prompt

▲ ramdrive

▲ subst

▲ mem

▲ &quot;&gt; &lt; &gt;&gt; &lt;&lt;&quot;工具

▲ move

▲ append

▲ call

▲ defrag

▲ device

一、DIR 命令的格式：

dir [D:][PATH][NAME][[/A][:attrib]][/o:[sorted][/s][/b][/l][/c[h]

(1)dir /a:attrib 缺省包含所有文件(系统文件.隐含文件)

attrib[:][h/-h]只显示隐含文件或非隐含文件.

[r/-r]只显示只读文件或非只读文件

[s/-s]只显示系统文件或非系统文件

[a/-a]只显示要归档文件或非归档文件

(2)/o[:]sorted:缺省完全按字母顺序,子目录显示在文件之前

/o[n/-n]:按字母顺序或按文件名顺序/反向显示

[e/-e]:按扩展名字母顺序/反向显示

[d/-d]:按时间顺序/反向显示

[s/-s]:按大小从大到小或/反向显示

[g/-g]:按子目录先于文件或文件先于子目录

(3)/s 参数:对当前目录及其子目录中所有文件进行列表

列名:dir /s/a/o:n c:\&gt;PRN

将c盘上的所有子目录和文件按隶属关系并根据子目录和文件字母顺序打印输出

(4)/B 参数:将只显示文件名与扩展名

(5)/L 参数:将全部用小写字母对文件或子目录进行列表

训练:

dir /a 列当前目录所有文件(含隐含及系统文件)

dir /ah 列隐含文件(包含子目录(隐含的) dir /a-h

dir /as 列系统文件 dir /a-s

dir /ad 列子目录 dir /a-d

dir /o 按字母顺序

dir /B 只显示文件名与扩展名

二、attrib [+r|-r] [+a|-a] [+s|-s] [+h|-h] [d: ] [name] [/s]

缺省 attrib name 显示文件的(文件)属性

attrib io.sys (或子目录)

shr c:\ io.sys 指定为系统(s) 隐含(h) 只读(r)文件

也可以attrib *.sys 显示扩展名为sys的文件属性

参数 [+r|-r] 将文件属性设置或解除 只读属性

[+a|-a] 将文件属性设置或解除 归档属性

[+h|-h] 将文件属性设置或解除 隐含属性 (尤其对子目录也起作用)

/s 参数 将当前及当前子目录下的所有文件均起作用

可以用来查找文件

例子:

attrib news86 列news86的文档属性

attrib +r report.txt 设置为只读 attrib -s -h record.txt

attrib +a a:*.*

attrib -a a:*.bak

xcopy a: b: /a 将A盘上的所有标志为&quot;归档&quot;属性的文件拷到B盘

xcopy a: b: /m 将A盘上的所有文件拷到B盘后并移去归档属性

三、cd 介绍: cd...返回上二级目录 &quot;.&quot;代表当前目录 &quot;.&quot;代表父目录

cd ..\..返回到上级目录的父目录(祖目录)

cd A:\ 将A盘的当前目录改为根目录

cd A:\xx 将A盘的当前目录改为子目录xx下

cd ..\98 先返回父目录,再进入父目录下的98子目录

cd ..返回到父目录

cd\98 进入根目录下的98子目录

四、copy [/y][/-y][/v][ /B]

copy /y 不加提示,对所有文件加以覆盖

/-y 加以提示,对所有文件 (yes或no提问 )

/v 拷贝以后加以校验

/B 按二进制进行显示

copy w1.wps con/b 可以将wps文件在屏幕上显示,而不必进入wps状态

copy ..\98 将父目录下的98子目录下的所有文件全拷到当前子目录

copy .\97 当当前目录下的97子目录下文件全部拷到当前目录

copy . c:\ 将当前目录下的所有文件拷到c盘根目录

. 意味着 *.* 文件

copy nul a.abc 将a.abc 文件清空(文件长度改为0)

copy 文件名+con 向文本文件中追加命令或内容

copy con 文件名 创建文本文件(F6存盘退出)

copy con prn 检测打印机的开关

五、xcopy命令

xcopy [source] [d:date] [/p] [/s] [/e] [/v] [/y]

xcopy [d:date] xcopy a:b:\ /d:08/18/98/s/v 拷贝98.08.18年后的文件

xcopy [/p] 提示创建子目录

xcopy [/s] 连带子目录一起拷贝. 注意:若目标盘上不存在此子目录,而在目标

盘的结束符又不以&quot;\&quot;为结束,则将提示:

does destination specify a file name or directory name on the target

[f=file,d=directory]?

在目标盘上创建文件[按下]还是创建子目录[按下d] ?应选择d键

xcopy[/v] 带较验

*:(1) xcopy 不拷贝系统和隐含文件,应先予以修改属性再拷贝

xcopy [/y] 覆盖时是否有提示, /y 不带提示

若省略目标盘或子目录名,则拷贝到当前目录下

六、 del /p

加/p 可以在删除前是否提示

如del后加子目录名,则将子目录下所有文件(隐含.系统.只读文件除外)全删除,

加/p则可以确认.

七、undelete [name] /au

不加提示地将所有满足条件的文件恢复(能够恢复的),并将首字母置成&quot;#&quot;,若已

存在,则按&quot;# % &amp; 0 1 2-9 a-z&quot;顺序加上.

如:undelete *.dbf/au 将扩展名为&quot;dbf&quot;的文件全恢复,并以&quot;#&quot;开头,作为文件

名, /list 仅列出可恢复的文件,而不恢复

undelete /load 将undelete装入内存

/unload 将undelete卸出内存

/s[drive]对指定驱动器进行监测管理

undelete/sc

将 undelete驻留内存,?并创建一个隐含的sentry 子目录对c盘删除的文件进行

管理 undelete/ds 恢复

相应恢复命令可以用undelete即可完整恢复出文件名(非常完整)

最常用undelete *.*

deltree /y [drive:path]

deltree 删除子目录及文件,尽管有些文件是系统文件或隐含文件

它可以带有通配符,带有通配符时,它将删除符合条件的文件及子目录

如:?undelete *.dbf/au 将扩展名为&quot;dbf&quot;的文件全恢复,并以&quot;#&quot;开头作为文件

名.

/list 仅列出可恢复的文件,而不作恢复操作.

undelete/load 将undelete 装入内存.

/unload将undelete 卸出内存.

/s[drive] 对指定的驱动器进行监视管理.

undelete/sc 将undelete 驻留内存,并创建一个隐含的sentry子目录对C盘删除

的文件进行管理.相应恢复命令可以用undelete/ds 即可完整恢复出文件名(很完善).

最常用的是undelete *.*

八、deltree /y [drive:path]

deltree 删除子目录及文件,尽管有些文件是系统或隐含的.

它可以带有通配符,这时它将删除符合条件的文件或子目录.

如:存在L1文件,L2子目录,L3文件,L4子目录

deltree L*.* 将删除以上所有的文件和子目录,但在删除前加以确认,若不删除,

可以输入&quot;N&quot;.

/y 参数是在删除时不加以确认就进行操作的.

它删除的文件可以用undelete恢复,?但不能恢复子目录及其下的文件,可以用特

殊工具.如NORTON 8.0 等.

若提前使用了undelete/s,?则可以在sentry子目录下找到完整的文件,但名已经

改变了.

九、dos=high[|low[umb|noumb]]

dos=high,umb 则dos将自身装入高端内存(high)并能管理上位内存(umb).

noumb 则不管理上位内存.

在写入dos=high及umb 前应装入device=himem.sys

为了将程序或驱动程序装入上位内存,必须使用dos=umb,可省出大部分常规内存.

可以在config.sys的任何位置写上dos=high,umb

若显示hma not avoiable 或 load down low 则表明不能使用高端内存.

十、doskey 记录以前敲过的dos命令,可以用F7来显示,用&quot;↑↓&quot;来选择,用F9来输入

选择的命令号.

doskey/restall 重新装入一次,以前的命令行撤消.

doskey/history 显示内存中所有的命令,可以&quot;&gt;&quot;显示到其它文件中,缩写&quot;/H&quot;.

doskey dir=cls 则击入dir等同于cls一样.

doskey/macros 可显示所有的宏定义,可使用&quot;&gt;&quot;重定义到文件中,可缩写&quot;/M&quot;.

doskey dir= 可撤消对dir 的宏定义.

doskey p=dir$tdir*.exe/p$tdir c:\t$tdir c:\t$*

$t为命令的区分符,而$*为命令的结束符

doskey/insert(overstrike)?在重新输入命令时,对旧命令的修改是插入还是覆

盖状态(默认).

十一、emm386.exe

提供对扩展内存的管理,使应用程序象使用常规内存一样能够使用它.

常见的用法是 在config.sys 中

device=c:\dos\himem.sys

device=c:\dos\emm386.exe ram

d=64 将DMA 内存数量设置为64K

noems 提供对上位内存的访问,但不提供对扩展内存的访问.

应注意的是在windows中最好不要用它,因为windows本身有对扩展内存进行管理

的程序.应采用windows中的管理器.

十二、fc 命令 fc/b dt.dat dt2.dat&gt;b (作二进制代码比较)

比较两个文件,一般用作存取进度,修改游戏存储文件用.

实际代码位置应加上0100 如:0000 05E4:00 67

实际用debug -e 修改时应加上0100 即 0000 06E4:00 67

后面加上重定向文件&quot;&gt;P&quot; 可以将比较结果输出到p文件中.

十三、format /q /u /s /n:sectors /f:size /c

/q参数:快速格式化,仅扫描文件分配表和根目录区,仅对格式化过的磁盘有效.

使用时应确保格式化过后没有增加新的坏道.

/u参数:无条件格式化,并且不保存原来盘上的信息,可以防止&quot;unformat&quot;.

/s参数:格式化为系统盘,也可以使用&quot;sys&quot;命令.

/f:size size 可以为160 180 320 360 720 1200 1440 2800

/n:sector n可以为1 格式为单面盘,容量为160k 180k

可以为4 可以在5寸高密驱动器上格式化360k磁盘

可以为8 可以在5寸高密驱动器上进行8个扇区的格式化.

/c 重新测试坏扇区,缺省时如果一个扇区标记为&quot;坏&quot;,以后格式时就不在从新测

试,仅作标记,使用&quot;/C&quot;时可以从新测试.

十四、unformat 命令

对用format 格式过,且未用&quot;/u&quot;参数的命令起作用,用它可以来重新修复已经损

坏的硬盘分区表,但对网络盘不起作用.

unformat drive:[/l][/test][/p]

/l 显示每一个被unformat发现的文件和子目录,如果没有这个开关,只显示那些

破碎的文件和子目录,可以用ctrl+s 暂停,按任意键继续.

/test 仅作一个测试,不作实际的修复工作,作模拟过程.

/p 一边测试一边打印.

注:这种方法不能保证修复所有的文件,尤其是格式化后又添加过数据的磁盘.

恢复后的文件依次存放在subdir1....2....3等子目录中.

十五、interlnk 语法 interlnk g=e ,它可以通过串口或并口在两机间进行通讯.

将服务器端上的e驱动器映射为客户端的g驱动器,以后对客户端而言,所有对g的

操作都意味着对服务器的访问,取消映射的办法为interlnk g=

单独输入interlnk 则显示所有的映射情况.

注意:interlnk 必须在装入interlnk.exe 设备驱动程序才可以使用.

所用的驱动器符号与config.?sys中lastdrv.exe设置的数目有关.可以作一个一

端为25针,另一端为9针的串行线实现,具体接线方式如下:

5 - 7 2 - 15

3 - 2 3 - 13

7 - 4 4 - 12

6 - 6 5 - 10

3 - 3 6 - 11

8 - 5 15 - 2

4 - 20 13 - 3

9针 25针 12 - 4

10 - 5

11 - 6

25 - 25

25针 25针

十六、interlnk.exe 与intersvr.exe

interlnk.exe 重新定向对于客户驱动器或打印接口的请求到另外的服务器驱动

器或打印机.

语法:config.sys 中加入:

device=c:\dos\interlnk.exe [drive:n][/noprinter][com][lpt]

十七、memmaker[/b][/batch][session][/swap:drive]

使用memmaker能够优化内存配置,?并将配置写入autoexec.bat和config.sys中.

在这一过程中,需要重新启动几次机器.

十八、memitem memcolor memdefault submenu 菜单选项include

autoexec.bat 中如下: config.sys中如下:

path c:\dos;c:\ucdos [menu]

doskey menucolor=15,1(前景色15,背景色1)

\mouse\mouse menuitem=base_config,this is a base

goto %config% -&gt;选择项 menuitem=cced_config,this is a cced

选项 提示

:base_config menudefault=base_config,5

goto exit -&gt;跳出 缺省为base_config,延迟时间5秒

:cced_config [common]

c:\dos\smartdrv.exe /l device=c:\dos\himem.sys

goto exit 各项都包含的共同部分

:exit -&gt;结束 [base_config]

device=c:\dos\emm386.exe ram

dos=high,umb

[cced_config]

device=c:\dos\smartdrv.exe/double_buffer

include=base_config 包含base_config设置

可以根据计算机的在不同情况下的配置要求来选择.

十九、mscdex.exe 提供对光驱进行读写的程序

mscdex/d:drive [/D:drive][/e][/k][/s][/l:letter]

典型:config.sys 中device=c:\cdrom\cdrom.sys /d:mscd000

autoexec.bat中 c:\dos\mscdex /d:mscd000 /l:g

配置了一个光驱,符号为g

参数/d:drive1为光驱身份号,须与config.sys中的符号一致,可有多个

/d:mscd000 /d:mscd001

/e:使用扩展内存装入光驱驱动程序.

/s:使光驱在ms_net或windows是否设置为共享光驱

/V是否在加载时显示内存.

/L:letter 分配给光驱的盘符

/m:number 指定缓冲器的数目

应该注意的是:?如果用smartdrv.exe 加速对光驱的读写能力,应该在autoexec.

bat中将mscdex.?exe 写在smartdrv.exe 之前,smartdrv.exe的使用可大幅提高

对驱动器的读写能力.

二十、msd的使用

使用msd 可以整体检查计算机配置及系统信息

包括:?驱动器参数,计算机cpu参数,内存大小参数,显示器类型,串.并口情况,以

及各个IRQ占用情况,据此可以分析新增设备是否与原来设备有冲突.

同时也可以通过分析内存驻留程序,判断内存中是否有病毒,有则标为&quot;???&quot;.

二十一、prompt dos提示符

$q 等于号 $t 当前时间 $d 当前日期 $p 当前驱动器符号

$$ $号提示 $n当前驱动器 $g 大于号 $l小于号 $b 显示&quot;|&quot;管道号

$h 隐去提示符 $E显示&quot;&lt;-&quot;号

对于其它文字,则直接显示文本本身prompt ljw,则显示为ljw提示符

prompt 则仅显示当前驱动器号及大于号.

二十二、ramdrive.sys 使用内存当做虚拟盘来使用

应注意,所有数据都存在于内存中,应及时将其存到硬盘中,否则掉电后或者死机

后将丢失全部数据,优点是运行速度快,但不能在windows中使用.

示例:config.sys: device=c:\dos\ramdrive.sys /size[/e|a]

size为以k为单位的字节数,即建立的虚拟盘的大小.

/e或/a 都是使用扩展内存来建立虚拟盘,?加参数的前提是必须先加载内存管理

器himem.sys及emm386.exe.

二十三、subst 将一个驱动器与一个子目录联接

如:将对A:\l1\l2 子目录的请求映射为S盘,则输入

subst s: a:\l1\l2 即可

这样使用dir s:?等命令则显示的是a:\l1\l2子目录下的内容,其它copy del 一样

可以用subst s: d 来取消这种映射.

可以用subst 来显示各种联接情况

注意:?可以采用subst a: c:a 来建立一个对于A的读写盘.对于某些安装软件

来说,?必须使用A盘来安装,就可以使用先将所要安装的软件全部拷贝到C:a子

目录中,然后输入subst a: c:a,再转到A:,就可以进行软件的安装了.

二十四、mem /c /m /p /d 常规内存显示程序

/c显示所有内存驻留程序的占用情况,分为conventional常规内存和uppermemory

高端内存占用,并显示总的占用情况(常规 高端 保留 扩展内存)

/p分页显示,页间暂停

/m后加模块名 如:/m msdos 显示dos系统内存的占用.

/d对常规 高端 保留 扩展内存加以详细例表说明

通过分析,可以看出内存占用是否合理,以及各种程序是否正常加载,从而在此基

础上使用内存优化工具memmaker进行各种管理,同时又可以分析出一些程序死机

的原因,若有的地方显示&quot;???&quot;,则可以断定内存中有病毒的存在,有利于发现及消灭.

二十五、各种管道工具的使用&quot;&gt; &lt; &gt;&gt; &lt;&lt;&quot;

将各种命令造成的输出或所需要的输入重新定向

如:dir *.bat /b&gt;p 可以将dir *.bat 例出的文件名输出到p文件中.

time&lt;p&gt;&gt;p.bat

p文件中仅存在一个回车符,则可以将时间追加进p.bat文件中

&quot;&gt; &gt;&gt;&quot; 是将命令产生的输出重新定向,比如到文件或打印机中.

&gt;&gt;产生的内容将追加进文件中,&gt;则将原文件内容覆盖.

&quot;&lt; &lt;&lt;&quot; 是将命令所需要输入的内容重新定向.

如:time&lt;p 在批中可以是时间代码或回车符,可以以此改变时间.

需要说明的是 &quot;prn &quot;为打印机, &quot;null&quot;为空设备

con 为显示器

type p.bat&gt;prn 可将p.bat打印出来.

copy null p 可将p文件删除掉

copy con p 可以在屏幕上编辑p文件,F6可以存盘退出

type p&gt;pp 完成p文件到pp 的复制

type p|more 可在屏满时暂停显示

二十六、move 命令

move [y/-y] filename1 filename2

将文件1移动到文件2处

如:move c:\dos\*.* c:\cced

将dos子目录下的所有文件全部移动到cced 子目录下

/y|-y参数在目标目录不存在需要创建时,是否出现提示

可以使用该命令修改子目录名称,如 move dos cced

将dos目录名改为cced

二十七、append 指定一些特殊数据文件的存放位置,如user.dat pe2.pro等一些非*.

exe *.com *.bat 文件

格式:append [:]终止以前存在的指定目录 append 显示指定情况

append [path] append c:\user 等

二十八、

call 在一个批处理命令中调用另外一个批处理文件

(1)不终止现有文件的运行,执行完掉用程序后立即返回.

(2)被调用批处理命令必须以bat 为扩展名

(3)调用批处理文件时,可以加上参数(%1-%9)以及环境变量如%baud%

(4)不能使用管道工具及重定向工具

二十九、device devicehigh loadhigh

device 将指定的设备驱动程序装入内存中

devicehigh将指定的设备驱动程序装入高端内存中

loadhigh 将指定的设备驱动程序装入高端内存中

三十、defrag 优化磁盘

legend(传奇) optimize(优化) elapse(逝去) fragment(碎片)

该命令执行对指定的盘进行优化处理(包括检查文件分配表,各文件状态,纠正错

误),在执行时,可按照文件名大小,时间,扩展名对文件进行排序. </pre>
</blockquote>
<div style=float:right><!-- JiaThis Button BEGIN -->
<div id="ckepop">
	<a class="jiathis_button_copy"></a>
	<a class="jiathis_button_email"></a>
	<a class="jiathis_button_fav"></a>
	<a class="jiathis_button_print"></a>
	<a class="jiathis_button_tsina"></a>
	<a class="jiathis_button_tqq"></a>
	<a class="jiathis_button_qzone"></a>
	<a class="jiathis_button_renren"></a>
	<a class="jiathis_button_kaixin001"></a>
	<a class="jiathis_button_baidu"></a>
	<a class="jiathis_button_tsohu"></a>
	<a class="jiathis_button_t163"></a>
	<a class="jiathis_button_douban"></a>
	<a class="jiathis_button_twitter"></a>
	<a class="jiathis_button_fanfou"></a>
	<a href="http://www.jiathis.com/share?uid=1571159" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank"></a>
	<a class="jiathis_counter_style"></a>
</div>
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jia.js?uid=1571159" charset="utf-8"></script>
<!-- JiaThis Button END --></div>]]></content:encoded>
			<wfw:commentRss>http://rovertang.com/fav/archives/25/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google code上的Wiki、Issues、Downloads的Tags中文翻译</title>
		<link>http://rovertang.com/fav/archives/23</link>
		<comments>http://rovertang.com/fav/archives/23#comments</comments>
		<pubDate>Mon, 16 Jan 2012 01:17:28 +0000</pubDate>
		<dc:creator>Rover</dc:creator>
				<category><![CDATA[网站&程序]]></category>
		<category><![CDATA[Google code]]></category>

		<guid isPermaLink="false">http://rovertang.com/fav/?p=23</guid>
		<description><![CDATA[<h4><strong>Predefined Wiki Page Labels:</strong></h4>  <blockquote>   <p>Featured&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 列出在项目主页     <br />Phase-Requirements&#160;&#160;&#160; = 项目规划和需求分析      <br />Phase-Design&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 项目设计和关键问题      <br />Phase-Implementation&#160; = 开发者指南      <br />Phase-QA&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 测试计划和质量规范      <br />Phase-Deploy&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 如何安装和配置程序      <br />Phase-Support&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 计划支持的用户和宣传      <br />Deprecated&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 废弃的，大多数用户不应该参照这个</p> </blockquote>  <p><strong>Open Issue Status Values:</strong></p>  <blockquote>   <p>New&#160;&#160;&#160;&#160;&#160;&#160; = 新添加并且未审核的问题     <br />Accepted&#160; = 已通过审核的问题      <br />Assigned&#160; = 已经指派相关人员处理      <br />Started&#160; = 正在处理这个问题      <br />Closed Issue Status Values:      <br />Fixed&#160;&#160;&#160;&#160;&#160;&#160; = 开发者提出的需要变化，已经解决      <br />Verified&#160;&#160;&#160; = 已经解决的问题      <br />Invalid&#160;&#160;&#160;&#160; = 无效的问题报告      <br />Duplicate&#160;&#160; = 重复出现的问题      <br />WontFix&#160;&#160;&#160;&#160; = 决定不解决这个问题</p> </blockquote>  <p><strong>Predefined Issue Labels:</strong></p>  <blockquote>   <p>Type-Defect&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 项目出现 BUG     <br />Type-Enhancement&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 功能需要加强      <br />Type-Task&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 新的任务，不需要修改代码或者文档      <br />Type-Review&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 请求审核代码      <br />Type-Other&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 其他类型的问题      <br />Priority-Critical&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 必须在指定的时间内解决      <br />Priority-High&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 希望在指定的时间内解决      <br />Priority-Medium&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 优先考虑解决      <br />Priority-Low&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可以在以后解决      <br />OpSys-All&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 影响到所有的操作系统      <br />OpSys-Windows&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 影响到 Windows 操作系统      <br />OpSys-Linux&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 影响到 Linux 操作系统      <br />OpSys-OSX&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 影响到 Mac OS X 操作系统      <br />Milestone-Release1.0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 所有基本功能可正常工作      <br />Component-UI&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 问题涉及到程序界面      <br />Component-Logic&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 问题涉及到应用程序逻辑      <br />Component-Persistence&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 问题涉及到的数据存储      <br />Component-Scripts&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 实例或安装脚本      <br />Component-Docs&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 问题涉及到用户文档      <br />Security&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 存在安全性的问题      <br />Performance&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 存在性能问题      <br />Usability&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 影响到程序的可用性      <br />Maintainability&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 影响到程序的规划</p> </blockquote>  <p><strong>Predefined Download Labels:</strong></p>  <blockquote>   <p>Featured&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 列出在项目主页     <br />Type-Executable&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可运行的项目      <br />Type-Installer&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可安装的项目      <br />Type-Package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可在操作系统上安装的软件包      <br />Type-Archive&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 下载及解压后，按照指示进行安装      <br />Type-Source&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 项目源文件包      <br />Type-Docs&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 项目文档      <br />OpSys-All&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可运行于所有的操作系统上      <br />OpSys-Windows&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可运行于 Windows 操作系统      <br />OpSys-Linux&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可运行于 Linux 操作系统      <br />OpSys-OSX&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可运行于 Mac OS X 操作系统      <br />Deprecated&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 废弃的，大多数用户不应该下载这个包</p></blockquote>]]></description>
			<content:encoded><![CDATA[<h4><strong>Predefined Wiki Page Labels:</strong></h4>
<blockquote><p>Featured&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 列出在项目主页     <br />Phase-Requirements&#160;&#160;&#160; = 项目规划和需求分析      <br />Phase-Design&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 项目设计和关键问题      <br />Phase-Implementation&#160; = 开发者指南      <br />Phase-QA&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 测试计划和质量规范      <br />Phase-Deploy&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 如何安装和配置程序      <br />Phase-Support&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 计划支持的用户和宣传      <br />Deprecated&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 废弃的，大多数用户不应该参照这个</p>
</blockquote>
<p><strong>Open Issue Status Values:</strong></p>
<blockquote><p>New&#160;&#160;&#160;&#160;&#160;&#160; = 新添加并且未审核的问题     <br />Accepted&#160; = 已通过审核的问题      <br />Assigned&#160; = 已经指派相关人员处理      <br />Started&#160; = 正在处理这个问题      <br />Closed Issue Status Values:      <br />Fixed&#160;&#160;&#160;&#160;&#160;&#160; = 开发者提出的需要变化，已经解决      <br />Verified&#160;&#160;&#160; = 已经解决的问题      <br />Invalid&#160;&#160;&#160;&#160; = 无效的问题报告      <br />Duplicate&#160;&#160; = 重复出现的问题      <br />WontFix&#160;&#160;&#160;&#160; = 决定不解决这个问题</p>
</blockquote>
<p><strong>Predefined Issue Labels:</strong></p>
<blockquote><p>Type-Defect&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 项目出现 BUG     <br />Type-Enhancement&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 功能需要加强      <br />Type-Task&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 新的任务，不需要修改代码或者文档      <br />Type-Review&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 请求审核代码      <br />Type-Other&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 其他类型的问题      <br />Priority-Critical&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 必须在指定的时间内解决      <br />Priority-High&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 希望在指定的时间内解决      <br />Priority-Medium&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 优先考虑解决      <br />Priority-Low&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可以在以后解决      <br />OpSys-All&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 影响到所有的操作系统      <br />OpSys-Windows&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 影响到 Windows 操作系统      <br />OpSys-Linux&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 影响到 Linux 操作系统      <br />OpSys-OSX&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 影响到 Mac OS X 操作系统      <br />Milestone-Release1.0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 所有基本功能可正常工作      <br />Component-UI&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 问题涉及到程序界面      <br />Component-Logic&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 问题涉及到应用程序逻辑      <br />Component-Persistence&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 问题涉及到的数据存储      <br />Component-Scripts&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 实例或安装脚本      <br />Component-Docs&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 问题涉及到用户文档      <br />Security&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 存在安全性的问题      <br />Performance&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 存在性能问题      <br />Usability&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 影响到程序的可用性      <br />Maintainability&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 影响到程序的规划</p>
</blockquote>
<p><strong>Predefined Download Labels:</strong></p>
<blockquote><p>Featured&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 列出在项目主页     <br />Type-Executable&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可运行的项目      <br />Type-Installer&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可安装的项目      <br />Type-Package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可在操作系统上安装的软件包      <br />Type-Archive&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 下载及解压后，按照指示进行安装      <br />Type-Source&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 项目源文件包      <br />Type-Docs&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 项目文档      <br />OpSys-All&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可运行于所有的操作系统上      <br />OpSys-Windows&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可运行于 Windows 操作系统      <br />OpSys-Linux&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可运行于 Linux 操作系统      <br />OpSys-OSX&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 可运行于 Mac OS X 操作系统      <br />Deprecated&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = 废弃的，大多数用户不应该下载这个包</p>
</blockquote>
<div style=float:right><!-- JiaThis Button BEGIN -->
<div id="ckepop">
	<a class="jiathis_button_copy"></a>
	<a class="jiathis_button_email"></a>
	<a class="jiathis_button_fav"></a>
	<a class="jiathis_button_print"></a>
	<a class="jiathis_button_tsina"></a>
	<a class="jiathis_button_tqq"></a>
	<a class="jiathis_button_qzone"></a>
	<a class="jiathis_button_renren"></a>
	<a class="jiathis_button_kaixin001"></a>
	<a class="jiathis_button_baidu"></a>
	<a class="jiathis_button_tsohu"></a>
	<a class="jiathis_button_t163"></a>
	<a class="jiathis_button_douban"></a>
	<a class="jiathis_button_twitter"></a>
	<a class="jiathis_button_fanfou"></a>
	<a href="http://www.jiathis.com/share?uid=1571159" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank"></a>
	<a class="jiathis_counter_style"></a>
</div>
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jia.js?uid=1571159" charset="utf-8"></script>
<!-- JiaThis Button END --></div>]]></content:encoded>
			<wfw:commentRss>http://rovertang.com/fav/archives/23/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

