从文化到沟通 IT经理升迁直面多重考验

Posted on

从文化到沟通 IT经理升迁直面多重考验

返回首页 返回IT168首页 我的空间

返回首页 返回IT168首页 登录 | 注册 最新 门户 论坛 推荐 新闻 专题 下载 商店 CTO CIO 人才 图书 培训 wiki投稿

技术 ERP SCMSaaS CRM RFID OA BI SOA 应用 中间件 绿色IT 电子商务 项目管理 频道 开发 服务器 虚拟化 云计算 安全 互动 CIO俱乐部 空间 社区 行业 制造 金融 物流 教育 医疗 电信 栏目 高端访谈 情景导购 服务 方案库 企业软件库

当前位置:IT168首页 > 信息化 > 从文化到沟通 IT经理升迁直面多重考验

从文化到沟通 IT经理升迁直面多重考验

2010年05月06日 09:32 来源:ITValue 作者:ITValue 编辑:李倩 评论:0条 本文Tag: CIO天地 人才

【IT168 信息化】 在过去的十年,尤其是最近的几年,有越来越多的跨国公司里面的中国区IT领导人已经由本土成长的IT经理人担任。他们往往从技术起步,经过一次次重大项目的考验,以及多年成功的IT运营,逐渐地成长为中国区IT负责人,而这一职位在公司成立初,往往是总部或是亚太地区总部指派的外方经理担任。

和国外的同行相比,中国区的IT经理人有着更大的雄心,也追求更高的上升速度,随着中国区业务的扩大,在亚太地区甚至在公司全球的份额增加,重要性提高,也有更多的跨国公司把亚太地区总部移到大陆地区,像北京上海等城市,而过去这中区域中心往往设在香港新加坡等地。有越来越多的中国IT经理人已经参与甚至负责亚太地区地区的IT事务,更多已经在中国区IT领导岗位上的IT经理人,无疑都把“下一跳”亚太地区IT主管作为自己的职业目标。在全球化,区域化IT领导人队伍中逐渐有了更多中国人的身影。

这一跳看似是上一跳延续,其实有着更大的困难及挑战,本文就是要系统地、深入地分析从中国区到亚太地区的IT经理人,哪些方面的能力、技能需要有重点地培养,哪些是中国本土人才的弱项。会对更多中国区IT经理人成长为亚太地区的IT领导人,提供一些帮助。

**“语言”的能力**

首先要谈的是交流的语言。 英语已经是各大跨国公司事实上的工作语言,中国区的IT经理人往往有不错的英语表达能力,这体现在听说读写,尤其是读写方面。而在亚太区的位置上,听与说变得更为重要——这一点往往会是一大软肋,你的听众往往是英语第一语言,或是以英语为教育语言的,他们的发音又不是你所熟悉的标准音。

除了交谈的语言,IT经理人更要熟悉国际通用的各种IT管理语言,像IT项目管理,基础信息库(ITIL),企业架构(EA)等等,这些IT管理语言更具专业性,如果不了解这些再好的英语基础也无济于事。

**区域战略**

假如你只负责中国区,你的IT战略是在你所熟悉的中国区。而在亚太区的位置上,总部不仅仅是要求你执行好IT战略,更需要的是你参与制定,或是主持区域IT的战略制定。IT战略是精密围绕着业务战略的,你需要从中国区的视野,转向亚太地区,从执行者转向制定者。有效的区域IT战略是你确立你在亚太地位的基础,也是凝聚亚太各个国家IT团队的中坚力量。

**多元文化与工作团队**

亚太地区的文化极其具有多样性的,从中国区成长起来的IT经理人,需要花相当的时间、精力与耐心来适应,学习各个国家的工作方式、文化传统,只有这样才能发挥多样性的优势。否则,小处可能是沟通,执行不畅,更大,甚至发生文化的撞击与强烈的工作冲突,非常地令人沮丧。以开放的心态,包容的胸襟,深入地了解宗教、文化习惯,并且知错必改,多请教,放低身态。

**创新,并结合中国的特点与优势**

不要忘记你成长、立身之本。出色的执行交付能力,持续的创新精神,是你之所以成为区域领导人的根本,继续发挥这一优势,并且不断结合中国市场的特色。 持续的创新,也需要了解、掌握IT的最新技术、潮流——更重要的是趋势。顺应着趋势,制定你的战略与方案,你的IT领导力取决于你所交付的IT价值。在亚太区这一位置上,没有持续的创新和敏捷的反应,这一位置始终是无法安稳的,因为你有了更多更强的职业竞争对手,同时也有更大更复杂的IT系统,最终的责任人是你。

如何培养这些能力并积极地应对这些全新的挑战?首先,要善于从实践中学习,这要求你有强大的知识储备,同时要有快速、敏捷的反应能力。从成功中学习,从失败中学习,不断地扩大公司内部的学习网络。同时也要把视野投向外部,从行业领先者中学习,从可靠的外部顾问网络中学习——学习的能力始终是最重要的能力。

作为一个本土的经理,如何在真正意义上管理好亚太区的团队?这几乎是每一个本土经理人职位从中国区延伸到亚太区必先面对的巨大挑战。

IT管理者需要克服每个国家的人文环境、生活习惯、做事方法上面巨大差异,成为合格的亚太管理者。针对如何有效的对海外团队进行管理,ITValue社区会员在线上进行了热烈讨论。

文化是关键,充分了解你团队中的人员特制,加强沟通,多采用情感领导会有帮助。最怕是千人一面,以己推人简单管理模式,或者单纯依靠泰勒式的科学管理教条,往往事倍功半。

——陈火阳 康力国际(集团)公司 副总裁

我们公司IT由于在几年前开始了全球化的整合,所以有机会参与到全球组织,也有机会领导其他国家的人一起工作,总的来说,有几点感受:

