自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

HouseMD, 比BTrace更实用的Java运行诊断工具

 HouseMD 是一款非常敏捷的Java进程运行时的诊断调式命令行工具, 它具备安全易用高效的特点, 让它非常适合在要求严格的线上(生产)环境中使用.特性交互式命令行支持Tab自动补全或候选列表提示支持命令历史查看加载类支持跟踪文件来源路径支持跟踪类加载器层次跟踪方法支持类短名字(SimpleName)和方法名(可选)限...

2012-06-17 10:11:20 301

回收DirectByteBuffer

为避免GC的负效应, 使用DirectByteBuffer管理原始(Raw)数据会为高负载的系统带来性能的提升. DirectByteBuffer默认是由GC来回收的, 这通常能够满足需求, 若要想自己控制回收的时机, 可以使用这段代码. import java.lang.reflect.Method;import java.nio.ByteBuffer;import jav...

2011-03-03 10:33:53 232

支持配额的共享线程池

受@放翁_文初的<逻辑划分线程池> 一文的启发, 用了几个小时动手实现了一个简陋支持配额的共享线程池. 基本思路与放翁相同, 区别在于引入了两种线程分配策略:悲观策略简单的共享一个线程池, 最容易出现的问题就是不同类型任务(或事件)在随机争抢线程资源时, 可能出现”饿死”现象(即抢不到线程).因此, 悲观策略的宗旨是绝对的保证每种任务都会被分配到预留的(reserve)...

2011-03-03 10:15:14 224

应用DirectBuffer提升系统性能

Java 2 SE 6 doc :Given a direct byte buffer, the Java virtual machine will make a best effort to perform native I/O operations directly upon it. That is, it will attempt to avoid copying the b...

2010-08-19 13:01:45 273

netty应用中接收缓存覆写的陷阱

version : netty-3.2.1.finallocation : org.jboss.netty.channel.socket.nio.NioWorker.read(SelectionKey) 代码片段如下:  ByteBuffer bb = recvBufferPool.acquire(predictedRecvBufSize); ...

2010-08-17 13:31:55 342

基于AOP的日志调试

断点 vs 日志断点是我们日常开发最为常见和高效的调试手段, 相比较输入日志它给予更多的状态信息和灵活的观察角度, 但断点调试是有前提和局限的.  # 需要一个界面友好, 功能强大的IDE,  # 比较适合于在单机的开发环境中进行. 企业应用开发中, 我们常常会遇到无法断点调试的窘境, 例如:  # 这个异常仅在生产环境出现, 开发环境里无法重现;  # 存在外部系统依赖, 开发环境无法模...

2010-04-05 20:23:36 235

原创 感Qcon

今天是Qcon北京站的第二天, 由于大会日程排得很紧凑, 我只得放弃了今晚有些不靠谱的沙龙来整理这两天来脑中的一些零碎. 忧 我习惯先说的不好的,因为我总喜欢把好吃的留到最后.也许是我对此行期望过高,导致了我的失望,就牢骚几句吧: 1 大师不愧是大师, 只是他们的英式发音让我这个看惯美剧的人,无法保持1个小时注意力.尽管有同步翻译,毕竟不是内行...

2009-04-08 22:20:48 105

GWT应用经验小结

 1. pendingSrc问题描述:Image的setUrl方法在第二次使用的时候,会出现“pendingSrc”的问题,导致图片无法显示。原因分析:可能是GWT的bug,具体原因不详。解决办法:通过DOM.setElementProperty()来设置src的值。2.内存泄露问题描述:刷新页面容易导致复杂的ui出现内容泄露。原因分析:编码实现中很容易是的对象间出现循环引用...

2009-03-16 18:29:59 181

原创 重新认识算法

