Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复
用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。NIO 类,它可以使用 Native 函数库
直接分配堆外内存,然后通过一个存储在 Java 堆里的 DirectByteBuffer 对象作为这块内存的引用进行操作。
这样能在一些场景中显著提高性能,因为避免了在 Java 堆和 Native 堆中来回复制数据。
Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完
成了再通知服务器应用去启动线程进行处理。
6 Nginx(读 engine x)与 Redis
旨在用最少资源处理高并发问题
Nginx是一个web 服务器,提供网页服务
redis 可做数据库或缓存,大多数情况下被拿来做缓存
7 JAVA CI 与 JNI
ci就是持续化集成,就是在一个大型项目中,当有人提交了后, CI服务器会去把更改的代码自动拿下来编译,
然后发布,让程序员进行测试。
JNI(java native interface)java本地接口,负责与其它语言通心(C/C++)。
8 JAVA 类加载机制
类是在运行期间动态加载的。
JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化(使用和卸载7个阶段)。
1)加载
通过一个类的全限定名来获取定义此类的二进制字节流。
将这个字节流所代表的静态存储结构转化为方法区的运行时存储结构。
在内存中生成一个代表这个类的 Class 对象,作为方法区这个类的各种数据的访问入口。
* 如果BIO要能够同时处理多个客户端请求,就必须使用多线程,即每次accept阻塞等待来自客户端请求,一旦
受到连接请求就建立**通信套接字**同时开启一个**新的线程**来处理这个**套接字的数据读写**请求,然后立刻又
继续accept等待其他客户端连接请求,即为每一个客户端连接请求都创建一个线程来单独处理。
* BIO方式适用于**连接数目比较小且固定**的场景,这种方式对服务器资源要求比较高,并发局限于应用中。
* 用多路复用器,可以监听来自多个客户端的IO事件
* 在一个线程中就可以调用多路复用接口(java中是select)阻塞同时监听来自多个客户端的IO请求,一旦有
收到IO请求就调用对应函数处理。
* NIO适合处理连**接数目特别多,但是连接比较短**(轻操作)的场景,Jetty,Mina,ZooKeeper等都是
基于java nio实现。