2010-02-26

待产包清单

待产包清单――妈妈用品

1、开襟外套:1件

天气较凉的季节或早晚时分,穿在病服外面,在病房或医院走动就不怕着凉了。

2、出院衣服:1套

出院的时候可不是大肚子啦,所以应该准备一套适合出院当天穿的服装。

3、哺乳式文胸:2-3个

哺乳式文胸方便给新生宝宝喂奶,准备2-3个可以替换就可以了。

4、束腹内裤:2-3条

束腹内裤和束腹带的效果是一样的,两者结合起来穿效果更好。

5、束腹带:1个

分娩后肚子的皮肤会松驰下垂,脂肪也容易堆积。用束缚带帮助肚子紧绷是很重要的。

6、防溢乳垫:1盒

把防溢乳垫垫在内衣里,吸收溢出的乳汁,保持乳房干爽、清洁,非常实用。

7、产妇卫生巾:1包

分娩后,恶露一下子排不尽,需要垫产妇卫生巾。

8、毛巾:2条

一条擦手、一条擦脚。

9、水盆:2个

一个洗脸、一个洗脚。

10、牙刷、牙膏、漱口水

牙刷要选软毛的,漱口水可在分娩后无法起身刷牙时使用。

11、护肤品:1套

最好是旅行装,妊娠油分娩前后都应坚持使用。

12、小镜子:1面

就算是入院去生产,也要注意自己的形象哦。

13、卫生纸、餐巾纸、湿纸巾:若干

入院时不用带很多,这些东西随时都可以买到。

14、带吸管的杯子:1个

产后不方便起身时,非常实用。

15、一次性杯子:若干

用来招待探望的亲戚朋友,用量视具体情况定。

16、可加热的饭盒、筷子、调羹

盛饭盛菜盛点心都可,医院一般有微波炉,随时可以加热食用。

17、吸奶器:1个

刚生完的1、2天,通常需要吸奶器帮助开奶。

18、营养品

可以适当的准备一些人参、巧克力为生产加油;血燕产后补身体非常理想。

待产包清单――宝宝用品
1、婴儿包巾:1条

这是宝宝出院时用的,在医院时一般有专用的提供。

2、婴儿衣服:1套

也是出院时穿的,根据季节选择合适的厚度。

3、围兜或手口巾:2个

喝奶时脏了可以用。

4、手套、脚套:1付

手套是为了防止宝宝抓伤自己,脚套是为了保暖,这些都不是必须用品。

5、奶瓶:1个

在妈妈没有奶的时候可以用。注意奶嘴的尺寸,应选适合新生儿的。

6、小勺:1个

如果希望母乳喂养,最好不要使用奶瓶,此时可以用小勺喂。

7、婴儿奶粉:1罐

不准备母乳喂养的妈妈肯定得带上,准备母乳喂养的也需要带上,以备不时之需。

8、消毒器:1套

保证奶瓶的卫生。

9、纸尿裤:1包

不用带太多,根据住院的时间来定,就算到时候不够,可以让家人再买。

10、湿纸巾:1包

给宝宝换尿布时的必备品。

11、小纱巾:2条

选择材质柔软的小纱巾2条,可以给宝宝洗脸、洗PP。

12、护臀霜:1支

宝宝要经常换尿不湿,应该防止出现红臀。

待产包清单――其他用品
1、入院证件

医院就医卡、母子健康手册一定要记得带好。

2、照相机、摄像机

给宝宝、妈妈拍照、摄像留念,注意要确保电量够用。

3、手机

妈妈一定要带好手机,有情况可以随时和家人联系。另外也需要看时间来记录阵痛、宫缩时间。

4、MP3

住院无聊时,产后痛苦时,都可以用音乐来缓解。

5、银行卡和现金

两者都需要准备,一定要带好现金,买点小东西的时候也方便。如果医院不能用卡支付费用时就更需要现金了,这个应事先向医院了解清楚支付方式。

6、笔记本、笔

不但可以用来记录阵痛、宫缩时间,还可以写宝宝日记。

待产包的放置窍门  按使用时间放置:将物品按照入院、分娩、住院、出院的时间段,分别放置在不同的袋子里,然后再装入待产包。这样使用时不需要大范围翻 找了。

  按物件功能放置:将衣服、洗漱用品、贵重用品分别放置在不同的袋子里,这样也容易找到。

  按贵重程度放置:建议将妈妈用品和宝宝用品放置在不同的小包,然后再一起放入一个大包里,另外将贵重物品(上述清单中的"其他用品")放在随身带的小 包里。

2010-02-08

毕业后5年决定你的命运

