`
eriol
  • 浏览: 400738 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
今天在看一个工厂方法的代码示例中,发现该示例中定义了一个抽象类但却没有任何抽象方法,代码如下所示。 public abstract class Pizza { String name; String dough; String sauce; ArrayList toppings = new ArrayList(); void prepare() { System.out.println("Preparing " + name); System.out.println("Tossing dough..."); ...
看Facebook效应,看完后我的第一反应是想到了豆瓣。   Facebook是全球最大的社交网站;是全球流量第二大的互联网公司,曾经一度还成为第一;是至今互联网上最大的分享网站;也是全球月活跃用户数最大的网站····今天高盛称Facebook月活跃用户数超过6亿  ,国际国内几乎所有的社交网站都在模仿它。   虽然在国内说开心网和人人网才是真正的复制 Facebook,在看书的过程中明显的感觉到豆瓣才是真正领会Facebook精髓的一家互联网公司,而且还做出了自己的特色。     Facebook一直保持的简洁页面;每一次改版用户的反对;和每一次面对反对扎克伯格的反应;Fac ...
测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。   测试用例(Test Case)目前没有经典的定义。比较通常的说法是:指对一项特定的 ...
题目:给出二叉树的前序遍历和中序遍历,求后序遍历。 背景知识:前序、中序和后序遍历指的是父节点的遍历顺序。 例如前序为父节点->左子树->右子树,中序为左子树->父节点->右子树,后序为左子树->右子树->父节点 解题思路: 1. 前序的第一个元素为根节点 2. 在中序以根节点划分为左右两个子树 3. 前序中先出现的元素为该子树中的父节点 4. 左、右儿子的判定根据中序的顺序,如果在中序指定元素的右侧,则为右儿子,否则为左儿子 例题:前序为adbgcefh,中序为dgbaechf,则后序为gbdehfca。 若题目给出后序,可以考虑以下特征: ...
先来个小总结: String             字符串常量 StringBuffer    字符串变量(线程安全) StringBuilder   字符串变量(非线程安全) String对象是不可变的,当修改String值时,实际上都是创建了一个全新的String对象。当把String ...
SAX (Simple API for XML) 和 DOM (Document Object Model) 是当前两个主要的XML API,几乎所有商用的xml 解析器都同时实现了这两个接口。因此如果你的程序使用了SAX或者DOM APIs,那么你的程序对xml解析器是透明。 1) DOM以一个分层的对象模型来 ...
有这样一个例子:   public class PrivateOverride { private void f() { System.out.println("private f()"); } public static main(String[] args) { PrivateOverride po = new Derived(); po.f(); } } class Derived extends PrivateOverride { public void f() { System. ...
前缀表达式:也被称为波兰表示法,其特点是将操作符置于操作数之前。 中缀表达式:即我们常用的表示方法。 后缀表达式:又被称为逆波兰法,其特点是将操作符置于操作数之后。 例子: 前缀表达式:*/b-cad 中缀表达式:(c-a)/b*d 后缀表达式:ca-b/d* 解析前缀表达式:找到最右边的操作符(即最先运算的操作符),取其右边的两个操作数进行运算,然后找右边第二个操作符,以此类推。 要点: 以操作符为线索进行划分。
     Java提供了两类主要的异常:Runtime Exception和Checked Exception。checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。所有的Checked Exception 均从java.lang.Exception 继承而来。  但是另外一种异常:RuntimeException,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去 ...
transient         如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。它被用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient ...
1. 这两个方法来自不同的类,sleep方法属于Thread,wait方法属于Object。 2. 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 3. wait, notify和notifyAll只能在同步控制方法(synchronized)或者同步控制块里面使用,而sleep可以在任何地方使用。 4. sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常。   详解:     sleep方法属于Thread类中方法,表示让一个线程进入睡眠状态,等待一定的时间之后,自动醒来进入到可运行状态,但它 ...
例如,将int转换成String类型,方法有以下三种: (1) String s = String.valueOf(i); (2) String s = Integer.toString(i); (3) String s = "" + i;   其他基本类型转换方法同int。
chapter 3 --装饰者模式                                   装饰对象   设计原则:   (1) 类应该对扩展开放,对修改关闭。( 开放-关闭原则)   该原则的目标是允许类容易扩展,在不修改现有代码的情况下,就可搭配新的行为。这样的设计具有弹性,可以应对改变,可以接受新的功能来应对改变的需求。     装饰者模式: 动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。     Structure Component: 每个组件都可以单独使用,或者被装饰者包起来使用。 C ...
在笔试时做到一题关于类的变量和方法的初始化执行顺序的题,当时有点对于几个细节记得不是很清楚,这几天专门翻了下TIJ,总结了一下。   1.  类中的任何变量(不管是静态的还是非静态的)都在方法(包括构造函数)之 ...
思路: 对变量交换进行优化,不适用额外的中间变量。   解法一:使用异或操作   char* strrev1(const char* str) { char* tmp = new char[strlen(str) + 1]; strcpy(tmp,str); char* ret = tmp; char* p = tmp + strlen(str) - 1; while (p > tmp) { *p ^= *tmp; *tmp ^= *p; ...
Global site tag (gtag.js) - Google Analytics