zoukankan      html  css  js  c++  java
  • 开发中遇到问题

    今天在生产中遇到了并发导致数据null的问题:

    代码:

     public static String getAddressName(String type, String code) {
          /*String strReturn = "";
             ExeSQL exeSql = new ExeSQL();
             String sql = "select placeName from ldaddress where placeType='" + type
                     + "' and placeCode='" + code + "'";
             strReturn = exeSql.getOneValue(sql);
             return strReturn;*/
    //     缓存减少查询次数
          if(addressName == null || !addressName.containsKey( type + "_" + code )){
           addressName = new HashMap<String, String>();
           String sql = "select placeType,placeCode,placeName from ldaddress";
           ExeSQL exesql = new ExeSQL();
           SSRS ssrs = exesql.execSQL(sql);
           String key = null;
           String value = null;
           for (int i = 1; i <= ssrs.getMaxRow(); i++) {
        key = ssrs.GetText(i, 1) + "_" + ssrs.GetText(i, 2);
        value = ssrs.GetText(i, 3);
        addressName.put(key, value);
       }
          }
          return addressName.get( type + "_" + code );
    //  end
        }

    问题解决:

    public static String getAddressName(String type, String code) {
      /*
       * String strReturn = ""; ExeSQL exeSql = new ExeSQL(); String sql =
       * "select placeName from ldaddress where placeType='" + type +
       * "' and placeCode='" + code + "'"; strReturn =
       * exeSql.getOneValue(sql); return strReturn;
       */
      // start  缓存减少查询次数
      synchronized (addressName) {
       if (!addressName.containsKey(type + "_" + code)) {
        String sql = "select placeType,placeCode,placeName from ldaddress";
        ExeSQL exesql = new ExeSQL();
        SSRS ssrs = exesql.execSQL(sql);
        String key = null;
        String value = null;
        for (int i = 1; i <= ssrs.getMaxRow(); i++) {
         key = ssrs.GetText(i, 1) + "_" + ssrs.GetText(i, 2);
         value = ssrs.GetText(i, 3);
         addressName.put(key, value);
        }
       }
      }
      return addressName.get(type + "_" + code);
      // end
     }

  • 相关阅读:
    先不说 console,其实你连 console.log 都不会
    2019 年终总结 & 2020 年度计划
    将毫秒格式化为天、小时、分钟、秒
    山村老事
    快速更改对象中的字段名
    基于 ECharts 封装甘特图并实现自动滚屏
    JS 将数值取整为10的倍数
    Flutter 徐徐图之(一)—— 从搭建开发环境到 Hello World
    Vue-Cli 3.x 创建的项目中对 import 引入的 CSS 样式启用 autoprefixer
    word——插入目录
  • 原文地址:https://www.cnblogs.com/gtaxmjld/p/5238467.html
Copyright © 2011-2022 走看看