走自己的路

路漫漫其修远兮,吾将上下而求索

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  50 随笔 :: 4 文章 :: 118 评论 :: 0 Trackbacks

2008年5月5日 #

     摘要: 基于MongoDB开发的统计服务对业务数据进行迁移,分析。  阅读全文
posted @ 2011-04-12 13:33 叱咤红人 阅读(2109) | 评论 (0)编辑 收藏

     摘要: 当系统有海量数据需要级联删除时,我们需要小心,如果同步删除用户体验会很差,他会等相当长的时间,直到系统超时,另外还会给系统突发地增加很大的负载,  阅读全文
posted @ 2011-02-24 09:30 叱咤红人 阅读(2476) | 评论 (0)编辑 收藏

     摘要: Mysql在数据量大的情况下,会遇到水平分表的情况。将实际开发中遇到的分表解决方案总结了一下。  阅读全文
posted @ 2011-02-22 10:06 叱咤红人 阅读(7582) | 评论 (4)编辑 收藏

     摘要: 存放几百万条数据的Redis List的性能描述,使用小结,并附上一个巧妙的使用例子。  阅读全文
posted @ 2010-12-30 18:06 叱咤红人 阅读(4898) | 评论 (1)编辑 收藏

posted @ 2010-11-05 16:14 叱咤红人 阅读(2205) | 评论 (1)编辑 收藏

     摘要: Activemq-pool的PooledConnectionFactory解密,使用时需要注意。  阅读全文
posted @ 2010-11-02 08:55 叱咤红人 阅读(11568) | 评论 (2)编辑 收藏

     摘要: 网上大多数文章都是用keytool生成自签名根证书,将根证书配置在tomcat的server.xml中。我不太喜欢用keytool,原因:
1.我们可能换provider,不同的provider会有不同的算法实现,算法的安全性和性能也可能不同,通过代码生成比较方便一些,不同算法的实现要放在classpath上。
2.通过代码生成还有一个好处,会对整个流程理解的比较清楚,实现的原理到底是怎样的。  阅读全文
posted @ 2010-08-14 01:06 叱咤红人 阅读(2733) | 评论 (1)编辑 收藏

     摘要: Lucene如何和数据库集成,如何从数据库中实时地将数据爬出,在Lucene中建索引。本文没有使用AOP和ORM FRM的Listener方式,而是采用的主动轮询的方式从DB将确实存在在DB中的指定数据爬出,建全文索引。可以让用户实时地搜出结果。需要考虑的问题很多,我只是把我能想到的给出来。如果大家有什么好的想法和建议,欢迎提出来。  阅读全文
posted @ 2010-05-07 07:12 叱咤红人 阅读(2757) | 评论 (1)编辑 收藏

     摘要: A项目一开始code的时候,没有加任何test。现在需要重构了,我们根据use case设计了一些automation的high level 的接近integration test的functional tests. 但跑下来发现code coverage不高。于是老大让我看看想些方法提高一下code coverage。总结一下。  阅读全文
posted @ 2010-03-10 17:23 叱咤红人 阅读(1822) | 评论 (2)编辑 收藏

     摘要: javamail已经设计的很好了,精巧强悍,为什么还需要封装它呢?  阅读全文
posted @ 2010-02-04 07:25 叱咤红人 阅读(1998) | 评论 (0)编辑 收藏

     摘要: 最近在javamail的基础上,写了一个Email channel,把相关知识总结一下。  阅读全文
posted @ 2010-01-16 12:33 叱咤红人 阅读(1859) | 评论 (0)编辑 收藏

     摘要: OC4J1033升级Oracle JDBC driver到11.1.0.7.0版本  阅读全文
posted @ 2010-01-15 13:17 叱咤红人 阅读(2007) | 评论 (0)编辑 收藏

posted @ 2010-01-06 14:40 叱咤红人 阅读(431) | 评论 (0)编辑 收藏

posted @ 2009-12-25 15:09 叱咤红人 阅读(2843) | 评论 (2)编辑 收藏

     摘要: 在用户修改了领域对象的值后,我们有时需要记录下用户的改动。比如对一些关键业务对象的改动有时往往需要发邮件通知客户。有时用户可能想查阅所有历史的改动,甚至有可能会改回原先的值。领域逻辑关系往往比较复杂,这时我们会使用到ORM Framework。本文以toplink为例,讲述如何利用toplink编写一个完成此功能的简易Framework,我们暂且把它称为ActionMemed。
  阅读全文
