文章列表
classLoader
- 博客分类:
- java classLoader
java 类加载器
分类:
Bootstrap ClassLoader:用C++实现,是所有类加载器的最终父加载器,负责将一些关键的java类,如java.lang.object和其他的一些运行时代码先加载到内存中。
ExtClassLoader: 用java实现,是Launcher.java的内部类,由BootStrap ClassLoader加载,但是由于Bootstrap classloader已经脱离了java体系(有c++实现),所以他的父类加载器被设为null。它用于加载java运行环境扩展包中的类(jre/lib/ext)。
AppClassLoader: j ...
各位好,本人3年java工作经验,目前从事保险行业,上海浦东,有愿意内推的么。不甚感激,有意向的可详谈,QQ:2283629064。谢谢!!!
判断内存中的对象已死?(没有引用)
1,为每一个对象添加一个标识,当有新对象引用时,标识加一,引用消失时,标识减一。当为0 的时候即可清除。
此方法无法解决对象循环引用的问题。
2.用GC ROOT表示根节点,从根节点到对象之间的路径为引用链。(referance chain)当没有引用链时即表示对象已死。
垃圾回收算法:
1,标记清除算法:将没有对象引用的内存标记,一次标记完成后清除已标记的内存。
缺点:标记、清除的效率都不高;如果内存中对象的存活率较高时,效率低下;标记清除完成后产生许多不 连续的内存空间。
2,复制算法:将内存空间分为大小相等的两块,每次只是用其中的一块,当这一快内存用完后,将仍然存活的对象复制到另一块内存上。
缺点:只能是用原有内存的一半,代价过高。
3,标记整理算法:和标记清楚算法一样,但当一次标记完成后不是直接清楚已标记的内存,而是将分散的内存往一端移动,使之成为连续的内存。
此处demo为下载pdf文件。
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment;filename=epolicy.pdf");
BufferedOutputStream outp = null;
BufferedInputStream in = null;
String filenamedownload = "";
try {
outp = new Bu ...
gruop by 和 having 的区别
- 博客分类:
- SQL
首先了解聚合函数:例如:sum, count, max, avg等。这些函数和其他函数的根本区别就是它们一般作用于多条记录上。
通过使用group by子句,可以让sum count这些函数对属于一组数据起作用。
having 子句可以让我们筛选成组后的各组数据
eg.显示各地区的总人口和总面积,仅显示那些面积吵过10000的地区
select region, SUM(population), SUM(area) from bbc group by region having SUM(area)>10000
在这里,不能使用where,因为表中不存在这样一条记录,相反,having子句可以 ...