正如"打工皇帝"唐骏说:"我觉得有两种人不要跟别人争利益和价值回报。第一种人就是刚刚进入企业的人,头5年千万不要 说你能不能多给我一点儿工资,最重要的是能在企业里学到什么,对发展是不是有利……"
人总是从平坦中获得的教益少,从磨难中获得的教益多;从平坦中获得的教益浅,从磨难中获得的教益深。一个人在年轻时经历磨难,如能正确视之,冲出黑暗,那 就是一个值得敬慕的人。最要紧的是先练好内功,毕业后这5年就是练内功的最佳时期,练好内功,才有可能在未来攀得更高。
出路在哪里?出路在于思路!
其实,没有钱、没有经验、没有阅历、没有社会关系,这些都不可怕。没有钱,可以通过辛勤劳动去赚;没有经验,可以通过实践操作去总结;没有阅历,可以一步 一步去积累;没有社会关系,可以一点一点去编织。但是,没有梦想、没有思路才是最可怕的,才让人感到恐惧,很想逃避!
人必须有一个正确的方向,无论你多么意气风发,无论你是多么足智多谋,无论你花费了多大的心血,如果没有一个明确的方向,就会过得很茫然,渐渐就丧失了斗 志,忘却了最初的梦想,就会走上弯路甚至不归路,枉费了自己的聪明才智,误了自己的青春年华。
荷马史诗《奥德赛》中有一句至理名言:"没有比漫无目的地徘徊更令人无法忍受的了。"毕业后这5年里的迷茫,会造成10年后的恐慌,20年后的挣扎,甚至 一辈子的平庸。如果不能在毕业这 5年尽快冲出困惑、走出迷雾,我们实在是无颜面对10年后、20年后的自己。毕业这5年里,我们既有很多的不确定,也有很多的可能性。
毕业这5年里,我们既有很多的待定,也有很多的决定。
迷茫与困惑谁都会经历,恐惧与逃避谁都曾经有过,但不要把迷茫与困惑当作可以自我放弃、甘于平庸的借口,更不要成为自怨自艾、祭奠失意的苦酒。生命需要自 己去承担,命运更需要自己去把握。在毕业这5年里,越早找到方向,越早走出困惑,就越容易在人生道路上取得成就、创造精彩。无头苍蝇找不到方向,才会四处 碰壁;一个人找不到出路,才会迷茫、恐惧。
生活中,面对困境,我们常常会有走投无路的感觉。不要气馁,坚持下去,要相信年轻的人生没有绝路,困境在前方,希望在拐角。只要我们有了正确的思路,就一 定能少走弯路,找到出路!
成功的人不是赢在起点,而是赢在转折点。
不少刚刚毕业的年轻人,总是奢望马上就能找到自己理想中的工作。然而,很多好工作是无法等来的,你必须选择一份工作作为历练。职业旅程中的第一份工作,无 疑是踏入社会这所大学的起点。也许你找了一份差强人意的工作,那么从这里出发,好好地沉淀自己,从这份工作中汲取到有价值的营养,厚积薄发。千里之行,始 于足下,只要出发,就有希望到达终点。
起点可以相同,但是选择了不同的拐点,终点就会大大不同!
毕业这几年,我们的生活、感情、职业等都存在很多不确定的因素,未来也充满了各种可能。这个时候,必须学会选择,懂得放弃,给自己一个明确的定位,使自己 稳定下来。如果你不主动定位,就会被别人和社会"定型"!
可以这么说:一个人在毕业这5 年培养起来的行为习惯,将决定他一生的高度。我们能否成功,在某种程度上取决于自己对自己的评价,这就是定位。你给自己定位是什么,你就是什么。定位能决 定人生,定位能改变命运。丑小鸭变成白天鹅,只要一双翅膀;灰姑娘变成美公主,只要一双水晶鞋。
人的命,三分天注定,七分靠打拼,有梦就"会红",爱拼才会赢。只要不把自己束缚在心灵的牢笼里,谁也束缚不了你去展翅高飞。
现实情况远非他们所想的那样。于是,当优越感逐渐转为失落感甚至挫败感时,当由坚信自己是一块"金子"到怀疑自己是一粒"沙子"时,愤怒、迷茫、自卑就开 始与日俱增。
其实,应该仔细掂量一下自己,你是否真是金子?是真金,手中要有绝活,才能上要有过人之处才行。一句话:真金是要靠实力来证明的,只有先把自己的本领修炼 好了,才有资格考虑伯乐的事情
每颗珍珠原本都是一粒沙子,但并不是每一粒沙子都能成为一颗珍珠。
想要卓尔不群,就要有鹤立鸡群的资本。忍受不了打击和挫折,承受不住忽视和平淡,就很难达到辉煌。年轻人要想让自己得到重用,取得成功,就必须把自己从一 粒沙子变成一颗价值连城的珍珠。
天气有下雨与日出,人生有高峰与低谷。莫为浮云遮望眼,风物长宜放眼量。只要拂去阴霾,就能亮出朗朗晴空。如果你在工作上有些不如意,要相信自己不会一直 处于人生的低谷期,总有一天能冲破重重云层。告诉自己:我并没有失败,只是暂时没有成功!只要在内心点亮一盏希望之灯,一定能驱散黑暗中的阴霾,迎来光 明。
的确,论资历,他们是不折不扣的职场菜鸟,业务涉及不深,人脉一穷二白,在工作中经常碰壁。他们的压力并不一定都像千钧大石,而是像大雨来临前的天色,灰 色低沉,明明有空间,却被灰色填满每个缝隙,只能等待大雨倾盆之后的晴空。
"起得比鸡早,睡得比狗晚,干得比驴多,吃得比猪差。"这是很多刚刚毕业的人喜欢用来调侃自己生活状态的话。虽然有点儿夸张,但是,他们中的很多人的确一 直都被灰色心情所笼罩--心里永远是多云转阴。记得有位哲人曾说:"我们的痛苦不是问题本身带来的,而是我们对这些问题的看法产生的。"换个角度看人生, 是一种突破、一种解脱、一种超越、一种高层次的淡泊与宁静,从而获得自由自在的快乐。
一位哲人说:"人生就是一连串的抉择,每个人的前途与命运,完全把握在自己手中,只要努力,终会有成。" 就业也好,择业也罢,创业亦如此,只要奋发努力,都会成功。你是不是准备把生命的承诺全部都交给别人?
毕业后这5年,是改变自己命运的黄金时期。在最能决定自己命运时,如果还不把握,那你还要等到什么时候呢?我的人生我做主,命运由己不由人。
不要活在别人的嘴里,不要活在别人的眼里,而是把命运握在自己手里。
别说你没有背景,自己就是最大的背景。美国作家杰克・凯鲁亚克说过一句话:"我还年轻,我渴望上路。"在人生的旅途中,我们永远都是年轻人,每天都应该满 怀渴望。每个人的潜能都是无限的,关键是要发现自己的潜能和正确认识自己的才能,并找到一个能充分发挥潜能的舞台,而不能只为舞台的不合适感到不快。要客 观公正地看待自己的能力,结合自己的实际情况和爱好冷静选择,尽可能到最需要自己、最适合自己的地方。
在人力资源管理界,特别流行一个说法,即"骑马,牵牛,赶猪,打狗"理论:人品很好,能力又很强的,是千里马,我们要骑着他;人品很好但能力普通的,是老 黄牛,我们要牵着他;人品、能力皆普通的,就是"猪",我们要赶走他;人品很差能力很强的,那是"狗",我们要打击他。
我想,刚刚毕业几年的你,一样胸怀大志,一样想成为一匹被人赏识、驰骋沙场的千里马吧?那么,就好好沉淀下来。低就一层不等于低人一等,今日的俯低是为了 明天的高就。所谓生命的价值,就是我们的存在对别人有价值。能被人利用是一件好事,无人问津才是真正的悲哀!
能干工作、干好工作是职场生存的基本保障。任何人做工作的前提条件都是他的能力能够胜任这项工作。能干是合格员工最基本的标准,肯干则是一种态度。一个职 位有很多人都能胜任,都有干好这份工作的基本能力,然而,能否把工作做得更好一些,就要看是否具有踏实肯干、苦于钻研的工作态度了。
在能干的基础上踏实肯干
工作中,活干得比别人多,你觉得吃亏;钱拿得比别人少,你觉得吃亏;经常加班加点,你觉得吃亏……其实,没必要这样计较,吃亏不是灾难,不是失败,吃亏也 是一种生活哲学。现在吃点儿小亏,为成功铺就道路,也许在未来的某个时刻,你的大福突然就来了。
能吃亏是做人的一种境界,是处世的一种睿智。
在工作中并不是多做事或多帮别人干点儿活就是吃亏。如果领导让你加加班、赶赶任务,别以为自己吃了大亏,反而应该感到庆幸,因为领导只叫了你,而没叫其他 人,说明他信任你、赏识你。吃亏是一种贡献,你贡献得越多,得到的回报也就越多。乐于加班,就是这样的一种吃亏。
舍得舍得,有舍才有得;学会在适当时吃些亏的人绝对不是弱智,而是大智。
给别人留余地就是给自己留余地,予人方便就是予己方便,善待别人就是善待自己。
傻人有傻福,因为傻人没有心计。和这样的人在一起,身心放松,没有太多警惕,就能相互靠近。傻在很多时候意味着执着和忠贞,也意味着宽厚和诚实,让人不知 不觉站到他一边。傻人无意中得到的,比聪明人费尽心机得到的还多。毕业这几年,你的天空中只飘着几片雪花,这样你就满足了吗?成功需要坚持与积累,与其专 注于搜集雪花,不如省下力气去滚雪球。巴菲特说:"人生就像滚雪球,最重要的是发现很湿的雪和很长的坡。"让自己沉淀下来,学着发现"很湿的雪",努力寻 找"很长的坡"。记住:散落的雪花会很快融化,化为乌有,只有雪球才更实在,才能长久。
在毕业这几年里,你要是能做到比别人多付出一分努力,就意味着比别人多积累一分资本,就比别人多一次成功的机会。
什么是职业化呢?职业化就是工作状态的标准化、规范化、制度化,即在合适的时间、合适的地点用合适的方式说合适的话、做合适的事,使知识、技能、观念、思 维、态度、心理等符合职业规范和标准。
" 在每个行业里,都有很多出色的人才,他们之所以能存在,是因为比别人更努力、更智慧、更成熟。但是,最重要的是,他们比一般人更加职业化!这就是为什么我 现在能当你老板的原因。一个人仅仅专业化是不够的,只有职业化的人才能飞在别人前面,让人难以超越!"不要以为我们现在已经生存得很安稳了。对于毕业5年 的人来讲,一定要认清即将面临的五大挑战。
一、赡养父母。
二、结婚生子。
三、升职加薪。
四、工作压力。
五、生活质量。
有的人为生存而雀跃,目光总是停在身后,三天打鱼两天晒网,有始无终。
有的人为发展而奋斗,目光总是盯在正前方,每天进步一点点,坚持不懈。
毕业这几年,不能没有追求和探索,不能没有理想和目标。人生如逆水行舟,不进则退。甘于现状的生活就是不再前行的船,再也无法追上时代前进的步伐。一定要 抓紧每一秒钟的时间来学习,要明白学习不是学生的专利。小聪明的人最得意的是:自己做过什么?大智慧的人最渴望的是:自己还要做什么?
小聪明是战术,大智慧是战略;小聪明看到的是芝麻,大智慧看到的是西瓜。
在这个世界上,既有大人物,也有小角色,大人物有大人物的活法,小人物有小人物的潇洒,每个人都有自己的生活方式,谁也勉强不了谁。但是,小聪明只能有小 成绩和小视野,大智慧才能有大成就和大境界。小企业看老板,中企业看制度,大企业看文化。
小公司与大企业都有生存之道,没有好坏之分,但对一个人不同阶段的影响会不同。
小公司肯定想要发展为大企业,这是一种目标,年轻人也要给自己的职业生涯制定目标。毕业几年的你,是否经常会怯场或者是感到没有底气?居安思危绝对不是危 言耸听!此刻打盹,你将做梦;此刻学习,你将圆梦。在竞争激烈的人生战场上,打盹的都是输家!
每个人在年轻的时候似乎都豪情万丈,什么都不怕,可是随着年龄的增长,每天想着房子、工作、养家糊口这些俗事儿,再也没有年轻时那种敢于"上天探星、下海 捞月"的勇气了。是我们改变了生活,还是生活改变了我们?我们的思想越来越复杂,因为有了越来越多的舍不得、越来越多的顾虑,我们总是在徘徊、总是在犹 豫。毕业开始一两年,生活的重担会压得我们喘不过气来,挫折和障碍堵住四面八方的通口,我们往往在压迫得自己发挥出潜能后,才能杀出重围,找到出路。可是 两三年后,身上的重担开始减轻,工作开始一帆风顺,我们就松懈了下来,渐渐忘记了潜在的危险。直到有一天危机突然降临,我们在手足无措中被击败……毕业这 几年,仍然处于危险期,一定要有居安思危的意识,好好打拼,这样才能有一个真正的安全人生!
生于忧患,死于安乐。如果你想跨越自己目前的成就,就不能画地自限,而是要勇于接受挑战。对畏畏缩缩的人来说,真正的危险正在于不敢冒险!
年轻人在社会的重压下,适应能力已变得越来越强,只是他们不自觉地习惯被环境推着走。他们不敢冒险,怕给自己带来终身的遗憾,于是告慰自己:"我对得起自 己、对得起家人,因为我已竭尽全力。"其实,人只有不断挑战和突破才能逐渐成长。长期固守于已有的安全感中,就会像温水里的青蛙一样,最终失去跳跃的本 能。
经历了这几年社会生活,你应该明白:这个世界上有富也有贫,有阴也有亮,有丑也有美,到底看到什么,取决于自己是积极还是消极。在年轻时学会勤勉地工作, 用一种光明的思维对待生活,那么,只要张开手掌,你就会发现,里面有一片灿烂的人生。
把感恩刻在石头上,深深地感谢别人帮助过你,永远铭记,这是人生应有的一种境界;把仇恨写在沙滩上,淡淡忘掉别人伤害过你,学会宽容,让所有的怨恨随着潮 水一去不复返,这也是一种人生境界。
学会倒出水,才能装下更多的水。从毕业那天开始,学会把每天都当成一个新的起点,每一次工作都从零开始。如果你懂得把"归零"当成一种生活的常态,当成一 种优秀的延续,当成一种时刻要做的事情,那么,经过短短几年,你就可以完成自己职业生涯的正确规划与全面超越。
在职业起步的短短道路上,想要得到更好、更快、更有益的成长,就必须以归零思维来面对这个世界。不要以大学里的清高来标榜自己,不要觉得自己特别优秀,而 是要把自己的姿态放下,把自己的身架放低,让自己沉淀下来,抱着学习的态度去适应环境、接受挑战。放下"身段"才能提高身价,暂时的俯低终会促成未来的高 就。
年轻人从校园或者从一个环境进入一个新环境,就要勇于将原来环境里熟悉、习惯、喜欢的东西放下,然后从零开始。我们想在职场上获得成功,首先就要培养适应 力。从自然人转化为单位人是融入职场的基本条件。一个人起点低并不可怕,怕的是境界低。越计较自我,便越没有发展前景;相反,越是主动付出,那么他就越会 快速发展。很多今天取得一定成就的人,在职业生涯的初期都是从零开始,把自己沉淀再沉淀、倒空再倒空、归零再归零,正因为这样,他们的人生才一路高歌,一 路飞扬。
在毕业这几年里,我们要让过去归零,才不会成为职场上那只背着重壳爬行的蜗牛,才能像天空中的鸟儿那样轻盈地飞翔。请好好品味一下杰克・韦尔奇说过的一句 话:"纠正自己的行为,认清自己,从零开始,你将重新走上职场坦途。" 吐故才能纳新,心静才能身凉,有舍才能有得,杯空才能水满,放下才能超越。
归零思维五大表现:心中无我,眼中无钱,念中无他,朝中无人,学无止境。
年轻人难免带着几分傲气,认为自己无所不能、所向披靡,其实不然,初入职场的新人还是个"婴儿",正处在从爬到走的成长阶段。在毕业这几年里,一定要让自 己逐步培养起学徒思维、海绵思维、空杯思维,具有这样思维的人心灵总是敞开的,能随时接受启示和一切能激发灵感的东西,他们时刻都能感受到成功女神的召 唤。

