java
文章平均质量分 85
iteye_7245
这个作者很懒,什么都没留下…
展开
-
Canal BinlogChange(mysql5.6)
背景先前开源了一个开源项目: 【阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费】 本文主要是介绍一下canal1.0.3支持mysql5.6协议上的变化. 协议变化1. binlog checksum mysql5.6之后,支持在binlog对象中增加checksum信息,比如CRC32协议. 其原理主要是在原先bin...2013-04-09 00:26:32 · 263 阅读 · 0 评论 -
jvm优化参数整理(持续补充)
背景前段时间一直在关注一些牛人的blog,主要的关注点在一些性能优化上,一些细小的jvm参数优化上。以前这一块一直是自己的弱项,把这段时间看的内容做一个记录。过程先认识一下几位大牛的http://rednaxelafx.iteye.com , http://kenwublog.com/, 貌似都是taobao中间件团队的,blog文章都写的比较不错。 JIT优化JIT全程:...2011-05-09 22:37:02 · 245 阅读 · 0 评论 -
jetty实施后jps不可用问题
背景 自从公司应用大部分迁移到了jetty后,一些杂七杂吧的问题,陆续的冒上来。 前段时间有很多人问我使用了jetty之后,对应的jps功能无法正常使用,jinfo/jstack等等这些命令都正常。原因分析java进程启动后,会在$TMP(%TMP%)/hsperfdata_$username 创建一个perfData数据,用于jvmstat一些统计数据(可以看一下神人的神帖:ht...2011-05-04 11:35:41 · 125 阅读 · 0 评论 -
mysql几个参数(编码,预编译,批处理)
背景 这两天在做数据同步项目的联调,测试过程中发现针对mysql的一些使用上存在一些问题,比如batch不起效果,编码问题,预编译失效等等。 这里总结一下,做一下记录,希望对遇到类似问题的有所帮助内容编码问题官方文档: http://dev.mysql.com/doc/refman/4.1/en/connector-j-reference-charsets.html网上针对my...2011-11-22 16:08:01 · 359 阅读 · 0 评论 -
操作database TableMeta几点内容
背景 今天早上,领导给了我一个任务:在老的系统运行中,DBA反馈说获取database TableMeta操作有点慢,让我分析下基于oracle driver驱动是否可以做下优化。由此引出了本文,仅仅做一个记录。内容在补充几点背景知识: 1. 老系统介绍老系统主要负责的业务是做跨机房之间的数据库记录同步,需要获取数据库的table meta信息,进行构造对应的sql...2011-11-15 19:47:59 · 536 阅读 · 0 评论 -
Apache2.2+jetty7.2 升级实施文档
去年做的一件事情,就是将网站百来台的机器从apache 2.0+jboss4.05 升级到了 apache2.2.15 + jetty7.2.0。 今天无意中翻到了,当时还整理了一封比较详细的升级文档。 里面比较详细的记录了一些参数优化的内容: apache的woker线程池配置参数优化apache mod_proxy参数配置优化jetty 参数配置dbcp...2011-04-26 19:46:12 · 129 阅读 · 0 评论 -
spring的auto-proxy自动代理(融合机制实现)
背景最近在实施并行加载,遇到一个问题: 重复代理,或者说是两次cglib代理。主要是并行加载技术本身是采用了cglib+拦截的技术进行控制,所以势必会要求进行一次代理配置那1. 如果需要代理的原始对象已经是一个cglib代理后的对象,比如性能监控,日志记录等等。2. 其他同事在做的自动路由,按需加载都会要求进行一次cglib代理 如何平衡多次代理的问题,就冒出来了。思路...2011-04-25 18:52:13 · 278 阅读 · 0 评论 -
Javacc的学习
最近公司会使用DSL描述一个domain service。所以趁这个机会也学习下高深的javacc,以前看到一堆的jj_xxx都很头痛,看代码基本都是跳过。以前看过velocity, cobar的一下代码,都有使用类似jj_xxx,还有最近公司架构师做的一个anxiety,也使用了jj_xx自定义了一套btrace监控的语法:不需要我们自己写java文件,而是按照他的语法规则,它给我们自动...2011-04-19 14:15:59 · 247 阅读 · 0 评论 -
I/O的知识储备
背景前一段时间一直在关注一些nio的相关技术,也和公司的架构师交流了一下,学到了一些相关原理,比如nio的优势和劣势。以及一些排查nio bug问题的方式,受益量多。为自己做一下技术储备,以后可以多玩玩nio的相关技术知识点unix网络编程第6章: 几种unix下的I/O模型。 阻塞I/O模型 (java io)非阻塞I/O模型I/O复用 (j...2011-04-18 19:23:05 · 119 阅读 · 0 评论 -
BeanMapping发布1.0.1版本
背景 BeanMapping是什么? 请查看我之前的一篇文章: 我也造了个轮子:BeanMapping(属性拷贝) 现状 目前代码经过在一个实际项目中进行试用,该项目为公司的核心业务逻辑(产品页面数据),目前表现良好。 在原先的1.0.0版本基础上修复了几个bug,目前推荐使用1.0.1。 下载url : https://github.com/agapple...2012-01-31 14:48:06 · 129 阅读 · 0 评论 -
java线程阻塞中断和LockSupport的常见问题
上周五和周末,工作忙里偷闲,在看java cocurrent中也顺便再温故了一下Thread.interrupt和java 5之后的LockSupport的实现。 在介绍之前,先抛几个问题。 Thread.interrupt()方法和InterruptedException异常的关系?是由interrupt触发产生了InterruptedException异常?Thread....2011-03-22 00:29:39 · 341 阅读 · 0 评论 -
java泛型type体系整理
一直对jdk的ref使用比较模糊,早上花了点时间简单的整理了下,也帮助自己理解一下泛型的一些处理。 java中class,method,field的继承体系 java中所有对象的类型定义类Type 说明: Type : Type is the common superinterface for all types in the Java progra...2011-03-21 13:16:00 · 139 阅读 · 0 评论 -
jdk中cocurrent下的AbstractQueuedSynchronizer理解记录
以前虽然看过一次AQS的源码实现,但在过一段时间后与同学交流时,发觉自己理解并不够深,印像太浅。需要做一个记录整理,帮助自己消化。 AQS中Node的设计: 几个点:1. Node实现作者: "CLH" (Craig, Landin, and * Hagersten) ,有名的CLH queue2. 是一个FIFO的链表的实现,对于队列的控制经常要做double...2011-03-18 14:21:06 · 104 阅读 · 0 评论 -
hessian序列化源码分析
背景 最近在处理一个hessian的反序列化问题时,因为服务端使用了pojo bean中多了一个enum属性,导致客户端在反序列化时疯狂的在打印日志。警告说找不到对应的enum class,因为项目中本身是设置了log4j的根输出为一个文件。 比较奇怪的是,hessian对应的日志输出全都打印到了控制台(虽然我们对console进行了重定向输出),导致对应的文件达到几百...2011-03-09 20:49:13 · 462 阅读 · 0 评论 -
(HttpClient超时机制)timeout调度算法探讨
继上一篇文章: HttpClient超时机制(安全问题处理:访问超大文件控制) 提到了一个需要管理所有request请求的timeout,原先文章的一种处理方式是起一个异步线程的方式,通过jdk的unsafe的await机制控制timeout。 存在的问题:1. 创建新线程的开销不小。2. 大量线程的调度和切换,引起不必要的context switch 和同事...2011-03-08 22:33:01 · 382 阅读 · 0 评论 -
zookeeper学习记录三(session,watcher,persit机制)
背景继续前面的zookeeper学习的专题,这次主要是结合项目中遇到的一些问题,进一步学习了下zookeeper的一些内部机制。 针对以下几个问题:1. zk是否可以保证watcher事件不丢失?2. zk的EPHEMERAL节点的自动过期时间? 3. zk的如何保证节点数据不丢失? 如果你已经非常清楚这以上的几个问题,看官们可以不用往下看了。 persit机制...2011-12-05 19:02:53 · 232 阅读 · 0 评论 -
zookeeper学习&使用系列文章
近段时间,因项目需要接触了下zookeeper,通过阅读源码以及项目中的使用总结,慢慢的积累了zookeeper的一系列的学习总结。希望对大家使用zookeeper有所帮助,同时如有描述欠佳的地方尽情拍砖。zookeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名...2011-12-05 19:33:06 · 119 阅读 · 0 评论 -
ThreadPoolExecutor几点使用建议
背景前段时间一个项目中因为涉及大量的线程开发,把jdk cocurrent的代码重新再过了一遍。这篇文章中主要是记录一下学习ThreadPoolExecutor过程中容易被人忽略的点,Doug Lea的整个类设计还是非常nice的 正文先看一副图,描述了ThreadPoolExecutor的工作机制: 整个ThreadPoolExecutor的任务处理...2011-12-06 11:47:39 · 294 阅读 · 0 评论 -
canal DevGuide
背景 先前开源了一个开源项目: 【阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费】 本文主要是介绍一下如何给canal贡献代码,介绍其设计思路和扩展方式 设计 说明:server代表一个canal运行实例,对应于一个jvminstance对应于一个数据队列 (1个server对应1..n个instance)instan...2013-04-01 23:33:18 · 169 阅读 · 0 评论 -
Canal AdminGuide
背景 先前开源了一个开源项目: 【阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费】 本文主要是介绍一下如何部署&使用 环境要求1. 操作系统 a. 纯java开发,windows/linux均可支持 b. jdk建议使用1.6.25以上的版本,稳定可靠,目前阿里巴巴使用基本为此版本. 2. ...原创 2013-03-19 19:43:52 · 732 阅读 · 0 评论 -
阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费
背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。ps. 目前内部使用的同步,已经支持mysql5.x和oracle部分...2013-02-06 00:36:23 · 1482 阅读 · 0 评论 -
Canal ClientExample
Canal介绍 基于mysql数据库binlog的增量订阅&消费 ClientExample依赖配置:(目前暂未正式发布到mvn仓库,所以需要各位下载canal源码后手工执行下mvn clean install -Dmaven.test.skip)<dependency> <groupId>com.alibaba.otte...原创 2013-02-06 00:29:09 · 529 阅读 · 0 评论 -
Canal QuickStart
Canal介绍 基于mysql数据库binlog的增量订阅&消费 QuickStart几点说明:(mysql初始化)a. canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能,并且配置binlog模式为row. [mysqld]log-bin=mysql-bin #添加这一行就okbin...原创 2013-02-06 00:28:47 · 167 阅读 · 0 评论 -
Canal BinlogChange(mariadb5/10)
背景先前开源了一个开源项目: 【阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费】 本文主要是介绍一下canal支持mariadb协议上的变化. 协议变化mariadb5.5mariadb5.5主要是基于mysql5.5的原型,类型定义基本没啥变化,大体上都保持兼容主要的变化:1. QueryLogEvent增加了status变量....原创 2014-01-20 17:25:27 · 461 阅读 · 0 评论 -
阿里巴巴开源项目: 阿里巴巴去Oracle数据迁移同步工具
背景 08年左右,阿里巴巴开始尝试MySQL的相关研究,并开发了基于MySQL分库分表技术的相关产品,Cobar/TDDL(目前为阿里云DRDS产品),解决了单机Oracle无法满足的扩展性问题,当时也掀起一股去IOE项目的浪潮,愚公这项目因此而诞生,其要解决的目标就是帮助用户完成从Oracle数据迁移到MySQL上,完成去IOE的第一步. 项目介绍名称: yugon...原创 2016-03-05 18:29:59 · 676 阅读 · 0 评论 -
zookeeper OOM问题排查
背景最近折腾的数据库同步项目中,大量使用了zookeeper(版本3.3.3),可以说是强依赖,但是最近频频出现zookeeper内存使用率达到100%,而且是GC不掉,直接导致整个系统挂起,伤不起阿 分析因为大部分的情况都是无法GC回收,所以很大程度上怀疑出现memory leak。设置了jvm参数,收集了一下OOM导致jvm crash之后的日志文件进行分析 -XX...2012-12-05 21:33:49 · 1179 阅读 · 0 评论 -
阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)
项目背景 阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,同时为了提升用户体验,整个机房的架构为双A,两边均可写,由此诞生了otter这样一个产品。 otter第一版本可追溯到04~05年,此次外部开源的版本为第4版,开发时间从2011年7月份一直持续到现在,目前阿里巴巴B2B内部的本地/异地机房的同步需求...2013-08-22 16:48:06 · 753 阅读 · 0 评论 -
异步并行加载使用说明(asyncload)
背景 最近资讯asyncload使用的同学越来越多,会有些一些经常性的问题,这里我做一下整理和answer,同时介绍一下asyncload的UserGuide 和一些限制等。 关于asyncload,又名异步并行加载 ,可参见我之前的文章: (业务层)异步并行加载技术分析和设计UserGuide篇几个基本概念:线程池 (定义异步处理的线程池模型,包括线程数,队列大小等)...2012-04-28 16:43:29 · 954 阅读 · 0 评论 -
zookeeper watcher使用注意点
背景 项目中使用了zookeeper进行的类似工作流引擎的工作流转,将一次工作请求拆分了4个节点(S/E/T/L)。S阶段做完后,通过zk的watcher触发下一个E节点进行处理,S和E可能为不同的jvm上,所以需要走一个分布式的消息进行通知。思路基于zookeeper做持久化watcher,项目中直接使用zookeeper官方api,大致的工作模型: private sync...2012-09-26 17:27:04 · 442 阅读 · 0 评论 -
apache oro使用注意细节(并发问题)
背景 距离上一篇文章已经有4个多月了,这4个多月一直在忙着做一个数据库同步产品的代码研发和测试,现在基本运行稳定。 本文主要介绍一下,当时使用apache oro包进行正则过滤时,使用时出现的一个并发问题,排查了好几天才找到原因。希望大家使用时引以为戒,望周知。 过程简单的描述下,我使用apache oro的场景: 进行数据库同步时,我们会根据定义的表名进行匹配,从binlog的...2012-09-21 11:43:49 · 272 阅读 · 0 评论 -
BeanMapping发布1.0.2版本
背景 BeanMapping是什么? 请查看我之前的一篇文章: 我也造了个轮子:BeanMapping(属性拷贝) 版本变更内容 convetor包名重构,拼写错误 ScriptExecutor接口重构,加上ScriptContext操作 FiledSetExecutor去除对args的强制匹配依赖 mapping支持name定义 mapping支持嵌套...2012-04-06 16:10:41 · 195 阅读 · 0 评论 -
mysql number类型引号问题
背景 这几天在做数据自动化同步测试过程,发现一个诡异的现象。一批100条语句的更新过程中,同步到目标库去执行,总会有几条记录出现更新失败。原因1. 查看了同步过程中的执行日志,也米有啥特别明显的问题,单就是update affect = 0 。2. 问题的查找方式也是比较简单,针对底层执行的update语句,挨个字段确认,到底是哪一个字段影响了记录的定位。 最后发现是一个Decim...2012-03-28 17:33:55 · 768 阅读 · 0 评论 -
推荐几款工具
工具1:jvminspect类加载跟踪 taobao仁兄写的一个,jvminspect(jvm类加载分析跟踪器),你还在为jboss log4j类冲突所苦恼吗,那就试试这一个东东把。 使用:增加jvm参数: JAVA_OPTIONS=$JAVA_OPTIONS -javaagent:/home/ljh/soft/jvminspect/jvminspect.jar=outp...2011-03-08 16:52:22 · 253 阅读 · 0 评论 -
使用jetty做为server提供多线程文件下载
背景 最近在做的一个项目,两个java进程之间会涉及一个大数据量的传递过程,基本都是图片文件,(做了压缩后还是会比较大,最大的有超过600MB)。其次这两个java进程是在跨机房,比如中国和美国机房,网络待框也就几百kB。 这就是本文的项目背景分析1. 600MB的文件,都是A进程运行时根据需要生成的(下载需要的图片文件)。所以无法预先处理,而且公司总图片文件都是以TB...2011-10-11 15:35:36 · 173 阅读 · 0 评论 -
spring autoproxy问题(aop:config使用注意)
背景公司在做监控迁移过程中,使用了aop:config进行配置。 配置例子:<aop:config><aop:advisor advice-ref="rpc-interceptor" pointcut-ref="rpc-pointcut"/></aop:config>定义了一些advisor列表,但在实际过程中却遇到一些莫名奇妙的问题,就...2011-05-30 11:06:00 · 157 阅读 · 0 评论 -
jdk添加源码(rt.jar,tools.jar,sa-jdi.jar)
背景以前debug jdk源码的时候,一直苦于没有源码,无法更加深入的了解一些机制。 这几天在看文章的时候,看到了两篇文章,让我眼前一亮阿 文章链接:http://www.iteye.com/topic/869992http://hllvm.group.iteye.com/group/topic/24553首先下载jdk 源码,我选的是sun jdk source:...2011-05-24 22:06:46 · 463 阅读 · 0 评论 -
jvm fastdebug
背景 RednaxelaFX 写道 agapple 写道还有一个问题,就是在验证一些逃逸优化时,有些jvm参数用不了,比如-XX:printInlining,-XX:printAssembly,jdk用的是1.6.11和jdk1.6.18 -XX:+PrintInlining在product build的Sun JDK上可以是可以用,但什么也显示不出来。要在debug buil...2011-05-24 13:48:16 · 201 阅读 · 0 评论 -
jmx的简单学习
背景前段时间在看btrace源码和jdk一些源码的时候,经常会看到一些jmx的相关内容。以前对jmx基本是一片空白区,花了点时间学习记录下。 过程jmx总体架构图: 说明: 1. Agent : javax.management.MBeanServer实现了Agent的功能,以标准的方式给出了管理系统访问 JMX 框架的接口2. SubAgent: j...2011-05-23 15:47:07 · 130 阅读 · 0 评论 -
Object obj = new Object()引出的线程安全思考
背景上次在部门周会上抛出了一段代码: Class SimpleCache { private Map cache = new HashMap() ; public Object get(String key) { return cache.get(key); } public void reload(){ Map te...2011-05-18 23:12:53 · 572 阅读 · 0 评论 -
cookie中不能包含的特殊字符
昨天有客户投诉,说其购买的关键字: 钻石珠宝,diy 不能正常看到对应的广告位,查了下网站对应的广告投放记录是正常的。 最后确认是,searchweb在记录对应的用户最近搜索关键字cookie时,因为特殊字符违反了cookie的规范,导致最近搜索记录里没有用户上一次搜索钻石珠宝,diy的记录。 对应javaapi中cookie规范描述: ...原创 2010-09-27 12:49:51 · 1921 阅读 · 0 评论