我是在用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元,再次存盘,系统同意。这样,我们就避免了反复改动数据所带来的错误。

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

Android 角色时间戳的更多相关文章

  1. Android中时间戳的详细解释

    Android中时间戳的详细解释: (1).定义: 时间戳就是根据当前系统时间生成的一组随机数字. (2).作用: 作为对数据唯一性的一种判断依据.避免了重复修改数据所带来的错误! (3).应用: ( ...

  2. Android GetTimeAgo(时间戳转换几天前,几分钟前,刚刚等)

    package com.studychen.seenews.util; import android.content.Context; /** * Created by tomchen on 2/26 ...

  3. Android 将时间戳转为代表"距现在多久之前"的字符串

    public String getStandardDate(int dateTime) { StringBuffer sb = new StringBuffer(); long t = Long.pa ...

  4. Android 时间戳的转换

    在Android应用中,经常会碰到后台的时间是时间戳而现实的需要今天什么时候,昨天什么时候,就像微博的时间显示一样.现在我上一个把时间戳转换的代码: public static String getT ...

  5. Android时间戳转换为标准Datetime(yyyy-MM-dd hh:mm:ss)格式

    下列函数为实现过程,已经测试通过. /// <summary> /// Android时间戳转换为标准Datetime /// </summary> /// <param ...

  6. 【转】Android系统中Fastboot和Recovery所扮演的角色。

    Android 刷机过程中 Fastboot 和 Recovery 的作用是什么? 自己在知乎的一篇回答,,现在翻出来放到博客,希望可以解答更多人的疑惑,抑或有什么理解上的错误,也望网友指出~ 今天恰 ...

  7. Android 时间戳简单转化

    时间戳就是如1377216000000 这种格式我们在mysql数据库中会经常用到把时间转换成时间戳或把时间戳转换成日期格式了,下面我来介绍安卓中时间戳操作转换方法. 一.原理 时间戳的原理是把时间格 ...

  8. Date.parse()转化日期为时间戳,ios与Android兼容写法

    把固定格式日期转化为时间戳: //格式化当地日期 new Date('2017-11-11 0:0:0') //结果为:Sat Nov 11 2017 00:00:00 GMT+0800 (中国标准时 ...

  9. Android java获取凌晨的时间戳

    这两天有一个需求是查询用户匹配的推荐信息,包含一个有效时间段,以天为单位,0时0分0秒这种. 通常java中有两种方案: 第一种:Calendar.这种比较简单,也最常见.代码如下: Calendar ...

随机推荐

  1. ExtJS学习-------Ext正确Dom操作:Ext.get Ext.fly Ext.getDom

    详细实例: (1)创建JSP文件.引入CSS和js文件,加入三个Div <%@ page language="java" import="java.util.*&q ...

  2. 关于 typedef & typedef struct & typedef union理解 --写给不长脑子的我

    来源: http://zhidao.baidu.com/link?url=qxzkx5gaoCfnHnygYdzaLEWkC45JqNYYUk42eHHjB0yB3ZMgHv6lGjnq3CRfgQw ...

  3. Little Sympathy for Bear Stearns : NPR

    Little Sympathy for Bear Stearns : NPR Little Sympathy for Bear Stearns

  4. SQL语句查询数据库的触发器、存储过程、视图以及表的SQL语句

    Sql Server数据库用SQL语句查询方法如下: select name from sysobjects where xtype='TR' --所有触发器 select name from sys ...

  5. eval、json.parse()的介绍和使用注意点

    原文:eval.json.parse()的介绍和使用注意点 eval和json.parse的使用 eval:来源于官网 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScri ...

  6. Nginx对某个文件夹或整个站点进行登录认证的方法

    比方要对 站点文件夹下的 test 文件夹 进行加密认证 首先须要在opt 的主文件夹中 /opt/ 创建一个新文件 htpasswd 此文件的书写格式是 username:password 每行一个 ...

  7. VS2010添加默认路径,库以及Lib

    下面以OpenCV为例,不需要每次打开VS2010都手动添加OpenCV的库和lib,具体方法如下: VC++目录 步骤一:用任意文本编辑器打开:  VS安装目录中的\VC\VCWizards\def ...

  8. Cordova CLI源码分析(四)——创建工程

    在第一篇分析我们曾经举例,创建一个新工程, cordova create hello hellotest com.xxx.hellotest cli.js文件分析命令行参数后,会走到 else if  ...

  9. pcie inbound、outbound及EP、RC间的互相訪问

    Inbound:PCI域訪问存储器域 Outbound:存储器域訪问PCI域 RC訪问EP: RC存储器域->outbound->RC PCI域->EP PCI域->inbou ...

  10. CentOS 如何使用第三方软件库-EPEL与RPMForge、RPMFusion软件库

    在CentOS下运行yum install flash-plugin或yum install mplayer的时候,提示库里没有找到这个软件?为什么会这样?因为CentOS是RHEL编译过来的,去掉了 ...