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元,再次存盘,系统允许。这样,我们就避免了重复修改数据所带来的错误!

有些像绕口令,希望大家已经明白我的意思~

时间: 2024-07-30 02:32:40

Android 时间戳的作用的相关文章

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

istview android:cacheColorHint,android:listSelector属性作用(转)

原文ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉, 原因是,滚动时,列表里面的view重绘时,用的依旧是系统默认的透明色,颜色值为#FF191919, 要改变这种情况,只需要调用listView的setCacheColorHint(0),颜色值设置为0 或者xml文件中listView的属性 Android:cacheColorHint="#00000000"即可, 滚动时,重绘Vi

腾讯、网易云、字节跳动面试点总结—AMS在Android起到什么作用?

本专栏专注分享大型Bat面试知识,后续会持续更新,喜欢的话麻烦点击一个关注 面试官: AMS在Android起到什么作用,简单的分析下Android的源码 心理分析:这道题在发生在大多数场景下.面对这道题 很多求职很茫然,不知道该如何说起.AMS本身比较复杂难以理解.工作多年也很难弄清AMS的作用,其实我们大可从以下几点入手组件启动.进程切换.Crash异常入手 求职者:AMS难以表述 我们就从最熟知 的Activity启动入手,逐步深入和分析,用定力告诉面试官,我层深入研究过.接下来我们从五条

Android Application的作用

学习android挺长时间了,但是对于Appliction还不是很了解.今天花一些时间研究了一下Application. What is Application Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息.通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Ap

Android Intent 意图作用

Intent分为两大类: (1)显性的(Explicit) (2)隐性的(Implicit) 对于隐性意图,在某些时候, 应用程序只是想启动具有某种特征的组件, 并不想和某个特定的组件耦合. 使用Intent可以方便的达到这种高层次解耦的目的.(在模块间的组件启动) intent定位事件的目的地: (1)种类(category),比如我们常见的 LAUNCHER_CATEGORY 就是表示这是一类应用程序. (2)类型(type),在前面的例子中没用过,表示数据的类型,这是隐性Intent定位目

listview android:cacheColorHint,android:listSelector属性作用

ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉, 原因是,滚动时,列表里面的view重绘时,用的依旧是系统默认的透明色,颜色值为#FF191919, 要改变这种情况,只需要调用listView的setCacheColorHint(0),颜色值设置为0 或者xml文件中listView的属性 Android:cacheColorHint="#00000000"即可, 滚动时,重绘View

Android getResources的作用和须要注意点

今天做一个Android的文件管理器,里面用到非常多的地方用到了getResources. Drawable currentIcon = null; currentIcon = getResources().getDrawable(R.drawable.folder); currentIcon = getResources().getDrawable(R.drawable.image); 一開始不是非常理解为什么用 getResources()这种方法就能够获取存在系统的资源.于是看了一下文档和

Android 时间戳简单转化

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

android:contentDescription的作用是什么

在写Android的XML布局文件时,在ImageView或ImageButton中经常会碰到一个提示: Missing contentDescription attribute on image. 这个属性是做什么的呢? 其实这个属性是方便一些生理功能有缺陷的人使用应用程序的.比如我们有一个ImageView里面放置一张颜色复杂的图片,可能一些色弱色盲的人,分不清这张图片中画的是什么东西.如果用户安装了辅助浏览工具比如TalkBack,TalkBack就会大声朗读出用户目前正在浏览的内容.Te