`
agapple
  • 浏览: 1583555 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
背景 公司在做监控迁移过程中,使用了aop:config进行配置。 配置例子: <aop:config> <aop:advisor advice-ref="rpc-interceptor" pointcut-ref="rpc-pointcut"/> </aop:config> 定义了一些advisor列表,但在实际过程中却遇到一些莫名奇妙的问题,就是原本不应该被生成代理的对象出现了jdk,cglib代理。   分析 aop:config具体的解析类为//AopNamespaceHandler.java ...
背景 以前debug jdk源码的时候,一直苦于没有源码,无法更加深入的了解一些机制。 这几天在看文章的时候,看到了两篇文章,让我眼前一亮阿   文章链接: http://www.iteye.com/topic/869992 http://hllvm.group.iteye.com/group/topic/24553 首先下载jdk 源码,我选的是sun jdk source: http://download.java.net/jdk6/source/     这里几个代码对应关系:    sa-jdi.jar  对应于: ${jdk_source}/ho ...
背景  RednaxelaFX 写道   agapple 写道还有一个问题,就是在验证一些逃逸优化时,有些jvm参数用不了,比如-XX:printInlining,-XX:printAssembly,jdk用的是1.6.11和jdk1.6.18  -XX:+PrintInlining在product build的Sun JDK上可以是可以用,但什么也显示不出来。要在debug build(debug或者fastdebug)上才有意义。-XX:PrintAssembly的使用请参考这篇文章:JVM 反汇编动态运行代码简单来说,如果在声明那些VM参数的地方,写着是product、prod ...
背景 前段时间在看btrace源码和jdk一些源码的时候,经常会看到一些jmx的相关内容。以前对jmx基本是一片空白区,花了点时间学习记录下。   过程 jmx总体架构图:  说明:  1.  Agent : javax.management.MBeanServer实现了Agent的功能,以标准的方式给出了管理系统访问 JMX 框架的接口 2. SubAgent: javax.management.MBeans实现了SubAgent的功能,以标准的方式给出了 JMX 框架访问资源的接口 MBean是Management Bean的缩写,负责将可管理资源和服 ...
背景 前段时间做了个项目,主要优化一个产品页面。整个优化过程中,针对velocity的分析过程占了比较大的比重,这里做一下整理和记录。   描述 velocity版本:    <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.6.4</version> </dependency> 优化1: 锁优化 通过velo ...
背景 上次在部门周会上抛出了一段代码:   Class SimpleCache { private Map cache = new HashMap() ;  public Object get(String key) { return cache.get(key); } public void reload(){ Map tempCache = loadFromDB(); cache = tempCache; // 位置1,引用切换 } } 是否是一个线程安全问题的操作。看似很简单的问题,其实发现 ...
背景 前段时间一直在关注一些牛人的blog,主要的关注点在一些性能优化上,一些细小的jvm参数优化上。以前这一块一直是自己的弱项,把这段时间看的内容做一个记录。 过程 先认识一下几位大牛的http://rednaxelafx.iteye.com , http://kenwublog.com/, 貌似都是taobao中间件团队的,blog文章都写的比较不错。   JIT优化 JIT全程: (Just-in-time) , sun的一些资料文档: Just-In-Time Java Compiler  ,   http://java.sun.com/developer/onlineTra ...
背景    自从公司应用大部分迁移到了jetty后,一些杂七杂吧的问题,陆续的冒上来。 前段时间有很多人问我使用了jetty之后,对应的jps功能无法正常使用,jinfo/jstack等等这些命令都正常。 原因分析 java进程启动后,会在$TMP(%TMP%)/hsperfdata_$username 创建一个perfData数据,用于jvmstat一些统计数据(可以看一下神人的神帖:http://rednaxelafx.iteye.com/blog/796343)。   可以做个尝试, 启动一个main函数:    public class InstrumentServer { ...
背景   前几天很悲剧,公司的oracle小型机据说是网卡驱动有问题,导致数据库整整挂了1个多小时,后来切换到了备份数据库上,可用性一下子跌倒了3个9。     在后续的某一天,凌晨3点进行了网卡升级,又从备份库重新切回主库的时,测试过程中发现dbcp的自动重连部分机器有问题。 问题描述 整个过程出现了两种错误日志:  异常1:    Caused by: java.sql.SQLException: The Network Adapter could not establish the connection at oracle.jdbc.driver.SQLS ...
去年做的一件事情,就是将网站百来台的机器从apache 2.0+jboss4.05 升级到了 apache2.2.15 + jetty7.2.0。   今天无意中翻到了,当时还整理了一封比较详细的升级文档。   里面比较详细的记录了一些参数优化的内容:    apache的woker线程池配置参数优化 apache mod_proxy参数配置优化 jetty 参数配置 dbcp 数据源配置优化 最后还有一些升级过程中遇到的问题记录,其他的有些公司的产品介绍或者链接啥的,大家请忽略把。 文档地址: Apache2.2+jetty7.2 升级实施文档
背景 最近在实施并行加载,遇到一个问题: 重复代理,或者说是两次cglib代理。 主要是并行加载技术本身是采用了cglib+拦截的技术进行控制,所以势必会要求进行一次代理配置那 1. 如果需要代理的原始对象已经是一个cglib代理后的对象,比如性能监控,日志记录等等。 2. 其他同事在做的自动路由,按需加载都会要求进行一次cglib代理   如何平衡多次代理的问题,就冒出来了。 思路 接近于spring的autoProxyCretor的一套机制,利用了BeanPostProcessor,就是在bean的生命周期上做点文章。   spring默认提供的几种auto-proxy: ...
最近公司会使用DSL描述一个domain service。所以趁这个机会也学习下高深的javacc,以前看到一堆的jj_xxx都很头痛,看代码基本都是跳过。 以前看过velocity, cobar的一下代码,都有使用类似jj_xxx,还有最近公司架构师做的一个anxiety,也使用了jj_xx自定义了一套btrace监控的语法:不需要我们自己写java文件,而是按照他的语法规则,它给我们自动生成btrace script。 还有就是万恶的大学,居然没给我们安排编译原理的课程,导致自己基础太差,理解起来颇为困难。没办法只能是硬着头皮先看一些编译原理的基本内容。 推荐一本书: 《编 ...
背景 前一段时间一直在关注一些nio的相关技术,也和公司的架构师交流了一下,学到了一些相关原理,比如nio的优势和劣势。以及一些排查nio bug问题的方式,受益量多。为自己做一下技术储备,以后可以多玩玩nio的相关技术 知识点 unix网络编程第6章: 几种unix下的I/O模型。   阻塞I/O模型    (java io) 非阻塞I/O模型 I/O复用          (java 5的nio) 信号驱动I/O 异步I/O          (java7的aio) 几点说明:  1.  阻塞和非阻塞的概念    两者的区别侧重点在于,当前的线程是否会处于挂起,阻 ...
背景     周五下班回家,在公司班车上觉得无聊,看了下btrace的源码(自己反编译)。 一些关于btrace的基本内容,可以看下我早起的一篇记录:btrace记忆      上一篇主要介绍的是btrace的一些基本使用以及api,这里我想从btrace ...
背景   最近着手在一个已有的应用中实施并行加载技术,整理记录一下过程中遇到的问题,方便以后查阅。   关于并行加载可以访问:  (业务层)异步并行加载技术分析和设计   姊妹篇: (业务层)异步并行加载ChangeLog   ...
Global site tag (gtag.js) - Google Analytics