Java代码(不限于此) 优化

  • POJO类推荐使用封装类如Integer而不使用基本类型int,使用基本类型不能判空,而且查询为null时会报错。

  • 使用fastjson提取json数组时,要对此作null判断,不然容易引起NPE异常。

     JSONArray relNodes = data.getJSONArray("rel"); // 可以查看fastjson源码,可能返回null
     // 先做null判断
     if (relNodes == null) {
        //...
         return ...
     }
    // 然后再循环提取
    for (Object node: relNodes) {
      
    }
    
  • Controller层接口返回尽量不要使用JSONObject(耗时更多),而改用Java VO类。

  • 不能信任所有Http接口(不管是自己的还是外部的),能异步处理就异步,不能异步也要做异常处理。不要因为http调用拖垮整个程序。

        // 改成异步,不能信任何http请求
         pool.submit(new Runnable() {
             @Override
             public void run() {
                 try {
                     HttpClient.postForm(Constant.NOTIFY_URL, data.toJSONString());
                 } catch (Exception e) {
                     log.error("{}", e);
                 }
             }
         });
    
  • SQL语句Where条件字段频繁使用,可以为其增加表索引,这样极大的提高了程序性能。(可以使用System.currentTimeMillis测试一下耗时)

  • 使用 entrySet 遍历 Map 类集合 KV,而不是 keySet 方式进行遍历(具体可参考阿里巴巴JAVA开发手册)。

      // 如果是jdk8或以上,直接使用Map.forEach方法。
      if (!paramsMap.isEmpty()) {
        paramsMap.forEach((k, v)->{
            String value = parseVarService.parseJsonPath(v.toString());
            urlParameters.add(new BasicNameValuePair(k, value));
        });
    }
    

你可能感兴趣的:(Java代码(不限于此) 优化)