亚洲国产精品综合久久网各,亚洲kkk4444在线观看,亚洲综合激情五月丁香六月http://www.tkk7.com/jjwwhmm/Embrace changes, pursue excellence, share niceness. zh-cnSat, 10 May 2025 17:07:32 GMTSat, 10 May 2025 17:07:32 GMT60鮮血的教訓:美國空軍3塊鋼板的反思http://www.tkk7.com/jjwwhmm/articles/323524.htmlponyponySun, 13 Jun 2010 08:05:00 GMThttp://www.tkk7.com/jjwwhmm/articles/323524.htmlhttp://www.tkk7.com/jjwwhmm/comments/323524.htmlhttp://www.tkk7.com/jjwwhmm/articles/323524.html#Feedback0http://www.tkk7.com/jjwwhmm/comments/commentRss/323524.htmlhttp://www.tkk7.com/jjwwhmm/services/trackbacks/323524.htmlhttp://club.china.com/data/thread/12171906/2713/97/22/1_1.html
 

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

 

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

 

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

 

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

 

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

 

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

 

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



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

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


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

在上面的這段html頁面中,gmail使用了一個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效果,又能避免帶來速度上的影響,用了最少的圖片來實現彎角效果(圖片在div的SPRITE_corner CSS中),從而避免設計成一個大的圖片而影響用戶瀏覽器下載資源的速度。
從我這個非UI設計人員的視角來看,不知道GMAIL這樣設計的初衷是否是這樣的,如果不是的話,請高手賜教。

pony 2010-04-12 15:41 發(fā)表評論
]]>
Postfix架構http://www.tkk7.com/jjwwhmm/archive/2010/04/08/317692.htmlponyponyThu, 08 Apr 2010 01:45:00 GMThttp://www.tkk7.com/jjwwhmm/archive/2010/04/08/317692.htmlhttp://www.tkk7.com/jjwwhmm/comments/317692.htmlhttp://www.tkk7.com/jjwwhmm/archive/2010/04/08/317692.html#Feedback0http://www.tkk7.com/jjwwhmm/comments/commentRss/317692.htmlhttp://www.tkk7.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ā)送郵件的架構示意圖:
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ā)表評論
]]>
學習:Thread的setDaemon方法http://www.tkk7.com/jjwwhmm/archive/2010/03/31/317061.htmlponyponyWed, 31 Mar 2010 07:26:00 GMThttp://www.tkk7.com/jjwwhmm/archive/2010/03/31/317061.htmlhttp://www.tkk7.com/jjwwhmm/comments/317061.htmlhttp://www.tkk7.com/jjwwhmm/archive/2010/03/31/317061.html#Feedback0http://www.tkk7.com/jjwwhmm/comments/commentRss/317061.htmlhttp://www.tkk7.com/jjwwhmm/services/trackbacks/317061.html 如果創(chuàng)建的線程沒有顯示調用此方法,這默認為用戶線程。
下面是一個示例代碼:

public class TestThreadDaemonMethod {

 /**
  * @param args
  */
 public static void main(String[] args) {
        TestThread t = new TestThread("test thread");
        //如果設置為false,那么在執(zhí)行完后面的start方法后,jvm不會退出
        t.setDaemon(false);
        //如果設置為true,則執(zhí)行完后面的start方法后,jvm會退出
        t.setDaemon(true);
        t.start();
        //在start之后設置daemon會拋出異常
        //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ā)表評論
]]>
插播一條招聘廣告:盛大在線招聘Java程序員http://www.tkk7.com/jjwwhmm/archive/2010/03/31/317035.htmlponyponyWed, 31 Mar 2010 05:03:00 GMThttp://www.tkk7.com/jjwwhmm/archive/2010/03/31/317035.htmlhttp://www.tkk7.com/jjwwhmm/comments/317035.htmlhttp://www.tkk7.com/jjwwhmm/archive/2010/03/31/317035.html#Feedback0http://www.tkk7.com/jjwwhmm/comments/commentRss/317035.htmlhttp://www.tkk7.com/jjwwhmm/services/trackbacks/317035.html

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

一、 總括

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



     Jetty具備以下特點:

     快速高效

     。Jetty是最快的Servlet服務器之一

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

     應用廣泛

     。開源項目有Geronimo, JBoss, JOnAS

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

     可到Jetty網站 http://jetty.mortbay.org/jetty/ 查看最新信息

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

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

