PEIGANG's profile铁匠铺PhotosBlogLists Tools Help

Blog


    March 08

    目标

        在公司里工作一年多了,忙忙碌碌的为了生存。记得同事曾经转给我一篇文章--活着是为了什么?看来他比我早的就开始考虑这个问题了。这可能是我住在家里和父母在一起,有时候工作上遇到心烦的事情也能有人聊一聊,但对于那些家在外地的同事来说,可能没有我这样幸福了。回想起我读本科和研究生的那些日子,虽然有很多的遗憾,但至少还算是没有白白的混日子吧。我当时能够这样坚持下来,除了家人和同学的支持,我想那就是我还能有一个生活上的目标。现在,我还是需要这样一个目标,不然生活就会想茫茫大海上的一叶小舟,随波逐流了。
    October 27

    聊胜于无

            前几天想在这上面写点什么,但网页偏偏总是说有问题无法发布。今天,倒是能发布了,但我却写不出什么了。就这样吧,聊胜于无。呵呵。
    September 24

    由一个javaGUI程序想到的

    最近帮师兄写了一个很小的java界面程序,然后去调用一个exe程序,去完成实际的工作。 程序在不打包的时候运行的一点问题都没有。但一到打包问题就来了。先是一些图片资源没有正确载入,这也是个老问题了,以前就遇到过,当时没有仔细解决就放过去了。这次饶不过去了,还好很快从网上找到了解决的办法。于是,把界面程序和exe程序打成了一个jar包,交给师兄。
    结果没几天,师兄就和我说那个jar包在离开工程目录的时候没法用。我当时还把jar包拷到其他目录去验证过图片资源的载入问题,但就是没有再多点几下按钮,试试程序好不好用。
    从这事我就想到以前看到义明在开发的时候由于没有做一些测试而出现的一些问题,当时我还对自己说,以后自己可要多测试一下自己程序,不要犯同样的错误。没想到,我自己确造出了一个大大的笑话:能跨平台运行的java程序,让我搞成了连硬盘分区都跨不了的蹩脚程序。
    经常是对自己的程序过于自信了,能运行就行,没有质量可言。
    June 07

    高考+=新技术

         这几天在新闻上又看到了关于高考的消息,一年一度的高考在不知不觉又要开始了。现在考试时,预防作弊的方法已经逐步升级,各种新技术不断应用。刚才看了一条消息,是关于考生答题要注意的问题。可能是最近一两年没有参加什么重大级别的考试,我对现在如何答题都有些落伍了。那条消息说了很多注意事项,其中有:答案要用0.5mm的签字笔写在指定区域,写错了要用“==”这样的修改符划去,写在答题区外的无效,不能在答题纸的图象校正框内做记号,等等。我想,每个参加高考的人都会在考试时多少有些紧张,以前没有这些条条框框时只要集中精力想着怎样去答题就可以了,而现在还要分出精力来在下笔时注意不要写错地方,抓紧时间涂写答题卡。不过对那些普通考生来说,这样做只是增加了一些无谓的紧张和浪费时间。
         这样做我估计可以降低阅卷时人为因素的干扰,并提高阅卷的速度,从这个方面对考生来说可能是件好事。考试本来是一件很单纯的事情,但因为有各种各样的人为因素的干扰,就要采取另一些人为措施来减小这些人为干扰。这样继续下去,考试的形式只能是越来越复杂,最终承担这些负荷的只能是众多的普通考生。
    April 08

    Yes to Life

        今天下午,天气相当的好,像往常一样,我又沿着环海路慢跑去了。看着路旁的草地已经是青绿青绿的了,还有几只灰喜鹊和小麻雀飞过,加上温暖的阳光,一路上跑的非常惬意。看着那些出来休闲的人们,也都是非常的愉悦。我也在想最近一位同学的事情,有的时候生命就是这样脆弱,生与死就是一瞬间的事情。一个鲜活的生命有可能就这样离我们而去了,而我们又无能为力。

       佛教认为人生下来就是要受苦的,我认为是对的。生命中就是这样充满了各种各样的痛苦,但我们不应因痛苦而对生活失去希望和信心,生活中也同样充满了各种各样的快乐,要学会自己去寻找快乐。痛苦的时候,回想一下那些曾经的快乐;快乐的时候,更加珍惜现在所拥有的一切。生活真的是很美好的,愿每个人都能感受到,无论他/她在什么地方。

    March 27

    又是一年花开时

          刚才在宿舍发现栽的小白菜已经开出了几朵小小的黄花,这让我想起去年也是在这个时候开始写起了BLOG,当时也是因为栽了一颗小白菜,因此就以白菜花做了域名。
          不知不觉间一年的时间就这样过去了。回想当时,实验室里的师兄师姐们正忙着准备开题,而现在也轮到我们忙着准备开题了。再说下去就是毕业离校了。。。
          又是一年花开时,又是一次分别时。
    March 20

    Das Boot-从海底出击

           几天前在5Q上下载了这部影片。这是1981年的一部老片了,影片用了3个小时的时间讲述了二战期间,德国一艘潜艇出海巡航作战的故事。这艘潜艇在艇长的指挥下,历经各种各样的险境,最后回到基地,本以为平安无事了,但结果却是出人意料,很令人回味。以前也看过德国人拍摄的反应二战的影片,如《斯大林格勒》,《第三帝国的覆灭》。感觉德国的这些战争片,制作上力求真实,音乐也给人以很深刻的印象,让人思考战争到底给人们带来了什么。
    March 03

    如何调整虚拟内存大小

    1. 在XP操作系统下,打开‘我的电脑’属性窗口。
    2. 在‘属性’窗口中选择‘高级’选项页。
    3. 点击‘高级’选项页的第一个选项‘性能’中的设置按钮,将出现‘性能选项’窗口。
    4. 在‘性能选项’窗口中,再次选择‘高级’选项页。
    5. 在此页的最下面是虚拟内存选项,点击‘更改’按钮,出现‘虚拟内存’窗口。
    6. 在‘虚拟内存’窗口中选则想要更改虚拟内存的驱动器,选择‘自定义大小’,根据自己机器
    的情况填入数值,不要太大也不要太小。之后点击‘设置’按钮,即完成对某个驱动器上的虚拟内存大小设置。
    7. 设置完成后依次点击‘确定’按钮。
    提示:并不是每个驱动器都需要设置虚拟内存。
     
     
    December 01

    移动全球通之我能

    镜头一:上午10:05,某大学研究生宿舍床上,一个躺在被窝中的研究生说:“对我来说,每天早上能够早起并吃上早饭是一件很困难的事情,但每个人心中都有他自己的目标,我相信,我能。”
     
    镜头二:早上6:15,一个边走边啃着馅饼,走向图书馆的大四考研学生说:“在我心中,有一个山峰,那就是考入东南大学,我会登上那座山峰的,我能。”
     
    镜头三:深夜12:35,一个正在埋头苦学,睡眼惺忪的高三学生说:“我要考入清华大学,虽然那是一件很困难的事情,但我会为之奋斗,我能。”
     
    以上内容,如有类同,未必巧合,倘若不同,谢天谢地。
    November 08

    好学的蜘蛛

      不经意间看到一只小蜘蛛爬到了显示器的散热孔上,心想可能是天冷了它也想找个有暖气的地方呆着。刚要伸手捉住它,它却顺着散热孔钻了进去。对面的师兄说:“看来这只蜘蛛很爱学习,想进去学习学习”。我也说这只蜘蛛不愧是搞过局域网的,不过它要想学习的话最好还是应该从网卡那里进入,那样才能学到因特网的知识。
    October 26

    1st anniversary in the lab

    It has been for more than a year in the lab. During the year, I have experienced happiness and sadness. There is an old saying in China: In the BenMingNian, a person will be great lucky or great down. I guess I belong to the latter one. Well, this may not be a bad thing; I also learn a lot and think a lot during the down time.

    I think I am a person who don’t like being in an idle state. Everyday, I study the major materials and the Web technique which I have interest in. Sometimes, I feel very tired, especially when I am caught by a problem. But if you have many things to do, you will have no time to think about the sad thing.

    I wish I will be lucky next year. Maybe I should make this wish to god on my birthday,  maybe it is too early now.

    October 09

    Parameter Passing in Java

    In Java, you may use a function which has parameter, then what does the parameter pass into the function? The answer is value, without any doubt. Let us start the insight from the data type. In Java, there are two types of data: one is basic data type, another is object data type. The basic data type contains byte, short, int, long, float, double, boolean and char. If you declare a variable of one of the eight basic data type in program, then the variable will stand for the memory address of the data. When you declare an object variable, the variable will store a specific memory address which the object data start from. We call object variable store a reference of the object and the basic data type variable store the value of the data.

    Then, if you pass a parameter into a function, a copy of the parameter will be automatically created in the program stack. So a basic data type parameter will have a copy of value, and an object data type parameter will have a copy of reference. But we can see the reference as a special type of value and we can call it reference value.

    Before following discussion, we will introduce another two conceptions: mutable and immutable. If an object has some operations like: setValue(Datatype value), etc. These operations can change the object member variable, i.e. change the state of the object. We call this object a mutable object, the class of this object a mutable class. If an object does not any operation which can change the member variable, we call it a immutable object, the class a immutable class.

    If you understand above, then let us talk about a more important issue: if a function does some operations to the parameter passed-in, will the parameter has some change after the function call? There are three conditions. If you pass in a parameter belongs to one of the basic data types, the parameter will not change in any case. If you pass in a mutable object and call the object’s ‘set’ operation, then the object will change after function call. If you pass in an immutable object or a mutable object, but do not call its ‘set’ operation, the parameter will not change also.

    September 10

    无题

    这几天在一边写着代码,一边进行着调试。在排错之后,联想到以前看过的一些编程规范,感到那上面说的程序员很容易犯的错误,我就犯了这些错误。

    举一个编程规范的例子:要注意一些边界条件的判断。这一条的大意是说在进行一些大于或小于的判断时,要注意是否存在等号的问题,即大于等于或小于等于。以前看这条规范时,对自己说在编程时要注意,可实际情况是在编程时还是没有注意。直到程序运行时出现意想不到的错误后,在代码行里艰难地看来看去,想来想去才发现是边界条件的问题。

    不过话又说回来,让一个没有经历过这种错误的人看那些规范,我想他也并不知道该怎么去注意,就像我自己一样。直到碰上了这样的错误,排除错误之后,一拍脑门想起来:哦,是这个问题呀!嗯,以后可得注意了。这时,也就会真正感到那些规范说的确实是很有道理的。 如果这样说的话,那些规范并不能很有效的防止错误的发生。因为,没有经验的人看了之后,并不能很好的理解,在实际操作时,也就不会在脑子里绷着这么一根弦。

    而对于那些犯过这样的错误,有经验的人来说,他们根本就没有必要再去看规范了,因为,他们已经知道这种错误很容易在那里发生,从而去避免。通过上面的论述,好像可以得出一个结论,那就是规范是没有什么实际用途的,它只能在人们犯过错误之后用来发一下感慨。这就像是在说:看的不会,会的不看。看过未必会,不看还是会。

    上面说的都是些思想垃圾。规范终究还是有它自己的作用的,不过我想更重要的可能还是经验。至于经验怎么获取,我想大家都有自己的体会。如果不知道的话,嗯,那只能问一下Bjarne Stroustrup......^_^

    August 28

    Java中迭代器使用的一点注意

            学习Java编程时,用到了ListIterator迭代器,容器类是Vector。在进行一次迭代时,出现了错误,调试了挺长一段时间才发现自己在使用中的错误之处。
    错误代码片断如下:
    while(iter.hasPrevious())
    {
         if (some condition)
         {
               tmpObject = (SomeObject)iter.previous();
               tmpObject.someOperation();   
         }
    }
    在这里iter是ListIterator的一个实例,SomeOjbect是Vector中存储的对象类型。
    这个错误可能对于一个Java程序老手根本不会出现,但对于我这个菜鸟再加上有过使用STL迭代器的惯性,很容易就写下了上面的错误代码。错误在于:在Java中,迭代器的previous()或next()操作不仅返回下一个元素,它还负责推进迭代器的迭代动作进行下去。在上面的代码中,一旦条件不满足,就会跳过if块,这样就会跳过一次推进迭代进行的动作,导致一些不可预料的错误。
    改正后的代码片断如下:
    while(iter.hasPrevious())
    {
       tmpObject = (SomeObject)iter.previous();
       if (some condition)
         {
              tmpObject.someOperation();   
         }
    }
    从表面上看,只是一句代码位置的不同,但得到的结果却是不一样的。
    August 14

    回到象牙塔

           在家待了3个礼拜,也可以说是放松了3了礼拜。回到学校又要开始新一轮的战斗了。
           这秋老虎可是真够狠的,坐在机房里就如同坐在烤箱中,尤其到了晚上,比白天还难受。不过更令人感到心烦的是飞来飞去的蚊子,昨天晚上它们在我身上留下勋章4个,今天到目前为止是5个,看来还有继续增加的希望。
            jsp看了两天了,发现借的书讲得有些深了,看来还得慢慢来。
    July 08

    重要的事情总是简单的

          昨天,上完了这学期最后一次设计模式的课。梁老师让每个人将自己的课程设计讲解了一下。梁老师要求严格就不必说了。他说我的程序没什么大问题,让我把鼠标拖动选择的功能加上去。我在实验报告中就提了这回事儿,说以后程序扩展时再向上加。其实自己是懒了,不愿意再动程序了。这次梁老师既然说了要加上这个功能,没办法,那就开工吧。
          下了课,来到机房,花了两个小时把下载的斯大林格勒看完了,也到了中午吃饭的点了,就先去吃饭了。吃完饭本来要睡觉的,但不知是不是受了斯大林格勒的刺激竟直奔机房而去。在机器前,脑子有些发木,于是戴上耳机,在音乐的刺激下编写着代码。好像用了一个小时二十分钟就把功能实现了,本以为是很难实现的,要改动很多代码,但事实上只是在一个类中进行了改动,其它一点都没有受到影响。正是应了自己的那句话“重要的事情总是简单的”,但这次可是“简单的事情它的确是简单的”。 只是自己太懒了。
    July 02

    this指针

         在学java时,看到了static成员函数的问题。static成员函数在一般情况下不能调用非static成员函数,但如果创建了新的对象后,是可以调用非static成员函数的。看了之后,感觉没什么特别的。可能是因为学了C++,就想在C++中static成员函数的情况应该是差不多的吧。于是,上网搜了艘关于C++中静态函数的内容,看了两个都是最基本的介绍,没有什么新东西。但有一个是关于设计模式中Singleton的问题,在这其中牵扯到了this指针的问题,还是很有意思的。
         Singleton模式C++的简单实现如下:
    class   MazeFactory   {
    public:
            static   MazeFactory*   Instance();
    protected:
            MazeFactory();
    //--------------------------------------------------------------
    private:
            static   MazeFactory*   _instance;
    };
     
    MazeFactory*   MazeFactory::_instance   =   0;
    //静态成员函数实现
    MazeFactory*   MazeFactory::Instance   ()   {
            if   (_instance   ==   0)
            {
                  //-------------   提问1:难道静态成员函数可以调用构造函数吗   -----------------
                    _instance   =   new   MazeFactory;
            }
            return   _instance;
    }
    //-------------   提问2:构造函数属于非静态成员函数还是静态成员函数?   -----------------
    //-------------   提问3:构造函数存在默认的this指针吗?   -----------------
         三个提问自然不是我的了,但下面各位大虾们给出了很多有益的解释。从他们的答案中我归纳了一下:
    1.静态函数中不能直接调用非静态成员,是因为编译器没有将this指针隐式的传递给静态函数,也就  是说在静态成员函数中是不存在this指针的。如果程序员主动将this指针传递给静态函数,那么函数中 可以访问非静态成员。
    2.构造函数是非静态成员函数。
    3.在构造函数中是存在this指针的。
         关于在函数中存在this指针的问题,我又查了一下C++Primer,书中有这样的说明:
         每个类成员函数都含有一个指向被调用对象的指针,这个指针被称为this。在非const成员函数中,它的类型是指向该类类型的指针;在const成员函数中,是指向const类类型的指针。
     
    July 01

    期末总结

         转眼间一个学期就要结束了,研一的生活也要结束了。在这个学期经历了不少挫折,也学到了很多,不论是知识还是做人的道理。
         设计模式课程极大的提高了编程的理念,在做课程设计时,也提高了编程技术。以前编程总是想着避开问题。所以自我安慰说:这是提高程序的稳健性。其实,遇到问题不可怕,在网络上有很多高手可以帮你解决问题,关键是如何找到这些有用的帮助信息。
          智能控制课程的老师是哈工大外聘的。老师对我们非常好,这没什么可说的,这是我不争气,没下功夫去学。老师在课下跟我们说了很多事情,所不是学习上的事,但很受启发。
          神经网络课对数学要求挺高,可惜自己数学水平不高,越学越迷糊。对不住赖老师了。
          英语课这学期也结了,考试的事就不想多说什么了,平时功夫下得不够,能及格就不错了。
          总的看来,老师对我们都很好。不过如果按照某些人的说法,我这双眼睛看什么都好,这也就说明我实在是没有什么欣赏水平。唉,管他呢。