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
     }

  • 相关阅读:
    TRECT的使用
    杂记
    Delphi中停靠技术的实现
    高级停靠(Dock)技术的实现
    高级停靠(Dock)技术的实现
    vue组件内的元素转移到指定位置
    mintui loadmore组件使用+代码优化
    vue项目进行nuxt改造
    blob与arraybuffer
    vue项目首屏加载过久处理笔记
  • 原文地址:https://www.cnblogs.com/gtaxmjld/p/5238467.html
Copyright © 2011-2022 走看看