<圖 1-1>

 

二、HttpServer及配置

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

三、Jetty Server

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

四、運行原理(請參考如下時序圖)

<圖 1-7 >

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

 

五、高級性能

     1.HttpHandler:

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

     SecurityHandler:提供基本的安全驗證

     ForwardHandler:轉發(fā)一個request到另一個url

     ServletHandler:用于將request交由具體的Servlet類進行處理      2.當你在看圖 1-2 時候會注意到HttpServer和HttpListener,HttpServer與HttpContext,HttpContext與 HttpHandler存在一對多的關系,下面就介紹一下它們之間的這種關系如何通過程序來配置.

     HttpListener & HttpServer:

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

<圖 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相當于對應客戶端請求的URL或某個虛擬機, 其子類中包含若干個HttpHandler, 當接受到request(請求)時,HttpContext會依次(按某個預定的次序)把request交給這些HttpHandler處理,直到這個 request被標示處理過為止, 需要注意的是這個request可能被多個HttpHandler處理,但只能有一個HttpHandler能標示這個request已被處理過.

     一個典型的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服務器軟件可以同時處理多個web application,同樣一個HttpServer可以包含多個HttpContext,如下圖可以通過同一個端口的監(jiān)聽類來映射多個 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對多網卡(多個IP地址,不同的主機名)的服務器也提供了很好的支持,每個 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對高并發(fā)的支持
<圖 1-8>
     如果多用戶請求服務就會涉及到多線程的管理,如圖 1-8,Jetty中主要由ThreadPool負責管理多線程,注意其中Pool.PondLife是Pool的一個內部接口, ThreadPool.PoolThread是ThreadPool的一個內部線程類,我們看到Pool.PondLife和Pool存在一個聚集的關系,實際上Pool對象中存放在是一個個ThreadPool.PoolThread線程對象,當有新用戶連接上Server時,ThreadPool就從Pool中取一個空閑的線程為當前用戶連接服務。  

六、小結

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

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


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



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

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

pony 2010-03-16 13:49 發(fā)表評論
]]>
[zz]L7-filter Kernel Version HOWTOhttp://www.tkk7.com/jjwwhmm/archive/2010/03/16/315578.htmlponyponyTue, 16 Mar 2010 05:09:00 GMThttp://www.tkk7.com/jjwwhmm/archive/2010/03/16/315578.htmlhttp://www.tkk7.com/jjwwhmm/comments/315578.htmlhttp://www.tkk7.com/jjwwhmm/archive/2010/03/16/315578.html#Feedback0http://www.tkk7.com/jjwwhmm/comments/commentRss/315578.htmlhttp://www.tkk7.com/jjwwhmm/services/trackbacks/315578.html【轉載自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ā)表評論
]]>
Dr. Jeffrey Jaffe Named W3C CEOhttp://www.tkk7.com/jjwwhmm/archive/2010/03/15/315494.htmlponyponyMon, 15 Mar 2010 08:29:00 GMThttp://www.tkk7.com/jjwwhmm/archive/2010/03/15/315494.htmlhttp://www.tkk7.com/jjwwhmm/comments/315494.htmlhttp://www.tkk7.com/jjwwhmm/archive/2010/03/15/315494.html#Feedback0http://www.tkk7.com/jjwwhmm/comments/commentRss/315494.htmlhttp://www.tkk7.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ā)表評論
]]>
[ZZ]理解form的get和post http://www.tkk7.com/jjwwhmm/archive/2010/03/15/315449.htmlponyponyMon, 15 Mar 2010 03:20:00 GMThttp://www.tkk7.com/jjwwhmm/archive/2010/03/15/315449.htmlhttp://www.tkk7.com/jjwwhmm/comments/315449.htmlhttp://www.tkk7.com/jjwwhmm/archive/2010/03/15/315449.html#Feedback0http://www.tkk7.com/jjwwhmm/comments/commentRss/315449.htmlhttp://www.tkk7.com/jjwwhmm/services/trackbacks/315449.html(轉載自http://askjava.blog.sohu.com/76540166.html)

HTML中,form元素

1. get和post的定義

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

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

這可以簡單地理解為,get僅僅是拼接一個URI,然后直接向服務器請求數據(需要提交給服務器的數據集包含在URI中)。比如:

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

