于吉吉的技术博客

建造高性能门户网

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  65 随笔 :: 6 文章 :: 149 评论 :: 0 Trackbacks

java

posted @ 2013-07-05 17:18 陈于喆 阅读(4504) | 评论 (6)  编辑

posted @ 2011-08-21 15:55 陈于喆 阅读(6399) | 评论 (0)  编辑

posted @ 2011-08-15 16:51 陈于喆 阅读(6310) | 评论 (13)  编辑

     摘要: objectid是一种轻量型的,不同的机器都能用全局唯一的同种方法轻量的生成它,而不是采用传统的自增的主键策略,因为在多台服务器上同步自动增加主键既费力又费时,不得不佩服,mongodb从开始设计就被定义为分布式数据库。
下面深入一点来翻翻这个Objectid的底细,在mongodb集合中的每个document中都必须有一个"_id"建,这个键的值可以是任何类型的,在默认的情况下是个Objectid对象。
当我们让一个collection中插入一条不带_id的记录,系统会自动地生成一个_id的key  阅读全文
posted @ 2011-06-12 18:30 陈于喆 阅读(15241) | 评论 (8)  编辑

     摘要: 有朋友去一家大型的互联网公司参加了java程序员的笔试,抄下了一些笔试题,可能有的抄的并不全,试了解答一下,有些还真的答不出来

1.cookie和session的作用以及他们的应用场合
2.怎样让jvm加载一个Class的同时执行一段代码
3.post和get区别
4.事务的属性有哪些?写出spring或jdbc管理事务的例子
5.实现一个高并发、高性能的hashmap。写出伪代码
6.解析一段xml,拼接成一个url。  阅读全文
posted @ 2011-04-21 17:23 陈于喆 阅读(3626) | 评论 (9)  编辑

     摘要: 由于历史原因,几个项目都选用hessian作为web service的实现方式,hessian的确是非常轻量级,基于http协议进行传输,通过自定义的串行化机制将请求信息进行序列化,以二进制传输节省了不少的开销,速度跟socket差不多.客户端和服务器发起和接收请求都是通过spring提供的hessian api进行请求和接收,但是在服务端中并没有记录和控制远端ip地址和主机的信息,所以需要对源码进行一些重写

对org.springframework.remoting.caucho.HessianServiceExporter进行重写

/**
* 重写HessianServiceExporter.handleRequest(),拦截获取远端调用信息
* @author chenyz
*
*/
public class HouseHessianServiceExporter extends HessianServiceExporter {

private static S  阅读全文
posted @ 2010-12-21 16:05 陈于喆 阅读(3017) | 评论 (0)  编辑

