Profil de 页希I am who I amPhotosBlogListesPlus Outils Aide

Blog


27 mars

A new start begins when the offer is declined

写在MySpace上面的,懒得再用中文写了。

I have just declined the offer with the scholarship of National University of Singapore (NUS), department of Information System. However, I haven't received the scholarship from any other universities from the U.S.


I don't mean that NUS is no better than the universities of the U.S, neither do I mean Information System is not a good major. On the contrary, in my opinion, NUS is among the top universities in the world and the major is very promising. What's more, the tuition waiver plus the monthly stipend of S$1500-2000 is quite attractive for me. Why did I make such a decision that seems ridiculous? The reason is simple, I like Computer Science and I don't want to change my major. I applied CS but received the offer of IS.


I got in touch with computer when I was an eight-year-old. Since then, I think I can't live without it. That's why I chose my major as Computer Science without hesitation when I entered the university.


It is quite possible that 99% of person would accept the offer, but, unfortunately, I’m the other 1%. I always choose my favor rather than the benefit. To have a decent job or earn much money is good, but for me, I prefer to enjoy my life by doing my interesting thing.


Tomorrow is a new brand new day, I may never have the experience of study aboard, but I'm not regret for my choice.

26 mars

每天都应抽出时间思考

最近几个星期每周在实验室呆的时间大概都是70-80小时,做了很多的事情,看了很多的材料。《Gene Expression Programming》、《c++ code standard》、了解CUDA、看模式识别、帮师兄写试验程序、写数据预处理程序、改论文、做实验,还有一堆琐事,总之事情一大堆,每天忙得不可开交。

但是我感觉,这一段时间的收获并不大,做的很多的事情都是机械性的工作,没有什么创造力。相反,正式因为这些事情做多了,导致思考的时间大大减少了。我想,如果一直这样持续下去的话,我会慢慢沦为一个没有思想的人,这样是很可怕的。想想要是整天忙得昏天暗地,但是没有一点成就感,一天下来,拖着疲惫的身体回到寝室回想不起这一天到底做了什么事情,那是相当的令人沮丧的。

有的人很辛苦,天天起早贪黑忙于工作但是却没什么成就,这是为什么呢?因为他们没有创造了,他做的事情不难找一个替代者。相反,有的人相对不是整天忙里忙外,但是却成就显赫,这又是为什么呢?抛开非预见性因素外,他们都有一个共同点,那就是他们所做的事情几乎是独一无二的,没有多少人能够轻易的顶替。他们所做的工作都是需要大量的思考才能够完成,而这些思考工作并不能由其他人轻易复制。

想想自己,愿意做哪一种人呢,虽然我并不害怕很辛苦,但是我不喜欢没有成就感。自己这一段时间,几乎没有思考过什么问题,有也是非创造性的思考,而且是在零散的时间。以前看过一篇文章,《勤奋不代表一切》,当时只是一知半解,但随着后来的一些了解,觉得这是相当对的。单纯的勤奋是苦力活,真正的勤奋是有创造力的基础上的勤奋。盲目的勤奋的作用只有10%的效果,这就是为什么很多人都很努力但就是没有成效,因为他们的脑袋里面没有一个清晰的思路,明确的目标。

对于思考,我们应该把它提升为每天都必须做的一件事情。也许我们确实很忙,但也应该能够抽出半个小时的时间,什么也不做,就是拿来思考。这样看起来似乎有些浪费时间,然而,这样做是有潜在的好处的。它能够让我们避免很多不必要的事情而把主要精力集中在最能够发挥效用的地方。

人生如同爬山,每个人的精力或许都差不多,如何爬得更高取决于选择什么样的路,如果停下来思考并找到了当前所在位置的梯度,那么无疑可以比别人爬得更高。虽然停下来思考消耗了时间,这段时间也许别人也在爬山,但是思考过后所选择的路径会使得事半功倍,后发先至,远远的甩开别人与身后。

每天都专门抽出时间思考吧!

20 mars

纯流水账

感觉这一周的效率比较低,以前一天可以做的事情现在要拖到两天才能完成,不知道为什么过得有些稀里糊涂的。时间花得一样多,但是效率千差万别。

今天上午上了数学课过后就一直待在实验室到现在,按理说也有7,8个小时了,但是却没有做多少事情,无非就是把上次模式识别的课程复习了一下(准确说是后预习...讲得比我看得快,而且难度又大)然后把通用计算的环境配好,然后看了点点《C++ Coding Standard》。

想想真是效率低,可能主要是在模式识别上花得时间太多了。没办法,悟性低,看了半天也是一知半解,只是把书上看懂了真正用起来还是不会。下次去参观一下别人是怎么利用一天的时间的...

19 mars

最近的生活

