- 博客(16)
- 收藏
- 关注
转载 故障分析神器——BTrace
以前在做项目的时候,遇到线上数据源泄漏等问题经常是一筹莫展。并且线上经常出现各种莫名奇妙的问题,想要查看方法参数,偏偏有些方法参数没有日志,因此只能通过补丁升级来解决问题。如果遇到紧急bug,同时又不能停服务进行升级则经常陷入超级囧的状态。最近研究JVM,偶然发现一个故障分析工具,就是接下来咱们要说的BTrace。这位大神可以在不停服务的情况下进行方法参数的分析,数据库连接池的分析等...
2015-09-12 00:54:00
129
转载 JVM——Memory Analyzor分析内存溢出
前言在使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果。在本文中,将介绍MAT如何根据heap dump分析泄漏根源。由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三。一开始不得不说说ClassLoader,本质上,它的工作就是把磁盘上的类文件读入内存,然后调用java.lang.ClassLoader.defineCl...
2015-09-10 17:06:00
153
转载 关于句柄
转自:http://hi.baidu.com/fancys_he/blog/item/2861344affcfe32609f7efd1.html句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。从上面的定义中的我们可...
2015-09-10 14:52:00
124
转载 Java内存区域与内存溢出
程序计数器 程序计数器是一块较小的内存,它是线程私有的,可以看作是当前线程执行字节码的计数器。在虚拟机的概念模型中,字节码解释器就是通过这个计数器来找到下一个将要执行的指令。java中分支语句,循环,异常处理以及线程恢复都是通过程序计数器来实现的。由于JVM在执行线程的时候是通过CPU轮流执行各个线程的,CPU每次只能执行一个线程的某个指令。这就要求每次在切换线程的时...
2015-09-07 15:04:00
116
转载 命令行的使用
命令行(1) $符号在命令中表示引用变量,可以export设置变量。例如查看环境变量命令:echo $PATH 此处就是通过$引用PATH变量(这是个全局变量)例如:d当我们直接敲一个命令的时候,bash就去PATH变量记载的路径中寻找该程序。如果想运行一个自己安装的二进制程序,则需要先加上该命令所在的路径。(2) man 命令Man命令时...
2015-09-07 14:37:00
105
转载 查找
查找算法中主要涉及三种重要的数据结构来实现字典,即二叉查找树,红黑树,散列表。本章主要介绍这三种重要的数据结构。一、符号表(字典)符号表是一种存储键值对的数据结构,主要支持两种操作,插入(put)即将一组新的键值对存入符号表,查找(get)根据给定的键找到相应的值。API 二、二叉查找树 二叉查找树(BST)就是一颗二叉树,其中每个节点都...
2015-09-03 12:43:00
160
转载 排序
排序算法研究的若干问题 排序成本模型:在研究算法的时候我们会计算比较和交换的次数,对于不交换元素的算法我们会计算数组访问的次数。额外内存使用 排序算法的额外内存开销与运行时间是同等重要的,排序算法那可以分为两种,一是除了算法函数本身调用栈和固定数目的实例变量之外无需额外内存的原地排序算法,以及需要额外内存空间来存储一组数组副本的其他排序算法。 一...
2015-08-31 12:39:00
112
转载 Concurrent包总结——包结构概要
concurrent包是java提供的并发编程框架的一个库,该库为java并发编程提供各种各样的组件,主要包括以下几个方面: Atomic数据类型 该部分主要是针对java的基础数据类型Boolean,Integer,Long,Reference,实现了其原子化操作的数据类型,该部分被放在java.util.concurrent.atomic包里 提供...
2015-08-28 12:25:00
177
转载 Concurrent包总结——线程安全的集合操作
java中提供了丰富的集合类操作,大概可以分为无序结合Set,有序集合List和无序键值对集合Map。Java5之后又新增了队列操作集合Queue。Java1.5之后新增了线程安全的集合操作类,阻止在java.util.concurrent包中。本文仅仅探讨该包下面的线程安全的结合操作类。 先看下concurrent包下面线程安全类的类图结构: 1.CopyOn...
2015-08-25 12:30:00
462
转载 Concurrent包总结——线程任务执行框架
一 Executor接口 Executor接口的对象是一种执行任务的方式。它能够使提交的任务和执行任务的线程的管理解耦。我们通常用Executor来代替new一个Thread对象来执行任务。这样可以省略底层线程的管理细节。例如: executor.excute(newRunnableTask()); concurrent包中提供了比较常用的Executor的实现,这些实...
2015-08-20 12:28:00
145
转载 结构化并发程序——取消与关闭
一 任务取消 中断——任务的取消策略 一些特殊的阻塞库的方法支持中断。线程的中断时一种写作机制,通过这种协作机制,线程可以通知另一个的线程,在合适的或者可能的情况下,停止当前工作并且转而执行其他的工作。 在java的API文档中,并没有将中断与任何任务取消的语义关联起来,但是实际上如果在取消之外的其他语义上使用中断,都是不合适的,并且很难支撑起更大的应用。...
2015-08-12 12:22:00
202
转载 结构化并发应用程序——任务执行
一. Executor框架------------------------------------------------------------------------《未完》----------------------------------------------------转载于:https://www.cnblogs.com/JackDesperado/p/47800...
2015-08-05 12:21:00
180
转载 基础构建模块
一、同步容器类 同步容器类包含Vector,Hashtable。以及在JDK1.2中添加的一些功能类似的容器类,他们是由Collections.synchronisedXxx等工厂方法创建的。这些类实现线程安全的方式就是将底层容器类的状态变量封装起来,并且同步每一个公有的方法,使得每次只能有一个线程访问底层容器类的状态变量。 同步容器类的问题 在使用同步容器类提供的公...
2015-08-03 12:14:00
107
转载 算法分析
算法分析中常见的函数 算法分析中常用的近似函数 增长数量级的分类 我们在现实算法中使用了几种结构性原语(普通语句,条件语句,循环,嵌套语句和方法调用),所以成本增长的数量级一般都是问题规模N的若干函数之一。 转载于:https://www.cnblogs.com/JackDesperado/p/4...
2015-07-31 12:34:00
100
转载 对象的组合
一、设计线程安全的类在设计线程安全类的过程中需要考虑一下要素;找出构成对象状态的所有变量找出约束状态变量的不变性条件建立对象状态的并发管理策略构成对象状态的所有变量如果该对象的所有域都是基本类型的变量,则这些基本类型的变量就构成了该对象的状态如果该对象中包含引用类型的变量,则被引用对象的状态变量也一起构成该对象的状态变量 2.构建线...
2015-07-30 10:23:00
117
转载 ThreadLocal类的用法与源码解析
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操...
2015-07-23 10:18:00
93
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人