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

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

时间: 2025-01-04 17:06:55

Android 角色时间戳的相关文章

Android中时间戳的详细解释

Android中时间戳的详细解释: (1).定义: 时间戳就是根据当前系统时间生成的一组随机数字. (2).作用: 作为对数据唯一性的一种判断依据.避免了重复修改数据所带来的错误! (3).应用: (1).在银行account表中建立时间戳字段timestamp,设定为文本类型varchar. (2).当银行A读取account表中的存款字段时,同时也读取时间戳字段,比如123456. (3).当银行A修改完存款数值后,进行存盘操作时,将先前读取的时间戳123456与当时表中的时间戳进行一次对比

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

/** * 将时间戳转为代表"距现在多久之前"的字符串 * @param timeStr 时间戳 * @return */ public static String getStandardDate(String timeStr) { StringBuffer sb = new StringBuffer(); long t = Long.parseLong(timeStr); long time = System.currentTimeMillis() - (t*1000); long

如何解决Facebook SDK常见问题?

1.我安装了 Facebook SDK,但在广告管理工具中没有看到安装量报告?首先,前往 Facebook 分析页面:Facebook 分析.然后,点击左边导航栏中的"移动应用安装",查看最近安装报告以确认 SDK 安装正确.请注意,此面板显示的是付费安装和自然安装.此外,您可以在选择应用后查看应用面板,其中包含 iOS 和 Android 的时间戳"最近移动安装报告",以便您确认安装报告功能是否正常. 2.创建广告时,我无法选择应用请前往应用面板 并选择您想为之创

android游戏开发框架libgdx的使用(十三)—TiledMap中的角色和角色移动

http://www.cnblogs.com/htynkn/archive/2012/01/13/libgdx_13.html 本文紧跟上文,地址:android游戏开发框架libgdx的使用(十二)—TiledMap地图的使用 地图我们创建好了接下来就是主角的出现.其实上文介绍了如何TiledMap和Stage的结合,角色的处理就简单了. 可以继承Actor类创建主角类,我就偷个懒,用Image代替. 编辑我们的TMX文件,添加一个对象层. 在主角要出现的地方加个形状 取名为play1 我们的

android 获取UTC时间和与.net时间戳的转换

本文纯属整合,将在项目中用到的UTC时间和与.NET时间戳的转换进行记录. 1.android获取UTC时间 /** * 获取UTC时间 * * @return */ public static String getUTCTimeStr() { DateFormat format = new SimpleDateFormat("yyyy/MM/dd/HH/mm/ss"); StringBuffer UTCTimeBuffer = new StringBuffer(); // 1.取得本

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

下列函数为实现过程,已经测试通过. /// <summary> /// Android时间戳转换为标准Datetime /// </summary> /// <param name="timeStamp">Android时间戳</param> /// <returns>标准Datetime</returns> private DateTime GetDatetime(string timeStamp) { Date

Android/java 字符串/日期/时间戳的转化

Android中用到的日期格式化和Java中一样的.一般需求都是将当前日期或者后台传来的时间戳转化为格式化的字符串,整理如下: 一.将字符串转化成Date. String test = new String("2018/03/01"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd/hh点mm分"); try { Log.e("test",sdf1.parse(test).toS

适配器角色在android中使用

适配器模式(Adapter): 适配器模式是一种行为模式,它可以把一个类的接口转换成为另一个所期待的另一种接口,这样可以使原本因接口无法在一起工作的两个类能够在一起工作了.适配器模式有类的适配器和对象的适配器两种形式,这里只介绍对象的适配器模式(与类适配器模式类似),下面为类的适配器(左)和对象适配器模式(右)的简略类图结构: 适配器模式所涉及的角色有适配角色.目标角色和适配器角色,具体描述如下: 适配角色:提供需要适配转换的接口角色. 目标角色:调用者所期待的接口. 适配器角色:把适配角色转为

Android 时间戳简单转化

时间戳就是如1377216000000 这种格式我们在mysql数据库中会经常用到把时间转换成时间戳或把时间戳转换成日期格式了,下面我来介绍安卓中时间戳操作转换方法. 一.原理 时间戳的原理是把时间格式转为十进制格式,这样就方便时间的计算.好~ 直接进入主题.(下面封装了一个类,有需要的同学可以参考或是直接Copy 就可以用了.) 如: 2013年08月23日 转化后是 1377216000000 二.步骤 1.创建 DateUtilsl类. importjava.text.ParseExcep