2010-02-05

鼓励自己最有效的20个方法

我们很容易遭遇逆境,也很容易被一次次的失败打垮。但是人生不容许我们停留在 失败的瞬间,如果不前进的话,就注定只能被这个世界抛弃。那么,怎样鼓励自己向前追上去呢?专家提出了下面几个自我激励的方法,不论你是否顺心,都来读一 读学一学吧。

  人很容易后悔当初。以下方法能使你改变这种思维方式,转而向前看。



  塑造自我:在我们不断塑造自我的过程 中,影响最大的莫过于是选择乐观的态度还是悲观的态度。我们思想上的这种抉择可能给我们带来激励,也有可能阻滞我们前进。



  清晰地规划:目标是人生走向成功的第 一步,但塑造自我却不仅限于规划目标。要真正塑造自我和自己想要的生活,我们必须奋起行动。莎士比亚说得好:"行动胜过雄辩。"



  自我激励:一旦掌握自我激励,自我塑 造的过程也就随即开始。以下方法可以帮你塑造自我,塑造那个你一直梦寐以求的自我。



  树立远景:迈向自我塑造的第一步,要 有一个你每天早晨醒来为之奋斗的目标,它应是你人生的目标。远景必须即刻着手建立,而不要往后拖。你随时可以按自己的想法做些改变,但不能一刻没有远景。



  离开舒适区:不断寻求挑战激励自己。 提防自己,不要躺倒在舒适区。舒适区只是避风港,不是安乐窝。它只是你心中准备迎接下次挑战之前刻意放松自己和恢复元气的地方。



  把握好情绪:人开心的时候,体内就会 发生奇妙的变化,从而获得新的动力和力量。但是,不要总想在自身之外寻开心。令你开心的事不在别处,就在你身上。因此,找出自身的情绪高涨期用来不断激励 自己。



  调高目标:许多人惊奇地发现,他们之 所以达不到自己孜孜以求的目标,是因为他们的主要目标太小、而且太模糊不清,使自己失去动力。如果你的主要目标不能激发你的想象力,目标的实现就会遥遥无 期。因此,真正能激励你奋发向上的是,确立一个既宏伟又具体的远大目标。



  加强紧迫感:20世纪作者Anais Nin(阿耐斯)曾写道:"沉溺生活的人没有死的恐惧"。自以为长命百岁无益于你享受人生。然而,大多数人对此视而不见,假装自己的生命会绵延无绝。惟有 心血来潮的那天,我们才会筹划大事业,将我们的目标和梦想寄托在Denis Waitley(丹尼斯)称之为"虚幻岛"的汪洋大海之中。其实,直面死亡未必要等到生命耗尽时的临终一刻。事实上,如果能****真地想象我们的弥留之 际,会物极必反产生一种再生的感觉,这是塑造自我的第一步。



  撇开朋友:对于那些不支持你目标的 "朋友",要敬而远之。你所交往的人会改变你的生活。与愤世嫉俗的人为伍,他们就会拉你沉沦。结交那些希望你快乐和成功的人,你就在追求快乐和成功的路上 迈出最重要的一步。对生活的热情具有感染力。因此同乐观的人为伴能让我们看到更多的人生希望。



  迎接恐惧:世上最秘而不宣的秘密是, 战胜恐惧后迎来的是某种安全有益的东西。哪怕克服的是小小的恐惧,也会增强你对创造自己生活能力的信心。如果一味想避开恐惧,它们会象疯狗一样对我们穷追 不舍。此时,最可怕的莫过于双眼一闭假装它们不存在。做好调整计划实现目标的道路绝不是坦途。它总是呈现出一条波浪线,有起也有落。但你可以安排自己的休 整点。事先看看你的时间表,框出你放松、调整、恢复元气的时间。即使你现在感觉不错,也要做好调整计划。这才是明智之举。在自己的事业波峰时,要给自己安 排休整点。安排出一大段时间让自己隐退一下,即使是离开自己挚爱的工作也要如此。只有这样,在你重新投入工作时才能更富激情。



  直面困难:每一个解决方案都是针对一 个问题的。二者缺一不可。困难对于脑力运动者来说,不过是一场场艰辛的比赛。真正的运动者总是盼望比赛。如果把困难看作对自己的诅咒,就很难在生活中找到 动力。如果学会了把握困难带来的机遇,你自然会动力陡生。首先要感觉好多数人认为,一旦达到某个目标,人们就会感到身心舒畅。但问题是你可能永远达不到目 标。把快乐建立在还不曾拥有的事情上,无异于剥夺自己创造快乐的权力。记住,快乐是天赋权利。首先就要有良好的感觉,让它使自己在塑造自我的整个旅途中充 满快乐,而不要再等到成功的最后一刻才去感受属于自己的欢乐。



  加强排练:先"排演"一场比你要面对 的珲要复杂的战斗。如果手上有棘手活而自己又犹豫不决,不妨挑件更难的事先做。生活挑战你的事情,你定可以用来挑战自己。这样,你就可以自己开辟一条成功 之路。成功的真谛是:对自己越苛刻,生活对你越宽容;对自己越宽容,生活对你越苛刻。



  立足现在:锻炼自己即刻行动的能力。 充分利用对现时的认知力。不要沉浸在过去,也不要耽溺于未来,要着眼于今天。当然要有梦想、筹划和制订创造目标的时间。不过,这一切就绪后,一定要学会脚 踏实地、注重眼前的行动。要把整个生命凝聚在此时此刻。



  敢于竞争:竞争给了我们宝贵的经验, 无论你多么出色,总会人外有人。所以你需要学会谦虚。努力胜过别人,能使自己更深地认识自己;努力胜过别人,便在生活中加入了竞争"游戏"。不管在哪里, 都要参与竞争,而且总要满怀快乐的心情。要明白最终超越别人远没有超越自己更重要。



  内省:大多数人通过别人对自己的印象 和看法来看自己。获得别人对自己的反映很不错,尤其正面反馈。但是,仅凭别人的一面之辞,把自己的个人形象建立在别人身上,就会面临严重束缚自己的危险。 因此,只把这些溢美之词当作自己生活中的点缀。人生的棋局该由自己来摆。不要从别人身上找寻自己,应该经常自省并塑造自我。



  挑战自我:危机能激发我们竭尽全力。 无视这种现象,我们往往会愚蠢地创造一种追求舒适的生活,努力设计各种越来越轻松的生活方式,使自己生活得风平浪静。当然,我们不必坐等危机或悲剧的到 来,从内心挑战自我是我们生命力量的源泉。圣女贞德(Joan of Arc )说过:"所有战斗的胜负首先在自我的心里见分晓。"



  精工细笔:创造自我,如绘巨幅画一 样,不要怕精工细笔。如果把自己当作一幅正在描绘中杰作,你就会乐于从细微处做改变。一件小事做得与众不同,也会令你兴奋不已。总之,无论你有多么小的变 化,点点都于你很重要。



  不要怕犯错:有时候我们不做一件事, 是因为我们没有把握做好。我们感到自己"状态不佳"或精力不足时,往往会把必须做的事放在一边,或静等灵感的降临。你可不要这样。如果有些事你知道需要做 却又提不起劲,尽管去做,不要怕犯错。给自己一点自嘲式幽默。抱一种打趣的心情来对待自己做不好的事情,一旦做起来了尽管乐在其中。



  不要害怕拒绝:不要消极接受别人的拒 绝,而要积极面对。你的要求却落空时,把这种拒绝当作一个问题:"自己能不能更多一点创意呢?"不要听见不字就打退堂鼓。应该让这种拒绝激励你更大的创造 力。



  尽量放松:接受挑战后,要尽量放松。 在脑电波开始平和你的中枢神经系统时,你可感受到自己的内在动力在不断增加。你很快会知道自己有何收获。自己能做的事,不必祈求上天赐予你勇气,放松可以 产生迎接挑战的勇气。

