【JAVA】【更新版本】当在上线新版时,又存在数据需要刷新的情况;就会导致部分接口是不能访问的,但又需要其他接口正常访问,可以在对应的接口加个版本时间限制访问。

简介: 【JAVA】【更新版本】当在上线新版时,又存在数据需要刷新的情况;就会导致部分接口是不能访问的,但又需要其他接口正常访问,可以在对应的接口加个版本时间限制访问。

一、前言


  当我们在上线新版程序时,又存在数据需要刷新的情况;就会导致部分接口是不能访问的,但又需要其他接口正常访问。


  这时候我们可以在对应的接口加个版本时间限制访问。并且在此期间变为维护阶段,用户点击时,反馈是维护中。背后是在对数据进行刷新...


二、过程


首先,我们需要有的是,数据刷新完成时间,一定要数据刷新完成后的时间。也就是维护结束时间,等当前时间过了维护时间,就可以正常访问了~ 思路和代码比较简单,也有详细注释,就不过多陈述了,直接看代码吧~


三、详细讲解


定义一个上线时间


String NEW_VERSION_TIME = "2022-03-10 5:20:00"; 


获取当前时间


Date nowDate = new Date(); 


设置对应格式,用于转化


Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");


获取现在的时间戳


cal.setTime(nowDate); 
long nowTimeNum = cal.getTimeInMillis();


塞入上线时间,获取对应时间戳(这里塞入时间是需要try catch的,可参考完整代码)


cal.setTime(sdf.parse(NEW_VERSION_TIME));
long versionTimeNum = cal.getTimeInMillis();


对比当前时间戳和上线时间戳,未达到则直接返回,不往下执行.


boolean isNew = versionTimeNum - nowTimeNum > 0 ? true : false; // 大于0说明当前请求在维护时间里
if (isNew) {
    System.out.println("当前正在维护哦!请在" + NEW_VERSION_TIME + "之后再试。");
    // 这时候数据库是有在刷新数据滴~
    return; // 退出接口
}


四、完整代码


// 首先,上线新版程序时,让项目进行维护状态(在此期间变为维护阶段,用户点击时,反馈是维护中。背后是在对数据进行刷新)
  public static void main(String[] args) {
    // 新版上线时间,即维护时间(2022年3月10日 5点20分)
    String NEW_VERSION_TIME = "2022-03-10 5:20:00"; // 如果当前时间超过了维护时间,就能接口正常访问了
    Date nowDate = new Date();
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    cal.setTime(nowDate);
    long nowTimeNum = cal.getTimeInMillis();
    try {
      cal.setTime(sdf.parse(NEW_VERSION_TIME));
      long versionTimeNum = cal.getTimeInMillis();
      boolean isNew = versionTimeNum - nowTimeNum > 0 ? true : false; // 大于0说明当前请求在维护时间里
      if (isNew) {
        System.out.println("当前正在维护哦!请在" + NEW_VERSION_TIME + "之后再试。");
        // 这时候数据库是有在刷新数据滴~
        return; // 退出接口
      }
    } catch (Exception e) {
      System.out.println("出错啦!");
      e.printStackTrace();
    }
    System.out.println("已经维护结束啦,可以正常访问!");
    System.out.println("南方者 - 掘金");
    System.out.println("掘金博客地址:https://juejin.cn/user/2840793779295133");
  }


文章小尾巴


文章写作、模板、文章小尾巴可参考:《写作“小心思”》


  感谢你看到最后,最后再说两点~


  ①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。

  ②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~


  我是南方者,一个热爱计算机更热爱祖国的南方人。


  (文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)



目录
相关文章
|
2天前
|
Java 开发者
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
12 4
|
8天前
|
安全 Java
在 Java 中使用实现 Runnable 接口的方式创建线程
【10月更文挑战第22天】通过以上内容的介绍,相信你已经对在 Java 中如何使用实现 Runnable 接口的方式创建线程有了更深入的了解。在实际应用中,需要根据具体的需求和场景,合理选择线程创建方式,并注意线程安全、同步、通信等相关问题,以确保程序的正确性和稳定性。
|
5天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
18 3
|
6天前
|
Java
Java基础(13)抽象类、接口
本文介绍了Java面向对象编程中的抽象类和接口两个核心概念。抽象类不能被实例化,通常用于定义子类的通用方法和属性;接口则是完全抽象的类,允许声明一组方法但不实现它们。文章通过代码示例详细解析了抽象类和接口的定义及实现,并讨论了它们的区别和使用场景。
|
6天前
|
Java Linux Windows
如何查看已安装的 Java 版本
要查看已安装的 Java 版本,打开命令提示符或终端,输入 `java -version`,回车后即可显示当前系统中 Java 的版本信息。
|
6天前
|
Ubuntu Java Linux
如何检查 Java 版本是否兼容
要检查Java版本是否兼容,可在命令行输入“java -version”查看当前安装的Java版本,然后对比目标应用所需的Java版本,确保其满足要求。
|
7天前
|
Java 测试技术 API
Java零基础-接口详解
【10月更文挑战第19天】Java零基础教学篇,手把手实践教学!
15 1
|
8天前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
25 2
|
12天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
12 3
|
12天前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
25 2