1.论专业能力,专业水准,中国员工一点都不输,甚至更好。拿我团队的毕业生来说,我觉得比东南亚国家的毕业生优秀。

2.充分尊重其他国家的文化,需要在这方面多做功课。这是一个短时间内拉近和其他国家员工的一个好方法。想想,如果一个老外和你谈三国,你是不是觉得这个老外很亲切?同样,你和一个印度员工一起用手吃饭,他马上觉得你很亲切了。

3.多沟通。把这当作一个专题来做。由于地理上是分开的,频繁的沟通显得尤其重要。随时掌握员工的思想状态。

4.制定清晰合理的工作目标。需要把你的期望清楚地传达,确保员工理解接受。并且要员工及时汇报,以便掌握进展状态,保证目标的顺利实现。

——翁志健 戴尔(中国)有限公司 高级IT经理

同意以上专家的观点。作为本土IT背景、工程师出身,本人曾在GE作为第一个国人担任Asia-Pacific(亚太区)IT总监、CIO,负责15个国家和地区包括日本的IT运营、战略规划、项目部署、公司IT治理、团队建设等,在Cisco也曾担任过类似工作。希望有机会共同切磋分享, 并学习ing… 一思于出差途中:-)

——古一思 安博教育集团 高级副总裁兼首席技术官

管理亚太区的团队,团队沟通是很重要的,另外很重要的就像冯总提到的,要能够调动全球的资源。

——孙亮 青岛怡之航物流有限公司 亚洲IT经理

本人和身边很多业内的朋友在跨国公司工作多年,有以下几点小建议供参考:

1. 通过一个高效的在线Help Desk记录和分派系统平台,从逻辑上形成整体团队协调工作的环境。根据各国时差的差异,通过系统合理自动安排各国值班人员(注意安排加班薪酬,国外对临时加班和额外值班时间获得加班薪酬觉得很理所当然,但在国内很多公司对这点态度各有不同)。通过Help Desk的记录产生每月的统计报告,在例会上适当表扬。每年的工作量统计报告用于员工绩效考核,并和HR的年度奖金挂钩,通过统计数据做到用数据说话,合理公平。

2. 建立内部技术人员的技术资料库,让成员定期总结和积累各问题的解决办法,各国成员在通过该资料库提高解决问题的效率和不断提升自己,会感觉自己背后有一个强大的跨国技术团队在支持,而不是本国人员孤军奋战。

3. 在预算和费用允许下,尽量提供各国成员的互访工作学习机会,每年一到两次,一次一到两个星期的工作互访。加强彼此间的直观熟悉程度,良好的同事关系在今后国际间协调工作时会表现很好的优化作用。(如果多年彼此只是通过电邮,电话来沟通,在国际协同工作时候的确很难表现出很热情.。。)

4. 根据各国的风俗习惯,在重要的节日赠送些小礼品,会让各国员工感觉到自己被尊重和领导比较贴心。(如春节时,给香港的团队同事在工作第一天寄一个“利是”,他们会觉得老板还是蛮不错的.。。)

——黎伟东 韦莱保险经纪有限公司 副董事

伟东说的第3、4两点颇有同感,在跨国的项目合作中,光靠电邮和Conf Call 是不够的。面对面地交流在项目进程中和后期支持中,会体现出不一样的效果。这也是为什么CXO经常成为空中飞人的原因之一。

另外一点,个人觉得自身的能力和素质也是“服众”重要前提之一,如果你本身不出色,又如何能够领导跨国团队。

最后一点,要充分建立和亚太区Business Leader的Alignment, 这是成功的最最之基础。所有IT项目的优先级和资源的充分调度都是由Nusiness的利益决定的。

——林刚 英格索兰(中国)投资有限公司 Core system manager, AP

我现在就在管理着整个亚太的团队,个人觉得除了应用一般的管理知识如建立远景,激励团队等等,最困难的几点都是和人有关的。

1. 如何去和全球CIO保持一致,并且能够取得足够的信任;

2. 尽量避免在管理中偏向中国团队,比如说有任务时第一想到的就是用中国人;

3. 我办公室里有好几个国家的人,如何在中国的大环境中促进大家交流?我们曾经开展过英语日,问题是中国员工总会觉得在中国还用英语讨论问题很变扭。结果活动只好不了了之了;

4. 亚洲的文化比较复杂,日本、韩国、中国和印度,这四个国家都有自己很强的特点,管理中得分别对待。

——高峻 德国舍弗勒投资(中国)有限公司 首席信息和流程执行官(亚太)

相关阅读:

本文欢迎转载,转载请注明:转载自IT168 [ http://www.it168.com/ ] 本文链接:http://cio.it168.com/a2010/0506/882/000000882625.shtml 本文关键字: 沟通 it经理 文化

我的文章阅读记录

天道酬勤?

Posted on

天道酬勤? - 透明之眼

首页 新闻 论坛 问答 博客 招聘 更多 ▼

专栏 圈子 搜索

您还未登录 ! 我的应用 登录 注册

透明之眼

永久域名 http://gigix.javaeye.com/

火了,水了,完了 | Announcement: Fluorida 0.0.1

2008-04-13

天道酬勤?

翻译这件事情,可能大多数人并没有什么概念,不如我来举一个别的例子好了。很多人知道我是《程序员》杂志的专栏作者,我发表了很多文章。我也知道有人把这些写作也归结于文采,在我看来这就是对写作这件事情、对写作者的极大的不尊重。既然有人对我感兴趣,我就来告诉大家这些文章是怎么写出来的。 首先你在工作中接触了一点新东西,你有想法了,于是你决定把它写出来。星期五的晚上,你就开始考虑这篇文章。你用三个小时搜集用得着的资料,再用一个小时构思文章的结构。这件事情你从8点开始做,到12点就完成了,所以你还有时间洗个澡再稍微看看电视。这件事情并不难,你也能做到,对不对? 一觉醒来这就是星期六了。你从早上10点开始写,一直写到晚上8点。你全神贯注做这件事情,只有在水杯空了、烟灰缸满了或者内急的时候才离开椅子一小会。10个小时你能写多少字?哪怕你真的没什么文采,10个小时你能写出5000字吗?毕竟高考的时候你也曾经用1个小时写过1000字。如果你用10个小时写出5000字,那挺好的。第一,5000字已经可以成为一篇合格的文章了,足够起承转合的空间;第二,即使我在写得最快的时候也不过10个小时10000字而已,只比你快一倍,而你还有很大的练习提高的空间。晚上8点,你的文章就算写好了,你可以走出门呼吸一下新鲜空气顺便吃个饭。这件事情并不难,你也能做到,对不对? 你当然不会每周都有东西想写,不过一年有12个月,一个月有4个星期。每个月有一点想写的东西,每个月拿出一个周末来做前面说的这些事情,另外三个周末依然过平常的生活,这件事情并不难,你也能做到,对不对?如果是这样那挺好的,因为我即使在最高产的一年也只是发表了11篇文章而已。春节的那个月给自己放假吧,你也能做到和我一样高产,而且,显然并不会影响你编程的时间。 作为结论:很多人一听到别人做了些什么事情,第一反应就是”我做不到“,然后找出一堆理由试图证明这些事情不是一个正常人能做到的,然后就可以心安理得的缩在沙发上看无聊的电视剧了。个人而言我认为这是一种使人心境愉悦的生活态度,我完全理解这种心态。不过哪怕只是出于礼貌,能不能麻烦你承认自己确实就远不如别人勤奋呢,如果你真的认可”天道酬勤"这个道理的话。

火了,水了,完了 | Announcement: Fluorida 0.0.1

评论

11 楼 zjf_1103 2010-06-02 引用

楼主说的是实在话 10 楼 qq62507544 2010-05-17 引用

看样不是我们的理由太多,而是我们的理由不够

9 楼 orcl_zhang 2009-11-30 引用

这件事情并不难,你也能做到,对不对?

哈哈,有空,俺也试试. 8 楼 hisdonkey 2009-10-29 引用

7 楼 gainfirst 2009-06-23 引用

说的不错,看来自真的要摆正自己啦 6 楼 coolspeed 2008-11-27 引用

5 楼 andyaohui 2008-10-29 引用

楼主是个厚道踏实的人。佩服! 4 楼 laorer 2008-07-29 引用

天道酬勤....

3 楼 andyhu1007 2008-06-09 引用

大熊,好样的:) 2 楼 tusury 2008-05-30 引用

1 楼 jackyxiap 2008-05-26 引用

发表评论

您还没有登录,请登录后发表评论(快捷键 Alt+S / Ctrl+Enter)

gigix的博客

gigix

搜索本博客

最近访客 >>更多访客

wangjinquan的博客

wangjinquan

yeowin的博客

yeowin de3light的博客

de3light

peterbo的博客

peterbo

博客分类

其他分类

存档

  • 2008-11 (1)
  • 2008-10 (1)
  • 2008-09 (1)
  • 更多存档...

    评论排行榜

  • Rss

  • Rss_google
  • Rss_xianguo
  • [什么是RSS?] 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。 © 2003-2010 JavaEye.com. All rights reserved. 上海炯耐计算机软件有限公司 [ 沪ICP备05023328号 ]

网络阅读,为什么人会浮躁?

Posted on

网络阅读,为什么人会浮躁?

这篇文章放到这个版面,因为我认为它属于管理的范畴:个人管理(时间管理、知识管理)。 是不是大家也有这种体会:

  • 网站注册越来越没耐心,看到页面全是文本框、下拉框,就心烦,咔一下关了。
  • 文章超过两屏的,就没勇气往下看。
  • 看到文章的相关链接,没完没了,两小时后,脑袋一片混乱,真想凉水冲冲。
  • Google Reader的未读项又是1000+了,看吧,压力太大,不看吧,有种挫败感,干脆,全部设置为已读。 焦虑、挫败、恐惧,什么感觉都来了,唯独没有愉悦感。 以上种种问题我都体验过,08年尤其突出,现在已经适应了,能够平静地进行网络阅读。 其实,阅读时浮躁,可能反映你对知识的渴求。比如你对IT技术很感兴趣,上JavaEye一篇篇读啊读,恨不得一晚看100篇,于是导致每篇都是蜻蜓点水。其实,没必要这么大压力,就说我吧,以前写技术文章,如123,一篇就是一整天,你一个晚上看10篇,收获已经很大了。如果你上猫扑,我估计你不会这么大压力,因为那些无聊文章你可看可不看。 是不是你会有种自我安慰?不过我还是要打击打击你:看理解类文章别太贪婪了,看了解类文章才可以略读。 打个现实的比方,如果有三个mm都在追你,除了让你心花怒放,会不会更让你心神不安患得患失,如果是你追求一个魂牵梦绕的mm,你是不是会很专注? 浮躁往往是因为自己不能驾驭导致的。比如keso做donews主编时,订阅的RSS是1500,每天还写一篇精品博客,因为他扫一眼就知道文章大概。你现在去读初中语文,就会理解我说的意思。 而不能驾驭,往往是因为对该专业不精通。记得以前自己通读过dojo框架源码,并做过小改进,后来有什么dojo新闻,我扫一眼就知道文章的含量,但对于财经、房地产类文章,我至今还很容易被人忽悠,即使咬文嚼字地读。 判断力是你决定一篇文章是否值得阅读的条件,它是资讯的过滤器。专业能力决定了你的判断力水平。 浮躁在看资讯类文章时很明显,特别是你关注的领域,比如我现在很关注电子商务,这类文章会带给我压力。但我看企业管理类文章时,就会轻松得多,因为我大致知道企业管理有哪些方面,哪些方面我深入思考过,比如沟通、决策、激励,哪些方面我现在很想了解。 为什么网站注册时会很浮躁呢?也许根源于是你的期望值,更确切地说,是你的投入产出比,如果只是因为想下载一篇文章而不得不注册,你肯定会浮躁。如果你在携程上订打折机票,相信你不会浮躁。当你觉得一个网站分量很重时,它复杂的注册流程,可能会更赢得你的信赖,比如招商银行网站。 那么,怎么改掉浮躁的坏习惯呢? 我上面其实都给出了答案,虽然是我的主观分析。 我从阅读工具说起,因为这比上面可操作性强。 就从iPhone展开吧。 我用iPhone近两年了,最近半年对它爱不释手,当然不是iPhone控。我以前用我的ThinkPad T60看Google Reader时,我会很烦,现在用iPhone看就不烦了。用过iPhone的,对iPhone不支持多任务咬牙切齿,后来我终于明白乔布斯这个洁癖和偏执狂,为什么不让iPhone支持多任务了,从技术角度,iPhone是基于Unix内核,支持多任务很简单。乔布斯想让iPhone提供了一种浸入式阅读体验。浸入式体验,我的理解是:只专注于一件事。比如iPhone上看天气、看股票。 那为什么PC不能提供浸入式呢?因为PC的多任务,我们会一会儿和QQ好友搭讪两句,一会儿看看股票,一会儿看看文章。打个比方,当你看到一位时尚美女的衣领处若隐若现时,你会不心动吗?虽然你可能不会行动。 而iPhone剥夺了你选择的权利。你用iPhone上douban,看新浪微博,你会很专注的。注意,我说的这两个是iPhone APP,不是手机网站。 看互联网文章,之所以让我们浮躁,我认为互联网的本质属性超链接为罪魁祸首,超链接会让人在网站之间频繁跳转。我上面说的iPhone APP,如douban和微博是没有超链接的。没有超链接怎么可能遨游豆瓣的信息海洋?试试iPhone就知道了。iPhone这种没有超链接的导航模式,会顺应你的意图高效阅读,而不是漫无目的的跳转。 iPad之所以是一款颠覆性产品,可能就是因为它的纸质阅读风格,对电子阅读体验做了很大提升,很多人说它是报刊和杂志的救星。那么,它一定会想办法提升它的深阅读体验,让人尽量不浮躁。iPad也不提供多任务哦。 有时想,为什么我07年前看书不浮躁,那时候我啃过很多本技术类书籍,如《Core Java》第一册我啃了三遍。也许,是因为选择权太少。如果你可以把新华书店几个橱柜搬到你的客厅,你试试看,你还能否静下心来阅读一本书。所以我建议那些电子书搜集狂,该收敛一下了。 阅读环境,我发现对降低浮躁很有帮助。比如我喜欢去咖啡厅上网,在河边草坪上用iPhone阅读RSS。 以前回家我喜欢把客厅房间卫生间厨房等全部打开,然后坐在沙发上看书。现在晚上我喜欢把所有灯灭了,把路由器关了,静心认真阅读几个优秀的PPT。 另外,我特地买了一个上网本HP Mini 210,专门为了上网。而没有在上面装任何开发或工作相关软件。 控制阅读量也非常重要。有段时间,我iPhone上的微博实在多得看不过来,根本没法思考。后来,我仔细分析了一下每天的几个空闲时间段,如中午20分钟,睡前25分钟等。如果我只有45分钟时间,我该订阅多少微博?因为每看一篇有思想的微博,我都会问自己四个问题,而这个思考时间不能省:这篇微博说了什么?怎么说的?说得对吗?对我有用吗?总之,我会心里想着给作者一个回复。 我看有很知名的博主也受不了微博的骚扰,比如工作时频繁MSN弹出。我只想告诉他:可能你利用微博的方式不对。 ok,就写这么多吧,如果想到其它的,就在回帖里补充。

Java源码阅读的真实体会

Posted on

Java源码阅读的真实体会

首页 资讯 精华 论坛 问答 博客 专栏 群组 更多 ▼

招聘 搜索

您还未登录 ! 登录 注册

zwchen的博客

Java源码阅读的真实体会 **

博客分类:

刚才在论坛不经意间,看到有关源码阅读的帖子。回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动。 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心。 说到技术基础,我打个比方吧,如果你从来没有学过Java,或是任何一门编程语言如C++,一开始去啃《Core Java》,你是很难从中吸收到营养的,特别是《深入Java虚拟机》这类书,别人觉得好,未必适合现在的你。 虽然Tomcat的源码很漂亮,但我绝不建议你一开始就读它。我文中会专门谈到这个,暂时不展开。 强烈的求知欲,我认为是阅读源码的最核心驱动力。我见到绝大多数程序员,对学习的态度,基本上就是这几个层次(很偏激哦): 1、只关注项目本身,不懂就baidu一下。 2、除了做好项目,还会阅读和项目有关的技术书籍,看wikipedia。 3、除了阅读和项目相关的书外,还会阅读IT行业的书,比如学Java时,还会去了解函数语言,如LISP。 4、找一些开源项目看看,大量试用第三方框架,还会写写demo。 5、阅读基础框架、J2EE规范、Debug服务器内核。 大多数程序都是第1种,到第5种不光需要浓厚的兴趣,还需要勇气:我能读懂吗?其实,你能够读懂的。 耐心,真的很重要。因为你极少看到阅读源码的指导性文章或书籍,也没有人要求或建议你读。你读的过程中经常会卡住,而一卡主可能就陷进了迷宫。这时,你需要做的,可能是暂时中断一下,再从外围看看它:如API结构、框架的设计图。 我就说说如何读Java源码,以及我曾经的阅读感悟。 Java源码初接触 如果你进行过一年左右的开发,喜欢用eclipse的debug功能。好了,你现在就有阅读源码的技术基础。 我建议从JDK源码开始读起,这个直接和eclipse集成,不需要任何配置。 可以从JDK的工具包开始,也就是我们学的《数据结构和算法》Java版,如List接口和ArrayList、LinkedList实现,HashMap和TreeMap等。这些数据结构里也涉及到排序等算法,一举两得。 面试时,考官总喜欢问ArrayList和Vector的区别,你花10分钟读读源码,估计一辈子都忘不了。 然后是core包,也就是String、StringBuffer等。 如果你有一定的Java IO基础,那么不妨读读FileReader等类。我建议大家看看《Java In A Nutshell》,里面有整个Java IO的架构图。Java IO类库,如果不理解其各接口和继承关系,则阅读始终是一头雾水。 Java IO 包,我认为是对继承和接口运用得最优雅的案例。如果你将来做架构师,你一定会经常和它打交道,如项目中部署和配置相关的核心类开发。 读这些源码时,只需要读懂一些核心类即可,如和ArrayList类似的二三十个类,对于每一个类,也不一定要每个方法都读懂。像String有些方法已经到虚拟机层了(native方法),如hashCode方法。 当然,如果有兴趣,可以对照看看JRockit的源码,同一套API,两种实现,很有意思的。 如果你再想钻的话,不妨看看针对虚拟机的那套代码,如System ClassLoader的原理,它不在JDK包里,JDK是基于它的。JDK的源码Zip包只有10来M,它像是有50来M,Sun公司有下载的,不过很隐秘。我曾经为自己找到、读过它很兴奋了一阵。 Java Web开发源码 在阅读Tomcat等源码前,一定要有一定的积累。我的切实体会,也可以说是比较好的阶梯是: 1、写过一些Servlet和JSP代码。注意,不是用什么Struts,它是很难接触到Servlet精髓的。用好Struts只是皮毛。 2、看过《Servlet和JSP核心编程》 3、看过Sun公司的Servlet规范 4、看过http协议的rfc,debug过http的数据包 如果有以上基础,我也不建议你开始读Tomcat源码。我建议你在阅读Tomcat源码前,读过Struts源码,Struts源码比WebWork要简单得多。这个框架是可以100%读懂的,至少WebWork我没有100%读懂。我曾经因为读懂了Struts源码,自己写过一个Web框架。 当然,在读Struts框架前,最好看过它的MailReader等demo,非常非常不错的。 如果你做过一些Struts项目,那么读它时就更得心应手了。 在读Struts前,建议看看mvnforum的源码,它部分实现了Struts的功能,虽然这个BBS做得不敢恭维。 如果你读过Struts,再开始考虑Tomcat源码阅读吧。 不过,我还是不建议直接读它,先读读onJava网站上的系列文章《How Tomcat Works》吧,它才是Tomcat的最最简易版。它告诉你HttpServletRequest如何在容器内部实现的,Tomcat如何通过Socket来接受外面的请求,你的Servlet代码如何被Tomcat容器调用的(回调)。 学习JSP,一定要研读容器将JSP编译后的Servlet源码。 为什么我总是称呼Tomcat为容器,而不是服务器?这个疑问留给大家吧。 如果你一定要读Tomcat,那么就读Jetty吧。至少它是嵌入式,可以直接在eclispe里面设置断点debug。虽然Tomcat也有嵌入式版本。 Java数据库源码阅读 我建议,先读读Sun的JDBC规范。 我想你一定写过JDBC的代码,那么这时候可以开始阅读源码了。 如果了解JDBC规范(接口),那么它的实现,JDBC Driver就一定要开始了解,我的建议是,读读mysql的jdbc驱动,因为它开源、设计优雅。在读mysql的JDBC驱动源码时,建议看看mysql的内幕,官方正好有本书,《Mysql Internals》,我五年前读过一部分。比如你可以知道mysql的JDBC驱动,如何通过socket数据包(connect、query),给这个C++开发的mysql服务器交互的。 通过上面的阅读,你可以知道,你的业务代码、JDBC规范、JDBC驱动、以及数据库,它们是如何一起协作的。 如果你了解这些内幕,那么你再学习Hibernate、iBatis等持久化框架时,就会得心应手的。 读过JDBC驱动,那么下一步一定要读读数据库了。而正好有一个强大的数据库是用Java开发的,Hsqldb。它是嵌入式数据库,比如用在桌面客户端软件里,如Mail Client。 我四年前为此写过一篇小文,就不介绍了。 Java通讯及客户端软件 我强烈推荐即时通讯软件wildfire和Spark。你可以把wildfire理解成MSN服务器,Spark理解成MSN客户端。它们是通过XMPP协议通讯的。 我曾经在一个项目中,定制过Spark,当然也包括服务端的一些改动。所以它们的源码我都读过。 我之所以推荐它们。是因为: 1、XMPP够轻量级,好理解 2、学习Socket通讯实现,特别是C/S架构设计 3、模块化设计。它们都是基于module的,你既可以了解模块化架构,还可以了解模块化的技术支撑:Java虚拟机的ClassLoader的应用场景。 4、Event Driven架构。虽然GUI都是Event驱动的,但Spark的设计尤其优雅 这么说吧,读它们的源码,你会为做一名程序员而自豪,因为无论是他们的架构设计还是代码,都太漂亮了。 Java企业级应用 当然了,就是Hibernate、Spring这类框架。 在读Spring源码前,一定要先看看Rod Johnson写的那边《J2EE Design and Development》,它是Spring的设计思路。注意,不是中文版,中文版完全被糟蹋了。 在读Hibernate源码前,一定要读读Gavin King写的那本《Hibernate in Action》,同时,应该再读读Martin Fowler写的《企业应用架构模式》,它专门谈到持久化框架的设计思路。当你觉得这两本书读透了,再去看它们源码吧。 而且,在读源码前,你会发现它们用到很多第三方Jar包,二三十个,你最好把那些Jar包先一个个搞明白。 说到企业应用,一定会涉及到工作流。我当年读过jBPM的源码,网上有介绍jBPM内核的文章(银狐)。我感觉它的内核也就两千行,不要害怕。我曾经阅读jBPM源码的博客。 当然了,读工作流源码,前提是一定要对其理论模型有深入的了解,以及写过一些demo、或做过一些项目。 我上面介绍的这些,是我自己读过的,也适合一般人阅读。 我也读过一些非Java源码,感觉不错,也推荐给大家: dojo源码 它的架构设计得很优雅,仿Java的import和extends。但实际应用起来一塌糊涂。我们当年基于这个开发了自己的框架,不过我不是主力。 Flex源码 Flex 08年底刚刚开源后,我就用它做过一个中型项目,应该说是国内的技术先行者。当时市面没有有深度的书,也没有开源项目。我纯粹是看Flex的Help文档和源码,把项目搞定的。两三年过去了,现在觉得系统设计得蛮优雅的。 好了,先介绍到这里。 上面说到的这些Java源码,我都是4年前、甚至更早读过的。技术变化这么快,像互联网的高速发展,催生很多高性能、分布式数据库,如hadoop。我一看,发现自己已经落伍了。 这几年,想必已经出现了很多优秀的框架,大家不妨分享出来。 题后记 这三年,一直在创业,主要是技术应用,偏业务,源码阅读不多,但很欣赏那些专注于技术的狂热者。 现暂别创业,进入一家电子商务公司,负责其B2C网站的改版和运营。 (广告)如果你对技术、对高负载的大型B2C开发也情有独钟,不妨看看这里。 分享到:

电子商务网站,前后台是否该分离? | 开发人员的薪水,是否要和销售业绩挂钩?

评论

11 楼 zwchen 2012-02-26

yangliu9420 写道

前辈,您好!看到您读过那么多的源代码,真的是发自内心的崇拜,你的精力好旺盛,你对技术真的好执着! 现在这几天准备开始读读spring的源码。但是把源代码导入Eclipse并运行起来以后,在spring启动的入口打了个断点,可是总是进入不了这个断点。在网上查了很多的资料,有的说是要编译一下源代码,我试过了,也不行,这个问题困扰了好几天。不知道您刚开始的时候是怎么阅读的? 用的什么工具? 麻烦您指点一下,多谢! eclipse下调试Spring,确实可以的。但到反射代码后就难了。 BTW:我好几年没读过源码了。 10 楼 yangliu9420 2012-02-20

前辈,您好!看到您读过那么多的源代码,真的是发自内心的崇拜,你的精力好旺盛,你对技术真的好执着! 现在这几天准备开始读读spring的源码。但是把源代码导入Eclipse并运行起来以后,在spring启动的入口打了个断点,可是总是进入不了这个断点。在网上查了很多的资料,有的说是要编译一下源代码,我试过了,也不行,这个问题困扰了好几天。不知道您刚开始的时候是怎么阅读的? 用的什么工具? 麻烦您指点一下,多谢!

9 楼 zwchen 2011-10-16

zwchen 写道

107192468a 写道

zwchen 写道

SqlEye 写道

Sun公司有下载的,不过很隐秘。我曾经为自己找到、读过它很兴奋了一阵。 还有吗?给我一份. 我是JDK1.5版的,zip包有50多M,你先自己找找吧,没找到就站内联系,我QQ给你。 也请给我一份吧,找过了,也许是能力不强,没找到 站内信告诉我QQ哦。 就是这玩意:http://luoyahu.iteye.com/blog/382084 源码里面的readme:http://java.sun.com/j2se/1.5.0/scsl/build.html 白皮书:http://java.sun.com/products/hotspot/docs/whitepaper/Java_HotSpot_WP_Final_4_30_01.html 也可以下载这个:[url]http://download.java.net/openjdk/jdk7/promoted/b147/openjdk-7-fcs-src-b147-27_jun_2011.zip [/url] 8 楼 zwchen 2011-10-14

107192468a 写道

zwchen 写道

SqlEye 写道

Sun公司有下载的,不过很隐秘。我曾经为自己找到、读过它很兴奋了一阵。 还有吗?给我一份. 我是JDK1.5版的,zip包有50多M,你先自己找找吧,没找到就站内联系,我QQ给你。 也请给我一份吧,找过了,也许是能力不强,没找到 站内信告诉我QQ哦。

7 楼 107192468a 2011-10-13

zwchen 写道

SqlEye 写道

Sun公司有下载的,不过很隐秘。我曾经为自己找到、读过它很兴奋了一阵。 还有吗?给我一份. 我是JDK1.5版的,zip包有50多M,你先自己找找吧,没找到就站内联系,我QQ给你。 也请给我一份吧,找过了,也许是能力不强,没找到 6 楼 zwchen 2011-10-12

SqlEye 写道

Sun公司有下载的,不过很隐秘。我曾经为自己找到、读过它很兴奋了一阵。 还有吗?给我一份. 我是JDK1.5版的,zip包有50多M,你先自己找找吧,没找到就站内联系,我QQ给你。

5 楼 SqlEye 2011-10-11

Sun公司有下载的,不过很隐秘。我曾经为自己找到、读过它很兴奋了一阵。 还有吗?给我一份. 4 楼 Mybeautiful 2011-10-10

改天读读 “wildfire和Spark”。

3 楼 adzshai 2011-09-06

楼主的文章给我有很大的启示作用 2 楼 xiaoyu1985ban 2011-08-23

hnzhoujunmei 写道

楼主很厉害,请问是不是北邮的啊,我在北邮人论坛上也看到过该文章 楼主是南开的,非科班出身。。。

1 楼 hnzhoujunmei 2011-08-23

楼主很厉害,请问是不是北邮的啊,我在北邮人论坛上也看到过该文章

发表评论

您还没有登录,请您登录后再发表评论

zwchen的博客

zwchen

  • 浏览: 411241 次
  • 性别: Icon_minigender_1
  • 来自: 成都
  • 最近访客 更多访客>>

dylinshi126的博客

dylinshi126

kglgmlldd的博客

kglgmlldd frfgzzq的博客

frfgzzq

sungang_1120的博客

sungang_1120

文章分类

存档分类

最新评论

读HSQLDB的源码想到的

Posted on

读HSQLDB的源码想到的

首页 资讯 精华 论坛 问答 博客 专栏 群组 更多 ▼

招聘 搜索

您还未登录 ! 登录 注册

zwchen的博客

读HSQLDB的源码想到的 **

博客分类:

昨天在论坛看到一篇讨论嵌入式数据库HSQLDB(http://www.iteye.com/topic/79802)的帖子,想到自己曾经读过部分它的源码,有一种对某些技术豁然开朗的感觉。所以,也希望和朋友们一起分享,大家有什么好的感受,不如也分享一下吧。下面是我对那个帖子的冗余回复,我觉得有必要专门发一篇帖子重复一下: 说点题外话,建议大家读读HSQLDB的源码,特别是jdbc driver(org/hsqldb/jdbc包)那部分,写得清晰易懂。读了它的部分源码,我自认为对下面一些问题理解深入了: 1、JDBC规范和JDBC实现的关系:怎么自己去设计一个规范,一种架构?我是否自己可以为某种数据设计jdbc driver,如何设计?想想php里面各数据库的函数库各自为政对程序移植性的影响,就知道jdbc规范有多么重要了。 2、JDBC协议:JDBC是基于socket之上的,数据包格式(org.hsqldb.Result)(mysql数据包格式公开了)?那么JMS数据包呢?其实,这也可以延伸到分布式协议的设计原理,如RMI、SOAP。其实,这些数据包格式和JSON、YAML这些message格式没有本质的区别,只不过应用范围不一样。任何分布式协议,肯定有一种message格式。 3、JDBC over HTTP:这样我们对RMI over IIOP, soap over HTTP, http tunnel原理有更深入的理解。 4、什么是long connection(jdbc的socket),什么是short connection(http),具体怎么实现? 3和4这些在HSQLDB的org.hsqldb.HTTPClientConnection类里有实现。 5、Java客户端和服务器端的通讯实现:jdbc driver就可以认为是一个java客户端类库。那么JMS client呢?还有,像mysql有各种语言的driver,原理是什么。 6、sql这种command、描述型语言究竟在数据库里面是个什么地位:sql是怎么传入jdbc driver,最终和database交互的?我们是否可以设计出另外一种command,形成一种行业标准,它在服务器和客户端怎么实现的。 以上我的表达可能有些晦涩,我只想表达一点:大家有兴趣就多读读经典的源码,扩展一下自己的设计思路。可能很多人象我一样,总有忙不完的项目,那么抽几个小时就够了,不必深入。 有很多技术我们理解总是很模糊,当你深入到内部,忽然发现原来就这么回事。我们总觉得IoC很神秘,其实最简单的IoC容器,也许一个HashMap就够了。 分享到:

也说说项目成败、企业信息化 | Web Services开发体会和项目教训

评论

15 楼 zwchen 2011-08-20

realdah 写道

楼主除了java用过别的编程语言吗?是否熟悉TCP/IP等协议? 挺奇怪为啥有如此大的感想.. 我曾经啃过那本《TCP/IP技术内幕》,也用sniffer探测过TCP、FTP等数据包,开发过BT服务器,但具体到语言实现的层面,还是看这些源码才恍然大悟的。 14 楼 realdah 2007-11-02

楼主除了java用过别的编程语言吗?是否熟悉TCP/IP等协议? 挺奇怪为啥有如此大的感想..

13 楼 zwchen 2007-11-02

javachs 写道

我看了你关于hsqldb的帖子,讲到hsqldb源码里有关于数据库long connection和short connection的实现,我看了下不太明白,数据库的long connection如何保持连接一直不太明白,能讲一下关于数据库长连接吗? 1、数据库的connection保持也就是TCP的连接保持,也就是TCP里面的Keepalive选项:在Socket编程里面的Keepalive。在Java的Socket类中就专门说到SO_KEEPALIVE:http://download.java.net/jdk7/docs/api/java/net/SocketOptions.html, 顺便说一下,在TCP通信期间,是靠sequence number来维持的,它们由initial sequence number (ISN)递增,它是keepAlive的前提。 2、在hsqldb里面,是默认用Java socket的,自己本身并没有去实现long connection,也就是说这个连接默认是2小时,反正我也没有找到这个选项设置的地方。在其HTTPClientConnection里面,倒是每次execute sql后就close了,遵从http协议的short connection实现。附带说一下,在hsqldb里面,是通过sessionID来标识客户端的((这个sessionID可以保证认证后的安全sql),就如同http里面的cookie中的JSESSIONID。 3、我以前做过即时通讯的开发,在OpenFire里面,keepAlive是自己实现的,也就是server端有个demo线程,默认每60s给所有客户端发送一个检测包,如org.jivesoftware.openfire.net包下的SocketConnection的checkHealth() 注释: /// / Returns true if the socket was closed due to a bad health. The socket is considered to / be in a bad state if a thread has been writing for a while and the write operation has / not finished in a long time or when the client has not sent a heartbeat for a long time. / In any of both cases the socket will be closed. / / @return true if the socket was closed due to a bad health.s /*/ 顺便说一下,现在的ajax的push技术(comet)(譬如web版的gtalk、msn),也主要利用http的keepalive选项,还有个专门的协议扩展:http://www.xmpp.org/extensions/xep-0124.html 如果你有兴趣,可以看看《TCP/IP Illustrated, Volume 1: The Protocols》的Chapter 23. TCP Keepalive Timer,文中说到Keepalive是TCP里面的一个可选项,一般由application层实现,并且给出了理由。 12 楼 lihy70 2007-07-02

leebai 写道

楼主揭示出了学习编程的正正之道! 往上看,多是浮躁的、流行一时的东西;往下看,基本上都是沉淀的精华。 作为真正的开发者,研究和学习各种服务器和JDK的原代码,比学习各种框架、ORMaping、J2EE乱七八糟的API要有意义得多。 icefire 写道

有时候觉得,迷惑的时候,读源码比看API来得快! 写源代码比看源代码容易,有时候

  • --接上一句,典型的程序员。* 读一辈子代码也不一定能看出个微积分,还是看高数吧 不知道那位虾客能抽出一段代码来摆个擂台?

11 楼 hideto 2007-07-02

icefire 写道

有时候觉得,迷惑的时候,读源码比看API来得快! hand! 10 楼 lando 2007-07-02

感同身受!

9 楼 lordhong 2007-05-17

潜力精华贴...拜读...收藏... 8 楼 icefire 2007-05-17

有时候觉得,迷惑的时候,读源码比看API来得快!

7 楼 leebai 2007-05-17

楼主揭示出了学习编程的正正之道! 往上看,多是浮躁的、流行一时的东西;往下看,基本上都是沉淀的精华。 作为真正的开发者,研究和学习各种服务器和JDK的原代码,比学习各种框架、ORMaping、J2EE乱七八糟的API要有意义得多。 6 楼 shaucle 2007-05-17

写得很不错 很多源码看了后阔然开朗. 而且很有意思,只是有的要多看几遍. 推荐一些较好的源码(有的正在看) Seam Web Work Hibernate(8) Pico Container Lucene TreeCache Spring(12) Hsqldb db4o jboss(N) geronimo activeMQ Compass Equinox jboss-esb/mule Asm Jetty Terracotta Jencks

5 楼 yatwql 2007-05-17

粗略扫过一些hsqldb和h2database的代码,觉得h2database写得更干净一些 4 楼 dennis_zane 2007-05-17

zwchen 写道

dennis_zane 写道

我最近在读hibernate2.1的源码,spring的源码读了核心的IOC和AOP后就没去看了,听了你的介绍,也把HSQLDB列入计划:) 按照您的意见,最好是与jdbc规范一起解读? jdbc只是告诉厂商去实现那些api,如Statement就够了,这个学的东西还是有限,因为sun并没有告诉我们怎么去实现一个driver,也就是jdbc api接口的实现。 不过,我觉得对照servlet规范,看一些最简单的servlet容器实现,如 [url]http://www.onjava.com/pub/a/onjava/2003/05/14/java_webserver.html [/url]
[url]http://tomcat.apache.org/tomcat-5.5-doc/architecture/index.html [/url] 可能收获更大。 看jdbc驱动,先去看这本书吧,mysql的实现,特别是关于MySQL Client/Server Protocol那章:http://forge.mysql.com/wiki/MySQL_Internals 这本书看来难度相当大。对照serlvet规范,读简单的servlet容器的实现是很好的建议,谢谢。