12种性格导致贫穷

研究表明,每个人都 有不同的性格和个性,有的性格对于挣钱是有帮 助的,有的性格却容易导致贫困.。大量的研究表明,至少有十二种性格容易导致贫困和失败。

    第一:知足,只要有吃有穿,腹饱体暖,就感到满足,对于财富没有追求 。    

    第二:自满,自己的总是最好的,这种人不愿与外界来往,不可能有更高的追 求.    
    第三:保守,这种人的生活全凭过去的经 验,没有走过的路,他不敢走,没有人做过的事,他不敢做.    
    第四:怯懦,这种人胆子特别小,总是怕这怕那,哪一种成功不冒风险 呢?    
    第五:懒惰,一种是身体懒惰,一种是精神懒惰.    
    第六:孤僻,挣钱就是把别人的钱变成自己的钱,孤僻的人不擅长与 人打交道,要想挣到钱就不太容易了    
    第七:自以为是.自以为是的人,一般都处理不好与周围的人的关系, 与人处不好关系,就不能形成长久的合作.与人合作不好,很难做成大事.    
    第八:狭隘,一是心胸狭隘,二是视野狭隘,三是知识狭隘,这种性格的人, 也是很难与 人和社会相处的,只好既贫又困.    
    第九: 自私,不想奉献,只想占小便宜,这种人最终不会获得成功和财富,他只能拥有自己-----行影相吊,顾影自怜.    
    第十:骄傲,有一点成绩就忘乎所以,这种人也使会成功,但很快有会丧失他 获得的一 切.
    第十一:狂妄,这种人无论在哪里都 不受欢迎,尽管他有很大的才气很强的能力,但是一定会招来周围的人群起而攻之.  
    第十二:消极,消极的人什么都不想,什么也不去做,即使有再强的能力,终生也将一事无 成.

程序员职业生涯中的�一三五七

今天早上起来,在 twitter 上扯淡了两句(我的账号:@laiyonghao)程序员职业生涯中工作一年、三年、五年之后的一些常见的想法和做法,@laoxiong 建议我不妨写篇 blog 记录一下,嗯,很好的建议,所以就扩展了一下,谈谈自己的一些看法。
嗯,事先声明一下:我没有想去指导读者如何安排自己的职业生涯的想法,我只是记录自己的所思,千万不要想着我有尝试去说服你去做某事的意愿,绝对没有。因 为做比说难,以下说的,我自己都未必做得到,哪敢拿来说服他人呢?


刚毕业,通常有三个选择:一是去比较知名的企业,二是去比较小的公司,三是选择自己创业。下面分别来谈一下。
1、去知名企业,好处是显然的:比较好的薪酬和福利,加班也比较少,也有一些"我跟某某大牛共事"或"我是某某公司的员工"的荣誉感,另外也有机会专精某 一领域。劣势也同样明显:能去知名企业的毕业生相对都比较牛,但进去工作以后往往是做一个小角色,如何处理好这份失落感,不容易;然后生于忧患,死于安 乐,算法大牛去写小 CGI,可要担心自己的技术竞争力会不会下降。
2、去小公司,小公司的好处是有非常多的锻炼机会,技术上提升会很快。啥事都要自己去折腾,还有无穷无尽的需求,周六上班是必须的,甚至可能每天都要加 班,薪酬和福利都比较少,住房公积金就不要去想了。
3、创业(若非特别指出,本文中的创业都是指技术创业),这是极少数人的选择。如果这时候创业,往往是自己会什么技术就用什么技术,对于成本和风险的估算 基本上没有什么概念,一腔热血,这种"以低端技术为导向的创业"结果往往也是碧血洗蓝天。

工作一年,是程序员思想变化最大的时候。一方面通过一年的职场历练,大多数人都成功地从学生角色转换到职业人;另一方面,青少年时期的理想主义仍然 没有死心。这个时间,至少会有一半人跳槽,在小公司里这个比例还要高得多,推友 @telking 是三四线城市的小公司的老板,他就说:"我这里的基本上都是在一周年以后离职的,就是觉得自己能力不错了可以去闯荡了,每年都招人,过了一年又离职"。
在我看来,主要是工作一年以后,如果是在小公司,经历的产品都可能有三五个了,就算是在大公司,参与过的模块或项目也有一个两个了。这时转正已经半年多 了,甚至已经做了手下有两三个兵的小组长,自我感觉翅膀硬了,待遇却往往还没有跟上去,很希望公司有所表示,但往往失望。于是离职,哪怕在大公司,也至少 有三分之一的人会走。
不过工作一年之后往往只是跳槽的人多,出来自己创业单干的,还是比较少。我觉得可能是因为阅历增长,开始明白风险的可怕;二是职场经历一年下来,棱角被磨 平一些了,开始眷恋这种每月有钱领的"稳定"生活,不想折腾。
这里还有一个特殊情况要说一下,就是如果人员是社招的,那么进公司一年左右,肯定要提一下待遇,不然也容易出现离职,人在这个时候,需要公司有个实打实的 行为来肯定一下。

如果是应届生,在一个公司工作三年左右的时候,最容易离职。因为这个时候不仅个人觉得各方面的能力大有提升,想出来折腾一下;而公司往往觉得这个人 才刚培养得有点好用,开始打算压榨之;重要的是这时会有个催化剂出场,就是猎头,猎头会大范围地发掘三年经验左右的人,因为他们通常待遇低、技术成长到了 一定的程度,是市场上最好的猎物。三重矛盾之中,受到猎头诱惑的能力比较好的,肯定跑路。
如果这个人是在大公司呆了三年,除了被猎头拐跑,还有一个很大的可能性是跟着自己的上司、朋友或同学一起创业去了,三人成党,觉得三个臭皮匠还顶个诸葛亮 呢,我们仨肯定能成事。这时候的创业往往是产品导向的,就是几个人一合计,做 XXX 可能有前途,就做了;成功的就不说了,失败的通常是要么预算不足东西没做出来钱已经花完了,比较好运的是东西做出来了发现市场根本没有相像中的那么大那么 容易占领。

如果在一个地方工作了五年,在小公司的话,肯定已经是中层甚至高层了,如果还不是,还是离开这一行的好。所以这个时段,在小公司的通常就不会离职 了,除非整个公司遇到非常困难的事情或者人事斗争太严重。工作五年是大公司的员工的创业高潮,通过五年的埋头苦干,一方面从小角色熬到了项目负责人或技术 骨干,结合之前的深厚功底,在技术方面肯定已经是专家级,身边还有一些工作三年左右的小弟可以忽悠出来帮手;另一方面通过五年的职场耕耘,结识了许多朋 友,技术和非技术的都有,甚至还有在自己熟悉的领域和社区有些名气了,也有风投或天使愿意买账;最后是工作五年了,都奔三了,结婚、买房和生小孩,样样都 是钱,生活压力大增,靠公司加薪真的是杯水车薪,还管不上 CPI,所以就创业去吧。
这时候的创业,成功机会大增。因为看过不少身边的朋友的失败,不仅知道风险,知道市场,还知道成本控制,又有之前建立的各种关系,特别"醒目"的朋友还会 开始利用一些政府部门的关系之类,成功的机会自然跟之前不能相提并论。在技术上,创业时也会根据项目需要来选择技术,该用 PHP 就用 PHP,该用 .net 就用 .net,个人的技术理想在决策时所占的比重已经很小了。
这时候出现创业失败,往往是因为这些关系还不够稳定,如果研发战线拉得过长,就容易产生人员变动,比如手下的之前做了三年的小弟,如果再做一年,他想公司 给他加钱表示一下肯定,而公司又还没有盈利,你基本上不会加给他啦,只会画饼说以后如何如何,这时候他就很有可能走人了。另外就是合伙人,可能还有投资 人,这些关系其实不是那么稳定,合伙人时时可能会另有想法拆伙走人,而投资人也可能会因为产品达不到预期而撤资。

其实我工作还不到 7 年,所以在这里只谈一些自己的假想,仅供娱乐。工作七年之后,社会关系更加成熟稳定,家庭也磨合得比较合拍了,个人看世界的角度和高度都大有提升,在行业 中也成为名符其实的专家,此时不创业,更待何时。
这时候创业,只要能够找到一两个阅历同样丰富的合作人,还有一个看好你个人或你的团队的投资人,并且愿意去做一个"小"项目,成功的几率我觉得应该超过八 成。任何时候创业,只要自负到觉得自己要么不做,要做就做一个颠覆性的大项目,失败的机率都是大于成功机率的,所以这个时候最重要的就是要把自己放低,别 动不动就我做过 XXX、YYY 和 ZZZ,现在我要做一个更牛的 WWW,那就悬了。

eclipse历史版本下载地址

eclipse历史版本下载地址:
http://archive.eclipse.org/eclipse/downloads/

2010-02-04

南宁火车站订票号码

南宁火车站 南宁市双拥路20号 0771-2222222
南宁市南鹰售票点 双拥路20号 0771-2351888
铁道饭店售票点 中华路84号 0771-2738520
南宁市亭洪铁通营业厅 亭洪路66号 0771-2244670
南宁市东葛铁通营业厅 东葛路88号嘉园小区 0771-2306914
南宁市大学铁通营业厅 大学路28-1-2号 0771-2218189

南宁市青山铁通营业厅 青山路9号 0771-2350189
南宁市梦之岛水晶城营业厅 梦之岛水晶城一楼H03号铺 0771-2366007
南宁市大沙田营业厅 金沙大道11号 0771-2344144
南宁市衡阳营业厅 衡阳西路21号 0771-2731023
南宁市秀安营业厅 秀安路2-4号 0771-2232000
南宁市中华路火车站售票点 中华路110号 0771-2238212

JDK1.5/1.6/1.7之新特性总结

开发过程中接触到了从jdk1.5---jdk1.7的使用,在不同的阶段,都 使用过了jdk的一些新特性,操作起来更加方面啦!特此总结了下,与喜欢it 的朋友共勉!呵呵

以下是测试代码:

JDK1.5新特性:

1.自动装箱与拆箱:

Integer iObj = 3;

System.out.println(iObj + 12);
   Integer i1 = 137(-128--127范围时,为true);
   Integer i2 = 137(-128--127范围时,为true);

   System.out.println(i1 == i2); //false,但是括号中时却返回ture,原因是Integer采用的是享元模式

   Integer i3 = Integer.valueOf(213);
   Integer i4 = Integer.valueOf(213);
   System.out.println(i3==i4);//同上,另一种包装形式

2.枚举(常用来设计单例模式)

public class EnumTest {

/**
* @param args
*/
public static void main(String[] args) {
   WeekDay1 weekDay = WeekDay1.MON;
   System.out.println(weekDay.nextDay());
   WeekDay weekDay2 = WeekDay.FRI;
   System.out.println(weekDay2);
   System.out.println(weekDay2.name());
   System.out.println(weekDay2.ordinal());
   System.out.println(WeekDay.valueOf("SUN").toString());
   System.out.println(WeekDay.values().length);
   new Date(300){};
}

public enum WeekDay{

   SUN(1),MON(),TUE,WED,THI,FRI,SAT;
   private WeekDay(){System.out.println("first");}
   private WeekDay(int day){System.out.println("second");}
}

public enum TrafficLamp{
   RED(30){
    public TrafficLamp nextLamp(){
     return GREEN;
    }
   },
   GREEN(45){
    public TrafficLamp nextLamp(){
     return YELLOW;
    }   
   },
   YELLOW(5){
    public TrafficLamp nextLamp(){
     return RED;
    }   
   };
   public abstract TrafficLamp nextLamp();
   private int time;
   private TrafficLamp(int time){this.time = time;}
}
}

3.静态导入

import static java.lang.Math.*;

public class StaticImport {
public static void main(String[] args){
   int x = 1;
   try {
    x++;
   } finally {
    System.out.println("template");
   }
   System.out.println(x);
  
  
   System.out.println(max(3, 6));
   System.out.println(abs(3 - 6));
  
}
}
4.可变参数

public class VarableParameter {

/**
* @param args
*/
public static void main(String[] args) {

   System.out.println(add(2,3));
   System.out.println(add(2,3,5));  
}


public static int add(int x,int... args){
   int sum = x;
/*   for(int i=0;i<args.length;i++){
    sum += args[i];
   }*/
  
   for(int arg : args){
    sum += arg;
   }
   return sum;
}

}
5.内省

ReflectPoint pt1 = new ReflectPoint(3,5);

BeanInfo beanInfo = Introspector.getBeanInfo(pt1.getClass());
   PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
   Object retVal = null;
   for(PropertyDescriptor pd : pds){
     Method methodGetX = pd.getReadMethod();
     retVal = methodGetX.invoke(pt1);

   }
   jdk1.6新特性:

1.Web服务元数据

Java 里的Web服务元数据跟微软的方案基本没有语义上的区别,自从JDK5添加了元数据功能(Annotation)之后,SUN几乎重构了整个J2EE体 系, 由于变化很大,干脆将名字也重构为Java EE, Java EE(当前版本为5.0)将元数据纳入很多规范当中,这其中就包括Web Services的相关规范, 加入元数据之后的Web Services服务器端编程模型就跟上面看到的C#片断差不多了, 这显然比以前的JAX-RPC编程模型简单(当然, Axis的编程模型也很简单).这里要谈的Web服务元数据(JSR 181)只是Java Web 服务规范中的一个,它跟Common Annotations, JAXB2, StAX, SAAJ和JAX-WS等共同构成Java EE 5的Web Services技术堆栈.

package WebServices;

import java.io.File;
import java.io.IOException;
import javax.jws.Oneway;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

/**
* @author chinajash
*/
@WebService(targetNamespace="http://blog.csdn.net/chinajash",serviceName="HelloService")
public class WSProvider {
     @WebResult(name="Greetings")//自定义该方法返回值在WSDL中相关的描述    
     @WebMethod
     public String sayHi(@WebParam(name="MyName") String name){
         return "Hi,"+name; //@WebParam是自定义参数name在WSDL中相关的描述
     }    
     @Oneway //表明该服务方法是单向的,既没有返回值,也不应该声明检查异常
     @WebMethod(action="printSystemTime",operationName="printSystemTime")//自定 义该方法在WSDL中相关的描述
     public void printTime(){
         System.out.println(System.currentTimeMillis());
     }
     public static void main(String[] args) {
         Thread wsPublisher = new Thread(new WSPublisher());
         wsPublisher.start();
     }    
     private static class WSPublisher implements Runnable{
         public void run() {
             //发布WSProvider到http://localhost:8888/chinajash/WSProvider这个地址,之前必须调用 wsgen命令
             //生成服务类WSProvider的支持类,命令如下:
             //wsgen -cp . WebServices.WSProvider
             Endpoint.publish("http://localhost:8888/chinajash/WSProvider",new WSProvider());
         }        
     }
}

