Java致力于检查程序在编译和运行时的错误;
Java虚拟机实现了跨平台接口;
Java自己操纵内存,减少了内存出错的可能性;
Java实现了真数组,避免了覆盖数据的可能性,和数据覆盖类型无关;
copyOnWriteArrayList适合使用在读操作远远大于写操作的场景里面,比如缓存;
ReadWriteLock当写操作时,其他线程无法读取写入数据而当读操作时,其他线程无法写入数据,但却可以读取数据,适用于读取远远大于写入的操作;
JDK中提供了三个classLoader,根据层级从高到低:
.Bookstrap ClassLoader 主要加载JVM自身工作需要的类;
.Extension ClassLoader 主要加载%JAVA_HOME%\lib\ext目录下的库类;
.Application ClassLoader,主要加载ClassPath指定的库类,一般情况下这是程序中的默认类加载器,也是ClassLoader.getSystemClassLoader()的返回值。(这里的classpath为环境变量中配置的classPath,当然也可以在执行Java命令时用-cp参数来修改)
Java加载类的 实现方式,我们成为双亲委托模型:
如果一个类加载器收到了类加载的请求,他首先不会自己尝试去加载这个类,而是把这个请求委托发送给父类加载器,每一层的加载器都是如此,最终传给Bookstrap ClassLoader;
双亲委托模型主要是解决类载入过程中的安全性问题;