一直以来都没有正正经经的读过一本关于算法的书,只因为当初老师说过,“算法前人都写好了,你就拿来用好了”,以至于我对算法的理解还一直停留在“排序”的层次,现在想来惭愧不已。不错,经典的算法几乎所有流行的编程语言都有现成的实现,供我等应用开发人员直接使用。而且,若要想在盛行DRY的氛围下,尝试从头再来一次的话,所要承受舆论的压力不可小视。但算法就仅仅只是指“快速排序”、“八皇后”吗?不是,算法...

2009-02-09 23:23:56 85

解读《使用Jencks实现Hibernate与Jackrabbit的分布式事务》

前言 本文是针对《使用Jencks实现Hibernate与Jackrabbit的分布式事务》(以下简称《JHJ》)一文的理论分析。若只关心实现,请忽略此文点击这里跳转到实现的参考示例。 本文先简单介绍JTA和JCA的一些概念作为理论基础,之后再分析Jencks如何实现Hibernate与Jackrabbit的分布式事务的。有关JTAJTA全称为Java Transaction API,...

2009-01-15 18:15:15 178

使用Jencks实现Hibernate与Jackrabbit的分布式事务

前言这是一篇用Spring和Jencks实现的轻量级解决方案,不依赖于应用服务器。本文是方案实现的记录,不涉及理论探讨,有关理论资源请参见本文的《解读》和参考资料。有关多数据库的分布式事务的实践,请参见Spring JTA应用。 思路Jencks提供事务管理器(Transaction Manager)和连接管理器(Connection...

2009-01-13 10:40:15 162

原创 从Erlang看高并发可容错系统设计原则

《面对软件错误构建可靠的分布系统》 写道Erlang 的世界观可以归纳为如下的一些观念: z 一切皆进程。 z 进程强隔离。 z 进程的生成和销毁都是轻量的操作。 z 消息传递是进程交互的唯一方式。 z 每个进程有其独有的名字。 z 你若知道进程的名字,你就可以给它发消息。 z 进程之间不共享资源。 z 错误处理非本地化。 z 进程要么好好跑,要么死翘翘 上文引之Erl...

2008-12-25 18:30:15 299

你思考世界的方式是什么?

 短短几年工作里,我接触到了不少关于“面向XX”和“XX驱动”的思想,每当第一次听到它们时都会令我有种莫名的敬畏。 昨天在初探Erlang的时候,它的创始人Joe Armstrong的一句话让我印象深刻: Joe Armstrong 写道[1]At the highest level of abstraction an architecture is “a way of thinkin...

2008-12-25 15:47:05 192

Lucene索引文件解析之“项”

接上文Lucene索引文件解析之“域”。 关于项(Term) .tis文件里记录的是域经过分析器(analyser)分析之后项的字典。还是来看文件内容: .tis 写道FF FF FF FE  00 00 00 00 00 00 0007 00 00 00 80 ?..........€00 00 00 10 00 05 63 6F 64 6572 00 01 00 00...

2008-12-23 17:25:04 110

Mockito入门

简介 InfoQ-使用Mockito 1.5监视普通对象 写道Mockito是一个针对Java的mocking框架。它与EasyMock和jMock很相似,但是通过在执行后校验什么已经被调用,它消除了对期望行为(expectations)的需要。其它的mocking库需要你在执行前记录期望行为(expectations),而这导致了丑陋的初始化代码。  更多信息请参考如下位置, 原文链...

2008-12-17 18:35:05 115

Lucene索引文件解析之“域”

引言 目前最新的Lucene的版本是2.4.0,但关于索引文件格式(Index File Format)的说明并未完全及时更新,所以后文是基于版本2.1.0展开的解析。解析内容并未涉及全面,更多详细准确的说明还请参见[1]。 在看下文之前,若熟悉Lucene的索引的基本概念和过程就会对后文的理解有很大帮助。 创建一个简单的索引 这里有一段代码,它将创建一个简单的索引段(Segmen...

2008-12-12 00:42:28 243

GWT中RequestBuilder使用贴士

GET请求 String url = // 动态生成RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url)); //若url中包含无效字符(像空格等),需要进行编码builder.setCallback(new RequestCallback() { public void on...

2008-12-09 13:35:41 853

Failed to resolve artifact

使用GWT-Maven Archetype (maven-googlewebtoolkit2-archetype)创建项目的时候,可能出现如下错误提示: mvn 写道[INFO] Failed to resolve artifact. GroupId: com.totsp.gwt ArtifactId: maven-googlewebtoolkit2-archetype Version: ...

2008-11-30 03:58:57 569

GWT与Spring集成实现

  如题, 实现二者的集成的大体思路是: 由spring的DispatcherServlet拦截来之GWT client的请求,并委派给spring的bean.假设, 由服务接口RPCService, 实现类RPCServiceImpl. RPCService.javapublic interface RPCService extends RemoteService {...

2008-11-30 03:51:37 586

信息是什么形状

信息是表状的 一个事物有一组特征(属性),具有相同特征的若干事物被放在了一起,共享特征的说明。 信息是树状的 事物之间是有联系的,于是它们被线连了起来。 信息是分子结构状的 当事物之间的关系复杂到无法用二维平面去关联,此时只有三维空间能从多个角度来呈现如此复杂的关系网。 信息是什么形状的这样一个问题,能够帮助我们如何找到存储信息和呈现信息的最佳方式。...

2008-10-15 01:37:36 246

用例编写推荐守则

  没有最佳的用例模板,格式和章节是为用例的内容服务的,它们仅仅帮助理解和分析,一旦你发现它们是一种累赘,或者可有可无,应该毫不犹豫的丢掉他们; 不谈界面,切忌在用例中描述了界面的细节,那往往容易掩盖需求的根源动机; 行文简明,不要以为越多的文章描述能够帮助用例的理解,这往往会提供更多误导信息; 系统是个黑盒子,不要描述系统的内部行为,这是设计应该干的事情; 突出参与者(Actor)的意图,把握...

2008-10-08 07:52:06 104

任务板用起来了

好久就知道任务是个项目管理的好东西,可惜一直不知道怎么用.几个月前在InfoQ上看了硝烟中的Scrum和XP,其中对任务板的使用做了比较细致的讲解,当时就想用上来着,可惜时机一直不好.总算是在几周的需求分析结束之后,我在例会上鉴定的提出了使用任务板的建立,尽管遭遇了Boss的质疑,但我那对燃烧着激情的眼睛最后"征服"了他. 下图就是一个任务板的示意图.任务板有两个区: 事务跟踪区(这仅是个人命名...

2008-09-25 00:53:17 336

速度计算有偏差

团队有4个开发人员,3个测试人员,试行了4天的小迭代,完成的工作量是7个单位,我在下一个9天的迭代中加入了上次迭代未完成的19个单位工作量.令人意外的是,第一天就完成了其中的10个,是估算有误?不是,这次完成的10个单位所涉的两个任务都是在上次迭代中就开始的,这就意味着里面有"水份",或者叫"延迟效应".也许在上次迭代这10个单位中已经完成70%,换句话讲,上次迭代的速度应该是14/4,这次迭代的...

2008-09-18 01:24:44 134

教练Marc Lammers语录

本文摘之InfoQ:世界顶尖运动队教练的成功秘诀 荷兰女子曲棍球队,在世界杯的历史上,这个团队是最成功的,曾获六次冠军.主教练Marc Lammers的成功秘诀是什么呢?   有效沟通 Marc Lammers提到: 在执教生涯的早期,我花了很多时间和精力,来让大家明白我的所作所为。所以,我会在冗长的演讲中,向团队阐述我那聪明透顶的执教理念。为了确保大家都能收到传递的信息,我会问:‘大家都明白了吗...

2008-09-09 02:06:48 115

关于Spring嵌套事务

不久前,为了避免事务的嵌套,刻意去修改以前的设计,导致各部分之间经常出现职责的混淆和重复,颇为头痛.今天在一篇名为《解惑 spring 嵌套事务》文章中找到了答案. 原因出在没有能够深刻理解事务声明中不同事务传播属性配置的的含义.原来想象是这样的(见下面示例代码),serviceA和ServiceB的所有方法都被配置声明事务,当serviceA的方法调用ServiceB的方法,我便"顺理成章"的认...

2008-09-03 05:34:02 252

Jackrabbit 索引配置说明

从1.4版本之后,jackrabbit开始支持节点的属性索引配置.换句话说,我们可以通过配置决定哪种类型节点的哪些属性应该建立索引.这样一来,我们就能对索引内容进行优化,使得搜索更为高效. 索引配置文件也是一个XML,默认名字为indexing_configuration.xml.默认情况下,jackrabbit不会有索引配置的存在,因此要想使用它就必须在repository.xml和worksp...

2008-09-02 00:35:23 405

对象的创建和销毁

考虑用静态工厂方法代替构造器 静态工厂方法的名字使得调用者更容易明白构造的意图, 静态工厂方法可以控制实例的创建数量,以提升性能. 代码示例:public static Boolean valueOf(boolean b) {return b ? Boolean.TRUE : Boolean.FALSE;}当构造参数很多的时候考虑使用建造者(模式)建造者使得构造的代码...

2008-08-31 05:23:48 103

Ubuntu 7.10 中文输入法问题解决

首先确保系统的语言支持选择的是Chinese。问题现象: firefox地址栏和搜索栏,使用快捷键无法激活输入法 文本编辑器中通过快捷键同样无法激活输入法,但右键单击后可选择inputmethod -> scim inputmethod,默认是X inputmethod。解决方法: 终端命令 $sudo gedit /etc/X11/xinit/xi...

2007-12-04 11:34:01 129

发现XFire1.2.6两个bug

这两个bug是在调试ALE接口中define方法时发现,BUG1步骤: WS调用define方法,定义一个ECSpec 现象: 抛出异常信息,说某类的属性没有“写方法”(setter),见如下异常堆栈信息: [handler.DefaultFaultHandler]-[INFO] Fault occurred!org.codehaus.xfire.faul...

2007-11-19 20:22:38 231

闲聊软件开发过程

软件开发过程是连续的太多开发人员受瀑布模型的影响太深了,习惯性的将开发过程做严格的划分。这样的划分多半是自欺欺人,软件开发过程主要是靠人的思维创造,而思维过程是连续的。切断一个连续的思维过程,这可能吗?或多或少有完整项目经验的程序员,在接到新的项目需求时,很自然就会在脑海里浮现代码实现的轮廓,剩下的活就应该是动手编码了,用个成语来形容它就是“顺 理成章”。软件开发过程也应该顺理成章,不要再...

2007-11-15 13:01:26 503

结构模式应用总结

从正式接触设计模式到现在有一年了,一直以来都只是在一些技术文章中零零散散认知到一些设计模式,不知道是不是自己懒的缘故,就是没有好好系统的学习一下。这次借着做系统设计的机会,好好在此结合设计模式的理论总结一下。我现在做的项目中有个子系统是专门负责设备管理的。既然是管理设备,自然就无外乎添加、删除、启动、停止四种功能。这里的设备有很多种,如感应器(用来采集数据信息),又或者是输出设备(打印机)。下...

2007-10-28 20:50:16 86

Java GUI事件响应处理编程

根据观察者模式(或监听器模式),让我明白的认识到事件响应处理是发生在观察者与被观察者之间的游戏。这样的游戏在GUI的开发中最为常见,也应用最多。如果GUI仅仅只是堆叠图形组件的话,那么GUI开发是我认为最轻松的活(用可视化的工具,一切都是那么轻松惬意)。但事实总是与理想有很大差距的,就好像我和一美女正享受着马尔代夫怡人的海风时,此时她野兽般的男友出现在你面前,接下来一切变得复杂而无法收场?在享...

2007-10-09 13:56:34 233

RMI的意外用法--shutdow服务进程

很早,就知道像Tomcat、JBoss这样的服务器系统可以通过startup.bat启动,而之后可以用shutdown.bat关闭。 项目初始,我也希望像这样实现,startup容易,可shutdown难。在网上搜了好久都没有关于这样的实现方法的线索。 倒是有个这样的实现: java 代码  Runtime.getRuntime().addShutdownHook(new T...

2007-09-24 22:50:28 131

到底要在哪里处理异常

大多数java教程的书籍中,对异常的处理都是及时的,也就是哪里抛了,就在哪里catch.看别人的代码渐渐多了,就有些模糊的意识到不是所有的异常都是及时处理的,而是通过throws抛给调用者处理.问题出来,每次遇到异常的时候,我就在catch与throws之间挣扎好久,那么到底要在哪里处理异常?似乎书上并没有答案.我曾就这个问题请教过一个前辈,他的解答是"在合适的地方处理". 汗,我被这...

2007-09-09 18:21:32 82

StringBuilder与StringBuffer

通常对字符串的拼接操作,我们会选用最为简单的方式,如:java 代码  String cde = "cde";      System.out.println("abc" + cde);   这种方式适用于拼接操作很少,牵扯的数据很少.一旦拼接操作存在于循环语句中,涉及数据也比较大时,这种方式的效率就会很低了.因为其拼接操作背...

2007-09-08 22:34:53 70

原创 容易看到了往往不是真实的

“数据没有收到啊!”“不会呀,这边发了!”“我这边没有显示,你看。”“......”这两天来来回回就是这么几句话,问题处在哪?问题出在眼睛看到的,它是不是真的?数据收没收到是基于数据接收到在控制台的回显(打印输出),但很容易忽略的是有些数据是显示不出来的,如换行、回车、制表符等;另外,还有就是C/C++对字符串的处理其实是字符数组加‘\0’,因此字符串的函数都是'\0‘做为结束标识。...

2007-09-08 22:30:00 125

场景面试选拔人才

前段时间又面试了一些应聘的人,明显的感觉到人才难求啊!此难求非彼难求,也就是人才难求是两方面的,一方面要人才自身显露,二方面则要面试官有双慧眼。 面试中通常非常关注一个人的综合素质,在这方面的考察有很多有潜在意义的问题。面对这样的问题,通常有两种应对者:第一种,不太理解问题要问什么,回答要么肤浅要么干脆跑题,这种人以没有工作经验的人占大多数;第二种,非常清楚问题的意义,相当明确...

2007-06-15 05:56:18 122

把开发过程游戏一把

最近才看很久之前唐博发给我的一篇文章《Bug管理的经验和实践》,由于在大学讲课的关系,我准备翻看一下作为上课授课题材。没有想到,文章(准确的说是访谈录)中微软研发过程中bug管理给我启发颇大。但直接将文章中的内容转述给学生们,似乎不会有好效果,因为学生是没有研发背景的,对于我转述的内容的价值不会有太多意识。不知道自己的脑袋是不是被闪电击过,闪念间想到用游戏的形式呈现这一个过程,下面就来分享一下...

2007-06-15 05:26:30 102

svn错误信息

错误信息 Malformed file    svn: E:\svn\repository\conf\svnserve.conf:12: Option expected   原因:配置文件12行开头有空格    错误信息 Attempted to lock an already-locked dir    svn: Working copy ...

2007-02-12 21:44:12 103

win2003下搭建bugzilla

软件环境: win2003 sp1 apache2.24 mysql5.0.18 activePerl-5.8.8.819-mswin32 bugzilla2.20.4安装教程详见www.bugzilla.org/docs/win32install.html需要注意的是: mysql4.1或更高版本,需要在mysql客户端输入set pas...

2007-02-12 21:41:11 91

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除