01 2009 档案
摘要:开始之初的架构设计决定着软件产品的生死存亡。“好的开始相当于成功一半”。
阅读全文
摘要: * 消除递归:
* 一个算法作为一个递归的方法通常从概念上很容易理解,但实际使用中递归的效率不高,在这种
* 情况下,把递归算法转换成非递归的算法是非常有用的,这种转换经常用到栈。
*
* 递归和栈:
* 递归和栈之间有着紧密的联系,大部分的编译器使用栈实现递归的。
*
* 调用方法的时候发生什么:
* 1. 编译器会把这个方法所有当前参数及返回地址压入栈中;
* 2. 将控制权交给这个方法,方法通过获得栈顶元素值访问参数;
* 3. 方法运行结束的时候,值退栈,参数消失且控制权重新回到返回地址;
阅读全文
摘要: * 概念介绍:
*
* 归并排序:归并算法的中心是归并两个已经有序的数组,并且递归调用归并操作。
*
* 归并排序优点和缺点:比简单排序在速度上快很多;归并排序会占用双倍的存储空间。
*
* 归并排序的效率:归并排序的时间复杂度是 O(N*LogN);简单排序的复杂度是O(N2)。
阅读全文
摘要: 递归的效率:调用一个方法会有一定的代价和开销。首先,控制必须须从当前位置转移到调用
* 方法的开始处。其次,传给这个方法的参数以及这个方法返回地址都要初压到一
* 个栈里,为的是方法能够访问参数以及知道返回值在存储在哪里,这个过程也称
* "保存现场"。递归方法的使用的本质是从概念上简化了问题,而不是因为它更有
* 效率。当使用递归的效率很低的时候,就可以考虑如果把递归转化成非递归。
阅读全文
摘要:/**
* 概念介绍:
* 递归是一种方法(函数)调用自已编程技术。
* 递归就是程序设计中的数学归纳法。
* 例如:tri(n)=1 if n=1
* tri(n)=n+tri(n-1) if n>1
* 可能while循环方法执行的速度比递归方法快,但是为什么采用递归呢。
* 采用递归,是因为它从概念上简化了问题,而不是因为它提高效率。
*/
阅读全文
摘要:本文列出了当今计算机软件开发和应用领域最重要十种关键技术排名,如果你想保证你现在以及未来的几年不失业,那么你最好跟上这些技术的发展。虽然你不必对这十种技术样样精通,但至少应该对它们非常熟悉。
阅读全文
摘要:……路人甲抬头的时候,看见一棵巨大的苹果树,他想,我如果能吃一个苹果就好了……
阅读全文
摘要:随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串、数字。或者随即生成一个不定长度的数字、或者进行一个模拟的随机选择等等。Java提供了最基本的工具,可以帮助开发者来实现这一切。
一、Java随机数的产生方式
在Java中,随机数的概念从广义上将,有三种。
1、通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。
2、通过Math.random()返回一个0到1之间的double值。
3、通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大。
阅读全文
摘要:今天在看柯南的时候里面有提到DTMF
在柯南的简短的解释后 就和 一个歌手 用声音吧电话打了出去(拿起话筒后,对话筒发出声音,不按键)
没事就百度了一下!
百科上是这么说的
阅读全文
摘要:这个游戏的玩法是:参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门就可以赢得该汽车,而另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人会开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门是否会增加参赛者赢得汽车的机率?如果严格按照上述的条件的话,答案是
阅读全文
摘要:类是程序的一部分,每个类都有一个Class对象。换言之,每当编写并且编译了一个新类,就会产生一个Class对象(恰当地说,是被保存在一个同名的.class文件中)。在运行时,当我们想生成这个类的对象时,运行这个程序的 Java虚拟机(JVM)首先检查这个类的Class对象是否已经加载。如果尚未加载,JVM就会根据类名查找.class文件,并将其载入。
阅读全文
摘要:谈谈final, finally, finalize的区别。
第五,HashMap和Hashtable的区别。
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。
2 3
阅读全文
摘要:Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放。一般来说,堆的是由垃圾回收 来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本就不需要垃圾回收,但是由于内存的有限性,JVM在实现的时候都有一个由垃圾回收所管理的堆。垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能。
阅读全文
摘要:举个例子,要发广告邮件,广告邮件列表存在数据库里面。倘若用C来写的话,一般会这样思考,先把邮件内容读入,然后连接数据库,循环取邮件地址,调用本机的qmail的sendmail命令发送。
然后考虑用Java来实现,既然是OOP,就不能什么代码都塞到main过程里面,于是就设计了三个类:
一个类是负责读取数据库,取邮件地址,调用qmail的sendmail命令发送;
一个类是读邮件内容,MIME编码成HTML格式的,再加上邮件头;
一个主类负责从命令读参数,处理命令行参数,调用发email的类。
把一件工作按照功能划分为3个模块分别处理,每个类完成一件模块任务。
阅读全文
摘要:什么是面向对象的设计思想?也许有不少初学者对这个概念还有许多不明白的地方,特别是这个处于新旧思想交替的时代,许多人刚刚学完现在看来是快要淘汰的只是面向过程的语言。他们的脑子还没有脱离面向过程思想的束缚,抬头却发现,“面向对象”早已经流行开来,这个陌生的词漫天飞舞。随便拿起一本流行计算机技术书籍,那里会没有“面向对象”的字眼!于是心中便惶惑了:什么叫“面向对象”?不感兴趣者,一带而过;有志于在这方面发展的,匆忙找到一本有关书籍来啃究竟什么是“面向对象”。然而,要突破思想的束缚,说难也不难,说到要深刻认识却也不容易。笔者在做了一些轻量级的工作后,颇以为有点心得,不怕贻笑大方,写出已供广大同行批评指正。
阅读全文
摘要:初始化的顺序为:
先初始化父类的静态代码--->初始化子类的静态代码-->创建实例时,如果不创建实例,则后面的不执行)初始化父类的非静态代码--->初始化父类构造函数--->初始化子类非静态代码--->初始化子类构造函数
子类继承父类会先初始化父类,调用父类的构造函数
阅读全文