這個form在提交的時候,會產生這樣能夠一個get請求:FormGet.aspx?ProductID=1。

而post會把form的數據集,即ProductID=1這個鍵值對包裝在請求的body中,發(fā)送給服務器,然后向服務器請求數據。對于:

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

這樣一個form在提交時,我們將看到一個干凈的URI:FormPost.aspx。因為數據不是拼接在URI中。

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

2.1 安全性

如果用get提交一個驗證用戶名和密碼的form,一般認為是不安全的。因為用戶名和密碼將出現在URL上,進而出現在瀏覽器的歷史記錄中。顯然,在對安全性有要求的情況下,應該使用post。

2.2 編碼

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

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

2.3 提交的數據的長度

HTTP specification并沒有對URL長度進行限制,但是IE將請求的URL長度限制為2083個字符,從而限制了get提交的數據長度。測試表明如果URL超出這個限制,提交form時IE不會有任何響應。其它瀏覽器則沒有URL的長度限制,因此其它瀏覽器能通過get提交的數據長度僅受限于服務器的設置。

而對于post,因為提交的數據不在url中,所以通常可以簡單地認為數據長度限制僅受限于服務器的設置。

2.4 緩存

由于一個get得到的結果直接對應到一個URI,所以get的結果頁面有可能被瀏覽器緩存。而post一般則不能,參考5。

2.5 引用和SEO

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

3. 服務端的處理

在服務端的ASP.NET程序中,對于get,我們用Request.QueryString[control-name]來取得對應的=current-value;對于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。

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

4. 正確地使用get和post

W3C的官方建議是:當且僅當form是冪等(idempotent)的時候,使用get。冪等是一個數學上的術語,其定義是:對于一個函數f : D -> D,如果D中的所有x滿足f (f x) = f x,那么這個函數是冪等的。HTTP specification(比如RFC 2616)中,將冪等解釋為:多次相同請求產生的副作用,和一次請求的副作用相同。

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

所以,一般來說,如果提交這個請求純粹只是從服務端獲取數據而不進行其他操作,并且多次提交不會有明顯的副作用,應該使用get。比如:

如果提交這個請求會產生其它操作和影響,就應該使用post。比如:

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

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

5. 瀏覽器差異

6. 參考



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

但是事情如果再復雜一點,就會有新鮮的現象了。如果船上的人算計一下,在這條船沉沒前,他們有足夠的時間安全抵達港口,危險屬于下一船乘客時,有很多人就會停下來安靜地欣賞海景了。

哪怕這條船在抵達港口前的確會沉沒一部分,比如灌滿一個叫“馬爾代夫”的船艙,其他艙室的人,基本上都會無動于衷。

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

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

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

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

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

這份共識發(fā)表后,船客們紛紛接到恭喜電話,表揚他們表現出了高超的政治智慧,并且堅定地捍衛(wèi)了國家利益。

FWD:轉發(fā): 鬧騰的哥本哈根氣候會議-娛樂版

pony 2009-12-25 09:09 發(fā)表評論
]]>
轉載:再談創(chuàng)業(yè)者管哪個重要http://www.tkk7.com/jjwwhmm/archive/2009/12/22/306904.htmlponyponyTue, 22 Dec 2009 06:28:00 GMThttp://www.tkk7.com/jjwwhmm/archive/2009/12/22/306904.htmlhttp://www.tkk7.com/jjwwhmm/comments/306904.htmlhttp://www.tkk7.com/jjwwhmm/archive/2009/12/22/306904.html#Feedback0http://www.tkk7.com/jjwwhmm/comments/commentRss/306904.htmlhttp://www.tkk7.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的馬化騰到我們這邊來聊天,談到了創(chuàng)始人重視產品在企業(yè)成功的重要性。即使在QQ已經這么成功,市值近百億美金的今天,他還花很多時間在產品上。聽上去很簡單也很自然,但是我看到很多創(chuàng)始人做不到。

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

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

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

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

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




上一篇創(chuàng)業(yè),管哪個事情最重要?引起了一些有趣的爭議,關于產品還是市場重要。我覺得這個問題對創(chuàng)業(yè)者很關鍵,所以再來寫一篇。ha,這個月寫了兩篇,為前幾個月補過。

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

