摘要: 以前在做项目的时候,遇到线上数据源泄漏等问题经常是一筹莫展。并且线上经常出现各种莫名奇妙的问题,想要查看方法参数,偏偏有些方法参数没有日志,因此只能通过补丁升级来解决问题。如果遇到紧急bug,同时又不能停服务进行升级则经常陷入超级囧的状态。最近研究JVM,偶然发现一个故障分析工具,就是接下来咱们... 阅读全文
posted @ 2015-09-12 00:54 JackDesperado 阅读(364) 评论(0) 推荐(1) 编辑
摘要: 前言在使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果。在本文中,将介绍MAT如何根据heap dump分析泄漏根源。由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三。一开始不得不说说ClassLoader,本质上,它的工作就是把磁... 阅读全文
posted @ 2015-09-10 17:06 JackDesperado 阅读(3177) 评论(0) 推荐(0) 编辑
摘要: 转自:http://hi.baidu.com/fancys_he/blog/item/2861344affcfe32609f7efd1.html句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。... 阅读全文
posted @ 2015-09-10 14:52 JackDesperado 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 程序计数器 程序计数器是一块较小的内存,它是线程私有的,可以看作是当前线程执行字节码的计数器。在虚拟机的概念模型中,字节码解释器就是通过这个计数器来找到下一个将要执行的指令。java中分支语句,循环,异常处理以及线程恢复都是通过程序计数器来实现的。由于JVM在执行线程的时候是通过CPU轮流执行各个线... 阅读全文
posted @ 2015-09-07 15:04 JackDesperado 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 命令行 (1) $符号在命令中表示引用变量,可以export设置变量。 例如查看环境变量命令:echo $PATH 此处就是通过$引用PATH变量(这是个全局变量) 例如: d 当我们直接敲一个命令的时候,bash就去PATH变量记载的路径中寻找该程序。如果想运行一个自己安装的二进制程序,则需要先加上该命令所在的路径。 (2) man 命令 Man命令时专门解释其他命令的命令 ... 阅读全文
posted @ 2015-09-07 14:37 JackDesperado 阅读(479) 评论(0) 推荐(0) 编辑
摘要: 查找算法中主要涉及三种重要的数据结构来实现字典,即二叉查找树,红黑树,散列表。本章主要介绍这三种重要的数据结构。 一、符号表(字典) 符号表是一种存储键值对的数据结构,主要支持两种操作,插入(put)即将一组新的键值对存入符号表,查找(get)根据给定的键找到相应的值。 API 二、二叉查找树 二叉查找树(BST)就是一颗二叉树,其中每个节点都包含一个键(实现Compa... 阅读全文
posted @ 2015-09-03 12:43 JackDesperado 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 排序算法研究的若干问题 排序成本模型:在研究算法的时候我们会计算比较和交换的次数,对于不交换元素的算法我们会计算数组访问的次数。额外内存使用 排序算法的额外内存开销与运行时间是同等重要的,排序算法那可以分为两种,一是除了算法函数本身调用栈和固定数目的实例变量之外无需额外内存的原地排序算法,以及需要额... 阅读全文
posted @ 2015-08-31 12:39 JackDesperado 阅读(211) 评论(0) 推荐(0) 编辑
摘要: concurrent包是java提供的并发编程框架的一个库,该库为java并发编程提供各种各样的组件,主要包括以下几个方面: Atomic数据类型 该部分主要是针对java的基础数据类型Boolean,Integer,Long,Reference,实现了其原子化操作的数据类型,该部分被放在java.... 阅读全文
posted @ 2015-08-28 12:25 JackDesperado 阅读(163) 评论(0) 推荐(0) 编辑
摘要: java中提供了丰富的集合类操作,大概可以分为无序结合Set,有序集合List和无序键值对集合Map。Java5之后又新增了队列操作集合Queue。Java1.5之后新增了线程安全的集合操作类,阻止在java.util.concurrent包中。本文仅仅探讨该包下面的线程安全的结合操作类。 先看下c... 阅读全文
posted @ 2015-08-25 12:30 JackDesperado 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 一 Executor接口 Executor接口的对象是一种执行任务的方式。它能够使提交的任务和执行任务的线程的管理解耦。我们通常用Executor来代替new一个Thread对象来执行任务。这样可以省略底层线程的管理细节。例如: executor.excute(newRunnableTask());... 阅读全文
posted @ 2015-08-20 12:28 JackDesperado 阅读(1403) 评论(0) 推荐(1) 编辑