应肖哥的要求,要多写写自己的生活情况。其实我自己也有这个想法,以后把专业方面的文章全部贴在另一个blog里面(http://hi.csdn.net/yxjiang)。这样子就免得这个地方显得太沉闷了。

关于最近的生活,其实挺单调的,无非就是天天呆在实验室里面,看书,看论文,写程序。简直可以说是两耳不闻窗外事的生活。这样的生活既有好处也有坏处,好处就是可以在短时间内迅速提高专业能力,坏处就是这样的提高是以很多其他方面的损失作为代价的。现在越来越感觉到这样的生活弊大于利,学出来的人就像机器一样,功能极为单一,出了狭窄的领域一无所知。于是自己一直想着怎么改变。

对于以后我要过什么样的生活,我自己也没有把握,不过毫无以为,大家都想过好生活。但是什么样的生活才较好的生活呢,我想一千个人有一千个不同的答案。就我而言,这个概念比较模糊。模糊的原因是之前几乎没有认真思考过这方面的问题,一直过着一种机械化式的生活,日复一日,月复一月。现在突然考虑起这个问题来,难免有些摸不清方向。

跟一些朋友就这个问题谈了一下,不过别人的看法终究不能取代自己的想法,于是借了一本书,爱默生的《生活的准则》来自我启发一下,希望能够有所帮助。都这么大了,这个问题还没有开始考虑确实有些不应该。

最后感谢肖哥的建议让我一个尚未行动的想法产生推动作用,以后不出意外这里不会出现过于专业的让人生厌的文章了。


13 mars

解决关于DLL一些疑惑

通过询问sandro师兄和Forrest,解决了一个关于DLL中类的疑惑,非常感谢这两位不厌其烦的解答!
对于在创建类的动态链接库来说,具有一定的限制,那就是1.只能C++使用。2.只能静态载入(绝大多数境况)。这就是说,如果要跨语言使用的话,,单纯的使用函数。

要引入一个库,有三样相关的东西,dll文件,lib文件以及头文件。这里的lib文件不是单纯的lib文件,而是dll的lib文件,与通常的lib文件不同的是相对于一般的包含obj的lib文件它里面只包含有符号表。

如果我们要在一个工程中使用dll库,可以有几种方法。(以visual stuidio 2008为例)


一、如果3样都用,那么导入dll文件里面的内容就很方便,无论是类或者其他。当然,如果有类的话,最好用静态方法调用,这方面的介绍很多。


1.对于静态方法。

把库的头文件和lib文件放到工程目录里面,放在什么地方自己定,然后在工程属性的C/C++->Additional Include Directories里面设置头文件的存放目录以及在Linker->Input里面的Additional Dependences里面设置lib文件的位置。注意dll文件要放在exe同一个文件夹里面(或者%windows%\system32下面或者PATH路径指定的地方),否则程序会因为找不到dll文件而出错。当然,在vs环境下因为当前目录是工程目录,所以dll文件即使放在工程目录里这个问题还不会体现出来,一旦程序release过后,没有了工程文件,自然就找不到dll文件了。


2.对于动态方法

用动态方法lib就是多余的了,与(二)的方法一样,但是想用动态方法得到类是比较困难的。而且操作比较麻烦。一般不提倡这样用。具体方法可以参看:

(Using classes exported from a DLL using LoadLibrary,http://www.codeproject.com/KB/DLL/classesexportedusingLL.aspx

它的中文翻译可以在这里找到http://waterlin78.gjjblog.com/archives/1053556/

如果没有使用lib二直接根据头文件的信息来生成类的话,那么会出现这个链接错误。

unresolved external symbol "public: int __thiscall TestClass::add(int,int)" (?add@TestClass@@QAEHHH@Z) referenced in function _main

 

二、如果只用头文件和dll文件,那么就只有动态方法了。

使用动态方法不需要lib文件,程序直接通过LoadLibrary来加载动态链接库,然后通过GetProcAddress来获取函数入口地址,进行操作。比如dll文件中有一个int add(int a, int b)这样的函数,那么我们可以定义一个这样的函数指针类型typedef int(*func)(int, int)来获取函数。func addFunc = (func)GetProcAddress(hInst, "add"),其中hInst是实例句柄,add是dll中函数的名字。之后我们通过addFunc(int, int)来操作了。

参考文献:

(Using classes exported from a DLL using LoadLibrary,http://www.codeproject.com/KB/DLL/classesexportedusingLL.aspx)。

使用LoadLibrary调用DLL中输出的class,http://waterlin78.gjjblog.com/archives/1053556/

如何做才能从dll中导出类,http://magichere.bokee.com/viewdiary.13373439.html

VC++中Dll的调用与Dll的调试,                           http://www.mxjava.com/blog/article.asp?id=223