有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如果在线考试期间发生电源故障,我们如何更新用户再次登录门户的剩余时间?

我正在做一个在线考试项目,只是为了获得知识。 可能会出现停电的情况,当候选人再次登录时,必须给出停电期间浪费的时间。但是在我的javascript代码中,考试在与服务器时间相对应的2小时后结束(这里使用AJAX)。时间结束后,学生被重定向到主页。我已经想到了一个解决方案,但我没有找到一个开始来实施它

As the session is maintained, so I can maintain the time he used from 2 hours and can be stored in database. when he relogin then that particular row which corresponds to him can be checked and the time can be updated.

但我无法实施它。请告诉我是否有其他解决方案,或者我思考的方向是对的还是错的

考试时钟从2小时开始恢复。它不会从停电时的滴答声中恢复。在这种情况下,无论是停电还是候选人再次登录都是一样的。我并没有要求为这个问题提供任何代码。我只想要一个我能想到的提示或方向。我只是想知道它背后的概念是什么


共 (2) 个答案

  1. # 1 楼答案

    将问题形式化一点:

    • 用户登录并在t0开始考试。他们的考试在t120结束
    • 在考试结束前的某个时间点(考试开始x分钟)(tx)出现电源故障,被测者必须恢复考试
    • tx之后的某个时间点,ty系统重新联机
    • ty之后或等于ty时,用户再次登录,称之为tz。正如您所指出的,这等于ty
    • 他们有权再多花120分钟来完成考试。考试结束的时间点现在是tz+(120-x)

    可能的解决方案:

    最初的想法是一种非常面向会话的方法,但这可能是一种方式:

    • 实现一个周期p的系统范围时钟(想想“心跳”)。对于系统启动的每个间隔p,增加一个全局计数器
    • 记录t0作为每次检查的全局计数器
    • 在另一行中,更新检查经过的时间。这是t0的当前值。在你的代码中,你可能会有保存他们正在进行的工作的功能,在那里更新经过的时间。同时更新每页/节加载的运行时间。请注意,如果在上次运行时间更新/正在进行的保存之间丢失了一些工作,他们将收到“返回”时间,因为他们上次运行的更新从未存储
    • 间隔p将是一个政策决定。理论上,根据考试失败的时间,有人可以额外获得一个p来完成考试。如果p是1秒,那没什么大不了的。如果是5分钟,那就更重要了。当然,对于不同的p值,会有性能折衷。而且,因为我们这里不处理实时系统,所以p可能会有一些偏差
    • 一切都使用事务。当系统恢复时(在全局时钟再次开始计时之前),任何中断的事务都需要回滚
  2. # 2 楼答案

    可以使用WebSocket实现客户机-服务器通信。Websockets提供了自己的healthchek。 它有onOpen()和onClose()等方法,用于接收打开或关闭连接时的事件