paulwong

#

分布式事务JTA,JCA,JTS

在分布式的J2EE应用中,可能会碰到以下情景:
在一个方法中,会调用到好几个数据源,如不同的DB,JMS,内容仓库等,如何使这些不同的数据操作都能处于同一事务中呢?于是便有了JTA/JCA这种标准。

  1. 数据库,JMS或内容仓库抽象为RESOURCE
  2. 在Resource之上加一层Resource Adapter(在JTA中称为Resource Manager),统一数据操作等的方法名称。在应用服务器中配置数据源驱动程序中,通常有一项可选的:XARESOURCE,即是指这一Adapter,每一RESOURCE均有一Adapter对应,如内容仓库中则有JCA RESOURCE。
  3. 在Resource Adapter之上增加一层Connector Manager(在JTA中称为Traction),负责将数据操作加入到事务队伍中。
  4. Transaction Manager(由应用服务器实现)/UserTraction(由用户控制),开始事务边界,总体对事务队列中的事务进行提交,或回滚。



J2EE则是通过此机制来达到事务的统一。

参考:http://zhongl.iteye.com/blog/317041

posted @ 2011-09-09 00:25 paulwong 阅读(740) | 评论 (0)编辑 收藏

分布式事务简述

  随着系统越来越大,不断的模块化和SOA化,你的系统可能被分散于不同的机器上,这时候,你原先的单机本地事务可能已经无法满足你的需求,你可能要跨系统跨资源的去使用事务。这就是分布式事务。
  事务有四个特性:
  1.    原子性
  2.    一致性
  3.    隔离性
  4.    持久性
  具体就不多介绍了,相信大家都能明白ACID特性的基本含义。

事务模型

而一个具体的事务需要涉及到的模型(无论哪种模型)一般由下面几部分组成:
  1. AP 应用程序
  2. RM 资源管理器
  3. TM 事务管理器
这里的资源管理器一般指数据库资源,而事务管理器,大多是由数据库厂商提供。
那么其实在分布式事务中,也应该符合以上事务的特性和模型,只是资源管理器(RM)变得多了起来.

分布式事务介绍

分布式事务最大的问题在于如何确定资源的状态,以及保证一致性,原子性
一般来说分布事务由
  1. 原子提交协议 
  2. 协调器
  3. 参与者
  4. 事务恢复器
  5. 死锁检测器
五部分组成。

原子提交协议指的是如何保证原子提交,一般分为单阶段原子提交协议两阶段原子提交协议三阶段原子提交协议

对于单阶段原子提交协议来说,根本没有办法保证分布式事务的原子性,所以不适用于分布式事务中。

两阶段原子提交协议则是 各种分布式事务实现中使用最广泛的一种原子提交协议:它主要是交事务提交的过程分为二阶段,投票和最终提交。事务由协调者发起一个事务,参与者加入到事务 中后,第一阶段时候,所有的参与者准备资源,并将资源hold住,协调者询问所有的参与者是否可以提交?所有的参与者向协调者响应结果YES/NO,当所 有的协调者都响应YES的时候,协调者才会发起第二阶段,向所有的参与者通知提交事务,当所有的参与者都提交确认会会再通知协调者。至此事务处理完毕。

三阶段提交协议由于协调者与参与者多次进行沟通所以代价很大,一般不会使用。但是它能缩小事务处理“不确定”状态的延迟时间。

所谓“不确定”状态就是指当参与者向协调者反馈可以提交的时候,长时间没有收到协调者的通知,这时候参与者没有办法确定事务最终需要如何处理,所以状态为不确定状态。

协调者,参与者一般通过如下动作来进行通信:
  1. join:由协调者提供,用来注册新的参与者
  2. canCommit:协调者询问参与者是否能够提交
  3. doCommit :协调者通知参与者提交事务
  4. doAbort:协调者通知参与者放弃事务
  5. haveCommit:参与者向协调者确认已经提交事务
  6. getDecision:当处于“不确定”状态时,参与者用来询问协调者事务的目前状态。
对于haveCommit特别说明一下,是当第一阶段的时候,协调者发现长时间参与者没有向协调者反馈事务状态,则协调者会主动调用该接口事务的情况,如果仍然无响应,则会通知所有的参与者放弃该事务。

任何事情都会有意外产生,特别是对于跨系统间的通信更容易产生问题,比如网络异常,机器down机,这个时候就需要事务恢复器来作相应的处理。

