2007年1月31日星期三

中国史上死得最窝囊的十个战神

http://blog.eastmoney.com/hqwy/269560.html


所谓战神,即是武艺高强,熟知兵法,且又有赫赫战功,同时代无出其左者。但风光背后却没能得善终,且死不得其所,则必为千古遗憾!以前也有人归纳过这样的英雄,我这里将演义中的人物也算上,供大家娱乐:

1.李牧

或许是因为《史记》是汉朝人写的,所以对于春秋战国时代的诸多名将的记录就显得淡化了。事实上,在春秋战国时代,李牧是一个绝不能被忽视的人物。战国时代他是赵国对秦作战最具战功的将军,廉颇赵奢皆不及他。

李 牧的赫赫功业是对匈奴的战绩上,此前的赵国一直受匈奴威胁。赵军屡败于匈奴,以至赵武灵王胡服骑射,知耻而后勇。赵军从装备和作战方式上高度学习匈奴,建 立了让六国震惊的骑兵部队。但骑射终非汉人所长。任赵国骑兵如何在中原纵横驰骋,对匈奴战争依然是屡战屡败。毕竟,以骑兵对抗匈奴,对于当时骑兵战法还相 对幼稚的汉人来说,无疑是以己之短击彼之长。这种情况直到李牧戍守长城后才得以改变。本来李牧被发配北疆,是赵王中了秦国反间计的结果。但感谢秦国的反间 计,因为李牧的到来,从此中国有了农业民族战胜游牧民族的第一个成功战例。

李 牧真正意义上的与匈奴一战只有一次,但仅仅是这一次,就打的匈奴几乎十年不敢南下。此战中李牧将孙子兵法的智慧发挥到及至,先是连败五阵,丢弃牛羊辎重无 数,将匈奴主力从他们擅长的草原引诱到汉人所擅长的长城外围来进行决战,并以示弱于敌的手段麻痹对手。接着火速出击,深夜集合人马,夜袭匈奴大营,把那些 在马上纵横的匈奴骑士在睡梦中杀死。同时重装战车包围匈奴营地出口,以密如蝗虫的箭矢射杀匈奴逃亡者。此战打的匈奴主力几乎全军覆没,几年难以恢复元气。 更重要的是,此战是汉族军队步骑车兵协同作战的经典战例,为日后汉政权与匈奴作战提供了可借鉴的范本. 可惜李牧下场不大好。事先已经知道赵王要杀他讨好秦国,单骑出逃,结果逃到半路居然被赵王派来的追兵追上并杀掉,死不得其所。如果李牧逃掉,肯定不甘心隐姓埋名,不知道哪一个国家会受益呢。

2. 项羽

名籍,字羽,下相(今江苏宿迁西南)人。项羽是武将世家,祖上是楚国大将项燕,他身长八尺有余,力能举鼎,天赋过人。少时书剑都没学成,他叔父项梁责备他,他说:"书足以记姓名而已,剑一人敌,不足学。学万人敌。"

体现项羽英勇的主要是巨鹿,彭城,垓下三战,前两战体现了项羽卓越的军事天才和英勇气概,而垓下一战则造就了千古悲情的西楚霸王。

巨 鹿之战,项羽杀掉主将宋义,率五万义军渡河救赵,破釜沉舟,烧掉营垒,只携带三天的干粮,以表与秦军决战之心。一到巨鹿就包围王离,九战九胜,大败秦军三 十余万,斩苏角,擒王离,逼涉间自尽。此一战一举扭转天下局势。当时各路诸侯大军已经到了巨鹿城下,但是畏惧秦军都不出战,只是作壁上观,看到楚军骁勇果 敢,无不以一当十,呼声震天,使诸侯军无不人人惴恐,只是最后才追杀了一些秦军的残兵败将。完胜后,项羽召见诸侯将领,诸将"入辕门,无不膝行而前,莫敢 仰视。项羽由是始为诸侯上将军,诸侯皆属焉。"

那时的项羽真是意气风发啊。 再说彭城之战。刘项兄弟反目,刘邦借项羽杀主之罪名率五十六万联军攻占楚都彭城,闻讯后项羽又一次展现了他他的军事天才,他亲率三万精兵回救彭城,晨时开始进攻,中午即大破联军,将刘邦所部挤压于谷水、泅水之地。联军自相践踏,被楚军斩杀 10余万人,联军余部溃退,项羽又追至睢水,再歼联军10余万人,联军尸体塞满河道,睢水为之不流,楚军将联军重重包围,因风沙骤起刘邦乘才得以逃脱,其父及妻吕雉却被楚军俘获。

以后项羽缺乏战略和政治头脑就显现出来了,约刘邦单挑决天下,然后又放了太公吕后,与刘邦和议,划界鸿沟。项羽依约东归。刘邦却听从张良、陈平之劝,越过鸿沟,追项羽于阳夏,并邀韩信、彭越共40万大军与 10万 楚军决战于垓下,结果项羽中韩信的十面埋伏,被围垓下,夜闻四面楚歌,此时的项羽真是英雄气短,儿女情长,面对美人虞姬,思念骏马骓,有了千古绝唱《垓下 歌》:"力拔山兮气盖世,时不利兮骓不逝。骓不逝兮可奈何,虞兮虞兮奈若何?",歌数阕,美人和之。项羽泣数行下,左右皆泣,莫能仰视。歌毕,虞姬为了能 让项羽成功突围,拔剑自刎。项羽骑着他的乌骓马,乘夜率800骑突围南逃。

天亮以后,汉军有所察觉,刘邦派灌婴率5000骑兵追击,项羽走到阴陵迷失道路,陷入大泽。到了东城,仅剩28骑。面对汉军,项羽自知难逃厄运,激发了项羽举世的英勇,他对 28骑 说:"吾起兵至今八岁矣,身七十余战,所当者破,所击者服,未尝败北,遂霸有天下。然今卒困于此,此天之亡我,非战之罪也。"他又对属下说:"吾为公取彼 一将",项羽大喝上前,所向披靡,果然斩一汉将,他们突围出去后,杨喜追项羽,项羽嗔目大喝,杨喜人马俱惊,后退数里。后来项羽再次为汉军包围,项羽率军 再次杀入汉军,再斩一都尉,杀百余人,又突围逃到乌江。

这 时乌江亭长备好渡船催他渡江了,亭长说:"江东虽小,地方千里,众数十万人,亦足王也。" 项羽笑曰:"天之亡我,我何渡为!且籍与江东子弟八千人渡江而西,今无一人还。纵江东父兄怜而王我,我何面目见之?纵彼不言,籍独不愧于心乎?"把将乌骓 马送与亭长,令部下下马和汉军肉搏,项羽又杀敌数百,身重十数伤,看见汉将吕马童,对其说:"你是我的旧部,我听说刘邦悬赏千金,封万户买我的头,我就送 你个人情吧。"于是自刎而死,年仅31岁。汉军抢夺项羽尸体自相残杀者数十人,最后王翳等五人分了项羽的尸体,都被封侯。

项羽英勇无敌,战术指挥上的造诣也是很强的,如果作为一个将军,如果生在汉武之时,想必起所建功业也可以与卫青,霍去病相媲美。但是历史没有如果,他刚愎自用,在战略上短视和,在政治上幼稚 ,却做在了统帅的位置,与老谋深算的刘邦争天下,注定会是个失败者。

3.韩信

韩信(?~前196), 汉初军事家。淮阴(今属江苏)人。自幼熟读兵书,怀安邦定国之抱负。因家境贫寒,常食不裹腹。曾受乡间流氓欺凌而受跨下之辱。陈胜、吴广起义后,韩信始投 项梁,继随楚霸王项羽,但不受项羽重用。后又投奔汉王刘邦。初始刘邦看不起貌不惊人,曾受跨下之辱的韩信,经丞相萧何力荐,才始拜韩信为大将。

韩信拜将不久,即率军沿南郑故道东出陈仓,一举拿下了关中地区,使刘邦得以还定三秦。第二年,出函谷关,将兵锋逼至楚都彭城。

此 后,韩信率兵数万,开辟外线战场。破魏之战,针对魏军部署,佯作正面渡河之势,暗从侧后偷渡,攻其不备,俘获魏王豹。井陉之战,背水为阵,使将士死地求 生,人自为战,以一万之众大破二十万赵军。淮水之战,借助河水,分割楚军,将齐、楚联军各个击灭。攻占齐地后,韩信被封为齐王。

公元前202 年 春,楚汉两军在垓下(今安徽灵璧南)展开决战,韩信独当中军,他先令两翼部队对楚军实行侧击,再令中军推进,很快完成了合围。入夜,韩信令汉军四面唱起楚 歌,终使楚军丧失斗志,被汉军一举聚歼于亥下。项羽眼见大势已去,慷慨自刎于乌江边。楚汉战争以汉王刘邦夺得天下而告终。

韩 信熟谙兵法,战功卓著,为汉王朝的创建作出了重要贡献。其用兵之道,为后世兵家所推崇。刘邦虽用韩信而心存疑忌,故在项羽败亡后,即夺其兵权,徙为楚王, 继又黜为淮阴侯,软禁于刘邦身边。在这一段索寞的日子里,他与张良一起整理了先秦以来的兵书,共得一百八十二家,这也是我国历史上第一次大规模兵书整理, 为我国军事学术研究奠定了科学的基楚。公元前196 年,吕后诱韩信至长乐宫的钟室,以谋反罪名杀之。一代名将,死非其所,实堪哀伤。

4.张飞

(公元168年―221年), 字益德(《三国演义》中字翼德),涿郡人(今河北涿州)。张飞为人勇猛,曾率二十骑兵于长坂吓退曹军。而且书法不错,擅画美人,现今仍有其墨宝、画像留 下。张飞对有学问的人很礼遇,如刘巴初降,张飞立即到其家拜访,但刘巴没有和他说过一句话,张飞虽然气愤,但没有抱怨说一句。张飞也惜英雄重英雄,如捉到 严颜时,严颜宁死不屈,张飞敬重其为人,将严颜收为将领。可是张飞脾气暴躁,对士兵非常严厉。刘备时常劝张飞:"卿刑杀既过差,又日鞭挝健儿,而令在左右,此取祸之道也"但张飞不听。果然张飞就是死在其部下之手。试想一下如果张飞不是被张达 �p范强(演义中写作范疆)之辈暗杀,在当时"吕布死典韦亡,赵云马超是一帮"的时期,又有何人能在沙场上与之匹敌呢!张飞死后,其尸体躯干被埋葬在阆中,头颅埋葬在云阳,并分别建有张桓侯祠和张桓侯庙。

5.李元霸

隋唐中所说的李元霸其人长的是尖嘴缩腮,骨瘦如柴,面如病鬼,但力大无穷.两臂有四象不过之力,意思说他张开胳膊把路一拦,四头大象都过不来!使一对'擂鼓翁金锤'各重 320斤(也有说重400斤,估计和奥尼尔差不多).坐下一骑万里云,天下无敌.在大隋称第一条好汉 ,后封为西府赵王。但是也有书中说李元霸交战向来不骑马,简单说他根本就没有什么坐骑。向来一副无忧的样子总把锤子放在肩头倾斜着脑袋,眼神透露出无法掩饰的纯真。

李元霸常年被关在笼子里吃喝拉撒都在笼子里解决,如同对待一只牲畜一样,多年不洗脸被人看起来自然是不像一个人。

据说李元霸无欲无求 有爱(只对李世民还有他爹两个人)无恨

关于李元霸的英勇,演义中说其在一场战役中将18路反王的180万人杀的只剩下62万人,这样的战果估计在现代只有用原子弹才能够完成。

关于李元霸的死因通常有3种说法

1.举锤骂天,被雷劈死。

2.想用锤子打老天,结果锤子掉下来把自己砸死。

3.战死沙场。被开隋九老之一的鱼俱罗用拖刀计杀死。据说李元霸学艺出师后,他师父对他说日后不要杀手里使用镏金镗的人,结果他杀了使用镏金镗的宇文成都,鱼俱罗是《兴唐传》里宇文成都的老师,为了给徒弟报仇杀了李元霸。

我选择了第一种,英雄寂寞,天妒战神。

6秦琼

秦琼,字叔宝,齐州历城(今山东济南)人。秦琼之父曾任北齐时期的咸阳王录事参军。隋大业年间,秦琼效力于隋将来护儿帐下,因其志向高远和勇猛强悍,深得器重。秦母去世后,来护儿曾派员专程到秦琼家吊唁,全军上下大为惊异。

隋末乱世,义军群起,秦琼投归隋将齐郡郡丞苯张须陀,在下邳(今江睢宁北)与 义军首领卢明月交战。当时,双方力量悬殊,张须陀部队仅一万来人,义军则有十多万人,相持十多天后,须陀已是人困粮绝。就是这急于撤退而又怕追赶的紧要关 头,秦琼与罗士信挺身而出,愿带领一千人偷袭对方军营,以掩护大队人马安全后撤。秦琼与罗士信凭借自己的智勇,使突袭获得成功。张须陀则乘机回师追击,取 得了脱逃后的胜利。仅此一仗,秦琼的勇猛多智便很快扬名于军中。

在 之后的作战中,秦琼因为有功而被任命为建节尉。后在对义军李密进击时,张须陀成败而亡。秦琼率残兵败将归依了裴仁基,而后又随同裴仁基投降了义军首领瓦岗 军李密。李密得到秦琼非常高兴,加以重用让他作骠骑将军。在跟随李密作战中,有一次李密被流失射中,坠于马下,昏迷不省人事,此时左右随从四散,追兵就要 赶到,情况十分危急,多亏秦琼拼死护卫,并重整队伍,这才击退了追兵,从而使李密大难不死。后来李密失败,秦琼又为隋将王世充收得,被任命为龙骧大将军。 后因不满王世充的狡诈,遂与程咬金等人脱离王世充投向李渊并在秦王李世民手下干事,因其勇猛过人,被委任为马军总管。

此 后,秦琼跟随秦王李世民,先后镇压了王世充、窦建德、刘黑闼等多路义军,为唐王朝的创建立下了汗马功劳,李渊曾派使者赐予金瓶以示褒奖。之后,又因战功, 多次受到奖赏,先后拜为秦王右统军,加授上柱国。后又进封为翼国公,深得秦王李世民的信任。秦琼不仅在唐王朝创建伊始立下了赫赫战功,而且在唐王朝内部斗 争的"玄武门之变"中,坚决站在秦王李世民一边,一起诛杀了太子建成和齐王元吉,为李世民当太子夺皇位扫清了道路。

唐武德九年(626)六月,秦王李世民被立为太子,八月接王位,改号贞观,这就是历史上有名的唐太宗。秦琼也因有功,拜为左武卫大将军,赐给七百户的封邑。后来,秦琼多病缠身,自谓 :自幼戎马转战,身经大战二百余次,光流的血也足足有几十斗之多,元气大伤,怎能不病? 到贞观十二年(638)终于因病去世。而演义中说其为了挂帅征东,在70高龄与尉迟恭比赛举千斤石狮子,累的吐血到地,以至病死,岂不冤哉!

秦琼死后赠徐州都督,改封胡国公,并陪葬昭陵。"太宗特令所司就其茔内立石人石马,以旌战阵之功焉。"(《旧唐书》本传)他的画像也上了表彰大功臣的凌烟阁。秦琼的传奇人生后被演义进了戏剧以及说唱文学之中,并且被人们誉为"山东好汉"。济南一地也附会出了不少关于秦琼的遗迹,像秦琼卖马槐、秦琼府、秦琼墓等等。至今在济南王龙潭仍留有"唐左武卫大将军胡国公秦叔宝故宅"的石碑

7. 薛仁贵

龙门(今山西河津)人,是个酷哥,自幼贫寒,习文练武,有臂力,善骑射长成务农武艺高强,善骑射。

唐贞观末年时要远征高丽,644年,薛仁贵参加了张士贵(又是让小说冤枉的好人)的部队,张士贵部行至安地时,郎将刘君印为当地武装所围,薛仁贵闻讯后,单枪匹马前往营救,击斩敌将,系其头于马鞍,降伏余众,救君印回营,第一次出手就勇冠三军。

