首页 > 其他分享 >if else和for循环嵌套,break的使用

if else和for循环嵌套,break的使用

时间:2023-07-24 21:02:55浏览次数:29  
标签:myBlackList blackList String ips IP else break 嵌套 import

需求:

有两个集合A和B

A:集合中包含对象,对象中有两个属性,k1,v1
例如:A中的a1对象,k1="a1",v1="23.1"

B:集合中包含对象,对象的属性中包含一个string类型的数组,每个数组设置上限长度为50,集合的size也不能超过五十,目前该集合中已有三十多个,但要排除其中六个,根据名字进行排除,例如:可用的都为固定格式开头“我是自建1、我是自建2....”

B集合的对象b1:我是自建1(名字),数组,数组的长度,等属性

提示:需要将A集合v1的值添加到B集合的对象的数组中,不可超过数组长度,已有分组不足时才可进行新建。

if else和for循环嵌套,break的使用_List

if else和for循环嵌套,break的使用_List_02

 

if else和for循环嵌套,break的使用_数组_03

package job;
  
  
 import com.aliyun.openservices.log.exception.LogException;
 import models.bean.BlackIP;
 import models.bean.LogIpBlack;
 import models.bean.MyBlackList;
 import models.test.IPBlackTest;
 import play.jobs.Every;
 import play.jobs.Job;
 import utils.IPGroupCRUD;
  
 import java.util.Arrays;
 import java.util.List;
  
 /**
  * @author zd
  * @create 2022-10-09 16:50
  */
 @Every("5mn")
 public class BlackIPJob extends Job {
     public void doJob() throws LogException {
         System.out.println("job执行了*****************************************************");
         /**
          * 获取log中的可疑IP,li记录添加的索引
          */
         List<LogIpBlack> logIPList = IPGroupCRUD.getLogIP();
 //模拟八百个值填满分组
         for (int i = 0; i < 800; i++) {
             LogIpBlack logIp = new LogIpBlack("2", "23.34.1." + i);
             logIPList.add(logIp);
         }
  
         /**
          * 创建返回结果的对象
          */
         String addResult = "";
         BlackIP blackIP = new BlackIP();
  
         /**
          * 判断ip是否已经存在
          */
  allFor:
         for (LogIpBlack logIpBlack : logIPList) {
             /**
              * 获取所有IP黑名单分组信息
              */
             List<MyBlackList> blackList = IPGroupCRUD.getBlackList();
 //已有的分组中有六个为不可添加分组
             int myGroup = blackList.size() - 6;
  
             String logValue = logIpBlack.logValue;//获取值
  
             boolean ipExist = BlackIPJob.selectByIP(logValue, blackList);//通过方法获取返回值
             //判断IP是否存在
             if (ipExist == false) {
                 //不存在则进行添加,循环IP分组
                 ipFor:
                 for (MyBlackList myBlackList : blackList) {
  
                     if (myBlackList.ipName.startsWith("IP黑名单") && myBlackList.ipList < 50) {
                         String ips = "";
                         ips = ips + logValue + ",";
                         //取出原来的数据
                         String s = "";
                         for (String groupIP : myBlackList.groupIPs) {
                             s = s + groupIP + ",";
                         }
  
                         String s1 = ips + s;
                         ips = s1.substring(0, s1.length() - 1);
  
                         System.out.println(ips);
                         //修改IP分组
                         IPGroupCRUD.alterIPGroup(myBlackList.ipId, ips, myBlackList.ipName, myBlackList.version, "block");
                         blackIP.add_result = "分组添加成功!";
                         break ipFor;//添加成功跳出循环,进行下一个IP值循环,否则会造成重复添加
                         //判断当前对象是否为集合中最后一个
                     } else if (blackList.size() - 1 == blackList.indexOf(myBlackList)) {
                         if (blackList.size() > 49) {//大于49则证明无法进行新建
                             blackIP.add_result = "新建分组失败!分组已满,请联系管理员处理。";
                            break allFor;
                         }
                         System.out.println("**********新建");
                         String name = "IP黑名单" + (myGroup + 1);
                         IPGroupCRUD.addIPGroup("block", name, "custom_acl", 1, "IP", "");//新建分组
                         doJob();//重新调用方法,刷新执行
  
                     }
                 }
  
             }
  
         }
         blackIP.save();//保存对象到数据库
     }
  
     /**
      * 根据传入的ip判断是否存在
      *
      * @param ips
      */
     public static boolean selectByIP(String ips, List<MyBlackList> blackList) {
         boolean res = false;
         for (MyBlackList myBlackList : blackList) {
             String[] groupIPs = myBlackList.groupIPs;
             for (int i = 0; i < groupIPs.length; i++) {
                 if (groupIPs[i].equals(ips)) {
                     res = true;
                 }
             }
         }
         return res;
     }
 }

