Memo
-
java
1. ArrayList, Vector, LinkedList
ArrayList 和Vector使用数组方式,LinkedList使用双向链表实现存储
Vector线程安全
2. HashMap和Hashtable
HashMap是Hashtable的轻量级实现(非线程安全)
HashMap允许null值(key/value)
HashMap的contains方法在Hashtable中对应的为containsKey和containsValue
HashTable中hash数组默认大小是11,增加的方式是 old*2+1.HashMap中hash数组的默认大小是16,而且一定是2的指数.
都实现Map接口
3. final, finalize, finally
final: 值不可变,方法不可覆盖,类不可继承
finalize: Object的方法,在GC时会被调用
4. instanceof运算符可以用来判断某对象的类是否实现了接口
5. switch(key), key为整数,包括byte,char,short,int,不包括long,float,string等
6. try-finally中try块内return会在return之前执行finally,finally中一般不包含return,若包含会覆盖其它处的return
7. equals()和hashCode()
equals()相等 => hashCode()相等
equals()不等 !=> hashCode()不等
hashCode()相等 !=> equals()相等
hashCode()不等 => equals不等
8. 线程与同步
synchronized, wait/notify
wait():使一个线程处于等待状态,并且释放所持有的对象的lock.
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常.
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级.
notityAll():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争.
-
Android
- RPC
1) 创建aidl文件(IService.aidl).IService.java(包括IService接口及IService.Stub类),IService.Stub为public static abstract class,继承IBinder并实现IService接口
2) 新建类继承Service类,重写onBind(Intent)
3)
定义内部类(继承自IService.Stub),并在onBind中返回该类实例
4)
调用bindService(Intent, ServiceConnection,
int flags)并在onServiceConnected中保存返回的IBinder类,可用IService.Stub.asInterface(IBinder)转化为IService接口
5)
unbindService(ServiceConnection)断开连接
-
Other
- 大小端