2009年5月22日星期五

详解spring事务属性(转)

Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要我们在与事务相关的方法中处理大量的try…catch…finally代码。
我们在使用Spring声明式事务时,有一个非常重要的概念就是事务属性。事务属性通常由事务的传播行为,事务的隔离级别,事务的超时值和事务只读标志组成。我们在进行事务划分时,需要进行事务定义,也就是配置事务的属性。
Spring在TransactionDefinition接口中定义这些属性,以供PlatfromTransactionManager使用, PlatfromTransactionManager是spring事务管理的核心接口。
Java代码 复制代码
  1. TransactionDefinition   
  2. public interface TransactionDefinition {   
  3.     int getPropagationBehavior();   
  4.     int getIsolationLevel();   
  5.     int getTimeout();   
  6.     boolean isReadOnly();   
  7. }  


getTimeout()方法,它返回事务必须在多少秒内完成。
isReadOnly(),事务是否只读,事务管理器能够根据这个返回值进行优化,确保事务是只读的。
getIsolationLevel()方法返回事务的隔离级别,事务管理器根据它来控制另外一个事务可以看到本事务内的哪些数据。

在TransactionDefinition接口中定义了五个不同的事务隔离级别
ISOLATION_DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.另外四个与JDBC的隔离级别相对应
ISOLATION_READ_UNCOMMITTED 这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。
  例如:
  Mary的原工资为1000,财务人员将Mary的工资改为了8000,但未提交事务
Java代码 复制代码
  1. Connection con1 = getConnection();   
  2. con.setAutoCommit(false);   
  3. update employee set salary = 8000 where empId ="Mary";  

与此同时,Mary正在读取自己的工资
Java代码 复制代码
  1. Connection con2 = getConnection();   
  2. select  salary from employee where empId ="Mary";   
  3. con2.commit();  


Mary发现自己的工资变为了8000,欢天喜地!
而财务发现操作有误,而回滚了事务,Mary的工资又变为了1000
Java代码 复制代码
  1. //con1   
  2.   con1.rollback();  

像这样,Mary记取的工资数8000是一个脏数据。

ISOLATION_READ_COMMITTED  保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。

ISOLATION_REPEATABLE_READ  这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)。

在事务1中,Mary 读取了自己的工资为1000,操作并没有完成
Java代码 复制代码
  1. con1 = getConnection();   
  2. select salary from employee empId ="Mary";  


在事务2中,这时财务人员修改了Mary的工资为2000,并提交了事务.
Java代码 复制代码
  1. con2 = getConnection();   
  2. update employee set salary = 2000;   
  3. con2.commit();  


在事务1中,Mary 再次读取自己的工资时,工资变为了2000
Java代码 复制代码
  1. //con1   
  2. select salary from employee empId ="Mary";  


在一个事务中前后两次读取的结果并不致,导致了不可重复读。
使用ISOLATION_REPEATABLE_READ可以避免这种情况发生。

ISOLATION_SERIALIZABLE 这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读外,还避免了幻像读。

目前工资为1000的员工有10人。
事务1,读取所有工资为1000的员工。
Java代码 复制代码
  1. con1 = getConnection();   
  2. Select * from employee where salary =1000;  
共读取10条记录

这时另一个事务向employee表插入了一条员工记录,工资也为1000
Java代码 复制代码
  1. con2 = getConnection();   
  2. Insert into employee(empId,salary) values("Lili",1000);   
  3. con2.commit();  


事务1再次读取所有工资为1000的员工
Java代码 复制代码
  1. //con1   
  2. select * from employee where salary =1000;  


共读取到了11条记录,这就产生了幻像读。
ISOLATION_SERIALIZABLE能避免这样的情况发生。但是这样也耗费了最大的资源。

getPropagationBehavior()返回事务的传播行为,由是否有一个活动的事务来决定一个事务调用。

在TransactionDefinition接口中定义了七个事务传播行为

PROPAGATION_REQUIRED 如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。

Java代码 复制代码
  1. //事务属性 PROPAGATION_REQUIRED   
  2. methodA{   
  3. ……   
  4. methodB();   
  5. ……   
  6. }   
  7.   
  8. //事务属性 PROPAGATION_REQUIRED   
  9. methodB{   
  10.    ……   
  11. }  

使用spring声明式事务,spring使用AOP来支持声明式事务,会根据事务属性,自动在方法调用之前决定是否开启一个事务,并在方法执行之后决定事务提交或回滚事务。

单独调用methodB方法
Java代码 复制代码
  1. main{   
  2.   metodB();   
  3. }  

相当于
Java代码 复制代码
  1. Main{   
  2. Connection con=null;   
  3.   
  4.    rry{   
  5.       con = getConnection();   
  6.       con.setAutoCommit(false);   
  7. //方法调用   
  8. methodB();   
  9. //提交事务   
  10. con.commit();   
  11. }   
  12. Catch(RuntimeException ex){   
  13.   //回滚事务   
  14.   con.rollback();     
  15. }   
  16. finally{   
  17.   //释放资源   
  18.   closeCon();   
  19. }   
  20. }  

Spring保证在methodB方法中所有的调用都获得到一个相同的连接。在调用methodB时,没有一个存在的事务,所以获得一个新的连接,开启了一个新的事务。

单独调用MethodA时,在MethodA内又会调用MethodB.

执行效果相当于
Java代码 复制代码
  1. main{   
  2.    Connection con = null;   
  3.    try{   
  4.       con = getConnection();   
  5.       methodA();   
  6.       con.commit();   
  7. }   
  8. cathc(RuntimeException ex){   
  9.  con.rollback();   
  10. }   
  11. finally{   
  12.   closeCon();   
  13. }    
  14. }  

调用MethodA时,环境中没有事务,所以开启一个新的事务.
当在MethodA中调用MethodB时,环境中已经有了一个事务,所以methodB就加入当前事务。

PROPAGATION_SUPPORTS 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。但是对于事务同步的事务管理器,PROPAGATION_SUPPORTS与不使用事务有少许不同。

Java代码 复制代码
  1. //事务属性 PROPAGATION_REQUIRED    
  2. methodA(){   
  3.   methodB();   
  4. }   
  5.   
  6. //事务属性 PROPAGATION_SUPPORTS    
  7. methodB(){   
  8.   ……   
  9. }  

单纯的调用methodB时,methodB方法是非事务的执行的。
当调用methdA时,methodB则加入了methodA的事务中,事务地执行。

PROPAGATION_MANDATORY 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。

Java代码 复制代码
  1. //事务属性 PROPAGATION_REQUIRED    
  2. methodA(){   
  3.   methodB();   
  4. }   
  5.   
  6. //事务属性 PROPAGATION_MANDATORY    
  7. methodB(){   
  8.   ……   
  9. }  

当单独调用methodB时,因为当前没有一个活动的事务,则会抛出异常
throw new IllegalTransactionStateException("Transaction propagation 'mandatory' but no existing transaction found");

当调用methodA时,methodB则加入到methodA的事务中,事务地执行。

PROPAGATION_REQUIRES_NEW 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。

Java代码 复制代码
  1. //事务属性 PROPAGATION_REQUIRED    
  2. methodA(){   
  3.   doSomeThingA();   
  4. methodB();   
  5. doSomeThingB();   
  6. }   
  7.   
  8. //事务属性 PROPAGATION_REQUIRES_NEW    
  9. methodB(){   
  10.   ……   
  11. }  

当单独调用methodB时,相当于把methodb声明为REQUIRED。开启一个新的事务,事务地执行。

当调用methodA时
Java代码 复制代码
  1. main(){   
  2.   methodA();   
  3. }  
情况有些大不一样.相当于下面的效果。
Java代码 复制代码
  1. main(){   
  2.  TransactionManager tm = null;   
  3. try{   
  4.   //获得一个JTA事务管理器   
  5.    tm = getTransactionManager();   
  6.    tm.begin();//开启一个新的事务   
  7.    Transaction ts1 = tm.getTransaction();   
  8.    doSomeThing();   
  9.    tm.suspend();//挂起当前事务   
  10.    try{   
  11.      tm.begin();//重新开启第二个事务   
  12.      Transaction ts2 = tm.getTransaction();   
  13.      methodB();   
  14.      ts2.commit();//提交第二个事务   
  15.         
  16.    }   
  17.   Catch(RunTimeException ex){   
  18.      ts2.rollback();//回滚第二个事务   
  19.   }   
  20.   finally{   
  21.     //释放资源   
  22.   }   
  23.    //methodB执行完后,复恢第一个事务   
  24.    tm.resume(ts1);   
  25. doSomeThingB();   
  26.    ts1.commit();//提交第一个事务   
  27. }   
  28. catch(RunTimeException ex){   
  29.   ts1.rollback();//回滚第一个事务   
  30. }   
  31. finally{   
  32.   //释放资源   
  33. }   
  34. }  

在这里,我把ts1称为外层事务,ts2称为内层事务。从上面的代码可以看出,ts2与ts1是两个独立的事务,互不相干。Ts2是否成功并不依赖于ts1。如果methodA方法在调用methodB方法后的doSomeThingB方法失败了,而methodB方法所做的结果依然被提交。而除了methodB之外的其它代码导致的结果却被回滚了。
使用PROPAGATION_REQUIRES_NEW,需要使用JtaTransactionManager作为事务管理器。

PROPAGATION_NOT_SUPPORTED  总是非事务地执行,并挂起任何存在的事务。

Java代码 复制代码
  1. //事务属性 PROPAGATION_REQUIRED    
  2. methodA(){   
  3.   doSomeThingA();   
  4. methodB();   
  5. doSomeThingB();   
  6. }   
  7.   
  8. //事务属性 PROPAGATION_NOT_SUPPORTED    
  9. methodB(){   
  10.   ……   
  11. }  

当单独调用methodB时,不启用任何事务机制,非事务地执行。
当调用methodA时,相当于下面的效果

Java代码 复制代码
  1. main(){   
  2.  TransactionManager tm = null;   
  3. try{   
  4.   //获得一个JTA事务管理器   
  5.    tm = getTransactionManager();   
  6.    tm.begin();//开启一个新的事务   
  7.    Transaction ts1 = tm.getTransaction();   
  8.    doSomeThing();   
  9.    tm.suspend();//挂起当前事务   
  10.      methodB();   
  11.    //methodB执行完后,复恢第一个事务   
  12.    tm.resume(ts1);   
  13. doSomeThingB();   
  14.    ts1.commit();//提交第一个事务   
  15. }   
  16. catch(RunTimeException ex){   
  17.   ts1.rollback();//回滚第一个事务   
  18. }   
  19. finally{   
  20.   //释放资源   
  21. }   
  22. }  
使用PROPAGATION_NOT_SUPPORTED,也需要使用JtaTransactionManager作为事务管理器。

PROPAGATION_NEVER 总是非事务地执行,如果存在一个活动事务,则抛出异常

Java代码 复制代码
  1. //事务属性 PROPAGATION_REQUIRED    
  2. methodA(){   
  3.   doSomeThingA();   
  4. methodB();   
  5. doSomeThingB();   
  6. }   
  7.   
  8. //事务属性 PROPAGATION_NEVER    
  9. methodB(){   
  10.   ……   
  11. }  
单独调用methodB,则非事务的执行。
调用methodA则会抛出异常
throw new IllegalTransactionStateException(
"Transaction propagation 'never' but existing transaction found");


PROPAGATION_NESTED如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务, 则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行

这是一个嵌套事务,使用JDBC 3.0驱动时,仅仅支持DataSourceTransactionManager作为事务管理器。需要JDBC 驱动的java.sql.Savepoint类。有一些JTA的事务管理器实现可能也提供了同样的功能。

使用PROPAGATION_NESTED,还需要把PlatformTransactionManager的nestedTransactionAllowed属性设为true;
而nestedTransactionAllowed属性值默认为false;
Java代码 复制代码
  1. //事务属性 PROPAGATION_REQUIRED    
  2. methodA(){   
  3.   doSomeThingA();   
  4. methodB();   
  5. doSomeThingB();   
  6. }   
  7.   
  8. //事务属性 PROPAGATION_NESTED   
  9. methodB(){   
  10.   ……   
  11. }  

如果单独调用methodB方法,则按REQUIRED属性执行。

如果调用methodA方法,相当于下面的效果
Java代码 复制代码
  1. main(){   
  2. Connection con = null;   
  3. Savepoint savepoint = null;   
  4. try{   
  5.   con = getConnection();   
  6.   con.setAutoCommit(false);   
  7.   doSomeThingA();   
  8.   savepoint = con2.setSavepoint();   
  9.   try  
  10.       methodB();   
  11.   }catch(RuntimeException ex){   
  12.      con.rollback(savepoint);   
  13.   }   
  14.   finally{   
  15.     //释放资源   
  16.   }   
  17.   
  18.   doSomeThingB();   
  19.   con.commit();   
  20. }   
  21. catch(RuntimeException ex){   
  22.   con.rollback();   
  23. }   
  24. finally{   
  25.   //释放资源   
  26. }   
  27. }  
当methodB方法调用之前,调用setSavepoint方法,保存当前的状态到savepoint。如果methodB方法调用失败,则恢复到之前保存的状态。但是需要注意的是,这时的事务并没有进行提交,如果后续的代码(doSomeThingB()方法)调用失败,则回滚包括methodB方法的所有操作。

嵌套事务一个非常重要的概念就是内层事务依赖于外层事务。外层事务失败时,会回滚内层事务所做的动作。而内层事务操作失败并不会引起外层事务的回滚

