国产精品91在线,色呦呦久久久,18免费在线视频http://www.aygfsteel.com/jjwwhmm/Embrace changes, pursue excellence, share niceness. zh-cnSun, 18 May 2025 02:59:52 GMTSun, 18 May 2025 02:59:52 GMT60鮮血的教訓(xùn):美國(guó)空軍3塊鋼板的反思http://www.aygfsteel.com/jjwwhmm/articles/323524.htmlponyponySun, 13 Jun 2010 08:05:00 GMThttp://www.aygfsteel.com/jjwwhmm/articles/323524.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/323524.htmlhttp://www.aygfsteel.com/jjwwhmm/articles/323524.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/323524.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/323524.htmlhttp://club.china.com/data/thread/12171906/2713/97/22/1_1.html
 

    第一塊鋼板的故事是運(yùn)輸機(jī)飛行員講的。在飛越駝峰航線支援中國(guó)抗戰(zhàn)時(shí),美軍的運(yùn)輸機(jī)隊(duì)常常遭到日軍戰(zhàn)斗機(jī)的偷襲。C-47運(yùn)輸機(jī)只有一層鋁 皮,日軍的零式戰(zhàn)斗機(jī)在屁股后面緊追,一通機(jī)槍掃射,飛機(jī)上就是一串透明窟窿,有時(shí)子彈甚至能穿透飛行座椅,奪去飛行員的生命。情急之下,一些美軍飛行員 在座椅背后焊上一塊鋼板。實(shí)際上,在與日本飛機(jī)激戰(zhàn)時(shí),中國(guó)空軍的飛行員早就用過(guò)這個(gè)辦法。就是靠著這塊鋼板,他們從日本飛機(jī)的火舌下奪回了自己的性命。

 

    第二塊鋼板的故事來(lái)自一位將軍。看過(guò)好萊塢大片《拯救大兵瑞恩》的觀眾也許還記得,片中出現(xiàn)過(guò)一個(gè)死在滑翔機(jī)里的美國(guó)將軍。這是一段真實(shí)的 故事。諾曼底登陸中,美軍第101空降師副師長(zhǎng)唐.普拉特準(zhǔn)將乘坐滑翔機(jī)實(shí)施空降作戰(zhàn)。起飛前,有些人自作聰明,在機(jī)頭位置副師長(zhǎng)的座位下裝上厚厚的鋼 板,用來(lái)防彈。但他們沒(méi)有想到,由于滑翔機(jī)自身沒(méi)有動(dòng)力,與牽引的運(yùn)輸機(jī)脫鉤后,必須保持平衡滑翔降落,而沉重的鋼板讓滑翔機(jī)頭重腳輕,一頭扎向地面,普 拉特準(zhǔn)將也摔斷了脖子,成為美軍在D日陣亡的唯一將領(lǐng)。

 

    第三塊鋼板的故事來(lái)自一位數(shù)學(xué)家。二戰(zhàn)后期,美軍對(duì)德國(guó)和日本法西斯展開了大規(guī)模戰(zhàn)略轟炸,每天都有成千架轟炸機(jī)呼嘯而去,返回時(shí)往往損失 慘重。美國(guó)空軍對(duì)此十分頭疼:如果要降低損失,就要往飛機(jī)上焊防彈鋼板;但如果整個(gè)飛機(jī)都焊上鋼板,速度航程載彈量什么都要受影響。

 

    怎么辦?空軍請(qǐng)來(lái)數(shù)學(xué)家亞伯拉罕.沃爾德。沃爾德的方法十分簡(jiǎn)單。他把統(tǒng)計(jì)表發(fā)給地勤技師,讓他們把飛機(jī)上彈洞的位置報(bào)上來(lái),然后自己鋪開 一張大白紙,畫出飛機(jī)的輪廓,再把那些小窟窿一個(gè)個(gè)添上去。畫完之后大家一看,飛機(jī)渾身上下都是窟窿,只有飛行員座艙和尾翼兩個(gè)地方幾乎是空白。

 

    沃爾德告訴大家:從數(shù)學(xué)家的眼光來(lái)看,這張圖明顯不符合概率分布的規(guī)律,而明顯違反規(guī)律的地方往往就是問(wèn)題的關(guān)鍵。飛行員們一看就明白了: 如果座艙中彈,飛行員就完了;尾翼中彈,飛機(jī)失去平衡就要墜落——這兩處中彈,轟炸機(jī)多半就回不來(lái)了,難怪統(tǒng)計(jì)數(shù)據(jù)是一片空白。因此,結(jié)論很簡(jiǎn)單:只需要 給這兩個(gè)部位焊上鋼板就行了。

 

    第一塊鋼板是傳奇,機(jī)智的飛行員用它挽救了自己的生命,戰(zhàn)場(chǎng)上曾有過(guò)許多這樣的傳奇故事,但這種傳奇往往像火花一閃即逝;第二塊鋼板則是教 訓(xùn),是用寶貴的生命換回來(lái)的教訓(xùn),誰(shuí)都知道焊鋼板的人也是好心,但結(jié)果卻完全相反;而第三塊鋼板是升華,它用科學(xué)的方法,從實(shí)戰(zhàn)經(jīng)驗(yàn)中提煉出規(guī)律,你可能 想像不到,這塊講科學(xué)的鋼板挽救了數(shù)以萬(wàn)計(jì)的飛行員的生命。

 

    小小的鋼板背后,凝聚著多少智慧和鮮血,值得每一位軍人去用心體會(huì)。一旦戰(zhàn)爭(zhēng)和你正面相對(duì)的時(shí)候,你準(zhǔn)備把鋼板放在哪里?



pony 2010-06-13 16:05 發(fā)表評(píng)論
]]>
感言http://www.aygfsteel.com/jjwwhmm/archive/2010/05/12/320681.htmlponyponyWed, 12 May 2010 04:48:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2010/05/12/320681.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/320681.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2010/05/12/320681.html#Feedback1http://www.aygfsteel.com/jjwwhmm/comments/commentRss/320681.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/320681.html

pony 2010-05-12 12:48 發(fā)表評(píng)論
]]>
終于把postfix跟imap搞好了,慶賀下!http://www.aygfsteel.com/jjwwhmm/archive/2010/04/14/318282.htmlponyponyWed, 14 Apr 2010 09:41:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2010/04/14/318282.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/318282.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2010/04/14/318282.html#Feedback4http://www.aygfsteel.com/jjwwhmm/comments/commentRss/318282.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/318282.html 在想不知能否在軟件開發(fā)中借鑒下postfix的架構(gòu)經(jīng)驗(yàn)。
現(xiàn)在已經(jīng)能通過(guò)postfix發(fā)送郵件,并能通過(guò)courier-imap的pop3接收郵件了,
總結(jié)經(jīng)驗(yàn)就是要多去看日志,跟郵件相關(guān)的日志可以去看/var/log/maillog,另外配置文件一點(diǎn)點(diǎn)的改,不要一次更改過(guò)多的內(nèi)容。
接下來(lái)把認(rèn)證相關(guān)的改成mysql,把webmail配置上。


pony 2010-04-14 17:41 發(fā)表評(píng)論
]]>
從小處看gmail的性能http://www.aygfsteel.com/jjwwhmm/archive/2010/04/12/318067.htmlponyponyMon, 12 Apr 2010 07:41:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2010/04/12/318067.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/318067.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2010/04/12/318067.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/318067.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/318067.html

在上面的這段html頁(yè)面中,gmail使用了一個(gè)table,代碼如下:
<tr>
  <td nowrap="nowrap">
  <table width="100%" cellspacing="0" cellpadding="0" bgcolor="#c3d9ff" align="center" style="margin-bottom: 5px;">
  <tbody><tr>
  <td valign="top" align="left" class="bubble tl"><div class="SPRITE_corner_tl"></div></td>
  <td style="padding: 5px 0pt; font-family: arial; text-align: left; font-weight: bold;" rowspan="2" class="bubble"><b>歡迎使用 Gmail</b></td>
  <td valign="top" align="right" class="bubble tr"><div class="SPRITE_corner_tr"></div></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" class="bubble bl"><div class="SPRITE_corner_bl"></div></td>
  <td valign="bottom" align="right" class="bubble br"><div class="SPRITE_corner_br"></div></td>
  </tr>
  </tbody></table>
  </td>
  </tr>
為了既考慮UI效果,又能避免帶來(lái)速度上的影響,用了最少的圖片來(lái)實(shí)現(xiàn)彎角效果(圖片在div的SPRITE_corner CSS中),從而避免設(shè)計(jì)成一個(gè)大的圖片而影響用戶瀏覽器下載資源的速度。
從我這個(gè)非UI設(shè)計(jì)人員的視角來(lái)看,不知道GMAIL這樣設(shè)計(jì)的初衷是否是這樣的,如果不是的話,請(qǐng)高手賜教。

pony 2010-04-12 15:41 發(fā)表評(píng)論
]]>
Postfix架構(gòu)http://www.aygfsteel.com/jjwwhmm/archive/2010/04/08/317692.htmlponyponyThu, 08 Apr 2010 01:45:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2010/04/08/317692.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/317692.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2010/04/08/317692.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/317692.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/317692.html
trivial-
rewrite(8)
Network -> smtpd(8)
^
|
|
v

\
Network -> qmqpd(8) -> cleanup(8) -> incoming

/

pickup(8) <- maildrop

^
|
Local -> sendmail(1) -> postdrop(1)
Postfix發(fā)送郵件的架構(gòu)示意圖:
trivial-
rewrite(8)

smtp(8) -> Network
/

^
|
|
v
- lmtp(8) -> Network
/
incoming -> active -> qmgr(8) --- local(8) -> File, command

^
|
|
v

\
- virtual(8) -> File

deferred
\

pipe(8) -> Command




pony 2010-04-08 09:45 發(fā)表評(píng)論
]]>
學(xué)習(xí):Thread的setDaemon方法http://www.aygfsteel.com/jjwwhmm/archive/2010/03/31/317061.htmlponyponyWed, 31 Mar 2010 07:26:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/31/317061.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/317061.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/31/317061.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/317061.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/317061.html 如果創(chuàng)建的線程沒(méi)有顯示調(diào)用此方法,這默認(rèn)為用戶線程。
下面是一個(gè)示例代碼:

public class TestThreadDaemonMethod {

 /**
  * @param args
  */
 public static void main(String[] args) {
        TestThread t = new TestThread("test thread");
        //如果設(shè)置為false,那么在執(zhí)行完后面的start方法后,jvm不會(huì)退出
        t.setDaemon(false);
        //如果設(shè)置為true,則執(zhí)行完后面的start方法后,jvm會(huì)退出
        t.setDaemon(true);
        t.start();
        //在start之后設(shè)置daemon會(huì)拋出異常
        //t.setDaemon(true);
        if (t.isDaemon()) {
            System.out.println("test thread is a daemon.");
        }
}
}

class TestThread extends Thread {
        private String name;
 
        public TestThread(String name) {
            this.name = name;
        }
 
        /* (non-Javadoc)
         * @see java.lang.Thread#run()
        */
        public void run() {
            while(true) {
                System.out.println("running " + name);
                try {
                    Thread.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
}



pony 2010-03-31 15:26 發(fā)表評(píng)論
]]>
插播一條招聘廣告:盛大在線招聘Java程序員http://www.aygfsteel.com/jjwwhmm/archive/2010/03/31/317035.htmlponyponyWed, 31 Mar 2010 05:03:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/31/317035.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/317035.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/31/317035.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/317035.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/317035.html

pony 2010-03-31 13:03 發(fā)表評(píng)論
]]>
[ZZ]Jetty 源碼分析http://www.aygfsteel.com/jjwwhmm/archive/2010/03/26/316653.htmlponyponyFri, 26 Mar 2010 08:49:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/26/316653.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/316653.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/26/316653.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/316653.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/316653.html

一、 總括

     你了解Jetty 嗎,就像我們所熟知的Tomcat一樣, Jetty是一個(gè)免費(fèi)的開放源碼的100%純Java的Http服務(wù)器和Servlet容器。



     Jetty具備以下特點(diǎn):

     快速高效

     。Jetty是最快的Servlet服務(wù)器之一

     。Jetty可以處理上千個(gè)并發(fā)連接      小巧嵌入      。Jetty的jar只有600多K      。可動(dòng)態(tài)嵌入到應(yīng)用程序,適合開發(fā)web2.0等應(yīng)用

     應(yīng)用廣泛

     。開源項(xiàng)目有Geronimo, JBoss, JOnAS

     。商業(yè)項(xiàng)目有IBM Tivoli, Sonic MQ and Cisco SESM等

     可到Jetty網(wǎng)站 http://jetty.mortbay.org/jetty/ 查看最新信息

     本文將通過(guò)對(duì)Jetty最新穩(wěn)定版 Jetty5.1.5RC2 源碼的研究,向讀者展示Jetty在設(shè)計(jì)方面使用的不同設(shè)計(jì)理念, 希望對(duì)廣大開發(fā)者在設(shè)計(jì)自己的系統(tǒng)時(shí)有所幫助。

     Jetty按照功能可以分為四個(gè)主個(gè)主要的部分,HttpServer, HttpContext,HttpHandler,HttpListener,詳見如下類圖:

<圖 1-1>

 

二、HttpServer及配置

     對(duì)于初次接觸Jetty的人一定會(huì)對(duì)上圖感到迷惑,其實(shí)在Jetty中 HttpServer是一個(gè)服務(wù)器的核心控制類, 我們可以看到,其它的組件類都是由該類擴(kuò)展開來(lái),HttpServer的作用就是在一系列的監(jiān)聽器類和處理器類之間搭起了一個(gè)橋梁,有效的控制著消息在系統(tǒng)內(nèi)的傳遞,如下圖:
