haichun 的个人资料面朝大海-春暖花开照片日志列表更多 工具 帮助

日志


4月23日

小黑

新入手thinkpad r400,感觉还行,尤其键盘很舒服。周末去加条内存,就完美了。
12月5日

IT从业人员必看的10个论坛

IT技术开发综合类
  
http://community.csdn.net/
  适合人群:只适合软件开发者
  技术开发最全面的论坛,里面可以遇到很多牛人,版面也很全,什么J2EE,.NET啊,该有的全上,在这里基本上可以提出任何问题,人气也是最旺的,不过一般提出的意见都有正方两面的,所以最终解决问题,还是靠自己。
  评价:专业,很牛逼,就是速度慢。
  
  
http://www.52rd.com/bbs
  适合人群:研发人员
  我爱研发网,顾名思义,是针对R&D研发人员的,目前在射频,通信,手机研发是国内第一的,牛人不少,问题讨论的很彻底。论坛制度很人性化,设有资料交换区,有超大量有价值的资料。
  评价:强,速度还可以;
  
  
http://bbs.chinaunix.net/forum/
  适合人员:系统工程师
  这里的特色就是操作系统方面在业界是最著名的,牛人不少,目前,在数据库,网络方面也颇有建树,当然灌水方面也不赖,呵呵,属于温柔性
  评价:强,速度还可以
  
  
http://bbs.chinajavaworld.com/
  适合人员:JAVA开发
  JAVA方面非常综合的论坛了,牛人也很多,是一个难得的JAVA论坛,涉及你想象的关于JAVA目前任何技术。
  评论:强,速度还可以。
  电子工程师类
  
http://21icbbs.com/
  适合人员:电子工程师
  人气不错,覆盖面比较广,老牌了,就是有点和时代脱节了,无论是设计上还是内容上
  评论:强,速度还可以
  http://www.eetchina.com/DG/eec_dg_home.htm
  适合人员:电子工程师
  环球资源的子站,页面设计很大气,技术文章也比较及时和权威,是个难得的好网
  评论:强,速度还可以
  
  网络工程类
  
www.1000bbs.com
  适合人员:布线/网络工程师
  人气很旺,特色是版面比较紧凑,综合布线这一块很权威,很窄很专,时间非常久了,颜色比较明快,就是太低端了,
  评价:不错,速度一般
  
  
http://www.sharecenter.net/
  适合人员:网络工程师
  之所以我喜欢是这个网站很多做CISCO工程都知道,也是别人介绍我去的,时间非常久了,颜色比较暗谈,属于忧郁型。
  评价:不错,速度也还可以
  
  IT营销管理类
  
http://www.topren.net/forum/index.php
  适合人员:企业策划,CIO
  业界知名的知识站点“唐人社区”,信息化管理顾问可以去看看,人也很多,可惜,都是下载,实质性内容需要改观,我记得是非常专业的网站。
  评价:不错,速度也还可以。
  
  IT管理综合类
  
http://club.amteam.org/
  适合人群:大多数,
  评论类比较多,基本上在其他媒体上看到的评论,这里都会有,要想了解IT发展的情况,就来这里看看。
  评价:很好,休闲工作都可以看。
11月21日

盘点2005年度中国软件风云 《程序员》杂志揭晓榜单 <上一篇

科泰世纪 和欣操作系统
涂鸦软件 3D游戏引擎Origo Engine 1.1.8-Beta
金山 WPS Office 2005
拼音加加 V4.0正式版
百度 “知道”
点击科技 竟开协同之星
易软开源 Bugfree 1.0
浪潮 楼上软件开发平台
东方通  BOA体系架构
普元软件  EOS 5.0
中创软件 Infor中间件
锐道 Dorado V4.o For Java
金富瑞 UCML 2.0 For ASP .NET
红工厂 Liberate JDO 1.3
金蝶软件 金蝶BOS
华罗庚软件基地 《世纪桥》平台
迈思信息技术 Magic C++ V3.0
思维加速 业务基础平台
达梦 DM4数据库