PROPAGATION_NESTED 与PROPAGATION_REQUIRES_NEW的区别:它们非常类似,都像一个嵌套事务,如果不存在一个活动的事务,都会开启一个新的事务。使用PROPAGATION_REQUIRES_NEW时,内层事务与外层事务就像两个独立的事务一样,一旦内层事务进行了提交后,外层事务不能对其进行回滚。两个事务互不影响。两个事务不是一个真正的嵌套事务。同时它需要JTA事务管理器的支持。
使用PROPAGATION_NESTED时,外层事务的回滚可以引起内层事务的回滚。而内层事务的异常并不会导致外层事务的回滚,它是一个真正的嵌套事务。DataSourceTransactionManager使用savepoint支持PROPAGATION_NESTED时,需要JDBC 3.0以上驱动及1.4以上的JDK版本支持。其它的JTA TrasactionManager实现可能有不同的支持方式。

PROPAGATION_REQUIRED应该是我们首先的事务传播行为。它能够满足我们大多数的事务需求。

2009年5月21日星期四

从胡雪岩、曾国藩那里学不到执行――中国公司为什么缺乏核心能力

  为什么中国企业热衷于做"大",却无法基于核心竞争力做"长"?

  当我们习惯了太多昙花一现的明星公司之后,我们异常渴望中国能够出现一批能够持续增长的公司。但我们也很清楚,如果我们的企业做大做强不是建立在核心竞争力的基础上,那么,持续的梦想终就是个梦想而已。

  为什么中国相当多的明星公司都缺少核心竞争力?首先我们先明确一下什么是核心竞争力。核心竞争能力是两种因素的组合:一种是企业家对于客户价值的预见力或判断力,第二种是一种制度化组织化的企业能力。两者的有机组合构成了完整的核心竞争力,用一句话来概括,核心竞争力就是企业集体学习能力。

  如果从这种定义出发,就会发现到目前为止,中国大部分企业的成功,大都是企业家精神的成功,特别是在改革的早期,很多人真的是不留神或往某些特定的方面"留神",一下就成功了。

  但这一切并不是企业拥有核心竞争力的胜利,而是企业家创新的胜利。明确这一点对于大多数成功的企业十分重要,因为这可以帮助完成了第一次创业的企业家懂得,他过去的成功可能对企业持续的增长,也就是我们说的第二次创业并没有什么必然的帮助,相反可能还会成为阻碍。

  道理很简单,企业家的创新精神与企业的"组织与制度能力",也就是所谓企业家能力与企业能力并不在一个层面上,前者是对机会与变化的把握,而后者是集体化的力量,只有这两者的有机融合才能形成企业核心竞争力。

  但实际上这两者的融合并不是自然形成的。所以,象柳传志当年不做汉卡做"科工贸",象张瑞敏上世纪90年代做"海尔工业园",现在看来无疑都是联想或海尔能走到今天关键的一步,但这些对公司的生存起过重大作用的举措,对联想或海尔的持续发展来说,可能并没有什么特别的"带有规律含义"的意义,也不必然形成它们的核心竞争力。

  换句话说,光是企业家精神的成功,获得的是企业的比较竞争优势,即由于你的创新或抓住了某些独特机会或资源,会使你比别人强,但并不会必然地使你拥有持续竞争优势。持续竞争优势唯一的来源是拥有核心竞争力,因为核心竞争力是一种基于创造独特价值的组织学习能力,不断的学习能力就能够为客户价值提供不断的动力源泉,同时不再信赖某个人而是信赖企业制度性组织性的能力,这是"独特的能力"之所以能够支撑企业持续的原因。

  这里非常重要的不同在于,比较竞争优势是一种基于产品或服务的优势,是一种外在的能力,而核心竞争力是一种内在的能力,是基于"组织(人)"的运作能力,因此凡是基于资源,设备获得的优势,凡是基于权力获得的关系或整合,都不能作为核心竞争能力。

   核心竞争力这一概念在中国的混乱,除了特殊的原因,比如某些企业家急于说明自己的成就不是靠"斜门歪道"获得的,而是有"核心竞争能力"的等等。根本原
因还在于一个非常重要而又被忽视了的问题,这就是我们目前大部分企业的增长或发展,是更多的靠外在力量,而不是靠组织性的精耕细作完成的。

  懂得这点区别对那些热衷于从销售额
上做500强的中国企业会是一个重要的提醒,因为他们正在热衷于做基于外在资源或规模的"大",而不是在做基于内在核心竞争能力的"长"。这是一条真正充
满危险的道路,因为如果你基于百年老店去做500强,那么成功是迟早的事,可如果你是为了500强的目标去做百年老店,那多半做不成。所以我常常觉得那些
受着500强指标煎熬企业家身上,都有着某种程度悲剧色彩,英雄身上的悲剧很有价值,但毕竟是悲剧。

  为什么从胡雪岩、曾国藩那里学不到核心竞争力

  中国相当一批明星企业家热衷于学习胡雪岩、曾国藩,在业界已经不是什么秘密。为什么他们会热衷于学习这些"权谋高手",我觉得其中很大的原因就在于,中国人在骨子里或多或少仍然仍然受着传统文化的影响,所以,学习这些"权谋高手"高手就能帮助他们"有效"的解决问题。

  但可能令他们想不到的是,这种做法的"有效"性却只是一种短期高效,长期就会无效甚至有害。在这里我们可以简单地举几个例子。

  第一、胡雪岩、曾国藩"经典"做法背后的"人治文化"

  大家都知道中国是一个农业为主的国家,或者说,传统文化基本是一个建立在人身依附关系上的"人治"文化。

  "人治文化"最明显的一个做法就是用能人,而用能人就特别讲究"用人不疑、疑人不用"。可我们都知道现代企业管理讲
究的是用人要疑,讲究的是"制度第一,能人第二"。我曾经听到一个老总跟我讲过一个故事,他说他对下面的一个人非常看重,在各种事情的处理上,他们都配合
的特别好。但是那个下属总是说他不信任自己。为什么呢?最后这个下属说了:"你看看我跟了你差不多十年了,你从来没让我去过你家,从来没让我为你家做过什
么。"

  就是说只有我去了你们家,我为你自己做了什么事情,你才是真正的不怀疑我。由此我们可以看到,在那些学习胡雪岩、曾国藩"权谋"的企业家那里,他们恰恰就是如何通过这种私人关系的建立,来构筑以他为中心的能人依附体系。

  这种依附体系本质上是对个人忠诚而不是对事或公司忠诚,大家可以想像得出,建立在这种忠诚关系上的企业做得愈大,是不是就愈危险?

  第二、胡雪岩、曾国藩"经典"做法背后的"清谈文化"

   中国传统文化由于本质上是一种农业文化,这种文化对什么东西的描述提倡的是含糊的"悟道"而不是清楚的量化。比如"一生二,二生三",到三就要"生万象
"。数到九的时候就"九九归一"。我们对于数的概念就是:要么到三,要么到九,后面就没了,三和九都可以代表无穷多。

  所以,我们发 现那些学习胡雪岩、曾国藩的企业家,也非常提倡悟道,提倡所谓的大道无术。他自己说什么不喜欢一是一,二是二地说清楚,而是希望下属去悟,这样的好处是,