对于处于第一阶段的事务,
如果参与者发生意外,则协调者会通知所有的参与者进行事务放弃,但是如果协调者出生故障时,就必须要能 够就行事务恢复,所以协调者必须在开始事务的时候,产生唯一的事务ID,并且对事务进行持久化,在协调者恢复的时候,参够让人参与者继续进行事务。

而对于第二阶段出现的故障,
由于第一阶段进行了资源的个决,则事务认为是必然能成功的,这个事候,如果这个时候参与者发生故障,则协调者需要一套重试机制,让参与者在恢复过来后,能够将事务进行完成或者人工介入。

关于死锁检测器这里就不多描述了,以后有机会再描述。

posted @ 2011-08-22 13:22 paulwong 阅读(191) | 评论 (0)编辑 收藏

茶餐廳新招!高科技吸客生意大增

茶餐廳新招!高科技吸客生意大增

茶餐廳 (茶記) 是香港的飲食文化特色,提起茶記,第一時間令各位想到,香滑奶茶及支竹火腩飯。隨著茶記越開越多,競爭也變大。每家茶記都要各出奇招吸引顧客,例如提供更多款式的餸菜。今次 unwire 專訪一間位於青山道 520 號的集蘭冰室的老闆 – Terry Wu,看他如何活用最新科枝吸引食客,讓生意額上升。

免費 WiFi 更添麻煩
近年香港人越來越多人使用智能手機上網,Terry 就參考了 Cafe 的理念,把 Wifi 引進自己的茶餐廳中。Terry 指出 WiFi 設置後,開始讓路人注意,有人更特地進來上網談生意、甚至有「打工仔」蛇王來上網炒股。不過 Terry 很快便發現此舉開始帶來困擾,有客人一杯奶茶坐上半天,更過份是 在 PPS 看電影幾小時不結帳!其後更發現  WiFi  被一些非店內食客連接,網速變得很慢。

茶記老闆 Terry Wu 沒想到不限時的 WiFi 會帶來更多的麻煩

 

使用密碼問題更多
就以上的問題,Terry 決定將 WiFi 加設密碼,不過此舉雖然解決了速度問題,但要把長長的密碼告訴顧客,有客人更不知如何輸入密碼,為應付這些問題,令他們的伙計工作量加大,得不償失,顧客也投訴輸入密碼程序麻煩。

改用密碼後,客人經常要求伙計幫忙輸入密碼,也有客人覺得輸入密碼太麻煩。

 

引入企業方案
遇到這個問題,Terry 想起他一位做企業的網絡方案的朋友,經相談後,朋友推薦了他採用他公的一套無線分享方案,器材、設定及管理都一拼都幫老闆免費攪定,以作宣傳之用。該無線方案可設定顧客只能上網 20 分鐘,而且登入時有茶餐廳 Logo ,就如「麥記」一樣。每名顧客都有流量管制,不會因為某顧客過份佔用頻寬而影響到其他客人。對於一些老顧客,Terry 會提供 VIP 帳號讓他們無限任上。透過這些新器材,所有問題都一一解決,而且每月老闆都會收到網絡使用報告,看到客人在網頁、IE、Email …等的使用量,這些資料有助他們分析顧客的性格及興趣。

連接 WiFi 後,客人會看到茶餐廳的 Logo 及使用守則,一切確定後便提供 20 分鐘免費上網,不需密碼

朋友公司提供的 Wi-Fi 分享方案,Router Gateway + 兩台 AP,提供頻寬管理及每月用量詳細報告

 

Twitter更新每日餐單
近來很多品牌都使用了 Facebook 的粉絲頁幫助自己宣助,不過 Terry 就沒有使用 Facebook,反為選擇了 Twitter,原因是 Twitter 的即時推送比 Facebook 更實用,Facebook 的 Wall 不會全部把朋友的更新顯示出來,反為 Twitter 會跟 TimeLine 型式即時顯示。Terry 每天會把午餐的菜單拍照傳到  Twitter 上,Follow 了他的食客看到合胃口的東西,就會自然去光顧,不用再每天來電查詢,更有顧客特地在 Twitter 裡叫老闆留低某款午餐。Terry 笑言:「自從有了 Twitter 後,食客就好像我們的朋友一樣近,有時更會送他們一些免費飲品或其他著數,加大他們的歸屬感。」