第二,做產品,從來不是(或不應該是)空想的。我覺得產品部是公司最難的工作。它需要綜合權衡各個部門的要求。

a)市場:我們的現有用戶是這么樣的人?他們的需求是什么?我們的潛在用戶是誰?他們的需求是什么?很多時候,人(尤其是經理人)會太注重現有顧客,忽視潛在客戶。人也會太注重用戶能表達的需求(市場調查拿得到得),忽略用戶不知道怎么表達的需求(需要靠創(chuàng)業(yè)的自覺來發(fā)掘的)。

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

c)技術:那些產品容易做,那些難做?如何取舍時間vs功能?技術部會經常說:市場部要的功能不可能做,或需要太久。有時技術部有個好點子,能做個眩的新功能,市場部不要。相信誰的判斷?

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

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



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



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

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

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

  費曼覺得這禮物是很好,但是按上一句親昵的話,如果跟教授朋友討論問題,忘在別人桌子上,別人會怎么想呢?他不好意思用這些筆。可是當時物質缺乏,舍不得浪費,所以刮掉一枝鉛筆上的字來用。

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

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

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

  有一位兒童,他經常張著大嘴巴。父母親覺得不好看,就常常指責他:“你這模樣,別人都會笑話你的!”這孩子來作咨詢時,不留神還是張著日,但卻因為長期被批評壓抑而造成交友困難和懼學癥來尋求協(xié)助。另外有一個孩子,因為父母親常指責他功課不好,在親戚朋友面前毫不留情地數落他,以致不敢會見親友。

  有一次,一位年輕人來找我咨詢:他患有口吃,尤其在眾人面前說話,舌頭更是打結。他回憶說,“我在初中時說話稍有口吃,老師要我多練習,所以常要我上臺講話。我越是在意口吃,口吃就越嚴重。現在我在一家公司擔任行銷工作,常常為口吃而憂惱。上個星期,我向老板作演示文稿,簡直說不出話來,羞死了。”經過仔細了解,確定他不是生理因素,于是我說:

  “你這個毛病我也沒辦法,除非你各實當位口吃的推銷員。”我接著仔細為他說明:

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

  他開始學習接納自己;坦然表現自己是一位有價值的口吃推銷員。他不再為口吃而煩心,口吃這件事就再也不構成障礙。經過幾個月,口吃的狀況真的紓緩下來。

  人有一種矛盾意向,你越怕的事它就越成為困擾。反之你處之泰然,把它表現出來給別人去看看它有多厲害,卻反而減輕對癥狀。由此可知,越怕陽痿的人,越是勃不起來;越是處之泰然的,也就越不會產生毛病。越想隱藏自己的弱點,就越會構成焦慮和緊張,而強化了癥狀和困擾。

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



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

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

1)洞察力 -- 對這個產業(yè)的洞察力。

之所以放在首位,我覺得這是方向性的,它決定了生產效率。

 

2)簡化問題的能力 -- 把一個很難的、大家看起來很復雜的概念,用簡單的語言表達出來。

技術出身的人,其實有一定優(yōu)勢,因為他們有著畫圖的豐富經歷;而那些優(yōu)秀的領導者,我發(fā)現了另一個共同的優(yōu)點:經常使用生活中的比喻

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

隨便舉幾個例子

- 用撒尿到江中來比喻精力分散;

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

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

PS:我也常用‘將錢存入銀行’來類比‘數據集中存貯’,從而打消客戶對SaaS數據安全性的擔憂

 

如果說第一種能力還有些天賦的因素的話,那這第二種能力我覺得完全是可以鍛煉出來的。

 

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

這個能力其實還需要2個前提能力:團隊建設能力;勇于承擔。

- 選擇的前提是有多個辦法,由團隊/下屬來提供;要讓團隊中的人勇于提好建議、出好方法,自然需要很強的團隊建設。至今為止,我依然認為ALIBABA在這方面是最強的。

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

 

作為領導者,與其說需要‘判斷能力’,不如說需要‘承擔與果敢’。



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

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

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

3. 走牛B的路,讓傻 B去說吧!

4. 開車無難事,只怕有新人!

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

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

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

8. 英雄不問出路,流氓不看歲數!

9. 好好活著,因為我們會死很久!!!

10. 人又不聰明,還學人家禿頂!!!