第一可以使下属永远在捉摸他在想什么,每个下属都从只言片语中以为自己深得真传,从而,使他永远可以坐在中间来平衡下属的权力斗争。第二,他永远都是正确
的,你做对了,那是你对他的精神"悟"的对,做错了,那是你对你的精神"悟"错了。

  在这种体系下的员工最终只会像传统中医那样只有有两种结果,要么一事无成是一个很平庸的江湖医生,要么就大彻大悟成为一代名医,中间没有过渡阶段。这种体系与类似西医的现代企业管理体系是相反的,西医是可以学习的,从一般的医生到最高水平的医生,有很多级的,每级都是可以通过学习实现更最高级。。

  为什么几乎每一个大的民营企业,都培养出了无数的"小老板"?原因就在于那些真正"悟"出了道的下属,就会自立门户,然后他们大了,又培养出无数的能人出来成立小公司与自己竞争,周而复始。而我们发现真正在跨国公司做到高层的,如果离开也会是到另外的大公司做高层,很少自己出来做公司,道理与国内的"悟道"的高层相反,他们除了大公司那种正规化的打法之外,小公司"全能型"的打法大都不会。

  第三、胡雪岩、曾国藩"经典"做法背后的"面子文化"

  中国人讲究以"情理服人",情在前,理在后。一件事情发生后先从感情的角度去理解,先要讲面子,然后再来讲这个道理怎么样。这种观念与现代企业观念是相冲突的。现代企业观念是:理在前,情在后。我们先把这个事情的道理讲清楚,至于感情我们放到第二步去谈。

  这种面子文化最大的恶果就是熟人文化导致的"制度变形"。什么叫"制度变形"呢?举个例子,我们往往在处理一个问题的时候是两套做法:碰到一个陌生人的时候,讲规则,讲利益。等到大家熟了,就讲哥们义气。

   所以,我们经常可以看到很多以胡雪岩、曾国藩为榜样的企业家,常用的手法就是两套逻辑:对手下的能人或亲信是一套,以此换取他们的忠诚,而对员工是另一
套,大讲制度或规则。结果大量的制度因为人不同而不同,久而久之,下属也会发现与其遵守制度,不如投靠某某,在企业形成或明或暗的帮派体系。

  为什么执行也是一种战略:核心竞争力是以原则为中心的集体学习能力

  为什么执行是战略?我觉得中国大部分企业家一定很奇怪,执行是针对战略而言的,战略是老板的事,而执行是下属的事,怎么可能执行是一种战略呢?

  战略是什么?如果要用一句话把"战略"讲清楚,我觉得战略就是"道理"。"道"是选择,每种人都可以走不同的道,而"理"是规律,是只能发现而不能创造的铁律。当我们说战略就是对未来的一种判断与选择,实际上只说对了一半,另一半是,这种选择必须遵循基本的"规律"

  就此而论,我觉得到目前为止中国绝大多数企业的成功,都不是战略意义上的成功。也就是说,如果一个企业的业绩不是建立在公平竞争,平等交易这样一个基本的市场规律基础上,那么,无论它赚了多少钱,无论它规模有多大,都不是战略意义上的成功。

  在公平竞争,平等交易这样一个市场规律面前,目前活跃在中国经济舞台上的名企业,有几个是真正靠"看不见的手"而壮大起来的?我形象地称这批企业家为"市场政治家",他们既是经营市场的好手,同时也是经营政府关系是行家。

  也许有人会说,人不能脱离环境存在,在特殊的中国国情下,这些企业家不做市场政治家如何能够成功?不错,成功是一回事,但能够称得上战略意义上的成功,那是另一回事。否则不就是"成者为王败者为寇"吗,那有什么"真理"?

   所以,与一些热衷于学习胡雪岩、曾国藩的明星企业家不同,我觉得执行不仅仅是简单的照本宣科,有效的执行,显然是那些按照事物发展规律处理问题的执行。
有效的执行者显然需要去思考执行背后的原则和依据是什么。同样,我们知道,全世界最优秀的执行人员是军队,但我们同时也知道,真正伟大的军队是那些有信
仰,为原则而战的军队,对于这些为信仰原则而战的士兵,他们的执行就不再是一种战术而就是战略本身。

  从这一点出发,我们就懂得,要在企业里面真正建立一支有执行力的队伍,就必须把执行上升到战略层面。而要把执行上升到战略层面,你就必须构筑一种伟大的价值观或原则。

   靠价值观或原则来管理员工,而不是简单地靠你的权力,靠你的谋略,靠你的感情,靠你的血缘关系来管理员工,这种做法背后的实质,不就是在培养一种集体学
习能力吗?所以,当我们说核心竞争力是企业持续竞争优势的唯一来源的时候,不过是在说,做企业与做人一样,支撑企业真正持续的力量,不过就是那些不证自明
的价值公理与原则。

2009年5月20日星期三

英语100句

1. I see. 我明白了。
2. I quit! 我不干了!
3. Let go! 放手!
4. Me too. 我也是。
5. My god! 天哪!
6. No way! 不行!
7. Come on. 来吧(赶快)
8. Hold on. 等一等。
9. I agree。 我同意。
10. Not bad. 还不错。
11. Not yet. 还没。
12. See you. 再见。
13. Shut up! 闭嘴!
14. So long. 再见。
15. Why not? 好呀! (为什么不呢?)
16. Allow me. 让我来。
17. Be quiet! 安静点!
18. Cheer up! 振作起来!
19. Good job! 做得好!
20. Have fun! 玩得开心!
21. How much? 多少钱?
22. I'm full. 我饱了。
23. I'm home. 我回来了。
24. I'm lost. 我迷路了。
25. My treat. 我请客。
26. So do I. 我也一样。
27. This way。 这边请。
28. After you. 您先。
29. Bless you! 祝福你!
30. Follow me. 跟我来。
31. Forget it! 休想! (算了!)
32. Good luck! 祝好运!
33. I decline! 我拒绝!
34. I promise. 我保证。
35. Of course! 当然了!
36. Slow down! 慢点!
37. Take care! 保重!
38. They hurt. (伤口)疼。
39. Try again. 再试试。
40. Watch out! 当心。
41. What's up? 有什么事吗?
42. Be careful! 注意!
43. Bottoms up! 干杯(见底)!
44. Don't move! 不许动!
45. Guess what? 猜猜看?
46. I doubt it 我怀疑。
47. I think so. 我也这么想。
48. I'm single. 我是单身贵族。
49. Keep it up! 坚持下去!
50. Let me see.让我想想。
51. Never mind.不要紧。
52. No problem! 没问题!
53. That's all! 就这样!
54. Time is up. 时间快到了。
55. What's new? 有什么新鲜事吗?
56. Count me on 算上我。
57. Don't worry. 别担心。
58. Feel better? 好点了吗?
59. I love you! 我爱你!
60. I'm his fan。 我是他的影迷。
61. Is it yours? 这是你的吗?
62. That's neat. 这很好。
63. Are you sure? 你肯定吗?
64. Do l have to 非做不可吗?
65. He is my age. 他和我同岁。
66. Here you are. 给你。
67. No one knows . 没有人知道。
68. Take it easy. 别紧张。
69. What a pity! 太遗憾了!
70. Any thing else? 还要别的吗?
71. To be careful! 一定要小心!
72. Do me a favor? 帮个忙,好吗?
73. Help yourself. 别客气。
74. I'm on a diet. 我在节食。
75. Keep in Touch. 保持联络。
76. Time is money. 时间就是金钱。
77. Who's calling? 是哪一位?
78. You did right. 你做得对。
79. You set me up! 你出卖我!
80. Can I help you? 我能帮你吗?
81. Enjoy yourself! 祝你玩得开心!
82. Excuse me,Sir. 先生,对不起。
83. Give me a hand! 帮帮我!
84. How's it going? 怎么样?
85. I have no idea. 我没有头绪。
86. I just made it! 我做到了!
87. I'll see to it 我会留意的。
88. I'm in a hurry! 我在赶时间!
89. It's her field. 这是她的本行。
90. It's up to you. 由你决定。
91. Just wonderful! 简直太棒了!
92. What about you? 你呢?
93. You owe me one.你欠我一个人情。
94. You're welcome. 不客气。
95. Any day will do. 哪一天都行夕
96. Are you kidding? 你在开玩笑吧!
97. Congratulations! 祝贺你!
98. T can't help it. 我情不自禁。
99. I don't mean it. 我不是故意的。
100. I'll fix you Up. 我会帮你打点的

