woodforest12 2017-06-20 06:18 采纳率: 0%
浏览 937

三个看似简单但不容易解决的设计问题

1.A操作把一条记录状态改为1,B操作把状态改为2,这个记录可能在数据库里,也可能在内存里,不重要,就是可能存在多种状态,如果A操作先执行,B操作后执行,状态该是2,但如果因为网络延迟等原因,B操作先执行完成,那数据就被覆盖成了1,不符合现实情况,我只能控制其执行顺序,不能控制执行完成顺序,如何解决。
2.在方法中,A对象改变了一组属性,B对象改变了一组属性,那现在如果出现异常或返回值错误,整体操作失败,那执行完操作的属性如何回滚,还是这种设计就不合理,那该怎么设计。
3.用户注册的常见问题,查询用户名时,用户名可用,可这时候两人同时注册就都发到数据库了,数据库再唯一性出错返回了,大家都是怎么处理的,怎么加锁。

大家谈谈经验啊 万分感谢!

  • 写回答

5条回答 默认 最新

  • x_mario 2017-06-20 06:24
    关注

    使用多线程啊,还有synchronized

    下面是有关锁机制的博客。你可以了解一下
    http://blog.csdn.net/yangzhijun_cau/article/details/6432216

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器