面对web并发访问时候,可能会产生这样的问题,你是怎么设计的?
来源:互联网 发布:浪潮软件股份 编辑:程序博客网 时间:2024/04/30 07:38
一般的web application,可能会遇到这样的问题,你可以这样模拟:用浏览器开一个窗口,选中一条记录,编辑之,但是先不要保存,新开一个浏览器窗口,找到这条记录,删除之,然后再回到第一个窗口点击保存按钮。
假如程序没有做特别的处理,肯定会报错。
这个问题,有些公司并不考虑这样的问题,认为这个发生的概率很低,报错就报错吧,反正概率很低。
是这样的,假如是一般的小的系统,访问人数和并发数不是很多的时候,基本上不太用考虑。但是一个大的,比如说海关,银行,或者在线电子商务网站,基于系统健壮性考虑,你不得不考虑。。。
目前一个通用的做法有两种:
锁机制:1.悲观锁;2.乐观锁。
在web程序里,基本上不能考虑悲观锁(会使得系统的产生不可估量额性能损失,也失去了web 的意义了。)
当然在web程序里只能乐观锁,一个通用的做法就是每张表里设置一个字段version_no,每次删除或者修改的时候,去数据库比较一下,数据库的version_no还变化了,假如不等了,就说明在你之前发生过了变化了,这次修改或者删除动作不能成功。。。
我们在做系统的时候,由于系统初期没有考虑到,到了后来用户测试的时候,出现了这样的问题,我们就是在我们的basicDao里做了一次检查,如果不对劲就throw一个exception,在basicDao里使用了模版技巧用来保证dao和service层不用改变方法的申明,保证了这个改变影响的代码降到了最低。
但是这里有一个问题,假如是使用hibernate3技术,假如你update的时候,由于特殊的情况,你得使用merge(bo)方法---否则你会遇到a different Object with same indicator in a session,那样就会带来一个新的问题,假如你不做一点处理,hibernate发现你的这条记录已经删除了,他会automagiclly create一条新的记录到数据库里。
- 面对web并发访问时候,可能会产生这样的问题,你是怎么设计的?
- 面对web并发访问时候,可能会产生这样的问题,你是怎么设计的
- 面对web并发访问时候,可能会产生这样的问题,你是怎么设计的?
- 在面对级联关联(one-to-many......)查询的时候,你是怎么解决hibernate session关闭的?我是这样做的。
- 当你面对这样的代码时,你会怎么做?
- web并发访问的问题
- 你敢面对这样的现实吗?
- MySQL死锁问题实例分析及解决方法(主要是SQL语句可能会产生的问题)
- 新入的Android工程很多时候都会遇到这样的问题,R.mainactivity.xml报错,一看原来发现是R类访问不到我们的资源文件在这个时候怎么解决呢?
- 为何F8是灰色的?单步调试不了呀? code blocks里面 build options是灰色一直点不了。 有编译器/// 在用codeblocks反编译的时候可能会遇到这样的问题。
- 人机对话是怎么产生的?
- 差距是怎么产生的
- 网页病毒原来是这样产生的
- 你招聘设计师时都问哪些问题?你是怎么招聘设计师大牛的?
- 当你纠结某个问题很难解决的时候,很可能是你的设计出了问题
- 你、有没有 这样的时候
- 你 ,有没有这样的时候
- 你,有没有这样的时候?
- How to project an icon to the map taken from gps at com port
- javascript:SwichData.js
- 内网搭建web服务器
- 刷新页面 和 将数据直接通过datareader读入list控件
- javascript:SpreadSheet.js
- 面对web并发访问时候,可能会产生这样的问题,你是怎么设计的?
- 什么是Ajax ?
- Clickable objects
- 设置id字段的值,选择最大的id值加1后作为新的 id值
- Set Height and Width Pie Chart
- 事件委托的例子
- Find closest point on a Linestring to another point
- 委托的例子
- 《完美程式设计指南》Effective Delphi