12 2016 档案
摘要:目前Java中最IO有多种文件读取的方法,本文章对比Stream,NIO ByteBuffer,NIO MappedByteBuffer的性能,让我们知道到底怎么能写出性能高的文件读取代码。 结论非常明显啦,以后再使用IO读写文件的时候,多使用NIO MappedByteBuffer吧,毕竟NIO比
阅读全文
摘要:org.apache.commons.pool2.ObjectPool提供了对象池,开发的小伙伴们可以直接使用来构建一个对象池 使用该对象池具有两个简单的步骤: 1、创建对象工厂,org.apache.commons.pool2.BasePooledObjectFactory已经对工厂有抽象实现,所
阅读全文
摘要:1、最近最少使用算法LRU (Least recently used,最近最少使用) 【实现】:最常见的是使用一个链表保存缓存数据 1、新数据插入到链表头部; 2、每当缓存命中(即缓存数据被访问),将数据移动到链表头部; 3、当链表满的时候将链表尾部的数据丢弃; 【代价】 命中时需要遍历链表,找到命
阅读全文
摘要:1、策略模式: 策略模式就是将能够通用的算法,封装成不同的组件,实现同一个接口,使之可以互换。 例子:SpringMVC的9大组件,都采用策略模式。比如HandlerMethodArgumentResolver,有非常多不同的实现类,这些实现类都可以互相替换来处理不同类型的参数,这就是策略模式。 策
阅读全文
摘要:本文的目的: 使用者在程序运行期间,可以动态的写Java Class,不需要生成任何.Class文件就可以完全在内存中编译,加载,实例化。 1、需要用到的组件介绍 1)JavaCompiler:用于编译Java Code。 2)CharSequenceJavaFileObject:用于保存Java
阅读全文
摘要:1、首先我们了解一下JDK动态代理的使用方法: 2、我们看一下JDK源码,是如何实现动态代理的 Proxy.newProxyInstance最终会调用Proxy.ProxyClassFactory.apply()方法生成代理Class 3、具体proxyClass是如何生成的 大致就是: proxy
阅读全文