Loading...

          java .net

          ① 完全匹配

              <url-pattern>/test/list.do</url-pattern>

          ② 目錄匹配

              <url-pattern>/test/*</url-pattern>

          ③ 擴展名匹配

              <url-pattern>*.do</url-pattern>

          servlet-mapping的重要規則:

          ☆ 容器會首先查找完全匹配,如果找不到,再查找目錄匹配,如果也找不到,就查找擴展名匹配。

          ☆ 如果一個請求匹配多個“目錄匹配”,容器會選擇最長的匹配。

          posted @ 2008-09-01 14:13 豬 閱讀(5819) | 評論 (0)編輯 收藏

          幾乎每天都在,只是好久都是只看不寫了,看看誰來過了,回訪一下,看看誰留言了,回復一下,看看訪問量多少了
          呵呵,瞅瞅下面的一篇到現在足有兩個多月了,時間過得好快啊
          最近一段時間,事兒真的很多,公司的事不算忙了,所以也沒什么技術問題寫一寫,一直想弄個blog,還沒弄起來,家里有很多事忙
          上周末回了趟家,正好趕上下雨,慶幸買上了火車票,還有坐,倒霉的還沒趕上火車,到火車站停止檢票了,在麥當勞蹲了一宿
          凌晨4:30上車,開始鬧肚子,哎呦,一直到家,一宿沒睡,還鬧肚子,我太堅強了,呵呵
          想點招,賺錢,極度缺錢
          為什么baidu空間不能用windows live writer這樣的客戶端寫blog呢,落伍了啊

          posted @ 2008-08-27 14:13 豬 閱讀(103) | 評論 (0)編輯 收藏

          試用windows live writer 發blog

          我的操作系統是win2003。整體google了半天才裝了個e文版,湊合試試 哈哈

          posted @ 2008-08-27 12:09 豬 閱讀(127) | 評論 (0)編輯 收藏
          一直討厭看電視劇,大都又臭又長
          向來只是吃飯的時候,有時候看電視,也總是遙控器不離手,不停的換臺
          無意中看了會兒 八兄弟~~覺得還不錯
          講的是咱老百姓的事兒
          諷刺~幽默~
          生活~就是不停的邁一道道的坎啊


          講話了,要當就當棍
          posted @ 2008-08-26 22:07 豬 閱讀(128) | 評論 (0)編輯 收藏
          剛整明白一個,呵呵,笨
          hibernate save的時候必須啟用事務,也就是必須
          beginTransaction();
          然后
          commit();
          要不然不會insert

          看孫衛琴.精通Hibernate:Java對象持久化技術詳解上講
          調用save方法后,hibernate并不會立即insert,而是保存在緩存里,等清理緩存時再insert
          什么時候清理緩存呢?
          1、事務commit();
          2、find方法(hibernate3被廢)
          3、顯示調用flush();
          而為什么不用事務,只是在save();后直接顯示調用flush();還是沒有insert呢?
          參考csdn的一個帖子http://topic.csdn.net/u/20080603/19/d6918606-3a62-43a4-b63d-cd292242bbc6.html
          因為數據源的問題
          真正的原因是數據源conn默認的提交方式,hibernate不管這件事,大部分開源數據源都是默認false的

          我試了hibernate的默認連接池,和tomcat中配的連接池用使用事務都沒有insert。
          下面這段代碼能夠insert可以說明一些問題
              public static void main(String[] args) throws Exception {
          SessionFactory sf
          =HibernateSessionFactory.getSessionFactory();
          Session session
          =sf.openSession();
          System.out.println(session.connection().getAutoCommit());
          session.connection().setAutoCommit(
          true);
          User u
          =new User();
          u.setName(
          "aaa");
          session.save(u);
          }

          }
          而commit和flush的區別就是commit先flush再提交,而flush沒有提交
          而在close的時候,孫衛琴.精通Hibernate:Java對象持久化技術詳解上講的是hibernate會清空緩存,一個清理,一個清空,一字之差,呵呵
          posted @ 2008-08-26 22:07 豬 閱讀(789) | 評論 (0)編輯 收藏
          因為一直想寫個自己的blog,用什么架構呢,遂驅使著在網上搜索有什么開放源碼的blog程序,roller4.0,貌似挺有名,但資料不多,蒸騰了兩天才把系統跑起來
          看在OpenSource的介紹:

                        Roller Weblogger

          這個weblogging 設計得比較精巧,源代碼是很好的學習資料。它支持weblogging應有的特性如:評論功能,所見即所得HTML編輯,TrackBack,提供頁面模板,RSS syndication,blogroll管理和提供一個XML-RPC 接口。

          很好的學習資料,哈哈,那就學習學習吧
          不過到現在也沒看出個什么門道來
          系統用了struts2 不熟,struts1還行
          用了JPA,不熟,確切的說剛知道這東西
          用了velocity,沒用過
          ....還有很多沒見過的名詞,狂暈
          打了個斷點跟了幾圈,就暈了
          呵呵
          posted @ 2008-08-26 22:07 豬 閱讀(300) | 評論 (1)編輯 收藏

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
              <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
              <title>Google AJAX Language API - Hello World</title>
              <script type="text/javascript" src="http://www.google.com/jsapi"></script>
              <script type="text/javascript">

              google.load("language", "1");

              function initialize(str) {
                var text = document.getElementById("text").value;
                google.language.detect(text, function(result) {
                  if (!result.error && result.language) {
             google.language.translate(text, result.language, str,
                                       function(result) {
               var translated = document.getElementById("translation");
               if (result.translation) {
                 translated.innerHTML = result.translation;
                      }
                    });
                  }
                });
              }
              google.setOnLoadCallback(initialize);

              </script>
          </head>
          <body>
              <input type="text" name="text" value="你好,很高??到你。"/>
          <input type="button" value="漢譯英" onclick="javascript:initialize('en')"/>
          <input type="button" value="英譯漢" onclick="javascript:initialize('zh')"/>
              <div id="translation"></div>
          </body>
          </html>

          posted @ 2008-08-26 22:07 豬 閱讀(149) | 評論 (0)編輯 收藏

          【程序1】
          題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
          1.程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21....
          【程序2】
          題目:判斷101-200之間有多少個素數,并輸出所有素數。
          1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,
          則表明此數不是素數,反之是素數。
          【程序3】
          題目:打印出所有的 "水仙花數 ",所謂 "水仙花數 "是指一個三位數,其各位數字立方和等于該數本身。例如:153是一個 "水仙花數 ",因為153=1的三次方+5的三次方+3的三次方。
          1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
          【程序4】
          題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
          程序分析:對n進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成:
          (1)如果這個質數恰等于n,則說明分解質因數的過程已經結束,打印出即可。
          (2)如果n <> k,但n能被k整除,則應打印出k的值,并用n除以k的商,作為新的正整數你n,重復執行第一步。
          (3)如果n不能被k整除,則用k+1作為k的值,重復執行第一步。
          【程序5】
          題目:利用條件運算符的嵌套來完成此題:學習成績> =90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。
          1.程序分析:(a> b)?a:b這是條件運算符的基本例子。
          【程序6】
          題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
          1.程序分析:利用輾除法。
          【程序7】
          題目:輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
          1.程序分析:利用while語句,條件為輸入的字符不為 '\n '.
          【程序8】
          題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。
          1.程序分析:關鍵是計算出每一項的值。
          【程序9】
          題目:一個數如果恰好等于它的因子之和,這個數就稱為 "完數 "。例如6=1+2+3.編程 找出1000以內的所有完數。
          【程序10】
          題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地時,共經過多少米?第10次反彈多高?
          【程序11】
          題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?
          1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。
          【程序12】
          題目:企業發放的獎金根據利潤提成。利潤(I)低于或等于10萬元時,獎金可提10%;利潤高于10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可可提成7.5%;20萬到40萬之間時,高于20萬元的部分,可提成5%;40萬到60萬之間時高于40萬元的部分,可提成3%;60萬到100萬之間時,高于60萬元的部分,可提成1.5%,高于100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?
          1.程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。
          【程序13】
          題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
          1.程序分析:在10萬以內判斷,先將該數加上100后再開方,再將該數加上268后再開方,如果開方后的結果滿足如下條件,即是結果。請看具體分析:
          【程序14】
          題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
          1.程序分析:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需考慮多加一天。
          【程序15】
          題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。
          1.程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x> y則將x與y的值進行交換,然后再用x與z進行比較,如果x> z則將x與z的值進行交換,這樣能使x最小。
          【程序16】
          題目:輸出9*9口訣。
          1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
          【程序17】
          題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下 的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
          1.程序分析:采取逆向思維的方法,從后往前推斷。
          【程序18】
          題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。
          1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除, 則表明此數不是素數,反之是素數。
          【程序19】
          題目:打印出如下圖案(菱形)
          *
          ***
          ******
          ********
          ******
          ***
          *
          1.程序分析:先把圖形分成兩部分來看待,前四行一個規律,后三行一個規律,利用雙重 for循環,第一層控制行,第二層控制列。
          【程序20】
          題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
          1.程序分析:請抓住分子與分母的變化規律。
          【程序21】
          題目:求1+2!+3!+...+20!的和
          1.程序分析:此程序只是把累加變成了累乘。
          【程序22】
          題目:利用遞歸方法求5!。
          1.程序分析:遞歸公式:fn=fn_1*4!
          【程序23】
          題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大?
          1.程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數,需知道第四人的歲數,依次類推,推到第一人(10歲),再往回推。
          【程序24】
          題目:給一個不多于5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。
          【程序25】
          題目:一個5位數,判斷它是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。
          【程序26】
          題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續 判斷第二個字母。
          1.程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。
          【程序27】
          題目:求100之內的素數
          【程序28】
          題目:對10個數進行排序
          1.程序分析:可以利用選擇法,即從后9個比較過程中,選擇一個最小的與第一個元素交換, 下次類推,即用第二個元素與后8個進行比較,并進行交換。
          【程序29】
          題目:求一個3*3矩陣對角線元素之和
          1.程序分析:利用雙重for循環控制輸入二維數組,再將a[i][i]累加后輸出。
          【程序30】
          題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。
          1. 程序分析:首先判斷此數是否大于最后一個數,然后再考慮插入中間的數的情況,插入后此元素之后的數,依次后移一個位置。
          【程序31】
          題目:將一個數組逆序輸出。
          1.程序分析:用第一個與最后一個交換。
          【程序32】
          題目:取一個整數a從右端開始的4~7位。
          程序分析:可以這樣考慮:
          (1)先使a右移4位。
          (2)設置一個低4位全為1,其余全為0的數。可用~(~0 < <4)
          (3)將上面二者進行&運算。
          【程序33】
          題目:打印出楊輝三角形(要求打印出10行如下圖)
          1.程序分析:
          1
          1 1
          1 2 1
          1 3 3 1
          1 4 6 4 1
          1 5 10 10 5 1

          【程序34】
          題目:輸入3個數a,b,c,按大小順序輸出。
          1.程序分析:利用指針方法。
          【程序35】
          題目:輸入數組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數組。
          【程序36】
          題目:有n個整數,使其前面各數順序向后移m個位置,最后m個數變成最前面的m個數
          【程序37】
          題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。
          【程序38】
          題目:寫一個函數,求一個字符串的長度,在main函數中輸入字符串,并輸出其長度。
          【程序39】
          題目:編寫一個函數,輸入n為偶數時,調用函數求1/2+1/4+...+1/n,當輸入n為奇數時,調用函數1/1+1/3+...+1/n(利用指針函數)
          【程序40】
          題目:字符串排序。
          【程序41】
          題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?
          【程序42】
          題目:809*??=800*??+9*??+1 其中??代表的兩位數,8*??的結果為兩位數,9*??的結果為3位數。求??代表的兩位數,及809*??后的結果。
          【程序43】
          題目:求0—7所能組成的奇數個數。
          【程序44】
          題目:一個偶數總能表示為兩個素數之和。
          【程序45】
          題目:判斷一個素數能被幾個9整除
          【程序46】
          題目:兩個字符串連接程序
          【程序47】
          題目:讀取7個數(1—50)的整數值,每讀取一個值,程序打印出該值個數的*。
          【程序48】
          題目:某個公司采用公用電話傳遞數據,數據是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字都加上5,然后用和除以10的余數代替該數字,再將第一位和第四位交換,第二位和第三位交換。
          【程序49】
          題目:計算字符串中子串出現的次數
          【程序50】
          題目:有五個學生,每個學生有3門課的成績,從鍵盤輸入以上數據(包括學生號,姓名,三門課成績),計算出平均成績,況原有的數據和計算出的平均分數存放在磁盤文件 "stud "中。

          有些是C語言的題~但要用JAVA做

          轉自:http://topic.csdn.net/u/20070514/12/45df0d84-e6f8-4cb4-b9ee-c5101e12c7d6.html

          posted @ 2008-08-26 22:07 豬 閱讀(769) | 評論 (1)編輯 收藏

          1 追求女人你需要時間和金錢,因此:女人=時間×金錢

          2 “時間就是金錢”,所以
          時間=金錢

          3 因此
          女人=金錢×金錢=金錢的平方

          4 “金錢是一切麻煩的根源”
          金錢=麻煩的平方根

          5 因此
          女人=麻煩的平方根的乘方
          女人=麻煩

          危險物質數據表

          元素:女人

          符號:○+

          發現者:亞當

          原子量:接受值是55公斤,但據知可在45公斤到225公斤之間浮動

          物理特性:

          1。體表通常覆蓋著粉底與化妝品構成的薄膜
          2。毫無意義的沸騰-----毫無理由的結冰
          3。以不同狀態存在于自然界中,從純凈原材料到普通礦物質均有可能

          化學特性:

          1。極易與黃金、白金以及所有的貴重寶石發生反應
          2。可能在沒有任何理由及預警下會引起自發性嚴重爆炸
          3。是人類已知的最強的金錢還原劑

          用途:

          1。高度裝飾性,特別是擺在跑車中
          2。對于疏解壓力有很大的功效
          3。非常有效的廚房清潔劑

          危害:

          1。將另一更優質樣本置于旁邊時會發青(指忌妒)
          2。同時持有一個樣本以上為違法,但數個樣本可以在不直接接觸的情形下保存在不同的場所

          男人與女人爭論獲勝的可能性

          綠字為約會期,藍字為訂婚期,黑字為婚姻期

          橫軸為年份,豎軸為獲勝可能性的百分比


          任務:去商場買條褲子

          藍線為男人,紅線為女人
          posted @ 2008-08-26 22:07 豬 閱讀(153) | 評論 (0)編輯 收藏
          對于這個系列里的問題,每個學Java的人都應該搞懂。當然,如果只是學Java玩玩就無所謂了。如果你認為自己已經超越初學者了,卻不很懂這些問題,請將你自己重歸初學者行列。內容均來自于CSDN的經典老貼。

          問題一:我聲明了什么!

          String s = "Hello world!";

          許多人都做過這樣的事情,但是,我們到底聲明了什么?回答通常是:一個String,內容是“Hello world!”。這樣模糊的回答通常是概念不清的根源。如果要準確的回答,一半的人大概會回答錯誤。
          這個語句聲明的是一個指向對象的引用,名為“s”,可以指向類型為String的任何對象,目前指向"Hello world!"這個String類型的對象。這就是真正發生的事情。我們并沒有聲明一個String對象,我們只是聲明了一個只能指向String對象的引用變量。所以,如果在剛才那句語句后面,如果再運行一句:

          String string = s;

          我們是聲明了另外一個只能指向String對象的引用,名為string,并沒有第二個對象產生,string還是指向原來那個對象,也就是,和s指向同一個對象。

          問題二:"=="和equals方法究竟有什么區別?

          ==操作符專門用來比較變量的值是否相等。比較好理解的一點是:
          int a=10;
          int b=10;
          則a==b將是true。
          但不好理解的地方是:
          String a=new String("foo");
          String b=new String("foo");
          則a==b將返回false。

          根據前一帖說過,對象變量其實是一個引用,它們的值是指向對象所在的內存地址,而不是對象本身。a和b都使用了new操作符,意味著將在內存中產生兩個內容為"foo"的字符串,既然是“兩個”,它們自然位于不同的內存地址。a和b的值其實是兩個不同的內存地址的值,所以使用"=="操作符,結果會是 false。誠然,a和b所指的對象,它們的內容都是"foo",應該是“相等”,但是==操作符并不涉及到對象內容的比較。
          對象內容的比較,正是equals方法做的事。

          看一下Object對象的equals方法是如何實現的:
          boolean equals(Object o){

          return this==o;

          }
          Object 對象默認使用了==操作符。所以如果你自創的類沒有覆蓋equals方法,那你的類使用equals和使用==會得到同樣的結果。同樣也可以看出, Object的equals方法沒有達到equals方法應該達到的目標:比較兩個對象內容是否相等。因為答案應該由類的創建者決定,所以Object把這個任務留給了類的創建者。

          看一下一個極端的類:
          Class Monster{
          private String content;
          ...
          boolean equals(Object another){ return true;}

          }
          我覆蓋了equals方法。這個實現會導致無論Monster實例內容如何,它們之間的比較永遠返回true。

          所以當你是用equals方法判斷對象的內容是否相等,請不要想當然。因為可能你認為相等,而這個類的作者不這樣認為,而類的equals方法的實現是由他掌握的。如果你需要使用equals方法,或者使用任何基于散列碼的集合(HashSet,HashMap,HashTable),請察看一下java doc以確認這個類的equals邏輯是如何實現的。

          問題三:String到底變了沒有?

          沒有。因為String被設計成不可變(immutable)類,所以它的所有對象都是不可變對象。請看下列代碼:

          String s = "Hello";
          s = s + " world!";

          s 所指向的對象是否改變了呢?從本系列第一篇的結論很容易導出這個結論。我們來看看發生了什么事情。在這段代碼中,s原先指向一個String對象,內容是 "Hello",然后我們對s進行了+操作,那么s所指向的那個對象是否發生了改變呢?答案是沒有。這時,s不指向原來那個對象了,而指向了另一個 String對象,內容為"Hello world!",原來那個對象還存在于內存之中,只是s這個引用變量不再指向它了。
          通過上面的說明,我們很容易導出另一個結論,如果經常對字符串進行各種各樣的修改,或者說,不可預見的修改,那么使用String來代表字符串的話會引起很大的內存開銷。因為 String對象建立之后不能再改變,所以對于每一個不同的字符串,都需要一個String對象來表示。這時,應該考慮使用StringBuffer類,它允許修改,而不是每個不同的字符串都要生成一個新的對象。并且,這兩種類的對象轉換十分容易。
          同時,我們還可以知道,如果要使用內容相同的字符串,不必每次都new一個String。例如我們要在構造器中對一個名叫s的String引用變量進行初始化,把它設置為初始值,應當這樣做:
          public class Demo {
          private String s;
          ...
          public Demo {
          s = "Initial Value";
          }
          ...
          }
          而非
          s = new String("Initial Value");
          后者每次都會調用構造器,生成新對象,性能低下且內存開銷大,并且沒有意義,因為String對象不可改變,所以對于內容相同的字符串,只要一個String對象來表示就可以了。也就說,多次調用上面的構造器創建多個對象,他們的String類型屬性s都指向同一個對象。
          上面的結論還基于這樣一個事實:對于字符串常量,如果內容相同,Java認為它們代表同一個String對象。而用關鍵字new調用構造器,總是會創建一個新的對象,無論內容是否相同。
          至于為什么要把String類設計成不可變類,是它的用途決定的。其實不只String,很多Java標準類庫中的類都是不可變的。在開發一個系統的時候,我們有時候也需要設計不可變類,來傳遞一組相關的值,這也是面向對象思想的體現。不可變類有一些優點,比如因為它的對象是只讀的,所以多線程并發訪問也不會有任何問題。當然也有一些缺點,比如每個不同的狀態都要一個對象來代表,可能會造成性能上的問題。所以Java標準類庫還提供了一個可變版本,即 StringBuffer。

          問題四:final關鍵字到底修飾了什么?

          final使得被修飾的變量"不變",但是由于對象型變量的本質是“引用”,使得“不變”也有了兩種含義:引用本身的不變,和引用指向的對象不變。

          引用本身的不變:
          final StringBuffer a=new StringBuffer("immutable");
          final StringBuffer b=new StringBuffer("not immutable");
          a=b;//編譯期錯誤

          引用指向的對象不變:
          final StringBuffer a=new StringBuffer("immutable");
          a.append(" broken!"); //編譯通過

          可見,final只對引用的“值”(也即它所指向的那個對象的內存地址)有效,它迫使引用只能指向初始指向的那個對象,改變它的指向會導致編譯期錯誤。至于它所指向的對象的變化,final是不負責的。這很類似==操作符:==操作符只負責引用的“值”相等,至于這個地址所指向的對象內容是否相等,==操作符是不管的。

          理解final問題有很重要的含義。許多程序漏洞都基于此----final只能保證引用永遠指向固定對象,不能保證那個對象的狀態不變。在多線程的操作中,一個對象會被多個線程共享或修改,一個線程對對象無意識的修改可能會導致另一個使用此對象的線程崩潰。一個錯誤的解決方法就是在此對象新建的時候把它聲明為final,意圖使得它“永遠不變”。其實那是徒勞的。

          問題五:到底要怎么樣初始化!

          本問題討論變量的初始化,所以先來看一下Java中有哪些種類的變量。
          1. 類的屬性,或者叫值域
          2. 方法里的局部變量
          3. 方法的參數

          對于第一種變量,Java虛擬機會自動進行初始化。如果給出了初始值,則初始化為該初始值。如果沒有給出,則把它初始化為該類型變量的默認初始值。

          int類型變量默認初始值為0
          float類型變量默認初始值為0.0f
          double類型變量默認初始值為0.0
          boolean類型變量默認初始值為false
          char類型變量默認初始值為0(ASCII碼)
          long類型變量默認初始值為0
          所有對象引用類型變量默認初始值為null,即不指向任何對象。注意數組本身也是對象,所以沒有初始化的數組引用在自動初始化后其值也是null。

          對于兩種不同的類屬性,static屬性與instance屬性,初始化的時機是不同的。instance屬性在創建實例的時候初始化,static屬性在類加載,也就是第一次用到這個類的時候初始化,對于后來的實例的創建,不再次進行初始化。這個問題會在以后的系列中進行詳細討論。

          對于第二種變量,必須明確地進行初始化。如果再沒有初始化之前就試圖使用它,編譯器會抗議。如果初始化的語句在try塊中或if塊中,也必須要讓它在第一次使用前一定能夠得到賦值。也就是說,把初始化語句放在只有if塊的條件判斷語句中編譯器也會抗議,因為執行的時候可能不符合if后面的判斷條件,如此一來初始化語句就不會被執行了,這就違反了局部變量使用前必須初始化的規定。但如果在else塊中也有初始化語句,就可以通過編譯,因為無論如何,總有至少一條初始化語句會被執行,不會發生使用前未被初始化的事情。對于try-catch也是一樣,如果只有在try塊里才有初始化語句,編譯部通過。如果在 catch或finally里也有,則可以通過編譯。總之,要保證局部變量在使用之前一定被初始化了。所以,一個好的做法是在聲明他們的時候就初始化他們,如果不知道要出事化成什么值好,就用上面的默認值吧!

          其實第三種變量和第二種本質上是一樣的,都是方法中的局部變量。只不過作為參數,肯定是被初始化過的,傳入的值就是初始值,所以不需要初始化。

          問題六:instanceof是什么東東?

          instanceof是Java的一個二元操作符,和==,>, <是同一類東東。由于它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實例,返回boolean類型的數據。舉個例子:

          String s = "I AM an Object!";
          boolean isObject = s instanceof Object;

          我們聲明了一個String對象引用,指向一個String對象,然后用instancof來測試它所指向的對象是否是Object類的一個實例,顯然,這是真的,所以返回true,也就是isObject的值為True。
          instanceof有一些用處。比如我們寫了一個處理賬單的系統,其中有這樣三個類:

          public class Bill {//省略細節}
          public class PhoneBill extends Bill {//省略細節}
          public class GasBill extends Bill {//省略細節}

          在處理程序里有一個方法,接受一個Bill類型的對象,計算金額。假設兩種賬單計算方法不同,而傳入的Bill對象可能是兩種中的任何一種,所以要用instanceof來判斷:

          public double calculate(Bill bill) {
          if (bill instanceof PhoneBill) {
          //計算電話賬單
          }
          if (bill instanceof GasBill) {
          //計算燃氣賬單
          }
          ...
          }
          這樣就可以用一個方法處理兩種子類。

          然而,這種做法通常被認為是沒有好好利用面向對象中的多態性。其實上面的功能要求用方法重載完全可以實現,這是面向對象變成應有的做法,避免回到結構化編程模式。只要提供兩個名字和返回值都相同,接受參數類型不同的方法就可以了:

          public double calculate(PhoneBill bill) {
          //計算電話賬單
          }

          public double calculate(GasBill bill) {
          //計算燃氣賬單
          }

          所以,使用instanceof在絕大多數情況下并不是推薦的做法,應當好好利用多態。
          posted @ 2008-08-26 22:07 豬 閱讀(112) | 評論 (0)編輯 收藏
          困擾80后的十大煩惱,你有嗎?


           1.成天泡在網上,又不知道做什么好。80后最常說的一句話是“無聊”,盡管他們在網絡上聊天花去了大把的時間。

            建議:聊天作為一種基本交流方式,所要達到的目的是獲得認同。網上聊天很難達到這種認同,所以越聊越無聊。學習和工作累了,玩一玩游戲沒錯,但是打怪練級那些游戲基本上是得不償失的,費時間,傷身體,還花錢。可以玩一玩趣味性強的休閑游戲,比如《紙客帝國》之類,輕松幽默,帶點無厘頭的風格,很能消除疲勞。靠玩游戲來交流感情是不現實的,要交流感情最好還是找個人去咖啡吧,或者堡個電話粥吧。

            成天泡在網上

            2.浮躁,好預測未知妄下定論。對看過的電影和電視劇,會按耐不住向別人透露下一個情節或者結局。對不了解的事物,根據一丁點信息發表長篇大論的見解,并且多半是批判的。對權威毫無理由的不耐煩,但絕不公開挑戰,只熱衷于影響身邊的幾個人,并有得到認同的強烈欲望。一旦不能如愿,就不再發言,部分人會暴跳如雷,令旁人費解。

            建議:多出去旅行,多讀書,多參加團體活動,多接觸社會。世界的絕大部分真相在我們的視野之外,浮躁是個人修養淺薄的表現,人既是社會成員也是自然的組成部分,需要積淀對世界盡可能的多認識,才能達到意識的足夠高度,才能讓人看起來不那么浮躁。

            該干什么才好......


            3.瘦弱,不愛運動。對健壯的人心存嘲諷,對肌肉和力量心存恐懼。在審美上受日式漫畫的影響,崇尚中性美和病態美。與第一點有一定關系,在身體的耐力、韌性和爆發力上,更熱衷于后者。但是在受到刺激之后,又會表現出病態的固執。這樣就表現為兩個極端,一方面弱不禁風,另一方面又偶爾會有驚人之舉。

            建議:健身,多進行戶外運動。身體是人最接近自然的組成部分,一個健康強壯不容易被擊倒的身體可以讓我們終生收益。

            病態美其實一點都不美

            4.性格軟弱,喜歡為自己的意志不堅定找理由。不喜歡通過溝通達到與外界的意見統一,而是表面妥協,內心強烈反感,表現為通常所說的叛逆。性格軟弱表現在與異性相處方面就是易犯花癡,對異性的正常關懷想入非非。在弄清楚是怎么回事之后,即使真的喜歡對方,也不敢大膽追求,而是找個理由退縮。通常的理由是說自己不了解愛情,也不想了解。

            建議:堂而皇之的與人打一架,正兒八經的談一次戀愛。從自然法則的角度考慮的,作為雄性動物,與同性生物打架和向異性求愛都是走向成熟的標志。

            性格決定命運,軟弱往往會喪失自己的利益

            5.消極,拒絕長大。不喜歡被人說成熟,尤其不能容忍被人說是老男人。不耐煩與長輩討論一些實際的問題,反感政治,厭惡參加長輩在場的應酬。要負責任的事情,會讓他們覺得焦慮不安和無奈。

            建議:嘗試了解父母的不易。也可以從哲學層面去了解索取和付出之間的辯證關系,就象課本里所說的權利和義務的關系。

            不喜歡成熟,其實是不負責的

            6.選擇性自閉,對熟人嘮叨不休,對陌生人一言不發。偏愛使用方言或者網絡語言等非大眾語言。吸煙,但是不敬煙。喝酒,但是不敬酒。不是他們感興趣的話題,基本上很難交談下去。多人參與討論時,如果沒有人邀請他發言,即使他已醞釀好發言稿,還是會選擇沉默。

            建議:這些其實都是在溝通上遇到的困難。建議擴大知識面,擴大社交圈,改變與人交談的方式,勇敢表達自己的見解,努力將自己的觀點傳達并影響其他人。獲得認同后就會產生激勵,反復幾次,就可以走出自閉。

            要多多與人群溝通,不要自閉

            7.習慣熬夜,25歲之前通宵次數明顯較多。有時候為了“合理安排時間”,干脆用通宵來減少熬夜次數。實際上下半夜都在打瞌睡。

            建議:與第5點相同,熬夜其實就是自閉在作怪。有熬夜習慣的人,白天就找到了關門睡覺的理由,避免了外界的騷擾。或者白天雖然沒有在家睡覺,因為精神上萎靡不振,能造成“外界不關我事”的錯覺,也能達到抵制外界騷擾的目的。建議立刻改變作息時間,打開心扉。

            經常熬夜會損害美麗的容顏

            8.毫無理由的高傲。覺得別人不可能了解自己,并以此作為對別人不屑的理由。不愿意聽別人的建議,也聽不進。這種高傲連他們自己都不知道為什么。

            建議:由于時代因素,80后的自尊更為脆弱,從心理上就更趨向于自我保護,表現為對外界不信任。建議多了解一些社會規則,不管在什么場合,只要你在規則之內,你就是安全的,可以自由表達自己的存在價值。

            不要高傲,比你強的人有很多

            9.做事不按計劃,討厭按部就班,永遠不知道錢花到哪里去了。以同時看多部小說,守多部漫畫為榮。喜歡同時著手幾件事,忙得焦頭爛額是他們喜歡的狀態,盡管這些事情只要合理安排是完全可以按部就班輕松完成的。

            建議:欲速則不達這個道理就不用說了吧。學會制定計劃,可以避免緊急情況下全面崩盤的風險。

            怎么錢又花沒了

            10.不問問題,相信百度和谷歌的權威,多數人喜歡用搜索引擎思考,將搜索引擎作為自己的智囊。

            建議:互聯網確實給了我們許多方便,但是互聯網上的東西很多都是未經考證,經不起推敲的。所以要避免犯錯,這個地方正需要80后拿出懷疑精神來,不能依賴互聯網而使自身的學習功能退化了。
          posted @ 2008-08-26 22:07 豬 閱讀(181) | 評論 (0)編輯 收藏
          public static List openFile(File file)
          {
             List list = new ArrayList();
               File saveFile = file;
              
               try
               {
                   FileReader fileReader = new FileReader(saveFile);
                   BufferedReader bufferedReader = new BufferedReader(fileReader);
                   String str;
                  
                   while((str = bufferedReader.readLine()) != null)
                   {
                   String [] sData = str.split("\\--");
                   list.add(sData);
                   }
                   bufferedReader.close();
                   fileReader.close();
               }
               catch(Exception exc){exc.printStackTrace();}
            
               return list;
          }
          posted @ 2008-08-26 22:07 豬 閱讀(131) | 評論 (0)編輯 收藏
          JavaScript語言
          01 function compareDate(DateOne)
          02    {
          03     var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ("-"));
          04     var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ("-")+1);
          05     var OneYear = DateOne.substring(0,DateOne.indexOf ("-"));
          06  
          07     if (Date.parse(OneMonth+"/"+OneDay+"/"+OneYear) >
          08      new Date().getTime())
          09     {
          10      return true;
          11     }
          12     else
          13     {
          14      return false;
          15     }
          16  
          17    }
          posted @ 2008-08-26 22:07 豬 閱讀(330) | 評論 (0)編輯 收藏
          Java語言

          01 for(int i = 0;i < list.size();i++){
          02    dosomething(list.get(i));
          03 }
          04
          05
          06 for(int i = 0,n = list.size();i < n;i++){
          07    dosomething(list.get(i));
          08 }

          //得閑看了一眼effective java,看一眼就有新收獲
          //后一種for循環的寫法比前一種有平方級的性能提升
          //因為第一種,每循環一次都要調用一次list.size()方法
          //如果能確定list.size()固定不變,推薦使用后一種循環
          posted @ 2008-08-26 22:07 豬 閱讀(150) | 評論 (0)編輯 收藏
          想自己寫個web應用,東瞅瞅西看看,苦于沒有思路....
          posted @ 2008-08-26 22:07 豬 閱讀(175) | 評論 (0)編輯 收藏
          僅列出標題
          共27頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 Last 

          公告

          希望有一天

          我能用鼠標雙擊我的錢包

          然后選中一張100元

          按住“ctrl+c”

          接著不停的“ctrl+v”

          嘻嘻~~~笑醒~~~



          導航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統計

          常用鏈接

          留言簿(6)

          隨筆分類(102)

          隨筆檔案(398)

          文章分類

          文章檔案(10)

          有趣網絡

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 彭州市| 仁化县| 平遥县| 井冈山市| 海安县| 青龙| 蓬莱市| 张家界市| 阿城市| 隆安县| 乐平市| 枝江市| 顺昌县| 东安县| 天门市| 襄城县| 宁波市| 进贤县| 盖州市| 龙胜| 会泽县| 柞水县| 青神县| 舟山市| 若羌县| 昌邑市| 彝良县| 旌德县| 林西县| 盈江县| 杨浦区| 清新县| 黑山县| 英德市| 汶川县| 辽中县| 本溪市| 临朐县| 汶上县| 毕节市| 迁西县|