MyException - 我的异常网
当前位置:我的异常网» Java Web开发 » 【技术“瓶颈”】电信分公司-华讯面试题,探讨下解

【技术“瓶颈”】电信分公司-华讯面试题,探讨下解题思想解决方法(2)

www.MyException.Cn  网友分享于:2015-08-27  浏览:21次

单服务器的话,建立一个被锁定商品数量的全局静态HASH字典。
当客户B点击购买的时候Ajax请求调用购买函数,并根据HASH字典(需要加锁同步)验证数量是否足够。

多服务器的话,麻烦一点点(如果做过此类应该也不麻烦),需要同步多台机器的HASH字典。
------解决方案--------------------
学习了... ...

探讨

可以采用服务器推技术,当A客户购买商品以后,服务器主动将更新后的商品数量推到其他客户上
具体使用方式查看:
http://www.ibm.com/developerworks/cn/web/wa-lo-comet/

------解决方案--------------------
貌似taobao上也会遇到类似的问题,不过看起来他们应该是如果客户确定了购买意向,

会切换到下一个页面输入购买的数量,然后再切换到下一个页面准备付款。

我想在输入购买数量之后,就可以counter
------解决方案--------------------
顶14楼
------解决方案--------------------
对啦
我常常看到有些软件的下载页面
http://www.maxthon.cn/
会动态显示软件的下载数量
如果不是用Ajax刷新的 那应该就是楼主想要的把
------解决方案--------------------
如果需要实时显示的话,对于浏览器与HTTP协议,只有长连接与定时ajax请求两种办法,服务器压力会很大。
可以考虑支持socket操作的浏览器插件,如flash、银光、.net客户端、java客户端等...,这个需要客户端支持。
------解决方案--------------------
个人感觉还是用访问数据库确定剩余件数是不是大于需求件数,如果小于就提示错误,再显示新的件数就行了。用Ajax更新是很不现实的,先不谈能不能实现,就算能实现也不可行。如果库存10000件,现在有100个客户在购买,是不是一个人购买另外99个人的画面跟着变?如果人数再多点呢?这样不是顾客的画面那个数字一直变?还有就是对服务器造成的负载量也太大了。
------解决方案--------------------
我们公司里面是这样操作的..

在数据库里面商品表里面添加一个长整型的字段.存一个值.然后在A用户购买7件的时候修改这个字段的值.
然后B用户在来修改此记录的时候发现和B第一次拿的这个值和数据库里面的值不同,这样就可以知道这个操作被另一个用户操作,所以提示用户重新刷新..在操作,此时B的页面在刷新后就可以看到只有3件了.

如果有更好的,我也希望学习学习..
------解决方案--------------------
说一下,我们公司不是BS架构的..用自己整合的Swing.然后用到的是EJB..
------解决方案--------------------
对于访问量较大的互联网程序用长连接做服务器推是很不靠谱的,为了这个屁大点的
功能,需要耗费大量的服务器资源,以为WEB无服务器能够管理的长连接个数是有限的
也就几百个。
对于这样的需求可以从两个方面来做,第一在现实页面用Ajax定期刷新。第二当
客户购买的时候输入购买数量,提交的时候检查库存是否够。能做到这两点我认为就
够了,互联网程的特点本身就决定了这个问题不可能有太好的解决办法,也没有必要。
现实生活中这种并发问题也常有
------解决方案--------------------
思路如下:
html长连接.对每一个打开商品的用户给予一个长连接.当客户A购买商品7件成功后,立刻通过长连接给予用户B或用户C......的显示商品数量为3或其它提示.通过长连接可以准时准确的给予提示.当用户关闭商品查阅页长连接也会断开.
长连接解决此问题的优点:及时有效.避免了对数据库操作,避免了用户B操作后才告知商品的剩余数量
缺点:长连接的web和应用服务器性能不稳定.不过可以参考FLASH的通讯协议.
------解决方案--------------------
操作时,存服务器SESSION中
SESSION随A的操作init和destroy

用filter在B操作前拦截

可能session不够大 
 

------解决方案--------------------
学习中、、、、、、、、、、、、、觉得没必要为这个小功能浪费服务器的资源
------解决方案--------------------
Java code

设计模式之Observer

------解决方案--------------------
A购买商品的同时数据库商品的数量不就级联更新了么 显示B用户的应该是更新后的数据
------解决方案--------------------
同步更新的问题
------解决方案--------------------
服务器推技术 比较 赞同
------解决方案--------------------
通过线程来解决
------解决方案--------------------
应该放在application中,数据共享
但是这样会带来线程安全的问题,只有同步那块代码
但是又会降低效率,
这是一把双刃剑,没有最好的做法,只有更好的做法,要看具体的情况

这是个购物平台,我觉得安全是最重要的
------解决方案--------------------
探讨
应该放在application中,数据共享

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有