一个死循环
同事在页面上写了个死循环,跟了半天才发现。具体代码如下:
for(Iterator it = XXXX.iterator(); it.hasNext();){ if(XXX= XXX){ XX1 =true; } // OTHER CODE. }
具体问题出现在这里, it.hasNext()。 如果使用 it.next(),就ok了。
同事在页面上写了个死循环,跟了半天才发现。具体代码如下:
for(Iterator it = XXXX.iterator(); it.hasNext();){ if(XXX= XXX){ XX1 =true; } // OTHER CODE. }
具体问题出现在这里, it.hasNext()。 如果使用 it.next(),就ok了。
最近项目中涉及以下情景,针对用户设置一对规则,用户申请的时候按照设定的规则进行验证。
表结构如下:
规则表:
| 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 = ">"; 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个表达式是否相等
项目周五发布,周一的时候,老大说我们的项目踩到地雷了。
跟踪了一下,发现是这样的:
方法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
最近新项目开始,难得老大重视。我也当上半个主程了。系统设计啊,业务熟悉啊,这次的项目就我最熟悉业务。所以也理所应当承担起大部分的业务逻辑。写了很多代码,挺高兴的。虽然很累。
说到代码,第一次写这么多,还是看到了很多问题,关于代码的质量,如何抽取逻辑,提取方法。虽然以前看了很多东西,毕竟这次是理论结合实践了吧,项目已经提交测试了。每天还乐此不疲的进行代码的重构和修改。希望忙过这阵子,可以好好看看ruby和erlang。
在spring配置文件中配置了bean,具体如下:
实际的类名是:DefaultXCardUserAO.
JBOSS启动的时候,没有报错。
但是再请求这个方法的时候,xcardUserAO就没有注入进去。找了半天,直接粘贴类名也是可以找到的。
最后还是因为大小写问题。
将DefaultXCardUserAO改为DefaultXcardUserAO就可以了。
cashplk的心路历程 is Digg proof thanks to caching by WP Super Cache
Recent Comments