- 博客(278)
- 问答 (1)
- 收藏
- 关注
原创 JVM内存配置详解
前段时间在一个项目的性能测试中又发生了一次OOM(Out of swap sapce),情形和以前网店版的那次差不多,比上次更奇怪的是,此次搞了几天之后啥都没调整系统就自动好了,死活没法再重现之前的OOM了!问题虽然蹊跷,但也趁此机会再次对JVM堆模型、GC垃圾算法等进行了一次系统梳理; 基本概念 堆/Heap JVM管理的内存叫堆;在32Bit操作系统上有4G的限制,一般来说Window...
2016-09-03 10:16:26
202
原创 mysql数据库备份与还原命令
还原一个数据库:mysql -h localhost -u root -p123456 www备份一个数据库:mysqldump -h localhost -u root -p123456 www > d:\www2008-2-26.sql其中WWW为数据库名//以下是在程序中进行测试//$command = “mysqldump –opt -h $dbhost -u ...
2015-09-12 04:22:14
426
原创 gc日志分析工具
性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析。Gc日志参数通过在tomcat启动脚本中添加相关参数生成gc日志-verbose.gc开关可显示GC的操作内容。打开它,可以显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等。打开-xx:+ printGCd...
2014-07-31 11:29:32
387
原创 hash冲突的解决
为提高hash表查找性能,除了考虑选择合适的hash表表长和完美的hash函数外,还必须考虑hash表处理冲突的能力。当hash函数对两个不同的数据项产生了相同的hash值时,冲突就产生了。对于冲突的处理,通常采用的方法可以分为三类:(1)线性再散列法,简单的按顺序遍历hash表,寻找下一个可用的槽;(2)非线性再散列法,计算一个新的hash值;(3)外部拉链法,将hash表中的每个...
2014-04-09 19:28:57
134
原创 转 淘宝屏蔽百度的原因
周末看的消息,搜狐博客和淘宝相继封了百度的爬虫,搜狐还封了google的蜘蛛,搜狐的目的,搜狐编辑博客已经说清了,就是要向facebook学习,不为别人做嫁衣,当然也是不让别人哪天封了自己,先下手为强,到时候让百度google被别人笑话,至于到时候是谁被笑话,现在还说不清楚,暂时不说这个。昨天在新浪看到洪波先生的文章:淘宝封百度爬虫赌什么,洪波先生一向是我敬重的前辈,因此相当仔细看完了整篇...
2014-04-08 15:06:33
339
原创 iterator与iterable关系
用Iterator模式实现遍历集合Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。例如,如果没有使用Iterator,遍历一个数组的方法是使用索引:for(int i=0; i<array.size(); i++) { ... get(i) ... }而访问一个链表(LinkedList)又必须使用...
2014-04-08 15:04:21
498
原创 ByteBuffer使用
在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入缓冲区.缓冲区是定长的,基本上它只是一个列表,它的所有元素都是基本数据类型.ByteBuffer是最常用的缓冲区,它提供了读写其他数据类型的方法,且信道的读写方法只接收ByteBuffer.因此ByteBuffer的用法是有必要牢固掌握的.1.创建B...
2014-04-08 15:04:03
902
原创 java实现迭代遍历接口的队列(Queue)
public class Queue<Item> implements Iterable<Item>{private Node first;private Node last;private int N;private class Node{ Item item; Node next;}public boolean isEmpt...
2014-03-23 16:34:33
2016
原创 java实现Iterable接口的栈(stack)
//实现Iterable接口,实现迭代遍历 public class Stack<Item> implements Iterable<Item>{private Node first;private int N;//定义内部类作为栈中的每一个节点private class Node{ Item item; Node next;...
2014-03-23 16:32:38
208
原创 利用Iterator模式遍历JavaBean中的属性
缘起 (Motivation/intent)JavaScript中可以遍历对象中的属性,但Java却没有这样的语言支持。例如一个普通POJO对象UserBean public class UserBean { private int id; private String name; private Date birthdate; ...
2014-03-23 16:16:10
607
原创 迭代器模式
和原型模式一样,迭代器模式也基本不需要自己实现了,Java中提供了Iterator接口,可直接实现迭代器。迭代器模式也非常简单,就是为不同的集合统一遍历接口。这里看下Java中迭代器的实现代码,以ArrayList为例//ArrayList实现了List接口public class ArrayList<E> extends AbstractList<E> ...
2014-03-23 16:05:47
79
原创 贴一份代码,演示java.lang.Iterable
可能大家都没有注意,Collection接口的父接口是java.lang.Iterable在这个接口中定义的是iterator方法并且这个接口中指出 “实现这个接口允许对象成为 "foreach" 语句的目标”这就是说,所有的集合类都要实现iterator方法都可以返回一个Iterator对象,完成迭代功能下面写一个示例代码演示一下package iterator; import ja...
2014-03-23 10:31:55
122
原创 Bloom Filter 总结
1 Overview Bloom filter最早由 Burton Howard Bloom提出,是一种用于判断成员是否存在于某个集合中的数据结构。 Bloom filter的判断基于概率论:如果某个成员存在于集合中,那么Bloom filter不会返回假(即不存在),也就是说false negative是不可能的。如果某个成员实际上不存在于集合中,Bloom filter...
2014-02-10 17:52:46
103
原创 用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
97
原创 应用Hash函数(java描述) .
计算理论中,没有Hash函数的说法,只有单向函数的说法。所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数据。用“人类”的语言描述单向函数就是:如果某个函数在给定输入的时候,很容易计算出其结果来;而当给定结果的时候,很难计算出输入来,这就是单项函数。各种加密函数都可以被认为是单向函数的逼近。Hash函数(或者成为散列函数)也可以看成是单向函数的一个逼近。即它接近于满足单向...
2014-02-08 15:16:35
122
原创 异常处理之最佳实践(Best Practices for Exception Handling )
关于异常处理最主要的问题是什么时间、怎么使用,在本文将含括一些关于异常处理的最佳实践方案。 异常的本质(这里有三种不同的情况会产生并抛出异常):程序错误:这种异常时由于程序的错误而产生的(例如,NullPointerException and IllegalArgumentException)。代码调用错误:客户端代码试图违反API协议调用接口。如果异常能提供一些有...
2013-09-15 12:15:54
158
原创 解决maven传递依赖中的版本冲突
传递依赖是maven最有特色的、最为方便的优点之一,可以省了很多配置。如a 依赖 b,b 依赖c 默认 a也会依赖 c。但是 也会带来隐患,如版本冲突。当然maven也考虑到解决办法,可以使用exclusions来排除相应的重复依赖。 但是我们还会遇到一个严重的问题,那就是,我怎么知道是哪个包的传递依赖产生的冲突 ?那该怎么办呢?当然,maven也会有相应的解决方案。 首先,...
2013-09-15 12:15:39
400
原创 Spring 3.1.x + Hibernate 4.2.x+JBPM 5.2 + Ecache 的一些配置
问题: 是否可以参考别人的http://panyongzheng.iteye.com/blog/1871631一些配置,来进行改进applicationContext.xml和JbpmSupport.java的一些信息。待研究...... pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http...
2013-09-15 12:15:10
112
原创 JAVA正则表达式 Pattern和Matcher
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。 它包括两个类:Pattern和Matcher 。Pattern: 一个Pattern是一个正则表达式经编译后的表现模式。 Matcher: 一个Matcher对象是一个状态机器,...
2013-09-15 12:14:30
86
原创 创建支持eclipse的多模块maven项目
Maven命令行来创建项目 http://everlook.iteye.com/blog/1446672 Maven最佳实践:划分模块 http://blog.csdn.net/yydcj/article/details/8698222 如果碰到问题,或者觉得不详细,可以参考 http://blog.csdn.net/yydcj/article/details/8699633 一些命令说明: ...
2013-09-05 01:08:21
134
原创 Spring3.1 + Hibernate4.2.1 + JBPM5.4 + Ehache整合例子
pom.xml -----------------------------------<?xml version="1.0" encoding="utf-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"...
2013-09-05 01:03:53
88
原创 JBPM5.4发送email
JBPM5.4配置参考: http://panyongzheng.iteye.com/blog/1879279 本文参考: https://community.jboss.org/thread/201336 发送邮件的功能,只有三个控件,开始事件,邮件事件,结束时间。 dpmn文件: Xml代码 <?xml version="1.0" encoding="UT...
2013-09-05 01:01:57
219
原创 JBPM5的一些概念
人工任务分三部分: 1.运行一项任务服务器,不仅启动了TaskServer,同时还加载了如群组,用户等数据。 2.启动一个流程实例,这个类的功能是启动一个流程实例。 3.人工处理某一个流程,获得某个User的任务列表,并执行某项任务。 1 taskserver 是一个独立服务器,用于解决human task,http://hi.baidu.com/%CB%A7%D0%A1%B7...
2013-09-05 01:00:40
141
原创 Maven配置jetty和tomcat部署方式
Tomcat: http://tomcat.apache.org/maven-plugin-2.1/ pom.xml <pluginManagement> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId>...
2013-09-05 00:59:29
195
原创 设计模式六大原则(5):迪米特法则
定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才...
2013-09-03 23:09:18
126
原创 设计模式六大原则(4):接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:(图1 未...
2013-09-03 23:08:39
98
原创 设计模式六大原则(2):里氏替换原则
肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T...
2013-09-03 23:07:36
103
原创 设计模式六大原则(1):单一职责原则
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2...
2013-09-03 23:06:16
97
原创 设计模式六大原则(3):依赖倒置原则
设计模式六大原则(3):依赖倒置原则 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I...
2013-09-03 23:05:26
87
原创 最佳线程数和QPS以及RT
最近在关注性能的事情,所以对于多线程程序中,如何设置最佳的线程数,找了一些文章。虽然有公式可以套用,但是,其实最佳的话只是相对的,了解了过程之后,处理线程数的设置就会游刃有余了。名字解释:1、QPS:系统每秒处理的请求数(query per second)2、RT:系统的响应时间,一个请求的响应时间,也可以是一段时间的平均值3、最佳线程数量:刚好消耗完服务器瓶颈资源的临界线...
2013-08-16 09:13:29
291
原创 java虚拟机常用命令工具
一、概述 程序运行中经常会遇到各种问题,定位问题时通常需要综合各种信息,如系统日志、堆dump文件、线程dump文件、GC日志等。通过虚拟机监控和诊断工具可以帮忙我们快速获取、分析需要的数据,进而提高问题解决速度。 本文将介绍虚拟机常用监控和问题诊断命令工具的使用方法,主要包含以下工具:jps显示系统中所有Hotspot虚拟机进程jstat收集Ho...
2013-08-15 10:02:19
90
原创 BTrace使用总结
一、背景 在生产环境中可能经常遇到各种问题,定位问题需要获取程序运行时的数据信息,如方法参数、返回值、全局变量、堆栈信息等。为了获取这些数据信息,我们可以通过改写代码,增加日志信息的打印,再发布到生产环境。通过这种方式,一方面将增大定位问题的成本和周期,对于紧急问题无法做到及时响应;另一方面重新部署后环境可能已被破坏,很难重新问题的场景。 二、BTrace功能 B...
2013-08-15 09:57:15
96
原创 BTrace使用简介
很多时候在online的应用出现问题时,很多时候我们需要知道更多的程序的运行细节,但又不可能在开发的时候就把程序中所有的运行细节都打印到日志上,通常这个时候能采取的就是修改代码,重新部署,然后再观察,但这种方法对于online应用来说不是很好,另外一方面如果碰到不好改的代码,例如引用的其他的外部的包什么的,就很麻烦了,BTrace就是一个可以在不改代码、不重启应用的情况下,动态的查看程序运...
2013-08-15 09:55:14
80
原创 关于vmstat,top,ps aux查看的cpu占用率不一致的问题
问题:用vmstat,top,和ps aux三个命令查看进程对cpu的占用率,数值差异很大。例:用 vmstat 查看系统cpu空闲率, id是cpu的空闲率,可以看出,空闲率一直在73%以上用 ps aux 统计两个compress进程的cpu占用率,长时间恒定在15.5%和28.9%用 top统计两个compress进程的cpu占用率,可以看出是一个动态变化的过程(命令执行结果后面有显示)...
2013-08-15 09:53:13
262
原创 tomcat cpu占用过高,系统负载高问题跟踪
线上8核 linux服务器,负载为8为正常情况,目前CPU负载过高,最高负载30多,平均负载在20左右,已经持续近一周,具体占用CPU资源的服务是tomcat_sc,占用CPU资源高达:720%使用jconsole去跟踪更改catalina.sh 启动设置: $ CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun....
2013-08-15 09:53:04
1672
原创 Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
可以用下面的命令将 cpu 占用率高的线程找出来: ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段进行排序。这样就可以找到占用处理器的线程了。直接使用 ps Hh -eo pid,t...
2013-08-14 16:13:25
241
原创 Linux下高效的使用 top 命令
对桌面用户来说,监视系统资源使用是一项重要的工作。通过这项工作,我们可以找到系统瓶颈所在,针对性的进行系统优化,识别内存泄露等。问题是,我们应该用什么软件,以及如果针对我们的需求使用它。 在众多备选的监测工具中,多数人使用“top”(procps 包的一部分)。Top 提供了几乎可以说是所有的我们所需要的系统资源使用监测,就在这一个软件中。本文中的所有信息都是基于运行在 Linux 2....
2013-08-14 15:33:14
123
原创 jstat使用方法
用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序。Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序...
2013-08-14 15:15:15
193
原创 转 探索 ConcurrentHashMap 高并发性的实现机制
简介ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本文需要读者了解 Java 内存模型。同时,ConcurrentHashMap 的源代码会...
2013-08-14 10:16:36
105
原创 JAVA线程池的分析和使用
1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。...
2013-08-14 10:11:33
95
空空如也
extjs3.1版本grid不能用回车导航,老版本可以,请那位好心人帮忙解决
2010-06-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人