posted @ 2009-11-29 13:37 叱咤红人 阅读(1434) | 评论 (2)编辑 收藏

     摘要: 在一个月黑风高的晚上,产品环境上所有application都OOM了,令人心惊胆寒,打开log文件,上下打谅着他,他就是传说中的“java.lang.OutOfMemoryError: unable to create new native thread‘,到底谁创造出了这个魔鬼,原来一个application在疯狂创建线程池,不过用TDA(Thread dump analyzer)看到也就只创建了400×2(2JVMs)个线程,但这并不算多,应该还可以更多。奇怪!让我们来剥下“java.lang.OutOfMemoryError: unable to create new native thread‘的外衣,看看谁是幕后黑手。。。。。  阅读全文
posted @ 2009-09-25 10:55 叱咤红人 阅读(34910) | 评论 (10)编辑 收藏

     摘要: Java Jingle  阅读全文
posted @ 2009-09-11 07:25 叱咤红人 阅读(424) | 评论 (0)编辑 收藏

     摘要: 最近又把压在箱底的几本单元测试相关的书翻了翻,既然翻了,顺便拿了个笔头记了记,好记性不如烂笔头呀。内容不算太多,平时写Unit test时要follow,要深入理解,不然就不能学以致用。以后相关的内容,就往这个坑里填了。  阅读全文
posted @ 2009-09-04 16:01 叱咤红人 阅读(11506) | 评论 (1)编辑 收藏

     摘要: java端RESTful web services的几种实现方式  阅读全文
posted @ 2009-08-13 15:27 叱咤红人 阅读(4430) | 评论 (0)编辑 收藏

     摘要: 是用ServletContextListenser还是Servlet初始化资源  阅读全文
posted @ 2009-08-05 12:52 叱咤红人 阅读(1692) | 评论 (3)编辑 收藏

     摘要: Collect and collate. Introduction to Rest and SOAP, compare SOAP with Rest, how to implement Rest in java.  阅读全文
posted @ 2009-07-31 08:40 叱咤红人 阅读(416) | 评论 (0)编辑 收藏

     摘要: 悲观离线锁可以控制多事务的并发,特别是当多事务是在多个jvm上执行时,我们需要利用外部锁,如DB锁。本文利用Oracle PLSQL UL锁,在JTA分布式事务中实现锁管理器,并封装成隐含锁提供给应用项目组使用。  阅读全文
posted @ 2009-07-03 19:24 叱咤红人 阅读(1501) | 评论 (0)编辑 收藏

     摘要: 仅以此文歌颂我们永远清纯和青春的90后同事---柳阿福  阅读全文
posted @ 2009-05-27 17:49 叱咤红人 阅读(495) | 评论 (7)编辑 收藏

     摘要: 2009年javaOne大会内容  阅读全文
posted @ 2009-05-20 09:32 叱咤红人 阅读(789) | 评论 (0)编辑 收藏

     摘要: 前两天application team使用framework的rmi服务出了一些问题,总结一下,顺便俺也占个坑,以后RMI使用中需要注意的地方都可以加到此帖中。  阅读全文
posted @ 2009-05-05 15:29 叱咤红人 阅读(1544) | 评论 (2)编辑 收藏

posted @ 2009-05-04 10:43 叱咤红人 阅读(266) | 评论 (0)编辑 收藏

posted @ 2009-04-22 07:25 叱咤红人 阅读(304) | 评论 (1)编辑 收藏

     摘要: 我们经常需要进行远程业务方法的调用,并对返回的结果进行处理。我们规范化了调用流程,可扩展支持多种协议:HTTP, JMS, RMI, FTP等,实现了序列化和反序列化,负载均衡,异步调用等模块。默认给出HTTP实现。  阅读全文
posted @ 2009-04-04 20:57 叱咤红人 阅读(3354) | 评论 (3)编辑 收藏

     摘要: java实现的同步循环链表,支持顺序迭代访问,添加,删除操作。  阅读全文
posted @ 2009-04-01 12:42 叱咤红人 阅读(528) | 评论 (0)编辑 收藏

     摘要: XStream和JAXB这两东东本质上是有差别的,JAXB称为OX binding工具,XStream应该算序列化工具,但OX binding工具也会marshall和unmarshall,则包含了序列化部分。序列化工具不一定需要提供binding的功能。既然都玩序列化,那就简单地比较一下它们两在序列化方面的强弱吧。  阅读全文
