1. 阿里代码规范

Untitled

BLOCKER

// 错误
if (projectId != null && projectId != item.getProjectId()) {
    continue;
}

// 正确
if (projectId != null && !projectId.equals(item.getProjectId())) {
    continue;
}

在我们平台上,这段代码执行没有问题,是因为我们的projectId比较小

public static void main(String[] args) {
    Long a = 127L;
    Long b = 127L;
    Long c = new Long(127);
    Long d = new Long(127);
    Long e = Long.valueOf(127);
    Long f = Long.valueOf(127);
    System.out.println(a == b);  // true
    System.out.println(c == d);  // false
    System.out.println(e == f);  // true
}
// 错误
gatewayInfo = this.nettyConfig.GATEWAY_INFO.get(sn);

// 正确
gatewayInfo = NettyConfig.GATEWAY_INFO.get(sn);

CRITICAL

// 错误
if (method.equals("REFRESH")) {
    ...
}

// 正确
if ("REFRESH".equals(method)) {
    ...
}

MAJOR

// 错误
public static byte[] compressLzo(byte srcBytes[]) throws IOException {
    ...
}
// 错误
byte buf[] = new byte[1024];

// 正确
public static byte[] compressLzo(byte[] srcBytes) throws IOException {
    ...
}
// 正确
byte[] buf = new byte[1024];

2. 其他问题

2.1 缓存穿透

缓存穿透指的是大量的请求越过缓存,直接命中数据库,导致数据库压力骤增,可能达到I/O瓶颈,出现数据库宕机。

下面举个例子,假如历史数据存储前,需要为每一条数据附加一个projectId: