当前位置: 首页 > wzjs >正文

【郑州网站建设】建造网站需要多少钱

【郑州网站建设】,建造网站需要多少钱,wordpress 3.9,效能建设网站问题: 有三个流程,流程1.2.3,流程2.3是流程1的子流程,若在流程1的过程中发起流程2.3,计算流程1的时长要排除流程2.3的时间,流程2.3之间可能是包含、交集、无交集三种。 实现 代码: import jav…

问题:
有三个流程,流程1.2.3,流程2.3是流程1的子流程,若在流程1的过程中发起流程2.3,计算流程1的时长要排除流程2.3的时间,流程2.3之间可能是包含、交集、无交集三种。

实现

代码:

import java.util.Date;class Process {private String name;private Date startTime;private Date endTime;public Process(String name) {this.name = name;}// 开始流程public void start() {this.startTime = new Date();System.out.println(name + " started at: " + startTime);}// 结束流程public void end() {this.endTime = new Date();System.out.println(name + " ended at: " + endTime);}// 获取流程开始时间public Date getStartTime() {return startTime;}// 获取流程结束时间public Date getEndTime() {return endTime;}// 计算流程时长(毫秒)public long getDuration() {if (startTime == null || endTime == null) {throw new IllegalStateException("Process " + name + " has not started or ended.");}return endTime.getTime() - startTime.getTime();}
}class MainProcess extends Process {private Process subProcess2;private Process subProcess3;public MainProcess(String name) {super(name);this.subProcess2 = new Process("Sub-Process 2");this.subProcess3 = new Process("Sub-Process 3");}// 启动子流程2public void startSubProcess2() {subProcess2.start();}// 结束子流程2public void endSubProcess2() {subProcess2.end();}// 启动子流程3public void startSubProcess3() {subProcess3.start();}// 结束子流程3public void endSubProcess3() {subProcess3.end();}// 计算主流程1的时长(排除子流程2和3的时间)@Overridepublic long getDuration() {long mainDuration = super.getDuration(); // 主流程总时长// 计算子流程2和3的总时间(考虑包含、交集或无交集的情况)long subProcessDuration = calculateSubProcessDuration();return mainDuration - subProcessDuration; // 排除子流程时间}// 计算子流程2和3的总时间private long calculateSubProcessDuration() {Date sub2Start = subProcess2.getStartTime();Date sub2End = subProcess2.getEndTime();Date sub3Start = subProcess3.getStartTime();Date sub3End = subProcess3.getEndTime();// 如果子流程2或3未启动或未结束,返回0if (sub2Start == null || sub2End == null || sub3Start == null || sub3End == null) {return 0;}// 计算子流程2和3的时间交集long overlapStart = Math.max(sub2Start.getTime(), sub3Start.getTime());long overlapEnd = Math.min(sub2End.getTime(), sub3End.getTime());long overlapDuration = Math.max(0, overlapEnd - overlapStart); // 交集时长// 计算子流程2和3的总时长(去重交集部分)long sub2Duration = subProcess2.getDuration();long sub3Duration = subProcess3.getDuration();return sub2Duration + sub3Duration - overlapDuration;}
}public class ProcessManagement {public static void main(String[] args) throws InterruptedException {MainProcess process1 = new MainProcess("Process 1");// 启动主流程1process1.start();Thread.sleep(1000); // 模拟主流程1的运行时间// 启动子流程2process1.startSubProcess2();Thread.sleep(2000); // 模拟子流程2的运行时间// 启动子流程3(与子流程2有交集)process1.startSubProcess3();Thread.sleep(1500); // 模拟子流程3的运行时间process1.endSubProcess3();// 结束子流程2process1.endSubProcess2();Thread.sleep(1000); // 模拟主流程1的剩余运行时间// 结束主流程1process1.end();// 计算并输出主流程1的时长(排除子流程2和3的时间)System.out.println("Process 1 duration (excluding sub-processes): " + process1.getDuration() + " ms");}
}

代码说明

  1. Process 类:
  • 表示一个流程,包含流程名称、开始时间和结束时间。

  • 提供 start()、end() 和 getDuration() 方法,分别用于启动流程、结束流程和计算流程时长。

  1. MainProcess 类:
  • 继承 Process 类,表示主流程1。

  • 包含子流程2和子流程3的实例。

  • 重写 getDuration() 方法,计算主流程1的时长时排除子流程2和3的时间。

  • 新增 calculateSubProcessDuration() 方法,动态计算子流程2和3的总时间(考虑包含、交集或无交集的情况)。

  1. ProcessManagement 类:
  • 模拟流程的执行过程,包括主流程1和子流程2、3的启动与结束。

  • 输出主流程1的时长(排除子流程2和3的时间)。

关键点

  • 时间交集计算:通过比较子流程2和3的开始和结束时间,计算它们的交集时长。

  • 去重逻辑:在计算子流程总时间时,减去交集部分,避免重复计算。

  • 动态适应:无论子流程2和3是包含、交集还是无交集,都能正确计算主流程1的时长。

关键代码解析

long overlapStart = Math.max(sub2Start.getTime(), sub3Start.getTime());
long overlapEnd = Math.min(sub2End.getTime(), sub3End.getTime());
long overlapDuration = Math.max(0, overlapEnd - overlapStart); // 交集时长
  1. sub2Start.getTime() 和 sub3Start.getTime()
  • 作用:获取子流程2和子流程3的开始时间(以毫秒为单位)。

  • 说明:

    • sub2Start 是子流程2的开始时间(Date 类型)。

    • getTime() 方法将 Date 对象转换为从1970年1月1日00:00:00 GMT开始的毫秒数(long 类型)。

  1. Math.max(sub2Start.getTime(), sub3Start.getTime())
  • 作用:计算两个开始时间中的较晚时间。

  • 说明:

    • 如果子流程2的开始时间晚于子流程3的开始时间,则返回子流程2的开始时间。

    • 如果子流程3的开始时间晚于子流程2的开始时间,则返回子流程3的开始时间。

    • 这个值表示两个流程的交集时间段的开始时间。

  1. sub2End.getTime() 和 sub3End.getTime()
  • 作用:获取子流程2和子流程3的结束时间(以毫秒为单位)。

  • 说明:

    • sub2End 是子流程2的结束时间(Date 类型)。

    • getTime() 方法将 Date 对象转换为从1970年1月1日00:00:00 GMT开始的毫秒数(long 类型)。

  1. Math.min(sub2End.getTime(), sub3End.getTime())
  • 作用:计算两个结束时间中的较早时间。

  • 说明:

    • 如果子流程2的结束时间早于子流程3的结束时间,则返回子流程2的结束时间。

    • 如果子流程3的结束时间早于子流程2的结束时间,则返回子流程3的结束时间。

    • 这个值表示两个流程的交集时间段的结束时间。

  1. overlapEnd - overlapStart
  • 作用:计算交集时间段的时长(以毫秒为单位)。

  • 说明:

    • 如果 overlapEnd 大于 overlapStart,则结果为正值,表示两个流程有交集。

    • 如果 overlapEnd 小于或等于 overlapStart,则结果为负值或零,表示两个流程无交集。

  1. Math.max(0, overlapEnd - overlapStart)
  • 作用:确保交集时长为非负数。

  • 说明:

    • 如果 overlapEnd - overlapStart 为负值(即两个流程无交集),则返回 0。

    • 如果 overlapEnd - overlapStart 为正值(即两个流程有交集),则返回实际交集时长。

http://www.dtcms.com/wzjs/597109.html

相关文章:

  • 德州中文网站建设wordpress移动客户端
  • 电子商务网站建设规划开题报告网站开发php和ui
  • 盐城市滨海县建设局网站企业建站系统免费
  • 网站建设公司网页自己制作头像的软件
  • WordPress挂在虚拟站点巩义专业网站建设公司首选
  • 上海网站搜索引擎优化六安论坛网站
  • 网站之间如何交换友情链接wordpress 密码查看
  • 建设个网站多少钱哪个网站做海南二手房
  • 移动网站 制作旅游主题网站策划书
  • 做门户网站长沙社区赚钱吗做国外房产的网站
  • 沧州网站建设的技术方案做网站怎么引用字体
  • 徐州建设银行网站绵阳做网站
  • 微信公众平台怎么做微网站wordpress 学术 模板
  • 服装店网站建设思路网站建设服务 行业代码
  • 阿里云的虚拟主机用什么做网站重庆软件开发公司有哪些
  • 苏州网站定制公司哪家好网站建设算固定资产吗
  • 网站建设太金手指六六二七已有网站开发app客户端
  • wordpress 淘客推广seo网站
  • 国外 图片网站wordpress 随机文章
  • 做二手平台公益的网站wordpress显示栏目名称
  • 长丰县住房和城乡建设局网站衡阳网站建设公司地址
  • 科凡网站建设怎么样网站根验证文件在哪
  • 小说素材网站东阳网络推广
  • 网站开发实验室标准网站建设费用
  • crm系统 网站建设wordpress企业中文模板下载地址
  • 0基础网站建设模板陕西头条新闻
  • 一个网站通常包含多个网页怎么编辑网站后台
  • 网站抓取超时错误wordpress2018版本
  • 设计师网站 知乎太原百度推广制作个性商城网站
  • 衡阳网站建设mdawl渭南做网站都有哪些