11. 沒什么事不要找我,有事更不用找我。

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

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

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

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

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

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

18. 早上長睡不起;晚上視睡如歸!

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

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

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

22. 唯女人與英語難過也,唯老婆與工作難找也!

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

24. 就算是believe中間也藏了一個lie。

25. 錢不是問題,問題是沒錢!

26. 懷才就像懷孕,時間久了才能讓人看出來。

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

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

29. 走別人的路,讓別人走投無路。

30. 思想有多遠,你就給我滾多遠。

31. 驢是的念來過倒。

32. 上Google上百度一下。

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

34. 請你以后不要在我面前說英文了,OK?

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

36. 一覺醒來,天都黑了。

37. 錢可以解決的問題都不是問題。

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

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

40. 鈔票不是萬能的,有時還需要信用卡。

41. 我允許你走進我的世界,但決不允許你在我的世界里走來走去。

42. 人怕出名豬怕壯,男怕沒錢女怕胖。

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

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

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

46、過去流氓在深山,現在流氓在公安!

47、長著翅膀的不一定是天使,有時候是鳥人。

48、站的高,尿的遠。

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

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

51、此地禁止小便,違者沒收作案工具。

52、你可以像豬一樣的生活,但你永遠都不能像豬那樣快樂!

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

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


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

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

暴強回復:大嬸,即使你能把男人當狗使,但你敢把狗當男人使不?

 

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

暴強回復:一個公雞,一個野雞,都不選 

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

暴強回復:弱弱的問一下,QS是不是去死的意思? 

4.變態(tài)樓主:一學生,成績年年倒數第一,常與人打架,按領導要求老師想給學生好聽一點的期末評語,怎么寫啊?

 暴強回復:該生成績穩(wěn)定,動手能力強。 

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

 暴強回復:有什么說的:前十分鐘,領導們很忙。中十分鐘,全國人民都很幸福。后十分鐘,世界上其它國家人民都生活在水深火熱之中。 

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

 暴強回復:外事問谷歌,內事問百度,房事問天涯! 

7.變態(tài)樓主:奧運口號“同一個世界,同一個夢想!”

 暴強回復:乖乖,麻將國粹無處不在,倒過來看居然是“想摸個一筒,就是個一筒!” 

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

刻,可惡的悟空出現了……

  天*涯回復12:唉,要是換好色的八戒出現就好了!

  天*涯回復13:嗯,八戒出現了,這次改蝎子精不從了…… 

9.天*涯樓主:懷疑老婆紅杏出墻,但苦于沒證據……

 天*涯回復:如果你沒本事做陳冠希,那就做謝霆峰吧 

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

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

11.論壇樓主:該死的理發(fā)店把我頭剪壞了!大家出點損招,要求破壞性越大越好,動靜越小越好,因為是我一個人去。

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

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

 論壇沙發(fā):因為取款機里吐出的錢歸插卡人所有。 

13.王小丫跟陳章良結婚,請用四個字評論。

  論壇回復:丫從良了! 

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

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

15.天*涯樓主:請用一句話形容中國國家地震臺。

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

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

  回復:植物都會打字.!!! 

17.天*涯樓主:請問北京是如何體現本次奧運會為綠色人文奧運的?

 天*涯沙發(fā):不是請謝霆鋒來唱歌了嗎?

18.中日韓三國難道非要采取敵視行為對待彼此,就不能心平氣和地坐下來談問題嗎?

  沙發(fā):不能!因為日 本人和中國人談得投機的時候,只有當話題是關于韓國人時;日 本人和韓國人談得投機的時候,只有當話題是關于中國人時;中國人和韓國人能談得投機的時候,只有當話題是日本人時! 

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

沙發(fā):像。 

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

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

21.天*涯樓主:據我考證,古代男人們去青樓并不是要跟女子們發(fā)生關系。事實上大多數藝妓都是才藝出眾、才貌雙全的,飛舞唱曲,吟詩誦詞,極為風雅。男人們不過去坐一坐,喝幾杯清茶,吃幾塊點心,聽幾首小曲,下下棋,吟吟詩,喝點小酒什么

的,然后就離開了。

 *涯回復:哦,謝謝樓主的解釋,原來古代的青樓就是今天的北影。



