2012年11月14日

                 總想提筆寫點什么,卻不知道該怎樣記錄這幾個月的生活。滿腦的思緒卻無從下筆,只是感覺找工作也不是自己想的那么容易。看著一起找工作的人都找到了,就自己沒有找到合適的,就慢慢的開始懷疑自己,對生活和未來喪失信心。不過還好懂得,人最不能放棄的就是希望,好多事情盡了自己最大的努力就好。
                
          posted @ 2012-11-17 09:04 skylight 閱讀(162) | 評論 (0)編輯 收藏
           1package com.test2;
           2
           3public class Demo2 {
           4
           5    /**
           6     * @param args
           7     */

           8
           9    public static int search(int[] arrays, int target) {
          10
          11        int start = 0;
          12        int end = arrays.length - 1;
          13        int pos;
          14        while (start <= end) {
          15            pos = (start + end) / 2;
          16            if (arrays[pos] == target) {
          17                return pos;
          18            }
           else if (arrays[pos] > target) {// 如果數(shù)組中間的數(shù)大于目標,則將end的位置變成數(shù)組中間位置-1的位置
          19                end = pos - 1;
          20            }
           else {
          21                start = pos + 1;// 如果數(shù)組中間的數(shù)小于目標,則將start的位置變成數(shù)組中間位置+1的位置
          22            }

          23        }

          24        return -1// 若沒有查找到,則返回-1
          25    }

          26
          27    public static void main(String[] args) {
          28        int[] arrays = 232839592883223242323 };
          29        System.out.println(search(arrays, 28));
          30        System.out.println(search(arrays, 322));
          31        System.out.println(search(arrays, 59));
          32        System.out.println(search(arrays, 288));
          33    }

          34
          35}

          36
          posted @ 2012-11-17 08:30 skylight 閱讀(197) | 評論 (0)編輯 收藏
          多線程的概念

          一、程序與進程

          1、程序:一段靜態(tài)的代碼。

          2、進程:程序的一次動態(tài)執(zhí)行過程,它對應從代碼加載、執(zhí)行到執(zhí)行完畢的一個完整過程。

          3、進程也稱任務,支持多個進程同時執(zhí)行的OS就被稱為多進程OS或多任務OS。

          二、進程與線程

          在一個程序內(nèi)部也可以實現(xiàn)多個任務并發(fā)執(zhí)行,其中每個任務稱為線程。

          線程是比進程更小的執(zhí)行單位,它是在一個進程中獨立的控制流,即程序內(nèi)部的控制流。

          特點:線程不能獨立運行,必須依賴于進程,在進程中運行。

          每個程序至少有一個線程稱為主線程。

          單線程:只有一條線程的進程稱為單線程

          多線程:有不止一個線程的進程稱為多線程

          三、開啟多線程的優(yōu)點和缺點

          提高界面程序響應速度。通過使用線程,可以將需要大量時間完成的流程在后臺啟動單獨的線程完成,提高前臺界面的相應速度。

          充分利用系統(tǒng)資源,提高效率。通過在一個程序內(nèi)部同時執(zhí)行多個流程,可以充分利用CPU等系統(tǒng)資源,從而最大限度的發(fā)揮硬件的性能。

          當程序中的線程數(shù)量比較多時,系統(tǒng)將花費大量的時間進行線程的切換,這反而會降低程序的執(zhí)行效率。但是,相對于優(yōu)勢來說,劣勢還是很有限的,所以現(xiàn)在的項目開發(fā)中,多線程編程技術得到了廣泛的應用。

          多線程實現(xiàn)

          一、在實現(xiàn)線程編程時,首先需要讓一個類具備多線程的能力,繼承Thread類或?qū)崿F(xiàn)Runnable接口的類具備多線程的能力,然后創(chuàng)建線程對象,調(diào)用對應的啟動線程方法即可實現(xiàn)線程編程。

          在一個程序中可以實現(xiàn)多個線程,多線程編程指在同一個程序中啟動了兩個或兩個以上的線程。

          在實際實現(xiàn)線程時,Java語言提供了三種實現(xiàn)方式:

          (1)繼承Thread類

          (2)實現(xiàn)Runnable接口

          (3)使用Timer和TimerTask組合

          二、繼承Thread線程類實現(xiàn)多線程
          java.lang包中提供了一個專門的線程類(Thread),在該類中封裝了許多對線程進行調(diào)度和處理的方法。如果一個類繼承了Thread類,則該類就具備了多線程的能力,可以多線程的方式執(zhí)行。


           1class MyThread extends Thread{
           2public void run(){
           3
           4//線程體
           5}

           6}

           7繼承Thread類實現(xiàn)多線程。
           8MyThread tt1 = new MyThread ();
           9//啟動線程
          10tt1.start();
          11try{
          12for(int i = 0;i < 5;i++){
          13//延時1秒
          14
          15Thread.sleep(1000);
          16System.out.println("Main:" + i);
          17
          18}

          19}
          catch(Exception e){}
          注意:

          線程的特性:隨機性,系統(tǒng)在執(zhí)行多線程程序時只保證線程是交替執(zhí)行的,至于哪個線程先執(zhí)行哪個線程后執(zhí)行,則無法獲得保證,需要書寫專門的代碼才可以保證執(zhí)行的順序。

          對于同一個線程類,也可以啟動多個線程

          同一個線程不能啟動兩次,

          當自定義線程中的run方法執(zhí)行完成以后,則自定義線程自然死亡。而對于系統(tǒng)線程來說,只有當main方法執(zhí)行結束,而且啟動的其它線程都結束以后,才會結束。當系統(tǒng)線程執(zhí)行結束以后,程序的執(zhí)行才真正結束。

          三、 實現(xiàn)Runable接口

          a) 多線程對象實現(xiàn)java.lang.Runnable接口并且在該類中重寫Runnable接口的run方法。

          b) 好處:實現(xiàn)Runable接口的方法避免了單繼承的局限性。

          例1:使用實現(xiàn)Runable接口的方式實現(xiàn)多線程。


          1class MyThread2 implements Runable{
          2public void run(){} //重寫Runable接口中的run()方法
          3}

          4MyThread2 mt1=new MyThread2();
          5Thread t1=new Thread(mt1);
          6t1.start();
          線程的生命周期

          一、線程的生命周期

          線程是一個動態(tài)執(zhí)行的過程,它也有一個從產(chǎn)生到死亡的過程,這就是所謂的生命周期。一個線程在它的生命周期內(nèi)有5種狀態(tài):

          1、新建(new Thread)

          當創(chuàng)建Thread類的一個實例(對象)時,此線程進入新建狀態(tài)(未被啟動)。
          例如:Thread t1=new Thread();

          2、就緒(runnable)

          線程已經(jīng)被啟動,正在等待被分配給CPU時間片,也就是說此時線程正在就緒隊列中排隊等候得到CPU資源。例如:t1.start();

          3、運行(running)

          線程獲得CPU資源正在執(zhí)行任務(run()方法),此時除非此線程自動放棄CPU資源或者有優(yōu)先級更高的線程進入,線程將一直運行到結束。

          4、死亡(dead)

          當線程執(zhí)行完畢或被其它線程殺死,線程就進入死亡狀態(tài),這時線程不可能再進入就緒狀態(tài)等待執(zhí)行。

          自然終止:正常運行run()方法后終止

          異常終止:調(diào)用stop()方法讓一個線程終止運行

          5、堵塞(blocked)

          由于某種原因?qū)е抡谶\行的線程讓出CPU并暫停自己的執(zhí)行,即進入堵塞狀態(tài)。

          正在睡眠:用sleep(long t) 方法可使線程進入睡眠方式。一個睡眠著的線程在指定的時間過去可進入就緒狀態(tài)。

          正在等待:調(diào)用wait()方法。(調(diào)用motify()方法回到就緒狀態(tài))

          被另一個線程所阻塞:調(diào)用suspend()方法。(調(diào)用resume()方法恢復)

          posted @ 2012-11-16 12:50 skylight 閱讀(200) | 評論 (0)編輯 收藏
          JSP中一共預先定義了9個這樣的對象,分別為:request、response、session、application、out、pagecontext、config、page、exception

          1、request對象

          request 對象是 javax.servlet.httpServletRequest類型的對象。 該對象代表了客戶端的請求信息,主要用于接受通過HTTP協(xié)議傳送到服務器的數(shù)據(jù)。(包括頭信息、系統(tǒng)信息、請求方式以及請求參數(shù)等)。request對象的作用域為一次請求。

          2、response對象

          response 代表的是對客戶端的響應,主要是將JSP容器處理過的對象傳回到客戶端。response對象也具有作用域,它只在JSP頁面內(nèi)有效。

          3、session對象

          session 對象是由服務器自動創(chuàng)建的與用戶請求相關的對象。服務器為每個用戶都生成一個session對象,用于保存該用戶的信息,跟蹤用戶的操作狀態(tài)。session對象內(nèi)部使用Map類來保存數(shù)據(jù),因此保存數(shù)據(jù)的格式為 “Key/value”。 session對象的value可以使復雜的對象類型,而不僅僅局限于字符串類型。

          4、application對象

          application 對象可將信息保存在服務器中,直到服務器關閉,否則application對象中保存的信息會在整個應用中都有效。與session對象相比,application對象生命周期更長,類似于系統(tǒng)的“全局變量”。

          5、out 對象

          out 對象用于在Web瀏覽器內(nèi)輸出信息,并且管理應用服務器上的輸出緩沖區(qū)。在使用 out 對象輸出數(shù)據(jù)時,可以對數(shù)據(jù)緩沖區(qū)進行操作,及時清除緩沖區(qū)中的殘余數(shù)據(jù),為其他的輸出讓出緩沖空間。待數(shù)據(jù)輸出完畢后,要及時關閉輸出流。

          6、pageContext 對象

          pageContext 對象的作用是取得任何范圍的參數(shù),通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的創(chuàng)建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。

          7、config 對象

          config 對象的主要作用是取得服務器的配置信息。通過 pageConext對象的 getServletConfig() 方法可以獲取一個config對象。當一個Servlet 初始化時,容器把某些信息通過 config對象傳遞給這個 Servlet。 開發(fā)者可以在web.xml 文件中為應用程序環(huán)境中的Servlet程序和JSP頁面提供初始化參數(shù)。

          8、page 對象

          page 對象代表JSP本身,只有在JSP頁面內(nèi)才是合法的。 page隱含對象本質(zhì)上包含當前 Servlet接口引用的變量,類似于Java編程中的 this 指針。

          9、exception 對象

          exception 對象的作用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該對象將無法編譯JSP文件。excepation對象和Java的所有對象一樣,都具有系統(tǒng)提供的繼承結構。exception 對象幾乎定義了所有異常情況。在Java程序中,可以使用try/catch關鍵字來處理異常情況; 如果在JSP頁面中出現(xiàn)沒有捕獲到的異常,就會生成 exception 對象,并把 exception 對象傳送到在page指令中設定的錯誤頁面中,然后在錯誤頁面中處理相應的 exception 對象。

          posted @ 2012-11-16 12:45 skylight 閱讀(249) | 評論 (0)編輯 收藏
          1.接口體現(xiàn)的是一種規(guī)范,而抽象類體現(xiàn)的是一種模板式設計。
          2.接口里只能包含抽象方法,不包含已經(jīng)提供實現(xiàn)的方法。而抽象類則完全可以包含普通方法。
          3.接口里不能定義靜態(tài)方法,抽象類里面可以定義靜態(tài)方法。
          4.接口里只能定義靜態(tài)常量屬性,不能定義普通屬性。而抽象類可以定義普通屬性也可以定義靜態(tài)常量屬性。
          5.接口不包含構造器,而抽象類可以包含構造器。構造器不是為了用來創(chuàng)建對象,而是子類調(diào)用這些構造器來完成抽象類的初始化工作。
          posted @ 2012-11-14 10:33 skylight 閱讀(483) | 評論 (1)編輯 收藏

          導航

          <2012年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 南康市| 海盐县| 连城县| 册亨县| 浠水县| 开封县| 明溪县| 正安县| 什邡市| 徐州市| 黄大仙区| 红安县| 苍梧县| 台安县| 兴国县| 武宣县| 弥渡县| 武功县| 万全县| 新昌县| 太原市| 平泉县| 柯坪县| 商南县| 田林县| 界首市| 大名县| 重庆市| 武平县| 东乡族自治县| 苏尼特左旗| 沛县| 镇原县| 天门市| 澳门| 迭部县| 习水县| 汽车| 连江县| 江油市| 丹巴县|