Java核心技术卷二高级特性-笔记

笔记

Java SE 8 流库

参考:https://blog.csdn.net/Al_assad/article/details/82356845

IO 流
  • 重点关注内存映射:FileChannel
时间类
  • Date
  • SimpleDateFormatCalendar
  • LocalDateTimeDateTimeFormatter
Shocket 通讯
  • SocketServerSocket
  • URLHttpURLConnection
  • 重点关注可中断套接字:SocketChannelChannels.newInputStreamChannels.newOutputStreamDatagramChannelMulticastChannel
  • UDP通讯:DatagramSocketDatagramPacket【只允许发送到指定目标地址】
  • UDP 多点通讯:MulticastSocket【组播】
类加载器

每个Java程序至少拥有三个类加载器,除引导类加载器外,每个类加载器都有父类加载器【注:双亲委派机制】

  • 引导类加载器【通常由C语言实现】

  • 扩展类加载器【用于加载jre/lib/ext类文件】

  • 系统类加载器(又名应用类加载器)【用于加载应用类文件】

  • 自定义类加载器

    需要重写findClass函数,在超类的loadClass委托其父类加载器加载失败时会调用findClass方法

    findClass函数内加载到类数据时需要调用超类defineClass方法,向虚拟机提供字节码

    1
    2
    3
    4
    5
    6
    7
    public class CustomClassLoader extends ClassLoader {
    @Override
    protected Class<?> findClass(String name) throws ClassNotFoundException {
    byte[] classData = ...;// 加载类字节码数据
    return defineClass(name,classData,off,len);// 加载字节码并返回
    }
    }
消息摘要
1
2
3
4
5
6
// MD5 SHA-1 SHA-256 SHA-384 SHA-512....M
MessageDigest digest = MessageDigest.getInstance("MD5");
for(;;) {
digest.update(byte[]);
}
byte[] result = digest.digest();
加密

KeyGeneratorSecureRandomCipherKeyPairGenerator