<圖 1-2 >
     HttpServer職責(zé)是接受從HttpListener傳遞過(guò)來(lái)的request(請(qǐng)求),HttpServer通過(guò)對(duì)request的Host(主機(jī))或Path(路徑)進(jìn)行匹配,然后分發(fā)給相應(yīng)的HttpContext(可以理解為一個(gè)web application)。      這里舉個(gè)例子,假設(shè)我們現(xiàn)在要建立一個(gè)提供靜態(tài)頁(yè)面web服務(wù),頁(yè)面內(nèi)容在c:\root \下,可以通過(guò)如此配置HttpServer:      HttpServer server = new HttpServer(); // 創(chuàng)建一個(gè)新的HttpServer      SocketListener listener = new SocketListener(); // 創(chuàng)建一個(gè)新監(jiān)聽器      listener.setPort(8080);// 設(shè)置監(jiān)聽端口為8080      server.addListener(listener);// 將監(jiān)聽類注冊(cè)到server中      HttpContext context = new HttpContext(); // 創(chuàng)建一個(gè)新HttpContext      context.setContextPath("/app/*"); // 設(shè)置訪問(wèn)路徑      context.setResourceBase("c:/root/"); // 設(shè)置靜態(tài)資源路徑      context.addHandler(new ResourceHandler()); // 為這個(gè)HttpContext添加一個(gè)靜態(tài)資源處理器      server.addContext(context); // 將這個(gè)HttpContext注冊(cè)到server中      server.start();// 最后啟動(dòng)這個(gè)server      當(dāng)我們要建立一個(gè)提供動(dòng)態(tài)頁(yè)面web服務(wù)時(shí), 假設(shè)我們自己的 web 應(yīng)用放在Jetty目錄下的webapps下并打好包文件名為myapp.war, 可以通過(guò)如此配置HttpServer:      Server server = new Server(); // 創(chuàng)建一個(gè)新的HttpServer      SocketListener listener = new SocketListener();// 創(chuàng)建一個(gè)新監(jiān)聽器      listener.setPort(8080); // 設(shè)置監(jiān)聽端口為8080      server.addListener(listener ); // 將監(jiān)聽類注冊(cè)到server中      server.addWebApplication("myapp","./webapps/myapp/"); // 將這個(gè)web應(yīng)用注冊(cè)到這個(gè)Server中      server.start(); // 最后啟動(dòng)這個(gè)server      短短數(shù)行代碼就可創(chuàng)建一個(gè)web服務(wù)器并啟動(dòng)它,這有點(diǎn)類似于我們windows中的即插即用的概念,需要什么就添加什么,把這些類以HttpServer為核心組合在一起,就可以完成強(qiáng)大的功能。  

三、Jetty Server

     1.上面我們探討了HttpServer的啟動(dòng),讀者一定還存在這樣疑問(wèn),整個(gè)Jetty 服務(wù)器是怎樣啟動(dòng)的?      首先我們可以在圖 1-1 看到左下角有一個(gè)Server類,這個(gè)類實(shí)際上繼承了HttpServer,當(dāng)啟動(dòng)Jetty服務(wù)器時(shí),具體來(lái)說(shuō),在Jetty根目錄下命令行下如輸入 java -jar start.jar etc/demo.xml,注意這里有一個(gè)配置文件 demo.xml做為運(yùn)行參數(shù),這個(gè)參數(shù)也可以是其它的配置文件,也可是多個(gè)xml配置文件,其實(shí)這個(gè)配置文件好比我們使用struts時(shí)的struts -config.xml文件,將運(yùn)行Server需要用到的組件寫在里面,比如上一節(jié)中HttpServer的配置需要的組件類都可以寫在這個(gè)配置文件中。      2.我們自己部署到Jetty的webapps目錄下的web application,Jetty如何運(yùn)行我們自己的web application?      首先當(dāng)我們按上述方法啟動(dòng)Jetty Server時(shí),就會(huì)調(diào)用Server類里面的main方法,這個(gè)入口方法首先會(huì)構(gòu)造一個(gè)Server類實(shí)例(其實(shí)也就構(gòu)造了一個(gè) HttpServer),創(chuàng)建實(shí)例過(guò)程中就會(huì)構(gòu)造XmlConfiguration類的對(duì)象來(lái)讀取參數(shù)配置文件,之后再由這個(gè)配置文件產(chǎn)生的 XmlConfiguration對(duì)象來(lái)配置這個(gè)Server,配置過(guò)程其實(shí)是運(yùn)用Java的反射機(jī)制調(diào)用Server的方法并傳入配置文件中所寫的參數(shù)來(lái)向這個(gè)Server添加HttpListener,HttpContext,HttpHandler,web application(對(duì)應(yīng)我們自己部署的web應(yīng)用)。      添加我們自己的web application過(guò)程中相應(yīng)的就會(huì)讀取我們所熟知的/WEB-INF/web.xml來(lái)創(chuàng)建一個(gè)WebApplicationContext(這個(gè)類繼承了HttpContext)的實(shí)例,同時(shí)也會(huì)創(chuàng)建WebApplicationContext自身的ServletHandler(實(shí)現(xiàn)了 HttpHandler接口),注意到ServletHandler中包含一組ServletHolder指向?qū)嶋H的Servlet,譬如說(shuō)我們?cè)?web.xml文件中配置了兩個(gè)Filter和一個(gè)Servlet,這里就會(huì)有三個(gè)ServletHolder,實(shí)際處理請(qǐng)求時(shí) ServeletHandler就會(huì)依次調(diào)用這三個(gè)ServletHolder傳入request,response處理(實(shí)際最后交給這兩個(gè) Filter和Servlet處理),這樣我們自己做好的一個(gè) web應(yīng)用就掛載到這個(gè)Server上了,可以接受客戶端相應(yīng)的request(請(qǐng)求)。  

四、運(yùn)行原理(請(qǐng)參考如下時(shí)序圖)

<圖 1-7 >

     上圖展示了一個(gè)request的處理過(guò)程,首先HttpListener監(jiān)聽到客戶端發(fā)來(lái)的請(qǐng)求創(chuàng)建一個(gè)HttpConnection實(shí)例(封裝了連接細(xì)節(jié),比如從Socket連接中獲取的輸入流和輸出流), HttpConnection對(duì)象構(gòu)建過(guò)程中會(huì)創(chuàng)建Jetty內(nèi)部自定義的HttpRequest和HttpResponse對(duì)象,接著 HttpListener會(huì)調(diào)用這個(gè)HttpConnection實(shí)例的handle方法, HttpConnection實(shí)例就調(diào)用HttpRequest對(duì)象的read()方法讀取信息,調(diào)用HttpServer的service方法以 HttpRequest,HttpResponse為參數(shù)傳給HttpServer,HttpServer又將HttpRequest和 HttpResponse分發(fā)給相應(yīng)的HttpCotext,HttpContext最后將HttpRequest和HttpResponse交給自身的 HttpHandler 處理,在這里HttpRequest,HttpResponse被再次封裝為ServletHttpRequest和 ServletHttpResponse,其實(shí)這兩個(gè)類實(shí)現(xiàn)了我們所熟知的HttpServletRequest和 HttpServletResponse接口。

 

五、高級(jí)性能

     1.HttpHandler:

     該接口的實(shí)現(xiàn)類用于處理HttpContext分發(fā)過(guò)來(lái)的reqeust,不同的實(shí)現(xiàn)類的有不同的處理功能,這里介紹幾常用的HttpHandler實(shí)現(xiàn)類:      ReourceHandler:用于處理靜態(tài)內(nèi)容,如以擴(kuò)展名為.html的文件

     SecurityHandler:提供基本的安全驗(yàn)證

     ForwardHandler:轉(zhuǎn)發(fā)一個(gè)request到另一個(gè)url

     ServletHandler:用于將request交由具體的Servlet類進(jìn)行處理      2.當(dāng)你在看圖 1-2 時(shí)候會(huì)注意到HttpServer和HttpListener,HttpServer與HttpContext,HttpContext與 HttpHandler存在一對(duì)多的關(guān)系,下面就介紹一下它們之間的這種關(guān)系如何通過(guò)程序來(lái)配置.

     HttpListener & HttpServer:

     HttpListener是所有監(jiān)聽器類的接口,如圖中的SocketListener (基于傳統(tǒng)的Socket技術(shù))就實(shí)現(xiàn)了該接口,Jetty還有其它的實(shí)現(xiàn)該接口類,如SocketChannelListener(基于NIO技術(shù))類等,HttpListener職責(zé)主要是在服務(wù)器啟動(dòng)后監(jiān)聽相應(yīng)端口的來(lái)自客戶端請(qǐng)求并建立連接(圖 1-1 中所示用HttpConnection封裝連接細(xì)節(jié)),監(jiān)聽器可在同個(gè)IP上開啟多個(gè)端口為同一個(gè)HttpServer 進(jìn)行監(jiān)聽,所以HttpListener和HttpServer是多對(duì)一的關(guān)系,如下圖:

<圖 1-3 >

     配置代碼:      HttpServer server = new HttpServer();      HttpListenrer listener1 = new SocketChanneListener();      Listener1.setPort(8080);      HttpListenrer listener1 = new SocketListener();      Listener1.setPort(8443);      server.addListener(listener1);      server.addListener(listener2);  

     HttpContext & HttpHandler:

     HttpContext相當(dāng)于對(duì)應(yīng)客戶端請(qǐng)求的URL或某個(gè)虛擬機(jī), 其子類中包含若干個(gè)HttpHandler, 當(dāng)接受到request(請(qǐng)求)時(shí),HttpContext會(huì)依次(按某個(gè)預(yù)定的次序)把request交給這些HttpHandler處理,直到這個(gè) request被標(biāo)示處理過(guò)為止, 需要注意的是這個(gè)request可能被多個(gè)HttpHandler處理,但只能有一個(gè)HttpHandler能標(biāo)示這個(gè)request已被處理過(guò).

     一個(gè)典型的HttpContext有用于安全處理、靜態(tài)資源處理及Servlet類的 HttpHandler,如下圖:
<圖 1-4>
     配置代碼:      HttpContext context = new HttpContext();      context.setContextPath(“/myapp/*”);      HttpHandler securitHandler = new SecurityHandler();      HttpHandler resourceHandler = new ResourceHandler();      HttpHandler servletHandler = new ServletHandler();      context.addHandler(securitHandler);      context.addHandler(resourceHandler);      context.addHandler(servletHandler);        HttpServer & HttpContext:      一般的HTTP服務(wù)器軟件可以同時(shí)處理多個(gè)web application,同樣一個(gè)HttpServer可以包含多個(gè)HttpContext,如下圖可以通過(guò)同一個(gè)端口的監(jiān)聽類來(lái)映射多個(gè) HttpContext:

<圖 1-5 >

     配置代碼:      HttpServer server = new HttpServer();      HttpContext context1 = new HttpContext();      context1.setContextPath(“/app1/*”);      HttpContext context2 = new HttpContext();      context2.setContextPath(“/app2/*”);      server.addContext(context1);        HttpServer & HttpLister & HttpContext:

     另外Jetty對(duì)多網(wǎng)卡(多個(gè)IP地址,不同的主機(jī)名)的服務(wù)器也提供了很好的支持,每個(gè) HttpContext都有自身的HttpServer:

<圖 1-6 >

     配置代碼:      HttpServer server1 = new HttpServer();      SocketListener listener1 = new SocketListener();

     listener1.setHost(“www.app1.com”);//orListener1.setHost(“www.app2.com”)

     listener2.setPort(80);

     HttpContext context1 = new HttpContext();

     context1.setContextPath(“/”);

     server1.addListener(listener1);

     server1.addContext(context1);

       3.Jetty對(duì)高并發(fā)的支持
<圖 1-8>
     如果多用戶請(qǐng)求服務(wù)就會(huì)涉及到多線程的管理,如圖 1-8,Jetty中主要由ThreadPool負(fù)責(zé)管理多線程,注意其中Pool.PondLife是Pool的一個(gè)內(nèi)部接口, ThreadPool.PoolThread是ThreadPool的一個(gè)內(nèi)部線程類,我們看到Pool.PondLife和Pool存在一個(gè)聚集的關(guān)系,實(shí)際上Pool對(duì)象中存放在是一個(gè)個(gè)ThreadPool.PoolThread線程對(duì)象,當(dāng)有新用戶連接上Server時(shí),ThreadPool就從Pool中取一個(gè)空閑的線程為當(dāng)前用戶連接服務(wù)。  

六、小結(jié)

     本文通過(guò)圖示簡(jiǎn)要介紹了Jetty整個(gè)體系架構(gòu)和主要的組件類及服務(wù)器的啟動(dòng)執(zhí)行過(guò)程,其實(shí)Jetty 通常被用來(lái)做為內(nèi)嵌的Web Server來(lái)使用,一些常見的服務(wù)器軟件,如Apache Cocoon、JBoss ,JOnAs等都會(huì)采用Jetty作為Web解決方案;另外由于Jetty在性能及穩(wěn)定性要優(yōu)于同類HTTP Server的原因,Jetty已在國(guó)外已很流行,鑒于這一點(diǎn),本文作者可以預(yù)測(cè)在不久的將來(lái)Jetty同樣也會(huì)在國(guó)內(nèi)流行開來(lái)。

  附: 來(lái)源:http://blog.leiling.com/CALM/archive/2005/12/23/106662.aspx
作者聯(lián)系方式:陳應(yīng)剛 dycyg@yahoo.com 熊紅陽(yáng)


pony 2010-03-26 16:49 發(fā)表評(píng)論
]]>
讀書有感:不要試圖精確的定義一個(gè)論題,而應(yīng)該把一類問(wèn)題組合成一個(gè)體系http://www.aygfsteel.com/jjwwhmm/archive/2010/03/23/316234.htmlponyponyTue, 23 Mar 2010 01:26:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/23/316234.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/316234.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/23/316234.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/316234.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/316234.html這幾天在看德魯克的“最后的完美世界”一書,看到亨頓從他老師黎曼那得到的教誨:不要試圖精確的定義一個(gè)論題,而應(yīng)該把一類問(wèn)題組合成一個(gè)體系。這句話想了好幾天,但始終沒(méi)有在心中有個(gè)非常清晰的概念,不知道這句話是不是真的是數(shù)學(xué)大師黎曼的話。



pony 2010-03-23 09:26 發(fā)表評(píng)論
]]>
每日感言:沒(méi)有的總想有,得到的還盼望!http://www.aygfsteel.com/jjwwhmm/archive/2010/03/23/316232.htmlponyponyTue, 23 Mar 2010 01:22:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/23/316232.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/316232.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/23/316232.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/316232.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/316232.html

pony 2010-03-23 09:22 發(fā)表評(píng)論
]]>
讀書有感:成功的關(guān)鍵是為了保持競(jìng)爭(zhēng)性而以最低的成本提供這些服務(wù)http://www.aygfsteel.com/jjwwhmm/archive/2010/03/16/315583.htmlponyponyTue, 16 Mar 2010 05:49:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/16/315583.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/315583.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/16/315583.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/315583.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/315583.html          對(duì)于最后這句話,回顧我在支付行業(yè)這幾年的工作經(jīng)驗(yàn),真是深有感觸。目前國(guó)內(nèi)排名靠前的各第三方支付公司,所提供的支付服務(wù)可以說(shuō)大同小異,即便是在行業(yè)解決方案上,可以說(shuō)也是一窩蜂的擠入某幾個(gè)利潤(rùn)較高的機(jī)票,彩票,游戲,購(gòu)物幾個(gè)行業(yè)。可以說(shuō),大家都看到了客戶想要的東西,知道客戶需要的是什么。并且都推出了類似的服務(wù)。但是,各家支付公司推出這些服務(wù)的時(shí)間是有長(zhǎng)有短,細(xì)節(jié)上更是千差萬(wàn)別。可以說(shuō),在服務(wù)行業(yè)中,更能體現(xiàn)細(xì)節(jié)決定成敗這句話。可能我的清算周期比你的早一天,我就能搶占你的客戶。我的定價(jià)策略能靈活的適應(yīng)客戶的定制化需求,就能領(lǐng)先對(duì)手拿下客戶。在這里,大家體現(xiàn)的競(jìng)爭(zhēng)性就是看誰(shuí)能在最短的時(shí)間里提供這些服務(wù)。時(shí)間正是最重要的一個(gè)成本因素。
        那么,單從時(shí)間上來(lái)考慮,支付公司如何此才能以最短的時(shí)間來(lái)實(shí)現(xiàn)并推出服務(wù)呢?一方面,很重要的是支付系統(tǒng)的可定制性,可擴(kuò)展性。在我以前曾任職的某支付公司里,其收單系統(tǒng)(網(wǎng)關(guān)),幾乎在任一個(gè)步驟都可實(shí)現(xiàn)對(duì)商戶的定制化,只要客戶有需要,大部分定制需求都可以在系統(tǒng)運(yùn)行期間完成定制。可惜后面的設(shè)計(jì)者并沒(méi)有去繼續(xù)這方面的工作。
       另一方面,更重要的是公司對(duì)于產(chǎn)品研發(fā)運(yùn)營(yíng)的機(jī)制。這可能也是各大支付公司之間最大的差別了。有的公司是有單獨(dú)的產(chǎn)品負(fù)責(zé)人,他由一而終,全權(quán)負(fù)責(zé)一個(gè)產(chǎn)品從創(chuàng)意,策劃,設(shè)計(jì),研發(fā),運(yùn)營(yíng),市場(chǎng)等涉及產(chǎn)品整個(gè)生命周期的事情。這種方式風(fēng)險(xiǎn)比較大,產(chǎn)品是否成功取決于產(chǎn)品負(fù)責(zé)人對(duì)市場(chǎng)的把握。所以這中機(jī)制下的產(chǎn)品負(fù)責(zé)人往往是一個(gè)小的團(tuán)隊(duì),三個(gè)人左右,不能多于三人。有的公司則分別由不同的部分負(fù)責(zé)產(chǎn)品在生命周期上的不同階段,全權(quán)負(fù)責(zé)的就只能是大老板了。這種方式下,公司的整個(gè)產(chǎn)品研發(fā)運(yùn)營(yíng)機(jī)制比較固定,產(chǎn)品都是按照固有的流程一步步走下去。如果公司遇到非常緊急的項(xiàng)目需求,那么只能由大老板出面,走特殊流程,以期迅速完成產(chǎn)品的研發(fā)。這種機(jī)制有個(gè)弱點(diǎn),就是各個(gè)部門之間會(huì)互相推諉責(zé)任。

pony 2010-03-16 13:49 發(fā)表評(píng)論
]]>
[zz]L7-filter Kernel Version HOWTOhttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/16/315578.htmlponyponyTue, 16 Mar 2010 05:09:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/16/315578.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/315578.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/16/315578.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/315578.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/315578.html【轉(zhuǎn)載自http://l7-filter.sourceforge.net/HOWTO
Last update 23 Aug 2008

If you have not already, please read the README.

Table of Contents

Important links on this page:

What You Need To Get

Kernel Patch

Short version for experts: Apply our kernel patch. Enable the new match option in Netfilter.

Check our kernel compatibility list to see if the Linux version you want to use has been tested.

Use the appropriate kernel patch from the "Layer 7 patches" package to patch[1] the kernel (read the README in the package to determine which patch to use). Set up your kernel as you would otherwise. Now enable the following options (these are correct for Linux 2.6.21.1, but they tend to move around a lot, so you may have to go hunting if you have a different kernel version):

  • "Prompt for development and/or incomplete code/drivers" (under "Code maturity level options")
  • "Network packet filtering framework" (Networking → Networking support → Networking Options)
  • "Netfilter Xtables support" (on the same screen)
  • "Netfilter connection tracking support" (... → Network packet filtering framework → Core Netfilter Configuration), select "Layer 3 Independent Connection tracking"
  • "Connection tracking flow accounting" (on the same screen)
  • And finally, "Layer 7 match support"
  • Optional but highly recommended: Lots of other Netfilter options, notably "FTP support" and other matches. If you don't know what you're doing, go ahead and enable all of them.

Warning: Some users have reported kernel crashes when they using SMP with l7-filter. (Some have also reported that their SMP systems run fine.) If you have a multi-CPU machine, test carefully before putting it into production with l7-filter.

Compile and install the kernel as usual. (Our code may generate warnings about "initialization from incompatible pointer type", ignore them.) Reboot.

1How to patch a source tree

Suppose you have a patch called happy.patch. To apply it, go into the root directory of the source tree you want to patch and run "patch -p1 < happy.patch"

Iptables Setup

First read the README in the package "Layer 7 patches". Depending on your version of iptables, the instructions are different.

iptables 1.4.0 and older

Use the appropriate iptables patch to to patch[1] iptables. Compile iptables, pointing it at your patched kernel source:

  • Run "chmod +x extensions/.layer7-test" (information about file permissions can't be contained in the patch)
  • Then "make KERNEL_DIR=/path/to/patched/kernel_source" (you must have configured your kernel source before this step)
  • And install (as root): "make install KERNEL_DIR=/path/to/patched/kernel_source"

iptables 1.4.1

Don't use this version. There's no reason to and it's difficult to compile.

iptables 1.4.1.1 and newer

Copy libxt_layer7.c and libxt_layer7.man (from the subdirectory of the "Layer 7 patches" package that the README points you to) to the extensions/ directory of your iptables source. Then:

  • "./configure --with-ksource=/path/to/patched/kernel_source" (use the full path)
  • "make"
  • (as root) "make install"

Protocol Definitions (Pattern Files)

These files tell iptables and the kernel how protocol names correspond to regular expressions, e.g. "ftp" means "^220[\x09-\x0d -~]*ftp".

Uncompress the "Protocol Definitions" package and make the resulting directory /etc/l7-protocols.[2]

You should now be ready to actually do stuff.

2Notes for non-conformists

You can also install the patterns in a custom location. If you do this, you need to specify --l7dir before --l7proto when you use l7-filter:

iptables [...] -m layer7 --l7dir /home/bob/patterns --l7proto http [...]

Actually doing stuff

There are three things you may be interested in doing: (1) blocking certain protocols (2) controlling bandwidth use (3) accounting. We cover each of these cases below.

First, a reminder: Just because you're using l7-filter, you don't need to do all of your packet classification using it. It's likely that what you want to accomplish can be at least partially done with less demanding classifiers, such as port matching. For instance, you can probably assume that traffic on TCP port 80 that isn't matched by any P2P patterns is HTTP; you don't need to actually use the HTTP pattern.

l7-filter uses the standard iptables extension syntax. (If you are not familiar with this, it's time to read the documentation at netfilter.org or at least "man iptables".)

iptables [specify table & chain] -m layer7 --l7proto [protocol name] -j [action]

(Or, if you're just interested in accounting, omit "-j [action]".)

For a list of valid protocol names, see the protocols page. You can also add your own protocols.

The only trick is that, in order to do its classification, l7-filter must be able to see all of the relevant traffic. It only sees packets if they go through an l7-filter rule. One way of ensuring this is to use the POSTROUTING chain of the mangle table:

iptables -t mangle -A POSTROUTING -m layer7 --l7proto [etc.]

See this packet flow diagram for details. In some cases, l7-filter can sucessfully match even if it can only see one side of the connection, but in general, this won't work.

If you are using a version of l7-filter earlier than 2.7, you must manually load the ip_conntrack module kernel for l7-filter to work. Newer versions do this automatically.

1. Blocking

Don't. Here's why:

  • l7-filter matching isn't foolproof: there may be both false positives (one protocol can look like another) and false negatives (applications can do obscure things that we didn't count on). Patterns that are known to regularly generate false positives are marked "overmatching" on the protocols page, but others may also do so occasionally.
  • Almost every type of Internet traffic has legitimate uses. For instance, P2P protocols, while widely used to violate copyright, are also an efficient way to distribute open source software and legally free music.
  • Programs can respond to being blocked by port-hopping, switching between TCP and UDP, opening a new connection for every trivial operation, using encryption, or employing other evasion tactics. Trying to block such protocols has consequences on two levels:
    1. In the case of port/protocol-hopping, you make it harder for yourself to identify protocols that already act this way.
    2. You encourage programmers to include these "features" in new programs, making it harder for everyone in the future. For example: In early 2006, Bittorrent started moving towards end-to-end encryption because many networks were either blocking it or severely restricting its bandwidth.
  • l7-filter patterns are not generally designed with blocking in mind. We consider a protocol to be well identified if the identification is useful for controlling its bandwidth. This means, for instance, that for P2P applications, we do not focus on catching connections that are not downloads.
  • Blocking with l7-filter provides no security, since any reasonably determined person can easily circumvent it.

Instead of dropping packets you don't like, we recommend using Linux QoS to restrict their bandwidth usage. If you insist on using l7-filter to drop packets, make sure you have investigated other options first, such as the features of your HTTP proxy (useful for worms).

2. Bandwidth Restriction

To control the bandwidth that a protocol uses, you can use Netfilter to "mark" the packets and QoS to filter on that mark. To mark:

iptables -t mangle -A POSTROUTING -m layer7 --l7proto imap -j MARK --set-mark 3

The number "3" is arbitrary. It can be any integer. Then use tc to filter on that mark (tc is "traffic control", the userspace tool for Linux QoS, part of the iproute2 package):

tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 3 fw flowid 1:3

Did you understand that last command? You can try reading The Linux Advanced Routing and Traffic Control HOWTO for enlightenment. You should do this so that you have some idea what you're doing, but unfortunately, tc is incredibly obtuse and you're likely to wish you just had a canned script. Well, we can help:

These may need to be modified if your setup is significantly different than mine, but it should provide a much better starting point than most other things you are likely to find.

Be prudent when choosing the amount of bandwidth you allow each protocol. Restricting a protocol to an unusably low bandwidth can have similar consequences to blocking it.

3. Accouting

If you just want to keep track of what's in use on your network, simply use the above command without any -j option. For example:

iptables -t mangle -A POSTROUTING -m layer7 --l7proto imap

You can then get statistics by using iptables -L. (See "man iptables" for details.)

More Information

Dealing with FTP, IRC, etc.

Some protocols open child connections to transfer data. FTP is the most familiar example. If you have loaded the ip_conntrack_ftp or nf_conntrack_ftp kernel module, l7-filter will classify FTP and all its child connections as FTP. The same goes for IRC/IRC-DCC, etc.

If you wish to classify the children differently, use the standard iptables "helper" match. You can use "-m --helper ftp" to match ftp child connections. Of course, once you've done this, it's silly to involve l7-filter, at least for the children.

The "unset" and "unknown" matches

l7-filter marks unmatched connections that it is still trying to match as "unset". The first few packets of all TCP connections as well as those of some UDP connections will match this. Similarly, l7-filter marks connections that it has given up trying to match as "unknown". These are matched just like normal protocols:

iptables -A FORWARD -m layer7 --l7proto unset
iptables -A FORWARD -m layer7 --l7proto unknown

The "unset" match is only supported by l7-filter 2.9 and up.

Upgrading the protocol definitions

The protocol definitions are simple text files with a format described in the Pattern-HOWTO. They can be updated as a package or individually.

If you update the protocol definitions, you need to clear the relevant iptables rules and re-enter them. This is because the pattern files are only read by iptables, not directly by the kernel.

Other things to know

  • By default, l7-filter looks at the first 10 packets or 2kB, whichever is smaller. These limits are somewhat conservative. It is well known that some HTTP connections (those that involve large cookies), for instance, need more packets to be matched.
    • You can alter the number of packets at any time through /proc/net/layer7_numpackets. (i.e. "echo 16 > /proc/net/layer7_numpackets".)
    • In l7-filter versions 2.0 and forward, you can alter the number of bytes at module load time: "modprobe xt_layer7 maxdatalen=N" (ipt_layer7 in old versions), where N is in bytes. This should be used cautiously, since performance may decrease drastically with larger data sizes. To prevent you from accidentally bringing down your network, there is an artificial limit of 65536 imposed. If you're sure you know what you're doing, you can remove this limit by editing ipt_layer7.c or xt_layer7.c in the kernel source.
  • It's possible (although rare) for a connection to be matchable by more than one pattern. The patterns are tested in the order you specified with iptables. After a match is made, l7-filter does not continue testing that connection, so changing the order of your rules may change what happens.
  • Sometimes important messages go only to the system log, not the terminal you are working at. Such messages include notifications that regular expressions failed to compile and various things that tc generates. A useful command is "tail -f /var/log/messages".

Please see the FAQ for more information.



pony 2010-03-16 13:09 發(fā)表評(píng)論
]]>
Dr. Jeffrey Jaffe Named W3C CEOhttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/15/315494.htmlponyponyMon, 15 Mar 2010 08:29:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/15/315494.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/315494.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/15/315494.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/315494.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/315494.htmlDr. Jeff Jaffe is Chief Executive Officer of the World Wide Web Consortium. In this role he works with Director Tim Berners-Lee, staff, and membership, and the public to evolve and communicate the W3C's organizational vision. He is responsible for all of W3C's global operations, for maintaining the interests of all of W3C's stakeholders, and for sustaining a culture of cooperation and transparency, so that W3C continues to be the leading forum for the technical development and stewardship of the Web.


After receiving a Ph.D. in computer science from MIT in 1979, Jeff joined IBM's Thomas J. Watson Research Center. During his tenure at IBM, he held a wide variety of technical and management positions, including vice president, Systems and Software Research, corporate vice president of technology, and general manager of IBM's SecureWay business unit, where he was responsible for IBM's security, directory, and networking software business.

Jeff then served as president of Bell Labs Research and Advanced Technologies, where he established new facilities in Ireland and India, and served as chairman of the board of the New Jersey Nanotechnology Consortium.

Most recently, Jeff served as the Executive Vice President and Chief Technology Officer for Novell. He was responsible for Novell's technology direction, as well as leading Novell's product business units.

Jeff was appointed by President Bill Clinton to serve on the Advisory Committee for the Presidential Commission for Critical Infrastructure Protection. He has also chaired the Chief Technology Officer group of the Computer Systems Policy Project, and has served on the National Research Council's Computer Science and Telecommunications Board. He is a Fellow of ACM and the IEEE.

Dr. Jaffe holds a BS in Mathematics and an MS in Electrical Engineering and Computer Science in addition to his Doctorate from the Massachusetts Institute of Technology.



pony 2010-03-15 16:29 發(fā)表評(píng)論
]]>
[ZZ]理解form的get和post http://www.aygfsteel.com/jjwwhmm/archive/2010/03/15/315449.htmlponyponyMon, 15 Mar 2010 03:20:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/15/315449.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/315449.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2010/03/15/315449.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/315449.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/315449.html(轉(zhuǎn)載自http://askjava.blog.sohu.com/76540166.html)

HTML中,form元素

1. get和post的定義

W3CHTML 4.01 specification說(shuō),form元素的method屬性用來(lái)指定發(fā)送form的HTTP方法。

  • 使用get時(shí),form的數(shù)據(jù)集(形如control-name=current-value的鍵值對(duì))被附加到form元素的action屬性所指定的URI后面;
  • 使用post時(shí),form的數(shù)據(jù)集(形如control-name=current-value的鍵值對(duì))被包裝在請(qǐng)求的body中并被發(fā)送。

這可以簡(jiǎn)單地理解為,get僅僅是拼接一個(gè)URI,然后直接向服務(wù)器請(qǐng)求數(shù)據(jù)(需要提交給服務(wù)器的數(shù)據(jù)集包含在URI中)。比如:

<form method="get" action="FormGet.aspx">
    
<input type="text" name="ProductID" value="1" />
    
<input type="submit" value="Get" />
</form>

這個(gè)form在提交的時(shí)候,會(huì)產(chǎn)生這樣能夠一個(gè)get請(qǐng)求:FormGet.aspx?ProductID=1。

而post會(huì)把form的數(shù)據(jù)集,即ProductID=1這個(gè)鍵值對(duì)包裝在請(qǐng)求的body中,發(fā)送給服務(wù)器,然后向服務(wù)器請(qǐng)求數(shù)據(jù)。對(duì)于:

<form method="post" action="FormPost.aspx">
    
<input type="text" name="ProductID" value="1" />
    
<input type="submit" value="Get" />
</form>

這樣一個(gè)form在提交時(shí),我們將看到一個(gè)干凈的URI:FormPost.aspx。因?yàn)閿?shù)據(jù)不是拼接在URI中。

2. get和post的區(qū)別

2.1 安全性

如果用get提交一個(gè)驗(yàn)證用戶名和密碼的form,一般認(rèn)為是不安全的。因?yàn)橛脩裘兔艽a將出現(xiàn)在URL上,進(jìn)而出現(xiàn)在瀏覽器的歷史記錄中。顯然,在對(duì)安全性有要求的情況下,應(yīng)該使用post。

2.2 編碼

HTML 4.01 specification指出,get只能向服務(wù)器發(fā)送ASCII字符,而post則可以發(fā)送整個(gè)ISO10646中的字符(如果同時(shí)指定

注意get和post對(duì)應(yīng)的enctype屬性有區(qū)別。enctype有兩個(gè)值,默認(rèn)值為application/x-www-form-urlencoded,而另一個(gè)值multipart/form-data只能用于post。

2.3 提交的數(shù)據(jù)的長(zhǎng)度

HTTP specification并沒(méi)有對(duì)URL長(zhǎng)度進(jìn)行限制,但是IE將請(qǐng)求的URL長(zhǎng)度限制為2083個(gè)字符,從而限制了get提交的數(shù)據(jù)長(zhǎng)度。測(cè)試表明如果URL超出這個(gè)限制,提交form時(shí)IE不會(huì)有任何響應(yīng)。其它瀏覽器則沒(méi)有URL的長(zhǎng)度限制,因此其它瀏覽器能通過(guò)get提交的數(shù)據(jù)長(zhǎng)度僅受限于服務(wù)器的設(shè)置。

而對(duì)于post,因?yàn)樘峤坏臄?shù)據(jù)不在url中,所以通常可以簡(jiǎn)單地認(rèn)為數(shù)據(jù)長(zhǎng)度限制僅受限于服務(wù)器的設(shè)置。

2.4 緩存

由于一個(gè)get得到的結(jié)果直接對(duì)應(yīng)到一個(gè)URI,所以get的結(jié)果頁(yè)面有可能被瀏覽器緩存。而post一般則不能,參考5。

2.5 引用和SEO

出于和上面相同的原因,我們可以用一個(gè)URI引用一個(gè)get的結(jié)果頁(yè)面,而post的結(jié)果則不能,所以必然不能被搜索引擎搜到。

3. 服務(wù)端的處理

在服務(wù)端的ASP.NET程序中,對(duì)于get,我們用Request.QueryString[control-name]來(lái)取得對(duì)應(yīng)的=current-value;對(duì)于post,我們用Request.Form[control-name]。

我們也可以籠統(tǒng)地使用Request[control-name]。但這樣做的效率不如前者。我們可以用下面的程序比較Request.QueryString和Request的效率:

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    protected 
void Page_PreInit(object sender, EventArgs e)
    {
        
if(Request["InputString"!= null)
        {
            
int count = 1000000;
            DateTime start;
            DateTime end;
            string value 
= "";
            start 
= DateTime.Now;
            
for(int i = 0;i < count;i++)
            {
                value 
= Request.QueryString["InputString"];
            }
            end 
= DateTime.Now;
            
double requestGet = (end - start).TotalSeconds;
            start 
= DateTime.Now;
            
for(int i = 0;i < count;i++)
            {
                value 
= Request["InputString"];
            }
            end 
= DateTime.Now;
            
double request = (end - start).TotalSeconds;
            compare.InnerHtml 
= requestGet.ToString() + " / " + request.ToString() + " = " + (requestGet / request).ToString();
            get.InnerHtml 
= value;
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
    
<head>
        
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        
<title>Request.QueryString / Request</title>
    
</head>
    
<body>
        
<form method="get" action="FormGet.aspx">
            
<div>
                
<input type="text" name="InputString" /><input type="submit" value="Post" /><br />
                Get: 
<span runat="server" id="get"></span><br />
                Request.QueryString / Request: 
<span runat="server" id="compare"></span>
            
</div>
        
</form>
    
</body>
</html>

同樣的辦法我們可以比較Request.Form和Request。

最后得到的結(jié)果(Request.QueryString[control-name] / Request[control-name]和Request.Form[control-name] / Request[control-name])大多數(shù)時(shí)候是小于1的。因此,我們因該盡量用Request.QueryString或Request.Form來(lái)代替Request。

4. 正確地使用get和post

W3C的官方建議是:當(dāng)且僅當(dāng)form是冪等(idempotent)的時(shí)候,使用get。冪等是一個(gè)數(shù)學(xué)上的術(shù)語(yǔ),其定義是:對(duì)于一個(gè)函數(shù)f : D -> D,如果D中的所有x滿足f (f x) = f x,那么這個(gè)函數(shù)是冪等的。HTTP specification(比如RFC 2616)中,將冪等解釋為:多次相同請(qǐng)求產(chǎn)生的副作用,和一次請(qǐng)求的副作用相同。

打個(gè)比方,如果你提交一個(gè)form會(huì)從Google上查詢一個(gè)關(guān)鍵詞,那么我們可以認(rèn)為這個(gè)form是冪等的,因?yàn)?次提交和10次提交的副作用是差不多的(10次查詢可能會(huì)多消耗一些電能);如果你提交一個(gè)form是訂購(gòu)一個(gè)終極大黃蜂(Utimate bumblebee),那么這就不是冪等的:要是你不小心多提交了1次form的話,你可能會(huì)被老婆亂罵,你不小心又提交了10次的話,你可能就破產(chǎn)了——一次提交和多次提交的副作用明顯不同,所以這不是冪等的。

所以,一般來(lái)說(shuō),如果提交這個(gè)請(qǐng)求純粹只是從服務(wù)端獲取數(shù)據(jù)而不進(jìn)行其他操作,并且多次提交不會(huì)有明顯的副作用,應(yīng)該使用get。比如:

如果提交這個(gè)請(qǐng)求會(huì)產(chǎn)生其它操作和影響,就應(yīng)該使用post。比如:

  • 修改服務(wù)器上數(shù)據(jù)庫(kù)中的數(shù)據(jù);
  • 發(fā)送一封郵件;
  • 刪除一個(gè)文件。

另一個(gè)要考慮的因素是安全性。見2.1。

5. 瀏覽器差異

6. 參考



pony 2010-03-15 11:20 發(fā)表評(píng)論
]]>
轉(zhuǎn)發(fā): 鬧騰的哥本哈根氣候會(huì)議-娛樂(lè)版http://www.aygfsteel.com/jjwwhmm/archive/2009/12/25/307230.htmlponyponyFri, 25 Dec 2009 01:09:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/12/25/307230.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/307230.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/12/25/307230.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/307230.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/307230.html如果一百多人在漏水的船上討價(jià)還價(jià)誰(shuí)該往外多舀水,那是明擺著的蠢,事實(shí)上沒(méi)人會(huì)這么干,連船上那最自私最無(wú)恥的人,也會(huì)拿出最大公無(wú)私的精神拼命舀水的。

但是事情如果再?gòu)?fù)雜一點(diǎn),就會(huì)有新鮮的現(xiàn)象了。如果船上的人算計(jì)一下,在這條船沉沒(méi)前,他們有足夠的時(shí)間安全抵達(dá)港口,危險(xiǎn)屬于下一船乘客時(shí),有很多人就會(huì)停下來(lái)安靜地欣賞海景了。

哪怕這條船在抵達(dá)港口前的確會(huì)沉沒(méi)一部分,比如灌滿一個(gè)叫“馬爾代夫”的船艙,其他艙室的人,基本上都會(huì)無(wú)動(dòng)于衷。

更復(fù)雜的是,如果這艘船超重,需要乘客們把身上的金銀細(xì)軟拋下船的話,扯蛋就來(lái)了。窮人們說(shuō),富人錢多經(jīng)得起糟蹋你先扔,至少得再扔40%;富人則說(shuō)窮鬼你那堆破爛兒又沉又不值錢你先扔;窮人說(shuō)我扔也可以但你富人得拿出年收入的0.5%-1%,即3000塊補(bǔ)償給我,還得教會(huì)我發(fā)財(cái)致富的秘訣,富人說(shuō)你丫做白日夢(mèng)吧老子已經(jīng)一年白給你100塊了,多了別想,你救的不是我是你自己。

窮人說(shuō)老子才剛坐這船沒(méi)兩天,你狗日富人坐好幾年了,生生把新船坐成了破船,現(xiàn)在多出點(diǎn)血是天經(jīng)地義的;富人說(shuō)以前天殺的知道這船是會(huì)坐破的,再說(shuō)如果不是我們富人天天搗鼓這船,你這幫農(nóng)民今天還在刨地球,能懂航海術(shù)、看西洋景?今天這船要沉了也是我們發(fā)現(xiàn)的,要不你們這幫賤人淹死了都不知道咋回事。

蛋還沒(méi)扯完,眼見船越來(lái)越漏的厲害。于是船客們聚到“日本房間”,窮人們靠著人多強(qiáng)行通過(guò)了一份《京都協(xié)議書》,要求富人趕緊扔?xùn)|西,窮人卻可以不扔。最富的富人米利堅(jiān)說(shuō),這是明顯的仇富嘛,天下哪有這道理,俺不玩了。窮人說(shuō)你B一家最重,負(fù)擔(dān)就占了全船的近1/5,你不扔誰(shuí)扔?米利堅(jiān)說(shuō)我的東西是最重,但也最值錢。俺以全船1/4的值錢物件才占了1/5的重量,憑啥我扔?你們看看那叫拆哪的窮鬼,以不到3%的價(jià)值也占了近1/5的負(fù)擔(dān),為啥不讓他多扔?

黑眼睛黑頭發(fā)黃皮膚的拆哪一聽急了:窮兄弟們別聽他的,俺們可都是窮苦人家出身,你們要是把我推出來(lái),以后你們中有人小偷小摸耍流氓誰(shuí)罩著啊?好歹這船是大家的,你米利堅(jiān)就是東西最多最重,這船也屬你坐的時(shí)間最長(zhǎng)次數(shù)最多,看我干啥?憑啥?你憑啥?這最怕船沉的不是咱窮棒子是富人,他們經(jīng)不起大規(guī)模人員傷亡。

為了盡快把蛋扯完,船客們最近又在一間叫“丹麥”的房間開了一個(gè)會(huì)。據(jù)最新消息,把蛋扯完的機(jī)會(huì)已經(jīng)很渺茫。最重大的成果將是形成一份《哥本哈根共識(shí)》,這份有所有船客簽名的共識(shí)說(shuō):“我們都發(fā)現(xiàn)并且承認(rèn),這船在漏水,而且是會(huì)沉的。”

這份共識(shí)發(fā)表后,船客們紛紛接到恭喜電話,表?yè)P(yáng)他們表現(xiàn)出了高超的政治智慧,并且堅(jiān)定地捍衛(wèi)了國(guó)家利益。

FWD:轉(zhuǎn)發(fā): 鬧騰的哥本哈根氣候會(huì)議-娛樂(lè)版

pony 2009-12-25 09:09 發(fā)表評(píng)論
]]>
轉(zhuǎn)載:再談創(chuàng)業(yè)者管哪個(gè)重要http://www.aygfsteel.com/jjwwhmm/archive/2009/12/22/306904.htmlponyponyTue, 22 Dec 2009 06:28:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/12/22/306904.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/306904.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/12/22/306904.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/306904.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/306904.html
http://shaoblog.com/2009/01/22/%e5%86%8d%e8%b0%88%e5%88%9b%e4%b8%9a%e8%80%85%e7%ae%a1%e5%93%aa%e4%b8%aa%e9%87%8d%e8%a6%81/

昨天QQ的馬化騰到我們這邊來(lái)聊天,談到了創(chuàng)始人重視產(chǎn)品在企業(yè)成功的重要性。即使在QQ已經(jīng)這么成功,市值近百億美金的今天,他還花很多時(shí)間在產(chǎn)品上。聽上去很簡(jiǎn)單也很自然,但是我看到很多創(chuàng)始人做不到。

創(chuàng)業(yè)者要管的太多了,產(chǎn)品,市場(chǎng),銷售,財(cái)務(wù),技術(shù),找人,炒人,公關(guān)。不可能每件事情都事必躬親,一定有些需要交給手下領(lǐng)頭。哪兩件最重要?我覺(jué)得是找人和產(chǎn)品。別的事都可能找到好的人代勞,但產(chǎn)品和找人不行。

找到一個(gè)好的人太關(guān)鍵了。我從前寫了很多:海龜還是土鱉?招不到稱心的人怎么辦?招怎么樣的人,今天就不多說(shuō)了。只加一句:找什么樣的人,決定公司的文化,所以創(chuàng)業(yè)者是一定要自己做的。

找到好的人,可以一手代包市場(chǎng),銷售,財(cái)務(wù),技術(shù),公關(guān)(找到好的人,能放心的把我的一個(gè)部門讓他管,知道他會(huì)管的比我更好時(shí),感覺(jué)太好了!),但產(chǎn)品是一個(gè)公司的靈魂。它需要融會(huì)貫通:從市場(chǎng)這邊了解目標(biāo)用戶是誰(shuí)和他們的需求,平衡銷售那邊經(jīng)常和市場(chǎng)部不同的意見,與技術(shù)討論什么能做,什么不能做。其中有很多取舍,很多推動(dòng),不是創(chuàng)始人CEO,很難做好這個(gè)工作。另外,創(chuàng)始人應(yīng)該是最了解用戶的需求的人,因?yàn)樗麆?chuàng)業(yè)的激情就來(lái)自于為用戶解決一個(gè)問(wèn)題,增添一個(gè)價(jià)值。

做易趣時(shí)我產(chǎn)品放權(quán)太多。雖然我們那時(shí)的產(chǎn)品部很不錯(cuò),但沒(méi)有創(chuàng)始人每天的介入,他們的任務(wù)是不可能完成的。我給我們那時(shí)候2002年的產(chǎn)品打75分。2003年走了后,平臺(tái)遷移到eBay后,分?jǐn)?shù)就慘不忍睹了。網(wǎng)站改個(gè)字需要九個(gè)禮拜,改個(gè)功能需要在總部排隊(duì)九個(gè)月。(這里的故事很長(zhǎng)了,產(chǎn)品只是一部分,文化的變化更致命。以后有空和易趣那些老員工們應(yīng)該一起寫本書。)

放眼世界上翹楚的產(chǎn)品,AMAZON,APPLE,NINTENDO,他們的CEO或創(chuàng)始人都是注重產(chǎn)品,不放權(quán)的瘋子。




上一篇創(chuàng)業(yè),管哪個(gè)事情最重要?引起了一些有趣的爭(zhēng)議,關(guān)于產(chǎn)品還是市場(chǎng)重要。我覺(jué)得這個(gè)問(wèn)題對(duì)創(chuàng)業(yè)者很關(guān)鍵,所以再來(lái)寫一篇。ha,這個(gè)月寫了兩篇,為前幾個(gè)月補(bǔ)過(guò)。

首先,問(wèn)題不是說(shuō)企業(yè)里哪個(gè)部門重要。一個(gè)企業(yè)的成功,是很多因素的乘法。乘法和加法不同:后者如有一個(gè)因素是零,對(duì)整體不一定有大影響,但前者里如果有個(gè)因素是零,結(jié)果是零 - 產(chǎn)品,市場(chǎng)做得再好,財(cái)務(wù)出問(wèn)題,公司照樣死。當(dāng)企業(yè)成功是乘法時(shí),討論哪個(gè)部門重要,沒(méi)什么意義。比較有意義的問(wèn)題是:創(chuàng)業(yè)者哪個(gè)比較可以放權(quán),哪個(gè)需要自己抓。(謝謝keso幫我澄清too。)這個(gè)問(wèn)題太重要了,因?yàn)槲覉?jiān)信一個(gè)初創(chuàng)的企業(yè),最重要的資源是創(chuàng)始人的時(shí)間和精力。我們現(xiàn)在談的,是這個(gè)資源的分配問(wèn)題。

第二,做產(chǎn)品,從來(lái)不是(或不應(yīng)該是)空想的。我覺(jué)得產(chǎn)品部是公司最難的工作。它需要綜合權(quán)衡各個(gè)部門的要求。

a)市場(chǎng):我們的現(xiàn)有用戶是這么樣的人?他們的需求是什么?我們的潛在用戶是誰(shuí)?他們的需求是什么?很多時(shí)候,人(尤其是經(jīng)理人)會(huì)太注重現(xiàn)有顧客,忽視潛在客戶。人也會(huì)太注重用戶能表達(dá)的需求(市場(chǎng)調(diào)查拿得到得),忽略用戶不知道怎么表達(dá)的需求(需要靠創(chuàng)業(yè)的自覺(jué)來(lái)發(fā)掘的)。

b)銷售:什么樣的產(chǎn)品賣得掉,容易銷售?在有些公司,市場(chǎng)和銷售的目標(biāo)用戶是一樣的。在有些公司,用戶(主要用產(chǎn)品的人)和顧客(付錢的人)是不一樣的。如何滿足和權(quán)衡他們不同的需求?在易趣那時(shí),用戶是買家,顧客是賣家,他們的需求往往不同,甚至相反。

c)技術(shù):那些產(chǎn)品容易做,那些難做?如何取舍時(shí)間vs功能?技術(shù)部會(huì)經(jīng)常說(shuō):市場(chǎng)部要的功能不可能做,或需要太久。有時(shí)技術(shù)部有個(gè)好點(diǎn)子,能做個(gè)眩的新功能,市場(chǎng)部不要。相信誰(shuí)的判斷?

d)客服:用戶很多的反饋和問(wèn)題,需要多重視?什么是1%的不重要的用戶提出來(lái)的,什么是我們的核心用戶的要求,或是潛在的核心用戶的問(wèn)題(解決了這個(gè)問(wèn)題,他就成了核心用戶)?

還有很多例子可舉。我的感覺(jué)是產(chǎn)品最最需要一個(gè)創(chuàng)始者以一個(gè)公司總體長(zhǎng)遠(yuǎn)的發(fā)展為目標(biāo),權(quán)衡各個(gè)部門的利益偏見(甚至慣性或惰性),最終以創(chuàng)始者的直覺(jué)做決定。



pony 2009-12-22 14:28 發(fā)表評(píng)論
]]>
主業(yè)務(wù)流程+前中后的控制http://www.aygfsteel.com/jjwwhmm/archive/2009/12/22/306889.htmlponyponyTue, 22 Dec 2009 03:36:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/12/22/306889.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/306889.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/12/22/306889.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/306889.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/306889.html產(chǎn)品設(shè)計(jì)的時(shí)候,往往是一個(gè)比較簡(jiǎn)單的東西,到后面弄的越來(lái)越復(fù)雜,甚至到最后沒(méi)有人能夠完整的描述這個(gè)產(chǎn)品,因?yàn)榇蠹叶急划a(chǎn)品里繁多的細(xì)枝末葉攪得頭暈眼花,最終迷失在“鉆牛角尖”里.......
我的體會(huì)是,一定要把主業(yè)務(wù)流程和業(yè)務(wù)的控制措施分開。主業(yè)務(wù)流程應(yīng)該是簡(jiǎn)潔明了,可以依據(jù)輸入、會(huì)話處理、輸出、反饋的系統(tǒng)思想把一個(gè)業(yè)務(wù)比較清楚的描述出來(lái)。而控制措施則可以體現(xiàn)在輸入端、會(huì)話處理中、輸出端及反饋階段上,對(duì)每一個(gè)階段,都存在于這個(gè)階段之前的控制,階段之中的控制、階段之后的控制。



pony 2009-12-22 11:36 發(fā)表評(píng)論
]]>
別太在意別人怎么想http://www.aygfsteel.com/jjwwhmm/archive/2009/12/22/306886.htmlponyponyTue, 22 Dec 2009 03:22:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/12/22/306886.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/306886.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/12/22/306886.html#Feedback2http://www.aygfsteel.com/jjwwhmm/comments/commentRss/306886.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/306886.html  人如果太介意別人會(huì)怎么想,就會(huì)壓抑自己的想法和創(chuàng)意。壓抑會(huì)產(chǎn)生心理病變,會(huì)令你失去調(diào)適的能力,特別是緊要關(guān)頭,需要作出決定性的響應(yīng)時(shí),會(huì)像發(fā)不動(dòng)的汽車,令你有行不得也得行的慨嘆。

  我觀察人的適應(yīng)能力發(fā)現(xiàn),越是在意別人的觀感,越會(huì)對(duì)自己沒(méi)有信心;越在意別人怎么想,越容易使自己的缺點(diǎn)變成嚴(yán)重負(fù)擔(dān)。我知道,人必須了解別人會(huì)怎么想,那是人際互動(dòng),彼此同理,交流情誼的基本心理過(guò)程,缺乏它,人會(huì)變得剛愎自用,少一點(diǎn)知人的靈嗅。但如果你太介意別人的想法,就會(huì)失去伸展自我的機(jī)會(huì),那么這個(gè)心結(jié)將成為壓抑創(chuàng)意和破壞健康的元兇。

  美國(guó)已逝的科學(xué)奇才費(fèi)曼曾經(jīng)說(shuō)過(guò)一段自己的故事。他的妻子(他昵稱她貓咪)一向很開朗,總有玩不完的花招,增添生活中不少情趣,在朋友中傳為佳話。費(fèi)曼在普林斯頓時(shí),有一天接到一盒妻子寄來(lái)的鉛筆,上面接著金色的字:“理查親親!我愛(ài)你。貓咪。”

  費(fèi)曼覺(jué)得這禮物是很好,但是按上一句親昵的話,如果跟教授朋友討論問(wèn)題,忘在別人桌子上,別人會(huì)怎么想呢?他不好意思用這些筆。可是當(dāng)時(shí)物質(zhì)缺乏,舍不得浪費(fèi),所以刮掉一枝鉛筆上的字來(lái)用。

  第二天上午,費(fèi)曼又收到一封妻子寄來(lái)的信,一開頭就寫著:“想把鉛筆上的名字刮掉嗎?這算什么?你難道不以擁有我的愛(ài)為榮嗎?”然后是大寫字體寫著:“你管別人怎么想。”這段話大大感動(dòng)了費(fèi)曼,后來(lái)他寫了一本書,記述著他們的感情、生活軼事和他自己在科學(xué)上的重大突破,就用“你管別人怎么想”當(dāng)書名。

  作為一位咨詢工作者,我很早就注意到:在意別人的評(píng)價(jià),往往會(huì)在別人的逢迎夸獎(jiǎng)中作出錯(cuò)誤的決定,也會(huì)在別人的口誅筆伐中潰不成軍。這樣的人無(wú)法堅(jiān)持自己的卓見和判斷。不過(guò),更嚴(yán)重的是,太在意別人怎么想的人,心理壓力總是很大。他每天面對(duì)著十目所視、十手所指的壓力,總覺(jué)得別人時(shí)時(shí)刻刻都在注意自己的缺點(diǎn)或疏失。這使得一個(gè)人覺(jué)得退縮,失去積極主動(dòng)的活力,當(dāng)然連他的創(chuàng)意和主動(dòng)性都會(huì)喪失。

  這種畏縮是學(xué)習(xí)得來(lái)的,許多師長(zhǎng)和父母經(jīng)常對(duì)孩子說(shuō):“羞羞臉!你看別人會(huì)怎么想!”次數(shù)多了,就會(huì)養(yǎng)成孩子畏首畏尾的習(xí)慣。尤其在日常言行上,稍不恰當(dāng),就以別人會(huì)笑話來(lái)壓抑孩子、批判孩子,部會(huì)造成嚴(yán)重的心理困擾。你只能就事實(shí)去告知孩了不當(dāng)之點(diǎn),要求他改進(jìn),或幫助他建立新行為,但不能拿別人來(lái)批判他,而造成屈辱。

  有一位兒童,他經(jīng)常張著大嘴巴。父母親覺(jué)得不好看,就常常指責(zé)他:“你這模樣,別人都會(huì)笑話你的!”這孩子來(lái)作咨詢時(shí),不留神還是張著日,但卻因?yàn)殚L(zhǎng)期被批評(píng)壓抑而造成交友困難和懼學(xué)癥來(lái)尋求協(xié)助。另外有一個(gè)孩子,因?yàn)楦改赣H常指責(zé)他功課不好,在親戚朋友面前毫不留情地?cái)?shù)落他,以致不敢會(huì)見親友。

  有一次,一位年輕人來(lái)找我咨詢:他患有口吃,尤其在眾人面前說(shuō)話,舌頭更是打結(jié)。他回憶說(shuō),“我在初中時(shí)說(shuō)話稍有口吃,老師要我多練習(xí),所以常要我上臺(tái)講話。我越是在意口吃,口吃就越嚴(yán)重。現(xiàn)在我在一家公司擔(dān)任行銷工作,常常為口吃而憂惱。上個(gè)星期,我向老板作演示文稿,簡(jiǎn)直說(shuō)不出話來(lái),羞死了。”經(jīng)過(guò)仔細(xì)了解,確定他不是生理因素,于是我說(shuō):

  “你這個(gè)毛病我也沒(méi)辦法,除非你各實(shí)當(dāng)位口吃的推銷員。”我接著仔細(xì)為他說(shuō)明:

  “要接受自己口吃的現(xiàn)實(shí),毫無(wú)畏懼地表現(xiàn)自己是一位口吃的推銷員,然后培養(yǎng)一些你在業(yè)務(wù)工作上的優(yōu)點(diǎn),例如熱忱、信用、關(guān)懷等,把它結(jié)合成你的特殊性和個(gè)體。讓許多人知道你,在商界里反而能引起別人對(duì)你的矚目,化缺點(diǎn)為助力”我為他仔細(xì)解釋,目的是要構(gòu)建一個(gè)全新的態(tài)度:他不再介意別人對(duì)他的看法。

  他開始學(xué)習(xí)接納自己;坦然表現(xiàn)自己是一位有價(jià)值的口吃推銷員。他不再為口吃而煩心,口吃這件事就再也不構(gòu)成障礙。經(jīng)過(guò)幾個(gè)月,口吃的狀況真的紓緩下來(lái)。

  人有一種矛盾意向,你越怕的事它就越成為困擾。反之你處之泰然,把它表現(xiàn)出來(lái)給別人去看看它有多厲害,卻反而減輕對(duì)癥狀。由此可知,越怕陽(yáng)痿的人,越是勃不起來(lái);越是處之泰然的,也就越不會(huì)產(chǎn)生毛病。越想隱藏自己的弱點(diǎn),就越會(huì)構(gòu)成焦慮和緊張,而強(qiáng)化了癥狀和困擾。

  我們要有正確的教育理念:父母和師長(zhǎng)當(dāng)然要指正孩子的過(guò)錯(cuò),但不能因錯(cuò)誤而羞辱他。我們應(yīng)多發(fā)現(xiàn)孩子的優(yōu)點(diǎn),從而建立他的信心,不要處處挑剔其缺點(diǎn),令其懼怕畏縮,更而造成心理上的困擾。請(qǐng)注意!了解別人會(huì)怎么想是正確的,但如果太在意別人怎么想,就會(huì)產(chǎn)生麻煩。



pony 2009-12-22 11:22 發(fā)表評(píng)論
]]>
張亞勤:領(lǐng)導(dǎo)者的3種能力http://www.aygfsteel.com/jjwwhmm/archive/2009/12/22/306885.htmlponyponyTue, 22 Dec 2009 03:19:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/12/22/306885.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/306885.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/12/22/306885.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/306885.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/306885.html版權(quán)聲明:轉(zhuǎn)載時(shí)請(qǐng)以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
http://davyyew.blogbus.com/logs/54473971.html

摘自張亞勤勞的新書《變革中的思索》,P231

1)洞察力 -- 對(duì)這個(gè)產(chǎn)業(yè)的洞察力。

之所以放在首位,我覺(jué)得這是方向性的,它決定了生產(chǎn)效率。

 

2)簡(jiǎn)化問(wèn)題的能力 -- 把一個(gè)很難的、大家看起來(lái)很復(fù)雜的概念,用簡(jiǎn)單的語(yǔ)言表達(dá)出來(lái)。

技術(shù)出身的人,其實(shí)有一定優(yōu)勢(shì),因?yàn)樗麄冇兄媹D的豐富經(jīng)歷;而那些優(yōu)秀的領(lǐng)導(dǎo)者,我發(fā)現(xiàn)了另一個(gè)共同的優(yōu)點(diǎn):經(jīng)常使用生活中的比喻

我多次接觸馬云、衛(wèi)哲、陳天橋等人,他們很少使用晦澀的詞語(yǔ)、概念、術(shù)語(yǔ)來(lái)闡述自己的想法,相反倒是大量使用生活中的比喻,即便在公開演講中也比比皆是。

隨便舉幾個(gè)例子

- 用撒尿到江中來(lái)比喻精力分散;

- 用流行病的輸入性、原生性來(lái)解釋新、老員工對(duì)企業(yè)文化的影響;

- 用菜市場(chǎng)來(lái)比喻平臺(tái),殺雞來(lái)類比平臺(tái)上的服務(wù),很好地解釋‘產(chǎn)業(yè)生態(tài)圈’的種種現(xiàn)象;

PS:我也常用‘將錢存入銀行’來(lái)類比‘數(shù)據(jù)集中存貯’,從而打消客戶對(duì)SaaS數(shù)據(jù)安全性的擔(dān)憂

 

如果說(shuō)第一種能力還有些天賦的因素的話,那這第二種能力我覺(jué)得完全是可以鍛煉出來(lái)的。

 

3)判斷能力 -- 大家都有不同的意見,這個(gè)能力考察你到底會(huì)選擇哪個(gè)。缺的不是辦法,缺的是選哪一個(gè)人的辦法。

這個(gè)能力其實(shí)還需要2個(gè)前提能力:團(tuán)隊(duì)建設(shè)能力;勇于承擔(dān)。

- 選擇的前提是有多個(gè)辦法,由團(tuán)隊(duì)/下屬來(lái)提供;要讓團(tuán)隊(duì)中的人勇于提好建議、出好方法,自然需要很強(qiáng)的團(tuán)隊(duì)建設(shè)。至今為止,我依然認(rèn)為ALIBABA在這方面是最強(qiáng)的。

- 判斷的結(jié)果并不一定是十拿九穩(wěn)、一本萬(wàn)利(事實(shí)上這種好運(yùn)很少,大部分情況是模棱兩可、讓人糾結(jié)),這時(shí)候挑戰(zhàn)領(lǐng)導(dǎo)者的其實(shí)是‘責(zé)任承擔(dān)、為結(jié)果負(fù)責(zé)’的勇氣。

 

作為領(lǐng)導(dǎo)者,與其說(shuō)需要‘判斷能力’,不如說(shuō)需要‘承擔(dān)與果敢’。



pony 2009-12-22 11:19 發(fā)表評(píng)論
]]>
ISO8583接口的詳細(xì)資料http://www.aygfsteel.com/jjwwhmm/archive/2009/03/31/263041.htmlponyponyTue, 31 Mar 2009 01:41:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/31/263041.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/263041.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/31/263041.html#Feedback4http://www.aygfsteel.com/jjwwhmm/comments/commentRss/263041.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/263041.html閱讀全文

pony 2009-03-31 09:41 發(fā)表評(píng)論
]]>
時(shí)髦口頭禪排行榜 http://www.aygfsteel.com/jjwwhmm/archive/2009/03/27/262506.htmlponyponyFri, 27 Mar 2009 13:22:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/27/262506.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/262506.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/27/262506.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/262506.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/262506.html1. 你讓我滾,我滾了。你讓我回來(lái),對(duì)不起,滾遠(yuǎn)了。

2. 流氓不可怕,就怕流氓有文化...

3. 走牛B的路,讓傻 B去說(shuō)吧!

4. 開車無(wú)難事,只怕有新人!

5. 穿別人的鞋走自己的路,讓別人找鞋去吧 !

6. 礦難在檢討中繼續(xù),樓價(jià)在控制中上升!

7. XP不發(fā)威,你當(dāng)我是DOS啊!

8. 英雄不問(wèn)出路,流氓不看歲數(shù)!

9. 好好活著,因?yàn)槲覀儠?huì)死很久!!!

10. 人又不聰明,還學(xué)人家禿頂!!!

11. 沒(méi)什么事不要找我,有事更不用找我。

12. 寧和明白人打一架,不跟sb說(shuō)句話。

13. 再牛b的肖邦,也彈不出老子的悲傷!

14. 只要鋤頭舞的好,那有墻角挖不倒?

15. 連廣告也信,讀書讀傻了吧!

16. 要在江湖混,最好是光棍!!!

17. 不要和我比懶,我懶得和你比。

18. 早上長(zhǎng)睡不起;晚上視睡如歸!

19. 女為悅己者容男為悅己者窮!

20. 禿驢,敢跟貧道搶師太?

21. 犯賤是普遍真理,你我只是其中之一。

22. 唯女人與英語(yǔ)難過(guò)也,唯老婆與工作難找也!

23. 賺別人的錢,讓貧窮見鬼去吧!

24. 就算是believe中間也藏了一個(gè)lie。

25. 錢不是問(wèn)題,問(wèn)題是沒(méi)錢!

26. 懷才就像懷孕,時(shí)間久了才能讓人看出來(lái)。

27. 今天心情不好.我只有四句話想說(shuō).包括這句和前面的兩句.我的話說(shuō)完了。

28. 人不能在一棵樹上吊死,要在附近幾棵樹上多死幾次試試。

29. 走別人的路,讓別人走投無(wú)路。

30. 思想有多遠(yuǎn),你就給我滾多遠(yuǎn)。

31. 驢是的念來(lái)過(guò)倒。

32. 上Google上百度一下。

33. 你以為我會(huì)眼睜睜地看著你去送死啊!最多我閉上眼睛就是了。

34. 請(qǐng)你以后不要在我面前說(shuō)英文了,OK?

35. 好久沒(méi)有人把牛皮吹的這么清新脫俗了!

36. 一覺(jué)醒來(lái),天都黑了。

37. 錢可以解決的問(wèn)題都不是問(wèn)題。

38. 不吃飽哪有力氣減肥啊?

39. 問(wèn)君能有幾多愁,恰似一群太監(jiān)上青樓。

40. 鈔票不是萬(wàn)能的,有時(shí)還需要信用卡。

41. 我允許你走進(jìn)我的世界,但決不允許你在我的世界里走來(lái)走去。

42. 人怕出名豬怕壯,男怕沒(méi)錢女怕胖。

43. 珍惜生活,上帝還讓你活著,就肯定有他的安排。

44. 工作的最高境界就是看著別人上班,領(lǐng)著別人的工資。

45. 愛(ài)情就像便便,水一沖就再也回不來(lái)了~愛(ài)情就像便便,來(lái)了之后擋也擋不住~愛(ài)情就
像便便,每次都一樣又不太一樣~愛(ài)情就像便便,有時(shí)努力了很久卻只是個(gè)屁!

46、過(guò)去流氓在深山,現(xiàn)在流氓在公安!

47、長(zhǎng)著翅膀的不一定是天使,有時(shí)候是鳥人。

48、站的高,尿的遠(yuǎn)。

49、你是用這張嘴吃飯的嗎?

50、我一巴掌把你踢出去。

51、此地禁止小便,違者沒(méi)收作案工具。

52、你可以像豬一樣的生活,但你永遠(yuǎn)都不能像豬那樣快樂(lè)!

53、此為中華而努力讀書!一包中華好多錢啊!

54、 一炮而紅,是形容女藝人的!


pony 2009-03-27 21:22 發(fā)表評(píng)論
]]>
貧窮,才是真的財(cái)富http://www.aygfsteel.com/jjwwhmm/archive/2009/03/23/261552.htmlponyponyMon, 23 Mar 2009 09:50:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/23/261552.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/261552.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/23/261552.html#Feedback1http://www.aygfsteel.com/jjwwhmm/comments/commentRss/261552.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/261552.html 如果兩個(gè)人能好好一起過(guò)沒(méi)錢的日子,這種日子在老的時(shí)候就是最好的回憶,成為心里永遠(yuǎn)最寶貴的財(cái)富!

pony 2009-03-23 17:50 發(fā)表評(píng)論
]]>
爆強(qiáng)回帖,雷死人http://www.aygfsteel.com/jjwwhmm/archive/2009/03/18/260480.htmlponyponyWed, 18 Mar 2009 06:46:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/18/260480.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/260480.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/18/260480.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/260480.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/260480.html 1、變態(tài)樓主:養(yǎng)條狗和養(yǎng)一個(gè)男人哪個(gè)合算?

暴強(qiáng)回復(fù):大嬸,即使你能把男人當(dāng)狗使,但你敢把狗當(dāng)男人使不?

 

2.變態(tài)樓主:男人你要李宇春還是章子怡?

暴強(qiáng)回復(fù):一個(gè)公雞,一個(gè)野雞,都不選 

3.變態(tài)樓主:通過(guò)海南礦泉水喝死人事件,可以看到中國(guó)的食品安全堪憂,礦泉水也能喝死人?不是有QS標(biāo)志嗎?

暴強(qiáng)回復(fù):弱弱的問(wèn)一下,QS是不是去死的意思? 

4.變態(tài)樓主:一學(xué)生,成績(jī)年年倒數(shù)第一,常與人打架,按領(lǐng)導(dǎo)要求老師想給學(xué)生好聽一點(diǎn)的期末評(píng)語(yǔ),怎么寫啊?

 暴強(qiáng)回復(fù):該生成績(jī)穩(wěn)定,動(dòng)手能力強(qiáng)。 

5.說(shuō)說(shuō)中國(guó)的30分鐘新聞聯(lián)播。

 暴強(qiáng)回復(fù):有什么說(shuō)的:前十分鐘,領(lǐng)導(dǎo)們很忙。中十分鐘,全國(guó)人民都很幸福。后十分鐘,世界上其它國(guó)家人民都生活在水深火熱之中。 

6.變態(tài)樓主:都40多了還有許多事不明白該問(wèn)誰(shuí)?

 暴強(qiáng)回復(fù):外事問(wèn)谷歌,內(nèi)事問(wèn)百度,房事問(wèn)天涯! 

7.變態(tài)樓主:奧運(yùn)口號(hào)“同一個(gè)世界,同一個(gè)夢(mèng)想!”

 暴強(qiáng)回復(fù):乖乖,麻將國(guó)粹無(wú)處不在,倒過(guò)來(lái)看居然是“想摸個(gè)一筒,就是個(gè)一筒!” 

8.天*涯樓主:從來(lái)都覺(jué)得蝎子精是整部《西游記》里最美的女人,當(dāng)蝎子精把唐僧逼到床上撩撥時(shí),我心下不住地為唐僧鼓勁:從了,從了,咱就從了吧!但關(guān)鍵時(shí)

刻,可惡的悟空出現(xiàn)了……

  天*涯回復(fù)12:唉,要是換好色的八戒出現(xiàn)就好了!

  天*涯回復(fù)13:嗯,八戒出現(xiàn)了,這次改蝎子精不從了…… 

9.天*涯樓主:懷疑老婆紅杏出墻,但苦于沒(méi)證據(jù)……

 天*涯回復(fù):如果你沒(méi)本事做陳冠希,那就做謝霆峰吧 

10.天*涯樓主:我們的GJ到底是法制還是人治?

  天*涯沙發(fā):不是法治,也不是人治,而是治人,并且初級(jí)階段一百年不變…… 

11.論壇樓主:該死的理發(fā)店把我頭剪壞了!大家出點(diǎn)損招,要求破壞性越大越好,動(dòng)靜越小越好,因?yàn)槭俏乙粋€(gè)人去。

 論壇地下室:半夜三更,月黑風(fēng)高,靜靜地、輕輕地,一個(gè)人吊死在理發(fā)店門口……

12.論壇樓主:為什么生下的孩子要跟父親一個(gè)姓?

 論壇沙發(fā):因?yàn)槿】顧C(jī)里吐出的錢歸插卡人所有。 

13.王小丫跟陳章良結(jié)婚,請(qǐng)用四個(gè)字評(píng)論。

  論壇回復(fù):丫從良了! 

14.論壇樓主:聽到一特好聽的歌,歌詞只記得是“一個(gè)芝麻糕,不如一針細(xì)”,求歌名啊!

論壇回復(fù):你可知Macau,不是我真姓……-_ 

15.天*涯樓主:請(qǐng)用一句話形容中國(guó)國(guó)家地震臺(tái)。

  *涯回復(fù):事后諸葛亮,事前豬一樣! 

16.樓主:我已經(jīng)一年滴食未進(jìn)了,還是活的好好的!MOP的網(wǎng)友,你們落后了,難道你們不覺(jué)得每天還要吃三餐很麻煩嗎,我現(xiàn)在每天只需曬這么10幾分鐘太陽(yáng)就幾天都精力旺盛了。哎,你們真是一群凡夫俗子。

  回復(fù):植物都會(huì)打字.!!! 

17.天*涯樓主:請(qǐng)問(wèn)北京是如何體現(xiàn)本次奧運(yùn)會(huì)為綠色人文奧運(yùn)的?

 天*涯沙發(fā):不是請(qǐng)謝霆鋒來(lái)唱歌了嗎?

18.中日韓三國(guó)難道非要采取敵視行為對(duì)待彼此,就不能心平氣和地坐下來(lái)談問(wèn)題嗎?

  沙發(fā):不能!因?yàn)槿?/font> 本人和中國(guó)人談得投機(jī)的時(shí)候,只有當(dāng)話題是關(guān)于韓國(guó)人時(shí);日 本人和韓國(guó)人談得投機(jī)的時(shí)候,只有當(dāng)話題是關(guān)于中國(guó)人時(shí);中國(guó)人和韓國(guó)人能談得投機(jī)的時(shí)候,只有當(dāng)話題是日本人時(shí)! 

19..LZ:你看我的頭像牛B么?

沙發(fā):像。 

20..樓主:想問(wèn)問(wèn)各位姐妹,BF和前女友一起買的東西,比如對(duì)戒,項(xiàng)鏈,手環(huán)一類的,是留著還是扔掉?扔了實(shí)在是……挺貴的東西,不扔看著就鬧心!

沙發(fā):庸人自擾!她的前男友你不也在用嗎? 

21.天*涯樓主:據(jù)我考證,古代男人們?nèi)デ鄻遣⒉皇且觽儼l(fā)生關(guān)系。事實(shí)上大多數(shù)藝妓都是才藝出眾、才貌雙全的,飛舞唱曲,吟詩(shī)誦詞,極為風(fēng)雅。男人們不過(guò)去坐一坐,喝幾杯清茶,吃幾塊點(diǎn)心,聽?zhēng)资仔∏孪缕澹饕髟?shī),喝點(diǎn)小酒什么

的,然后就離開了。

 *涯回復(fù):哦,謝謝樓主的解釋,原來(lái)古代的青樓就是今天的北影。



]]>
不要在無(wú)聊中老去http://www.aygfsteel.com/jjwwhmm/archive/2009/03/18/260367.htmlponyponyWed, 18 Mar 2009 00:55:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/18/260367.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/260367.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/18/260367.html#Feedback2http://www.aygfsteel.com/jjwwhmm/comments/commentRss/260367.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/260367.html

]]>
[ZZ]2008年最齷齪語(yǔ)錄50句 http://www.aygfsteel.com/jjwwhmm/archive/2009/03/17/260343.htmlponyponyTue, 17 Mar 2009 14:21:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/17/260343.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/260343.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/17/260343.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/260343.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/260343.html001◎老鼠一發(fā)威,大家都是病貓。
002◎和一MM爭(zhēng)論鯨魚是不是魚,最后我說(shuō)“曰本人也帶個(gè)人字”,她這才同意鯨魚不
是魚。
003◎男人膝下有黃金,我把整個(gè)腿都切下來(lái)了,連塊銅也沒(méi)找著!
004◎春天我把玉米埋在土里,到了秋天我就會(huì)收獲很多玉米。春天我把老婆埋在土里
,到了秋天我就會(huì)…被槍斃!
005◎如果你看到面前的陰影,別怕,那是因?yàn)槟愕谋澈笥嘘?yáng)光!
006◎踏遍青樓人未老,請(qǐng)用匯仁腎寶。
007◎聽君一席話,省我十本書!
008◎0歲出場(chǎng)亮相,10歲天天向上。20歲遠(yuǎn)大理想,30歲發(fā)奮圖強(qiáng)。40歲基本定向,
50歲處處吃香。60歲打打麻將,70歲處處閑逛。80歲拉拉家常,90歲掛在墻上!
009◎脫了衣服我是禽獸,穿上衣服我是衣冠禽獸!
010◎師太,你就從了老衲吧!…很久很久以后…師太,你就饒了老衲吧!
011◎“親愛(ài)的,我…我懷孕了…三個(gè)月了,不過(guò)你放心,不是你的,不用你負(fù)責(zé)……

012◎我們產(chǎn)生一點(diǎn)小分歧:她希望我把糞土變黃金,我希望她視黃金如糞土。
013◎讀10年語(yǔ)文,不如聊半年QQ。
014◎早晨懶床,遂從口袋里掏出6枚硬幣:如果拋出去六個(gè)都是正面,我就去上課!
思躇良久,還是算了,別冒這個(gè)險(xiǎn)了……
015◎我花8萬(wàn)買了個(gè)西周陶罐,昨兒到《鑒寶》欄目進(jìn)行鑒定,專家嚴(yán)肅地說(shuō):“這
哪是西周的?這是上周的!”
016◎我能容忍身材是假的,臉是假的,胸是假的,臀是假的!!!但就是不容忍錢是
假的!!!!
017◎士為知己者裝死,女為悅己者整容。
018◎長(zhǎng)大了要嫁給唐僧,能玩就玩,不能玩就把他吃掉。
019◎一山不能容二虎,除非一公和一母。
020◎千萬(wàn)別等到人人都說(shuō)你丑時(shí)才發(fā)現(xiàn)自己真的丑。
021◎如果朋友可以出賣,每個(gè)值五塊的話,我也能發(fā)筆小財(cái)了。
022◎征婚啟事:要求如下,A活的,B女的。
023◎給點(diǎn)陽(yáng)光我就腐爛。
024◎要適當(dāng)吃一點(diǎn),才有勁減肥啊。
025◎搖啊搖,搖到奈何橋。
026◎命運(yùn)負(fù)責(zé)洗牌,但是玩牌的是我們自己!
027◎問(wèn):你喜歡我哪一點(diǎn)?答:我喜歡你離我遠(yuǎn)一點(diǎn)!
028◎你快回來(lái),我一人忽悠不來(lái)!
029◎生活就像宋祖德的嘴,你永遠(yuǎn)都不知道下一個(gè)倒霉的會(huì)是誰(shuí)~~~
030◎跌倒了,爬起來(lái)再哭~~~
031◎世界上難以自拔的,除了牙齒,還有愛(ài)情。
032◎一恐龍路過(guò)西安交大時(shí)上了趟廁所,出來(lái)后她嗚咽道:“555,這輩子終于不愁
嫁不出去了……”
033◎生,容易。活,容易。生活,不容易。
034◎吾表兄,年四十余。始從文,連考三年而不中。遂習(xí)武,練武場(chǎng)上發(fā)一矢,中鼓
吏,逐之出。改學(xué)醫(yī),自撰一良方,服之,卒。
035◎問(wèn)君能有幾多愁,恰似一群太監(jiān)上青樓……
036◎吾生也有涯,而吃也無(wú)涯~~~
037◎想污染一個(gè)地方有兩種方法:垃圾,或是鈔票!
038◎年輕的時(shí)候,我們常常沖著鏡子做鬼臉;年老的時(shí)候,鏡子算是扯平了。
039◎你瞎了眼啊?這么大的盾牌你看不見,偏偏要把石頭朝我腦袋上扔!
040◎出問(wèn)題先從自己身上找原因,別一便秘就怪地球沒(méi)引力。
041◎拍腦袋決策,拍胸脯保證,拍屁股走人。
042◎我們走得太快,靈魂都跟不上了……
043◎不要和地球人一般見識(shí)~~~
044◎女孩從處女到女人只要一次并成功,男孩從處男變男人需要反復(fù)的磨練!
045◎出來(lái)混,老婆遲早是要換的!
046◎小時(shí)候我以為自己長(zhǎng)大后可以拯救整個(gè)世界,等長(zhǎng)大后才發(fā)現(xiàn)整個(gè)世界都拯救不
了我……
047◎有錢的都是大爺!但是欠錢不還的更是!
048◎我就算是一只癩蛤蟆,我也決不娶母癩蛤蟆。
049◎生前何必久睡,死后自會(huì)長(zhǎng)眠……
050◎不想當(dāng)廚子的裁縫,不是好司機(jī)。


]]>
要挖滿足下面條件的一個(gè)人,可以嗎?http://www.aygfsteel.com/jjwwhmm/archive/2009/03/16/260059.htmlponyponyMon, 16 Mar 2009 09:36:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/16/260059.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/260059.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/03/16/260059.html#Feedback1http://www.aygfsteel.com/jjwwhmm/comments/commentRss/260059.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/260059.html 1.對(duì)Unix系統(tǒng)管理,網(wǎng)絡(luò),數(shù)據(jù)庫(kù),安全,分布式系統(tǒng)開發(fā)等各方面技術(shù)都有一定涉獵及經(jīng)驗(yàn)
2.精通一門編程語(yǔ)言,如Java,C,Php等
3.精通企業(yè)系統(tǒng)集成設(shè)計(jì)模式
3.對(duì)互聯(lián)網(wǎng)有深刻認(rèn)識(shí),對(duì)電子商務(wù),SNS,SAAS,支付,CRM,ERP等行業(yè)有過(guò)從業(yè)經(jīng)驗(yàn)或有一定理解,熟悉主流電子商務(wù)網(wǎng)站的業(yè)務(wù)模式
4.至少要有一個(gè)大型系統(tǒng)的系統(tǒng)分析/設(shè)計(jì)經(jīng)驗(yàn),有過(guò)百萬(wàn)級(jí)別會(huì)員數(shù)量以上系統(tǒng)的分析、設(shè)計(jì)經(jīng)驗(yàn)者更佳
5.至少有一個(gè)產(chǎn)品的完整開發(fā)經(jīng)驗(yàn),包括需求分析,產(chǎn)品設(shè)計(jì),系統(tǒng)設(shè)計(jì),程序開發(fā),3人以上的開發(fā)團(tuán)隊(duì)管理,軟件配置管理,質(zhì)量控制,產(chǎn)品運(yùn)營(yíng)等各方面工作都有一定理解及經(jīng)驗(yàn)
6.優(yōu)秀的口語(yǔ)及書面溝通表達(dá)能力,能熟練使用Word,PowerPoint,Project,UML工具編寫各種類型文檔,能熟練閱讀英文 
7.有自己創(chuàng)業(yè)經(jīng)驗(yàn)者優(yōu)先

]]>
[zz]Installing XMMS on Ubuntu 8.04http://www.aygfsteel.com/jjwwhmm/articles/254746.htmlponyponySun, 15 Feb 2009 05:35:00 GMThttp://www.aygfsteel.com/jjwwhmm/articles/254746.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/254746.htmlhttp://www.aygfsteel.com/jjwwhmm/articles/254746.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/254746.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/254746.htmlInstalling XMMS on Ubuntu 8.04

After Gentoo and Slackware, now is the time for Ubuntu removing XMMS packages from their repo. How SAD! And for those who still want XMMS installed in their Ubuntu, here is the tip.

This this is originally written by Sartek and modified by me

Update your packages list

sudo apt-get update

Now install build-essential

sudo apt-get install build-essential

Alright, now we need to install the XMMS’s dependencies

sudo apt-get install autotools-dev automake1.9 libtool gettext libasound2-dev libaudiofile-dev libgl1-mesa-dev libglib1.2-dev libgtk1.2-dev libesd0-dev libice-dev libmikmod2-dev libogg-dev libsm-dev libvorbis-dev libxxf86vm-dev libxml-dev libssl-dev

Now create a working directory and change into that directory

mkdir ~/build
cd ~/build

Download XMMS sources:

wget http://xmms.org/files/1.2.x/xmms-1.2.11.tar.gz

Extract the file and enter the extracted directory

tar xvf xmms-1.2.11.tar.gz
cd xmms-1.2.11/

Run configure with –prefix=/usr

./configure --prefix=/usr

In my case (Intel Pentium Core Duo), I’ve enable CFLAGS options for processor optimization

CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer" ./configure --prefix=/usr --enable-gnutls=yes

You can simply use the command without the CFLAGS above, or if you want to optimize the pidgin to suit your processor, you can refer to Safe_Cflags page (Gentoo.. uhukk..)

Now compile it and install it

make
sudo make install

Now lets create the shortcut in your Gnome Menu

Right click on your Gnome Menu, and click on Edit Menu and follow these pictures:

Finish! now just simply remove your build (working) directory



]]>
servlet中重定向的錯(cuò)誤:IllegalStateExceptionhttp://www.aygfsteel.com/jjwwhmm/archive/2009/01/22/252364.htmlponyponyThu, 22 Jan 2009 08:28:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/01/22/252364.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/252364.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/01/22/252364.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/252364.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/252364.html java.lang.IllegalStateException
 org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
........
 javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
最后檢查發(fā)現(xiàn)是因?yàn)樵趕ervice方法中第一行調(diào)用了super.service(req,rep)方法導(dǎo)致的錯(cuò)誤.
這個(gè)細(xì)節(jié)以前沒(méi)有注意到,特此隨筆記錄.

]]>
proftpd服務(wù)啟動(dòng)的問(wèn)題 Starting proftpd: execvp: No such file or directoryhttp://www.aygfsteel.com/jjwwhmm/archive/2009/01/22/252302.htmlponyponyThu, 22 Jan 2009 01:41:00 GMThttp://www.aygfsteel.com/jjwwhmm/archive/2009/01/22/252302.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/252302.htmlhttp://www.aygfsteel.com/jjwwhmm/archive/2009/01/22/252302.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/252302.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/252302.html把profpd源代碼目錄下的proftpd-1.3.1/contrib/dist/rpm/proftpd.init.d拷貝到/etc/rc.d/init.d/proftpd
在/etc/rc.d/rc3.d中建立proftpd的啟動(dòng)停止鏈接:
    ln -s ../init.d/proftpd S86proftpd
    ln -s ../init.d/proftpd K18proftpd
然后,/sbin/service proftpd start
報(bào)錯(cuò)誤:Starting proftpd: execvp: No such file or directory
經(jīng)檢查,是proftpd.init.d腳本中的路徑有問(wèn)題:
  PATH="$PATH:/usr/local/sbin"
而我的proftpd安裝在/usr/local/proftpd目錄下
修改上面的路徑為PATH="$PATH:/usr/local/proftpd/sbin",重新啟動(dòng),問(wèn)題解決



]]>
(轉(zhuǎn)載)使用LVS(Linux Virtual Server)在Linux上搭建負(fù)載均衡的集群服務(wù)http://www.aygfsteel.com/jjwwhmm/articles/250996.htmlponyponyMon, 12 Jan 2009 09:38:00 GMThttp://www.aygfsteel.com/jjwwhmm/articles/250996.htmlhttp://www.aygfsteel.com/jjwwhmm/comments/250996.htmlhttp://www.aygfsteel.com/jjwwhmm/articles/250996.html#Feedback0http://www.aygfsteel.com/jjwwhmm/comments/commentRss/250996.htmlhttp://www.aygfsteel.com/jjwwhmm/services/trackbacks/250996.html
一、基于于NAT的LVS的安裝與配置。
1. 硬件需求和網(wǎng)絡(luò)拓?fù)?
________
|        |
| 客戶端 | (互連網(wǎng))
|________|
|
(router)
202.99.59.1(director GW)
|
|
(202.99.59.110)Virtual IP
____|_____
|          | (控制器有兩塊網(wǎng)卡)
| director |
|__________|
(192.168.10.254)DIP
|
-----------------+----------------
|                |               |
RIP1             RIP2            RIPx
____________     ____________     ____________
|192.168.10.1|   |192.168.10.2|   |192.168.10.x|
|realserver1 |   |realserver2 |   |realserverx |
|____________|   |____________|   |____________|

2.下載軟件:

(1)、內(nèi)核源代碼:需要下載2.4.23以后版本的內(nèi)核源代碼。下載地址為http://www.kerner.org。本文中下載的內(nèi)核源代為:linux-2.4.30.tar.bz2。

(2)、用戶配置工具ipvsadm,下載地址:http://www.linuxvirtualserver.org/software/ipvs.html。本文下載的是:http://www.linuxvirtualserver.org/software/kernel-2.4/ipvsadm-1.21-11.tar.gz

3.安裝軟件:

在director(控制器,202.99.59.110)上安裝支持LVS的內(nèi)核和配置工具ipvsadm。

(1)、在內(nèi)核配置時(shí)以下選項(xiàng)必須選:

Networking options  --->
<*> Packet socket
<*> Netlink device emulation
[*] TCP/IP networking
[*]   IP: advanced router
[*] Network packet filtering (replaces ipchains)
IP: Netfilter Configuration  --->
<*> Connection tracking (required for masq/NAT)
<*> IP tables support (required for filtering/masq/NAT)
<*>   Full NAT
<*>     MASQUERADE target support
IP: Virtual Server Configuration  --->
<*> virtual server support (EXPERIMENTAL)
(12)   IPVS connection table size (the Nth power of 2)
--- IPVS scheduler
<M>   round-robin scheduling
<M>   weighted round-robin scheduling
<M>   least-connection scheduling
<M>   weighted least-connection scheduling
<M>   locality-based least-connection scheduling
<M>   locality-based least-connection with replication scheduling
<M>   destination hashing scheduling
<M>   shortest expected delay scheduling
<M>   never queue scheduling

(2)、編譯和安裝內(nèi)核

分別執(zhí)行: make bzImage;make modules;make modules_install;然后編輯啟動(dòng)配置文件,重新啟動(dòng)系統(tǒng),在啟動(dòng)時(shí)選擇新的內(nèi)核。

系統(tǒng)啟動(dòng)后要確認(rèn)內(nèi)核是否支持ipvs,只需要執(zhí)行下面的命令即可:grep ip_vs_init /boot/System.map

(3)、編譯和安裝ipvsadm
ln -s /usr/src/linux-2.4.30 /usr/src/linux tar -zxvf ipvsadm-1.21-11.tar.gz
cd ipvsadm-1.21-11
make all
make install

然后運(yùn)行:ipvsadm --version命令,應(yīng)該有下面的內(nèi)容輸出:
ipvsadm v1.21 2004/02/23 (compiled with popt and IPVS v1.0.12)

4. 配置LVS

(1)、在202.99.59.110上:
echo "1" >/proc/sys/net/ipv4/ip_forward
echo "0" >/proc/sys/net/ipv4/conf/all/send_redirects
echo "0" >/proc/sys/net/ipv4/conf/default/send_redirects
echo "0" >/proc/sys/net/ipv4/conf/eth0/send_redirects
echo "0" >/proc/sys/net/ipv4/conf/eth1/send_redirects

清除ipvsadm表:
/sbin/ipvsadm -C

使用ipvsadm安裝LVS服務(wù)
#add http to VIP with rr sheduling
/sbin/ipvsadm -A -t 202.99.59.110:80 -s rr

增加第一臺(tái)realserver:
#forward http to realserver 192.168.10.1 using LVS-NAT (-m), with weight=1
/sbin/ipvsadm -a -t 202.99.59.110:80 -r 192.168.10.1:80 -m -w 1

增加第二臺(tái)realserver:
#forward http to realserver 192.168.10.2 using LVS-NAT (-m), with weight=1
/sbin/ipvsadm -a -t 202.99.59.110:80 -r 192.168.10.2:80 -m -w 1

 

(2)、realserver配置
在192.168.10.1(realserver1)和192.168.10.2(realserver2)上分別將其網(wǎng)關(guān)設(shè)置為192.168.10.254,并分別啟動(dòng)apache服務(wù)。

在客戶端使用瀏覽器多次訪問(wèn):http://202.99.59.110/,然后再202.99.59.110上運(yùn)行ipvsadm命令,應(yīng)該有類似下面的輸出:

IP Virtual Server version 1.0.12 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  202.99.59.110:http rr
-> 192.168.10.1:http           Masq    1      0          33
-> 192.168.10.2:http           Masq    1      0          33

從上面的結(jié)果可以看出,我們的LVS服務(wù)器已經(jīng)成功運(yùn)行。

 

 

二、基于直接路由(DR)的LVS的配置

1.硬件需求和網(wǎng)絡(luò)拓?fù)洌?
________
|        |
| 客戶端 | (互連網(wǎng))
|________|
|
(router)
202.99.59.1(director GW)
|
__________    |
|          |   |   (VIP=202.99.59.110, eth0:110)
| director |---|  (控制器有一塊網(wǎng)卡,且與realserver1和realserver2在同一網(wǎng)段)
|__________|   |   DIP=202.99.59.109 (eth0)
|
-----------------------------------
|                                 |
RIP=202.99.59.108(eth0)             RIP=202.99.59.107(eth0)
(VIP=202.99.59.110, lo:0)          (VIP=202.99.59.110, lo:0)
____________                       ____________
|            |                     |            |
|realserver1 |                     |realserver2 |
|____________|                     |____________|

2.安裝軟件:

在director(202.99.59.109)上安裝上面的方法安裝內(nèi)核和管理軟件。

 

3. 配置LVS

(1)、在202.99.59.109上:

修改內(nèi)核運(yùn)行參數(shù),即修改/etc/sysctl.conf文件的內(nèi)容如下:
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.eth0.send_redirects = 1
然后執(zhí)行下面的命令是對(duì)內(nèi)核修改的參數(shù)立即生效:
sysctl -p
配置VIP地址:
/sbin/ifconfig eth0:0 202.99.59.110 broadcast 202.99.59.110 netmask 255.255.255.255 up
/sbin/route add -host 202.99.59.110 dev eth0:0
清除ipvsadm表:
/sbin/ipvsadm -C
使用ipvsadm安裝LVS服務(wù):
/sbin/ipvsadm -A -t 192.168.1.110:http -s rr
增加realserver:
#forward http to realserver using direct routing with weight 1
/sbin/ipvsadm -a -t 192.168.1.110:http -r 192.168.1.12 -g -w 1
/sbin/ipvsadm -a -t 192.168.1.110:http -r 192.168.1.12 -g -w 1

(2)在realserver1(202.99.59.108)和realserver2(202.99.59.107)上做下面的設(shè)置。

修改內(nèi)核運(yùn)行參數(shù),即修改/etc/sysctl.conf文件的內(nèi)容如下:
net.ipv4.ip_forward = 0
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
然后執(zhí)行下面的命令是對(duì)內(nèi)核修改的參數(shù)立即生效:
sysctl -p
配置VIP地址:
/sbin/ifconfig lo:0 202.99.59.110 broadcast 202.99.59.110 netmask 255.255.255.255 up
/sbin/route add -host 202.99.59.110 dev lo:0
p>在客戶端使用瀏覽器多次訪問(wèn):http://202.99.59.110/,然后再202.99.59.110上運(yùn)行ipvsadm命令,應(yīng)該有類似下面的輸出:
IP Virtual Server version 1.0.12 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.100.254:http rr
-> 192.168.100.3:http           Route   1      0          28
-> 192.168.100.2:http           Route   1      0          29

從上面的結(jié)果可以看出,我們的LVS服務(wù)器已經(jīng)成功運(yùn)行。

 

 

在面的實(shí)例中ipvsadm用到的幾個(gè)參數(shù)含義如下:

-A 增加一個(gè)虛擬服務(wù),該服務(wù)由協(xié)議、IP地址和端口號(hào)組成,例如:
-A -t 202.99.59.110:80 (增加一格虛擬服務(wù),其協(xié)議(-t表示tcp,-u表示udp)為TCP、IP為202.99.59.110、端口號(hào)為80。

-s 指定服務(wù)采用的算法,常用的算法參數(shù)如下:

  • rr   輪叫(Round Robin)
    調(diào)度器通過(guò)"輪叫"調(diào)度算法將外部請(qǐng)求按順序輪流分配到集群中的真實(shí)服務(wù)器上,它均等地對(duì)待每一臺(tái)服務(wù) 器,而不管服務(wù)器上實(shí)際的連接數(shù)和系統(tǒng)負(fù)載。

     

  • wrr   加權(quán)輪叫(Weighted Round Robin)
    調(diào)度器通過(guò)"加權(quán)輪叫"調(diào)度算法根據(jù)真實(shí)服務(wù)器的不同處理能力來(lái)調(diào)度訪問(wèn)請(qǐng)求。這樣可以保證處理能力強(qiáng)的服務(wù)器處理更多的訪問(wèn)流量。調(diào)度器可以自動(dòng)問(wèn)詢真實(shí)服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。

     

  • lc   最少鏈接(Least Connections)
    調(diào)度器通過(guò)"最少連接"調(diào)度算法動(dòng)態(tài)地將網(wǎng)絡(luò)請(qǐng)求調(diào)度到已建立的鏈接數(shù)最少的服務(wù)器上。如果集群系統(tǒng)的真實(shí)服務(wù)器具有相近的系統(tǒng)性能,采用"最小連接"調(diào)度算法可以較好地均衡負(fù)載。

     

  • wlc   加權(quán)最少鏈接(Weighted Least Connections)
    在集群系統(tǒng)中的服務(wù)器性能差異較大的情況下,調(diào)度器采用"加權(quán)最少鏈接"調(diào)度算法優(yōu)化負(fù)載均衡性能,具有較高權(quán)值的服務(wù)器將承受較大比例的活動(dòng)連接負(fù)載。調(diào)度器可以自動(dòng)問(wèn)詢真實(shí)服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。

     

  • lblc   基于局部性的最少鏈接(Locality-Based Least Connections)
    "基于局部性的最少鏈接" 調(diào)度算法是針對(duì)目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)。該算法根據(jù)請(qǐng)求的目標(biāo)IP地址找出該目標(biāo)IP地址最近使用的服務(wù)器,若該服務(wù)器是可用的且沒(méi)有超載,將請(qǐng)求發(fā)送到該服務(wù)器;若服務(wù)器不存在,或者該服務(wù)器超載且有服務(wù)器處于一半的工作負(fù)載,則用"最少鏈接"的原則選出一個(gè)可用的服務(wù)器,將請(qǐng)求發(fā)送到該服務(wù)器。

     

  • lblcr   帶復(fù)制的基于局部性最少鏈接(Locality-Based Least Connections with Replication)
    "帶復(fù)制的基于局部性最少鏈接"調(diào)度算法也是針對(duì)目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)。它與LBLC算法的不同之處是它要維護(hù)從一個(gè)目標(biāo)IP地址到一組服務(wù)器的映射,而LBLC算法維護(hù)從一個(gè)目標(biāo)IP地址到一臺(tái)服務(wù)器的映射。該算法根據(jù)請(qǐng)求的目標(biāo)IP地址找出該目標(biāo)IP地址對(duì)應(yīng)的服務(wù)器組,按"最小連接"原則從服務(wù)器組中選出一臺(tái)服務(wù)器,若服務(wù)器沒(méi)有超載,將請(qǐng)求發(fā)送到該服務(wù)器,若服務(wù)器超載;則按"最小連接"原則從這個(gè)集群中選出一臺(tái)服務(wù)器,將該服務(wù)器加入到服務(wù)器組中,將請(qǐng)求發(fā)送到該服務(wù)器。同時(shí),當(dāng)該服務(wù)器組有一段時(shí)間沒(méi)有被修改,將最忙的服務(wù)器從服務(wù)器組中刪除,以降低復(fù)制的程度。

     

  • dh   目標(biāo)地址散列(Destination Hashing)
    "目標(biāo)地址散列"調(diào)度算法根據(jù)請(qǐng)求的目標(biāo)IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對(duì)應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請(qǐng)求發(fā)送到該服務(wù)器,否則返回空。

     

  • sh   源地址散列(Source Hashing)
    "源地址散列"調(diào)度算法根據(jù)請(qǐng)求的源IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對(duì)應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請(qǐng)求發(fā)送到該服務(wù)器,否則返回空。

/sbin/ipvsadm -a -t 192.168.1.110:http -r 192.168.1.12 -g -w 1

-a 表示往一個(gè)服務(wù)內(nèi)增加一個(gè)real server

-r 指定real server的IP地址

-w 表示權(quán)重

-g 表示使用DR方式,-m表示NAT方式,-i表示tunneling方式。



]]>
主站蜘蛛池模板: 丹寨县| 翁牛特旗| 襄垣县| 垣曲县| 新乐市| 马龙县| 石楼县| 保靖县| 山丹县| 新安县| 德庆县| 灵宝市| 五河县| 灌云县| 漳平市| 偏关县| 潜山县| 霸州市| 黄陵县| 开平市| 沙坪坝区| 芜湖县| 浦东新区| 广灵县| 黄梅县| 肃宁县| 繁昌县| 泾川县| 壶关县| 义马市| 资兴市| 海南省| 赤水市| 中西区| 玛沁县| 且末县| 新竹县| 昌平区| 油尖旺区| 华坪县| 盖州市|