2009年5月18日星期一

工作效率(转)

摘自:http://topic.csdn.net/u/20090515/11/d18991ff-ab94-4d31-8021-4dc9d230d402.html

一、全心投入工作(work harder at what you do):当你工作时,一定要全心投入,不要浪费时间,不要把工作场所当成社交场合。光这个秘诀,如果你能长期实践,就能使你的生产力加倍。
  二、工作步调快(work faster):养成一种紧迫感,一次专心做一件事,并且用最快的速度完成,之后,立刻进入下一件工作。养成这习惯后,你会惊讶地发现,一天所能完成的工作量居然是如此地惊人。
  三、专注于高附加值的工作(work on higher-value activities):你要记住工作时数的多寡不见得与工作成果成正比。精明的老板或是上司关心的是你的工作数量及工作品质,工作时数并非重点。因此聪 明的员工,会想办法找出对达成工作目标及绩效标准有帮助的活动,然后投入最多时间与心力在这些事情上面。投入的时间愈多,每分钟的生产力就愈高,工作绩效 也就提高,自然赢得老板及上司的赏识与重用,加薪与升迁在望。
  四、熟练工作(do things you are better at):你找出最有价值的工作项目后,接着要想办法,通过不断学习、应用、练习,熟练所有工作流程与技巧,累积工作经验(一句话解决KNOW HOW的问题)。你的工作愈纯熟,工作所需的时间就愈短;你的技能愈熟练,生产力就提升得愈快。
  五、集中处理(bunch your tasks):一个有技巧的工作人,会把许多性质相近的工作或是活动,例如,收发E-MAIL、写信、填写工作报表、填写备忘录等等,集中在同一个时段来 处理,这样会比一件一件分开在不同时段处理,节省一半以上的时间,同时也能提高效率与效能。
  六、简化工作(simplify your work):尽量简化工作流程,将许多分开的工作步骤加以整合,变成单一任务,以减少工作的复杂度,另外,运用授权或是外包的方式,避免把时间花费在低价值的工作上。
  七、比别人工作时间长一些(work longer hours):早一点起床,早点去上班,避开交通高峰;中午晚一点出去用餐,继续工作,避开排队用餐的人潮;晚上稍微留晚一些,直到交通高峰时间已过,再 下班回家。如此一天可以比一般人多出2至3个小时的工作时间,而且不会影响正常的生活步调。善用这些多出来的时间,可以使你的生产力加倍,进而使你的收入 加倍。一个成功的人,通常是一个行动派的人,一旦懂得提升生产力的方法,就会将这7个小秘诀,默记在心,不断地应用、练习,直到成为工作、生活的习惯为 止。只要养成这个习惯,你的生产力一定会提高,收入也会加倍。
  1、敢于决断――克服犹豫不定的习性很多人之所以一事无成,最大的毛病就是缺乏敢于决断的手段,总是左顾右盼、思前想后,从而错失成功的最佳时机。成大事者在看到事情的成功可能性到来时,敢于做出重大决断,因此取得先机。
  2、挑战弱点――彻底改变自己的缺陷人人都有弱点,不能成大事者总是固守自己的弱点,一生都不会发生重大转变;能成大事者总是善于从自己的弱点上开刀,去把自己变成一个能力超强的人。一个连自己的缺陷都不能纠正的人,只能是失败者!
  3、突破困境――从失败中撮成功的资本人生总要面临各种困境的挑战,甚至可以说困境就是"鬼门关"。一般人会在困境面前浑身发抖,而成大事者则能把困境变为成功的有力跳板。
  4、抓住机遇――善于选择、善于创造机遇就是人生最大的财富。有些人浪费机遇轻而易举,所以一个个有巨大潜力的机遇都悄然溜跑,成大事都是绝对不允许溜走,并且能纵身扑向机遇。
  5、发挥强项――做自己最擅长的事情一个能力极弱的人肯定难以打开人生局面,他必定是人生舞台上重量级选手的牺牲品;成大事者关于在自己要做的事情上,充分施展才智,一步一步地拓宽成功之路。
  6、调整心态――切忌让情绪伤害自己心态消极的人,无论如何都挑不起生活和重担,因为他们无法直面一个个人生挫折,成大事者则关于高速心态,即使在毫无希望时,也能看到一线成功的亮光。
  7、立即行动――只说不做,徒劳无益一次行动胜过百遍心想。有些人是"语言的巨人,行动的矮子",所以看不到更为实际现实的事情在他身上发生;成大事者是每天都靠行动来落实自己的人生计划的。
  8、善于交往――巧妙利用人力资源一个人不懂得交往,必然会推动人际关系的力量。成大事者的特点之一是:善于靠借力、借热去营造成功的局势,从而能把一件件难以办成的事办成,实现自己人生的规划。
  9、重新规划――站到更高的起点上人生是一个过程,成功也是一个过程。你如果满足于小成功,就会推动大成功。成大事者懂得从小到大的艰辛过程,所以在实现了一个个小成功之后,能继续拆开下一个人生的"密封袋"。
  可以讲任何一种手段,都可以导致一种结果,但这个结果是不是最佳的结果,恐怕就很难说了。成大事者总是关于选择最佳的手段,达到最完善的结果,这就是 非一般人所能做到的。因此在成功之路上,你要想成大事,首先要解决的问题就是:你的手段对你推动成功的计划是否立竿见影!