645 4月,唐军前锋进抵高丽,不断击败高丽守军,6月,至安市,高丽莫离支遣将高延寿率军20万 依山驻扎,抗拒唐军。唐太宗视察地形后,命诸将率军分头进击。这时,薛仁贵自恃骁勇强悍,想立奇功,穿上与众不同的白衣白甲,手持方天戟,腰挎两张弓(装 酷)大呼陷阵,高丽将士纷纷倒伏,杀开一条血路。唐军随之继进,高丽军被打得大败。这一战看的李世民也非常高兴,回师时道:"不喜得辽东,喜得虎将"。

高宗在位时薛仁贵屡次击败高丽,契丹人。661年, 以前的回纥首领婆闰死,继位的比粟转而与唐为敌,薛仁贵率兵赶赴天山,回纥九姓拥众十余万相拒,并令骁勇骑士数十人前来挑战,先选数十骁骑挑战,他张弓连 发三箭,射杀三人将,其余人慑于神威全都请降。薛仁贵乘势挥军掩杀,九姓回纥大败,所降全部坑杀。接着,薛仁贵又越过碛北追击败众,擒其首领兄弟三人,军 中遂有歌:"将军三箭定天山,壮士长歌入汉关。"

后薛仁贵因败给吐蕃人以及在任时因违法而被数次免职,最终又被朝廷起用,682年,突厥阿史那元珍反唐,他率兵出击,在云州遇敌。敌方问:"唐将为谁?" 曰:"薛仁贵。"突厥人惊问:" 我们听说薛将军流放象州已死,怎么可能复活了?"仁贵摘下头盔,突厥人大惊,下马罗拜后逃跑。仁贵追击,斩首万余级,俘 2万余人。

薛 仁贵作战勇猛,并且善用奇兵,屡败北方各族,还曾任安东都护数年管理朝鲜一带,理政才能也是不错的,不过杀戮过多,做官又玩忽职守,纵容手下,与演义中的 人物相比武功并无多少夸大,人品则显不足。不过他在演义中的结局更是窝囊,居然被自己的儿子误射而死,不仅死不得其所,还让他儿子背上一世骂名。

8. 赵匡胤

宋 太祖赵匡胤通过"黄袍加身"从后周孤儿寡母手中夺得政权,建立北宋。然而北宋当时在中国也仅仅是一个比较强的割据势力而已,如果它像后梁、后唐、后晋、后 汉、后周这五个朝代一样,短短几十年而亡,人们也不会过多的表示惊讶。但是雄才大略的赵匡胤天才的通过"杯酒释兵权"和平解除了高级将领的威胁,铲除了五 代以来"皇帝轮流坐,明天到我家"式的频繁政变的土壤,同时在国内进行了政治经济一系列的改革,加强了中央集权。经过短短数年的发展,北宋政通人和、经济 繁荣,重新一统华夏的历史责任,也就当仁不让的被宋太祖承担了下来。从乾德三年开始,北宋在赵匡胤的指挥下,进行了捷报频传的大规模的兼并战争。

公元963年,慕容延昭剿灭南平

公元964年,王全斌、刘光义平定后蜀

公元970年,潘美攻占南汉

公元974年,曹彬征服南唐

公元975年,吴越国王望风而降

至此,南方基本收归北宋版图。

公元976年,宋太祖赵匡胤的"统一之手"开始不可阻挡的指向了北汉,然而,死亡又一次葬送了华夏民族统一的愿望。当年10月,赵匡胤在给后人留下了"烛影斧声"的千古谜团后,离奇的崩逝于汴梁万岁殿,享年五十岁。

宋太祖的离世,使北宋丧失了统一中国的大好良机。即位的太宗军事上显然远逊于太祖,虽然北宋随后灭亡了北汉,却两次大败于契丹,导致具有重要战略价值的燕云十六州始终未能收复。终北宋之世,这种巨大的战略被动一直压在皇帝和臣民的心头-- 一个连长城都被北方游牧民族占去的政权,究竟还能存在多久呢?

9.高宠,杨再兴,曹宁

这 三个之所以能并列,是因为他们在演义中出现的篇幅都很少,但是都是万中无一的虎将,却又都不得善终。高宠连挑十一辆滑车,到第十二辆时因战马已筋疲力尽, 将其掀翻在地,被铁滑车碾个稀扁。杨再兴误陷小商河,被当成了活靶子,连人带马射的如柴蓬一般。死的最冤枉的当属曹宁,这个比陆文龙还狠的人物,只因为杀 了自己卖国求荣的父亲,被孝字当先的岳飞拒之门外,走投无路,只有自刎身亡。唉,要是放在今天,可能还是大义灭亲的好榜样呀!

10. 袁承焕

大明炮神。有了他,清朝的野心总是成为妄想,努尔哈赤、皇太极………奉袁必输,哪怕是三千部队对强大的十万大军,袁 承焕还是守住了江山,让敌人望尘莫及!袁承焕驻守边疆上十年,支撑了明朝国防的半边天,可结果却中了皇太极的反间计,死在了多疑的崇祯手上。遥想当年袁承 焕被押入京,一时间谣言四起,在几个慷慨激昂之士的煽动下,整个京城的百姓沸腾了,他们将对满清的仇恨全部发泄在袁承焕身上,袁承焕是否有罪在那时已经不 重要。

人 们似乎只是把他当做了一个发泄对象。骂得越响越证明自己爱国,咬得越深证明自己越仇敌。就连那些养尊处优的达官贵人们也坐不住了,纷纷表示要生啖其肉,一 时间袁承焕的肉竟与黄金等价。洛阳纸贵、京城"肉"贵。当年菜市口,群情激奋,民众争相生吃其肉,袁承焕这位为国家立下汗马功劳的志士英雄就这样死在自己 一生所保护民众的手中,死在了谣言中。本来我觉得岳飞已经很冤了,可是岳飞被"莫须有"的杀害后,至少老百姓都是站在他这边的,何况岳飞20年就平反了,可是袁呢,47岁被杀,152年之后平反,还是敌国为其昭雪,真是太冤了。

袁清贫一生,没有儿子,当时的妻子和胞弟都流放2千 公里,一家的命运都坎坷不已……另外,据说当时袁崇焕被爱国群众愤怒地吃掉了,但还剩一个人头没吃,便被拿到边境上的九个重镇如大同、宁夏等地去示众。后 来他的部下佘先生冒着灭九族的危险偷走了人头,从此北京广渠门外多了一座孤零零的坟丘和一个守墓的家族,这一守,就是十七代人。(直到现在还有个佘老太 太)

后来清朝人给他修了祠堂,解放后毛主席也同意要修葺。但是一九六六年的"史学革命"中,香火不旺的袁祠也在劫难逃。

4个故事

1.误会:早年在美国阿拉斯加地方,有一对年轻人结婚,婚后生育,他的太太因难产而死,遗下一孩子。他忙生活,又忙于看家,因没有人帮忙看孩子,就训练一只狗,那狗聪明听话,能照顾小孩,咬着奶瓶喂奶给孩子喝,抚养孩子。有一天,主人出门去了,叫它照顾孩子。他到了别的乡村,因遇大雪,当日不能回来。第二天才赶回家,狗立即闻声出来迎接主人。他把房门开一看,到处是血,抬头一望,床上也是血,孩子不见了,狗在身边,满口也是血,主人发现这种情形,以为狗性发作,把孩子吃掉了,大怒之下,拿起刀来向着狗头一劈,把狗杀死了。之后,忽然听到孩子的声音,又见他从床下爬了出来,于是抱起孩子;虽然身上有血,但并未受伤。他很奇怪,不知究竟是怎么一回事,再看看狗身,腿上的肉没有了,旁边有一只狼,口里还咬着狗的肉;狗救了小主人,却被主人误杀了,这真是天下最令人惊奇的误会。注:误会的事,是人往往在不了解、无理智、无耐心、缺少思考、未能多方体谅对方,反省自己,感情极为冲动的情况之下所发生。误会一开始,即一直只想到对方的千错万错;因此,会使误会越陷越深,弄到不可收拾的地步,人对无知的动物小狗发生误会,尚且会有如此可怕严重的后果,这样人与人之间的误会,则其后果更是难以想象。

2.钉子:有一个男孩有着很坏的脾气,于是他的父亲就给了他一袋钉子;并且告诉他,每当他发脾气的时候就钉一根钉子在后院的围篱上。第一天,这个男孩钉下了37根钉子。慢慢地每天钉下的数量减少了。他发现控制自己的脾气要比钉下那些钉子来得容易些。终于有一天这个男孩再也不会失去耐性乱发脾气,他告诉他的父亲这件事,父亲告诉他,现在开始每当他能控制自己的脾气的时候,就拔出一根钉子。一天天地过去了,最后男孩告诉他的父亲,他终于把所有钉子都拔出来了。父亲握着他的手来到后院说:你做得很好,我的好孩子。但是看看那些围篱上的洞,这些围篱将永远不能回复成从前。你生气的时候说的话将像这些钉子一样留下疤痕。如果你拿刀子捅别人一刀,不管你说了多少次对不起,那个伤口将永远存在。话语的伤痛就像真实的伤痛一样令人无法承受。注:人与人之间常常因为一些彼此无法释怀的坚持,而造成永远的伤害。如果我们都能从自己做起,开始宽容地看待他人,相信你(你)一定能收到许多意想不到的结果....帮别人开启一扇窗,也就是让自己看到更完整的天空....

3.且慢下手:大多数的同仁都很兴奋,因为单位里调来一位新主管,据说是个能人,专门被派来整顿业务;可是日一天天过去,新主管却毫无作为,每天彬彬有礼进办公室,便躲在里面难得出门,那些本来紧张得要死的坏份子,现在反而更猖獗了。他那里是个能人嘛!根本是个老好人,比以前的主管更容易唬!四个月过去,就在真正努力为新主管感到失望时,新主管却发威了--坏份子一律开革,能人则获得晋升。下手之快,断事之准,与四月表现保守的他,简直像是全然换个人。年终聚餐时,新主管在酒过三巡之后致词:「相信大家对我新到任期间的表现,和后来的大刀阔斧,一定感到不解,现在听我说个故事,各位就明白了:「我有位朋友,买了栋带着大院的房子,他一搬进去,就将那院子全面整顿,杂草树一律清除,改种自己新买的花卉,某日原先的屋主往访,进门大吃一惊的问:『那最名贵的牡丹哪里去了?』我这位朋友才发现,他竟然把牡丹当草给铲了。后来他又买了一栋房子,虽然院子更是杂乱,他却是按兵不动,果然冬天以为是杂树的植物,春天里开了繁花;春天以为是野草的,夏天里成了锦蔟;半年都没有动静的小树,秋天居然红了叶。直到暮秋,它才真正认清哪些是无用的植物,而大力铲除,并使所有珍贵的草木得以保存。」说到这儿,主管举起杯来:「让我敬在座的每一位,因为如果这办公室是个花园,你们就都是其间的珍木,珍木不可能一年到头开花结果,只有经过长期的观察才认得出啊!

4.宽大:这是一个来自越战归来的士兵的故事。他从旧金山打电话给他的父母,告诉他们:「爸妈,我回来了,可是我有个不情之请。我想带一个朋友同我一起回家。」「当然好啊!」他们回答「我们会很高兴见到的。」不过儿子又继续下去「可是有件事我想先告诉你们,他在越战里受了重伤,少了一条胳臂和一只脚,他现在走投无路,我想请他回来和我们一起生活。」「儿子,我很遗撼,不过或许我们可以帮他找个安身之处。」父亲又接着说「儿子,你不知道自己在说些什么。像他这样残障的人会对我们的生活造成很大的负担。我们还有自己的生活要过,不能就让他这样破坏了。我建议你先回家然后忘了他,他会找到自己的一片天空的。」就在此时儿子挂上了电话,他的父母再也没有他的消息了。几天后,这对父母接到了来自旧金山警局的电话,告诉他们亲爱的儿子已经坠楼身亡了。警方相信这只是单纯的自杀案件。于是他们伤心欲绝地飞往旧金山,并在警方带领之下到停尸间去辨认儿子的遗体。那的确是他们的儿子没错,但惊讶的是儿子居然,只有一条胳臂和一条腿。故事中的父母就和我们大多数人一样。要去喜爱面貌姣好或谈吐风趣的人很容易,但是要喜欢那些造成我们不便和不快的人却太难了。我们总是宁愿和那些不如我们健康,美丽或聪明的人保持距离。然而感谢上帝,有些人却不会对我们如此残酷。他们会无怨无悔地爱我们,不论我们多么糟总是愿意接纳我们。今晚在你入睡之前,向上帝祷告请他赐给你力量去接纳他人,不论他们是怎么样的人;请他帮助我们了解那些不同于我们的人。每个人的心里都藏着一种神奇的东西称为「友情」,你不知道它究竟是如何发生何时发生,但你却知道它总会带给我们特殊的礼物。你也会了解友情是上帝给我们最珍贵的赠与!朋友就像是稀奇的宝物。他们带来欢笑,激励我们成功。他们倾听我们内心的话,与我们分享每一句赞美。他们的心房永远为我们而敞开。现在就告诉你的朋友你有多在乎他们。

试想:朋友,您一路看下来之后;一定有很深的感触吧。那么,在对别人有所决定与判断之前,首先,请想想这是否是一个「误会」,然后,请考虑您是否一定要钉下这个「钉子」,如果可以的话,请「且慢下手」。因为,当您对别人「宽大」之时,即是对您自己宽大。

中国简史(简到不能再简了)

http://dzh.mop.com/topic/readSub.jsp?sid=5724531

盘古说:我开;
女娲说:我补;
共工说:我撞;
神农说:我尝;
精卫说:我填;
夸父说:我追;
后羿说:我射;
嫦娥说:没射着!


黄帝说:我们做什么;
尧说:我让;
舜说:我也让;
禹说:咱爷们怎么办?
启说:让他们球!


桀说:好玩;汤说:造反有理了;夏亡了……
纣说:痛快;武王说:我也反了;商亡了……
幽王说:点火;褒姒说:刺激;周也亡了……


干将说:我铸;
专诸说:我舞;
荆柯说:我刺;
赢政一躲:没刺着……

始皇说:我修;
姜女说:我哭;
陈胜说:有种;
项羽说:我举;
刘邦说:我斩;
秦亡了……


孔子说:我仁;
孟子说:我义;
老子说:我无为;
庄子说:我逍遥;
韩非子说:把他们全抓了。


张良说:我出谋划策;
韩信说:我统帅三军;
萧何说:我运筹帷幄;
高祖说:老婆,怎么办;
吕后说:全喀嚓了。


文景说:我治;
武帝说:我兴;
光武说:我中兴;
献帝说:我说了不算。


张骞说:我通;
班超说:我也通;
苏武说:通个屁!


卫青说:我打;
霍去病说:我也打;
李广说:我还打;
昭君嫣然晕笑,遂天下太平。


董卓说:我势大;
吕布说:我人帅;
貂婵说:你们俩谁厉害。
董卓完蛋了。


曹*说:快帮我脱鞋迎老许;
刘备说:快给我牵驴来访诸葛;
孙权说:周郎自有妙计安天下;
周瑜说:加油,烧死老曹;
诸葛说:天下三分,人人有份;
司马昭说:向刘备同志学习;
晋开始了。



司马迁说:要想成功,不怕被宫;
班固说:我要出书;
司马相如说:一首赋稿费一千;
曹*说:抄家伙我要赋诗;
曹植说:命题作文有何难;
孔明说:我要写道动员令;
陶潜说:你们累不累呀。
遂卷铺盖回家了。



朱温说:我同花顺;
萧道成说:我一条顺;
陈霸先说:重新洗牌……


杨广说:去扬州观花;
李渊说:消来公费旅游;
李世民说:魏征,你的意思;
李治说:老婆,你的意思;
武则天说:那还不如我说了算;
薛刚说:反了你了!


