- 博客(10)
- 资源 (18)
- 收藏
- 关注
原创 从数据库读取JAR并加载到Classpath中
在组件的开发过程中,我们可能会用到组件上传功能,这个时候就会将JAR等其它信息都存放到数据库,在应用初使化的时候,将组件的JAR从数据库中读出来,并一起加载到Classpath中。我们可以分成几以下几布操作:1、将JAR字节数据从数据库中读出来存到本地JAR文件;1.1 将JAR字节数据从数据库读到内存中 /** * Load jar byte data from data
2013-05-16 10:35:53 4809 5
转载 Shallow and retained sizes
所有包含Heap Profling功能的工具(MAT, Yourkit, JProfiler, TPTP等)都会使用到两个名词,一个是Shallow Size,另一个是 Retained Size.这是两个在平时不太常见的名词,本文会对这两个名词做一个详细的解释。Shallow Size对象自身占用的内存大小,不包括它引用的对象。针对非数组类型的对象,它的大小就是对象与它所有的成员
2013-05-15 11:44:45 3077
翻译 GC Root
常说的GC(Garbage Collector) roots,特指的是垃圾收集器(Garbage Collector)的对象,GC会收集那些不是GC roots且没有被GC roots引用的对象。一个对象可以属于多个root,GC root有几下种:Class - 由系统类加载器(system class loader)加载的对象,这些类是不能够被回收的,他们可以以静态字段的方
2013-05-15 10:09:42 36867 5
原创 让Java的反射跑快点
由于反射涉及动态解析的类型,某些Java虚拟机的优化不能被执行,所以导致了一定的性能的问题,特别是在JDK6以前特别严重,有时甚至达到数百倍,但是在JDK6以后,据说性能差别就不是哪么大了,JDK对此做了优化。但是总还是有那么数10倍的性能差异,那我们就让他跑得再快点吧。我们通常情况下写反射都是这样写:SomeObject someObject = new SomeObject();
2013-05-14 17:32:00 3432 2
原创 在Java7的URLClassLoader中提供了释放资源的close方法
Java应用,特别是大型的Java应用,往往都需要动态的加载类或Jar,URLClassLoader提供了这个功能,它让我们可以通过以下几种方式进行加载: * 文件: (从文件系统目录加载) * jar包: (从Jar包进行加载) * Http: (从远程的Http服务进行加载)常见的问题是,当class文件或者resources资源文件更新后,我们需要重新加
2013-05-13 17:17:59 6959
原创 在只有JRE的环境下使用BTrace
Btrace是一个基于Java且可以实现对字节码的动态跟踪的工具,它能在不改动当前程序的情况下,运行时的去监控Java程序的执行状况,例如可以做到内存状况的监控、方法调用的监控等等。但是它只能够运行于JDK6+以上的版本,因为某些原因,如在JDK5中JTWTI(Java Virtual Machine Toolkit Interface:Java 虚拟机工具接口,可以参看这篇文章:http://w
2013-05-10 10:25:12 3555 2
转载 Java序列化的作用和反序列化
1、序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。 2、什么情况下需要序列化 a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候; b)当你想
2013-05-09 14:28:36 18966
原创 Java中hashCode的作用
以下是关于HashCode的官方文档定义:hashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。 hashCode 的常规协定是: 在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。从某一应用
2013-05-09 13:54:53 282709 73
转载 如何在多线程下保证Lazy初使化对象的完全整性与正确-The "Double-Checked Locking is Broken" Declaration
这篇文章的原始URL是:http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html主要说的是多线程下,如何确保Lazy初使化的对象的完整性与正确性,并例举了可行与不可行的几种情况,这也是我们在编写多线程应用的时候,会经常碰到的问题。完整的原文COPY如下:The "Double-Checked L
2013-05-08 17:45:07 3734
原创 JAVA编码注意事项
1、比较两个浮点型是否相等,包括float及double,不要采用等号"=="进行比较,因为浮点计算可能涉及到舍入计算。如果是需要值比较准确的比较,如货币金额等,可以考虑使用固定精度的类型,如BigDecimal的。对于不需要精确的值,考虑比较平等一些范围内,例如:如果(Math.abs(x - y的)if(x==y){}可以修改为if(Math.abs(x - y)2、多线程并发
2013-05-08 17:14:15 3050
Hadoop环境搭建、配置及通过执行计算来验证的示例
2013-12-26
流程图绘制软件 Dia for Windows 0.97.2
2013-08-24
简单的JAVA HTML服务器
2009-10-19
将SQL的查询结果以表格形式返回,并生成翻页等
2007-08-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人