java技术
文章平均质量分 86
iteye_2005
这个作者很懒,什么都没留下…
展开
-
gc日志分析工具
性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析。Gc日志参数通过在tomcat启动脚本中添加相关参数生成gc日志-verbose.gc开关可显示GC的操作内容。打开它,可以显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等。打开-xx:+ printGCd...原创 2014-07-31 11:29:32 · 401 阅读 · 0 评论 -
压力测试JSON-RPC服务
/** * 压力测试JSON-RPC服务 * * @author zhiqiang.zhu * @version $Id: LoadRunnerRPCService.java, v 0.1 2011-6-9 下午08:43:11 zhiqiang.zhu Exp $ */public class LoadRunnerRPCService { /** log...原创 2013-04-07 19:28:29 · 289 阅读 · 0 评论 -
JVM内存配置详解
前段时间在一个项目的性能测试中又发生了一次OOM(Out of swap sapce),情形和以前网店版的那次差不多,比上次更奇怪的是,此次搞了几天之后啥都没调整系统就自动好了,死活没法再重现之前的OOM了!问题虽然蹊跷,但也趁此机会再次对JVM堆模型、GC垃圾算法等进行了一次系统梳理; 基本概念 堆/Heap JVM管理的内存叫堆;在32Bit操作系统上有4G的限制,一般来说Window...原创 2016-09-03 10:16:26 · 206 阅读 · 0 评论 -
【Java IO知识】读取中文乱码问题解决
读取文件主要是要设置读取的输入流如InputStreamReader时要设置读取的解码格式,要和文件本身的编码格式相同,这样读取出来的才不会乱码。InputStreamReader reader = new InputStreamInputReader(input, "编码格式");ANSI是"gbk"注:必须是在读取的时候就使用正确的解码格式否则都会乱码!!!!...原创 2013-01-26 09:33:27 · 126 阅读 · 0 评论 -
字节数组、字符数组、字节缓冲、字符缓冲的相互转化工具类
package com.cgb.train.core.nio;import java.nio.ByteBuffer;import java.nio.CharBuffer;import java.nio.charset.Charset;/** * 字符数组、字节数组、字符缓冲、字节缓冲的相互转换工具类 * @author cgb * */public cla...原创 2013-01-25 15:28:19 · 102 阅读 · 0 评论 -
CharBuffer类编码相关问题
CharBuffer是java.nio下面的一个字符缓存类,一般情况下,我么用不到它。平时都会用ByteBuffer代替。 没事的时候,研究一下,发现CharBuffer在编码转换上有奇怪的问题。 获取CharBuffer对象方法有ByteBuffer byteBuffer=ByteBuffer.allocate(1024); byteBuffer.put("...原创 2013-01-25 11:43:16 · 1588 阅读 · 0 评论 -
eclipse的控制台在UTF-8编码下键盘输入BUG问题,请问有谁能解决
最近我在eclipse下测试中文字符的输入输出问题,发现eclipse下控制台的编码设置为utf-8时,当从eclipse控制台录入汉字后,会出现乱码问题。虽然这个问题看起来在实践中用量不大,但是对于理解字符编码有作用的。 场景如下:eclipse控制台编码设置为utf-8,设置位置如图: 再来设置file.encoding的编码,目的是为了设置java程序的默认编...原创 2013-01-25 09:34:23 · 241 阅读 · 0 评论 -
java的NIO介绍
关于javaNIO,可能更多人了解的是他的一些并发方面的东西,之前没有怎么了解过,到网上找了些资料,看看学学,得在实践中获得知识才行,先留着吧!下面是找的资料:1. 基本概念IO是主存和外部设备(硬盘、终端和网络等)拷贝数据的过程。IO是操作系统的底层功能实现,底层通过I/O指令进行完成。所有语言运行时系统提供执行I/O较高级别的工具。(c的printf scanf,java的面向...原创 2013-01-23 14:30:31 · 84 阅读 · 0 评论 -
正则表达式"\w"和"\b"在不同语言中的用法注意
“\b”匹配单词边界,不匹配任何字符。 “\b”匹配的只是一个位置,这个位置的一侧是构成单词的字符,另一侧为非单词字符、字符串的开始或结束位置。“\b”是零宽度的。 基本上所有的资料里都会说“\b”是单词边界,但是关于“单词”的范围却是少有提及。通常情况下,正则表达式中所谓的“单词”,就是由“\w”所定义的字符所组成的子串。 “\b”表示所在位置的一侧为单词字符,...原创 2013-01-18 09:02:51 · 1116 阅读 · 0 评论 -
java正则表达式详解
在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包。 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式。正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性。在Unix世界里,正则表达式几乎没有什么限制,可肯定的是,它应用非常之广泛。 ...原创 2013-01-17 09:11:25 · 189 阅读 · 0 评论 -
Java NIO Reactor模式
package com.zzq.nio.reactor;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Sele...原创 2013-04-07 19:30:50 · 93 阅读 · 0 评论 -
基于LinkedHashMap实现LRU缓存调度算法原理及应用
最近手里事情不太多,随意看了看源码,在学习缓存技术的时候,都少不了使用各种缓存调度算法(FIFO,LRU,LFU),今天总结一下LRU算法。 LinkedHashMap已经为我们自己实现LRU算法提供了便利。 LinkedHashMap继承了HashMap底层是通过Hash表+单向链表实现Hash算法,内部自己维护了一套元素访问顺序的列表。 /** * The head o...原创 2013-04-07 19:36:17 · 93 阅读 · 0 评论 -
Jaxb2 实现JavaBean与xml互转
一、简介 JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到 XML实例文档。 Jaxb 2.0是JDK 1.6的组成部分。我们不需要下载第三方jar包 即可...原创 2013-04-18 22:39:09 · 66 阅读 · 0 评论 -
Java动态代理机制分析及扩展
本文通过分析 Java 动态代理的机制和特点,解读动态代理类的源代码,并且模拟推演了动态代理类的可能实现,向读者阐述了一个完整的 Java 动态代理运作过程,希望能帮助读者加深对 Java 动态代理的理解和应用。本文的标签: 1, aop, dynamic, java, proxy, 动态代理, 动态代理机制分析及扩展, 动态代理机制分析及扩展,第, 部分标记本文!引言J...原创 2013-04-12 08:59:19 · 75 阅读 · 0 评论 -
JVM中Load过多Class的分析
JVM中Load过多Class的分析 2013-01-27 16:48:53| 分类: jvm | 标签: |字号大中小 订阅 http://blog.colinsage.info/?p=123 问题描述: 应用运行一段时候后,出现应用卡死的情况。使用jvisualvm观测JVM,发现load的class过多,可能是造成问题的原因。...原创 2013-04-12 08:58:29 · 1083 阅读 · 0 评论 -
proxool与tomcat DBCP连接池性能评测
proxool与tomcat DBCP连接池性能评测proxool与tomcat DBCP连接池性能评测这次测试只是自己的兴趣,自认为还比较科学,欢迎指正。测试条件:写了两个JSP页面,一个用的proxool连接池,另一个用的tomcat DBCP连接池。这两个页都执行一样的工作,就是循环100次,每次从mysql里select 一列数据显示在页面上,这一列是20个string...原创 2013-04-10 13:49:54 · 126 阅读 · 0 评论 -
Java String的序列化小结
String对我们来说太熟悉了,因为它无处不在,更因为用String可以描述这个世界几乎所有的东西,甚至于为了描述精确的数值都需要String出马(因为计算机眼中的二进制和人类眼中的十进制间总有那么点隔膜)。因为熟悉而变得简单,也容易被忽略。今天记录一下关于String的容易被忽略的两个问题。字符串重用——节省内存因为字符串太多,如果能够重用则能够节省很大的内存。首先看下面一个例子...原创 2013-04-10 13:49:07 · 1212 阅读 · 0 评论 -
Reactor模式和NIO
本文可看成是对Doug Lea Scalable IO in Java一文的翻译。当前分布式计算 Web Services盛行天下,这些网络服务的底层都离不开对socket的操作。他们都有一个共同的结构:1. Read request2. Decode request3. Process service4. Encode reply5. Send reply经典的网络服务的设计如下图,...原创 2013-04-08 15:07:07 · 61 阅读 · 0 评论 -
我的各种主键生成策略类
package com.generate;import java.text.DecimalFormat;import java.text.NumberFormat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Iter...原创 2013-04-08 15:06:52 · 92 阅读 · 0 评论 -
反应器(Reactor)模式
概述Java NIO非堵塞技术实际是采取反应器模式,或者说是观察者(observer)模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。同步和异步区别 : 有无通知(是否轮询)堵塞和非堵塞区别 : 操作结果是否等待(是否马上又返回值),只是设计方式的不同。NIO 有一个主要...原创 2013-04-08 15:06:05 · 104 阅读 · 0 评论 -
Dynamic Proxy模式
ProxyFactory类package com.zzq.proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.lang.reflect....原创 2013-04-07 19:41:26 · 75 阅读 · 0 评论 -
网站页面性能优化的34条黄金守则--雅虎团队经验分享
1、尽量减少HTTP请求次数 终端用户响应的时间中,有80%用于下载各项内容。这部分时间包括下载页面中的图像、样式表、脚本、Flash等。通过减少页面中的元素可以减少 HTTP请求的次数。这是提高网页速度的关键步骤。 减少页面组件的方法其实就是简化页面设计。那么有没有一种方法既能保持页面内容的丰富性又能达到加快响应时间的目的呢?这里有几条减少HTTP请求次数同时又可能保持页面内容丰富的技术...原创 2013-01-14 22:49:11 · 205 阅读 · 0 评论 -
Java NIO与IO的区别和比较
导读J2SE1.4以上版本中发布了全新的I/O类库。本文将通过一些实例来简单介绍NIO库提供的一些新特性:非阻塞I/O,字符转换,缓冲以及通道。 一. 介绍NIONIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题。1. Buffer:它是包含数据且用于读写的线形表结构。其中还提供了一个特殊类用于内存映射文件的I/O操作。2. C...原创 2013-01-14 16:42:03 · 87 阅读 · 0 评论 -
研磨Java源码--并发框架之锁机制
学习Java集合框架需要一些算法基础,而并发框架则需要一些操作系统的基础了。为了学习这部分,博主还专门翻阅了大学操作系统课本,可见基础总是有用啊。Java并发框架的锁机制是并发框架的重要功能之一。虽然synchronized已经能够完成大多数情况下的互斥操作,但是对于一些希望显式的声明锁并且可以随时中断的地方,仍然会要用到显式锁。synchronized块本质上也是一个对象的内部锁,自从J...原创 2013-01-13 17:02:28 · 92 阅读 · 0 评论 -
JAVA线程池的分析和使用
1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。...原创 2013-08-14 10:11:33 · 96 阅读 · 0 评论 -
MAT工具介绍
为什么用MAT 之前的观点,我认为使用实时profiling/monitoring之类的工具,用一种非常实时的方式来分析哪里存在内存泄漏是很正确的。年初使用了某profiler工具测试消息中间件中存在的内存泄漏,发现在吞吐量很高的时候profiler工具自己也无法响应,这让人很头痛。后来了解到这样的工具本身就要消耗性能,且在某些条件下还发现不了泄漏。所以,分析离线数据就非常重要了,MA...原创 2013-08-13 09:17:32 · 131 阅读 · 0 评论 -
聊聊内存泄露
1.什么是内存泄露看到网上有很多人都在问内存泄露与内存溢出的区别(CSDN上),而且后面还有一大堆的跟帖在用不同形式的语言予以解答,我看了以后思绪万千啊。内存泄露是导致内存溢出的原因之一,说他们的区别纯属无稽之谈。要解释什么是内存泄露还真是个费事的活,我用一个例子来解释下:public class Test { public static void main(String[] ...原创 2013-08-12 17:42:11 · 94 阅读 · 0 评论 -
Java多线程-阻塞队列BlockingQueue .
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。 从上图我们可以很清楚看到,通过一个共享的队列,可以使得数据由...原创 2013-08-05 09:14:28 · 76 阅读 · 0 评论 -
让servlet支持浏览器缓存
大家都知道IE等浏览器支持缓存,并且缓存策略可配置,这样可以极大提高访问服务器的性能,对于一些如JS脚本、CSS文件、图片等静态资源,已经缺省被支持,但是对于自定义Servlet,则默认情况下不支持缓存,这是什么原因呢?如何让自定义Servlet也支持缓存呢? 首先来了解下浏览器的缓存机制:对于所有的HTTP Get请求,浏览器会先检查客户端本地缓存是否存在,如果存在,则会在请求头中...原创 2013-06-20 15:16:58 · 159 阅读 · 0 评论 -
在服务器端判断request来自Ajax请求(异步)还是传统请求(同步)
转自: http://holdbelief.javaeye.com/blog/528114在服务器端判断request来自Ajax请求(异步)还是传统请求(同步): 两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数 1、传统同步请求参数 accept text/html,application/xhtml+xml,applicati...原创 2013-06-20 14:34:43 · 70 阅读 · 0 评论 -
Runtime.addShutdownHook()方法理解
Runtime.addShutdownHook()方法可以注册一个hook在JVM执行shutdown的过程中,方法的参数只要是一个初始化过但是没有执行的Thread实例就可以。(注意,Java中的Thread都是执行过了就不值钱的哦) 说到addShutdownHook这个方法就要说一下JVM运行环境是在什么情况下shutdown或者abort的。文档上是这样写的,...原创 2013-05-05 08:39:06 · 445 阅读 · 0 评论 -
Java编程中“为了性能”尽量要做到的一些地方(转)
最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。 下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适...原创 2012-04-12 07:22:17 · 73 阅读 · 0 评论 -
转 探索 ConcurrentHashMap 高并发性的实现机制
简介ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本文需要读者了解 Java 内存模型。同时,ConcurrentHashMap 的源代码会...原创 2013-08-14 10:16:36 · 106 阅读 · 0 评论 -
java性能编码规范整理
1、 对于常用工具类的方法,需要关注同步问题 2、 对于不能确认被其它代码如何调用的方法或者可能被其它代码频繁调用的方法,需要关注同步问题 3、 对于常量字符串,不要通过new方式来创建 4、 对于常量字符串之间的拼接,请使用“+”;对于字符串变量(不能在编译期间确定其具体值的字符串对象)之间的拼接,请使用StringBuffer;在JDK1.5或更新的版本中,若字符串...原创 2012-06-16 12:10:06 · 149 阅读 · 0 评论 -
JAVA中文字符编码问题详解 控制台输出
许多文件的默认编码是ISO-8859-1,而中文操作系统的缺省编码是GB18030,在此工作空间中建立的工程编码是GB18030.我们常用的编码是UTF-8,能够使得插件有更好的国际支持。在编写JSP文件时如果没有更改默认编码,则中文无法正常输出,出现乱码。Eclipse工作空间的默认编码是操作系统缺省编码,和简体中文操作系统(windows xp,windows 2000)编码一致,为GB180...原创 2013-01-13 13:37:45 · 115 阅读 · 0 评论 -
servlet的定义及其生命周期
Servlet的生命周期定义了一个Servlet如何被加载、初始化,以及它怎样接收请求、响应请求、提供服务。 在代码中,Servlet生命周期由接口javax.servlet.Servlet定义。所有的Java Servlet 必须直接或间接地实现javax.servlet.Servlet接口,这样才能在Servlet Engine上运行。Servlet Engi...原创 2013-01-12 17:41:32 · 144 阅读 · 0 评论 -
ByteBuffer使用
在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入缓冲区.缓冲区是定长的,基本上它只是一个列表,它的所有元素都是基本数据类型.ByteBuffer是最常用的缓冲区,它提供了读写其他数据类型的方法,且信道的读写方法只接收ByteBuffer.因此ByteBuffer的用法是有必要牢固掌握的.1.创建B...原创 2014-04-08 15:04:03 · 903 阅读 · 0 评论 -
用java实现生产者和消费者问题 .
package javaTest;//测试类 public class ProCon{ public static void main(String[] args){ SyncQueue queue = new SyncQueue(); Consumer p = new Consumer(queue); Produce...原创 2014-02-08 15:18:50 · 100 阅读 · 0 评论 -
应用Hash函数(java描述) .
计算理论中,没有Hash函数的说法,只有单向函数的说法。所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数据。用“人类”的语言描述单向函数就是:如果某个函数在给定输入的时候,很容易计算出其结果来;而当给定结果的时候,很难计算出输入来,这就是单项函数。各种加密函数都可以被认为是单向函数的逼近。Hash函数(或者成为散列函数)也可以看成是单向函数的一个逼近。即它接近于满足单向...原创 2014-02-08 15:16:35 · 123 阅读 · 0 评论 -
jvm内存溢出分析
jvm内存溢出分析对于JVM的内存写过的文章已经有点多了,而且有点烂了,不过说那么多大多数在解决OOM的情况,于此,本文就只阐述这个内容,携带一些分析和理解和部分扩展内容,也就是JVM宕机中的一些问题,OK,下面说下OOM的常见情况:第一类内存溢出,也是大家认为最多,第一反应认为是的内存溢出,就是堆栈溢出:那什么样的情况就是堆栈溢出呢?当你看到下面的关键字的时候它就是堆栈溢出了:java.la...原创 2013-01-01 11:46:48 · 77 阅读 · 0 评论