protected <T> void updateCache(final ConfigGroupEnum group, final List<T> data, final String namespaceId) {
        String json = GsonUtils.getInstance().toJson(data);
        String newMd5 = DigestUtils.md5Hex(json);
        ConfigDataCache oldConfig = CACHE.get(HttpLongPollingDataChangedListener.buildCacheKey(namespaceId, group.name()));
        if (Objects.nonNull(oldConfig) && StringUtils.isNotBlank(oldConfig.getMd5())) {
            if (oldConfig.getMd5().equals(newMd5)) {
                LOG.info("config cache[{}] is not changed, skip update.", group);
                return;
            }
        }
        String configDataCacheKey = HttpLongPollingDataChangedListener.buildCacheKey(namespaceId, group.name());
        ConfigDataCache newVal = new ConfigDataCache(configDataCacheKey, json, newMd5, System.currentTimeMillis(), namespaceId);
        ConfigDataCache oldVal = CACHE.put(newVal.getGroup(), newVal);
        LOG.info("update config cache[{}], old: {}, updated: {}", group, oldVal, newVal);
    }
if md5 is not the same as the original, then update local cache.

@param group ConfigGroupEnum
@param <T>   the type of class
@param data  the new config data
shenyu-admin/src/main/java/org/apache/shenyu/admin/listener/AbstractDataChangedListener.java