- 浏览: 412105 次
- 性别:
- 来自: 上海
-
最新评论
-
handong1587:
代码有一处错.query函数最后一行return的应该是:re ...
RMQ -
yuandong0828:
简洁的特别透彻细致,多谢,
虚函数、虚指针和虚表 -
adam_zs:
谢谢分享!
括号匹配问题 -
hongloumengyanzxw:
good[b][/b]
dup和dup2函数 -
chriszeng87:
最后第二种情况右下角的那个点是不是可以看作相交点的?上面的那种 ...
判断两个链表是否相交
文章列表
对于抽象类的进一步体会
- 博客分类:
- Java
今天在看一个工厂方法的代码示例中,发现该示例中定义了一个抽象类但却没有任何抽象方法,代码如下所示。
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)目前没有经典的定义。比较通常的说法是:指对一项特定的 ...
二叉树的前中后序遍历
- 博客分类:
- DS & Algorithm
题目:给出二叉树的前序遍历和中序遍历,求后序遍历。
背景知识:前序、中序和后序遍历指的是父节点的遍历顺序。
例如前序为父节点->左子树->右子树,中序为左子树->父节点->右子树,后序为左子树->右子树->父节点
解题思路:
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. 类中的任何变量(不管是静态的还是非静态的)都在方法(包括构造函数)之 ...
反转字符串的优化方法
- 博客分类:
- DS & Algorithm
思路:
对变量交换进行优化,不适用额外的中间变量。
解法一:使用异或操作
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; ...