| 帆 さんのプロフィール囚鸟的游泳池フォトブログリスト | ヘルプ |
|
囚鸟的游泳池今宵酒醒何处,杨柳岸、晓风残月。便纵有千种风情,更与何人说 8月29日 POJO应用框架:Spring与EJB3.0的比较 Spring框架虽然很流行但并不是一个标准的开源框架。EJB3.0是由Java Community Process (JCP)制订的标准框架.这两个框架结构都有一个共同核心设计理念:将中间件服务传递给耦合松散的POJOS (Plain Old Java Objects, 简单洁净Java对象)。 本文将对Srping和EJB3.0框架背后的关键不同处进行考察,并讨论其优缺点。本文的观点也适用于其它更少为人知的框架,因为他们都是对“耦合松散的POJO”的设计。
艾伯特.爱因斯坦曾经说过:“一切都应该尽可能地简单,但是不能更简单。”确实如此,简化一门理论的基本假设,使我们可以专注于真正关键的地方,这正是一直以来对科学真理的追求。企业软件开发同样如此。 提供一个将复杂的事物(例如,事务、安全或持久性)对开发者进行隐藏的应用框架是简化企业软件开发的关键。一个设计良好的框架可以提高代码重用率、开发者的生产力及软件的质量。然而,现有J2EE1.4的EJB2.1框架被普遍认为设计差,且过于复杂。不满于EJB2.1的框架结构,Java开发者尝试了各种各样的中间件服务传递方法。最引人注目的是,以下两个框架引起了开发者极大兴趣并得到了大量正面的反馈。他们以未来企业Java应用所选框架的姿态展现。 Spring框架虽然很流行但并不是一个标准的开源框架。它主要由Interface21 Inc开发和控制。Spring框架结构是基于依赖注入(Dependency Injection (DI))的设计模式。它可以独立或在现有的应用服务器上运行,而且大量地使用了xml配置文件 EJB3.0是由Java Community Process (JCP)制订的标准框架,为所有主要的J2EE厂商支持。JBoss已经提供了试用版EJB3.0标准的开源或商业性质实现。EJB3.0充分利用了Java的注释 这两个框架结构都有一个共同核心设计理念:将中间件服务传递给耦合松散的POJOS (Plain Old Java Objects, 简单洁净Java对象)。 这样的框架利用截取执行上下文或在运行时将服务对象注入POJO来把应用服务“缠绕”到POJO。POJO本身并不关心这种“缠绕”,对这种框架结构也没有什么依赖。因此,开发者可专注于业务逻辑和脱离框架的POJO单元测试。除此之外, 由于POJO并不须要继承框架的类或实现其接口,开发者能够极其灵活地搭建继承结构和建造应用。 然而,在拥有同一理念的同时,两个框架结构使用不同的方式来传递POJO服务。许多书籍或文章都将Spring 或EJB3.0和EJB2.1做了比较,但是对Spring 和EJB3.0的比较并没有仔细研究过。在本文中,我将对Srping和EJB3.0框架背后的关键不同处进行考察,并讨论其优缺点。本文的观点也适用于其它更少为人知的框架,因为他们都是对“耦合松散的POJO”的设计。希望这篇文章可以帮助你选择适合你需求的最好框架。 厂商无关性 开发者选择Java平台其中最引人注目的理由之一:厂商无关性。EJB3.0正是一套设计为厂商无关的开放性标准。EJB3.0标准为所有企业Java社团里开源或商业性质厂商所开发和支持。它将开发者与应用服务器实现完全隔离。例如,JBoss的 EJB3.0实现基于Hibernate,Oracle的基于TopLink,但是开发者并不须要学习Hibernate- 或TopLink的具体API来使应用可在Jboss或Oracle上运行。厂商无关性使EJB3.0与现今其它POJO中间件框架区别开来。 但是,正如许多EJB3.0评论家迅速所指出的,在本文撰写时EJB3.0标准还没有到达一个最终版本。大概还有一到两年的时间EJB3.0才能广泛地为所有主要J2EE厂商所支持。即使你的应用服务器本身不支持EJB3.0,你仍然可以通过下载安装”内嵌的”EJB3.0产品来运行EJB3.0的应用。例如,JBoss的内嵌EjB3.0是开源产品且可以在任何J2SE5.0兼容的环境运行(例如, 在任何Java服务器上),此产品正处于软件测试阶段。其它厂商不久也将发布自己的内嵌EJB3.0产品,特别是针对标准中关于数据持久性的部分。 另一方面,Spring一直以来都是非标准的技术,在未来可预知的一段时间内这种情况将持续下去。虽然你可以在任何应用服务器上使用Spring框架,Spring应用会被锁入在Spring本身和你选择整合进Spring的具体服务中。 Spring框架是一个开源项目,但同时它有一个XML格式的配置文件和编程接口。当然任何一个非标准的产品都会有这种“锁入”(lock-in)的情况,并不是Spring特有的。但Spring应用的长期生存能力仍然还得托Spring这个项目的福(或者是Interface21公司,它雇佣了大部分Spring核心开发人员)。除此之外,假如你用到任何一个具体的Spring服务,例如,Spring事务管理器或则Spring MVC,你也会被锁入到这些API里。 Spring的应用对终端用户是不可知的。例如,对数据持久服务,Spring框架兼容不同的DAO和JDBC的模版帮助类,如Hibernate, iBatis, 和 JDO。所以假如你需要为spring应用切换在数据持久化服务(例如从JBDC到Hibernate),你需要修改你的代码以适合新的模版帮助类。 服务整合 从一个很高的角度上看,Spring框架处于应用服务器和服务库的上方。服务整合的代码(如,数据访问模板和帮助类)属于框架,并暴露于应用开发者。相反,EJB3.0框架与应用服务器高度整合,服务整合代码也包装在一个标准接口后面。 因此,实现EJB3.0的厂商可以大大地优化整体性能和提升开发者的体验。例如,在JBoss EJB3.0的实现中,当你在用EntityManager持久化一个Entity Bean时,后台的Hibernate会话事务已经自动地帮定到调用方法的JTA 的事务上,在JTA 事务提交的同时Hibernate会话事务也提交了。你甚至可以使用一个简单的 @PersistenceContext 注释(稍候例子演示)将EntityManager和它后台的Hibernate事务绑定到一个stateful session bean的应用事务中。在一个会话中应用事务横跨多个线程,这在事务性网页应用很有用,例如,多页面的购物车。 由于高度整合的EJB3.0的框架,使简单、集成的编程接口成为可能。Oracle EJB3.0框架和其后台的Toplink持久化服务也同样程度地整合。 另一个EJB3.0整合服务的绝好例子就是集群支持。假如你在一个服务器集群上部署了一个EJB3.0的应用,所有容错(fail-over)、负载均衡、分布式缓冲和状态复制都已经自动为应用所获得可用。后台的集群支持被隐藏在EJB3.0的框架后面,对EJB3.0开发者来说这些都是完全透明不可见的。 在Spring里,很难优化框架和服务之间的通讯。例如,为了使用Spring里的声明事务服务来管理Hibernate事务,你必须显示地在XML文件中配置Spring TransactionManager和Hibernate SessionFactory对象。Spring必须电显示地管理横跨多个HTTP请求的事务。除此之外,没有别的方法均衡Spring应用里的集群。 服务组合的弹性 由于Spring的服务整合代码作为编程接口的一部份暴露在外,应用开发者有按自己需求装配服务的弹性。这个特点使你能够组合自己的轻量级应用服务器。Spring的一个普遍用法就是将Tomcat和Hibernate组合在一起支持数据库驱动的web应用。在这种情况,Spring本身提供事务服务,Hibernat提供持久化服务——这种设置创建了一个袖珍型的应用服务器。 EJB3.0应用服务器典型地不提供这种根据需求任你挑捡服务的弹性空间。大多数时间,你得到的只是一系列包装好的特性,其中一些你可能根本就不需要。但是如果应用服务器像JBoss一样提供一个模块性的内部设计,那么你可以只取其中一部分,而把不必要的部分剥去。在任何情况,去自定义一个功能强大的应用服务器是没有什么价值的。 当然,假如应用已经超过单个点,那么你应该加入常用服务器上的服务,例如,资源池(resource pooling),消息队列(message queuing)和集群(clustering)。就总体的资源消耗而言,Spring解决方法和其他EJB3.0解决方法一样是重量级的。 在Spring框架里,具有弹性的服务装配使得将虚拟对象而不是真正的业务对象绑定到应用中做脱离容器的单元测试更简单。在EJB3.0应用中,大多数组件都是简单POJO,他们可以很容易地在容器外被测试。但是对于与容器服务相关的对象(例如持久化实实体管理器EntityManager)建议用容器内测试。因为这样会比虚拟对象测试方法更简单,强壮及准确。 XML Vs.注解 从应用开发者的观点上来看,Spring的编程开发接口主要基于XML配置文件而EJB3.0广泛地应用Java注解。XML可以表达复杂的关系,但是它也冗长且不够健壮;注解简单明了,但是很难在注解里表达复杂或继承性的关系。 Spring选择XML或EJB3.0选择注解都是有他们两者框架后的体系结构决定的。因为注解只能容纳很少的配置信息,只有整合前的框架(重头戏都在框架里)才可以把广泛地使用注解作为配置选择。正如我们所讨论过的,EJB3.0刚好符合这个要求,而Spring作为一个普通的DI框架并不符合。 当然,EJB3.0和Spring都相互取长补短,在某种程度上他们都支持XML和注解。例如,在EJB3.0中,XML配置文件作为一个可选的重载机制来改变注解的默认行为。注解也可以配置一些Spring服务。 通过例子是学习XML和注解方式之间差异的最好方法。在下面几个环节里,让我们来看看Spring和EJB3.0是怎样提供关键服务给应用的。 声明性服务 Spring和EJB3.0都将运行时服务(例如,事务、安全、日志和配置服务)绑定到应用。因为这些服务于应用的业务逻辑是没有直接联系,他们只是由应用本身管理。换句话说,这些服务在运行时由容器透明地应用到应用中。开发者或是管理者配置容器,准确地告诉它什么时候怎样应用这些服务。 EJB3.0运用Java注解来配置声明性服务,而Sring使用XML配置文件。在大多数情况下,EJB3.0注解方式对于这种服务更简单明了。这里有一个在EJB3.0中将事务服务运用到POJO的例子。 public class Foo {你也可以为一个代码段声明多个属性,应用多个服务。这是一个在EJB3.0里同时应用事务和安全服务到POJO的例子。 @SecurityDomain("other")使用XML说明代码属性和配置声明性服务会导致冗长和不稳定的配置文件。下面是一个在Spring应用中的XML片段,其应用一个非常简单的Hibernate事务到方法Foo.bar()中。 <!-- Setup the transaction interceptor --> XML的复杂度会以几何级数增长,如果你向同一个POJO添加更多的拦截器(interceptors)(例如安全拦截器)。意识到只有XML配置文件的局限,Spring使用Apache Commons 元数据在Java源码中来说明事务属性。最新版本的Spring1.2也支持JDK-1.5风格注解。要使用事务元数据,你须要将上面的transactionAttributeSourc bean变成一个AttributesTransactionAttributeSource实例。并为元数据拦截器添加额外邦定。 class="org.springframework.aop.framework.autoproxy 当你有很多事务性方法时,Spring元数据可以简化transactionAttributeSource。但是这并没有解决XML配置文件的根本问题。冗长而又繁琐的事务拦截器, transactionManager,和transactionAttributeSource仍然需要。 依赖注入(Dependency Injection, DI) 中间件容器的一个关键好处之一就是它可以让开发者建造一个关系耦合松散的应用。服务端客户只需要知道服务的接口。容器依据具体的实现实例化服务对象,使他们为客户端所用。在不改变接口和客户端代码的情况下,这使得容器可以在多种服务实现之间切换。 依赖注入的模式是实现耦合松散应用的最好方法之一。它更易用,比其他方法也明了多了,比如通过JNDI依赖性查询或容器回调。使用DI,框架就像一个对象工厂,它创建服务对象然后按照运行时配置将这些服务对象注入到应用的POJO里。站在应用开发者的角度,客户端POJO在被使用时可自动获得正确的服务对象。 Spring和EJB3.0都提供广泛的DI模式支持。但是他们之间仍存在很大的不同之处。Spring支持一般意义上且复杂的DI API,其基于XML配置文件。EJB3.0支持大多数普通服务对象(如EJB及context对象)的注入和任何简单注解的JDNI。 EJB63.0注解非常简单易用。@Resource 标记表示注入大多数普通服务对象和JDNI对象。以下例子展示了怎样把服务的JDNI的默认DataSource 对象注入到POJO的一个属性变量中。DefaultDS是DataSource.的JDNI名字。MyDb变量在第一次被使用时被赋上了正确的值。 public class FooDao {除了直接属性变量注入,Ejb3.0的@Resource注解也可以用来在setter方法里面注入对象。例如,下面的例子就是注入session context对象。应用从不会显示地调用setter方法,其在其他方法被调用前由容器来触发。 @Resource 针对更复杂的服务对象,定义了专用的注入注解。例如,@EJB注释用来注入EJB的Stub,@PersistenceContext注解用来注入处理EJB3.0实体bean访问数据库的EntityManager对象。下面是一个怎样将EntityManager对象注入有状态的 session bean的例子。@PersistenceContext的type属性具体说明了被注入的EntityManager有一个扩展的事务transaction context。transaction context并不会同JTA transaction manager一起自动提交。因此它可以用在在一个会话横跨多个线程的应用事务中。 @Stateful EJB3.0标准通过注解可以被注入的服务器资源。但是它并支持将用户定义的应用POJO之间的相互注入。 在Spring中,首先你必须为POJO中的服务对象定义一个setter方法。下面的例子说明POJO需要一个Hibernate session 的引用 public class FooDao {然后,以XML里的元素作为桥梁具体描述容器怎样在运行时得到服务对象并将其注入到POJO里。以下是一个XML例子,具体描述了将一个数据源绑定到一个Hibernate session factory,然后从Hibernate session factory到Hibernate template object,最后从template object到应用的POJO。Spring代码如此复杂的部分原因是因为我们须手手动注入后台Hibernate plumbing objects。而EJB3.0 EntityManager是自动被服务器管理和配置。这又将我们带回到Spring并不像EJB3.0那样高度与服务整合的论点上。 <bean id="dataSource" 虽然,Spring里基于XML的依赖注入语法复杂,但却功能强大。你可以将任何POJO注入到另一个POJO,包括你自己在应用定义的那些POJO。假如你想在EJB3.0应用中用Spring的DI功能 ,你可以通过JNDI把一个Spring bean factory注入到EJB。在一些EJB3.0的应用服务器里,厂商可能会额外定义非标准的POJO注入API。一个很好的例子就是JBoss MicroContainer。它比Spring更一般化,因为它处理Aspect-Oriented Programming(AOP)的依赖。 结论 Spring和Ejb3.0虽然都是为了向企业服务提供耦合松散的POJO,但是使用了不同方法来达到这个目的。两者都大量地使用了依赖注入。 对于EJB3.0,基于标准的方案、注解的广泛使用、与应用服务器的高度整合都使得EJB3.0拥有更好的厂商无关性,更高的开发效率。依赖注入和集中的XML配置文件协调一致的使用使开发者能够构建更有弹性的应用,并且可以同时和几个应用服务提供者一起协作。 8月18日 技术类人员的职业发展方向几乎每个企业都需要技术人员的支持,生产制造型企业需要现场生产控制和工艺流程方面的技术人才;IT等高科技行业需要大量软件研发和设备维护的硬件工程师;房地产、建筑工程领域需要建筑设计师、土木工程师和施工技术人员。此外,不论是国企、民营企业还是外资公司,都需要大量的基础技术工人。甚至很多在豪华写字楼office内工作的白领,从事的工作都是和技术相关的。 不过,一个严峻的现实是,大量的技术类人员对自己的职业定位和职业生涯规划显得非常迷茫和困惑。中国有句古话:劳心者治人,劳力者治于人。与管理类岗位相比,技术人员往往被人看低一等,他们虽然从事着非常重要、繁琐的技术性工作,但更多的是扮演着幕后英雄的角色。在社会地位、经济收入方面与分光无限的各级管理层普遍存在差距,这一现实造就了技术人员的巨大心理落差。第二个造成职业规划困惑的原因是部分技术性工作的局限性。拿IT行业来说,由于技术和知识更新的速度太快,软件开放人员普遍被认为是吃“青春饭”的职位,谁学习的更快、谁的精力更旺盛、谁更能熬夜,谁就更有竞争力,因为这时经验已经不再重要。如果超过35岁还从事软件开发的话,将很难在本职岗位取得突破。 那么,对于技术类人员来说,难道他们的职业发展前景真的如此黯淡?事实当然不会如此悲观,做技术工作同样有着非常广阔的空间,当然,关键一点你要令自己的视野更开阔些,从长远的角度来看待这个问题。根据我的经验,技术人员的职业方向可以有以下几个选择: 方向一、成为项目经理 对于很多从事技术方面工作的人员来说,发展成为项目经理是一个相当好的工作。项目管理工作既需要扎实的技术背景支持,又涉及多方面的管理工作,最适合那些技术出身但又不甘于只做技术工作的人员。成为项目经理,一方面可以充分发挥技术人员的专业优势,同时又可在团队管理、协调各方资源、内外部沟通等工作中体验和发挥作为管理者的角色和作用,从而让自身价值更为充分的实现和得到认可。优秀的项目管理人才,也是今后很长时期内的一个热门职业方向。 方向二、成为行业资深专家 如果的确非常喜爱技术工作,而不擅长和喜欢与人沟通,则可以完全专注于自身的领域,以发展成为行业资深专家为方向和目标,当然,这一发展过程可能会比较漫长,任何一个领域的顶尖技术人才都需要长期的行业经验的累积和个人孜孜不倦的投入。不过这类人才的一个优势是越老越吃香,当别人随着年龄的逐步增长而开始担心饭碗问题时,你则渐入佳境,开始进入职业发展的黄金时期。 方向三、成为研发经理或技术总监 事实上,在某些行业和企业,技术研发人员的地位是非常高的。譬如在微软、诺基亚、华为等IT产业,技术的支持和研发的速度,成为企业利润增长的最主要来源,在这些行业,技术研发部门就是企业的主战场。在不少国企和政府部门,也非常重视科技和技术工作,例如,我所知道的广州市市政园林局,就设有总工程师、副总工程师等技术职位,其中总工程师的职务级别相当于副局级,在这种氛围影响下,技术岗位人才和行政领导同样受人尊敬。所以,在一个尊重和重视技术工作的行业和企业中,发展成为研发经理、技术总监或总工程师都是一个很好的选择。 方向四、做技术型销售和服务 技术工作的领域其实非常广泛,如果感觉纯技术工作发展潜力不大,可以考虑转向做销售或技术支持方面。华为、中兴等通信技术公司的销售人员,很少是不具有专业技术背景的;甲骨文等软件巨头的市场推广,第一步常常是从销售工程师拜访客户开始的。这类高价值、高科技的产品销售推广,非常需要具有丰富技术经验的销售人员。 技术人员转向售后服务,也是非常有前途的。我认识的一个朋友,大学是施工机械专业,毕业后一直在市政工程行业做非开挖顶管施工,在几年的工作中积累了丰富的地下顶进设备的应用和维修经验,一个合适的机会跳槽到著名的顶管设备生产商-德国海瑞克公司,成为其售后服务工程师,工作上得心应手,收入也有了数倍的增长。 方向五、转向管理岗位 总有一些人,虽然是理工科出身、从事着技术岗位工作,但他们似乎天生就是具有管理天赋的人。这些人会在工作中逐步展现出管理潜质和优秀的领导能力,他们往往更喜欢跟人打交道,更喜欢与外界沟通。在这种条件下,以技术经验为基础和依托,适当补充学习些管理方面的知识,例如可以在职攻读MBA,假以时日,完全可以成长为出色的职业经理人。 方向六、高级技术操作人员 刚才所谈的职业发展方向,适用群体多为高校理工专业出身的人士,但对于数量众多的中等专科学校、技校毕业的一线技术工人来说,成为行业技术专家或研发总监的机会显然非常微小。这一群体的职业人士,最佳的技术发展路线是立足本职岗位,成为高级操作型技术人员。 广州市2006年出台的各类岗位工资指导价格中,高级技师就业的工资比博士还要高出500元。出现这一现象的原因很简单,从全国层面来说,产业工人数量虽然巨大,但高级技工的比例却非常小,“高级技工”的缺乏已经成为制约许多企业发展的“瓶颈”。但随着政策环境、企业认识角度和培育机制方面的不断改善,这一现象将逐步得到改变,所以成为中高级技师将是一个非常有前途的职业发展方向。 最后,我再次拿IT行业为例来具体谈谈技术人员的职业轨迹。 IT(Information Technology)行业的分类相当复杂,我这里仅仅分析最典型的三个部分: 第一部分是软件开发,通俗来说就是编程。实际上我认为真正的软件开发人员和制鞋工厂中的工人处在一个地位,是企业产品的最终生产者(当然这里没有贬义)。 第二个部分是MIS: Management Information Service/System(管理信息系统),主要负责基础IT建设、网络、通讯、软硬件支持、简单开发等职能,为公司其他部门提供IT基础服务。 第三部分是ERP: Enterprise Resource Planning(企业资源计划系统),主要涉及企业管理类软件实施、维护、管理。通过是引入信息化手段在企业现实的实现企业的资源管理,协调企业各方面的生产运作,它对业务的规范和企业的管理机制有很大的依赖。 让我们来分别看看这三部分人员的职业发展空间: 1. 开发人员 我的观点是,在中小企业做纯粹的软件开发很可能走上一条不归路,长期从事开发的人一般处世能力不足,升任管理人员的机会不大。而还有一个更重要的问题是中国目前开发行业的环境很不好,正如我之前谈到的基本是在吃青春饭,30往后就很难做下去了。而在美国40岁的开发人员是正吃香的年龄。虽然可能业务越来越精,但可能会离IT越来越远,向纯蓝领工人发展。 如果真的要做开发,应该找一个更好的平台,最好是进入跨国企业或国内龙头企业。如果数据方面的技术很强,可以考虑转向互联网搜索方向;如果在电子和通信设备方面有优势,可以从简单的程序开发转向通信产品的开发。 2. MIS人员 MIS内容广泛,可从事的职业很多:网管、技术支持等,而且通过努力可以得到提升成为小小的主管(当然要有自身的素质),进而成为MIS Manager,但做到MIS Manager基本也就到头了,不过倒是可以考虑转到不同的行业或企业做MIS。 同样是做IT服务,在不同公司内IT部门的地位还是非常巨大的。就我所了解的,雅芳(中国)公司的IT部门就有100多人,在公司总部的各职能部门中的地位相当高;而南方航空公司的IT部门竟然达到800多人,这个规模已经远远超过一般的IT公司,其IT部门的总裁也是公司决策层的重要成员。所以,在这些公司内做IT技术支持工作,既避免了纯编程式的软件开发人员遇到的“人老珠黄”的被动局面,也不必担心IT产业泡沫破灭而产生的生存危机。 3. ERP类人员 从事企业管理类软件的人员一般起点比较高(公司的起点就比较高),要求对财务、生产、销售等流程都有清楚地认识,从业人员不一定为IT出身,而有可能是财务人员或理工科人员等转行而来。IT的迅速发展和企业经营领域的不断拓展,为ERP的推广和发展创造了良好的发展空间。事实上,一个从事企业管理类软件的技术人员完全可以胜任一个企业的管理者,在这一领域技术人员的前景可以说是非常广阔的。 我认识的一位朋友,本科读的是工业装备控制专业,毕业后一直从事ERP方面的应用推广和管理咨询,虽然他对纯粹的IT技术了解并不是特别深刻,但在ERP系统在企业中的应用方面经验非常丰富,在别人眼中他更像是一名管理咨询师,五年下来已经是这一领域的专家级人物,在个人收入方面也非常可观。 8月5日 分享改变一生的5句话第一句 优秀是一种习惯 这句话是古希腊哲学家亚里士多德说的。如果说优秀是一种习惯,那么懒惰也是一种习惯。人出生的时候,除了脾气会因为天性而有所不同,其他的东西基本都是后天形成的,是家庭影响和教育的结果。所以,我们的一言一行都是日积月累养成的习惯。我们有的人形成了很好的习惯,有的人形成了很坏的习惯。到20岁左右的时候,我们已经有了自觉意识,已经开始明白什么样的习惯会使我们终身受益。所以我们从现在起就要把优秀变成一种习惯,使我们的优秀行为习以为常,变成我们的第二天性。让我们习惯性地去创造性思考,习惯性地去认真做事情,习惯性地对别人友好,习惯性地欣赏大自然。我的很多习惯都是在办“新东方”的这十几年中逐渐养成的,包括我对待老师和员工的态度,对很多事情的看法。你养成了优秀的习惯,在人们眼中你就会显得优秀。比如,让我们今天就学会微笑,把悲伤留给自己,把快乐带给别人。不管你是真心的还是职业性的微笑,只要你笑了,就会很美丽很好看,就会给人留下美好的印象。在西方社会,你走到很多地方人们都在微笑,尽管你知道那是职业性的,你依然能感觉这些微笑的人们很亲切。如果我们“新东方”的员工每个人都板着脸上班,大家就会感觉像窒息了一样,可能我们给他再多的钱他也不一定在“新东方”干了,除非他是个喜欢受气的受虐狂。 第二句 生命是一种过程 事业的结果尽管重要,但是做事情的过程更加重要,因为我们是在每一天的过程中生活,每一天都不幸福,就等于整个生命都不幸福。所以尽管我们注重事业的结果,因为结果好了我们会更加快乐,但过程使我们的生命充实。 人生命最后的结果一定是死亡,我们不能因此说我们的生命没有意义。欢乐是生命本身的渴望,人类是世界上惟一会笑的动物,但不是惟一懂得欢乐的动物。所有的动物都有欢乐的天性,这从很多小动物欢乐地奔跑和嬉戏中能够看出来。人类的生存常常必须有比维持生存更高的目标,因为人类除了物质生活,还必须要有精神生活的满足,因此人类必须比动物付出更艰辛的劳动。在物质方面,我们希望今年2000元一个月的工资,明年通过自己的努力变成3000元一个月,毕竟2000元和3000元给我们带来的生活质量是不一样的。但除此之外,我们还必须使精神生活大获全胜。 曾国藩说过:“但问耕耘,莫问收获”。他并不是说我们不要收获。曾国藩的意思很简单,把种子撒进地里,种子自然会成长,长到最后自然会有收获,但是在维护庄稼成长的过程中给它浇水和施肥更为重要。因为只有这样,庄稼才会长得健壮,收获才会更好。另外,你每天日出而作,日落而息的劳动过程是你人生最美好的体验。迎着太阳的你走向美丽的大地,看着夕阳西下,你扛着锄头回家,这种感觉难道不是很美好吗?差不多到了陶渊明的“采菊东篱下,悠然见南山”的境界了。 所以大家一定要寻求每一天的充实。世界上很少有永恒,大学生谈恋爱,每天都在信誓旦旦地说我会爱你一辈子,这实际上是不真实的,只是在表达一种愿望而已。但我们还是在说,因为至少在那一刻,我们这样的表达是真实感情的流露。追求永恒的爱是人类共同的梦想,因为人在爱中永远充实。但现实生活并不是这样的,统计数据表明,大学生谈恋爱的100对里有90对最后会分手,最后结婚了的还有一半会离婚。你说爱情能永恒吗?所以最真实的说法是:“我今天,此时此刻正在真心地爱着你。”明天也许你会失恋,失恋后我们会体验到失恋的痛苦。那我们就去体会,去体验,这种体验也是丰富你生命的一个过程。 第三句 两点之间最短的距离并不一定是直线 特别是在人与人的关系以及做事情的过程中,我们很难直截了当就把事情做好。我们有时需要等待,有时需要合作,有时需要技巧。也许飞机能够在两点之间直飞,但即使飞机飞行,如果前面有个大气流,也通常只能绕过那个大气流飞行。我们做事情会碰到很多困难和障碍,有时候我们并不一定要硬挺、硬冲,我们可以选择有困难绕过去,有障碍绕过去,也许这样做事情更加顺利。大家想一想,我们和别人说话还得想想哪句话更好听呢。尤其在中国这个比较复杂的社会中,大家要学会想办法谅解别人,要让人觉得你这个人很成熟,很不错,你才能把事情做成。 第四句 只有知道如何停止的人才知道如何加快速度 汽车的质量越高,开得就越快。比如像奔驰和宝马这一类车,它们的高质量不仅体现在发动机系统上,还体现在刹车系统上。你开这些车的时候,就敢于高速行驶,因为你知道,只要你踩刹车,车就能稳稳地停下来,不至于翻车或跑到马路外面去。但当我们开夏利车的时候,我们一定不会开得和奔驰车一样快,因为我们知道如果让它跑得太快了,就很难刹车了,说不定就会撞栏杆或者翻了。所以说,没有把握停下来的人是跑不快的人。 我在滑雪的时候,最大的体会就是停不下来。我刚开始学滑雪时没有请教练,看着别人滑雪,觉得很容易,不就是从山顶滑到山下吗?于是我穿上滑雪板,哧溜一下就滑下去了,结果我从山顶滑到山下,实际上是滚到山下,摔了很多个跟斗。我发现我根本就不知道怎么停止,怎么保持平衡。最后我反复观察别人是怎么停,怎么滑的,然后再一点点地学,反复练习怎么在雪地上、斜坡上停下来。练了一个星期,我终于学会了在任何坡上停止、滑行、再停止。这个时候我就发现自己会滑雪了,就敢从山顶高速地往山坡下冲。因为我知道只要我想停,一转身就能停下来。只要你能停下来,你就不会撞上树、撞上石头、撞上人,你就不会被撞死。因此,只有知道如何停止的人,才知道如何高速前进。 最后一句 放弃是一种智慧,缺点是一种恩惠 有一次我在一本书上读到这句话,开始不理解,但在生活和工作中,终于开始明白其中的意义。在生活中,我们最愚蠢的行为就是太执著于自己的东西,把自己的东西捏着不放,不愿意放弃。结果呢,你捏着不放,别人就不会把他的东西和你一起分享。没有放弃就没有得到,这是再明白不过的道理。我在这里给大家讲一下分享理论。当你拥有六个苹果的时候,千万不要把它们都吃掉,因为你把六个苹果全都吃掉,你也只吃到了六个苹果,只吃到了一种味道,那就是苹果的味道。如果你把六个苹果中的五个拿出来给别人吃,尽管表面上你丢了五个苹果,但实际上你却得到了其他五个人的友情和好感。以后你还能得到更多,当别人有了别的水果的时候,也一定会和你分享,你会从这个人手里得到一个橘子,那个人手里得到一个梨,最后你可能就得到了六种不同的水果,六种不同的味道,六种不同的颜色,六个人的友谊。人一定要学会用你拥有的东西去换取对你来说更加重要和丰富的东西。在人与人之间学会交换和分享,这个收获百倍于你一个人把六个苹果吃掉的收获。这是因为你放弃了五个苹果而获得的,所以大家想一想,放弃是不是一种智慧? 那什么叫“缺点是一种恩惠”呢?就像我们刚开始说的那样,如果我们是完美的,我们就没有了发展的空间。一生下来就什么都有了,这人还有什么活头?做人最大的乐趣在于通过奋斗去获得我们想要的东西。所以有缺点意味着我们可以进一步完美,有匮乏意味着我们可以进一步努力。我在美国看过一部电视片,讲的是一位富翁给后代留下了用不尽的遗产,结果他的后代全都变成了吸毒的、自杀的、进监狱的,或者精神病患者。为什么会这样呢?因为这位富翁给自己后代留下的钱太多了,以致他们不需要劳动就可以继承一大笔财产。继承一大笔财富,就几乎什么都能买到。大家都知道钱的作用在于能买到物质世界上你所需要的全部东西,但惟一买不到的就是你心灵的充实、别人的友情以及你真诚的爱情。由于这些都是买不到的,所以你越有钱,心灵就越空虚,你就会极力用钱来填补自己的空虚,最后没有办法了就只能以吸毒来代替,使自己进入一个虚幻的世界。所以我说,当一个人什么都不缺的时候,他的生存空间就被剥夺掉了。如果我们每天早上醒过来,感到自己今天缺点儿什么,感到自己还需要更加完美,感到自己还有追求,那是一件多么值得高兴的事情啊! 7月28日 后出师表 先帝虑汉、贼不两立,王业不偏安,故托臣以讨贼也。以先帝之明,量臣之才,故知臣伐贼,才弱敌强也。然不伐贼,王业亦亡。惟坐而待亡,孰与伐之?是故托臣而弗疑也。臣受命之日,寝不安席,食不甘味;思惟北征,宜先入南:故五月渡泸,深入不毛,并日而食。——臣非不自惜也:顾王业不可偏安于蜀都,故冒危难以奉先帝之遗意。而议者谓为非计。今贼适疲于西,又务于东,兵法“乘劳”:此进趋之时也。谨陈其事如左: 高帝明并日月,谋臣渊深,然涉险被创,危然后安;今陛下未及高帝,谋臣不如良、平,而欲以长策取胜,坐定天下:此臣之未解一也。刘繇、王朗,各据州郡,论安言计,动引圣人,群疑满腹,众难塞胸;今岁不战,明年不征,使孙策坐大,遂并江东:此臣之未解二也。曹操智计,殊绝于人,其用兵也,仿怫孙、吴,然困于南阳,险于乌巢,危于祁连,逼于黎阳,几败北山,殆死潼关,然后伪定一时耳;况臣才弱,而欲以不危而定之:此臣之未解三也。曹操五攻昌霸不下,四越巢湖不成,任用李服而李服图之,委任夏侯而夏侯败亡,先帝每称操为能,犹有此失;况臣弩下,何能必胜:此臣之未解四也。自臣到汉中,中间期年耳,然丧赵云、阳群、马玉、阎芝、丁立、白寿、刘合、邓铜等,及驱长屯将七十余人,突将无前,丛叟、青羌,散骑武骑一千余人,此皆数十年之内,所纠合四方之精锐,非一州之所有;若复数年,则损三分之二也。——当何以图敌:此臣之未解五也。今民穷兵疲,而事不可息;事不可息,则住与行,劳费正等;而不及今图之,欲以一州之地,与贼持久:此臣之未解六也。 夫难平者,事也。昔先帝败军于楚,当此时,曹操拊手,谓天下已定。——然后先帝东连吴、越,西取巴、蜀,举兵北征,夏侯授首:此操之失计,而汉事将成也。——然后吴更违盟,关羽毁败,秭归蹉跌,曹丕称帝:凡事如是,难可逆见。臣鞠躬尽瘁,死而后已;至于成败利钝,非臣之明所能逆睹也。 出师表 先帝创业未半,而中道崩殂;今天下三分,益州疲敝,此诚危急存亡之秋也。然侍卫之臣,不懈于内;忠志之士,忘身于外者:盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气;不宜妄自菲薄,引喻失义,以塞忠谏之路也。宫中府中,俱为一体;陟罚臧否,不宜异同:若有作奸犯科,及为忠善者,宜付有司,论其刑赏,以昭陛下平明之治;不宜偏私,使内外异法也。侍中、侍郎郭攸之、费依、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:愚以为宫中之事,事无大小,悉以咨之,然后施行,必得裨补阙漏,有所广益。将军向宠,性行淑均,晓畅军事,试用之于昔日,先帝称之曰“能”,是以众议举宠为督:愚以为营中之事,事无大小,悉以咨之,必能使行阵和穆,优劣得所也。亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也!侍中、尚书、长史、参军,此悉贞亮死节之臣也,愿陛下亲之、信之,则汉室之隆,可计日而待也。
臣本布衣,躬耕南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,谘臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间:尔来二十有一年矣。先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧虑,恐付托不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,甲兵已足,当奖帅三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都:此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、依、允等之任也。愿陛下托臣以讨贼兴复之效,不效则治臣之罪,以告先帝之灵;若无兴复之言,则责攸之、依、允等之咎,以彰其慢。陛下亦宜自谋,以谘诹善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激!今当远离,临表涕泣,不知所云。
"出师一表真名世,千载谁堪伯仲间” (陆游《书愤》),
“或为出师表,鬼神泣壮烈” (文天祥《正气歌》)。 |
||||
|
|