免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2575 | 回复: 9
打印 上一主题 下一主题

多用户环境下程序设计的思考 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-22 21:00 |只看该作者 |倒序浏览
据我了解许多菜鸟们写程序时候的逻辑思维是好像只有他一个人在使用这台计算机或数据库。于是便得到意想不到的结果。
我现在提出几个问题来讨论。

1)怎样在系统自动生成的记账凭证中打上号码连续的序列号(要在多用户环境保持唯一)
2)怎样防止在客户主文件的维护程序中防止产用户打入重复的客户号码(用户可以打入任意号码,只要这个号码不曾被用过)
3)讨论死锁是怎样产生的。再讨论如何防止死锁

请老鸟们一起进来讨论。

论坛徽章:
0
2 [报告]
发表于 2009-11-22 21:15 |只看该作者

回复 #1 franliu 的帖子

案例分析一:

某用户告诉程序员说,你就把现有的记账凭证的最大号码找出来,再把这个号码加上1用在系统新生成的记账凭证上就可以了。
于是那菜鸟程序员就如法炮制。可是没几天系统里就出现了很多重复的记账凭证号码。

大家分析一下问题出在那里。

论坛徽章:
0
3 [报告]
发表于 2009-11-22 23:20 |只看该作者
我们一般使用一个表来存放流水号,在最后保存的时候才生成单据号码并更新流水号。

论坛徽章:
0
4 [报告]
发表于 2009-11-22 23:43 |只看该作者

回复 #3 afeng8848 的帖子

对了,这是正确的做法。

因为在多用户环境中,如果现在数据库里面最大的流水号码是100,那么如果有两个作业同时想写一个新的记账凭证纪录,他们会同时拿到现在的最大号码,在加一,然都就同时写入新记账凭证号码101。

三楼的做法是用另一表来存贮最大的用过的号码。取新号码是chain这个纪录,加锁,把号码加一,返回新号码,再更新最大用过的号码。在新号码写回前,这个纪录是被锁住的,因此其他作业如果也想拿到新号码,他就会等待,等到新号码更新回去。这样,其他作业就能拿到新号码了。

用户用他的单用户思维解释他对业务的理解是很正常的。作为专业的程序员,就不可以简单的使用用户描述的逻辑。我们要把用户的描述翻译成可靠的逻辑,这个逻辑要能够在多用户环境稳定运行。

[ 本帖最后由 franliu 于 2009-11-22 23:55 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-11-22 23:50 |只看该作者

多用户环境下程序设计的思考 案例分析二

某用户对菜鸟程序员说,客户代码应该是唯一的。你写的客户主文件维护程序可以让它先检查一下看看那个用户自选的号码是否已经有人用过了。如果有,你就报错,如果没有,你就让他用这号码。

菜鸟程序员于是如法炮制。可是不久就发现数据库里面有很多重复的客户代码。请大家分析,并找出解决的办法。

其实这个东西蛮有普遍意义。许多让人自选登陆名的系统都可能存在同样的问题。

论坛徽章:
0
6 [报告]
发表于 2009-11-23 09:19 |只看该作者
菜鸟怎么了,谁不是从菜鸟过来的?你们一出生就是高手?

论坛徽章:
0
7 [报告]
发表于 2009-11-23 11:09 |只看该作者

回复 #6 wangluopachong 的帖子

我不能指名道姓说是哪个公司的某某人,就用菜鸟代替啦。我们每一个人都是从菜鸟经过学习成为老鸟的。如果我用菜鸟这个字对你有所冒犯,就请你多多包涵咯。

老实说IBM那些培训不会教你这些诀窍的。他们只教些皮毛的东西。我拿自己的经验和大家分享,好让菜鸟们早日成长为老鸟。没想到冒犯了你,请原谅哦。

[ 本帖最后由 franliu 于 2009-11-23 11:10 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2009-11-23 15:30 |只看该作者

回复 #7 franliu 的帖子

呵呵.菜鸟也好老鸟也好,都一样,人非圣贤孰能无过,只是新手经验少点,旧人经验丰富点,到最后都一样是技术人员..呵呵

论坛徽章:
0
9 [报告]
发表于 2009-11-27 17:41 |只看该作者
案例2的具体解决方案是啥呢?

论坛徽章:
0
10 [报告]
发表于 2009-11-27 17:45 |只看该作者

回复 #9 风中散发芹 的帖子

我会专题讨论这个问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP