JavaEE
猫头哥
创业中的猫头哥
展开
-
Java内存泄露与溢出
Java内存泄漏就是没有及时清理内存垃圾,导致系统无法再给你提供内存资源(内存资源耗尽);而Java内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。Java内存泄露与溢出的区别 内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。 Java内存泄漏就是没有及时清理内存垃圾,导致系统无法再给你提供内存资源...原创 2011-08-10 11:00:45 · 80 阅读 · 0 评论 -
java打包以及启动命令相关
1.不需要配置MANIFEST.MFjava -classpath /aaa/bbb/lib/*:/aaa/ss/cc.jar com.test.Main2.配置了META-INF/MANIFEST.MF/里面的Main-Class属性,通过java -jar启动java -jar /aaa/ss/cc.jar参考文档http://www.2cto.com/kf/201...2013-12-09 20:23:58 · 131 阅读 · 0 评论 -
关于读取网络输入输出流
之前做了个项目,很苦逼,用的httpclient。网络流那块始终搞不定。看代码注释的部分, byte[]的这个buffer不一定每次都会读满,所以导致处理的时候容易产生误解。[code="java"] HttpGet get = new HttpGet( "http://xxxx/xxxx" ); HttpRespons...2013-12-16 18:03:08 · 187 阅读 · 0 评论 -
Class.getResource与Class.getClassLoader.getResource
这两个getResource()是使用当前ClassLoader加载资源(即资源在 Class path中),这样资源和class直接打在jar包中,避免文件路径问题. 两者不同是Class的getResource()方法是从当前.class文件路径查找资源,ClassLoader则是从jar包根目录查找. 注意:针对WEB的javaEE项目和javaSE项目,路径也是...2013-12-16 18:42:59 · 161 阅读 · 0 评论 -
JPA之.getSingleResult()异常"No entity found for query"
在使用EJB3.0的JPA2.0技术的时候,遇到了一个很蛋疼的问题。 很久以前一直用EntityManager下getResultList()查询数据,即便一个数据亦是如此,所以要频繁的List.get(0)。新街口getSingleResult()出现了,然后就开始频繁报异常。“No entity found for query 在getSingleResult的源...2013-12-17 09:31:55 · 606 阅读 · 0 评论 -
windows2003服务精简方案
windows2003目前应该是最经典的服务器操作系统了。虽然JAVA开发很少使用windows部署了,但是今天发现了多年前珍藏的优化脚本,拿出来和大家分享一下。10年的服务器,但是仍然坚挺,值得一看。 以下是本人根据经验,优化的2003的高端文章。关闭了多余的服务。保证服务器更稳定,更多的资源可以利用。[img]http://dl2.iteye.com/upload/a...2013-12-17 18:20:24 · 261 阅读 · 0 评论 -
dbunit
官方站点http://www.dbunit.org/1 根据业务,做好测试用的准备数据和预想结果数据,通常准备成xml 格式文件。2 在setUp() 方法里边备份数据库中的关联表。3 在setUp() 方法里边读入准备数据。4 对测试类的对应测试方法进行实装: 执行对象方法,把数据库的实际执行结果和预想结果进行比较。5 在tearDown() 方法里边, 把数据库还原...2013-12-19 09:13:32 · 84 阅读 · 0 评论 -
JVM内存分析系列(十)jvisualVM和jConsole
jvm 启动参数1 无用户名密码,多网卡,必须要制定hostname参数 -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostnam...2013-12-19 09:19:00 · 303 阅读 · 0 评论 -
JVM内存分析系列(二)内存溢出的类型分析
[b]启动参数[/b]-server -verbose:gc -Xms10m -Xmx10m -Xss128k -Xloggc:C:/tmp/gc.log -XX:PermSize=5m -XX:MaxPermSize=5m -XX:MaxDirectMemorySize=10m -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:H...原创 2013-12-24 23:54:25 · 136 阅读 · 0 评论 -
java的GC编程
关于gc的编程,下面这篇文章写的不错。http://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak2/做图片缓存的时候确实不错。在之前一个项目中,由于图片只占用43byte,就一直放在内存中强引用了,所以没有在意GC的事情。但是精益求精的思路我们应该把SoftReference用上。自己也弄了个demo...原创 2013-07-06 22:11:14 · 148 阅读 · 0 评论 -
关于socket异常Connect reset by peer与Connection reset的生成原因
异常内容:org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://news.panguso.com/subapi!addsub.htm?uid=2746&cid=855":Connection reset; nested exception is java.net....原创 2013-06-07 14:29:14 · 1669 阅读 · 0 评论 -
java代码中,构造方法之前执行的代码
看到别人的代码,写了个花括号,不是构造方法,也不是静态代码所以做了个实验[code="java"]package com.panguso.phl;public class Test { //此代码在构造方法之前执行 { System.out.println("{}"); } static { S...2013-03-05 14:02:48 · 376 阅读 · 0 评论 -
svn-eclipse中SVN快捷键设置
1)菜单Window > Preferences > keys 找到SVN大类中的提交设置快捷键为ctrl+`When这一拦选择in windows2)在菜单Window > Customize Perspective > Command Groups Availability 里面选择svn ...2013-03-28 09:27:33 · 137 阅读 · 0 评论 -
java.io.tmpdir的目录位置及修改
操作系统不同 这个系统属性所表示的目录也不同On Windows: java.io.tmpdir:[C:\DOCUME~1\joshua\LOCALS~1\Temp\]On Solaris: java.io.tmpdir:[/var/tmp/]On Linux: java.io.tmpdir: [/tmp]On Mac OS X: java.io.tmpdir: [/t...原创 2013-04-01 10:04:31 · 8673 阅读 · 0 评论 -
SimpleDateFormat多线程问题
类SimpleDateFormat可以将时间格式在java.util.Date 和string之间进行相互转换。使用parse和format方法。在程序运行中却抛出java.lang.NumberFormatException异常。java.lang.NumberFormatException: For input string: ""at java.lang.NumberFormatEx...原创 2013-04-02 15:18:55 · 87 阅读 · 0 评论 -
java快速获取时间yyyy-mm-dd hh:mm:ss.fffffffff
下面这个方法他太优雅了,之前处理时间,都得使用SimpleDateFormat,而下面这个1行就搞定。做个笔记,不是什么高端的东西。只为了追求优雅。[code="java"]Timestamp ts = new Timestamp(System.currentTimeMillis());System.out.println(ts.toString());[/code][qu...原创 2013-06-05 09:34:33 · 1850 阅读 · 0 评论 -
java里优雅的文件输出
只追求优雅,以前从来没这么用过,都是用BufferedWriter 和OutputStreamWriter来实现这种方法的好处是可以指定字符编码但一般情况下,我们是不需要指定编码的,没想到还有PrintWriter这么优雅的办法[code="java"]import java.io.FileOutputStream;import java.io.PrintWriter;...原创 2013-06-05 14:40:10 · 247 阅读 · 0 评论 -
java的类加载器
[b]java的类加载器顺序[/b] 在每次创建一个Java类的实例时候,必须先将该类加载到内存中。Java虚拟机(JVM)使用类加载器来加载类。Java加载器在Java核心类库和CLASSPATH环境下面的所有类中查找类。如果需要的类找不到,会抛出java.lang.ClassNotFoundException异常。 从J2SE1.2开始,JVM使用了三种类加载器:boots...2013-06-06 09:42:08 · 161 阅读 · 0 评论 -
WEB开发服务器推送技术-tomcat7之websocket
从tomcat7.0.26之后开始支持websocket,建议大家使用tomcat7.0.30,期间版本的接口有一些改动。chrome默认支持websocket。其他浏览器可能由于安全原因,默认是关闭的。[code="java"]package com.panguso.phl.servlet;import java.io.IOException;import java.nio....2012-09-08 09:30:27 · 178 阅读 · 0 评论 -
JVM内存分析系列(一)JVM常用参数及溢出分析工具和方法
[b]JDK1.6.45常用基本参数[/b]-Djava.awt.headless=true #set to headless, just in case-server 服务模式启动-verbose:gc 开启gc日志打印-Xms值} 最小堆-Xmx{值} 最大堆-Xss{值} 栈容量-Xmn{值} 新生代的内存空间大小,注意:此处的大小是(eden + 2 survi...原创 2013-12-24 23:54:46 · 148 阅读 · 0 评论 -
JVM内存分析系列(三)JVM内存模型初步
根据《Java虚拟机规范(第二版)》的规定,结构如下[img]http://dl2.iteye.com/upload/attachment/0093/2977/c73d13c2-cb01-3cd6-aca3-bdb12844465e.jpg[/img]1)程序计数器Program Counter Register是一小块内存空间,他的作用是当前线程所执行的行号指示器。此内存...2013-12-25 17:09:28 · 100 阅读 · 0 评论 -
JVM内存分析系列(四)对象4种引用
强引用:只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。软引用:系统将要发生内存溢出异常之前,将会把这些对象列进回收范围之中并进行二次回收。弱引用:被弱引用的关联对象只能生存到下一次垃圾收集发生之前。虚引用:一个对象是否有虚引用存在,完全不会对其生存时间构成影响。也无法通过虚引用来取得一个对象的实例。虚引用的唯一目的,就是这个对象被收集器回收的时候,收到一个系统通知...2013-12-25 20:07:28 · 93 阅读 · 0 评论 -
JVM内存分析系列(十二)G1垃圾收集器的使用
Garbage First(G1)致力于在多CPU和大内存服务器上对垃圾收集提供软实时目标(soft real-time goal )和高吞吐量(high throughput )。从JDK 6u14开始就已经在Hotspot上试验,到现在的JDK7依然没有走出实验室。是最终将用于代替Concurrent Mark-Sweep garbage collector(CMS GC)的新一代垃圾回收器。...2014-01-16 17:10:10 · 312 阅读 · 0 评论 -
JVM内存分析系列(十三)内存实践理解
[b]java堆[/b]包括新生代:eden,survival(from),survival(to)老年代:[b]java方法区[/b]Hot Spot JVM里方法区就是永久代[b]Direct Memory[/b]可以通过 -XX:MaxDirectMemorySize调整大小用法[code="java"] Field unsafe...2014-01-22 10:09:52 · 139 阅读 · 0 评论 -
eclipse内存优化
修改eclipse的配置文件,添加或者修改参数如下,其中XX:ParallelGCThreads根据CPU的线程数来设置。最大堆和最小堆内存则根据机器具体的内存情况来设置。-Dosgi.requiredJavaVersion=1.6-server-Xverify:none-Xms1024m-Xmx1024m-Xmn288m-XX:PermSize=256m-XX...原创 2014-02-26 14:00:05 · 107 阅读 · 0 评论 -
关于return和finally
本来return和finally也不是个事。之前看虚拟机运行原理的时候就了解过。但是最近被人问起的时候,缺没有说清楚。所以整理一下记录下来。[b]1.如果返回的是个对象,finally里的的代码,可以改变对象内部的状态。[/b][code="java"]package com.chinaso.phl;import java.util.ArrayList;import java....2014-03-11 10:19:42 · 134 阅读 · 0 评论 -
java继承静态方法复写
最近和人交流,遇到了这样一个问题,就是继承当中,静态方法复写的情况。如果在子类中,复写方法没有添加static关键字,则IDE会提示:This instance method cannot override the static method from T1如果在子类中,复写方法与父类一致,此时若添加@Override注解,则IDE报错提示:The method print() of ty...2014-03-12 09:28:21 · 231 阅读 · 0 评论 -
快速失败特性
从高级别层次来说快速失败是一个系统或软件对于其故障做出的响应。一个快速失败系统设计用来即时报告可能会导致失败的任何故障情况,它通常用来停止正常的操作而不是尝试继续做可能有缺陷的工作。当有问题发生时,快速失败系统即时可见地发错错误告警。 在Java中,快速失败与iterators有关。在java.util 集合类中实现的迭代器极易崩溃,也就是说,如果在一个线程正在通过一个Itera...原创 2014-03-23 22:20:37 · 131 阅读 · 0 评论 -
Iterator与ListIterator区别
Iterator:只能正向遍历集合,适用于获取移除元素。ListIerator:继承Iterator,可以双向列表的遍历,同样支持元素的修改。原创 2014-03-23 22:21:20 · 175 阅读 · 0 评论 -
URI和URL的区别
String HttpServletRequest.getRequestURI();和StringBuffer HttpServletRequest.getRequestURL();返回的内容有何不同?Java类库里有两个对应的类java.net.URI和java.net.URL。URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资...原创 2014-03-26 10:38:26 · 88 阅读 · 0 评论 -
JVM内存分析系列(十一)GC基本情况与CMS垃圾收集器调优
初始标记CMS-initial-mark并发标记CMS-concurrent-markCMS-concurrent-precleanCMS-concurrent-abortable-preclean重新标记CMS-remark并发清理CMS-concurrent-sweep重置线程CMS-concurrent-reset其中preclean该...原创 2014-01-16 11:44:35 · 423 阅读 · 0 评论 -
haproxy的安装
官方配置http://haproxy.1wt.eu/简介HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些[color=red]负载特大[/color]的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运...2013-02-28 09:33:20 · 99 阅读 · 0 评论 -
JVM内存分析系列(六)对象存活判断
对象存活常用2种算法[b]引用计数算法[/b] 给对象中添加一个引用计数器,每当有一个地方引用他时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都为0的对象,就是不可能在被引用的。 但是它很难解决对象之间互相循环引用的问题。[b]根搜索算法[/b] 通过一系列名为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所用...原创 2013-12-26 11:10:16 · 115 阅读 · 0 评论 -
JVM内存分析系列(五)浅谈finalize()方法
根搜索算法中不可达对象在回收之前,要进行二次标记。第一次标记时会进行一次筛选:筛选的条件是是否有必要执行finalize()方法。当对象没有覆盖finalize()方法,或者finalize()被虚拟机调用过,则虚拟机认为没有必要执行finalize()方法。 如果这个对象有必要执行finalize(),则会放在一个队列里,以一个低优先级的线程进行执行finalize()...原创 2013-12-28 18:47:45 · 138 阅读 · 0 评论 -
JVM内存分析系列(七)垃圾收集算法
内存回收的方法论标记-清除算法Mark-Sweep分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。主要缺点有2个:1效率问题2产生内存碎片[img]http://dl2.iteye.com/upload/attachment/0092/6570/b92af119-1c9d-33b9-9da9-dc389f04c09b.j...原创 2013-12-30 12:58:36 · 104 阅读 · 0 评论 -
JVM内存分析系列(八)垃圾收集器介绍及性能指标
内存回收的具体实现。 停顿时间越短就越适合需要与用户交互的程序,良好的响应速度能提升用户的体验;而高吞吐量则可以最高效率的利用CPU时间,尽快的完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。 GC停顿时间缩短是以牺牲吞吐量和新生代空间来换取的:系统把新生代调小一些,收集100MB的新生代肯定比收集1000MB的新生代快,这也直接导致垃圾收集器发生的更频繁...原创 2013-12-30 13:33:27 · 137 阅读 · 0 评论 -
finally不执行的陷阱
写了个DEMO,说明下finally在System.exit(-1);的后面,是不被执行的。[code="java"]/** * @author piaohailin * @date 2014-5-16 */public class FinalTest { public static void main(String[] args) { tr...2014-05-16 09:23:52 · 398 阅读 · 0 评论 -
guava--google----用来替代commons的jar包
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦。下...原创 2014-01-06 18:21:02 · 3164 阅读 · 0 评论 -
JVM内存分析系列(九)JDK监控和故障处理工具
[b]jps JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程[/b]jps -l 输出主类全名,如果是JAR包,则输出JAR路径jps -v 输出虚拟机进程启动时JVM参数[b]jstat JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据[/b]jstat -gcutil 进...2014-01-08 18:33:08 · 154 阅读 · 0 评论 -
远程调试(二)JVM
从J2SE 1.4.2开始,就已经提出并实现了JavaTM Platform Debugger Architecture ,简称JPDA。 [size=large]一 代码[/size][code="java"]package com.chinaso.phl;/** * @author piaohailin * @date 2014-1-10 */publi...2014-01-10 11:43:36 · 143 阅读 · 0 评论