pony 2009-03-18 14:46 發(fā)表評論
]]>
不要在無聊中老去http://www.tkk7.com/jjwwhmm/archive/2009/03/18/260367.htmlponyponyWed, 18 Mar 2009 00:55:00 GMThttp://www.tkk7.com/jjwwhmm/archive/2009/03/18/260367.htmlhttp://www.tkk7.com/jjwwhmm/comments/260367.htmlhttp://www.tkk7.com/jjwwhmm/archive/2009/03/18/260367.html#Feedback2http://www.tkk7.com/jjwwhmm/comments/commentRss/260367.htmlhttp://www.tkk7.com/jjwwhmm/services/trackbacks/260367.html

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

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


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

pony 2009-03-16 17:36 發(fā)表評論
]]>
[zz]Installing XMMS on Ubuntu 8.04http://www.tkk7.com/jjwwhmm/articles/254746.htmlponyponySun, 15 Feb 2009 05:35:00 GMThttp://www.tkk7.com/jjwwhmm/articles/254746.htmlhttp://www.tkk7.com/jjwwhmm/comments/254746.htmlhttp://www.tkk7.com/jjwwhmm/articles/254746.html#Feedback0http://www.tkk7.com/jjwwhmm/comments/commentRss/254746.htmlhttp://www.tkk7.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



pony 2009-02-15 13:35 發(fā)表評論
]]>
servlet中重定向的錯誤:IllegalStateExceptionhttp://www.tkk7.com/jjwwhmm/archive/2009/01/22/252364.htmlponyponyThu, 22 Jan 2009 08:28:00 GMThttp://www.tkk7.com/jjwwhmm/archive/2009/01/22/252364.htmlhttp://www.tkk7.com/jjwwhmm/comments/252364.htmlhttp://www.tkk7.com/jjwwhmm/archive/2009/01/22/252364.html#Feedback0http://www.tkk7.com/jjwwhmm/comments/commentRss/252364.htmlhttp://www.tkk7.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ā)現是因為在service方法中第一行調用了super.service(req,rep)方法導致的錯誤.
這個細節(jié)以前沒有注意到,特此隨筆記錄.

pony 2009-01-22 16:28 發(fā)表評論
]]>
proftpd服務啟動的問題 Starting proftpd: execvp: No such file or directoryhttp://www.tkk7.com/jjwwhmm/archive/2009/01/22/252302.htmlponyponyThu, 22 Jan 2009 01:41:00 GMThttp://www.tkk7.com/jjwwhmm/archive/2009/01/22/252302.htmlhttp://www.tkk7.com/jjwwhmm/comments/252302.htmlhttp://www.tkk7.com/jjwwhmm/archive/2009/01/22/252302.html#Feedback0http://www.tkk7.com/jjwwhmm/comments/commentRss/252302.htmlhttp://www.tkk7.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的啟動停止鏈接:
    ln -s ../init.d/proftpd S86proftpd
    ln -s ../init.d/proftpd K18proftpd
然后,/sbin/service proftpd start
報錯誤:Starting proftpd: execvp: No such file or directory
經檢查,是proftpd.init.d腳本中的路徑有問題:
  PATH="$PATH:/usr/local/sbin"
而我的proftpd安裝在/usr/local/proftpd目錄下
修改上面的路徑為PATH="$PATH:/usr/local/proftpd/sbin",重新啟動,問題解決



pony 2009-01-22 09:41 發(fā)表評論
]]>
(轉載)使用LVS(Linux Virtual Server)在Linux上搭建負載均衡的集群服務http://www.tkk7.com/jjwwhmm/articles/250996.htmlponyponyMon, 12 Jan 2009 09:38:00 GMThttp://www.tkk7.com/jjwwhmm/articles/250996.htmlhttp://www.tkk7.com/jjwwhmm/comments/250996.htmlhttp://www.tkk7.com/jjwwhmm/articles/250996.html#Feedback0http://www.tkk7.com/jjwwhmm/comments/commentRss/250996.htmlhttp://www.tkk7.com/jjwwhmm/services/trackbacks/250996.html
一、基于于NAT的LVS的安裝與配置。
1. 硬件需求和網絡拓撲
________
|        |
| 客戶端 | (互連網)
|________|
|
(router)
202.99.59.1(director GW)
|
|
(202.99.59.110)Virtual IP
____|_____
|          | (控制器有兩塊網卡)
| 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)、內核源代碼:需要下載2.4.23以后版本的內核源代碼。下載地址為http://www.kerner.org。本文中下載的內核源代為: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的內核和配置工具ipvsadm。