茶餐廳內張貼了 Twitter 告示,鼓勵客人跟隨

老闆 Terry 每天都會使用他的 Motorola Milestone 1 拍下餐單,透過 Twitter 通知食客

 

成功拉近顧客距離
雖然現時 Twitter 只有約 50 名跟隨者,但其實 Terry 表示此數目已經很滿足,以辦公室為例,只要有一個同事跟了 Twitter ,他就會帶另外 3- 4 位同事下來吃飯,所以潛在顧客其實有數百,加設 Twitter 及 Wi-Fi 後,繁忙時間大都滿座需要等位,令伙計忙得透不過氣來。

食客每天看看 Twitter 就知道有甚麼好東西吃

顧客更會在 Twitter 上叫老闆「留餸」,非常有趣。

 

潮爆緊貼主流
Terry 的手機是 Motorola Milestone 1,他笑說有點舊跟不上潮流,不過日常 Twitter 及email等還是可以應付。他更說 iPhone 有很多 APP 及娛樂性強,但他愛 Android 的自訂性及 Motorola 的 Crystal Talk 話音質素很好。閒談間我們談到 Nokia,彼此都對 Nokia 有相同的意見,老闆更爆料,現時 Nokia 的高層 Bruce 是他的舊同學呢!筆者在訪問時,看到Terry 也有玩 Google+ ,他說他喜愛 Google+ 社交圈子的設定,比 Facebook 更方便。別以為以上的都是年青人的玩意,身為茶餐廳的老闆 Terry 也能緊貼網絡潮流。

Terry 笑言他的手機有點過時

 

做生意必需要有個人賣點
筆者好奇問 Terry,為何當初會有這些念頭,Terry 回答說其實做生意只要有個性,做出跟別人的不一樣,已是成功了一半,如果老是抄襲別人的話,只會被人牽著鼻子走,一世做「阿二」!因此創意才是最重要。好像茶餐廳,在香港每一間都是大同少異,有甚麼要令顧客選擇你呢? 我就選擇了用 Twitter 跟顧客做互動。

做生意具個人特色才能容易成功

 

老顧客讚老闆夠潮
光顧多年的老食客陳先生,已經成了老闆的好友,陳先生也享有「VIP」帳戶,享受無限任上的 Wi-Fi,陳先生指 Terry 非常緊貼科技及有創意,有時陳先生也有會跟客戶來此邊吃邊談生意,Wi-Fi 上網幫助他不少,雖然他擁有 iPhone4 及一台 Samsung Android Phone 可作 Hotspot 之用,但他說手機連線始終不及 Wi-Fi 穩定和快速。

光顧多年的陳先生,大讚老闆夠潮而且很有生意頭腦

 

後記 : 要緊貼顧客所需
Terry 的成功,除了有個人特色外,就是他了解顧客有何需求,也清楚自己的核心價值,沒有去胡亂更改食物餐單,保持了食客的口味習慣,反為在其他方面提供增值服務。筆者個人認為,做任何生意都要清楚自己的核心價值及巿場定位,緊貼顧客所需麼,再建造個人特色賣點就很已足夠了,切勿看到別人有甚麼,自己就加甚麼,就以為這樣會像別人般成功,有時加進的未必是你客人所需,反而令顧客反感,得不償失。

posted @ 2011-08-18 21:48 paulwong 阅读(210) | 评论 (0)编辑 收藏

《真实世界 Java EE 模式》阅读笔记 01:重新思考业务层

对于任何一种技术来说,好用和用好是两个不同的概念。《真实世界 Java EE 模式:重新思考最佳实践》(Real World Java EE Patterns: Rethinking Best Practices)就是教我们如何用好 Java EE 的一本书,也是目前市面上能找到的唯一一本,非常值得一读。前两章是一些概述性的文字,所以直接从第 3 章“服务门面(应用程序服务)”(Service Façade (Application Service))开始。

概述

本章的开头对 Java EE 中的服务门面进行了简介,下面是我的归纳。服务门面的作用是将独立且可重用服务的组合起来,其概念和门面模式差不多,只不过要加上一些 Java EE 所特有的东西。 它是一个带本地接口的会话 Bean(通常是无态的)。除非需要从 JVM 之外进行访问,否则不应当提供远程接口。它充当展示层和业务层之间的界限,其方法都由客户端调用,不应当出现门面之间相互调用的情况。任何客户端和门面间的交互都属于业务会话,每次调用都启动一个新的事务,因此门面类需要带有TransactionAttributeType.REQUIRES_NEW 注解。