骆宾王说:鹅肥;
王勃说:情深;
李白说:酒美;
王维说:景幽;
孟浩然说:风流;
杜甫说:屋漏;
白居易说:抱想琵琶唱OK;
李商隐:我没话说了。


柴荣说:三武废费有我一份;
赵匡胤说:今年流行黄袍子
寇准说:带上瓶醋谈判去;
李刚说:保家卫国;
徽宗说:没保成;
钦宗说:我想回家;
金兀朱说:没门……


赵构说:把姓岳的抓了;
岳飞说:我有何罪?
秦桧说:也许有……

陆游说:我要死了;
文天祥说:死得好,我为你喝彩!


完颜说:金大;
耶律说:辽大;
成吉思汗说:大你个球!
忽必烈说:亚欧大陆我说了算……



朱元璋说:高筑墙;
建文帝说:孙承祖业;
朱棣说:我找我爹;


严嵩说:清史留字;
崇祯说:袁崇焕,你的良心大大地坏了……
李自成说:歇会,找个小姐来;
吴三桂说:敢泡我老婆;
皇太极说:三桂是个好同志。



顺治说:爱江山更爱美人;
康熙说:江山好管儿子难教;
雍正说:说我狠,我就狠给你们看;
乾隆说:我爹是谁;
嘉庆说:和坤是我爹留给我的遗产……


施耐庵说:天罡盖地煞;
罗贯中说:曹刘震河腰;
吴承恩说:全盘西化;
曹雪芹说;读书人的事能算淫么;
蒲松龄说:我是另类我怕谁?


林则徐说:我销;
洪秀全说:我反;
康有为说:我变;
孙中山说:看我的。
慈禧说:木偶戏你当好演呀;
李连英说:有奴才伺候;
李鸿章说:九亿白银,小意思;
袁世凯说:窃国者为诸候?
蒋介石说:娘希匹,攮外必先安内

推荐信样例

Example #1
Taipei, 12th January 1998

To Whom It May Concern:

It is a pleasure for me to recommend Miss Wang Mei-Ing for studying at your institute. She has been working for our company for nearly two years, and in our department she clearly stood out among her co-workers for both her new ideas and her initiative in introducing new techniques into our company.

Miss Wang worked as a research assistant on one of our on-going research projects. The title of the project was "The comparison of methods for concentration of polio virus in sewage". She worked hard and performed her experiments very well. Co-operating with her co-workers, and always expressing her ideas clearly she made many useful contributions.

Based on my observation I would think her a very promising candidate for further study. If you need more information about Miss Wang, please do not hesitate to contact me. I would be delighted to hear of your favourable admission of her.

Sincerely yours,

Yi Rong-Shin
Director of Research
Taiwan BioChem Corp.

Example #2
Kaoshiung, 23rd April 1998

Dear Sir/Madam,

Mr. Kevin Chuang, who is currently working as assistant manager of our cargo division at the FAT CORP., has asked me to recommend him for graduate studies to your Universities Business Administration program. I am pleased to comply with his request, for I think he is well qualified for this proposed course.

In October 1993 he joined our company and was assigned to the Load Control Section. His impressive performance made him stand out among a group of nearly 100 employees. He was handling administrative duties at Load Control at that time. After two years, he transferred to Load Control Management in company headquarters and was later promoted to the position of assistant manager.

Presently his main job is the supervising of five employees and the management and training of our out-station Load Control operations. I have observed him to have clear ideas about his future career goals, he is well-organized and attentive to details. I would also like to point out that Mr. Chuang has good interpersonal skills: he gets along both with his colleges and visiting company representatives.

I am confident that Mr. Chuang is capable of handling high management positions. His energy and attention to detail and receptiveness to ideas convince me that with further training he will achieve his career goals. In my opinion Mr. Chuang is a worthy candidate for advanced training and I do not hesitate to recommend him to you.

Sincerely yours,

Hu Jien Ming
Executive Directory
Cargo Division
FAT Corp.


推荐信样例(数学)
Dear Sir/Madam:

  I am writing this letter of recommendation for Mr.Caleb,my former student. I have known Mr. Caleb for more than 6 years since his freshman year at "University of Minnesota". At that time, he took the course-- "Mathematical Analysis," which I taught mainly for junior students majoring in Mathematics. To my surprise, I found he was among the few students in his class who could keep up with the pace of my lectures. Moreover, he often posed thought-provoking questions during the course. Thus it was natural that I liked discussing with this young man and became familiar with him. The more I knew him, the more I found he was talented at mathematics. As you can see, he got excellent scores on the course. In fact, he ranked No. 1 on this 270 hours course in the talented student class which has 34 intelligent others.

  With his outstanding talent and solid mathematical background, he also did quite well in most other courses during his undergraduate study. By the way, you may wonder why his undergraduate scores look not so good compared to other Chinese applicants. It is easy to explain, because he belonged to the talented student class, which were required to endure harder test papers and stricter grading than most other college students did at least at "University of Minnesota".

  He even served as Prof. Linda 's Research Assistant for one year. No one could deny his commitment to his job. As a matter of fact, Prof. Linda's electronic lab happened to be neighboring my office and I could always see him working in the lab, either repairing the instruments or helping Prof. Linda collect lab reports. Maybe one more example will demonstrate his commitment more clearly. Once he suggested compiling a FORTRAN program to solve a complicated circuit problem in his class. In order to do that, he had to do a lot of computer work. However, because there were few computers available in our computer lab, he had to wake up at 5 a.m. in winter (please note: "Twin city" is a downtown near the north border of China, so it is pretty cold in winter and the heating system is not working very well.) to ensure the 1st position of the long waiting line for his classmates and himself! At last he and his classmates finished the program successfully with his great efforts.

  As to his personality, I would like to say Mr. Caleb is a warm-hearted, honest and upright student. He was always ready to help others. During my lectures, many students got confused at some points and I could always see Mr. Caleb help them explain during breaks. In the meanwhile, I must admit that Mr. Caleb was a bit impatient sometimes.

  Finally, I would like to conclude my recommendation as follows: frankly, Mr. Caleb is not a genius, but I promise his great intelligence, commitment to work and his kind nature will impress you deeply. Thus I recommend him without reservation for his admission and financial aid to your program. Please feel free to contact me if needed.

Sincerely Yours,

XXX

系统自动启动程序之十大藏身之所




  Windows启动时通常会有一大堆程序自动启动。不要以为管好了"开始→程序→启动"菜单就万事大吉,实际上,在Windows XP/2K中,让Windows自动启动程序的办法很多,下文告诉你最重要的两个文件夹和八个注册键。

  一、当前用户专有的启动文件夹


  这是许多应用软件自动启动的常用位置,Windows自动启动放入该文件夹的所有快捷方式。用户启动文件夹一般在:\Documents and Settings\<用户名字>\"开始"菜单\程序\启动,其中"<用户名字>"是当前登录的用户帐户名称。

  二、对所有用户有效的启动文件夹

  这是寻找自动启动程序的第二个重要位置,不管用户用什么身份登录系统,放入该文件夹的快捷方式总是自动启动――这是它与用户专有的启动文件夹的区别所在。该文件夹一般在:\Documents and Settings\All Users\"开始"菜单\程序\启动。

  三、Load注册键

  介绍该注册键的资料不多,实际上它也能够自动启动程序。位置:HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows\load。

  四、Userinit注册键

  位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit。这里也能够使系统启动时自动初始化程序。通常该注册键下面有一个userinit.exe,如图一,但这个键允许指定用逗号分隔的多个程序,例如"userinit.exe,OSA.exe"(不含引号)。


  五、Explorer\Run注册键

  和load、Userinit不同,Explorer\Run键在HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE下都有,具体位置是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run,和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run。

  六、RunServicesOnce注册键

  RunServicesOnce注册键用来启动服务程序,启动时间在用户登录之前,而且先于其他通过注册键启动的程序。RunServicesOnce注册键的位置是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce,和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce。

  七、RunServices注册键

  RunServices注册键指定的程序紧接RunServicesOnce指定的程序之后运行,但两者都在用户登录之前。RunServices的位置是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices,和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices。

  八、RunOnce\Setup注册键

  RunOnce\Setup指定了用户登录之后运行的程序,它的位置是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup,和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\Setup。

  九、RunOnce注册键

  安装程序通常用RunOnce键自动运行程序,它的位置在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce和HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce。HKEY_LOCAL_MACHINE下面的RunOnce键会在用户登录之后立即运行程序,运行时机在其他Run键指定的程序之前。HKEY_CURRENT_USER下面的RunOnce键在操作系统处理其他Run键以及"启动"文件夹的内容之后运行。如果是XP,你还需要检查一下HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx。

  十、Run注册键

  Run是自动运行程序最常用的注册键,位置在:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run。HKEY_CURRENT_USER下面的Run键紧接HKEY_LOCAL_MACHINE下面的Run键运行,但两者都在处理"启动"文件夹之前。

一个女孩子的创业体验

http://blog.csdn.net/i_like_cpp/archive/2005/08/19/458583.aspx
我在28岁生日那天电信一个副总劝我出来开公司算了,然后想了一天第二天就
去工商局注册了,从有开公司的想法到工商局注册仅仅一天时间!

然后2003年8 月份拿到营业执照,根本不知道安全是怎么一回事情,找北大方
正一个技术副总和我讲了一个晚上,然后就背着包去和很多单位开始谈项目,当时
我公司里面什么都没有,连传真机,打印机都没有,我所有的公司财产就是背着一
个包,有几颗公章,然后在2003年9 月,也就是注册公司第二个月签下XXX 集团,
然后才开始找人招聘员工去实施,直到工程师把防火墙,入侵,网络版的防病毒都
现场调试,我才第一次见到防火墙是什么样?第一见见到防毒墙是什么东西?然后
这个项目做了50% 利润!

然后在2003年10月份,拿下AAAA公司,在谈项目的时候,人家技术处处长问我
:"人家Netscreen 都来找我谈过!",我当时还问别人:"Netscreen 是谁啊?",
后来回来问安全界的人才知道Netscreen 是全世界最有名的防火墙厂家!然后大家
说太服我了,说一个搞安全公司的总经理出去居然连netscreen 都不知道?不过我
工作做的好,别人也不在乎我一个安全公司老板不知道Netscreen ,把工程给我做
了!这个项目也做成了50% 的利润!

然后去省环境局和副局长谈VPN (公网上用设备加密解决),当时和人家讲VPN
讲得我那些技术人员说他们当时全部都想找个地洞钻下去,因为我把原理全部讲错
了,但是最后甲方那帮人傻乎乎的还觉得我很厉害,现在基本项目已报上去了,就
等着最后拨款了!后来我觉得这样下去不行,下决心把不下100 个国内外的安全厂
家的技术资料全部研究一遍,然后把整个技术体系和厂家体系都做成成套的PPT ,
每次去技术交流我就拿着笔记本电脑,用幻灯片给甲方讲,我能够随便在甲方面前
说出几十个厂家的技术特点,报价,甚至于任何一个公司和我投标撞在一起,我都
能马上判断出对方报哪个厂家?报什么价格?然后知道怎么对付他?

现在基本上我去做每个用户,技术交流我亲自拿笔记本电脑和别人讲,方案我
亲自写,客户关系我亲自做,我能把安全界所有厂家的技术优劣势说清楚,而且我
做关系做得不错,基本上谈10个项目,会中8 个,因为技术讲得有一套,然后我很
擅长和高层打交道,我和高层打交道都是用人格魅力征服他们,我和所有的老总刚
接触都会表现的特别优秀,让别人很佩服我,然后我又会做出很柔弱的样子,楚楚
可怜的,和他们说创业如何艰辛,最后所有的老总都觉得不帮我很对不起我似的,
不但给我项目还要请我吃饭!

而且我不知道很多厂家和大老板和我谈过话,都会觉得我很有前途,尽管现在
我还没多少实力,很多大厂家和大老板都愿意主动放下架子来找我合作,我见过一
些资产几千万的很傲的那些大老板,主动给我打电话请我吃饭想和我一起开公司,
一些厂家的大区老总们见过我都回去和员工说:"那个女孩很厉害的,绝对做得起
来!",然后那些销售代表们也整天来请我吃饭,想与我合作,我不知道凡是圈里
面的很多老总只要见过我的,都很想和我合作,觉得我有前途,我很容易玩转厂家
和大老板,不会担心资金问题!

现在我越做越顺,基本上上正轨了!

我觉得创业:
一、首先必须有胆量
二、必须有能力IQ
三、必须有心理承受能力EQ
四、必须有克服困难的能力AQ

*********************************************************
其实我真实经历感觉,创业胆量非常重要,当然你要有能力的前题下,因为我全国
重点院校计算机专业大学毕业后曾经在联想,华为等大企业干了6 年的市场,是个
优秀的SALES ,对于怎么拿项目已经驾轻就熟,我曾经就看了一下某大公司医院管
理系统说明书,就到一家医院把这个项目谈下来!所以我能做到看任何一个厂家的
说明书一看就懂,然后就敢于出去把项目谈下来!

我周围的很多开公司成功的人都是大公司里面很厉害的销售,只要有很强的谈
项目能力,有客户关系,你自己能够注册个公司就把项目谈下来,至于实施,在IT
行业混了10年,周围大把的高手,随便叫一帮人就能做,可能搞广告公司的就懂了,
我周围一些资产上千万的人出来时3 个人总共1 万元,但是他们原来就是某著名烟
草企业计算机中心主任,一出来注册就带着500 万项目出来,头半年就有200 万赢
利!

其实我周围很多人出来时就1 ,2 万元钱,但是人家都是一些大公司的市场部
经理,有经验,有关系,有项目,公司一注册资金渠道找几个公司垫款马上就起来
了,我身边一个2 年前只有1 万元,和别人借5 万元起步,但是人家是用友的市场
部经理,注册完公司就一大堆项目,现在已经好几百万了!

但是我感觉好多人开公司象跳水似的,不敢跳,但是跳下去以后也就那么回事
情,没什么害怕了!但是记住:"你有什么资本?是技术特别厉害,还是市场特别
厉害!",如果你两头都站不住脚那么不要跳!

我之所以敢那么做是因为我市场厉害,有关系,我注册个公司马上有项目,如
果你不能说出你有什么特长那么最好不要跳吧!

***********************************************************
其实有时候说话很费劲,可能搞过项目的就明白我说的意思了,现在我几个朋友是
交通厅的处长,和厅长关系特别好,现在要启动几个大项目,马上就注册个公司,
找其他几个公司垫款,马上就可以起来了,他们马上注册个公司,只要厅长那边点
头,马上项目一进来,一个公司就起来了,我一个朋友认识省电信公司老总,说好
了项目,马上注册个公司,几个项目下来就上千万了!

其实我觉得年轻人创业,在没有资金的情况下基本都是玩项目起家,只要你有
足够的关系拿到项目,然后会运作项目,马上很快几百万会有的,等玩项目完成原
始积累之后搞资本运作,做个某知名大厂家总代和大家操作资金!那样就比项目稳
多了!

我周围全是30岁左右年轻人,全是白手起家的,大家共同的道路都是先做工程,
做工程项目主要是人的能力,不是资金,主要看你公关能力如何?只要搞销售是个
高手,拿几个项目下来,做几年项目就完成原始积累,就到资金运作了!

我周围这样起来的人不下40个现在31,32左右的好多是几百万的,好多是上千
万的,当你资金不利的情况下,在大公司做几年销售,把能力锻炼出来了,出来拿
几个项目就起来了,然后再玩资金运作!我28岁,不过在大公司玩了6 年项目,才
出来自己玩项目的!

***********************************************************
我周围的朋友都没有背景,没有资金,但是我看见不下40个人都成功了,我们都总
结了一下白手起家,千万不要搞那种资金运作的东西,你没资本!

好多人大学毕业后在大公司做销售,然后手上有好多客户,手上有一批现成的
项目然后出来开个公司,找别的公司垫款,只要分一部分利益给别的公司,然后运
作几个项目就完成原始积累了!