posted @ 2009-03-04 17:15 叱咤红人 阅读(10965) | 评论 (9)编辑 收藏

     摘要: 由于业务需要将quartz的jobstore从JobStoreTX更新为JobStoreCMT,接着启动servlet时发现被锁住了。由于使用JobStoreCMT我们使用了managed datasource,按照quartz文档的要求也配置了non managed datasource,但是发现程序启动的时候就被锁住了,锁在Quartz_Locks的表锁上了。最后通过查阅源代码,跟踪代码解决了这个问题。问题解决过程记录了下来。  阅读全文
posted @ 2009-02-06 17:13 叱咤红人 阅读(4216) | 评论 (2)编辑 收藏

     摘要: 对json(json lib, jettison)和xstream转换后的数据长度,格式和花费的时间做了比较,描述了使用json和xstream的各自的优势,以及如何如何选择。  阅读全文
posted @ 2009-01-20 17:43 叱咤红人 阅读(3914) | 评论 (5)编辑 收藏

     摘要: 要看的书真不少,主攻方向:模式,SOA,分布式算法,多核计算,安全,动态语言和领域语言。  阅读全文
posted @ 2008-12-30 10:11 叱咤红人 阅读(505) | 评论 (6)编辑 收藏

posted @ 2008-12-16 07:42 叱咤红人 阅读(335) | 评论 (0)编辑 收藏

     摘要: 在Oracle Application Server环境下OC4J Instance下的每个process的jvm的rmi端口是动态分配的,如果能解决这个动态的问题,就可以使用ORMI作为jndi的provider url。但是需要注意的是如果是在server启动时初始化toplink session,需要等待JmsServer线程执行完毕。  阅读全文
posted @ 2008-12-09 18:00 叱咤红人 阅读(1264) | 评论 (0)编辑 收藏

     摘要: 在分布式应用中,单个业务应用的toplink运行在多个jvm上,同时开启了会话缓存,而这些在多个jvm上会话缓存中的domain对象就需要进行同步,这样可以及时拿到最新的domain对象而不需要每次都查询database,这大大减少了乐观锁冲突。在Oracle Application Server上Ormi端口是动态分配的,而opmn request端口氏固定的,所以我们用opmn作为jndi lookup的url。经过测试OC4J in memory jms作为同步消息的传输和发现方式效率是最高的,所以采用OC4J in memory jms作为消息同步的传输方式。具体实现方法参见本文。  阅读全文
posted @ 2008-12-04 07:00 叱咤红人 阅读(1214) | 评论 (0)编辑 收藏

     摘要: 晚上要下班的时候,application team那里使用Tibco EMS做消息集成服务时候出了bug,错误是:java.sql.SQLException: 当全局事务处理处于活动状态时, 无法调用方法 'commit',应该是在全局事务中使用了本地事务并提交了。帮忙看了一下,它的oc4j, toplink, spring的使用上都存在着一些问题,并把要注意的地方总结了一下。包括oc4j,toplink,spring三块。  阅读全文
posted @ 2008-11-14 21:48 叱咤红人 阅读(2198) | 评论 (11)编辑 收藏

     摘要: 通过Context lookup出来的是DataSource却能完成XADataSource的功能,虽然用了动态代理,但是为什么不用继承呢?  阅读全文
posted @ 2008-10-31 21:33 叱咤红人 阅读(641) | 评论 (0)编辑 收藏

     摘要: 原有的应用没有开放RMI服务,由于将schedule模块移到了standalone的JVM上,需要在远程通过RPC Call回来,于是在已有的系统中增加了RMI服务,关键是如何方便而有效地加入这个RMI服务,和原有的系统解耦,还要方便以后的升级。这篇随便记录了在已有系统中加入RMI服务模块的一些心得。  阅读全文
posted @ 2008-10-26 18:46 叱咤红人 阅读(1505) | 评论 (1)编辑 收藏

     摘要: 最近在完成一个小小的framework项目,由于项目中不使用spring,guice,自己实现了一个简易的依赖注入框架。主要是项目是基于接口设计的,所以一些类的实现需要在配置文件里设定,实现类的实例属性也要是可以扩展的,并且提供属性值的逻辑校验,所以就有了这么一个东东。  阅读全文
posted @ 2008-09-25 19:16 叱咤红人 阅读(2598) | 评论 (4)编辑 收藏

     摘要: 在java端调用存储过程的时候需要存储过程串行的执行,如果使用synchronized lock在应用服务器突然down掉的情况下会出现问题,因为session并没有立即断掉,后台的存储过程还在继续执行,这样如果应用服务器立即重启,再调用该存储过程或者其他需要一起串行化处理的存储过程就会违反同步执行的原则,所以我们必须把锁放在oracle db端,利用oracle锁机制来完成存储过程的同步,文章总结了一下在java端如何使用oracle这个用户锁机制。  阅读全文
