- 博客(27)
- 收藏
- 关注
原创 [转] Integer类中使用“==”的问题(内部缓存)
首先看一段代码(使用JDK 5),如下: Java代码 public class Test { public static void main(String[] args) { Integer i1 = 127; Integer i2 = 127; if (i1 == i2) ...
2010-05-07 10:50:59
128
原创 [转] 异常处理
在看一些项目源码中,突然发现了异常的处理也是一门比较大的学问,其实处处都有学问,只是你是否留意而已。。好了,少点啰嗦,关于异常的处理,je上有个很精彩的讨论,我花了快一个钟时间才看完了,确实值得一看,帖子的网址:http://www.iteye.com/topic/2038 当然我这里写的,只是一个纯属的建议,大都是看了网上的帖子后,总结的。都是些前辈的经验。。下面开始吧。———...
2010-05-07 10:49:32
130
原创 Java基础
1、类的初始化顺序(父类--静态变量 或 父类--静态初始化块 )->(子类--静态变量 或 子类--静态初始化块)->(父类--变量 或 父类--初始化块)-> 父类--构造器 ->(子类--变量 或 子类--初始化块) ->子类--构造器 静态变量和静态初始化块是依照他们在类中的定义顺序进行初始化的。同样,变量和初始化块也遵循这个规律。 ...
2010-05-07 10:47:47
120
原创 [转] Java 输入输出流详解
Java IO 用的是‘decorator模式’来构建的。要容易理解Java IO 应该从对称性和两个模式(装饰器模式和适配器模式)这两方面进行分析。 装饰器模式: 在由InputStream、OutputStream、Reader和Writer 代表的等级结构内部,有一些流处理器可以对另外一些流处理器起到装饰作用,形成新的、具有改善了的功能的流处理器。 下面是Decor...
2010-05-07 10:39:48
162
原创 [转] DI and AOP
术语: ・ DI (Dependency Injection) ・ AOP (Aspect Oriented Programming) DI叫依赖注射,在模式里叫LOC(控制反转) 控制反转(Ioc)模式(又称DI:Dependency Injection)就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不...
2010-05-07 10:26:58
331
原创 [转] 动态增加Table行
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-
2010-05-06 17:23:02
152
原创 Java标准类库提供的容器总结
在Java中,容器主要包括:数组(Array)、集合(Collection)和映射(Map)三种。(1)数组Array:将数字与元素联系起来,其中的元素都具有相同的数据类型,只能通过下标来访问其元素;数组可以是一维的,也可以是多维的;数组一旦生成,其容量就不能改变。数组是一种复合数据类型,在Java中,除了可以像“int[] array;”来声明和表示一个数组,还可以用Array类来表示一个数组,...
2010-05-06 17:17:41
107
原创 [转] 精妙SQL语句收集
SQL语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL语句操作。 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE maste...
2010-05-06 17:12:22
92
原创 [转] 工厂模式 IOC AOP
控制反转(IOC)模式(又称DI:Dependency Injection)就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。 IoC(Inversion of Control)是近年来兴起的一种思想,不仅仅是编程思想。主要是协调各组件间相互的依赖关系,同时大大提高了组件的可...
2010-05-06 17:07:27
363
原创 [转] Eclipse快捷键
最常用(也是最爱的:)) Ctrl+’ : 自动完成提示。这个快捷键是我自己设的。Eclipse默认是Ctrl+Sapce,跟输入法冲突了。这个东东很强大,除了提示方法外,也支持自动完成的提示。比如:输入一个for后输入快捷键,能提示for方法的几种形式,以便自动完成。sysout也是平时用的比较多的。想不起来东西的时候输入这个即可。 Alt+←(→):前(后)一个编辑的页面...
2010-05-06 11:02:45
84
原创 [转] JVM调优总结(十二)-参考资料
能整理出上面一些东西,也是因为站在巨人的肩上。下面是一些参考资料,供大家学习,大家有更好的,可以继续完善:) · Java 理论与实践: 垃圾收集简史 · Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning · Improving Java Application Performance and S...
2010-05-06 10:55:06
95
原创 [转] JVM调优总结(十一)-反思
垃圾回收的悖论 所谓“成也萧何败萧何”。Java的垃圾回收确实带来了很多好处,为开发带来了便利。但是在一些高性能、高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈。目前JDK的垃圾回收算法,始终无法解决垃圾回收时的暂停问题,因为这个暂停严重影响了程序的相应时间,造成拥塞或堆积。这也是后续JDK增加G1算法的一个重要原因。 当然,上面是从技术角度出发解决垃圾回收带来的问...
2010-05-06 10:53:45
100
原创 [转] JVM调优总结(十)-调优方法
JVM调优工具Jconsole,jProfile,VisualVMJconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里 JProfiler:商业软件,需要付费。功能强大。详细说明参考这里 VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。 如何调优观察内存释...
2010-05-06 10:52:18
124
原创 [转] JVM调优总结(九)-新一代的垃圾回收算法
垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的返回时间在几百甚至几十毫秒以内,如果分代垃圾回收方式要达到这个指标,只能把最大堆的设置限制在一个相对...
2010-05-06 10:50:56
93
原创 [转] JVM调优总结(八)-典型配置举例2
常见配置汇总 堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个...
2010-05-06 10:49:25
110
原创 [转] JVM调优总结(七)-典型配置举例1
以下配置主要针对分代垃圾回收算法而言。 堆大小设置年轻代的设置很关键JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。...
2010-05-06 10:46:51
104
原创 [转] JVM调优总结(六)-分代垃圾回收详述2
分代垃圾回收流程示意 选择合适的垃圾收集算法串行收集器 用单线程处理所有垃圾回收工作,因为无需多线程交互,所以效率比较高。但是,也无法使用多处理器的优势,所以此收集器适合单处理器机器。当然,此收集器也可以用在小数据量(100M左右)情况下的多处理器机器上。可以使用-XX:+UseSerialGC打开。 并行收集器 ...
2010-05-06 10:44:07
92
原创 [转] JVM调优总结(五)-分代垃圾回收详述1
为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行过程...
2010-05-06 10:41:54
86
原创 [转] JVM调优总结(四)-垃圾回收面临的问题
如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。上面分析的堆和栈的区别,其中栈是真...
2010-05-06 10:40:12
89
原创 [转] JVM调优总结(三)-基本垃圾回收算法
可以从不同的的角度去划分垃圾回收算法:按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。 标记-清除(Mark-Sweep): 此算法执行分两阶段。第一阶段从引用根节点开始标记所有...
2010-05-06 10:38:39
90
原创 [转] JVM调优总结(二)-一些概念
Java对象的大小 基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句:Object ob = new Object(); 这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte...
2010-05-06 10:36:32
81
原创 [转] JVM调优总结(一)-- 一些概念
数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress...
2010-05-06 10:27:52
104
原创 [转]理解 Java 的 GC 与 幽灵引用
理解 Java 的 GC 与 幽灵引用 Java 中一共有 4 种类型的引用 : StrongReference、 SoftReference、 WeakReference 以及 PhantomReference (传说中的幽灵引用 呵呵), 这 4 种类型的引用与 GC 有着密切的关系, 让我们逐一来看它们的定义和使用场景 : 1. Strong Refere...
2010-05-06 09:56:31
90
[转]JVM分代垃圾回收策略的基础概念
文章总结了JVM垃圾回收策略为什么要分代,如何分代,以及垃圾回收的触发因素。 为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟...
2010-05-05 17:26:01
160
[转]利用jdk6查内存泄漏(见编写对GC友好,又不泄漏的代码)
利用jdk6查内存泄漏(见编写对GC友好,又不泄漏的代码)(1)jmap -dump:file=heap_file_name pid 会产生一个heap_file_name文件(2)jhat heap_file_name,然后打开浏览器http://localhost:7000/ 浏览。 可看到里面显示了运行的所有的类和实例及大小。平台(例如tomcat)的不会包括在里面。(3...
2010-05-05 17:14:02
99
【转】Java程序员必须了解GC的工作原理
一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率,才能提高整个应用程序的性能。本文将从GC的工作原理、GC的几个关键问题进行探讨,最后提出一些Java程序设计建议,如何从GC角度提高Java程序的性能。 一、GC的基本原理: GC是什么? 为什么要有GC...
2010-05-05 17:02:39
102
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人