Archive

Posts Tagged ‘Java’

一个死循环

September 29th, 2009 cashplk No comments

        同事在页面上写了个死循环,跟了半天才发现。具体代码如下:

for(Iterator it = XXXX.iterator(); it.hasNext();){
        if(XXX= XXX){
                    XX1 =true;
        }
          // OTHER CODE.
}

具体问题出现在这里, it.hasNext()。 如果使用 it.next(),就ok了。

Categories: Code Snippets, Java Tags: , ,

Java中使用JS解析器(JDK 1.6)

September 28th, 2009 cashplk No comments

最近项目中涉及以下情景,针对用户设置一对规则,用户申请的时候按照设定的规则进行验证。

表结构如下:

规则表:

rule_id rule_type rule_name status
规则Id 规则类型 规则名称 状态

规则明细表:

rule_id rule_detail_id rule_name rule_Type expression rule_value
规则Id 明细规则Id 规则名称 规则key 表达式(>=,==,<=,<,>) 规则值

涉及规则值的判断和解析,找了半天,高手指点使用JS解析。代码如下(JDK1.6):

import javax.script.ScriptEngineManager;
 
ScriptEngineManager factory = new ScriptEngineManager();
 
ScriptEngine engine = factory.getEngineByName(“JavaScript”);
 
String ruleType = "1";
 
String expression = "&gt;";
 
long ruleValue = 111;
 
long v = 222;               // 需要验证的值
 
JavaScriptValue j = new JavaScriptValue(ruleType, v);
 
engine.eval(j.toSting());
 
Boolean b = (Boolean)engine.eval(ruleType + expression + ruleValue);   // 判断2个表达式是否相等

项目发布踩到地雷

September 25th, 2009 cashplk No comments

项目周五发布,周一的时候,老大说我们的项目踩到地雷了。

跟踪了一下,发现是这样的:

方法A中声明了 notifyManager,然后顺手生成了getter和setter,结果却没有使用,在方法里面自己又 new 了一个,然后代码里面判断,

if(notifyManager != null){
return null;
NotifyManager notifyManager = new NotifyManager();

// TODO other things
}

我们项目中又确实在spring的配置文件中注入了notifyManager的这个bean,结果就出问题了。

虽然不是我们的问题,不过还是可以学到东西的:
1,自己会new的方法千万不要写getter和setter,避免spring初始化注入的干扰。
2,需要代码REVIEW,避免出现这种问题。

q

瞎忙

September 4th, 2009 cashplk No comments

      最近新项目开始,难得老大重视。我也当上半个主程了。系统设计啊,业务熟悉啊,这次的项目就我最熟悉业务。所以也理所应当承担起大部分的业务逻辑。写了很多代码,挺高兴的。虽然很累。

      说到代码,第一次写这么多,还是看到了很多问题,关于代码的质量,如何抽取逻辑,提取方法。虽然以前看了很多东西,毕竟这次是理论结合实践了吧,项目已经提交测试了。每天还乐此不疲的进行代码的重构和修改。希望忙过这阵子,可以好好看看ruby和erlang。

Categories: work Tags: , , ,

Spring注入bean失败

June 3rd, 2009 cashplk No comments

在spring配置文件中配置了bean,具体如下:

实际的类名是:DefaultXCardUserAO.

JBOSS启动的时候,没有报错。

但是再请求这个方法的时候,xcardUserAO就没有注入进去。找了半天,直接粘贴类名也是可以找到的。

最后还是因为大小写问题。

将DefaultXCardUserAO改为DefaultXcardUserAO就可以了。

Categories: Java Tags: , ,

cashplk的心路历程 is Digg proof thanks to caching by WP Super Cache