leisure

JAVA - exceed,helloworld
随笔 - 50, 文章 - 0, 评论 - 11, 引用 - 0
数据加载中……

应用启动时,attempting to get SockIO from uninitialized pool!

在spring配置文件中,没有将实例名称对应上,导致mc client无法从一个未初始化的池里获取数据。

    <bean id="sockIOPool" class="com.danga.MemCached.SockIOPool"
        factory-method
="getInstance" init-method="initialize" destroy-method="shutDown"
        p:initConn
="${memcached.initConn}"
        p:minConn
="${memcached.minConn}"
        p:maxConn
="${memcached.maxConn}"
        p:maintSleep
="${memcached.maintSleep}"
        p:nagle
="${memcached.nagle}"
        p:socketTO
="${memcached.socketTO}"
        p:servers
="${memcached.servers}">
        <constructor-arg value="myName"/>
    </bean>
    
    <bean id="memCachedClient" class="com.danga.MemCached.MemCachedClient">
        <constructor-arg value="myName"/> 
        <property name="sanitizeKeys" value="false"/>
        <property name="compressEnable"   value="true"/>
        <property name="compressThreshold" value="1024"/>
    </bean>

注意<constructor-arg value="myName"/> 中的myName要保持一致。

posted @ 2012-02-17 14:44 leisure 阅读(3411) | 评论 (1)编辑 收藏

eclipse安装svn客户端

下载相应的插件版本
把解压的内容放置eclipse\dropins\svn\目录下(svn目录不存在则创建)
完成后,重启eclipse,重启完后,提示安装svn connector,选择一个安装即可,安装完后,再一次重启。
window - show view - other - svn 下即可以看到svn控制视图

posted @ 2012-01-25 10:59 leisure 阅读(295) | 评论 (0)编辑 收藏

hello,spring3

spring很早就更新了3.0版本,可是由于项目要求稳定,却一直没有使用到,最近有个新项目,打算采用spring3了。

项目整个结构如下:


 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4      xmlns:p="http://www.springframework.org/schema/p"
 5      xsi:schemaLocation="http://www.springframework.org/schema/beans
 6      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 7      
 8     <bean id="dao" class="Dao"/>
 9     
10 </beans>

1 
2 public class Dao {
3     public void find() {
4         System.out.println("dao: find()");
5     }
6 }
7 

 1 import org.springframework.context.ApplicationContext;
 2 import org.springframework.context.support.ClassPathXmlApplicationContext;
 3 
 4 public class Client {
 5 
 6     public static void main(String[] args) {
 7         ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
 8         Dao dao = context.getBean(Dao.class);
 9         dao.find();
10     }
11 }
12 

posted @ 2011-12-29 16:02 leisure 阅读(198) | 评论 (0)编辑 收藏

java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

获取泛型参数的类型
        
Class<TentityClass = (Class<T>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];

出现:
java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

使用以下工具类方法获取~
 1 package cn.pconline.prolib.util;
 2 import java.lang.reflect.ParameterizedType;  
 3 import java.lang.reflect.Type;  
 4   
 5 public class GenericsUtils {  
 6     /**   
 7      * 通过反射,获得定义Class时声明的父类的范型参数的类型.   
 8      * 如public BookManager extends GenricManager<Book>   
 9      *   
10      * @param clazz The class to introspect   
11      * @return the first generic declaration, or <code>Object.class</code> if cannot be determined   
12      */  
13     public static Class getSuperClassGenricType(Class clazz) {  
14         return getSuperClassGenricType(clazz, 0);  
15     }  
16   
17     /**   
18      * 通过反射,获得定义Class时声明的父类的范型参数的类型.   
19      * 如public BookManager extends GenricManager<Book>   
20      *   
21      * @param clazz clazz The class to introspect   
22      * @param index the Index of the generic ddeclaration,start from 0.   
23      */  
24     public static Class getSuperClassGenricType(Class clazz, int index) throws IndexOutOfBoundsException {  
25   
26         Type genType = clazz.getGenericSuperclass();  
27   
28         if (!(genType instanceof ParameterizedType)) {  
29             return Object.class;  
30         }  
31   
32         Type[] params = ((ParameterizedType) genType).getActualTypeArguments();  
33   
34         if (index >= params.length || index < 0) {  
35             return Object.class;  
36         }  
37         if (!(params[index] instanceof Class)) {  
38             return Object.class;  
39         }  
40         return (Class) params[index];  
41     }  
42 }  

        
Class<TentityClass = GenericsUtils.getSuperClassGenricType(BasicService.class0);

