2005年10月29日 #
祝大家节日快乐! 结束了9月繁忙的工作.回家休息了很长时间没上来更新. 生活比较琐碎 .
TrackBack:http://www.blogjava.net/goingmm/archive/2006/06/23/54595.html
朋友们 五一快乐 出游的朋友注意安全 呆家里的朋友不要光顾着睡觉平时很少有机会看太阳哦我呢?回家 事实基本上已经不允许了出游 一直想去新加坡看看老朋友发现新加坡的单程机票200多[广州白云机场→新加坡]可惜等我知道的时候三个月内的都预定空了再等下一次大假吧忙碌了几个月我也说不清楚做了些啥但总算还是有一些小收获有些烦人的问题... 现在终于有时间好好补补了正好有时间总结 总结下一次上来 一定把这三个月忙碌的过程和结果与大伙分享Goingmm 2006-05-01
忙了一个星期,事情总算平稳的起步了该睡觉了睡醒了再说...2006-03-19 Goingmm
这些天杂乱的事情太多要呆到20:00才回家不是给公司加班 可能是为自己奇异的想法昨天晚上在王府井外面听到一首歌当时只记得一句歌词:“想起我和你牵手的画面”早上过来,歌词几乎都忘了尝试搜索,居然找到了我不知道[想起]是新歌还是老歌感觉有点怀旧,又有点抄袭曲调能让我想起十年前[蔡琴她们那些时代]部分节奏有点抄袭“神话主题曲”推荐给大伙 听听看吧曲名:想起 歌手:韩雪 回到相约的地点 在这我对你不了解 以为爱得深就不怕伤悲 偏偏爱人心成雪 我独自走在寂寞的长街 回忆一幕幕重演 我告诉自己勇敢去面对 就算心碎也完美 想起我和你牵手的画面 泪水化成云霞满天 如果我和你还能再见面 就让情意旧梦能圆 我们在不同的世界 想着每一次的误会 好像再一次依偎你身边 偏偏你有千里远 我独自走在寂寞的长街 回忆一幕幕重演 我告诉自己勇敢去面对 就算心碎也完美 想起我和你牵手的画面 泪水化成云霞满天 如果我和你还能再见面 就让情意旧梦能圆 Goingmm 2006-03-10
请看:http://www.igoogle8.com/igoogle8/make/?f=1&s=Goingmm&t=0很奇怪吧?google怎么变成连版权都“个性化”的主页了。而且用起来和google感觉还一模一样再看:http://www.igoogle8.com/原来:http://www.igoogle8.com/ 做了手脚接着:主页上没有作者或者运营商的任何信息,于是打开google查询关键字“igoogle8”http://www.google.com/search?hl=zh-CN&q=igoogle8&btnG=Google+%E6%90%9C%E7%B4%A2&lr=lang_zh-CN%7Clang_zh-TW哇!69 项符合igoogle8的查询结果 大致看了一下Google狗年悄悄发布新品“爱狗狗吧”,引来网民蜂拥测试- 雅虎论坛iGoogle8爱狗狗吧/ 一秒钟将Google据为己有 - 4:12iGoogle8爱狗狗吧,将Google据为己有/ 向好友推荐iGoogle8爱狗狗吧iGoogle8爱狗狗吧/ 超级女声·狗狗爬行榜。。。。。。。。。。。。。。。。。。。。。。。。。后来:问了问GoogleChina 的朋友。他们也不知道这玩意作者弄了这么一个东西,但是又不做宣传。居然还有人猜测是Google中国出的产品其他不说,就看主页下面的[向好友推荐igoogle8 和 设为主页] 这也不可能是google所为啊于是:查了查igoogle8的服务环境 OS Server Last changed IP address Netblock Owner FreeBSD Apache 8-Mar-2006 59.151.5.206 Abitcool(China) Inc. 1 forex.com.cn 3 10 3 Windows Server 2003 Microsoft-IIS/6.0 2 e4u.cn - 41 41 Linux Apache-Coyote/1.1 3 qunar.com - - - Linux Apache 4 www.zhanzuo.com - 25 25 FreeBSD Apache/1.3.34 (Unix) PHP/4.4.2 5 www.igoogle8.com - - - FreeBSD Apache结论:这家伙 不可能和Google有什么关系Goingmm 2006-03-08
Blog左边新加了一个LOGO 点击 可以立刻和我的QQ建立临时通话通道 旁边还有一个小企鹅图标。如果亮着就表示在线 灰着就表示隐身 呵呵! 如果我的QQ不在线 你也可以留言给我。 我测试过,能收到历史消息 空了 多做几个LOGO轮换着用 Goingmm 2006-03-04
Key Words: Sun Microsystems Java SE 6 Beta
历时一年时间,Sun 终于推出了Java SE 6 Beta。这是Java SE 6(Mustang)的第一个完整版本。其中的亮点包括,web services,新的安全机制和管理,改进的desktop用户体验,File类添加了一些检查磁盘空间的API。Splash Screen 等等 当然还有 Fixed and Known Bugs Downloading url:http://java.sun.com/javase/6/download.jspGoingmm 2006-02-16 from:csdn Goingmm 2006-02-17 Modified
新闻:2006年2月14日,Google中国黑板报[www.googlechinablog.com] 正式开通 定位:普通Google员工与网民分享交流产品、技术和文化的窗口 布局:左边[2/3]用Blog做噱头[ 吸引眼球] + 右边[1/3][ 推销自己的产品链接Google忠实的网络推手] 用意:眼看中国这么大的市场,Google也急于在中国本地化,用心良苦 花絮:图片“Google 中国工程师在工作”有一个胖娃的背影,有点像老“XU” 视角:直白的商业运作模式,不一定能拿到Google员工直白的心声。喜欢关注Google的朋友,可以期待和观望 企业比较低廉的一种公关模式。期待交流的想法是无庸置疑的,值得表扬Goingmm 2006-02-15 注意看红色圈住的人是谁? 老XU 啊!~~ 点图片有超链Goingmm 2006-02-17 修改
Key wordsName: Apache Tomcat Version 5.5.9 Release: v 1.25 2005/01/19 20:30:26JDK: 1.4.2 OR 5.0背景: JDK5.0 + Tomcat 5.5.9 去年,因为尝鲜一直使用JDK5.0。使用这个搭配也从来没有遇到问题
JDK1.4.2 + Tomcat 5.5.9 今年拿到新电脑后,现在的开发环境很依赖环境变量的设置。出于谨慎我还是选择了使用JDK1.4.2 昨天晚上无聊的装上Tomcat 5.5.9玩 1)JRE选择JDK1.4.2 安装完成 2)用Monitor Tomcat 启动Tomcat 3)打开http://127.0.0.1:8080/ 4)找不到服务器 5)感觉+漫骂... 真他NND的奇怪了 疑惑什么地方弄错了
改装经历: 咱,不能丢脸的被这只猫猫忽悠吧! 于是,很不耐烦的找出这个版本的RELEASE-NOTES(坏习惯-不太喜欢看说明)
呵呵... 这里解释的很清楚 Ø Tomcat 5.5 只默认支持J2SE 5.0 and later Ø Tomcat 5.5 在编译JSP上做出的改变 但是,TNND后面一段关于在JDK1.4上配置运行的描述,实在是太迷糊人了[根本没有说清楚] 根据他表达的意思我试过很多方法 Ø 看来想要“不妥协”的使用,唯有“改装”。有了改装的初步想法 Ø 在我的机器里面找看有没有现成的jar包 发现了几个相似的包 测试不行 Ø 到官方网站[http://tomcat.apache.org/download-55.cgi]把所有的包都down下来看 Ø 最后发现一个像摸像样的包[apache-tomcat-5.5.15-compat]但是和我现在的Tomcat版本不一样 Ø 抱着试一下的心态。解压缩出来两个文件夹 ① bin ②common 用他们覆盖安装目录下的文件夹 Ø 用Monitor Tomcat 启动Tomcat Ø 打开http://127.0.0.1:8080/ 看到了熟悉的猫猫 Ø Bingo,记录下这次“改装”的经历
经验总结: 其实,这只是我们平时遇到的很小很小的问题(菜鸟问题) 问:为什么要总结呢?为什么还用小题大作写成blog呢? 结:使用任何产品,用心看看说明文档 是非常有必要的。尊重产品工作者的劳动, 自己也能少很多麻烦 顺便... 链接其他: 关于Tomcat各个版本的运行速度。emu 哥哥在他最近的blog中给出了测试结果 个人感觉 Ø Tomcat 越新的版本使用越方便[基本上不需要单独配置] Ø Tomcat 不为我们熟悉的功能也越来越多[平时没用到的也没去关注过] Ø Tomcat 运行速度的测试结果,我还是比较疑惑 Goingmm 2006-02-12
Ø 280公里意味着什么?
高速公路2.5小时车程,火车3.5小时行程
Ø 280公里发生了什么?
两次/年 片刻停泊 留下的唯有牵挂
Ø 280公里给了我什么?
时间换来单薄生存 享受的唯有牵挂
初八是个好日子 书上说:“七不出门,八不归家”
又要出发了 离家的感觉是牵挂
爸妈牵挂280公里外的我 平平安安 有获
我牵挂280公里外的父母 身体健康 发财
南充 [ 一个“变化”很大的城市 ]
说“浮华”不敢 我不敢靠“浅尝”的数字来诽谤
说“作践”不愿 我不愿靠“批露”的声音来出名
说“独特”不能 我不能靠“断言”的措辞来浮夸
说“自清”不想 我不想靠“忘根”的情愫开解脱
原本以为,可以把这里的“精彩”和大家分享
调皮的光标‘怪异’的摆下这个‘怪异’的标题
我能想到的,只有明天280公里远去的牵挂
送给
每一个即将离开父母去找寻梦想的朋友
或许,你们的牵挂是2800公里 28000公里…
临走时,别忘了
用心摸摸爸爸的皱纹
悄悄数数妈妈的白发
Goingmm Subscription 2006-2-5 凌晨
凌晨,看到一个挺有趣的讨论[JavaEye]。2006年,Java界的主题将是什么?
两年的开发经历,对新技术的追逐与否我不敢妄自评论。茶余饭后无聊的思考基础显然重要,当新事物能为我所用的时候,能快速应对,足以不可否认,新技术的出现,往往能成就一批热心追逐的人[只是少部分,大部分属于随波逐流的困惑]
2000年 应用服务器年 这一年,Java应用服务器的需求成为各大公司的最大利益。谁不希望用“业界标准”来标榜自己呢!■ BEA公司的繁荣从此开始
2001年 EJB年 这一年,EJB2.0发布,整个Java业界为之震动,“牵强”的分布式架构,让EJB成了魔术词汇■ EJB成了高价企业软件的“文凭”。懂不懂EJB成为能不能拿到高薪的关键
2002年 设计模式年 这一年,大家开始发现EJB真TNND难用,开始发现Java开发需要遵循某种规则,设计模式开始流行, J2EE核心模式也应运而生■ jdon网站借着设计模式的热点一举成名
2003年 Hibernate年 这一年,大家开始否定EJB,开始采用O/R Mapping,Hibernate迅速流行■ JavaEye由于颇有预见性的推广普及Hibernate而成为国内Java社区的亮点
2004年 Spring年 这一年,EJB3规范和JDO2规范忙着打架,但是真正的主角是Spring,Spring携着IoC和AOP迅速占领J2EE的眼球.■ 《Without EJB》 成为大家背弃EJB2.0的宣言书
2005年 AJAX年 这一年,大部分时间大家都在反思,或者是学习合适的应用程序架构。伴随着Google的Gmail, Google Maps等一系列AJAX应用,一个古老的XMLHTTP组件咸鱼翻身。这个冬天终于找到了主题-AJAX■ 骄傲的程序员回头关注“用户体验”
2006年 XX年? 这一年,除了成名已久的EJB3.0值得期待,我们还能看到出人意料的新名词吗? 这一年,将会是更深刻的反思年吗?[用已有的技术集合更完美的“用户体验”] 这一年,我们将何去何从,我也说不清楚 你呢? Goingmm 2006-02-03
2006年1月25日早上9点起床 收拾了几件换洗的衣服准备回家 回家的心情是急切的,关上门 刚走出几步 又摸出钥匙串 回去扫视着整个房间 是不舍? 是不情愿? 是不放心? 好像感觉有什么东西落下了 似乎惦念着还有什么事没有做完 5分钟后没有任何发现 倔强的离开了 在离开的的士上还在猜疑 永远离别一个城市也不曾有过的感觉 大年三十 陪爸爸妈妈看完春节晚会 邀集一伙朋友准备出去“通宵” 因为今年是本命年 大伙都建议上庙去求个 [ 2006 平安 ] 坐车+走路 1小时就到了 见了 如来佛 观音菩萨 十八罗汉 财神爷 ... 祈祷的心是诚实的 面对恩赐,永不满足的心 感觉太乱 大年初二 一伙朋友坐船出去 游嘉陵江 目的地是 50多年前“毛主席的共产主义作品” -- 农村合作社 看着 破陋的 两排男女宿舍+两间夫妻房 听着 89岁老人淳朴的歌声“社会主义好” 喝着 所谓的“大锅饭”(一大锅红薯稀饭) 50 年前的“共产主义” 500年后的“共产主义” 希望 至少能像庙里的菩萨 给我一点虔诚的勇气 心突然... Goingmm 2006-01-30
BLOGJAVA 服务器居然是这个配置
问:3G是目前最热门的话题,到底3G服务与目前普遍使用的GSM和GPRS应用有何不同?
答:有两个主要不同的地方:3G可提供更多的视频服务。虽然GPRS也可提供视像上的享受,但却不能提供好的视像品质。就好比如您要通过手机看直播串流,这是较难的,而3G就能。通过3G,用户可体验到不同的移动应用。
第二点是移动下载的速率比GPRS更好。比如您要下载一首完整的歌曲,一首歌约1.5MB。GPRS是可以下载的,但却需要很长的时间,如果您使用3G服务,约花上30秒就可完成整首的歌曲下载。
另外一点就是在2G服务应用上做不到的,但3G服务却能做到的视像通话,就类似2G的声音通话,我们可通过手机面对面的通话。
还有一个不同是老百姓不容易接受或者不容易理解的,就是3G可以提供更加清晰的语音服务。由于2G的语音质量已经很不错了,所以,这个答案只能是在3G上马之后进行细微的比较才能得出。 当然,3G和2G最主要的就是带宽升级带来的应用。多种种应用应该不仅仅限于手机,笔记本和PDA用户也应该能享受到3G带来的便利
问:移动用户可从3G服务中获得怎样的益处?
答:我把3G所带来的益处规分为三种。
一是移动用户可通过3G服务进行视像通话,无论您在哪里,您都可看到对方的表情进行通话。
二是通过3G的高速速率可更快的进入移动平台。这是之前的2G服务所满足不到用户的关键。高速率的3G可让您更快的进入您要的应用内容,例如进行下载工作时,之前的GPRS只能够跑115kbps,但3G却拥有更好的速率素质。
三是提供更广系列的3G应用内容。
问:您刚才一直在提3G可进行视像通话。是否可以说,视像通话就是3G的杀手应用?
答:不,不能这么说。我认为目前没有任何的3G杀手应用出现,当然希望是有的,但其实3G并不一定只有单一的杀手应用,或许有很多种。至于视像通话其实有一些不足,比如,当您进行视像通话,您的脸面对着镜头,这是进行视像通话时令人感到沉重的地方,有些人可能就不喜欢。这和单独的用手机照相的感觉是不一样的。
当然,我相信在3G服务之下,视像通话应用将是广受用户欢迎的3G应用,这一趋势将在世界各地流行开来。另外,一旦我国上马3G,视像通话将可能成为运营商宣传的重点,用户也就容易了解,相信视像通话将是推动3G服务的主要关键应用之一。
问:WIMAX也是无线技术之一,甚至有人说它是3.5G。您认为WIMAX与3G服务有什么不同?
答:WIMAX是一项新的技术,它充满了市场潜能。WIMAX与3G同时在讲述着宽频,但两者开始的角度是有所不同的。WIMAX讲的是宽频技术,谈的是在家或是公共领域的无线应用,涉及到移动宽频的解决方案。3G从一开始,就完全的从移动手机的角度开始或出发。
问:那些用户可能成为3G的主要用户?
答:有两种目标用户群。
第一种是专业的移动用户。专业移动用户可通过3G的视频通话与伙伴通话,快速的网络速率满足他们的需求。快速率的3G数码卡可以连接到他们笔记电脑,进入互联网浏览,他们不再需要电话线或是其他的连接线。我们也将他们叫做高端用户。
第二种是20岁至30岁之间的年轻人,他们视3G服务能为他们提供更多的娱乐,这将成为运营商的主要目标群。
问:您觉得3G服务上马后,现有的2G/2.5G用户是否会马上转去使用3G,或者说,那些因素决定用户向3G转移?
答:我想主要有三个因素。
第一是市场上的3G手机价格刚开始应该很贵。据我猜测,3G启动初期在市场上的3G手机售价大多数将在三千以上,年轻用户群对这样的手机售价较难以消化。
二是3G服务的覆盖率不够。任何运营商得到3G牌照之后都不可能全国性建网,仅仅会在部分大城市先行建网,到2008年以后,绝大部分省、地市两级城市才可能达到满意的覆盖率。这和中国联通实施建设CDMA网络以及CDMA用户增长情况是一致的。
三就是用户对3G服务的了解到底有多少?目前知道3G的人群其实非常的少,上马3G之后,需要运营商以及SP们大力宣传3G相关业务,才有可能让更多的老百姓了解3G业务,比如前面提到的视像通话很可能是老百姓最早能接受或者了解到的业务。其实3G不仅是这项应用,而是有更快的下载速率,为用户提供更多的视频内容,或是更快的进入互联网等益处,提供更多的娱乐。当然,我这里要强调的是,网络的表现也是占有很大的因素,因此哪个运营商的网络质量高,覆盖率高,将可能吸引更多的用户。
问:看目前的情形,我国很有可能出现多家3G运营商,那么,你认为,运营商应该用什么特点来吸引用户选择自己的3G服务?
答:我想,除了前面说的哪个运营商的网络质量高,覆盖率高,就可能吸引更多的用户之外,关键是看哪个运营商提供的应用内容供应比竞争对手的应用内容多,譬如有多少个现场直播的电视频道、多少种的娱乐选择、多少种的视频录像下载、多少种的铃声选择、多少种的游戏下载等。另外,一些新兴业务如查看交通状况、移动博客、数据卡等服务是否齐全等。
另一方就是谁的3G服务收费方面较让大众负担得起,就好像您要进行视像通话,收费是与2G的声音通话收费一致,收费大众化。这也许是最影响用户采用3G的关键因素了。
问:您认为2G服务什么时候退役,什么时候全面转向使用3G?
答:我认为这需要一个较长的时间段,从今年年初算起,2G起码还有7至10年的生命期,3G上马之后,应该有个3年左右的慢热期,我想到2010年之后,3G用户将出现较高幅度的增长。作者版权:http://blog.sina.com.cn/u/5560fa9f010001y52006-01-17
2006-1-1 15:30 打开眼睛,撕开被子,立起枕头,挺冷的,想躺下继续睡。 2006是我的本命年,迷信吗?还有点心虚。理性吧!有准备承受更大的压力。
新年的第一天,你是怎么过的?有为自己在新的一年做计划吗?有和朋友一起出去大吃一顿庆祝吗?有像我一样睡昏了头的吗?看看我新年第一天的流水帐吧! 什么都还没有做,心里有点怪怪的。为什么会有点发了慌的感觉。因为什么都没有做发慌吗?可能是肚子太饿了。 找到一家象样的中餐馆子。要了一盘“锅盔回锅”,还特意叫老板上了一碟红油泡菜。整碗白米干饭。很不错哦。 吃饱回家看会电视(湖南电视台的新春晚会),TNND翻来覆去都是那几个“超女”没看头。 点支烟,摸出电脑准备听会音乐,翻翻过去一年的照片。让回忆在“小资”中升华。突然记起前几天Down了WTP1.0。最近在翻看一些经典电影。一直都没时间玩玩。于是打开玩,等我再次感觉肚子饿已经是晚上22:20 对了,MIKE明天就要去SOHU了。临别前,给他电话送别。那娃居然在打麻将。不晓得听懂我送别的良苦用心没有。愿他一路顺风。新年新成绩吧! 放下电话,煮碗面吃,又看见昨天泡的衣服都还没有洗。 洗衣服是一件很有趣的事情。平时很少有机会运动,这时候可以凑合着活动一下。平时绷紧的神经挺累的。这时候,可以很享受的哼唱着散碎的歌曲。忧郁了,可以试着在发泄中思考。享受着局外人的宁静 工作快两年了,自己问过自己一个问题,说忙也好,颓废也吧。一直在回避,怕自己知道答案后会后悔当初。会逃避现实生活,会不知所措…偏偏在这时候想起“为什么想要做一个程序员”。 当初可能有一种不服输的想法。计算机毕业总能混碗吃吧。靠自己的双手生存的感觉真的不错。但是这种感觉很短暂。 晚上的公交车窗外,灯红酒绿。而我们只属于浮华背后的看客。躲在车窗后面的我们,窥视着,YY着。或许有着无数的感慨和畅想。或许回味着有时候也加入其中。哽咽着洗脚水味的洋酒。带着酒意,舞动在模糊迷人的身体背后。那是在发泄,那是在饥渴的释放… 那是一只披着羊皮的狼。 因为…这里没有欺骗,没有勾心斗角,没有讨价还价,很单纯,单纯到你可以没有其他的任何生活方式。在这里你可以找到攻城拔寨的快感。可以享受与世隔绝的宁静。怀揣骨子里面的清高。或许还能享受在别人眼中的高手身份吧! 大多数程序员都会经历 新手学习;逐渐成熟;自暴自弃,浮躁得异想天开;走向成熟或者是不知天高地厚得狂妄。 很难定义自己现在所处的阶段。就算在浮躁期吧。有了一点小小的成就感以后,就会变的浮躁,开始去思考,为什么做程序员,现在该拿多少薪水,梦想的实物该拿什么去换… 我不敢奢望谁能去帮我承担这种浮躁…光标闪到这里,变得机械了。突然没言语 知道自己需要有一段长时间的休息。去忘掉Source Code,淡化网络给我们带来的便捷。开始打算着,选择离开一段时间。离开Office,离开友情深深的团队。离开这块“净土”去瞧瞧陌生的精彩。回到阔别已久的老家追忆童年。或许生活的不堪重负会让我减却浮躁。或许该把竞技的舞台留给更多饥渴的勇士。这样对大家都好。
都说,新的一年应该给自己一个新的计划。计划如果有Scope的话。可以把他分成三种
n Request 类型的 [每一次记得了,看看计划,傻笑一下,干一次]
n Session 类型的 [在一个阶段给自己的计划,可以按计划坚持干完]
n 持久 类型的 [给自己一个长期的计划,不懈的努力]
面对计划,我就属于第一种,哈哈!给大家说一段笑话吧。大学的时候计划考英语四级,买了本单词来背。前些天再次想起,翻出来看的时候发现结果才看到“E”。看了两天又丢一边了。
所以,有时候我不太喜欢过场式的给自己计划。做好每一天,让“鲜为人知的理想”离我越来越近就好。今天打算为浮躁埋单
衣服洗完了,好象今天洗得特别干净。新年新气象嘛!Goingmm Subscription 2006-01-01
WTP(Web Tools Platform)是Eclipse组织的一个针对J2EE做的一个开发工具插件,是Eclipse下面的一个项目.使用过WTP 0.7的用户都知道,WTP提供了几乎完整的Web应用开发的工具支持. 12月19日,Eclipse基金会发布了WTP(Web Tool Project) 1.0rc版本.当天只发布了相关的插件包。我大概是25号从官方网站http://download.eclipse.org/webtools/downloads/drops/R-1.0-200512210855/拿到了全集成的版本(Eclipse Version: 3.1.1 Build id: M20050929-0840)。 用这个版本写了一个DEMO。感觉是上手挺容易的。V1.0在V0.7的基础上Fixed了一些Bug。而且有些功能点简化了。做得更common一些。使用过程遇到一些问题,但我不肯定是不是对环境不够熟悉造成的误解。比如修改一个JSP的名字,怎么发布都报错,只有关掉WTP重新Init一次。还有中文问题在这个环境中仍然存在。为了不写Action和相关配置文件,我用一个Servlet来控制转发的,加上一句req.setCharacterEncoding("gb2312")就搞定了。 列举主要使用过程: ■ Setup and configuration ■ Development basics ■ JSP Editing ■ Servlets ■ Deployment descriptors ■ Structure Source Editing (SSE) framework ■ Server ■ Running and debugging the web app 准备放这个Demo的过程,和简单的代码。但是篇幅原因,我就只能放一些零碎的图片。在这里没有打算告诉大家怎么去写一个简单的Web应用。如果对WTP感兴趣的话,这里就当是一些初级的了解吧。有什么问题欢迎讨论。 WTP的基础了解 PIC 基本配置 PIC 关于DEMO PIC 添加一个这样的服务器很简单。和WSAD差不多启动好的服务器运行JSP登陆页面登陆成功中文请求 演示ENDgoingmm 2006-01-02
异常处理 曾经专门花时间研究过JAVA中“异常处理”。一直想写一篇文章。也一直没有找到合适的方式。概念书上都有,在这里我再重提又觉得对不起大家。最后就不了了之。 无意间,看到CSDN上有一篇文章写得不错。转给大家看看吧。作者给出了很标准的做法,这里我加点建议。 仅供参考 注:所有建议都不会去怀疑和针对,作者想要讲解的异常处理知识点 ¢ Source code的每一个角落都这样100%标准的去处理异常。会一定程度的影响代码质量。不要相同的处理逻辑反复出现(比如用Template模式简化处理过程) ¢ 根据自己的实际情况选择异常使用,能不用异常处理的时候尽量不要用。有时候没有必要“强求”100% 转贴内容 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?
反例之四:不说明异常的详细信息 代码:3行-18行。 仔细观察这段代码:如果循环内部出现了异常,会发生什么事情?我们可以得到足够的信息判断循环内部出错的原因吗?不能。我们只能知道当前正在处理的类发生了某种错误,但却不能获得任何信息判断导致当前错误的原因。 printStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程,但只提供了一些最基本的信息,未能说明实际导致错误的原因,同时也不易解读。 因此,在出现异常时,最好能够提供一些文字信息,例如当前正在执行的类、方法和其他状态信息,包括以一种更适合阅读的方式整理和组织printStackTrace提供的信息。 结论四:在异常处理模块中提供适量的错误原因信息,组织错误信息使其易于理解和阅读。 反例之五:过于庞大的try块 代码:3行-14行。 经常可以看到有人把大量的代码放入单个try块,实际上这不是好习惯。这种现象之所以常见,原因就在于有些人图省事,不愿花时间分析一大块代码中哪几行代码会抛出异常、异常的具体类型是什么。把大量的语句装入单个巨大的try块就象是出门旅游时把所有日常用品塞入一个大箱子,虽然东西是带上了,但要找出来可不容易。 一些新手常常把大量的代码放入单个try块,然后再在catch语句中声明Exception,而不是分离各个可能出现异常的段落并分别捕获其异常。这种做法为分析程序抛出异常的原因带来了困难,因为一大段代码中有太多的地方可能抛出Exception。 结论五:尽量减小try块的体积。 反例之六:输出数据不完整 代码:7行-11行。 不完整的数据是Java程序的隐形杀手。仔细观察这段代码,考虑一下如果循环的中间抛出了异常,会发生什么事情。循环的执行当然是要被打断的,其次,catch块会执行??就这些,再也没有其他动作了。已经输出的数据怎么办?使用这些数据的人或设备将收到一份不完整的(因而也是错误的)数据,却得不到任何有关这份数据是否完整的提示。对于有些系统来说,数据不完整可能比系统停止运行带来更大的损失。 较为理想的处置办法是向输出设备写一些信息,声明数据的不完整性;另一种可能有效的办法是,先缓冲要输出的数据,准备好全部数据之后再一次性输出。 结论六:全面考虑可能出现的异常以及这些异常对执行流程的影响。 改写后的代码
本文的结论不是放之四海皆准的教条,有时常识和经验才是最好的老师。如果你对自己的做法没有百分之百的信心,务必加上详细、全面的注释。 另一方面,不要笑话这些错误,不妨问问你自己是否真地彻底摆脱了这些坏习惯。即使最有经验的程序员偶尔也会误入歧途,原因很简单,因为它们确确实实带来了“方便”。所有这些反例都可以看作Java编程世界的恶魔,它们美丽动人,无孔不入,时刻诱惑着你。也许有人会认为这些都属于鸡皮蒜毛的小事,不足挂齿,但请记住:勿以恶小而为之,勿以善小而不为。2005-12-17Goingmm Subscription
几天没看新闻,Hibernate已经发布3.1版本http://sourceforge.net/project/showfiles.php?group_id=40712&package_id=127784&release_id=377721Down下来简单看了看。初看,没多大变化嘛。但是关注一下Change Log. 感觉这个版本主要是Fixed 3.0的一些BugChange Log 部分引用
在想Class.forName 和ClassLoader.loadClass 的区别的时候。找到的一篇好文章。给有兴趣的朋友推荐 引用: Java中类的查找与装载出现的问题总是会时不时出现在Java程序员面前,这并不是什么丢脸的事情,相信没有一个Java程序员没遇到过ClassNotException,因此不要为被人瞅见自己也犯这样的错误而觉得不自然,但是在如果出现了ClassNotFoundException后异常后一脸的茫然,那我想你该了解一下java的类装载的体制了,同时为了进行下面的关于类装载器之间的隔离性的讨论,我们先简单介绍一下类装载的体系结构。 全文地址:http://gceclub.sun.com.cn/yuanchuang/week-9/classloader.html2005-12-09
外面天亮了,睁开朦胧的双眼。 到处找着“时间”,手机会到什么地方去了呢? 凌晨3:50 比赛闹铃一响。梦中惊醒过来后,不知道把手机丢什么地方去了。 The Brightest Star... 跑不赢是有点郁闷 群殴 从来都没有惧过 一手遮天 他娃可能黑手党的小混混 混混本色 跳起一耳SHI 跟他们玩累了 咋哥俩就在这小睡一会吧 2005-12-07
最近,用各种算是流行的方法写了些Hibernate的例子(基于测试)。上次打算写两篇文章。① Hibernate 常用工具的配置和使用。② Hibernate 比较简单的,基于单表操作的例子。写了80%吧。越想越感觉意义不大。现在网上很多这方面的文章。我自己也没有理由,自私的所谓备份。占用Blogjava的硬盘空间。就成了后来的 “冰 冻 闲 聊” 上个星期五,因为公司停电。所以休息了三天。一年前,这个数字可能会感觉太短。但是现在却是突然觉得连续三天不上班。不知道该干什么好。 难道是对这种“月光”族的生活上瘾拉?… 这样的话题,等以后想明白了再说吧!~ 接着说这个周末吧!因为无聊,翻翻,去年用过的一些散乱的笔记。越看越搞笑,字迹潦草,还好基本上是一些技术痕迹。找不到从前那些“少年不知愁滋味”的感觉。 因为我一直不是很喜欢看书。现在的书,写得好的不多,但是价钱蛮贵的。所以,有时候就会把一些疑惑的问题写在一张纸上。然后去网上先收集一些资料,再阅读总结。 这里,我发现了一条有趣的问题。2004年12月3日 Hibernate使用JDBC和JTA管理事务有什么区别?傻傻的问题。不如今天就聊聊这个话题吧!可能,现在也会有人对这个问题感觉疑惑的。
打开hibernate.cfg.xml看看具体的JDBCTransaction 和 JTATransaction 配置:
先说,他默认的事务处理机制[ JDBC Transaction ],这的确是最简单的处理方式,因为Hibernate只是对JDBC事物做了一层简单的封装。JDBC事务由Connection管理。事务周期局限于Connection的生命周期之内。在Hibernate中这种事务周期也就局限于一个Session之内。做个比较吧!
Connection conn = … ; <--- session = sf.openSession();// 初始化数据库连接,
和setAutoCommit= false;
conn.setAutoCommit(false); <--- tx = session.beginTransactioin(); 会再次确认setAutoCommit是否是false
调用业务方法 <--- 调用业务方法
conn.commit(); <--- tx.commit(); (对应左边的两句) 这里很关键,关掉自动commit。自己就必须做commit。否则数据是不会被持久到数据库
conn.setAutoCommit(true);
conn.close(); <--- session.close();
简单吧!如果你对JDBC有了解,看到这里可能会坏笑,NND就这么简单,我也会封装…有兴趣的话可以直接去看看具体的源代码。
看看第二种[JTA Transaction]有什么神奇的地方吧!
JTA 提供了跨Session的事务管理能力。JTA的事务是要容器支持的,即JTS,用来分布式的要求比较多一些,比如像银行这种大系统,处理多个事务源的这些的。 JTA事务管理则是由JTA容器实现。事务的生命周期完全由容器来维护。容器中可以有很多Connection。按照执行的顺序,因该是串联的一条JDBC Connection事务链。所以JTA的事务周期可以跨多个JDBC Connection的生命周期。在Hibernate中这种事务周期也就可以跨越多个Session。 所以。JTA事务的Connection不能对事务管理进行干涉。意思就是,假如使用了JTA就不应该再重复调用Hibernate的Transaction功能。这里涉及到一种事务模型(嵌套式事务模型)的问题。这里也不详细的介绍具体的几种事务模型了。在EJB2.0规范里面也不支持这种事务处理模型。 例如 :
那么下面这段代码
就不能在class A 和 class B 中出现。
原因:session.beginTransaction()也同样执行了InitialContext.lookup方法来获UserTransaction的实例,tx.commit()也同样调用了UserTransaction.commit().这样做就会形成嵌套式的事务。在Hibernate里面是不被允许的。会导致运行期错误。
谈到这里,不难看出,他们都有着自己鲜明的特点和基本的联系。回到开头的问题,在实际项目中该选用谁好呢?
这就需要分情况而定了。
1) 如果项目有用到Sessionbean.可能你会疑问?这时候由谁来管理事务呢?
答案:用SessionBean来管理。使用JTA会很方便。因为你完全没有必要去理会Transaction。直接在SessionBean的部署描述符里面声明事务就行了。
2) 自己实现一个Service类,来统一调用持久层的方法。这样也能做到前后台的松耦合。但是这时候你对session和Transaction的处理就需要小心了。如果系统考虑分布式就使用JTA否则就JDBC足夷。但还是有必要考虑系统的升级,变迁什么的。对session和Transaction的处理,最好不要放在DAO里面做。单独实现一个模板类来统一做。具体的原因和做法,以后有时间再写出来。
第三个问题
由于SessionFactory是线程安全的,他的创建过程非常复杂,代价极其昂贵。一个应用中最好只有一个SessionFactory。事务管理类型的选择是在SessionFactory的属性里面配置的。这里只能选择一种事务管理方式。
当然,你可以说还有特殊的情况,假如,这个应用需要连接到两台数据库服务器,就必须为他创建另一个SessionFactory。那么就可以选用另一种事务管理方式。表面上看这种情况是可以的。居于两种事务的性能考虑。混和用的意义不是很大。假设这样用+面对考虑不周全的DAO,也违背了设计原则,想想,这样的话,因为数据库的变动,还得回去修改DAO的代码吗?(可能会产生嵌套问题)所以关于这个问题的结论就是:
在一个SessionFactory中只能选用一种事务管理
面对多个SessionFactory的时候,可以混合用,但是不推荐2005-11-28 CTU OFFICE GOINGMM
遗憾昨天晚上的比赛没有看。补时4分钟?是不是裁判知道尤文又赢了,认为AC 必须得赢球啊!这种眼神很长时间没见着了 附上:舍甫琴科 上一场的4个进球,如果单纯的是为了酣畅淋漓。让你提前垫付了未来三场的运气, 有些不划算哦 2005-11-28 CTU OFFICE
很久没有回来了。大家好今年的成都可真够冷的。想..想...想.. 还没有发饷,想什么都虚幻闲来无聊,写些无聊的东西。本来想放Blog上,但是太杂乱,所以这篇Blog写了80%后我就停下了。结果,变成了几行无聊的文字
航班日期:2005年11月15日
航班号:CA422
起飞/到达时间:13:00/15:30
完成我的使命。该回家了。明天就要离开这个城市。离开一起战斗了26个日日夜夜的项目组。项目和团队全局意义的胜利,还需要一些时间去考验。祝福他们在剩下的日子里能做得更好。 北京,今年来了两次。工作原因,使我顶多算一个匆匆的看客。一直没有机会去真正了解这个Master城市。为什么叫他Master城市呢?因为我们平时看到的很多机构在这里就是总部。外表其实也就那样。但是权力却是Master的。背负着沉重的历史,注定这座城市不会给我们太多华丽和浮华的外表。想想儿时向往的天安门,其实就一座二层老房子。近看我还是觉得单薄了一点。没什么气势。尤其是两边的看台。比大学足球场的看台还简单。可能这只是鞭策中国人的一种象征物吧。 要让我拿北京和成都做个比较的话。可能要明天在路上边走边看,才会有些感觉。但是我不大可能在飞机上给大家发Blog吧。随便说一些生活上的感觉。这边上班时间比成都要早(8:30)。但是因为离得不是太远,而且每天上下班打车。这方面,的确方便了很多。累了一天后很容易恢复。这样早上会睡得好一点。北京很大,大得五环外也会经常塞车。据说今年北京是暖冬,带了很多衣服过来都还没机会穿。而且家里有暖气。想想在成都这几天不敢穿着短裤趴窗台上上网吧!~ 遗憾我还没有能看到北方的雪,和沙尘暴。只是每天回家灰尘挺吓人的。 干燥的气候,随时都会被静电袭击的危险。所以我的手基本还好,但是衣服的袖子就可怜了。刚开始,不理解的北京人,还以为我是怕他们的地方脏。幸好好奇的问了我,不然成天大的误会了。 这次过来基本没有出去玩。北京的朋友还有老同学些。真是对不住了,没有去看你们。有机会咱们成都见。那里才有正宗的水煮鱼,夫妻肺片…北京的饮食比较实在。贵但是量足。北京人自豪的烤鸭不好吃。说不出有什么特色。基本上我都不会吃偏甜的东西。还好这次找到一家,川菜做得不错。
停一下 刚才抓拍了几张照片。全当是这次生活的一个缩影送给大家 最后,我不得不感谢 “听涛小区长期稳定的无限网络” 虽然也不知道是谁家的,而且只发射到我的窗台上。但是这种共享精神充分体现了北方人,为人淳朴 豪爽 耿直 的特点。我会把你们的这种精神带回南方,不过,得等我有无限网络的那一天….2005-11-14夜 听涛 窗台
------------------------------------------------------------------------------------------------ Eclipse Platform Version: 3.1.0 Build id: I20050219-1500
Junit Version:3.8.1
------------------------------------------------------------------------------------------------Eclipse和Junit 大家应该都很熟悉了。这里我也不打算去讲为什么需要做这样的组合。为什么需要测试。为什么测试还有那么多讲究和学问。用一个最简单的例子,让还没有使用过的朋友,有一个简单的认识。主要是发图玩玩
1)看看完成后的效果图 2) 运行Eclipse。新建一个workplace项目,点击 file->new->project,选择Java项目,点击下一步。写一个项目名称,例如UseJUnit。点击Finish。这样就完成新项目的建立。再来配置一下Eclipse,在构建路径中添加JUnit类库。在工具条上点击项目->属性,选择Java Build Path,Libraries,选择 Add external JARs,浏览Junit被存储的目录,选择junit.jar,点击打开。你将会看见JUnit出现在库的列表中。点击确定,让Eclipse重建路径。
3)新建一个Class Person4) 新建一个Test Class TestCaseWithJunit代码如下:public void testSay() 方法是我自己加进去的5) Run Test case 6) 看看测试结果 7)修改一下测试代码 8)再看测试结果呵呵! 第一次发图。如果上面的过程描述有什么不清楚的地方。请与我联系2005-11-13 听涛 窗台
------------------------------------------------------------------------------------------------- MySQL-Front V3.2 Build 6.25
MySQL V4.1
------------------------------------------------------------------------------------------------- 从名字看双胞胎一般的他们俩。是绝配吗?我也不知道,有时候,MySQL-Front会告诉我:“我不认识MySQL”。不要以为我和他有啥子关系。这就是我今天要谈到的问题。因为刚用MySQL一段时间。不知道还有没有更好的组合式用法。
1)用[MySQL Command Line Client]进入MySQL cmd操作模式
drop database dbName;
create database dbName;
use dbName;
2) 数据库建立好以后开始建立表
drop table person;
create table person (
person_name varchar(16) not null primary key,
person_pass varchar(32) not null,
person_sex int(1) default '0' ,
person_email varchar(30) default null,
person_lastLogTime dateTime,
active_status int(1) default '0'
);
3) 现在你可以插入一些数据
insert into person values('goingmm','***','男', 'todogoingmm@163.com', '2005-11-5',1);
…………...........
4) OK 现在可以查询出来看了
select * from person
突然感觉老在这里操作很是不方便。于是想起了MySQL-Front。打开看看,咦!没有找到数据库dbName。努力了1个小时。原因猜完,办法想尽。MySQL-Front还是说我认识他,你不要搞我拉!~果然,再搞 MySQL-Front死掉拉。有个性。
后来把刚才做的1)2)3)4)全部回滚。就是删掉数据库。在MySQL-Front里面先建立一个数据库。然后去cmd建立表,插入数据。最后回到MySQL-Front。哈哈,这回看到刚刚建立的数据库了。
不知道大家有没有遇到过这个问题。是MySQL-Front的bug吗?还有一些MySQL-Front很弱智的问题,比如SQL编辑器。希望他的下一个版本不要这么粗糙。毕竟MySQL 都5.0了2005年11月5日-----------------------------------------------------------------------------------------
很不好意思,前三篇都还是概念。其一: 我想归纳下来,给自己以后看做一个备份其二: 现在真没时间去写代码项目做完,回到成都,在后面的文章中,我会抽空写一些实际的例子--------------------------------------------------------------------------------------------------------------------- 概念Hibernate中的接口---------------------------------------------------------------------------------------------------------------------大致分类:
■ 被用户的应用程序调用的,用来完成基本的创建、读取、更新、删除操作以及查询操作的接口。这些接口是Hibernate实现用户程序的商业逻辑的主要接口,它们包括Session、Transaction和Query
■ Hibernate用来读取诸如映射表这类配置文件的接口,典型的代表有Configuration类
■ 回调(Callback)接口。它允许应用程序能对一些事件的发生作出相应的操作,例如Interceptor、Lifecycle和Validatable都是这一类接口
■ 一些可以用来扩展Hibernate的映射机制的接口,例如UserType、CompositeUserType和IdentifierGenerator。如果你确认有必要的话这些接口可由用户程序来实现。
Session接口
Session接口对于Hibernate开发人员来说是一个最重要的接口。然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session对象,如果Session的开销太大,会给系统带来不良影响。但值得注意的是Session对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session对象。
Hibernate的设计者将session看作介于数据连接与事务管理一种中间接口。我们可以将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含这一些持久层相关的操作,诸如存储持久对象至数据库,以及从数据库从获得它们。请注意,Hibernate 的session不同于JSP应用中的HttpSession。我们通常会将HttpSesion对象称为用户Session。
SessionFactory 接口
他用到了一个设计模式[工厂模式],用户程序从工厂类SessionFactory中取得Session的实例。
但是请记住,SessionFactory并不是轻量级的!实际上它的设计者的意图是让它能在整个应用中共享。典型地来说,一个项目通常只需要一个SessionFactory就够了,但是当你的项目要操作多个数据库时,那你必须为每个数据库指定一个SessionFactory。
Configuration 接口
Configuration接口的作用是对Hibernate进行配置,以及对它进行启动。在Hibernate的启动过程中,Configuration类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。
Transaction 接口
Transaction接口是一个可选的API,你可以选择不使用这个接口,取而代之的是Hibernate的设计者自己写的底层事务处理代码。 Transaction接口是对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA中的UserTransaction、甚至可以是CORBA事务。为什么要这样设计呢?因为这样使开发者能够使用一个统一事务的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移值。
Query和Criteria接口
Query接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作
Callback 接口
当一些有用的事件发生时。例如持久对象的载入、存储、删除时,Callback接口会通知Hibernate去接收一个通知消息。一般而言,Callback接口在用户程序中并不是必须的,但你要在你的项目中创建审计日志时,你可能会用到它。2005年11月3日 夜 阴天 温度偏低听涛[601]室 窗台
我这里是北京时间2005-10-31 晚上22:10。还有一个时辰大家都关心的“星期一”就要过去了。今天到底发生了什么?项目组是怎么挺过来的?我们还能继续往前走吗?…
现在项目组的核心开发小组,DBA,服务器管理,报表组,Domain还有一些协调的工作人员都集中在信心中心。我们就下到医院流程现场。
核心开发小组:这组基本上是新加坡,马来西亚过来的同事。他们负责解决系统随时出现的紧急情况。
DBA:这个小组主要负责继续做移植数据的效验,和紧急的数据patch,最主要的还是负责数据库压力监控和调优。
服务器管理组:他们负责看好四台Web服务器(有两台是备用的),一台应用服务器。还有其他的测试服务器。
报表组:这组人员现在的压力可不小。各个部门的流程单据,还有PA的财务报表,那可是用户眼见为实的东西。他们的 从容, 总算让我了解ShuaiYu同志去年拿那么多奖金背后的故事拉。
Domain组:…
协调的同事组:他们也挺辛苦的,杂乱的工作。该怎么去阅读他们,我想自己尝试过后都能理解。
大家可能会疑惑,goingmm你娃在说啥子哦!半天说不到主题,大伙张着嘴巴呼吸在等现场镜头呢!!
没有伏笔,没有漂亮的引词.我们直接去住院处看看吧!
早上8:00准点到达现场。大厅挤满了人,和大家念书的时候去学校财务处交钱是差不多的。大家都生怕自己手上的钱交不掉似的。这次单枪匹马杀过来的。打心里还是有一点不塌实的感觉。还没有按上门铃人家已经热情的开门叫我进去拉。还没打完招呼做完自我介绍,他们领导说话了:“快,小伙子8:30就开始录入拉,我们还有两员工是第一次使用系统,赶快带他们过一次”。当场晕忽忽的…怎么还有这回事啊。没办法啊,我们出来混,上面明确要求不能对用户说“不”。
8:30到了,全部窗口打开,那可是钞票进,发票出的场面。站在里面的我看着心里挺爽的。时间过了大概一个小时,系统开始有异常的情况出现了。最先暴露的就是大家熟悉的查询。我横着一看四台机器全部显示请等待。紧接着就是标准的北京腔调的疑问,“小伙子,你得给我看看,这是怎么拉。半天没动静,你叫我怎么办啊?”稳住他们,立马电话连通信息中心,“喂…请帮我查一下,为什么系统现在特别慢,住院处已经没法继续拉”。还没有收到电话里面的回复。信息中心已经有人赶到现场,通知用户赶快把系统切换到103(另一台web服务器)。结果出人意料,切换到103的用户登陆后,页面错误频频。用户操作一半失败了。眼睛帖着屏幕仔细一看内存不严重不足。NND一直惊风火扯的Error Page 这回算是看过瘾了。四台电脑同时Show给我看,
住院处的领导们还是见过大场面的。临场指挥,果断坚决。帖一纸条“手工办理”上窗户。指挥着,“大家体谅一下,现在系统正在升级,难免出现问题。紧急的用户可以先到这边来,我们帮你们做手工录入,呆会系统好了,录进去把条子给你们送过去。”
我也没有傻呆着,组织起两台客户机器,再试一试101(住院处主服务器)。TNND这回就更加不可接受了。服务器直接down掉。我看到的是IBM字样的提示信息了。“IBM”啊,我们把你们的硬件软件一起放在那间神圣的机房里面。门口得刷卡进去。其他得连灰尘也没让它靠近你。就差点上几根香,搁一大盘子放点苹果橘子把你供起来拉!就这样回报我们啊???
NND不会吧?才一个小时就玩完拉?这时候信息中心果断的重起了一次服务器,虽然没有通知我们。但是我还是很感谢他们及时的处理。NND再进页面状态入初,那种感觉就像是早上起床推开那玻璃窗户。多爽啊!后来,103也重启好拉,这回通知拉,主要给住院处用。我又指挥着,大家都确认进103吧。这次切换还算满意,一直到病人录入完毕都没有发生问题(四台一起工作)。在住院处守侯了一天,看着他们不时拿出全部发票,钞票,数着算着,最后打开报表核对,呵呵!他们也怕钱不够。还好,平均每个人核对过3次。精确到小数点后面两位数。都能对上。
中午回研发室吃盒饭。正好碰上老大在给蔡总汇报情况。挺实在的,包括问题,出现原因,现在的解决办法。从系统设置,到硬件,那可是都说到点子上拉。“就好比公司说要让他们动起来每人发5000先用着吧。” 话语中我能感觉到明天早上的压力会比今天小。不管能小多少,能不断进步就好。听得入神拉,难吃的盒饭,快吃完才感觉出来难吃死老。这回还真对得起这10块钱。
看到这里,我想大家,还会为我明天早上的遭遇,捏一把汗。总结一下:“问题会延续... 时间不确定;压力依然在,时间不确定;”可能这个时间越短,我们能学到的越多。2005年10月31日 听涛 601室 窗台
闭上眼睛,回首23年来的经历。真的能看见眼前快速闪过的画面。使劲的想扎进去看清楚一点。那里有童趣,幼稚,天真,有梦想,还有坚持。是会意的傻笑把我拉回了现实。奇怪没有找到10月29日这个时间戳。书上说:“人是聪明的动物。他们只会把对自己有意义的东西,深深的勾画在脑海中。”
的确,眼前的经历注定了10月29日是这一辈子再也难忘的日子。快两年的心血终于开始有了收获。我现在我还不敢贸然提说“胜利”这两个字。开发团队的稳重,成熟和冷静告诉我“考验才刚刚开始”。
在这里留下这些杂乱的文字,遥寄在远方默默支持我们的成都团队全体同事。让我们一起来分享这美妙时刻。我大致能体会你们此时难以描述的心情。担心…担心系统承受的压力,担心前方的开发人员面临的难题。自豪…自豪一天内系统几乎没有大的问题,自豪自己就是开发团队的一员。喔!说什么哦!都说难以描述拉…真想把你们每一个人都写的活灵活现,可怜我没那样的文笔,还是到现场去看看吧!
镜头一
2005-10-29日凌晨1点 按照项目组的安排这个时候我们应该进入梦境。为上线做好最后的准备。可能是由于第一次有这样的经历,内心有些亢奋,也可能是平时没有这么早睡的习惯。差不多2点才睡着。早上5:30起床去医院研发室。等待数据移植。
镜头二
由于数据移植推迟了一点时间。早上7:30左右完成数据移植,同时启动了应用服务器
这时候,DBA(+Shuaiyu)全然忘记自己是通宵到现在,还在不知疲惫的检查验证数据,做数据库优化。这时候问题出现了。由于昨天晚上5.4(老系统)的收银机没有完全关闭。Patch进去的补丁会产生问题。这边报表服务器也进不去了,还有谁改了我们熟悉的iHIS的密码。管理员登陆不了拉。那边电话里面传过来的消息说:“用户已经迫不及待的登陆进了系统”…说到这里场面已经有一点混乱了。
老板此时的脸上看不出笑容,找不到慌乱,可能是他的坚持还强撑着极限中的自信和宽容。这是一个需要英雄的时刻,但说实话,我什么忙也帮不上。经过大家的努力,密码问题轻松搞定,收银机的Patch也有惊无险。报表组拼尽全力,依然毫无头绪。平时做100次也没有问题,偏偏今天…
我们在住院处接到通知,应用服务器需要重新启动。感觉怪怪的,后来才知道。正是这次重启解决了报表问题(报表在服务器启动的时候会到一个MSTR表去load数据,但是今天先启动了服务器,然后才把这些数据Patch到MSTR表中,造成了几个小时的“报表问题”)
镜头三
应用程序问题解决了,住院用户吹着病人等不急拉,我们得赶快下住院部去。时间:10点07分,Baijie(北京测试老大)带领我们赶到住院处,协助他们开始做病人的住院登记以及住院费用处理。
去之前听说这个部门压力很大,四个窗口平时都忙不过来。心里还憷着呢!还好,到现场一打听,今天是周末没有那么多人。平时挤满人的大厅几乎是空荡荡的,外面看感觉和去银行取钱的场景很相似。进去以后发现有一个很逗的老头,不间断的和我们开着玩笑。怀揣着北方人的幽默。可能是他的热情和老练,让我感觉北京话听着还蛮淳朴的。
大概在11:30的时候出了点小状况。俩女患者(都还挺漂亮的)过来办理出院。系统打印出的单据上显示:住院6天,但是床位费用收了7天。我们的第一反映就是希望患者能留下电话或者其他联系方式。做好最后的确认再通知她们过来。就是这样一个折中的意见惹火了其中一个。大咧着嗓子说:我们住的是400一天的病房。系统打印不是6天吗?凭什么收7天的钱?承不承认是你们系统错了?
无意间,我看到Baijie无奈的抿了一下嘴,但还是自信的说:“我们马上检查”系统没有这个问题。面对这么裸感的质问,我真的感觉心酸…这一次算是给我留下了深深的烙印。以后每写一行代码的时候可能都会想起…
10分钟后,问题终于有了答案。是昨天的数据移植把收费日期给弄错了(27日)应该是28日。所以每一个用户都多算了一天的床位费用。这个改动很快就被patch到数据库
在这里的几个小时,我总结了一下
1) 用户需要快速准确的业务过程(还真碰上了非常急迫的用户,为了赶飞机该补50掏出100等不急找钱退卡就要走)
2) 我们的需求,和第一线用户的想法还有差距,他们的想法更加实用。对系统现在新功能的认可和中肯意见都让人佩服
3) 这里的一线用户都表现了良好的素质和风度。包含着对我们现状的宽容和理解
镜头四
时间已经是下午2:00多了,回到信息中心,一些同事在啃面包,吃盒饭,打电话,改程序,页面测试,数据效验… 这时候的我只想找根烟去厕所享受一下。路过研发室,隐约听见里面讨论和不时的笑声。项目组的老大们和用户在里面进行上线后的第一次沟通汇报会议。
镜头五
这个镜头可能有些偏离物理视线。我们今天大概在20:00离开医院。到这个时候仍然看不到一点笑容,听不到到一点笑声,偷偷的几乎都没有。不得不承认这真是一只成熟的团队。这里没有浮躁,没有侥幸,没有自负… 因为每一个人都清楚的知道,真正的考验应该是下周一。这个时候才是对系统承受压力的真正考验。在这之前,DBA和负责应用服务器的同事得充分估计,做好最后的优化工作。
镜头六
哎!写不完,还有很多….比如:Leo和欢哥的故事,经典得很。
我不敢想象,一天之内能有这么丰富的经历。时间对于每一个人真的是公平的。
真心的希望我们能一路走好!
Powered by: BlogJava Copyright © Goingmm