J2SE
文章平均质量分 83
xiaohai0504
这个作者很懒,什么都没留下…
展开
-
cglib动态代理介绍(二)
1.CGLIB包的介绍代理为控制要访问的目标对象提供了一种途径。当访问对象时,它引入了一个间接的层。JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创 建代理。JDK的动态代理用起来非常简单,当它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想转载 2011-09-29 14:30:26 · 7560 阅读 · 3 评论 -
IO读写(一) java
摘要:最初java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了Reader和Writer两个类,这两个类都是抽象类,Writer中 write(char[] ch,int off,intlength),flush()和close()方法为抽象方法,Reader中read(char[] ch,int off,int length)和close()方法是抽象方法。子类应该分别实现他们。转载 2012-05-21 14:20:14 · 958 阅读 · 0 评论 -
java keytool 工具
Keytool 是一个JAVA环境下的安全钥匙与证书的管理工具,Keytool将密钥(key)和证书(certificates)存在一个称为keystore 的文件(受密码保护)中。在keystore里,包含两种数据: 密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)可信任的证书实体(trusted certificate ent转载 2012-05-24 14:27:09 · 16696 阅读 · 1 评论 -
BeanUtils、PropertyUtils、Dozer
测试用例:package com.cn.copy.service;import java.lang.reflect.InvocationTargetException;import java.util.Date;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.beanutil原创 2012-07-19 17:36:01 · 8704 阅读 · 3 评论 -
GC介绍
GC学习笔记一、GC特性以及各种GC的选择1、垃圾回收器的特性2、对垃圾回收器的选择2.1 连续 VS. 并行2.2 并发 VS. stop-the-world2.3 压缩 VS. 不压缩 VS. 复制二、GC性能指标三、分代回收四、J2SE 5.0的HotSpot JVM上的GC学习 - 分代、GC类型、快速分配转载 2012-09-26 16:24:12 · 2148 阅读 · 0 评论 -
Java 性能优化之 String 篇
简介: String 方法用于文本分析及大量字符串处理时会对内存性能造成不可低估的影响。我们在一个大文本数据分析的项目中(我们统计一个约 300MB 的 csv 文件中所有单词出现的次数)发现,用于存放结果的 Collection 占用了几百兆的内存,远远超出唯一单词总数 20000 个。 本文将通过分析 String 在 JVM 中的存储结构,以及常见 String 操作对内转载 2012-09-28 12:14:59 · 1270 阅读 · 0 评论 -
String的substring、split, StringTokenizer 截取字符串性能比较
测试的软件环境为:Windows XP、eclipse、JDK1.6。测试用例使用类ip形式的字符串,即3位一组,使用”.”间隔。数据分别使用:5组、10组、100组、1000组、10000组、100000组。实现闲话不说,先上代码:package test.java.lang.ref;import java.util.Random;import java.util转载 2012-09-28 11:41:22 · 19065 阅读 · 6 评论 -
java.lang.OutOfMemoryError: unable to create new native thread
一、认识问题:首先我们通过下面这个测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse 3.4,测试程序: import java.util.concurrent.CountDownLatch; public class TestNativeOu转载 2012-10-11 17:06:17 · 2888 阅读 · 1 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms3转载 2012-10-11 17:30:30 · 932 阅读 · 0 评论 -
java 位运算
public class BitOperate { public static void bitCalc() { byte a = 12,b=10; byte c = -12,d=-10; /** * 1、按位与 & * (AND) * 运算方法:当两边操作数的位同时为1时,结果为1,否则为0 * * 注意:符号位也原创 2011-11-03 18:41:24 · 1355 阅读 · 0 评论 -
java 原码、反码、补码
为什么要用?计算机内部采用二进制表示数值。如十进制数10用二进制数表示为1010。设计算机字长为8,即1Byte。最高位表示符号,0为正,1为负来看看用原码表示的数在进行加减乘除运算是会有什么问题:十进制:1-1=1+(-1)=0 原码:(0000 0001)-(0000 0001)=(0000 0001)+(-0000 0001)=(0000 0001)原+(1000 0001)原创 2011-11-02 18:28:19 · 8225 阅读 · 2 评论 -
java线程(三) 生产者消费者模式-线程同步问题
引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,如下图所示,生产者向空间里存放数据,而消费者取用数据,如果不加以协调可能会出现以下情况:生产者消费者图 存储空间已满,而生产者占用着它,消费者等着生产者让出空间从而去除产品,生产者等着消费者消费产品,从而向空间中添加产品。互相等待,从而发生死锁。JAVA解决线程模型的三种方式原创 2011-11-23 14:46:55 · 1546 阅读 · 0 评论 -
代码解析String原理
栈(stack):主要保存基本类型(或者叫内置类型)(char、byte、short、int、long、float、double、boolean)和对象的引用,数据可以共享,速度仅次于寄存器(register),快于堆。堆(heap):用于存储对象。 String池(pool)原创 2011-10-13 21:08:12 · 2399 阅读 · 0 评论 -
JDK动态代理(一)
介绍 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象原创 2011-10-18 16:15:04 · 8076 阅读 · 0 评论 -
java Integer类的缓存
首先看一段代码(使用JDK 5),如下: public class Hello { public static void main(String[] args) { int a = 1000, b = 1000; System.out.pri原创 2011-10-18 17:17:42 · 10815 阅读 · 1 评论 -
java堆栈(转)
Java栈与堆 ----对这两个概念的不明好久,终于找到一篇好文,拿来共享 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2. 栈的优势是,存取速度比堆要快,仅转载 2011-10-09 14:05:42 · 1281 阅读 · 0 评论 -
cglib动态代理介绍(一)
一、原理 代理为控制要访问的目标对象提供了一种途径。当访问对象时,它引入了一个间接的层。JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创建代理。JDK的动态代理用起来非常简单,当它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理原创 2011-09-29 13:43:01 · 68646 阅读 · 25 评论 -
double 精度问题
使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。 特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情。 这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,经常会因为精度丢失而导致程序处理流程出错。所以一般对double类型进行运算时,做好对结果进行处转载 2011-10-21 16:38:43 · 2102 阅读 · 0 评论 -
java线程(二) 实现
java线程实现有两种方式:继承Thread、实现Runnable。package com.ch.thread;public class ThreadTest extends Thread { public ThreadTest(String name) { super(name); // TODO Auto-generated constructor stub } @原创 2011-11-23 11:51:47 · 553 阅读 · 0 评论 -
java线程(一) 状态
状态图:1、线程的实现有两种方式,一是继承Thread类,二是实现Runnable接口,但不管怎样,当我们new了这个对象后,线程就进入了初始状态;2、当该对象调用了start()方法,就进入就绪(可运行)状态;3、进入可运行状态后,当该对象被操作系统选中,获得CPU时间片就会进入运行状态;4、进入运行状态后情况就比较复杂了4.1、run()方法或main(原创 2011-11-22 11:54:03 · 807 阅读 · 0 评论 -
Map,Collection接口
Map接口组织架构图:HashMap与Hashtable的区别: 1>HashMap是异步的(非线程安全的),是Hashtable的轻量级实现,所以效率比Hashtable要高;在多线程场合要手动同步HashMap (这个区别类似于ArrayList和Vector的区别),应该使用Collections.synchronizedMap 方法来“包装”同步该map。原创 2011-10-12 14:03:09 · 1948 阅读 · 2 评论