今天忙中出错,把本地的一个分支删除了,而我半天的改动只提交在了本地,并没有push到远程分支。重新写一遍太浪费时间了,于是了解了git是否有恢复本地删除的分支的方法。好在,git每次操作都有记录,通过下面的方法,最终是把删除的代码找了回来。

阅读更多

在上一篇博客初窥AspectJ中,我们提到AspectJ给java提供了三种新的结构,pointcut,advice以及inter-type declaration(ITD),而且我们通过一个简单的Demo介绍了如何使用pointcut和advice。而本文将介绍inter-type declaration是什么,可以做什么,最后同样会通过一个Demo来介绍如何使用。后文将主要用ITD来表示inter-type declaration。

本文中Demo的代码可以在github aspect-demo中找到。

阅读更多

AspectJ可以说是Java中当之无愧的黑魔法。说它是黑魔法,一方面是因为它很强大,能够解决一些传统编程方法论解决不了的问题,而另一方面,它也相当的晦涩,有着比较陡峭的学习曲线。

本文将带大家探索下AspectJ是什么,能做什么,以及如何来做,希望通过本文能够让大家初窥AspectJ之门道。

阅读更多

Troubleshooting是我平时工作中的重要内容,我几乎每天都会花一些时间在定位客户环境的问题上,有很多的问题都需要通过抓包来协助分析,比如定位SSL handshake失败,SNMP请求没响应的问题等。Linux平台一般使用tcpdump抓包,由于我们只能通过远程脚本调用的方式执行,所以对windows我没法使用wireshark之类的GUI工具,所以一般用netsh( 参考资料3)进行抓包。但是,linux上有时候并没有安装tcpdump或者登录的用户没有权限执行tcpdump,而且windows上使用netsh抓包很麻烦,而且过滤方式很弱,所以,我们就想着能不能有其他的抓包方式。

阅读更多

BTrace是一个动态追踪工具,那么必然要求所有的操作都是只写操作,不会修改目标程序的运行状态。所以,BTrace能做的事情是有限的。一般来讲,一个BTrace类满足下面的条件:

阅读更多

BTrace是Java平台很强大的动态追踪工具,主要通过写BTrace脚本来实现,其主要功能是通过注解来实现的,这篇文章列出主要的一些注解。

阅读更多

在上一篇博客中,我们知道可以使用JCMD来采集JFR文件。这篇文章将介绍除了JCMD之外的两种录制JFR的方法。

阅读更多

我在上一篇博客中简单介绍了JCMD的几个常见的用法,可以进行线程dump,内存转存,内存对象直方图分析等。可以说,JCMD集成了以前我们常用的jstack,jps,jmap等命令,就像瑞士军刀一样,all in one。除了这些功能,JCMD还能够采集JFR信息进行性能分析。

阅读更多

jcmd是jdk自带的一个神器,能够很方便的对java程序进行profiling。jcmd其实可以替代很多常用的工具,比如jstak,jmap。接下来让我们了解下什么是jcmd,jcmd能够帮助我们定位什么问题?工作中我们如何使用jcmd。

从jdk7开始,jcmd就是jdk自带的一个工具。在正确配置了JDK的环境变量的情况下,我们可以直接在命令行中执行jcmd:

阅读更多

Thread和UncaughtExceptionHandler

相信现在大家在写java程序时,必然会接触到多线程的概念。多线程很强大,但是也很容易出错。其中一个经常被忽略的错误就是线程无故异常退出,这种情况多数是因为某些未被捕获的异常直接抛出导致的,而且这时候如果处理不当,可能会导致系统资源的泄露,比如数据库连接未释放等。

阅读更多

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×