xixi

Java SE API技巧

2017/12/08

缓冲式I/O

  1. 使用二进制数据的文件I/O,使用一个BufferedInputStream或BufferedOutputStream来包装底层的文件流。对于使用字符数据的文件I/O,使用BufferedReader或BufferedWriter来包装底层的流

类加载

  1. Java的类加载器使用了双亲委派模型,一个类加载器在收到加载类的请求后,首先会把这个请求委派给父类加载器去完成,每隔层次的类加载器都如此处理,一个到启动类加载器;如果启动类加载器无法完成加载请求,才会沿这个路径返回,找到合适的类加载器。
  2. 在存在多个类加载器的复杂应用中,让这些类加载器支持并行,可以解决系统类加载器或者类加载器上的瓶颈问题。
    如果应用时在单线程内,则通过一个类加载器加载很多类,关掉Java支持并行的特性可能会有好处

随机数

  1. Java默认的Random类的初始化的成本很高,但是一旦初始化完毕,就可以重用。
  2. 在多线程代码中,应该首选ThreadLocalRandom类。

异常

  1. 处理异常的代价未必会很高,不过还是应该在适合的时候采用。
  2. 栈越深,处理异常的代价越高。

字符串

  1. 一行的字符串连接代码性能很不错。
  2. 对于多行的连接操作,一定要确保使用StringBuilder。

集合

  1. 确定集合的大小减少扩容的性能损耗
  2. 根据集合使用情况选择具体的集合类
CATALOG
  1. 1. 缓冲式I/O
  2. 2. 类加载
  3. 3. 随机数
  4. 4. 异常
  5. 5. 字符串
  6. 6. 集合