10 佳技术网站:
Csdn技术社区(http://community.cadn.net)
IBM developerworks中国(http://www-128.ibm.com/developerworks/cn)
ITPub论坛(http://www.itpub.net)
Java视线(http://www.javaeye.com)
UMLChina(http://www.umlchina.com)
Unix论坛(http://www.chinaunix.net)
博客园(http://www.cnblogs.com)
大富翁编程网站(http://www.delphibbs.com)
灰狐动力(http://www.huihoo.com)
中国Linux公社(http://www.liuuxfans.org)

10佳技术Blog :
车东(http://www.chedong .com/blog)
DBA notes(http://www.dbanotes.net)
花钱的年华(http://blog.csdn.net.calvinxiu)
Limodou的学习记录(http://blog.donnews.com/limdou)
李维(http://spaces.msn.com/members/GordonLiWei)
旁观者(http://blog.csdn.net/zhengyun_ustc)
思归(http://blog.joycode.com/saucer)
透明思考(http://gigix.blogdriver.com)
云风(http://bolg.codingnow.com)
曾登高(http://bolg.csdn.net/zdg)

10佳开发类图书:
Bruce Eckel的《Java编程思想》
Bruce Eckel《C++编程思想》
Simon Robinson的《C#高级编程》
Erich Gamma的《设计模式——可复用面向对象软件的基础》
邹建的《中文版SOL Server 2000开发与管理应用实例》
于渊的《自己动手写操作系统》
李维的《面对对象开发实践之路》
Stanley B.Lippman的《C++ Primer》
盖国强等的《Oracle数据库性能优化》

10月30日

J2EE之类的概念

转载自 http://www.chinaunix.net   原作者:quaine  发表于:2003-08-26 12:20:14

jdk是java devolop kit -- java开发包
j2sdk是java 2 software devolop kit -- java2软件开发包

实际上jdk和j2sdk是基本同样的。
j2sdk呢有几个版本对应于java2的几个版本,其中j2ee需要用到开发工具就是J2eesdk了,只不过大部分应用服务器(weblogic
jboss等)都内置了j2eesdk。

当然了,j2sdk标准版是基础,所以要安装先;j2eesdk因为是企业应用嘛,所以是注册后才能下载

至于jre是java runtime envionment --
java运行环境,jdk中包括了它,但是对于不需要开发只是运行的用户是可以只单独安装jre的,所以sun提供了jre的下载。

JDK和J2SDk:

J2SDk包含了Java Development kit(JDK)、Java Runtime Environment(JR
E)和Java Plug-in。原先sun的JAVA软件开发工具包是JDK,现在就称为J2SDk了。

JRE和plug-in:JRE包含了java plug-in。

sun的java网站上就单独提供J2SDK和JRE各种版本的下载,J2SDk是提供给开发JAVA程序所
用,应用程序用户是不需要开发工具的。而JRE顾名思义是JAVA程序要运行所需要的环境
,所谓跨平台就是要各种平台都有一个中间代理,那就是JRE。一般采用JAVA技术开发出
的软件都得带这个,所以sun就单独提供了JRE安装文件,以供JAVA应用程序发布时所用。

Swing和JFC(Java Foundation Class)JFC是早期Sun对JDK的功能扩展,不是Java的公共
规范,Swing是其中的一项用户界面扩展技术。最新的JAVA2技术则包含了JFC技术,不需
要再扩展了。说白了,其实就是Sun将JFC纳入了JAVA核心类库。原先要用到JFC技术,用
户必须在原有的JRE前提下再添加JFC,现在少了一步,只需JRE了。
10月27日

Java开发环境的过去、现在和将来

1995年3月23日,San Jose Mercury News登出一篇题为“Why Sun thinks Hot Java will give you a lift”的文章,在那篇文章里预言Java技术将是下一个重大事件,这个预言现在看来并不仅仅是商家的宣传伎俩,虽然文章是当时Sun的公关经理 Lisa Poulson安排撰写的。从世人知道Java那一刻起到现在,算起来已经过去整整十年,回顾过去的十年值得总结的东西有许多,但在这里笔者只想就Java 开发环境谈些个人的想法与朋友们交流一下。

  现在的软件开发人员在整个软件的开发生命周期里,也许会根据需要使用各式各样的开发工具来完成相对复杂的开发任务,而在几十年以前,人们还只是使用文本编辑器、编译器和Debugger进行开发,对于这个阶段的开发环境人们称之为CLEs(Command Line Environments)。 而当人们发现如果将那些单独分开的开发工具集成起来就可以有效的提高开发效率时,IDEs(Integrated Development Environments)就出现了。Java的出现尽管只有十年,但其开发环境也大至经历了从CLEs到IDEs再到XDEs这三个阶段,现在即将进入CDEs阶段。在上述Java开发环境发展过程中,有许多值得我们大家关注的地方。

  Java开发环境的历史回顾

  纵观过去十年Java开发环境的发展,大致可以粗略的划分为如下几个阶段:

  ●  1995,命令行开发环境CLEs

  ●  1996-2000,集成开发环境IDEs

  ●  2001-2004,扩展开发环境XDEs

  ●  2005至今,协同开发环境CDEs

  1995年,不平凡的一年,这一年Java 获得了成功。可令人尴尬的是在1995年并没有一个令人满意的Java开发环境,开发人员在进行Java编程时,大多使用文本编辑器编辑源程序,然后再使用命令行的方式进行编译处理。那时的Java开发环境还处于CLEs时代,开发效率非常低,这预示着在Java开发工具上会有一番激烈的竞争。

  有人称1996年为互联网年,有人却称之为Java年,还有人称之为Web开发年,但不论如何称呼1996年,它都反映了一个事实:Bill Joy将Java与互联网相结合的策略取得了成功。这一年的9月Sun推出了其Java开发环境-Java WorkShop,这是一款基于浏览器的Java开发工具,但由于当时 Java在许多方面还不成熟,所以实际上Java WorkShop并不成功,同年发布的Symantec Visual Cafe由于还是采用C/C++语言进行开发,所以性能与成熟度上就比WorkShop好得多。提到Visual Cafe就不能不提Eugene Wang,因为Eugene Wang常常是与计算机间谍这个词同时出现的人物,有人甚至讲当时Symantec的老板Gordon Eubanks与Eugene Wang签约时,也同时签下了监狱里的一个单元。Visual Cafe就是由Eugene Wang进行主要策划的,它是在同一年发布的Java开发环境中,唯一解决了与数据库连接问题的开发环境,带有一套可以与数据库相连接的组件,无需太多编程使用拖拽的方式就可完成大部分工作,这一优点使得Visual Cafe受到了Java开发人员的欢迎。这一年IBM收购了O
TI公司,从而得到了Dave Thomas的弟子John Duimovich、Dave Thomson、Mike Wilson等一大批软件精英,这之中还包括“生活在技术刀锋上的开发者”Brian Barry。

  1997年,由于微软垄断案,使得微软在Java开发环境上的努力受到了限制,Visual Cafe由于界面直观易用,可以很容易地连接各种数据源等功能再次受到开发人员的欢迎。这一年IBM发布VisualAge for Java。VisualAge for Java是面向代码库的开发环境,它提供代码库和项目管理以便于开发团队在 C/S环境下进行项目开发。但由于大多数Java开发人员比较熟悉面向文件的开发环境,还不太习惯面向代码库的开发,再加上VisalAge for Java对系统资源的要求比较高等因素,使得VisualAge for Java一开始未被Java开发人员所认可。

  1998年至2000年比较成功的Java开发环境是JBuilder,这是由于Borland较好的把握住 J2SE、
J2EE和J2ME发布后,Java技术升级的时机,全面支持Java1.1和Java1.2开发平台,它还提供了多种工具方便用户从旧的平台迁移到新的Java平台。JBuilder本身80%是基于JDK1.2进行开发的,它支持JavaBeans, Enterprise JavaBeans, JDBC等方面的应用开发,可以连接多种关系数据库。为支持分布式应用开发,JBuilder还集成了 VisiBroker ORB、JSP server、数据库和EJB AppServer,并提供Open Tools API便于第三方工具集成。上述种种的优点使得JBuilder一举超越Visual Cafe,成为当时最受欢迎的Java开发环境。在众多Java开发环境中,1999年IBM发布的VisualAge for Java Micro Edition是比较有特色的开发环境,它是由Erich Gamma和与Erich Gamma有“焦不离孟、孟不离焦”之称的John Wiegand共同进行设计的,采用了Java 扩展机制,并集成了JUnit测试框架,其当时所采用的架构深深地影响了后来Eclipse1.0所采用的架构。同时,通过VisualAge for Java Micro Edition的开发,那些来自“未来世界”(Smalltalk们总认为他们来自计算机的未来世界)的软件精英们,全面彻底地对Java技术进行了评估,得出了许多结论性的东西,这之中包括现在闹得沸沸扬扬的Swing和SWT对比。此外,Sun将其收购的NetBeans变成了开源的Java IDE也是一件不大不小的事情。

  纵观1996年至2000年这五年时间里,随着Java及其相关开发应用的发展,Java开发环境也不断的完善,从CLEs进入到IDEs阶段。为了提高Java开发人员的开发效率,Java开发环境主要从两个方面进行改进与提高。一方面是提高集成在Java IDEs当中开发工具的性能和易用性,另一方面是将Java开发环境尽可能的覆盖到整个软件的开发生命周期。随着基于WEB,采用N-层结构的应用开发成为Java开发人员主要从事的开发任务,Java开发环境需要支持越来越多的技术,比如:XML、JSP、EJB和CORBA等,这就造成了Java IDEs的规模变得越来越大,许多Java开发环境都集成了数据库、JSP Server和AppServer,软件的研究人员将上述IDEs不断膨胀的现象称为“IDEs大爆炸”。

  “IDEs大爆炸”现象发生以后,有关Java开发环境是走少而精的发展方向,还是走大而全的发展方向就成了广大Java开发人员关注的问题。2001年Java开发人员达到了200万,成为每个软件供应商都无法忽视的力量,这一年JetBrains推出了Java开发环境少而精的代表: IntelliJ IDEA。 IntelliJ IDEA明确的表示只做最好的Java代码编辑器,不做什么文件都可以编写的编辑器。它关注Java开发人员的工作实际并将这些工作进行了优化。由于减掉了一些可有可无的工具,所以价格上相对合理公道。当年IntelliJ IDEA击败JBuilder成为最受Java开发人员欢迎的Java开发环境,不过2002年随着JBuilder将大而全的功力再提升一步,将UML建模工具、JUnit测试框架以及
Apache Struts等开发工具集成进来,大而全的发展方向又一次受到Java开发人员追捧。最全还是最好似乎使Java开发人员在选择Java开发环境时处于两难状况,但实际上当Eclipse 1.0发布时,这个问题已经得到了初步的解决,最好和最全是可以兼顾的。

  Eclipse的出现不是从天上掉下来的,也不是某个天才拍脑袋想出来的,它是一群软件精英们集体智慧的结果。早在1998年IBM就打算开发新一代的工具平台以便将它现有的各种开发工具统一起来,并减少开发各种工具时重复的劳动,同时希望在新的平台上建立新的Java开发环境。经过一段时间的准备, IBM开始建立起一个开发团队,人员构成主要来自VisualAge for Java Micro Edition和VisualAge for Java两个项目的开发人员,选择的标准是过去10年至少开发过5到6个IDE。此外,IBM还联合了9家公司共同成立了一个开源组织Eclipse基金会,将Eclipse提供给开发人员使用,并在开源社区的帮助下进一步完善Eclipse本身。Eclipse在最初设计时,插件模型是静态的,不能实现插件的即插即用功能,即便是大受欢迎的Eclipse 2.1也还是静态的。所以到2004年发布Eclipse 3.0时,Eclipse进行了重大改进,采用OSGi的插件模型,初步实现了插件的即插即用功能,至此一个完美的、可扩展的开发环境展现在Java开发者面前,这时Java开发人员已经达到300万。

  Java开发环境的现状

  2004年Eclipse 3.0的发布极大刺激了Eclipse用户的增长,经过一年以后,Java开发人员现在使用Java开发环境的状况是如何的呢?看了下面的表格里的数据也许可以了解一个大致的状况。

  首先需要指明的是上述的数据并不是当前Java用户使用Java开发环境的准确反映,但我们可以从中了解一个大致的状况。现在的Java环境可以分为三个集团,第一集团是Eclispe它大约占据1/3的份额,第二集团是 IntelliJ IDEA、NetBeans 和JBuilder占据另外1/3的份额,相互之间旗鼓相当,第三集团是以JDeveloper和WSAD为代表的十几种Java开发环境占据剩下的 1/3份额,但每种开发环境占总份额的比重不超过5%。我们考察Eclipse、intelliJ IDEA、NetBeans 和JBuilder这些主流开发环境,可以发觉它们有一个共同的特点那就是可扩展,尽管在实现手段上各有不同。这就是为什么称现在的Java开发环境为XDEs(eXtended Development Environments)的原因,IDEs已经死亡了4年,专业的开发人员需要了解这个事实,因为XDEs也快死了。

  由于市场的压力,一个软件企业不仅要提高开发人员个体的工作效率,还要提高整个开发团队以及整个企业的开发效率,但在现有的Java开发环境XDEs下无法完全做到这些,所以新一代开发环境CDEs (Collaborative Development Environments)就产生。Grady Booch和Alan W. Brown的研究表明一个程序员一天工作时间的分配是这样的:分析占16%(从5%到40%不等), 设计占14%(从1%到40%不等),编程占16%(从0%到60%不等),测试占10%,打电话占3%,阅读占7%(电子邮件,文档,月刊和杂志),参加开发会议占10%,无关的会议占7% 。从这些数据可以发现,开发人员用于交流的时间约占工作时间的1/3,开发人员的相互交流非常重要。可是现有的主流Java开发环境一般仅将分析、设计、编程和测试等工具集成进来,却未包括用于交流的工具,这显然不合理。因此,所谓CDEs就是将用于人与人、人与团队以及团对于团队进行交流的工具集成进来的开发环境,比如,CDEs常具有发送电子邮件、进行及时通讯和屏幕分享等功能,通过实现无损耗过程的交流提高开发团队的开发效率。

  现在已经商业化的CDEs是CodeBeamer Collaborative Development Platform和CodePro AnalytiX,上述两款软件都提供Eclipse的插件,可以与Eclipse集成在一起,使Eclipse升级成为一个CDEs。大家肯定知道Borland已经宣布开发基于Eclipse的新版JBuilder-“Peloton”,Peloton就是一个CDEs(Collaborative Development Environments),当它明年上半年发布时,就意味着Java开发环境进入CDEs时代,现在Java开发环境还处于XDEs与CDEs交替的阶段。

  Java开发环境的未来

  在可以看得见的将来,Java的开发环境还会是以CDEs的形式存在。开源组织或开发工具供应商将会努力为软件的开发创建一个绝对光滑的平面 (Frictionless Surface),实现无损耗的开发过程,以提高开发效率。为了实现无损耗的开发过程,Java的开发环境将会关注以下几个方面:

  ●  起步阶段方面

  ●  协作开发方面

  ●  维护开发团队有效沟通方面

  ●  多个任务的时间协调方面

  ●  相互协商方面

  ●  资料有效性方面

  但这里必须承认未来Java开发环境是如何具体去实现无损耗的开发,还需要时间给与答案,因为现在所能采用的方法未必是最好的,比如,使用面向文件的 CVS进行协同开发就有需要改进的地方。

  总结

  罗里罗唆一大堆,归纳起来不过就是:一个目的、三种手段以及一条规律。

  一个目的:十年Java开发环境的演变,其目的就是为了提高开发效率。

  三种手段:

  ●  提高集成在Java开发环境中开发工具的性能和易用性

  ●  将Java开发环境尽可能的覆盖到整个软件的开发生命周期

  ●  集成人与人、人与团队以及团对于团队进行交流的工具

  一条规律:软件开发环境的发展过程是从CLEs到IDEs再到XDEs最后进入CDEs,这是由Grady Booch总结出来的,套在Java开发环境上也适用。

与Java相关的四十个名字--十大组织

Sun : 因为Java而永被荣光
文/孟岩

Sun是1980年代初期由斯坦福大学三位年轻学生创立的公司。与一般人的印象不同,“SUN”的本意并不是企图剽窃天上那颗温暖的恒星的威名,而是“斯坦福大学网络”的意思。Sun在“前Java”时代就因为SPARC芯片、Solaris操作系统和“网络就是计算机”的口号而为人所知。1990年12月,Sun启动了一个看上去没什么意思的嵌入式软件项目。然而,基于C++的开发很快遇到了麻烦。一个创新型技术公司的特色立刻显示出来,一群天才不是去深入C++,而是另辟蹊径,发明了Java。这个传奇故事已经尽人皆知,但是其中所包含的精神却始终令人望空凝思。
Java的发明,使得Sun真正有机会在软件的历史天空中放射出太阳的光芒。Sun发明了Java,并且在长达十年的时间里始终走在Java大潮的最前端。Sun是Java的老家,是Java慈爱的母亲,这一切任何人都改变不了。虽然Sun似乎没能够从Java中获得应有的金钱回报,但这丝毫没有挫伤Sun对于Java的母爱,还有对于Java大潮的舍我其谁的领导气概。
所有人都迷恋富有的感觉,但是也迟早会意识到钱不是世上最宝贵的东西。这个世界并不缺少会赚钱的公司,但是能够靠着创新型技术推动整个世界进步的公司却是凤毛麟角。Sun应该感到骄傲,他们将因为Java而在历史的天空里发射出太阳的光芒。



IBM : Java经济的最大受益人
文/恶魔

Sun公司是Java的发明人,但IBM却是Java最大的受益者。是IBM抢占了利润丰厚的应用服务器市场的头把交椅,是IBM在Java技术上投入最多的金钱,拥有最大的影响力和最好的开发者社区。可以毫不夸张地说,Java使IBM的软件体系得到复兴,在某种意义上,甚至可以说,是Java创造了这种复兴。Java之后又来了Linux,这种建造在不属于自己的平台上以获得成功的理念更是变得非常有影响力。正是这种理念铸就了今天IBM “按需计算,服务为王”的王者风范。
2004年三月,IBM以Java的解放者的姿态借机向Sun发难。IBM公司负责新兴技术的副总裁史密斯在一封公开信中表示,IBM愿意与Sun合作成立一个项目,意在通过开放源代码开发模式管理Java的开发工作。
墙内开花,墙外香。面对IBM的成功,到底是谁妒嫉呢?或许去程序的社区中逛逛聊聊,明眼人是不难发现事实真相的。也许Sun应该好好向IBM学习经营之道。尽管利润额不如硬件及服务部门,但IBM软件部门的利润率是最高的——高达85%的利润率足以令人惊叹。在最近的一个季度里,IBM软件部的利润率上升了8%,其中WebSphere产品组的利润率上升了14%。
正是IBM在开源和Java上的全身心地投入又秉承开放性的原则,今日的Java才能以日进千里的速度将许多竞争对手远远抛在后面。Java 10年,IBM功不可没。



BEA : 用AppServer影响Java阵营
文/霍泰稳

十年前诞生的Java并不是一开始 就那么引人注目的,虽然用Applet也曾为互联网络带来一抹亮色,但毕竟只是Toy。在企业级应用市场上,Java一直没有什么起色,虽然Java的支持者一直在鼓吹它有着大型企业级应用的强悍功能。过高的期望与低能的产品,一时间颇让人怀疑Java的路是否已经走到了尽头?可以说是WebLogic Server的出现逐渐打消了人们的顾虑,BEA公司慧眼独具在2001年收购的这个产品将人们的目光吸引到电信、金融、政府等Java企业级应用方面,WebLogic Server以其优良的性能让人们看到Java应用广阔的未来。虽然随后在Java应用服务器方面出现了像IBM公司的WebSpere、开源软件JBoss等Java应用服务器,但WebLogic Server几乎占领世界前500强所有企业的应用服务器市场地位依然无法撼动。
Java现在已经不单纯是一个语言,从另一方面它也代表着开放与创新。很多以Java产品为基础的公司或者从事Java开发的程序员骨子里都有着开放与创新的烙印,BEA公司的发展深深地印证了这一点。与合作伙伴的密切合作向Java社区贡献产品基础源代码、加入权威开源组织参与Java标准的制定等证实着BEA的开放,而其产品从WebLogic Server一种拓展到WebLogic Platform、WebLogic Portal、WebLogic Workshop等其它领域又证实着它的创新能力。



Oracle : 早起的鸟儿有虫吃
文/孟岩
Oracle的老板拉里?艾利森是有名的混世魔王和花花公子,所以尽管他也是软件产业成功人士的代表,却绝不是程序员们心目中的英雄,程序员们毕竟不是央视《对话》节目里群众演员,没必要为了节目需要而对权贵财阀们做出一副贱骨头状。但是,任何人都不能不钦佩Oracle在技术上的前瞻性和坚决性。Oracle是1996年获得Java许可证的,紧接着就大胆地将Java作为战略性的发展方向而予以全面支持。要知道当时Java的前景并不是十分确定的,而Oracle的坚决投入,使得它在后来的Java世界中抢得一席之地。1998年9月发布的Oracle 8i为数据库用户提供了全方位的Java支持。Oracle 8i成为第一个完全整合了本地Java运行时环境的数据库,开发者用Java就可以编写Oracle的存储过程,这意味着可以仅在Oracle数据库中就完成几乎全部的应用开发。J2EE兴起后,Oracle更是有心进入开发工具市场,因而购买了JBuilder的源码,并在此基础上开发出JDeveloper。如今Oracle除了数据库稳居第一之外,在Java开发工具世界里也自成一派。这一切不能不归功于当初的眼光远大。


Apache : 开源软件的品牌保证
文/陶文

Java程序员的日常工具箱中,我们可以发现Ant、Tomcat、Log4、Lucene这些鼎鼎大名的开源产品。而它们的共同点在于,都是由Apache Software Foundation社群中杰出的开发者开发的开源项目。Apache这个名字在Java的世界中实在太出名了,以至于“Apache”这六个字母成为开源项目品质保证的代名词。Apache是自由开源的一面旗帜,其Apache License更是成为商业友好的License的首选,只SourceForge上就有1000多个以Apache License授权的项目,其流行程度可见一斑。
但是,如我们所知,Apache最早闻名IT界是靠高性能的Web服务器,其历史甚至和Java一样长。Apache对于Java的偏爱,以及其发展的速度也映射出了Java繁荣的一角。现在去它的主页上看看,满目望去全部都是Java的开源项目,早就不光是其C服务器的老本行了。Apache对Java最大的贡献就是提供了这么一个精品的开放舞台,让杰出的开发者和成熟的开源项目走到一起,共同给Java语言提供一个丰富的工具仓库。对于一种语言、一个平台来说,其库的丰富程度对于开发者来说的重要性再怎么强调也不为过。勿庸置疑,Aapache上会出现越来越多的Java开源项目,而我们开发者也将更多地得益于这令人目不暇接的繁荣。



TheServerSide : 论坛的专业精神
文/刘天北

成立于2000年5月,TSS最初以一本书而广为人知。它的创始人Ed Roman同时也是J2EE名著《Mastering EJB》的作者;Roman运营着一个J2EE咨询/培训公司TheMiddlewareCompany(简称TMC),TSS当时是TMC的下属部门;为了扩大企业的影响,Roman在TSS网站上免费发布了那本书的电子版。J2EE程序员要吃下这个香饵,就得在论坛中注册;注册的同时,多半也会看一眼论坛的内容;一看之下,大部分人都被吸引住,成了社区的忠实成员。
TSS究竟有什么吸引人的秘诀?首先,它有一支能力过人的运营团队,除了Roman本人之外,其中还有好几人都是J2EE领域的顶尖专家;第二,TSS和TMC定期会推出专家研讨会/视频访谈、技术白皮书、评测报告,通读TSS提供的这些内容,基本上就可以把握技术的当前趋势。但这还不是全部。最可贵的还是TSS的社区风格:他们深谙技术,但不盛气凌人;思想敏锐,但不因此缺乏审慎和大局感。其中大多数人都已在自己的开发领域颇有建树,在TSS上的活动既给他们提供了与同行进行深度交流的机会。一个新成员进入社区,就像参加了一个起点很高的专业俱乐部,这不是一个求解“怎样设置JAVA_HOME环境变量”之类问题的地方。事实上,在J2EE技术发展的若干转折点上,TSS都起到了关键的推动作用。
几经易主之后,J2EE咨询培训公司TMC在2004年关闭;TSS则被IT媒体集团TechTarget收购。我们期待着它更加繁荣的未来。

JBoss : 职业开源软件组织
文/刘天北

J2EE的婴儿期,“应用服务器”原本是“昂贵”的代名词。但从1999年起,Marc Fleury和Rickard Oberg等人就已经着手改变这种状况。他们开发的开源EJB容器当时叫做“EJBoss”,在Sun公司的干预下(注意,“EJB”是注册商标),JBoss获得了今天的名字。虽然从问世起就一直受到关注,但JBoss第一个达到产品化标准的版本可能是它的2.2版。它的易用让人一见难忘:除了标准部署描述符,无需编写专用的xml配置文件。Oberg自豪地说,“我们的架构并不是按照EJB规范指定的路线设计的,因此也没有走大多数应用服务器走过的弯路。”
Jboss 3.x版本保持了一贯的创新精神,在用户中间获得了更广泛的认可。但是,文档要收费下载、在邮件列表上提问常常会遭到Fleury等人的斥责。无疑,JBoss的创始者也意识到了自己的幼稚:开源软件只能靠服务盈利,卖文档赚钱有限、骂用户当然更损害企业形象。
虽然以Oberg为首的许多程序员退出了开发队伍(其中很多人成了JBoss的死敌),在开源软件领域也面临JOnAS Geronimo等新老对手的竞争,但JBoss还是以不断推出的新版本站稳了脚跟。在技术上,它是策动J2EE演进的重要力量:拟议中的EJB 3也要追随Jboss 4倡导的开发范式,以至于二者的代码样本之间的差别几乎难以分辨;在商业上,JBoss与Sun公司言和修好,甚至还获得了数量可观的风险投资。JBoss已经像拥护者预期的那样,成为了应用服务器领域的Linux。



Borland : 深度介入Java
文/左轻候


除了Sun以外,也许没有一家公司 像Borland这样深层地介入Java。Borland开发了最早的Java编译器之一,Borland的工程师参与了早期JDK的设计,Borland的JBCL(JavaBeans Component Library) 技术也成为后来Java Bean规范的基础。但是Borland对Java世界最大的影响还是JBuilder。
1997年11月,Borland JBuilder 1.0发布。虽然第一个版本相对于竞争对手并没有表现出明显的优势,但是Borland凭借深厚的技术实力和正确的市场策略,不断地超越了对手。JBuilder 3.5成为业界第一个100%基于Java架构的开发工具,并且市场份额很快超过了50%。在随后的版本中,JBuilder持续改进对团队开发、J2EE架构、Mobile技术等方面的支持,最终成为了Java开发工具市场,特别是大型企业级Java开发市场中的霸主。JBuilder的成功,很大一个原因来自于Borland坚持的平台中立性,即对不同厂商的解决方案提供一视同仁的支持。
2005年初,随着Eclipse社区的迅速崛起,Borland进入了Eclipse的董事会,成为战略开发者(Strategy Developer) ,并宣布将推动Borland的其它产品与Eclipse的集成。在随后发布的一份文件中,Borland宣称JBuilder的未来版本将放弃原有的PrimeTime架构,而基于Eclipse架构。这个代号为“Peloton”的版本预计于2006年下半年发布。
Borland对Java的另外两个主要贡献来自Together和BES(Borland Enterprise Server)。Together是著名的建模工具,能够与包括JBuilder在内的许多开发工具进行集成,全球市场份额占有率排名第二。BES AppServer是一种J2EE服务器,在全球市场份额占有率上次于WebLogic和WebSphere,排名第三。



JCP : Java世界的联合国
文/黄海波


当联合国正在为安理会改革问题 吵得如火如荼时,Java世界的“联合国安理会”已经成功地运作了七个年头。JCP(Java Community Process)在1998年由Sun发起成立,目标是通过一个开放、合作和鼓励参与的非盈利组织来发展和推进Java和相关的技术。正是由于JCP计划的推出可以让所有对Java感兴趣的软硬件厂商,个人和组织都能参与到技术规范的制定和发展过程中,协调各方的兴趣和利益、集思广益,才可以让Java在短短的几年内异军突起,成为可以和微软开发平台抗衡的一个主流开发语言。JCP计划既然是一个组织,自然也有一定的架构。JCP组织架构主要包括PMO(Program Management Office)、JCP成员、EC、EG。事实上,JCP的架构就好像一个Java世界的联合国。虽然也有不少人批评JCP成为各派利益的角力场,因而效率低下;但是,它毕竟为Java的顺利发展很好地掌握了方向。



微软与Java : 不得不说的故事
文/孟岩


微软跟Java不对付,地球人都知 道。跟Sun和解了又怎么样? .NET跟Java就是竞争对手,没什么说的。但是有点IT掌故的人都知道,微软并非一开始就跟Java过不去。当年比尔?盖茨盛赞Java是“长期以来最好的程序设计语言”,而且很早就购买了Java许可证。但是微软作为村里的老大,看着人家的儿子茁壮呈长,不由得生了私心杂念,搞起了小动作,在Visual J++中加入了一些破坏纯洁性的东西。单独来看,Visual J++是COM时代微软最棒的开发工具,用WFC写Windows应用程序和COM组件实在是一种享受。但是放在Java大家庭里,这个家伙就显得多少有点不怀好意。一场官司下来,微软被逐出Java大家庭,Visual J++无疾而终。以后的事情尽人皆知,.NET出笼,利齿直指Java,几年撕咬下来,没占着便宜也没吃大亏,如今也算是南北朝对峙,二分天下有其一。设想如果当时微软能够摒弃帝国主义心态,正确对待Java,与其他人一起共建美好的Java“共产主义社会”,那么今天我们的软件开发世界应该会美好得多。可惜黄粱一梦,终究是蚂蚁的喜事。2004年,微软与Sun实现了和解,但愿到Java 20周年的时候,我们能更正面地描述微软对Java发挥的作用。

与Java相关的四十个名字--十大产品

Sun JDK :Java的基石
文/莫映

众所周知,流传于市的JDK不单Sun一家,比如IBM的JDK、BEA的JRocket、GNU的GCJ,以及如Kaffe这样的开源实现,不一而足。但是,根正苗红的Sun官方JDK一直以来都是备受瞩目的主流,它对Java社区的影响也是举足轻重。
1996年1月,Sun在成立了JavaSoft部门之后,推出了JDK 1.0,这是Sun JDK(Java Development Kit)的首个正式版本;当年12月,JDK1.1出炉。该版除了对前序版本部分特性做了改进以外,重写了AWT,采用了新的事件模型。1998年12月,JDK 1.2正式发布。此时的类库日臻完善,API已从当初的200个类发展到了1600个类。在1.2版本中引入了用100%纯Java代码写就的Swing,同时,Sun将Java更名为Java 2。
1999年,Java 技术形成了J2SE、J2EE和J2ME三大格局。Sun向世人公布了Java HotSpot性能引擎技术的研究成果。HotSpot旨在进一步改善JVM性能,提高Java ByteCode的产生品质,加快Java应用程序的执行速度。J2SE 1.3发布于2000年;2002年2月间,J2SE 1.4问世,这是有JCP参与以来首个J2SE的发行版本。2004年9月30日,代号为“Tiger”的J2SE 5.0终于出笼了,这次发布被誉为Java平台历来发布中特性变动最大的一次。包括泛型在内的若干重大语法改进、元数据支持,包括多线程、JDBC在内的多项类库改进,都令广大Java程序员激动不已。自此,Sun的官方JDK(J2SE Development Kit)已经步入了一个新的高度。



Eclipse :以架构赢天下
文/恶魔

IBM是在2001年以4000万美元种子基金成立Eclipse联盟,并且捐赠了不少程序代码。如今,该组织有91个会员,包含许多全球最大的软件商。根据Evans Data公司的资料,Eclipse是目前最受欢迎的Java开发工具。
Java厂商若要共同对抗微软,彼此之间就要有共同的开发工具才行。
在Eclipse平台上,程序员可使用好几种不同的语言。在前端方面,用户可整合多种工具来撰写Plug-in程序或Unit Test。Eclipse最大的特色就在于其完全开放的体系结构,这代表任何人都可下载并修改程序代码,给Eclipse写插件,让它做任何你能想到的事情,即所谓“Design for everything but nothing in particular”。
Eclipse基金会的架构比较特别,反映出企业现今对于开放原始码计划也越来越积极主动。Eclipse不像一般开放源码软件容许个人的捐献程序,该基金会是由厂商主导。不论是董事会成员或者是程序赞助者几乎都来自于独立软件开发商(ISVs)的员工。
Eclipse首席执行官Mike Milinkovich说,这种厂商会员制是特意设计的;他说Eclispe软件开发快速就是因为会员制的关系,同时又加上开放源码开发模式的临门一脚。这与一般透过标准组织的做法全然不同。 这其实正好验证了一句老话:“开放即标准”。


JUnit/Ant : 让Java自动化的绝代双骄
文/刘铁锋

在Java程序员必备的工具中,共 同拥有且交口称赞的恐怕就非JUnit、Ant莫属了。一个是单元测试的神兵利器,一个是编译部署的不二之选,它们让Java的开发更简单。
JUnit由XP和TDD的创始人、软件大师Kent Back以及Eclipse架构师之一、设计模式之父Erich Gamma共同打造。名家的手笔和理念使得JUnit简单而强大,它将Java程序员代入了测试驱动开发的时代。JUnit连任了2001、2002年“Java World编辑选择奖”以及2003年“Java World最佳测试工具”和2003年“Java Pro最佳Java测试工具”等众多奖项,深受Java程序员好评。
Ant是开源项目的典范,它让IDE的功能更加强大,从Sun的NetBeans到JBuilder,主流的IDE中处处都有它的身影。“Another Neat Tool”原是它的本名,但这已经渐渐不为人知。它彻底地让部署自动化,而程序员需要做的仅仅是几条简单的配置命令。和JUnit一样,Ant也荣获了众多的殊荣:2003年JavaWorld“最有用的Java社区开发的技术编辑选择奖”, 2003年Java Pro“最有价值的Java部署技术读者选择奖”,2003年“JDJ编辑选择奖”,也让Ant受到的多方的认可。
Ant对JUnit的全面集成,则使得一切都变得更加完美。只需简单地配置,从自动测试到报告生成,从编译到打包部署均可自动完成。强大的功能,简单的配置,让Java程序员高枕无忧。实可谓让Java自动化的绝代双骄。

Websphere : 活吞市场的大鲸
文/jini

1999年, IBM与Novell签订合作协议,成功地提供电子商务的解决方案给予原先使用NetWare的用户。同年更是推出了WebSphere Application Server 3.0,并且推出WebSphere Studio与VisualAge for Java让工程师可以快速开发相关的程序。2001年,IBM更是宣布将应用服务器、开发工具整合在一起,与DB2、 Tivoli及Lotus结合成为一套共通解决方案,如今、IBM更是并入了Rational Rose ( UML tools )让开发流程更是完整化。
Sun在Web Services的策略方面远远落后于微软与IBM, 当他们手拉手在研订Web Services规范, 加上IBM买硬件送软件或是买WebSphere送DB2的策略让企业大佬们纷纷转向IBM的阵营, Sun才惊觉大势已去。WebSphere复杂的安装,深奥的设定,难以理解的出错讯息不断地挑战开发者的耐心与毅力。
IBM如今已经不是将WebSphere定义为单一产品,它已经是一个平台的代名词。它里面的产品目前包含了应用服务器、商业整合、电子商务、 数据讯息管理、网络串流、软件开发流程、系统管理、无线语音等等。非常多样化,也让企业界愿意相信WebSphere可以带给他们一套完整的解决方案。同时, IBM也在推广SOA的概念, 简单来说, 利用Web Service的耦合性与工作流程的整合, 为企业内部打造以服务为导向的架构。
IBM捐献出Eclipse带给Java开发人员对IDE的重新掌握。未来是否会捐献出WebSphere的哪一个部分成为OpenSources, 或许, 又是改写Java世界的时刻了。



WebLogic : 技术人的最爱
文/jini

1995年, BEA成立了, 初期以Tuxedo数据转换的产品为基础, 成长之迅速是历年来最强的企业。 1998年, BEA推出以Java为基础的网络解决方案, 提供了完整的中间层架构, 更同时支持EJB 1.0 及微软的COM组件, 方便的管理接口掳掠了工程师的心。 在IBM和Oracle尚未准备好迎击的时候, BEA已经席卷企业应用平台的市场。 WebLogic无论在市场领先度与技术领导性与策略远观性都优于当年的所有应用服务器厂商。
如今WebLogic不仅仅是应用平台服务器的名称, 而是BEA对于整个企业解决方案的总称, 无论是WebLogic Portal或是WebLogic Integration配合着Workshop开发环境, 来自微软的UI开发团队让Workshop几乎达到所见即所得。 接着, 在下一个版本之中, BEA的BeeHive开放源代码计划将释出中间层控件的开发模块, 并且与Eclipse合作共同打造新一代的开发环境。 如此强而有力的技术支持, 更是让顾客愿意使用WebLogic平台的最大原因。
代号为“Diablo”的 WebLogic Server 9.0小恶魔已经出现了, 目前虽然仅仅是BETA版, 以Portlet 方式打造的管理接口与完整且美妙的WebServices支持, 实在很难找到可以挑剔的地方, 虽然去年被IBM的技术性推销超越了市场占有率, 不过接下来SOA的平台竞争现在才开始, BEA的LOGO也加入“Think liquid”并且推出新的AquaLogic平台做为数据服务平台, 可见, Java的应用服务器的战争, 还会继续进行着。



JBuilder : Java开发工具的王者
文/刘铁锋

Java的开发工具中,最出名的莫过于Borland公司的JBuilder了。对于一些没有弄清楚开发工具与JDK的区别的Java入门者来说,JBuilder就如同Visual C++之于C++,以为JBuilder就是Java的全部。比起捆绑在服务器上销售的JDeveloper,JBuilder应该是唯一的仅靠自身的实力而占领了大部分市场的Java商用开发工具了。而JBuilder作为Java 开发工具的王者,其夺冠之路并非一帆风顺。直到Java的天才Blake Stone成为JBuilder的Architect之后,JBuilder 2.0以及3.0才逐渐推出。2000年3月14日,JBuilder 3.5的推出别具意义,它成为了业界第一个用纯Java打造的开发工具,也风靡了整个Java开发工具市场。在同年11月份推出的JBuilder 4.0乘胜追击,冲破了50%的市场占有率,成为了真正Java开发工具的王者。
Borland以每半年左右推出一个新版本的速度,让众多的对手倒在了沙场。而Microsoft因为与Sun的官司,也使得一个强大的对手退出了战争。2001年,加入了对企业协作支持的JBuilder 5以及强化了团队开发工具的JBuilder 6打败了最后一个对手Visual Age For Java。2002年JBuilder 7推出之后,再也没有其他厂商与JBuilder竞争。
孤独的王者并没有停下脚步,在2003年到2005年间,JBuilder也仍然延续了其半年一个版本的速度,推出了8、9、10、2005四个版本。强大的功能以及持续的改进,也让Java程序员多了一分对能够在开发工具市场上与Microsoft血拼十数年的Borland的敬仰。



Oracle : Java人永远的情结
文/熊节

在林林总总的数据库之中,有一种尤其令人又爱又恨、印象深刻,那就是关系型数据库市场的“大佬”——Oracle。
从公司的角度,Oracle和Sun有着诸多相似之处,例如:两家公司都拥有一位个性鲜明的CEO。早在Java诞生之初的1995年,Oracle就紧随NetScape从而第二个获得了Java许可证。从那以后,Oracle对Java的鼎力支持是Java能够在企业应用领域大获成功的重要原因之一。
所有J2EE程序员都知道,Oracle的JDBC驱动虽然与Oracle数据库配合良好,但在不少地方使用了专有特性。其中最为著名的就是“CLOB/BLOB问题”,诸如此类的问题给开发者带来了很多麻烦。为了同时兼顾不同的数据库,他们不得不经常把自己的一个DAO(数据访问对象)写成两份版本:针对Oracle的版本和针对其他数据库的版本。有不少人为了开发便利,舍弃了数据库之间的可移植性,将自己的产品绑定在Oracle的专有特性上。
Oracle提供的Java开发工具也与此大同小异。不管是数据库内置的Java支持还是JDeveloper IDE, Oracle的Java工具都和Oracle数据库有着千丝万缕的联系。看起来,只要Oracle还是数据库市场上的“头牌”,了解、学习Oracle的专有特性,周旋于Oracle特有的问题和解决方案之中,就将仍旧是J2EE程序员在数据库基础和SQL之外的必修功课。对Oracle的爱与恨,也将仍旧是Java人心头一个难解的情结。



Struts、Hibernate : 让官方框架相形失色的产品
文/刘铁锋

好的框架能够让项目的开发和维护更加便捷和顺利。相比Sun官方标准的迟钝以及固执,开源框架也更得到Java程序员的共鸣。Struts以及Hibernate就是这样一类产品,它们简单、优雅,更让官方的产品相形失色。
谈起Struts,不可避免地就要提及MVC(Model-View-Controller)的理念。而准确地讲,MVC的提出却最早源于JSP的标准。在1998年10月7号,Sun发布的JSP的0.92的规范中提出的Model 2就是MVC的原型。在1999年12月Java World的大会中,Gavind Seshadri的文章最早阐述了Model 2就是一种MVC的架构,同时也提及了MVC架构是一种最好的开发方法。2000年3月,由Craig McClanahan发布的Struts成为了最早支持MVC的框架。Struts在设计上虽然存在一些诟病,但是不可否认的是,它使得Java Web应用的开发更加简洁和清晰,也让更多的程序员爱上了Java,并开始遗忘官方的JSP。时至今日,比起如WebWork、Tapestry以及Sun官方的JSF,Struts或多或少存在些不足,但是众多成功项目的实施,仍然使其牢牢占据的Java Web应用框架的首位。
Hibernate则在某种程度上改变了人们对构建J2EE的思路。相比其EJB的Entity Bean的映射技术,Hibernate则显得更加简洁和强大。五分钟就能把Hibernate跑起来,让更多的Java程序员享受到了开发的乐趣。第15届Jolt大奖中,最优秀数据库、框架以及组件的奖项中,Hibernate当仁不让获得头筹;不仅如此, Hibernate甚至还影响了官方的标准。在众多Java程序员翘首以待的EJB 3.0的规范中,Hibernate得到了支持。
Java开源的繁荣不仅让众多Java的开发者享受到了更多的便利,甚至影响了官方的标准。恐怕这也是作为Java人独有的乐趣之一吧。



PetStore : J2EE人的必修课
文/陶文

很少有一个例子项目如PetStore这 般广为人知,而这很大程度上要归功于Sun很“英明”地把PetStore做成一个只展示架构而在性能调优上留下了大大余地的例子。围绕着性能话题,产生了颇为有趣的厂商之间以及平台之间的Pet Wars。除去这些关于性能的流言蜚语乃至中伤,PetStore在展示J2EE1.3平台的架构、演示什么叫分层方面还是有着很大的功劳的。而且PetStore在架构方面的丰富性使得其成为J2EE的那些轻量级小兄弟们展示自身的一个必选科目。
不谈那些围绕PetStore的口水,那些数不尽的盗版,PetStore给开发新手带来的最重大的影响,我想应该是架构的观念而不是性能,也不是业务。做为一种技术的Demo,这无可非议。但是如果你是一个新手,跟着PetStore亦步亦趋地学习J2EE开发,难免会陷入过度设计、华而不实之类的困境。围绕着.NET的PetStore的克隆PetShop展开的架构与性能的大讨论,是不是也在促使我们学习新技术时应该以解决问题为导向呢?特别是当你想把一个如PetStore这般的Sample Project的技术照搬到你的现实世界的Real Project来时。

与Java相关的四十个名字--十大人物

James Gosling : Java之父
文/陶文

作为Java之父,James Gosling的名字可谓是耳熟能详。当人们评论一种编程语言时,总喜欢捎带着把下蛋的母鸡一起带上。Java做为中国的编程语言学习者餐桌上有限的那么几样餐点中的流行款式,自然是让James Gosling风光不已。虽然James Gosling现在已经不是领导Java发展潮流的领军人物了,做为Sun的开发者产品组的CTO,怎么算来也是身居高位了,俗事缠身吧,但是这并不妨碍其对于Java一如既往的爱护,表达着各式各样鲜明的观点,引发一场又一场的争论。
James Gosling是很爱Java的——是啊,哪有当父母的不爱自己的孩子的呢。James Gosling也是很爱Sun的——是啊,哪有当领导的不爱自己的公司的呢。于是我们在批评.NET的安全性的队伍前头,在褒扬Java性能的队伍前头,在抨击SWT开倒车的队伍前头,在给NetBeans大唱赞歌的队伍前头,我们都看到了James Gosling的身影。无论对错、偏见或者固执,至少说明了Gosling的鲜明个性丝毫没有受到年龄的影响。也许也只有这种天才而偏执的人物才能创造出Java这般伟大的语言来吧。


Bill Joy : 软件业的爱迪生
文/徐昊

Joy生于1954年,1982年与Vinod Khosla, Scott McNealy和Andy Bechtolsheim一起创建了Sun Microsystems,并从那时起担任首席科学家,直到2003年离开。他是一位令人崇敬的软件天才,他在软件和硬件的历史上留下了无数令人仰止的传奇。
在上个世纪80年代早期,DARPA与BBN达成协议,准备将Vinton Cerf和Bob Kahn设计的TCP/IP协议添加到Berkeley UNIX中。Bill Joy被委派来完成这项任务,然而他却拒绝将BBN的TCP/IP协议栈添加到BSD中,因为在他的眼中BBN的TCP/IP实现还远不够好,于是他就写了一个高性能的TCP/IP协议栈。John Gage回忆道,“BBN和DARPA签署了巨额合同来实现TCP/IP协议,然而他们的员工所编写的代码远没有一个研究生所做的好。于是他们邀请Bill Joy参加他们的一个会议,这位研究生穿着一件T-Shirt就出现了,他们询问他,‘你是如何做到的呢?’Bill回答说,‘这是非常简单的一件事,你读一下协议然后就可以编码了’”。除了TCP/IP协议,基于分页的虚拟内存系统最早也是由Bill Joy添加到Berkeley UNIX内核当中的。同时他还是vi、csh、早期Pascal编译器的作者。
关于Bill Joy惊人的软件才能流传最广的一个传奇是,据说他在上研究生的时候,想看看自己能不能写一个操作系统出来,于是就在三天里写了一个非常简陋,但是可以使用的Unix系统, 传说就是BSD的前身。虽然如此夸张的才情令人难以置信,但是考虑到主角是Bill Joy,还是有一定的可信度的。Bill Joy硕士毕业之后,决定到工业界发展,于是就到了当时只有一间办公室的Sun, 他作为主要设计者参与了SPARC微处理器的设计,负责设计最为关键的一部分电路。这样兼精软硬件的天才实在是让人不得不佩服啊。1995年,Sun发布了轰动世界的Java语言。当然,Bill Joy对Java也作出了不少的贡献,首先是JINI——一种针对分布式服务的基础连接技术。任何可以内嵌JVM的电子设备都可以通过JINI相互连接;JXTA是基于Java的P2P协议,允许互联网上的软件进行点对点交流和协作。
这个其貌不扬的瘦高个,有着凌乱的亚麻色头发,被《财富》杂志誉为“网络时代的爱迪生”的技术狂人,在短短的二十年间,创造了无数令人心动的软件。在MIT的BBS上曾有一个帖子,说微软电话面试有一道题,问“Who do you think is the best coder, and why?”虽然回复的帖子中大家都声明列举的best coder排名不分先后,然而大多数人仍把Bill Joy列在第一位,或许可以从一个侧面验证Bill Joy在广大Programmer心目中的地位吧。


Joshua Bloch : Java 2 元勋
文/莫映

早在1996年,适逢Java刚刚崭露头角,年内好事连连。先是1月份发布JDK 1.0,然后是5月底在旧金山召开首届JavaOne大会,年末又是JDK 1.1紧跟其后。正是在Java技术如火如荼、大展拳脚的背景之下,Joshua Bloch来到了Sun,开始了他带领Java社区步入“迦南美地”的漫长历程。
很快,他被从安全组调入核心平台组,从事底层API设计。至此以后,每逢JDK的重大版本发布,总能在其中见到Joshua的“妙笔”。JDK 1.1中的java.math、1.4中的assertions,还有大家所熟识的Collections Framework皆是Joshua一手打造。其中的Collections Framework还获得了当年的Jolt大奖。到了J2SE 5.0研发阶段,身为平台组构架师的Joshua接掌了Tiger大旗,其核心地位已然无人可以替代。作为Tiger的代言人和领路人,没有谁比Joshua更清楚Tiger。相信大家一定还记得Joshua当年仿效英国诗人William Blake所做的咏Tiger诗八首,优雅的笔调,透出大师深厚底蕴的同时,也道出了Tiger的几大重要特性,这些特性是自JDK 1.1引入Inner Class以来,Java最大的语法改进。
Java风雨十年,从JDK 1.1到J2SE 5.0,Joshua实在功不可没。难怪有人戏言,假如将James Gosling比作Java之父,那么Joshua就是一手将Java “哺育”成人的Java之母。Joshua对Java的贡献还不止于JDK,提起他的大作《Effective Java》(Addison Wesley, 2001),相信Java粉丝们一定耳熟能详。该书荣膺2002年度Jolt大奖,且备受James Gosling推崇。书中57条颇具实用价值的经验规则,来自Joshua多年来在JDK开发工作中,尤其是Collections Framework设计中的实践心得,各个有理有据,剖析深入,也足见其深厚功力。该书对Java社群的影响,犹如C++社群中的《Effective C++》。Joshua对JCP的贡献也不小。他是JSR201和JSR175的领导者,前者包含了Tiger四大语言特性,后者则为Java提供了元数据支持。此外,他还是JSR166的发起人之一(该JSR由Doug Lea领导),并且是许多其他JSR的参与者。Joshua目前是JCP为数不多的几个执行委员会成员之一。
Joshua Bloch给人的印象是谦逊平和,行事低调而不喜抛头露面,一个典型的技术人员和实干家。不过即便如此,也丝毫不会减弱他对Java技术的卓越贡献和对Java社区的绝对影响力。有人说,如果他能更彰显一些,就很有可能成为Java开发者中的领军人物,就有如Don Box之于微软社群。
2004年7月初,就在Tiger发布在即之时,就在Jusha Bloch刚刚荣获Sun“杰出工程师(Distinguished Engineer)”的称号之时,他突然离开Sun而去了正值发展态势迅猛的Google。当他离开Sun的消息在TSS发布之后,众多拥趸表达了怀念与不舍之情。一年过去了,我们还没有获知Joshua的任何近闻,似乎又是他行事低调的一贯作风所致,不知他在Google状况如何。希望Joshua依然能继续“摩西未尽的事业”,以他的影响力推动Java社群继续前行。据称,《Effective Java》的下一版会加入Java 5.0的部分,让我们翘首以待吧。


Bruce Eckel : 功勋卓著的机会主义分子
文/孟岩

Bruce Eckel原本是一位普通的汇编程序员。不知道是什么因缘际会,他转行去写计算机技术图书,却在此大红大紫。他成功的秘诀不外乎两点:超人的表达能力和捕捉机会的能力。他最早的一本书是1990年代初期的《C++ Inside & Out》,随后,在1995年他写出了改变自己命运的《Thinking in C++》。如果说这本书充分表现了他作为优秀技术作家的一面,那么随后他写作《Thinking in Java》并因此步入顶级技术作家行列,则体现了他作为优秀的机会主义分子善于捕捉机会的另一面。写作中擅长举浅显直接的小例子来说明问题,语言生动,娓娓道来,特别适合于缺乏实践经验的初学者。因此《Thinking in Java》俨然成为天字第一号的Java教科书,对Java的普及与发展发挥着不可忽略的作用。不过公允地说,Bruce Eckel的书欠深刻。比如在“Thinking in…”系列中对设计模式的解说就有失大师水准。这一方面是因为书的定位非常清晰,另一方面也是因为Bruce太过分心赶潮流,未能深入之故。TIJ之后,他预言Python将火,就匆匆跑去写了半本《Thinking in Python》。后来Python并未如期而旺,于是他也就把书稿撂在那里不过问了,机会主义的一面暴露无遗。我们也可以善意的猜测一下,他的下一个投机对象会是什么呢?Ruby?.NET?MDA?总之,是什么我都不奇怪。


Rickard Oberg :J2EE奇才
文/熊节

Oberg的作品很多,流行的代码生成工具XDoclet和MVC框架WebWork都出自他的手笔。这两个框架有一个共同的特点,即它们的功能虽然简单,但设计都非常优雅灵活,能够很方便地扩展新功能甚至移植到新环境下使用。优雅的设计源自Oberg的过人才华,简单的功能则折射出他玩世不恭的人生态度。正是这两种特质的融合,才造就了这个不世出的奇才。
1999年,JDK 1.3发布,其中带来了一个重要的新特性:动态代理(Dynamic Proxy)。当所有人都还在对这项新技术的用途感到迷惑时,Oberg发现用它便可以轻松攻克EJB容器实现中的一些难关。这一发现的产物就是一本《Mastering RMI》,以及大名鼎鼎的JBoss应用服务器。但Oberg很快又让世人见识了他的玩世不恭。由于和总经理Marc Fleury在经营理念上不合,Oberg抱怨“法国的天空总让我感到压抑”,甩手离开了自己一手打造的JBoss。此后的几年里,他和老友Hani Suleiman不断地对JBoss的“专业开源”模式和Marc Fleury的商人味道冷嘲热讽,让众人为他的孩子气扼腕叹息。
2002年10月,微软推出Petstore示例应用的.NET版本,并宣称其性能比Java Petstore高出数倍。正是Oberg深入分析这个示例应用的源代码,在第一时间指出它大量运用了SQL Server专有的特性,性能对比根本不具参考价值。后来Oberg又先后关注了AOP和IoC容器,两者都成为了J2EE架构的新宠。


Doug Lea : 世界上对Java影响力最大的个人
文/KIT

如果IT的历史,是以人为主体串接起来的话,那么肯定少不了Doug Lea。这个鼻梁挂着眼镜,留着德王威廉二世的胡子,脸上永远挂着谦逊腼腆笑容,服务于纽约州立大学Oswego分校计算器科学系的老大爷。
说他是这个世界上对Java影响力最大的个人,一点也不为过。因为两次Java历史上的大变革,他都间接或直接的扮演了举足轻重的脚色。一次是由JDK 1.1到JDK 1.2,JDK1.2很重要的一项新创举就是Collections,其Collection的概念可以说承袭自Doug Lea于1995年发布的第一个被广泛应用的collections;一次是2004年所推出的Tiger。Tiger广纳了15项JSRs(Java Specification Requests)的语法及标准,其中一项便是JSR-166。JSR-166是来自于Doug编写的util.concurrent包。
值得一提的是: Doug Lea也是JCP (Java小区项目)中的一员。
Doug是一个无私的人,他深知分享知识和分享苹果是不一样的,苹果会越分越少,而自己的知识并不会因为给了别人就减少了,知识的分享更能激荡出不一样的火花。《Effective JAVA》这本Java经典之作的作者Joshua Blosh便在书中特别感谢Doug是此书中许多构想的共鸣板,感谢Doug大方分享丰富而又宝贵的知识。这位并发编程的大师级人物的下一步,将会带给Java怎样的冲击,不禁令人屏息以待。


Scott McNealy :SUN十年来的掌舵者
文/KIT

McNealy,Sun的CEO、总裁兼董事长。他曾经狂傲的说:“摧毁微软是我们每个人的任务。”这位英勇的硅谷英雄,似乎带头起义,试图组织一个反微软阵线联盟,以对抗微软这股庞大的托拉斯恶势力。他时常口出惊人之语,在公开场合大肆的批评微软,并曾经说微软的.NET是.NOT。
Scott McNealy先后毕业于哈佛大学及史丹佛大学,分别持有经济学学士学位及企管硕士。1982年MBA毕业的他和三个同学共同合伙创建了Sun,并于1984年成为Sun的执行官。“要么吞了别人,不然就被别人吞了”是Scott McNealy的名言录之一。他擅长以信念带动员工,鼓舞士气。极富自信的他,对于认定的事,总是坚持自己的想法,因此有人形容他是一个刚愎自用的决策者。
身为Sun这艘船的掌舵者,Scott McNealy能够看多远,Sun就能走多远。Scott McNealy认为将来软件界是一个只有服务,没有产品的世代。他希望打造出Sun不是一个纯靠硬件赚钱的公司。从Open Source到Open Solaris,Sun希望可以成为提供整合性解决方案的服务厂商。Solaris 10 + UltraSPARC是否可以像Scott McNealy希望的是下一匹世纪黑马呢?Sun是否能以股价来证明华尔街分析师及普罗大众的诽短流长?Scott McNealy是否能带领着Sun成为继微软之后的下一个巨人,一场场IT界的争霸战值得我们拭目以待。


Rod Johnson : 用一本书改变了Java世界的人
文/ 刘铁锋

Rod在悉尼大学不仅获得了计算机学位,同时还获得了音乐学位。更令人吃惊的是在回到软件开发领域之前,他还获得了音乐学的博士学位。有着相当丰富的C/C++技术背景的Rod早在1996年就开始了对Java服务器端技术的研究。他是一个在保险、电子商务和金融行业有着丰富经验的技术顾问,同时也是JSR-154(Servlet 2.4)和JDO 2.0的规范专家、JCP的积极成员。
真正引起了人们的注意的,是在2002年Rod Johnson根据多年经验撰写的《Expert One-on-One J2EE Design and Development》。其中对正统J2EE架构的臃肿、低效的质疑,引发了人们对正统J2EE的反思。这本书也体现了Rod Johnson对技术的态度,技术的选择应该基于实证或是自身的经验,而不是任何形式的偶像崇拜或者门户之见。正是这本书真正地改变了Java世界。基于这本书的代码,Rod Johnson创建了轻量级的容器Spring。Spring的出现,使得正统J2EE架构一统天下的局面被打破。基于Struts+Hibernate+Spring的J2EE架构也逐渐得到人们的认可,甚至在大型的项目架构中也逐渐开始应用。
Rod Johnson的新作《Expert One-on-one J2EE Development without JEB》则更让人吃惊,单单“Without EJB”一词就会让大多数J2EE架构师大跌眼镜了。不过Rod Johnson可能仅仅是想通过“Without EJB”一词表明应该放开门户之见。这也是Rod Johnson一贯的作风,。也许正是这种思想,促使得Rod Johnson创建了Spring,真正改变了Java世界。



Alan Kay :Java的精神先锋
文/徐昊

Sun的官方Java教材中有一句话,说Java是“C++的语法与Smalltalk语义的结合”。而Smalltalk的创造者就是Alan Kay。
Alan Kay于1970年加入Xerox公司的Palo Alto研究中心。早在70年代初期,Alan Kay等人开发了世界上第二个面向对象语言Smalltalk,因此,Alan Kay被誉为Smalltalk之父。2003年,Alan Key因为在面向对象程序设计上的杰出贡献,获得了有计算机界的诺贝尔奖之称的ACM Turing Award。
Alan Kay成名于Smapltalk和OOP,而Java虽然在语言上类似于C,但是在语义上非常接近Smalltalk,很多Java中的设计思想在Alan Kay的文献中找到根源,也有些人将Alan Kay尊为Java思想的先驱。不过遗憾的是似乎Alan Kay老先生对Java并不买账,反倒攻击说Java是存在致命缺陷的编程语言,Java的成功不是由于Java本身的内在价值,而是其商业化的成功。Alan Kay欣赏的是Lisp,他认为Lisp是软件的麦克斯韦方程,其中的许多想法是软件工程和计算机科学的一部分。看来拥有Alan Kay这样一位重量级的Java先驱仍是我们Java一厢情愿的单恋吧。



Kent Beck : 领导的敏捷潮
文:刘铁锋

Beck全家似乎都弥漫着技术的味道。生长在硅谷, 有着一个对无线电痴迷的祖父,以及一个电器工程师父亲。从小就引导Kent Beck成为了业余无线电爱好者。
在俄勒冈州大学读本科期间,Kent Beck就开始研究起模式。然而在他最终拿到计算机学位之前,他却是在计算机和音乐中交替学习。似乎Java大师都能够有这样的能耐,另一Java大牛Rod Johnson同样也拥有音乐学的博士学位。
Kent Beck一直倡导软件开发的模式定义。早在1993年,他就和Grady Booch(UML之父)发起了一个团队进行这个方面的研究。虽然著有了《Smalltalk Best Practice Patterns》一书,但这可能并不是Kent Beck最大的贡献。他于1996年在DaimlerChrysler启动的关于软件开发的项目,才真正地影响后来的软件开发。这次的杰作就是XP(极限编程)的方法学。
和软件开发大师Martin Fowler合著的《Planning Extreme Programming》可谓是关于XP的奠基之作。从此,一系列的作品如《Test Driven Development: By Example》,《Extreme Programming Explained: Embrace Change》让更多的人领略到了极限编程的精髓,也逐步导致了极限编程的流行。
Kent Beck的贡献远不仅如此。对于众多的Java程序员来说,他和Erich Gamma共同打造的JUnit,意义更加重大。也许正式这个简单而又强大的工具,让众多的程序员更加认可和信赖极限编程,从而引起了Java敏捷开发的狂潮吧。
10月17日

c++中char * 和 char []的区别

问题引入:
在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内

容程序是会崩溃的,而后者完全正确。
程序演示:
测试环境Devc++
代码
#include <iostream>
using namespace std;

main()
{
   char *c1 = "abc";
   char c2[] = "abc";
   char *c3 = ( char* )malloc(3);
   c3 = "abc";
   printf("%d %d %s\n",&c1,c1,c1);
   printf("%d %d %s\n",&c2,c2,c2);
   printf("%d %d %s\n",&c3,c3,c3);
   getchar();
}  
运行结果
2293628 4199056 abc
2293624 2293624 abc
2293620 4199056 abc

参考资料:
首先要搞清楚编译程序占用的内存的分区形式:
一、预备知识—程序的内存分配
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于

数据结构中的栈。
2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据

结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态

变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统

释放。
4、文字常量区—常量字符串就是放在这里的。程序结束后由系统释放。
5、程序代码区
这是一个前辈写的,非常详细
//main.cpp
  int a=0;    //全局初始化区
  char *p1;   //全局未初始化区
  main()
  {
   int b;栈
   char s[]="abc";   //栈
   char *p2;         //栈
   char *p3="123456";   //123456\0在常量区,p3在栈上。
   static int c=0;   //全局(静态)初始化区
   p1 = (char*)malloc(10);
   p2 = (char*)malloc(20);   //分配得来得10和20字节的区域就在堆区。
   strcpy(p1,"123456");   //123456\0放在常量区,编译器可能会将它与p3所向"123456"优化成一个

地方。
}
二、堆和栈的理论知识
2.1申请方式
stack:
由系统自动分配。例如,声明在函数中一个局部变量int b;系统自动在栈中为b开辟空间
heap:
需要程序员自己申请,并指明大小,在c中malloc函数
如p1=(char*)malloc(10);
在C++中用new运算符
如p2=(char*)malloc(10);
但是注意p1、p2本身是在栈中的。
2.2
申请后系统的响应
栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。
堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,
会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将

该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大

小,这样,代码中的delete语句才能正确的释放本内存空间。另外,由于找到的堆结点的大小不一定正

好等于申请的大小,系统会自动的将多余的那部分重新放入空闲链表中。
2.3申请大小的限制
栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地

址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译

时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间

较小。
堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地

址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的

虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。
2.4申请效率的比较:
栈:由系统自动分配,速度较快。但程序员是无法控制的。
堆:是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便.
另外,在WINDOWS下,最好的方式是用Virtual Alloc分配内存,他不是在堆,也不是在栈,而是直接在进

程的地址空间中保留一块内存,虽然用起来最不方便。但是速度快,也最灵活。
2.5堆和栈中的存储内容
栈:在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的

地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变

量。注意静态变量是不入栈的。
当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主

函数中的下一条指令,程序由该点继续运行。
堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容由程序员安排。
2.6存取效率的比较
char s1[]="aaaaaaaaaaaaaaa";
char *s2="bbbbbbbbbbbbbbbbb";
aaaaaaaaaaa是在运行时刻赋值的;
而bbbbbbbbbbb是在编译时就确定的;
但是,在以后的存取中,在栈上的数组比指针所指向的字符串(例如堆)快。
比如:
#include
voidmain()
{
char a=1;
char c[]="1234567890";
char *p="1234567890";
a = c[1];
a = p[1];
return;
}
对应的汇编代码
10:a=c[1];
004010678A4DF1movcl,byteptr[ebp-0Fh]
0040106A884DFCmovbyteptr[ebp-4],cl
11:a=p[1];
0040106D8B55ECmovedx,dwordptr[ebp-14h]
004010708A4201moval,byteptr[edx+1]
004010738845FCmovbyteptr[ebp-4],al
第一种在读取时直接就把字符串中的元素读到寄存器cl中,而第二种则要先把指针值读到edx中,在根据

edx读取字符,显然慢了。
2.7小结:
堆和栈的区别可以用如下的比喻来看出:
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会

切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。

自我总结:
char *c1 = "abc";实际上先是在文字常量区分配了一块内存放"abc",然后在栈上分配一地址给c1并指向

这块地址,然后改变常量"abc"自然会崩溃

然而char c2[] = "abc",实际上abc分配内存的地方和上者并不一样,可以从
4199056
2293624 看出,完全是两块地方,推断4199056处于常量区,而2293624处于栈区

2293628
2293624
2293620 这段输出看出三个指针分配的区域为栈区,而且是从高地址到低地址

2293620 4199056 abc 看出编译器将c3优化指向常量区的"abc"


继续思考:
代码:
#include <iostream>
using namespace std;

main()
{
   char *c1 = "abc";
   char c2[] = "abc";
   char *c3 = ( char* )malloc(3);
   //  *c3 = "abc" //error
   strcpy(c3,"abc");
   c3[0] = 'g';
   printf("%d %d %s\n",&c1,c1,c1);
   printf("%d %d %s\n",&c2,c2,c2);
   printf("%d %d %s\n",&c3,c3,c3);
   getchar();
}  
输出:
2293628 4199056 abc
2293624 2293624 abc
2293620 4012976 gbc
写成注释那样,后面改动就会崩溃
可见strcpy(c3,"abc");abc是另一块地方分配的,而且可以改变,和上面的参考文档说法有些不一定,

而且我不能断定4012976是哪个区的,可能要通过算区的长度,希望高人继续深入解释,谢谢
 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1335614

学程序设计的人不能不看的好文章

看了下面的这篇文章,深有感触,枣子碰到的问题也是我们大多数程序设计师的通病,也许我们大多数人都只是在做一些比较小型的软件,对软件运行的效率不在乎,就算对速度和效率在乎的也可能是一些在数据库操作方面的。大家看完了,也许会有很多感想,但这只是我同意枣子的个人观点。

做为一名大四的学生,我面试过不少的单位,有成功的也有失败的,但是对我来说所有的失败在某种意义上都是一种成功,特别是我下面写的这些,写这篇文章的时候,我已经签了南京的一家软件公司,但是想起今年 2 21 日我面试苏州台湾的IT公司的经历联想到我们现在学习程序设计的一些情况我真的深有感触,这次面试使我深深的体会到了失败但也收获了很多。

我要说的将分成三部分:

1.
是我面试的具体经过

2.
是由面试想到的
3.
现今我应该做的

当然这些话很大程度上是我个人的意见,不可能完全得到大家的赞同,所以在某些观点上如果哪位朋友觉得跟我的有很大出入,请不要介意,也不要对我攻击,就当我没有说过,欢迎和我联系共同探讨这些问题!

1.
面试经过

大约在年前我接到了台湾瑞晟 (Realtek) 苏州公司的面试通知,通知我 2 21 日到苏州工业园区面试,接到面试后的几天我把一些专业课温习了一遍,特别是 C++ 和数据结构,由于大学几年里,我一直专研这些方面,加上通过了高级程序设计师的考试,对于一些常用的算法我差不多也达到了烂熟于胸的地步,当时的感觉是如果问了我这些方面的问题我应该是没有问题的!

21
日那天我被安排在 430 面试,由一位技术人员单独给我面试,在问了一些简单的问题之后他给我出了一道程序设计题目,题目是这样的(由于具体面试的题目比较烦琐,我将其核心思想提 取出来分解成了两个独立的简单的问题,有可能问题分解的不当,请大家见谅,实际面试了一个的问题但比其复杂很多,而且涉及一些高等数学变换)

1)
写一个函数计算当参数为 n(n很大) 时的值 1-2+3-4+5-6+7......+n

哼,我的心里冷笑一声!没想到这么简单,我有点紧张的心情顿时放松起来!于是很快我给出我的解法:

long fn(long n) {

        long temp=0;

        int i,flag=1;

        if(n<=0) {

               printf("error: n must > 0);

               exit(1);

        }

        for(i=1;i<=n;i++) {

               temp=temp+flag*i;

               flag=(-1)*flag;

        }

        return temp;

}


搞定!当我用期待的目光看着面试官的时候,他微笑着跟我说,执行结果肯定是没有问题!但当 n 很大的时候我这个程序执行效率很低,在嵌入式系统的开发中,程序的运行效率很重要,能让CPU少执行一条指令都是好的,他让我看看这个程序还有什么可以修改的地方,把程序优化一下!

听了这些话,我的心情当时变的有点沉重,没想到他的要求很严格,之后我对程序进行了严格的分析,给出了改进了的方案!

long fn(long n) {

        long temp=0;

        int j=1,i=1,flag=1;

        if(n<=0) {

               printf("error: n must > 0);

               exit(1);

        }

        while(j<=n) {

               temp=temp+i;

               i=-i;

               i>0?i++:i--;

               j++;

        }

        return temp;

}


虽然我不敢保证我这个算法是最优的,但是比起上一个程序,我将所有涉及到乘法指令的语句改为执行加法指令,既达到要题目的要求而且运算时间上缩短了很多!而代价仅仅是增加了一个整型变量!

但是我现在的信心已经受了一点打击,我将信将疑的看者面试官,他还是微笑着跟我说:「不错,这个程序确实在效率上有的很大的提高!」我心里一阵暗喜!

但他接着说这个程序仍然不能达到他的要求,要我给出更优的方案!天啊!还有优化!我当时真的有点崩溃了,想了一会后,我请求他给出他的方案!然后他很爽快的给出了他的程序!

long fn(long n) {

        if(n<=0) {

               printf("error: n must > 0);

               exit(1);

        }

        if(0==n%2)

               return (n/2)*(-1);

        else

               return (n/2)*(-1)+n;

}


搞笑,当时我目瞪口呆,没想到他是这个意思,这么简单的代码我真的不会写吗,但是我为什么没有往那方面上想呢!

他说的没有错,在 n 很大很大的时候这三个程序运行时间的差别简直是天壤之别!

当我刚想开口说点什么的时候,他却先开口了:「不要认为 CPU 运算速度快就把所有的问题都推给它去做,程序设计师应该将代码优化再优化,我们自己能做的决不要让 CPU 做,因为 CPU 是为用户服务的,不是为我们程序设计师服务的!」

多么精辟的语言,我已经不想再说什么了!

接着是第二个问题:

2)
他要求我用一种技巧性的程序设计方法来用一个函数实现两个函数的功能 n 为如:fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6!

fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9!
现在用一个函数 fn(int n,int flag) 实现,当 flag 0 时,实现 fn1 功能,如果flag 1 时实现 fn2 功能!他的要求还是效率,效率,效率!


说实在话,如果我心情好的话我应该能给出一种比较好的算法,但我那时真的没有什么心思再想了,我在纸上胡乱画了一些诸如 6!=6*5! 的公式后直截了当的跟他说要他给出他的答案!

面试官也没有说什么,给出了他的思路:

定义一个二维数组 float t[2][5] 存入 [2!,3!,4!,5!,6!],[5!,6!,7!,8!,9!] 然后给出一个循环:

for(i=0;i<6;i++) {

        temp=temp+n/t[flag];

}


最后得到计算值!

呵呵,典型的空间换时间的算法!

这些总共花了 50 分钟的时间,还有十分钟我就跟他很随意的聊聊天,聊了一些程序设计以及生活的问题,那时的我已经很放松了,因为我知道这次面试结果只有一个:失败。

5:30
的时候面试官要我等通知,于是我离开了他们公司。这就是面试的整个经过!

2.
由面试想到的

真的是很失败啊!我记得那天下好大的雨,气温也很低,我边走边想,从 5:30 一直走到 7:30,全身都湿透了,又冷又饿,但是我只是一直走,脑子里面充满了疑惑,我也想让雨把自己淋醒!看到这里有些朋友可能觉得那些面试题目不算什么如果让自己做的话肯定能全部答对,我肯定相信你,因为我从未怀疑过中国程序设计师的能力,我认为中国有世界上最好的程序设计师,我也从未认为自己是高手,所以我 做不出来不代表中国程序设计师比台湾或者别的地方的程序设计师差,所以我就从我的角度,我的所见所想来谈一些感想:

不错全世界都有优秀的程序设计师,中国也不例外,但是我疑惑的是:到底中国和台湾或者国外的优秀的程序设计师的比例到底是多少?台湾我不知道,中国 100 个程序设计师里有几个是优秀的呢?

我根本算不上,从上面的表现就足以说明一切了!是 1 个?5 个?10 个?50 个?这个数字我不敢乱猜,恐遭网友一顿痛骂,那么我们国内有多少人学习计算器呢?拿我们学校来说,计算器 97 4 个班,98 5 个班,99 10 个班,2000 17 个班,人多了,老师怎么办?我们学校的做法是让研究生上课,然后呢?补考一抓一大把,大把大把的补考费落入了学校的口袋,还说现在的学生素质低!

真是好笑,我都不知道学校这么做是为了什么,为国内培养大量的程序设计师吗?学生们能真正学到计算器知识吗?好了,我敢讲,在我们学校学习程序设计学生和优秀程序设计师(注意我指的是优秀,只会编几个糟烂程序的人算不上)的比例应该是 100:0.1

在这种比例下虽然我们中国学习程序设计的人铺天盖地,但是想想有多少个人能真正为中国软件业发展作出贡献,有多少人能真正写出优秀的程序名扬海外!

我从学习程序设计以来,不管是自学还是老师指导,从来都是解决问题就好,编出程序来就行,我的疑惑是:我们有真正的强调过程序的效率,程序的质量吗?我们有仔细分析过我们写的东西,看看有没有可以改进的地方,看看有没有简单的方法来达到同样的目的呢?

我扪心自问,我发现,我从来没有对我写出来的程序进行过优化,最多就是进行详细的测试,然后 Debug,但是这就足够了吗?

这些天我偶尔发现我曾经写过的一个游戏,那是一年前我刚加入 www.vcroad.net 做为其中一员时候,感觉应该拿点东西出来,然后花了一个星期的时间写出来的!

程序不算复杂,但是用到了不少数据结构的东西,也用到了一些精彩的算法,加上 windows 的界面和游戏的可玩性,写完后受到了不少好评,我当时真的很佩服自己!

但是现在看呢:没有一句注释,好多丑陋的函数名,比如:void chushihua(),好多没有必要的变量,可以用简单语句完成工作的我使用华丽的算法,大量使用全局变量...

说不好听的话,六百多行的程序除了能运行之外就是一陀屎!


如果一年前我能听到一些反面意见的话,大概我能早一点觉悟,但是自从原代码在网站发布以来听到的都是赞美之词,没有一个人向我提出程序改进的意见,这又说明了一个什么问题呢?很值得思考啊!

还有一个疑惑是:我们说的和做的真的一样吗?

我在学校的时候曾经受学院指派承办过一个计算器大赛,请了一个老师出决赛的题目,主要是一些算法题目,这个老师可能是我上大学以来唯一敬佩的老师了,从程式调试到打分,对于每个程序都仔细分析其时间效率和空间效率,然后综合打分,四十个人的卷子,老师从下午三点一直调试到晚上十点,在有些写的精彩的语句后 还加上批注。

我真是高兴很遇到这样的老师并且和他做深入的交流,但在事后,却发生了一件不愉快的事,在比赛中获得第二名的学生找到我,说他程序全部调试成功应该给他满分,并且应该得第一,我说不过他,最后调出了他的原程序和第一名的原程序对比,不错,两个程序都运行的很好,这时,那个同学开口了:「我的程序写的十分简 捷明了,仅仅数行就完成了题目要求,而他的却写了一大堆,为什么给他的分多过给我的分。」

我当时很是气愤,如果不是老师负责的话,那么现在第一名和第二名的位置真的要互调了,拜托,不是程序的行数越少程序的质量就越高,我记得我跟他大谈这方面的道理,最后说服他了!

哈哈,但是我,只能说说而已,我不知道还有多少人一样,说起来头头是道,但心里却压根就从未重视过它!

3.
我打算做的

其实那天我想到的远不止上面那么多,但是我不想再说了,因为我猜想看这篇文章的网友大概都有一肚子的感想,一肚子的抱怨,借用这篇文章发泄可不是我想达到的目的,在上面我把自己骂的一文不值也不是妄自菲薄,但是在某些方面我真的做错了,或者说是偏离了正确方向,现在是矫正方向和重整旗鼓的时候了,就像我前 面说过的,我相信中国有世界上最好的程序设计师,我也相信我的水平不会一直保持现状,我现在就收拾起牢骚真正的实干起来!

真的很巧,就写到这里的时候我在网上偶尔发现了这篇手册,我不知道这暗示着什么,但是我想如果我照下面这个基本原则一直踏实做下去,我一定会实现我的理想 - 一名优秀的软件设计师!

(下面这些文字不是我的原创,是我偶尔在网上发现的,我真的很幸运能看到这些,这篇文章也随着下面的文字而结束,我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随意转载,您可以不写作者是谁,但是请您写上 ww.vcroad.net 原创,谢谢您的支持)



作者:金蝶中间件公司 CTO 袁红岗

不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的快捷方式,但一些基本原则是可以遵循的。

1.
扎实的基础

数据结构、离散数学、编译原理,这些是所有计算器科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算器专业的人比学其它专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学 OOP,即使你再精通 OOP,遇到一些基本算法的时候可能也会束手无策。

2.
丰富的想象力

不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算器以外,多涉猎其它的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。

3.
最简单的是最好的

这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。

4.
不钻牛角尖

当你遇到障碍的时候,不妨暂时远离计算机,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责程序设计的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而 解。

5.
对答案的渴求

人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。

6.
多与别人交流

三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。

7.
良好的程序设计风格

注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。

8.
韧性和毅力

这也许是「高手」和一般程序设计师最大的区别。A good programming is 99 weat and 1 ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个 10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条

10月6日

这样软件开发人才级别的划分你同意吗

 

  软件开发工作,其实是一种很复杂的工作,需要多方面的技能。我认为,尤其以学习能力和创新能力为主。所以,我以下对软件人才的层次划分,也围绕这两个能力展开。

  一、门外汉型:几乎没有学习能力,更没有创新能力。比如,买了一本《一步一步跟我学VB编程》之类的书,对照书上写的,把例子程序给做出来了,还把例子程序的某些窗口标题给修改了一下。然后,就自认为自己可以做软件开发工作了。到处递简历,应聘的职位为软件开发工程师。这类人,以刚毕业的计算机专业的大学生为多(当然,刚毕业的学生中也有非常高级的人才)。读书期间,就以玩游戏为主,考试的时候,就搞点舞弊过关。

  二、入门型:该类型的人员(不叫人才,所以叫人员),可能入门某一种到两种开发语言,10年前,我上大学的时候,这类人的典型特点是热衷于DOS命令的n种用法。比如,dir命令的各种参数。学习过basic语言,知道C语言中printf函数的各种参数的用法,到了2005年,这类人是热衷于windows下的注册表,热种于在自己的机器上安装各种开发工具(VB,VC,dephi,asp等)。但是,仅仅停留在编译开发工具中自带的几个例子程序中。(可能还会做点修改)。经过一段时间的学习,可能还自己能够编写个简单的windows应用程序,修改注册表的程序等等。其很多时间还是在玩游戏,上QQ聊天泡MM,看了一篇如何修改某病毒的文章,一定会对照文章上的说明,把病毒给修改了,然后到处发,以显示自己的能力。当然,很多时候,该类人即使对照文章的说明,也不能将病毒修改。那就找那些带配置工具的黑客程序去弄吧,比如。BO等就是他们最常用来炫耀的。中国的破解者与初级黑客,绝大部分是这一类人。懂的不多,还喜欢炫耀(为炫耀目的的破解和修改病毒就是这一类人的最大特点)。该类人员,一般都没有在软件公司从事软件开发工作。

  三、基本型人才:该类型一般是大学毕业,并且从事软件开发工作超过2年的人为多,至少比较熟悉一门语言(以VB,dephi,java,asp等其中的一种)。也有少数人熟悉C或者C++,但是如果是C或者C++,一般对指针等概念还是似懂非懂的状态。哦,对了,该类人员可能还会在自己的机器上安装过linux或者sco unix等。但由于对自己没有信心,大部分人会在半个月之后把linux删除。该类型人才,有一定学习能力。创新能力为零。适合培养成为软件蓝领,如果人际交往能力还可以的话,可以培养成为一个初级营销人员。该类型的人典型的特点是:你要他做个项目,他首先就会问:用什么语言?(因为用他不熟悉的语言对他来说,他就没有信心),该类人员,习惯看中文文档,不得以的情况下,才会看英文文档。另外,该类人员,喜欢购买软件开发类的书籍。该类人员,一般在软件公司从事软件开发工作,待遇在4000元到10000元以下为主。

  四、熟练工:该类型一般是毕业5年并一直从事软件开发工作,至少熟悉 VB,asp ,熟悉数据库,知道什么叫存储过程,什么叫触发器。知道软件工程管理的基本概念,如果做面象对象开发,可能还会用到Rose等工具。有过20人以下软件项目管理的经验。对于linux,至少知道是个开源的项目。由于做过比较大的软件项目,项目中带的小兵一般都不具备unix下的开发经验,所以,项目中难免会出现需要在unix下运行的代码,所以,就自己动手。用c编写过几段Unix下的小程序。学习能力比较强,该类人员,已经习惯看英文文档,有时候看翻译的别扭的中文文档会觉得不爽。干脆就找英文文档。该类人员,是否喜欢买书不得而知,如果喜欢买书,一般以非软件开发类书籍为主了。在技术选型方面具备一定的创新能力,至少,你叫他做一个报表程序,他会考虑用Excel的COM对象来实现。国内软件公司中的项目经理,绝大部分是这一类型的人才。待遇一般在6000到15000元左右。

  五、聪明型:该类人员的工作经历不重要,可以是还没毕业的学生,也可以是工作了10年的老鸟,1周内(甚至一小时)就熟悉了一门语言,并且可以开始用该语言开发,该类人员,由于学习能力很强,短时间内就熟悉了许多语言,即使从来没用过该语言,也敢于在该语言上进行软件开发,选择什么样的语言,不在于学没学过,而在于是否适合解决当前问题。对技术充满好奇与激情,举个例子,如果该类人员接触过linux,马上就会被Linux的魅力所吸引。即使与自己的工作无关,也会一回家就研究linux,可以肯定的是,该类人员的笔记本电脑上,肯定安装有linux ,并且,linux的启动次数和windows的启动次数一样多甚至更多。如果该类人员接触到了人工智能,至少会编写一个推理机程序来用用。另外,该类型人才的典型特点是学习能力超强。英语不一定很厉害,但是,不害怕看英文资料。该类型人才,许多并不是计算机专业毕业,可以是学数学的,物理的,音乐的等等都有可能。我就见过一个学英语的学生属于这种类型。该类型的人才,几乎所有的病毒代码是他们写出来的(不算那些修改病毒代码的人)。爱表现,也是他们的特点。如果该类人员在读书,那么,他们是软件公司青睐的人才,绝对不会出现简历递出三份还没有人要的情况,一旦进入公司,在半年内,其才能一定会得到公司领导的认可,并作为重点培养对象。为了留住这样的人才,软件公司一般会每听说有别的公司要挖他的消息就会给他涨工资一次。薪水的增长速度往往令同事红眼。

  六、技术天才型:该类人才,技术方面一流,如果只从技术方面的学习能力,创新能力来讲,都要超过以上的任何一种类型的人才。上帝造人总是很公平的,他们在技术方面是天才,往往其他方面几乎白痴,不善与人交往,甚至害怕与人交往。另外,某些东西对他们有致命吸引力,比如,有些人就迷恋自己做一个操作系统,有些人就迷恋人工智能。该类人员,不写软件则以,一写,肯定是一流的。全球一流。从语言来讲,因为他们几乎不用微软的开发工具做具体的项目,他们所看的技术资料,全部是英文资料,在网上交流的,全是操英语或者法语的人。即使是中国人,他们也习惯用英语与别人进行技术沟通。该类人才,如果在工作,一般是在某实验室,或者是在某基金的资助下开展研究,如果在软件公司,一定是主持举世瞩目的软件项目。或者,在自己开的小公司既当CEO又当CTO。由于其技术的优势明显,即使他不是一个很称职的CEO,也能让这个公司维持下去。

  七、数学家型:该类型人才,也许根本就不懂具体某种语言的开发(也可以懂),整天就研究算法。建模。一般不属于计算机专业。他们要把自己的成果变成现实,往往习惯找聪明型或者天才型人才帮他们实现。该类人员,因为不学计算机,所以,无法描述他们在学习技术方面的能力,但是,创新能力绝对一流。该类人才,没有在软件公司工作的,当然,如果其成果有一定商业价值,他们会成为某软件公司的顾问。或者干脆在某软件公司的实验室中当个主任什么的。

  八、比尔型:因为比尔的影响力巨大,所以,我们把具有一定软件开发能力,又有很强的商业运作能力的人归到这一类。比尔型人才,学习能力,在聪明型之上,在技术天才型之下。由于起社会知识面非常广泛,所以,知道什么软件能赚钱,怎么样做能赚钱。该类人写软件的目的只有一个,那就是赚钱,而不会太在乎采用什么样的技术。他们写软件,会极力迎合用户,迎合市场。

  对人的划分,有时候是很难的,有的人是跨类型的。但是,缺少创造的人,最多就到达熟练工型,具有超强创造力的人,可以达到技术天才型和数学家型,如果还有商业头脑,成为比尔型也是可能。最后一句话,如果你连足够的学习能力都没有,那么,就请你离开软件开发行业,另谋出路比较合适。

  

10月4日

抽烟的女人

有人说抽烟的女人是受过伤的.因为经不住伤痛,女人沉默的学会了抽烟,来排解自己的痛苦与不安.
也有人说抽烟的女人老练深沉,因为他们早已经看透了什么是爱.
还有的人说抽烟的女人很无聊,讨厌那样的感觉,因为看着不习惯.
烟,全民的消遣品,代表什么?
寂寞的时候抽只烟,想念着过去的爱,怀念着曾经不曾拥有的快乐和幸福,那是一种陶醉.
痛苦的时候抽只烟,抛弃一切自己或者别人给与的疼痛,不再回忆岁月带给的沧桑和沉寂,那是一种无奈.
女人,很敏感的话题,也是聊的最开的话题,带给我们的无限的遐想与爱怜.更何况是抽烟的女人.
曾经很不理解女人抽烟是为了什么,因为抽烟只是男人的事,是男人的专利.女人抽烟,只会用惊讶的目光去对待,却不知其中的意义.
时间是最有力的证明.现在我明白了,男人有伤痛,有不解与烦恼.女人也是人,他们也有.
终于明白了一切.
抽烟的女人更深沉,更有魅力.
抽烟的女人带着更多的刺痛,更多的无奈.
抽烟的女人更凄美

抽烟的女人有魅力,喜欢抽烟的成熟女人,给人的感觉是沧桑,是优雅。心烦的时候,无聊的时候,总希望所有不快,都随烟飘散。但似乎一切都是徒劳,在里面我只能找到些许,颓废与放纵。找不到爱的人,颓废的确是一种美,而且是我很喜欢的那种,不过我常常努力让自己不那么颓废。

抽烟是一种深呼吸,有人抽烟也许是因为午夜的寂寞与孤独,或许也是为了麻痹小脑,为了忘却一些忘不掉的过去。有时候觉得烟才会让我觉得我是真实存在的,女人燃烧自己的一生只为点一支烟吗?

我喜欢抽烟来平静自己的心情,喜和忧的时候;我喜欢在抽烟的时候思索问题,那时我会最清醒;我喜欢抽烟度过寂寞的时间,仿佛能从黑暗中走出。烟已成为我的唯一知己,只有我会抛弃它,它绝不会抛弃 我。

世界上最可怕的事情之一,是做一个孤独的人,尤其是女人。抽烟的女人是美丽的,烟圈中的女人是孤独的,点着的是烟,燃着的是生命。不知道,为什么无情的烟会被注入感情。习惯看着烟一圈一圈地燃烧,有种被释放的感觉。可当你想延续这种感觉的时候,烟却越来越短,和爱情一样,当你想更靠近的时候却发现爱情已经被时间沉淀了。

有时只是喜欢烟,而不是抽,喜欢那种把东西吐出的感觉,如同解下身上所有的包袱,放出心中所有不快。喜欢在夜里不停地抽,一支接一支,生命永无休止,那点点火光,照亮黑夜,照亮我的心田。让短暂的晕眩变成永恒。

抽烟的女人,很寂寞,很美丽,也很无奈……
抽烟的女人 你快乐吗~~~~~?

没有伤痕的女孩是不会爱上吸烟的...... 
没有受过伤害的女人,是不会爱上伤口的。 
所以,一个没有受过伤害的女人是不会爱上烟的。 
烟是对那些美好细节的缅怀。做着一个神情忧郁的女子,坐在冬天忧郁的场景里吸烟的姿势,总是让我有一种说不出的酸涩。我知道此时此刻,内心的疼痛,象蓝玫瑰一样绽放。 
烟是短暂的,所有销魂的东西,都是短暂的,而美丽也因为短暂而更加美丽。受一点点伤,就会哭泣,那是紫罗兰般的少女,但是吸烟的女人却不会轻易哭泣,选择了烟,也就选择了一种绝美。爱是一种伤害,但女人们却在伤害中寻找快乐。烟也是一种伤害,但同时,烟又让女人忘记了伤害。如果说,不吸烟的女人是一抹胭脂红,那么吸的女人就是一朵曼陀罗。烟渐渐飘散,飘不散的是风情和幻想。 
一支烟。对于女人来说,究竟意味着什么?或许是情欲的颠峰,或许是分手的凄恻。没有伤害的爱是不完整的。想起或者忘记那些爱过的和伤过的人,都需要烟。烟不是一种生理需要,烟是一种心理需要。烟让女人销魂。长长的,细细的,烟在清滢动人的纤指之间燃烧,如同那深蓝色的指甲,有一点深邃,有一点慵懒,有一点妩媚,有一点温婉,还有一点迷情。一支烟,更象是一种别离。

见到的一些话

老一代人完全不用担心小辈们会在你们的路上跌倒,因为他们根本走的是另一条路.
心理变,态度也变;态度变,行为也变;行为变,习惯就变;习惯变,人格就变;人格变,命运就变。
——心理改变命运
美人会老,爱情会冷,婚姻会旧
——人生三大悲剧
男孩,如果你不能为心爱的女孩穿上嫁衣,那么请停下你解开她衣扣的手
——一个过来人的话
如果你不能改变你的容貌,那么就改变你的表情吧。
——阳光般的表情写在脸上,即使长得不漂亮,也很可爱
增强影响力的秘诀不是表达,而是聆听
——戴尔,卡内基
你可以在月光下认识你的情人,你一定要在阳光下认识你的终身伴侣
——台湾作家刘墉
男人最痛苦的三件事:被情人撞见陪老婆买菜,被老婆撞见同情人逛街,被老婆和情人同时堵在巷子里
——某婚外恋者在铁杆朋友前面的唏嘘
作为一名企业家,经营好企业是立业之本,经营好家庭是立世之本,经营好自己是立身之本
——卤冠球
许诺通常分为两种:一种如清茶,倒一杯是一杯,一种是啤酒,刚倒半杯,泡末就开始翻腾
——别让表面现象蒙住眼睛
如果把世界上每个人的痛苦放在一起,再让你去选择,你可能该是愿意选择自己原来的那一部分
——苏格拉底的“痛苦”哲理
爱是永久的拥有善的欲望
——柏拉图
象野猪一样勇往直前,象狮子一样统率一切,象黄牛一样勤勤恳恳,象小猫一样不受他人左右,象小狗一样与众协调,象猴子一样机动灵活,有时候还要象梅花鹿一样小心谨慎
——某大学老师给毕业生的留言
恋爱就象弹钢琴,开始尚有规律可循,接下来便完全发自真心
——一位自称经历多次相亲,最后成功找到意中人的过来人的妙喻
中国足球的希望永远寄托在下一代,只是不知道“下一代”究竟是哪一代
——可怜的球迷们,要知道大多数中国球员只把踢球当成一项职业,而不是事业,混碗饭而已
一个好人的生命等于别人的两倍,因为他把自己的一生留在别人的记忆里
——马休尔如是说,事实上我们对别人给自己的伤害的以及要更深
老鼠嘲笑猫的时候,它身后一定有个鼠洞
——退路什么时候都很重要

9月8日

资源汇总

本帖仅用来收集本版中出现的各种有价值的帖子,
望大家多发主题帖,或直接跟帖。

(zhangjj)一个绝好的大型软件iso下载ftp站!
http://bbs.downsurf.com 主论坛
ftp://list:list@soft.downsurf.com 软件站24小时开放高速下载 已经更新超过300G的软件
水晶报表9.2中文版等 每日更新0day破解软件
最新程序设计工具及组件;以ISO为主

(icetea)小弟刚来,给大家推荐一个网站,可以下载很多书,经常更新,如果你需要什么书,还可以去那发贴子找,有很多人愿意帮你的
www.itebook.net

(whucspanda)一个不错的下载网站
www.kingti.com
这是一个不错的网站,里面有不少的书可以下载,而且是免费的,也不是教育网,这样,大家都可以去了,我无意间发现的,而且用google也可以搜出不少这类网站

(默难)CSDN上看见的,拿来分享一下:
1.C++ Primer英文版:
http://computerstep.w18.net/C/C++%20Primer.zip
2.Effective C++中文版:
http://dlb.pchome.net/development/r...ectiveCplus.zip
3.More Effective C++中文版-zhc译
http://cable.pchome.net/development...nce/MEC0410.zip
4.More Effective C++中文版-候捷译
http://www.nethovel.com/resources/MoreEffectiveC++(WQ).zip
5.Essential C++中文版(全)-候捷译
http://www.nethovel.com/resources/Essential%20C++中文版(全).rar
6.Programming Windows程式开发设计指南-Petzoldi著 余孟学 译
中文版:
http://www.nethovel.com/resources/P...gWindows_tw.chm
英文版:http://www.nethovel.com/resources/Petzoldi.chm
7.WinAsm32汇编教程- Iczelion
http://www.nethovel.com/resources/winasm.chm
8.Windows 95 程序设计指南-候捷译
http://www.nethovel.com/resources/win95adg.zip
9.Thinking in C++ 2nd Edition(C++编程思想)
英文版:
http://www.nethovel.com/resources/ThinkinginC++.zip
中文版:http://www.dingbing.com/book/thinkc.zip
10.人月神话-中文版
http://www.goodassister.com/book/rysh.pdf
11.The C++ Programming Language英文
http://computerstep.w18.net/C/The%2...%20Language.rar
12.VC技术内幕第五版 http://www.helpwork.com/downdata/bo...++2/invcpp5.chm
13.com技术内幕
http://www.helpwork.com/book/html/u...oad.asp?id=1123
14.com+技术内幕
http://www.helpwork.com/book/html/u...load.asp?id=952
15.新编 Windows API参考大全
http://www.4046.com/nnsrc/down/WindowsAPIdq.rar
虽然很多都是Windows的,但都是好书(也都很贵~这回省钱了……可惜很多我都买了………………T.T)

(manux) samba HOWTO Collections 中文版
编译:meaculpa(
meaculpa@21cn.com
http://www.linuxforum.net/doc/Samba...Collection.html



(redflaglinux9.8)c++视频学习看了一下,比较基础,点播:
http://www.cntvu.net/teaching/vodpl...++语言程序设计#
下载:
http://www.cntvu.net/teaching/vod/C++/C01.rm
.
.
http://www.cntvu.net/teaching/vod/C++/C12.rm


(Roc.Ken)成都理工大学ftp
每个线程有220K/S,资源丰富,看看就知道了
http://ftp.cdut.edu.cn/

有 N 多镜像的好站,资料巨丰富:ftp://ftp.linuxforum.net/
清华的; ftp://ftp.tsinghua.edu.cn/mirror/
(allsex)向大家推荐一个不错的学习资料下载站![分享]
http://www.JuSTudy.com/bbs/get.asp?get=592
内容很多,计算机,外语,视频书籍等.主要质量高!一般都能下!我还没碰到死链接!
有兴趣的看看吧! (连不上可能服务器忙,等一下再试)

(fangsc)大中华区第一本Linux杂志--香港Linux Pilot!大中华区第一本Linux杂志--香港Linux Pilot!月刊港币38块,现请教大家如果在大陆发行多少价钱比较合适?详细如下:
http://www2.linuxpilot.net/profile/

(manux)samba HOWTO Collections 中文版
编译:eaculpa
meaculpa@21cn.com
http://www.linuxforum.net/doc/Samba...Collection.html

(whucspanda)www.kingti.com这是一个不错的网站,里面有不少的书可以下载,而且是免费的,也不是教育网,这样,大家都可以去了,

(kanghua)linux kernel development 翻译的部分草稿,希望大家批评我们将翻译的部分草稿发布在
www.linuxsports.com上,希望大家能给以意见

**
(zhangjj) 一个绝好的大型软件iso下载ftp站!
http://bbs.downsurf.com 主论坛http://list:list@soft.downsurf.com 软件站24小时开放高速下载已经更新超过300G的软件水晶报表9.2中文版等每日更新0day破解软件最新程序设计工具及组件
以ISO为主

(sron) 大量经典编程书籍下载
http://www.sron.net/SoftView/SoftView_956.html

(butian)这是个影像资料免费下载的地方,速度太快了http://www.JuSTudy.com/bbs/get.asp?get=3669

(sron)推荐:一个巨好的下载电子书的地方!
http://www.sron.net/SoftList/Catalo...ime_Desc_1.html
早上速度快,其他时间可能慢点,但是绝对全部可以下载

(tseteen)linux的一些书籍
http://linux.tcpip.com.cn/download/...d/linuxbook.zip
http://linux.tcpip.com.cn/download/...ad/newhowto.zip
http://www.linuxaid.com.cn/download...linuxsos-cn.pdf
linux代码分析
http://oldlinux.org/download/clk011c-1.2.2.pdf
http://oldlinux.org/download/clk011c-1.1.0.pdf
http://oldlinux.org/download/clk011c.pdf
论坛http://www.oldlinux.org/index_cn.html

(tseteen)微软字体rpm包
一些说明
http://avi.alkalay.net/software/msfonts/
下载
[url]http://webperf.org/msfonts/
" target="_blank">http://webperf.org/msfonts/" target...rg/msfonts/</a>
可以看看
(sron) 推荐:一个巨好的下载电子书的地方!早上速度快,其他时间可能慢点,但是绝对全部可以下载
http://www.sron.net/SoftList/Catalo...ime_Desc_1.html

(butian) 这是个影像资料免费下载的地方,速度太快了!学习资料下载站!超多英语视频音频.电脑视频教程http://www.JuSTudy.com/bbs/get.asp?get=3669

(cpcw1534)www.linuxiso.org
(dosy)ftp://202.192.39.252
http://download.chinaitlab.com/

高达500G的海量免费学习资料火热下载中!
我靠!牛X,
普通用户也可以达到很快的速度!!


ftp://down:chinaunix_down@ftp.jms165.com
ftp://download:download@61.175.133.230
ftp://loveunix:loveunix.net@loveunix.oss4e.org

林林总总,包罗万象ebook(不光是java)
http://www.mcu.cz/atm/index.php?&di.../Languages/JAVA

AT&T 的汇编asm
http://download.linuxsir.org/progra.../asm.pdf.tar.gz

ftp://linux123:linux123@mail1.cyu.edu.cn/
不知道有效几天,抓紧下

sron)Java编程经典书籍下载
java编程思想第二版
http://www.sron.net/SoftView/SoftView_1480.html
Effective java
http://www.sron.net/SoftView/SoftView_1481.html
Core Java 2 Volume I
http://www.sron.net/SoftView/SoftView_1482.html
Core Java 2 Volume II
http://www.sron.net/SoftView/SoftView_1483.html
Thinking In Java 3rd
http://www.sron.net/SoftView/SoftView_1476.html
More Exceptional C++
http://www.sron.net/SoftView/SoftView_1479.html
The Pragmatic Programmer(程序员修炼之道)
http://www.sron.net/SoftView/SoftView_1477.html
你的灯亮着吗
http://www.sron.net/SoftView/SoftView_1475.html
精通EJB(第二版)
http://www.sron.net/SoftView/SoftView_1473.html
C++批判(第三版)
http://www.sron.net/SoftView/SoftView_1472.html
洪恩畅通无阻-高效架设RedHat Linux服务器
http://www.sron.net/SoftView/SoftView_1484.html

(eastsurfer)一个不错的FTP站:ebook
ftp://202.38.68.228


(dsj)图书资源和数据库集****享
借朋友的网站收集平时知道的资料,包括各类电子图书阅读下载、数据期刊文献检索和图书馆入口,有兴趣的朋友可以看看。
http://www.wonyen.net/bbs/nboard.asp?ntypeid=33

(0013) 下载图书的网站
"www.vvon.com"挺不错的网站,大家的可以看看!!:)

(cloudstar817) 完全免费的资源网
http://www.eimhe.com/get.asp?get=cloudstar817
LINUX,WINDWOS大量课件,及视频教程免费下载,如
发现不能下载,请及时与站长联系
http://www.eimhe.com/get.asp?get=cloudstar817
本站论坛也期待大家的参与,让我们携手一起学习进步
http://www.eimhe.com/get.asp?get=cloudstar817
希望能为大家学习带来好处,觉得好的话,别忘了顶哦!

(Bad_good_boy200) 一个不错的linux书籍下载站点
www.ddvip.net 里面的书籍全免的,只是视屏要交一点money!OK,去看看吧!!

(Roc.Ken)较多的英文原版的资料:
ftp://tu172055.tsinghua.edu.cn/pub/

(shf123001)张孝祥的Java,JavaScript网页编程、ftp服务器架设视频下载
下载地址:
http://www.it315.org
(xiyuonline)微软思科认证联盟是IT认证考试服务包括:MCP、MCSE、MCDBA、MCSD、MCSA,CCNA 、CDA 、CCNP、CCDP、CCIE、SCJP、SOLARIS、Oracle,CIW,HP,IBM,NOVELL、SYBEY,NOTEL等各种IT认证考试)以及bible的销售,以及在线教育等。
http://www.mscisco.com

(hy1985119)好消息!第一个大型linux交流体系诞生~~
大家好,我是原linux focus群体系的总负责人
现与GBunix合并..并成立LF-GBunix群体系
与GBunix的此次合并,标志着linux交流体系的转型.由固定的资料站,非即时互动的BBS和纯交流的即时信息向动态化,易用化,多元化整合.资讯库地址
www.gbunix.com

(Roc.Ken)包含Oracle视频的一个ftp站点:
ftp://202.96.64.144/

(jeffreyli)cu精华区资料下载
由于本人是初次制作 不免有些问题 望大家多提意见
http://www.tyfte.com/jeffrey/soft/unix.chm

(loveunix1)Linux命令使用大全
http://unix-cd.com/unixcd/down_view.asp?id=941

(沉默等待回答) 免费RedHatLinux9视频学习教程 366.91兆
专业电子电脑书库, 例如:
RedHatLinux9视频教程 366.91兆
高效架设RedHatLinux服务器 543.63兆 地址:
http://www.netyi.net/in.asp?id=沉默等待回答
或者
http://www.netyi.net/in.asp?id=%B3%...%FD%BB%D8%B4%F0

(lanmeng)免费学习Linux课程
今天发现一个网站,有好多免费的Linux的教学课件,有关于linux下的磁盘管理,还有在Linux下配置防火墙等视频课件。
链接地址:
http://www.chinaitlab.com/www/school/linux-dem.asp

(manux)samba HOWTO Collections 中文版
编译:meaculpa(
meaculpa@21cn.com
http://www.linuxforum.net/doc/Samba...Collection.html
------------------
(孤独的月)【下载】redhatfc2 bt下载地址~
http://www.manfen.net/forum/btsubsystem.php?type=77

(smartmouse)【原创】SUSE下载地址集锦
http://www.pumcpc.com/
详细资料请看原帖:http://www.linuxeden.com/forum/showthread.php?t=112586

(风鹣沧月)给喜欢Unix的朋友免费提供*.UnixNic.com二级域名
详细资料请看原帖:
http://www.linuxeden.com/forum/showthread.php?t=115093


(chenpeng89) 【推荐】介绍一个不错的网站
介绍一个很不错的免费软件(破解版)网站
http://www.rj518.com/

(want666666)我收藏的一个精品电脑技术、建站资源网!
这个网站提供了大量免费电脑资源提供下载.
3100个商业模板+2000余个Flash源码;每款模板和FLash都有演示.
300CD PSD源文件和各类设计资源;20CD电脑技术教程;近千个中文字体在线演示和下载;2000多个精品ASP、PHP、JSP等网站源码。

网站地址:
http://www.xfbbs.com
12月11日

pass

 

昨天晚上,查了计算机2级考试,哈哈竟然通过了,本来我以为只能过笔试,因为机试只做出一道运行成功的题.第2道怎样也弄不出来,没时间了,只好想第三道,做完也交卷了,没怎摸运行.考完出来以为挂了.没想到...哈哈pass.congratulations to me啦!!
13号去计算中心楼报3级,考甚摸呢?
 
先去图书馆看看吧,看看甚摸好学一些,有用一些>>>>>>>>

12月1日

完成

昨天弄了半天,今天弄了半天,终于把数据库做好了
心理这个高兴呀
vb.sqlsever.access倒股出来了
下周1交作业,总算出来了
明天可以安心自习去了
爽,外边正开 舞会呢,漂亮姑娘不少,嘿嘿..
忍了,看看邮箱,谁来信了
11月7日

作业

开始做我的数据库作业了,
sql sever2000,做个什么呢?
先看资料吧!!
9月16日

明天考试了

计算机2级明天开考,
   复习了一段时间,终于
      要上战场了.
        其实许多事情不一定要看结果
  只要过程走的完美就好了
9月7日

computer 2 exam

the exam will be held at 9.18.
some person say:you must good good study ,day day up .or you will be filure.
for myself ,i want pass this eaxm.
do my best ba!