posted @ 2011-12-26 14:37 leisure 阅读(17838) | 评论 (4)编辑 收藏

浅淡Java代理模式之秘书MM

代理对象一般定义了一个与目标对象相似或相近的行为。代理对象负责对真实模块调用,这使得调用者与被调用者之间建立了一个隔离带。
场景示例说明:老总说话都是很精简,每次发布一个消息时,总是先将简要内容交给秘书MM,秘书MM经过一番美化后,把消息公布出来。

设老总=Boss,秘书MM=MMProxy

于是简单的代理就有
1 public class Boss {
2     public void anounce(String content) {
3         System.out.println(content);
4     }
5 }

1 public class MMProxy {
2     public void anounce(String content) {
3         System.out.print("boss: 大家请注意了!");
4         new Boss().anounce(content);
5     }
6 }

new MMProxy().anounce("我请大家吃饭。");

结果出来的是:
boss: 大家请注意了!我请大家吃饭。

通过上面发现,这种代理比较呆板,比如说,Boss口渴了,又得重新写一个代理方法,这个时候,可以使用动态代理来进行:

添加一个接口IBoss
1 public interface IBoss {
2     public void anounce(String content);
3     public void drink();
4 }

修改Boss
1 public class Boss implements IBoss {
2     public void anounce(String content) {
3         System.out.println(content);
4     }
5 
6     public void drink() {
7         System.out.println("boss: 拿起杯子,喝水");
8     }
9 }

这时秘书MM变为
 1 import java.lang.reflect.InvocationHandler;
 2 import java.lang.reflect.Method;
 3 
 4 public class MMProxy implements InvocationHandler {
 5 
 6     private Object obj;
 7 
 8     public MMProxy(Object obj) {
 9         this.obj = obj;
10     }
11 
12     public static Object newInstance(Object obj) {
13         return java.lang.reflect.Proxy.newProxyInstance(
14             obj.getClass().getClassLoader(),
15             obj.getClass().getInterfaces(),
16             new MMProxy(obj));
17     }
18     
19     @Override
20     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
21         if("drink".equals(method.getName())) {
22             System.out.println("秘书MM: 看到boss想喝水了,于是 把水倒进boss的杯子里。");
23         } else if("anounce".equals(method.getName())) {
24             System.out.print("boss: 大家请注意!");
25         }
26         method.invoke(obj, args);
27         return null;
28     }
29 }

        IBoss boss = (IBoss) MMProxy.newInstance(new Boss());
        boss.anounce(
"我请大家吃饭。");
        boss.drink();

boss: 大家请注意!我请大家吃饭。
秘书MM: 看到boss想喝水了,于是 把水倒进boss的杯子里。
boss: 拿起杯子,喝水

现在发现了吧,秘书MM真是服务周到呀。

posted @ 2011-12-09 09:54 leisure 阅读(238) | 评论 (0)编辑 收藏

[nginx]post数据莫名奇妙丢失事件

昨天快下班的时候,有位同事遇到post数据接收不到的问题

首先网络架构是:
     nginx1
       |  rewrite
     nginx2
       |  pass
     resin1

nginx1是在192.168.1.1上
nginx2跟resin1是在192.168.1.2上

首先访问nginx1,由nginx1 rewrite到nginx2,nginx2直接pass到resin1,整个过程是POST形式。至于
为什么要用两层nginx,这当然是有原因的了:-)

于是乎,快速制定了几个测试案例:
1,两种访问方式:GET,POST
   GET URL带参数,没有问题。
   POST 有问题。
   让网络同事检查,处理这个location并没有做什么特殊的POST处理。——!
2,访问nginx1时,直接pass到resin1,跳过nginx2
   问题依旧。
3,去掉nginx1,访问nginx2,直接pass到resin1
   有数据的。
4,直接访问resin1
   是有数据的。

到这里,我感到很奇怪,为啥,为啥nginx1传递不了post数据呀,而nginx2可以,问题肯定出现在nginx1的配置上!~经过一番斗争后,终于找到问题关键
nginx1中,配置了一个全的post处理
if($request_method = POST) {
   rewrite .* /post.php last;
}
最后,只能大眼望细眼,汗一滴。

posted @ 2011-11-25 12:07 leisure 阅读(5888) | 评论 (0)编辑 收藏

反射判断成员变量是否静态,并获得其静态成员的值

        Field[] fields = cls.getDeclaredFields();
        Field field 
= fields[0];
        
boolean isStatic = Modifier.isStatic(field.getModifiers());
        if(isStatic) {
            System.out.println(
field.get(null).toString());
        }

posted @ 2011-11-23 17:06 leisure 阅读(7057) | 评论 (0)编辑 收藏

npm ERR! Error: socket hang up

when i use npm to install express, it goes this message:

npm info it worked if it ends with ok
npm info using npm@1.0.106
npm info using node@v0.6.2
npm info addNamed [ 'express', '' ]
npm ERR! Error: socket hang up
npm ERR! at createHangUpError (http.js:1092:15)
npm ERR! at CleartextStream. (http.js:1175:27)
npm ERR! at CleartextStream.emit (events.js:88:20)
npm ERR! at Array.0 (tls.js:731:22)
npm ERR! at EventEmitter._tickCallback (node.js:192:40)
npm ERR! Report this entire log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! npm-@googlegroups.com
npm ERR! 
npm ERR! System Linux 3.0.0-12-generic
npm ERR! command "node" "/usr/local/bin/npm" "install" 
"express" "-d"
npm ERR! cwd /home/leisure/software/node-v0.6.2
npm ERR! node -v v0.6.2
npm ERR! npm -v 1.0.106
npm ERR! code ECONNRESET
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR! /home/leisure/software/node-v0.6.2/npm-
debug.log
npm 

it sounds the https_proxy is broken.
so try to use http registry to solve it:
npm config set registry http://registry.npmjs.org/

posted @ 2011-11-23 15:11 leisure 阅读(3285) | 评论 (1)编辑 收藏

MYSQL Error Code: 1093 You can't specify target table 'x' for update in FROM clause

当子查询作为条件,执行delete跟update操作时,会出现:
Error Code: 1093 You can't specify target table 'x' for update in FROM clause

作一个简单的示例:
CREATE TABLE tbl_a(
id 
INT,
NAME 
VARCHAR(50)
);

INSERT INTO tbl_a VALUES(1'leisure');
INSERT INTO tbl_a VALUES(2'leisure2');

SELECT * FROM tbl_a;

执行更新操作
UPDATE tbl_a 
    
SET id = (
        
SELECT id FROM tbl_a 
        
WHERE NAME = 'leisure2'
    ) 
WHERE NAME = 'leisure';

这时,如愿见到我们标题上的错误,解决方法如下(橙色字体系关键):
UPDATE tbl_a 
    
SET id = (
        
SELECT id FROM (
            
SELECT * FROM tbl_a WHERE NAME = 'leisure2'
        ) xx
    )
WHERE NAME = 'leisure';

posted @ 2011-11-22 09:58 leisure 阅读(3524) | 评论 (1)编辑 收藏

解决IE下location.href丢失refer信息

相信有很多朋友,用javascript做一些跳转时,往往发现refer信息丢失了。为了解决该问题,在IE下,模拟一下点击事件即可!

function jumpTo (url) {
    var isIE 
= !-[1,];
    if (isIE) {
        var link 
= document.createElement("a");
        link.href 
= url;
        link.style.display 
= 'none';
        document.body.appendChild(link);
        link.click();
    } 
else {
        window.location.href 
= url;
    }
}

posted @ 2011-11-17 16:54 leisure 阅读(1039) | 评论 (0)编辑 收藏

仅列出标题
共5页: 上一页 1 2 3 4 5 下一页