2009年5月6日星期三

他山之石:五个互联网英雄的创业启示!(转)

摘自:http://column.iresearch.cn/u/jinglery/archives/2009/90170.shtml


他山之石,可以攻玉。瞻仰互联网英雄的创业故事,体味成功者的喜哀,为的仅是能够更好的为自己的成功提供动力与支持,英雄所走的路是无法复制的,但可以借鉴他们在路上的行走方式,并以之向他们致敬!

 

   宋海波:没有好的服务,惶论成功!

 

在现在热得不得了的Web2.0之前,论坛似乎是互联网唯一的虚拟社会基础,不过在国内互联网起步的时候,搭建一个这样的论坛却并不容易。而宋海波这时简单至极的想法,却为动网一贯优越的服务意识做了最好的注脚:“给自己网站架一个自己能够控制的论坛,然后提供相关的源代码给个人站长使用和研究。”

 

2003年底,动网论坛成为在网站论坛中应用最广泛的论坛程序,并以服务精神为主旨,之后又面向站长推出了Webgame联合运营平台,为站长的盈利提供更好的服务。

 

Webgame模式与论坛的结合,并非动网的首创,但是动网朴素的为站长服务的理念,却让泡泡玩网页游戏联合运营平台union.popwan.com在短短几个月时间就吸引了十多万的站长加盟,做到这样的成绩,两点优势功不可没:Webgame联合运营平台对于社区网站本身的收入,以及用户粘性都是有很大的帮助;优质的服务意识。

 

陈天桥:忍耐最能磨练一个人的意志!

 

  1993年的盛夏,年仅20岁的陈天桥以优异的成绩提前一年从复旦大学毕业,他却出乎意料地迎来了长达10个月被“雪藏”的寂寞——满怀抱负的陈天桥被分配到陆家嘴集团公司,他的工作是每天在一个小房间里,放映有关集团情况介绍的录像片,一放就是10个月。

 

  这时候,年少气盛者或许会很快走人,但是陈天桥的过人之处在于,他很快就意识到寂寞也是磨炼意志的绝佳机会。这段时间,他潜心读了很多书,“我认识到,无论有怎样的抱负,首先是要社会接受你,而不是你去要求社会来适应你,这是当时一个很大的收获。”陈天桥说。

 

  10个月之后,正好陆家嘴集团下属一家企业有个干部挂职锻炼的机会,集团选定陈天桥担任那家有着200多人企业的副总经理。后来陈天桥回忆说,如果那样的日子再延长10个月,他可能就坚持不下去了,那么今天,他的人生道路可能也就变成另外一副样子了。

 

丁磊:面对逆境更需要的是苦中作乐!

 

  大学毕业后,丁磊回到家乡,在宁波市电信局工作,旱涝保收,待遇很不错。但丁磊感到一种难尽其才的苦恼。1995年,他从电信局辞职,遭到家人的强烈反对,但他一心想出去闯一闯。“这是我第一次开除自己。人的一生总会面临很多机遇,但机遇是有代价的。有没有勇气迈出第一步,往往是人生的分水岭。” 

 

  在广州,不知道去多少公司面试过,不知道费过多少口舌,凭着自己的耐心和实力,丁磊终于在广州安定下来。19955月,他进入外企Sebyse工作。

 

   最初的日子是艰难的,一位熟知丁磊的朋友说,他后来精湛的“厨艺”和“古筝”弹奏,就是那段日子“苦中作乐”的明证——也可以说是这种乐观和勤劳的性 格,成就了这位“首富”。丁磊喜欢吃上海菜,但那时收入不高,不可能每天都能到馆子里去潇洒,而且广州的上海菜都不够原汁原味,于是他亲自到市场买菜,亲 自下厨。平时工作很忙,他就利用周末时间,给自己做个“醉鸡”或者清蒸鲫鱼犒劳自己。

 

  19975月, 丁磊决定创办网易公司,并由此一度成为中国首富。出名后的丁磊对于金钱的要求,还保持着当初到广州时的艰苦作风。他说年轻人少花点钱,也许就少了一样诱 惑,但老人不同,他现在琢磨的是怎么找个放心的人,教会父母花钱——因为他每次汇给家里的钱,父母都给他存着,他们认为孩子在外面挣钱不容易,攒着的话, 还能在他需要的时候派上用场。到现在,老家的电话还是旧的,煲水的壶用了七八年还没换。

 

马云:撑死胆大的,饿死胆小的!

 

  1995年初,马云去了一趟美国,第一次接触到互联网。回到杭州,马云马上召集来24位朋友,都是他教书时结识的外贸人士,马云想听听这些做外贸的人对Internet的商务需求。马云对他们说:“我要辞职,干Internet。”他开始宣讲Internet,讲了整整两个小时。

 

  马云讲完,朋友们问了5个问题,马云都没答上来。23位朋友反对马云干Internet:“你开酒吧,开饭店,办个夜校,都行。就是干这个不行。” 只有一个人说:“你要是真的想做的话,你倒是可以试试看。”

 

  19954月,中国第一家互联网商业公司杭州海博电脑服务有限公司成立。199559日,中国黄页上线,马云从身边的朋友开始找生意。他的生意经是,先向朋友描述Internet怎么怎么好,然后要他们的资料,通过EMS寄到美国,美国的生意伙伴将homepage做好,打印出来,再快递寄回杭州。马云将网页的打印稿拿给朋友看,并告诉朋友在Internet上能看到。此时,离中国能上Internet还有3个月。

 

  不能实际地看到,朋友怀疑马云在编故事。马云说:“你可以给法国的朋友打电话,给德国的朋友打电话,或者给美国的朋友打电话,电话费我出,如果他说没有,那就算了;如果他说有,你要付我们一点点钱。” 

 

   张朝阳:作为一个成功的商人你必须学会精明!

 

   上世纪九十年代初,在美国麻省理工学院继续攻读物理学博士后的张朝阳,感觉到自己不是一个安安分分搞研究的人,便开始实施自己的转型计划。他努力争取到 了麻省理工学院亚太区中国联络官的角色,这个角色让他有机会频频回国。经过近两年的“摸底”,张朝阳越来越清晰地感觉到互联网经济的商业与社会价值,他决 定回国创业。

 

  他找到了ISI公司总裁,两人一拍即合,于是融资100万美元,开始用Internet收集与发布中国经济信息,为华尔街服务。

 

  后来经营搜狐,他一半时间都在全世界进行融资工作,在不被控股的情况下说服投资人,得到了210万美元的投资,搜狐开始蒸蒸日上。

 

2000年,搜狐在纳斯达克上市后,互联网处于低潮,搜狐的股价一度跌到了一美元以下。张朝阳非常果断地大量回购自己公司的股票。后来,股价回升到2030美元时,张朝阳又把手中的股票抛出去一部分。这一买一卖之间,张朝阳的精明显露无遗。

 

