docs: private List<List<EventData>> split(List<EventData> datas) {
          List<List<EventData>> result = new ArrayList<List<EventData>>();
          if (datas == null || datas.size() == 0) {
              return result;
          } else {
              int[] bits = new int[datas.size()];// 初始化一个标记，用于标明对应的记录是否已分入某个batch
              for (int i = 0; i < bits.length; i++) {
                  // 跳过已经被分入batch的
                  while (i < bits.length && bits[i] == 1) {
                      i++;
                  }
  
                  if (i >= bits.length) { // 已处理完成，退出
                      break;
                  }
  
                  // 开始添加batch，最大只加入batchSize个数的对象
                  List<EventData> batch = new ArrayList<EventData>();
                  bits[i] = 1;
                  batch.add(datas.get(i));
                  for (int j = i + 1; j < bits.length && batch.size() < batchSize; j++) {
                      if (bits[j] == 0 && canBatch(datas.get(i), datas.get(j))) {
                          batch.add(datas.get(j));
                          bits[j] = 1;// 修改为已加入
                      }
                  }
                  result.add(batch);
              }
  
              return result;
          }
      }