java8变化
- 接口默认方法
- lamabda
- Date/Time API
- 反射加强 -parameter method.getParameters() 参数可以带参数名
- Stream 流编程
- JVM选项-XX:PermSize与-XX:MaxPermSize分别被-XX:MetaSpaceSize与-XX:MaxMetaspaceSize所代替
- HashMap头插改尾插 链表变数组
BIO: 阻塞
接收请求 accept 执行请求; 这 只能接收一个请求
接收请求 accept 开启子线程 执行请求 多少个请求就多少个线程
NIO: 非阻塞
特点:任务很快的小任务
一个线程处理多个客户端的IO事件 怎么处理的呢? 多路复用器selector
selector接收请求(非阻塞) 交给对应的事件处理
异常
Throwable 是Error 和 Exception的超类
Error: 内部错误无法捕捉
Exception:
- CheckedException 受检查异常 必须try catch住 不然编译不通过 IOException
表示无效,不是程序中可以预测的。比如无效的用户输入,文件不存在,网络或者数据库链接错误。这些都是外在的原因,都不是程序内部可以控制的。
必须在代码中显式地处理。比如try-catch块处理,或者给所在的方法加上throws说明,将异常抛到调用栈的上一层。
继承自java.lang.Exception(java.lang.RuntimeException除外) - RuntimeException 正常运行异常