• #include<iostream>
    #include<string>
    using namespace std;


    // 很奇怪的现象!如果传入参数不是"hello",是不是不会返回了呢?
    // 结果是:返回a!!
    string test(string t)
    {
        string a="what?";
        if(t=="hello")
        {
            a="world";
            return a;
        }
        // 这里无返回!
    }

    int main()
    {
        string t;
        while(cin>>t)
        {
            cout<<test(t)<<endl;
        }
        return 0;
    }               

  • ● java禁止块嵌套变量定义。
    ● boolean值一定是false或true,不可为1或0。
    ● 在java中int整型占4个字节,与平台无关,而C++与目标机器和操作系统相关。
    ● 在java中没有unsigned类型。
    ● 返回可变对象时,要用到clone技术,该对象要支持clone,实现cloneable接口。
    ● 每一个类都可以有一个main函数,方便单元测试。
    ● static数据域用类名访问或static方法,不推荐后者。
    ● "string"+2结果是"string2"。
    ● Java中参数传递是值传递,即使是可变对象(值为对象的引用,此时最多改变原参数对象的状态)。
    ● 类域会自动初始化(0或false或null),而局部变量则不会!
    ● Java可直接初始化类数据域,C++则不行(有一个初始化列表,在java中没必要,因没有子对象,只有引用)。
    ● 构造器可调用另一个构造器,而C++不行。
    ● 目录与包名不一致,可能可以编译,但无法解释运行(找不到class文件)。
    ● 由于包的可见性,类中的数据一般都应该private。(现在有了包密封jar技术)。
    ● Java中的继承都是公有继承,并取消多继承(多余的机制)。
    ● Java子类不可访问超类的私有成员,可用公用接口(super.F())。
    ● Java的多态默认处理方式是动态绑定。
    ● 可将子类放入超类数组,取出时强制转换(先用instanceof检查)(不推荐,可考虑超类的设计)。
    ● 抽象类不一定包括抽象方法,包括抽象方法的类一定是抽象类。抽象类不能实例化,但可引用其非抽象子类的实例。
    ● getClass返回一个非空对象的类型名称。
    ● 定义类时最好重写equals、hashCode、toString方法,必要时加个clone。
    ● 接口无实例域,只有未实现的方法(默认公有)和常量(默认公有静态final),可继承。
    ● 内部类可访问外围类实例域,并由编译器为内部类构造器添加外围类引用(outerClassName.this)。
    ● 局部内部类只可访问final局部变量。
    ● 静态内部类没有访问外围类的特权。
    ● AWT将处理用户界面元素的任务交给目标平台本地GUI工具箱,“一次编写,到处运行”,但结果是:1. 外观依赖于平台。2. 可移植库小。 3. “一次编写,到处调试”。
    ● swing实现所有平台外观一致性、平台相关的bug少、丰富便捷的元素集合。
    ● 异常处理原则:早传递(throws),晚处理(catch)。不可替代简单测试。无需也无法处理系统error和runtimeerror。
  • 真是年年月月花相似,月月年年人不同啊。年年如此,同样的热闹场面,同一条“中山大学欢迎你”的横幅,却不同一样的心情。看着师弟师妹们才刚刚开始崭新的大学生活,回想自己匆匆而过的三年大学生涯,总是有那么多的遗憾。越来越明白,为什么很多人觉得“死而无憾”便满足了。真的,有多少人到了老了回想人生的时候,会没有任何遗憾呢?

    人一多,就挤了...真的很多很多人,吃都吃不完的人...幸好那个什么瑞氏食堂开了,不过听说好贵...

  • svn常用用法

    2007-08-27

    本次为了和浩霖他们合作建立一个题库,再次用到了Netbeans+Subversion这两个工具。关于svn,尽管是第二次使用,用法却已记不清。为了防止下次再用时另找资料的麻烦,现把它记下来。

    1. 创建版本库命令:svnadmin create /path.

    2. 由于NetBeans在导入库时要用户密码,在svnserve.conf文件中去掉密码注释,在passwd文件中增加用户名和密码。

    3. 用NetBeans导入库中。URL为svn://172.18.33.129/path(例子)。

    4. 打开svn服务器的命令:svnserve -d -r path(path目录中包含版本库)。

    5. 用svn的命令签出版本:svn co svn://172.18.33.129/path/projectName

    6. 用svn的命令行提交:svn commit -m "what you commit".

    7. 用svn的命令行更新:svn update。

    8. 也可以在IDE NetBeans中签出、提交和更新,但经验是:在IDE中提交没问题,但是签出和更新则有时会出错。建议用命令行进行签出和更新。

    9. 提交版本时最好先更新,以便在出现冲突时在本地解决。

    10. 避免冲突的办法是约定好每个Team member允许修改哪些文件,实在需要修改到其它文件时,应先用其它方式(如QQ)通知其它的Team members。

    当然啦,我上面所提到的用法只是svn的皮毛而已,它还有很多强大的版本控制功能,可以参考:http://svnbook.red-bean.com/

  • 回校

    2007-08-18

    Tag:人生路
    在家里待了五天,今天终于回到了学校,带着好好吃的牛肉丸,也带着一身的惆怅……
  • 快速排序

    2007-08-03

    #include<iostream>
    #include<time.h>
    using namespace std;
    const int N=10; // the length of the array will be sorted
    int a[N];
    int GetRandInt(int min, int max) // min<=x<=max
    {
        static bool Init=true;  
        int rc; 
        if(Init)  
        {  
            srand(time(NULL));  
            Init=false;  
        }  
        rc=(rand()%(max-min+1)+min);  
        return rc;  
    }
    void RandA() // init the array: a
    {
        for(int i=0;i<N;i++)
        {
            a[i]=GetRandInt(0,100);
        }
    }
    inline void Swap(int &a,int &b)
    {
        int tmp=a;
        a=b;
        b=tmp;
    }
    int Partition(int data[],int start,int end)
    {
        int i=start;
        int j=end;
        int tmp=data[start];
        while(i<j)
        {
            do{i++;}while(data[i]<tmp);
            do{j--;}while(data[j]>tmp);
            if(i<j) Swap(data[i],data[j]);
        }
        data[start]=data[j];
        data[j]=tmp;
        return j;
    }
    void QuickSort(int data[],int i,int j)
    {
        if(i<j)
        {
            int mid=Partition(data,i,j);
            QuickSort(data,i,mid);
            QuickSort(data,mid+1,j); 
        }
    }
    void Display(int data[],int n)
    {
        for(int i=0;i<n;i++)
        {
            cout<<"a["<<i<<"]="<<data[i]<<endl;
        }
    }
    int main()
    {
        RandA(); // init array: a with random int between 0 to 100
        cout<<"Before sort:"<<endl;
        Display(a,N);
        QuickSort(a,0,N);
        cout<<"After sort:"<<endl;
        Display(a,N);
        cout<<"Successfully end"<<endl;   
        system("pause");
        return 0;
    }
  • 加油!

    2007-07-31

    转眼之间,暑假已经过去了一半。时间不饶人啊~~得抓紧时间做事情啦!未来就掌握在现在的手中~是成为牛人还是人牛,在此一搏了。

  • 计数排序

    2007-07-31

    #include<iostream>
    #include<time.h>
    using namespace std;
    const int N=10; // the length of the array will be sorted
    const int M=N; // the element in the array range 0 to M-1
    int a[N];
    int b[N];
    int c[M];
    int GetRandInt(int min, int max) // min<=x<=max
    {
        static bool Init=true;  
        int   rc; 
        if (Init)  
        {  
            srand(time(NULL));  
            Init=false;  
        }  
        rc=(rand()%(max-min+1)+min);  
        return rc;  
    }
    void RandA() // init the array: a
    {
        for(int i=0;i<N;i++)
        {
            a[i]=GetRandInt(0,M-1);
        }
    }
    void displayA() // display the array: a
    {
        for(int i=0;i<N;i++)
        {
            cout<<"a["<<i<<"]="<<a[i]<<endl;
        }
    }          
    void displayB() // display the array: b
    {
        for(int i=0;i<N;i++)
        {
            cout<<"b["<<i<<"]="<<b[i]<<endl;
        }
    }
    void Jsort()
    {   
        for(int i=0;i<M;i++) // init the array: c with 0
        {
            c[i]=0;
        }   
        for(int i=0;i<N;i++) // count the number of elements
        {
            c[a[i]]++;
        }
        for(int i=1;i<M;i++) // count the accumulate number of elements
        {
            c[i]+=c[i-1];
        }
        for(int i=N-1;i>=0;i--) // the purpose of decline is assure stable sort.
        {
            b[c[a[i]]-1]=a[i];
            c[a[i]]--;
        }   
    }    
    int main()
    {
        RandA(); // init array: a with random int between 0 to M-1
        cout<<"before sort:"<<endl;
        displayA();
        Jsort();
        cout<<"After sort:"<<endl;
        displayB();
        cout<<"successfully end"<<endl;   
        system("pause");
        return 0;
    }   
  • 这是一片荒芜的绿洲,已经有一个星期没来更新我的blog了。可能大家也都在为着我们那个未知的未来而忙碌着哈。一想到未来就感慨良多。嗯,将来会是怎样的呢?而我又是希望有一个怎样的未来呢?人生在世,什么样的生活才是幸福的,开心的?常常在幻想着未来的生活,而在想象中的自己往往是很厉害的人物,或者是做业界的一个成功人士,或者是成为一个百万富翁,然后就可以做什么做什么之类的。但是,那仅仅是幻想。偶尔想一想是无妨的,但不可当真。当我calm down下来仔细想想,其实在我内心,对于未来的要求很低。我一贯都是很低调的人。平平淡淡,有什么不好?只要能够开开心心过个小康生活,做上个中产阶级,已经是很幸福的事情了。有当牛人的机会就要好好把握,没有也不用太沮丧。不要骂我胸无大志,毕竟牛人不多(如果大家都是牛人,那么其实大家都不牛了^^)。头顶一片天,太阳只有一颗,星星却有成千上万。“尼采想当太阳,结果疯了”。其实,如果当不了太阳,成为一颗流星,也是相当漂亮的。

    话说回来,没有钱也是万万不能的,我还是会努力赚钱。但是,我不会把很多很多钱作为我的最终目标,钱也只是我实现“开开心心过生活”的一个必要手段。当然啦,每个人都有自己的生活原则和生活志趣,对于幸福的看法也不尽相同,所以我也不打算说服别人来同意我对生活的看法。正如有一名言:我同意你有不同意见,但是我不同意你的意见。不管怎样,我心中都在祝愿着,愿朋友们一生幸福!

  • 软考结果

    2007-07-23

    全国软件设计师考试的成绩终于出来了~~嗯,考得还可以,上午68分,下午67分,总分就是135了(满分上下午各75,总150分)。这一次的出题的确不难,不少人都过了呢~~ ^^