<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 167,  comments - 30,  trackbacks - 0
    Http狀態碼以及常見Http Header返回狀態詳解
    2011-05-17 15:36

    站 長經常會遇到一些http狀態碼的問題。而所謂的404頁就是服務器404重定向狀態返回頁面。數字404指的是404號狀態碼。一般常用到的有200號 狀態碼和404號狀態碼。200號表示網頁被下載成功,而404號表示不能成功下載并產生錯誤。下面是HTTP狀態碼一覽表。

    1xx:請求收到,繼續處理
    2xx:操作成功收到,分析、接受
    3xx:完成此請求必須進一步處理
    4xx:請求包含一個錯誤語法或不能完成
    5xx:服務器執行一個完全有效請求失敗

    100——客戶必須繼續發出請求
    101——客戶要求服務器根據請求轉換HTTP協議版本

    200——交易成功
    201——提示知道新文件的URL
    202——接受和處理、但處理未完成
    203——返回信息不確定或不完整
    204——請求收到,但返回信息為空
    205——服務器完成了請求,用戶代理必須復位當前已經瀏覽過的文件
    206——服務器已經完成了部分用戶的GET請求

    300——請求的資源可在多處得到
    301——刪除請求數據
    302——在其他地址發現了請求數據
    303——建議客戶訪問其他URL或訪問方式
    304——客戶端已經執行了GET,但文件未變化
    305——請求的資源必須從服務器指定的地址得到
    306——前一版本HTTP中使用的代碼,現行版本中不再使用
    307——申明請求的資源臨時性刪除

    400——錯誤請求,如語法錯誤
    401——請求授權失敗
    402——保留有效ChargeTo頭響應
    403——請求不允許
    404——沒有發現文件、查詢或URl
    405——用戶在Request-Line字段定義的方法不允許
    406——根據用戶發送的Accept拖,請求資源不可訪問
    407——類似401,用戶必須首先在代理服務器上得到授權
    408——客戶端沒有在用戶指定的餓時間內完成請求
    409——對當前資源狀態,請求不能完成
    410——服務器上不再有此資源且無進一步的參考地址
    411——服務器拒絕用戶定義的Content-Length屬性請求
    412——一個或多個請求頭字段在當前請求中錯誤
    413——請求的資源大于服務器允許的大小
    414——請求的資源URL長于服務器允許的長度
    415——請求資源不支持請求項目格式
    416——請求中包含Range請求頭字段,在當前請求資源范圍內沒有range指示值,請求
    也不包含If-Range請求頭字段
    417——服務器不滿足請求Expect頭字段指定的期望值,如果是代理服務器,可能是下
    一級服務器不能滿足請求

    500——服務器產生內部錯誤
    501——服務器不支持請求的函數
    502——服務器暫時不可用,有時是為了防止發生系統過載
    503——服務器過載或暫停維修
    504——關口過載,服務器使用另一個關口或服務來響應用戶,等待時間設定值較長
    505——服務器不支持或拒絕支請求頭中指定的HTTP版本

    -------------------------------------------------------

    英文版:

    100:Continue
    101:Switching Protocols
    102:Processing

    200:OK
    201:Created
    202:Accepted
    203:Non-Authoriative Information
    204:No Content
    205:Reset Content
    206:Partial Content
    207:Multi-Status

    300:Multiple Choices
    301:Moved Permanently
    302:Found
    303:See Other
    304:Not Modified
    305:Use Proxy
    306:(Unused)
    307:Temporary Redirect

    400:Bad Request
    401:Unauthorized
    402:Payment Granted
    403:Forbidden
    404:File Not Found
    405:Method Not Allowed
    406:Not Acceptable
    407:Proxy Authentication Required
    408:Request Time-out
    409:Conflict
    410:Gone
    411:Length Required
    412:Precondition Failed
    413:Request Entity Too Large
    414:Request-URI Too Large
    415:Unsupported Media Type
    416:Requested range not satisfiable
    417:Expectation Failed
    422:Unprocessable Entity
    423:Locked
    424:Failed Dependency

    500:Internal Server Error
    501:Not Implemented
    502:Bad Gateway
    503:Service Unavailable
    504:Gateway Timeout
    505:HTTP Version Not Supported
    507:Insufficient Storage

    -------------------------------------------------------

    200號狀態碼

    220.181.32.30 - - [02/Sep/2008:00:01:23 +0800] "GET /article/0572/72570.shtml HTTP/1.1" 200 28361 "-" "Baiduspider+(+http://www.baidu.com/search/spider.htm)"

    服務器日志中的200表示使用GET傳遞方式網頁72570.shtml下載成功。即:當用戶或爬蟲程序向網站服務器發出瀏覽請求時,服務器返回 HTTP 數據流里包含某種狀態碼,200響應號即狀態碼中的一種,表示本網頁被成功下載。

    301號狀態碼

    220.181.32.30 - - [02/Sep/2008:00:01:31 +0800] "GET /my/view.php?aid=14183 HTTP/1.1" 301 - "-" "Baiduspider+(+http://www.baidu.com/search/spider.htm)"

    服務器日志中的301表示使用GET傳遞方式動態網頁aid=14183成功跳轉。即:當用戶或爬蟲程序向網站服務器發出瀏覽請求時,服務器返回 HTTP 數據流包含某種狀態碼,301 重定向即狀態碼中的一種,表示本網頁永久性轉移到另一個地址。實際操作中我們可以將多個域名指向同一個網址,這也是搜索引擎唯一認可的一種網站轉向的方 式。

    404狀態碼

    出現404狀態碼就證明有URL地址的網頁瀏覽不到。很多時候由于網站的改版,使很多舊版網站url地址失效。這是你需要建立404狀態頁來保證你 網站通暢,能夠達到一種回路的效果。切記404狀態頁需要單獨設計,不能直接在服務器端直接跳轉回首頁。否則,搜索引擎會大量抓取網站首頁失誤當成404 頁處理。

    HTTP 404 錯誤意味著鏈接指向的網頁不存在,即原始網頁的URL失效,這種情況經常會發生,很難避免,比如說:網頁URL生成規則改變、網頁文件更名或移動位置、導 入鏈接拼寫錯誤等,導致原來的URL地址無法訪問;當Web 服務器接到類似請求時,會返回一個404 狀態碼,告訴瀏覽器要請求的資源并不存在。但是,Web服務器默認的404錯誤頁面,無論Apache還是IIS,均十分簡陋、呆板且對用戶不友好,無法 給用戶提供必要的信息以獲取更多線索,無疑這會造成用戶的流失。

    因此,很多網站均使用自定義404錯誤的方式以提供用戶體驗避免用戶流失。一般而言,自定義404頁面通用的做法是在頁面中放置網站快速導航鏈接、搜索框以及網站提供的特色服務,這樣可以有效的幫助用戶訪問站點并獲取需要的信息。

    -------------------------------------------------------

    100 Continue
    指示客戶端應該繼續請求。回送用于通知客戶端此次請求已經收到,并且沒有被服務器拒絕。
    客戶端應該繼續發送剩下的請求數據或者請求已經完成,或者忽略回送數據。服務器必須發送
    最后的回送在請求之后。

    101 Switching Protocols
    服務器依照客服端請求,通過Upgrade頭信息,改變當前連接的應用協議。服務器將根據Upgrade頭立刻改變協議
    在101回送以空行結束的時候。

    Successful
    =================================
    200 OK
    指示客服端的請求已經成功收到,解析,接受。

    201 Created
    請求已經完成并一個新的返回資源被創建。被創建的資源可能是一個URI資源,通常URI資源在Location頭指定。回送應該包含一個實體數據
    并且包含資源特性以及location通過用戶或者用戶代理來選擇合適的方法。實體數據格式通過煤體類型來指定即content-type頭。最開始服務器
    必須創建指定的資源在返回201狀態碼之前。如果行為沒有被立刻執行,服務器應該返回202。

    202 Accepted
    請求已經被接受用來處理。但是處理并沒有完成。請求可能或者根本沒有遵照執行,因為處理實際執行過程中可能被拒絕。

    203 Non-Authoritative Information

    204 No Content
    服務器已經接受請求并且沒必要返回實體數據,可能需要返回更新信息。回送可能包含新的或更新信息由entity-headers呈現。

    205 Reset Content
    服務器已經接受請求并且用戶代理應該重新設置文檔視圖。

    206 Partial Content
    服務器已經接受請求GET請求資源的部分。請求必須包含一個Range頭信息以指示獲取范圍可能必須包含If-Range頭信息以成立請求條件。

    Redirection
    ==================================
    300 Multiple Choices
    請求資源符合任何一個呈現方式。

    301 Moved Permanently
    請求的資源已經被賦予一個新的URI。

    302 Found
    通過不同的URI請求資源的臨時文件。


    303 See Other

    304 Not Modified
    如果客服端已經完成一個有條件的請求并且請求是允許的,但是這個文檔并沒有改變,服務器應該返回304狀態碼。304
    狀態碼一定不能包含信息主體,從而通常通過一個頭字段后的第一個空行結束。

    305 Use Proxy
    請求的資源必須通過代理(由Location字段指定)來訪問。Location資源給出了代理的URI。

    306 Unused

    307 Temporary Redirect

    Client Error
    =====================
    400 Bad Request
    因為錯誤的語法導致服務器無法理解請求信息。

    401 Unauthorized
    如果請求需要用戶驗證。回送應該包含一個WWW-Authenticate頭字段用來指明請求資源的權限。

    402 Payment Required
    保留狀態碼

    403 Forbidden
    服務器接受請求,但是被拒絕處理。

    404 Not Found
    服務器已經找到任何匹配Request-URI的資源。

    405 Menthod Not Allowed
    Request-Line請求的方法不被允許通過指定的URI。

    406 Not Acceptable

    407 Proxy Authentication Required

    408 Reqeust Timeout
    客服端沒有提交任何請求在服務器等待處理時間內。

    409 Conflict

    410 Gone

    411 Length Required
    服務器拒絕接受請求在沒有定義Content-Length字段的情況下。

    412 Precondition Failed

    413 Request Entity Too Large
    服務器拒絕處理請求因為請求數據超過服務器能夠處理的范圍。服務器可能關閉當前連接來阻止客服端繼續請求。

    414 Request-URI Too Long
    服務器拒絕服務當前請求因為URI的長度超過了服務器的解析范圍。

    415 Unsupported Media Type
    服務器拒絕服務當前請求因為請求數據格式并不被請求的資源支持。

    416 Request Range Not Satisfialbe

    417 Expectation Failed

    Server Error
    ===================================
    500 Internal Server Error
    服務器遭遇異常阻止了當前請求的執行

    501 Not Implemented
    服務器沒有相應的執行動作來完成當前請求。

    502 Bad Gateway
    錯誤的網關

    503 Service Unavailable
    因為臨時文件超載導致服務器不能處理當前請求。

    504 Gateway Timeout

    505 Http Version Not Supported

    常見返回狀態碼有200(正常)、404(無法訪問)、500(頁面中PHP/ASP/ASPX等有錯誤)、301(永久重定向)、302(普通跳轉如js跳轉,http跳轉,asp中respone.redirect跳轉及PHP使用的header發送的普通跳轉等)。

     

     


    常見Http Header返回狀態詳解:

        當用戶點擊或搜索引擎向網站服務器發出瀏覽請求時,服務器將返回Http Header Http頭信息狀態碼,常見幾種如下: 1、Http/1.1 200 OK 訪問正常
      表示成功訪問,為網站可正常訪問時的狀態。

    2、Http/1.1 301 Moved Permanently301重定向永久重定向
      對搜索引擎相對友好的跳轉方式,當網站更換域名時可將原域名作301永久重定向到新域名,原域名權重可傳遞到新域名,也常有將不含www的域名301跳轉到含www的,如xxx.com通過301跳轉到www.xxx.com

    3、Http/1.1 302 Found 為臨時重定向
      易被搜索引擎判為作弊,比如asp程序的response.Redirect()跳轉、js跳轉或靜態http跳轉。

    4、Http/1.1 400 Bad Request 域名綁定錯誤
      一般是服務器上域名未綁定成功,未備案等情況。

    5、Http/1.1 403 Forbidden 沒有權限訪問此站
      你的IP被列入黑名單,連接的用戶過多,可以過后再試,網站域名解析到了空間,但空間未綁定此域名等情況。

    6、Http/1.1 404 Not Found 文件或目錄不存在
      表示請求文件、目錄不存在或刪除,設置404錯誤頁時需確保返回值為404。常有因為404錯誤頁設置不當導致不存在的網頁返回的不是404而導致搜索引擎降權。

    7、Http/1.1 500 Internal Server Error 程序或服務器錯誤
      表示服務器內部程序錯誤,出現這樣的提示一般是程序頁面中出現錯誤,如小的語法錯誤,數據連接故障等。

    轉載自:
    posted @ 2012-01-17 14:47 David1228| 編輯 收藏

    Java

    //冒泡排序(升序和降序) 兩層循環,外層排序控制,【內層排序比較大小,交換位置】
        public static int[] bubbleSort(int[] arr){
            
    for (int i = 0; i < arr.length - 1; i++{
                
    for (int j = 0; j < arr.length - i - 1 ; j++{
                    
    if(arr[j] > arr[j + 1]){
                        
    int temp = arr[j];
                        arr[j] 
    = arr[j + 1];
                        arr[j 
    + 1= temp;
                    }

                }

                
    //最大元素找到
                System.out.println("" + (i + 1+ "趟排序");
                
    for (int k = 0; k < arr.length; k++{
                    System.out.println(arr[k] 
    + " ");
                }

             }

            
    return arr;
        }

     二分查找理論實踐參考

     http://www.sunchis.com/html/java/2011/0426/323.html

    public static void main(String[] args) {
            
    int[] arr = new int[]{2,3,6,4,8,5,9,11,15,12,14,13};
            
    int value = 9;
            
    //System.out.println(directSerach(arr, 18));
            
            arr 
    = MaoPaoSortTest.bubbleSort(arr);
            binarySerach(arr, 
    18);
        }

        
        
    /**
         * 直接查找 優點:很好理解,適合數據量小的查找 缺點:數據量大速度很慢. 降低查找效率
         
    */

        
    public static int directSerach(int[] arr, int value){
            
    for (int i = 0; i < arr.length; i++{
                
    if(value == arr[i]){
                    
    return i;
                }

            }

            
    return -1;
        }

        
        
    /**
         * 二分查找方法 待查找的數組要有序.將有序數組一分為二
         * 定義最小索引值low、最大索引值high、定義中間索引值middle.
         * while(condition), condition low<=high
         * 根據最大索引值和最小索引值計算中間值索引值middle,并將arr[middle]值與value比較.
         * 1.如果value等于arr[middle],則直接返回middle索引值.
         * 如果value大于arr[middle],則數組分隔的左側過濾掉.將low索引值重置:middle+1
         * 如果value小于arr[middle],則數組分隔的右側過濾掉.將high索引值重置:middle-1
         
    */

        
    public static int binarySerach(int[] arr, int value){
            
    int low = 0//最小下標索引
            int high = arr.length; //最大下標索引
            int middle = 0//中間索引
            while (low <= high) {
                middle 
    = (high + low) / 2;
                
                
    //test
                for (int i = 0; i < arr.length; i++{
                    System.out.print(arr[i]);
                    
    if(i == middle){
                        System.out.print(
    "#");
                    }

                    System.out.print(
    " ");
                }

                System.out.println();
                
                
    if(value == arr[middle]){
                    
    return middle;
                }

                
    if(value < arr[middle]){
                    high 
    = middle - 1;
                }

                
    if(value > arr[middle]){
                    low 
    = middle + 1;
                }

            }

            
    return -1;
        }


    posted @ 2012-01-14 15:39 David1228 閱讀(241) | 評論 (0)編輯 收藏
    xen環境下(centos操作系統)vnc配置
    name = 'one-85'
    #O CPU_CREDITS = 256
    memory  = '2048'
    bootloader = "/usr/bin/pygrub"
    disk = [
        'file:/one_images/85/images/disk.0,xvda,w',
        'file:/one_images/85/images/disk.1,xvdb,w',
        'file:/one_images/85/images/disk.2,sdc,r',
    ]
    vif = [
        ' mac=02:00:c0:a8:a3:a8,ip=192.168.163.168,bridge=xenbr0',
    ]
    vcpus=2
    vfb = [ 'type=vnc,vncunused=1,keymap=en-us,vnclisten=0.0.0.0' ]

    posted @ 2012-01-10 15:32 David1228 閱讀(550) | 評論 (0)編輯 收藏
    轉載自:
    http://conkeyn.iteye.com/blog/734186

    總結還不錯的

    1. jQuery獲取Select選擇的Text和Value:  
    2. 語法解釋:  
    3. 1. $("#select_id").change(function(){//code...});   //為Select添加事件,當選擇其中一項時觸發  
    4. 2. var checkText=$("#select_id").find("option:selected").text();  //獲取Select選擇的Text  
    5. 3. var checkValue=$("#select_id").val();  //獲取Select選擇的Value  
    6. 4. var checkIndex=$("#select_id ").get(0).selectedIndex;  //獲取Select選擇的索引值  
    7. 5. var maxIndex=$("#select_id option:last").attr("index");  //獲取Select最大的索引值  
    8. jQuery設置Select選擇的 Text和Value:  
    9. 語法解釋:  
    10. 1. $("#select_id ").get(0).selectedIndex=1;  //設置Select索引值為1的項選中  
    11. 2. $("#select_id ").val(4);   // 設置Select的Value值為4的項選中  
    12. 3. $("#select_id option[text='jQuery']").attr("selected", true);   //設置Select的Text值為jQuery的項選中  
    13. jQuery添加/刪除Select的Option項:  
    14. 語法解釋:  
    15. 1. $("#select_id").append("<option value='Value'>Text</option>");  //為Select追加一個Option(下拉項)  
    16. 2. $("#select_id").prepend("<option value='0'>請選擇</option>");  //為Select插入一個Option(第一個位置)  
    17. 3. $("#select_id option:last").remove();  //刪除Select中索引值最大Option(最后一個)  
    18. 4. $("#select_id option[index='0']").remove();  //刪除Select中索引值為0的Option(第一個)  
    19. 5. $("#select_id option[value='3']").remove();  //刪除Select中Value='3'的Option  
    20. 5. $("#select_id option[text='4']").remove();  //刪除Select中Text='4'的Option  
    21.   
    22. http://www.cnblogs.com/SAL2928/archive/2008/10/28/1321285.html  
    23.   
    24. jquery radio取值,checkbox取值,select取值,radio選中,checkbox選中,select選中,及其相關  
    25. 獲 取一組radio被選中項的值  
    26. var item = $('input[@name=items][@checked]').val();  
    27. 獲 取select被選中項的文本  
    28. var item = $("select[@name=items] option[@selected]").text();  
    29. select下拉框的第二個元素為當前選中值  
    30. $('#select_id')[0].selectedIndex = 1;  
    31. radio單選組的第二個元素為當前選中值  
    32. $('input[@name=items]').get(1).checked = true;  
    33.   
    34. 獲取值:  
    35.   
    36. 文本框,文本區域:$("#txt").attr("value");  
    37. 多選框 checkbox:$("#checkbox_id").attr("value");  
    38. 單選組radio:   $("input[@type=radio][@checked]").val();  
    39. 下拉框select: $('#sel').val();  
    40.   
    41. 控制表單元素:  
    42. 文本框,文本區域:$("#txt").attr("value",'');//清空內容  
    43. $("#txt").attr("value",'11');// 填充內容  
    44.   
    45. 多選框checkbox: $("#chk1").attr("checked",'');//不打勾  
    46. $("#chk2").attr("checked",true);// 打勾  
    47. if($("#chk1").attr('checked')==undefined) //判斷是否已經打勾  
    48.   
    49. 單選組 radio:    $("input[@type=radio]").attr("checked",'2');//設置value=2的項目為當前選中項  
    50. 下拉框 select:   $("#sel").attr("value",'-sel3');//設置value=-sel3的項目為當前選中項  
    51. $("<option value='1'>1111</option><option value='2'>2222</option>").appendTo("#sel")//添加下拉框的option  
    52. $("#sel").empty();// 清空下拉框  
    53.   
    54. ----------------------------------------------------------------------------------------------------  
    55.   
    56.    
    57.   
    58. //遍歷option和添加、移除option  
    59. function changeShipMethod(shipping){  
    60. var len = $("select[@name=ISHIPTYPE] option").length  
    61. if(shipping.value != "CA"){  
    62. $("select[@name=ISHIPTYPE] option").each(function(){  
    63. if($(this).val() == 111){  
    64. $(this).remove();  
    65. }  
    66. });  
    67. }else{  
    68. $("<option value='111'>UPS Ground</option>").appendTo($("select[@name=ISHIPTYPE]"));  
    69. }  
    70. }  
    71.   
    72.   
    73. //取得下拉選單的選取值  
    74.   
    75. $(#testSelect option:selected').text();  
    76. 或$("#testSelect").find('option:selected').text();  
    77. 或$("#testSelect").val();  
    78. //////////////////////////////////////////////////////////////////  
    79. 記 性不好的可以收藏下:  
    80. 1,下拉框:  
    81.   
    82. var cc1 = $(".formc select[@name='country'] option[@selected]").text(); //得到下拉菜單的選中項的文本(注意中間有空格)  
    83. var cc2 = $('.formc select[@name="country"]').val(); //得到下拉菜單的選中項的值  
    84. var cc3 = $('.formc select[@name="country"]').attr("id"); //得到下拉菜單的選中項的ID屬性值  
    85. $("#select").empty();//清空下拉框 //$("#select").html('');  
    86. $("<option value='1'>1111</option>").appendTo("#select")//添加下拉框的option  
    87.   
    88. 稍微解釋一下:  
    89. 1.select[@name='country'] option[@selected] 表示具有name 屬性,  
    90. 并 且該屬性值為'country' 的select元素 里面的具有selected 屬性的option 元素;  
    91. 可以看出有@開頭的就表示后面跟 的是屬性。  
    92.   
    93. 2,單選框:  
    94. $("input[@type=radio][@checked]").val(); //得到單選框的 選中項的值(注意中間沒有空格)  
    95. $("input[@type=radio][@value=2]").attr("checked",'checked'); //設置單選框value=2的為選中狀態.(注意中間沒有空格)  
    96.   
    97. 3,復選框:  
    98. $("input[@type=checkbox][@checked]").val(); //得到復選框的選中的第一項的值  
    99. $("input[@type=checkbox][@checked]").each(function() { //由于復選框一般選中的是多個,所以可以循環輸出  
    100. alert($(this).val());  
    101. });  
    102.   
    103. $("#chk1").attr("checked",'');//不打勾  
    104. $("#chk2").attr("checked",true);// 打勾  
    105. if($("#chk1").attr('checked')==undefined){} //判斷是否已經打勾  
    106.   
    107.   
    108. 當然jquery的選擇器是強大的. 還有很多方法.  
    109.   
    110. <script src="jquery-1.2.1.js" type="text/javascript"></script>  
    111. <script language="javascript" type="text/javascript">  
    112. $(document).ready(function(){  
    113. $("#selectTest").change(function()  
    114. {  
    115. //alert("Hello");  
    116. //alert($("#selectTest").attr("name"));  
    117. //$("a").attr("href","xx.html");  
    118. //window.location.href="xx.html";  
    119. //alert($("#selectTest").val());  
    120. alert($("#selectTest option[@selected]").text());  
    121. $("#selectTest").attr("value", "2");  
    122.   
    123. });  
    124. });  
    125. </script>  
    126.   
    127.   
    128. <a href="#">aaass</a>  
    129.   
    130. <!--下拉框-->  
    131. <select id="selectTest" name="selectTest">  
    132. <option value="1">11</option>  
    133. <option value="2">22</option>  
    134. <option value="3">33</option>  
    135. <option value="4">44</option>  
    136. <option value="5">55</option>  
    137. <option value="6">66</option>  
    138. </select>  
    139. jquery radio取值,checkbox取值,select取值,radio選中,checkbox選中,select選中,及其相關獲取一組radio被選中 項的值  
    140. var item = $('input[@name=items][@checked]').val();  
    141. 獲取select被選 中項的文本  
    142. var item = $("select[@name=items] option[@selected]").text();  
    143. select 下拉框的第二個元素為當前選中值  
    144. $('#select_id')[0].selectedIndex = 1;  
    145. radio單選組的第二個 元素為當前選中值  
    146. $('input[@name=items]').get(1).checked = true;  
    147. 獲取值:  
    148. 文本 框,文本區域:$("#txt").attr("value");  
    149. 多選框 checkbox:$("#checkbox_id").attr("value");  
    150. 單選組radio: $("input[@type=radio][@checked]").val();  
    151. 下拉框select: $('#sel').val();  
    152. 控 制表單元素:  
    153. 文本框,文本區域:$("#txt").attr("value",'');//清空內容  
    154. $("#txt").attr("value",'11');// 填充內容  
    155. 多選框checkbox: $("#chk1").attr("checked",'');//不打勾  
    156. $("#chk2").attr("checked",true);// 打勾  
    157. if($("#chk1").attr('checked')==undefined) //判斷是否已經打勾  
    158. 單選組radio: $("input[@type=radio]").attr("checked",'2');//設置value=2的項目為當前選中項  
    159. 下拉框 select: $("#sel").attr("value",'-sel3');//設置value=-sel3的項目為當前選中項  
    160. $("<optionvalue='1'& gt;1111</option><optionvalue='2'>2222</option& gt;").appendTo("#sel")//添加下拉框的option  
    161. $("#sel").empty();// 清空下拉框  
    162.   
    163. 獲取一組radio被選中項的值  
    164. var item = $('input[@name=items][@checked]').val();  
    165. 獲取select被選中項的文本  
    166. var item = $("select[@name=items] option[@selected]").text();  
    167. select下拉框的第二個元素為當 前選中值  
    168. $('#select_id')[0].selectedIndex = 1;  
    169. radio單選組的第二個元素為當前選中值  
    170. $('input[@name=items]').get(1).checked = true;  
    171. 獲取值:  
    172. 文本框,文本區域:$("#txt").attr("value");  
    173. 多選框 checkbox:$("#checkbox_id").attr("value");  
    174. 單選組radio: $("input[@type=radio][@checked]").val();  
    175. 下拉框select: $('#sel').val();  
    176. 控 制表單元素:  
    177. 文本框,文本區域:$("#txt").attr("value",'');//清空內容  
    178. $("#txt").attr("value",'11');// 填充內容  
    179. 多選框checkbox: $("#chk1").attr("checked",'');//不打勾  
    180. $("#chk2").attr("checked",true);// 打勾  
    181. if($("#chk1").attr('checked')==undefined) //判斷是否已經打勾  
    182. 單選組radio: $("input[@type=radio]").attr("checked",'2');//設置value=2的項目為當前選中項  
    183. 下拉框 select: $("#sel").attr("value",'-sel3');//設置value=-sel3的項目為當前選中項  
    184. $("<option value='1'>1111</option><option value='2'>2222</option>").appendTo("#sel")//添加下拉框的option  
    185. $("#sel").empty();// 清空下拉框 

    query獲取數據并生成下拉菜單,記下來,免得又弄丟.這東東一不用就忘,郁悶~!!!

    <script type="text/javascript">
        $(document).ready(function() {
            GetByJquery();
            $("#ddlProvince").change(function() { GetCity() });
            $("#ddlCity").change(function() { GetDistrict() });
        });
       
        function GetByJquery() {

            $("#ddlProvince").empty(); //清空省份SELECT控件

            $.getJSON("/ajax/GetProvinceList", function(data) {
                $.each(data, function(i, item) {
                    $("<option></option>")
                        .val(item["ProvinceID"])
                        .text(item["ProvinceName"])
                        .appendTo($("#ddlProvince"));
                });
                GetCity();
            });     

        }

        function GetCity() {

            $("#ddlCity").empty(); //清空城市SELECT控件
            var url ="/ajax/GetCityList/" + $("#ddlProvince").val();
            $.getJSON(url, function(data) {
                $.each(data, function(i, item) {
                    $("<option></option>")
                        .val(item["CityID"])
                        .text(item["CityName"])
                        .appendTo($("#ddlCity"));
                });
                GetDistrict();
            });
        }

        function GetDistrict() {
            $("#ddlDistrict").empty(); //清空市區SELECT控件
            var url = "/ajax/GetDistrictList/" + $("#ddlCity").val();
           
            $.getJSON(url, function(data) {
                $.each(data, function(i, item) {
                    $("<option></option>")
                        .val(item["DistrictID"])
                        .text(item["DistrictName"])
                        .appendTo($("#ddlDistrict"));
                });
            });
        }

    </script>



    posted @ 2011-11-28 14:35 David1228 閱讀(1637) | 評論 (0)編輯 收藏
    http://sebug.net/paper/python/pr01.html#s01

    前言

    目錄表

    本書的讀者
    本書的由來
    本書目前的狀況
    官方網站
    約定條款
    反饋
    值得思考的一些東西

    Python語言可能是第一種即簡單又功能強大的編程語言。它不僅適合于初學者,也適合于專業人員使用,更加重要的是,用Python編程是一種愉 快的事。本身將幫助你學習這個奇妙的語言,并且向你展示如何即快捷又方便地完成任務——真正意義上“為編程問題提供的完美解決方案!”

    本書的讀者

    本書可以作為Python編程語言的一本指南或者教程。它主要是為新手而設計,不過對于有經驗的程序員來說,它同樣有用。

    即便你對計算機的了解只是如何在計算機上保存文本文件,你都可以通過本書學習Python。如果你有編程經驗,你也可以使用本書學習Python。

    如果你以前有編程經驗,那么你將會對Python語言和其他你所鐘愛的編程語言之間的區別感興趣。對此我為你指出了許多這樣的區別。順便提醒你,Python將很快成為你最喜歡的編程語言!

    posted @ 2011-10-13 14:30 David1228 閱讀(337) | 評論 (0)編輯 收藏
     紅帽中出現This system is not registered with RHN這個的原因是因為紅帽中沒有注冊RHN。解決辦法:(假定你已安裝yum,且網絡暢通)更改yum的源,即更換/etc/yum.repos.d/rhel-debuginfo.repo 這個文件。進入/etc/yum.repos.d/目錄,終端中輸入wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo即可在此目錄下得到CentOS- Base.repo文件,這是centos的源文件,只需將其重命名為rhel-debuginfo.repo即可,以前的文件做個備份。
    posted @ 2011-09-22 17:56 David1228 閱讀(2301) | 評論 (0)編輯 收藏

    9月2日,新東方“相信未來——2011中國大學新生學習規劃公益巡講”首場講座在北京圓明園遺址公園南門廣場舉行。新東方教育科技集團董事長兼首席執行官俞敏洪和創新工場董事長兼首席執行官李開復先后登臺演講,來自北京大學、清華大學、北京科技大學、中央民族大學、首都師范大學等首都51所高校的近萬名大學新生聆聽了這場關于學習、成長的精彩講座。以下為俞敏洪演講全文:


    親愛的來自北京各個高校的同學們:


      大家下午好!


      非常感謝大家來到這么一個特殊的地方,也感謝大家在下午頂著非常曬的太陽,來這兒聽我和李開復跟大家聊大學生活。


      請問我們現在坐的地方的背后是什么?圓明園。可以說中國的近代史就是由圓明園的廢墟開始的歷史。圓明園是哪一年被燒掉的?大家都知道1860年英法聯軍。為什么遠離萬里之外的英國和法國跑到我們中國這個首都之地把圓明園給燒掉?最根本的原因是什么?是因為圓明園里面有好東西嗎?是因為圓明園沒人保護嗎?還是因為圓明園中國人民當時沒有能力保護?很明顯的是沒有能力保護。誰都知道,中國近100多年的發展史是一部恥辱的歷史。近30年中國改革開放的歷史,是一部從恥辱中間不斷地站起來的歷史。


      今天的中國在世界上已經有了一定的地位。20年前我申請到美國去的時候,不斷地被拒簽,今天我們想要去美國或者西方其他國家基本上可以拿到簽證,這一點表明了我們變得不斷強大。但是,站在這個地方,我們可以清楚地知道,一個國家如果很貧弱的話就會受到欺負。這是為什么鄧小平總結了一句話,非常簡單的一句話,叫做“發展是硬道理”。今天的中國有了一定的地位,但是依然不夠強大。我們所說的強大,不是說要能夠戰勝所有的國家,不是說要打到英國大英博物館或者打到法國的盧浮宮,去把東西搶回來。我們所說的強大,是從經濟、政治、文化到精神的強大。


      我們在座的每個人一輩子的歷史,它可以是光榮的,也可以是恥辱的;它可以是失敗的,也可以是成功的。你想變得成功,你想變得光榮,不在于外在的任何條件,而在于你自身。不在于說你本身現在是什么地位,而在于一輩子你到底具備什么樣的夢想。我們很多同學在一路奮斗以后,走進了北京的大學。在座的有來自有北大、清華這樣的名牌學校,也有像吉利大學這樣的民辦學校。似乎我們進入大學的門檻和分數是不一樣的,但是同學們請記住,這只是你人生的一個起點。在過去從小學到中學畢業的12年的歷史,我們經歷了艱苦卓絕的奮斗。因為如果我們不努力、不奮斗,就不可能走進大學。但是,走進大學,只是一次生命真正的開始。


      我們大家都知道,只要你保證身體健康就能活很多年。假如我們能活到100歲,那你還有80年的事要做。很多同學說,我現在已經比別的同學差得很遠,我未來到底怎么樣才能改善?我有一句話,人最重要的是志向,是內心的渴望,而不是外在的條件。從外在條件來說,我們人一輩子,從出生的那一天開始就是不平等的,生而不平等,這是一個事實。你出生在農民家里和出生在官宦家里的條件是不一樣的,能得到的資源也是不一樣的。但是,我們人的一輩子的奮斗過程,就是不斷地去使自己有能力獲取更大的資源、實現更大的夢想,并且回過頭來把這種資源貢獻給社會的過程。所以,當有人問我說,俞老師,我這輩子還能追上別人嗎?像你這樣的成就或者像你做的事情,我未來還可以做到嗎?我可以肯定地告訴你:只要我能做到,你就能做到;只要李開復能做到,你就能做到;只要馬云能做到,你就能做到。因為我們這些人的起點并不比你更高,某種意義上說,甚至應該比你更低。人生一輩子不是百米賽跑,如果百米賽跑早跑一秒鐘或者晚跑一秒鐘,你可能就會晚到一秒鐘或者早到一秒鐘。人生走的是無窮無盡的馬拉松,馬拉松不需要去計較你的起點是落后了還是站在第一名,馬拉松計較的是你到底能夠走多遠,到底能夠堅持走多久。如果說你能堅持走出足夠的距離,哪怕你放慢一點兒速度,只要前進的方向是清晰的,未來你就能走出別人所沒有走出來的距離,你就能看到別人沒有看到的風景。我只是希望我們在座的所有同學們,不要像圓明園一樣,最后自己被倒成一片廢墟,而自己的生命回顧起來也是一片廢墟。我們希望的是,現在趁著我們還很年輕,趁著我們還有理想,趁著我們還有激情,就應該讓生命進一步地前行,讓生命進一步地發出光彩和熱。


      同學們,我們現在站在了新的起點上,就是我們的大學生活。我剛才說過,如果我們大學生活要往前走的話,我們不需要太關注過去,不需要關注現在所在的大學是好還是壞,不需要關注家庭出身是農民還是工人,不需要關注長相是好看還是難看,甚至未來不需要關注你到底能夠到國外去讀書還是留在國內讀書,因為所有這一切都是外在的東西。外在的東西盡管在一定階段對我們來說是很重要的,但是從長遠的一輩子來說,對我們來說是不重要的。


      以大學為例子,我們進了北大或者清華這樣的大學固然好,但并不是每一個走進北大的學生就必然成功。我看到了很多北大的學生,進了北大就不學習了;看到很多北大的學生,由于學習壓力非常重,心理很有問題;也看到了一些北大的學生,在大學畢業以后無所事事。當然,我想清華等這樣的學校也有這樣的情況。但是我看到很多二本三本的學生,他們在經過了自己全力以赴的努力以后,研究生就考上了北大、清華或者是進入了世界名牌大學。


      我認識的一個朋友,中專畢業以后,經過了一段時間的工作,他發現中專學歷遠遠不夠。他之所以上中專,不是因為他笨,而是因為他的家庭條件實在太差。在當時那個年代,應該是接近30年以前,上中專一般都是師范學院,而師范學院是不需要交任何費用的,所以他只能選擇中專。工作以后,發現這是遠遠不夠的。后來就開始努力自學,上了大專。考上以后,他覺得大專還是不夠。現在一般來說要學到本科才能考研究生,但那時只要是大專畢業了就可以考研究生。所以,大專畢業之后,他下定決心要考研究生,而且要考就考最好的學校。所以,最后目標鎖定在北大。他辭掉了工作,在北大外面租了一間房子,努力自學了三年,最后終于考上了北京大學政治系的研究生。北大畢業以后,成了公務員,進入了北京非常好的一個中央單位工作。在中央單位工作的時候,覺得自己一杯開水、一張報紙這樣的日子不是自己想要奮斗的目標,所以業余時間就來新東方學托福、學GRE,目標是要到世界名牌大學讀書。在新東方學了差不多兩年,把這兩門考試考過去了,最后通過努力,進入了哈佛大學肯尼迪政治學院。畢業以后,在國外工作了一段時間,剛好遇到中國政府希望到國外招聘一些在國外畢業后想回到中國工作的機會。回來以后,很快進入了中國的廳局級管理干部的行列。由于他的志向,由于他的努力,由于他中西方文化結合的背景,所以很快變成了中國的比較重要的管理干部之一。


      有無數的中專生就是以中專生結束了自己的一輩子。但是我們有可以看到,有一個中專生可以奮斗到哈佛大學的畢業生,這就是一路奮斗的歷程。我們常常說,名牌大學的人好像有一些更加硬性的條件,但我剛才也說過了,并不是每一個名牌大學的人都能成功。


      我跟馬云有很多相似之處。馬云高考考了三年,我也考了三年;馬云考的是英語專業,我也考的是英語專業;三年以后,我考上了北京大學,他考上了杭州師范學院。大家都知道,這是一所大家都沒聽說過的學校。如果你現在曾經聽說過這個學校,一定是因為先聽說了馬云,才聽說了這所學校。我跟馬云到今天為止還有很多相似之處,我們兩個人都可以用英文做報告,我們兩個人到今天為止依然保持著自己的學士學位。也就是說,我們的最高學歷是學士。但是大家可以看到,學校和學位不能阻擋一個人的成長。我曾經認為我比馬云要做得更好一點兒,因為我畢竟是北大的。但是,大家都知道,馬云一個人做出了我10個人可能都做不出的事情。我做了近20年只做出一個新東方,馬云真正的創業(阿里巴巴)是1999年開始的,也就是比我做得還要晚。但是他現在除了阿里巴巴以外,有支付寶、有淘寶網。如果支付寶和淘寶網再上市的話,這兩個公司的市值將是上百億美金左右。


      所以大家可以看到,一個人的成功跟你所上的學校沒有必然的聯系,跟你內心的沖動有關系,跟你內心的渴望有關系。所以我常常說,一個人可以過貧困的生活,一個人可以過孤獨的生活,但是一個人不能過內心沒有火焰的生活,一個人不能過內心沒有渴望和向往的生活。我說的這些渴望和向往,不是指你每天渴望吃一頓飯,不是說你每天渴望喝兩瓶啤酒,不是說渴望每天要交幾個女朋友或者男朋友,盡管你可以有這些渴望,但是所有這些渴望應該放在你更大的渴望之上。這份渴望,就是渴望自己能夠變得偉大,渴望自己能夠變得成功,渴望自己能夠變得有影響力,渴望自己能夠養活自己、養活家庭,渴望自己為這個社會做貢獻。這種渴望是你走向未來的強大動力。


      一個人就像一個植物一樣,如果內心沒有長大的種子,你永遠長不大。這是我在中央電視臺說過的著名的樹和草的比喻。如果你內心只是草的種子,你就是草;如果你內心是樹的種子,你必然會長成樹。在人的心里,樹的種子和草的種子是可以變換的,不像自然界,讓松樹的種子變成楊樹是不太容易的,讓草的種子變成松樹也是不可能的。但是,人是可變的,人的改變往往是一瞬間的事情。只要你內心想要把自己變得崇高、變得偉大,你就能改變。所以,首先我們要求在座的同學都要做到一點,就是要有一個渴望自己成長的種子。


      人的成長有兩種:一種叫做自然成長;另一種叫做心靈的成長。我們在座的所有同學都可以自然地成長。你完全可以預料到你18歲到30歲會是怎么樣,30歲到40歲怎么樣,到50歲怎么樣。現在如果經過電腦的精確計算,你能夠精確地看到90歲長成什么樣。我曾經輸入過我的頭像,發現90歲是一個干癟的、頭發花白、滿臉皺紋的,但充滿智慧的老頭形象。我相信我這個人可能一輩子什么都會丟掉,但是有一點肯定不會丟,就是我對生活的渴望和對自己創造的渴望。在我的生命中,楊振寧教授一直是我學習榜樣。楊振寧教授今年已接近90歲的生命,還在不斷地到處做演講,指導年輕的科學家。人是一種可以不斷地燃燒,可以源源不斷地發現自己的能量,可以不斷地產生燃氣的這樣一種動物。你只要想燒,永遠是燒不完的。 大家有沒有發現一個現象:只有懶惰的人身體才會不好,而勤奮、有理想的人往往身體會不斷地好起來。像年紀大的人中間,那些勤勞的人往往很少得老年癡呆癥,而那些不需要干活的人常常會得老年癡呆癥。為什么?他不再行動,不再動腦子。從這個意義上來說,人像動物一樣,是要干活的。任何一個動物,如果失去了捕食的能力,就會被餓死。所以,你可以看到在非洲草原上被活活餓死的獅子。為什么?因為它失去了捕食能力。


      我們可以預料自己活多少歲,甚至可以預料我們的長相是什么樣的。但是,請在座的同學想一想,你能預料你30歲能獲得什么成就嗎?你能預料你40歲獲得什么成就嗎?你能預料你80歲獲得什么成就嗎?你預料不到。人只有這一點沒法預料,你永遠沒法預料你的潛力。但是,你的潛力在什么地方?在你的心里面。我從來沒有預料到今天我所做的一切事情是我能夠做出來的。今天我能做出一點兒事情來,是因為我對生命有一種內在的渴望和向往。


      我的家在長江邊上,從小坐在長江邊看著太陽從東方升起,從西方落下,看著船來船往,我就產生了一種渴望。這種渴望后來我總結了一句話,叫做穿越地平線走向未來的渴望,就是走向遠方。生命中有榜樣也是非常重要的,在我的生命中有一個家鄉的榜樣,他的家就在我的隔壁,這個人的名字大家都知道,叫徐霞客。我們從小就聽徐霞客的故事,給我帶來的一種感覺是,如果說一個榜樣離你很遠,你可能會把他當作神。比如說,我讓你把丘吉爾、毛澤東、秦始皇、劉邦、曹雪芹、魯迅當作榜樣,你覺得他們離你很遠。但是,如果就住在魯迅的三昧書屋邊上長大的,你就可能覺得魯迅離你很近。所以,我從小就有這樣一個感覺:如果徐霞客在400多年前就能夠走遍中國的山山水水,把自己走成一個偉大的人物,那為什么我不能?所以,榜樣的力量是無窮的。我從小有一個一般農村的孩子不會產生的眼界,就是我希望自己能夠走遍中國的山山水水。


      人最大的痛苦是什么?就是你有了一個更加容易的選擇,往往就會往更加容易的選擇上去走。更加容易的選擇往往導致你降低自己的人生目標和標準。當初如果有農民工的話,我就不會那么辛苦地去考大學,因為考大學肯定比當農民工更加難。但是,當你發現一個更加難的事情通過自己的努力也能達到,更加難的目標就值得你去努力。


      人要有一個向往。我當時的這種向往就是希望自己能夠走出去。這樣的向往,使我最后能夠走進北大。我連續三年高考。第一年高考,英語考了33分,連中專都沒有錄取。;第二年英語考了55分,也是連中專都沒錄取;但是,由于第三年的努力,我很多門課都考到了90多分,其中最突出的一門成績(除了英語)就是地理,地理當時滿分100分,我考了97分,如果沒有徐霞客這么偉大的地理學家的影子,我不會對地理如此感興趣。到今天為止,中國的前幾百個城市在什么地方,只要把城市名稱說出來,我就可以在地圖上幾乎毫無懸念地標注出來。確實,一個夢想可以催生你的一片生命。我已經充分意識到,現在走遍中國是不夠的,必須走遍世界。因為這個世界上有太多的精彩等待你去探索,有太多的地方等待你去尋找。也是因為出于這樣的目標,在新東方在中國上市還是美國上市的時候,我毫不猶豫地選擇了新東方必須到美國去上市,不是說因為我喜歡美國,而是因為我知道,走向了美國紐約證券交易所,新東方就走向了世界,它就會把新東方帶向一個世界的平臺。


      同學們,你的未來的潛力是無限的。你不要想你現在到底有沒有能力。我有一句話,叫做不要用你的現在去判斷你的未來,因為你的未來不可判斷,你要去努力。我常常聽到同學說,俞老師,人是有命運的。他的命就好,沒有辦法。生在有錢人家里,什么資源都有,大學一畢業的時候就給大把的錢創業,而且天資聰明,一創業就成功。你說我們這些人怎么比?確實是,表面上看是沒法比的,短時間也是沒法比的。但是,從長時間來說,一個人擁有的資源并不能決定他一輩子必然成功。我們假想有一些人一輩子就可以躺在這個資源上睡大覺,但我們看到更多的是不擁有資源的人,最后走向了擁有資源的道路。像我剛才說的馬云,一個普通工人家庭的孩子,他的父親是拉三輪車的;就像我,普通農民家庭的孩子,我的父母是不認字的。但是今天,毫不夸張地說,我們擁有了一部分中國的社會資源和企業資源。當然,我們盡可能利用這個資源為更多的人服務。


      我們剛才講到一個人的社會資源問題時常常講到命運,有同學說命運是定的。命運會不會定?有一部分是定的。我剛才說了,你出生在什么樣的家庭,長成什么樣子,這些是定的。除此之外,其他的是可變的。所以,大家要充分地關注可變的命運,而不是關注定下來的命運。什么叫可變的?我們把人的運氣分成兩種運氣:一種叫偶然的,一種叫必然的。一個人如果尋求偶然的運氣,生命常常就會比較悲慘;但一個人尋求必然的運氣,生命常常會顯得比較光輝燦爛。什么叫偶然的運氣?守株待兔這個故事大家都知道了,農民看到一只兔子撞到樹樁上,他很高興地撿起來,他推斷的結果是每天都應該有一個兔子撞到這個樹樁上。所以從此他不干活了,就等著兔子來撞。等了一輩子,樹樁等爛了,頭等白了,但是兔子依然沒來。他把偶然的運氣,當成了必然的運氣。什么是必然的運氣?如果農夫推斷這個地方有動物,就積極把自己變成一個獵人,他可能一輩子不一定只打到兔子,也有可能是打到老虎。大家知道主動出擊和被動生存有天壤之別。一個人也許吃苦的命不能改變,但是命的層次可以改變。我怎么后來會站到這個地方?是因為通過自己一輩子的努力,一次一次的失敗不罷休,一次一次挫折不罷休。


      我常常喜歡講兩個故事,人的心的變化帶來命的變化。有一個人考狀元,路上碰到一個老和尚,問他要干什么,他說考狀元。老和尚看了一下他的面相,說你不要去考了,你一輩子都不會有狀元的命,你還是老老實實回去吧。但已經走到半道了,他不甘心,就繼續往前走。走到一條河邊上,突然發現有一個人落水,他就跳到河里救這個人,衣服濕了,他沒辦法就又跑回到廟里。老和尚這時候見到他說,奇怪了,你出去了兩個小時再回來,你的命變了。你好像臉上已經有了考上狀元的臉色了。因為這個人心生了善念。原來這個人很自私,這次一瞬間生了善心,把人救起來了,所以命就改變了。這好像是一個編出來的故事,但是我很相信,原因是什么?原因是你的心變了,你的世界就會改變,所以你的命運改變了。我覺得努力加勤奮和正確的志向和目標,是我們走向未來的唯一道路。


      大學期間到底應該做一些什么事情?第一個事情就是要認真學習。在大學的認真學習跟中學認真學習是不一樣的,大學是擴展自己的眼光、擴展自己人生的學習。我說的學習就是要重視大學的專業知識,我在北大不學好英語,哪有可能我做今天的新東方,所以專業知識是非常重要的。專業如果不喜歡,要學一個你喜歡的專業。你喜歡的專業是不是真喜歡,要經過反復琢磨。美國大學前兩年不讓你選專業,是讓你用兩年時間廣泛地培養興趣。朋友們記住了,如果你一輩子在做自己不喜歡的專業,這是可悲的事情。所以,一定要尋找自己喜歡的專業。如果專業換不了,就找第二個專業學;如果大學允許你換專業,你要想清楚了再換。把最重要的知識學好,你可以在大學的時候爭取學兩個專業。


      我們在大學做過調研,換過專業的同學應該百分之百地喜歡自己的專業,這應該是一個正常的推論。但是,有些同學換過了專業還是不喜歡自己選擇的專業,表明有些同學換專業是一個魯莽的行為沒有經過認真的思考。除了專業以外,業余時間還要讀大量的書籍,每兩天左右就應該讀一本書。我在大學的時候讀了差不多800本書,我能讀完,你就能讀完。有的同學說,讀過書忘了怎么辦?你要記住,讀過了忘了和沒有讀過是兩個概念。你看周圍的同學讀了書,這些書你沒讀過,你心里馬上產生害怕的感覺。所以讀書不光是為了智慧,讀書不光是為了知識的擴展,讀書還有奠定自信的基礎。如果我沒有在北大建立起讀書的自信,我就沒有自信出來干新東方。所以讀書是奠定自信的基礎。


      在大學要做的第二件事情就是要把中學的活動拓展過來。人生最重要的是占先機,在大學時候能夠參加各種各樣的活動是非常重要的,我發現在大學活躍的同學比不活躍的同學未來的發展是有很大差別的。大家在大學里要多交朋友,請朋友們記住,當你跟更厲害的人打交道的時候你進步更快。我從王強老師那兒學到了讀書,他一進大學就把自己的生活費一分為二,一半買書、一半當生活費,所以他每個月都要買很多書。我跟他學,他買什么書我就買什么書。大家記住了,在大學交朋友要盡可能交好的。


      在大學的另外一件事情就是要照顧所有同學的情緒,盡可能為其他同學服務。我們在大學中發現兩種同學:一種同學只關注自己的成績、自己的利益、自己如何在競爭中取勝,不關注別人的。這種心態養成以后,一般在社會上會被打得落花流水,因為這個社會上不會接納只為自己爭取利益的人。所以,在大學的時候要學會關注別人,把好事盡可能地留給別人,壞事盡可能地留給自己,這樣你得到同學的信任,將來你有事情的時候,就會有人幫助你。我在大學的時候,堅持4年打水、宿舍掃地。我在做新東方的時候找大學同學幫忙,他們都愿意幫我。因為他們覺得我在大學是一個不錯的人,是一個愿意幫助人的人,所以,這樣就形成了一個大學同學的團隊一起干新東方。我今天的交往圈已經非常非常廣泛了,但是我最好的朋友依然是大學的同學。


      在大學,我們要做的另外一個事情就是盡可能地在感情上有所收獲。我說的不僅僅是友情,還有男女之間的感情。在大學如果有機會能夠談一次戀愛,那也是非常好的收獲。我在大學就沒有女孩子跟我談,你們如果有這樣的機會,還是要抓住機會的。當然,不是為了談戀愛而談戀愛。一定要真正的、刻骨銘心地愛上對方,這樣才能談。因為,只有真誠才能真正的感受,才能帶來真正的成長。如果真的彼此相愛,要愛得一心一意。我說的一心一意不是在大學只能談一次戀愛,而是談的時候只能談一個。因為一個真正有歸屬的感情是在一段時間內心無旁鶩地、深深地愛著另外一個人的感覺。如果你真正愛上了,你也要愛得大度。我說的大度,不是讓你把男朋友或者女朋友送給別人,而是在大學里面人才濟濟,今天愛上你,明天有可能愛上了別人。有的時候愛情會出現比較特殊的現象,在大學的時候我們班就發生過這樣的事情,兩個男學生是哥們,其中有一個男生有一個女朋友,大家一起玩兒,結果玩著玩著另外那兩個人玩到一起去了,把這個男生擱到一邊了。大家知道,愛情最幸福的是兩個人同時相愛或者是兩個人同時不愛了。愛情最痛苦的是什么?你還深深地愛著對方,對方已經不愛你了,而你愛對方的心怎么也放不下來。去年,某大學里有兩個人談戀愛,后來這個女生不愛這個男生了,這個男生還深深愛著這個女生。這個男生怎么也過不了這關,最后男生跑到女生宿舍里,把女生從窗戶推下去,然后自己也跳下去了。這是一個悲慘的愛情故事,但是又是一個卑鄙的愛情故事。這個卑鄙在于這個男生的卑鄙,如果你真心愛著對方的話,就必須一路祝福他們,讓他們走好,而不是去傷害他們。所以,如果說當我發現這兩個人談了戀愛的話,那我一定祝福他們,讓他們一路走好吧,直到走到離婚為止。你不能說把自己的生命跟別人的生命同時消滅掉,我們在座的同學,一定會碰到這樣的愛情和痛苦,也一定要用大度的方式去解決這種痛苦。


      如果在大學里面沒人愛你怎么辦?也就是說,大學不一定每個人都要談戀愛,也不一定每個人有機會談戀愛。就算你想談,但沒有任何人跟你談戀愛。我的第一次戀愛也是最后一次戀愛,是我在大學畢業兩年以后25歲的時候,在北大的校園里找到我的女朋友,后來變成了我的老婆、我孩子的媽媽。也就是說,同學們記住了,即使是遲到的愛情,那也是真正的愛情。如果說今天沒有愛情,你就等待。就像今天你沒有成功,你就等待。在等待中去尋找,在等待中去努力,在等待中去相信自己未來總有一天,你能夠走向成功,走向輝煌。今天咱們的題目就叫做“相信未來”。“相信未來”是中國著名詩人食指寫的一首詩。請同學們一定相信,不管今天你的環境如何,不管今天你身處何地,只要你心中真正有生命熱情,只要你相信你的未來總有一天會變得更加美好,只要你相信努力和奮斗的力量,你一定會有美好的未來。

      謝謝大家!


    轉載自 新東方騰訊博客:http://user.qzone.qq.com/622005005/blog/1315044802
    posted @ 2011-09-16 14:15 David1228 閱讀(435) | 評論 (0)編輯 收藏
    轉載自http://chorpin.iteye.com/blog/157992

    http://www.quartz-scheduler.org/documentation

    7.3.2  使用Quartz調度器
    Quartz調度器為調度工作提供了更豐富的支持。和Java定時器一樣,可以使用Quartz來每隔多少毫秒執行一個工作。但Quartz比Java Timer更先進之處在于它允許你調度一個工作在某個特定的時間或日期執行。

    關于Quartz的更多信息,可以訪問Quartz位于http://www.opensymphony.com/quartz的主頁。

    讓我們從定義發送報表郵件的工作開始使用Quartz:

    創建一個工作
    定義Quartz工作的第一步是創建一個類來定義工作。要做到這一點,你需要從Spring的QuartzJobBean中派生子類,如程序清單7.3所示:

     程序清單7.3  定義一個Quartz工作
      public class EmailReportJob extends QuartzJobBean {
        public EmailReportJob() {}
        protected void executeInternal(JobExecutionContext context)
            throws JobExecutionException {
          courseService.sendCourseEnrollmentReport();
        }

        private CourseService courseService;
        public void setCourseService(CourseService courseService) {
          this.courseService = courseService;
        }
      }

    QuartzJobBean是Quartz中與Java的TimerTask等價的類。它實現了org.quartz.Job接口。executeInternal()方法定義了當預定的時刻來臨時應該執行哪些動作。在這里,正如EmailReportTask,你只是簡單地調用了courseService屬性的sendCourseEnrollmentReport()方法。

    在Spring配置文件中按以下方式聲明這個工作:
      <bean id="reportJob"
           class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass">
          <value>com.springinaction.training.
               schedule.EmailReportJob</value>
        </property>
        <property name="jobDataAsMap">
          <map>
            <entry key="courseService">
              <ref bean="courseService"/>
            </entry>
          </map>
        </property>
      </bean>

    值得注意的是,在這里你并沒有直接聲明一個EmailReportJob Bean,而是聲明了一個JobDetailBean。這是使用Quartz時的一個特點。JobDetailBean是Quartz的org.quartz.JobDetail的子類,它要求通過jobClass屬性來設置一個Job對象。

    使用Quartz的JobDetail中的另一個特別之處是EmailReportJob的courseService屬性是間接設置的。JobDetail的jobDataAsMap屬性接受一個java.util.Map,其中包含了需要設置給jobClass的各種屬性。在這里,這個map包含了一個指向courseService Bean的引用,它的鍵值為courseService。當JobDetailBean實例化時,它會將courseService Bean注入到EmailReportJob的courseService屬性中。

    調度工作
    現在工作已經被定義好了,接下來你需要調度這個工作。Quartz的org.quartz.Trigger類描述了何時及以怎樣的頻度運行一個Quartz工作。Spring提供了兩個觸發器,SimpleTriggerBean和CronTriggerBean。你應該使用哪個觸發器?讓我們分別考察一下這兩個觸發器,首先從SimpleTriggerBean開始。

    SimpleTriggerBean與ScheduledTimerTask類似。你可以用它來指定一個工作應該以怎樣的頻度運行,以及(可選地)在第一次運行工作之前應該等待多久。例如,要調度報表工作每24小時運行一次,第一次在1小時之后開始運行,可以按照以下方式進行聲明:

      <bean id="simpleReportTrigger"       class="org.springframework.scheduling.quartz.SimpleTriggerBean">
        <property name="jobDetail">
          <ref bean="reportJob"/>
        </property>
        <property name="startDelay">
          <value>3600000</value>
        </property>
        <property name="repeatInterval">
          <value>86400000</value>
        </property>
      </bean>

    屬性jobDetail裝配了將要被調度的工作,在這個例子中是reportJob Bean。屬性repeatInterval告訴觸發器以怎樣的頻度運行這個工作(以毫秒作為單位)。這里,我們設置它為86400000,因此每隔24小時它會被觸發一次。你也可以選擇設置startDelay屬性來延遲工作的第一次執行。我們設置它為3600000,因此在第一次觸發之前它會等待1小時。

    調度一個cron工作
    盡管你可能認為SimpleTriggerBean適用于大多數應用,但它仍然不能滿足發送注冊報表郵件的需求。正如ScheduledTimerTask,你只能指定工作執行的頻度,而不能準確指定它于何時運行。因此,你無法使用SimpleTriggerBean在每天早晨6:00給課程主任發送注冊報表郵件。

    然而,CronTriggerBean允許你更精確地控制任務的運行時間。如果你對Unix的cron工具很熟悉,則會覺得CronTriggerBean很親切。你不是定義工作的執行頻度,而是指定工作的準確運行時間(和日期)。例如,要在每天早上6:00運行報表工作,可以按照以下方式聲明一個CronTriggerBean:

      <bean id="cronReportTrigger"
           class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
          <ref bean="reportJob"/>
        </property>
        <property name="cronExpression">
          <value>0 0 6 * * ?</value>
        </property>
      </bean>

    和SimpleTriggerBean一樣,jobDetail屬性告訴觸發器調度哪個工作。這里我們又一次裝配了一個reportJob Bean。屬性cronExpression告訴觸發器何時觸發。如果你不熟悉cron,這個屬性可能看上去有點神秘,因此讓我們進一步考察一下這個屬性。

    一個cron表達式有至少6個(也可能是7個)由空格分隔的時間元素。從左至右,這些元素的定義如下:

    1.秒(0–59)

    2.分鐘(0–59)

    3.小時(0–23)

    4.月份中的日期(1–31)

    5.月份(1–12或JAN–DEC)

    6.星期中的日期(1–7或SUN–SAT)

    7.年份(1970–2099)

    每一個元素都可以顯式地規定一個值(如6),一個區間(如9-12),一個列表(如9,11,13)或一個通配符(如*)。“月份中的日期”和“星期中的日期”這兩個元素是互斥的,因此應該通過設置一個問號(?)來表明你不想設置的那個字段。表7.1中顯示了一些cron表達式的例子和它們的意義:

    表7.1                                            一些cron表達式的例子

    表  達  式
    意    義

    0 0 10,14,16 * * ?
    每天上午10點,下午2點和下午4點
    0 0,15,30,45 * 1-10 * ?
    每月前10天每隔15分鐘
    30 0 0 1 1 ? 2012
    在2012年1月1日午夜過30秒時
    0 0 8-5 ? * MON-FRI
    每個工作日的工作時間

    對于cronReportTrigger,我們設置cronExpression為0 0 6 * * ?可以把它讀作“在任何月份任何日期(不管是星期幾)的6時0分0秒執行觸發器。”換句話說,這個觸發器會在每天早晨6:00執行。
    使用CronTriggerBean完全能夠滿足課程主任的期望了。現在剩下要做的只是啟動這個工作了。
    啟動工作
    Spring的SchedulerFactoryBean是Quartz中與TimerFactoryBean等價的類。按照如下方式在Spring配置文件中聲明它:
      <bean class="org.springframework.scheduling.
             quartz.SchedulerFactoryBean">
        <property name="triggers">
          <list>
            <ref bean="cronReportTrigger"/>
          </list>
        </property>
      </bean>

    屬性triggers接受一組觸發器。由于目前只有一個觸發器,因此只需簡單地裝配一個包含cronReportTrigger Bean的一個引用的列表即可。
    現在,你已經實現了調度發送注冊報表郵件的需求。但在這個過程中,你做了一些額外的工作。在開始新的話題之前,首先讓我們看一下如何通過更簡單一些的方式調度報表郵件。

    示例配置:
    <beans>
    <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
    <list>
    <!--ref local="SocketJobTrigger"/>
                    <ref local="RouteJobTrigger"/-->
    </list>
    </property>
    </bean>
    <!---->
    <bean id="SocketJobTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
    <property name="jobDetail">
    <ref bean="SocketJobDetail"/>
    </property>
    <property name="startDelay">    
        <value>10000</value>
      </property>
      <property name="repeatInterval">
        <!-- repeat every 2 minutes -->
        <value>120000</value>
      </property>
    </bean>
    <bean id="SocketJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject">
    <ref local="quartzManager"/>
    </property>
    <property name="targetMethod">
    <value>useQuartz</value>
    </property>
    </bean>

    <bean id="socketManager" class="com.lxh.bean.quartzManager">
    </bean>
    <!---->
    <bean id="RouteJobTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
    <property name="jobDetail">
    <ref bean="RouteJobDetail"/>
    </property>
    <property name="startDelay">    
        <value>30000</value>
      </property>
      <property name="repeatInterval">
        <value>30000</value>
      </property>
    </bean>
    <bean id="RouteJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject">
    <ref local="otherManager"/>
    </property>
    <property name="targetMethod">
    <value>otherQuartz</value>
    </property>
    </bean>

    <bean id="routeManager" class="com.lxh.job.otherManager">
    </bean>
    </beans>
    posted @ 2011-09-14 10:19 David1228 閱讀(718) | 評論 (0)編輯 收藏
    ==========amazon
    亞馬遜的彈性計算云


    亞馬遜是互聯網上最大的在線零售商,但是同時也為獨立開發人員以及開發商提供云計算服務平臺。亞馬遜將他們的云計算平臺稱為彈性計算云(Elastic Compute Cloud,EC2),它是最早提供遠程云計算平臺服務的公司。

    開放的服務

    與 Google提供的云計算服務不同,Google僅為自己在互聯網上的應用提供云計算平臺,獨立開發商或者開發人員無法在這個平臺上工作,因此只能轉而通 過開源的Hadoop軟件支持來開發云計算應用。亞馬遜的彈性計算云服務也和IBM的云計算服務平臺不一樣,亞馬遜不銷售物理的云計算服務平臺,沒有類似 于“藍云”一樣的計算平臺。亞馬遜將自己的彈性計算云建立在公司內部的大規模集群計算的平臺之上,而用戶可以通過彈性計算云的網絡界面去操作在云計算平臺 上運行的各個實例(Instance),而付費方式則由用戶的使用狀況決定,即用戶僅需要為自己所使用的計算平臺實例付費,運行結束后計費也隨之結束。

    彈 性計算云從沿革上來看,并不是亞馬遜公司推出的第一項這種服務,它由名為亞馬遜網絡服務的現有平臺發展而來。早在2006年3月,亞馬遜就發布了簡單存儲 服務(Simple Storage Service,S3),這種存儲服務按照每個月類似租金的形式進行服務付費,同時用戶還需要為相應的網絡流量進行付費。亞馬遜網絡服務平臺使用REST (Representational State Transfer)和簡單對象訪問協議(SOAP)等標準接口,用戶可以通過這些接口訪問到相應的存儲服務。

    2007年7月,亞馬遜公司 推出了簡單隊列服務(Simple Queue Service,SQS),這項服務使托管主機可以存儲計算機之間發送的消息。通過這一項服務,應用程序編寫人員可以在分布式程序之間進行數據傳遞,而無 須考慮消息丟失的問題。通過這種服務方式,即使消息的接收方還沒有模塊啟動也沒有關系。服務內部會緩存相應的消息,而一旦有消息接收組件被啟動運行,則隊 列服務將消息提交給相應的運行模塊進行處理。同樣的,用戶必須為這種消息傳遞服務進行付費使用,計費的規則與存儲計費規則類似,依據消息的個數以及消息傳 遞的大小進行收費。

    在亞馬遜提供上述服務的時候,并沒有從頭開始開發相應的網絡服務組件,而是對公司已有的平臺進行優化和改造,一方面滿足了本身網絡零售購物應用程序的需求,另一方面也供外部開發人員使用。

    在開放了上述的服務接口之后,亞馬遜公司進一步在此基礎上開發了EC2系統,并且開放給外部開發人員使用。
    靈活的工作模式

    亞馬遜的云計算模式沿襲了簡單易用的傳統,并且建立在亞馬遜公司現有的云計算基礎平臺之上。彈性計算云用戶使用客戶端通過 SOAP over HTTPS協議來實現與亞馬遜彈性計算云內部的實例進行交互。使用HTTPS協議的原因是為了保證遠端連接的安全性,避免用戶數據在傳輸的過程中造成泄 露。因此,從使用模式上來說,彈性計算云平臺為用戶或者開發人員提供了一個虛擬的集群環境,使得用戶的應用具有充分的靈活性,同時也減輕了云計算平臺擁有 者(亞馬遜公司)的管理負擔。

    而彈性計算云中的實例是一些真正在運行中的虛擬機服務器,每一個實例代表一個運行中的虛擬機。對于提供給某 一個用戶的虛擬機,該用戶具有完整的訪問權限,包括針對此虛擬機的管理員用戶權限。虛擬服務器的收費也是根據虛擬機的能力進行計算的,因此,實際上用戶租 用的是虛擬的計算能力,簡化了計費方式。在彈性計算云中,提供了三種不同能力的虛擬機實例,具有不同的收費價格。例如,其中默認的也是最小的運行實例是 1.7GB的內存,1個EC2的計算單元(1虛擬的計算核以相關的計算單元),160GB的虛擬機內部存儲容量,是一個32位的計算平臺,收費標準為每個 小時10美分。在當前的藍計算平臺中,還有兩種性能更加強勁的虛擬機實例可供使用,當然價格也更加昂貴一點。

    由于用戶在部署網絡程序的時 候,一般會使用超過一個運行實例,需要很多個實例共同工作。彈性計算云的內部也架設了實例之間的內部網絡,使得用戶的應用程序在不同的實例之間可以通信。 在彈性計算云中的每一個計算實例都具有一個內部的IP地址,用戶程序可以使用內部IP地址進行數據通信,以獲得數據通信的最好性能。每一個實例也具有外部 的地址,用戶可以將分配給自己的彈性IP地址分配給自己的運行實例,使得建立在彈性計算云上的服務系統能夠為外部提供服務。當然,亞馬遜公司也對網絡上的 服務流量計費,計費規則也按照內部傳輸以及外部傳輸進行分開。

    總而言之,亞馬遜通過提供彈性計算云,減少了小規模軟件開發人員對于集群系 統的維護,并且收費方式相對簡單明了,用戶使用多少資源,只需要為這一部分資源付費即可。這種付費方式與傳統的主機托管模式不同。傳統的主機托管模式讓用 戶將主機放入到托管公司,用戶一般需要根據最大或者計劃的容量進行付費,而不是根據使用情況進行付費,而且,可能還需要保證服務的可靠性、可用性等,付出 的費用更多,而很多時候,服務并沒有進行滿額資源使用。而根據亞馬遜的模式,用戶只需要為實際使用情況付費即可。

    在用戶使用模式上,亞馬 遜的彈性計算云要求用戶要創建基于亞馬遜規格的服務器映像(名為亞馬遜機器映像即亞馬遜 Machine Image, AMI)。彈性計算云的目標是服務器映像能夠擁有用戶想要的任何一種操作系統、應用程序、配置、登錄和安全機制,但是當前情況下,它只支持Linux內 核。通過創建自己的AMI,或者使用亞馬遜預先為用戶提供的AMI,用戶在完成這一步驟后將AMI上傳到彈性計算云平臺,然后調用亞馬遜的應用編程接口 (API),對AMI進行使用與管理。AMI實際上就是虛擬機的映像,用戶可以使用它們來完成任何工作,例如運行數據庫服務器,構建快速網絡下載的平臺, 提供外部搜索服務甚至可以出租自己具有特色的AMI而獲得收益。用戶所擁有的多個AMI可以通過通信而彼此合作,就像當前的集群計算服務平臺一樣。

    在 彈性計算云的將來發展過程中,亞馬遜也規劃了如何在云計算平臺之上幫助用戶開發Web 2.0的應用程序。亞馬遜認為除了它所依賴的網絡零售業務之外,云計算也是亞馬遜公司的核心價值所在。可以預見,在將來的發展過程中,亞馬遜必然會在彈性 計算云的平臺上添加更多的網絡服務組件模塊,為用戶構建云計算應用提供方便。


    ========google

    Google的云計算平臺與應用

    Google的云計算技術實際上是針對Google特定的網絡應用程序而定制的。針對內部網絡數據規模超大的特點,Google提出了一整套基于分布式并行集群方式的基礎架構,利用軟件的能力來處理集群中經常發生的節點失效問題。

    從 2003年開始,Google連續幾年在計算機系統研究領域的最頂級會議與雜志上發表論文,揭示其內部的分布式數據處理方法,向外界展示其使用的云計算核 心技術。從其近幾年發表的論文來看,Google使用的云計算基礎架構模式包括四個相互獨立又緊密結合在一起的系統。包括Google建立在集群之上的文 件系統Google File System,針對Google應用程序的特點提出的Map/Reduce編程模式,分布式的鎖機制Chubby以及Google開發的模型簡化的大規模 分布式數據庫BigTable。

    Google File System 文件系統

    為了滿足Google迅速增長的數據處 理需求,Google設計并實現了Google文件系統(GFS,Google File System)。GFS與過去的分布式文件系統擁有許多相同的目標,例如性能、可伸縮性、可靠性以及可用性。然而,它的設計還受到Google應用負載和 技術環境的影響。主要體現在以下四個方面:

    1. 集群中的節點失效是一種常態,而不是一種異常。由于參與運算與處理的節點數目非常龐大,通常會使用上千個節點進行共同計算,因此,每時每刻總會有節點處在失效狀態。需要通過軟件程序模塊,監視系統的動態運行狀況,偵測錯誤,并且將容錯以及自動恢復系統集成在系統中。

    2. Google系統中的文件大小與通常文件系統中的文件大小概念不一樣,文件大小通常以G字節計。另外文件系統中的文件含義與通常文件不同,一個大文件可能包含大量數目的通常意義上的小文件。所以,設計預期和參數,例如I/O操作和塊尺寸都要重新考慮。

    3. Google文件系統中的文件讀寫模式和傳統的文件系統不同。在Google應用(如搜索)中對大部分文件的修改,不是覆蓋原有數據,而是在文件尾追加新 數據。對文件的隨機寫是幾乎不存在的。對于這類巨大文件的訪問模式,客戶端對數據塊緩存失去了意義,追加操作成為性能優化和原子性(把一個事務看做是一個 程序。它要么被完整地執行,要么完全不執行)保證的焦點。

    4. 文件系統的某些具體操作不再透明,而且需要應用程序的協助完成,應用程序和文件系統API的協同設計提高了整個系統的靈活性。例如,放松了對GFS一致性 模型的要求,這樣不用加重應用程序的負擔,就大大簡化了文件系統的設計。還引入了原子性的追加操作,這樣多個客戶端同時進行追加的時候,就不需要額外的同 步操作了。

    總之,GFS是為Google應用程序本身而設計的。據稱,Google已經部署了許多GFS集群。有的集群擁有超過1000個存儲節點,超過300T的硬盤空間,被不同機器上的數百個客戶端連續不斷地頻繁訪問著。

    圖 1給出了Google File System的系統架構,一個GFS集群包含一個主服務器和多個塊服務器,被多個客戶端訪問。文件被分割成固定尺寸的塊。在每個塊創建的時候,服務器分配 給它一個不變的、全球惟一的64位塊句柄對它進行標識。塊服務器把塊作為linux文件保存在本地硬盤上,并根據指定的塊句柄和字節范圍來讀寫塊數據。為 了保證可靠性,每個塊都會復制到多個塊服務器上,缺省保存三個備份。主服務器管理文件系統所有的元數據,包括名字空間、訪問控制信息和文件到塊的映射信 息,以及塊當前所在的位置。GFS客戶端代碼被嵌入到每個程序里,它實現了Google文件系統 API,幫助應用程序與主服務器和塊服務器通信,對數據進行讀寫。客戶端跟主服務器交互進行元數據操作,但是所有的數據操作的通信都是直接和塊服務器進行 的。客戶端提供的訪問接口類似于POSIX接口,但有一定的修改,并不完全兼容POSIX標準。通過服務器端和客戶端的聯合設計,Google File System能夠針對它本身的應用獲得最大的性能以及可用性效果。
    MapReduce分布式編程環境

    為了讓內部非分布式系統方向背景的員工能夠有機會將應用程序建立在大規模的集群基礎之上,Google 還設計并實現了一套大規模數據處理的編程規范Map/Reduce系統。這樣,非分布式專業的程序編寫人員也能夠為大規模的集群編寫應用程序而不用去顧慮 集群的可靠性、可擴展性等問題。應用程序編寫人員只需要將精力放在應用程序本身,而關于集群的處理問題則交由平臺來處理。

    Map/Reduce通過“Map(映射)”和“Reduce(化簡)”這樣兩個簡單的概念來參加運算,用戶只需要提供自己的Map函數以及Reduce函數就可以在集群上進行大規模的分布式數據處理。

    據稱,Google的文本索引方法,即搜索引擎的核心部分,已經通過Map Reduce的方法進行了改寫,獲得了更加清晰的程序架構。在Google內部,每天有上千個Map Reduce的應用程序在運行。

    分布式大規模數據庫管理系統BigTable

    構 建于上述兩項基礎之上的第三個云計算平臺就是Google關于將數據庫系統擴展到分布式平臺上的BigTable系統。很多應用程序對于數據的組織還是非 常有規則的。一般來說,數據庫對于處理格式化的數據還是非常方便的,但是由于關系數據庫很強的一致性要求,很難將其擴展到很大的規模。為了處理 Google內部大量的格式化以及半格式化數據,Google構建了弱一致性要求的大規模數據庫系統BigTable。據稱,現在有很多Google的應 用程序建立在BigTable之上,例如Search History、Maps、Orkut和RSS閱讀器等。

    圖2給出了在BigTable模型中的數據模型。數據模型包括行列以及相應的時間戳,所有的數據都存放在表格中的單元里。BigTable的內容按照行來劃分,將多個行組成一個小表,保存到某一個服務器節點中。這一個小表就被稱為Tablet。

    以上是Google內部云計算基礎平臺的三個主要部分,除了這三個部分之外,Google還建立了分布式程序的調度器,分布式的鎖服務等一系列相關的云計算服務平臺。

    Google的云應用

    除 了上述的云計算基礎設施之外,Google還在其云計算基礎設施之上建立了一系列新型網絡應用程序。由于借鑒了異步網絡數據傳輸的Web 2.0技術,這些應用程序給予用戶全新的界面感受以及更加強大的多用戶交互能力。其中典型的Google云計算應用程序就是Google推出的與 Microsoft Office軟件進行競爭的Docs網絡服務程序。Google Docs是一個基于Web的工具,它有跟Microsoft Office相近的編輯界面,有一套簡單易用的文檔權限管理,而且它還記錄下所有用戶對文檔所做的修改。Google Docs的這些功能令它非常適用于網上共享與協作編輯文檔。Google Docs甚至可以用于監控責任清晰、目標明確的項目進度。當前,Google Docs已經推出了文檔編輯、電子表格、幻燈片演示、日程管理等多個功能的編輯模塊,能夠替代Microsoft Office相應的一部分功能。值得注意的是,通過這種云計算方式形成的應用程序非常適合于多個用戶進行共享以及協同編輯,為一個小組的人員進行共同創作 帶來很大的方便性。

    Google Docs是云計算的一種重要應用,即可以通過瀏覽器的方式訪問遠端大規模的存儲與計算服務。云計算能夠為大規模的新一代網絡應用打下良好的基礎。

    雖 然Google可以說是云計算的最大實踐者,但是,Google的云計算平臺是私有的環境,特別是Google的云計算基礎設施還沒有開放出來。除了開放 有限的應用程序接口,例如GWT(Google Web Toolkit)以及Google Map API等,Google并沒有將云計算的內部基礎設施共享給外部的用戶使用,上述的所有基礎設施都是私有的。

    幸運的是,Google公開 了其內部集群計算環境的一部分技術,使得全球的技術開發人員能夠根據這一部分文檔構建開源的大規模數據處理云計算基礎設施,其中最有名的項目即 Apache旗下的Hadoop項目。而下面的兩個云計算的實現則為外部的開發人員以及中小公司提供了云計算的平臺環境,使得開發者能夠在云計算的基礎設 施之上構建自己的新型網絡應用。其中IBM的藍云計算平臺是可供銷售的計算平臺,用戶可以基于這些軟硬件產品自己構建云計算平臺。亞馬遜的彈性計算云則是 托管式的云計算平臺,用戶可以通過遠端的操作界面直接使用。

    ==================IBM
    IBM藍云計算平臺


    IBM在2007年11月15日推出了藍云計算平臺,為客戶帶來即買即用的云計算平臺。它包括一系列的云計算產品,使得計算不僅僅局限在本地機器或遠程服務器農場(即服務器集群),通過架構一個分布式、可全球訪問的資源結構,使得數據中心在類似于互聯網的環境下運行計算。

    通 過IBM的技術白皮書,我們可以一窺藍云計算平臺的內部構造。“藍云”建立在IBM大規模計算領域的專業技術基礎上,基于由IBM軟件、系統技術和服務支 持的開放標準和開源軟件。簡單地說,“藍云”基于IBM Almaden研究中心(Almaden Research Center)的云基礎架構,包括Xen和PowerVM虛擬化、Linux操作系統映像以及Hadoop文件系統與并行構建。“藍云”由IBM Tivoli軟件支持,通過管理服務器來確保基于需求的最佳性能。這包括通過能夠跨越多服務器實時分配資源的軟件,為客戶帶來一種無縫體驗,加速性能并確 保在最苛刻環境下的穩定性。IBM新近發布的“藍云(Blue Cloud)”計劃,能夠幫助用戶進行云計算環境的搭建。它通過將Tivoli、DB2、WebSphere與硬件產品(目前是x86刀片服務器)集成, 能夠為企業架設一個分布式、可全球訪問的資源結構。根據IBM的計劃,首款支持Power和x86處理器刀片服務器系統的“藍云”產品將于2008年正式 推出,并且計劃隨后推出基于System z“大型主機”的云環境,以及基于高密度機架集群的云環境。

    在IBM的云計算白皮書上,我們可以看到如下的藍云計算平臺配置情況。

    圖 4演示了藍云計算的高層架構。可以看到,藍云計算平臺由一個數據中心: IBM Tivoli部署管理軟件(Tivoli Provisioning Manager)、IBM Tivoli監控軟件(IBM Tivoli Monitoring)、IBM WebSphere應用服務器、IBM DB2數據庫以及一些虛擬化的組件共同組成。圖中的架構主要描述了云計算的后臺架構,并沒有涉及到前臺的用戶界面。

    藍云的硬件平臺并沒有 什么特殊的地方,但是藍云使用的軟件平臺相較于以前的分布式平臺具有不同的地方,主要體現在對與虛擬機的使用以及對于大規模數據處理軟件Apache Hadoop的部署。Hadoop是網絡開發人員根據Google公司公開的資料開發出來的類似于Google File System的Hadoop File System以及相應的Map/Reduce編程規范。現在也正在進一步開發類似于Google的Chubby系統以及相應的分布式數據庫管理系統 BigTable。由于Hadoop是開源的,因此可以被用戶單位直接修改,以適合應用的特殊需求。IBM的藍云產品則直接將Hadoop軟件集成到自己 本身的云計算平臺之上。

    “藍云”中的

    虛擬化

    從藍云的結構上我們還可以看出,在每一個節點上運行的軟件棧 與傳統的軟件棧一個很大的不同在于藍云內部使用了虛擬化技術。虛擬化的方式在云計算中可以在兩個級別上實現。一個級別是在硬件級別上實現虛擬化。硬件級別 的虛擬化可以使用IBM p系列的服務器,獲得硬件的邏輯分區LPAR。邏輯分區的CPU資源能夠通過IBM Enterprise Workload Manager來管理。通過這樣的方式加上在實際使用過程中的資源分配策略,能夠使得相應的資源合理地分配到各個邏輯分區。P系列系統的邏輯分區最小粒度 是1/10顆中央處理器(CPU)。

    虛擬化的另外一個級別可以通過軟件來獲得,在藍云計算平臺中使用了Xen虛擬化軟件。Xen也是一個開源的虛擬化軟件,能夠在現有的Linux基礎之上運行另外一個操作系統,并通過虛擬機的方式靈活地進行軟件部署和操作。

    通 過虛擬機的方式進行云計算資源的管理具有特殊的好處。由于虛擬機是一類特殊的軟件,能夠完全模擬硬件的執行,因此能夠在上面運行操作系統,進而能夠保留一 整套運行環境語義。這樣,可以將整個執行環境通過打包的方式傳輸到其他物理節點上,這樣就能夠使得執行環境與物理環境隔離,方便整個應用程序模塊的部署。 總體上來說,通過將虛擬化的技術應用到云計算的平臺,可以獲得一些良好的特性。

    1. 云計算的管理平臺能夠動態地將計算平臺定位到所需要的物理平臺上,而無需停止運行在虛擬機平臺上的應用程序,這比采用虛擬化技術之前的進程遷移方法更加靈活。

    2. 能夠更加有效率地使用主機資源,將多個負載不是很重的虛擬機計算節點合并到同一個物理節點上,從而能夠關閉空閑的物理節點,達到節約電能的目的。

    3. 通過虛擬機在不同物理節點上的動態遷移,能夠獲得與應用無關的負載平衡性能。由于虛擬機包含了整個虛擬化的操作系統以及應用程序環境,因此在進行遷移的時候帶著整個運行環境,達到了與應用無關的目的。

    4. 在部署上也更加靈活,即可以將虛擬機直接部署到物理計算平臺當中。

    總而言之,通過虛擬化的方式,云計算平臺能夠達到極其靈活的特性,而如果不使用虛擬化的方式則會有很多的局限。
    “藍云”中的

    存儲結構

    藍云計算平臺中的存儲體系結構對于云計算來說也是非常重要的,無論是操作系統,服務程序還是用戶應 用程序的數據都保存在存儲體系中。云計算并不排斥任何一種有用的存儲體系結構,而是需要跟應用程序的需求結合起來獲得最好的性能提升。總體上來說,云計算 的存儲體系結構包含類似于Google File System的集群文件系統以及基于塊設備方式的存儲區域網絡SAN兩種方式。

    在設計 云計算平臺的存儲體系結構的時候,不僅僅是需要考慮存儲的容量。實際上隨著硬盤容量的不斷擴充以及硬盤價格的不斷下降,使用當前的磁盤技術,可以很容易通 過使用多個磁盤的方式獲得很大的磁盤容量。相較于磁盤的容量,在云計算平臺的存儲中,磁盤數據的讀寫速度是一個更重要的問題。單個磁盤的速度很有可能限制 應用程序對于數據的訪問,因此在實際使用的過程中,需要將數據分布到多個磁盤之上,并且通過對于多個磁盤的同時讀寫以達到提高速度的目的。在云計算平臺 中,數據如何放置是一個非常重要的問題,在實際使用的過程中,需要將數據分配到多個節點的多個磁盤當中。而能夠達到這一目的的存儲技術趨勢當前有兩種方 式,一種是使用類似于Google File System的集群文件系統,另外一種是基于塊設備的存儲區域網絡SAN系統。

    Google 文件系統在前面已經做過一定的描述。在IBM的藍云計算平臺中使用的是它的開源實現Hadoop HDFS (Hadoop Distributed File System)。這種使用方式將磁盤附著于節點的內部,并且為外部提供一個共享的分布式文件系統空間,并且在文件系統級別做冗余以提高可靠性。在合適的分 布式數據處理模式下,這種方式能夠提高總體的數據處理效率。Google文件系統的這種架構與SAN系統有很大的不同。

    SAN系統也是云計算平臺的另外一種存儲體系結構選擇,在藍云平臺上也有一定的體現,IBM也提供SAN的平臺能夠接入到藍云計算平臺中。圖5就是一個SAN系統的結構示意圖。

    從 圖5中可以看到,SAN系統是在存儲端構建存儲的網絡,將多個存儲設備構成一個存儲區域網絡。前端的主機可以通過網絡的方式訪問后端的存儲設備。而且,由 于提供了塊設備的訪問方式,與前端操作系統無關。在SAN連接方式上,可以有多種選擇。一種選擇是使用光纖網絡,能夠操作快速的光纖磁盤,適合于對性能與 可靠性要求比較高的場所。另外一種選擇是使用以太網,采取iSCSI協議,能夠運行在普通的局域網環境下,從而降低了成本。由于存儲區域網絡中的磁盤設備 并沒有與某一臺主機綁定在一起,而是采用了非常靈活的結構,因此對于主機來說可以訪問多個磁盤設備,從而能夠獲得性能的提升。在存儲區域網絡中,使用虛擬 化的引擎來進行邏輯設備到物理設備的映射,管理前端主機到后端數據的讀寫。因此虛擬化引擎是存儲區域網絡中非常重要的管理模塊。

    SAN系 統與分布式文件系統例如Google File System并不是相互對立的系統,而是在構建集群系統的時候可供選擇的兩種方案。其中,在選擇SAN系統的時候,為了應用程序的讀寫,還需要為應用程序 提供上層的語義接口,此時就需要在SAN之上構建文件系統。而Google File System正好是一個分布式的文件系統,因此能夠建立在SAN系統之上。總體來說,SAN與分布式文件系統都可以提供類似的功能,例如對于出錯的處理 等。至于如何使用還是需要由建立在云計算平臺之上的應用程序來決定。

    與Google不同的是,IBM并沒有基于云計算提供外部可訪問的網 絡應用程序。這主要是由于IBM并不是一個網絡公司,而是一個IT的服務公司。當然,IBM內部以及IBM未來為客戶提供的軟件服務會基于云計算的架構。 (注: 本文受國家973計劃資助,資助號: 2007CB310900以及國家自然科學基金資助,資助號90718040)


    轉載自 http://topic.csdn.net/u/20080526/11/D9D28C55-9BE0-46F1-97DD-B6E2F0CDE31D.html
    posted @ 2011-09-09 11:06 David1228 閱讀(1783) | 評論 (0)編輯 收藏
    Suse Linux 常用命令舉例講解
    1.修改 vftpd 配置文件
    vi /etc/vsftpd.conf #listen=YES
    vi /etc/xinetd.d/vsftpd   將“disable=yes” 改為 “disable=no”使 xinetd 服務啟動后接收到 ftp 連接請求時,能夠自動啟動 vsftpd 服務進程
     

    2. mkdir -p /srv/ftp/linux-10 創建文件夾 -p 如果文件夾不存在自動創建

    3. chown -R ftp:ftp /srv/ftp/linux-10 指定 linux-10 目錄及其子目錄的擁有者為 ftp 用戶和 ftp 組

    4. chmod -R 755 /srv/ftp/linux-10 指定 linux-10 目錄及其子目錄的訪問權限

    5. mount /dev/hdc /srv/ftp/linux-10/disk1 將設備中的內容掛載到 disk1 中
       umount /srv/ftp/linux-10/disk1 卸載掉 disk1 中掛載的文件

    6. /etc/init.d/xinetd start 啟動 FTP 服務

    7. df 命令 功能:檢查文件系統的磁盤空間占用情況。可以利用該命令來獲取硬盤被占用了多少空間,目前還剩下多少空間等 信息。
    語法:df [選項]
    說明:df 命令可顯示所有文件系統對 i 節點和磁盤塊的使用情況。
    該命令各個選項的含義如下:
    -a 顯示所有文件系統的磁盤使用情況,包括 0 塊(block)的文件系統,如/proc 文件系統。
    -k 以 k 字節為單位顯示。
    -i 顯示 i 節點信息,而不是磁盤塊。
    -t 顯示各指定類型的文件系統的磁盤空間使用情況。
    -x 列出不是某一指定類型文件系統的磁盤空間使用情況(與 t 選項相反)。
    -T 顯示文件系統類型。

    8. free 命令
    free命令的功能是查看當前系統內存的使用情況,它顯示系統中剩余及已用的物理內存和交換內存,以及共享內存 和被核心使用的緩沖區。

    該命令的一般格式為: free [-b | -k | -m] 命令中各選項的含義如下:
    -b 以字節為單位顯示。
    -k 以 K 字節為單位顯示。
    -m 以兆字節為單位顯示。

    9. sync 命令 sync 命令是強制把內存中的數據寫回硬盤,以免數據的丟失

    10. shutdown 命令

    shutdown 命令可以安全地關閉或重啟 Linux 系統, 它在系統關閉之前給系統上的所有登錄用戶提示一條警告信息。 該命令還允許用戶指定一個時間參數,可以是一個精確的時間,也可以是從現在開始的一個時間段。精確時間的格式 是 hh:mm,表示小時和分鐘;時間段由“+”和分鐘數表示。系統執行該命令后,會自動進行數據同步的工作。

    該命令的一般格式為: shutdown [選項] [時間] [警告信息] 命令中各選項的含義為:
    - k 并不真正關機,而只是發出警告信息給所有用戶。
    - r 關機后立即重新啟動。
    - h 關機后不重新啟動。
    - f 快速關機,重啟動時跳過 fsck。
    - n 快速關機,不經過 init 程序。
    - c 取消一個已經運行的 shutdown。 需要特別說明的是,該命令只能由超級用戶使用。

    11. date 命令
    date 命令的功能是顯示和設置系統日期和時間。

    12. cal 命令
    cal 命令的功能是顯示某年某月的日歷。
    該命令的一般格式為: cal [選項] [月 [年]] 命令中各選項的含義為:
    - j 顯示出給定月中的每一天是一年中的第幾天(從 1 月 1 日算起)。
    - y 顯示出整年的日歷。

    13. echo 命令
    echo 命令的功能是在顯示器上顯示一段文字,一般起到一個提示的作用。
     該命令的一般格式為: echo [ -n ] 字符串
     
     其中選項 n 表示輸出文字后不換行;字符串可以加引號,也可以不加引號。用 echo 命令輸出加引號的字符串時, 將字符串原樣輸出;用 echo 命令輸出不加引號的字符串時,將字符串中的各個單詞作為字符串輸出,各字符串之間 用一個空格分割。
     
     14. 從 ftp 安裝 linux 系統
     
     install=ftp://ip(服務器 ip 地址)/linux-10/disk1 hostip=ip(新系統 ip)/24 gateway=192.168.0.1(網關)
     
     15. chkconfig --level 235 ntp on 使用系統啟動時,自動啟動 NTP 服務
     
     16. /etc/init.d/ntp restart 啟動 NTP 服務
     
     17. route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 配置 Linux 多播路由 添加該路由項
     
     18. netstat -nr 查看路由表
     
     19. netstat -an|less 查看服務端口的狀態
     
     20. /etc/init.d/novell-tomcat4 restart 重啟 Tomcat(在 iManage 中安裝插件后)
     
     21. chmod 777 文件名 修改文件權限
     
     22. ndsconfig rm 刪除 ED 實例
     
     23. 精確同步時間
     先將 ntp 服務停掉 rcxntpd stop 然后執行 ntpdate 命令 (多次執行縮短時間差) 最后啟動 rcxntpd start
     
     24. Linux 更改 MAC 地址:
     1.> 臨時更改:
     # ifdown eth0
     # ifconfig eth0 hw ether 0029340830249(MAC 地址)
     # ifup eth0
     
     2.> 永久生效:(對于 suse 不起作用)
     # vi /etc/rc.d/rc.local
     ifdown eth0
     ifconfig eth0 hw ether 002934083024(MAC 地址)
     ifup eth0
     # service network restart(suse 9:rcnetwork restart)
     
     3.> 添加新網卡:
     a. VM --> 添加網卡
     b. 啟動時按 '<-' , 確定相關默認配置
     c. 在/etc/sysconfig/network-s/創建新網卡文件
     d. 配置新網卡文件
     
     25. Linux 更改 MAC 地址:
     
     1.1 redhat:
     a. $ cd /etc/sysconfig/network-s
     b. Edit file "ifcfg-eth0", change to your real MAC address
     (Use "ifconfig -a" to display real MAC address.)
     c. $ /etc/init.d/network start (to restart network.)
     
     1.2 SuSE:
     a. $ cd /etc/sysconfig/network
     b. $ mv ifcfg-eth-id-00:0c:29:ba:b2:ad ifcfg-eth0
     c. $ vi /ifcfg-eth0
     d. $ 添加 LLADDR='real MAC address'
     e. $ 到 YAST 里面配置靜態 IP
     (Use "ifconfig -a" to display real MAC address.)
     f. $ reboot(重啟系統)
     
     2.修改 redhat locale:
     cd /etc/sysconfig/
     
     編輯 i18n 文件,指定自己所需的 locale
     
     3.修改 SuSE hostname:編輯/etc/HOSTNAME
     
     26. 增加反向代理名稱 192.168.10.in-addr-arpa
     
     27. suse 配置 ftp 服務
     a. vi /etc/vsftpd.conf
     b. 將 listen=yes 注釋掉
     c. vi /etc/xinetd.d/vsftpd
     d. 將 disable=yes 改為 disable=no
     e. /etc/init.d/xinetd start 啟動 FTP 服務
     (suse9 只需執行 c,d,e suse10 都需要執行)
     
     28. 查找文件 find 路徑 -name(-size,-type) file
     
     29. 查找字符 grep 參數(-l 顯示匹配行號,-I 忽略大小寫,-r 遞歸查找) 'str' fielist
     
     30. 比較文件 diff 參數(-w 忽略空格 ,-I 忽略大小寫 ) file file
     
     31.kill
     
     1.作用
     kill 命令用來中止一個進程。
     
     2.格式
     kill [ -s signal | -p ] [ -a ] pid ...
     kill -l [ signal ]
     
     3.參數
     -s:指定發送的信號。
     -p:模擬發送信號。
     -l:指定信號的名稱列表。
     pid:要中止進程的 ID 號。
     Signal:表示信號。
     
     4.說明
     進程是 Linux 系統中一個非常重要的概念。Linux 是一個多任務的操作系統,系統上經常同時運行著多個進程。我們不 關心這些進程究竟是如何分配的,或者是內核如何管理分配時間片的,所關心的是如何去控制這些進程,讓它們能夠 很好地為用戶服務。
     
     Linux 操作系統包括三種不同類型的進程,每種進程都有自己的特點和屬性。交互進程是由一個 Shell 啟動的進程。交 互進程既可以在前臺運行,也可以在后臺運行。批處理進程和終端沒有聯系,是一個進程序列。監控進程(也稱系統 守護進程)時 Linux 系統啟動時啟動的進程,并在后臺運行。例如,httpd 是著名的 Apache 服務器的監控進程。
     
     kill 命令的工作原理是,向 Linux 系統的內核發送一個系統操作信號和某個程序的進程標識號,然后系統內核就可以對 進程標識號指定的進程進行操作。比如在 top 命令中,我們看到系統運行許多進程,有時就需要使用 kill 中止某些進 程來提高系統資源。 在講解安裝和登陸命令時, 曾提到系統多個虛擬控制臺的作用是當一個程序出錯造成系統死鎖時, 可以切換到其它虛擬控制臺工作關閉這個程序。此時使用的命令就是 kill,因為 kill 是大多數 Shell 內部命令可以直接 調用的。
     
     5.應用實例
     (1)強行中止(經常使用殺掉)一個進程標識號為 324 的進程:
     #kill -9 324
     
     (2)解除 Linux 系統的死鎖
     在 Linux 中有時會發生這樣一種情況:一個程序崩潰,并且處于死鎖的狀態。此時一般不用重新啟動計算機,只需要 中止(或者說是關閉)這個有問題的程序即可。 kill 處于 X-Window 界面時, 當 主要的程序(除了崩潰的程序之外)一般都 已經正常啟動了。此時打開一個終端,在那里中止有問題的程序。比如,如果 Mozilla 瀏覽器程序出現了鎖死的情況, 可以使用 kill 命令來中止所有包含有 Mozolla 瀏覽器的程序。首先用 top 命令查處該程序的 PID,然后使用 kill 命令停 止這個程序:
     #kill -SIGKILL XXX
     其中,XXX 是包含有 Mozolla 瀏覽器的程序的進程標識號。
     
     (3)使用命令回收內存 我們知道內存對于系統是非常重要的,回收內存可以提高系統資源。kill 命令可以及時地中止一些“越軌”的程序或很長 時間沒有相應的程序。例如,使用 top 命令發現一個無用 (Zombie) 的進程,此時可以使用下面命令:
     #kill -9 XXX
     其中,XXX 是無用的進程標識號。
     
     然后使用下面命令:
     #free
     此時會發現可用內存容量增加了。
     
     (4)killall 命令
     Linux 下還提供了一個 killall 命令,可以直接使用進程的名字而不是進程標識號,例如:
     # killall -HUP inetd
     
     32.rm 刪除命令
     rm -r 刪除目錄,不管目錄中有沒有文件
     rm -rf 強制刪除,沒有提示
     
     33.ln 命令
     ln -s 源文件(絕對路徑) 目標文件 (軟連接)
     
     34.查看本機開放的端口
     1、netstat 查看端口和連接
     netstat 列出目前已經連接的服務名
     netstat -a 列出目前已經連接的和正在監聽的服務名
     netstat -an 列出目前已經連接的和正在監聽的端口號(與上面的命令功能一樣, 只是不解釋端口號對應的服務名)  
     netstat -ap   在上面命令的基礎上列出連接的 PID(進程號),用這個 PID,可以使用 KILL 來殺死連接
     例如:某個連接的 PID=111,想踢出去就使用 KILL -9 111。ok!
     netstat -rn 輸出路由表
     
     2、nmap
     nmap 127.0.0.1查看本機開放的端口,會掃描所有端口
     nmap   -p 1024  65535 127.0.0.1 掃描指定端口范圍
     nmap -PT 192.168.1.1-111 掃描一組范圍的電腦
     
     35. 交互方式管理 identity manager 對象
     dxcmd -host 192.168.37.133 -port 524
     
     36. ps -A 產看進程
     
     37. ssh -X (ip address) 遠程連接另一系統
     
     38. pkill firefox-bin(進程名) 以進程名殺進程
     
     39. . /opt/novell/eDirectory/bin/ndspath 設置 ed 的環境變量

    ======================================================================
    1.cd /home 查看根目錄

    2.cd oracle 查看某個文件夾

    3.ls 查看目錄下的文件

    4.cp jdk(.按tab)顯示-6u18-linux-i586.bin ../ 復制到上一層文件夾

    5.sudo cp jdk(.按tab)顯示-6u18-linux-i586.bin ../  以root身份復制到上一層文件夾

    6./sbin/ifconfig 查看IP

    7.netstat -anp | grep oracle
      netstat anp | grep oracle
      netstat -anp | grep 1521
      netstat anp | grep 1521

    8.cat 查看文件
       vi   編輯文件

    9.startx 啟動桌面

    10.who 查看當前用戶

    11.vi /etc/inittab 修改啟動方式

    12.ls -a 查看隱藏文件

    13.reboot 重啟系統


    --------------------------------------------------------------------------------------------------------------------------------
    1.tar用來解壓文件,都是自己的話來描述,用法實例:

    #tar -zxvf SOFTNAME.tar.gz

    中間的-zxvf你可以不要管它,基本上我就是這樣用的都不怎么知道它上面意思呵呵,后面是要解壓的文件名;

    2.cd進入文件夾,用法實例:

    #cd /usr

    進入usr文件夾中;

    3.top顯示現在運行的程序,就像windows的任務管理器吧,不知道可不可以這樣理解;用法實例:

    #top

    顯示出所有正在運行的程序;

    4.chown(change owner)變更文件或目錄的擁有者或所屬群組,用法實例:

    # chown -R root .

    -R或--recursive  遞歸處理,將指定目錄下的所有文件及子目錄一并處理;

    5.chmod(change mode)變更文件或目錄的權限,用法實例:

    #chmod a+x 文件名

    a+x是參數,a是all的意思就是所有用戶;x是執行或切換權限,把這個文件設置為可執行的并且是所有用戶都可以;

    6.cp(copy)復制文件或目錄,用法實例

    #cp 源文件 目的文件

    不用說了就是拷貝的;

    7.ls(list)列出目錄內容,用法實例:

    #ls -l

    -l是參數,是說使用詳細格式列表;

    8.reboot重新開機,用法實例:

    #reboot

    執行reboot指令可讓系統停止運作,并重新開機;

    9.useradd建立用戶帳號,用法實例:

    # useradd mysql

    建立一個mysql用戶賬號;

    10.su(super user)變更用戶身份,用法實例:

    #su 用戶名

    不帶參數的話默認為切換到root用戶下,然后一般會讓你輸入密碼;

    11.exit退出目前的shell,用法實例:

    #exit

    退出shell;

    12.chgrp(change group)變更文件或目錄的所屬群組,用法實例:

    #chgrp -R mysql .

    讓mysql用戶和root擁有一樣的權限;

    13.ifconfig顯示網絡狀態,用法實例:

    #ifconfig

    ifconfig可設置網絡設備的狀態,或是顯示目前的設置

    14.export顯示或設置環境變量,用法實例:

    #export JAVA_HOME=/usr/java/jdk1.6.0_17

    設置jdk環境變量時,的java_home;

    =================================================================================
    1.修改vftpd配置文件
      vi /etc/vsftpd .conf                       #listen=YES
      vi /etc/xinetd.d/vsftpd                   將“disable=yes” 改為 “disable=no”使xinetd服

    務啟動后接收到ftp連接請求時,能夠自動啟動vsftpd服務進程

    2. mkdir -p   /srv/ftp/linux-10             創建文件夾           -p  如果文件夾不存在自動創

    建     

    3. chown -R ftp:ftp /srv/ftp/linux-10       指定linux-10目錄及其子目錄的擁有者為ftp用戶和ftp

    組        

    4. chmod -R 755 /srv/ftp/linux-10           指定linux-10目錄及其子目錄的訪問權限

    5. mount /dev/hdc /srv/ftp/linux-10/disk1   將設備中的內容掛載到disk1中

       umount /srv/ftp/linux-10/disk1           卸載掉disk1中掛載的文件

    6. /etc/init.d/xinetd start                 啟動FTP服務

    7. df命令

       功能:檢查文件系統的磁盤空間占用情況。可以利用該命令來獲取硬盤被占用了多少空間,目前還剩

    下多少空間等信息。

       語法:df [選項]

       說明:df命令可顯示所有文件系統對i節點和磁盤塊的使用情況。

       該命令各個選項的含義如下:

       -a 顯示所有文件系統的磁盤使用情況,包括0塊(block)的文件系統,如/proc文件系統。

       -k 以k字節為單位顯示。

       -i 顯示i節點信息,而不是磁盤塊。

       -t 顯示各指定類型的文件系統的磁盤空間使用情況。

       -x 列出不是某一指定類型文件系統的磁盤空間使用情況(與t選項相反)。

       -T 顯示文件系統類型。

    8. free命令

       free命令的功能是查看當前系統內存的使用情況,它顯示系統中剩余及已用的物理內存和交換內存,

    以及共享內存和被核心使用的緩沖區。

       該命令的一般格式為: free [-b | -k | -m] 命令中各選項的含義如下:

       -b 以字節為單位顯示。

       -k 以K字節為單位顯示。

       -m 以兆字節為單位顯示。

    9. sync命令
       sync命令是強制把內存中的數據寫回硬盤,以免數據的丟失

    10. shutdown命令

       shutdown 命令可以安全地關閉或重啟Linux系統,它在系統關閉之前給系統上的所有登錄用戶提示一

    條警告信息。該命令還允許用戶指定一個時間參數,可以是一個精確的時間,也可以是從現在開始的一個

    時間段。精確時間的格式是hh:mm,表示小時和分鐘;時間段由“+”和分鐘數表示。系統執行該命令后,

    會自動進行數據同步的工作。

       該命令的一般格式為: shutdown [選項] [時間] [警告信息] 命令中各選項的含義為:

       - k 并不真正關機,而只是發出警告信息給所有用戶。

       - r 關機后立即重新啟動。

       - h 關機后不重新啟動。

       - f 快速關機,重啟動時跳過fsck。

       - n 快速關機,不經過init程序。

       - c 取消一個已經運行的shutdown。

       需要特別說明的是,該命令只能由超級用戶使用。

    11. date命令

       date命令的功能是顯示和設置系統日期和時間。

    12. cal命令

       cal命令的功能是顯示某年某月的日歷。

       該命令的一般格式為: cal [選項] [月 [年]] 命令中各選項的含義為:

       - j 顯示出給定月中的每一天是一年中的第幾天(從1月1日算起)。

       - y 顯示出整年的日歷。

    13. echo命令

       echo命令的功能是在顯示器上顯示一段文字,一般起到一個提示的作用。

       該命令的一般格式為: echo [ -n ] 字符串

       其中選項n表示輸出文字后不換行;字符串可以加引號,也可以不加引號。用echo命令輸出加引號的字

    符串時,將字符串原樣輸出;用echo命令輸出不加引號的字符串時,將字符串中的各個單詞作為字符串輸

    出,各字符串之間用一個空格分割。


    14. 從ftp安裝linux系統
       install=ftp://ip(服務器ip地址)/linux-10/disk1 hostip=ip(新系統ip)/24 gateway=192.168.0.1(

    網關)

    15. chkconfig --level 235 ntp on           使用系統啟動時,自動啟動NTP服務

    16. /etc/init.d/ntp restart               啟動NTP服務

    17. route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0              配置Linux多播路由  添加

    該路由項

    18. netstat -nr                           查看路由表

    19. netstat -an|less                      查看服務端口的狀態

    20. /etc/init.d/novell-tomcat4 restart    重啟Tomcat(在iManage中安裝插件后)

    21. chmod 777 文件名                      修改文件權限

    22. ndsconfig rm                          刪除ED實例

    23. 精確同步時間
        先將ntp服務停掉 rcxntpd stop 然后執行 ntpdate 命令   (多次執行縮短時間差)  最后啟動

    rcxntpd start

    24. Linux 更改MAC地址:
        1.> 臨時更改:
         # ifdown eth0
         # ifconfig eth0 hw ether 0029340830249(MAC地址)
         # ifup eth0

        2.> 永久生效:(對于suse不起作用)
         # vi /etc/rc.d/rc.local
           ifdown eth0
           ifconfig eth0 hw ether 002934083024(MAC地址)
           ifup eth0
         # service network restart(suse 9:rcnetwork restart)

        3.> 添加新網卡:
          a. VM --> 添加網卡
          b. 啟動時按 '<-' , 確定相關默認配置
          c. 在/etc/sysconfig/network-s/創建新網卡文件
          d. 配置新網卡文件

    25. Linux 更改MAC地址:

       1.1 redhat:
       a. $ cd /etc/sysconfig/network-s
       b. Edit file "ifcfg-eth0", change to your real MAC address
       (Use "ifconfig -a" to display real MAC address.)
       c. $ /etc/init.d/network start (to restart network.)

       1.2 SuSE:
       a. $ cd /etc/sysconfig/network
       b. $ mv ifcfg-eth-id-00:0c:29:ba:b2:ad ifcfg-eth0
       c. $ vi /ifcfg-eth0
       d. $ 添加    LLADDR='real MAC address'
       e. $ 到YAST里面配置靜態IP
       (Use "ifconfig -a" to display real MAC address.)
       f. $ reboot(重啟系統)

       2.修改redhat locale:

       cd /etc/sysconfig/

       編輯i18n文件,指定自己所需的locale

       3.修改SuSE hostname:編輯/etc/HOSTNAME

    26. 增加反向代理名稱    192.168.10.in-addr-arpa

    27. suse 配置ftp服務
       a.  vi /etc/vsftpd.conf
       b.  將listen=yes  注釋掉
       c.  vi /etc/xinetd.d/vsftpd
       d.  將 disable=yes  改為 disable=no
       e.  /etc/init.d/xinetd start  啟動FTP服務
       (suse9只需執行c,d,e suse10都需要執行)

    28. 查找文件  find 路徑 -name(-size,-type) file

    29. 查找字符  grep 參數(-l 顯示匹配行號,-I 忽略大小寫,-r 遞歸查找) 'str'  fielist

    30. 比較文件  diff 參數(-w忽略空格 ,-I忽略大小寫 )  file file

    31.kill

    1.作用
    kill命令用來中止一個進程。

    2.格式
    kill [ -s signal | -p ] [ -a ] pid ...
    kill -l [ signal ]

    3.參數
    -s:指定發送的信號。
    -p:模擬發送信號。
    -l:指定信號的名稱列表。
    pid:要中止進程的ID號。
    Signal:表示信號。

    4.說明
    進程是Linux系統中一個非常重要的概念。Linux是一個多任務的操作系統,系統上經常同時運行著多個進

    程。我們不關心這些進程究竟是如何分配的,或者是內核如何管理分配時間片的,所關心的是如何去控制

    這些進程,讓它們能夠很好地為用戶服務。

    Linux 操作系統包括三種不同類型的進程,每種進程都有自己的特點和屬性。交互進程是由一個Shell啟

    動的進程。交互進程既可以在前臺運行,也可以在后臺運行。批處理進程和終端沒有聯系,是一個進程序

    列。監控進程(也稱系統守護進程)時Linux系統啟動時啟動的進程,并在后臺運行。例如,httpd是著名

    的 Apache服務器的監控進程。

    kill命令的工作原理是,向Linux系統的內核發送一個系統操作信號和某個程序的進程標識號,然后系統

    內核就可以對進程標識號指定的進程進行操作。比如在top命令中,我們看到系統運行許多進程,有時就

    需要使用kill中止某些進程來提高系統資源。在講解安裝和登陸命令時,曾提到系統多個虛擬控制臺的作

    用是當一個程序出錯造成系統死鎖時,可以切換到其它虛擬控制臺工作關閉這個程序。此時使用的命令就

    是kill,因為kill是大多數Shell內部命令可以直接調用的。

    5.應用實例
    (1)強行中止(經常使用殺掉)一個進程標識號為324的進程:
    #kill -9 324

    (2)解除Linux系統的死鎖
    在Linux 中有時會發生這樣一種情況:一個程序崩潰,并且處于死鎖的狀態。此時一般不用重新啟動計算

    機,只需要中止(或者說是關閉)這個有問題的程序即可。當 kill處于X-Window界面時,主要的程序(除了

    崩潰的程序之外)一般都已經正常啟動了。此時打開一個終端,在那里中止有問題的程序。比如,如果

    Mozilla瀏覽器程序出現了鎖死的情況,可以使用kill命令來中止所有包含有Mozolla瀏覽器的程序。首先

    用top命令查處該程序的PID,然后使用kill命令停止這個程序:
    #kill -SIGKILL XXX
    其中,XXX是包含有Mozolla瀏覽器的程序的進程標識號。

    (3)使用命令回收內存
    我們知道內存對于系統是非常重要的,回收內存可以提高系統資源。kill命令可以及時地中止一些“越軌

    ”的程序或很長時間沒有相應的程序。例如,使用top命令發現一個無用 (Zombie) 的進程,此時可以使

    用下面命令:
    #kill -9 XXX
    其中,XXX是無用的進程標識號。

    然后使用下面命令:
    #free
    此時會發現可用內存容量增加了。

    (4)killall命令
    Linux下還提供了一個killall命令,可以直接使用進程的名字而不是進程標識號,例如:
    # killall -HUP inetd

    32.rm 刪除命令
        rm -r 刪除目錄,不管目錄中有沒有文件
        rm -rf 強制刪除,沒有提示
        
    33.ln命令
       ln -s 源文件(絕對路徑)      目標文件      (軟連接)
       
    34.查看本機開放的端口

     1、netstat    查看端口和連接
       netstat     列出目前已經連接的服務名
       netstat -a   列出目前已經連接的和正在監聽的服務名
       netstat -an   列出目前已經連接的和正在監聽的端口號(與上面的命令功能一樣,只是不解釋端口

    號對應的服務名)
       netstat -ap   在上面命令的基礎上列出連接的PID(進程號),用這個PID,可以使用KILL 來殺死連接
                       例如:某個連接的PID=111,想踢出去就使用 KILL -9 111。ok!
       netstat -rn    輸出路由表
     2、nmap
       nmap   127.0.0.1     查看本機開放的端口,會掃描所有端口
       nmap   -p 1024   65535   127.0.0.1    掃描指定端口范圍
       nmap -PT 192.168.1.1-111   掃描一組范圍的電腦       

    35.  交互方式管理identity manager 對象
       dxcmd -host 192.168.37.133 -port 524
       
    36.   ps -A      產看進程

    37.   ssh -X (ip address)    遠程連接另一系統  

    38.   pkill  firefox-bin(進程名)     以進程名殺進程
       
    39.   . /opt/novell/eDirectory/bin/ndspath            設置ed的環境變量

    =============================================================================



    SUSE 10.0 快捷鍵大全  

    2007-09-07 10:25:54|  分類: Linux |字號 訂閱
    快捷鍵
    ctrl+shift+f (窗口全屏)
    ctrl+shift+n (新建konsole窗口)
    ctrl+shift++ (調整窗口字體大)
    ctrl+shift+- (調整窗口字體小)
    ctrl+shift+0 (調整窗口字體正常)
    ctrl+alt+f1 (終端1)
    ctrl+alt+f2 (終端2)
    ctrl+alt+f3 (終端3)
    ctrl+alt+f4 (終端4)
    ctrl+alt+f5 (終端5)
    ctrl+alt+f6 (終端6)
    ctrl+alt+f7 (X-window界面)
    ctrl+alt+s (重命名會話 在konsole窗口)
    ctrl+alt+d (顯示桌面)
    ctrl+alt+l (鎖定屏幕)
    ctrl+alt+方向上下(切換輸入法)
    ctrl+alt+del (結束會話)
    ctrl+alt+Ins (結束或鎖定當前會話 開始新的會話 有的可嘗試+FN鍵)
    Ctrl+Alt+BackSpace (強行退出X-WINDOW)
    ctrl+alt+FN+p (調整窗口大小)
    ctrl+F1 (顯示窗口)
    ctrl+f2 (顯示桌面)
    ctrl+prtscr (截屏)
    ctrl+Home (顯示到窗口頁首)
    ctrl+End (顯示到窗口頁尾)
    ctrl+space (切換輸入法)
    ctrl+shift (切換輸入法)
    ctrl+l (=clear)
    ctrl+n (新建窗口)
    ctrl+S (保存文件)
    ctrl+q (退出)
    ctrl+d (關閉konsole)
    ctrl+ESC (KDE衛士)
    shift+方向鍵 (在konsole下切換)
    alt+f1 (顯示程序菜單)
    alt+f2 (運行命令)
    alt+f3 (顯示當前窗口菜單)
    alt+f4 (關閉當前窗口)
    alt+f5 (窗口選項)
    alt+方向左 (后退網頁)
    alt+方向右 (向前網頁)

    .......

    非常有用的3D 桌面快捷鍵,希望對大家有用!


    Alt + 鼠標滾輪 上/下使窗口 透明/不透明

    程序切換:
    Alt + Tab:在當前工作臺中切換窗口
    Ctrl + Alt + Tab:在所有工作臺中切換窗口

    立方體旋轉:
    Ctrl + Alt + 左/右方向鍵:立體地切換桌面
    Ctrl + Shift + Alt + 左/右方向鍵:把活動窗口移到左/右工作臺
    Ctrl + Alt + 鼠標左鍵并拖曳:手動旋轉立方體

    縮放:
    Win + 鼠標右鍵:縮放一次
    Win + 鼠標滾輪 上/下:手動縮放大/小

    調整窗口大小:
    Alt + 鼠標中鍵

    水波效果:
    Ctrl + Win + 移動鼠標:光標在水上移動(默認無效)
    Shift + F9:雨點降落在你的屏幕上 (無法停止)

    屏幕截圖:
    Win + 鼠標左鍵并拖曳:將所選區域截圖(圖片保存在桌面)

    亮度和飽和度:
    Ctrl + 鼠標滾輪 上/下:增加/減少 飽和度(對桌面也有效)
    Shfit + 鼠標滾輪 上/下:增加/減少 亮度(對桌面也有效)

    Trackback: http://www.linuxdby.com/html/linux/other/20070508/28630.html
    posted @ 2011-09-05 09:34 David1228 閱讀(5663) | 評論 (1)編輯 收藏
    僅列出標題
    共16頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 Last 

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章檔案

    新聞分類

    新聞檔案

    相冊

    收藏夾

    Java

    Linux知識相關

    Spring相關

    云計算/Linux/虛擬化技術/

    友情博客

    多線程并發編程

    開源技術

    持久層技術相關

    搜索

    •  

    積分與排名

    • 積分 - 358723
    • 排名 - 154

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品免费看久久久香蕉| 亚洲av无码不卡久久| 不卡一卡二卡三亚洲| 亚洲国产天堂久久综合| 免费人成在线观看播放国产 | av片在线观看永久免费| 精品在线视频免费| 一级毛片成人免费看a| 国产成人自产拍免费视频| 9久久免费国产精品特黄| 日本高清不卡aⅴ免费网站| 男女午夜24式免费视频| 四虎最新永久免费视频| 欧洲乱码伦视频免费| 丁香花免费完整高清观看| 拔擦拔擦8x华人免费久久| 免费一级做a爰片久久毛片潮喷| 亚洲AV无码乱码在线观看| 亚洲人成人无码网www电影首页| 亚洲av日韩av无码| 亚洲国产精品成人精品软件| 亚洲国产成a人v在线观看| 日本亚洲欧美色视频在线播放| 新最免费影视大全在线播放| 中文在线日本免费永久18近| 免费91最新地址永久入口| 免费成人福利视频| 爽爽日本在线视频免费| 亚洲乱码中文字幕手机在线| 亚洲成av人片天堂网| 亚洲av无码久久忘忧草| 免费人成在线观看播放a| 两个人看的www免费视频中文| 国产福利视精品永久免费| 日韩视频免费一区二区三区| 亚洲国产人成精品| 亚洲人成网站影音先锋播放| 国产亚洲精品VA片在线播放| 成人福利在线观看免费视频| 日本xxxx色视频在线观看免费| 扒开双腿猛进入爽爽免费视频|