五条不同的互联网创业之路,昭示给我们的是走在成功之路上必须具备的五大特质:服务、忍耐、乐观、胆大、精明!或许人不能完全拥有这些特征,但起码你要有其中一样并把之发挥至极致,方能成功!

2009年5月5日星期二

深圳野外徒步路线简介 (转载)

摘自:http://www.yododo.com/guide/5A7400EA0DD2873E010DD4026FA601CC

本文包括已发各篇攻略,并增补遗漏、修订错失,请以此版为准。
深圳野外徒步路线简介(修订版)

(一)梧桐山

梧桐山海拔944米,为深圳第一峰。因其位于市区,是深圳人登高首选。上山线路众多,略列几条:

1、仙湖:由仙湖上梧桐是最多人走也最不安全的,抢劫多发生于此。一般只上到660多米的发射站,有正规山路可走,不辛苦。约需2小时; 或由仙湖公园大门前右行,穿过农田后偏左上山,于半山与公园内上行的路重合。约2小时。

2、梧桐山村:由梧桐山村211总站沿小溪左侧到梧桐山水库,往左至桃花源后上行至大梧桐。这条路比较陡,不是太好走,约4小时;也可沿水库右侧大山涧溯溪至山顶,但尽头无路,需穿梭丛林,较辛苦,约6小时。

3、隧道:可由市区去沙头角的第一个隧道前(市进口汽车修理厂东)或两个隧道之间(一山民居住点)上去。走的都是原来的废弃公路,很多地方芦苇比人高。上梧桐山以这条路较有乐趣,也比较轻松。约2小时到正式公路:左至发射台或下山,右去大梧桐。

4、沙头角:由沙头角医院东上山,沿防火隔离带直上大梧桐。这条路无乐趣可言,长而枯燥,只适合拉练。约3小时到顶。

5、横岗方向:不清楚。

总的来说,梧桐山适合锻炼而非游玩。3线稍好,晴天于山腰从山坳上东望沙头角及航母,还行。

(二)七娘山

七娘山位于深圳东部南澳镇新大村,海拔869米,是深圳第二峰。

七娘山植被茂盛、风景秀美,尤其山顶四望海景无敌,而上山道路陡峭崎岖,是游玩、拉练皆宜的好去处,也是每一个深圳登山爱好者必到之所。

由市区前往,可乘银湖――南澳的360路大巴(早班6:30;晚班18:30,夏天19:30)到南澳镇,再搭摩托经新大村种鸡场至山底桔园(车资6元)。

上山传统路线为桔园出发正面上行:桔园上为宽阔的防火隔离带,沿带右上行至隔离带水平横向处,有左右两条小路(树枝上有红色布条标志)上山。一般选择右 路,两路前行数百米即会合。直到山顶都是这条正规山路,偶有岔路也有路标指引。上山路程不长但陡峭,有三四处需手脚并用攀爬而上,要注意安全。山顶有巨 石,上书"七娘山"。该线上山需时约2个半钟。下山原路返回。

其他线路可由南面铁扇关门水库沿山脊方向或北面杨梅坑上山,但不太适合初登山者。

七娘山附近还有山峰数座,以大雁顶(796米)最有名。由七娘山顶――大雁顶是一条很好的拉练线路:一直沿山脊东行,过磨朗钩(791米)、黄豆田、正坑尾至大雁顶,约需5小时。大雁顶可东南向沿山脊经尖峰丫、羊公秃、牛湖坳、背夫坳下行至耕棚,再往东北可到深圳最东端――海柴角。

(三)小梅沙――马峦山

小梅沙因沙滩、海景著名,马峦山以瀑布、梅花见称。小梅沙――马峦山的路线或许是深圳野外最美的。

由市区前往可乘425、443、103、360、364、365等至小梅沙站下车,往北下穿盐坝高速立交可见"叠翠湖"水库,线路由此开始。上到水库大坝后从右边小路沿库边行走,直至水库尽头小路与一山涧汇合:小路左行、小溪右上。一路溯溪,约2小时即可见马峦山赏梅亭。溪谷中山空雀鸣,水流潺潺,很是清幽。

有几个地方需稍留心。1、沿溪上行很快有支流,应走右侧山涧;2、之后不久即由二线巡逻路下桥洞出关,此处不宜久留;3、途中会遇一高约7、8米小瀑布,下有小潭可戏水。男生至此可由瀑布右侧石壁上 攀,女士最好后退20米由右侧小路前行,上到瀑布顶后左下即回到溪中。此处有一选择:若不再走溪谷,沿小路可见正规山径,向左可直达马峦村;4、沿小溪继 续前行,至谷中再无溪石,前望可见梅亭时即需右转,与溪流方向垂直走几分钟遇正规山路。左行约1小时经桔园、马峦村(有赖氏、罗氏宗祠、路旁大片姜花、东 江纵队临时司令部、中山先生强华学校可参观,村中有村民自采蜂蜜可买)即到马峦大瀑布。

到马峦不可不登赏梅亭。离开小溪行山路过桔园约30分钟,土路变为水泥乡村公路,此路向左上山行40分钟即是梅亭。也可先至马峦山庄后乘车上山。梅亭建于山顶,视野开阔:南眺小梅沙无敌海景,神怡心旷;东远望七娘山,西近看梅沙尖;西北山坡上有关山月先生手书"梅林"二字。若赶巧梅花盛开,野梅烂漫、夺人明眸。立在亭中、飘于风里,恍如玉树

马峦山庄可观深圳最大的天然瀑布――马峦瀑布,也可畅游清澈的红花岭水库。

马峦山――坪山,有多种方式:1、步出,约2小时;2、行40分钟至青山石场搭乘石车。石场车辆调度员是四川人,很好讲话;3、搭马峦村民摩托,每车约10元;4、包乘马峦山庄面包车,50元可先上梅亭观景再送至坪山。山庄经理姓罗,也好讲,但车就不一定在。前台电话:8823999;5、搭出坪山之顺路车或朋友开车前来迎接。

到坪山后于路旁坪山中学站(此处有一极大路牌指明"马峦山庄")即有361返深圳。但最好是在龙岗镇下车用餐:平南路平冈中学左侧(面对学校)约300米有一"隆顺野味湘菜酒楼",其湘菜正宗,好于"湘情"。

这条线路四季皆宜行走,只是夏季雨水较多,谷中水可及腰,行走稍难也别有乐趣。最好的时节却是一月:届时梅林一带漫山的梅花,有红有白,煞是好看。

(四)三洲田(梅沙尖)

三洲田的名声已经有些响亮了,但也算名能符实。

三洲田景区包括三洲田村、三洲茶场、三洲田水库、梅沙尖、市农科中心高山兰养植基地、大小三洲塘、红花坜、骡马峰水库等。此处有梅沙尖(753米)可攀 登,有水库可垂钓,有茶场可品茗、看茶叶摘选、揉制,村中更有野味可食。游人尚不太多,有些清静,是休闲、徒步的好去处。