然后再完资本运作,我身边所有的朋友起家没有一个超过6 万元钱的,但是手
里有项目,有关系,这个时候起家主要看你个人能力,你社会关系怎么样?只要你
有关系,会操作项目,你能很快完成原始积累!

然后再去做资金要求高的东西,真的!我身边包括我都是这么走过来的,我注
册公司的时候就有6 万元,然后注册完马上签一个工程,找别的公司垫款,第一个
工程挣25万,第二个工程挣28万,刚注册完公司2 个月就挣53万,干个1 ,2 年上
百万肯定有了,然后找个大厂家做总代,玩资金运作就可以了!

但拉项目主要看你社会活动能力了!所有我们圈有句话叫:"只要是一个优秀
的SALES ,绝对能出去开公司!",只要你手上有一把项目,你怕什么?项目就是
钱啊!

好多人是在大公司把项目搞定了,就马上出来自己注册一个公司马上就起来了!
不过不该教这些!

毕竟我和很多人都这么出来的!开过公司的人一听就知道了!

********************************************************************
以后不会传授经验了!因为我发现这里面的人开公司搞工程的不多,没有搞过项目,
就是在一些大的企业华为,中兴,CISCO 等地方负责销售的人就知道了,只要你手
里面拿着一把项目就可以出来注册公司,而且起步很快!

不要说什么骗!这里来的人可能都是些小孩或者一些搞技术的,可能真正做工
程公司老板不多,只要搞过项目的,不用我说这些道理,大家一看都懂,也不要嫉
妒别人,我周围太多的人都是两年前就1 ,2 万,但是在大公司积累了强大的社会
关系,一出来开公司就带项目出来了,结果到后面也就一两个大工程公司就起来了,
成为知名企业,其实社会本来就是这样的!

"关系就是金钱,关系是第一生产力!",哪个大公司的老板在省里面政界没
有靠山的,很多时候尤其搞项目,商场永远和官场是连在一起的!

不要批判社会怎么样?样适应社会,"适者生存!",适应社会就是强者,你
没有能力改变社会就适应他,而且我现在刚满28岁的大学生,马上我又接了一个工
程能挣30万,差不多我今年28岁我该有上百万了,我们不会愁车子,房子,不会愁
失业,因为我和我周围的很多人能适应社会!

我几个朋友研究生毕业分到烟草公司做计算中心主任,刚好全省烟草要上项目,
几个研究生辞职出来开个公司专门做烟草,现在上千万了!

现在我周围所有的人都是30岁左右,没任何背景,但是很能干,现在大家普遍
都有上百万的,不管别人有技术也好,会搞关系也好!毕竟别人混得好!

我反感那些没有能力出来闯,但是一看见别人当官,开公司挣了钱就大骂那些
有钱有权的人,但是好多人有钱有权都是自己奋斗来的,不是一开始就有人给他们
的!

我们都一没犯法,二没抢,我们大学毕业6 年从到表达公司打工到开公司,到
28岁左右有上百万,这都很正常,我们努力的结果!我搞关系有本事,我懂技术,
我能力强就能混到这一步,叫什么骗呢?

我周围很多人就大学毕业6 年左右资产上百万的很多,不过好多是搞工程搞项
目的,适应社会有能力能挣上百万这是自己挣来的,很多时候你说别人怎么样?但
是我说你现在去注册个公司,你能干起来吗?

********************************************************* 有时候我觉
得很反感中国社会这种风气,我有个朋友原来就是贫困山区的,他是他们那第一个
考出来的大学生,他们那一年挣1000元钱已经是很了不起的事了,后来大学毕业后
他先在一家大公司打工,后来做了市场部经理,手里有强大的社会关系,有不少项
目,2001年出来开公司,当时只有1 万元钱,和我们借了5 万元,就开始做公司!

因为原来在大公司强大的社会关系很快做起来,我曾经和他跑过项目,一天必
须跑4 家,有一次还被人家赶出来,但是现在他有500 多万了,还买了张奔驰车,
好多人就开始说他是个流氓,是靠拉关系起来的,怎么样,但是我觉得我周围没有
任何背景起来的这些人,都非常能干,非常聪明,非常实干的!

那些没起来的人,有没能力,没胆量,没实干精神的,整天坐在那说别人闲话,
这是我不欣赏的!

我觉得有本事就超过别人,不要自己不敢干,也无能力干,别人干成了就说风
凉话,怪不得我加拿大有个同学说好多有钱的中国人全部移民海外,说中国人有仇
富心理,现在我真的感受很深,我那个穷山区出来的朋友起来了,好多人说他只不
过机遇,或者他只不过会搞关系,但是你要搞项目,2001年谁都可以搞,机遇是平
等的,干吗你没去啊?

但是我承认,我那个朋友真很实干的,他规定每天必须跑4 个用户,风雨无阻,
包括我也这么干起来的!

我欣赏美国人的处世方式,"你比我强我超过你!",但是中国人好多是:
"你比我强,我要拉住你后腿把你拖下来,说你风凉话!",正因为这种处世方式,
我才能在我那些成功的朋友身上学到经验,很快的注册公司,很快的上了百万!

****************************************************************其实
也不是我自负,只是我有时候很生气,因为我看见我周围很多人当初创业那样艰苦,
那样每天跑4 家单位,还被人家赶出去,人家是很实干干出来的,最后成功了,好
多人说他是流氓,到处拉关系!

我也是刚创业时每天也跑4 ,5 家单位,看过各种嘴脸,还被圈子里很多公司
骗过,我之所以敢注册了公司再来选项目,找客户是因为我大学4 年的计算机教育,
6 年全国著名IT企业市场经验,使我有这个底气敢出来开公司,整整10年的IT行业
背景,才使我28岁敢出来搞IT公司!从18岁干IT干到现在啊!

居然也被人家说成骗子,毕竟我在IT行业不出来干公司,好多公司要我也该年
薪20万了,所以我们敢这么做是多年的经验能力积累,如果没有一定业界经验能力,
我敢出来先注册了公司后拿项目吗?

有时候创业的资本有几种,一种是资金资本,一种是能力资本,我不具备很强
资金资本,我就做项目,搞项目要能力资本,是否懂技术,是否会搞关系,是否有
社会关系活动资金?等到资金够了再玩对资金要求高的东西!

其实我觉得很多年轻人很幼稚,以为随随便便就能创业?其实创业不一定是要
有多少资金,你很有能力大家认可,大老板们都会来投资的,现在很多大老板愿意
为我投资,但是你要做到这一步,不是刚毕业几年就能修成的,我都算干了10年的
IT,而且工作背景不差才敢那么干的,那种刚从学校出来什么都不懂的还不够别人
骗两次!

********************************************************* 我觉得根据
我的经验,大学刚毕业创业是不可能的,先到大公司里面锻炼几年,可以换公司,
但是不要轻易换行业,把一个行业吃透

一、刚毕业不一定非要看待遇,看你到的这个公司能学些什么东西?想干技术
就扎扎实实干技术,想干市场就到正规的企业把市场推广,渠道,销售都全部做一
遍!

二、如果技术出身的人想开公司当一把手,必须技术上有一套,比如你拿出什
么产品?你有什么独特的技术,如果你仅仅是技术好拿不出自己的东西,那么以后
只可能给干市场的人当副手,干市场的是一把手!

三、中国大多数公司创业是市场出身,尤其是搞项目工程的公司,先去大公司
从销售做起,知道怎么搞项目?怎么做关系?怎么和客户打交道?然后去做渠道,
知道怎么和代理商,公司们打交道,以后自己开公司知道怎么和厂家打交道?最后
去做市场推广岗位,知道怎么搞宣传,怎么搞策划?怎么运做大市场?

只有你在大公司里面把市场都做熟了,你才知道你自己开个公司你该怎么运做?
而且大公司会教你形成一套自己的管理模式和企业文化,你会知道开公司以后怎么
做?

比如我现在开公司,我要求我和我一起出去的人都穿职业装,说普通话,每个
人都提笔记本电脑,到用户那用普通话笔记本给别人用PPT 演示,讲整个技术厂家
体系,然后回来做正规方案,都是按照大公司的做法来做,别人都觉得我们很象外
企的,很正规,即使我刚创业时,连传真机,打印机都没有,但是那种职业习惯,
熟练的做事态度,我都能先把项目谈下来去实施,试想如果没有在全国知名大企业
的锻炼,我出去能拿到项目吗?我象个谈项目的吗?

所以我觉得创业只要你能拿到项目,找别的公司垫款就行了,怕什么资金?但
是你有拿项目的职业风范吗?我能没多少资金让客户相信我是因为,我出去穿职业
装,说标准普通话,讲技术讲得很溜,而且做关系很到位,知道怎么搞高层关系?
这些东西都是在大公司长期积累下来的,否则你怎么能搞到项目,很多领导明知道
你刚创业甚至没几个人,但是别人看你很会说话做关系,看你很懂啊!看你虽然创
业但在这个IT行业是老江湖了,有什么不放心给你做的?

很多人一毕业,大家说刚毕业到大公司做小职员,到一定时候做部门经理,再
厉害些做业务副总,再厉害些自己出来开公司了,所以有时候我们发现一些业界有
名的大公司变成黄蒲军校了,抓出一大串公司老板都是从这些公司跑出去的,有时
候学习很重要,到你能力到那个份上自然就出来开公司了!

我觉得先学习!学习!再学习!公司圈很危险,没有经验怎么行?我不相信大
学生创业,因为象我们这些在大公司市场部混了5 ,6 年的老江湖都觉得到处陷井,
那些什么都不懂的大学生们懂什么?

***********************************************************
刚起步的时候你没有那么多资本,肯定存在资金运作,这个时候除了你要精通业务,
精通技术,会搞关系,知道怎么打通关系,还有你的融资能力,这个时候认识很多
银行,很多大公司老总,或者很多大老板很重要,这个时候在资金运作上面可以找
他们垫资,现在很多公司也专门搞项目风险投资!

资金运作你可以找厂家解决,找总代理解决,找有资金大公司解决,但是前提
是你必须能拿到项目,而且资金风险不大,会有很多公司愿意参加与你合作!


等到运作一些项目以后有一笔钱了,你在玩资金运作的事情,比如拿下一个大
厂家区域总代理,然后这样就是靠运作资金挣钱了,但是没资金前,拿项目,你的
个人素质很重要,你要很懂专业,很懂行,很有人格魅力,很会做关系,而且操作
项目的能力,资金运作能力很强的,其实我周围的朋友都是从项目起家,后面转向
资金运作,因为项目对个人的素质与能力要求很高!对资金要求不高!

***************************************************************** 没
有共同语言了!到大企业做两年销售,做几个项目就懂了!怎么这么费力啊!自己
的创业路自己走吧!自己慢慢去摸索吧!如果有幸能走出来的话!你会明白我说的
意思!

不过从大企业出来刚开公司时,也是很多搞工程的老板们手把手教我的,项目
运作有市场操盘,技术操盘,资金操盘,协调的关系有甲方关系,厂家关系,合作
伙伴关系,以及内部关系,整个体系有技术体系,厂家体系,以及项目管理!如果
这些东西你都吃透了!

然后你再有关系就可以出来开公司了,而且业界关系合作伙伴很重要,可以依
靠合作伙伴运作资质,运作资金,这些你都会了就可以出来做公司,但是最好要有
个厉害的玩项目的带你玩一段时间就会了!

***************************************************************
其实
原来我不想开公司,因为原来在联想,华为,网通这些公司呆过,后来回到省里面
也想找一个公司打工,然后发现省里面也就那几家公司,没多少选择余地,一些大
公司顶多有个分支机构在那!

后来就到一些小的公司参股,后来发现财务什么都被大股东控制,只不过是高
级打工崽,后面大家都知道我做市场很厉害,尤其谈项目做关系比较厉害,就让我
去挂在几个公司去谈项目,拿分成,后来去谈了几个项目费用贴了不少,结果项目
谈给那些公司了,那些公司把我甩了,因为毕竟不是我的公司,对方会不会兑现承
诺看别人的良心,他有良心就兑现,没良心骗了你就骗你!

再后面我发现省里面IT界的老板们从对IT的素质,以及能力都远远不如我,我
怎么去把他们打工呢?最后我没有选择的余地去找电信一个副总,说进电信算了,
后来又觉得电信那种混日子的地方没意思,那段时间苦恼极了,最后大家说他们都
只能给我一个意见:"去开公司吧!你已经没有选择了!你的条件已经达到开公司
了,不适合再打工了!"

所以我觉得我是被逼上梁山的!

**************************************************
其实我发现我身边很多成功的人都是被逼上梁山的,我认识一个男的,当时在烟草
那边关系处不好,被人家下岗,他是上海的一个大学毕业的,后来为了不下岗天天
去追领导的老婆求情,然后那个领导的老婆天天躲他,搞得整个单位都知道窝赧极
了!

后来广州一个公司过来设办事处,他能力很强就拿过来做,结果卖了很多酒店
管理系统出去,一年能挣100 多万,后来公司就给他股份,然后一直不停升股份,
现在终于把全部的股份买了,现在32岁,有个200 多万吧!

我认识的一个千万的也是北京一个大学学计算机的,后来也是被单位下岗,能
力也很强咬牙出来开公司,现在资产上千万,还经常上电视,其实好多人不想出来,
都被逼的!

**************************************************************
其实如果做过项目的人都知道,很多人都有过被甩的经历,在他经验不够的时候,
其实运作项目是运作一种社会经验,社会经验不够的时候很多人被甩过,之所以被
别人甩过才自己出来开公司,现在我也可以甩别人,但是不想干而已!

不过今天我中午见了我说的那个农村出来的朋友,因为电力一个副总他表弟要
干IT,所以今天把那个本科生介绍给他,他现在才一月份就做了100 多万,一年1000
多万,利润在400 万左右吧!2001年他就1 万,借了5 万起家的,现在很多大公司
的市场部经理去他那打工去了!

昨天晚上我和一个全国上市公司的总裁谈一个项目,就是我认识一个厅长,上
市公司出资金,出整个技术,我来运作项目,最后我们分成!后来我和他们一个总
经理出去喝茶,他还说觉得我整合资源,运作项目的能力还不够老练,大家都觉得
其实挣钱很考察一个人整合资源,运作项目的能力,包括房地产好多也是靠运作项
目起来的!

然后今天下午见了一个老朋友他有200 多万吧!然后他妹妹在搞风险投资,最
后我们喝茶都全部说:"现在搞项目的公司绝对不要愁资金,只要项目好,资金根
本不用发愁!"他们都问我有没有好项目,大家把我调资金!

其实我周围朋友年薪都没下50万的,这些人有关系,很会运作项目,都有过开
公司的经历,如果你没有到开公司当老板,运作过项目这个圈子,你永远理解不了
我说的东西,为什么我28岁,一个全国上士公司总裁要来见我?因为我认识一个厅
长,有运作项目能力,他们想借我的关系资源,他们出资金技术,我们一起操作这
个项目!

*****************************************************
我现在周围创业成功的人很多,我总结出来几点:

一、要做公司必须要有功底,也就象练功的,你必须把功底练出来,我周围很
多很成功的,都大学毕业在大公司干过,而且算干得很优秀那类,在大公司里面学
管理,学习积累很多能力,很多大公司里面做得很厉害的人到一定时候就出来开公
司,这样轻车熟路啊!而且我周围很多成功的都是在大公司里面把某一行吃得很透,
出来就干这个,有一定资金积累再转其他方向!开公司能力功底很重要!

二、开公司胆量魄力很重要,我发现很多人成功与不成功的区别是,我周围成
功的人好多咬咬牙说出来就出来了,根本不会给自己留退路,按他们的说法要干事
就干净利落,还想什么想,留什么路?但是我看见很多不成功的人,前怕狼后怕虎
的,整天说没有找到机会啊!机会不合适啊!或者说没有看到好的产品,或者没合
适合伙人,天天听他们嘴上说,天天没看见他们干,最后问他们干脆说:"没想法
了!算了这样混下去吧!"我见到很多很成功的,说干就干,今天想好,明天办手
续,不要留退路,冲下去!走出这一步就什么都不怕了!

