【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");
  }


文章小尾巴


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


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


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

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


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


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



目录
相关文章
|
12月前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
727 6
|
12月前
|
Java Go 开发工具
【Java】(9)抽象类、接口、内部的运用与作用分析,枚举类型的使用
抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接 口、枚举)5种成分。抽象类的构造器不能用于创建实例,主要是用于被其子类调用。抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类abstract static不能同时修饰一个方法。
416 1
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
313 11
|
安全 架构师 Java
Java LTS版本进化秀:从8到21的欢乐升级之旅
困惑于Java版本选择?轻松幽默地穿越Java LTS版本时光隧道,掌握从Java 8到21的关键特性。通过一家初创公司的系统升级故事,直观了解每个版本如何解决代码冗余、性能瓶颈等开发痛点,助你在技术选型中做出明智决策。
610 7
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
478 4
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
698 16
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
1475 23
|
存储 安全 Java
Java集合框架(一):List接口及其实现类剖析
本文深入解析Java中List集合的实现原理,涵盖ArrayList的动态数组机制、LinkedList的链表结构、Vector与Stack的线程安全性及其不推荐使用的原因,对比了不同实现的性能与适用场景,帮助开发者根据实际需求选择合适的List实现。
1365 0
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
前端开发 Java API
2025 年 Java 全栈从环境搭建到项目上线实操全流程指南:Java 全栈最新实操指南(2025 版)
本指南涵盖2025年Java全栈开发核心技术,从JDK 21环境搭建、Spring Boot 3.3实战、React前端集成到Docker容器化部署,结合最新特性与实操流程,助力构建高效企业级应用。
3379 1