Java相关知识点

变量的生命周期:位于内层中的变量可以访问并修改外层变量的值

注意:子类中方法的访问权限 >= 父类

ReultSet不是一个集合,而是在使用jdbc(java database connectivity) 返回的一个结果集

enty中提供有参构造时, 未提供空参构造方法时,通过new空参未报错(java1.8)

mehod.invoke返回的是一个Obeject类型

Object类常用方法:
1.hashcode方法
2.clone
3.toString
4.equals
5.finalize(对象被回收时进行调用)

不可变分为引用不可变和对象不可变,被finall修饰的对象为引用不可变,可以被重新赋值,但不可以被重新new

super()
调用父类的构造方法,从而完成对子类的初始化工作

在Java的多重继承中,孙子类可以访问并且使用爷爷的成员方法

输入和输出是相对于外部输入设备而言的(磁盘)

阻塞是相对于调用方,同步是相对于被调用方

阻塞:调用方发布调用命令后,在数据复制好之前,自身需处于等待状态

非阻塞:调用方发布调用命令后,在数据复制好之前,可以去做其它事。

同步:接到调用命令后,立即去做

异步:承诺会做,不承诺立即去做

阻塞IO模型:在进程发布调用命令后,内核在数据的准备状态,直到数据成功复制,进程在此过程一直在等,什么也不干。

非阻塞IO模型:在进程发布调用命令后,数据没准备好之间,不会一直等,会做其它事,期间通过轮询的方式去询问内核数据是否准备好,返回成功指示后,再进行数据报的处理。

信号驱动IO模型:一遍一遍查看过于麻烦,当数据准备好时,直接提醒即可,进程预先向内核注册一个信号处理函数,当进程收到相应的信号后,处理函数会进行后续的处理,最后进程再进行数据报的处理。弊端:信号处理程序实现复杂,并且只有在数据准备阶段才可以近似为异步的。

IO复用模型:将多个IO注册到一个SELECT上,IO需要的数据都没准备好,SELECT 调用进程会阻塞

异步IO:进程先询问,无数据准备好时,直接返回,内核准备好时,不再返回成功指示,发送信号即可

BIO:Blocking I/O 同步阻塞IO模型,这种IO模型是最笨的

NIO:New I/O 支持阻塞与非阻塞。弊端:实现较为复杂

AIO:异步非阻塞

反射是众多高级特性的基础:如注解、动态代理,包括框架中也有很多地方使用

new 对象的开销很小(可以尝试下new 10000个对象)

try()会进行资源释放,前提是资源类实现了Closeable或AutoCloseable接口 jdk7新增

放在try - catch中的代码发生异常时,程序仍会运行

你可能感兴趣的:(java,开发语言)