三、开公司必须有很强的意志力,这种意志力必须让你能克服任何困难!我见
过很多人嘴上天天说要出来开公司,但是有一次我谈一个公安的项目,他看见我出
去找关系,从省公安厅一直找到市公安局,为打通一个关系托多少人,然后他就一
直拼命说怎么那么难,很为难的样子,我就知道他不适合开公司,他还没见过我们
是怎么跑资金的,而且在大公司打工,不用愁资金,不用愁资质,甚至不用愁技术,
但是开公司你什么都没有,你怎么在尽量不花钱的情况下搞定所有的事情?你有克
服困难的决心吗?

四、开公司你必须有心理承受能力,如果你谈的项目工程最后死了,或者几个
项目花了不少钱请客吃饭搞关系,如果因为种种原因一直挂在那签不下来,你是否
有那个承受能力?如果你被甲方骗,被别的公司或者厂家骗了是否有那个承受能力,
当你运作一个项目时发现你已经控制不住整个局面你是否有那个承受能力?当你被
甲方赶出去时是否有那个承受能力!

所以我觉得开公司必须具备:一、能力 IQ 二、心理承受能力 EQ 三、克服困
难的能力与承受能力 AQ 四、你必须很有胆识很有魄力,我出来时就想大不了开死
了去哪个大公司至少年薪20万没问题,而且有时候你要想就当我学习体验生活,如
果我有了开公司的经历即使我进大公司我能力也远比以前高多了!

还有我感觉很重要的,你一定要把某一块吃得很透才会成功,你必须有个支点,
必须把某一块吃到底吃透,一定要吃透某个东西!


所以我总结下来:一、能力二、胆识魄力三、很强的毅力

如果这些都够了,你再把某个领域吃的很透,你有把握出来开公司!

********************************************************
有时候我觉得开公司就象一个运动员,

一、首先比必须具备一副强壮的体格,如果你在大公司把别人打工都干得很不
行,都没多少能力,你怎么能出来干公司呢?一般开公司的好多人在大公司把别人
打工时都是很出众,你连当兵都当不好,还怎么谈得上自己出来搭班子建队伍带着
一群人干?当然有些人在大公司不一定会搞关系也会混不好!但关键是你在大公司
打工,你能力算不算强的?

二、其次你必须要有魄力有决心,有胆识,试想一个人连出来开公司这点勇气
都没有,以后遇到很多重要的决策与机会,你有那个魄力今天想好明天就干吗?做
一个企业家胆识魄力很重要,连出去注册个公司都要想好几年的人,你还有什么胆
识去带领一个企业?

三、开公司毅力很重要,要有非常强的毅力,就象运动员跑长跑,你是否有那
个毅力坚持下去?在没资金,没技术,没关系,等等困难下,你是否坚持下去,是
否有那个承受能力?

现在我真的发现,能力,胆识,毅力对创业太重要了!很多时候一个人成不成
功不是总说某人有机会你没机会,机会自己争取的!你有那个能力,有那个胆量,
有那种吃苦锲而不舍的精神,怎么会不成功呢?

我现在真的很能理解国外的成功学了!国外的成功学很有道理!

****************************************************
其实现在我觉得胆识也是一种很重要的能力!

我发现高利润总是和高风险挂钩的,我看见好多人动不动说80年代初期那帮爆
发户是赶上机会了,钱好挣,现在难挣怎么样!好象把别人说的很轻松,只要敢出
来就遍地是黄金了!

但是你不想想你不也那个时代吗?那你干吗没有出来呢?其实那个时代比我们
这个时代出来更需要勇气,那个时候有什么私营企业的说法吗?那时全吃公家饭,

计划经济,敢出来已经很有勇气了!

所以有时候我觉得别人敢出来这一点就是一种很重要的能力,有胆识有魄力在
创业是很重要的!所以我觉得动不动就说那些人是爆发户,敢闯敢干就发财了,以
前我也这么说那些人!

但是自从我开公司,我感觉有胆识有魄力,敢想敢干确实是一种能力,而且是
创业的很重要的能力,我觉得我没有资格说以前那拨人只是敢闯就成功了,现在我
觉得人家敢在那种时代背景下走出这一步,已经很不容易了,现在这种宽松的时代
背景下都这么多人天天说要开公司,结果都只嘴上练,不敢行动的!那种年代敢这
么做难道不是一种能力吗?

他们也有值得认可的地方!


巧用Email美化您的Msn space

http://spaces.msn.com/members/happypapaya/blog/cns!1pcESTThtDWAriZCbosKHIWA!414.entry

  不算是嘿惊奇的发现,不过确实发现了,那就是利用"电子邮件发布"来美化你的Msn space。嗯?电邮还有勒个功能?对头,其实就是利用邮箱自带的"信笺"功能,把我们的个人日志更加撇脱的写在漂亮的信笺上头。
  具体操作方法是愣个起的:
  1、首先对自己的Msn space进行设置,"编辑―设置-电子邮件发布"。进入之后的操作共有五步,都按照它上面的提示一步步的来:勾选"打开电子邮件发布"――"输入您的电子邮件地址 A"――"选择机密字"――"选择是否立即发布您网络日志项"(请选"将网络日志项保存为草稿")――"更新您的通讯薄"(系统会自动结合你填写的机密字给你生成一个专用的电子邮件地址C,一定要看系统的"重要提示"哦!),最后保存。
  2、进入自己所填写的邮箱A,这是个关键了,为啥子是关键喃?因为我试了嘿多个邮箱,豆163的免费信箱自带"信笺"功能,收费的也应该有的哇?我不晓得哈,呵呵。啥子喃?你还莫的啊?没的就申请一个噻,163免费邮箱有2打2千兆哦,好像是我所见到的国内网络公司所提供的免费邮箱里头最大的了,我不是在打广告哈!
    3、下面喃就开始写信了,收信人当然就是C啦,标题***,然后看看,是不是有一个"精美信纸"选项喃?点开,你就可以根据预览选择你想要的信笺罗,当然也可以用它边边上的下拉列表里头选择一个然后滚动鼠标滚滚儿来预览哈,总共有51款漂亮信笺拿给你你选择哦,选一个巴适的,确定!咦,啥子"亲爱的朋友你好"啊?那是肯定的噻,勒个是信纸的嘛,莫来头,删了,然后就可以正儿八经的写你的网络日志了噻。
  4、煞搁,发送!
  5、回到个人的Msn space上头来,进入编辑状态,看下子"网络日志-最新发布"的项是不是最新的一个项标题"***"的"发布日期"栏下有"草稿"的标注喃?对罗,这和你最开头的第四项设置是相关的,它保存为草稿了,因为163在给我们发免费邮件的时候还会自动带上它的广告,免费的东西绝对不是莫的条件的!莫来头,让我们进入勒个日志项的编辑状态,删掉你不想看到的那些多余文字和广告链接。(如果你是《著作权法》的坚决支持者,那你也可以不删,大家会夸你是个好公民滴,推荐!)预览一下咋样?还算是漂亮哇?要得的话,我们就把它发布出切!
   回到Msn space预览状态,看看你新发布的网络日志装饰效果如何喃?安逸哇吧?最后还是不要忘了向人家163网易公司说声谢谢,毕竟使用了人家的劳动成果嘛。在这儿我没有删掉广告链接,一喃是出于对法律和163网易的尊重,二喃是方便大家切申请一个2000兆邮箱用噻。
   

 你知道Wallop可以用Email来Blog吗?
来试一下吧!
1 - 发一封很短的Email到 blog@mywallop.com
2 - 重新登陆Wallop, 再看一下你的blog :]你发的Email变成了一条新的Blog 条目!

更多功能讲解:
*如果你把照片或者MP3作为Email的附件,他们也会被同时上载到新的blog里。
*如果你的电话可以发email的话,你甚至可以用它来上传!

当你用Email,手机或者电话发 Email 到 blog@mywallop.com  的时候,首先要确认这个Email是你在Wallop 注册用来收发信息的 Email 账号。

如何在Wallop里注册新的Email 账号呢?
*点击左侧的"My preference"(我的优选设置)

f77中的注释到了f90不能用怎么办?

如果在linux下,可以用sed,perl,很容易搞定
例如 sed "s/^[Cc].*/\!&/g" test.f >test.f90
windows下嘛
也可以用perl写一个

献给2006年考生背单词最科学的方法


参考

献给2006年考生背单词最科学的方法!!!!!

  怎样才能把这么多单词背下来呢?最重要的一点,就是:如果想比别人成功,就一定要走捷径。不要期盼自己比别人幸运,也不要指望自己比别人更聪明或者更勤奋。从智力上说,从机遇上说,自己和别人都是差不了多少的,想超过和自己差不多的人,就一定要走捷径,捷径,捷径!

  

背单词捷径的第一条,就是:一定要每次都大量地背。
因为自己不比别人聪明,所以背完单词,别人忘掉五分之一,自己决不会比别人忘得少。然而,别人每天背十个单词,自己却可以背一百个,忘掉五分之一,还剩八 十个,是别人最聪明状态下的十倍。每天一百个是最低限。其实背到后来您会发现这个要求并不高,一个月后,您可能自然而然地就背到三百或者五百。

  这一百个要分成四组来背,上午三十,中午十个,下午三十,晚上三十。第二天早晨复习以前没背下来的词。背的时候,要一目十词(注意,是十个而不 是更多或更少),不要认认真真背,因为没有认认真真的时间。一边看一边读每个词的读音,默读也成。看完后回忆一遍,回忆不起来的再看。这次背的目的在于留 下个大概印象,下次看见能知道这个词,所以背到大部分都能回忆得起来就成了,把剩下的词单独抄出来。

  背单词捷径的第二条,就是:背字典!为什么要背字典呢?因为字典上每个词的解释比较全面,而且相同字母开头的单词都集中在一起。不是什么字典都 可以拿来背的,一定要找只包含自己想背的词的字典。另外,最好有解释和例句。而且,一定要有音标!一般教材课文后面的词汇表都是为那些认认真真听课的好学 生准备的,想走捷径就千万不要去背那些东西。

  背字典的时候,按开头字母(Z,Y,X,Q,J,K,U)(V,W,N,O,L)(FG,IT,HM,BDE,R)(C,P,S,A)的顺序 背,其中C,P,S,A每个都要分三部分背。这样背有几个好处:(一)能增加成就感,提高兴趣。至于为什么,您翻翻字典就明白了。(二)便于清楚地知道那 些单词已经背过,那些还没背。(三)能先把最基本的词先掌握。

  三万单词里,分为三个等级:三千到四千,八千到一万,两万二到三万。也就是说,您得分别准备三本字典。这几个等级之间各自有非常不同的特性,所 以需要分别用不同方法背。俺当时没有认识到这一点,所以在从一万到三万之间走了一段弯路,浪费了一些时间,不然或许能突破到五万吧。

  所以,背单词捷径的下面这条就有了三个分支:

  背单词捷径的第三条,就是:和单词多见面。一个单词能不能记住,取决于和它在不同场合见面的频率,不在于每次看着它的时间长短(同样规律也适合 于泡MM)。一般想记住一个单词,每星期要和它在"不同场合"见三到四次面。俺在上文中提到大量背的时候,不要抠某一个字记住与否就是这个意思。因为是否 一见钟情都是无所谓的,关键在于有更多不同类型的见面机会。不过,根据要背的单词的等级不同,增加见面机会的方式也有所不同。

  第一个分支:瞎听!三千到四千这个等级,是非常常用的单词,而且几乎囊括了表达最基本思想所需要的一切词汇。每篇文章中百分之八十都是这些词 汇,而且这些词都是最基本的语素(或称"词根"),就是分割到最小无法再分割,互相之间也没什么类似之处的东西。对付这些词的最好方法,就是进行大量的, 不间断的,简单的初级听力练习。因为阅读材料中,还有百分之二十其他词汇,所以光凭这个等级的词还看不懂那些阅读材料。但是听力练习都是最基本的对话,而 且发音一般很标准,多听能够增加单词的重复率,而且可以为以后背八千到一万那个等级的词打下语音基础。

  听的时候,要分精听和泛听两部分。精听当然是指每个词都要弄懂,俺着重讲一下泛听。泛听是最重要的,因为掌握语速和语调,以及总体印象都要靠泛 听。而这些都是背八千到一万等级单词的基础。泛听能够让经常用到的词(也就是那些最必要掌握的词)把您的耳朵磨出茧子来,让您模模糊糊听到个音就能反应出 它是什么意思。泛听中您听到的词,才是您真正应该记住的词,所以别害怕精听的时候什么都听不懂。到底什么是泛听呢?泛听,就是说您听的时候,精神要分散, 要一边干着其他事(比如撮饭或和别人大声讨论撮饭,一边有一搭没一搭地听着。泛听一定要见缝插针,一有机会就听着,最好耳机不离耳朵。

  而精听的意义就在于找出您没听清的那些词。啊哈,那就是您背过但还不熟悉的词了。把这些词单独记在另外一个地方,别跟没背下来的词混了。泛听要 听精听已经听过的内容。比如精听听到了第二盘磁带,那么泛听就听第一盘磁带,正好。提醒您一句,千万别拿英语广播当自己的听力教材!

  第二个分支:狂看!八千到一万这个等级,基本包含了剩下的百分之二十。这些单词在听力教材里很难找到。但是,可不要停止听的练习呦,因为听能巩固您的语调感觉,而这是背这个等级单词的一个关键。不过,背这个等级的词,需要在听以外增加看的内容。

  看,同样要分精读和泛读两种。就象听一样,也是泛读更重要一些。泛读要挑不太长,能有耐心看完的文章,而且看不懂的词不要太多,一篇文章有两三个不认识的就足够了。千万不要一上来就看英语报刊杂志小说,那些东西不但很难看懂,而且看懂了也对背单词没什么促进作用。

  泛读也需要大量练习,只要您有耐心,又有足够时间,就一直看下去吧!看的时候不要仔细阅读,扫一眼明白个大概意思就成了,然后把这一眼没看懂的 词画上记号,别琢磨它是什么意思,继续扫描吧!全部看完之后,回头再看这些单词,有的可能已经想起来了,有的....还没想起来?那就查查字典,要是自己 还没背过,就扔掉它,要是已经背过了,就单独抄下来吧,和听力练习中没听出来的词放在一起。

  第三个分支:乱说!这只适合背两万二到三万的词。因为其他的词不用说就已经背下来了。而这个等级的词在阅读材料里非常少,可能阅读十篇文章却一 个这个等级的词也没有。所以靠阅读来增加见面机会已经不行了。这些词甚至有的老外一辈子都没见过,咋能指望他们能写出来呢?尤其是GRE词汇,什么"给马 穿衣服","纽约的流氓","从非洲吹向南欧的风"。这些词都是一些精致的修辞,也就是说,如果您话里净是这些词,那您可以假冒一位学者了。

  一般的老外都是听不懂您说的这些话的,所以不用这些词也能表达同样的含义。好了,您的机会来了,您可以跟老外讲话中带上这些单词,然后很自豪地假装谦虚地跟他们解释这些词的含义。

  每次跟老外解释一两个词就足够了,老外会佩服您佩服得五体投地的。HL就向ws解释吧!要大胆而耐心,尤其是大胆。

  这个阶段,您就别再练听力了,因为练了进步也不大。还记得开头那句话么?要想成功,得走捷径。

  凡是不能在短时期内取得巨大进步的行动,都不必浪费时间去做。

  不过,这时候的阅读材料成了问题:您会发现,过去看的东西觉得太浅没意思,看其他深的东西又看不懂。您还会发现一个新的有趣现象:那就是您想看的文章里,现在全是第一个等级的那些词,每个词您都确切知道它的含义,但整个文章您就是看不懂。

  那您该看什么呢?就看第二个等级的那些浅显文章啊。虽然浅显,但能帮助您不至于忘了过去背出来的成果。至于您看不懂的那些文章,别着急,等您和老外交流多了,您自然就懂了,那都是一些词组、俚语或文法组成的文章。

  背单词捷径的第四条,就是:联想,联想,联想,背单词的第一个动作是什么?端详一下它的外貌。第二第三个动作呢?看看它的内涵和发音。而第四个动作,就应该是联想,再联想。

  联想它和其他背过的词有没有外表类似的?读音类似的?意思类似或相反的?如果有,就赶紧记在旁边,在另外那些词旁边也把这个词加上。这样,以后看见其他词,也会联想起这个词,等于又增加了一次见面机会。

  而且,在第二、第三个等级的词汇里,还有许多单词是由"前缀","词根","后缀"组成的,前缀比如"re","in", "pseud"...,后缀比如"er","a","oid"...,然后共同组成一个新词。如果掌握了这些前后缀,就可以很方便地猜出一个生词到底什么 意思。另外,有很多读音相近的词也有相似的意思,这在俚语、诗歌和儿童用语中更普遍。如果每天记80个单词,一个月只能背2400个单词,但掌握了这些规 律后,实际上背的速度越来越快,几乎一万多单词都是不用背就会了的。

  不过,在GRE单词中,有很多是既没有和其他词的关系,又没有前后缀,看起来既简单又记不住的单词。这些词里边有希腊语,意大利语,德语,拉丁语,甚至还有日语译音。这就只能靠和别人解释来掌握了。

  背单词捷径的第五条,就是:复习!记得快,忘得也就快,这是一个非常正常的规律。在背单词的过程中,复习就显得非常重要。俺总结复习的规律是: 十个单词复习一遍,然后三十个单词,然后是以前所有没背下来的单词。复习的时候,同样不必细抠,粗略地扫一遍就可以了,但一定要想它的读音(因为英语是象 声的)。最后背不下来的单词,一定是不常用的,因为老外一样背不下来。

  每背完一个开头字母的单词,就要把前一个开头字母的复习一遍。然后每背完前文中括号里面的开头字母,就把上一个括号里的复习一遍。复习的时候,要先看英文翻译中文意思来一遍,然后再看着中文想它的英文单词再来一遍。

  前面说过,在泛听,泛读中忘了的词要和背的时候就记不住的词分着记下来,就是为了在复习的时候区别对待。忘了的词,要每天看一遍,会了就划掉,而记不住的词则在背完了整个字母以后,单独背一下这些词,平常就不用看了。

Window 消息大全使用详解

http://blog.ustc.edu.cn/admin/mt.cgi?__mode=view&_type=entry&blog_id=103

Window 消息大全使用详解
(加入日期:2005-2-13 点击数:4179)
【对此文发表评论】 【编程爱好者论坛】 【保存文章至硬盘】  【打印文章】

消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg,

它在Windows单元中是这样声明的:
type
TMsg = packed record
hwnd: HWND; / /窗口句柄
message: UINT; / /消息常量标识符
wParam: WPARAM ; // 32位消息的特定附加信息
lParam: LPARAM ; // 32位消息的特定附加信息
time: DWORD; / /消息创建时的时间
pt: TPoint; / /消息创建时的鼠标位置
end;

消息中有什么?
是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:
hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可视对象的句柄(窗口、对话框、按钮、编辑框等)。
message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量。
wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。
lParam 通常是一个指向内存中数据的指针。由于W P a r a m、l P a r a m和P o i n t e r都是3 2位的,
因此,它们之间可以相互转换。
WM_NULL = $0000;
WM_CREATE = $0001;
应用程序创建一个窗口
WM_DESTROY = $0002;
一个窗口被销毁
WM_MOVE = $0003;
移动一个窗口
WM_SIZE = $0005;
改变一个窗口的大小
WM_ACTIVATE = $0006;
一个窗口被激活或失去激活状态;
WM_SETFOCUS = $0007;
获得焦点后
WM_KILLFOCUS = $0008;
失去焦点
WM_ENABLE = $000A;
改变enable状态
WM_SETREDRAW = $000B;
设置窗口是否能重画
WM_SETTEXT = $000C;
应用程序发送此消息来设置一个窗口的文本
WM_GETTEXT = $000D;
应用程序发送此消息来复制对应窗口的文本到缓冲区
WM_GETTEXTLENGTH = $000E;
得到与一个窗口有关的文本的长度(不包含空字符)
WM_PAINT = $000F;
要求一个窗口重画自己
WM_CLOSE = $0010;
当一个窗口或应用程序要关闭时发送一个信号
WM_QUERYENDSESSION = $0011;
当用户选择结束对话框或程序自己调用ExitWindows函数
WM_QUIT = $0012;
用来结束程序运行或当程序调用postquitmessage函数
WM_QUERYOPEN = $0013;
当用户窗口恢复以前的大小位置时,把此消息发送给某个图标
WM_ERASEBKGND = $0014;
当窗口背景必须被擦除时(例在窗口改变大小时)
WM_SYSCOLORCHANGE = $0015;
当系统颜色改变时,发送此消息给所有顶级窗口
WM_ENDSESSION = $0016;
当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序,
通知它对话是否结束
WM_SYSTEMERROR = $0017;
WM_SHOWWINDOW = $0018;
当隐藏或显示窗口是发送此消息给这个窗口
WM_ACTIVATEAPP = $001C;
发此消息给应用程序哪个窗口是激活的,哪个是非激活的;
WM_FONTCHANGE = $001D;
当系统的字体资源库变化时发送此消息给所有顶级窗口
WM_TIMECHANGE = $001E;
当系统的时间变化时发送此消息给所有顶级窗口
WM_CANCELMODE = $001F;
发送此消息来取消某种正在进行的摸态(操作)
WM_SETCURSOR = $0020;
如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发消息给某个窗口
WM_MOUSEACTIVATE = $0021;
当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口
WM_CHILDACTIVATE = $0022;
发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活,移动,改变大小
WM_QUEUESYNC = $0023;
此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的hook程序
分离出用户输入消息
WM_GETMINMAXINFO = $0024;
此消息发送给窗口当它将要改变大小或位置;
WM_PAINTICON = $0026;
发送给最小化窗口当它图标将要被重画
WM_ICONERASEBKGND = $0027;
此消息发送给某个最小化窗口,仅当它在画图标前它的背景必须被重画
WM_NEXTDLGCTL = $0028;
发送此消息给一个对话框程序去更改焦点位置
WM_SPOOLERSTATUS = $002A;
每当打印管理列队增加或减少一条作业时发出此消息
WM_DRAWITEM = $002B;
当button,combobox,listbox,menu的可视外观改变时发送
此消息给这些空件的所有者
WM_MEASUREITEM = $002C;
当button, combo box, list box, list view control, or menu item 被创建时
发送此消息给控件的所有者
WM_DELETEITEM = $002D;
当the list box 或 combo box 被销毁 或 当 某些项被删除通过LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 消息
WM_VKEYTOITEM = $002E;
此消息有一个LBS_WANTKEYBOARDINPUT风格的发出给它的所有者来响应WM_KEYDOWN消息
WM_CHARTOITEM = $002F;
此消息由一个LBS_WANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR消息
WM_SETFONT = $0030;
当绘制文本时程序发送此消息得到控件要用的颜色
WM_GETFONT = $0031;
应用程序发送此消息得到当前控件绘制文本的字体
WM_SETHOTKEY = $0032;
应用程序发送此消息让一个窗口与一个热键相关连
WM_GETHOTKEY = $0033;
应用程序发送此消息来判断热键与某个窗口是否有关联
WM_QUERYDRAGICON = $0037;
此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标,应用程序能返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标
WM_COMPAREITEM = $0039;
发送此消息来判定combobox或listbox新增加的项的相对位置
WM_GETOBJECT = $003D;
WM_COMPACTING = $0041;
显示内存已经很少了
WM_WINDOWPOSCHANGING = $0046;
发送此消息给那个窗口的大小和位置将要被改变时,来调用setwindowpos函数或其它窗口管理函数
WM_WINDOWPOSCHANGED = $0047;
发送此消息给那个窗口的大小和位置已经被改变时,来调用setwindowpos函数或其它窗口管理函数
WM_POWER = $0048;(适用于16位的windows)
当系统将要进入暂停状态时发送此消息
WM_COPYDATA = $004A;
当一个应用程序传递数据给另一个应用程序时发送此消息
WM_CANCELJOURNAL = $004B;
当某个用户取消程序日志激活状态,提交此消息给程序
WM_NOTIFY = $004E;
当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口
WM_INPUTLANGCHANGEREQUEST = $0050;
当用户选择某种输入语言,或输入语言的热键改变
WM_INPUTLANGCHANGE = $0051;
当平台现场已经被改变后发送此消息给受影响的最顶级窗口
WM_TCARD = $0052;
当程序已经初始化windows帮助例程时发送此消息给应用程序
WM_HELP = $0053;
此消息显示用户按下了F1,如果某个菜单是激活的,就发送此消息个此窗口关联的菜单,否则就
发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口
WM_USERCHANGED = $0054;
当用户已经登入或退出后发送此消息给所有的窗口,当用户登入或退出时系统更新用户的具体
设置信息,在用户更新设置时系统马上发送此消息;
WM_NOTIFYFORMAT = $0055;
公用控件,自定义控件和他们的父窗口通过此消息来判断控件是使用ANSI还是UNICODE结构
在WM_NOTIFY消息,使用此控件能使某个控件与它的父控件之间进行相互通信
WM_CONTEXTMENU = $007B;
当用户某个窗口中点击了一下右键就发送此消息给这个窗口
WM_STYLECHANGING = $007C;
当调用SETWINDOWLONG函数将要改变一个或多个 窗口的风格时发送此消息给那个窗口
WM_STYLECHANGED = $007D;
当调用SETWINDOWLONG函数一个或多个 窗口的风格后发送此消息给那个窗口
WM_DISPLAYCHANGE = $007E;
当显示器的分辨率改变后发送此消息给所有的窗口
WM_GETICON = $007F;
此消息发送给某个窗口来返回与某个窗口有关连的大图标或小图标的句柄;
WM_SETICON = $0080;
程序发送此消息让一个新的大图标或小图标与某个窗口关联;
WM_NCCREATE = $0081;
当某个窗口第一次被创建时,此消息在WM_CREATE消息发送前发送;
WM_NCDESTROY = $0082;
此消息通知某个窗口,非客户区正在销毁
WM_NCCALCSIZE = $0083;
当某个窗口的客户区域必须被核算时发送此消息
WM_NCHITTEST = $0084;//移动鼠标,按住或释放鼠标时发生
WM_NCPAINT = $0085;
程序发送此消息给某个窗口当它(窗口)的框架必须被绘制时;
WM_NCACTIVATE = $0086;
此消息发送给某个窗口 仅当它的非客户区需要被改变来显示是激活还是非激活状态;
WM_GETDLGCODE = $0087;
发送此消息给某个与对话框程序关联的控件,widdows控制方位键和TAB键使输入进入此控件
通过响应WM_GETDLGCODE消息,应用程序可以把他当成一个特殊的输入控件并能处理它
WM_NCMOUSEMOVE = $00A0;
当光标在一个窗口的非客户区内移动时发送此消息给这个窗口 //非客户区为:窗体的标题栏及窗
的边框体
WM_NCLBUTTONDOWN = $00A1;
当光标在一个窗口的非客户区同时按下鼠标左键时提交此消息
WM_NCLBUTTONUP = $00A2;
当用户释放鼠标左键同时光标某个窗口在非客户区十发送此消息;
WM_NCLBUTTONDBLCLK = $00A3;
当用户双击鼠标左键同时光标某个窗口在非客户区十发送此消息
WM_NCRBUTTONDOWN = $00A4;
当用户按下鼠标右键同时光标又在窗口的非客户区时发送此消息
WM_NCRBUTTONUP = $00A5;
当用户释放鼠标右键同时光标又在窗口的非客户区时发送此消息
WM_NCRBUTTONDBLCLK = $00A6;
当用户双击鼠标右键同时光标某个窗口在非客户区十发送此消息
WM_NCMBUTTONDOWN = $00A7;
当用户按下鼠标中键同时光标又在窗口的非客户区时发送此消息
WM_NCMBUTTONUP = $00A8;
当用户释放鼠标中键同时光标又在窗口的非客户区时发送此消息
WM_NCMBUTTONDBLCLK = $00A9;
当用户双击鼠标中键同时光标又在窗口的非客户区时发送此消息
WM_KEYFIRST = $0100;
WM_KEYDOWN = $0100;
//按下一个键
WM_KEYUP = $0101;
//释放一个键
WM_CHAR = $0102;
//按下某键,并已发出WM_KEYDOWN, WM_KEYUP消息
WM_DEADCHAR = $0103;
当用translatemessage函数翻译WM_KEYUP消息时发送此消息给拥有焦点的窗口
WM_SYSKEYDOWN = $0104;
当用户按住ALT键同时按下其它键时提交此消息给拥有焦点的窗口;
WM_SYSKEYUP = $0105;
当用户释放一个键同时ALT 键还按着时提交此消息给拥有焦点的窗口
WM_SYSCHAR = $0106;
当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后提交此消息给拥有焦点的窗口
WM_SYSDEADCHAR = $0107;
当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后发送此消息给拥有焦点的窗口
WM_KEYLAST = $0108;
WM_INITDIALOG = $0110;
在一个对话框程序被显示前发送此消息给它,通常用此消息初始化控件和执行其它任务
WM_COMMAND = $0111;
当用户选择一条菜单命令项或当某个控件发送一条消息给它的父窗口,一个快捷键被翻译
WM_SYSCOMMAND = $0112;
当用户选择窗口菜单的一条命令或当用户选择最大化或最小化时那个窗口会收到此消息
WM_TIMER = $0113; //发生了定时器事件
WM_HSCROLL = $0114;
当一个窗口标准水平滚动条产生一个滚动事件时发送此消息给那个窗口,也发送给拥有它的控件
WM_VSCROLL = $0115;
当一个窗口标准垂直滚动条产生一个滚动事件时发送此消息给那个窗口也,发送给拥有它的控件 WM_INITMENU = $0116;
当一个菜单将要被激活时发送此消息,它发生在用户菜单条中的某项或按下某个菜单键,它允许程序在显示前更改菜单
WM_INITMENUPOPUP = $0117;
当一个下拉菜单或子菜单将要被激活时发送此消息,它允许程序在它显示前更改菜单,而不要改变全部
WM_MENUSELECT = $011F;
当用户选择一条菜单项时发送此消息给菜单的所有者(一般是窗口)
WM_MENUCHAR = $0120;
当菜单已被激活用户按下了某个键(不同于加速键),发送此消息给菜单的所有者;
WM_ENTERIDLE = $0121;
当一个模态对话框或菜单进入空载状态时发送此消息给它的所有者,一个模态对话框或菜单进入空载状态就是在处理完一条或几条先前的消息后没有消息它的列队中等待
WM_MENURBUTTONUP = $0122;
WM_MENUDRAG = $0123;
WM_MENUGETOBJECT = $0124;
WM_UNINITMENUPOPUP = $0125;
WM_MENUCOMMAND = $0126;
WM_CHANGEUISTATE = $0127;
WM_UPDATEUISTATE = $0128;
WM_QUERYUISTATE = $0129;
WM_CTLCOLORMSGBOX = $0132;
在windows绘制消息框前发送此消息给消息框的所有者窗口,通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置消息框的文本和背景颜色
WM_CTLCOLOREDIT = $0133;
当一个编辑型控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置编辑框的文本和背景颜色
WM_CTLCOLORLISTBOX = $0134;
当一个列表框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置列表框的文本和背景颜色
WM_CTLCOLORBTN = $0135;
当一个按钮控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置按纽的文本和背景颜色
WM_CTLCOLORDLG = $0136;
当一个对话框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置对话框的文本背景颜色
WM_CTLCOLORSCROLLBAR= $0137;
当一个滚动条控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置滚动条的背景颜色
WM_CTLCOLORSTATIC = $0138;
当一个静态控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置静态控件的文本和背景颜色
WM_MOUSEFIRST = $0200;
WM_MOUSEMOVE = $0200;
// 移动鼠标
WM_LBUTTONDOWN = $0201;
//按下鼠标左键
WM_LBUTTONUP = $0202;
//释放鼠标左键
WM_LBUTTONDBLCLK = $0203;
//双击鼠标左键
WM_RBUTTONDOWN = $0204;
//按下鼠标右键
WM_RBUTTONUP = $0205;
//释放鼠标右键
WM_RBUTTONDBLCLK = $0206;
//双击鼠标右键
WM_MBUTTONDOWN = $0207;
//按下鼠标中键
WM_MBUTTONUP = $0208;
//释放鼠标中键
WM_MBUTTONDBLCLK = $0209;
//双击鼠标中键
WM_MOUSEWHEEL = $020A;
当鼠标轮子转动时发送此消息个当前有焦点的控件
WM_MOUSELAST = $020A;
WM_PARENTNOTIFY = $0210;
当MDI子窗口被创建或被销毁,或用户按了一下鼠标键而光标在子窗口上时发送此消息给它的父窗口
WM_ENTERMENULOOP = $0211;
发送此消息通知应用程序的主窗口that已经进入了菜单循环模式
WM_EXITMENULOOP = $0212;
发送此消息通知应用程序的主窗口that已退出了菜单循环模式
WM_NEXTMENU = $0213;
WM_SIZING = 532;
当用户正在调整窗口大小时发送此消息给窗口;通过此消息应用程序可以监视窗口大小和位置也可以修改他们
WM_CAPTURECHANGED = 533;
发送此消息 给窗口当它失去捕获的鼠标时;
WM_MOVING = 534;
当用户在移动窗口时发送此消息,通过此消息应用程序可以监视窗口大小和位置也可以修改他们;
WM_POWERBROADCAST = 536;
此消息发送给应用程序来通知它有关电源管理事件;
WM_DEVICECHANGE = 537;
当设备的硬件配置改变时发送此消息给应用程序或设备驱动程序
WM_IME_STARTCOMPOSITION = $010D;
WM_IME_ENDCOMPOSITION = $010E;
WM_IME_COMPOSITION = $010F;
WM_IME_KEYLAST = $010F;
WM_IME_SETCONTEXT = $0281;
WM_IME_NOTIFY = $0282;
WM_IME_CONTROL = $0283;
WM_IME_COMPOSITIONFULL = $0284;
WM_IME_SELECT = $0285;
WM_IME_CHAR = $0286;
WM_IME_REQUEST = $0288;
WM_IME_KEYDOWN = $0290;
WM_IME_KEYUP = $0291;
WM_MDICREATE = $0220;
应用程序发送此消息给多文档的客户窗口来创建一个MDI 子窗口
WM_MDIDESTROY = $0221;
应用程序发送此消息给多文档的客户窗口来关闭一个MDI 子窗口
WM_MDIACTIVATE = $0222;
应用程序发送此消息给多文档的客户窗口通知客户窗口激活另一个MDI子窗口,当客户窗口收到此消息后,它发出WM_MDIACTIVE消息给MDI子窗口(未激活)激活它;
WM_MDIRESTORE = $0223;
程序 发送此消息给MDI客户窗口让子窗口从最大最小化恢复到原来大小
WM_MDINEXT = $0224;
程序 发送此消息给MDI客户窗口激活下一个或前一个窗口
WM_MDIMAXIMIZE = $0225;
程序发送此消息给MDI客户窗口来最大化一个MDI子窗口;
WM_MDITILE = $0226;
程序 发送此消息给MDI客户窗口以平铺方式重新排列所有MDI子窗口
WM_MDICASCADE = $0227;
程序 发送此消息给MDI客户窗口以层叠方式重新排列所有MDI子窗口
WM_MDIICONARRANGE = $0228;
程序 发送此消息给MDI客户窗口重新排列所有最小化的MDI子窗口
WM_MDIGETACTIVE = $0229;
程序 发送此消息给MDI客户窗口来找到激活的子窗口的句柄
WM_MDISETMENU = $0230;
程序 发送此消息给MDI客户窗口用MDI菜单代替子窗口的菜单
WM_ENTERSIZEMOVE = $0231;
WM_EXITSIZEMOVE = $0232;
WM_DROPFILES = $0233;
WM_MDIREFRESHMENU = $0234;
WM_MOUSEHOVER = $02A1;
WM_MOUSELEAVE = $02A3;
WM_CUT = $0300;
程序发送此消息给一个编辑框或combobox来删除当前选择的文本
WM_COPY = $0301;
程序发送此消息给一个编辑框或combobox来复制当前选择的文本到剪贴板
WM_PASTE = $0302;
程序发送此消息给editcontrol或combobox从剪贴板中得到数据
WM_CLEAR = $0303;
程序发送此消息给editcontrol或combobox清除当前选择的内容;
WM_UNDO = $0304;
程序发送此消息给editcontrol或combobox撤消最后一次操作
WM_RENDERFORMAT = $0305;

WM_RENDERALLFORMATS = $0306;
WM_DESTROYCLIPBOARD = $0307;
当调用ENPTYCLIPBOARD函数时 发送此消息给剪贴板的所有者
WM_DRAWCLIPBOARD = $0308;
当剪贴板的内容变化时发送此消息给剪贴板观察链的第一个窗口;它允许用剪贴板观察窗口来
显示剪贴板的新内容;
WM_PAINTCLIPBOARD = $0309;
当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区需要重画;
WM_VSCROLLCLIPBOARD = $030A;
WM_SIZECLIPBOARD = $030B;
当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区域的大小已经改变是此消息通过剪贴板观察窗口发送给剪贴板的所有者;
WM_ASKCBFORMATNAME = $030C;
通过剪贴板观察窗口发送此消息给剪贴板的所有者来请求一个CF_OWNERDISPLAY格式的剪贴板的名字
WM_CHANGECBCHAIN = $030D;
当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链的第一个窗口;
WM_HSCROLLCLIPBOARD = $030E;
此消息通过一个剪贴板观察窗口发送给剪贴板的所有者 ;它发生在当剪贴板包含CFOWNERDISPALY格式的数据并且有个事件在剪贴板观察窗的水平滚动条上;所有者应滚动剪贴板图象并更新滚动条的值;
WM_QUERYNEWPALETTE = $030F;
此消息发送给将要收到焦点的窗口,此消息能使窗口在收到焦点时同时有机会实现他的逻辑调色板
WM_PALETTEISCHANGING= $0310;
当一个应用程序正要实现它的逻辑调色板时发此消息通知所有的应用程序
WM_PALETTECHANGED = $0311;
此消息在一个拥有焦点的窗口实现它的逻辑调色板后发送此消息给所有顶级并重叠的窗口,以此来改变系统调色板
WM_HOTKEY = $0312;
当用户按下由REGISTERHOTKEY函数注册的热键时提交此消息
WM_PRINT = 791;
应用程序发送此消息仅当WINDOWS或其它应用程序发出一个请求要求绘制一个应用程序的一部分;
WM_PRINTCLIENT = 792;
WM_HANDHELDFIRST = 856;
WM_HANDHELDLAST = 863;
WM_PENWINFIRST = $0380;
WM_PENWINLAST = $038F;
WM_COALESCE_FIRST = $0390;
WM_COALESCE_LAST = $039F;
WM_DDE_FIRST = $03E0;
WM_DDE_INITIATE = WM_DDE_FIRST + 0;
一个DDE客户程序提交此消息开始一个与服务器程序的会话来响应那个指定的程序和主题名;
WM_DDE_TERMINATE = WM_DDE_FIRST + 1;
一个DDE应用程序(无论是客户还是服务器)提交此消息来终止一个会话;
WM_DDE_ADVISE = WM_DDE_FIRST + 2;
一个DDE客户程序提交此消息给一个DDE服务程序来请求服务器每当数据项改变时更新它
WM_DDE_UNADVISE = WM_DDE_FIRST + 3;
一个DDE客户程序通过此消息通知一个DDE服务程序不更新指定的项或一个特殊的剪贴板格式的项
WM_DDE_ACK = WM_DDE_FIRST + 4;
此消息通知一个DDE(动态数据交换)程序已收到并正在处理WM_DDE_POKE, WM_DDE_EXECUTE, WM_DDE_DATA, WM_DDE_ADVISE, WM_DDE_UNADVISE, or WM_DDE_INITIAT消息
WM_DDE_DATA = WM_DDE_FIRST + 5;
一个DDE服务程序提交此消息给DDE客户程序来传递个一数据项给客户或通知客户的一条可用数据项
WM_DDE_REQUEST = WM_DDE_FIRST + 6;
一个DDE客户程序提交此消息给一个DDE服务程序来请求一个数据项的值;
WM_DDE_POKE = WM_DDE_FIRST + 7;
一个DDE客户程序提交此消息给一个DDE服务程序,客户使用此消息来请求服务器接收一个未经同意的数据项;服务器通过答复WM_DDE_ACK消息提示是否它接收这个数据项;
WM_DDE_EXECUTE = WM_DDE_FIRST + 8;
一个DDE客户程序提交此消息给一个DDE服务程序来发送一个字符串给服务器让它象串行命令一样被处理,服务器通过提交WM_DDE_ACK消息来作回应;
WM_DDE_LAST = WM_DDE_FIRST + 8;
WM_APP = $8000;
WM_USER = $0400;
此消息能帮助应用程序自定义私有消息;
/////////////////////////////////////////////////////////////////////
通知消息(Notification message)是指这样一种消息,一个窗口内的子控件发生了一些事情,需要通知父窗口。通知消息只适用于标准的窗口控件如按钮、列表框、组合框、编辑框,以及Windows 95公共控件如树状视图、列表视图等。例如,单击或双击一个控件、在控件中选择部分文本、操作控件的滚动条都会产生通知消息。
按扭
B N _ C L I C K E D //用户单击了按钮
B N _ D I S A B L E //按钮被禁止
B N _ D O U B L E C L I C K E D //用户双击了按钮
B N _ H I L I T E //用户加亮了按钮
B N _ PA I N T按钮应当重画
B N _ U N H I L I T E加亮应当去掉
组合框
C B N _ C L O S E U P组合框的列表框被关闭
C B N _ D B L C L K用户双击了一个字符串
C B N _ D R O P D O W N组合框的列表框被拉出
C B N _ E D I T C H A N G E用户修改了编辑框中的文本
C B N _ E D I T U P D AT E编辑框内的文本即将更新
C B N _ E R R S PA C E组合框内存不足
C B N _ K I L L F O C U S组合框失去输入焦点
C B N _ S E L C H A N G E在组合框中选择了一项
C B N _ S E L E N D C A N C E L用户的选择应当被取消
C B N _ S E L E N D O K用户的选择是合法的
C B N _ S E T F O C U S组合框获得输入焦点
编辑框
E N _ C H A N G E编辑框中的文本己更新
E N _ E R R S PA C E编辑框内存不足
E N _ H S C R O L L用户点击了水平滚动条
E N _ K I L L F O C U S编辑框正在失去输入焦点
E N _ M A X T E X T插入的内容被截断
E N _ S E T F O C U S编辑框获得输入焦点
E N _ U P D AT E编辑框中的文本将要更新
E N _ V S C R O L L用户点击了垂直滚动条消息含义
列表框
L B N _ D B L C L K用户双击了一项
L B N _ E R R S PA C E列表框内存不够
L B N _ K I L L F O C U S列表框正在失去输入焦点
L B N _ S E L C A N C E L选择被取消
L B N _ S E L C H A N G E选择了另一项
L B N _ S E T F O C U S列表框获得输入焦点
本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( ProgramFan.Com )

教你理解复杂的C/C++声明

http://blog.ustc.edu.cn/admin/mt.cgi?__mode=view&_type=entry&blog_id=103

教你理解复杂的C/C++声明
(加入日期:2005-2-13 点击数:4061)
【对此文发表评论】 【编程爱好者论坛】 【保存文章至硬盘】  【打印文章】

陆其明 译

原文:
http://www.codeproject.com/cpp/complex_declarations.asp
作者:Vikram A Punathambekar


介绍

曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明:我们将从每天都能碰到的较简单的声明入手,然后逐步加入 const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的"右左法则"。需要强调一下的是,复杂的C/C+ +声明并不是好的编程风格;我这里仅仅是教你如何去理解这些声明。注意:为了保证能够在同一行上显示代码和相关注释,本文最好在至少1024x768分辨率的显示器上阅读。


基础

让我们从一个非常简单的例子开始,如下:

int n;

这个应该被理解为"declare n as an int"(n是一个int型的变量)。

接下去来看一下指针变量,如下:

int *p;

这个应该被理解为"declare p as an int *"(p是一个int *型的变量),或者说p是一个指向一个int型变量的指针。我想在这里展开讨论一下:我觉得在声明一个指针(或引用)类型的变量时,最好将*(或 &)写在紧靠变量之前,而不是紧跟基本类型之后。这样可以避免一些理解上的误区,比如:

int*  p,q;

第一眼看去,好像是p和q都是int*类型的,但事实上,只有p是一个指针,而q是一个最简单的int型变量。

我们还是继续我们前面的话题,再来看一个指针的指针的例子:

char **argv;

理论上,对于指针的级数没有限制,你可以定义一个浮点类型变量的指针的指针的指针的指针...

再来看如下的声明:

int RollNum[30][4];
int (*p)[4]=RollNum;
int *q[5];

这里,p被声明为一个指向一个4元素(int类型)数组的指针,而q被声明为一个包含5个元素(int类型的指针)的数组。

另外,我们还可以在同一个声明中混合实用*和&,如下:

int **p1; // p1 is a pointer  to a pointer  to an int.
int *&p2; // p2 is a reference to a pointer  to an int.
int &*p3; // ERROR: Pointer  to a reference is illegal.
int &&p4; // ERROR: Reference to a reference is illegal.

注:p1是一个int类型的指针的指针;p2是一个int类型的指针的引用;p3是一个int类型引用的指针(不合法!);p4是一个int类型引用的引用(不合法!)。



const修饰符

当你想阻止一个变量被改变,可能会用到const关键字。在你给一个变量加上const修饰符的同时,通常需要对它进行初始化,因为以后的任何时候你将没有机会再去改变它。例如:

const int n=5;
int const m=10;

上述两个变量n和m其实是同一种类型的--都是const int(整形恒量)。因为C++标准规定,const关键字放在类型或变量名之前等价的。我个人更喜欢第一种声明方式,因为它更突出了const修饰符的作用。

当const与指针一起使用时,容易让人感到迷惑。例如,我们来看一下下面的p和q的声明:

const int *p;
int const *q;

他们当中哪一个代表const int类型的指针(const直接修饰int),哪一个代表int类型的const指针(const直接修饰指针)?实际上,p和q都被声明为const int类型的指针。而int类型的const指针应该这样声明:

int * const r= &n; // n has been declared as an int

这里,p和q都是指向const int类型的指针,也就是说,你在以后的程序里不能改变*p的值。而r是一个const指针,它在声明的时候被初始化指向变量n(即r=&n;)之后,r的值将不再允许被改变(但*r的值可以改变)。

组合上述两种const修饰的情况,我们来声明一个指向const int类型的const指针,如下:

const int * const p=&n // n has been declared as const int

下面给出的一些关于const的声明,将帮助你彻底理清const的用法。不过请注意,下面的一些声明是不能被编译通过的,因为他们需要在声明的同时进行初始化。为了简洁起见,我忽略了初始化部分;因为加入初始化代码的话,下面每个声明都将增加两行代码。

char ** p1;          //    pointer to    pointer to    char
const char **p2;        //    pointer to    pointer to const char
char * const * p3;       //    pointer to const pointer to    char
const char * const * p4;    //    pointer to const pointer to const char
char ** const p5;       // const pointer to    pointer to    char
const char ** const p6;    // const pointer to    pointer to const char
char * const * const p7;    // const pointer to const pointer to    char
const char * const * const p8; // const pointer to const pointer to const char

注:p1是指向char类型的指针的指针;p2是指向const char类型的指针的指针;p3是指向char类型的const指针;p4是指向const char类型的const指针;p5是指向char类型的指针的const指针;p6是指向const char类型的指针的const指针;p7是指向char类型const指针的const指针;p8是指向const char类型的const指针的const指针。



typedef的妙用

typedef给你一种方式来克服"*只适合于变量而不适合于类型"的弊端。你可以如下使用typedef:

typedef char * PCHAR;
PCHAR p,q;

这里的p和q都被声明为指针。(如果不使用typedef,q将被声明为一个char变量,这跟我们的第一眼感觉不太一致!)下面有一些使用typedef的声明,并且给出了解释:

typedef char * a; // a is a pointer to a char

typedef a b();   // b is a function that returns
          // a pointer to a char

typedef b *c;   // c is a pointer to a function
          // that returns a pointer to a char

typedef c d();   // d is a function returning
          // a pointer to a function
          // that returns a pointer to a char

typedef d *e;   // e is a pointer to a function
          // returning a pointer to a
          // function that returns a
          // pointer to a char

e var[10];     // var is an array of 10 pointers to
          // functions returning pointers to
          // functions returning pointers to chars.

typedef经常用在一个结构声明之前,如下。这样,当创建结构变量的时候,允许你不使用关键字struct(在C中,创建结构变量时要求使用 struct关键字,如struct tagPOINT a;而在C++中,struct可以忽略,如tagPOINT b)。

typedef struct tagPOINT
{
  int x;
  int y;
}POINT;

POINT p; /* Valid C code */



函数指针

函数指针可能是最容易引起理解上的困惑的声明。函数指针在DOS时代写TSR程序时用得最多;在Win32和X-Windows时代,他们被用在需要回调函数的场合。当然,还有其它很多地方需要用到函数指针:虚函数表,STL中的一些模板,Win NT/2K/XP系统服务等。让我们来看一个函数指针的简单例子:

int (*p)(char);

这里p被声明为一个函数指针,这个函数带一个char类型的参数,并且有一个int类型的返回值。另外,带有两个float类型参数、返回值是char类型的指针的指针的函数指针可以声明如下:

char ** (*p)(float, float);

那么,带两个char类型的const指针参数、无返回值的函数指针又该如何声明呢?参考如下:

void * (*a[5])(char * const, char * const);



"右左法则"[重要!!!]

The right-left rule: Start reading the declaration from the innermost parentheses, go right, and then go left. When you encounter parentheses, the direction should be reversed. Once everything in the parentheses has been parsed, jump out of it. Continue till the whole declaration has been parsed.

这是一个简单的法则,但能让你准确理解所有的声明。这个法则运用如下:从最内部的括号开始阅读声明,向右看,然后向左看。当你碰到一个括号时就调转阅读的方向。括号内的所有内容都分析完毕就跳出括号的范围。这样继续,直到整个声明都被分析完毕。

对上述"右左法则"做一个小小的修正:当你第一次开始阅读声明的时候,你必须从变量名开始,而不是从最内部的括号。

下面结合例子来演示一下"右左法则"的使用。

int * (* (*fp1) (int) ) [10];

阅读步骤:
1. 从变量名开始 -------------------------------------------- fp1
2. 往右看,什么也没有,碰到了),因此往左看,碰到一个* ------ 一个指针
3. 跳出括号,碰到了(int) ----------------------------------- 一个带一个int参数的函数
4. 向左看,发现一个* --------------------------------------- (函数)返回一个指针
5. 跳出括号,向右看,碰到[10] ------------------------------ 一个10元素的数组
6. 向左看,发现一个* --------------------------------------- 指针
7. 向左看,发现int ----------------------------------------- int类型


