随笔分类 - Java
摘要:NIO库在JDK1.4中引入,它以标准Java代码提供了高速的,面向块的IO,弥补了之前同步IO的不足。 缓冲区Buffer Buffers是一个对象,包含了一些要写入或读出的数据。在面向流的IO模型中,数据是直接写入或读出到Stream对象中的,在NIO中,所有数据都是用缓冲区处理的,在读取数据时
阅读全文
摘要:CountDownLatch CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。CountDownLatch使用一个数字count初始化,使用countDown方法使count递减,当count大于0时await方法将一直阻塞,当count
阅读全文
摘要:今天看到一个题:两个线程交替打印奇数和偶数,即一个线程打印奇数,另一个打印偶数,交替打印从1到100。想了下有多重实现方法。 wait和notify方法: 输出: 奇 1偶 2奇 3偶 4奇 5偶 6奇 7 ... LockSupport实现 使用Condition 另一个题,写出会导致死锁的代码:
阅读全文
摘要:JDBC(Java Database Connectivity) Java数据库连接,提供了一种与平台无关的用于执行SQL语句的标准javaAPI,可以方便实现多种关系型数据库的统一操作 常用的类与接口为DriverManager、Connection、Statement、ResultSet、Pre
阅读全文
摘要:Annotation是给类,方法或域上加的一种特殊的标记,可以通过反射取到注解的类型和值,从而完成某种特定的操作。 定义注解需要使用元注解,元注解有@Retention和@Target //@Retention用来定义该注解在哪一个级别可用,在源代码中(SOURCE),类文件中(CLASS),或者运
阅读全文
摘要:普通内部类 如果一个类只需要在另一个类内部使用,可以考虑将它写成内部类。 内部类拥有其外部类所有成员的访问权,因为内部类中隐含了一个外部类的引用,可通过 OuterClass.this 获得。 普通内部类中不可定义static的字段,除非它是final的。 利用内部类可以实现类似“多继承”,因为内部
阅读全文
摘要:Comparable接口和Comparator接口都是用来定义集合中的排序的,只是Comparable是在集合内部定义排序的实现,Comparator是在集合外部排序的实现。 Comparable 的在java.util中Comparator 的在java.lang中 Comparable接口的实现
阅读全文
摘要:CountDownLatch是线程同步辅助类,它允许一个或多个线程wait直到countdown被调用使count为0。 CountDownLatch是在java1.5被引入,存在于java.util.concurrent包下。 常用于 1:用于在一个线程中等待N个线程完成 2:让N个子线程同时开始
阅读全文
摘要:JVM内存结构 Heap Space: 堆内存(Heap Space)是由Young Generation和Old Generation组成,而Young Generation又被分成三部分,Eden,From Survivor和To Survivor,默认比例为8:1:1 堆是被所有线程共享的一块
阅读全文
摘要:GC: 垃圾回收由JVM中GC线程监控和执行。 参考: http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html GC算法: 1. 标记清除法 首先从根节点开始遍历所有对象,标记出被引用的对象,然后遍历堆,释放所有未标记的对象,会产
阅读全文
摘要:ArrayBlockingQueue是阻塞队列的一种,基于数组实现,长度固定,队尾添加,队首获取, 构造函数: ArrayBlockingQueue(int capacity) ArrayBlockingQueue(int capacity, boolean fair) ArrayBlockingQ
阅读全文
摘要:Reflection 反射能在运行时获取一个类的全部信息,并且可以调用类方法,修改类属性,创建类实例。 而在编译期间不用关心对象是谁 反射可用在动态代理,注解解释,和反射工厂等地方。 end
阅读全文
摘要:对象拷贝用于在内存中复制对象,无需构造器便可创建对象。 需要注意的是 1.clone方法提供的只是简单的值拷贝和地址拷贝,若类中包含HashMap等类型时,需要手工编写拷贝过程 2.如果父类没有提供正确的clone方法,子类拷贝也将不正确 3.Object的clone方法没有同步。 一个简单的例子:
阅读全文
摘要:如果一个类的对象要用做hashMap的key,那么一定要注意覆盖该类的equals和hashCode方法。 equals()是基类Object的方法,用于判断对象是否有相同地址及是否为同一对象 hashCode()是基类Object的native方法,返回int。 hashCode的通用约定: 1.
阅读全文
摘要:对Java对象序列化的目的是持久化对象或者为RMI(远程方法调用)传递参数和返回值。 下面是一个序列化对象写入文件的例子: 输出结果: [null-lg-123-human-d:lg] [null-ss-23-human-d:ss] 如果需要进一步定制序列化反序列化过程,可通过实现接口Externa
阅读全文
摘要:单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间;能够避免由于操作多个实例导致的逻辑错误。 如果一个对象有可能贯穿整个应用程序,而且起到了全局统一管理控制的作用,那么单例模式也许
阅读全文
摘要:Java中的ThreadLocal 可以看做以线程标识为key的Map,在多线程开发中使用非常方便。 示例 运行结果 源码解析 1 public ThreadLocal() { 2 } 3 4 /** 5 * Returns the value in the current thread's cop
阅读全文
摘要:gz是Linux和OSX中常见的压缩文件格式,下面是用java压缩和解压缩gz包的例子
阅读全文
摘要:Java读写文件需要注意异常的处理,下面是一个例子 写文件 读文件 end
阅读全文
摘要:Java中的枚举是一种特殊的类,可以将一组固定常量的集合组成一种类型,使用方便且类型安全。使用enum关键字定义。 enum类型父类为Enum,通过Enum.class可见Enum为抽象类,实现了Comparable<E>和Serializable接口。 私有属性name表示enum值的名称,可通过
阅读全文

浙公网安备 33010602011771号