摘要:
六、接口与内部类: 1. 接口和抽象类:Java通过interface关键字来表示接口,接口中不能包含非静态域字段,所有的域成员均是公有的抽象方法,如Comparable接口,如果希望利用Arrays.sort方法,数组的成员必须实现该接口。抽象类中包含抽象方法,和接口一样抽象类也不能被实例化。 1) 接口不能被实例化,但是可以声明接口的变量指向其实现类的对象。 2) 每个类只能有一个超类,但是可以实现多个接口。 以下为Java的接口和抽象类的定义方式: 1 public interface Comparable { 2 int compareTo(Object other); 3 } 4 5 阅读全文
摘要:
四、枚举: 枚举的是在Java 1.5SE 中开始支持的,以下为Java枚举的基本概念和应用技巧: 1. 所有的enum对象均是由class对象作为底层支持的,该对象继承自JDK中的Enum<E>,但是该底层类确实final类,既不能再被其他的类继承。 2. 枚举的出现完全替代了原有的"public static final"常量表示法,枚举以一种更加合理、优雅和安全的方式替换了原有的方案。其最基本的声明方式如下:1 public enum Color {2 RED, BLUE, BLACK, YELLOW3 } 3. Enum<E>中构造函数的原型 阅读全文
摘要:
一、基本程序设计结构: Java的基本程序结构、关键字、操作符都和C/C++非常相似,以下为主要的几点区别: 1. Java的原始数值型数据类型中不包含无符号类型,如c中的unsigned int。 2. 在进行移位运算时,当向左边移动时,如1 << 35, 对于int类型,由于其占有4个bytes(32bits), 因此在Java中,大于32的移位将对32取模,即1 << 35的结果等于1 << 3,以此类推,long将会对64取模。对于int类型而言,如果确实需要获取32位以上的移位,需要将返回值的类型提升到long即可。 3. 在c语言中,可以通过判断 阅读全文
摘要:
一、MAKE中的自动变量: $@: 表示target的名字 $%: 仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是"foo.a(bar.o)",那么,"$%"就是"bar.o","$@"就是 "foo.a"。 $<: 表示第一个依赖条件的名字 $?: 表示所有比target更新的依赖条件的名字列表 $^: 表示所有依赖条件的名字,同时去除依赖列表中重复的条件 $+: 同$^的功能基本相同,但是他并不去除依赖列表中的重复条件 自动变量的另外一类扩展为,其中D为direc 阅读全文
摘要:
12. 明确的告诉java 2d你将要完成的绘制,而不是使用一个更为通用的方式,这样能够带来更好的性能。 1 //画线的bad way 2 Shape line = new Line2D.Double(LINE_X, BAD_Y, LINE_X + 50, BAD_Y + 50); 3 g2d.draw(line); 4 5 //画线的good way 6 g.drawLine(LINE_X, GOOD_Y, LINE_X + 50, GOOD_Y + 50); 7 8 //画rectangle的bad way 9 S... 阅读全文
摘要:
1. main函数不要通过直接调用JFrame子类的构造来启动窗体程序,因为main本身并非运行于EDT中,因此可能会给UI带来同步问题,建议使用一下方式运行: 1 public static void main(String args[]) { 2 Runnable doCreateAndShowGUI = new Runnable() { 3 @Override 4 public void run() { 5 //该方法为该类的私有静态方法,用于启动JFrame的主界面。 6 ... 阅读全文
摘要:
1. 下载MinGW32到本地,以便能够使用gcc编译器以及和linux相关的一些库文件。2. 由于libmemcached的测试程序需要依赖memcached.exe本身,如果需要将memcached在win32下编译,需要修改部分和socket相关的code,而又考虑到仅仅是测试用例需要,因此决定通过修改configure(由autoconfig用于生成makefile的配置信息检查的shell文件)文件,以使libmemcached的编译不在依赖memcached。3. 为了完成第二步,需要手工修改configure文件,将如下shell代码注释掉,以便在执行./configure的时候 阅读全文
摘要:
Cachegrind: Cachegrind通过模拟cpu的1,3级缓存,收集应用程序运行时关于cpu的一些统计数据,最后在将明细数据和汇总信息打印出来。 1. 以下是cpu统计数据的一些术语缩写: I cache reads (Ir, which equals the number of instructions executed), I1 cache read misses (I1mr) and LL cache instruction read misses (ILmr). D cache reads (Dr, which equals the number of memory read 阅读全文
摘要:
一、Memcheck-tools 1. 可查找的错误类型: 1) Illegal read or write errors --read-var-info=<yes|no> [default:no],如果这个选项被打开,应用程序将运行的更慢,但是能够给出能多的错误细节。如下: --read-var-info=no ==15516== Uninitialised byte(s) found during client check request ==15516== at 0x400633: croak (varinfo1.c:28) ==15516== by 0x4006B2: ma 阅读全文
摘要:
九、部分记录读取和存储1. 在进行数据操作的时候需要为DB->put() or DB->get()的DBT data参数的flags字段设定DB_DBT_PARTIAL标志。同时还要指定doff(偏移量)和dlen(长度)。如"ABCDEFGHIJ",如果doff=3 and dlen=4,其所操作的字符串为"DEFG"。在进行数据部分替换的时候,DB->put()将使用data的data字段和size字段表示的数据替换其doff字段和dlen字段所包含的数据,如果size大于ulen,该key的data item将增大,否则data 阅读全文