1. 阻塞IO与非阻塞IO, 同步和异步IO各自是什么?
- 阻塞IO,IO操作被用户调用的时候不会立即产生结果。而是进行IO过程,完成之后才会返回结果。
- 非阻塞IO,被用户调用后,IO过程而是立即返回一个值。
- 阻塞和非阻塞的重点区别作为一个IO操作,会不会立即给调用者返回一个结果。
- 同步IO,作为用户线程,调用IO之后必须等待结果,没结果就不干别的事。
- 异步IO,作为用户线程,我调用IO之后可以继续干其他的事情。
- 根据Linux网络编程,从操作系统层面来说,IO过程分为准备数据,以及将数据从内核态拷贝到用户态两个过程,只有第五种才能做到真正异步。
- 1)阻塞I/O(blocking I/O)
- 2)非阻塞I/O (nonblocking I/O)
- I/O复用(select 和poll) (I/O multiplexing)
- 4)信号驱动I/O (signal driven I/O (SIGIO))
- 5)异步I/O (asynchronous I/O (the POSIX aio_functions))
2. Java 的IO框架
字符流和字节流
NIO , Mina,Netty 框架
3. Spring 托管 Bean 对象工厂的初始化问题
- 上下文,比如ApplicationContext 是一个 BeanFactory, 里面维护着 BeanDefinition 。
- 懒加载,如果不设置那么初始化Context 的时候就会实例化Bean对象,如果lazy-init 设置了true那么只有当对象被使用到的时候才会实例化。
- 循环依赖问题,如果Bean1对象持有Bean2 , Bean2 又持有Bean 1属性,那么能够正常实例化吗,实际上能。因为初始化的过程中,类的实例化和属性的赋值是分布进行的。
网友评论