第二计 围魏救赵

“共敌不如分敌,敌阳不如敌阴。”

共敌不如分敌:共,集中的。分,分散,使分散。句意:打集中的敌人,不如设法分散它而后再打。

敌阳不如敌阴: 敌,动词,攻打。句意为:先打击气势旺盛的敌人,不如后打击气势旺盛的敌人。

古人按语说:治兵如治水:锐者避其锋, 如导疏;弱者塞其虚,如筑堰。故当齐救赵时,孙子谓田忌曰:“夫解杂乱纠纷者不控拳,救斗者,不搏击,批亢捣虚,形格势禁,则自为解耳。”(《史记》卷六五《孙子吴起列传》)。

对敌作战,好比治水:敌人势头强大,就要躲过冲击,如用疏导之法分流。对弱小的敌人,就抓住时机消灭它,就象筑堤围堰,不让水流走。孙子的比喻十分生动形象,想理顺乱丝和结绳,只能用手指慢慢去解开,不能握紧拳头去捶打;排解搏斗纠纷,只能动口劝说,不能动手参加。对敌人,应避实就虚,攻其要害,使敌方受到挫折,受到牵制,围困可以自解。

事见《史记.孙子吴起列传》 ,是讲战国时 期齐国与魏国的桂陵之战。公元前354年, 魏惠王欲释失中山的旧恨,便派大将庞涓前去攻打。这中山原本是东周时期魏国北邻的小国 被魏国收服,后来赵国乘魏国国丧伺机将中山 强占了,魏将庞涓认为中山不过弹丸之地, 距离赵国又很近,不若直打赵国都城邯郸,既解旧恨又一举双得。魏王从之,欣欣然似霸业从此开始,即拨五百战车以庞涓为将,直奔赵国围了赵国都城邯郸。 赵王急难中只好求救于齐 国,并许诺解围后以中山相赠。齐威王应允,令田忌为将,并起用从魏国救得的孙膑为军师领兵出发。这孙膑曾与庞涓同学,对用兵之法 谙熟精通。魏王用重金将他聘得,当时庞涓也 正事奉魏国。庞涓自觉能力不及孙膑,恐其贤于己,遂以毒刑将孙膑致残,断孙两足并在他 脸上刺字,企图使孙不能行走又羞于见人。后来孙膑装疯,幸得齐使者救助,逃到齐国。

这是一段关于庞涓与孙膑的旧事,且说田忌与 孙膑率兵进入魏赵交界之地时,田忌想直逼赵 国邯郸,孙膑制止说:解乱丝结绳,不可以握拳去打,排解争斗,不能参与搏击,平息纠纷要抓住要害,乘虚取势,双方因受到制约才能自然分开。现在魏国精兵倾国而出,若我直攻魏国。那庞涓必回师解救,这样一来邯郸之围定会自解。 我们再于中途伏击庞涓归路,其军 必败。田忌依计而行。果然,魏军离开邯郸,归路中又陷伏击与齐战于桂陵,魏部卒长途疲惫,溃不成军,庞涓勉强收拾残部, 退回大梁 齐师大胜,赵国之围遂解。这便是历史上有名的“围魏救赵”的故事。 又后十三年,齐魏之 军再度相交于战场,庞涓复又陷于孙膑的伏击自知智穷兵败遂自刎。孙膑以此名显天下,世传其兵法。

 

围魏救赵的思想,用在软件开发里,最典型的,就是分布式应用。比如一个网络服务器,有以下主要功能模块:前置机,接收与应答客户请求;业务处理,实现企业逻辑;数据引擎,提供所有的数据访问功能;消息转发,向管理机转发消息;与其它系统接口,使用到其它依赖的系统。国内一般的作法,是把这些部分实现为小的模块,然后集成在一个或几个进程中。其实,最好的办法,是把这些功能模块,分别实现为单独的进程。所谓的个个击破,每个进程可以单独部署在不同的机器上,将来需要增容时,很容易实现,简单地把个系统部署在单独的机器上,或将单独的机器升级到更好的硬件,就可以实现。并且,单独系统的崩溃,不会影响到其它的进程。单位系统的修改、升级,不会影响其它的系统,只要保持接口不变即可。这样就做到了:“共敌不如分敌”。将来某个系统发现不足,进行修改或升级时,不会影响其它系统,只是简单修改这个进程,或对这个系统进行增容,就做到了:“敌阳不如敌阴”。进程间使用SocketRMIRPCXMLSOAP等技术进行通讯就可以了。

站在系统设计的角度,对系统进行多进程的分布式设计;站在具体的子系统或代码块设计编写角度,也同样适用这条规则。也就是“自顶向下,逐步细化”。把问题大而化小,从而各各击破。一般的程序员拿到一个需求时,总是把精力集中在涉及到的技术本身上,而没有全面地分析需求和用到的技术本身。最后,虽然是实现了主要的需求,但往往遗漏了很多细节实现。这样的程序往往是不健壮的,因为考虑到的方面不周全,导致在异常处理、容错等方面都有隐患,这样的代码是低质量的。解决这个问题的方法就是:逐步细化需求,把客户已提到的主要需求和没有提到的、潜在存在的需求、在效率方面存在的需求、在健壮性方面存在的需求、在扩展性方面存在的需求等全部分析出来。然后对使用到的技术进行分析和学习,也从这些方面进行分析学习。最后,把技术上的实现和具体的需求对应上,就能写出高质量的代码。每一个部分都这样实现,最后的系统,一定是健壮的、高效的、易扩展的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值