| Hongcheng's profileTricksBlogListsNetwork | Help |
TricksAll are just tricks |
||||||
|
October 18 An CPU cache trick下面有两种用单链表解决冲突的hash表节点定义。 -------------------------------------------------------------------------- template<typenmae Key,typename Value> class Node { Key _key; Value _value; Node<Key,Value>* next;}; ---------------------------------------------------------------------------------- template<typenmae Key,typename Value> class Node { Key _key; Node<Key,Value>* next;Value _value;}; ------------------------------------------------------------------------- 两种节点定义仅仅在数据项放置顺序上有区别,哪种实际性能会更好能或者说更加cache友好一些呢? 注意到hash表在查找的时候需要历遍节点比较节点的_key与要查找的key,如果不同则要取得节点的next指针并移动到下一个节点。第一种定义在_value的字节数较大的情况下会导致_key和next不可能出现在同一个cache line中,于是在读取next数据项的时候就很可能会多一次cache miss,而第二种定义更有可能在读取_key的同时next已经在同一个cache line中了,所以第二种定义更加cache友好。而实践也证明定义二的性能更好。 September 30 algorithm and logarithmPerson: What do you do? Me: I am a computer science professor. Person: I have a problem with my PC, can you fix it? Me: No, I don’t think I can do that. Person: You will not fix my PC? Me: I cannot fix my PC, let alone yours. Person: Then what exactly do you do? Me: I study algorithms. Person: Oh, I know that. Me: Really? Person: Yes! I learnt logarithms in high school. ---------------------------------------------------------------------------- Come from here. September 29 Solve a form of 0-1 programming using the minimum-cut modelThe following generic 0-1 programming form can be solved by finding a minimum-cut of a bipartite directed graph. Max{Sigma{A(i)*X(i)}+Sigma{B(i)*Y(i)}-Sigma{C(i,j)*X(i)*Y(j)}} (C(i,j)>0). To construct the network, first construct vertices one source S, one destination T, the left vertex set {X(1),X(2),...} and the right vertex set {Y(1),Y(2),...}, and add directed edges as the following rules:
August 06 About x*a+y*bGiven two coprime integers a and b and another integer n, is it possible that n=x*a+y*b for some non-negative integers x and y? We assume a<b. All integers in the form of x*a+y*b can be partitioned into a goups G[i]={ x*a+y*b | (x*a+y*b)%a=i } for 0<=i<a. Furthermore, it's obvoisly G[i]={ lower[i], lower[i]+a, lower[i]+2*a,...}. If r=n%a, we only need to check whether n>=lower[r]. We have lower[r] = min{ y*b | y*b%a=r } and it is can be calculated by the Euclid's algorithm. Moreover, becauce (a-1)*b=max{ lower[i] | 0<=i<a }, so (a-1)*b-a is the maximum integer which is not in the form of x*a+y*b. August 02 A simple linear time algorithm for finding longest palindrome sub-string Given a string S, we are to find the longest sub-string s of S such that the reverse of s is exactly the same as s. First insert a special character '#' between each pair of adjacent characters of S, in front of S and at the back of S. After that, we only need to check palindrome sub-strings of odd length. Let P[i] be the largest integer d such that S[i-d,...,i+d] is a palindrome. We calculate all P[i]s from left to right. When calculating P[i], we have to compare S[i+1] with S[i-1], S[i+2] with S[i-2] and so on. A comparison is successful if two characters are the same, otherwise it is unsuccessful. In fact, we can possibly skip some unnecessary comparisons utilizing the previously calculated P[i]s. Assume P[a]+a=max{ P[j]+j : j<i }. If P[a]+a >= i, then we have P[i] >= min{ P[2*a-i], 2*a-i-(a- P[a])}. Is it the algorithm linear time? The answer is yes. First the overall number of unsuccessful comparisons is obviously at most N. A more careful analysis show that S[i] would never be compared successfully with any S[j](j<i) after its first time successful comparison with some S[k] (k<i). So the number of overall comparisons is a most 2N. June 22 今年第一次下水下午去省体游泳了,门票竟然涨到了30人次。泳池一端的浅水区照例挤满了只泡澡的人们,导致泳道的有效长度至少减少了10米。与去年相比多了水线,但是不能扶,否则岸上的救生员会冲你猛吹哨子,于是剥夺了我趴水线的乐趣。与泳池阔别已久,100米的蛙泳就让我喘到不行。我的自由泳还是那么不着调,像是溺水的人在挣扎,既累又慢,不过放眼整个泳池。自由泳游得像样的就几乎没有。一口气潜水横穿泳池的愿望还是没能实现,还差一个泳道的距离。
June 20 巨蟹座:你今天心情不好吗 让你心情不好的原因之一想到不愉快的回忆 巨蟹对于"回忆"是无法免疫的,喜欢坐在摇椅上想以前的事,眼神从窗外延伸到好几公里外的远方,仿佛一幕又一幕的往事就在眼前上演,所有喜怒哀乐的情绪,在一时之间全部都涌上了心头,复杂得令人觉得快要窒息,可是偏偏巨蟹就是爱这种感觉。 问起嗜好或兴趣,有的人是运动打球,有的人是插花画画,有的人是投资理财,有的人是游山玩水,而巨蟹则是不断回忆、重温旧梦。 如果有人喜欢听老人家说故事,又同时有一个巨蟹阿婆,那可就幸福美满了,以巨蟹的功力来看,每天讲上好几个故事绝对没问题,不但内容不会重复,而且重点在于故事情节巨细靡遗,个个精彩好听,让听的人好像看了一部电影似的,回味无穷,很难忘怀。 心思细腻的巨蟹,对任何的人、事、物都很敏感,所以累积在巨蟹脑海里的记忆存量,理所当然会比别人还要多,一定足够巨蟹想它个千遍、万遍也不厌倦。 一般人的记忆,当然都是有好有坏,不管是童年趣事、和同学一起做过的丑事、值得骄傲的事迹、不为人知的恶作剧、恋爱时的酸甜苦辣、人生的喜怒哀乐,所有曾经经历过的事,都因为岁月而变得更加令人怀念,是一种欣慰,也是一种感动。 然 而,因为巨蟹的性格倾向悲观、钻牛角尖、想不开的类型,所以往往比较容易记得不好的事情,譬如说哪一个人曾经骂过自己、哪一阵子特别倒霉、哪一段日子穷到 没饭吃、哪一次的恋情被伤得很惨等等,诸如此类的负面回忆,总在午夜梦回的时候,从巨蟹的记忆里一个一个爬出来,像猛鬼出笼一般的可怕。 只要一有不愉快的回忆从脑海里冒出来,巨蟹就会陷入沮丧的痛苦之中,而更糟糕的是,巨蟹经常会因为某人的一个动作、听到某一首歌、看到某一个画面,就开始悲从中来,旁人都觉得莫名其妙。 因为巨蟹情绪化的毛病严重,所以除非是搞不清楚状况的人,否则很少有人会故意去挑起和巨蟹有关的不好回忆,以免造成一发不可收拾的局面,到那时候怎么劝都没有用,如果巨蟹不肯罢手,任谁也无法将巨蟹从悲情之中救出,罪过可就大了。 给你心情曼陀珠 既是回忆,就表示都是过去的事了,无论是甜美、是悲苦、是骄傲、是失败,终究不能再来一遍,就像人死不能复生的道理一样,对于无力改变的事情,难过和懊悔是没有用的。 巨蟹对于"回忆"这件事,实在是太执著了,而且偏偏老是选择执著那些一想到就会令自己不舒服的回忆。 或许曾经有一些人,之所以会存在记忆中,是因为他们令人觉得刻骨铭心;曾经有一些事,被留在脑海里,是因为它们难以被磨灭,这些都是不可能说忘就忘的,不过,这也正是巨蟹要学习"放下"的原因。 巨 蟹最容易害怕因为自己的能力不足、未知的突发状况而无法达到想要的目标,就好像一个决定要以运动来保持身体健康的人,还没有试着举起手,也还没有试着抬起 脚,就开始担心会不会努力运动之后,身体健康依然没有改善?会不会因为天气不好,而无法到公园跑步或打球?会不会因为运动方法不对,而造成运动伤害? 太多的会不会,导致不计其数的想法因为没有行动力而流产,巨蟹往往就是那个破坏自己计划的罪魁祸首。 回忆本身并不会伤人,如果巨蟹因为不好的回忆而一直深陷在不愉快的情绪之中,失去了向前走的动力,造成影响未来发展的情形,则后果必须自行负责。 每一个人都有控制回忆要用什么形式存在的能力,只要你勇敢地突破心防,一切悲伤、后悔、自怜的情绪都会烟消云散,你会发现真正的实际行动和学会忘记,并没有想像中的这么难。 让你心情不好的原因之二遇到感情问题 感情丰富且用情至深的巨蟹,一谈起感情来,认真的程度真是会吓坏人,有经验的人都知道,无诚勿试,除非对方能够承受得起这份爱情的重量,否则,还是不要随便招惹巨蟹才是。 谈恋爱对很多人来说,是一种自然的、神奇的、冒险的偶遇,在双方的心里,都有某种程度的把握和肯定,但是不可讳言的,也有未知与不确定的因素存在,能够有缘相识,就尽量好好地相处,如果有一天缘分已尽,也就不需要太过强求,免得双方都觉得痛苦。 但是对巨蟹来说,却完全不是这么一回事。谈恋爱,在巨蟹的观念里,是绝对不可以当儿戏的,那种绝不马虎的态度,就像我们印象中的爱情剧,男女主角总是在关键的时刻,用诚挚又带着一点请求的口吻说:"请以结婚为前提与我交往吧!" 然后,说出这句话的一方,会用双眸坚定地凝视着对方,脍炙人口的浪漫主题曲也同时响起,好一幅令人感动的画面,让人忍不住要帮男女主角加油,期望有情人终成眷属。 这就是巨蟹的爱情哲学,真诚以对,原汁原味。 可惜,爱情绝对不是一场公平的竞赛,两个人的付出很难能平等,在爱情的跷跷板上,双方永远都在找那个很难取得的平衡点。 付出的越多,不见得就能得到的越多,这时候,不懂得适可而止的一方,就容易受到伤害,巨蟹即是典型的例子。 巨蟹对于感情十分执著,一谈起恋爱来,就如飞蛾扑火一般,平时没什么行动力的巨蟹,这时候完全就变了一个人,不但什么都愿意做,胆小也变胆大了,只要是能为爱人牺牲奉献的事,多来个十件八件的,巨蟹也不嫌多,无怨无悔地接受和照办,可见识到爱情的力量有多么伟大。 诚心诚意的对待,当然就是希望能拥有一段甜美直到永远的感情。打从和对方谈恋爱的那一刻起,巨蟹一边全力以赴地在经营恋情,另一边早就在想着往后的婚姻生活要怎么过。 像这种在用生命的力量面对感情的人,最是无法接受恋情失败的悲剧,尤其是遇到巨蟹不想结束这段感情,但是对方又执意要分开的情况,对巨蟹来说,更是比死还要痛苦的折磨。 受到感情事件的创伤,巨蟹总要经过很长很长的一段时间才可能从悲伤中走出来,是很容易被感情伤害的人。 给你心情曼陀珠 该给巨蟹这位痴情人什么建议呢? 不要想太多,一切都会过去的,落花有意,流水无情,爱情总是无法勉强的,下一个情人会更好,不要以为全天下只有自己会遇到这种事,其实同病相怜的人很多……这些都是听起来不错,但是对巨蟹却一点实质的帮助都没有。 最有效的方法,还是坐而言不如起而行,逃离悲伤的世界,走向人群,去接触不只有爱情的环境,一切的情况才会真的不同。 用倾诉来发泄是一种方法,在感情刚出现问题的那一段时间,巨蟹可以借着向朋友诉说,一点一滴地把压抑在心里的自责、悲苦宣泄出来。因为负面的情绪不可能一刀两断,就此一了百了,相反的,如果不在第一时间彻底地处理干净,日后很可能要为残存的记忆付出更大的代价。 在倾诉的过程之中,巨蟹可以适时地释放情绪,要大哭大笑都可以,重要的就是把对于这一段感情的所有感觉都说出来,因为当自己在叙述的时候,就像是在为不愉快的心情找出口,同时也为自己的想法找到一个合理又对自己有帮助的解释。 另一种方法,就是不要独处,多和不同个性的人相处,转移自己的注意力,用最快的方法重新找到一个精神的寄托,而这个寄托不一定是另一个人,也有可能是培养自己其他的兴趣,或是花时间进修,甚至是去当义工,把空出来的精力去帮助更多需要帮助的人。 帮助别人是巨蟹很拿手的事,但是在自己有难在身的时候还能帮助别人,更具意义,不但可以学到不同的经验,也能体验不同的生命价值。 让你心情不好的原因之三处在不安全的环境 巨蟹平时没事的时候,一定不会抛头露脸地在外面游荡,喜欢躲在自己的家里,因为外面有太多的风险和意外,这些随时可能遇到的危险,对巨蟹来说,都是生命中不可承受之轻,只要一跟外界接触,就会让巨蟹呈现紧张状态,不自觉地拿出两只大夹子来防御别人,也同时保护自己。 巨蟹在天生的性格里,就是一个极度缺乏安全感的人,在任何一个陌生的环境里、和陌生的人相处、做一件陌生的事,都可能造成巨蟹心里的恐慌和不知所措。 当巨蟹处在不安全的环境里,会严重影响情绪,这是肯定的,但是这里所谓的“不安全”,其实指的是巨蟹自己的定义,譬如说不熟悉、不喜欢、不愿意的,都是被巨蟹归类为不安全,说得贴切一些,就是会让巨蟹觉得不舒服、不自在的人事物都算是。 想要和巨蟹混熟,要有两个条件,一个是慢,另一个则是用心。 容 易想太多的巨蟹,如果无法信任对方,两个人就不可能有什么交集。一开始巨蟹会用保持距离的方式和对方相处,把两只眼睛从身体里稍微探出来,像是人躲在门缝 里偷看的样子,先观察对方的个性如何、会不会用不好的手段伤害自己、想和自己交朋友的目的是什么,把这些问题都搞清楚之后,才可能有进一步的发展。 这也是对方初步取得巨蟹信任的讯息,表示巨蟹不排斥认识这个人,愿意给对方了解自己的机会。 第 一阶段的观察和试探全部完成之后,铁定是耗时已久,如果对方的诚意不够或耐心不足,在这些过程之中,可能早就举白旗投降,表明自己不想再玩下去,这就是为 什么想和巨蟹当朋友或成为恋人的人,一定要懂得以时间换取空间的策略,否则连第一关都过不了,怎么取得巨蟹的信任,而无法取得巨蟹的信任,就根本不必再谈 以后了。 除了速度不能快之外,还必须拿出真心,因为巨蟹是很专情的,无论在友情或爱情上的态度皆是如此,绝不是速食主义的拥护者。甚至应该说,巨蟹在情感上的观念是十分传统的,不可能用随随便便的心态去看待任何一段人与人之间的情感,这对于巨蟹来说,可是犯大忌的。 巨蟹想要测试一个人的诚意,是这么的烦琐和慎重,当然就容易有患得患失的心情,要付出或不付出,要接受或不接受,巨蟹都要经过反复的思考和取舍,在这样的过程中,也就是造成了巨蟹极度不安的情绪。 给你心情曼陀珠 如何才能解除不安和防卫的心理,是巨蟹必须去面对的人生一大问题,只要这些问题没有了,就像打通任督二脉一样,全身舒畅,从此之后的人生,快乐会多一点,痛苦会少一点。 在每一个人的身边,每天都会遇到许多不同性格的人,不管是认识或不认识,都可以成为自己学习的对象。 在这些人之中,一定有脾气暴躁又没耐性的人、开朗乐观的人、懒惰的人、积极进取的人、做事有效率的人……,这么多个性完全不一样的人,到底是什么原因让他们凑在一起?既然在性格上有所冲突,为什么还是可以成为好朋友?巨蟹该用什么样的心态看待和自己个性不同的人? 譬 如说当你看到开朗乐观的人,就是一个很好的学习对象,想办法主动接触对方,和对方聊天,听听对方看事情的角度,以及处理事情的方法,你一定会有许多惊讶发 现,原来可能是自己以生死来看待的大事,在别人的眼中是这么微不足道;原来可能是自己一生无法放弃的,在别人的心里却是可以淡然以对的。 比较之后,自己与别人的许多差异,会对巨蟹产生极大的冲击,不过,这是正常的,千万不要因为害怕而退缩,反而要趁这个难得的机会,再接再厉去突破自己的心防,勇于接受一个新的观念和方式才对。 许多的问题,都值得巨蟹去研究和深思,在了解的过程当中,就会发现许多有趣的现象和道理超乎自己原来的想像,以前被自己既定的性格特质所限制,所以有盲点,现在懂得见贤思齐、见不贤则思诫,不但可以跳脱原本的藩篱,更可以开阔自己的视野,找到一条全新的方向。 巨蟹座:教你把握好自己 你可能遇到的陷阱之一心情不好时遇到坏人 巨蟹很容易被情绪影响,感情是如此,人际关系是如此,工作也是如此,整个人生都逃脱不了“情绪”的魔咒。 心情的作用对于一个人的重要性,就如同阳光和雨水对于植物的重要性一般。有了充足的阳光,但是没有丰沛的雨水来滋润,植物会因为干涸而死;有了足够的雨水,但是没有温暖的阳光,无法进行光合作用,植物一样无法存活。 心情可以左右你对一个人的看法,也可能影响你对一个决定的判断,巨蟹如果时常让自己停留在不稳定、担心受怕的情绪之中,而无法适时抽离,那么未来的人生就值得堪虑了。 心 情不好的时候,必定会失去判断力,不论这个人平时表现得多么理智,当自己的意志不够坚定、脑筋不够清楚的时候,好坏不分、是非颠倒的毛病应运而生,往往再 事后回想起这个时候的行为或决定,都会觉得不可思议,不知道自己究竟是着了什么魔、被什么力量所牵引,竟然会让自己变得如此鲁莽愚昧,做出这么令人悔恨又 无法弥补的事情来。 巨蟹就是时常深陷在这样情绪之中的典型人物。 巨蟹绝对不是笨蛋或是能力不足,只是容易被自己软弱的意志以及不安定的心情所害,尤其当自己正忙着整理低落的情绪,无暇顾及其他的问题时,有人恶意地针对巨蟹的弱点下手,趁虚而入,对巨蟹来说,无疑是雪上加霜。 平时最会保护自己的巨蟹,那两只兼具防御和攻击的大夹子,在这个重要的时刻,却完全失去作用,一时之间变成了一个外表虚张声势,其实内心惊吓不已的装饰品。 敌人要进行攻击或破坏的行动时,当然喜欢挑选对方最脆弱、没有防备的时候,根本不必大张旗鼓,只要略施小技,就能轻易击败对方,打赢这一场仗。战胜的主因,并不是攻击者本身的战斗力有多么强,或是战术有多么高明,完全是因为对方处于未备战状态,让敌人有机可乘。 巨蟹无法掌控自己的情绪,忽高忽低,忽冷忽热,不是太过热心地帮助别人,就是把自己关在家里足不出户,被心情奴役了自己的身体和行为,所以会有失控的表现。 远离衰运的方法 保持冷静的头脑,对巨蟹会有很大的帮助,就像近视的人,戴上眼镜和不戴眼镜,所看到的世界是完全不同的。 每个人在一生之中会遇到不好的人或不幸的事,几率都是差不多的,巨蟹并没有比别人倒霉或坎坷,只是因为不同的人会用不同的方式去解读,也会用不一样的态度去面对。 同样一件事在别人看来没什么,但是巨蟹却可能耿耿于怀,一直无法放下心中的疑虑,最后当然会因为过度的自寻烦恼而真正招来不幸。 虽然防人之心不可无,但是也要防对时间才有具体的效果。 在应该放开心胸、广纳各方意见的时候,就不要死守在自己围起的铜墙铁壁里作茧自缚。因为没有阳光的照射,空气会变得湿冷,气氛也会显得阴森;没有和风的吹 拂,幸运的好磁场就不会存在;没有新鲜的刺激,就无法改变旧有的模式,学习掌握自我情绪的变化,才能冷静地面对所有的问题。 没有行为控制能力,以及没有情绪掌控能力的人,没资格谈未来,因为你的一切都只能随着偶然的机运、局势的改变,或是别人的帮忙才会有所变动,说得严重一点,就是坐以待毙的感觉。 有好的机会,不见得懂得把握,有坏的事情,却一定会登门造访,因为恶魔看准了你的不安、懦弱、感情用事,等着把你推向火坑。 巨蟹不要再把所有的精神都放在“别人会怎么想”这件事情上,应该反求诸己,卸下武装的心,想想“自己到底在担心什么?”“自己要的是什么?”赶快放下心中的那一块阻碍自己成长和进步的大石头吧! -------------------------------------------------------------------------------------------------------------------------------------------------- 你可能遇到的陷阱之二疑心病太重 巨蟹之所以会有疑心病,是因为无法轻易信任别人的关系,随时保持高度的警戒状态,怀疑别人对自己的动机,怀疑哪一件事情的发展可能不是那么单纯,怀疑哪一个人是不是很讨厌自己…… 反正巨蟹光是自己坐在家里想,就可以找到几百个可疑的人或事物,从一开始就乐此不疲,如果又加上事实的发展恰巧如自己所料,巨蟹就更容易走火入魔,变本加厉地全面行动,从大的现象到小的蛛丝马迹,巨蟹都不会放过。 偏偏巨蟹有大胆怀疑的习惯,却没有小心求证和智慧判断的本领。 一般人如果遇到心里有疑虑的时候,要不就坐下来好好地研究应该用什么方法来找出答案,要不就去找相关人士问个清楚明白。 但是巨蟹则完全相反,不但不会着手调查,也不会问别人有什么看法,更不会想出什么具体的办法,只会用土法炼钢的巨蟹模式,一个人躲起来,想它个三天三夜,等 到大家问巨蟹想出什么答案了没,巨蟹会满脸疑惑地回答一句:“我怎么想都觉得他实在没有道理这么做,可是我还是觉得他怪怪的,一定有什么隐情?”听了真是 令人为之气愤。 巨蟹喜欢用感情来作为维持良好人际关系的筹码,喜欢用情绪来面对生活上的变化,一生都被“情”字牵绊,十分可惜。 因为缺乏理性的判断和冷静的头脑,所以当巨蟹在需要别人帮忙的时候,也会用情谊来作为交换的条件。然而,许多事情如果 夹杂了情感的因素,只会变得更复杂而不会变得更单纯,就在这一来一往的情感债务之间纠缠,巨蟹前面那一件事还没有搞定,就又惹了一堆麻烦上身。 明明大伙儿在一起谈天说笑,巨蟹总是会冷不防地给大家来一段悲情苦楚的戏码,譬如本来脸上还堆满笑意的巨蟹,突然暗自地啜泣,好像被人欺负似的,当在场的人 都还没问清楚发生了什么事,巨蟹就哭着离开现场了。事后追问,才知道原来巨蟹是被某人不经意的一句话给气哭了,然而当事人根本没有恶意,完全是因为巨蟹自 己对号入座,想得太多了。巨蟹原本就有一种庸人自扰的天性,再加上疑心病太重,常常搞得自己灰头土脸,到最后不是白忙一场,就是得罪更多人。 以旁人的角度来看巨蟹的这些行径,是既觉得心疼又无力干涉,明明觉得巨蟹是一个大好人,可是却因为怎么劝也不听,所以只好任由巨蟹自己去面对问题了。 远离衰运的方法 巨 蟹不要老是想着全世界的人都想陷害自己,其实在现代凡事讲求快速而有效率的世界里,要成为一个被陷害者,也要看看本身有没有那个价值,你没听过杀头的生意 有人做,赔本的生意没人做吗?没有人有那种闲工夫,把陷害别人当做是一种无聊的消遣,总是要有一些目的才会选择这么做的。 巨蟹应该仔细地思考一下,自己真的有被利用的价值吗?如果没有,就不必自己吓自己,把自己弄得紧张兮兮,不但一点好处也没有,次数多了反而会让自己变成过街老 鼠——人人喊打。 就像我们小时候听的故事“狼来了”一样,第一次会引起大家的注意和关心,第二次也会,第三次可能还会,第四次就要看运气了,到了第五次,如果没被揍就算你走运。 另外,培养自信心也是防止疑心病的好方法。 一直觉得自己的势力范围会受到别人的侵犯,或者总是认为别人会诱惑自己的爱人,这是一种自然防卫的心理,也是一种没有自信的表现。 因为觉得自己的实力比不上掠夺者,所以会因为担心而产生排斥,尽管对方根本没有攻击的征兆或动作,自己也会天马行空地胡思乱想,就像编故事一样,过程紧张刺激,内容精彩万分,只可惜就算等上一百年,也不能在现实生活中发生,说起来真让人觉得可笑。 巨蟹有“被害妄想症”吗?其实,并没那么严重,但是要如何证明给大家看,那就要看巨蟹怎么说服自己敞开心扉,用健康而理性的态度去面对人生了。 ------------------------------------------------------------------------------------------------------------------------------------------------------------ 你可能遇到的陷阱之三过于保护自己 人有防备心是本能的表现,没有什么好大惊小怪的,这是人之常情。不过,若像巨蟹这样把自己保护得密不通风,日子久了,渐渐失去对外的抵抗力,就不是用人性本能可以解释的了。 以 养育小孩来说,有着不同生活习惯的国家,就有不同的方法。中国传统的方法,小孩喝热热的牛奶是天经地义的事,从小就穿很多的衣服以预防感冒,是不变的法 则;但是西方国家则有截然不同的方式,小孩一出生就喝冰牛奶,想要保持体力或维持身体的健康,是靠运动来改变体质,而不是用厚重的衣服来做表面的保护。 两位同时在学走路的小朋友,其中一位小朋友的父母,采取自立自强的方式,在学习的过程之中,除非状况十分危险,否则绝不会去扶小朋友,要 训练小朋友自己揣摩学习走路的感觉和方法。另一位小朋友的父母,则是呵护备至,不但在学习的环境里做了万全的防护准备,而且只要小朋友稍微重心不稳,就急 着跟上前去帮忙,舍不得小朋友有一丁点的意外发生。 这两位小朋友的父母,用不同的方式,表达自己对于小孩的爱,浓度一样,期望一样,可是结果却不一样。 前者的父母训练了一位坚强又能勇于面对挫折的小朋友;后者的父母训练了一位容易担心害怕又没有独立精神的小朋友。两者之间没有对错,只有“哪一种结果会比较好”的分别。 巨蟹过于保护自我的行为,就如同后者,终究会招致失败的结果。 当巨蟹处在钻牛角尖、剪不断理还乱的情绪低潮时,是一种对自己太过残忍的表现,不懂得爱护自己,一味地为别人付出,也不衡量是否值得,就猛往火坑里跳,以为这就叫做牺牲奉献。但是,当巨蟹处于太过保护自己、不愿意面对现实的时候,却又让人觉得很不可爱。 不管从哪一个角度来看巨蟹,都不可能把自私自利这个形容词用在巨蟹的身上,因为巨蟹总是以温暖、亲切、常常帮助大家、喜欢照顾大家的“妈妈”角色出现在大家面前,会让巨蟹有自私的性格表现,一定是因为过于保护自我的心理作祟,而发酵成为不好的结果。 自我保护色彩太过浓重的人,不会有好的发展或大的成就,因为自己不想跨出第一步,当有人想伸出援手时,又不得其门而入。巨蟹因为害怕受伤而选择用预设立场来保护自己,却也可能因此赶走了难得的好机会。 远离衰运的方法 遇到问题的时候,如果只会选择用保护自我的方式来面对,基本上,也代表着一种逃避责任的意味。 要说巨蟹是一个不负责任的人,那倒不至于,但是在某些重要的关键时刻,巨蟹的确会有一些出人意料的行为,譬如说问题闹得太大,超过巨蟹能够处理的范围,所以干脆弃之不顾,留下烂摊子让别人来收拾。 巨蟹本身柔弱的性格的确占了太大的部分,所以当现实又残酷地把困难摆在眼前的时候,巨蟹会毫无招架能力,除了惊慌和哭泣,就只能像一只待宰的羔羊,没有反击的能力,也不可能反败为胜。 要打破巨蟹因为脆弱和没有自信而导致的自我保护意识,最有效的方法,就是让巨蟹学习独立的能力,以及训练自己具有坚志的意志力。 巨蟹要知道如何不会轻易地被挫败和困境给打倒,在身处绝境的时候,能够擦干惊吓的眼泪,不在乎流血的伤口,拿出视死如归的勇气,从逆境中争取权益,学会一套实用的生存哲学。 巨蟹不要老是觉得挫折像是洪水猛兽,只具有让人痛苦的杀伤力,其实认真地思考和体会,才会发现经过挫折的洗礼,人生的经验才是完整的,在学会坚强之前,是不可能了解那种由苦变甜、渐入佳境、从逆境中重生的喜悦的。 不经一番寒彻骨,哪得梅花扑鼻香,哪一个人的生命中不会有悲伤、辛苦、失败、磨难……老天不会对巨蟹特别眷顾,也不会只看巨蟹不顺眼,你觉得很痛苦的事情,一定还有人的遭遇比你还要惨,不要只是顾影自怜,还是多多把握时间,锻炼自己的坚强实力吧! 巨蟹座挑战成功的7堂必修课 第1堂课突破 很多人常常会被自己的习惯和旧有观念所阻碍,遇到问题时,喜欢用惯有的直接反应去思考,最常听到的说法就是“以前就遇过这种状况了,这是不可能成功的啦!”总是有这种想法的人,没有资格挑战成功。 曾经,在欧洲有一个乡下人,想要进城里去找人,但是因为他太穷了,没有钱搭火车,所以想用偷搭的方式。他选了一班载渔货的火车,在火车快要开动的时候,快速 地跳上了最后一节车厢,才一坐下,他就听到车厢的门被外面的人锁上了,在黑暗里,他用手电筒照了一下四周,才惊觉这是一个像车厢一样大的冷冻库。 呆坐了10分钟之后,他想不出任何的办法逃出去,也就是说如果在他还没有被冻死以前,刚好有人打开冷冻库,才有机会发现他,否则……等了30分钟之后,他觉 得希望越来越渺茫,而且身体越来越冷,于是他开始写遗书,描述他在冷冻库里的心情,以及当温度一度一度地往下降时,他身体的感觉是什么。 火车到了城里,当工作人员打开冷冻库发现他时,已经没有生命迹象了。可是事后工作人员发现冷冻库的开关根本没开,也就是说冷冻库的温度和其他车厢的温度是一样的,这个人并不会被冻死。 一个人想要战胜困难达到成功,第一件事就是要学会突破,总是陷在自以为是的迷思里,会让自己错过许多珍贵的机会。 第2堂课胆量 有胆量的人,心胸比较宽大、坦然,而且具有正义感,做事有担当,不会一遇到麻烦的时候,就躲起来不负责任,有一种天不怕、地不怕的过人性格,在团体之中非常突出。 这里说的胆量,不是看一个人是否够大胆,敢一个人去看恐怖片或惊悚片,而是在与别人应对或处理事情的时候,能够清楚地表达出自己的想法和看法,即使是遇到故意挑毛病的人、脾气不好的人、没品格的人,都有胆量去面对,不畏强权的欺压,不会被不公平的事情打败。 一个人的胆量够大,就表示这个人的性格之中,有着一份让人喜欢的率真,不会隐藏自己的秘密,有话直说,有事明讲,不耍心机,更不会拐弯抹角地说话,和这一类的人在一起,会觉得心情很舒畅,而且有被保护的感觉,遇到危险的事也不害怕,勇于面对未知和未来。 在人群之中,大部分的人都属于表现平凡、不容易被发现的类型,会表现得特别好或特别坏的人极为少,而胆量够大的人,就属于少数人的一种,以致于常常被派作代表或是被推选为领导的人物,像是一位可以为了正义牺牲奉献、为民众争权益、豪气肝胆的民族英雄。 胆量可以让一个人犹豫不决、担心害怕的时候,在心里产生一些微妙的化学作用,因此而变得勇敢、有对抗的力量,不再只是蹲在墙角哭泣或发抖的小可怜。 胆量让一个小可怜变成一个气势不凡的巨人,不是因为外貌改变了,也不是个性变坏了,而是懂得不再为了不合理的事情忍气吞声,应该做自己该做的事、说自己该说的话,用自己的力量创造一个属于自己的人生。 第3堂课坚持 一个人空有一时的热忱是没用的,如果有好的开始,却没有坚持,就算机会再好,也是枉然。 你是否听到某人说:“从今天开始,我一定要学好英文,我已经报名英文补习班,而且花了好几万元,买了一套世界著名的英文学习教材,不久的将来,我的英文一定 会进步神速……”或是又有人发下狠誓:“我不再吃炸鸡、宵夜,所有的东西不是用水煮就是用清蒸,每个星期固定运动三天,每天一个小时,一定要在三个月内瘦 下来,一定要……” 我们经常在生活中,遇到常常把这些话挂在嘴边的人,甚至我们自己也是其中的一员。而所谓的“这些人”,如果你仔细观察,你会发现其实就是相同的那几个人。 这些人习惯把自己的目标放在心里、挂在嘴边,却老是不付诸行动。比光说不练好一点的人,或许会有三分钟的热度,一开始兴致勃勃地展开新生活,昭告天下,认真 宣誓,似乎一切的计划都是来真的,但是正当旁人想给予无限的祝福时,这些人却像泄了气的气球,早已忘了之前的信誓旦旦,放弃迎向美好未来的机会。 你是否发现许多成功的人,看起来未必是个个外表光鲜亮丽,说起话来口若悬河,做起事来敏捷利落,但是他却真实拥有傲人的成绩,原因就在于他默默耕耘,身体力行“说到做到,坚持到底”的哲学。 明明是大好的机会,却因为自己不够坚持,从此就错过了一生当中绝无仅有的机会,这种令人扼腕且悔不当初的惨剧,千万别让它在你的生命中出现了。 第4堂课行动力 坐而言不如起而行,行动力往往是夺得成功的关键。 口才很好,可以把死的说成活的,无论什么事都可以说得天花乱坠,仿佛自己是世界第一,这样的夸大其词,或许在与陌生人见面之初,可以把大家唬得一愣一愣的,但是路遥知马力,日久见人心,日子一久,狐狸尾巴终究会不小心露出来的。 只知道光说不练的人,最不得人心,大家也不是笨蛋,被骗一次之后,就会开始有戒心,对于这种人的话,从此大打折扣,损失的还是自己。能够取得别人的信任不容 易,除了要忠实、诚恳、负责任之外,还要真正地付诸行动,才能算大功告成,只要缺这临门一脚,所有的努力都会化成乌有,因为再怎么完美的计划,一定要实行 才算数。 行动力佳的人,是抢得先机的高手,很多人倾毕生之力去经营一个大计划,最后莫名其妙地失败了,很大的原因可能都是没有行动力造成的。 明明应该是人人看好、十拿九稳可以成为最后的胜利者,但是可能因为自己太过优柔寡断、太在乎别人的眼光、不懂得把握行动的好时机,导致自己的脚都还没有跨出去,已经有人捷足先登地站上胜利者宝座。 会产生这种结果不是自己不能,而是因为没有抢先一步,就被成功远远地抛在脑后,让人觉得特别的气愤和惋惜,可是又怎么样呢?事实胜于雄辩,大家都是看结果,谁会管你平时表现如何,这就是一场比谁动作快的残酷竞赛。 行动力的快慢在这个时代里,更是决胜的必备条件,不要以为自己万事俱备,如果没有“行动力”来扮演东风的角色,还是会一事无成的。 第5堂课判断力 在生活中,许多人都有因为判断力不够而误事的经历,有时候本来想要快快地处理一件事,没想到最后的结果反而是延迟了。 有一个老板一早到了办公室之后,想起今天是女儿的生日,他检查了一下今天的行程,才发现一整天的时间都排满了。现在,他就要赶着外出,到客户的公司去谈事 情,所以他急忙交待秘书帮他买一个给女儿的生日礼物,“麻烦你今天帮我买一个给四岁小女孩的生日礼物,价格大概在五千元左右,你买回来之后,放在我的办公 室就可以了,晚上八点左右,我会回公司拿,谢谢你,我要出去了。” 老板忘记这位秘书才来三个星期,不是以前那个对自己的家人、生活习惯、喜好稍有了解的资深秘书,他等于为这位秘书出了一个大难题。于是秘书开始向同事打听一些线索,并且花了不少时间研究,到底应该买什么礼物会比较好,生怕把这件事搞砸了,老板会觉得她办事不力。 到了下午五点半,秘书终于把礼物买回来。可是,她突然发现今天有一件很重要的事还没有处理,于是急忙赶工,不知道今晚加班是否能处理完毕。老板大约八点回 来,看到秘书还在工作,问:“咦,你还没下班啊?”秘书把一天的行程告诉了老板,这时,老板才恍然大悟地发现自己下错判断,造成秘书的困扰。 很多事情看起来很小,似乎微不足道,觉得应该不会有什么严重的影响,所以没有用心地去看待它,急忙下了一个决定,以为这样就可以解决问题了,没想到自以为会顺利进行的事情,却才是错误的开始而已。凡事一定要经过冷静的思考和审慎的评估,才可能有正确的判断力。 第6堂课气度 一个人之所以能够成大事、立大功,就是因为他们有非凡的气度,不管遇到什么情况,他们都能做出最适当的应对,不会因为自己高高在上、有权有势,就仗势欺人或 是作威作福,不给别人好脸色看;相反的,他们会比别人更谦虚、更懂得有容乃大的道理,因此他们能够创造伟大的成就,成为世代子孙学习的榜样。 中国宋朝宋太宗时,有一位叫做孔守正的人,被封为殿前都有虞侯。 有一天,他与一些大臣在宫里,陪着皇上喝酒闲谈。可能是喝多了,孔守正有了醉意而不自知,说话的声音越来越大,而且跟另一位大臣王荣,在皇帝的面前,开始争 论起守卫边境时,各自所立下的汗马功劳,究竟谁的功勋比较大,两人争得面红耳赤,态度凶恶,完全无视皇帝的存在,失去了礼仪。 以古时的法令,这是“对皇帝大不敬”的罪名,其他在场的陪臣,请求宋太宗把孔守正和王荣送交有关部门论罪,但是宋太宗并没有同意。等到第二天两人清醒之后,一同到宫里向宋太宗请罪,宋太宗说:“喔……真有此事?可能我那时也喝多了,当时的情形都模模糊糊不记得了。” 这就是气度,得饶人处且饶人,谁没有犯错的时候呢?知错能改,善莫大焉,不管被冒犯的人是达官显贵,还是平民百姓,都应该学会包容,尤其当对方不是要故意犯错的时候,更要给对方改正的机会。 一个人想要成功,往往都需要很多人的协助,但是“这个人”有什么值得别人为他付出的特质吗?答案就是“气度”。有气度的人,能够抓住人心,能够忍一时之气,赢得最后的胜利。 第7堂课计划 预防胜于治疗,等到闯下大祸,再想办法解决,不但费时费力又费工,还不一定能得到满意的结果,事前的计划和防范是很重要的。 不是所有的计划都像一般人想得那么严肃,也不是只有在工作上出现的业绩表、简报、工程计划、营业目标等等,这种听起来挺吓人的表单,才叫做计划。 计划应该是被运用在日常生活上的,譬如全家打算在这个星期假日一起到郊外烤肉,这就是一个计划的好机会。 首先你要规划交通工具的问题、应该几点出发比较合适、分配每一个人所负责的工作、需要带的食物和烤肉用具、要注意气象报告说的天气变化……用一张纸把人、 事、时、地、物,全部都记录下来,准备好了就打勾,在出门前一一检查是不是一切齐备,这就是一个既生活化又实用的计划了,很简单吧,一点都不难。 只要事前做好万全的准备,就不致于发生没有效率或不愉快的结果,你想想,全家假日一起出游烤肉,是一件多么轻松快乐的事,可是如果因为没有做好规划,很可能 交通出了状况,延迟到达的时间;很可能忘了带生火用具,以致败兴而归;很可能不注意天气预报,最后只能落得在家烤肉的下场,一点点的差错,就可能让一件美 事,变成一件惨剧。 计划对于个人的小事,可算是有不小的影响,何况是关于公司或是国家的大计划,那可是攸关许多人生命财产的安危和保障,马虎不得。 事前计划看似麻烦,但是实际上它才是既可有效达到目标,又最省时省力的绝佳方法。 巨蟹座面对失败的7堂必修课(ZZ) 第1堂课乐观 乐观的人,知道人生快乐的秘诀;乐观的人,不容易被失败打倒;乐观的人,有夺得成功宝座的最大本钱。 阿婆有两个女儿,两个人都是做生意的,大女儿卖雨伞,小女儿卖鞋子。有一天阿婆坐在自己的家门口哭了起来,邻居看了赶紧问阿婆发生了什么事,为什么如此伤心,阿婆说:“这几个月一直下雨,大家怕鞋子弄脏,都只穿旧鞋,那么我的小女儿生意一定很不好,她要怎么生活啊?” 过了一阵子,阿婆又在家门口伤心地哭了,邻居看了,再次跑来问阿婆为什么哭,阿婆说:“这几个月一直出大太阳,天气这么好,大家不必买雨伞,那么我的大女儿生意一定不好,她要怎么生活呀?” 有一个人看阿婆这么伤心,于是跟阿婆说:“你为什么不反过来想呢?天气好的时候,小女儿的生意很兴隆;下雨的时候,大女儿的生意很不错,你的两个女儿的日子都过得不错啊!你还有什么好担心的呢?” 两个人一起到沙漠旅行,全程的长度是1000公里,走到500公里的标示处,悲观的人说:“唉,我们才走了一半,还有500公里的路要走。”乐观的人则说:“你看,我们已经走了一半,只剩500公里了。” 同样的一件事,从乐观和悲观的角度来看,就会产生不同的结果和效应。而往往快乐和悲伤只在于一念之间,事实的情况没有任何的改变,不同的只是你对于它的看法和解释。 第2堂课冷静 冷静能让你变得幽默,冷静能让你更加宽容,冷静能让你远离罪恶,冷静能让你不被名利所奴役。 多少人在犯下罪行时,理由都是“一时冲动”。好像所有的过错,所有被伤害者的痛,就在这么简单的一句话里一笔勾销,这些无法弥补的遗憾,只是因为犯罪者一时失控、不够冷静所造成的,多么不值得。 一次英国的国家足球队,背负着国家的声誉,以及连败三年、务必雪耻的重责大任去比赛。比赛开始,英国队果然不负众望地一路过关斩将,眼看就剩最后一场的决赛,如果赢了,一雪前耻,可以大肆庆祝,如果输了,可能再也无法进入国家队了。 这是一场硬战,前三年都是败给同一支队伍。在最后这场决赛之前,有记者访问英国队的队长:“还差十分钟就要进入决赛了,你现在是什么心情?”队长说:“十足的把握,一定要赢!”“你有什么夺得冠军的秘诀?”“冷静,冷静,再冷静!” 决赛开始,两边的球员都以蓄势待发的气势,准备打赢这一场比赛,双方支持的球迷,个个凝神注视,连眼睛都舍不得眨一下,生怕漏掉哪一个经典画面。在一阵你来我往的较劲之后,比赛终于结束,成绩揭晓,英国足球队夺回冠军宝座,再次成为全世界瞩目的足球英雄。 冷静的人,比别人多一份智慧,行动更快、更敏捷,判断力更强,在最有利的时间点,抢得先机,不会因为对方的块头大或拳头大,就被强势打倒,也不会因为对方有钱有势,就自曝其短,更不会因为自乱阵脚,而将胜利的皇冠拱手让人。越是冷静,就越不会向失败靠近。 第3堂课想法转变 有一个很有名的公案,因为深入浅出而且读起来很有意思,所以广为流传,讲的就是如果一个人的想法懂得转变,那么一切事情的发生,就会有不同的解释和意义。 金代禅师很喜欢兰花,平日除了讲经说法、修习禅坐之外,最大的兴趣就是种植兰花。有一天,金代禅师要外出一段时间,临行之前,跟一位负责园艺的弟子说:“我要出远门了,你要好好照顾那些兰花。” 金代禅师出门之后,这位弟子每天都遵照禅师的交待,悉心照顾兰花。有一天,弟子如往常一般,要为兰花浇水施肥,但是却一个不小心碰倒了兰花的花架,兰花盆从架上掉下来,于是散了一地的兰花。 弟子一看到这个景象,简直吓坏了,不知道如何对禅师交待,心里非常恐慌。几天之后,金代禅师回来了,知道了事情的经过,便召集弟子们,不但一点责怪之意都没有,反而说:“我种兰花,一来是希望用来供佛,二来是为了美化环境,并不是为了生气而种兰花的呀!” 打破兰花盆的弟子,担心了好多天,现在听了金代禅师的教诲,不但因此松了一口气,而且得到一个宝贵的启示。 很多事情的好坏,都不是绝对的,如果以责任感来判定,弟子既然受人之托,就应该忠人之事,没有把事情做好,就表示未尽到责任;但如果以诚心接受的观点来看,弟子已尽全力地去照顾兰花,虽然不小心打破了花盆,但是顶多被告诫下次不可粗心,而不该被冠上不负责任的罪名。 遇到挫折或困境的时候,想法容易陷于悲观、消极之中,最需要转一个弯思考,将会让你有意外的收获。 第4堂课发泄 人的一生中,谁不会遭遇失败?答案当然是没有。 失败乃兵家常事,痛苦乃凡人常有,谁也逃不过,而且老是想一些躲避的办法,只是消极地应对,永远都不可能结束不愉快的经历,一点积极的意义也没有。 当成功之神无法眷顾、失败之魔又挥之不去的时候,怎么样让自己勇于面对所有的问题和困境,才是重点。 一个人的想法和情绪,是影响他所作所为的关键,而一个人的选择和行为,又是决定胜负的关键,所以追本溯源,每一个人都应该拥有健康的心理,以及正常的情绪,才能在失败来临的时候,使尽全力去抗衡。 那么,应该怎么做才能使自己有一个健康、开朗,又不怕面对失败的心情呢?最简单又有效的方法就是适时发泄。 很多人因为压力、求好心切,造成神经紧绷、情绪低落,更严重的是因而让身体健康亮起了红灯,而身体一旦出现问题,也就连带影响了自己的思考速度、行动能力和正确的判断,当然离成功之路是越来越远了。 懂得发泄自己情绪的人,才是聪明的人,因为所有问题的根源,都出自于自己的观念和想法,即使常常让人觉得痛苦的事,都有外力因素的干扰,导致不好的后果,但是你终究才是事件的主角,如果无法学习自救,不管别人怎么劝、怎么帮,都是没有用的。 多培养自己有兴趣的事,觉得心情不舒服的时候,可以找家人或可靠的朋友聊一聊,发泄自己心中的闷气,因为这时候最容易钻牛角尖,如果没有利用其他的方式转移注意力,一定会恶性循环,难有翻身之日了。 第5堂课创造机会 人生不如意事十之八九,没有人不曾遭遇失败,而一个人要学习的不是如何逃避失败,而是当失败来临的时候,应该怎么去面对。 “创造机会”就是具体而有正向意义的一种做法。抓住机会,就等于让自己有再一次成功的可能。 亚历山大大帝出生于马其顿首都,他在20岁的时候就登基为王,曾经率兵征服小亚细亚、埃及、波斯及印度等国,建立了横跨亚、欧、非三洲的大帝国。 有一天,当亚历山大又战胜一役,光荣回国,有人问他:“你觉得这次的战役之所以会获得胜利,是不是因为你等到了一个很好的机会去进攻才成功的呢?”亚历山大听了,勃然大怒地说:“机会是要每一个人自己去创造的!” 机会不会说话,也不会表态,它或许是在生活中的某一个角落,或许是在你和别人交谈时的一个动作,或许是在你集中精神专心工作的时候,它是无所不在的,当你认真而执著地想要追求它时,它就能得到你的感应,出现在你的眼前,让你去把握。 只会等待,就好像把自己的命运交到别人的手上,好坏无法预知,生死更是未卜。不知道什么时候,自己可以拥有财富、名望、成功,终日只是坐在家里等呀等,殊不知自己可能等到的是一个比现在更糟糕的苦难,浑然不知悲剧就要发生,还用醉生梦死的方式在生活。 常常把没有机会这个理由挂在嘴边的人,只能一辈子与失败为伍,永远享受不到成功的滋味。 第6堂课负责任 负责任就像是一种承诺,既然是承诺,就必须对委托人负责,而这个委托人可能是别人,也可能是自己。 时代的脚步快速,每一个人的每一天,都要面对很多的问题,看很多的资讯,吸收很多的知识,尤其必须和很多人接触。接触的时间总是短暂而匆忙,尽快地把话说完,尽快地把问题丢给对方,尽快地要对方承诺一个解决的方法。 就 在这一大串的“尽快”之中,很多人迷失了自己的节奏,只是在不知不觉中跟着对方的步调前进,随着对方的情绪起舞,一阵兵慌马乱之中,不小心答应了对方的要 求,等到事后平静下来之后,才发现自己答应了一个无法完成的任务。于是,决定来个不理不睬,或是假装忘记,反正就是不愿意承认当时的承诺。 所以,想要负责任的第一步,就是要先想清楚自己是否有能力接受这个任务,如果评估之后,答案是不能,就直接向对方说明并且婉拒,不要等到糊里糊涂接下之后又反悔不认账,这就是负责任的开始。 另一种不负责任的情况,是明知不可为又偏要为之。当有人委予重任的时候,你已经知道自己可能做不到,但是却又非要打肿脸充胖子,觉得拒绝别人很没面子,而且好像显得自己很无能,所以先不管后果如何,就先接下来再说。 没想到这一接下,果然就出问题了,延误对方的计划不说,还让自己的名誉扫地。要对别人负责任,也要对自己负责任,没有把握的事,就不要逞强;既然受人之托,就要忠人之事,不能马虎或逃避。 第7堂课忘记 没有人愿意失败,因为失败总是带给一个人痛苦、悲伤、害怕的回忆,所以大部分的人都是闻“败”色变,不知如何面对失败的低潮。 有的人之所以会不敢去摸温度较高的热水,可能是因为曾经被沸水烫伤过;有的人之所以不敢再结婚,可能是因为曾经有过一段暴力或不愉快的婚姻;有的人之所以不愿意谈论自己的身世,可能是因为本身的生长背景有缺陷。 大部分的人总是耿耿于怀过去不好的经历,所以容易触景伤情,看到相似的人或情境的时候,就会不自觉地又想起那一段不快乐的回忆;只要一有人提到相关的话题,就会无法克制自己的情绪,瞬间又掉入不可自拔的深渊,让痛苦的回忆不断消磨自己的意志。 为什么悲伤总是如鬼魅般的如影随形,难道一辈子都无法摆脱吗? 一而再再而三地让记忆伤害自己,即使在现实的生活中,事情早已成为过去式,但是你仍然不愿意放过自己,最后才发现那个让自己一直无法重新面对未来、不断在自己的伤口上洒盐的人,原来就是自己。 这都是因为遭遇失败经历的人,总是习惯回头看,却不愿意学习着忘记过去,向前看! 经 验,是你最真实的老师,它会提供许多宝贵的案例,让你知道如何让未来的人生活过得更有意义。遇到好的经验,我们应该保留,甚至加以调整、修改,让它变得更 好;遇到坏的经验,我们只需记取教训,切莫再犯,倒是不必有一朝被蛇咬、十年怕草绳的心态。只要经过检讨,就把不好的回忆忘记吧,因为往后还有更美好的未 来正等着你呢! June 18 星座决定性格?越来越相信星座决定性格了,难道是自然规律? “性格代表词语:我觉得“ ,这一条可真准啊! ------------------------------------ 巨蟹座(CANCER) 6月22日~7月22日 星座特征 非常需要爱与安定的星座。爱猜疑的个性,使他们在人生旅途上处处显得缺乏安全感。但是带着母爱光辉的巨蟹,为了所爱倒是心甘情愿的付出。 巨蟹座的人天生具有旺盛的精力和敏锐的感觉,道德意识很强烈,对欲望的追求也总能适度的停止。有精辟的洞察能力,自尊心也很强,同时也生性慷慨、感情丰 富,乐意帮助有需要的人,并喜欢被需要与被保护的感觉。大部份巨蟹座的人都比较内向、羞怯,虽然他们常用一种很表面的夸张方式来表达,但基本上他们是缺乏 自信的,也不太能适应新的环境。虽然对新的事物都很感兴趣,但真实却是很传统、恋旧的,似乎看来有些双重个性;如果换一个角度来看,他们只是对情绪的感受 力特别强吧! 巨蟹座是十二星座中最具有母性的星座,男性亦然。和善、体贴、宽容不记仇,对家人与好朋友非常忠诚。记忆力很好,求知欲很强,顺从性强,想象力也极丰富。 他们的守护星是月亮,所以只要观察它就可揣测出他们的心情变化;他们喜欢探索别人的秘密,却把自己隐藏的很好,并且从不放弃他所要的东西。 性格代表词语:我觉得 守护星:月亮(象征情绪和感觉) 守护神:希腊-阿特密斯 罗马-戴安娜 星座爱情 蟹子是典型女性气质星座,感情丰富又敏感,虽然他们总是装作坚强,一副不在乎的模样。尤其受到月亮影响,情绪变化让人无法理解。他们会如慈母般照顾对方,同样也需要情人呵护、疼爱的行动与保证。否则蟹子们很容易被“诱拐”出走。 巨蟹经常表现得很吊诡,缺乏安全感;所以他们需要一个安全温暖的窝,和一双坚强的臂膀,还必须让他们有被爱的感觉,切记哦!要他们有感觉才行! June 04 A beautiful final strike:)March 24 A book listBook List for Algorithms and Data Structures Summer 2008 Kurt Mehlhorn and Raimund Seidel August 18, 2008 1. General Books [1] K. Mehlhorn and P. Sanders. Algorithms and Data Structures: The Basic Toolbox. Springer Verlag, 2008. [2] J. Kleinberg and E. Tardos. Algorithm Design. Addison Wesley, 2005. [3] R. Sedgewick. Algorithms in C, C++, Java, Part 1 – 4 (Fundamental Algorithms, Data Structures, Sorting, Searching). Addison-Wesley,200X. [4] T. Ottmann and P. Widmayer. Algorithmen und Datenstrukturen. Spek-trum Akademischer Verlag, 1996. [5] A. V. Aho, J. E. Hopcroft, and J. D. Ullman. Data Structures and Algorithms. Addison-Wesley, 1983. [6] D.C. Kozen. The Design and Analysis of Algorithms. Springer Verlag, 1992. [7] G.J.E. Rawlins. Compared to What? An Introduction to the Analysis of Algorithms. W.H. Freeman, 1992. [8] U. Manber. Introduction to Algorithms. Addison-Wesley, 1989. [9] J. van Leeuwen, editor. Handbook of Theoretical Computer Science: Volume A (Algorithms and Complexity). Elsevier, 1990. [10] K. Mehlhorn. Data Structures and Efficient Algorithms, volume 1: Sorting and Searching. Springer, 1984. 336 pages. [11] K. Mehlhorn. Data Structures and Efficient Algorithms, volume 2: Graph Algorithms and NP-Completeness. Springer, 1984. 260 pages. [12] K. Mehlhorn. Data Structures and Efficient Algorithms, volume 3: Multi-dimensional Searching and Computational Geometry. Springer,1984. 284 pages. [13] D.E. Knuth. The Art of Computer Programming (Volume I): Fundamental Algorithms. Addison-Wesley, 1973. [14] D.E. Knuth. The Art of Computer Programming (Volume II): Seminumerical Algorithms. Addison-Wesley, 1981. [15] D.E. Knuth. The Art of Computer Programming (Volume III): Sorting and Searching. Addison-Wesley, 1981. 2. Implementations and Software Libraries [1] K. Mehlhorn and S. N ̈her. The LEDA Platform for Combinatorial and a Geometric Computing. Cambridge University Press, 1999. [2] CGAL (Computational Geometry Algorithms Library). www.cgal.org. [3] LEDA (Library of Efficient Data Types and Algorithms). www.algorithmic-solutions.com. [4] CPLEX. www.cplex.com. 3. Graph Algorithms [1] R. Sedgewick. Algorithms in C++ Part 5: Graph Algorithms. Addison- Wesley, 2001. [2] R.K. Ahuja, T.L. Magnanti, and J.B. Orlin. Network Flows. Prentice Hall, 1993. [3] R. E. Tarjan. Data structures and network algorithms. In CBMS-NSF Regional Conference Series in Applied Mathematics, volume 44, 1983. 4. Algorithms on Strings [1] W. Rytter and M. Crochemore. Jewels of Stringology: Text Algorithms. World Scientific, 2002. [2] M. Crochemore and W. Rytter. Text Algorithms. Oxford University Press, 1994. 5. Approximation Algorithms [1] K. Jansen and M. Margraf. Approximative Algorithmen und Nichtapproximierbarkeit. de Gruyter, 2008. [2] V.V. Vazirani. Approximation Algorithms. Springer, 2000. 6. Integer and Combinatorial Optimization [1] D. Bertsimas and R. Weismantel. Optimization over Integers. Dynamic Ideas, 2005. [2] A. Schrijver. Combinatorial Optimization (3 Volumes). Springer Verlag, 2003. [3] W.J. Cook, W.H. Cunningham, W.R. Pulleyblank, and A. Schrijver. Combinatorial Optimization. John Wiley & Sons, Inc, 1998. [4] B. Korte and J.Vygen. Combinatorial Optimization: Theory and Algorithms. Springer, 2000. [5] G.L. Nemhauser and L.A. Wolsey. Integer and Combinatorial Optimization. Wiley, 1988. 7. Parallel and Distributed Algorithms [1] J. J ́J ́. An Introduction to Parallel Algorithms. Addison-Wesley, 1992. [2] T. Leighton and F. Thomson. Introduction to Parallel Algorithms. Addison Wesley, 1992. [3] N. Lynch. Distributed Algorithms. Morgan Kaufmann, 1996. 8. Computational Geometry [1] M. de Berg, M. van Kreveld, M. Overmars, and O. Schwarzkopf. Computational Geometry: Algorithms and Applications. Springer, 1997. [2] R. Klein. Algorithmische Geometrie. Addison-Wesley, 1997. [3] J.-D. Boissonnat and M. Yvinec. Algorithmic Geometry. Cambridge University Press, Cambridge, 1998. 9. Randomized Algorithms [1] R. Motwani and P. Raghavan. Randomized Algorithms. Cambridge University Press, 1995. 10. Computer Algebra [1] C.K. Yap. Fundamental Problems in Algorithmic Algebra. Oxford University Press, 1999. [2] Joachim Von zur Gathen and J ̈ rgen Gerhard. Modern Computer Algebra Cambridge University Press, New York, NY, USA, 1999. 11. Analysis of Algorithms and Mathematical Foundations [1] R. L. Graham, D. E. Knuth, and O. Patashnik. Concrete Mathematics. Addison-Wesley, 1994. [2] R Sedgewick and P. Flajolet. An Introduction to the Analysis of Algorithms. Addison-Wesley, 1996. March 06 STL tipsint value[100]; struct myless: public less<int> { bool operator()(int a, int b) const{return (value[a] <value[b]||(value[a]==value[b]&&a<b));} }; int main() { set<int,myless> stree; map<int,int,myless> mtree; priority_queue<int,vector<int>,myless> pq; const int n=10; for(int i=0;i<n;i++)value[i]=-i/2; for(int i=0;i<n;i++)stree.insert(i),mtree[i]=-i,pq.push(i); cout<<stree.size()<<" "<<mtree.size()<<" "<<pq.size()<<endl; cout<<"-----------------------------"<<endl; for(set<int,myless>::iterator it=stree.begin();it!=stree.end();it++) cout<<(*it)<<" "<<value[*it]<<endl; cout<<"-----------------------------"<<endl; for(map<int,int,myless>::iterator it=mtree.begin();it!=mtree.end();it++) cout<<"("<<it->first<<","<<it->second<<") "<<value[it->first]<<endl; cout<<"-----------------------------"<<endl; while(pq.size())cout<<pq.top()<<" "<<value[pq.top()]<<endl,pq.pop(); return 0; } February 19 A powerful bitwise trickHere is a powerful bitwise trick from a riddle. Assume a RAM model has words of sufficient long. So a integer vector (x[0],x[1],...,x[n-1]) can be encoded as a word X=x[0]*2^0+x[1]*2^w+x[2]*2^(2w)+... , here w is called width and satisfies 2^w>x[i]. The powerful bitwise trick is to change the width freely in O(1) time. Say we want to change the width of X from w to w'. Let temp_w=max(w,w') * (n+1). We first enlarge the width of X to temp_x by letting X=X*2^0+ X*2^(temp_w-w)+X*2^(2*(temp_w-w))+... and masking out the unwanted bits of X. Then we narrow the width of X to w' by letting X=X%(2^(temp_w-w')-1), which works due to temp_w>=n*w'. A good application of the above trick is to count the number of '1's in the binary representation of a integer in O(1) time. Assume the integer X has n bits and let 2^m>n and 2^(m-1)<=n. We consider n as an encoded vector of width 1 and length n and change the width of X to m and X%(2^m-1) is just the answer. The above method need that a word on the RAM has at least (n-1)(n+1)m+1 bits due to the large intermediate temp_w. In fact the needed word bits can be further reduced to (n-1)m+1, where m=ceil(log n), for this problem. Assume m and n are relatively prime, otherwise we can do some preprocessing to assure it. Let X'=X*2^0+X*2^n+...+X*2^(n*(m-1)), which is a concatenation of m copies of original X. Then we pick the 0-th, m-th , 2m-th, ..., and (n-1)*m-th bits of X' by masking out other bits. Then the answer is X'%(2^m-1). The fact gcd(m,n)=1 leads to that the 0-th, m-th ,...,(n-1)*m-th bits of X' contains exactly the original bits of X, although not in the original order. A tricky network flow modelHere is a task schedule problem which can be perfectly solved by network flow techniques. Given n tasks and m processors, we need to assign each task to exactly one processor. The cost of the i-th processor processes the j-th task is X(i,j) and the communication cost between the i-th task and the j-th task is C(i,j)*|P(i)-P(j)|, if they are assigned to processor P(i) and P(j), respectively. How to find a schedule minimizing the total cost? It can be transformed into a tricky minimum cut problem in a undirected graph. First construct n vertex-disjoint paths between source and destination vertex. Each path contains m edges and the i-th path is denoted by (s, v(i,1), v(i,2),..., v(i,m-1), t). The edge weight of the j-th edge on the i-th path is X(i,j)+L, where L is a very large number. Under such construction, the minimum cut must contain exactly one edge from each path and it naturally represent which processor the corresponding task is assigned to. Besides that, v(i,k) is connected with v(j,k) (j!=i) by an edge of weight C(i,j) to reflect communication cost. Note that the communication cost being the form of C(i,j)*|P(i)-P(j)| is vital to the above model. How about that it's just C(i,j)? In that case, can it be solved by network flow techniques? February 18 Bottleneck problems in graphs The bottleneck spanning tree problem is to find a tree rooted at a given vertex s minimizing the maximum weight of edges in the tree. For undirected graph, the problem can be simply solved in linear time. For directed graph, Gabow and Tarjan gave an O(m log*n) time algorithm. Let E(a,b) be the edge set consisting edges with weight >a and <=b. Initialize low and high the minimum and maximum of edge weights. A. In the i-th iteration, partition E(a,b) into k=f(i) sets E1,E2,...,Ek of almost equal size. Let E0=E(-inf,low). Here f(i) is recursively defined as f(1)=2, f(n)=2^f(n-1). B. Find the minimum j such that the union edge set E0UE1U...UEj contains a spanning tree. C. If j=0, return low. Otherwise, let low and high be the minimum and maximum in Ej. Note that the step A and be done in O( |E(a,b)| log f(i) ) = O(|E(a,b)| f(i-1)) < O(m) time by a median finding and divide-conquer method. Step B can be done in O(m) time. The number of iteration is O(log*m)=O(log*n). The algorithm is better than Dijkstra's algorithm, which has a time complexity O(m+nlogn), when the graph is dense. The bottleneck maximum matching in bipartite graphs problem is to find the maximum cardinality matching with minimum bottleneck edge weight. A simple combination of binary search and Hopcoft and Carp's matching algorithm yields an O(m sqrt(n) logn) time algorithm. In fact that can be simply improved to O(m sqrt(nlogn)). First, Hocropt and Carp's algorithm has a good property: a matching M of size |M|>=|M*|-n/k can be found in O(km) time. This comes from that after k iterations, the augment paths in the residue graph have lengths at least k+1 and they are vertex-disjoint, so the number of augment paths is at most 2n/(k+2). Using the above property and binary searching, we can find an bottleneck approximate maximum matching M such that |M| >= |M*|-n/k with minimum bottleneck edge. The remaining part is to augment M to M* by a successive BFS augmenting. When an augmenting fails, an edge with larger weight is added and the BFS starts from the newly added vertex. By that, each vertex is visited at most once in each successful augmenting phase and the total time is O(nm/k). Let k=sqrt(nlogn), we get the promised time complexity. February 09 Counting irreducible fractionsHow to count the number of irreducible fractions not greater than R(R<=1) and with denominator not greater than N? One method is to enumerate denominator D and count integers not greater than D*R and coprime with D. the sub-problem can be solved by utilizing inclusion-exclusion principle to count integers divisible by any prime factor of D in the range [1, D*R] . Assume D has K different prime factors, then it needs to enumerate 2^K factor of D. For appropriate large D, 2^K << sqrt(D), so the bottleneck is integer factorization of D. The total time complexity is N*sqrt(N). Another method is much more elegant. Let F(D) be number of irreducible fractions not greater than R and with denominator D. A recursive relation can be obtained: F(D) = floor(R*D) - Sum{ F(d) | D is properly divisible by d }. (This method comes from a related paper. ) December 03 Submodular FunctionsA submodular function F() mapping a subset of a finite set V to a real number has the following property. For any subsets A and B, F(A) + F(B) >= F(A U B) + F(A ^ B) , where AUB and A^B are union and intersection. A more significant definition is that for any subsets S and R, S is a subset of R, an element e in V, F(S U {e}) - F(S) >= F(R U {e}) -F(R). Here F(S U {e}) - F(S) can be considered as the marginal value of e with respect to S. If -F() is submodular, then F() is called supermudular. If F() is both submodular and supermodular, F() is called modular. Several examples of submodular function. For a graph G(V,E), define F(A) on a subset of V to be the number of edges in the subgraph induced by A. For a directed graph G(V,E) and two vertices s and t, define F(A) on a subset of V/{s,t} to be the number of cut edges between AU{s} and (V-A)U{t}. There are some greedy algorithms to optimize a submodular function. December 01 The fun of solving math riddles07年8月在Google北京实习的时候,我第一次做出了IBM Ponder This的题目,在我的正确提交之前我还提交过一个错误的答案,puzzlemaster很nice的回信指出我的错误,让我很"感动"。从那开始我每个月都上去看题做题。 07年11月的题目很不错,我用了大概1页多A4纸的篇幅描述我的基于图论的构造方法,生怕puzzlemaster不耐烦看还附了一个能生成解的C++程序,最后我的解答被接受了。等到月底公布答案时我被深深的打击了,一个很简单的构造方法描述就那么几行,puzzlemaster真的很nice:) 解答里面还说明这个问题来自另一个数学迷题网站Using your Head is Permitted,于是UyHiP进入我的视线。 慢慢的我发现,IBM Ponder This的题目有时候很无聊,而UyHip的题目更符合我的口味,题目几乎都是跟离散数学,算法,计算复杂度等相关的,而这些正是我的兴趣所在。从07年12月开始,我开始每个月做UyHiP的题目,到今天整整一年了。期间总共13道题目,我做出来了9道。题目都很不错,我最喜欢的是08年1月的题目,可惜我想了一个月都没做出来。那月初的时候我题交了一个复杂的基于欧拉定理的解答,用Latex写了四页,当时很有成就感,最后被指出整个解答赖以成立的引理错了,于是全部解答几乎都是扯淡@#$%$#@。08年7月的题目是我解答出的题目中最难的,我碰巧想到做法的,可能是解答用到的二部图匹配的理论跟算法正好是我比较熟悉的。08年9月的题目我没能成为solver之一,背后还有一个小故事。我猜到了结论,却想了一整天都没想出证明来,我知道这个问题是一个经典问题,应该找得到证明,最后实在忍不住Google了一把,在SIAM的一个期刊上找到一篇论文的一个定理。于是我的ws解答就引用了那篇论文的定理,还把论文下载下来作为解答的附件:),最后riddle的作者Michael拒绝把我添加到solver列表里面,因为"I can only give credit for an original solution",还"语重心长"的告诉我"If you ask me, having fun is what solving these riddles is all about.",其实Michael说的很有道理:) November 12 SF, I am coming!明早就要出发去旧金山参观Google总部了,虽然被Google北京狠狠的拒了,我似乎依然是Google的fans。 这次Code Jam Final,Google显得有些小气,不知道是不是受美国经济危机的影响。先是要求从机场到酒店如果坐出租车的话,必须要跟其他参赛者拼车。最后干脆要求在公共交通运行的时间段里必须搭乘公共交通,BART,shuttle啥的,除非半夜或凌晨到的才能叫出租车,而且依然要拼车!我了解了一下,美国的出租车不像国内满大街跑招手就停,还得打电话预约。说起来,我要是叫出租车的话得在机场先换硬币,然后打投币电话,这么麻烦还不如搭地铁然后走一会儿。 今天看了下地图,发现唐人街(Chinatown) 离住的酒店很近,步行几个block就能到了。我9点到机场,下午3点才能check-in,中间这段时间正好可以去逛逛。午饭还得自己解决,这对于英语听说极差的我是个挑战 ,Google会报销最高25刀的餐费,争取正好吃到这个数目:) 还有个什么联合广场(Union Square Park)离酒店更近,也可以顺便看看。金门大桥也不是很远,不过步行是不行的了,估计是没时间看了。时间安排太紧了,下午6点welcome reception,大快朵颐的好机会。还记得北京local final的时候,以为welcome reception最多提供点饮料水果啥的不能当晚饭的,于是就跟同学去酒店附近吃火锅了,完了回来看见招待会上食物相当丰富,甜点,烤肉,烤鹌鹑一应俱全啊,看得我直流口水,可惜火锅吃得太饱腹中再无容物之处,只能吃了点水果忿忿的回房看电视了。第二天白天在Mountain View的Google总部,离酒店五六十公里,按日程安排早上6点半就得起来,然后又是welcome,接着是赛前准备,比赛,午餐,下午参观Google,Tech talk,回酒店晚上颁奖,第二天一早又得闪人。估计我还没能从北京时间调整到旧金山时间就已经又身在北京了。从七月份开始的五轮比赛,持续一个月的签证申请,上海美国使馆楼里楼外4个小时的排队就换来旧金山的短短48小时!不过作为Google的fans能参观Google总部也满足了,况且还有比赛奖金拿:) November 01 遭遇NP-HardnessBBS算法版上时不时的会有人问"一个整数集合,划分成两部分,使得两部分的和的差最小"之类的问题,而且说是面试题目。我想这样的面试官也太不厚道,要是不知道NP理论的面试者岂不是要想算法想得很郁闷。没想到我也在面试中遭遇NP-Hard问题了,不过这个问题没那么裸。 说一个测试数据集U,每次可以任取一个U的子集作为一次O(1)时间测试的输入,测试的结果可能fail或者不fail。测试的结果总是相容的,即子集A是子集B的子集,如果A测试fail那么B测试一定也fail。问题是找到一个最小的子集使得测试fail掉。如果最小的子集只有1个元素,二分就行了;两个元素的情况也可以二分。最小集元素多了就不好办了。我当时想P算法想了好一会,最后觉得应该是NP-Hard的,于是跟面试官说了,然后被要求给个证明。当时把子集和问题归结到这个问题,归结的过程很简单。面试结束后发现,我给的那个reduction错得很离谱,近乎扯淡,面试官当时竟然没发现,而且貌似还对我的证明很赞许。下来又想了下,问题确实是NP-Hard的,证明也不难,可以把Set Cover归结到这个问题。对一个Set Cover问题实例(U, {S1,S2,...,Sn}),构造测试程序,对于输入子集A={ S', S'', ...},测试返回fail当且仅当A覆盖全集U。显然这个测试可以在多项式时间内完成,而且Set Cover的最小覆盖集正好对应{S1,S2,...,Sn}的最小fail子集。 October 28 C++ TipsC++ Tips
October 20 一家牛公司今晚面了一家牛公司,公司规模很小,也不出名,怎么个牛法呢? Fouder牛,CMU的三个博士,其中一个是科大少年班出来的。 三个Fouder是同学,他们的导师更牛,新科ACM Turing奖得主,Edmund M Clarke。 除此之外,员工也很牛,据说其中有ACM/ICPC世界冠军的教练。 之前跟HR聊的时候,说规模这么小也是因为招不到足够的人。晚上的面试结束后,我知道为什么了。 他们把ACM题目拿来作面试题目,而且是那种需要证明数学结论的题目,这样能招到几个合格的人呢? October 19 从合肥到南京上周日去南京参加了MicroXXX (XXX!=soft)公司的面试。一早乘坐不太和谐的"和谐号"到南京火车站,之所以不太和谐是因为觉得票价稍贵:)不过的确够快,一百六十多公里只要一个小时。从合肥到南京,就像是从乡镇到城市,单是两个火车站就有强烈的对比。妙的是南京火车站就在玄武湖旁边,站前广场就连着湖岸,人们坐在湖边吹着风,早晨淡淡的阳光洒在宽阔的湖面上,感觉很是惬意。立马决定绕湖走一圈,反正离面试还早。一路走一路看,玄武湖一部分被明城墙围起来,湖边散布些亭台和小树林,整个被称作玄武湖公园。走了不到四分之一,接到电话问能不能提前去面试,于是从高高的玄武门出公园去面试地点。 面试非常囧,两个中国人非要整洋鬼子的话交流,不知是我英语听力实在太差还是面试官的发音确实有点特别,几乎每个问题我都会要求重复其中的几个关键词,似乎有个问题中的两个词重复了四遍我才听明白,弄得面试官都有些不耐烦了。这次面试结果是挂了,这是后话,我终于栽在自己糟糕的英语听力跟口语了。 面试结束后离返程还有6个小时,决定去看一处名胜,作为"六朝金粉地,东南形胜处"的南京的名胜可多得去了。随便找了个公交站牌看了看,附近有三个地方可去,雨花台,明孝陵和夫子庙。说到南京雨花台就想到《儒林外史》里面的一段趣文。日色已经西斜,只见两个挑粪桶的,挑了两担空桶。歇在山上。这一个拍那一个肩头道:"兄弟,今日的货已经卖完了,我和你到永宁泉吃一壶水,回来再到雨花台看看落照。"杜慎卿笑道:"真乃菜佣酒保都有六朝烟水气,一点也不差!"。 而明孝陵就是咱英明神武的老祖宗的陵墓,都说同姓的五百年前是一家,算来大明朝正是五六百年前,说不定就是咱的老祖宗也未可知啊:)。可惜了洪武帝一世英明,以为在自己的苦心经营下自家的江山固若金汤能传承万代--其实每个朝代的开国皇帝都这么天真的--子孙们却没几个争气的,有窝里斗的,有几十年不上朝的,有整天做木工的,还有烧丹炼汞的,最后落得个非但亡国竟是亡天下,亡了汉人的天下,让中国人顶着个猪尾巴卑躬屈膝的做了两百多年的奴才。 最后还是决定去夫子庙拜拜孔老夫子,求他老人家赐予我关于人生的智慧。 没想到的是,在会子庙我并没有见到他老人家,而是迷失在成片的店铺和如织的人流中。原来夫子庙竟是一个仿古风格的商业步行街,连椽的店铺,满眼的大字招牌还有嘈杂的人群。最后终于发现了藏在其中的江南贡历史陈列馆,馆前有几尊铜像,有唐伯虎,林则徐,吴承恩和吴敬梓。唐伯虎是苏州才子,不过是在江南贡院中的解元。林则徐则做过这里的主考。吴承恩是率考不中,最后一把年纪才中了进士。说起来吴敬梓跟江南贡院没啥关系,这位老先生平生最恶科举,长期寓居秦淮,写下了巨著《儒林外史》。花二十块钱进陈列馆看了下,无非是些复印版的资料图片,介绍一些跟江南贡院有些关联的知名人物。离开夫子庙前吃了所谓"南京一绝"的鸭血粉丝汤,这个招牌还算谦虚的,还有打"中华一绝"大字招牌的。跟一般的小吃相比也没啥特别的,味道相当的一般,不明白何以成为"一绝"的。 |
|||||
|
|