java
文章平均质量分 58
87now
学习者,总结者,研究者,创新者。
展开
-
HashTable和HashMap的区别(三点)
HashTable和HashMap的区别(1)HashTable是基于陈旧的Dictionary类的,HashMap是Map接口的一个实现。(2)HashMap允许null key和null value,而HashTable不允许。(3)HashTable的方法是Synchronize的(多线程安全),而HashMap不是(非线程安全)。在多个线程访问HashTable时,不需要自己为原创 2014-03-06 23:33:27 · 645 阅读 · 0 评论 -
【Java】Java CAS机制
1、原子操作类所谓原子操作类,指的是java.util.concurrent.atomic包下,一系列以Atomic开头的包装类。如AtomicBoolean,AtomicInteger,AtomicLong,它们分别用于Boolean,Integer,Long类型的原子性操作。这里的Atomic操作类的底层正是使用了“CAS机制”。2、CASCAS(Compare and Swap)...原创 2019-05-28 12:45:45 · 699 阅读 · 0 评论 -
【Android】美团robust原理分析
主流的热修复框架类型(1)ClassLoader:将热修复的类放在dexElements[]的最前面,这样加载类时会优先加载到要修复的类以达到修复目的。如腾讯的Tinker、Nuwa等。(2)Native hook:修改java方法在native层的函数指针,指向修复后的方法以达到修复目的。如阿里的Andifix、DexPosed等。(3)Instant run:在编译打包阶段对每个函...原创 2019-03-31 17:20:46 · 1870 阅读 · 0 评论 -
【Android】热修复影响1-Java类型擦除和桥方法
注:Java类型擦除发生在泛型编程中。Type Erasure and Bridge Methods类型擦除和桥方法(1)The compiler sometimes creates a synthetic(合成的) method, called a bridge method, as part of the type erasure process.在类型擦除过程中,编译器通常会生成...原创 2019-03-24 16:31:04 · 206 阅读 · 0 评论 -
【Java】Java并发编程之CountDownLatch、CyclicBarrier、Semaphore
今天说说Java并发编程辅助类CountDownLatch、CyclicBarrier、Semaphore。1、CountDownLatchjava.util.concurrent.CountDownLatch(1)官网英文解释A synchronization aid that allows one or more threads to wait until a set of o...原创 2019-01-25 16:55:48 · 287 阅读 · 0 评论 -
【Java】Arrays.asList()使用注意事项
Arrays.asList()的使用注意事项时常忘记,在此再做下总结。使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException异常。说明:Arrays.asList()的返回对象是Arrays的静态内部类ArrayList,而不是java.util.Ar...原创 2019-01-25 10:48:59 · 1177 阅读 · 0 评论 -
【Android】startService和bindService混合使用总结
先自定义一个service:public class MyService extends Service { private Service startService; private Service bindService; @Nullable @Override public IBinder onBind(Intent intent) { ...原创 2018-10-05 17:56:44 · 4174 阅读 · 1 评论 -
【Java】线程池排队策略 & 拒绝策略
1、为什么JDK1.5引入线程池在Java中,如果每个任务都创建一个新的thread,开销是非常大的。除了创建和销毁线程的时间开销外,还消耗大量的系统资源。为了规避以上问题,尽可能减少创建和销毁线程的次数,特别是一些资源耗费比较大的线程的创建和销毁,尽量利用已有的线程对象来进行服务,这就是线程池引入的原因。 2、ThreadPoolExecutor类分析(a)ThreadPoolExecutor构...原创 2018-07-01 16:07:46 · 7696 阅读 · 0 评论 -
Thread与Runnable区别
1、Thread和Runnable是实现java多线程的两种方式,各自的实现方式如下:(1)采用Thread实现多线程将类声明为Thread的子类,该子类应重写Thread类的run方法。接下来创建并启动一个线程。PrimeThread p = new PrimeThread(143);p.start();(2)采用Runnable实现多线程声明实现Runnab原创 2014-05-22 19:42:21 · 1336 阅读 · 0 评论 -
Java中""与null区别
java中空字符串("")与null的区别:1、空字符串("")分配了内存。null没有分配内存。2、""是一个空字符串(String),它在内存中是存在的,它可以使用Object对象中的方法(例如"".toString()、"".equals())。null是一个空对象,它在内存中是不存在的,它不可以使用Object对象中的方法(例如调用null的字符串的方法会抛空指针异常)。3、原创 2014-05-14 13:35:17 · 1567 阅读 · 2 评论 -
java final
(1)final类final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会再被扩展,那么就设计为final类。(2)final方法如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。使用final方法的原因有二:第一、把方法锁定,防止任何继承类修原创 2014-04-11 17:03:47 · 996 阅读 · 0 评论 -
【Java】不可变类(immutable)总结
1、不可变类(1)不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值,也就是不能改变对象的状态。(2)Java 中八个基本类型的包装类和 String 类都属于不可变类,而其他的大多数类都属于可变类。(3)不可变对象是线程安全的。2、如何设计不可变类?(1)类声明为final,不可以被继承。(2)所有成员变量定义为私有和final(private final)。(3)不提...原创 2019-05-28 17:25:10 · 8985 阅读 · 0 评论