<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_凌寒飘香</title><subtitle type="text">____成风破浪会有时,直把云帆济沧海!</subtitle><id>http://feed.cnblogs.com/blog/u/19732/rss</id><updated>2012-03-19T08:05:59Z</updated><author><name>凌寒飘香</name><uri>http://www.cnblogs.com/lingxzg/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lingxzg/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/19732/rss"/><entry><id>http://www.cnblogs.com/lingxzg/archive/2012/02/08/2342825.html</id><title type="text">【转】一个女孩的上海5年</title><summary type="text">http://topic.csdn.net/u/20110706/16/fb11324d-cad6-481e-9c15-72ee3147fe60.html( 当公交驶过南浦大桥时，我望着斜拉索，心想，我终于来到上海了。毕业的时候，所有的同学都去了深圳广州;只有我，选择了绍兴下面的一个小县城，为了朦胧的爱情。记得签协议的时候，集团的人事部主任努力的从我的眼睛里寻找肯定的目光，在她看来，愿意从武汉落户到绍兴下面的“小地方”，无疑是脑子进水。毕业前的散伙饭，大家都哭得东倒西歪。我没有，只有满心的彷徨。走的时候，爸爸给了我一千块钱和一个箱子，在老妈的泪水涟涟中送我上火车。那个箱子是老古董，三十多年前陪</summary><published>2012-02-08T07:54:00Z</published><updated>2012-02-08T07:54:00Z</updated><author><name>凌寒飘香</name><uri>http://www.cnblogs.com/lingxzg/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lingxzg/archive/2012/02/08/2342825.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lingxzg/archive/2012/02/08/2342825.html"/><content type="html">&lt;p&gt;&lt;a href="http://topic.csdn.net/u/20110706/16/fb11324d-cad6-481e-9c15-72ee3147fe60.html"&gt;http://topic.csdn.net/u/20110706/16/fb11324d-cad6-481e-9c15-72ee3147fe60.html&lt;/a&gt;( &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;当公交驶过南浦大桥时，我望着斜拉索，心想，我终于来到上海了。&lt;br /&gt;&lt;br /&gt;毕业的时候，所有的同学都去了深圳广州;只有我，选择了绍兴下面的一个小县城，为了朦胧的爱情。记得签协议的时候，集团的人事部主任努力的从我的眼睛里寻找肯定的目光，在她看来，愿意从武汉落户到绍兴下面的&amp;#8220;小地方&amp;#8221;，无疑是脑子进水。&lt;br /&gt;&lt;br /&gt;毕业前的散伙饭，大家都哭得东倒西歪。我没有，只有满心的彷徨。&lt;br /&gt;&lt;br /&gt;走的时候，爸爸给了我一千块钱和一个箱子，在老妈的泪水涟涟中送我上火车。那个箱子是老古董，三十多年前陪着他从广西来到武汉，现在又陪着我从武汉奔向下一站绍兴。若干年后我继续北上，爸爸还惦记着他的古董皮箱，让我不要扔。可惜那个箱子早在奔波中坏掉。也许这是它最好的结局。我不喜欢旅行箱，只有极少数时候它能勾起甜蜜的回忆，大多时，伴随它的是分别和颠沛流离。&lt;br /&gt;&lt;br /&gt;老妈没说什么，只是忧心忡忡，希望我不要转户口。老人的话，的确是要听的，可惜你要经过很久以后才会明白他们说的没错。江南气候潮湿，偶尔从车间办公室出来，望着雾气弥漫的远山，我想我的未来也跟这阴霾一样，看不见，摸不清。&lt;br /&gt;&lt;br /&gt;终于，在微弱的爱情小火花在冬夜里被掐熄后，我觉得我不能在这里再呆下去了。&lt;br /&gt;&lt;br /&gt;三月底在上海有招聘会，我带着简历在人潮中挤来挤去，充分见识了什么叫国际化大都市&amp;#8212;&amp;#8212;人才遍地是，你连根草都不是。3个小时下来，我只投出5份简历，脚已经麻木，浑身是汗。&lt;br /&gt;&lt;br /&gt;走到南京东路，我在花坛边坐下来，伸直了双脚休息。南京西路上高楼林立，冷冰冰的玻璃幕墙在太阳下折射出耀眼的光芒。一扭头，看见哈根达斯&amp;#8212;&amp;#8212;约会的热恋男女烧包的地方，最便宜的单球冰淇淋要28元，顶我一个星期的午餐钱。&lt;br /&gt;&lt;br /&gt;我觉得要犒劳自己一下，虽然招聘会一无所获。更重要的是，我要告诉自己，我以后一定吃得起。&lt;br /&gt;&lt;br /&gt;后来每次经过南京东路那家哈根达斯，我都会停下来看一眼，甚至清晰的记得自己当年坐的位置。&lt;br /&gt;&lt;br /&gt;四月，不死心的我继续在网上投简历。终于拿到上海一个网络公司的面试机会。面试很顺利，结束的时候面试官听说我还在绍兴工作，早上5点起床坐了四个小时的大巴当天赶过来，惊讶得嘴张了半天没合上，立即让我来上班。&lt;br /&gt;&lt;br /&gt;回去的时候，我很开心。&lt;br /&gt;&lt;br /&gt;离开上海回绍兴之前，我找了一家房屋中介物色房子。中介拍着胸口对我说：&amp;#8220;放心吧，没问题，那房子可干净了，什么都有，一个月才800元，不过要先交一半的定金。&amp;#8221;从来没租过房子的我，将信将疑的付了400元。&lt;br /&gt;半个月后，我拎着30斤的皮箱和2个大编织袋，一个人回到上海。当中介把我带到出租的房子前时，我们都傻了。房子里什么都没有，没有灯，没有床，没有家具，没有卫生间。公共厕所在走廊里，没有门，只有半块黄得发腻的布帘挡着，正看着，一个光着上身的中年男人从卫生间里走出来，去里屋接了一桶水，返回去冲厕所。&lt;br /&gt;&amp;#8220;这就是你说的什么都有的800块的房子？&amp;#8221;&lt;br /&gt;中介支支吾吾：&amp;#8220;我也不知道啊，我也没来看过。都是房东说的。要么我再给你找一间吧。&amp;#8221;&lt;br /&gt;就这样，一下午我们逛了5处，终于在我筋疲力尽的时候，在长宁的一片棚户区里找到了一间尚且干净但没有独立卫生间的房子。我已经没有力气再走了，决定先住下来。　&lt;br /&gt;棚户区里是温情的市侩，你侬我侬和斤斤计较是每天生活的必备调味品。我住在楼上，门外有露台，种了几盆花花草草。没有洗衣机，手洗衣服后搭在葡萄架旁的衣杆上。几年后我去丽江，在客栈楼顶躺着看星空时，总觉得这周围环境怎么似曾相识呢？仔细想想不禁莞尔，可惜当年窘迫中心境完全不同。&lt;br /&gt;安顿下来后，去公司上班。做网站销售，底薪800元，靠单子的收入提成。我的房租也是800元，意味着如果拿不到单子，就没有钱吃饭。&lt;br /&gt;在上海，我一个人都不认识。一个星期里打了几百个电话，全被一口拒绝，只有一个小公司的总经理肯见我，地址在复兴中路1号。&lt;br /&gt;复兴中路在哪里？怎么过去？公司不给交通补贴，我没钱打车，必须坐公交。问了同事，有一部公交可以到复兴中路，但离那栋大楼还很远。于是我上了那部车，在离复兴中路最近的一站下了。&lt;br /&gt;下了车，我顿时傻眼，分不清东南西北。眼前是复兴中路1000号，我坐什么车才能到复兴中路1号呢？问了旁边的几个人，都说不知道。看看表还有3个多小时，一咬牙，走过去！于是，在那个阳光明媚的下午，我花了两个小时，从复兴中路1000号，走到了1号。&lt;br /&gt;奇怪的是，我至今丝毫不记得那个下午有多么的累，只记得路边老洋房庭院深深，梧桐成荫，一路上应接不暇的风景。&lt;br /&gt;那天以后，我能清楚的说出复兴中路上的每一条小岔路叫什么名字，周围都有什么建筑。&lt;br /&gt;至今，复兴中路仍是上海我最有感情的一条街道。几年后我买了相机，拍的第一个对象，就是复兴中路。&lt;br /&gt;当我满面尘灰烟火色的出现在衣冠楚楚的总经理面前时，他吓了一大跳。销售他见过很多，这么土的销售大概还是第一个。人靠衣装马靠鞍，销售一半是靠脸吃饭的。这是个小公司，总经理是个30出头的年轻人。他狐疑的上下打量了我一番，懒懒的说&amp;#8220;你介绍一下你们公司的情况吧。&amp;#8221;&lt;br /&gt;我从没做过销售，也不知道什么叫销售技巧。所以当我两个星期后拿到单子的时候，自己都觉得匪夷所思天上掉馅饼。只记得总经理说了一句话&amp;#8220;我觉得你做事很认真。&amp;#8221;&lt;br /&gt;这大概是我人生中第一件算是成功的事。过了很久回想起来我才意识到，他说的是对的。我能拿到这个单子，不是因为我销售技巧有多好&amp;#8212;&amp;#8212;我从来都不是个善于推销的人;也不是因为我们公司给他做的网站有多好&amp;#8212;&amp;#8212;那个网站简直一塌糊涂。他给我单子仅仅只是因为，我很努力。&lt;br /&gt;我很感恩。两年后我稳定下来，职业生涯走上正规后，查到他的地址，给他寄了一张新年贺卡。他一定不记得当初那个见客户前都不知道打扮一下自己的小丫头，但我记得他是我的贵人。&lt;br /&gt;&lt;br /&gt;这个单子给我带来了两千元的收入，第一个月生活有了保障。我立刻从网络公司辞职，去了一家台资公司做总经理助理。&lt;br /&gt;给我单子的老总问我去不去他们公司，我摇头。我自知不是适合做销售的人。&lt;br /&gt;去这家台资公司上班后我才知道，这个公司即将倒闭。我上班第一天的第一件事，就是代表总经理开掉所有的销售人员和行政人员。&lt;br /&gt;办公室里顿时炸了锅，大家都用憎恨的目光盯着眼前这个陌生人。而我已经没有退路，我也要吃饭，就算我不给你们发辞退信，一样会有别的人代替我来发。我们都没有错。&lt;br /&gt;才一个月，我就接受了这样血淋淋的现实教育。&lt;br /&gt;辞退只是个开始，因为资金周转不灵，连辞退的工资都发不出来了。上海交大MBA毕业的销售总监一怒之下，把台湾老板告上了公堂。台湾老板一如既往的延续着他的风格：不露面，通过邮件和电话背后指挥一切。&lt;br /&gt;官司开庭不能不去。谁出席？当然是我。人生的第一次对簿公堂居然是以如此滑稽的方式进行。&lt;br /&gt;打完官司后，被辞退的销售们自己组建了一家新公司，想从我老板手里抢产品在中国的代理权。销售总监来找我&amp;#8220;借&amp;#8221;公司的公章，我摇头不借。销售总监说&amp;#8220;你要多少钱吧？这个公司都要垮了！&amp;#8221;我说：&amp;#8220;这不是钱的问题，这是诚信的问题，就算这个老板不给我发工资，我也不能把公章给你。&amp;#8221;&lt;br /&gt;销售总监走了，一个星期后来找我，问我愿不愿意去他们公司：&amp;#8220;我觉得你不错&amp;#8221;。我没去。就算台湾老板再无耻，能想出这种地下手段来搞垮他的人也一样不是什么好鸟。台湾人很精明，经常让我不寒而栗。但我没有说&amp;#8220;不&amp;#8221;的资本，暂时。&lt;br /&gt;做助理比起做销售，好处就是旱涝保收。每月两千元钱对我来说已经是笔大数字，我立刻从贫民窟般的棚户区搬离，开始找新的房子。&lt;br /&gt;&lt;br /&gt;在锦江乐园看了一套，三室一厅中的一间出租，隔壁是两个好动的女孩。我对房子非常满意，准备马上搬家。一个星期后，女孩给我打电话，无意间提起房租是950 元。&amp;#8220;不是700吗？&amp;#8221;我问。&amp;#8220;不是不是！中介一定说错了！我报出去的价钱就是950元。不好意思，700元我不能租的。&amp;#8221;&lt;br /&gt;&lt;br /&gt;这事儿黄了，只得找下一套。&lt;br /&gt;&lt;br /&gt;在网上看到一个房源，上海南站地铁边上，是两室中的一间，有简单家具，独立卫生间。这种条件的房子只租600元，简直是奇迹。我飞快的打电话过去问。　&lt;br /&gt;&lt;br /&gt;那边是一个男生接的，标准的普通话，声音柔和。我对男人的声线非常敏感，心里咯噔的动了一下。&lt;br /&gt;&lt;br /&gt;&amp;#8220;房子比较简单，有很多人来看过了。不过我还是想租给一个男生，不好意思。&amp;#8221;&lt;br /&gt;&lt;br /&gt;那我怎么办？我最多只能付800元的房租，低于800元又在地铁边上的房子，打着灯笼都难找啊！想起房源启事上有句话&amp;#8220;若对方英语好尤佳&amp;#8221;，我脑子一转，用英文写了封邮件给对方，说明我的大致情况，以及为什么要租这套房子。&lt;br /&gt;&lt;br /&gt;几分钟后，那边回复邮件过来，很简单的一句话&amp;#8220;你可以晚上来看房子&amp;#8221;。&lt;br /&gt;&lt;br /&gt;那是个瘦瘦高高的男生，戴副眼镜。去房子的路上他问了我毕业的学校，和平时的兴趣爱好。那是一栋待拆迁的六层楼老公房，没有电视电话，唯一的电器就是一台微波炉。房间里家具很少，只有床和两个衣柜。的确很简单，但很干净，在我来说已经足够。能从棚户区搬进楼房，对我来说已经是个很大的进步。&lt;br /&gt;&lt;br /&gt;转到他的房间的时候，他指着外面灯火阑珊的兴业银行大楼说：&amp;#8220;你的理想是环游世界，我的理想是拥有那样一栋大楼。&amp;#8221;&lt;br /&gt;&lt;br /&gt;我笑起来。年轻气盛，谁没有梦想。&lt;br /&gt;&lt;br /&gt;看完房子，我离开回家。在车站等车的时候，忽然听见有人叫我的名字，一回头，诧异的又看见他。&amp;#8220;你怎么会在这里？&amp;#8221;&amp;#8220;刚才又有个男生来看房子，我出来接他。&amp;#8221;&lt;br /&gt;&lt;br /&gt;我急了：&amp;#8220;这房子我要的，不许租给别人！&amp;#8221;话一出口我就后悔。我又不是房东，凭什么&amp;#8220;我要&amp;#8221;&amp;#8220;不许&amp;#8221;？&lt;br /&gt;&lt;br /&gt;他迟疑片刻&amp;#8220;那你准备什么时候搬过来？&amp;#8221;&lt;br /&gt;&lt;br /&gt;我乐开花了，&amp;#8220;周末！&amp;#8221;&lt;br /&gt;&lt;br /&gt;&amp;#8220;行。你的车来了。你有零钱吗？&amp;#8221;&lt;br /&gt;&lt;br /&gt;&amp;#8220;有的&amp;#8221;&lt;br /&gt;&lt;br /&gt;他在裤兜里摸了摸，摸出两个钢镚儿&amp;#8220;还是给你点零钱吧。&amp;#8221;&lt;br /&gt;&lt;br /&gt;我跳上公交。外面的夜色已经很深了，我发了条短信给老姐&amp;#8220;准备搬家，新房子我很满意。看到的时候觉得好像夜里突然看到一缕阳光。&amp;#8221;&lt;br /&gt;&lt;br /&gt;现在我已经不太记得他的样子了，闭着眼睛使劲回想也只有一个大概的轮廓。但我清晰的记得七年前第一次见到他时的感觉，&amp;#8220;夜里的一缕阳光&amp;#8221;。&lt;br /&gt;&lt;br /&gt;我是天蝎座，感情方面直觉超准。有的人，第一眼，你就知道，你跟他之间是会有故事的。&lt;br /&gt;&lt;br /&gt;如果不是和那个女孩因为价钱起了误会，如果不是因为我当时穷得不能每个月多拿150元出来租更好的房子，也许我根本不会遇见L，以后的很多很多事情都会改写。可是，生活就是这样不可预测，没有谁能掌控。&lt;br /&gt;&lt;br /&gt;我搬进了上海南站的房子，带着很少的家当，和两百来张CD&amp;#8212;&amp;#8212;这是我唯一的财富，从武汉攒到绍兴再攒到上海。我的到来给屋子添了一样电器：一套不到200元的电脑音箱，虽然便宜但音质很好。&lt;br /&gt;&lt;br /&gt;L 和我的生活都很简单。白天上班，晚上回家后各自在房间里看书学习。我喜欢看书的时候开着轻轻的纯音乐，舒缓的旋律在空气里流淌。L不懂音乐，也从来不听。他的房间里总是静悄悄的，除了晚上7点到8点收音机的晚间新闻。有时候他会穿过我的房间去阳台拿晾干的衣服，我抬头看他一眼，继续在台灯下看书。&lt;br /&gt;&lt;br /&gt;给台湾老板做事很辛苦。公司已经处于崩溃边缘，只剩得一个财务、一个销售和一个司机。每天上门来讨债的、要工资的、法院传唤的&amp;#8230;&amp;#8230;类似事件层出不穷，但我没的选择，为了两千元工资，我得继续做下去，至少做满三个月。&lt;br /&gt;&lt;br /&gt;有一天，公司里的人都出去了。我出门拿东西，顺手把隔壁房间的门合上以免小偷进来。门&amp;#8220;咣当&amp;#8221;一声锁上的时候，我才想起来，公司所有的门钥匙都在里面！明天开不了门了！我当时冷汗全下来了，又不敢给老板打电话，怕被骂被辞退，于是一个人坐在办公室里发呆。&lt;br /&gt;&lt;br /&gt;天渐渐黑下来，我不敢回家，又不知道该怎么办。此时手机响了，是L的短信，问大概我几点到家。我说我还在公司，钥匙被锁在房间里了。他说，我马上过来。&lt;br /&gt;&lt;br /&gt;半小时后，L到了，什么都没说。先试了试房间的锁能不能撬开，失败后就打算从窗户翻进去。我魂都吓飞了，连忙阻止，这要摔出人命了可怎么办。L说不会的。过了一会，果然从窗户翻进了隔壁房间，取出了那串要命的钥匙。&lt;br /&gt;&lt;br /&gt;我松了口气。L开始教训我：怎么这么不小心呢？钥匙不见了要跟老板讲。整层楼就你一个人，你准备等到几点？夜里出事了怎么办？&amp;#8230;&amp;#8230;声调不高语气却很重。&lt;br /&gt;&lt;br /&gt;L见我的脑袋越垂越低，叹了口气：&amp;#8220;肚子饿了吗？走，带你去吃麦当劳，再说下去我看你就要哭了。&amp;#8221;&lt;br /&gt;&lt;br /&gt;我像个受气的小媳妇一样跟在L身后，在麦当劳里嘟着嘴不情愿的把套餐塞进肚子。&lt;br /&gt;&lt;br /&gt;钥匙事件后，我渐渐开始信任L。&lt;br /&gt;&lt;br /&gt;我本就不是特别有能耐的人，又正处于鸡飞狗跳快要山穷水尽的时期，此时身边突然出现英雄救美，就算再好强的女人，产生心理上的依赖感也是理所当然。&lt;br /&gt;&lt;br /&gt;L和我之间的话也越来越多。有时候周末他加班，我会去他公司看他。有次大热天的，我拎了一盒烤鸡给他当午餐。他拿着烤鸡进了公司的茶水间，很快出来了。我问他好吃吗？他笑嘻嘻的说好吃。&lt;br /&gt;&lt;br /&gt;后来过了很久，同样的夏天，我自己带着烤鸡去一位朋友家，打开时却发现早已经坏掉。我才明白这个天气，没有放在冰箱里的食物不出半个小时就会坏掉。L当时根本没吃。&lt;br /&gt;&lt;br /&gt;夏天的晚上，我蜷曲着腿坐在阳台上吹风。L跑到阳台上有一茬没一茬的找我说话，天南海北的扯。L是北方男生，普通话标准，声线柔和。呵呵，好像说过两次了。但我的确对男人声音极其敏感，闭着眼睛，耳边响起柔和低沉的嗓音，那是种享受。有时候他死乞白赖的要拉我的手，手都伸到我面前了。我犟不过，白他一眼，浅浅的握了一下。他嚷嚷起来&amp;#8220;这不叫拉手，这叫握手啊~~！！！我们又不是国共合作~~&amp;#8221;&lt;br /&gt;&lt;br /&gt;不太记得是哪天了。他握住我的手的时候，我没有拒绝。我是凭直觉做事的人，没想太多，我的心告诉我，我喜欢他。&lt;br /&gt;&lt;br /&gt;那时我还没去过北方。L大概是我接触的第一个北方男人。我对北方男人的印象来自于电视剧和街坊传说：五大三粗，蛮横无理，打老婆，大男子主义&amp;#8230;&amp;#8230;但L不是。 L细心体贴，很会照顾人，很顾及别人的感受。相比之下，当时还是个黄毛丫头的我，在生活中简直就是个粗心傻妞。L总是叹口气，又怜爱又无奈的看着我。他比我大4岁，早毕业两年，但工作经验和生活经验显然强过我许多，我在他面前就像个任性的孩子。&lt;br /&gt;&lt;br /&gt;L长得不帅，身材也不算魁梧。男人的性感有时与肌肉和面孔并没有多大联系。我喜欢内心沉稳有力的人，这种内心的力量会让男人有种挺拔的特质，并在他周围形成气场（&amp;#8220;气宇轩昂&amp;#8221;一词大概就这么来的）。这种男人只要一出现，就会像磁石一样把我吸引过去。一个人的审美观总是贯穿一致的，很容易对同一类人着迷。这种迷恋有时完全出于本能和潜意识。这也大概是为什么我第一眼见到L时，就觉得有种奇怪的感觉，觉得我和他之间会有故事。&lt;br /&gt;&lt;br /&gt;我开始跟L学做北方菜。爱上一个人，是会愿意为他洗手作羹汤的，哪怕以前从来没摸过锅碗瓢盆。我不习惯吃北方菜，但为了L，得迁就口味。&lt;br /&gt;&lt;br /&gt;我刚搬进来的时候，L把这房子叫&amp;#8220;宿舍&amp;#8221;;现在，他叫它&amp;#8220;家&amp;#8221;。&lt;br /&gt;&lt;br /&gt;我在台资公司已经做满三个月，攒下了3000元钱。于是向老板提出辞职。台湾老板很客气的送走了我。我去了一家本土的广告公司。&lt;br /&gt;&lt;br /&gt;这真是一个新鲜而刺激的圈子，也是工作狂人们的聚集之地。每日9点上班，晚上10点之前下班已经算早。第一天工作交接，部门经理把一张排得密密麻麻的项目进度时间表给我，&amp;#8220;基本是这样，但我不确定有些细节的时间排得很准，因为这张表是我凌晨三点困得要死的时候做出来的。&amp;#8221;&lt;br /&gt;&lt;br /&gt;我没见过这样的工作架势，我以往所有的知识都来自于书本。而这里的一切都是真强实干的，并且要求立刻出成绩，容不得闪失，deadline以分钟计算。我拼命的学习，但因为是对这行全然陌生的新人，哪怕每天晚上12点才下班，仍然跟不上进度。&lt;br /&gt;&lt;br /&gt;与此同时，前几个月来积攒的劳累在我身体里爆发了。我没告诉L，坚持在广告公司继续&amp;#8220;朝九晚十二&amp;#8221;的工作，脸色一天比一天蜡黄。&lt;br /&gt;&lt;br /&gt;一个星期后，我实在撑不住了。某天晚上12点下班后，我发了条短信给经理，辞职了。&lt;br /&gt;&lt;br /&gt;到家后，吵醒了睡梦中的L。听说我辞职，L没说什么，只是笑着说：&amp;#8220;辞职了还干到十二点才下班。&amp;#8221;&lt;br /&gt;&lt;br /&gt;L也是广告公司出身，他是很希望我能在广告公司做下去的，因为这对我是个极好的锻炼机会。我没告诉他我坚持不下去有一半是因为身体劳累生病。谁工作不辛苦，谁没有硬撑着让自己不倒下的时候呢？&lt;br /&gt;&lt;br /&gt;这是我唯一一次半途而废，撤退得极其狼狈。当时真是年轻气盛啊！居然因为身上有了3000元钱，已经不是刚来上海那时的赤贫状态。就敢在不找下家的情况下辞职。倘若是今日，别说身上有三千块，就算有三万块我也不敢轻易辞职的。&lt;br /&gt;&lt;br /&gt;除了对找工作前景盲目乐观，还有个原因就是，那时我身边已经有了L。有次L对我说希望我从台资公司辞职，找份有前途的工作，不要每天做那些鸡飞狗跳的没有意义的事情。L说他的工资虽然不算高，但也够养活两个人了，撑上一两个月没有问题。这两个月里刚好够我熟悉适应一份新工作。&lt;br /&gt;&lt;br /&gt;没有哪个女人会天生独立而强势。男人就是用来依靠的，不是吗？连《喜剧之王》里死跑龙套的周星星都会对张柏芝说：&amp;#8220;我养你啊！&amp;#8221;。L对我那么好，我深信不疑。&lt;br /&gt;&lt;br /&gt;我成了甜蜜的居家小女人。L在外面上班，我在家看书学习，偶尔去网吧投简历找工作，然后去菜场买菜，等他回来。&lt;br /&gt;&lt;br /&gt;家外面是扇铁门，配了一把大铁锁。每到下午六点的时候，我边看书边竖起耳朵，听见钥匙在锁眼里&amp;#8220;咯噔&amp;#8221;一响，我就从床上跳起来，蹦到门边，等着L推门进来。L进门时总被我吓一跳，笑眯眯的说：&amp;#8220;哎哟，耳朵真灵啊~&amp;#8221;&lt;br /&gt;&lt;br /&gt;后来我养了猫。每天下班回家推开门，小猫们早已在门边守候，绕着我的裤腿急切的狂蹭，嗲嗲的叫。&lt;br /&gt;&lt;br /&gt;那时，我之于L，也如同家里的一只小猫咪。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;周末L加班，我独自去南京玩。回来已是夜里，我在楼下抬头望家里，窗户里隐隐约约透出橘黄色的灯光。我突然明白为什么L把宿舍叫&amp;#8220;家&amp;#8221;，家就是有人会为你点着一盏灯，回来推门时，迎接你的不是一片漆黑。&lt;br /&gt;&lt;br /&gt;很多年后，我去了北京。每次出差回上海路过南站时，我总会在高架上探出头来看以前住过的房子。当年的老公房已经拆迁，上海南站也修的让我完全认不出来。夜幕里灯光璀璨，但再华丽的夜色，也抵不上当年破房子里那橘色灯光的温暖。&lt;br /&gt;&lt;br /&gt;我继续在家学习、投简历找工作，L的工作渐渐不顺利起来。终于有一天他告诉我，因为在公司里被人弹劾，他愤然辞职了。&lt;br /&gt;&lt;br /&gt;L比我沉稳，辞职后把自己的时间安排得很好，每天做事井井有条。而我，因为找工作不顺心，脾气开始暴躁起来。L很包容我。没钱带我长途旅游，他就骑着自行车带我去华东理工大学校园玩，一路上哼着歌儿展示他的自行车技。我在后座上吓得要死，怕摔下来，又怕他骑得辛苦。&lt;br /&gt;&lt;br /&gt;&amp;#8220;重不重啊？&amp;#8221;&lt;br /&gt;&lt;br /&gt;&amp;#8220;重！&amp;#8221;　&lt;br /&gt;&lt;br /&gt;过了两秒钟我撅着嘴不甘心的问：&amp;#8220;真的很重啊？&amp;#8221;&lt;br /&gt;&lt;br /&gt;&amp;#8220;呃&amp;#8230;&amp;#8230;没感觉~！&amp;#8221;&lt;br /&gt;&lt;br /&gt;&amp;#8220;呵呵！&amp;#8221;我一把抱住L。&lt;br /&gt;&lt;br /&gt;后来看《甜蜜蜜》，张曼玉甩着腿坐在黎明自行车后座上哼着歌儿那段，看得我又笑又哭，泪流满面。&lt;br /&gt;&lt;br /&gt;十月是我生日。虽然我们都失业了，但L还是买了生日蛋糕和玫瑰。我很满足，虽然只是菜市场十元一束买来的，简陋没有任何包装。这是第一次，我和心爱的人一起过生日。这个男人，在我一无所有什么都不是的时候，对我好。&lt;br /&gt;&lt;br /&gt;我下决心等明年他过生日的时候，要给他买份像样的生日礼物。可我没等到。&lt;br /&gt;&lt;br /&gt;上海的冬天到了。&lt;br /&gt;&lt;br /&gt;江南寒冬的湿冷，呆过的人都知道是怎么回事。我们把每天看书的地点从家里转移到上海图书馆，因为里面暖和。上图旁的高安路边，高大的梧桐树掩映成荫，路边是安静的小洋房。深秋时节一场雨后，满地落叶金黄，极美。从此那幅画面定格在我脑海里，成为上海秋天挥之不去的记忆。&lt;br /&gt;&lt;br /&gt;我仍在海量的投简历，回音却寥寥。谁敢用一个毕业不到两年、又没有连续的实际工作经验的新手呢？投出100份简历，顶多只有4、5家愿意给我面试机会。&lt;br /&gt;&lt;br /&gt;我进退维谷，每次给家里打电话时都报喜不报忧。身上的3000元钱已经花得差不多了，我不想开口找L要，因为他也失业了。但如果这样继续下去，我无法在上海生存，只能回家。这意味着与L分离。&lt;br /&gt;&lt;br /&gt;我不愿意。&lt;br /&gt;&lt;br /&gt;我横下一条心，继续找工作。屡战屡败，屡败屡战。后来，每当有人说起什么什么公司时，我能马上报出它在哪栋写字楼里。同事惊异于我的记忆力，其实我记性很差，但我记得那年的冬天，我穿着单薄的衣裤和高跟鞋（为了保持面试形象），咬着牙每天在寒风中奔波，跑遍了上海所有的写字楼，为了能留在上海，和L在一起。&lt;br /&gt;&lt;br /&gt;有一次面试，已经到最后一轮了，我以为胜券在握。但当消息出来的那天，我才发现最后入围的不是我。我的心理防线顿时决堤，不顾形象的在街角大哭起来。哭完了给L发短信，L啥也没说，只回了一句话&amp;#8220;明天是元旦，回来我给你做好吃的&amp;#8221;。&lt;br /&gt;&lt;br /&gt;是啊，明天是新年，我怎么不记得了呢？我去剪了个头发，然后回家。在地铁上想起这几个月的艰难，又忍不住哭起来。车厢里对面的人向我投来诧异的目光。地铁从地下驶入地面，上海南站到了。我擦干眼泪，我不要让L知道我在外面哭过。&lt;br /&gt;&lt;br /&gt;回到家，L见到我，乐呵呵的。&amp;#8220;呀，小宝剪了个小短头！真可爱。&amp;#8221;我才看到桌上放着绞好的肉馅和饺子皮，L正在包饺子。&amp;#8220;外面卖的水饺不干净，我买了肉和白菜让人绞的。咱们自己包。&amp;#8221;L说。我努力挤出笑容，坐下来和L一起包饺子。&lt;br /&gt;&lt;br /&gt;L 去下饺子的时候，我突然看见桌上有张被书盖着的贺年卡。我好奇的拿起来看，发现是L写给前女友的。没什么缠绵的话语，无非是祝你新年快乐之类的。但我天蝎座的独占欲被刺激到了，很不高兴。我承认我小心眼，还有点自卑。因为L跟我说过那个女生在大学里就很优秀，现在做得也很好;而我，现在什么都不是。&lt;br /&gt;&lt;br /&gt;L好像看出了什么，有点尴尬的过来哄我。女人就是好哄，一会儿我又高兴起来。毕竟此时，L在我身边，我什么都不用担心不用怕。&lt;br /&gt;&lt;br /&gt;第二天早起，L带我去新天地玩。2003年的第一天是个大晴天，阳光很好。L在前面走着，我在后面跟着。过马路时L回过头来，怕我跟丢了。他伸出手：&amp;#8220;来，小宝，牵着我的手。&amp;#8221;&lt;br /&gt;&lt;br /&gt;我把手放在他大大厚厚的手掌里，像只兔子一样在他旁边蹦来蹦去。&lt;br /&gt;&lt;br /&gt;很多年后我仍然记得这个细节。&lt;br /&gt;&lt;br /&gt;L要走了，回去帮他大哥做生意。&lt;br /&gt;&lt;br /&gt;他不是没跟我说过。他大哥来上海找过他几次，当时L还是很想留在上海的，手头也有好几个面试机会正在准备。但渐渐的，L找工作也不顺利，他犹豫起来。闲着也是闲着，不如回去做点事。&lt;br /&gt;&lt;br /&gt;L说，他以后还是要回上海的，毕竟户口在这里。&lt;br /&gt;&lt;br /&gt;为了留在上海跟你在一起，我那么辛苦都一直扛着，这算什么事？但我没说什么，毕竟他是去做事，男人有男人的打算。我想我也没权利、没身份、没资格要求他留下来。大难当头夫妻都各自飞，何况我们只是相濡以沫的一对小情侣。&lt;br /&gt;&lt;br /&gt;临走的前一晚，L一言不发。我搂着他的头发，紧紧的抱着他。我要记住他的眼睛，他的头发。&lt;br /&gt;&lt;br /&gt;第二天一早起来我就耷拉着脸，闷闷不乐。L千方百计逗我笑，我实在笑不出来。我给他做了他最喜欢吃的番茄炒蛋，又从外面买了几盘小菜。他指着那盘番茄炒蛋竖起大拇指：&amp;#8220;真好吃！比其它几盘都好吃！&amp;#8221;&lt;br /&gt;&lt;br /&gt;火车是晚上7点。车站里，我们面对面的站着，不知道该说什么。L像往常一样伸出双手，&amp;#8220;来，小宝，抱抱&amp;#8221;，把我像小鸡一样拎起来熊抱了一下。我没有眼泪，没有一句话，我的喉咙堵得发痛，我只能抱着他，用尽全身力气。&lt;br /&gt;&lt;br /&gt;L在火车开动的时候上车了，我头也不回的转身就走，我无法忍受目送火车远去。转身那一刹那我的眼泪终于如闸门释放般迸发，哭着走出了火车站。我不知道L有没有看见。&lt;br /&gt;&lt;br /&gt;在车站等车回家时我掏出手机，发现有一条新短信，L发的，在火车开动的那一刻。&amp;#8220;再见，我的小宝。&amp;#8221;&lt;br /&gt;&lt;br /&gt;我的眼泪再度决堤。&lt;br /&gt;&lt;br /&gt;我只以为这只是次再见，却没想到会是永诀。&lt;br /&gt;&lt;br /&gt;从此以后我再也不愿意对我喜欢的人说&amp;#8220;再见&amp;#8221;，我宁愿说&amp;#8220;后会有期&amp;#8221;。&lt;br /&gt;&lt;br /&gt;L走以后，日子艰难。&lt;br /&gt;&lt;br /&gt;回家推开门，一片漆黑，再也没有灯光迎接我。L的房间空荡荡，没有人坐在那里抬头对我笑，&amp;#8220;小宝回来啦&amp;#8221;。我也再不用竖起耳朵听门锁的动静，然后像只猫一样窜到门口开门。&lt;br /&gt;&lt;br /&gt;从此我就孤单单一个人了。&lt;br /&gt;&lt;br /&gt;我很不习惯。L的房间我一直没动，所有的物品都还是他走时候的样子。他的毛巾、牙刷都一直摆在那里。他会回来的。&lt;br /&gt;&lt;br /&gt;我继续找工作。过年了，我不想回家，怕爸妈问起近况无言以对。大年三十我还是在图书馆度过的，因为那里有空调，比家里暖和多了。图书馆关门后我在外面的小饭馆要了盘松仁玉米当年夜饭。身上快没钱了，还要交房租，得省着点。吃饭中间L给我打了个电话祝我新年快乐。吃完饭后我就回家了，没有电视，九点就上床睡觉了，直到半夜11点半被窗外的鞭炮声吵醒。我才知道原来上海的春节是可以放鞭炮的，真好。&lt;br /&gt;&lt;br /&gt;我开始整晚整晚的做噩梦，梦见交不起房租被人赶出去，房东上门来抄家。很多年后即使我一个人住在90平米一应俱全的套间，社区环境优美，生活无虞，有时半夜还是会被同样的梦境吓醒。&lt;br /&gt;&lt;br /&gt;03年的冬天，刻骨的寒冷。&lt;br /&gt;&lt;br /&gt;年后的工作机会多起来。我投了一家国内服装企业的职位，不走寻常路的那个。职位和薪水都不高，但我喜欢那份工作，比较有挑战性，应该能学到很多东西。&lt;br /&gt;&lt;br /&gt;最后一轮面试见他们的市场总监。有道题目是&amp;#8220;项羽、诸葛亮、刘邦，你最喜欢哪个？&amp;#8221;我写的答案是&amp;#8220;刘邦&amp;#8221;。市场总监看到答案，眉毛扬了一下，问我为什么。我说，项羽英勇神武，但有胆无谋，弃范增而不用，终难不败;诸葛亮好谋善断，但事事亲力而为最后累死了，又没有培养后备力量来接替他的位置;刘邦虽然看起来一介莽夫，却懂得善用调拨各类谋士，文有萧何张良，武有韩信，运筹帷幄即可决胜千里，终成大业。&lt;br /&gt;&lt;br /&gt;市场总监笑了一下。&lt;br /&gt;&lt;br /&gt;第二天，HR通知我面试通过了，准备来上班。上班之前先去体检。&lt;br /&gt;&lt;br /&gt;我很开心，失业半年以后终于有了个工作机会。钱不多但至少我有收入来源了。&lt;br /&gt;&lt;br /&gt;我马上去体检，然后把体检报告交给HR，等着接下来签合同上班。&lt;br /&gt;&lt;br /&gt;等了很久，HR才出来，黑着脸把体检报告摔在我面前。我记得她那个动作，是摔。&lt;br /&gt;&lt;br /&gt;&amp;#8220;我们不能雇用你&amp;#8221;，她指着报告大声说，&amp;#8220;你有乙肝！会传染的！&amp;#8221;乙肝两个字她说得特别重，气愤的声调好似我得的是艾滋病。&lt;br /&gt;&lt;br /&gt;我傻眼了。她接下来说了什么我完全不记得，过了一会儿，我拿着体检报告，默默的低着头走了。HR小姐的表情让我觉得自己是个罪人，很羞耻。&lt;br /&gt;&lt;br /&gt;我没哭，我被彻底震傻了，我不信。为什么我一直不知道我有乙肝？如果会传染，为什么我第一份工作体检的时候，别人没拒掉我？&lt;br /&gt;&lt;br /&gt;我拿着体检报告去医院，医生拿过报告看了一眼说&amp;#8220;肝功能正常，你再做个两对半检查吧。&amp;#8221;&lt;br /&gt;&lt;br /&gt;第二天去拿乙肝五项指标报告，我看不懂，问医生是什么意思。医生说是典型的小三阳，乙肝病毒携带。&lt;br /&gt;&lt;br /&gt;&amp;#8220;会传染么？我面试的单位说我会传染，把我拒了。&amp;#8221;医生面露难色，说&amp;#8220;传染是不会的，因为你肝功能正常。但有些单位是卡得很严的，这个没办法。&amp;#8221;&lt;br /&gt;&lt;br /&gt;我问医生能治么？医生说现在的医学条件没有药可治，只要得过乙肝，就会终身携带病菌。但只要保持良好的生活习惯，不让它转成大三阳就可以了，对正常生活没有影响。&lt;br /&gt;&lt;br /&gt;我渐渐想起小时候和妈妈一起吃药，药盒上写着&amp;#8220;肝XX&amp;#8221;的字样。那时年纪太小，吃药吃了一年后爸妈就没再让我吃了，后来我也就不记得了。&lt;br /&gt;&lt;br /&gt;这么多年，家里一直没告诉我。&lt;br /&gt;&lt;br /&gt;我想起大学毕业时，学校医务室把我单独叫去，说我体检结果肝有一点问题，但不影响工作和以后的生活。我也就没放在心上。毕竟这么多年我一直健健康康活蹦乱跳，从来没有什么不舒服的地方，从中学到大学都是校运动会中长跑的绝对主力，能有什么问题？&lt;br /&gt;&lt;br /&gt;这么多年，没有人告诉我小三阳会有这么严重的后果。&lt;br /&gt;&lt;br /&gt;一年以后，浙江的&amp;#8220;周一超杀人案&amp;#8221;轰动全国，三千多人联名上书为他求情。此案也成为乙肝患者维权的开始。我不赞成用这种极端的方式解决问题，但我完全理解周同学的无奈。有人说找不到这份工作可以找下一份嘛，但当时&amp;#8220;公务员不招小三阳患者&amp;#8221;是写在国家政策里的，而绝大部分公司都是以国家政策为范本的。到哪里去找下一家？&lt;br /&gt;&lt;br /&gt;那是一种无形的歧视，所有的门都对你关闭了，没有出路。就算他们不因为乙肝而拒绝录用，也可以拿别的理由拒绝你。找不到工作意味着没有收入，没有收入意味着没有饭吃，没有饭吃意味着等死。事情就是这么简单。&lt;br /&gt;&lt;br /&gt;很讽刺。一边所有的医生都会告诉你小三阳不会传染不影响正常生活，一边你又因为这个原因四处碰壁投诉无门，然后回头医生又告诉你小三阳终身携带无药可治。结论就是&amp;#8212;&amp;#8212;这辈子就这样了，你看着办吧。&lt;br /&gt;&lt;br /&gt;我毕业后的第一间公司是一家大型正规民营企业，没有因为我是小三阳而不录用我。因此我也从来不知道小三阳也会成为被拒绝的理由。&lt;br /&gt;&lt;br /&gt;后来工作顺利后我一直在世界五百强公司工作。外企的反歧视政策很严格，如果员工因为不影响正常工作的健康原因而被不公平对待，员工是可以起诉的&amp;#8212;&amp;#8212;至少白纸黑字的条款这么写。&lt;br /&gt;&lt;br /&gt;以后我再也没有因为小三阳而影响工作。这也成为我拼命努力工作的动力之一：没有办法改变自己的身份，我就只能拼命做到优秀优秀再优秀，优秀到别人没办法拿我的健康为借口来挡我&amp;#8212;&amp;#8212;否则他们会损失很大，因为没有人比我工作更出色。&lt;br /&gt;&lt;br /&gt;那位&amp;#8220;不走寻常路&amp;#8221;的HR小姐把体检报告摔在我面前的黑脸模样，我一辈子都忘不了。我不恨她，每个人都有自己的压力。但她不必对我这种态度。&lt;br /&gt;&lt;br /&gt;从医院出来，我只觉得我完了，半年来熬得那么辛苦，无数次面试都没有成功，唯一一个成功的面试居然因为这个莫名其妙的原因而失去了机会。&lt;br /&gt;&lt;br /&gt;我哭着给L发短信，告诉他我因为小三阳而丢掉了到手的offer。&lt;br /&gt;&lt;br /&gt;这是第一次，L没回我的短信。&lt;br /&gt;&lt;br /&gt;情人节到了，我从早等到晚，L没有电话，没有短信。&lt;br /&gt;&lt;br /&gt;情人节的夜晚，马路上热热闹闹的。我面试完后坐公交从浦东回浦西，车里只有寥寥几人。公交广播里，电台放的是范逸臣的《I Believe》。&lt;br /&gt;&lt;br /&gt;I Believe　当我在你家门口　下雨了　你看了也会难过&lt;br /&gt;&lt;br /&gt;I Believe　你不说话的时候　也是一种　其实你在回应我&lt;br /&gt;&lt;br /&gt;虽然不曾说　相信你正在懂　就算牵的不是我的手　我不真的难过&lt;br /&gt;&lt;br /&gt;我到现在都很怕听到这首歌，每次听到时心都忍不住抽搐，想起03年的情人节，我坐在公交里望着窗外，眼泪不停的流。&lt;br /&gt;&lt;br /&gt;L的短信越来越少，也不给我打电话了。问起的时候只是淡淡的说&amp;#8220;我很忙&amp;#8221;。&lt;br /&gt;&lt;br /&gt;我总觉得哪里不对，但又不知道为什么，也许他真的很忙吧。&lt;br /&gt;&lt;br /&gt;年前我投了一家五百强公司的简历。第一关HR面试通过，第二轮是新加坡总部打来的电话面试，我准备充分，表现非常好，新加坡人很满意。第三轮面试约在年后。&lt;br /&gt;&lt;br /&gt;我和L之间，越来越僵硬。有次说到什么的时候他很不耐烦，发来一条短信&amp;#8220;以后不要骚扰我&amp;#8221;。&lt;br /&gt;&lt;br /&gt;他用的是&amp;#8220;骚扰&amp;#8221;这个词。&lt;br /&gt;&lt;br /&gt;我愣住了，惊诧，莫名其妙。我不能理解为什么一个月前他叫我&amp;#8220;小宝&amp;#8221;，然后渐渐冷掉，而现在觉得我在骚扰他。&lt;br /&gt;&lt;br /&gt;我问怎么回事，L发短信&amp;#8220;你很烦你知道吗？你有肝病。&amp;#8221;&lt;br /&gt;&lt;br /&gt;L说&amp;#8220;就是这样了，我们分手吧，以后不要再找我了。&amp;#8221;&lt;br /&gt;&lt;br /&gt;我觉得很虚弱，浑身哆嗦。我震惊，我无法接受，但这是现实，L不要我了。&lt;br /&gt;&lt;br /&gt;现实还有下午两点我有那个重要的面试，没有时间给我嚎啕大哭，没有时间给我消沉。我必须拿出最好的状态，精神抖擞的去面试。&lt;br /&gt;&lt;br /&gt;电视剧和小说里常看到女主角痛哭一场后振作起来重新奋斗，我总以为那是编的。人的情绪怎么可能转换得那么快，背后留下的伤口还在滴血，怎么就能立刻转身以微笑示人。&lt;br /&gt;&lt;br /&gt;但现在我知道是真的了，而且我居然连痛哭都没有。也许是因为当时已经彻底傻掉。我的脑海里只有一个念头：我必须拿下那个面试，不然我会没有饭吃交不起房租。这完全是潜意识，是人求生的本能，情啊爱啊只有在脑子清醒的时候才会去考虑，我当时已经脑子懵了。&lt;br /&gt;&lt;br /&gt;我觉得我适合去演电视剧。下午的那个面试我居然可以神采奕奕谈笑风生，我都怀疑我是不是没心没肺到极点了。&lt;br /&gt;&lt;br /&gt;但从此我发现我的记忆力变得很差，容易精神恍惚，很难集中注意力。脑海里有块总是空白，讯息跳不过去，或者跳过去后就一闪而逝无法捕捉。大概我脑子里有根筋在那天被抽走了，苦笑。&lt;br /&gt;&lt;br /&gt;那真是改变我命运的一天，一切都天翻地覆。&lt;br /&gt;&lt;br /&gt;我拿到了offer，那个工作机会让我入行，是我职业生涯的开始。&lt;br /&gt;&lt;br /&gt;我有饭吃，交得起房租了。&lt;br /&gt;&lt;br /&gt;L永远离开我了。&lt;br /&gt;&lt;br /&gt;很多年后我回想起来，总觉得那个offer是老天给我的。类似于武侠小说里男主角被人追杀掉下山崖后总能被一棵树挡住，还能在树旁边的山洞里捡到一本武功秘笈。老天不想看我被逼到绝路。&lt;br /&gt;&lt;br /&gt;那个天翻地覆的一天过去后，我慢慢清醒过来，开始努力把事情前后串起来。L很忙&amp;#8212;&amp;#8212;得知我有乙肝&amp;#8212;&amp;#8212;他觉得我一直在骗他&amp;#8212;&amp;#8212;他怕传染&amp;#8212;&amp;#8212;于是他不理我了。就这么简单？不对，我记忆里的L不是这个样子的，他一直对我那么好。这不符合逻辑。&lt;br /&gt;&lt;br /&gt;我缺根筋的脑子串了六年，到现在也没串出给让我自己满意的答案。&lt;br /&gt;&lt;br /&gt;03年的春天不平静。非典，张国荣自杀，一片凄风惨雨的。我每天坐轻轨上下班，车厢里人少得可怜，空调吹得我直哆嗦。苍白、冷，是我对那个春天的记忆。&lt;br /&gt;&lt;br /&gt;我工作很努力，失业八个月后才得到一个工作机会，还是在这么好的公司，我格外珍惜。&lt;br /&gt;&lt;br /&gt;但下班后，我总是陷入痴呆状态。&lt;br /&gt;&lt;br /&gt;我想知道为什么一眨眼就会变成这个样子，没有人告诉我。&lt;br /&gt;&lt;br /&gt;我想知道这些为什么会发生在我身上，没有人告诉我。&lt;br /&gt;&lt;br /&gt;我想知道将来我该怎么办，没有人告诉我。&lt;br /&gt;&lt;br /&gt;我二十多年理想的生活模式就是找份好工作，然后谈恋爱，然后结婚生孩子。可现在L因为我的病离开了，医生告诉我这个病终身携带无药可医。我还谈恋爱么？我还结婚么？不结婚我三十多岁四十多岁的时候怎么过？不结婚就没有孩子，那我老了怎么办？&lt;br /&gt;&lt;br /&gt;没有人告诉我答案，没有人告诉我以后该用一种什么样的模式生活，我像只无头苍蝇一样茫然。&lt;br /&gt;&lt;br /&gt;但是每天的日子还得过，我总不能去死吧？我开始疯狂的工作，加班，让自己没有时间去想别的东西，因为我得不到答案。&lt;br /&gt;&lt;br /&gt;我的工作越来越出色，内心却在一点点的坍塌。&lt;br /&gt;&lt;br /&gt;一个夏天，我体重掉了20斤。八月去北京出差，好友的母亲见到我，大骇。&amp;#8220;这孩子在上海受苦啊！瘦得像纸片一样，脸色煞白。&amp;#8221;&lt;br /&gt;&lt;br /&gt;那一年，我二十三岁。&lt;br /&gt;&lt;br /&gt;我不怨L。今天写下这些文字时，我仍是踌躇的，担心身边一些原本不知情的朋友看了，会和L一样远离我。我知道这个社会对于这个群体的宽容度有限。曾经，在某家公司任职时，我没有向公司隐瞒我小三阳的事实，但当我离开那家公司时，我才知道，看过我健康档案的行政小姐将我的事情到处对人说。&lt;br /&gt;&lt;br /&gt;有哥们跟我说，不要紧，一个爱你的男人不会计较这些的。我反问他们，如果是你的女朋友，你作何感想？他们开始犹豫&amp;#8220;那我还是要考虑考虑的&amp;#8221;。&lt;br /&gt;&lt;br /&gt;我笑。是啊，这个世界谁离不开谁，又何苦要为一个人去承担如此多的不必要的麻烦。每个人都有那么多选择的机会，多一个人少一个人无甚区别。&lt;br /&gt;&lt;br /&gt;曾经，我在火车上遇到一个和L很像的男生，相谈甚欢。后来也有交往。因为L的前车之鉴，我向他说了我的情况。他说&amp;#8220;我是家里独子，还要抚养母亲&amp;#8221;，就此消失不见。&lt;br /&gt;&lt;br /&gt;我不知道这些会不会成为我一辈子的枷锁，即使是，我也无能为力。&lt;br /&gt;&lt;br /&gt;我开始看佛书。&lt;br /&gt;&lt;br /&gt;我终于明白为什么那么多人笃信真主、上帝、佛祖这些虚无缥缈的东西。有门信仰是好的，它能帮你阐释一些你永远无法解释的事，也能让你恪守一些无法坚持下去的信念。&lt;br /&gt;&lt;br /&gt;佛说世事轮回，前因后果，前世是今生的因，今生是前世的果。我想我也许我上辈子亏欠了L，所以今生偿还。还完了，我下辈子就不会再受那么多苦了。这个想法让我不再追问为什么，也不再恨L。是的，现在回想起来，我经常会忘记他曾经那么深的伤害过我，无论有心还是无意。反而，我总记得和他在一起的纯真岁月，那是我为数不多的幸福时光。&lt;br /&gt;&lt;br /&gt;后来我读到《上海的金枝玉叶》，那个曾经锦衣玉食的女子，经历三十多年的磨难，却并没有心怀怨恨，依旧美丽、优雅、乐观，始终保持着自尊和骄傲。&amp;#8220;要是生活真的想给我什么，我就收下它们。&amp;#8221;&lt;br /&gt;&lt;br /&gt;我很庆幸自己在变成一张囧字脸满腹牢骚的怨妇之前，读到了这本书。它让我看到风浪中可以怎样经历自己的人生，可以怎样坚持自己的纯净和自己的生活方式，在漫长生活中可以怎样护卫一颗自由的心，在生活大起与大落的时候，让它都是温暖的、自在的。&lt;br /&gt;&lt;br /&gt;我试着用纯净简单的眼睛去看世界，接受上天安排的无常。一朵花凋谢时，你不会太难过，因为你知道花开易谢，原本无常。人生也是如此，世间无完美，更无永恒，但可以把握当下。一辈子很短，每一天都要有意义。&lt;br /&gt;&lt;br /&gt;04年的冬天我去了赵州禅寺，在寺里挂单，听暮鼓晨钟，和僧众一起诵经上早课。钟声在郊外的夜里悠扬清远，我忽然明白原来简单是这样容易的事。我从起点回到了原点，画了一个圆。内心释然。&lt;br /&gt;&lt;br /&gt;此后工作一切顺利，我非常努力。沪上每个女白领的故事，都能写成一本杜拉拉升职记，而且情节更跌宕起伏精彩绝伦。几年后的夏天，两个猎头为了同一个职位在同一天找到我。我北上去了北京，带着两只猫。&lt;br /&gt;&lt;br /&gt;此时距离我第一次来上海，已经整整五年，我的薪水涨了30倍。这在北京上海并不算很高的收入，也不是值得夸耀的资本。但我很自豪，因为我对得起曾经的失去与付出。&lt;br /&gt;&lt;br /&gt;记得曾经跟L说过我想环游世界，我正在陆续实现自己的梦想。在吴哥窟的Ta Phrom寺，我没有秘密可以埋进树洞，只是在心底默默许愿，望岁月静好，现世安稳。&lt;br /&gt;&lt;br /&gt;我喜欢北京。它让我觉得好似脱胎换骨。玩摄影，听音乐会，看话剧，出去旅游&amp;#8230;&amp;#8230;恣意的过着每一天。遇到喜欢的男人，微笑的看着，告诉自己即使不能拥有，至少在他身边的分分秒秒都要快乐。爱上一个人的瞬间，是会永远永远留在心里的。这瞬间，便是黑夜里点亮的一盏明灯，会让心中柔软，变得美好。&lt;br /&gt;&lt;br /&gt;我定居了。去看家具的时候，身边全是一对对情侣。销售小姐跟着我，小心翼翼的问&amp;#8220;您是&amp;#8230;&amp;#8230;一个人过来看？&amp;#8221;我点头：&amp;#8220;嗯，我自己的房子。&amp;#8221;&lt;br /&gt;&lt;br /&gt;　是的，我自己的窝，不用再经受颠沛流离。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;多好。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;------ 以此纪念上海五年。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lingxzg/aggbug/2342825.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lingxzg/archive/2012/02/08/2342825.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lingxzg/archive/2011/12/27/2303487.html</id><title type="text">gridview 模板列，调用 js</title><summary type="text">OnClientClick=&lt;%#"Test('"+ DataBinder.Eval(Container.DataItem,"GetupTime")+"')"%&gt;</summary><published>2011-12-27T06:04:00Z</published><updated>2011-12-27T06:04:00Z</updated><author><name>凌寒飘香</name><uri>http://www.cnblogs.com/lingxzg/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lingxzg/archive/2011/12/27/2303487.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lingxzg/archive/2011/12/27/2303487.html"/><content type="html">OnClientClick=&amp;lt;%#"Test('"+ DataBinder.Eval(Container.DataItem,"GetupTime")+"')"%&amp;gt;&lt;img src="http://www.cnblogs.com/lingxzg/aggbug/2303487.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lingxzg/archive/2011/12/27/2303487.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lingxzg/archive/2011/10/14/2211260.html</id><title type="text">人类的奇怪之处</title><summary type="text">弟子问老师：＂您能谈谈人类的奇怪之处吗？＂老师答道：“他们急于成长，然后又哀叹失去的童年；他们以健康换取金钱，不久后又想用金钱恢复健康。他们对未来焦虑不已，却又无视现在的幸福。因此，他们既不活在当下，也不活在未来。他们活着仿佛从来不会死亡；临死前,又仿佛他们从未活过。”</summary><published>2011-10-14T02:34:00Z</published><updated>2011-10-14T02:34:00Z</updated><author><name>凌寒飘香</name><uri>http://www.cnblogs.com/lingxzg/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lingxzg/archive/2011/10/14/2211260.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lingxzg/archive/2011/10/14/2211260.html"/><content type="html">&lt;span style="font-size: 12px;"&gt;弟子问老师：＂您能谈谈人类的奇怪之处吗？＂老师答道：&amp;#8220;他们急于成长，然后又哀叹失去的童年；他们以健康换取金钱，不久后又想用金钱恢复健康。他们对未来焦虑不已，却又无视现在的幸福。因此，他们既不活在当下，也不活在未来。他们活着仿佛从来不会死亡；临死前,又仿佛他们从未活过。&amp;#8221;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/lingxzg/aggbug/2211260.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lingxzg/archive/2011/10/14/2211260.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lingxzg/archive/2011/10/11/2206967.html</id><title type="text">win7 &amp;amp; IIS7.5 HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本，因而将无法由静态</title><summary type="text">C:\Windows\Microsoft.NET\Framework\v4.0.30319&gt;aspnet_regiis.exe -i</summary><published>2011-10-11T03:01:00Z</published><updated>2011-10-11T03:01:00Z</updated><author><name>凌寒飘香</name><uri>http://www.cnblogs.com/lingxzg/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lingxzg/archive/2011/10/11/2206967.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lingxzg/archive/2011/10/11/2206967.html"/><content type="html">&lt;p&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319&amp;gt;aspnet_regiis.exe -i&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lingxzg/aggbug/2206967.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lingxzg/archive/2011/10/11/2206967.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lingxzg/archive/2011/08/21/2147801.html</id><title type="text">js 日期减去月数、天数、周数</title><summary type="text">&lt;script language="javascript" type="text/javascript"&gt; function setStartDate(day) { AddTime(day, "d"); } function AddTime(AddDate, types) { var EndDate = new Date(document.getElementById("&lt;%=txt_DateEnd.ClientID%&gt;").value.replace(/-/g, "/"</summary><published>2011-08-21T05:59:00Z</published><updated>2011-08-21T05:59:00Z</updated><author><name>凌寒飘香</name><uri>http://www.cnblogs.com/lingxzg/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lingxzg/archive/2011/08/21/2147801.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lingxzg/archive/2011/08/21/2147801.html"/><content type="html"> &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function setStartDate(day) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AddTime(day, "d");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function AddTime(AddDate, types) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var EndDate = new Date(document.getElementById("&amp;lt;%=txt_DateEnd.ClientID%&amp;gt;").value.replace(/-/g, "/"));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var StartDate = new Date(document.getElementById("&amp;lt;%=txt_DateStart.ClientID%&amp;gt;").value.replace(/-/g, "/"));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (types) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "d":&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StartDate = dateAdd('d', AddDate, EndDate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "w":&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StartDate = dateAdd('w', AddDate, EndDate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "m":&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StartDate = dateAdd('m', AddDate, EndDate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var m = StartDate.getMonth() + 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var time = StartDate.getFullYear() + "-" + (m &amp;lt; 10 ? '0' + m : m) + "-" + StartDate.getDate();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.getElementById("&amp;lt;%=txt_DateStart.ClientID%&amp;gt;").value = time;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //日期增加函数&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function dateAdd(strInterval, NumDay, dtTmp) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (dtTmp == null | dtTmp == "")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dtTmp = new Date();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (strInterval) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "h":&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new Date(Date.parse(dtTmp) + (3600000 * NumDay));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "d":&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new Date(Date.parse(dtTmp) + (86400000 * (NumDay + 1)));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "w":&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new Date(Date.parse(dtTmp) + ((86400000 * 7) * NumDay) + 86400000);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "m":&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + NumDay, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "y":&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new Date((dtTmp.getFullYear() + NumDay), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ul&amp;nbsp; id="tags"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:TextBox runat="server" ID="txt_DateStart" Text="2011-08-03"&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:TextBox runat="server" ID="txt_DateEnd" Text="2011-08-09" onblur="setStartDate(-6)"&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;   &lt;img src="http://www.cnblogs.com/lingxzg/aggbug/2147801.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lingxzg/archive/2011/08/21/2147801.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lingxzg/archive/2011/08/21/2147689.html</id><title type="text">添加多个tab，并循环修改tab样式</title><summary type="text">&lt;div class="con"&gt; &lt;ul id="tags"&gt; &lt;li class="selectTag"&gt;&lt;a onclick="selectTag('tagContent0',this)" href="default.aspx" target="repfrm"&gt;第一周 &lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a onclick="selectTag('tag</summary><published>2011-08-21T02:23:00Z</published><updated>2011-08-21T02:23:00Z</updated><author><name>凌寒飘香</name><uri>http://www.cnblogs.com/lingxzg/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lingxzg/archive/2011/08/21/2147689.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lingxzg/archive/2011/08/21/2147689.html"/><content type="html"> &lt;p&gt;&amp;nbsp;&amp;lt;div class="con"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ul id="tags"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li class="selectTag"&amp;gt;&amp;lt;a onclick="selectTag('tagContent0',this)" href="default.aspx"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; target="repfrm"&amp;gt;第一周 &amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a onclick="selectTag('tagContent1',this)" href="OverrideToString.aspx" target="repfrm"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第二周&amp;lt;/a&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a onclick="selectTag('tagContent2',this)" href="CreateTextBoxList.aspx" target="repfrm"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第三周&amp;lt;/a&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a onclick="selectTag('tagContent3',this)" href="PromptDialogBox1.aspx" target="repfrm"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第四周&amp;lt;/a&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a onclick="selectTag('tagContent4',this)" href="ShowFlash.aspx" target="repfrm"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第五周&amp;lt;/a&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;a onclick="selectTag('tagContent5',this)" href="testDoubleY.aspx" target="repfrm"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第六周&amp;lt;/a&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ul&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function selectTag(showContent, selfObj) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 操作标签&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var tag = document.getElementById("tags").getElementsByTagName("li");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var taglength = tag.length;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; taglength; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tag[i].className = "";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selfObj.parentNode.className = "selectTag";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="tagContent" style="height: 695px"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="tagContent selectTag"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;iframe id="repfrm" width="100%" name="repfrm" height="100%"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scrolling="no" src="default.aspx" frameborder="0"&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lingxzg/aggbug/2147689.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lingxzg/archive/2011/08/21/2147689.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lingxzg/archive/2011/04/11/2012049.html</id><title type="text">创业公司CEO每天应该做的13件事(转)，个人感觉，同样有几条也适合于自己，或部门领导。</title><summary type="text">源文地址：http://news.csdn.net/a/20110407/295464.html1.记住你的“一件事”：你的创业公司在一段时间内只能把一件事做好，明确你的“一件事”，写在墙上，每天重复出现在自己眼中，将“一件事”作为公司例会最高级别的事情，不要让任何事情让你和你的团队分心。 2.记住，只有当你的团队优秀时，你才一起优秀：花时间培养你的团队，招聘那些在他们工作上比你曾经做得更棒的 人，激励他们，让他们完成他们从来没想过他们能做到的事情，在引导他们去做“一件事”的同时给他们自由，像对待家人那样对待你的同事，创业不容易，让你的 团队愿意成为公司一员是能够成功的重要因素，创业公司并不.</summary><published>2011-04-11T00:56:00Z</published><updated>2011-04-11T00:56:00Z</updated><author><name>凌寒飘香</name><uri>http://www.cnblogs.com/lingxzg/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lingxzg/archive/2011/04/11/2012049.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lingxzg/archive/2011/04/11/2012049.html"/><content type="html">&lt;p&gt; 源文地址：http://news.csdn.net/a/20110407/295464.html&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;1.记住你的&amp;#8220;一件事&amp;#8221;&lt;/strong&gt;：你的创业公司在一段时间内只能把一件事做好，明确你的&amp;#8220;一件事&amp;#8221;，写在墙上，每天重复出现在自己眼中，将&amp;#8220;一件事&amp;#8221;作为公司例会最高级别的事情，不要让任何事情让你和你的团队分心。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;2.记住，只有当你的团队优秀时，你才一起优秀&lt;/strong&gt;：花时间培养你的团队，招聘那些在他们工作上比你曾经做得更棒的 人，激励他们，让他们完成他们从来没想过他们能做到的事情，在引导他们去做&amp;#8220;一件事&amp;#8221;的同时给他们自由，像对待家人那样对待你的同事，创业不容易，让你的 团队愿意成为公司一员是能够成功的重要因素，创业公司并不只是一个工作的地方，更是一种生活的方式，作为CEO，你的工作不是把每个人的工作都做了，你的 工作是帮助他们把工作做得更好，确保定期给你的主管们反馈，告诉他们你的期望，需要他们改进哪些地方。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;3.设定风格&lt;/strong&gt;：每个人&amp;#8212;&amp;#8212;你的同事，客户，合作伙伴，投资者，你的Twitter和Facebook关注者&amp;#8212;&amp;#8212; 都会从你身上得到暗示。从你公司的增值速度，数据，创新，客户服务直到公司文化都会反映出你作为一个CEO的职能。所以，不要做一个粗鲁的混蛋，付出行 动，如果你希望人们想到你公司时是按照你想让他们想的那样，你需要付出行动并从个人做起。如果你自己无精打采，你的公司也会；如果你忘记微笑，你的公司也 会；如果你缺乏耐心，你的公司也会；如果你不说请和谢谢，你的公司也会。公司高于每个人，但公司是由每个人和每个人的工作风格反映出来的，而你是领导者。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;4.花至少75%的个人时间在你的产品上&lt;/strong&gt;：只有当你的产品优秀的时候，你的公司才能优秀，亲自参与管理功能和用 户利益，我的观点是CEO必须是首席产品官，作为CEO你必须为屏幕上每一个像素负责，我知道这听起来有点过了，但是你的产品是你们所有努力工作对用户的 输出，所以它的每个功能都应该反映出你们的目标和目的。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;5.审视数字&lt;/strong&gt;：我不是在谈论预算和现金流，而是一些关键指标，每周发一封邮件给你的团队，提炼出那些影响公司业务的关键数据，亲自写这封邮件，写邮件会强迫你自己去挖掘和分析你的数据，真正拥有那些数据，让你的工作能够确保公司的每个人都能专注在那些能给公司带来业务的数字上。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;6.锻炼&lt;/strong&gt;：我实在忍不住要强调这一点，让自己每周去至少4次健身房，最好是5-6次，锻炼能给你能力和耐心去解 决复杂的问题，作为CEO对身体是很大的挑战，让健身房作为一个使自己头脑清醒和保持快活的一种方式，如果你还没有这么做，我保证去了之后你会震惊的，当 你有规律的出去锻炼你会发现生活是多么的容易！离开你的键盘，去健身！&lt;/p&gt; &lt;p&gt;&lt;strong&gt;7.要求反馈&lt;/strong&gt;：你猜怎样？你并不像你认为的那样聪明，你会犯错误，去问你的雇员，你的客户，你的合作伙伴等，确保你的管理团队中有一个人敢直言不讳，确保你有一个董事会之外的成员或朋友能够给在公司发展上给你提供建议（例如在融资上，董事会管理上）。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;8.离开办公室&lt;/strong&gt;：人们太容易生活躲在键盘后面，生活在收件箱里，离开办公室，去和你真正的客户，合作伙伴，供应商，博主们讨论。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;9.写博客，写微博，阅读，参与CEO论坛&lt;/strong&gt;：写类似于这篇的文章，分享你学到的经验教训，和你工作的技巧等，不要担心没人看，从网络中获得反馈，阅读Hacker News，看其他创业者和科技极客们在分享什么，利用投资者的网络从其他CEO那里获得建议。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;10.管理现金&lt;/strong&gt;：现金是你的生命线，你必须一直清楚你还剩多少现金，能够你维持你多久，什么样的决定会影响你的现金状况，不要等到需要钱的时候才去融资。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;11.像投资者一样去做&lt;/strong&gt;：在每周结束的时候，问问你自己下面的问题：我们这周所做的提升了我们的价值么？过去的一周你对时间的投资回报率是多少？如果你连续2周或者一个月内有2周没有一个积极的投资回报率，你可能就在做错误的事情了。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;12.享受乐趣&lt;/strong&gt;：这很难，需要很大的精力，确保每一天都是愉快的一天，即使很糟糕的一天也需要一下乐趣，如果你觉得不快乐，你可能在作错误的事情，我最喜欢的一句格言：成熟，但不要长大。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;13.爱&lt;/strong&gt;：爱你的公司，爱你的同事，爱你的投资者，爱你的合作伙伴，爱你的供应商，但最重要的是，爱呆在家里等你的人&amp;#8212;&amp;#8212;那些支持你让你能够日复一日战斗在最前线的人！&lt;/p&gt;&lt;/div&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lingxzg/aggbug/2012049.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lingxzg/archive/2011/04/11/2012049.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lingxzg/archive/2011/04/10/2011705.html</id><title type="text">Windows2003系统不识别佳能相机的解决方法(转)</title><summary type="text">源文地址http://www.pcyyjs.com/sys/2003/2840/Windows2003系统不认佳能相机的原因是因为系统默认关闭了“Windows Image Acquisition (WIA)”服务，故把开启该服务即可。 把系统的图像服务开启即可，方法如下： 打开管理工具/服务，找到Windows Image Acquisition (WIA)，将其设置为自动，并启用。</summary><published>2011-04-10T09:22:00Z</published><updated>2011-04-10T09:22:00Z</updated><author><name>凌寒飘香</name><uri>http://www.cnblogs.com/lingxzg/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lingxzg/archive/2011/04/10/2011705.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lingxzg/archive/2011/04/10/2011705.html"/><content type="html">&lt;p&gt;源文地址&lt;a href="http://www.pcyyjs.com/sys/2003/2840/"&gt;http://www.pcyyjs.com/sys/2003/2840/&lt;/a&gt;&lt;/p&gt;&lt;strong&gt;Windows2003系统不认佳能相机&lt;/strong&gt;的原因是因为系统默认关闭了&amp;#8220;Windows Image Acquisition (WIA)&amp;#8221;服务，故把开启该服务即可。 &lt;p&gt;把系统的图像服务开启即可，方法如下：&lt;/p&gt;&lt;p&gt;打开管理工具/服务，找到Windows Image Acquisition (WIA)，将其设置为自动，并启用。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lingxzg/aggbug/2011705.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lingxzg/archive/2011/04/10/2011705.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lingxzg/archive/2011/03/27/1996807.html</id><title type="text">JQuery常用方法一览(转)</title><summary type="text">[原始地址]：http://topic.csdn.net/u/20100201/16/d6e5cab1-5b22-43c6-9f6b-e2700eb40ff5.htmAttribute：$(”p”).addClass(css中定义的样式类型); 给某个元素添加样式$(”img”).attr({src:”test.jpg”,alt:”test Image”}); 给某个元素添加属性/值，参数是map$(”img”).attr(”src”,”test.jpg”); 给某个元素添加属性/值$(”img”).attr(”title”, function() { return this.src }); </summary><published>2011-03-27T04:22:00Z</published><updated>2011-03-27T04:22:00Z</updated><author><name>凌寒飘香</name><uri>http://www.cnblogs.com/lingxzg/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lingxzg/archive/2011/03/27/1996807.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lingxzg/archive/2011/03/27/1996807.html"/><content type="html">&lt;div&gt;[原始地址]：&lt;div&gt;http://topic.csdn.net/u/20100201/16/d6e5cab1-5b22-43c6-9f6b-e2700eb40ff5.htm&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;Attribute：&lt;br /&gt;$(&amp;#8221;p&amp;#8221;).addClass(css中定义的样式类型); 给某个元素添加样式&lt;br /&gt;$(&amp;#8221;img&amp;#8221;).attr({src:&amp;#8221;test.jpg&amp;#8221;,alt:&amp;#8221;test Image&amp;#8221;}); 给某个元素添加属性/值，参数是map&lt;br /&gt;$(&amp;#8221;img&amp;#8221;).attr(&amp;#8221;src&amp;#8221;,&amp;#8221;test.jpg&amp;#8221;); 给某个元素添加属性/值&lt;br /&gt;$(&amp;#8221;img&amp;#8221;).attr(&amp;#8221;title&amp;#8221;, function() { return this.src }); 给某个元素添加属性/值&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).html(); 获得该元素内的内容（元素，文本等）&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).html(&amp;#8221;&amp;lt;b&amp;gt;new stuff&amp;lt;/b&amp;gt;&amp;#8221;); 给某元素设置内容&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).removeAttr(&amp;#8221;属性名称&amp;#8221;) 给某元素删除指定的属性以及该属性的值&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).removeClass(&amp;#8221;class&amp;#8221;) 给某元素删除指定的样式&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).text(); 获得该元素的文本&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).text(value); 设置该元素的文本值为value&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).toggleClass(class) 当元素存在参数中的样式的时候取消,如果不存在就设置此样式&lt;br /&gt;$(&amp;#8221;input元素名称&amp;#8221;).val(); 获取input元素的值&lt;br /&gt;$(&amp;#8221;input元素名称&amp;#8221;).val(value); 设置input元素的值为value&lt;br /&gt;Manipulation：&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).after(content); 在匹配元素后面添加内容&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).append(content); 将content作为元素的内容插入到该元素的后面&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).appendTo(content); 在content后接元素&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).before(content); 与after方法相反&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).clone(布尔表达式) 当布尔表达式为真时，克隆元素（无参时，当作true处理）&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).empty() 将该元素的内容设置为空&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).insertAfter(content); 将该元素插入到content之后&lt;br /&gt;$(&amp;#8221;元素名称&amp;#8221;).insertBefore(content); 将该元素插入到content之前&lt;br /&gt;$(&amp;#8221;元素&amp;#8221;).prepend(content); 将content作为该元素的一部分，放到该元素的最前面&lt;br /&gt;$(&amp;#8221;元素&amp;#8221;).prependTo(content); 将该元素作为content的一部分，放content的最前面&lt;br /&gt;$(&amp;#8221;元素&amp;#8221;).remove(); 删除所有的指定元素&lt;br /&gt;$(&amp;#8221;元素&amp;#8221;).remove(&amp;#8221;exp&amp;#8221;); 删除所有含有exp的元素&lt;br /&gt;$(&amp;#8221;元素&amp;#8221;).wrap(&amp;#8221;html&amp;#8221;); 用html来包围该元素&lt;br /&gt;$(&amp;#8221;元素&amp;#8221;).wrap(element); 用element来包围该元素&lt;br /&gt;Traversing：&lt;br /&gt;add(expr)&lt;br /&gt;add(html)&lt;br /&gt;add(elements)&lt;br /&gt;children(expr)&lt;br /&gt;contains(str)&lt;br /&gt;end()&lt;br /&gt;filter(expression)&lt;br /&gt;filter(filter)&lt;br /&gt;find(expr)&lt;br /&gt;is(expr)&lt;br /&gt;next(expr)&lt;br /&gt;not(el)&lt;br /&gt;not(expr)&lt;br /&gt;not(elems)&lt;br /&gt;parent(expr)&lt;br /&gt;parents(expr)&lt;br /&gt;prev(expr)&lt;br /&gt;siblings(expr)&lt;br /&gt;&lt;br /&gt;Core：&lt;br /&gt;$(html).appendTo(&amp;#8221;body&amp;#8221;) 相当于在body中写了一段html代码&lt;br /&gt;$(elems) 获得DOM上的某个元素&lt;br /&gt;$(function(){&amp;#8230;&amp;#8230;..}); 执行一个函数&lt;br /&gt;$(&amp;#8221;div &amp;gt; p&amp;#8221;).css(&amp;#8221;border&amp;#8221;, &amp;#8220;1px solid gray&amp;#8221;); 查找所有div的子节点p，添加样式&lt;br /&gt;$(&amp;#8221;input:radio&amp;#8221;, document.forms[0]) 在当前页面的第一个表单中查找所有的单选按钮&lt;br /&gt;$.extend(prop) prop是一个jquery对象，&lt;br /&gt;举例：&lt;br /&gt;jQuery.extend({&lt;br /&gt;min: function(a, b) { return a &amp;lt; b ? a : b; },&lt;br /&gt;max: function(a, b) { return a &amp;gt; b ? a : b; }&lt;br /&gt;});&lt;br /&gt;jQuery( expression, [context] ) &amp;#8212;$( expression, [context]); 在默认情况下，$()查询的是当前HTML文档中的DOM元素。&lt;br /&gt;&lt;br /&gt;each( callback ) 以每一个匹配的元素作为上下文来执行一个函数&lt;br /&gt;举例：1&lt;br /&gt;$(&amp;#8221;span&amp;#8221;).click(function){&lt;br /&gt;$(&amp;#8221;li&amp;#8221;).each(function(){&lt;br /&gt;$(this).toggleClass(&amp;#8221;example&amp;#8221;);&lt;br /&gt;});&lt;br /&gt;});&lt;br /&gt;举例：2&lt;br /&gt;$(&amp;#8221;button&amp;#8221;).click(function () {&lt;br /&gt;$(&amp;#8221;div&amp;#8221;).each(function (index, domEle) {&lt;br /&gt;// domEle == this&lt;br /&gt;$(domEle).css(&amp;#8221;backgroundColor&amp;#8221;, &amp;#8220;yellow&amp;#8221;);&lt;br /&gt;if ($(this).is(&amp;#8221;#stop&amp;#8221;)) {&lt;br /&gt;$(&amp;#8221;span&amp;#8221;).text(&amp;#8221;Stopped at div index #&amp;#8221; + index);&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;});&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;jQuery Event:&lt;br /&gt;&lt;br /&gt;ready(fn); $(document).ready()注意在body中没有onload事件，否则该函数不能执行。在每个页面中可以&lt;br /&gt;有很多个函数被加载执行，按照fn的顺序来执行。&lt;br /&gt;bind( type, [data], fn ) 为每一个匹配元素的特定事件（像click）绑定一个或多个事件处理器函数。可能的事件属性有：blur, focus, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove,&lt;br /&gt;mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress,&lt;br /&gt;keyup, error&lt;br /&gt;one( type, [data], fn ) 为每一个匹配元素的特定事件（像click）绑定一个或多个事件处理器函数。在每个对&lt;br /&gt;象上，这个事件处理函数只会被执行一次。其他规则与bind()函数相同。&lt;br /&gt;&lt;br /&gt;trigger( type, [data] ) 在每一个匹配的元素上触发某类事件。&lt;br /&gt;triggerHandler( type, [data] ) 这一特定方法会触发一个元素上特定的事件(指定一个事件类型)，同时取消浏览器对此事件的默认行动&lt;br /&gt;unbind( [type], [data] ) 反绑定，从每一个匹配的元素中删除绑定的事件。&lt;br /&gt;$(&amp;#8221;p&amp;#8221;).unbind() 移除所有段落上的所有绑定的事件&lt;br /&gt;$(&amp;#8221;p&amp;#8221;).unbind( &amp;#8220;click&amp;#8221; ) 移除所有段落上的click事件&lt;br /&gt;hover( over, out ) over,out都是方法, 当鼠标移动到一个匹配的元素上面时，会触发指定的第一个函数。当鼠标移出这个元素时，会触发指定的第二个函数。&lt;br /&gt;$(&amp;#8221;p&amp;#8221;).hover(function(){&lt;br /&gt;$(this).addClass(&amp;#8221;over&amp;#8221;);&lt;br /&gt;},&lt;br /&gt;function(){&lt;br /&gt;$(this).addClass(&amp;#8221;out&amp;#8221;);&lt;br /&gt;}&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;toggle( fn, fn ) 如果点击了一个匹配的元素，则触发指定的第一个函数，当再次点击同一元素时，则触发指定的第二个函数。&lt;br /&gt;$(&amp;#8221;p&amp;#8221;).toggle(function(){&lt;br /&gt;$(this).addClass(&amp;#8221;selected&amp;#8221;);&lt;br /&gt;},&lt;br /&gt;function(){&lt;br /&gt;$(this).removeClass(&amp;#8221;selected&amp;#8221;);&lt;br /&gt;}&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;元素事件列表说明&lt;br /&gt;注：不带参数的函数，其参数为可选的 fn。jQuery不支持form元素的reset事件。&lt;br /&gt;事件 描述 支持元素或对象&lt;br /&gt;blur( ) 元素失去焦点 a, input, textarea, button, select, label, map, area&lt;br /&gt;change( ) 用户改变域的内容 input, textarea, select&lt;br /&gt;click( ) 鼠标点击某个对象 几乎所有元素&lt;br /&gt;dblclick( ) 鼠标双击某个对象 几乎所有元素&lt;br /&gt;error( ) 当加载文档或图像时发生某个错误 window, img&lt;br /&gt;focus( ) 元素获得焦点 a, input, textarea, button, select, label, map, area&lt;br /&gt;keydown( ) 某个键盘的键被按下 几乎所有元素&lt;br /&gt;keypress( ) 某个键盘的键被按下或按住 几乎所有元素&lt;br /&gt;keyup( ) 某个键盘的键被松开 几乎所有元素&lt;br /&gt;load( fn ) 某个页面或图像被完成加载 window, img&lt;br /&gt;mousedown( fn ) 某个鼠标按键被按下 几乎所有元素&lt;br /&gt;mousemove( fn ) 鼠标被移动 几乎所有元素&lt;br /&gt;mouseout( fn ) 鼠标从某元素移开 几乎所有元素&lt;br /&gt;mouseover( fn ) 鼠标被移到某元素之上 几乎所有元素&lt;br /&gt;mouseup( fn ) 某个鼠标按键被松开 几乎所有元素&lt;br /&gt;resize( fn ) 窗口或框架被调整尺寸 window, iframe, frame&lt;br /&gt;scroll( fn ) 滚动文档的可视部分时 window&lt;br /&gt;select( ) 文本被选定 document, input, textarea&lt;br /&gt;submit( ) 提交按钮被点击 form&lt;br /&gt;unload( fn ) 用户退出页面 window&lt;br /&gt;&lt;br /&gt;JQuery Ajax 方法说明:&lt;br /&gt;&lt;br /&gt;load( url, [data], [callback] ) 装入一个远程HTML内容到一个DOM结点。&lt;br /&gt;$(&amp;#8221;#feeds&amp;#8221;).load(&amp;#8221;feeds.html&amp;#8221;); 将feeds.html文件载入到id为feeds的div中&lt;br /&gt;$(&amp;#8221;#feeds&amp;#8221;).load(&amp;#8221;feeds.php&amp;#8221;, {limit: 25}, function(){&lt;br /&gt;alert(&amp;#8221;The last 25 entries in the feed have been loaded&amp;#8221;);&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;jQuery.get( url, [data], [callback] ) 使用GET请求一个页面。&lt;br /&gt;$.get(&amp;#8221;test.cgi&amp;#8221;, { name: &amp;#8220;John&amp;#8221;, time: &amp;#8220;2pm&amp;#8221; }, function(data){&lt;br /&gt;alert(&amp;#8221;Data Loaded: &amp;#8221; + data);&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;jQuery.getJSON( url, [data], [callback] ) 使用GET请求JSON数据。&lt;br /&gt;$.getJSON(&amp;#8221;test.js&amp;#8221;, { name: &amp;#8220;John&amp;#8221;, time: &amp;#8220;2pm&amp;#8221; }, function(json){&lt;br /&gt;alert(&amp;#8221;JSON Data: &amp;#8221; + json.users[3].name);&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;jQuery.getScript( url, [callback] ) 使用GET请求javascript文件并执行。&lt;br /&gt;$.getScript(&amp;#8221;test.js&amp;#8221;, function(){&lt;br /&gt;alert(&amp;#8221;Script loaded and executed.&amp;#8221;);&lt;br /&gt;});&lt;br /&gt;jQuery.post( url, [data], [callback], [type] ) 使用POST请求一个页面。&lt;br /&gt;&lt;br /&gt;ajaxComplete( callback ) 当一个AJAX请求结束后，执行一个函数。这是一个Ajax事件&lt;br /&gt;$(&amp;#8221;#msg&amp;#8221;).ajaxComplete(function(request, settings){&lt;br /&gt;$(this).append(&amp;#8221;&amp;lt;li&amp;gt;Request Complete.&amp;lt;/li&amp;gt;&amp;#8221;);&lt;br /&gt;});&lt;br /&gt;ajaxError( callback ) 当一个AJAX请求失败后，执行一个函数。这是一个Ajax事件&lt;br /&gt;$(&amp;#8221;#msg&amp;#8221;).ajaxError(function(request, settings){&lt;br /&gt;$(this).append(&amp;#8221;&amp;lt;li&amp;gt;Error requesting page &amp;#8221; + settings.url + &amp;#8220;&amp;lt;/li&amp;gt;&amp;#8221;);&lt;br /&gt;});&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;ajaxSend( callback ) 在一个AJAX请求发送时，执行一个函数。这是一个Ajax事件&lt;br /&gt;$(&amp;#8221;#msg&amp;#8221;).ajaxSend(function(evt, request, settings){&lt;br /&gt;$(this).append(&amp;#8221;&amp;lt;li&amp;lt;Starting request at &amp;#8221; + settings.url&lt;br /&gt;+ &amp;#8220;&amp;lt;/li&amp;lt;&amp;#8221;);&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;ajaxStart( callback ) 在一个AJAX请求开始但还没有激活时，执行一个函数。这是一个Ajax事件&lt;br /&gt;当AJAX请求开始(并还没有激活时)显示loading信息&lt;br /&gt;$(&amp;#8221;#loading&amp;#8221;).ajaxStart(function(){&lt;br /&gt;$(this).show();&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;ajaxStop( callback ) 当所有的AJAX都停止时，执行一个函数。这是一个Ajax事件&lt;br /&gt;当所有AJAX请求都停止时，隐藏loading信息。&lt;br /&gt;$(&amp;#8221;#loading&amp;#8221;).ajaxStop(function(){&lt;br /&gt;$(this).hide();&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;ajaxSuccess( callback ) 当一个AJAX请求成功完成后，执行一个函数。这是一个Ajax事件&lt;br /&gt;当AJAX请求成功完成时，显示信息。&lt;br /&gt;$(&amp;#8221;#msg&amp;#8221;).ajaxSuccess(function(evt, request, settings){&lt;br /&gt;$(this).append(&amp;#8221;&amp;lt;li&amp;gt;Successful Request!&amp;lt;/li&amp;gt;&amp;#8221;);&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;jQuery.ajaxSetup( options ) 为所有的AJAX请求进行全局设置。查看$.ajax函数取得所有选项信息。&lt;br /&gt;设置默认的全局AJAX请求选项。&lt;br /&gt;$.ajaxSetup({&lt;br /&gt;url: &amp;#8220;/xmlhttp/&amp;#8221;,&lt;br /&gt;global: false,&lt;br /&gt;type: &amp;#8220;POST&amp;#8221;&lt;br /&gt;});&lt;br /&gt;$.ajax({ data: myData });&lt;br /&gt;&lt;br /&gt;serialize( ) 以名称和值的方式连接一组input元素。实现了正确表单元素序列&lt;br /&gt;function showValues() {&lt;br /&gt;var str = $(&amp;#8221;form&amp;#8221;).serialize();&lt;br /&gt;$(&amp;#8221;#results&amp;#8221;).text(str);&lt;br /&gt;}&lt;br /&gt;$(&amp;#8221;:checkbox, :radio&amp;#8221;).click(showValues);&lt;br /&gt;$(&amp;#8221;select&amp;#8221;).change(showValues);&lt;br /&gt;showValues();&lt;br /&gt;&lt;br /&gt;serializeArray( ) 连接所有的表单和表单元素(类似于.serialize()方法)，但是返回一个JSON数据格式。&lt;br /&gt;从form中取得一组值，显示出来&lt;br /&gt;function showValues() {&lt;br /&gt;var fields = $(&amp;#8221;:input&amp;#8221;).serializeArray();&lt;br /&gt;alert(fields);&lt;br /&gt;$(&amp;#8221;#results&amp;#8221;).empty();&lt;br /&gt;jQuery.each(fields, function(i, field){&lt;br /&gt;$(&amp;#8221;#results&amp;#8221;).append(field.value + &amp;#8221; &amp;#8220;);&lt;br /&gt;});&lt;br /&gt;}&lt;br /&gt;$(&amp;#8221;:checkbox, :radio&amp;#8221;).click(showValues);&lt;br /&gt;$(&amp;#8221;select&amp;#8221;).change(showValues);&lt;br /&gt;showValues();&lt;br /&gt;&lt;br /&gt;JQuery Effects 方法说明&lt;br /&gt;&lt;br /&gt;show( ) 显示隐藏的匹配元素。&lt;br /&gt;show( speed, [callback] ) 以优雅的动画显示所有匹配的元素，并在显示完成后可选地触发一个回调函数。&lt;br /&gt;hide( ) 隐藏所有的匹配元素。&lt;br /&gt;hide( speed, [callback] ) 以优雅的动画隐藏所有匹配的元素，并在显示完成后可选地触发一个回调函数&lt;br /&gt;toggle( ) 切换元素的可见状态。如果元素是可见的，切换为隐藏的；如果元素是隐藏的，&lt;br /&gt;切换为可见的。&lt;br /&gt;slideDown( speed, [callback] ) 通过高度变化（向下增大）来动态地显示所有匹配的元素，在显示完成后可选&lt;br /&gt;地触发一个回调函数。这个动画效果只调整元素的高度，可以使匹配的元素以&lt;br /&gt;&amp;#8220;滑动&amp;#8221;的方式显示出来。&lt;br /&gt;slideUp( speed, [callback] ) 通过高度变化（向上减小）来动态地隐藏所有匹配的元素，在隐藏完成后可选地&lt;br /&gt;触发一个回调函数。这个动画效果只调整元素的高度，可以使匹配的元素以&amp;#8221;滑动&amp;#8221;&lt;br /&gt;的方式隐藏起来。&lt;br /&gt;slideToggle( speed, [callback] ) 通过高度变化来切换所有匹配元素的可见性，并在切换完成后可选地触发一个回&lt;br /&gt;调函数。 这个动画效果只调整元素的高度，可以使匹配的元素以&amp;#8221;滑动&amp;#8221;的方式隐&lt;br /&gt;藏或显示。&lt;br /&gt;fadeIn( speed, [callback] ) 通过不透明度的变化来实现所有匹配元素的淡入效果，并在动画完成后可选地触&lt;br /&gt;发一个回调函数。 这个动画只调整元素的不透明度，也就是说所有匹配的元素的&lt;br /&gt;高度和宽度不会发生变化。&lt;br /&gt;fadeOut( speed, [callback] ) 通过不透明度的变化来实现所有匹配元素的淡出效果，并在动画完成后可选地触&lt;br /&gt;发一个回调函数。 这个动画只调整元素的不透明度，也就是说所有匹配的元素的&lt;br /&gt;高度和宽度不会发生变化。&lt;br /&gt;fadeTo( speed, opacity, [callback] ) 把所有匹配元素的不透明度以渐进方式调整到指定的不透明度，并在动画完成&lt;br /&gt;后可选地触发一个回调函数。 这个动画只调整元素的不透明度，也就是说所&lt;br /&gt;有匹配的元素的高度和宽度不会发生变化。&lt;br /&gt;stop( ) 停止所有匹配元素当前正在运行的动画。如果有动画处于队列当中，他们就会立即开始。&lt;br /&gt;queue( ) 取得第一个匹配元素的动画序列的引用(返回一个内容为函数的数组)&lt;br /&gt;queue( callback ) 在每一个匹配元素的事件序列的末尾添加一个可执行函数，作为此元素的事件函数&lt;br /&gt;queue( queue ) 以一个新的动画序列代替所有匹配元素的原动画序列&lt;br /&gt;dequeue( ) 执行并移除动画序列前端的动画&lt;br /&gt;animate( params, [duration], [easing], [callback] ) 用于创建自定义动画的函数。&lt;br /&gt;animate( params, options ) 创建自定义动画的另一个方法。作用同上。&lt;br /&gt;&lt;br /&gt;JQuery Traversing 方法说明&lt;br /&gt;&lt;br /&gt;eq( index ) 从匹配的元素集合中取得一个指定位置的元素，index从0开始&lt;br /&gt;filter( expr ) 返回与指定表达式匹配的元素集合，可以使用&amp;#8221;,&amp;#8221;号分割多个expr，用于实现多个条件筛选&lt;br /&gt;filter( fn ) 利用一个特殊的函数来作为筛选条件移除集合中不匹配的元素。&lt;br /&gt;is( expr ) 用一个表达式来检查当前选择的元素集合，如果其中至少有一个元素符合这个给定的&lt;br /&gt;表达式就返回true。&lt;br /&gt;map( callback ) 将jQuery对象中的一组元素利用callback方法转换其值，然后添加到一个jQuery数组中。&lt;br /&gt;not( expr ) 从匹配的元素集合中删除与指定的表达式匹配的元素。&lt;br /&gt;slice( start, [end] ) 从匹配元素集合中取得一个子集，和内建的数组的slice方法相同。&lt;br /&gt;add( expr ) 把与表达式匹配的元素添加到jQuery对象中。&lt;br /&gt;children( [expr] ) 取得一个包含匹配的元素集合中每一个元素的所有子元素的元素集合。可选的过滤器&lt;br /&gt;将使这个方法只匹配符合的元素(只包括元素节点，不包括文本节点)。&lt;br /&gt;contents( ) 取得一个包含匹配的元素集合中每一个元素的所有子孙节点的集合(只包括元素节点，不&lt;br /&gt;包括文本节点)，如果元素为iframe，则取得其中的文档元素&lt;br /&gt;find( expr ) 搜索所有与指定表达式匹配的元素。&lt;br /&gt;next( [expr] ) 取得一个包含匹配的元素集合中每一个元素紧邻的后面同辈元素的元素集合。&lt;br /&gt;nextAll( [expr] ) 取得一个包含匹配的元素集合中每一个元素所有的后面同辈元素的元素集合&lt;br /&gt;parent( [expr] ) 取得一个包含着所有匹配元素的唯一父元素的元素集合。&lt;br /&gt;parents( [expr] ) 取得一个包含着所有匹配元素的唯一祖先元素的元素集合（不包含根元素）。&lt;br /&gt;prev( [expr] ) 取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合。&lt;br /&gt;prevAll( [expr] ) 取得一个包含匹配的元素集合中每一个元素的之前所有同辈元素的元素集合。&lt;br /&gt;siblings( [expr] ) 取得一个包含匹配的元素集合中每一个元素的所有同辈元素的元素集合。&lt;br /&gt;andSelf( ) 将前一个匹配的元素集合添加到当前的集合中&lt;br /&gt;取得所有div元素和其中的p元素，添加border类属性。取得所有div元素中的p元素，&lt;br /&gt;添加background类属性&lt;br /&gt;$(&amp;#8221;div&amp;#8221;).find(&amp;#8221;p&amp;#8221;).andSelf().addClass(&amp;#8221;border&amp;#8221;);&lt;br /&gt;$(&amp;#8221;div&amp;#8221;).find(&amp;#8221;p&amp;#8221;).addClass(&amp;#8221;background&amp;#8221;);&lt;br /&gt;end( ) 结束当前的操作，回到当前操作的前一个操作&lt;br /&gt;找到所有p元素其中的span元素集合，然后返回p元素集合，添加css属性&lt;br /&gt;$(&amp;#8221;p&amp;#8221;).find(&amp;#8221;span&amp;#8221;).end().css(&amp;#8221;border&amp;#8221;, &amp;#8220;2px red solid&amp;#8221;);&lt;br /&gt;&lt;br /&gt;JQuery Selectors 方法说明&lt;br /&gt;&lt;br /&gt;基本选择器&lt;br /&gt;$(&amp;#8221;#myDiv&amp;#8221;) 匹配唯一的具有此id值的元素&lt;br /&gt;$(&amp;#8221;div&amp;#8221;) 匹配指定名称的所有元素&lt;br /&gt;$(&amp;#8221;.myClass&amp;#8221;) 匹配具有此class样式值的所有元素&lt;br /&gt;$(&amp;#8221;*&amp;#8221;) 匹配所有元素&lt;br /&gt;$(&amp;#8221;div,span,p.myClass&amp;#8221;) 联合所有匹配的选择器&lt;br /&gt;层叠选择器&lt;br /&gt;$(&amp;#8221;form input&amp;#8221;) 后代选择器，选择ancestor的所有子孙节点&lt;br /&gt;$(&amp;#8221;#main &amp;gt; *&amp;#8221;) 子选择器，选择parent的所有子节点&lt;br /&gt;$(&amp;#8221;label + input&amp;#8221;) 临选择器，选择prev的下一个临节点&lt;br /&gt;$(&amp;#8221;#prev ~ div&amp;#8221;) 同胞选择器，选择prev的所有同胞节点&lt;br /&gt;基本过滤选择器&lt;br /&gt;$(&amp;#8221;tr:first&amp;#8221;) 匹配第一个选择的元素&lt;br /&gt;$(&amp;#8221;tr:last&amp;#8221;) 匹配最后一个选择的元素&lt;br /&gt;$(&amp;#8221;input:not(:checked) + span&amp;#8221;)从原元素集合中过滤掉匹配selector的所有元素（这里有是一个临选择器）&lt;br /&gt;$(&amp;#8221;tr:even&amp;#8221;) 匹配集合中偶数位置的所有元素(从0开始)&lt;br /&gt;$(&amp;#8221;tr:odd&amp;#8221;) 匹配集合中奇数位置的所有元素(从0开始)&lt;br /&gt;$(&amp;#8221;td:eq(2)&amp;#8221;) 匹配集合中指定位置的元素(从0开始)&lt;br /&gt;$(&amp;#8221;td:gt(4)&amp;#8221;) 匹配集合中指定位置之后的所有元素(从0开始)&lt;br /&gt;$(&amp;#8221;td:gl(4)&amp;#8221;) 匹配集合中指定位置之前的所有元素(从0开始)&lt;br /&gt;$(&amp;#8221;:header&amp;#8221;) 匹配所有标题&lt;br /&gt;$(&amp;#8221;div:animated&amp;#8221;) 匹配所有正在运行动画的所有元素&lt;br /&gt;内容过滤选择器&lt;br /&gt;$(&amp;#8221;div:contains(&amp;#8217;John&amp;#8217;)&amp;#8221;) 匹配含有指定文本的所有元素&lt;br /&gt;$(&amp;#8221;td:empty&amp;#8221;) 匹配所有空元素(只含有文本的元素不算空元素)&lt;br /&gt;$(&amp;#8221;div:has(p)&amp;#8221;) 从原元素集合中再次匹配所有至少含有一个selector的所有元素&lt;br /&gt;$(&amp;#8221;td:parent&amp;#8221;) 匹配所有不为空的元素(含有文本的元素也算)&lt;br /&gt;$(&amp;#8221;div:hidden&amp;#8221;) 匹配所有隐藏的元素，也包括表单的隐藏域&lt;br /&gt;$(&amp;#8221;div:visible&amp;#8221;) 匹配所有可见的元素&lt;br /&gt;属性过滤选择器&lt;br /&gt;$(&amp;#8221;div[id]&amp;#8221;) 匹配所有具有指定属性的元素&lt;br /&gt;$(&amp;#8221;input[name=&amp;#8217;newsletter&amp;#8217;]&amp;#8221;) 匹配所有具有指定属性值的元素&lt;br /&gt;$(&amp;#8221;input[name!=&amp;#8217;newsletter&amp;#8217;]&amp;#8221;) 匹配所有不具有指定属性值的元素&lt;br /&gt;$(&amp;#8221;input[name^=&amp;#8217;news&amp;#8217;]&amp;#8221;) 匹配所有指定属性值以value开头的元素&lt;br /&gt;$(&amp;#8221;input[name$=&amp;#8217;letter&amp;#8217;]&amp;#8221;) 匹配所有指定属性值以value结尾的元素&lt;br /&gt;$(&amp;#8221;input[name*=&amp;#8217;man&amp;#8217;]&amp;#8221;) 匹配所有指定属性值含有value字符的元素&lt;br /&gt;$(&amp;#8221;input[id][name$=&amp;#8217;man&amp;#8217;]&amp;#8221;) 匹配同时符合多个选择器的所有元素&lt;br /&gt;子元素过滤选择器&lt;br /&gt;$(&amp;#8221;ul li:nth-child(2)&amp;#8221;),&lt;br /&gt;$(&amp;#8221;ul li:nth-child(odd)&amp;#8221;), 匹配父元素的第n个子元素&lt;br /&gt;$(&amp;#8221;ul li:nth-child(3n + 1)&amp;#8221;)&lt;br /&gt;&lt;br /&gt;$(&amp;#8221;div span:first-child&amp;#8221;) 匹配父元素的第1个子元素&lt;br /&gt;$(&amp;#8221;div span:last-child&amp;#8221;) 匹配父元素的最后1个子元素&lt;br /&gt;$(&amp;#8221;div button:only-child&amp;#8221;) 匹配父元素的唯一1个子元素&lt;br /&gt;表单元素选择器&lt;br /&gt;$(&amp;#8221;:input&amp;#8221;) 匹配所有的表单输入元素，包括所有类型的input, textarea, select 和 button&lt;br /&gt;$(&amp;#8221;:text&amp;#8221;) 匹配所有类型为text的input元素&lt;br /&gt;$(&amp;#8221;:password&amp;#8221;) 匹配所有类型为password的input元素&lt;br /&gt;$(&amp;#8221;:radio&amp;#8221;) 匹配所有类型为radio的input元素&lt;br /&gt;$(&amp;#8221;:checkbox&amp;#8221;) 匹配所有类型为checkbox的input元素&lt;br /&gt;$(&amp;#8221;:submit&amp;#8221;) 匹配所有类型为submit的input元素&lt;br /&gt;$(&amp;#8221;:image&amp;#8221;) 匹配所有类型为image的input元素&lt;br /&gt;$(&amp;#8221;:reset&amp;#8221;) 匹配所有类型为reset的input元素&lt;br /&gt;$(&amp;#8221;:button&amp;#8221;) 匹配所有类型为button的input元素&lt;br /&gt;$(&amp;#8221;:file&amp;#8221;) 匹配所有类型为file的input元素&lt;br /&gt;$(&amp;#8221;:hidden&amp;#8221;) 匹配所有类型为hidden的input元素或表单的隐藏域&lt;br /&gt;表单元素过滤选择器&lt;br /&gt;$(&amp;#8221;:enabled&amp;#8221;) 匹配所有可操作的表单元素&lt;br /&gt;$(&amp;#8221;:disabled&amp;#8221;) 匹配所有不可操作的表单元素&lt;br /&gt;$(&amp;#8221;:checked&amp;#8221;) 匹配所有已点选的元素&lt;br /&gt;$(&amp;#8221;select option:selected&amp;#8221;) 匹配所有已选择的元素&lt;br /&gt;&lt;br /&gt;JQuery CSS 方法说明&lt;br /&gt;&lt;br /&gt;css( name ) 访问第一个匹配元素的样式属性。&lt;br /&gt;css( properties ) 把一个&amp;#8221;名/值对&amp;#8221;对象设置为所有匹配元素的样式属性。&lt;br /&gt;$(&amp;#8221;p&amp;#8221;).hover(function () {&lt;br /&gt;$(this).css({ backgroundColor:&amp;#8221;yellow&amp;#8221;, fontWeight:&amp;#8221;bolder&amp;#8221; });&lt;br /&gt;}, function () {&lt;br /&gt;var cssObj = {&lt;br /&gt;backgroundColor: &amp;#8220;#ddd&amp;#8221;,&lt;br /&gt;fontWeight: &amp;#8220;&amp;#8221;,&lt;br /&gt;color: &amp;#8220;#0028f4&amp;#8221;&lt;br /&gt;}&lt;br /&gt;$(this).css(cssObj);&lt;br /&gt;});&lt;br /&gt;css( name, value ) 在所有匹配的元素中，设置一个样式属性的值。&lt;br /&gt;offset( ) 取得匹配的第一个元素相对于当前可视窗口的位置。返回的对象有2个属性，&lt;br /&gt;top和left，属性值为整数。这个函数只能用于可见元素。&lt;br /&gt;var p = $(&amp;#8221;p:last&amp;#8221;);&lt;br /&gt;var offset = p.offset();&lt;br /&gt;p.html( &amp;#8220;left: &amp;#8221; + offset.left + &amp;#8220;, top: &amp;#8221; + offset.top );&lt;br /&gt;width( ) 取得当前第一匹配的元素的宽度值，&lt;br /&gt;width( val ) 为每个匹配的元素设置指定的宽度值。&lt;br /&gt;height( ) 取得当前第一匹配的元素的高度值，&lt;br /&gt;height( val ) 为每个匹配的元素设置指定的高度值。&lt;br /&gt;&lt;br /&gt;JQuery Utilities 方法说明&lt;br /&gt;jQuery.browser&lt;br /&gt;.msie 表示ie&lt;br /&gt;jQuery.browser.version 读取用户浏览器的版本信息&lt;br /&gt;jQuery.boxModel 检测用户浏览器针对当前页的显示是否基于w3c CSS的盒模型&lt;br /&gt;jQuery.isFunction( obj ) 检测传递的参数是否为function&lt;br /&gt;function stub() { }&lt;br /&gt;var objs = [&lt;br /&gt;function () {},&lt;br /&gt;{ x:15, y:20 },&lt;br /&gt;null,&lt;br /&gt;stub,&lt;br /&gt;&amp;#8220;function&amp;#8221;&lt;br /&gt;];&lt;br /&gt;jQuery.each(objs, function (i) {&lt;br /&gt;var isFunc = jQuery.isFunction(objs[i]);&lt;br /&gt;$(&amp;#8221;span:eq( &amp;#8221; + i + &amp;#8220;)&amp;#8221;).text(isFunc);&lt;br /&gt;});&lt;br /&gt;jQuery.trim( str ) 清除字符串两端的空格，使用正则表达式来清除给定字符两端的空格&lt;br /&gt;jQuery.each( object, callback ) 一个通用的迭代器，可以用来无缝迭代对象和数组&lt;br /&gt;jQuery.extend( target, object1, [objectN] ) 扩展一个对象，修改原来的对象并返回，这是一个强大的实现继承的&lt;br /&gt;工具，这种继承是采用传值的方法来实现的，而不是JavaScript中的&lt;br /&gt;原型链方式。&lt;br /&gt;合并settings和options对象，返回修改后的settings对象&lt;br /&gt;var settings = { validate: false, limit: 5, name: &amp;#8220;foo&amp;#8221; };&lt;br /&gt;var options = { validate: true, name: &amp;#8220;bar&amp;#8221; };&lt;br /&gt;jQuery.extend(settings, options);&lt;br /&gt;&lt;br /&gt;合并defaults和options对象，defaults对象并没有被修改。options对象中的值&lt;br /&gt;代替了defaults对象的值传递给了empty。&lt;br /&gt;&lt;br /&gt;var empty = {}&lt;br /&gt;var defaults = { validate: false, limit: 5, name: &amp;#8220;foo&amp;#8221; };&lt;br /&gt;var options = { validate: true, name: &amp;#8220;bar&amp;#8221; };&lt;br /&gt;var settings = $.extend(empty, defaults, options);&lt;br /&gt;jQuery.grep( array, callback, [invert] ) 通过一个筛选函数来去除数组中的项&lt;br /&gt;$.grep( [0,1,2], function(n,i){&lt;br /&gt;return n &amp;gt; 0;&lt;br /&gt;});&lt;br /&gt;jQuery.makeArray( obj ) 将一个类似数组的对象转化为一个真正的数组&lt;br /&gt;将选取的div元素集合转化为一个数组&lt;br /&gt;var arr = jQuery.makeArray(document.getElementsByTagName(&amp;#8221;div&amp;#8221;));&lt;br /&gt;arr.reverse(); // use an Array method on list of dom elements&lt;br /&gt;$(arr).appendTo(document.body);&lt;br /&gt;jQuery.map( array, callback ) 使用某个方法修改一个数组中的项，然后返回一个新的数组&lt;br /&gt;jQuery.inArray( value, array ) 返回value在数组中的位置，如果没有找到，则返回-1&lt;br /&gt;jQuery.unique( array ) 删除数组中的所有重复元素，返回整理后的数组&lt;/div&gt;&amp;nbsp;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lingxzg/aggbug/1996807.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lingxzg/archive/2011/03/27/1996807.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lingxzg/archive/2011/02/10/1950502.html</id><title type="text">00五大原则(转)</title><summary type="text">现将近期整理的文档提供给大家，这里对LSP做重点的介绍，望对大家有帮助，在学习和使用OO设计的时候，我们应该明白：OO的出现使得软件工程师们能够用更接近真实世界的方法描述软件系统。然而，软件毕竟是建立在抽象层次上的东西，再怎么接近真实，也不能替代真实或被真实替代。 OO设计的五大原则之间并不是相互孤立的。彼此间存在着一定关联，一个可以是另一个原则的加强或是基础。违反其中的某一个，可能同时违反了其余的原则。因此应该把这些原则融会贯通，牢记在心！ OO的五大原则是指SRP、OCP、LSP、DIP、ISP。 1. SRP（Single Responsibility Principle 单一职责原则）</summary><published>2011-02-10T00:55:00Z</published><updated>2011-02-10T00:55:00Z</updated><author><name>凌寒飘香</name><uri>http://www.cnblogs.com/lingxzg/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lingxzg/archive/2011/02/10/1950502.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lingxzg/archive/2011/02/10/1950502.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 现将近期整理的文档提供给大家，这里对LSP做重点的介绍，望对大家有帮助，在学习和使用OO设计的时候，我们应该明白：OO的出现使得软件工程师们能够用更接近真实世界的方法描述软件系统。然而，软件毕竟是建立在抽象层次上的东西，再怎么接近真实，也不能替代真实或被真实替代。 &lt;br /&gt;OO设计的五大原则之间并不是相互孤立的。彼此间存在着一定关联，一个可以是另一个原则的加强或是基础。违反其中的某一个，可能同时违反了其余的原则。因此应该把这些原则融会贯通，牢记在心！ &lt;/p&gt;&lt;p&gt;OO的五大原则是指SRP、OCP、LSP、DIP、ISP。 &lt;br /&gt;1. SRP（Single Responsibility Principle 单一职责原则） &lt;br /&gt;单一职责很容易理解，也很容易实现。所谓单一职责，就是一个设计元素只做一件事。什么是&amp;#8220;只做一件事&amp;#8221;？简单说就是少管闲事。现实中就是如此，如果要你专心做一件事情，任何人都有信心可以做得很出色。 &lt;br /&gt;OCP作为OO的高层原则，主张使用&amp;#8220;抽象(Abstraction)&amp;#8221;和&amp;#8220;多态(Polymorphism)&amp;#8221;将设计中的静态结构改为动态结构，维持设计的封闭性。 &lt;/p&gt;&lt;p&gt;2. OCP :开闭原则，很简单，一句话：&amp;#8220;Closed for Modification; Open for Extension&amp;#8221;&amp;#8212;&amp;#8212;&amp;#8220;对变更关闭；对扩展开放&amp;#8221;。开闭原则其实没什么好讲的，我将其归结为一个高层次的设计总则。OCP的动机很简单：软件是变化的。不论是优质的设计还是低劣的设计都无法回避这一问题。OCP说明了软件设计应该尽可能地使架构稳定而又容易满足不同的需求。 为什么要OCP？答案也很简单&amp;#8212;&amp;#8212;重用。 &lt;/p&gt;&lt;p&gt;3.LSP&amp;#8212;&amp;#8212;里氏替换原则 &lt;br /&gt;OCP作为OO的高层原则，主张使用&amp;#8220;抽象(Abstraction)&amp;#8221;和&amp;#8220;多态(Polymorphism)&amp;#8221;将设计中的静态结构改为动态结构，维持设计的封闭性&amp;#8220;抽象&amp;#8221;是语言提供的功能。&amp;#8220;多态&amp;#8221;由继承语义实现。 如此，问题产生了：&amp;#8220;我们如何去度量继承关系的质量？&amp;#8221; &lt;br /&gt;Liskov于1987年提出了一个关于继承的原则&amp;#8220;Inheritance should ensure that any property proved about supertype objects also holds for subtype objects.&amp;#8221;&amp;#8212;&amp;#8212;&amp;#8220;继承必须确保超类所拥有的性质在子类中仍然成立。&amp;#8221;也就是说，当一个子类的实例应该能够替换任何其超类的实例时，它们之间才具有is-A关系。 &lt;br /&gt;该原则称为Liskov Substitution Principle&amp;#8212;&amp;#8212;里氏替换原则。 &lt;br /&gt;我们来研究一下LSP的实质。学习OO的时候，我们知道，一个对象是一组状态和一系列行为的组合体。状态是对象的内在特性，行为是对象的外在特性。LSP所表述的就是在同一个继承体系中的对象应该有共同的行为特征。 &lt;br /&gt;这一点上，表明了OO的继承与日常生活中的继承的本质区别。举一个例子：生物学的分类体系中把企鹅归属为鸟类。我们模仿这个体系，设计出这样的类和关系。 &lt;/p&gt;&lt;p&gt;&lt;br /&gt;类&amp;#8220;鸟&amp;#8221;中有个方法fly，企鹅自然也继承了这个方法，可是企鹅不能飞阿，于是，我们在企鹅的类中覆盖了fly方法，告诉方法的调用者：企鹅是不会飞的。这完全符合常理。但是，这违反了LSP，企鹅是鸟的子类，可是企鹅却不能飞！需要注意的是，此处的&amp;#8220;鸟&amp;#8221;已经不再是生物学中的鸟了，它是软件中的一个类、一个抽象。 &lt;br /&gt;有人会说，企鹅不能飞很正常啊，而且这样编写代码也能正常编译，只要在使用这个类的客户代码中加一句判断就行了。但是，这就是问题所在！首先，客户代码和&amp;#8220;企鹅&amp;#8221;的代码很有可能不是同时设计的，在当今软件外包一层又一层的开发模式下，你甚至根本不知道两个模块的原产地是哪里，也就谈不上去修改客户代码了。客户程序很可能是遗留系统的一部分，很可能已经不再维护，如果因为设计出这么一个&amp;#8220;企鹅&amp;#8221;而导致必须修改客户代码，谁应该承担这部分责任呢？（大概是上帝吧，谁叫他让&amp;#8220;企鹅&amp;#8221;不能飞的。^_^）&amp;#8220;修改客户代码&amp;#8221;直接违反了OCP，这就是OCP的重要性。违反LSP将使既有的设计不能封闭！ &lt;/p&gt;&lt;p&gt;修正后的设计如下： &lt;/p&gt;&lt;p&gt;LSP并没有提供解决这个问题的方案，而只是提出了这么一个问题。 于是，工程师们开始关注如何确保对象的行为。1988年，B. Meyer提出了Design by Contract（契约式设计）理论。DbC从形式化方法中借鉴了一套确保对象行为和自身状态的方法，其基本概念很简单： &lt;/p&gt;&lt;p&gt;每个方法调用之前，该方法应该校验传入参数的正确性，只有正确才能执行该方法，否则认为调用方违反契约，不予执行。这称为前置条件(Pre-condition)。 &lt;br /&gt;一旦通过前置条件的校验，方法必须执行，并且必须确保执行结果符合契约，这称之为后置条件(Post-condition)。 &lt;br /&gt;对象本身有一套对自身状态进行校验的检查条件，以确保该对象的本质不发生改变，这称之为不变式(Invariant)。 &lt;br /&gt;以上是单个对象的约束条件。为了满足LSP，当存在继承关系时，子类中方法的前置条件必须与超类中被覆盖的方法的前置条件相同或者更宽松；而子类中方法的后置条件必须与超类中被覆盖的方法的后置条件相同或者更为严格。 &lt;/p&gt;&lt;p&gt;4.DIP 依赖倒置原则 &lt;br /&gt;依赖倒置（Dependence Inversion Principle）原则讲的是：要依赖于抽象，不要依赖于具体。 &lt;br /&gt;简单的说，依赖倒置原则要求客户端依赖于抽象耦合。原则表述： &lt;br /&gt;抽象不应当依赖于细节；细节应当依赖于抽象； &lt;br /&gt;要针对接口编程，不针对实现编程。 &lt;/p&gt;&lt;p&gt;5.ISP 接口隔离原则 &lt;br /&gt;使用多个专门的接口比使用单一的总接口要好。广义的接口：一个接口相当于剧本中的一种角色，而此角色在一个舞台上由哪一个演员来演则相当于接口的实现。因此一个接口应当简单的代表一个角色，而不是一个角色。，如果系统设计多哥角色的话，则应当每一个角色都由一个特定的接口代表。狭义的接口（Interface）:接口隔离原则讲的就是同一个角色提供宽、窄不同的接口，以对付不同的客户端。 &lt;/p&gt;&lt;img src="http://www.cnblogs.com/lingxzg/aggbug/1950502.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lingxzg/archive/2011/02/10/1950502.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
