摘要:
一.基本垃圾回收算法 1.引用计数(Reference Counting) 比较古老的回收算法。原理是此对象有一个引用则增加一个引用计数,删除一个引用则较少一个引用计数。垃圾回收时,只回收引用计数为0的对象。此算法最致命的是无法处理互相引用的问题。 2.标记-清除(Mark-Sweep) 此算法执行 阅读全文
摘要:
目前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 阅读全文
摘要:
package com; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /** * Created by yangyu on 16/11/28. */ /** * FutureTa... 阅读全文
摘要:
package com; import java.util.concurrent.*; /** * Created by yangyu on 16/11/28. */ /** * Callable and Future用法 * Callable可以被ExecutorService的submit方法使用,可以取线程执行的返回值; * * Future是返回值的封装类型: * g... 阅读全文