     摘要: 目前几套系统中主要使用的hessian进行远程调用webservice服务的有hessian的 HessianProxyFactory(com.caucho.hessian.client.HessianProxyFactory)和 spring的 HessianProxyFactoryBean(org.springframework.remoting.caucho.HessianProxyFactoryBean).

1.HessianProxyFactory
查看HessianProxyFactory源码后发现,hessian在创建http请求连接webservice服务并没有对连接超时进行相关的参数设置,所以当网络出现问题就会造成整个hessian处理的阻塞,进而阻塞整个线程后续的处理
以下是HessianProxyFactory对连接处理的源码

protected URLConnection openConnection(URL url)
throws IOException
{
URL  阅读全文
posted @ 2010-12-16 14:46 陈于喆 阅读(11997) | 评论 (11)  编辑

     摘要: 下面一个伴随了好几个工程的时间操作的工具类,提供了一些常用的时间操作和计算的方法,每段时间都会进行一次整理,希望能去冗余和得到好的扩展

package com.***.product.util;

import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.regex.Pattern;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


public class DateUtil {
protected static Log logger = LogFa  阅读全文
posted @ 2010-12-09 18:37 陈于喆 阅读(443) | 评论 (0)  编辑

     摘要: 大名鼎鼎的分布式缓存系统memcached,在开源社区中可谓是无人不知无人不晓,memcached支持分布式的横向扩展,但memcached的服务端却是单实例,并无"分布式"的功能,所谓的分布式只是客户端在存储的主键做分布的存储;还有memcached组件缓存对象,如果组件无进行序列化必定无法正确取得数据;如何使用memcached的java组件来监控memcached的运行状态;以上等等的问题是我在日常的工作中碰到并解决的,拿出来跟大家做个分享^_^

对象的序列化
首先memcached是独立的服务器组件,独立于应用系统,从客户端保存和读取对象到memcached是必须通过网络传输,因为网络传输都是二进制的数据,所以所有的对象都必须经过序列化,否则无法存储到memcahced的服务器端.
正如我们以往在集群中应用的序列化一样,memcached的序列化的性能也是往往让大家头疼,如果我们对我们的domain类进行对象的序列化,第一次序列化时间会比较长,但后续会优化,也就是说序列化最大的消耗不是对象的序列化,而是类的序列化,如果存储的只是一个String  阅读全文
posted @ 2010-12-08 15:00 陈于喆 阅读(5604) | 评论 (4)  编辑

     摘要: 上个月参加的网易游戏部QA组的黑盒测试培训,觉得挺有意思的,不过最让我感兴趣的是,能和真正专业的测试人员做了一点讨论,发现站在开发人员的角度看待测试和站在测试人员看待测试时完全不同的一种东西.

程序员和测试人员的心理差别
程序员和测试人员的心理差别可以简单的归纳为以下几种

成功 / 不成功
什么才是一次成功的测试,大多数的开发人员对自己的程序测试完没发现错误,就会说"这是一个成功的测试",如果发现某些新的错误则称"这是不成功的测试";而测试人员刚好相反,当然这也是因为双方的职责不同而引起的

维护 / 破坏,施虐
开发人员对测试往往是一种维护性的测试,目标在于证明自己开发的程序没有错误,可能跟我们开发人员经常做建设性工作,更倾向创造事物,而不是将事物破坏有关;而测试人员在测试更多是一种破坏的过程,甚至是一种施虐,摆出一种把鸡蛋打碎搅黄来挑骨头的姿态  阅读全文
posted @ 2010-12-03 16:00 陈于喆 阅读(1717) | 评论 (3)  编辑

     摘要: 把我上次的工程所用到的jar包做了一个整理,也加了一些简单的描述,下面图是上次工程用到的所有jar吧



JAR包与描述对照表 注:jar包尾后的版本号不代表当前最高版本
activation-1.1.jar Sun的JavaBeans Activation Framework(JAF),JavaMail要运行必须依赖于它的支持
asm-3.0.jar
asm-commons-2.2.3.jar
asm-util-2.2.3.jar
asm是一个轻量级字节码处理和分析框架
alveole-struts2.jar
alveole-tools.jar

aspectjtools-1.5.3.jar
Aspect提供的注释类库和相应的解析类库
atomikos-util.jar
数据库提供分布式事务支持
  阅读全文
posted @ 2010-11-03 14:59 陈于喆 阅读(3252) | 评论 (1)  编辑

     摘要: 先感谢同事renial的<解析xml时遇到的一些问题>技术分享,下面是一些记录和实际操作

1.使用Dom4j解析大文件时内存溢出的问题

问题是这样的,当我用dom4j去解析一个几十M的xml时,就出现out of memory.当然了,这也是根据你的机器性能而定的,我们都知道dom4j在各种DOM解析器中应该算是性能最好的,连大名鼎鼎的Hibernate都是用dom4j来解析XML配置文件的
问题出在于使用dom4j的SAXReader是会把整个XML文件一次性读入,如果XML文件过大就会抛出out of memory,但即使是使用SAXParser批量读入解析,但它也是一次解析完,假设XML文件有几万条数据,那么解析后就必须在内存放入这几万条对象.

常用的Dom4j文件解析方式:

InputStream is = new FileInputStream(filePath);
SAXReader reader = new SAXReader(); //将整个XML构建为一个Document 阅读全文
posted @ 2010-09-28 17:10 陈于喆 阅读(15000) | 评论 (2)  编辑