总结:fp1被声明成为一个函数的指针,该函数返回指向指针数组的指针.


再来看一个例子:

int *( *( *arr[5])())();

阅读步骤:
1. 从变量名开始 -------------------------------------------- arr
2. 往右看,发现是一个数组 ---------------------------------- 一个5元素的数组
3. 向左看,发现一个* --------------------------------------- 指针
4. 跳出括号,向右看,发现() -------------------------------- 不带参数的函数
5. 向左看,碰到* ------------------------------------------- (函数)返回一个指针
6. 跳出括号,向右发现() ------------------------------------ 不带参数的函数
7. 向左,发现* --------------------------------------------- (函数)返回一个指针
8. 继续向左,发现int --------------------------------------- int类型

总结:??


还有更多的例子:

float ( * ( *b()) [] )();       // b is a function that returns a
                    // pointer to an array of pointers
                    // to functions returning floats.

void * ( *c) ( char, int (*)());    // c is a pointer to a function that takes
                    // two parameters:
                    //   a char and a pointer to a
                    //   function that takes no
                    //   parameters and returns
                    //   an int
                    // and returns a pointer to void.

void ** (*d) (int &,
char **(*)(char *, char **));    // d is a pointer to a function that takes
                    // two parameters:
                    //   a reference to an int and a pointer
                    //   to a function that takes two parameters:
                    //    a pointer to a char and a pointer
                    //    to a pointer to a char
                    //   and returns a pointer to a pointer
                    //   to a char
                    // and returns a pointer to a pointer to void

