docs: private void loadModifiedAdapterConfigs() {
          Map<String, ConfigItem> remoteConfigStatus = new HashMap<>();
          String sql = "select id, category, name, modified_time from canal_adapter_config";
          try (Connection conn = dataSource.getConnection();
                  Statement stmt = conn.createStatement();
                  ResultSet rs = stmt.executeQuery(sql)) {
              while (rs.next()) {
                  ConfigItem configItem = new ConfigItem();
                  configItem.setId(rs.getLong("id"));
                  configItem.setCategory(rs.getString("category"));
                  configItem.setName(rs.getString("name"));
                  configItem.setModifiedTime(rs.getTimestamp("modified_time").getTime());
                  remoteConfigStatus.put(configItem.getCategory() + "/" + configItem.getName(), configItem);
              }
          } catch (Exception e) {
              logger.error(e.getMessage(), e);
          }
  
          if (!remoteConfigStatus.isEmpty()) {
              List<Long> changedIds = new ArrayList<>();
  
              for (ConfigItem remoteConfigStat : remoteConfigStatus.values()) {
                  ConfigItem currentConfig = remoteAdapterConfigs
                      .get(remoteConfigStat.getCategory() + "/" + remoteConfigStat.getName());
                  if (currentConfig == null) {
                      // 新增
                      changedIds.add(remoteConfigStat.getId());
                  } else {
                      // 修改
                      if (currentConfig.getModifiedTime() != remoteConfigStat.getModifiedTime()) {
                          changedIds.add(remoteConfigStat.getId());
                      }
                  }
              }
              if (!changedIds.isEmpty()) {
                  String contentsSql = "select id, category, name, content, modified_time from canal_adapter_config  where id in ("
                                       + Joiner.on(",").join(changedIds) + ")";
                  try (Connection conn = dataSource.getConnection();
                          Statement stmt = conn.createStatement();
                          ResultSet rs = stmt.executeQuery(contentsSql)) {
                      while (rs.next()) {
                          ConfigItem configItemNew = new ConfigItem();
                          configItemNew.setId(rs.getLong("id"));
                          configItemNew.setCategory(rs.getString("category"));
                          configItemNew.setName(rs.getString("name"));
                          configItemNew.setContent(rs.getString("content"));
                          configItemNew.setModifiedTime(rs.getTimestamp("modified_time").getTime());
  
                          remoteAdapterConfigs.put(configItemNew.getCategory() + "/" + configItemNew.getName(),
                              configItemNew);
                          remoteAdapterMonitor.onModify(configItemNew);
                      }
  
                  } catch (Exception e) {
                      logger.error(e.getMessage(), e);
                  }
              }
          }
  
          for (ConfigItem configItem : remoteAdapterConfigs.values()) {
              if (!remoteConfigStatus.containsKey(configItem.getCategory() + "/" + configItem.getName())) {
                  // 删除
                  remoteAdapterConfigs.remove(configItem.getCategory() + "/" + configItem.getName());
                  remoteAdapterMonitor.onDelete(configItem.getCategory() + "/" + configItem.getName());
              }
          }
      }