今天看了篇文章,讲得是数组和指针的区别,将理解记录一下。
在编译时,数组表现为一个数据结构,而指针为另一种数据,只表示一个地址。
数组在编译时需要记录很多别的信息,所以sizeof(编译时函数)能得到整个数组的占用的内存大小,而sizeof的参数为指针时就只能的到4(win32中指针占4个内存)
但是当数组作为参数传递时,他除了首地址之外的所有信息
即:functionName(type[] array){cout << sizeof(array);}结果将为4!
而且array++也正确(没验证)
想法:编译时将参数中的数组换成了同种类型的指针(程序员透明),所以此后的数组其实为指针,数组的一些特性就丢失了,比如可以得到数组的长度。
问题:
1、想法是否是正确的。
2、数组的长度信息,除了sizeof之外还有什么地方会用到?
2008年7月26日星期六
我的路该怎么走呢
最近一直再问自己这个问题,我的专长在哪里,我适合计算机的哪个方向,我一直认为我的算法方面还是可以的(最近我很受打击),我的数学理论真的不能再差了,我奋起直追也很难干上了,因为别人也绝不会等我的,大家都在追赶着自己的梦想。
但是刘也批评过我,说我太急功近利,的确我才做topcoder一个多月,和人家搞了几年的肯定有差距,学了这么短时间就轻易的否定自己,是有点太急功近利,也是对别人的一种鄙视。
最后,我还是觉得要找到自己的优势,然后将其发扬光大,重要的是深入进去,仔细研究,每天留给自己一段时间,将自己掩蔽起来,真正的投入精力,好好学习。
但是刘也批评过我,说我太急功近利,的确我才做topcoder一个多月,和人家搞了几年的肯定有差距,学了这么短时间就轻易的否定自己,是有点太急功近利,也是对别人的一种鄙视。
最后,我还是觉得要找到自己的优势,然后将其发扬光大,重要的是深入进去,仔细研究,每天留给自己一段时间,将自己掩蔽起来,真正的投入精力,好好学习。
2008年7月25日星期五
有点失落
现在这个社会,感觉人应该很高兴的活着,有那么多网站无私的为你服务着,想写博客就随便找一个提供博客服务的站点,既满足了自己的愿望也帮助了别人。不仅如此,我感觉网络服务运营商们正挖空心思在满足着人们的各种需求,正因为如此有了flickr,饭否,校内等等。web2.0的时代,人们时时刻刻在交流、在共享,你的一举一动都可以分享给别人(只要你愿意)。
我感觉还是没有适应这个社会,我认识的人还是只来自同学,亲戚,老乡等古老的方式,而现在的交友方式应该是网络化的,在豆瓣上一群素不相识的人就可以一起商量明天一起去干自己喜欢的事情,从而成为朋友。
我还是喜欢比较清净的生活,有那么几个经常在一起的朋友,一起吃饭学习,偶尔(不经常)去看个电影,吃个饭,放松放松,生活就挺好,不要整天在网上看看这个,看看那个。
也许这就是我自己吧,古老的活着。
我感觉还是没有适应这个社会,我认识的人还是只来自同学,亲戚,老乡等古老的方式,而现在的交友方式应该是网络化的,在豆瓣上一群素不相识的人就可以一起商量明天一起去干自己喜欢的事情,从而成为朋友。
我还是喜欢比较清净的生活,有那么几个经常在一起的朋友,一起吃饭学习,偶尔(不经常)去看个电影,吃个饭,放松放松,生活就挺好,不要整天在网上看看这个,看看那个。
也许这就是我自己吧,古老的活着。
2008年7月22日星期二
2008年7月21日星期一
SWT学习
Display类:
Instances of this class are responsible for managing the connection between SWT and the underlying operating system.
一、Display.readAndDispatch(),方法从操作系统的事件队列读取事件,正确的分发(分配给正确的监听器listenner),如果还有潜在的事情可做,则返回true,就可以继续调用readAndDisplay(),否则可以调用sleep()函数。
问题:
1、操作系统的事件队列是怎么组织的。
2、sleep()后awake的时机是什么时候。
3、readAndDispatch()函数是给哪个线程分发任务,是user_interface Thread吗?
4、什么样的方法只能由the user-interface thread call.
5、代码中那些代码是有UI线程运行的。
most of the public methods in Widget and its subclasses
二、the differences between Display.asyncExec() and Display.syncExec()
the caller which calls Display.asyncExec run in parallel,and is not notified when the runnable has completed. Otherwise the caller which calls Display.syncExec() is suspended until the runnable completes.
三、Eclipse中启动采用什么类型是什么意思,怎么样能用命令行实现同样的功能。
Instances of this class are responsible for managing the connection between SWT and the underlying operating system.
一、Display.readAndDispatch(),方法从操作系统的事件队列读取事件,正确的分发(分配给正确的监听器listenner),如果还有潜在的事情可做,则返回true,就可以继续调用readAndDisplay(),否则可以调用sleep()函数。
问题:
1、操作系统的事件队列是怎么组织的。
2、sleep()后awake的时机是什么时候。
3、readAndDispatch()函数是给哪个线程分发任务,是user_interface Thread吗?
4、什么样的方法只能由the user-interface thread call.
5、代码中那些代码是有UI线程运行的。
most of the public methods in Widget and its subclasses
二、the differences between Display.asyncExec() and Display.syncExec()
the caller which calls Display.asyncExec run in parallel,and is not notified when the runnable has completed. Otherwise the caller which calls Display.syncExec() is suspended until the runnable completes.
三、Eclipse中启动采用什么类型是什么意思,怎么样能用命令行实现同样的功能。
2008年7月20日星期日
Java生产者与消费者的思考
Java可以通过ReentrantLock类和Condition类实现生产者模型
ReentrantLock提供互斥访问临界区,而Condition类实现阻塞与唤醒机制。
Condition.await()方法,
假定调用此方法时,当前线程保持了与此 Condition 有关联的锁。这取决于确定是否为这种情况以及不是时,如何对此作出响应的实现。通常,将抛出一个异常并且该实现必须对此进行记录。
ReentrantLock提供互斥访问临界区,而Condition类实现阻塞与唤醒机制。
Condition.await()方法,
假定调用此方法时,当前线程保持了与此 Condition 有关联的锁。这取决于确定是否为这种情况以及不是时,如何对此作出响应的实现。通常,将抛出一个异常并且该实现必须对此进行记录。
2008年7月19日星期六
2008年7月17日星期四
计算机学习
话说学习计算机也已经3年了,虽然时间还比较短,但适时的总结一下,也有利于自己的学习。
计算机应该怎样学习呢?算法+程序设计+理论研究。当然计算机远远不止这些,但就现在的水平,我要打好基础,才能向更深的方面进展,比如团队管理等。
程序员绝不是普通工人,程序设计绝对是一门艺术。在埋头编程的同时一定要停下来想一想,自己的方向是否正确,自己有没有学到新的值得去学的东西,现在这个世界信息这么多,如果什么东西都要学,恐怕到死也不是个头呀。要选择自己感兴趣的并且能在有生之年帮助自己的知识。
算法是学习计算机的基础,虽然不一定要人人赶超ACRush但也要比较熟练的掌握常用算法和数据结构。算法最好能经常练习,这样既能锻炼自己的头脑,也能熟习算法。
程序设计也是很重要的,这里强调的不是算法,而是程序模块化,易读性,易扩展和易维护等特性。好的编程人员写出来的程序才具有以上特点,这个是在平时编程习惯中养成的。
理论研究,其实我一直想在跟在计算机理论的前沿,这是很难的,但我还是想这么要求自己,绝不能脱离世界,要跟着计算机发展的大方向前进,要勇于研究理论前沿,但一定忌浮,戒表面。可以在编程实践以后,根据自己的实践经历结合计算机前沿,寻找结合点,并予以突破。
计算机应该怎样学习呢?算法+程序设计+理论研究。当然计算机远远不止这些,但就现在的水平,我要打好基础,才能向更深的方面进展,比如团队管理等。
程序员绝不是普通工人,程序设计绝对是一门艺术。在埋头编程的同时一定要停下来想一想,自己的方向是否正确,自己有没有学到新的值得去学的东西,现在这个世界信息这么多,如果什么东西都要学,恐怕到死也不是个头呀。要选择自己感兴趣的并且能在有生之年帮助自己的知识。
算法是学习计算机的基础,虽然不一定要人人赶超ACRush但也要比较熟练的掌握常用算法和数据结构。算法最好能经常练习,这样既能锻炼自己的头脑,也能熟习算法。
程序设计也是很重要的,这里强调的不是算法,而是程序模块化,易读性,易扩展和易维护等特性。好的编程人员写出来的程序才具有以上特点,这个是在平时编程习惯中养成的。
理论研究,其实我一直想在跟在计算机理论的前沿,这是很难的,但我还是想这么要求自己,绝不能脱离世界,要跟着计算机发展的大方向前进,要勇于研究理论前沿,但一定忌浮,戒表面。可以在编程实践以后,根据自己的实践经历结合计算机前沿,寻找结合点,并予以突破。
2008年7月15日星期二
动态环境下web service应用框架的报告
今天听了王燕师姐关于动态环境下web service应用框架的报告,web service在平常环境下,提供可以分为plan和execute两方面,在动态环境下execute时会发生错误情况,这时就要采取特定措施,有reexecute和replan两种解决方案。replan会造成plan时间过长,而reexe会有可能造成服务无法完成。
plan部分也有多种方法,此论文采取了AI planing措施。
会后师兄师姐们就这个解决框架和航空测试结合方面进行了讨论,认为航空测试的动态性不明显,但可以学习论文plan方面的方法。
马老师也就学习方法发表了自己的看法,工科的学习不应该在理论上进行再研究,即看了一篇杂志或者论文,而并没有进行试验或者和自己的实质工作进行结合,就在论文的基础上空泛的发表自己的见解。而应该从工作做起,然后结合现有的理论进行再创作,然后再实践,循环反复,形成正果。
plan部分也有多种方法,此论文采取了AI planing措施。
会后师兄师姐们就这个解决框架和航空测试结合方面进行了讨论,认为航空测试的动态性不明显,但可以学习论文plan方面的方法。
马老师也就学习方法发表了自己的看法,工科的学习不应该在理论上进行再研究,即看了一篇杂志或者论文,而并没有进行试验或者和自己的实质工作进行结合,就在论文的基础上空泛的发表自己的见解。而应该从工作做起,然后结合现有的理论进行再创作,然后再实践,循环反复,形成正果。
2008年7月14日星期一
恐怖呀——南极万只企鹅冻死
2008年7月13日星期日
2008年7月12日星期六
Java与SWT——学习
SWT是基于eclipse的用户界面新式开发方法,用户界面比较友好,特别是针对熟悉eclipse的用户。
Java是当今社会中无可非议的程序设计语言王者,其一个重大优点是资源由系统管理,而不需要程序编写者自己管理,因此编程者就轻松很多了。
SWT并不是Java的一个应用,为了提高速度,它的底层并不是完全用Java实现的,特别是一些系统资源的。这就导致了一些系统资源并不能自动释放,而需要程序员自己释放。
作为一个真正的科班出身的程序员,并不能像普通的程序员那样要求自己,应该在自己熟悉某一方面的过程中,尽量学习其底层的实现与特殊之处,要不然以为SWT是和Java一样,就会在编程时遇到一些无法解释和解决的问题。
Java是当今社会中无可非议的程序设计语言王者,其一个重大优点是资源由系统管理,而不需要程序编写者自己管理,因此编程者就轻松很多了。
SWT并不是Java的一个应用,为了提高速度,它的底层并不是完全用Java实现的,特别是一些系统资源的。这就导致了一些系统资源并不能自动释放,而需要程序员自己释放。
作为一个真正的科班出身的程序员,并不能像普通的程序员那样要求自己,应该在自己熟悉某一方面的过程中,尽量学习其底层的实现与特殊之处,要不然以为SWT是和Java一样,就会在编程时遇到一些无法解释和解决的问题。
2008年7月11日星期五
编程感想——数据传输
设想一种情况:数据提供者A,C和数据接受者B,B要求一定的格式,A和C都要将自己的数据组织成B所要求的形式。这时比较好的设计是可以将数据的组织分为两部分,一部分有A,C来做,另一部分有B来做,A,C只负责与自己相关的数据的组织,自己不知道的无关数据不与管理,而B则首先要严格检查A、C提供的数据,然后将数据组织成标准的形式。
重点:数据接受者要严格的检查接受的数据的正确性,而A、C绝对不要组织与自己无关的数据。否则,如果B的数据形式发生改变,则A、C的组织也要改变,非常麻烦,而如果B不严格检查的话,就会造成数据不正确就崩溃的现象。
例子:自动化测试工具开发中有一个ParamDetail类,他有两个数据提供者,表格和文件,ParamDetail类有一个数据lastValue,而表格和文件都提供不了,是在运行时动态记录的,这时表格和文件提供数据时就不要管此数据,而让ParamDetail自己管理。
重点:数据接受者要严格的检查接受的数据的正确性,而A、C绝对不要组织与自己无关的数据。否则,如果B的数据形式发生改变,则A、C的组织也要改变,非常麻烦,而如果B不严格检查的话,就会造成数据不正确就崩溃的现象。
例子:自动化测试工具开发中有一个ParamDetail类,他有两个数据提供者,表格和文件,ParamDetail类有一个数据lastValue,而表格和文件都提供不了,是在运行时动态记录的,这时表格和文件提供数据时就不要管此数据,而让ParamDetail自己管理。
2008年7月8日星期二
我心痛呀
也许是我过于敏感吧,我经常会受别人的言语所影响。不过也没什么可抱怨的,我处理事情上的确有很多想的不周到的地方(但我决不想看自己身边人的笑话),就比如这个选导师的事情,我一直没有自己明确的方向,一直听别人的,一直犹豫不决,因为我对计算机的大方向的把握还很不到位,我也没有自己明确的兴趣爱好,这应该是一个教训吧,对孩子的教育,一定要让孩子有认知和判断能力,现在我的这方面就很缺乏。
但我并不会对自己放弃的,虽然我把握不了大方向,但我可以学习,我身边也有一些可以为我出出主意的亲戚和朋友,在此我感谢你们在我无助的时候帮助了我,我会逐渐的适应这个社会的,相信我。
但我并不会对自己放弃的,虽然我把握不了大方向,但我可以学习,我身边也有一些可以为我出出主意的亲戚和朋友,在此我感谢你们在我无助的时候帮助了我,我会逐渐的适应这个社会的,相信我。
订阅:
博文 (Atom)

