| Profile磊的共享空间PhotosBlogLists | Help |
最近最近,总是想起以前的事情,即使是很小的事情,总是想起,包括细节。
看来真的是老了,变成老家伙了。
从快过年的时候到现在,总是发生不好的事情。不知道是不是本命年在作怪,和谁都打架。仔细想想还是我的过错比较大,和我爸打架,我妈。我的脾气真的越来越不好,本来就不能控制自己的脾气,这下可好,天天都痛快了。天天和别人干仗,现在,更爽,抱着瓶子,边喝边写(不是啤酒,我讨厌喝啤酒)。过瘾。
本命年快过去吧。 头发又长了出了正月,烫头发去,先说服我家的大小两个女领导。
哈哈。
绝对不要刘文气的爆炸式,省得想起阿布的胸毛假发。
哈哈。 February 26 中国人上的4大当(转)第一大当:房产 买房意味着什么?意味着你拥有了一个属于自己的房子。是的,你是这样以为,但是在中国你并无法拥有这个房子,只是租给你而已。因为房子是你的,地不是你的,只是把土地使用权租借给你70年(从现在退70年那是抗日战争时期,谁见过那时候的房子?)。房子通常情况下30年左右就会遇上拆迁或者旧房改造。也就是说你花了买房的钱,却只能得到租房的实际效果。当然这还不是最坏的。最坏的是,当几十年后你发觉上当了!有一群流氓冲进你用一辈子积蓄买下的房子,画上一个大大的拆字!然后把你的家当全部当垃圾一样的仍出门外,不顾你的苦苦哀求,甚至还在报纸上给你按一个钉子户的臭名,任大众辱骂的时候你就会知道什么叫做绝望! 形容中国的房地产有一个很有名的笑话是这样写的: 以前,有个地主有很多地,找了很多长工干活,地主给长工们盖了一批团结楼住着,一天,地主的谋士对地主说:东家,长工们这几年手上有点钱了,他们住你的房子,每月交租子,不划算,反正他们永远住下去,你干脆把房子卖给他们起个名堂叫做——公房出售!告诉他们房子永远归他们了,可以把他们这几年攒的钱收回来,地主说:不错,那租金怎么办?谋士说:照收不误,起个日本名儿,叫物业费!地主很快实行了,赚了好多钱,长工们那个高兴啊! 过了几年,地主的村子发展成城镇了,有钱人越来越多,没地方住,谋士对地主说:东家,长工们这几年手上又有钱了,咱们给他们盖新房子,起个名堂叫做旧城改造,他们把手上的钱给我们,我们拆了房子盖新的,叫他们再买回去,可以多盖一些卖给别人,地主又实行了,这次,有些长工们不高兴了,地主的家丁派上用途了,长工们打掉牙只好往肚子里咽,地主又赚了好多钱。 又过了几年,地主的村子发展成大城市了,有钱人更多了,地主的土地更值钱了,谋士对地主说:东家,咱们把这些长工的房子拆了,在这个地方建别墅,拆出来的地盖好房子卖给那些有钱的大款还能赚一笔,地主说:长工们不干怎么办?谋士说:咱给他们钱多点儿,起个名堂叫货币化安置,咱再到咱们的猪圈旁边建房子,起个名堂叫经济适用房,给他们修个马车道让他们到那边买房住,地主说:他们钱不够怎么办?谋士说:从咱家的钱庄借前给他们,一年6分利,咱这钱还能生钱崽,又没风险,地主又实行了,长工们拿到钱,地主的经济适用房到现在才建了一间,长工们只好排队等房子,直到现在,还等着呢…… 于是,长工们开始闹事了,地主有点慌,忙问谋士怎么办?谋士说:赶紧通知长工们,房子要跌价了,别买了,租房住吧,正好把我们的猪圈租给他们,结果,这么多年后,长工们的钱全没了,还在租房住,直到永远! 这个笑话虽然有点夸张,但实际上这何尝又不是事实呢?有人说既然如此?为什么中国人还要买房?疯了一样的买?为什么?还不是愚民教育的结果,就好象60 年代,鼓吹人们必须购买三大件:手表、缝纫机、自行车才算是成功人士才可嫁人娶妻。70年代鼓吹人们必须购买新四大件:电视,冰箱,洗衣机,装电话才算是出人头地才可娶妻生子一样,记得当年装电话可是要几千块钱一部啊(人均收入不到200的小城),而北京上海更有上万一部的时候,还得排队买号搭人情,和今天的买房又何其相似? 而今天所有的狗屁学者又开始了这一套愚弄百姓的旧招:白领一族新标准,成功人士新选择X环X路小户型,X环X路商住型。收了你几十万后,还得每个月收你租金(新物业费),银行利息,以及各种巧立名目的加息、政策等等等等。总之不怕你不被整死,就怕你死得不够惨!老百姓咋就怎么乐于上当,而且百上不厌呢?我真是气得浑身都湿了! 第二大当:就业 当有人终于开始感叹:当年当知青的时候,当有人下岗之后感到没有生路,只能静坐抗议却无人理会,只能沦落街头还被人编首歌嘲笑着人生豪迈,重头再来的时候。你可曾想过!他们也曾经和今天的白领一样风光!他们的收入和地位也曾经让周围的人艳羡不已?你可曾想过20年后的今天!你一样会和他们一样沦落街头,众叛亲离?! 有人说嘿!你不知道有失业保险,养老保险,XX保险么?呵呵,我在北京漂泊N年,交了无数保险大概有好几万吧,但失业的时候跑断腿也没人给我啥保险,反而很多保险都被冻结了说我交得断断续续的,我简直又气得……这还不算,你以为你到了60岁真的就可以拿到养老保险了吗?天上又不会掉钱!今天的老年人拿的退休金是我们在挣!而今天30-40岁的人通常都有好几个兄弟姐妹!意思就是,今天的老年人能在60岁拿到养老保险是因为有5个人供一个老人!而我们这一代老去之后则是一个人供我们两个老人!钱从哪里来?没得来!您要是能活到90岁估计能领到一些养老保险,嘿保重吧您。然而即使是这样,家长们还是疯了一样的把孩子往各种企事业国有单位里送,我身边就经常有这样的例子。我老家一个远房亲戚,找关系拖朋友,花了七万块钱通过公开招聘把儿子送进了交警队,干上合同制的police。一个月拿800块。结果第三年被竞争上岗给刷下来了。一家人哭哭啼啼,我说刷了好,你上那班一辈子挣不回那七万,赶紧先洗洗睡,改明再凑点钱做小生意去吧!没准还能赚点。 当年我毕业的时候,我不文明用语也是领着我抱着钱,把我往XX部送。我一看负责招工那人那德行,就忍不住的恶心,再一看薪水,不文明用语呀,我这不是白干10年不吃不喝才拿回成本。所以我私下威胁了那家伙一把,吓得那个大腹便便的X科长再也不敢招收我。我才得已:离家出走。 我就想不明白?中国人咋就这么傻?这么迷信国字呢?醒醒吧,思维正常一点行不?做事之前自己算算合算不合算成不? 还有那些年纪轻轻的小白领们,找工作最好把薪水要高点,别要医疗保险和啥保险,然后自己把钱存起来最保险,将来用得着。 第三大当:教育 一张文凭值多少钱?一张文凭值多少钱?一张文凭值多少钱?印刷成本两块钱顶了天了。一个老师工资多少?嘿,两个学生的学费足够一学期了!一个班的书本印刷多少钱?两个学生的足够了!一个班房租多少钱一学期?嘿嘿两个学生足够了。!嘿!中国教育你凭啥收那么多钱!? 嘿!百姓们!我们为啥要上当?因为从小统治阶级就告诉我们考上秀才才光荣。哦对不起我说错了,是考上大学才光荣。但老百姓从来不去想一想为什么光荣?为什么光荣…… 大学秀才又怎样还不是废物! 你知道你的孩子是什么人在教么?在中国一般是无法适应社会的人才会沦为一个教师,举个例子。前段时间我因为一个项目的关系,找了几个大学的硕士生做程序。结果有几个人笨得很,完全不给你考虑,非得你守着才干活,而且给个文件明显有一个错别字,也不给改,等你发现了还跟你较真,是这不是他的错,是你给的就是错的。一点责任感,一都不会考虑究竟是为了做事而做事还是为了做好一件事而做事。我还是很心平气和的给他们讲道理:你们必须学会为别人思考,思考别人想要什么结果再去做事情。否则无法在社会上生存。结果那几个说:我们才不要去社会上,我们考试成绩好得很,学校要我们留校做老师。再说了本来我们就没什么错,你怎么安排我们怎么做,你不安排我们就不做。这是我们的尊严和原则。我说:如果你去守门,老板没安排你下班的时候锁好仓库你就不锁了吗?您心寒吗?以后您的孩子就是在这样的人的指导下学习和成长。您放心么? 难怪现在读大学的同居,逃课,打架,自杀…… 但家长们还是愿意花钱把孩子送进学校去,而且是花一辈子的钱。 第四大当:买车 中国人疯了吗?买车?为什么要买车???当然您有了钱花不光了,您爱怎么买怎么买,买车买房,反正油价怎么涨你也花不完钱,房子要拆迁你也不心疼。但是大多数老百姓呢? 我以前有个同事住北二环,公司西直门那里。每天坐地铁上班最多半小时。可非得买一二手夏利,每天早上8点开始在路上堵着,然后一点一点的挪到公司。嘿,一个月停车费都不少。可人家就觉得开了车自己身份高级一点。别说开个夏利,就是开个奥迪我也没见谁对谁三磕九拜。除了显得自己比别人傻一点外完全没有别的作用。 还有一次,我遇见一个月收入才4000的小姑娘,在计划贷款买车。于是我就问她:小姑娘,你又没做生意,自己按时上班,地铁又方便,买车干什么呢?想了半天,实在估计也想不出什么理由来了就说:有时候去超市买东西吧,打车又觉得近了点不划算,走路又远了点。所以自己开车去了!听得我差点没恶心死。你开车去超市买个方便面不觉得恶心么?装备了大哥大去拣垃圾,也是拣垃圾的!别以为买了车能证明什么。 比如我现在自己做生意,很忙,一天大概要跑4-5个地方,见很多客户。但我就不买车,为什么?我打车随招即来,打完就走,不用担心停车没地方,不用担心挂了碰了,不用担心被贼偷了绑了,无论挂风下雨都有司机。万一碰着个堵车还可以下车坐地铁。一年也就一万多块RMB!要买一车!一年停车费都得一万多!这不是傻么? 说别买车别买车,可就有无数的人疯了一样的去贷款买?一定要嫌自己将来死得不够惨似的!买吧,买完了加息了不是?油价涨疯了不是?停车又贵了不是?后悔了不是?新车一上路就掉价了卖也卖不掉了不是?? 告诉你,油价还得涨。一定要涨到和美圆一样的油价。嘿嘿!您拿老美1/10的收入,养和人家一个价的汽油。我看您还得瑟不。 最后说一句,每个人都不傻,都是从小被愚民教育给弄啥了。傻点不要紧,但性命悠关的事儿您还是紧着点,多盘算盘算经济利益之间的关系!别到头来,房产一跌,油价一涨,交了半辈子钱拿了毕业证还是啥啥不会干,交了几十年苛捐杂税还啥啥福利没有。您亏的可不仅仅是差价几十万。 有人还说什么?哎呀没办法,难道不住了,不买车啦,公车好挤呀。我说全是愚民教育出来的虚荣心在做怪。您看看我,租一个房子住才一千多块一个月,也就相当于有些人的物业费。如果要结婚我还租得起3-4千的,家具装修一应具全。而且还哪方便我住哪儿。不想搬就长期租。也和交物业费一个样。还白白省出还银行贷款、利息、首付一大堆。有事就打车,没事就地铁,一年一万顶天了,还省了车库费,停车费,罚款等一堆,油价涨到10块也乐呵,也不耽误事。俺大学没念完就跑了,一边自学一边自己钻研市场出策划跑业务,不也同样可以进外资企业,上市企业做经理么?还省出好几万学费来。 当然有的人会说:你连个房子都不买,指定结不了婚。我心想:我是没有,您以为您有啊?有人说租房子不划算,租完了还是别人的,嘿嘿,你以为买房子还了几十年贷款,还清了就是你的了啊…… February 16 大年29到了一年一度的新年了,咱们中国人的传统节日。
从来就没有过大年三十上班的经历,今年要体验一下了。
心中的感觉很复杂,工作了,向成年迈近了一步,虽然不想这样,但是已经是男子汉了,不能总躲在家长的身后呀。
但是心理上明明还是小孩子,说句好听的就是童心未泯,说句难听的。。。
一年一年的过去,对于过年已经不那么期待了,期待新衣服,期待压岁钱,期待兄弟姐妹们一起开行的玩耍,期待放炮,期待。。。
大家都有各种各样的事情。
总之,如果明天不能给大家拜年的话,今天在此给大家拜个年,祝大家身体健康,万事如意。 February 15 整理过两天不忙的时候,整理一下这里。感觉这里都快被遗弃了,那就叫做[磊的废墟]--哈哈!
整理如下:
1. 加上E.T.的链接
2. 整理布局
3. 增加个留言什么的
4. 弄个好听的歌
如果大家还有什么指摘,请提出来,我一一对应。
February 14 情人节今天是一年一度的情人节,我和宝贝儿都对这个节日不感冒。
嘻嘻,简单的道个节日快乐就得了。一切还要从明年开始。
明天,灭灭就要回来了。对于灭灭,怎么说呢,本人还是非常欣赏的,独立,勇敢。。。。。等等。这次见到灭灭很可能很长时间就不能再见了。明年她从广州回来,我可能已经不在天津了。灭灭在的时候没觉得有什么感觉。但是,从一月开始便觉得不一样了,不论E.T,还是毽儿协。我知道不止是对于灭灭,对于大家,都是一个道理。因为我们是一家人。所以,我不能太投入,对于和大家每次的聚会的尽兴,我背后的伤心又有谁知道,真的舍不得大家呀!
今天有好事,宝贝儿的公司过年发了5000现金,还有很多东西。嘻嘻,买个4g的棒子。哈哈,买个正版的游戏。哈哈。
February 09 psp关于psp,真的不想多说了,天天泡坛子,看网站。
都成半个专家了。
就是眼看着我的psp那不到手。
55555
到了刷完机的时候,嘿嘿,玩他一宿(真没出息)。
嘻嘻。
天天除了java,就是日语。再这样下去真的日语1级都不在话下了。
来点活吧,求你了,让我加班吧。
我也来个夹一宿班。
想起呀,想起这么两句话来。谁跟我说的想不起来了:生书熟戏,听不腻的曲艺。。。。。。。。。
怎么。。。。听出来了吗?
知道是谁的话,有奖励的。
应该是这句台词:
大家都来加班吧,加班多好呀!
知道这句也有奖。
如果都知道,。。。。。就把我送给你。嘻嘻(仅限女士,年龄24一下,貌若天仙。。。。。。。) February 08 七武士还真用这个名字了,不更新就好久都不更新,就不能新。
要更新就更新好多,习习,连着写。
想说什么来着?还真忘了。
对了
死鬼子们,都死去吧。(由于星期日参观了抗日战争纪念馆)
震撼,好多人对于日本人参观靖国神厕感到气愤,你们倒是看看抗日战争纪念馆去呀,跟别人说我在日企工作,大家不是很理解,我们是汉奸?
我敢说真动起真格的,满嘴爱国的人们,不一定比我们敢于行动。
信不信?
大家都恨日本人,psp吧上怎么大家都对于sony的亏损都跟死了娘一样呢?你们说说,那是我们开的吗?天天日本的东西好,比我们好。死去吧。
天天骂联想垃圾,神州不行。就你们行,还有人说日货不买运动是对我们自己的损失,去你大爷的,为什么会有鸦片战争,为什么鬼子们把卖给我们的东西上印上 完全国货 ?
知道日本的团块时代吗?那是现在的50-60岁左右的人们吧,战败了,拼了一生的命,国家富强了。我们现在的人们,很少有那种精神,个人认为我们的社会风气不好,领导者(独裁者)的政策有问题。
作为一名汉奸,很想把天皇宣布无条件投降的声音当作铃声,有日本人欺负我们就打死小鬼子,我们就是这样的汉奸。
国人当自强呀。 乱想来想去,都没决定用什么标题。
最后,居然用了个电影的名字,汗,下次用 七武士,再下次,罗生们。
晕,黑泽明。虽然它是日本人。就好像松下幸之助,可惜了。真的偶像,不像是什么影视歌星。
跑题了,拉回来。
懒死了,已经多久没更新了,已经不知道了。可能有人以为我一定是很忙,可是,谁能想到我天天忙到了,就差睡一天了(要不是固定ip,早就top10了)。
越闲着越懒,什么都不想干,忙的加班的时候,也没忘更新一下自己的空间。现在,。。。。。乱,(点名主题了,这语文,爆强)
乱。。。。。。我等了好久得小p(psp),还不能玩。没法再郁闷了,从一开始决定买ds,到决定买小p。再到买完带不回来。
头发都快白了,不过,还是要感谢灭灭。辛苦她了,都胖了10斤了,嘻嘻。
还是,经常抽空更新一下吧。
天天这样下去也不是办法呀。
对吧!
大家
乱。。。。。(扣题,突出主旨) December 18 javaの異常についてjava 异常 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?
作为一个Java程序员,你至少应该能够找出两个问题。但是,如果你不能找出全部六个问题,请继续阅读本文。 本文讨论的不是Java异常处理的一般性原则,因为这些原则已经被大多数人熟知。我们要做的是分析各种可称为“反例”(anti-pattern)的违背优秀编码规范的常见坏习惯,帮助读者熟悉这些典型的反面例子,从而能够在实际工作中敏锐地察觉和避免这些问题。 反例之一:丢弃异常 代码:15行-18行。 这段代码捕获了异常却不作任何处理,可以算得上Java编程中的杀手。从问题出现的频繁程度和祸害程度来看,它也许可以和C/C++程序的一个恶名远播的问题相提并论——不检查缓冲区是否已满。如果你看到了这种丢弃(而不是抛出)异常的情况,可以百分之九十九地肯定代码存在问题(在极少数情况下,这段代码有存在的理由,但最好加上完整的注释,以免引起别人误解)。 这段代码的错误在于,异常(几乎)总是意味着某些事情不对劲了,或者说至少发生了某些不寻常的事情,我们不应该对程序发出的求救信号保持沉默和无动于衷。调用一下printStackTrace算不上“处理异常”。不错,调用printStackTrace对调试程序有帮助,但程序调试阶段结束之后,printStackTrace就不应再在异常处理模块中担负主要责任了。 丢弃异常的情形非常普遍。打开JDK的ThreadDeath类的文档,可以看到下面这段说明:“特别地,虽然出现ThreadDeath是一种‘正常的情形’,但ThreadDeath类是Error而不是Exception的子类,因为许多应用会捕获所有的Exception然后丢弃它不再理睬。”这段话的意思是,虽然ThreadDeath代表的是一种普通的问题,但鉴于许多应用会试图捕获所有异常然后不予以适当的处理,所以JDK把ThreadDeath定义成了Error的子类,因为Error类代表的是一般的应用不应该去捕获的严重问题。可见,丢弃异常这一坏习惯是如此常见,它甚至已经影响到了Java本身的设计。 那么,应该怎样改正呢?主要有四个选择: 1、处理异常。针对该异常采取一些行动,例如修正问题、提醒某个人或进行其他一些处理,要根据具体的情形确定应该采取的动作。再次说明,调用printStackTrace算不上已经“处理好了异常”。 2、重新抛出异常。处理异常的代码在分析异常之后,认为自己不能处理它,重新抛出异常也不失为一种选择。 3、把该异常转换成另一种异常。大多数情况下,这是指把一个低级的异常转换成应用级的异常(其含义更容易被用户了解的异常)。 4、不要捕获异常。 结论一:既然捕获了异常,就要对它进行适当的处理。不要捕获异常之后又把它丢弃,不予理睬。 反例之二:不指定具体的异常 代码:15行。 许多时候人们会被这样一种“美妙的”想法吸引:用一个catch语句捕获所有的异常。最常见的情形就是使用catch(Exception ex)语句。但实际上,在绝大多数情况下,这种做法不值得提倡。为什么呢? 要理解其原因,我们必须回顾一下catch语句的用途。catch语句表示我们预期会出现某种异常,而且希望能够处理该异常。异常类的作用就是告诉Java编译器我们想要处理的是哪一种异常。由于绝大多数异常都直接或间接从java.lang.Exception派生,catch(Exception ex)就相当于说我们想要处理几乎所有的异常。 再来看看前面的代码例子。我们真正想要捕获的异常是什么呢?最明显的一个是SQLException,这是JDBC操作中常见的异常。另一个可能的异常是IOException,因为它要操作OutputStreamWriter。显然,在同一个catch块中处理这两种截然不同的异常是不合适的。如果用两个catch块分别捕获SQLException和IOException就要好多了。这就是说,catch语句应当尽量指定具体的异常类型,而不应该指定涵盖范围太广的Exception类。 另一方面,除了这两个特定的异常,还有其他许多异常也可能出现。例如,如果由于某种原因,executeQuery返回了null,该怎么办?答案是让它们继续抛出,即不必捕获也不必处理。实际上,我们不能也不应该去捕获可能出现的所有异常,程序的其他地方还有捕获异常的机会——直至最后由JVM处理。 结论二:在catch语句中尽可能指定具体的异常类型,必要时使用多个catch。不要试图处理所有可能出现的异常。 反例之三:占用资源不释放 代码:3行-14行。 异常改变了程序正常的执行流程。这个道理虽然简单,却常常被人们忽视。如果程序用到了文件、Socket、JDBC连接之类的资源,即使遇到了异常,也要正确释放占用的资源。为此,Java提供了一个简化这类操作的关键词finally。 finally是样好东西:不管是否出现了异常,Finally保证在try/catch/finally块结束之前,执行清理任务的代码总是有机会执行。遗憾的是有些人却不习惯使用finally。 当然,编写finally块应当多加小心,特别是要注意在finally块之内抛出的异常——这是执行清理任务的最后机会,尽量不要再有难以处理的错误。 结论三:保证所有资源都被正确释放。充分运用finally关键词。 反例之四:不说明异常的详细信息 代码:3行-18行。 仔细观察这段代码:如果循环内部出现了异常,会发生什么事情?我们可以得到足够的信息判断循环内部出错的原因吗?不能。我们只能知道当前正在处理的类发生了某种错误,但却不能获得任何信息判断导致当前错误的原因。 printStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程,但只提供了一些最基本的信息,未能说明实际导致错误的原因,同时也不易解读。 因此,在出现异常时,最好能够提供一些文字信息,例如当前正在执行的类、方法和其他状态信息,包括以一种更适合阅读的方式整理和组织printStackTrace提供的信息。 结论四:在异常处理模块中提供适量的错误原因信息,组织错误信息使其易于理解和阅读。 反例之五:过于庞大的try块 代码:3行-14行。 经常可以看到有人把大量的代码放入单个try块,实际上这不是好习惯。这种现象之所以常见,原因就在于有些人图省事,不愿花时间分析一大块代码中哪几行代码会抛出异常、异常的具体类型是什么。把大量的语句装入单个巨大的try块就象是出门旅游时把所有日常用品塞入一个大箱子,虽然东西是带上了,但要找出来可不容易。 一些新手常常把大量的代码放入单个try块,然后再在catch语句中声明Exception,而不是分离各个可能出现异常的段落并分别捕获其异常。这种做法为分析程序抛出异常的原因带来了困难,因为一大段代码中有太多的地方可能抛出Exception。 结论五:尽量减小try块的体积。 反例之六:输出数据不完整 代码:7行-11行。 不完整的数据是Java程序的隐形杀手。仔细观察这段代码,考虑一下如果循环的中间抛出了异常,会发生什么事情。循环的执行当然是要被打断的,其次,catch块会执行——就这些,再也没有其他动作了。已经输出的数据怎么办?使用这些数据的人或设备将收到一份不完整的(因而也是错误的)数据,却得不到任何有关这份数据是否完整的提示。对于有些系统来说,数据不完整可能比系统停止运行带来更大的损失。 较为理想的处置办法是向输出设备写一些信息,声明数据的不完整性;另一种可能有效的办法是,先缓冲要输出的数据,准备好全部数据之后再一次性输出。 结论六:全面考虑可能出现的异常以及这些异常对执行流程的影响。 改写后的代码 根据上面的讨论,下面给出改写后的代码。也许有人会说它稍微有点啰嗦,但是它有了比较完备的异常处理机制。
本文的结论不是放之四海皆准的教条,有时常识和经验才是最好的老师。如果你对自己的做法没有百分之百的信心,务必加上详细、全面的注释。 另一方面,不要笑话这些错误,不妨问问你自己是否真地彻底摆脱了这些坏习惯。即使最有经验的程序员偶尔也会误入歧途,原因很简单,因为它们确确实实带来了“方便”。所有这些反例都可以看作Java编程世界的恶魔,它们美丽动人,无孔不入,时刻诱惑着你。也许有人会认为这些都属于鸡皮蒜毛的小事,不足挂齿,但请记住:勿以恶小而为之,勿以善小而不为。 December 14 nike我家的小同学公司发了张nike的卷儿,1200,可以买双1000的鞋了,嘻嘻。
以前一直只钟情于美洲小猫,(人家是big cat),没错就是puma.
现在,还是要弄一双,那也还是不喜欢nike.
只喜欢puma
不只是意大利现在穿puma ,那是我从小时候到现在的感情。
December 10 北京已经一个月没去北京了,真是对不起我家的小同学。
终于,在她生日之际前往,万恶的华苑,万恶的845,万恶的天津交通,5:30下班,居然赶不上7:20
的火车。终于在小同学的生日当天我没能去成。罪恶呀。用一句园子里的话:我太邪恶了。
对于以往的北京,天津人颇有一些微词。可以说大部分天津人不喜欢北京人,我就是那大部分人中的一员。但是有一种现象真的是难忘。
在我的记忆中,已经不记得什么时候开始天津就是无人售票了。至少在我独自坐公共的时候已经没有售票员了,但是在北京多数的公共都有售票员,一开始我并不能适应,上车先给钱,于是售票员让我先坐去。不习惯那种一开门大家先找坐,由于现在北京的公共还是很大,门很多(开始我没找到上车的门,等车时也要排队。)说说感人的吧好象北京人比天津人清闲似的,拿着好多东西安然的站着,有老人上车时,绝对有人让座。以前要是有人拿北京人和天津人比的话,打死我也不信北京人会比天津人好。现在我真的不敢这么认为了。我们的天津不再是我心中那个充满人情味的地方了,真的痛心呀。我们都快变成畜牲了。北京的售票员虽然报站时让我绝对听不懂,但是他们绝对比现在的我们热情,在北京公交上听得最多的是:劳驾往前走一走,谢谢,给老人让个座,病号过来,这边来。还有好多的女司机,老司机。并不是天津的现在一批小伙子开了。年轻人都工作了,社会安定了,可是你让老家伙们怎么办呢?他们工作一辈子,除了共匪,又有多少有保障的呢?
共匪和你们的狗,都死去吧。
小同学公司又发钱了,上个月发了3万,本来工资只是我的一半,但这样下来一个月下来已经够我这汉奸一年的粮饷了。郁闷。。 December 04 技术找工作要面试,有面试就有对付面试的办法。以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN,以及其它大小公司。 找工作要面试,有面试就有对付面试的办法。以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN,以及其它大小公司。 面试是没什么道理可讲的,它的题目有的不合情理、脱离实际。有在纸上写的,有当面考你的,也有在电话里问的,给你IDE的估计很少(否则你赶快去买彩票,说不定中)。所以如果你看完此文后,请不要抱怨说这些问题都能用IDE来解决。你必须在任何情况下准确回答这些问题,在面试中如果出现一两题回答不准确很有可能你就被拒之门外了。 当然这些都是Java的基本题,那些面试的人大多数不会问你Hibernate有多先进,Eclipse的三个组成部分,或command design pattern,他们都是老一辈了,最喜欢问的就是基础知识。别小看了这些基础,我朋友水平一流,结果就栽在一到基础知识的问题下,和高薪无缘。 好了废话少说,开始正题。 问: 第一,谈谈final, finally, finalize的区别。 最常被问到。 第二,Anonymous Inner Class (匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?第三,Static Nested Class和Inner Class的不同,说得越多越好(面试题有的很笼统)。 第四,&和&&的区别。 这个问得很少。 第五,HashMap和Hashtable的区别。 常问。 第六,Collection和Collections的区别。 你千万别说一个是单数一个是复数。 第七,什么时候用assert。 API级的技术人员有可能会问这个。 第八,GC是什么?为什么要有GC? 基础。 第九,String s = new String("xyz");创建了几个String Object?第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?面试题都是很变态的,要做好受虐的准备。 第十二,sleep()和wait()有什么区别?搞线程的最爱。 第十三,Java有没有goto?很十三的问题,如果哪个面试的问到这个问题,我劝你还是别进这家公司。 第十四,数组有没有length()这个方法? String有没有length()这个方法?第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?常问。 第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?第十七,给我一个你最常见到的runtime exception。 如果你这个答不出来,面试的人会认为你没有实际编程经验。 第十八,error和exception有什么区别?第十九,List, Set, Map是否继承自Collection接口?第二十,abstract class和interface有什么区别?常问。 第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?第二十二,接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)?第二十三,启动一个线程是用run()还是start()?第二十四,构造器Constructor是否可被override?第二十五,是否可以继承String类?第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?第二十八,编程题:用最有效率的方法算出2乘以8等於几?有C背景的程序员特别喜欢问这种问题。 第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?第三十二,编程题:写一个Singleton出来。 好先说这么一些。 答:第一,谈谈final, finally, finalize的区别。 final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 finally—再异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。 finalize—方法名。Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。 第二,Anonymous Inner Class (匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 匿名的内部类是没有名字的内部类。不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。 第三,Static Nested Class和Inner Class的不同,说得越多越好(面试题有的很笼统)。 Nested Class(一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&page=1 注:静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象第四,&和&&的区别。 &是位运算符。&&是布尔逻辑运算符。 第五,HashMap和Hashtable的区别。 都属于Map接口的类,实现了将惟一键映射到特定的值上。 HashMap类没有分类或者排序。它允许一个null键和多个null值。 Hashtable类似于HashMap,但是不允许null键和null值。它也比HashMap慢,因为它是同步的。 第六,Collection和Collections的区别。 Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。 Collection是个java.util下的接口,它是各种集合结构的父接口。 第七,什么时候用assert。 断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为true。如果表达式计算为false,那么系统会报告一个Assertionerror。它用于调试目的: assert(a > 0); // throws an Assertionerror if a <= 0 断言可以有两种形式: assert Expression1 ; assert Expression1 : Expression2 ; Expression1应该总是产生一个布尔值。 Expression2可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的String消息。 断言在默认情况下是禁用的。要在编译时启用断言,需要使用source 1.4标记: javac -source 1.4 Test.java 要在运行时启用断言,可使用-enableassertions或者-ea标记。 要在运行时选择禁用断言,可使用-da或者-disableassertions标记。 要系统类中启用断言,可使用-esa或者-dsa标记。还可以在包的基础上启用或者禁用断言。 可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。 第八,GC是什么?为什么要有GC? (基础)。 GC是垃圾收集器。Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一: System.gc() Runtime.getRuntime().gc() 第九,String s = new String("xyz");创建了几个String Object? 两个对象,一个是"xyx",一个是指向"xyx"的引用对象s。 第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11; 第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。 第十二,sleep() 和 wait() 有什么区别? 搞线程的最爱 sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)"醒来"的线程具有更高的优先级 (b)正在运行的线程因为其它原因而阻塞。 wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。 第十三,Java有没有goto? Goto—java中的保留字,现在没有在java中使用。 第十四,数组有没有length()这个方法? String有没有length()这个方法? 数组没有length()这个方法,有length的属性。 String有有length()这个方法。 第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。 equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。 第十七,给我一个你最常见到的runtime exception。 ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException 第十八,error和exception有什么区别? error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。 第十九,List, Set, Map是否继承自Collection接口? List,Set是 Map不是 第二十,abstract class和interface有什么区别? 声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。 第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 都不能 第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。 第二十三,启动一个线程是用run()还是start()? 启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 第二十四,构造器Constructor是否可被override? 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。 第二十五,是否可以继承String类? String类是final类故不可以继承。 第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 不能,一个对象的一个synchronized方法只能由一个线程访问。 第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 会执行,在return前执行。 第二十八,编程题: 用最有效率的方法算出2乘以8等於几? 有C背景的程序员特别喜欢问这种问题。 2 << 3 第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 不对,有相同的hash code。 第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。 第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。 第三十二,编程题: 写一个Singleton出来。 Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 一般Singleton模式通常有几种种形式: 第一种形式:定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。 public class Singleton { private Singleton(){} //在自己内部定义自己一个实例,是不是很奇怪? //注意这是private 只供内部调用 private static Singleton instance = new Singleton(); //这里提供了一个供外部访问本class的静态方法,可以直接访问 public static Singleton getInstance() { return instance; } } 第二种形式: public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率! if (instance==null) instance=new Singleton(); return instance; } } 其他形式: 定义一个类,它的构造函数为private的,所有方法为static的。 一般认为第一种形式要更加安全些 Hashtable和HashMap Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现 HashMap允许将null作为一个entry的key或者value,而Hashtable不允许 还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在 多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。 November 27 movie你可以不知道教父,但是你不能不知道阿尔 帕西诺
你可能觉得我介绍的电影提不起你的兴趣,但你还是要看看 闻香识女人
如果你们觉得我的话是bullshit,all ringt ,that is it. |
|
|