(1)、在內核配置時以下選項必須選:

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)、編譯和安裝內核

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

系統(tǒng)啟動后要確認內核是否支持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

然后運行:ipvsadm --version命令,應該有下面的內容輸出:
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服務
#add http to VIP with rr sheduling
/sbin/ipvsadm -A -t 202.99.59.110:80 -s rr

增加第一臺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

增加第二臺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)上分別將其網關設置為192.168.10.254,并分別啟動apache服務。

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

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

從上面的結果可以看出,我們的LVS服務器已經成功運行。

 

 

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

1.硬件需求和網絡拓撲:
________
|        |
| 客戶端 | (互連網)
|________|
|
(router)
202.99.59.1(director GW)
|
__________    |
|          |   |   (VIP=202.99.59.110, eth0:110)
| director |---|  (控制器有一塊網卡,且與realserver1和realserver2在同一網段)
|__________|   |   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)上安裝上面的方法安裝內核和管理軟件。

 

3. 配置LVS

(1)、在202.99.59.109上:

修改內核運行參數,即修改/etc/sysctl.conf文件的內容如下:
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í)行下面的命令是對內核修改的參數立即生效:
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服務:
/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)上做下面的設置。

修改內核運行參數,即修改/etc/sysctl.conf文件的內容如下:
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í)行下面的命令是對內核修改的參數立即生效:
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>在客戶端使用瀏覽器多次訪問:http://202.99.59.110/,然后再202.99.59.110上運行ipvsadm命令,應該有類似下面的輸出:
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

從上面的結果可以看出,我們的LVS服務器已經成功運行。

 

 

在面的實例中ipvsadm用到的幾個參數含義如下:

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

-s 指定服務采用的算法,常用的算法參數如下:

  • rr   輪叫(Round Robin)
    調度器通過"輪叫"調度算法將外部請求按順序輪流分配到集群中的真實服務器上,它均等地對待每一臺服務 器,而不管服務器上實際的連接數和系統(tǒng)負載。

     

  • wrr   加權輪叫(Weighted Round Robin)
    調度器通過"加權輪叫"調度算法根據真實服務器的不同處理能力來調度訪問請求。這樣可以保證處理能力強的服務器處理更多的訪問流量。調度器可以自動問詢真實服務器的負載情況,并動態(tài)地調整其權值。

     

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

     

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

     

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

     

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

     

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

     

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

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

-a 表示往一個服務內增加一個real server

-r 指定real server的IP地址

-w 表示權重

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



pony 2009-01-12 17:38 發(fā)表評論
]]>
主站蜘蛛池模板: 亚洲国产第一站精品蜜芽| 中文字幕在线视频免费| 羞羞漫画在线成人漫画阅读免费| AAA日本高清在线播放免费观看| 亚洲AV无码乱码在线观看| 免费福利在线播放| 叮咚影视在线观看免费完整版| 亚洲va中文字幕| 亚洲视频在线观看地址| 国产亚洲精品AA片在线观看不加载 | 男人和女人高潮免费网站| 亚洲国产精品一区第二页| 亚洲男人av香蕉爽爽爽爽| 夭天干天天做天天免费看| 69成人免费视频| 99在线免费观看视频| 免费久久人人爽人人爽av| 久香草视频在线观看免费| 天天综合亚洲色在线精品| 国产成+人+综合+亚洲专| 99视频在线免费观看| 猫咪www免费人成网站| 亚洲精品天堂成人片AV在线播放| 五月天婷婷精品免费视频| 疯狂做受xxxx高潮视频免费| 亚洲免费二区三区| 亚洲高清日韩精品第一区 | 羞羞网站在线免费观看| 亚洲人av高清无码| 2017亚洲男人天堂一| 亚洲人成电影在线观看青青| 亚洲精品国产专区91在线| 久久精品国产精品亚洲艾草网| 亚洲精品国产美女久久久| 亚洲中文字幕不卡无码| 亚洲色成人中文字幕网站| 亚洲情综合五月天| 亚洲AV无码专区在线播放中文 | 免费人成在线观看播放a| 无遮挡国产高潮视频免费观看| 免费一区二区无码视频在线播放|