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 阅读(231) | 评论 (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 阅读(540) | 评论 (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 阅读(1620) | 评论 (0)编辑 收藏
http://sebug.net/paper/python/pr01.html#s01

前言

目录表

本书的读者
本书的由来
本书目前的状况
官方网站
约定条款
反馈
值得思考的一些东西

Python语言可能是第一种即简单又功能强大的编程语言。它不仅适合于初学者,也适合于专业人员使用,更加重要的是,用Python编程是一种愉 快的事。本身将帮助你学习这个奇妙的语言,并且向你展示如何即快捷又方便地完成任务——真正意义上“为编程问题提供的完美解决方案!”

本书的读者

本书可以作为Python编程语言的一本指南或者教程。它主要是为新手而设计,不过对于有经验的程序员来说,它同样有用。

即便你对计算机的了解只是如何在计算机上保存文本文件,你都可以通过本书学习Python。如果你有编程经验,你也可以使用本书学习Python。

如果你以前有编程经验,那么你将会对Python语言和其他你所钟爱的编程语言之间的区别感兴趣。对此我为你指出了许多这样的区别。顺便提醒你,Python将很快成为你最喜欢的编程语言!

posted @ 2011-10-13 14:30 David1228 阅读(313) | 评论 (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 阅读(2255) | 评论 (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 阅读(387) | 评论 (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 阅读(694) | 评论 (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 阅读(1765) | 评论 (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 阅读(5630) | 评论 (1)编辑 收藏
仅列出标题
共16页: First 上一页 3 4 5 6 7 8 9 10 11 下一页 Last 

<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(4)

随笔分类

随笔档案

文章档案

新闻分类

新闻档案

相册

收藏夹

Java

Linux知识相关

Spring相关

云计算/Linux/虚拟化技术/

友情博客

多线程并发编程

开源技术

持久层技术相关

搜索

  •  

积分与排名

  • 积分 - 354548
  • 排名 - 155

最新评论

阅读排行榜

评论排行榜