[新手问题] 點解紅包會負數?

victorsengmo 发布于2010-8-12 00:25 3346 次浏览 26 位用户参与讨论   [复制分享主题]
kc123kc 发表于 2010-8-12 09:51:36 | 显示全部楼层
连续几次都系拿1星梦嘅路过...
回复 支持 反对

使用道具 举报

ConvoyChan 发表于 2010-8-12 10:11:22 | 显示全部楼层
哩个应该系并发线程问题 同时有5个人抢红包就会甘 之前民航都试过一张机票卖比2个人拉
, A6 z3 r  x( O& U! ]! x# i哩个系数据库既并发锁问题。。。。厄 撤远了0 Z  J1 Q2 Y# V
我估计会系甘既原因$ G/ H) m3 ]* ]% a  ]# [6 x

) f( S" L. p. |) F. h5 I       开始
: |6 G8 D0 G; @    a申请红包                                       开始
: U  g' e, n* J- \检查剩余红包数大于1                      b申请红包  
4 u" F6 K) [( f( n. E产生随机星梦写入个人账户     检查剩余红包数大于1
) Y. Z6 K* V6 j8 {' _9 [    剩余红包数-1                产生随机星梦写入个人账户
! j1 g. g6 a1 J) c          完成                                 剩余红包数-1& `; y; O+ l7 y# ~5 s1 P9 s/ P6 Q6 B
                                                       完成% n  }2 j; Y( S" ~
                                                   
9 F2 ?& ?1 u% d
7 n! |. d' n  `3 B) T: S' j- |) |3 p以上同一行代表同时产生既事件 睇明就知道点解星梦会负数。。。。虽然服务器处理既事件可能号短 不过哩个空档确实存在 就可能会产生红包数系负数,解决表面问题既方法系加个check约束比红包剩余数必须大于等于0,不过仍然多拿 不过显示上再冇问题,真正解决方法 系将成个过程做成存储过程,然后运行存储过程之前加锁。。。。。。
回复 支持 反对

使用道具 举报

victorsengmo 发表于 2010-8-12 10:17:29 | 显示全部楼层
本帖最后由 victorsengmo 于 2010-8-12 10:20 编辑 + c$ Q4 `! M% ~/ i5 H4 b
哩个应该系并发线程问题 同时有5个人抢红包就会甘 之前民航都试过一张机票卖比2个人拉
& n1 d' o7 Z  Z; N8 ^0 k( L9 x哩个系数据库既并发 ...' I. l- V- V1 C3 d
157972678 发表于 2010-8-12 10:11
3 n. _4 Y% s% W2 S) V: _
0 M, M. S% T1 b5 R
大概要加返個check lock吧~~
; e; }) t( M. {$ H8 r8 Q$ i8 w
4 l. F3 B& S: aif [ lock == 0] then{
- X5 D9 G" |4 |% J* r/ p1 d& l   ....
2 Q% k3 i$ w) ]" k, d$ N7 U$ X9 |}else{
* y' h( r$ P& S) u, R- M# u   ....
' W! ^4 o( ~. p5 d( t}2 _# n2 P- x" `- M: V& f

+ D0 c2 B) u; y$ m3 r; y5 b太多年無寫程式了~~
回复 支持 反对

使用道具 举报

ConvoyChan 发表于 2010-8-12 10:36:00 | 显示全部楼层
大概要加返個check lock吧~~5 ]4 _8 M% K1 t& C0 a
3 {* n: h( }' K; ^0 E
if [ lock == 0] then{' P9 z5 B! d: o, _5 U* @7 U
   ....7 d4 V, s% a. ?. k* C* @! Z3 e
}else{4 J1 p6 V5 V6 X0 s, v# V
   ....& a* k# e; g4 E) G
}6 I. L! ?4 q& n% \1 t

4 H& C( R/ w' w: w3 O' g1 S0 ~太多年無寫程 ...
4 c0 `; Q# u, ^+ u% nvictorsengmo 发表于 2010-8-12 10:17 AM

, e# o1 y# W  S3 s2 ]8 H) |$ J
( z5 J. ^! q9 s* a" O- v4 E" x3 e* j' c; n6 z. H$ Y2 [- W9 M) F* d
    5关程序事/ r7 o$ Z# o/ e4 A0 {- G9 R
拿红包主要3个步骤
- G+ d- P% |, S) [$ S% W  ]检查剩余红包数,红包金额加入账户,剩余红包数减1
' e; ]( M1 d2 K9 E+ c: j2 @5 `就系剩余红包数减1之前有另外一个用户申请红包,结果就会甘 程序系冇办法检查既 只可以靠数据库加锁
回复 支持 反对

使用道具 举报

ConvoyChan 发表于 2010-8-12 10:40:44 | 显示全部楼层
本帖最后由 157972678 于 2010-8-12 10:45 编辑
, n* O% M1 |" a: q% g, h
大概要加返個check lock吧~~
, Q7 o/ z4 |; c0 x
. {, N: r) g3 H$ V$ V* |% T$ J( nif [ lock == 0] then{
! X! l/ Q2 m9 W   ....
# F2 ?# ]' B: g}else{
$ K/ h- i& J9 y$ T   ....' V0 g+ Y% Z; B2 s6 f# y
}/ h' W- O+ N# m8 T% }  D

1 L, m+ C/ q% B3 [  J  D2 j' P太多年無寫程 ...# L" ~" t# n, ^( j' e2 `( @! n
victorsengmo 发表于 2010-8-12 10:17 AM
/ z- B% i% A- [! y

, l: l1 T8 i1 }3 j0 c6 b7 L0 t
5 G3 d: A4 q$ Z/ J( k    你哩个lock 数值 系每个用户页面打开既进程都5同,数据不共享,你打算点确定个lock系0定系1呢。。。。
2 i8 n% g* |8 [7 L除非好似jsp甘用全局变量,不过网页代码要大改了。。。。5现实。。。。。。。。
- u! c9 ]* k2 w6 ~- gand 如果判定是否够用既话lock用boolbean数据类型就得了 用数值只会减慢运算速度
* ^2 N. g* X; b  d* r( Q当然前提你5系认为个lock系读取剩余红包数然后写入既数值。。。。。如果系既话 个lock加左等于冇加7 C" L3 {) J) j7 h

8 X& E7 m# t. [8 H7 T) S; h3 ~
# Y% P" n2 r$ J! Z6 v$ C. n      开始                                                                                                       剩余1红包( ~) i- T; G6 e( i* _
    a申请红包                                       开始4 M8 C& i/ R; p1 O# [. q5 @
检查剩余红包数大于1                      b申请红包                                             a发现可以申请
3 }( s! X1 C1 A  `/ i) T产生随机星梦写入个人账户     检查剩余红包数大于1                                    a获得星梦               红包数未减b发现可申请4 ?. A+ z! d5 O  h7 G" b
    剩余红包数-1                产生随机星梦写入个人账户                               红包剩余0                 b获得星梦, g' d! r. H# O& }9 i. e
          完成                                 剩余红包数-1                                                                          红包剩余-1
( S. l4 q3 b/ N                                                       完成
回复 支持 反对

使用道具 举报

victorsengmo 发表于 2010-8-12 10:46:51 | 显示全部楼层
你哩个lock 数值 系每个用户页面打开既进程都5同,数据不共享,你打算点确定个lock系0定系1呢。。 ...
2 @  [- Q- ^: V% ?" H: U1 K/ u& Q157972678 发表于 2010-8-12 10:40
0 d3 z/ u' Z/ v3 C' C
4 N; Z$ h# G/ B3 Q; [1 D) A0 L' r
有道理有道理~~看來我退步了很多...哈哈.....
6 R( A: e8 K) G/ l6 W4 m6 L) p4 G" r
. E7 g3 _, Q2 U/ C寫程式只係大學果時寫過~出到尼做野巳經無寫了~
回复 支持 反对

使用道具 举报

Kiver 发表于 2010-8-12 11:07:00 | 显示全部楼层
原来有一伙程序高手在~~~受教了~~~
回复 支持 反对

使用道具 举报

lesswind 发表于 2010-8-14 15:30:52 | 显示全部楼层
唔係wor~我成日都攞到個wor~
回复 支持 反对

使用道具 举报

洪王 发表于 2010-8-17 15:21:31 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

洪王 发表于 2010-8-17 15:21:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

洪王 发表于 2010-8-17 15:22:44 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

victorsengmo 发表于 2010-8-17 15:25:14 | 显示全部楼层
同一个世界,同一个梦想,同一个时刻,同一声祝福!
* j+ `: z* H" H6 V洪王 发表于 2010-8-17 15:22

: C/ T, e) R$ p* K. h* F: _9 c
4 ]7 h+ q: X9 ^+ n* I9 `. l ....離晒題wor老兄....
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 註冊

本版积分规则

快速
回复
返回
列表
返回
顶部