在银行做开发,摸鱼被抓了..

2021-12-27 15:20:53 浏览数 (3)

作者:陌溪

陌溪的学习笔记: note.moguit.cn

大家好,我是陌溪

我们都知道,银行的系统相对比较稳定,新功能的开发也会给比较长的周期进行迭代,比如一个 CURD小功能,给两周的开发排期,然后再加上测试,可能一个小需求一个月后才上线。

而互联网公司,每两周就要完成需求的迭代。从业务同学提出的需求,到需求评审、设计评审、技术评审、测试评审以及上线都要在两周内完成(没有完成的话,可能会拖到两周后的上线节点)

所以,相对来说在银行当程序员还是比较安逸的,下面一起来看看群里小伙伴小辉 在银行是怎么摸鱼的吧~

本人是在银行搬砖,所以需要使用到云桌面工作,这银行上班事情相对比较少,所以就出现了经常摸鱼的情况,摸鱼归摸鱼,可是还是被人监控到摸鱼,为什么呢?

银行发放的安装设置休眠时间是 5 分钟,由于权限问题,我们是无法调整休眠时间的,当休眠时间大于 5 分钟的时候,那么电脑就会进入休眠状态,将不统计在线时间。

前段时间我被监控到在线时间只有 85% 。排名排在了后面的 30%,被当成了反面教材。所以我就想了一个办法,采用模拟点击鼠标的方式,防止电脑进入休眠。如果有些小伙伴也是用云桌面工作的话,而且想愉快的摸鱼的话就可以参考一下我提供的代码。

思路

  • 判断是否在时间范围内
  • 采用 java 提供的 java.awt 包下的 Robot 类,模拟点击(具体的 api 自行查阅)

Robot 类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。Java 中使用 Robot 类时,需要导入 java.awt

具体代码

首先,就需要定义好上班的时间,我的工作时间是,从早上 8:30 到晚上 20:00

然后每隔 60 秒执行一次,为了表现的更加科学合理,我们改成双击鼠标(程序员的拿手,CV前戏)

代码语言:javascript复制
import java.awt.*;
import java.awt.event.KeyEvent;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 防止电脑休眠
 * 模仿鼠标点击
 */
public class WaitFor {
    public static void main(String[] args) throws AWTException {
        Robot robot = new Robot();
        // 时间范围  上班时间
        String exeTimeStr = "083000-200000";
        while (isExeTime(exeTimeStr)){
            // 模拟双击鼠标 这种比较合理
            robot.mousePress(KeyEvent.BUTTON1_DOWN_MASK);
            robot.mouseRelease(KeyEvent.BUTTON1_DOWN_MASK);
            //频率 60s一次
            robot.delay(60000);
        }
    }

为了避免出错,在一个校验方法

代码语言:javascript复制
    /**
     * 判断是否在时间范围内
     * @param exeTimeStr
     * @return
     */
    private static boolean isExeTime(String exeTimeStr){
        String currentTime = getCurrentTime("HHmmss");
        int currentTimeInt = Integer.parseInt(currentTime);
        String[] timeArr = exeTimeStr.split("-");
        if (timeArr.length!=2){
            throw new RuntimeException("exeTimeStr时间输入有误"   exeTimeStr);
        }
        int startTimeInt =  Integer.parseInt(timeArr[0]);
        int endTimeInt =  Integer.parseInt(timeArr[1]);
        return startTimeInt <= currentTimeInt &&  endTimeInt >= currentTimeInt;
    }

    /**
     * 格式化当前时间
     * @param formatStr
     * @return
     */
    private static String getCurrentTime(String formatStr) {
        DateFormat sdf = new SimpleDateFormat(formatStr);
        Date date = Calendar.getInstance().getTime();
        return sdf.format(date);
    }
}

实战

一般我们执行是在本地物理机执行的。云桌面的原理就是实际上你操作了物理机,间接操作了云桌面,

所以我们需要在物理机上安装 JDK,一般银行的物理机上是不允许我们装其他 IDE 软件,其实就算是装也挺麻烦的。

因此,我的思路就是直接用脚本的方式去执行 Java 程序,这就想到了我们刚开始学习 Java 的最原始的方法。

  • 物理机上,安装 JDK 配置环境变量(省略)
  • 编写 Java 文件 =》 javac 编译 java 文件 》class 文件

执行 java class 类名 去执行 main

  • 编写 cmd 脚本

这样每次我们都cmd进入所以黑框敲,这样也有点麻烦了。所以我们需要编写一个bat文件。把命令写进去

那就给这个文件取个名字叫:摸鱼搞起.bat

代码语言:javascript复制
cd  %~dp0
javac WaitFor.java
java WaitFor

以后直接双击即可运行

好了,本期的分享就到这里了

我是陌溪,我们下期再见~

博主就职于字节跳动商业化部门,一直在维护校招笔记仓库 LearningNote「在Gitee上已有 4.5k star,仓库地址 https://gitee.com/moxi159753/LearningNotes」

同时,想要丰富项目经验的小伙伴,可以参考我维护的开源微服务博客项目:蘑菇博客「 Gitee 官方推荐项目,博客类搜索排名第一,在 Gitee 已有 4.1K star,仓库地址:https://gitee.com/moxi159753/mogu_blog_v2 」。

1 人点赞