去三洲田有两种方式:驾车或徒步。

驾车:有两条线路。

一是由盐田往梅沙方向不远,左侧一岔路有路牌指示三洲田。但因是耕作口,守关武警视心情予放行――称是财政局员工,去该局培训中心或较有把握。出关后公路曲曲折折缓缓上行,约二十分钟可达三洲田村。

二是由横岗188工业区处右拐上至坪山的横坪公路,由碧岭(到收费站前右转)上山。此路也蜿蜒,途中可见各式"红军不怕远征难"之类标语(因水库旁有一培训童子军的"雏鹏基地")。见水库后顺时针绕行即达三洲田村。

上山则由三洲田村口益力矿泉水厂处一较窄公路。一路树茂草盛、雀鸟欢腾,徒步最好。过大王坳、小三洲塘水库后路右是农科中心高山兰园,若软语相商,可获入 园参观各色兰花。自兰园前行数百米,左侧一土质废弃公路可上梅沙尖。此路不能行车,登山须将车泊于兰园或路边。土路几近山顶,最上一段少人走动早已荒草丛 生,高过2米,不过总算有路可寻,不难。上至尖顶约需1小时30分。

再沿公路南行,路左有一较大水库,名红花坜。之下有岔路:左往大三洲塘,右去骡马峰,皆为死路。到骡马峰可望梧桐雄姿,并有一入水库的山涧可溯溪;往大三洲塘能览盐田秀色,俯瞰港区与海景。

徒步:由盐田街道办事处(盐田至横岗和梅沙的岔路口北行200米左右)南二线边防网起步,此处需攀越铁丝网或由盐田水厂员工通道(有锁挂于门上但不锁)出 关。沿水厂输水管道上行,约40分钟可到山顶大三洲塘。沿水库右侧公路前行,经红花坜、兰园、小三洲塘,下达三洲田村。逆时针绕水库经雏鹏基地、水库管理 处、坪山自来水公司三水厂下山至碧岭。此后(到横坪公路后左向)可搭顺风车或偶遇之摩的或行路至横岗,返深。

该线路徒步距离较长,从盐田至横岗(不含登梅沙尖)约需8小时,应作充分准备。但除盐田上山一段,皆是水泥路面,倒不难走。

因季节关系,冬春水库蓄水较少,风景略逊夏日。

(五)求雨坛――凤凰山

成都有著名的四姑娘,深圳有无名的四茅草。这四根茅草属于宝安区福永镇凤凰山系。

凤凰山位于宝安区福永镇凤凰村,以凤凰寺和摩岩石刻有名。求雨坛山在其南稍偏东,宝安区广播电视台座落于上。该条徒步线路自求雨坛始、至凤凰寺终,约需3小时。

乘银湖――凤凰村的301、310或其他往机场方向大巴,过西乡、深圳航 空城、鹤洲立交后在黄金灯饰厂下车。往北下穿广深高速公路,面前即是325米的求雨坛山。上山可沿土质公路,也可正对山顶直接攀登:几乎都是在荔枝树间穿 行,只最上接近山顶一段较陡,不太难走。约40分钟到顶,绕电视台围墙或翻墙进入 (内有大、小狗5只,小心),再沿大院东面正门公路北行。十多分钟后公路左转下山,左前下方可见东方英文书院。此时需向右前方向上到山脊,一路沿山脊向北行走。道路开阔易行,起伏也不利害,经大茅山(376米)、二茅山、四茅山(不经过三茅山)约2小时到凤凰山公园。在大茅山山顶有标志铁架、巡山人小屋,并可遥望公园观景亭。

凤凰山顶可环览四围景色,下山观看山壁石刻后山腰的凤凰寺不能错过。据说此庙许愿很灵,这个我不懂,但香火确是极旺。

凤凰庙前有区内小巴约10分钟至凤凰村公交总站,之后搭301即可返回市内。

这条线路路程不远、时间较短、行走容易,游玩甚好。

堆和栈的区别(转过无数次的文章)

摘自:http://blog.csdn.net/hairetz/archive/2009/04/30/4141043.aspx

 一、预备知识—程序的内存分配 
  一个由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   =   new   char[10];   
  但是注意p1、p2本身是在栈中的。   
  
  
  2.2   
  申请后系统的响应   
  栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢 
  出。   
  堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时, 
  会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表 
  中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的 
  首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。 
  另外,由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余的那部 
  分重新放入空闲链表中。   
  
  2.3申请大小的限制   
  栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意 
  思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有 
  的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将 
  提示overflow。因此,能从栈获得的空间较小。   
  堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储 
  的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小 
  受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。   
  
  
  
  2.4申请效率的比较:   
  栈由系统自动分配,速度较快。但程序员是无法控制的。   
  堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便.   
  另外,在WINDOWS下,最好的方式是用VirtualAlloc分配内存,他不是在堆,也不是在栈是 
  直接在进程的地址空间中保留一块内存,虽然用起来最不方便。但是速度快,也最灵活。 
    
  
  2.5堆和栈中的存储内容   
  栈:   在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可 
  执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈 
  的,然后是函数中的局部变量。注意静态变量是不入栈的。   
  当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地 
  址,也就是主函数中的下一条指令,程序由该点继续运行。   
  堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容由程序员安排。   
  
  2.6存取效率的比较   
  
  char   s1[]   =   "aaaaaaaaaaaaaaa";   
  char   *s2   =   "bbbbbbbbbbbbbbbbb";   
  aaaaaaaaaaa是在运行时刻赋值的;   
  而bbbbbbbbbbb是在编译时就确定的;   
  但是,在以后的存取中,在栈上的数组比指针所指向的字符串(例如堆)快。   
  比如:   
  #include   
  void   main()   
  {   
  char   a   =   1;   
  char   c[]   =   "1234567890";   
  char   *p   ="1234567890";   
  a   =   c[1];   
  a   =   p[1];   
  return;   
  }   
  对应的汇编代码   
  10:   a   =   c[1];   
  00401067   8A   4D   F1   mov   cl,byte   ptr   [ebp-0Fh]   
  0040106A   88   4D   FC   mov   byte   ptr   [ebp-4],cl   
  11:   a   =   p[1];   
  0040106D   8B   55   EC   mov   edx,dword   ptr   [ebp-14h]   
  00401070   8A   42   01   mov   al,byte   ptr   [edx+1]   
  00401073   88   45   FC   mov   byte   ptr   [ebp-4],al   
  第一种在读取时直接就把字符串中的元素读到寄存器cl中,而第二种则要先把指针值读到 
  edx中,再根据edx读取字符,显然慢了。   
  
  
  2.7小结:   
  堆和栈的区别可以用如下的比喻来看出:   
  使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就 
  走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自 
  由度小。   
  使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由 
  度大。   (经典!)