如果想看到Web Services Engine生成的WSDL文件是否遵守上面的元数据, 我们没有必要将上面的WSProvider部署到支持JSR-181的应用服务器或Servlet形式的Web Services Engine,现在JDK6已经提供了一个很简单的机制可以用来测试和发布Web Services,下面讲讲如何在JDK6环境下发布Web Services和查看生成的WSDL
1.将<JDK_HOME>/bin加入path环境变量
2.在命令行下切换当前目录到WSProvider的class文件所在的目录,运行下面命令
wsgen -cp . WebServices.WSProvider
在这个例子中会生成以下3个类的源代码文件及class文件
SayHi
SayHiResponse
PrintTime
3.执行如下代码发布WSProvider到http://localhost:8888/chinajash/WSProvider,在这里可以执行 WSProvider类的main方法就可以
Endpoint.publish("http://localhost:8888/chinajash/WSProvider",new WSProvider());
4.在浏览器输入http://localhost:8888/chinajash/WSProvider?wsdl就可以看到生成的WSDL文件,为了 节省篇幅,这里就不把生成的WSDL文件贴上了,大家可以自己动手试试.
2.脚本语言支持

JDK6增加了对脚本语言的支持(JSR 223),原理上是将脚本语言编译成bytecode,这样脚本语言也能享用Java平台的诸多优势,包括可移植性,安全等,另外,由于现在是编译成 bytecode后再执行,所以比原来边解释边执行效率要高很多。加入对脚本语言的支持后,对Java语言也提供了以下好处。
1、许多脚本语言都有动态特性,比如,你不需要用一个变量之前先声明它,你可以用一个变量存放完全不同类型的对象,你不需要做强制类型转换,因为转换都是 自动的。现在Java语言也可以通过对脚本语言的支持间接获得这种灵活性。
2、 可以用脚本语言快速开发产品原型,因为现在可以Edit-Run,而无需Edit-Compile-Run,当然,因为Java有非常好的IDE支持,我 们完全可以在IDE里面编辑源文件,然后点击运行(隐含编译),以此达到快速开发原型的目的,所以这点好处基本上可以忽略。
3、通过引入脚本语言可以轻松实现Java应用程序的扩展和自定义,我们可以把原来分布在在Java应用程序中的配置逻辑,数学表达式和业务规则提取出 来,转用JavaScript来处理。

Sun的JDK6实现包含了一个基于Mozilla Rhino的 脚本语言引擎,支持JavaScript,这并不是说明JDK6只支持JavaScript,任何第三方都可以自己实现一个JSR-223兼容的脚本引擎 使得JDK6支持别的脚本语言,比如,你想让JDK6支持Ruby,那你可以自己按照JSR 223的规范实现一个Ruby的脚本引擎类,具体一点,你需要实现javax.script.ScriptEngine(简单起见,可以继承 javax.script.AbstractScriptEngine)和javax.script.ScriptEngineFactory两个接口。 当然,在你实现自己的脚本语言引擎之前,先到scripting.dev.java.net project 这里看看是不是有人已经帮你做了工作,这样你就可以直接拿来用就行。

Scripting API

--------------------------------------------------------------------------------
Scripting API是用于在Java里面编写脚本语言程序的API, 在Javax.script中可以找到Scripting API,我们就是用这个API来编写JavaScript程序,这个包里面有一个ScriptEngineManager类,它是使用Scripting API的入口,ScriptEngineManager可以通过jar服务发现(service discovery)机制寻找合适的脚本引擎类(ScriptEngine),使用Scripting API的最简单方式只需下面三步
1、创建一个ScriptEngineManager对象
2、通过ScriptEngineManager获得ScriptEngine对象
3、用ScriptEngine的eval方法执行脚本

下面是一个Hello World程序

/** * @author chinajash */public class HelloScript {public static void main(String[] args) throws Exception {         ScriptEngineManager factory = new ScriptEngineManager();//step 1         ScriptEngine engine = factory.getEngineByName("JavaScript");//Step 2             engine.eval("print('Hello, Scripting')");//Step 3     }     }运行上面程序,控制台会输出Hello, Scripting上面这个简单的Scripting程序演示了如何在Java里面运行脚本语言,除此之外,我们还可以利用Scripting API实现以下功能1、暴露Java对象为脚本语言的全局变量2、在Java中调用脚本语言的方法3、脚本语言可以实现Java的接口4、脚本语言可以像 Java一样使用JDK平台下的类下面的类演示了以上4种功能package Scripting;import java.io.File;import javax.script.Invocable;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptException;/** * @author chinajash */public class ScriptingAPITester {     public static void main(String[] args) throws Exception {         ScriptEngineManager manager = new ScriptEngineManager();         ScriptEngine engine = manager.getEngineByName("JavaScript");         testScriptVariables(engine);//演示如何暴露Java对象为脚本语言的全局变量          testInvokeScriptMethod(engine);//演示如何在Java中调用脚本语言的方法          testScriptInterface(engine);//演示脚本语言如何实现Java的接口          testUsingJDKClasses(engine);//演示脚本语言如何使用JDK平台下的类     }         public static void testScriptVariables(ScriptEngine engine) throws ScriptException{         File file = new File("test.txt");         engine.put("f", file);         engine.eval("println('Total Space:'+f.getTotalSpace())");             }         public static void testInvokeScriptMethod(ScriptEngine engine) throws Exception{         String script = "function hello(name) { return 'Hello,' + name;}";         engine.eval(script);         Invocable inv = (Invocable) engine;         String res = (String)inv.invokeFunction("hello", "Scripting" );         System.out.println("res:"+res);     }         public static void testScriptInterface(ScriptEngine engine) throws ScriptException{         String script = "var obj = new Object(); obj.run = function() { println('run method called'); }";         engine.eval(script);         Object obj = engine.get("obj");         Invocable inv = (Invocable) engine;         Runnable r = inv.getInterface(obj,Runnable.class);         Thread th = new Thread(r);         th.start();     }         public static void testUsingJDKClasses(ScriptEngine engine) throws Exception{         //Packages是脚本语言里的一个全局变量,专用于访问JDK的package         String js = "function doSwing(t){var f=new Packages.javax.swing.JFrame(t);f.setSize(400,300);f.setVisible(true);}";         engine.eval(js);         Invocable inv = (Invocable) engine;         inv.invokeFunction("doSwing", "Scripting Swing" );     }}Scripting Tool

--------------------------------------------------------------------------------
SUN提供的JDK6中有一个命令行工具??jrunscript,你可以在<JDK6_Home>/bin下面找到这个工 具,jrunscript是一个脚本语言的解释程序,它独立于脚本语言,但默认是用JavaScript,我们可以用jrunscript来测试自己写的 脚本语言是否正确,下面是一个在命令行运行jrunscript的简单例子
jrunscript
js>println("Hello,JrunScript");
Hello,JrunScript
js>9*8
72.0
js>
3.JTable的排序和过滤

原来的JTable基本上是只能显示数据,在JDK6新增了对JTable的排序和过滤功能,下面代码演示了这两个功能

/**
* @author chinajash
*/
public class JTableTester {
     static String data[][] = {
         {"China","Beijing","Chinese"},
         {"America","Washington","English"},
         {"Korea","Seoul","Korean"},
         {"Japan","Tokyo","Japanese"},
         {"France","Paris","French"},
         {"England","London","English"},
         {"Germany","Berlin","German"},
     };
     static String titles[] = {"Country","Capital","Language"};
     public static void main(String[] args) {        
         DefaultTableModel m = new DefaultTableModel(data,titles);
         JTable t = new JTable(m);
         final TableRowSorter sorter = new TableRowSorter(m);
         t.setRowSorter(sorter); //为JTable设置排序器
        
         JScrollPane sPane = new JScrollPane();
         sPane.setViewportView(t);
        
         JPanel p = new JPanel();
         p.setLayout(new BoxLayout(p,BoxLayout.X_AXIS));
         JLabel l = new JLabel("Criteria:");
         final JTextField tf = new JTextField();
         JButton b = new JButton("Do Filter");
         p.add(l);
         p.add(tf);
         p.add(b);
         b.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
                 if(tf.getText().length()==0){
                     sorter.setRowFilter(null);
                 }else{
                     sorter.setRowFilter(RowFilter.regexFilter(tf.getText()));//为JTable设置基于正则 表达式的过滤条件
                 }
             }
         });
        
         JFrame f = new JFrame("JTable Sorting and Filtering");
         f.getContentPane().add(sPane,BorderLayout.CENTER);        
         f.getContentPane().add(p,BorderLayout.SOUTH);
         f.setSize(400,300);
         f.setVisible(true);
     }
}
运行上面程序,单击JTable的某一个title,这个title对应的列就会按照升序/降序重新排列;在下面的Criteria文本框中输 入"ese",点击"Do Filter"按钮,JTable将只显示带有"ese"字符串的行,也就是China和Japan两行,如果文本框里面什么都没有,点击"Do Filter"按钮,这时JTable会显示所有的行。
4.更简单,更强大的JAX-WS

JAX-WS2.0的来历

--------------------------------------------------------------------------------
JAX-WS(JSR-224) 是Java Architecture for XML Web Services的缩写,简单说就是一种用Java和XML开发Web Services应用程序的框架, 目前版本是2.0, 它是JAX-RPC 1.1的后续版本, J2EE 1.4带的就是JAX-RPC1.1, 而Java EE 5里面包括了JAX-WS 2.0,但为了向后兼容,仍然支持JAX-RPC. 现在,SUN又把JAX-WS直接放到了Java SE 6里面,由于JAX-WS会用到Common Annotation(JSR 250),Java Web Services Metadata(JSR 181), JAXB2(JSR 222), StAX(JSR 173), 所以SUN也必须把后几个原属于Java EE范畴的Components下放到Java SE, 现在我们可以清楚地理解了为什么Sun要把这些看似跟Java SE没有关系的Components放进来,终极目的就是要在Java SE里面支持Web Services.

JAX-WS2.0的架构

--------------------------------------------------------------------------------
JAX-WS不是一个孤立的框架,它依赖于众多其他的规范,本质上它由以下几部分组成
1.用来开发Web Services的Java API
2.用来处理Marshal/Unmarshal的XML Binding机制,JAX-WS2.0用JAXB2来处理Java Object与XML之间的映射,Marshalling就是把Java Object映射到XML,Unmarshalling则是把XML映射到Java Object.之所以要做Java Object与XML的映射,是因为最终作为方法参数和返回值的Java Object要通过网络传输协议(一般是SOAP)传送,这就要求必须对Java Object做类似序列化和反序列化的工作,在SOAP中就是要用XML来表示Java object的内部状态
3.众多元数据(Annotations)会被JAX-WS用来描述Web Services的相关类,包括Common Annotations, Web Services Metadata, JAXB2的元数据和JAX-WS2.0规范自己的元数据.
4.Annotation Processing Tool(APT)是JAX-WS重要的组成部分,由于JAX-WS2.0规范用到很多元数据,所以需要APT来处理众多的Annotations. 在<JDK_HOME>/bin下有两个命令wsgen和wsimport,就是用到APT和Compiler API来处理碰到的Annotations,wsgen可以为Web Services Provider产生并编译必要的帮助类和相关支持文件,wsimport以WSDL作为输入为Web Service Consumer产生并编译必要的帮助类和相关支持文件.
5.JAX-WS还包括JAX-WS Runtime与应用服务器和工具之间的契约关系

JAX-WS2.0的编程模型

--------------------------------------------------------------------------------
现在用JAX-WS2.0来编写Web Services非常简单,不像JAX-RPC,JAX-WS可以把任意POJO暴露为Web Services,服务类不需要实现接口,服务方法也没有必要抛出RMI异常.下面介绍在JDK6环境下用JAX-WS2.0开发和测试Web Services的步骤
1.编写服务类,并用Web Services Metadata(JSR-181)标注这个服务类,我用我的另一篇BlogJDK6的新特性之十:Web服务元数据中的WSProvider类作为服务 类的例子,在此我重复贴一下WSProvider类的源代码:
/**
* @author chinajash
*/
@WebService(targetNamespace="http://blog.csdn.net/chinajash",serviceName="HelloService")
public class WSProvider {
     @WebResult(name="Greetings")//自定义该方法返回值在WSDL中相关的描述    
     @WebMethod
     public String sayHi(@WebParam(name="MyName") String name){
         return "Hi,"+name; //@WebParam是自定义参数name在WSDL中相关的描述
     }    
     @Oneway //表明该服务方法是单向的,既没有返回值,也不应该声明检查异常
     @WebMethod(action="printSystemTime",operationName="printSystemTime")//自定 义该方法在WSDL中相关的描述
     public void printTime(){
         System.out.println(System.currentTimeMillis());
     }
     public static void main(String[] args) {
         Thread wsPublisher = new Thread(new WSPublisher());
         wsPublisher.start();
     }    
     private static class WSPublisher implements Runnable{
         public void run() {
             //发布WSProvider到http://localhost:8888/chinajash/WSProvider这个地址,之前必须调用 wsgen命令
             //生成服务类WSProvider的支持类,命令如下:
             //wsgen -cp . WebServices.WSProvider
             Endpoint.publish("http://localhost:8888/chinajash/WSProvider",new WSProvider());
         }        
     }
}
2.用wsgen生成上面服务类的必要的帮助类,然后调用用EndPoint类的静态方法publish发布服务类(步骤请参考我的另一篇Blog JDK6的新特性之十:Web服务元数据),我在这里是将服务类发布到http://localhost:8888/chinajash /WSProvider
3.用wsimport为服务消费者(也就是服务的客户端)生成必要的帮助类,命令如下:
wsimport http://localhost:8888/chinajash/WSProvider?wsdl
这会在<当前目录>\net\csdn\blog\chinajash下生成客户端的帮助类,在这个例子中会生成7个类
HelloService.class
ObjectFactory.class
package-info.class
PrintSystemTime.class
SayHi.class
SayHiResponse.class
WSProvider.class
4.在客户端用下面代码即可调用步骤1定义的Web Service
HelloService hs = new HelloService();
WSProvider ws = hs.getWSProviderPort();
System.out.println(ws.sayHi("chinajash"));
ws.printSystemTime();
调用上述代码后客户端控制台输出
hi,chinajash
服务端控制台输出服务器当前系统时间
5.轻量级Http Server

JDK6的新特性之五:轻量级Http Server

JDK6提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,它支持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现,程序员必须自己实现HttpHandler接口,HttpServer会调用HttpHandler实现类的回调方法来处理客户端请求,在 这里,我们把一个Http请求和它的响应称为一个交换,包装成HttpExchange类,HttpServer负责将HttpExchange传给 HttpHandler实现类的回调方法.下面代码演示了怎样创建自己的Http Server

