什么是Java NIO?
NIO就是非阻塞IO。
NIO的实现原理是什么?
NIO使用双向的通道(channel)而非单向的流(stream)进行通信。在通道上我们可以注册总共四种事件:客户端连接、服务端接收客户端连接、读、写。客户端和服务端各自维护一个管理通道的对象(selector),接收一个或多个通道的事件。
为什么要用NIO?
对阻塞式IO而言,每一个客户端都要有一个对应的线程来进行处理。每个线程都要占用一些空间和CPU时间。另外,多个线程带来频繁的上下文切换,而这些切换很可能是无意义的。
Map在Java中的四种实现?
HashMap(最简单实现)、HashTable(线程安全)、LinkedHashMap(可顺序访问)、TreeMap(基于红黑树实现的map)。
List在Java中的三种实现?
ArrayList(数组)、LinkedList(链表)、Vector(动态数组,基于数组实现。可插入不同类型对象并能动态改变大小,容量满后扩大一倍,线程安全)。
Set在Java中的四种实现?
HashSet(由HashMap支持,相当于没有 value 的 HashMap) 和 LinkedHashSet(顺序访问)。
Java类加载过程?
加载:类中的方法被放到方法区、堆中生成一个对象表示该类、
链接:验证(保证符合jvm规范,防止安全问题)、准备(为类变量(静态变量)分配内存,分配的内存在方法区中)、解析(将虚拟机常量池中的符号饮用转变为直接引用)
初始化:执行类构造器方法、如果父类未初始化,先初始化父类。
有几种类加载器?
引导类加载器(Bootstrap Class Loader,加载Java核心库)、扩展类加载器(Extensions Class Loader,加载Java扩展库)、应用程序类加载器(Application Class Loader,加载 Class Path 下的应用程序类)、自定义类加载器(主要是为了加密解密某些类的字节码)。
什么是代理模式?
代理模式是java中常用的设计模式,它的特点是代理类与委托类实现同样的接口。代理类并不真正地实现服务,而是通过调用委托类对象的方法,提供特定的分服务。
什么是动态代理?它的优点是什么?
按照代理的创建时期,代理可分为两种。程序运行前就已经创建好的叫做静态代理,程序运行时利用反射机制动态生成的叫做动态代理。动态代理的优点是只需要一个代理类就能实现全部的代理功能。
如何实现一个动态代理?
实现一个动态代理有两种方法,一种是使用 JDK 实现动态代理,另一种是使用 Cglib 实现动态代理。
前者的代理类需要实现 InvocationHandler 接口(该接口要实现一个 Invoke() 方法),并用在Bind 方法中调用 Proxy 的 NewProxyInstance 方法创建代理实例。在创建代理实例的过程中,需要绑定委托类实现的(提供相关服务的)接口。如果委托类没有实现接口,那么这种方法不能使用。
后者是生成一个代理类的子类,需要实现 MethodInterceptor 接口(该接口要实现一个 intercept() 方法),并在 getNewInstance() 中创建一个实例,然后把其父类设定为委托类,并返回该实例。由于这种方法是基于继承的,因为 final 类不能使用。
参考链接:http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html
Java八种基本数据类型:
byte、short、int、long、float、double、boolean、char。
如何利用动态代理实现 Spring AOP?
http://blog.csdn.net/moreevan/article/details/11977115/