计时器,先递增至14,再递减至1,再递增往复循环。

S型坐标画法,画出便于展示的设备状态

由于工作需要,利用地铁画法画出需要检查的服务器,数据库和中端的状态,便于页面展示和可读性,便根据要画出的S形状设计出了这种二位数组来定位坐标中x,y横纵坐标的位置。

半成品图就是这样子,页面还在美化中,查出的状态为UP时则标记为蓝色,并且页面获取蓝色字段用于显示,查出状态为DOWN时则标记为红色,页面则显示为红色,并且后台开启定时器,没五分钟查一次一边状态为DOWN时调用短信接口发出相关人员警告提醒,也可以在页面刷新查看,每刷新一次便查询一次。
状态监管图

坐标轴如下图所示,可以根据算法定义长度和转弯的方向等,如果前端自定义方向将会更加简单,只需在页面端分别输入x,y的值即可。本文方法用于从数据库查出数据后S型自动画出到页面用于展示状态。
在这里插入图片描述
言归正传,代码片段如下所示,希望能对你有所帮助。

package test.dayang.alertCheck;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 二维数组坐标,来帮助前端页面做出展示图
 * @author dayang
 */

public class Counter {
    //定义一个字符串数组用来模拟数据库
    List<String> arr = new ArrayList<String>();
    //i:x轴  j:y轴  k,p:分别为递增和递减运算的次数  sum:总数
    int i=0;
    int j=1;
    int k=1;
    int p=1;
    int sum=0;

    //s型循环检查
    public void sCoordinate(int count){
        //定义字符串数组的长度,如果是数据库可自己遍历循环,可达到一样的效果
        for(int i=0;i<count;i++){
            arr.add("巡回检查");
        }

        //利用for循环遍历字符串数组
            for(String str:arr) {
                sum++;
                //判断是否为递增序列函数,并进行计算
                if(sum<= arr.size()&&sum>=(1+(k-1)*28)&&sum<=(14+(k-1)*28)){

                    System.out.println("+++"+sum+"+++");
                    i++;

                    if(sum%(29+(j-k)*28)==0){
                        j=j+1;
                        i=i-1;
                    }
                    if(sum%(14+28*(k-1))==0){
                        k=k+1;
                    }
                } else if(sum<=arr.size()&&sum>=(15+(p-1)*28)&&sum<=(28+(p-1)*28)){//判断是否为递减序列函数,并进行计算

                    System.out.println("---"+sum+"---");
                    i--;

                    if (sum%(15+(j-p)*28) == 0) {
                        j = j + 1;
                        i = i + 1;
                    }
                    if (sum%(28+(p-1)*28)== 0) {
                        p = p + 1;
                    }
                }

                //循环打印输出结果,便于查看
                System.out.println(str + " : "+"x="+i+" y="+j);
                System.out.println("k="+k+"   p="+p);
                System.out.println();
            }
    }

    public static void main(String[] args) {
        Counter c = new Counter();
        Scanner sc=new Scanner(System.in);

        System.out.println("请输入要检查的设备数:");
        int count=sc.nextInt();
        c.sCoordinate(count);
    }
}

本文仅为本人在工作中需要而写的需求,欢迎各位讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值