posted @ 2008-08-25 14:12 叱咤红人 阅读(1785) | 评论 (0)编辑 收藏

     摘要: 最近要写message在传送过程中状态改变的流程,并根据不同的状态作不同的处理,同时记录当前的状态。于是,看了一下状态模式,发现还是不太好用,比如状态对象创建的太多了,稍加修改了一下,大概是就是文章中的这个模样了:把它分为了“状态持有者”, “状态对象“, ”状态管理者”, “状态机”等。  阅读全文
posted @ 2008-08-22 20:55 叱咤红人 阅读(1217) | 评论 (0)编辑 收藏

     摘要: 主要是要构建一个符合自己需求的的连接池(对象池)。这个连接池中所存放的对象的行为是自定义的并满足项目实际应用需求的。但是这些对象的频繁创建需要很大的代价,比如一些Socket连接。connection-pool所有部分都是基于接口设计,便于实现的动态加入和变更。也用到了很多开源的framework如commons-pool,commons-beanutils,xmlbeans,commons-net。  阅读全文
posted @ 2008-08-10 16:52 叱咤红人 阅读(2713) | 评论 (1)编辑 收藏

     摘要: 《Head First Design Pattern》一书在讲单例模式时举了一个double check的例子,觉得它的代码写的有问题,修改了一下它的代码,不知道正确与否,大家讨论。讨论的结果两种写法在旧的JMM上都是错的,在新的JMM上都是正确的,文中添加了一些个人的理解。  阅读全文
posted @ 2008-07-23 19:51 叱咤红人 阅读(2699) | 评论 (22)编辑 收藏

     摘要: 总结了一下java中使用到Connection Pool的一些情况,并想了一下如何实现特定种类的Connection Pool。  阅读全文
posted @ 2008-07-14 16:30 叱咤红人 阅读(2772) | 评论 (0)编辑 收藏

     摘要: 总结总结,展望展望  阅读全文
posted @ 2008-07-12 08:56 叱咤红人 阅读(342) | 评论 (1)编辑 收藏

     摘要: 因为log对象常常不需要序列化,我们如何在可序列化类中定义log对象?  阅读全文
posted @ 2008-07-04 11:38 叱咤红人 阅读(1237) | 评论 (2)编辑 收藏

     摘要: 介绍了在spring的基础上实现一个简易的Exception处理框架。主要是采取受管的方式:xml配置文件和annotation。Exception在框架统一的地方进行处理,使得应用程序开发人员不必为处理exception而困扰,也不必为写大量的try,catch块而困扰。  阅读全文
posted @ 2008-06-30 18:27 叱咤红人 阅读(7735) | 评论 (8)编辑 收藏

     摘要: 上次用Coherence实现缓存数据同步的transport manager之后,对它进行了压力测试并和EMS JMS和 OracleAS JMS(内存)进行了性能对比。文中描述了测试的过程,并共享了代码和测试结果。  阅读全文
posted @ 2008-06-13 14:46 叱咤红人 阅读(2381) | 评论 (1)编辑 收藏

     摘要: 用ASM直接分析字节码来加载Class级别的Annotation。文中给出了一个例子,例子的主程序会加载用某个Annotation标注的class,而那些没有被该Annotation标注的class就不会被加载。  阅读全文
posted @ 2008-06-11 17:38 叱咤红人 阅读(2920) | 评论 (0)编辑 收藏

     摘要: Toplink提供了很强大的Cache功能,利用cache可以大大减少直接和DB通信的次数,特别是读事务比较多的情况下。在分布式应用中,多个toplink session cache之间需要即时的同步数据,保证各个cache中的数据都是最新的数据,避免频繁地出现stale数据或乐观锁异常。Toplink默认支持的两种同步机制:JMS和RMI,有时为了考虑一些特殊的需求,必须性能,我们可能需要自定义一个Toplink的Transport Manager,本文给出了一个用Oracle Coherence实现Toplink Tranport Manager的具体例子,注意只是用了Coherence的通信并没有把Coherence整合成Toplink的Session Cache。  阅读全文
posted @ 2008-05-24 17:37 叱咤红人 阅读(2244) | 评论 (0)编辑 收藏

     摘要: 本文主要介绍了如何用XPath编写自定义的PMD Rule。静态分析代码是否符合相应的规则,及早检查出代码中的不足之出。  阅读全文
posted @ 2008-05-05 18:46 叱咤红人| 编辑 收藏