3 楼 zwchen 2007-05-17

dennis_zane 写道

我最近在读hibernate2.1的源码,spring的源码读了核心的IOC和AOP后就没去看了,听了你的介绍,也把HSQLDB列入计划:) 按照您的意见,最好是与jdbc规范一起解读? jdbc只是告诉厂商去实现那些api,如Statement就够了,这个学的东西还是有限,因为sun并没有告诉我们怎么去实现一个driver,也就是jdbc api接口的实现。 不过,我觉得对照servlet规范,看一些最简单的servlet容器实现,如 [url]http://www.onjava.com/pub/a/onjava/2003/05/14/java_webserver.html [/url]
[url]http://tomcat.apache.org/tomcat-5.5-doc/architecture/index.html [/url] 可能收获更大。 看jdbc驱动,先去看这本书吧,mysql的实现,特别是关于MySQL Client/Server Protocol那章:http://forge.mysql.com/wiki/MySQL_Internals 2 楼 zwchen 2007-05-17

顺便说一下,现在我们项目组正在用Jive公司的Openfire+spark做即时通讯方案,其实,研究那种XMPP(Jabber)协议,和jdbc、JMS并没有什么本质的区别。想想曾经看过部分Tomcat的源码,觉得也差不多,只是它走标准的http,也就是发http数据包让服务器处理,而即时通讯客户端,如gtalk,是发XMPP数据包给服务器处理。你看即时通讯的应用和我们的web程序有多少相似之处:处理库存查询:http://www.activesoft.com.cn/pipeintrokc.asp 。网上那些msn、QQ机器人也就是这样的模式。

1 楼 dennis_zane 2007-05-17

我最近在读hibernate2.1的源码,spring的源码读了核心的IOC和AOP后就没去看了,听了你的介绍,也把HSQLDB列入计划:) 按照您的意见,最好是与jdbc规范一起解读?

发表评论

您还没有登录,请您登录后再发表评论

zwchen的博客

zwchen

  • 浏览: 411244 次
  • 性别: Icon_minigender_1
  • 来自: 成都
  • 最近访客 更多访客>>

dylinshi126的博客

dylinshi126

kglgmlldd的博客

kglgmlldd frfgzzq的博客

frfgzzq

sungang_1120的博客

sungang_1120

文章分类

存档分类

最新评论