分类目录归档:Java

List.contains方法

if (null != this.engagedNodeIDs && this.engagedNodeIDs.size() > 0) {
for (i = 0; i < this.engagedNodeIDs.size(); i++) { if (this.engagedNodeIDs.get(i).equals(node.getUNID())) { nodeState = "0"; } } } -------------------------------------------------------------------------------- //上面7行等价于以下注释的三行 if(null!=engagedNodeIDs&&engagedNodeIDs.contains(node.getUNID())){ nodeState = "0"; }

典型错误例举 1

/**
* 这个类提供通用的一些方法
*/

public class CommonUntil {
private static final Log LOG = LogFactory.getLog(UserName.class);

// 返回组织的默认办理人列表,从最底层组织开始找,没有的话再找父亲组织,类推
String defaultUserID = “”;
public String getOrgUnitDefaultUserID(String orgUnitID, String userID) {
OrgUnitQuery ouq = new OrgUnitQuery();
OrgUnit orgUnit = null;
try {
orgUnit = ouq.getOrgUnit(orgUnitID, SystemIdentify.LW_OA);
OrgUnitSystem orgUnitSystem = null;
try {
orgUnitSystem = OrgUnitHelper.getOrgUnitSystem(orgUnit.getOrgUnitSystemList());
Assert.assertNotNull(orgUnitSystem);
if(defaultUserID==null||defaultUserID.equals(“”)){
if (orgUnitSystem.getDefaultIds() != null) {
List getDefaultIds = orgUnitSystem.getDefaultIds();
// 开始判断当前用户是否是部门的办理人,只有是部门的办理人才返回部门,否则返回为空
if (getDefaultIds != null) {
defaultUserID = StringBase.listToString(getDefaultIds,” “);
} else {
defaultUserID = “”;
}
} else {
// 如果有父亲,接着找
if (orgUnitSystem.getSuperiorOrgid() != null&& !orgUnitSystem.getSuperiorOrgid().equals(“”)) {
this.getOrgUnitDefaultUserID(orgUnitSystem.getSuperiorOrgid(),userID);
}
}
}
} catch (ResourceException e) {
LOG.error(e.getMessage(), e);
}
} catch (NoResourceException nre) {
System.out.println(“获取资源错误:” + nre);
}
return defaultUserID;
}
}

1.类名CommonUntil,这是什么意思?谁能看到这个单词,就能大概知道这个类是做什么的?
2.类的注释没有写清楚类的职责
3.getOrgUnitDefaultUserID 方法名,个人以为 getDefaultUserIDOfOrgUnit会更合适
4.getOrgUnitDefaultUserID的userID参数是多余的
5.orgUnit,orgUnitSystem 变量的声明没有遵守变量作用域最小化原则
6.List getDefaultIds = orgUnitSystem.getDefaultIds(); 变量是名词,方法才是动词,getDefaultIds变量的命名错误
7.多余的判断
if (orgUnitSystem.getDefaultIds() != null) { ———————————-A
List getDefaultIds = orgUnitSystem.getDefaultIds();
// 开始判断当前用户是否是部门的办理人,只有是部门的办理人才返回部门,否则返回为空
if (getDefaultIds != null) { ———————————-B

A语句已经进行了判断,B语句根本不需要判断

8. 异常需要记录或者被抛出,不是打印到控制台了事

} catch (NoResourceException nre) {
System.out.println(“获取资源错误:” + nre);
}
9.getOrgUnitDefaultUserID方法的注释不但没有写清楚,至少没有按照格式编写(参数、返回值等),
而且所在的行也错误。应该紧挨getOrgUnitDefaultUserID方法上方。

java 三目运算符用法比较

说明:node.getUNID()不会空指针异常

—————————————————————————-
if (this.engagingNodeID != null && !this.engagingNodeID.equals(“”)) {
if (this.engagingNodeID.equals(node.getUNID())) {
nodeState = “1”;
}
else {
nodeState = “2”;
}
}

——————————————————————————
//使用三目运算符,上面8行等价于以下的一行
nodeState=node.getUNID().equals(this.engagingNodeID)?”1″,”2″;

解决struts组件上传附件速度很慢的问题

通过struts组件上传附件,在有些机子上传非常慢,有些机子上传非常快,还有可能出现在IE中上传很慢,在其他浏览器中上传快的问题,主要是IE浏览器的问题,在网上查了一下资料,有这么一段:“IE6有个上传慢的问题,它一次传输一块数据(通常是8K),这块数据没有被ACK回应,则不发送下8K。然而ACK经常会发生延迟回应(通常是延迟200ms),导致IE速度很慢,极端情况下,IE的上传速度是firefox的十分之一不到。IE7已经改了这个问题了。”
解决方法:
在Tomcat的server.xml中加一个参数(maxHttpHeaderSize=”8192″)就可以解决了。

<Connector
port=”80″ maxHttpHeaderSize=”8192″ maxThreads=”150″ minSpareThreads=”25″

maxHttpHeaderSize=”8192″ ,Request和response的 HTTP header的最大长度,以字节计算。如果不设置,该属性为4096(4k)