posts - 30,  comments - 28,  trackbacks - 0
              CSDN向來是以娛樂精神出名的。有網友曾笑談:“當我無聊,當我猥瑣的時候,上CSDN,總是能找到組織。”這話基本沒錯。
              曾經數次導演編程語言PK的CSDN,今天又發表了篇很娛樂很有導火索的文章

          實例演示:Java和C語言哪個更快?

              作者很娛樂地寫了堆代碼來驗證Java不比C語言快,留言的高手們也很娛樂地來繼續聲討。
              孰是孰非我也不關心,Java和C的快慢以前也層寫過一些所謂的計算程序比較過,JVM的Hostspot機制,在這種小打小鬧的“測試”下確實威力巨大。有時還真的會比完成相同計算任務的C程序快。但是不要忘了真刀真槍的環境,大型應用光一個GC就足可讓Java落后C寫的本地代碼一大截!
             無聊無聊
             


          posted @ 2007-06-06 22:39 murainwood 閱讀(266) | 評論 (0)編輯 收藏
            高級接口封裝變成了底層接口,需求幾天之內就能完全變個樣,真是奇跡!
            剩下一個月不到了,咬咬牙,邊干活邊寫論文吧。
            Dido這幾天也很累,每天短信哄她睡覺,很讓人心疼的女孩兒。

          posted @ 2007-06-06 20:08 murainwood 閱讀(213) | 評論 (0)編輯 收藏
              口袋里僅剩下20塊零五毛的時候,突然發現了錢的重要。
              于是給人做了兩個小程序,前后總共大概花了三天,拿了1000塊到手。學院還欠自己600塊的項目補助。不知道何時才能到賬上。一向不愿意計算口袋里的錢,這回終于窘迫起來。
              賺了點小米,畢業還有一個月不到,先撐過去。晚上和人吃飯,笑談一個局域網流量計費的活兒。開玩笑說一周時間,優惠價2000。怕要真有活兒,一周時間搞不定吧。說大話容易,做起來是另外回事。Dido說我有時喜歡說大話,我承認。
              論文寫了七千字,繼續努力。
              上海,我來了。雖然第一份工作并沒有想象中的好,但是,會硬著頭皮撐下去。生活給的是挑戰,喜歡挑戰。

          posted @ 2007-06-05 01:25 murainwood 閱讀(232) | 評論 (0)編輯 收藏
          ? 631所的項目已經開始了兩個月了.現在還是在做運行代理這一模塊.我算是搞核心編碼吧.被JNI,Socket,Thread,RMI整得暈乎著呢.
          ? 沒有考試壓力,沒有就業壓力.一切都平靜得很.每天睡六小時.兩杯咖啡(早晨中午各一杯).三天一包煙.中午是兩節玉米外加一大片菠蘿.兩天BT一部電影.
          ?? 一天上班7個半小時,晚上看書3小時.喜歡現在的寧靜.寧靜得如水一樣.
          ?
          posted @ 2007-01-13 12:58 murainwood 閱讀(236) | 評論 (0)編輯 收藏
              三方協議寄出去了,沒正式回到手里,學院沒蓋章之前,還是有些小小的不放心.^_^,畢竟回上海的機會太難得了.
             上海不是我家,可對我而言,對于一個遠在西北求學的人而言,至少是家門口了那天打電話告訴媽媽,聽得出來,她非常高興.
             現在才發現自己沒有想象中那么豁達,以為很多事情能放得開.以為天下之大,到處可以容身.是的,天下是很大,可是我能容身的地方卻不是如此.總有張網,心里一張網把我網住. 記得有人說過,牢籠是自己造的. 很有道理,但是我卻愿意囚禁在這籠子里.
             一片沒邊際的天,有幾個人真正敢去接受?
           打定主意回去,未來怎么樣,我沒法去想. 最起碼,回去,能給未來一個模糊可能性,我的要求不高.知足了.
              看著辦吧,一切都如田野里的百合,自然就會開的.
              我所要做的,只是去呼吸,去汲取,去曬太陽!
          posted @ 2006-11-19 06:09 murainwood| 編輯 收藏
          今天開始復習專業課,無聊的宣講會或招聘會一律不參加!
          posted @ 2006-10-21 06:19 murainwood 閱讀(254) | 評論 (0)編輯 收藏

          編程求解: 運動員打靶,10發子彈命中90環(每分成績為0到10環不等)
          ???????????????? 求可能情況的總數

          解法一:
          ?#include <stdio.h>
          #include <stdlib.h>

          int f(int n, int m)
          {
          ?int fn=0,i;
          ?if(m<0||m>10*n) return 0;
          ?if(n==1) return 1;
          ?for(i=0;i<=10;i++)
          ?fn+=f(n-1,m-i);
          ?return fn;
          }


          int main()
          {
          ?int n,m;
          ?printf("Please enter n and m:");
          ?scanf("%d%d",&n,&m);
          ?printf("\n%d發打中%d環有%d種可能.\n",n,m,f(n,m));

          ?system("PAUSE");
          ?return 0;
          }?

          解法二:

          ?#include"stdio.h"

          int main(){

          int num =1,i;
          for(i=1;i<=10;i++)
          num = num *(9+i)/i;
          printf("%d",num);
          }

          個人觀點:
          ? 計算機是一門和數學相關的學科,隨著這門學科的發展,這種"本質"似乎被弱化了.解法1是很普通的方法,一般人都是這種思路.而解法二則是從數學角度考慮.簡潔,快速.
          上次去神碼筆試,碰到一題
          ?? :給定一個數,如7899,把各位數值相加7+8+9+9=33,3+3=6,用這種方法計算機下去,求最后得到的個位數

          我給出的解法:
          #include "stdio.h"

          int main(){
          ???int i;
          ???scanf("%d",&i);
          ???printf("%d",i%9==0?9:i%9);
          ?? return 0
          }//~end?
          ?

          posted @ 2006-10-15 18:15 murainwood 閱讀(314) | 評論 (1)編輯 收藏

          有6個英文字母,a,b,c ,d,e,f
          ?從中任意取N個(N<=6)來排列.
          已知 a 只能與 b 相連,?
          ???????? b不能和e,f相連
          ?????????c不能和a相連
          ???????? d不能和 a ,e相連
          ???????????f 不能和?a,b相連
          請打印出字母f或b 在末尾的組合順序,用Java實現

          我的解答:

          ??? import java.util.*;

          /**
          ?*
          ?* @author ShenXiaoliang
          ?*
          ?*/
          public class DemoGraph {
          ?
          ?final static int VERTICE=6;
          ?
          ?private ArrayList<String> patheSet=new ArrayList<String>();
          ?
          ?private String[] ver={"a","b","c","d","e","f"};
          ?
          ?private int[][] graph=new int[6][6];
          ?
          ?private String path="";
          ?
          ?private boolean[] isVisit=new boolean[VERTICE];
          ?
          ?
          ?public DemoGraph() {
          ??
          ??initiGraph();
          ??for(int index=0;index<VERTICE;index++)
          ??depthSearch(index);
          ??show();
          ??
          ?}
          ?
          ?private void initiGraph(){
          ??graph[0][1]=1;
          ??graph[1][0]=1;
          ??graph[1][2]=1;
          ??graph[1][3]=1;
          ??graph[2][1]=1;
          ??graph[2][3]=1;
          ??graph[2][4]=1;
          ??graph[2][5]=1;
          ??graph[3][1]=1;
          ??graph[3][2]=1;
          ??graph[3][5]=1;
          ??graph[4][2]=1;
          ??graph[4][5]=1;
          ??graph[5][2]=1;
          ??graph[5][3]=1;
          ??graph[5][4]=1;
          ?}
          ?
          ?private void depthSearch(int start){
          ??
          ??isVisit[start]=true;
          ??path+=ver[start];
          ??if(path.charAt(path.length()-1)=='f'||path.charAt(path.length()-1)=='b') patheSet.add(path);
          ??for(int index=0;index<VERTICE;index++)
          ???if(graph[start][index]==1&&isVisit[index]==false)
          ????depthSearch(index);
          ???else continue;
          ??path=path.substring(0,path.length()-1);
          ??isVisit[start]=false;
          ?}
          ?
          ?
          ?private void show(){
          ??for(String pa:patheSet)
          ???System.out.println(pa);
          ?}

          ?/**
          ? * @param args
          ? */
          ?public static void main(String[] args) {
          ??// TODO Auto-generated method stub
          ??new DemoGraph();
          ?}

          }

          ?????????

          posted @ 2006-10-12 00:43 murainwood 閱讀(220) | 評論 (0)編輯 收藏
          i bought a durain in the supermarket,smelling terrible.
          i thought about durain for time,not because i miss the test of it .just for curiosity。so ugly ,so smelly and so expensive.why so many persons love this strange fruit? is it really do delicious ?
          today, i bought one.hehe.
          well,i've no idea to deal the prickly,hard "stone".so it is reasonable to ask the worker of the supermark to get it . The flesh of durain is milk white with a little yellow,just like the ice cream for its softness. the feeling is good.
          ?i put a piece of the "cream" into my mouth,so carefully and nervous . wow ,the smell is still terrible,but the taste is unexpected delicious. soft,sweet,smooth.
          ?really good!
          posted @ 2006-10-04 01:39 murainwood| 編輯 收藏
          Ubuntu is really a charming distribution of GUN/Linux . I've noticed it two months ago. The live CD instaills very easily and the "face" is beautiful . it is interesting that the X of Linux abroad is mostly Gnome while the domestic is KDE .well ,KDE looks more flamboyance for its class-style look . Gnome is simplicity comparatively. Why ? May be the people who use Linux aborad miss their Unix ,Hehe . Unix looks simplicity as well .
          ?Kubuntu is based on KDE ,it is the extending project of the Ubuntu ,seems less important than Dubuntu . But? frankly speaking ,Kubuntu looks more lovely
          posted @ 2006-10-02 03:22 murainwood| 編輯 收藏
          ? i feel a lot about the importance of English these days.The foreign corporations and the top domestic companies ask for excellent skill of English. i am so soory now?and i should learn my English well .
          ? last weekend , we talked ablout if time back up for four years ,what we would do in the future 4 years .it is the very topic .some guy said he would find a girl firend ,while the other said he would not touch the on-line game . for me ,i said i would keep away from the C++ and devote myself to learing English?.and i said i had wasted a lot time on?some courses .
          ? most of us?will regret something in the past four years . we can not catch the gone time?.but i can try my best to?make good use?time nowaday .
          ?
          ?
          posted @ 2006-10-01 00:12 murainwood| 編輯 收藏
          華為筆試題:計算字符串“010111001100....”中‘0’和‘1’連續出現的次數。

          #include<iostream>;

          void main() {

          ???char *charArray="01000111100011100111100001";
          ???int max[2]?? ?={0,0};
          ???int count[2]? ={0,0};

          ? while(*charArray){
          ??????
          ? int?? index???? =*charArray-'0';

          ? count[index]++;
          ??count[index^1] =0;

          ? if(count[index]>max[index])
          ?????? ?max[index]=count[index];

          ? charArray++;
          ? }
          ?
          ?std:cout<<"Max times of 0 is"<<max[0]<<std:endl;
          ?std:cout<<"Max times of 1 is"<<max[1]<<std:endl;
          }
          //~:end the codes

          程序代碼的藝術化,呵呵
          posted @ 2006-09-26 03:57 murainwood 閱讀(364) | 評論 (0)編輯 收藏

          自己想的一道題,算是30%原創吧?
          String a=new String("Hello");
          ? a+="World";

          ?問:a的內容最后是什么?
          ???????? 這兩個語句,共生成了幾個Java對象?

          簡單不?看樣子非常簡單吧,呵呵。
          第一問:a(確切地說a引用的內容)是HelloWorld
          ?
          第二問: 兩個語句,一共生成了幾個對象?
          ????看第一個語句,說實話,用這種方式初始化String,實在是代碼垃圾。這先不管啦。這個語句是老生長談,一個或兩個對象。
          ??? 為何?第一次執行時創建了二個, 一個為字面量"Hello"(它本身是一個String對象), 一個為new String("Hello")(它是通過new創建的, 功能上和字面量"foo"完全一樣, 但卻是另一個對象).

          第二次執行時, 只創建一個, 即new String("Hello"), 這是因為: "Hello"作為String字面量, 是存在于String Pool里面的, 第二次使用它時, 直接指向原有的String, 而不再創建新的String; 但new String("Hello")卻每執行一次都創建一個新的,完全一樣的String對象.

          ???第二個語句呢?
          ???? 3個對象。
          ???? 首先是“World”,毋庸質疑。
          ???? 那么然后呢?注意了,String是final類,不可改變。平時我們寫Java會有個錯覺,stringA+stringB就以為是前者尾巴接上后者腦袋。的確,在C/C++里就是如此。一點兒錯都沒有。
          ??? 但是Java不是,Java設計者為了更多方面的考慮,他們把String設計成了final。
          ??? 看一下JVM匯編指令吧
          ? 0:?aload_0
          ?? 1:?invokespecial?#1; //Method java/lang/Object."<init>":()V
          ?? 4:?return

          static void inti();
          ? Code:
          ?? 0:?new?#2; //class java/lang/String
          ?? 3:?dup
          ?? 4:?ldc?#3; //String Hello
          ?? 6:?invokespecial?#4; //Method java/lang/String."<init>":(Ljava/lang/String;)V
          ?? 9:?astore_0
          ?? 10:?new?#5; //class java/lang/StringBuilder
          ?? 13:?dup
          ?? 14:?invokespecial?#6; //Method java/lang/StringBuilder."<init>":()V
          ?? 17:?aload_0
          ?? 18:?invokevirtual?#7; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
          ?? 21:?ldc?#3; //String Hello
          ?? 23:?invokevirtual?#7; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
          ?? 26:?invokevirtual?#8; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
          ?? 29:?astore_0
          ?? 30:?return

          }

          仔細看一下我做的標記,JVM給我們生成了一個StringBuilder類。(我用的是JDK5,舊版本是StringBuffer類,單單這一點小改動就能讓Java的速度提高很多)。讓后用append方法載入Hello和World兩個String的引用(明確地說轉化成字符數組)。
          當載入完成后,StringBuilder實例調用toString,生成一個新的String實例(暫時稱為TempString)。
          ?最后把引用a指向TempString


          總結:兩句語句總共生成了4個或5個Java類實例

          PS:Java中沒有指針實在是太不方便了。特別是在操作原始數據類型的時候。個人認為Java應該在這點上學學C#。指針不是洪水猛獸,對優秀程序員而言,指針是編程中的一種享受。
          ??????? 希望“海豚”(Java7)能出現指針吧---很不現實,還是等開源后的Java版本吧


          posted @ 2006-08-14 03:18 murainwood 閱讀(509) | 評論 (4)編輯 收藏
          下學期會有找工作這類麻煩的事情,不過不管怎么說,還是以好好學習為主吧。
          ?1.學一種操作系統,Solaris,FreeBSD,Linux三者選一,至少達到熟練使用的程度。
          ?2.繼續學習Java,鞏固深入Java基礎,JVM,反射,JNI,JDBC,
          ?3.學會一種Web框架,一種數據庫持久框架
          ?4.放棄C++,復習鞏固深入C
          posted @ 2006-08-11 14:49 murainwood 閱讀(198) | 評論 (0)編輯 收藏

          Stack 和Heap的差別,上次華為研究生筆試題就考過。C語言的我很清楚:
          ?Stack: automatic variables within functions
          ? Heap: global variables (storage class external), and static variables

          簡而言之,最大的不同是:前者是函數變量的空間,后者是程序變量的空間

          另外,Stack上分配內存是安全的。而Heap上分配內存則沒那么爽了。調用malloc分配內存,是在Heap上開辟空間。一定要注意釋放。否則老是memory leak
          ?
          昨天有人問我JVM中的Stack和Heap的差別,當時心不在焉地照搬C語言敷衍了事。
          中午起床,沒事閑著看帖子。無意中想起這個問題,在Google搜索了一番。發現昨天的回答出了問題:
          “?It is useful to know that these two different kinds of memory exist in Java. Stack memory is the program's memory, and heap memory resides outside of the program.”

          Stack是程序內存,Heap內存存在于程序之外。這樣子看起來和C語言中地Heap有些像誒(C語言中的Heap也是在mian()之外的)。再仔細看看

          Stack memory stores primitive types and the addresses of objects. The object values are stored in heap memory.

          類實例存在于Heap。類實例的的指針在Stack中存放。難怪JVM沒有text segment ,在Stack就囊括了text segment

          這樣做的好處,就是為了實現Java的垃圾回收機制。任何的類對象實例都在Heap中,在Stack中有它們的引用。當所以的線程都不在需要某個引用時,JVM的那個資源回收線程就會把該實例從Heap當中清楚掉。

          文章告訴我,回收線程要做全局的檢測來確定某個實例是否已經“無用”了。這樣子,我們可以在代碼上做些工作,來給回收線程加速。
          Test t = new Test();
          ?t.someAction();
          ?// all done
          ?t = null;
          實例t不再有用時,就把他置為null,告訴JVM:你不用在Stack和Heap之間自己校驗啦,我已經做好了標記,放心回收吧。

          小結:Stack: Primitive data types(primitive types), the addresses of objects(=references).
          ??????????????????????? Heap:? objects.
          前者:基本類型和實例地址(引用),后者:類實例

          posted @ 2006-07-31 16:28 murainwood 閱讀(745) | 評論 (2)編輯 收藏
          這是家執著的公司,在我心目中,她遠比“特立獨行”的蘋果要偉大得多。現在的蘋果,是一名衣著怪異的流行歌手,在舞臺上耍cool。那么Sun,就是名失意的求道者。
          祝Sun一路走好,一個承載著計算機業先賢們夢想的公司。
          posted @ 2006-07-31 15:44 murainwood 閱讀(177) | 評論 (0)編輯 收藏
          ? 發發牢騷,自從課設做了SWT /JFace的客戶端應用軟件,感覺超好。優美的代碼,清晰的結構,典雅的布局,簡潔的事件機制,SWT太迷人啦。不愧為IBM的杰作,Java桌面開發的新貴。可惜就是沒人用。不就是多了和平臺相關的dll文件和幾個Jar資源包嘛,批處理寫得熟溜得人才不嫌麻煩呢,咯咯。

          ?? Swing嘛,怎么說你好呢,你得結構是很清晰,論MVC的分離性,確實我覺得比SWT做得優秀些。可是你冗長的代碼,麻煩的事件相應機制,有些讓人不習慣的布局,特別是奇怪的界面....不是偶說你,偶不想理你啦。
          ?
          ?? Java的GUI程序本來,我本來就不打算深究。精通一個SWT,了解一個Swing就夠啦

          ? 扯上個無關的,MFC,我越了解你就越討厭你,越明白你就越惡心你。還好,當初沒有誤入歧途,把你當成寶貝(反正我估計基本不做桌面軟件,^_^)
          posted @ 2006-07-31 06:12 murainwood 閱讀(783) | 評論 (0)編輯 收藏
          沒事可干,花了半小時做完了3到意法半導體的筆試題。C語言,極簡單的算法罷了,全是記事本敲,然后g++編譯。
          溫習C語言還是很必要滴。荒廢了好久,我一直喜歡用C語言的底層思維來考慮Java,Java沒有“指針”,我是一直很不爽的。
          ? 意法半導體好歹也是家不錯的公司啊?出的C語言算法題目怎么連華為的都不如?不過上次參加學院華為那個筆試,人家是特招研究生的。俺混進去給人做參考,感覺非常不錯。可惜最后沒留下個假名,手機號碼也沒寫,唉...
          ? 最丟人的還是那次法國湯姆遜,連OSI七層網絡都忘了。好好吸取教訓
          posted @ 2006-07-31 06:01 murainwood 閱讀(253) | 評論 (0)編輯 收藏

          ??? 項目第二階段,管理客戶端和管理服務器。架構C/S,技術RMI
          ??? 今天上午做了一個簡單的測試系統,用來測試前兩天所編寫的構件:寫了一遠程服務器,一個命令行客戶端。OK,編譯時也沒出錯。
          ??? 然而運行起來,可怕的事情發生了:先前寫的實體類無法傳送給客戶端。程序拋出了異常。仔細觀察,發現是產生了對象無法序列化的IO異常。
          ??? RMI底層通過TCP協議進行通訊,ObjectInputStream和ObjectOutputStream來負責對象的輸入和輸出。實在是不明白,以前做RMI系統實驗的時候,根本沒遇到這種序列化異常:傳String就傳String,傳Vector就傳Vector。
          ?? 猜想應該是我寫的那些類無法序列化的緣故。參考了API文檔,發現這個東西:MarshalledObject,可以對其構造方法的對象進行序列化(說穿了就是變成字節流)。
          ? 迅速改造了測試程序,OK,能穿對象了。但是.....序列化以后無法反序列化!天,類對象實例全部變成了組毫無意義的字節數組。
          ? 應該有其他的辦法,SUN的Java文檔實在不能和MSDN相比,太過于簡單啦。
          ? 經過3個小時的資料查閱和測試,終于找到了種正確而且異常簡單的方法:對先前的代碼進行簡單的重構:讓他們統統實現java.io.Serializable接口。只改一行代碼,全部解決!
          ? ^_^

          posted @ 2006-07-24 14:44 murainwood 閱讀(279) | 評論 (0)編輯 收藏
          這么多年來一直喜歡著那個女孩。我們是很好的朋友。喜歡她的樣子,她的笑容,她的性格和她的言談。
          這么多年,似乎也喜歡過其他的人,然而就像煙霧一樣,或長或短的時間里,慢慢消散。仿佛只留下淺淺的痕跡

          就這樣一直喜歡著她好了,也許能夠變成永恒
          posted @ 2006-07-21 22:49 murainwood 閱讀(141) | 評論 (0)編輯 收藏
          http://www.apache.org
          著名的Apache基金會官網,經常看看很有收獲

          http://www.eclipse.org
          Eclipse基金會官網

          http://saloon.javaranch.com
          翻譯過來叫Java會客廳比較好吧

          http://www.matrix.org.cn/
          不用說了,國內比較好的Java論壇

          http://www.csdn.net
          國內最大的IT開發者站點....太浮躁,很喧囂

          http://www.mindview.net/
          Bruce Eckel的網站,很值得一看




          posted @ 2006-07-21 20:29 murainwood 閱讀(174) | 評論 (0)編輯 收藏

          設置類路徑
          結構
          可通過對 JDK 工具使用 -classpath 選項(首選方法)或設置 CLASSPATH 環境變量來設置類路徑。
          ??? C:> jdkTool -classpath path1;path2...
          ??? C:> set CLASSPATH=path1;path2...
          每個 path 以文件名或目錄結尾,該文件名或目錄取決于將類路徑設置成什么:
          對于包含 .class 文件的 .zip 或 .jar 文件,路徑以 .zip 或 .jar 文件名結尾。
          對于未命名包中的 .class 文件,路徑以包含 .class 文件的目錄結尾。
          對于已命名包中的 .class 文件,路徑以包含“root”包(完整包名中的第一個包)的目錄結尾。
          用分號來分隔多個項目。使用 set 命令時,需要省略等號兩邊的空格(=)。其中 jdkTool 可以為 java、javac、javadoc,等等。有關詳細列表,參見 JDK 開發工具。
          說明
          類路徑告訴 Java 應用程序去哪里查找第三方和自定義類 -- 即不是 Java 擴展或 Java 平臺一部分的類。在 JDK 1.2 中,JVM 和其他 JDK 工具通過依次搜索平臺庫、庫擴展和類路徑來查找類(有關搜索策略的詳細信息,參見如何查找類)。
          多數應用程序的類庫都會充分利用擴展機制。因此,只有想要加載某個類庫 (a) 未位于當前目錄或其分枝包中 且 (b) 未位于擴展機制所指定的位置時,才需設置類路徑。

          如果用戶是從舊版本 JDK 升級而來,則啟動設置可能包括不再需要的 CLASSPATH 設置。這時應該刪除任何非應用程序特定的設置。有些使用 Java 虛擬機的第三方應用程序可能修改 CLASSPATH 環境變量以包括它們使用的類庫。這種設置可以保留。

          可通過在調用 JVM 或其他 JDK 工具時使用 Java 工具的 -classpath 選項改變類路徑(例如: java -classpath ...)。這是改變類路徑的首選方法。還可通過使用 CLASSPATH 環境變量改變類路徑。

          注意:JDK 1.2 缺省類路徑是當前目錄。設置 CLASSPATH 變量或使用 -classpath 命令行開關將覆蓋缺省值,因而如果想要在搜索路徑中包括當前目錄,則必須在新設置中包括“.”。
          類可以存儲在目錄(文件夾)或歸檔文件(例如 classes.zip 或 classes.jar)中。有關歸檔文件的詳細信息和類路徑的工作原理,參見本文檔最后的理解類路徑和包名。
          ?
          重要說明:JDK 舊版本在缺省類路徑中還包括 <jdk-dir>/classes 項。該目錄僅供 JDK 使用,且不用于應用程序類。應用程序類應該放置在 JDK 外部的目錄。這樣,安裝新 JDK 時不必需要重新安裝應用程序庫。為了與舊版本的兼容性,使用 <jdk-dir>/classes 目錄作為類庫的應用程序在當前版本中仍能運行,但不能保證在以后的版本中它們還能運行。
          使用 Java 工具的 -classpath 選項
          Java 工具 java、jdb、javac 和 javah 具有 -classpath 選項,在工具運行時它將取代缺省類路徑或由 CLASSPATH 環境變量所指定的類路徑。這是改變類路徑設置的推薦方法,因為這樣每個應用程序可具有它所需的類路徑而又不會干擾其他應用程序。
          運行時工具 java 和 jdb 還具有 -cp 選項。該選項是 -classpath 的縮寫。

          對于非常特殊的情況,java 和 javac 都具有開關,使得可改變它們使用的路徑以查找它們自己的類庫。但是,絕大多數用戶從來都不會用到這些開關。

          使用 CLASSPATH 環境變量
          如前一節中所述,一般用戶將想要使用 -classpath 命令行選項。本節將介紹如何設置 CLASSPATH 環境變量或清除以前安裝遺留下的設置。
          設置 CLASSPATH
          在 DOS 提示符下,可用 set 命令修改 CLASSPATH 環境變量。其格式為:
          ?? set CLASSPATH=path1;path2 ...
          路徑應該以指定驅動器的字母開頭,例如 C:\...。這樣,在偶然切換到不同驅動器時仍可找到類(例如,如果路徑項以 \... 開頭,并且當前位于驅動器 D: 上,則所需的類將在 D: 而不是 C: 驅動器上找)。
          清除 CLASSPATH
          如果 CLASSPATH 環境變量被設置成不正確的值,或啟動文件或腳本程序設置了不正確路徑,則可通過使用下列命令清除 CLASSPATH:
          ? C:> set CLASSPATH=
          該命令僅清除當前會話的 CLASSPATH。要確保在以后的會話中具有正確的 CLASSPATH 設置,則應該刪除或修改啟動設置。
          更改啟動設置
          如果在系統啟動時設置 CLASSPATH 變量,則查找它的位置取決于所使用的操作系統:
          ? 操作系統 方法
          Windows 98 和
          Windows 95 檢查 autoexec.bat 文件中的 set 命令。
          Windows NT 啟動“控制面板”,選擇“系統”,單擊“環境”選項卡,并在“用戶變量”部分中,檢查 CLASSPATH 變量。

          理解類路徑和包名
          Java 類被組織成包,而這些包被映射到文件系統中的目錄。但是與文件系統不同的是,無論何時指定包名,都應指定完整包名 -- 永遠不要僅指定它的一部分。例如,java.awt.Button 的包名總是應指定為 java.awt。
          例如,假定想要 Java 運行環境在包 utility.myapp 中查找名為 Cool.class 的類。如果該目錄的路徑為 C:\java\MyClasses\utility\myapp,則應該將類路徑設置成包含 C:\java\MyClasses。

          要運行該應用程序,可使用下述 JVM 命令:

          C:>? java -classpath C:\java\MyClasses utility.myapp.Cool
          當該應用程序運行時,JVM 使用類路徑設置查找在 utility.myapp 包中定義的任何其他類。
          注意:應在命令中指定完整包名。例如,設置類路徑包含 C:\java\MyClasses\utility 并使用命令 java myapp.Cool 是不可能的,因為這找不到該類。

          (您可能想知道用什么定義類的包名。答案是:包名是類的一部分,并且不能修改,除非重新編譯該類。)

          注意:包規范機制一個有趣的結果是,屬于相同包的多個文件實際上可存在于不同的目錄中。對于每個類,包名都是相同的,但是每個文件的路徑可從類路徑中的不同目錄開始。
          文件夾和歸檔文件
          當類存儲在目錄(文件夾)中時,例如 c:\java\MyClasses\utility\myapp,則類路徑項指向包含包名第一個元素的目錄(在這里為 C:\java\MyClasses,因為包名是 utility.myapp)。
          但是當類存儲在歸檔文件(.zip 或 .jar 文件)中時,類路徑項則是該 .zip 或 .jar 文件的路徑。例如,要使用位于 .jar 文件中的類庫,則命令應該類似下述形式:

          ?? java -classpath C:\java\MyClasses\myclasses.jar utility.myapp.Cool
          多重指定
          要在目錄 C:\java\MyClasses 和 C:\java\OtherClasses 中查找類文件,則可將類路徑設置為:
          ?? java -classpath C:\java\MyClasses;C:\java\OtherClasses ...
          注意兩個路徑之間用分號分隔。
          指定次序
          指定多個類路徑項的次序是相當重要的。Java 解釋器將按照目錄在類路徑變量中的次序在各個目錄中查找類。在上例中,Java 解釋器首先在目錄 C:\java\MyClasses 中查找需要的類。只有當它在該目錄中沒有找到該類時,解釋器才能到 C:\java\OtherClasses 目錄中查找

          posted @ 2006-07-20 20:29 murainwood 閱讀(248) | 評論 (0)編輯 收藏
          ? “C++比Java快”,“Java運行于虛擬機上,當然要比C++慢”,“C++生成的是本地代碼,直接運行于本地硬件上”,“速度比Java快多了”......
          ??? 這是我一年前學Java時的想法,為什么有那些想法?很簡單,人云亦云罷了。既然那么多“高手”都這么說,那么多“精通”Java和C++的人都那么說,自然而然就信了。
          ??? 就這么過去了一年,對Java也越來越熟悉。自己依然是個初學者,而且相信不上升到布盧斯.艾克爾那個高度,就別想說自己精通C++和Java!
          ??? 雖說仍舊是初學者,卻對國內那些“高手高手高高手”們的一些言論有了懷疑:Java不比C++慢!然而無論我在哪個論壇上,那個技術群里頭發表這個觀點,立刻會有一群“高手”來糾正,甚至有一次一個號稱“一般不學語言,要學兩個禮拜就能搞定”的“高手”很鄭重其事地向我說明原理。當我了解到此人Java才學了一個月的時候,實在是無語了。還要一次一個高手批駁我,于是乎小心問了句,了解C語言里malloc和free函數的機制與否。此“高手”很不屑地告訴我:C++里的new 和 delete就能搞定,malloc早就沒用了。又無語:也許他用的“C++"是他自己發明吧。
          ?? 只想問一句那些“高手”,看過近年來Java PK C++的一些精彩報告沒?那些報告可是國外權威機構的文獻啊!是通過實驗得來的數據!
          ?? 還想問一句:你們說Java慢,是什么人,什么時候說的?那些言論的源頭,大多數是Java 1.2時代以前的啊。
          ? 說Java比C++慢的人,是否真的親自寫過測試代碼?(雖說我的代碼不能算精確,但也好歹做過近十次的實驗,用了好幾種不同的JVM或Cpp編譯器,Java大獲全勝)
          ? 說Java比C++慢的人,是否了解JVM的運行機制?(我只能說我了解一些罷了)
          ? 說Java比C++慢的人,是否有拿得出手的報告或實驗?(可惜,從來沒遇到過)
          ? 說Java比C++慢的人,請去學習一下唯物論!
          ??而且為什么只有在國外才有那么多人認為Java快,只有國外的科研機構才花費時間和精力去做那些被很多國內程序員斥為“沒用”(和好多程序員聊天時,他們這么認為)的實驗?是中國的程序員都是天才么?還是中國的計算機業太“先進”了,不需要去關心這些東西呢?
          ? 實在是發人深省!!!
          ???
          posted @ 2006-06-29 06:22 murainwood 閱讀(5228) | 評論 (19)編輯 收藏
          ?? 微軟的J#我從開始接觸就覺得是個比較有趣的東西:一個長得特像Java的混血兒。
          ?? 前些天逛論壇,偶見一群人在討論J#的前途問題,很多人說那東西“根本不如C#”,“甚至還不如VB。NET”。我的想法是:他們根本不了解.NET。
          ?? J#的目的是為了Java程序員能遷移到.NET平臺而開發的。換而言之,J#是Java程序員準備的,而不是初學者。誠然,我認為C#擁有更優雅的語法,但是對于.NET這個平臺本身而言,無論用什么語言(當然是在.NET上的程序語言),它們最終都是CLR。VB。NET,C#,J#,Delphi.NET.....各種語言的優劣在已經變得很不重要了--你熟悉那種,那種就是最好的!因為它們本質上幾乎沒差別的,極端說法是,.NET 語言僅僅是”外觀“不同罷了。
          ??? 就這點來說,.NET要比Java更有靈活性,雖然我是Java的忠實跟隨者。
          ??? 不過我們也看到了關于Java的一些有趣的新聞:去年出現了一種JPython,用Java翻譯的運行于JVM上的“Python”。呵呵,不妨大膽地猜測,未來會出現更多的"JC++","JPascal",:JBasic",甚至是“JC#”,那么那時,Java會更像一個平臺,語言的靈活性將更高!
          posted @ 2006-05-30 07:43 murainwood 閱讀(365) | 評論 (1)編輯 收藏

          據人說效果特別好,在Watson's 有的賣。
          問題是,西安好像只有一家Watson's 專賣店,在南大街,怪遠的,天熱怕跑。記得去年易初蓮花Watson's干姜汽水和蘇打水大降價,我還買了老多,只是不知道那里有那牙膏沒?
          效果好的話,給表哥推薦,縣城就有Watson's專賣店,門面要比西安的氣派多了,導購MM也比南大街那家要漂亮。
          唯一不爽的是價格有些貴,33塊誒。

          posted @ 2006-05-17 02:29 murainwood 閱讀(885) | 評論 (0)編輯 收藏
          整個長假幾乎什么事情也沒做,除了睡覺發呆和無聊。 或許這才是我所需要的,前段時間太忙,以至于有些神經衰弱。而這幾天覺睡得出奇地香。 唯一出過門就是五一那天去買了個手機和今天陪老馬買電腦。西安五一的街頭,總是人頭竄動,恐怕毛賊也多吧。 過了這個長假,又得“玩命”起來了。
          posted @ 2006-05-06 17:30 murainwood 閱讀(154) | 評論 (0)編輯 收藏
          ??? 難得今天早起,更難得早上有個好精神。起床喝了杯咖啡,聽了一會兒洛卡泰利長笛。
          ??? 今天上周四的課,一天都是實驗。有我最鄙視的VB,也有感覺最棒的系統編程。一直想在課表上把“系統編程”改名為“藝術編程”。
          ??? 昨天晚上慶慶告訴我她決定考研,善變看來是女孩子們的普遍的性格。不過現在,的確到了決定些什么的時候了。
          ??? 自認為不適合在象牙塔里自度春秋,所以旁人的決定對我絲毫沒有什么影響。很慶幸父母一直尊重我的選擇。從高考填報志愿,到是否考研。基本上都是自己說的算。
          ??? 父親只是告訴我路永遠是自己的,不過既然自己選了,就一定要努力去走好!當他對我說這話時我明白,這也他這輩子唯一的格言。
          posted @ 2006-04-29 08:30 murainwood 閱讀(161) | 評論 (0)編輯 收藏
          ????? 周末對現在我來說,實在是稱不上周末。
          ????? 今天頭暈了一天,部分是給那個HTML整壞的。終于體會到用記事本寫HTML語言是多么痛苦的一件事情。 英語三天沒復習過,六級還沒過,是有些著急。寒假的時候還計劃這學期復習日語考級,可惜這個計劃看來是沒法實施,推后到大四再說吧。寒假還有個完善“文曲星”GVmark編譯器和擴充GVmark類庫的打算,現在也只能Say Sorry
          ????? 慶慶改用MSN,這才發現我的MSN終于有用了。昨天打電話回家,老爸問我QQ,居然忘了^_^.
          ????? 現在我唯一要做的,就是珍惜時間。長這么大,第一次這么自覺。
          posted @ 2006-04-23 23:48 murainwood 閱讀(149) | 評論 (0)編輯 收藏

          ???? 很經典的"轉圈數數踢人"問題,老早以前做的東西
          ???? 這里是我的解法,利用STL里的List構建Ring List
          ???? 頭文件:
          ? //:This part is partly from Bruce Eckel's source code .
          // thought he don't hear of me at all ^_^
          // Making a "ring" data structure from the STL
          #ifndef RING_H
          #define RING_H

          #include<iterator>
          #include<list>
          using namespace std;

          template <class Type> class Ring{
          ?list<Type> lst;
          public:


          ?class iterator;
          ?friend class iterator;
          ?class iterator :public std::iterator<std::bidirectional_iterator_tag,Type,ptrdiff_t>{
          ??typename list<Type>::iterator it;
          ??list<Type>* r;

          ?public:
          ??iterator(list<Type>&lst,const typename list<Type>::iterator& i):it(i),r(&lst){}

          ??bool operator==(const iterator& x)const{
          ???return it==x.it;
          ??}

          ??bool operator!=(const iterator& x)const{
          ???return!(*this==x);
          ??}

          ??typename list<Type>::reference operator*()const{
          ???return *it;
          ??}

          ??iterator& operator++(){
          ???++it;
          ???if(it==r->end())
          ????it=r->begin();
          ???return *this;
          ??}

          ??iterator operator++(int){
          ???iterator tmp=*this;
          ???++*this;
          ???return tmp;
          ??}

          ??iterator &operator--(){
          ???if(it==r->begin())
          ????it=r->end();
          ???--it;
          ???return *this;
          ??}
          ??iterator operator--(int){
          ???iterator tmp=*this;
          ???--*this;
          ???return tmp;
          ??}

          ??iterator insert(const Type& x){
          ???return iterator(*r,r->insert(it,x));
          ??}
          ??
          ??//I have to recognize that the iterator is not so smart as
          ??//we expected .If the element in the list is erased ,the
          ??//iterator will be lost and point to a null.The shortage of
          ??//the stupid iterator will been seen the the Josephus.cpp
          ??//we have to use a template variable to storage the next iterator
          ??//of the deleting iterator.If not ,the programe will be nightmare
          ??iterator erase(){
          ???return iterator(*r,r->erase(it));
          ??}

          ?};

          ?void push_back(const Type& x){lst.push_back(x);}

          ?iterator begin(){return iterator(lst,lst.begin());}

          ?int size(){return lst.size();}

          };
          #endif

          實現文件:
          //:Using circle list to solve Josephus problem
          //:version 1.01
          //:author Murainwood 12/3/2006
          #include<iostream>
          #include"Ring.h"

          void? main(){

          ?//enter the number of people and the index

          ?int n,m;
          ?cout<<"Enter the Number of Contestants?";
          ?cin>>n>>m;
          ???
          ?
          ??? Ring<int> ring;
          ?for(int i=1;i<=n;i++) ring.push_back(i);

          ?//determine the iterator
          ?//it is reasonable? to declare two iterator

          ??? Ring<int>::iterator tmp=ring.begin();
          ?Ring<int>::iterator it=tmp;
          ?
          ?//without the iterator tmp ,if we erase the it
          ?//the it will lost ,so the loop can not? work

          ?for(int index=0;index<n-1;index++){
          ???it=tmp;
          ??for(int j=0;j<m-1;j++){it++;tmp++;}
          ???tmp++;
          ????? cout<<"Delete person"<<*it<<endl;
          ???it.erase();
          ???
          ?}
          ?it=ring.begin();
          ?cout<<"The result is person"<<*it<<endl;
          }

          //:finished

          ???? 這個Ring List有很高的效率和安全性,并且通用性也比較好
          ???? 這里也發現個問題,就是STL里的Iterator 還不夠"聰明",這也是為什么我會在程序里多加個迭代器:tmp,
          因為如果我調用了it.erase();那么這個迭代器就丟失了,程序也就無非運行下去.
          ???? 這樣我們很容易地想,如果調用了it.erase()后,指針不是丟失,而是指向下一個元素該多好啊!
          ???? 很遺憾,現階段標準STL庫里的List沒有這個功能.猜想是因為List的物理存儲結構的緣故,如果讓他的迭代器變得如我們想像得那么"聰明",那么花費可能會有些大.
          ??? 還沒有驗證過boost庫,不知道那里的迭代器是否會更人性化些
          ???? 有時間研究一下相關的STL源碼,寫一個"聰明些"的迭代器.

          posted @ 2006-04-18 00:10 murainwood 閱讀(651) | 評論 (0)編輯 收藏

          ???????生于公元1984年,巨蟹座.
          ?????? 童年是在家鄉小鎮的鎮政府大院度過的.大院外邊就是小鎮短短的街道.一條不算寬的運河在鎮邊緩緩
          流淌.
          ?????? 小鎮對于我而言,是春天田野里的油菜花,夏天晚上的星星,秋天路邊的法國梧桐,和冬天翠綠的竹園--我可愛的小鎮被田野所環抱著.
          ?????? 小時候很文靜,幾乎像個女孩子一樣乖.
          ?????? 小學,初中,都是在小鎮上的.
          ?????? 十六歲之前我的世界,大部分都是那個長江岸,黃海濱的小鎮.
          ?????? 十六歲那年考上了縣城里的高中,縣城離有十五分鐘車程.
          ?????? 縣城也很小.一座精致的海邊小城,雖說是城市,可大多數居民卻也過著閑淡的生活.
          ???????三年后,我想去看看外邊更遠的世界,來到了西安,這座和我家鄉截然不同的世界.
          ??????
          ??????

          posted @ 2006-04-13 03:45 murainwood 閱讀(271) | 評論 (1)編輯 收藏
          <2006年4月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          如果真的給你一片天,你敢不敢要?

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          相冊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 靖宇县| 民勤县| 宾阳县| 五指山市| 米泉市| 宽甸| 阿拉善右旗| 谷城县| 南和县| 田东县| 邢台市| 永安市| 定南县| 永德县| 曲水县| 阿合奇县| 夏河县| 永寿县| 汝城县| 太湖县| 霍林郭勒市| 垦利县| 山东| 马龙县| 铁岭市| 革吉县| 托克托县| 南充市| 恭城| 勃利县| 昭觉县| 南和县| 林西县| 白朗县| 碌曲县| 青河县| 舟曲县| 武山县| 昌平区| 嫩江县| 青龙|