Tencent

13 4 月, 2010

构造函数、析构函数能是虚函数吗?为什么?
构造函数如果为虚,也就是假设虚机制在构造函数中起作用的话,你构造的对象极其有可能建立在来未构造的对象资源上,会令构造以失败告终。构造函数仅仅构造当前对象所需要的资源。
一个类拥有虚析构函数表明它是一个基类。用虚析构函数是为了解决当用基类的指针指向派生类时,如果删除此指针,要调用派生类的析构函数(虚函数的作用)。

什么是多态?
允许父类指针或名称来引用子类对象,或对象方法,而实际调用的方法为对象的类型方法。
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。

unicode utf-8
unicode 2个字节 utf-8 1-4个字节 utf-16 2或4个字节

动态规划
把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。
多阶段决策。

单向链表逆转
http://javaboy2006.javaeye.com/blog/181303
http://cid-889b2ac6dc1ce102.spaces.live.com/blog/cns!889B2AC6DC1CE102!http://blog.csdn.net/tmljs1988/archive/2008/08/28/2841509.aspx

JSON参考资料

30 3 月, 2010

http://www.json.org/json-zh.html

http://www.ibm.com/developerworks/cn/web/wa-lo-json/

数据结构课程设计

5 3 月, 2010

下载

判断一个链表是否有循环,打印一个可能带环的链表中所有元素各一次。

寻找链表中倒数第m个元素。

判断一个ASCII字符串中是否有重复字符。

判断两个链表是否相交,寻找相交节点。

定义二叉树两个结点的最小距离为这两个结点的最近公共祖先分别到这两个结点的路径长度之和。请设计一种方法,找出给定二叉树中任意两个结点的最小距离,可以考虑以图形显示之。

设计一个程序实现二叉树的层次遍历,要求每层之间的数据用一个空格分开。二叉树采用二叉链表方式进行存储。

利用大顶堆实现一个优先队列。对于队列的操作应该至少支持下列几种指令:

   Void enqueue(int ObjectID, int Priority);

   Int dequeue();

   Void changeweight(int ObjectID, int newPriority);

函数enqueue向优先队列中插入一个ID号为ObjectID,优先级为priority的新对象。函数dequeue从优先队列中删除优先级最高的对象,并返回该对象的ID号。函数changeweight将ID号为ObjectID的对象的优先级改为newPriority。你需要一种机制,以便获取所需要对象在堆中的位置。你还需要对堆的实现进行修改,以存储对象在数组中的位置,使得堆中对象的修改可以在辅助数组结构中记录下来。

Read the rest of this entry »

对Windows程序设计规范的建议

12 2 月, 2010

变量名:通常采用所谓的“匈牙利命名法”,变量名由“类型缩写(小写)”+“变量描述(单词首字母大写)”构成,如字符串类型的变量可以命名为szFileName,DWORD类型的数据可以命名为dwFileSize,指针类型可以命名为lpBuffer,句柄类型的变量可以命名为hLogFile等。

函数名:各单词的首字母大写,如EnumerateFilesInDrectory、ShowFileSize等。

类型名:全大写,各单词以下划线分隔,如WIN32_FILE_ATTRIBUTE_DATA、DWORD、HANDLE等。

常量:同类型名的命名方式。

宏:多与类型名命名方式相同,有的也与函数名命名方式相同。

大括号与代码段:一般大括号独立占一行,大括号内的代码段缩进。如果代码段仅一行(如if-else后的语句),也建议使用大括号。

在调用或定义函数时,如果函数太长,可以分行写,将每个参数写一行。一般多于3个参数的函数需要分行写,以美观和方便阅读为原则。

package security;

17 1 月, 2010

在QMaster分类里记录的相关源码是个人认为写得比较好、比较有用(可复用程度比较高)的一部分,并非QMaster的全部源码。欢迎评论。

MD5.java

/**
 * 功能:MD5加密
 */
package security;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import sun.misc.BASE64Encoder;

public class MD5 {
    public static String md5Encoder(String pwd) throws NoSuchAlgorithmException {
        MessageDigest md5 = MessageDigest.getInstance(“MD5”);
        BASE64Encoder base64en = new BASE64Encoder();
        return base64en.encode(md5.digest(pwd.getBytes()));
    }
}