zoukankan      html  css  js  c++  java
  • 一解决友好的脏读脏存的方法

    *先说下事情的起因,公司的财务总监查看了公司的总帐是500万,前段时间支出了10万但是系统还没有走帐,这时总监就分咐小李去走下帐。
    由于总监记性不太好,刚通知完小李又通知了小曾。巧的是小李和小曾同时查看了公司的帐目表(比如GRIDVIEW),发现现帐确实是500万。
    于是小李先走了10万,搞定回家吃玉米了。这时虽然小李已经走了10万,但是由于是web系统,本来就是无连接的。这时小曾也没有刷新页面。
    还是显示的500万总帐,于是小曾拿下正在放着狮子座的MP3的耳机,又走了10万。这时候小李和小曾都以为已经完满的完成了任务。谁知第二
    天上班总监把小李小曾一同叫去了办公司,对他们说“我说李哥、曾哥。你们怎么回事啊?让你们走10万的帐确走了20万。你们是不想混了是吗?
    这时这李小曾你看看我,我看看你,心里茫然(本故事纯属加班到深夜已经到了神呼的状态的人虚购)

    下面来说一下我的解决办法。比如下面的表(不要考虑数据库的结构,我是说假如)
    SysNo  总帐
       1      500万

    我们在后面增加一列,我采用的是GUID,当然SQLSERVER也有自己的时间戳方式记录修改状态
    SysNo  总帐   更新标识(GUID)
       1     500万   GUID1

    这样,还是上面的情况,当小要更新时,会用客户端的GUID码去进行比对,这时客户端GUID码为GUID1和数据库中一置,进行正常的更新操作,并
    重新生成新的GUID更新标识。

    这时小曾也进行更新操作,但是对比GUID更新标识的时候发现数据库中的GUID码为GUID2与客户端的GUID1不对应,这时系统会给予一个友好的提示,
    比如:“对不起,发生了友好冲突问题,请重新操作!”并同时更新下页面重新读取GUID标识码,这时标识码为GUID2再次更新时就可以正常更新了,但
    是本例的情况更新后小增发现,哇已经是490万了,那我就不用再走帐了。继续啃他的玉米去了。

    这只是本人想的一个不是很正规的解决特有问题的方式,其它的方法还请有经液的人拍砖。

    唉,时间不早了。回家休息吧,明天一早还要上班!

  • 相关阅读:
    Redission源码
    RocketMQ 的heartBeat在做哪些事情
    Netty调用channel.close方法和 客户端所在Java进程正常/异常关闭的细节
    RocketMQ源码之 事务消息的回调方法应该怎么写?
    spring 源码
    多线程同步工具ReentrantLock CountDownLatch CyclicBarrier Semaphore join
    RocketMQ 的事务消息
    RocketMQ 怎样解决为了 实时拉取消息 而不得不一直轮询的问题
    .net winform 调用类中的webbrowser 报错:当前线程不在单线程单元中,因此无法实例化 ActiveX
    [转]如何不格式化、不丢失数据修复内存卡
  • 原文地址:https://www.cnblogs.com/assion/p/1553959.html
Copyright © 2011-2022 走看看