float ( * ( * e[10])
  (int &) ) [5];          // e is an array of 10 pointers to
                    // functions that take a single
                    // reference to an int as an argument
                    // and return pointers to
                    // an array of 5 floats.

正则表达式(regular expression)

参考 正则表达式(regular expression)

前言
正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。
索引
1._引子
2._正则表达式的历史
3._正则表达式定义


3.1_普通字符
3.2_非打印字符
3.3_特殊字符
3.4_限定符
3.5_定位符
3.6_选择
3.7_后向引用

4._各种操作符的运算优先级
5._全部符号解释
6._部分例子
7._正则表达式匹配规则

7.1_基本模式匹配
7.2_字符簇
7.3_确定重复出现



1. 引子


  目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。
  正则表达式的使用,可以通过简单的办法来实现强大的功能。为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的。

例子: ^.+@.+\\..+$

  这样的代码曾经多次把我自己给吓退过。可能很多人也是被这样的代码给吓跑的吧。继续阅读本文将让你也可以自由应用这样的代码。注意:这里的第7部分跟前面的内容看起来似乎有些重复,目的是把前面表格里的部分重新描述了一次,目的是让这些内容更容易理解。

2. 正则表达式的历史



  正则表达式的"祖先"可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 两位神经生理学家研究出一种数学方式来描述这些神经网络。  1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为"神经网事件的表示法"的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为"正则集的代数"的表达式,因 此采用"正则表达式"这个术语。随后,发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。 如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。

3. 正则表达式定义


  正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。


  • 列目录时, dir *.txt或ls *.txt中的*.txt就 是一个正则表达式,因为这里*与正则式的*的含义是不同的。



  正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

3.1 普通字符


  由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。

3.2 非打印字符







































字符 含义
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x
的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

 

3.3 特殊字符


  所谓特殊字符,就是一些有特殊含义的字符,如上面说的"*.txt"中的*,简单的说就是表示任何字符串的意思。如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。ls
\*.txt。正则表达式有以下特殊字符。 

















































特别字符说明
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则
$ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
( )标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用
\( 和 \)。
*匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
.匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
?匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n'
匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
^匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配
^ 字符本身,请使用 \^。
{标记限定符表达式的开始。要匹配 {,请使用 \{。
|指明两项之间的一个选择。要匹配 |,请使用 \|。



  • 构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。



3.4 限定符


  限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{n}或{n,}或{n,m}共6种。*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。正则表达式的限定符有:
 




























字符 描述
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

3.5 定位符


  用来描述字符串或单词的边界,^和$分别指字符串的开始与结束,\b描述单词的前或后边界,\B表示非单词边界。不能对定位符使用限定符。

3.6 选择


  用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。但用圆括号会有一个副作用,是相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种 副作用。其中?:是非捕获元之一,还有两个非捕获元是?=和?!,这两个还有更多的含义,前者为正向预查,在任何开始匹配圆括号内的正则表达式模式的位置 来匹配搜索字符串,后者为负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。

3.7 后向引用


  对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的 内容存储。存储子匹配的缓冲区编号从 1 开始,连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 '\n' 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数。可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对相关匹配的保存。

4. 各种操作符的运算优先级


  相同优先级的从左到右进行运算,不同优先级的运算先高后低。各种操作符的优先级从高到低如下:
 
























操作符 描述
\ 转义符
(), (?:), (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, \anymetacharacter 位置和顺序
| "或"操作

5. 全部符号解释







































































































































































字符 描述
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个
向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配
"("。
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^
也匹配 '\n' 或 '\r' 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$
也匹配 '\n' 或 '\r' 之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。*
等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及
"zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或
"does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的
'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的
'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m
次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于
'o?'。请注意在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m})
后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?'
将匹配单个 "o",而 'o+' 将匹配所有 'o'。
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象
'[.\n]' 的模式。
(pattern) 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。
(?:pattern) 匹 配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
(?=pattern) 正 向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 负 向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
[xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain"中的'p'。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
\cx 匹配由 x 指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
\W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。.
\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。
\n 标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
\nm 标 识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。
\nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。
\un 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (?)。

 

6. 部分例子



































正则表达式说明
/\b([a-z]+) \1\b/gi 一个单词连续出现的位置
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ 将一个URL解析为协议、域、端口及相对路径
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/ 定位章节的位置
/[-a-z]/A至z共26个字母再加一个-号。
/ter\b/ 可匹配chapter,而不能terminal
/\Bapt/可匹配chapter,而不能aptitude
/Windows(?=95 |98 |NT )/ 可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后,从Windows后面开始进行下一次的检索匹配。

 

7. 正则表达式匹配规则


7.1 基本模式匹配 
一切从最基本的开始。模式,是正规表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。例如:

^once

  这个模式包含一个特殊的字符^,表示该模式只匹配那些以once开头的字符串。例如该模式与字符串"once upon a time"匹配,与"There once was a man from NewYork"不匹配。正如如^符号表示开头一样,$符号用来匹配那些以给定模式结尾的字符串。

bucket$

  
这个模式与"Who kept all of this cash in a bucket"匹配,与"buckets"不匹配。字符^和$同时使用时,表示精确匹配(字符串与模式一样)。例如:

^bucket$

  只匹配字符串"bucket"。如果一个模式不包括^和$,那么它与任何包含该模式的字符串匹配。例如:模式

once

与字符串

There once was a man from NewYorkWho kept all of his cash in a bucket.

是匹配的。  
在该模式中的字母(o-n-c-e)是字面的字符,也就是说,他们表示该字母本身,数字也是一样的。其他一些稍微复杂的字符,如标点符号和白字符(空格、 制表符等),要用到转义序列。所有的转义序列都用反斜杠(\)打头。制表符的转义序列是:\t。所以如果我们要检测一个字符串是否以制表符开头,可以用这 个模式:

^\t

类似的,用\n表示"新行",\r表示回车。其他的特殊符号,可以用在前面加上反斜杠,如反斜杠本身用\\表示,句号.用\.表示,以此类推。
7.2 字符簇
在INTERNET的程序中,正规表达式通常用来验证用户的输入。当用户提交一个FORM以后,要判断输入的电话号码、地址、EMAIL地址、信用卡号码 等是否有效,用普通的基于字面的字符是不够的。所以要用一种更自由的描述我们要的模式的办法,它就是字符簇。要建立一个表示所有元音字符的字符簇,就把所 有的元音字符放在一个方括号里:

[AaEeIiOoUu]

这个模式与任何元音字符匹配,但只能表示一个字符。用连字号可以表示一个字符的范围,如:

[a-z] //匹配所有的小写字母 [A-Z] //匹配所有的大写字母 [a-zA-Z] //匹配所有的字母 [0-9] //匹配所有的数字
[0-9\.\-] //匹配所有的数字,句号和减号 [ \f\r\t\n] //匹配所有的白字符

同样的,这些也只表示一个字符,这是一个非常重要的。如果要匹配一个由一个小写字母和一位数字组成的字符串,比如"z2"、"t6"或"g7",但不是"ab2"、"r2d3" 或"b52"的话,用这个模式:

^[a-z][0-9]$

尽管[a-z]代表26个字母的范围,但在这里它只能与第一个字符是小写字母的字符串匹配。前面曾经提到^表示字符串的开头,但它还有另外一个含义。当在 一组方括号里使用^是,它表示"非"或"排除"的意思,常常用来剔除某个字符。还用前面的例子,我们要求第一个字符不能是数字:

^[^0-9][0-9]$

这个模式与"&5"、"g7"及"-2"是匹配的,但与"12"、"66"是不匹配的。下面是几个排除特定字符的例子:

[^a-z] //除了小写字母以外的所有字符 [^\\\/\^] //除了(\)(/)(^)之外的所有字符 [^\"\'] //除了双引号(")和单引号(')之外的所有字符

特殊字符"." (点,句号)在正规表达式中用来表示除了"新行"之外的所有字符。所以模式"^.5$"与任何两个字符的、以数字5结尾和以其他非"新行"字符开头的字符 串匹配。模式"."可以匹配任何字符串,除了空串和只包括一个"新行"的字符串。PHP的正规表达式有一些内置的通用字符簇,列表如下:

字符簇 含义 [[:alpha:]] 任何字母 [[:digit:]] 任何数字 [[:alnum:]] 任何字母和数字 [[:space:]] 任何白字符 [[:upper:]] 任何大写字母 [[:lower:]] 任何小写字母 [[:punct:]] 任何标点符号 [[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]

7.3 确定重复出现
到现在为止,你已经知道如何去匹配一个字母或数字,但更多的情况下,可能要匹配一个单词或一组数字。一个单词有若干个字母组成,一组数字有若干个单数组成。跟在字符或字符簇后面的花括号({})用来确定前面的内容的重复出现的次数。

字符簇 含义 ^[a-zA-Z_]$ 所有的字母和下划线 ^[[:alpha:]]{3}$ 所有的3个字母的单词 ^a$ 字母a
^a{4}$ aaaa ^a{2,4}$ aa,aaa或aaaa ^a{1,3}$ a,aa或aaa ^a{2,}$ 包含多于两个a的字符串
^a{2,} 如:aardvark和aaab,但apple不行 a{2,} 如:baad和aaa,但Nantucket不行 \t{2} 两个制表符
.{2} 所有的两个字符

这些例子描述了花括号的三种不同的用法。一个数字,{x}的意思是"前面的字符或字符簇只出现x次";一个数字加逗号,{x,}的意思是"前面的内容出现 x或更多的次数";两个用逗号分隔的数字,{x,y}表示"前面的内容至少出现x次,但不超过y次"。我们可以把模式扩展到更多的单词或数字:

^[a-zA-Z0-9_]{1,}$ //所有包含一个以上的字母、数字或下划线的字符串 ^[0-9]{1,}$ //所有的正数 ^\-{0,1}[0-9]{1,}$ //所有的整数
^\-{0,1}[0-9]{0,}\.{0,1}[0-9]{0,}$ //所有的小数

最后一个例子不太好理解,是吗?这么看吧:与所有以一个可选的负号(\-{0,1})开头(^)、跟着0个或更多的数字([0-9]{0,})、和一个可 选的小数点(\.{0,1})再跟上0个或多个数字([0-9]{0,}),并且没有其他任何东西($)。下面你将知道能够使用的更为简单的方法。特殊字 符"?"与{0,1}是相等的,它们都代表着:"0个或1个前面的内容"或"前面的内容是可选的"。所以刚才的例子可以简化为:

^\-?[0-9]{0,}\.?[0-9]{0,}$

特殊字符"*"与{0,}是相等的,它们都代表着"0个或多个前面的内容"。最后,字符"+"与 {1,}是相等的,表示"1个或多个前面的内容",所以上面的4个例子可以写成:

^[a-zA-Z0-9_]+$ //所有包含一个以上的字母、数字或下划线的字符串 ^[0-9]+$ //所有的正数 ^\-?[0-9]+$ //所有的整数 ^\-?[0-9]*\.?[0-9]*$ //所有的小数

当然这并不能从技术上降低正规表达式的复杂性,但可以使它们更容易阅读。 参考文献:
JScript 和 VBScript 正则表达式