/**
* Created by IntelliJ IDEA.
* User: Chinajash
* Date: Dec 30, 2006
*/
public class HTTPServerAPITester {
     public static void main(String[] args) {
         try {
             HttpServer hs = HttpServer.create(new InetSocketAddress(8888),0);//设置HttpServer的端口为8888
             hs.createContext("/chinajash", new MyHandler());//用MyHandler类内处理到/chinajash的请求
             hs.setExecutor(null); // creates a default executor
             hs.start();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
}

class MyHandler implements HttpHandler {
    public void handle(HttpExchange t) throws IOException {
        InputStream is = t.getRequestBody();
        String response = "<h3>Happy New Year 2007!--Chinajash</h3>";
        t.sendResponseHeaders(200, response.length());
        OutputStream os = t.getResponseBody();
        os.write(response.getBytes());
        os.close();
    }
}

运行程序后,在浏览器内输入http://localhost:8888/xx, 浏览器输出
6.嵌入式数据库 Derby

Derby是IBM送给开源社区的又一个礼物,是一个pure java的数据库,现在已经被列入到java1.6中。
不知道对于大数据量的性能如何,但传说中启动derby只会给JVM添加2M的内存,对那些小数据库应用,比如像用access那种应该是挺有诱惑力的。
另外,麻雀虽小,五脏俱全,功能要比access多得多咯,包括事务处理,并发,触发器都有,管理又简单,因此自己用来做点工具正好合适。
废话少说,介绍一下我折腾了半天的经验吧。
我的Derby配置过程:
1,下载db-derby-10.1.3.1-bin.tar.gz,derby_core_plugin_10.1.3.zip和 derby_ui_plugin_1.1.0.zip,把两个插件安装到eclipse上
2,打开ecllipse,新建一个project
3,右键这个project,选择Apache Derby,再选择add apache derby native,发现只是给我的project添加了几个derby的jar,还不是在我看着顺眼的lib目录里,索性干掉,换上db-derby- 10.1.3.1-bin.tar.gz解压出来以后lib目录下的jar文件,在Build Path里设置一下;
4,右键Project,在apache derby里选择start apache derby network server,控制台可以看到derby启动后打出的"服务器准备在端口 1527 上接受连接。"
5,右键Project,在apache derby里选择ij(Interactive SQL),启动SQL控制台;
6,输入connect jdbc:derby:testdb;create=true; 注意要有单引号,可以在工程跟目录下创建testdb数据库,可以看到一个新建的目录testdb,那里的文件就是数据库咯;
7,用标准的SQL语句来建一个数据库试试:
create table test (a varchar(4) not null, b char(2) primary key);
居然可以用,太神奇了,呵呵
8,再插入一条语句试试呢,insert into test(a,b) values(a,11);,嗯,不错,可以用select 查出来的哦。
9,再插一下:insert into test(a,b) values(a,11);,哦哦,报错了,"错误 23505:语句异常终止,因为它导致"TEST"上所定义的"SQL060710092132480"标识的唯一或主键约束或唯一索引中出现重复键 值。" 呵呵。
10,好了,现在可以像你控制的其他数据库一样来控制Derby了。


如果上述方法不行,或者你习惯了在eclipse之外使用和管理数据库,那么可以很方便的把Derby"装"在系统里。下面我说一下步骤:
1,把db-derby-10.1.3.1-bin.tar.gz解压到c:\derby,使lib和framework两个目录在c:\derby下边 即可
2,设置环境变量

设置一个c:\derby\framework\embeded\bin或c:\derby\framework\NetworkServe\bin到 Path中,这样我们就可以直接执行上边介绍的connect这样的命令而不用每次钻到那个目录下去执行了
设置c:\derby\lib\derby.jar;c:\derby\lib\derbytoos.jar到CLASSPATH中,以便让这些java 编成的命令能够正确执行;
3,打开cmd
4,敲入startNetworkServer,可以看到像在eclisp中提示的那样启动了server
5,再打开一个cmd,敲入sysinfo,可以看到derby的环境信息了,注意在java user dir这一项,也许是java用户目录上和上边看到的会有所不同哦,这样在connect jdbc:derby:testdb;create=true;的建的数据库目录就不一样咯。
6,敲入ij,好了,进入到上边的交互界面,可以建一个数据库看看了。
7,最后在另外一个cmd中敲入stopNetworkServer就可以关闭数据库了。

如果你两种方法都试过了,那么需要注意的,还是上边步骤5的问题,这个问题是你可能随时会启动一个数据库或新建一个数据库,但如果你刚刚使用derby, 你可能还没有察觉。
derby实际上有两种启动方式,一种是嵌入式的,一种是网络服务器的启动。
1,我们在eclipse中右键start apache derby network server那个,就是网络服务器的启动方式,在这种方式下可以用另外一台计算机在ij中以:
connect jdbc:derby://192.168.0.28:1527/testdb
的方式进行链接。
2,第二种启动方式是在ij里边就直接
connect jdbc:derby:testdb
这实际是在连当前配置环境下java user dir下那个目录的数据库。

看到这里可能有点糊涂了,这么就会出问题了那?
实际上derby的访问更像是一种使用derby driver对本地文件系统的访问,不管启动不启动网络服务器,都可以用driver访问本地的数据库。这样,在ij里边像第二种方式那样建立连接是完全 可以的。启动了网络服务器,只不过是能够让其他主机访问罢了。

另外一个问题是,在eclipse中和在系统中连接服务器,在connect的时候这个当前配置环境是不一样的,eclipse默认工程所在路径是数据库 的所在路径,而在系统中"装"derby则会认为 c:\document and settings下边那个用户目录是数据库的所在路径。
jdk1.7新特性:

1,switch中可以使用字串了
String s = "test";  
switch (s) {  
case "test" :  
     System.out.println("test");
case "test1" :  
    System.out.println("test1");
    break ;  
default :  
    System.out.println("break");
    break ;  
}

2.运用List<String> tempList = new ArrayList<>(); 即泛型实例化类型自动推断
3.语法上支持集合,而不一定是数组

final List<Integer> piDigits = [ 1,2,3,4,5,8 ];  
4.新增一些取环境信息的工具方法

File System.getJavaIoTempDir() // IO临时文件夹

File System.getJavaHomeDir() // JRE的安装目录

File System.getUserHomeDir() // 当前用户目录

File System.getUserDir() // 启动java进程时所在的目录5

5.Boolean类型反转,空指针安全,参与位运算

Boolean Booleans.negate(Boolean booleanObj)

True => False , False => True, Null => Null

boolean Booleans.and(boolean[] array)

boolean Booleans.or(boolean[] array)

boolean Booleans.xor(boolean[] array)

boolean Booleans.and(Boolean[] array)

boolean Booleans.or(Boolean[] array)

boolean Booleans.xor(Boolean[] array)

6.两个char间的equals
boolean Character.equalsIgnoreCase(char ch1, char ch2)
7.安全的加减乘除
int Math.safeToInt(long value)

int Math.safeNegate(int value)

long Math.safeSubtract(long value1, int value2)

long Math.safeSubtract(long value1, long value2)

int Math.safeMultiply(int value1, int value2)

long Math.safeMultiply(long value1, int value2)

long Math.safeMultiply(long value1, long value2)

long Math.safeNegate(long value)

int Math.safeAdd(int value1, int value2)

long Math.safeAdd(long value1, int value2)

long Math.safeAdd(long value1, long value2)

int Math.safeSubtract(int value1, int value2)

8.map集合支持并发请求,且可以写成 Map map = {name:"xxx",age:18};

2010-02-03

小软件公司的出路在哪里?

        到深圳后就一直想自己做做软件,对软件公司的状况关注较多。常跟Donny研究着,真要做该怎么操刀。也常听到X总又接大项目了,又拖欠 了两个月的工资了。很多刚起步的软件公司步履维艰。也有很多较早起步的软件公司,曾经辉煌如昙花一现,并已成为昨日黄花了。现在有个机会摆在面前时,却感 觉理不清头绪。随着中小型企业对信息化的重视,小软件公司也会有更多的机遇。那么这些小软件公司如何寻求自己的出路呢?经过一些思考初步整理如下。

一、 产品定位
        很多小软件公司没有产品定位,总想着只要是软件项目就接,如果干不了,就转包给其他公司。实际上这样 会让这个公司永远没有竞争力。公司一定要根据自己的能力和熟悉的环境,确定自己的核心产品,也就是对自身要深入了解。例如以前做过OA,对这方面的业务很 熟悉,就先在这方面下工夫,不必要赶时髦,想着实施ERP业务。采用什么技术方向,做什么行业都是开工初期必须考虑好的,如果不出现特别大的环境变化,就 要坚持住,不要今天做这个行业的软件,明天做那个行业的软件。

二、明确分工
        由 于公司规模小,一个人做很多种角色的事情。有的开发人员可能要去跟客户沟通,甚至要协助收款。但是开发进度却很难保障。每个公司都有自己的发展规划,一定 让员工知道公司的长期愿景,可能的话帮助每位员工进行职业生涯设计,让员工对公司和自己充满信心。公司最好有个万能部门――客服部,主要工作涉及到技术、 市场、客户沟通所有工作,保证为技术和市场部门做好服务。各个部门的绩效考核必不可少。

三、客户管理
        小 型软件也面临着人才流失的问题。小型软件公司也要有客户关系管理系统,要对客户的情况了如指掌,对客户的沟通过程和进度也要控制。加强市场人员的工作协 同,促进信息的共享。对于普通的编程人员需要做好档案的记录工作,比如软件的设计报告、测试报告、软件的客户需求报告等等要求尽量详细。尽管这样会占到软 件编程的1/2时间,但是这样可以很好地保证项目的连续性。

四、项目管理
        小 型软件公司虽然规模小,既是公司就要公司化运作。由于技术人员和市场人员缺少沟通,对一些项目的实施造成很多麻烦。技术人员以技术研发为主,对市场的理解 甚少,有时候可能无法理解市场的需求。市场人员虽然了解市场需求,但在和客户接触的过程中又不能很好的把握技术的实现可能性。这样一来,针对一些项目成立 项目组,设立项目经理,项目经理全权负责整个项目的开展。项目组中要求既有技术研发人员,又有相关市场经验的人。项目组的考核与利润挂钩,通过这种方式可 能会解决市场和技术研发沟通的问题。

五、服务至上
        今天客户服务至上的原则对 小型软件公司显得尤为重要,服务也很多层面上影响产品的价值,小软件公司的客户大多是小型企业,这样的客户实际上对自己真正的需要不大明确,对软件功能的 要求提的比较笼统。首先市场部的人员应该有意识的引导客户,向有利于技术实现的方面发展。同时注意适当的培训客户,让他更多理解公司的技术和可以实现的方 式,这样才能真正留住客户和完成技术。虽然客户规模小,但是客户群大,如果服务到位了,在客户中的信誉就会提高。从而客户可以宣传你的产品,从而公司可以 从客户群得到更多的优质客户。

        小型软件公司要想在竞争中立于不败之地,要做的工作很多很多,上面提及的一些问题或许对于 公司的发展是再平常不过的了。但是为了眼前一些短期利益,有的软件公司就会放弃自己原定目标。小型软件公司只要多动脑筋,遵循规律,多总结,就会从众多的 软件公司中脱颖而出,找到自己的出路。