如有好的方法可提升效率,欢迎讨论

标签:myBlackList,blackList,String,ips,IP,else,break,嵌套,import
From: https://blog.51cto.com/u_16199760/6839355

相关文章

  • Mybatis的嵌套查询-column多条件
    Mybatis的嵌套查询一、结构创建三个表userroleuser_role简单展示一下嵌套查询的例子,其实就是Collection放到ResultMap,下一层把上一层的查询结果作为条件传入。--master.`user`definitionCREATETABLE`user`(`id`bigintNOTNULLAUTO_INCREMENT,`age`intDEF......
  • cmake学习之-嵌套式cmake
    注意,此贴只是记录学习所得,并不是教程本人的帖子项目中会有很多cmake嵌套使用的情况总分式嵌套cmake的父子关系注意的式父节点的定义可以在子节点中使用,儿子节点只能在自身使用,称为继承1.顶层cmake的寻找方法add_subdirectory(子节点对应文件目录、、),其中只有第一个参数我......
  • try-except-else-finally
    1'''21.语法:3try:4#可能引发异常的代码5exceptExceptionType1:6#处理异常类型1的代码7exceptExceptionType2:8#处理异常类型2的代码9else:10#如果没有发生异常,执行此处的代码11final......
  • go 结构体嵌套interface
    packagemainimport"fmt"//结构体嵌套接口,可以在结构体绑定的方法直接实现接口中的方法,直接调用接口中的方法typeaainterface{ a() b()}typeworldstruct{ aa Ageint}func(hworld)a(){ fmt.Println("helloa方法")}func(hworld)b(){ fmt.Println("hello......
  • JavaScript函数中嵌套函数的使用方法及技巧
     在JavaScript编程中,函数是用来封装可重用代码的一种重要工具。但是,有时候在函数内部需要创建另一个函数来完成一些特定的功能。这种在函数内部定义的函数被称为嵌套函数。本文将讨论JavaScript函数中嵌套函数的使用方法及技巧。1.嵌套函数的定义在JavaScript中,嵌套函数可以......
  • 项目启动时报:Method breakpoints may dramatically slow down debugging
    一、问题故障Methodbreakpointsmaydramaticallyslowdowndebugging.翻译:方法断点可能会大大降低调试速度。描述:说明当前项目中在某些方法和接口上打了断点导致执行延迟。二、错误打断点方式合理的打断点,那么标识号是圆圈的。错误的为菱形。三、解决方案总体来说就......
  • vue--day31---组件的嵌套
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>组件的嵌套</title><scripttyp......
  • python系列教程210——嵌套lambda
    声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值......
  • mq json转换器 JSON泛型反序列化, 多层嵌套,使用 TypeReference
     需求解析JSON,并将其转换为对应的数据结构。例如:转换为Map<String,Object>  ......
  • mybatis 中 if else 用法
    mybaits中没有else要用chosewhenotherwise代替下面就是MyBatis中的if....else...表示方法<choose><whentest="">//...</when><otherwise>//...</otherwise></choose> 例子<selecti......