java
文章平均质量分 63
iteye_12404
这个作者很懒,什么都没留下…
展开
-
NIO技术
复习了一下 nio 技术,发现了一个不错的专题,留个记号: http://developer.51cto.com/art/201112/307172.htm 这是IBM developWorks 上的一个教程http://www.ibm.com/developerworks/cn/education/java/j-nio/index.html 了解事件机制很关键ht...原创 2011-12-20 11:12:20 · 62 阅读 · 0 评论 -
常用concurrent包下的类图
摘自:http://www.blogjava.net/xylz/archive/2010/07/08/325587.html 比较常用的类图收罗了一下,备查: Executor: Map: Queue:原创 2011-11-15 16:07:03 · 473 阅读 · 0 评论 -
查看java class的编译版本
使用 UE 打开 class 文件,第一行内容:00000000h: CA FE BA BE 00 00 00 32 00 A9 07 00 02 01 00 37 前四个字节为固定的 CA FE BA BE ,接下来的四个字节为次版本号(0000)和主版本号(00032)。32:JDK1.631:JDK1.530:JDK1.42F:JDK1.3...原创 2012-03-31 15:38:45 · 100 阅读 · 0 评论 -
和Lambdas的第一次亲密接触(转载)
英文原文:Java 8: The First Taste of Lambdas Lambda 工程是即将到来的 Java8 的一大主题,可能也是程序员们最期待已久的东西。随着 Java lambdas 的到来,还有一个有趣的东西被附带的加进了 Java 语言——defender (守卫者)方法。在这篇文章里,我的目的是要看看面纱后的东西——看看在运行时环境里 lambdas 是表现...原创 2013-05-21 11:18:42 · 90 阅读 · 0 评论 -
java编码问题汇总(转载)
工作中经常遇到java编码问题,由于缺乏研究,总是无法给出确切的答案,这个周末在网上查了一些资料,在此做些汇总。 问题一:在java中读取文件时应该采用什么编码?Java读取文件的方式总体可以分为两类:按字节读取和按字符读取。按字节读取就是采用InputStream.read()方法来读取字节,然后保存到一个byte[]数组中,最后经常用new String(byte[]);把字...原创 2013-12-05 09:20:27 · 61 阅读 · 0 评论 -
java SPI机制(转)
From ServiceLoader javadoc: A service is a well-known set of interfaces and classes. A service provider is a specific implementation of a service. The classes in a provider typically implement the in...原创 2013-12-18 08:03:56 · 158 阅读 · 0 评论 -
java远程通讯协议对比(转载)
在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了,在这篇 blog中我们...原创 2013-12-25 11:04:25 · 158 阅读 · 0 评论 -
BTrace试用
说明:BTrace是Java进程诊断分析工具,优点是无侵入性,跟踪时对原有应用无干扰,不需要重启应用。 项目主页:https://kenai.com/projects/btrace 实验过程:1、环境说明: 操作系统:windows 7 JDK版本:1.6 BTrace 版本:1.24 BTrace安装路径:c...原创 2016-03-28 16:35:35 · 153 阅读 · 0 评论 -
BTrace实际案例分析(转)
BTrace实际案例分析问题表象问题描述1.最近有项目组的童鞋反馈,web页面频繁出现假死的状态。2.web页面的假死出现是概率事件,且无法确定假死的引发原因。3.是在一定的操作之后出现的,但是无法确定究竟是哪些操作引发这些操作。问题分析初步分析我们都知道web容器一般都是单实例多线程的方式工作的,当页面发起请求后,tomcat发分配一个...原创 2016-03-28 17:09:09 · 105 阅读 · 0 评论 -
获得javacore和dump文件
linux环境下,尝试了如下方法获得javacore文件,便于分析线程的状态:#./jstack <pid> >>javacore.001然后通过jca软件进行分析。 通过如下命令获得dump文件,便于分析内存分配情况:#./jmap -dump:format=b,file=dump.001 <pid>然后通过jca、MemoryAn...原创 2013-02-01 17:31:55 · 1455 阅读 · 0 评论 -
玩转 XPath 和缺省命名空间(Default Namespaces)(转)
诸如“为什么用 XPath 的表达式进行查询,却没有返回所期望的结果?”的问题通常都与命名空间(NameSpace)有关,而且绝大多数是与缺省命名空间(Default Namespace)有关。本文试图解释这个问题并针对三种流行的 XPath 实现给出解决方法:Jaxen、JAXP XPPathFactory 以及 XSLT。内容列表问题描述“前缀-命名空间”映射Ja...原创 2014-07-01 16:38:26 · 306 阅读 · 0 评论 -
采用JDK自带的类库解析XML(转)
1,需求说明假设要查询一个图书列表,寻找TEST的著作. 2,创建项目 创建一个Java项目. Java 1.5推出了javax.xml.xpath包,提供一个引擎和对象模型独立的XPath库.只要Java环境>1.5,无需增加类库. 这个包也可用于Java 1.3及以后的版本,但需要单独安装Java API for XML Processing(JAXP)1.3 提示:Xalan 2.7...原创 2014-07-01 16:43:11 · 270 阅读 · 0 评论 -
was 8.5环境生成heapdump文件
1、我在/etc/profile里面增加参数:export IBM_HEAPDUMP=trueexport IBM_HEAP_DUMP=trueexport IBM_HEAPDUMPDIR=/opt/export IBM_HEAPDUMP_OUTOFMEMORY=trueexport IBM_JAVADUMP_OUTOFMEMORY=trueexport IBM_JAVA...原创 2016-09-26 10:03:16 · 1850 阅读 · 0 评论 -
线程转储分析死锁
JVM提供了线程转储(thread dump)功能,可以帮助识别死锁的发生。linux平台,可以通过向JVM进程发送SIGQUIT信号(kill -3)来触发线程转储。 当有死锁发生时,可以发现类似如下的信息:Found One Java-level deadlock:....................................................原创 2011-11-15 13:55:30 · 153 阅读 · 0 评论 -
几种等待并发线程全部完成的方法
学习到如下几种方法:1、对于单个的线程,可以采用Future.get()的方法,任务执行完毕后才能拿到结果。2、对于多个线程,可以采用executor.awaitTemination()的方法,伪代码如下所示: for(int i = 0;i < n;i++){ executor.execute(task(i)); } execu...原创 2011-11-15 13:27:45 · 155 阅读 · 0 评论 -
sys_uuid()导致oracle的session缓慢增长
最近负责的数据交换平台性能测试,发现数据库连接有缓慢增长的现象,通过调试发现是oracle的sys_uuid()方法导致的,感觉非常奇怪,只好先将sys_uuid()改成java里的uuid生成方法,详细说明如下: 软件环境:java jdk1.4.2/Red Hat 3.4.6-2oracle 9i/Red Hat 3.4.6-2oracle驱动采用的是ojdbc14.jar...原创 2012-02-09 10:19:42 · 559 阅读 · 0 评论 -
关于XML对特殊字符的编码
项目中遇到这类问题,比如“优褅股份”,采用GBK编码可以,如果采用GB2312编码的话,XML文件中会生成“优&#x8905;股份”,显然“褅”超出了他的编码范围,那么按照XML标准,将其采用UINCODE的统一编码格式进行编码。这样对于公司EDI产品,如果编码采用GB2312编码,解码采用GBK,那么由于编码时生成“优&#x8905;股份”,能正常解码,如果编码采用GBK,解...原创 2012-02-23 15:13:38 · 114 阅读 · 0 评论 -
使用IBM heapAnalyzer分析内存泄露的原因(转载)
大家在开发J2EE应用时可能经常碰到OOM的问题。出现这种问题的原因就是内存消耗殆尽,创建新的对象时没有可分配的内存了。为了找到真正导致OOM的原因,这里将使用IBM heapAnalyzer工具进行定位。 首先要知道,IBM heapAnalyzer是通过分析OOM后的Java heap dump文件的,通过对dump文件的分析找到内存可能泄露的点。了解这个之后,我们首先需要生成dump...原创 2012-02-23 15:21:44 · 529 阅读 · 0 评论 -
JDK 1.5自带的几个小工具
提供了jps,jmap,jconsole,jstat几个比较实用的小工具,试用了jps和jmap感觉比较有用。 jps用来查看当前java的进程,其实它的功能可以基本上由ps来实现。例如: jps -mlvV jmap用来查看给定一个进程或者是调试服务器共享对象之间的映射以及堆中的细节,比较常用的命令: jmap -histo <pid> > &...原创 2012-02-23 15:24:58 · 145 阅读 · 0 评论 -
集群环境下的单例任务调度基类
最近为公司框架提供了基于ID的单例的任务调度基类,用于集群的环境下,一个任务同一时间只能被调度一次。 接口声明继承该基类的任务需要覆盖两个抽象函数: protected abstract String getServiceID();//服务ID,与数据库中的和timeservice.xml中的要配置相同 protected abstract v...原创 2012-02-23 15:37:36 · 196 阅读 · 0 评论 -
关于编码的详细分析(转载)
编码无处不在。Database, file, editor, IDE, compiler, browser。 代码(比如java, jsp, asp, php, python, ruby etc)里面的字符串比较麻烦,涉及到editor, compiler, interpreter等等。 所以,我的做法是,从来不在代码里面直接写字符串资源,尤其是双字节编码的字符串资源。 都是把字符串资源分离到一个...原创 2012-02-27 08:53:30 · 114 阅读 · 0 评论 -
加载的是哪的Class
场景: 不知道调用的是哪个Jar包里的类,可通过此工具进行测试。类实现:[code="java"]package com.util;...public class ClassUtil{ public static void main(String[] args) { ClassUtil util = new ClassUtil(); String s...原创 2011-11-04 10:14:31 · 65 阅读 · 0 评论 -
java类加载机制
总是忘记java虚拟机的类加载机制,不过核心思想还是清楚的:类加载器是个树型结构,如果Parent能找到要加载的类的话,就加载Parent的,这样可以确保JDK自带的类不被项目中自定义的同名类覆盖。如下是摘自网上的资料,留个记号:java应用环境中不同的class分别由不同的ClassLoader负责加载。一个jvm中默认的classloader有Bootstrap Cla...原创 2011-11-04 10:48:05 · 88 阅读 · 0 评论 -
垃圾回收机制及代码优化
1.垃圾收集算法的核心思想Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。垃圾收集算法的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别,如果对象正在被引用,那么称其为存活对象,反之,如果对象不再被引用,则为垃圾对...原创 2011-11-04 11:22:34 · 85 阅读 · 0 评论 -
jvm垃圾回收
在jvm中堆空间划分为三个代:年轻代(Young Generation)、年老代(Old Generation)和永久代(Permanent Generation)。年轻代和年老代是存储动态产生的对象。永久带主要是存储的是java的类信息,包括解析得到的方法、属性、字段等等。永久带基本不参与垃圾回收。我们这里讨论的垃圾回收主要是针对年轻代和年老代。具体如下图。[img]http://d...原创 2011-11-04 17:32:27 · 62 阅读 · 0 评论 -
WebSockets Java服务端产品支持
•Jetty WebSocket Server – This seems to be a good option. •Caucho Resin •jWebSocket •GlassFish/Grizzly (see a DZone posting on it here) •JBoss Netty (see patch here) •Webbit Out of these options, I gu...原创 2011-11-09 14:17:44 · 89 阅读 · 0 评论 -
ThreadPoolExecutor介绍(摘自网络)
从 Java 5 开始,Java 提供了自己的线程池。线程池就是一个线程的容器,每次只执行额定数量的线程。 java.util.concurrent.ThreadPoolExecutor 就是这样的线程池。它很灵活,但使用起来也比较复杂,本文就对其做一个介绍。 首先是构造函数。以最简单的构造函数为例:public ThreadPoolExecutor( int corePoo...原创 2011-11-15 10:27:41 · 119 阅读 · 0 评论 -
SynchronousQueue妙用
创建ThreadPoolExecutor时,Executors.newFixedThreadPool()默认采用的是LinkedBlockingQueue,如果工作者线程处于忙碌状态,新任务将放入队列中等候,队列满了之后,才可能创建新的线程。 有时我们希望绕开队列,直接分配接收者线程,此时可采用SynchronousQueue,只要当前池的大小还小于最大值,ThreadPoolExecut...原创 2011-11-15 10:51:47 · 292 阅读 · 0 评论 -
XML节点当做文本处理
XmlHelper类中封装的方法,采用JDOM实现。 如下所示: /** * 输出XML文件流。根据指定的编码,将输入的节点,输出到输出流中。 * @param xml XML文件流 * @return xml JDOM树的根节点,如果XML格式错误,返回空(null) * @throws JDOMException */ publ...原创 2014-10-31 08:45:25 · 131 阅读 · 0 评论