From b397edee2be2dfcc3f28eeac50298b4de26b1afa Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期五, 13 十二月 2024 16:53:45 +0800 Subject: [PATCH] 取水口日取水量表中,出现一些大数,明显不正确,发析系统日志,发现一些阀控器会上报一些累计流量为0的数据,且无规律,推测是其不能从水表读取到累计流量时会上报0值。如果间歇上报0值,间歇上报一些非0值,非0值减去0值,就会出现大数,一天中出现几次那么会大数进行累加,数值将更大。为此变更算法,规避这种情况,但也会丢失一些流量值。 --- pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java | 30 +++++++++++++++--------------- 1 files changed, 15 insertions(+), 15 deletions(-) diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java index 57d7ec0..ba5b121 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java @@ -6,47 +6,47 @@ public class PrefixedDataAvailablePool { - protected static HashMap<String, List<PrefixedDataAvailable>> pool = new HashMap<String, List<PrefixedDataAvailable>>() ; + protected static HashMap<String, List<PrefixedDataAvailable>> pool = new HashMap<>() ; /** * 鐢熸垚瀵硅薄 * 绾跨▼闈炲畨鍏ㄧ殑锛屾墍浠ョ敤鍒皊ynchronized - * @param className - * @return + * @param clazz 棰勫鐞嗙被 + * @return 棰勫鐞嗙被瀵硅薄 */ public static synchronized PrefixedDataAvailable getInstance(Class<?> clazz)throws Exception { if(pool == null){ - pool = new HashMap<String, List<PrefixedDataAvailable>>() ; + pool = new HashMap<>() ; } String className = clazz.getName() ; PrefixedDataAvailable obj = null ; List<PrefixedDataAvailable> list = pool.get(className) ; if(list == null){ - list = new ArrayList<PrefixedDataAvailable>() ; - }else{ + list = new ArrayList<>() ; + pool.put(className, list) ; + }else if(list.size() > 0){ obj = list.get(0) ; + list.remove(0) ; } - if(obj != null){ - list.remove(0) ; - return obj ; - }else{ + if(obj == null){ try { - obj = (PrefixedDataAvailable)clazz.newInstance(); + obj = (PrefixedDataAvailable)clazz.getDeclaredConstructor().newInstance() ; + //obj = (PrefixedDataAvailable)clazz.newInstance(); } catch (Exception e) { throw new Exception( "鐢�" + className + "鐢熸垚瀹炰緥澶辫触锛�"); } - return obj ; } + return obj ; } /** * 鎶婂璞℃斁鍥炴睜涓� - * @param className - * @return + * @param clazz 棰勫鐞嗙被 + * @param obj 棰勫鐞嗙被瀵硅薄 */ - public static void freeInstance(Class<?> clazz, PrefixedDataAvailable obj)throws Exception { + public static void freeInstance(Class<?> clazz, PrefixedDataAvailable obj) { if(pool != null){ String className = clazz.getName() ; List<PrefixedDataAvailable> list = pool.get(className) ; -- Gitblit v1.8.0