策略
接下来作者讨论了各种服务门面的实现策略,它们是本章的重点:

CRUD 门面
一个 CRUD 门面只是一个暴露的、事务性的 DAO。在 J2EE 时代,通常将服务门面的所有方法调用委托给后台的 DAO。EJB 3.0 本来就是 POJO,所以这种委托已经显得多余了。在 EJB 3.1 里,甚至连 EJB 接口都是可选的,例如:  
@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) 
public class BookService 
 
    @PersistenceContext
    
private EntityManager em; 
 
    
public void createBook(Book book) 
        em.persist(book); 
    }
 
 
    
// 
 
}
  


双视图门面
服务门面通常都由部署在同一个 ear 中的 Web 组件直接访问,但有时候也需要提供远程接口供外部客户端使用(例如使用 Swing 开发的 EJB 客户端应用程序)。这种情况就可以使用双视图:  
public interface BookServiceRemote {// 
 
public interface BookServiceLocal extends BookServiceLocal {// 
 
@Stateless
@Local(BookServiceLocal.
class
@Remote(BookServiceRemote.
class
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) 
public class BookService implements BookServiceLocal {//  


SOA 门面
SOA 门面的一大特点就是异步,最容易想到的方式就是 JMS,但 JMS 消费者在对事务和消息类型的处理上有些微妙的问题,JMS 生产者和消费者之间不容易交互,而且部署和维护消息队列的成本也比较高。EJB 3.1 引入的异步调用则提供了一种轻量级的异步门面解决方案,简单自然地解决了这些问题:  
@Stateless
@Asynchronous
public class BookService 
 
    
public Future<Order> orderBook(Book book) 
        
// 
        return new AsyncResult<Order>(order); 
    }
 
 
}
  


多通道门面
通过在门面上增加注解,可以使同一个门面以更多的形式暴露出来。下面代码中的门面不仅是一个 EJB,而且能够提供 SOAP 和 RESTful 的 Web 服务:  
@Stateless
@WebService
@Path(
"book"
public class BookService {//


IIOP 门面
这种门面主要用于和 CORBA / IIOP 兼容,例如可用于和老系统或者 .NET 客户端通信。在一般的 Java 开发中应该很少用到。

总结
虽然本章有很多理论性的东西,但实际上都是围绕 EJB 3.0/3.1 的新特性在讲。正如作者所说,J2EE 时代的诸多模式都是出于对规范的短处进行修补,而并非设计上的最佳实践。这让我想起以前从阿三手上接过来的一个项目,虽然使用 EJB 3.0,但充斥着大量 EJB 2.x 的“设计模式”,造成大量冗余的代码,甚至很多方法委托就是透传。我当时虽然觉得不妥,但也没有充足的理由反驳阿三架构师,实在是可惜了。

posted @ 2011-05-22 11:39 paulwong 阅读(296) | 评论 (0)编辑 收藏

关于特殊字符的一些总结

最近做一个项目,里面很多特殊字符,引发了一些问题,解决后很开心,特别来分享。
特殊字符:
Jörg Ranau
Sigutė Jakštonytė
Côte d'Ivoire

数据库手工导入数据
  1. 先检查数据库的字符集和客户端字符集是否一致。 采用的是UTF8 查看语句:
    select * from nls_database_parameters

  2.  若是采用DOS 下的SQLPLUS 导入数据,需要
    set NLS_LANG=AMERICAN_AMERICA.UTF8
    windows:    
    set NLS_LANG=AMERICAN_AMERICA.UTF8
    unix:    NLS_LANG
    =AMERICAN_AMERICA.UTF8

  3. 检查导入的数据的文件格式,格式采用: UTF8 without BOM, 
    可以用NOTEPAD++, CONVER TO UTF8 without BOM
    也可以用txt , 转换成UTF8.
    第3点非常重要,之前忽略了,发现插入导入数据库后,数据显示不对。 验证你导入的数据是否正确可以用ORACLE DUMP 命令。
    select dump(country_desc),country_desc  from tb_test  where testcode='1';
    Typ=1 Len=14: 67,195,180,116,101,32,100,39,73,118,111,105,114,101        Côte d'Ivoie
数据库脚本中遇到特殊字符:

  1. 单引号‘ , oracle 脚本需要写成 两个单引号
  2. 特殊字符&, oracle 表示需要的参数, 若是数据中有这个有2个方法:
    第1 种:
    set define off;
    第2种:
    set escape on;

    然后将所有的&, 替换成/&。
  3. 空行
    用<br> 代替。
JAVA 代码导入数据:

要导入的数据都放在TXT 类型的文件里,通过batch job 导入数据库。
检查导入的数据的文件格式,格式采用: UTF8 without BOM,  可以用NOTEPAD++, CONVER TO UTF8 without BOM

java 代码:

1: 读文件
InputStreamReader read = new InputStreamReader (new FileInputStream(file),"UTF-8");
BufferedReader inBuf
=new BufferedReader(read); 

2: 检查所用开发工具的文件ENCODING 字符。

这个就是会为什么导致没发现:
读文件错误,在开发工具中打出的LOG 欺骗了我们的眼睛。我的开发工具BEA 里JAVA 文件默认ENCODING cp1252, 改成UTF8 就好了。

这个特别容易忽略,当在控制台看LOG的时候,发现读过来的文件里的内容打出来都正确,就忽略了JAVA的源文件。认为是从unicode转换 utf8 有问题,特别将字符又做了处理,发现插入数据库还是不正确。

修改了ENCODING 字符字符后发现读入文件就不对了。这样轻松就解决了。

所以只要修改了读文件的时候采用 UTF8格式就可以啦。

posted @ 2011-05-22 11:28 paulwong 阅读(237) | 评论 (0)编辑 收藏

管理的原理之三-工具理论

昨天一天的时间,和父亲在旧院里安装了两截水管。

安装水管的工序大致为, 刨开地层土,找到水管主线,然后切开,焊接PE三通,及铺设相关的PE软管、水表等。

刨开地层土为体力活,而焊接三通等为技术活。当然我在其中主要承担了刨开地层土的工作。

我和父亲艰难的用铁锹刨开地表,以寻找水管主线。在坚硬的地表向下,埋设了一层厚厚的碳渣来减轻胡同里雨时的泥泞。这也给刨土增加了很多的难度,老父亲虽然年迈,但是似乎比我刨的熟练,速度比我更快。但我的铁锹在用力时就会稍微弯曲变形,力被减弱,一会儿,额头上便冒出了细细的汗珠。

父亲对我说:你用的那把铁锹是铁板的,而我用的这把铁锹则是钢板的。并且你的那把锹鼻处已经有裂缝,所以会变形弯曲,无法用力。

当我们找到主水管,并且清理用以为焊接容身的方坑时,父亲在一旁休息,我顺手提过父亲用的那把铁锹进行清理。我感觉父亲的那把铁锹非常顺手,硬度很大,几乎不用太大的力锹印便陷入泥土,在一撬的同时稳稳地端出一锹土来。当换了一把铁锹的时候,我才发现,工作进行的如此快速,如此有效率。

当方坑被清理完之后,我们开始了三通的焊接工作,焊接工具是一个称之为“热熔器”的设备,非常简单易用,我们第一次用,很快便掌握了其用法。

三通和PE管分别被套在热熔器上面,一会儿时间,拔出,快速将三通和PE管套接在一块,两者完美的融合,形成一个整体,我再一次赞叹一个合适的工具竟会如此提高我们的工作效率。

接下来开始焊接PE管的时候,我们又遇到了一些困难,是因为我们采用钢锯条来切割PE管,这样由于操作不熟练和不专业,每每导致PE管的横切面毛毛糙糙的,并且带有明显的斜茬,这对焊接后的效果产生一定的影响,一位围观的二叔对我们说:我家有专业的切割工具,剪PE管或PPR管的专业切割剪刀。二叔拿来后,做了一个简单的示范,将PE管放在剪刀口上面,一下一下握剪刀柄,一会的功夫便切割完毕,接过一看,横切面光滑如新,并且非常的整齐,没有一点斜茬的存在。

一天的工作结束了,我们如愿完成了前院和后院水管的安装工作。在傍晚的薄暮里,我慨叹时光的短暂,更加认同于好的工具使我们的工作时间缩短,才使我们用一天的时间完成这项工作。

如同采用合适的或专业的工具完成我们的工作一样,我们在管理中,也应当借助专业的人士来完成我们的目标。在完成目标的过程中,人其实也是工具,在遇到不合适、不顺手、不专业的工具时,你最好换掉他,因为他有可能使我们的工作时间无限的延长到又一个明天。

posted @ 2011-05-22 10:53 paulwong 阅读(166) | 评论 (0)编辑 收藏

管理的原理之二-保姆理论

宝宝1.4岁,路走的不扎实,通常都由她奶奶来带,爷爷次之,妈妈又次之,其中我带孩子时间是最少的。

宝宝刚学会走路时,虽然我还孩子的时间最少,但在我手里宝宝摔倒的次数最多,因此遭到了严厉的批评。

我承认我和他们一样用心来爱宝宝,宝宝的喜乐和哭闹深深地系着我的喜怒和哀乐。但宝宝摔倒的事实如此,我不得而知原因何在。

宝宝奶奶一语道破其中的“玄机”,曰:只因你把宝宝当成大孩子来看待。  一语道过之后,我忽然明朗了。

是的,我始终认为宝宝已经会走,因此应该给她更大的空间,放手她去探索去磨炼。 只因为我的放手,她才一次次在不断地尝试中摔倒。

我应当手不离其左右,配合着她,保护着她,她才能够在摔倒时有支撑或依靠,至少不会造成身体上的伤害。

那么在公司的人员管理中,新人又何尝不是刚学走路的孩童,需要我们管理者无微不至的照顾和指导,在他们不断尝试、不断探索和磨炼的过程中,我们不能等待着他们跌倒后进行自我总结教训,也不能任凭在他们跌倒后自顾着心疼,更不能在他们跌倒后声色俱厉的批评他们做事的方式和方法,因为他们还是个孩童。而管理者,是他们的第一任老师,需要手不离其左右,配合他,保护他,指导他,直到他由走而跑,健步飞。直到那时,才能放手。

posted @ 2011-05-22 10:50 paulwong 阅读(192) | 评论 (0)编辑 收藏

管理的原理之一-放羊理论

一大早,羊群慵懒地卧着,牧羊人要去放羊了,拿根木根在羊圈顶上轻轻敲几下,吆喝几声“起来了!起来了”,羊陆续地爬起来,从开着的羊圈门口鱼贯而出。牧羊人提着羊鞭,在后面驱赶着、催促着、约束着在狭窄的乡间小路上去往放牧的目的地。中间偶尔有行人或自行车通过,牧羊人会提前紧走几步,将羊赶往路的一边,好腾出一块路使行人通过。

目的地到了,牧羊人将羊群赶往沟渠,任羊群沿着沟沿食草,才悠然点上一支烟,烟雾缭绕升上半空。 蓦然,领头羊踅出沟渠,向麦田飞奔,羊群紧随其后,牧羊人赶忙扔掉烟卷,飞奔出去,赶在领头羊前面,抡动羊鞭,将羊重新又赶回沟渠。在一天中,这样类似的驱赶可能要重复好多好多次,直到黄昏夕阳西下,牧羊人又在后面抡动羊鞭,驱赶着贪吃的羊群回到羊圈。

年复一年,日复一年,牧羊人始终如此,羊群是他最亲密的伙伴。

这个故事提示管理的本质不在于制定完善的制度然后坐享其成。 纸面上的条文只是管理的标准,领导者的行动力和执行力才能真正使制度发生作用。

posted @ 2011-05-22 10:47 paulwong 阅读(272) | 评论 (0)编辑 收藏

项目可行性分析报告

分解为若干观察点,并为每个观察点设置一系列标准,分析如果这些标准通过,则认为该项目可行。

posted @ 2011-05-10 14:52 paulwong 阅读(174) | 评论 (0)编辑 收藏

领导的素质

会打仗的兵不一定有能力当统帅,尤其是前任如此耀眼夺目,还要比普通接班人多一个心理坎,心理上不能急于求成,行动上不能无所作为,其中尺度掌握很难很难。

更强的人是有魅力把各行各业强的人团结在自己周围。比如老乔,比如老罗,你们懂的。

领导的过人之处在于在无数的建议中选一个正确的建议。

posted @ 2011-05-01 23:49 paulwong 阅读(121) | 评论 (0)编辑 收藏

仅列出标题
共98页: First 上一页 79 80 81 82 83 84 85 86 87 下一页 Last