zoukankan      html  css  js  c++  java
  • Android 角色时间戳

            我是在用MediaRecorder进行录像时发生视频和音频不同步的问题,请教了一些人后感觉应该是没有时间戳,之前一直觉得时间戳就是给用户看的一个数据,查了一下发现不是的,以下是转载的。希望对大家实用:

    首先向大家介绍什么是时间戳。

       说得通俗一些,时间戳就是根据当前系统时间生成的一组随机数字。

    时间戳一般作为对数据唯一性的一种推断根据。接下来向大家介绍一下我们能够怎样运用时间戳。

       我们一定会碰到这种情况:银行A与银行B差点儿同一时候打开你的账户并看到你的账户上原有1000元存款。然后两家银行都想在你的账户上加上500元存款。那么。银行A便将1000元改成1500元,同一时候。银行B也将1000元改成了1500元。这样就糟糕了!

    最后,你的银行账户上最后仅仅有1500元而不是理应的2000元,等于白白损失了500元!

    这就是在没有锁定数据的情况下改动造成的严重问题。

    然而,我们能够通过时间戳来巧妙解决问题。

       我们来看思路:

    1. 在银行account表中建立时间戳字段timestamp。设定为文本类型varchar。
    2. 当银行A读取account表中的存款字段时,同一时候也读取时间戳字段,比方123456。

    3. 当银行A改动完存款数值后。进行存盘操作时。将先前读取的时间戳123456与当时表中的时间戳进行一次对照,假设一致,那么同意存盘。然后生成一个新的时间戳比方456789替换表中原有的时间戳123456。

       这样做会带来什么优点呢?

       我们再来看一開始的那个情况:银行A与银行B差点儿同一时候打开你的账户并看到你的账户上原有1000元存款,与此同一时候两个银行业同一时候读取了时间戳123456,接下来就有差别了。当银行A把1000元改成1500元后,存盘,系统将对照先前的时间戳123456是否与存盘时表中的时间戳一致。显然。如今应该是一致的,那么同意存盘,并生成新的时间戳456789替换了旧的时间戳123456。

    接下去,B银行也将1000元改动成了1500元,存盘,系统对照先前的时间戳123456是否与存盘时表中的时间戳一致,发现先前的时间戳123456已经与如今的时间戳456789相异。系统拒绝存盘,要求刷新数据,那么数据刷新之后1000元已经由于之前A银行存入了500元而成为了1500元。那么B银行就会在1500元的基础上改为2000元,再次存盘,系统同意。这样,我们就避免了反复改动数据所带来的错误。

       有些像绕口令,我希望我们都清楚我是什么意思~

  • 相关阅读:
    产生唯一的临时文件mkstemp()
    Linux文档时间戳查看和修改——stat
    Linux下快速查找文件
    Crypt加密函数简介(C语言)
    产生随机数 random
    见微知著——从《新闻联播》挖掘价值资讯擒拿年度政策受益牛股
    Linux中link,unlink,close,fclose详解
    不用输液
    javaScript document对象详解
    javascript初步了解
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4737907.html
Copyright © 2011-2022 走看看