suagger

Results 7 comments of suagger

乐观锁:认为并发修改的几率很小,在将修改的数据写进内存的时候判断当前资源之前是否被修改。 悲观锁:认为,在进行数据修改时,会出现并发修改,所以在这个线程修改数据的时候加上一把锁,防止其他线程在同一时间进行数据的修改。

接口中定义的抽象方法都是public abstract修饰,抽象类的方法可以用public,protected,默认类型 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。 抽象类只能被单继承,但是接口可以被多继承 抽象类中可以有构造器,静态代码块,静态方法,但是接口中不能

notify和notifyall都是object的方法 当线程处于等待状态,超时等待的时候会调用notify和notufyAll通知线程更改状态,当只有一个线程的时候,两个方法的效果是一样的,当有多个线程的时候,notify会选择唤醒一个线程获取锁,notifyall会唤醒所有的线程,让它们从等待池都进入到该对象的锁池,然后其中一个线程竞争获取锁

在布局简单的情况下使用FrameLayout > LinearLayout > RelativeLayout,因为RelativeLayout会让子View调用两次OnMeasure方法,而LinearLayout只需要调用一次,LinearLayout 在有weight时,也会调用子View2次onMeasure。在不影响层级深度的情况下,使用LinearLayout和FrameLayout而不是RelativeLayout。使用多层LinearLayout嵌套时,尽量使用RelativeLayout,在时间上此时RelativeLayout耗时更小,RelativeLayout中尽量使用padding代替margin,也可以使用include等方法进行布局的优化

String是不可变类,它是由final修饰的一个类,也不能被继承,是字符串常量 StringBuilder和StringBuffer都是字符变量,它们两个类的对象都可以被修改,并且不产生新的未使用的对象 StringBuilder相对于StringBuffer是线程不安全的,但是效率高

equals在内部调用"==",在不重写equals方法时,equals方法是比较两个对象是否具有相同的引用,即是否指向了同一个内存地址。而hashCode是一个本地方法,它返回的是这个对象的内存地址。 当重写equals方法时,就必须重写hashCode方法,如利用HashSet/HashMap/Hashtable类来存储数据时,都是根据存储对象的hashCode值来进行判断是否相同的。这样如果我们对一个对象重写了euqals,意思是只要对象的成员变量值都相等那么euqals就等于true,但 不重写hashCode,那么我们再new一个新的对象,当原对象.equals(新对象)等于true时,两者的hashCode却是不一样的,由此将产生了不一致。

可以用头插法,将原来的单链表逆置