Java基础

什么是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/





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值