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

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

使用道具 举报

ConvoyChan 发表于 2010-8-12 10:11:22 | 显示全部楼层
哩个应该系并发线程问题 同时有5个人抢红包就会甘 之前民航都试过一张机票卖比2个人拉
# ?; ]; f. o! Y3 g9 ^哩个系数据库既并发锁问题。。。。厄 撤远了1 ?( U; k* F& s" m1 O& t
我估计会系甘既原因
* k1 P0 y# b. f' D' |4 Y9 e  X' c" M3 d; l' w, q( L
       开始
) `; e# P  a+ x5 _$ [    a申请红包                                       开始
4 Z6 `0 M4 ~7 z8 k3 u7 q- b检查剩余红包数大于1                      b申请红包  
/ m8 C3 ?' C4 v" u; {; w. ^  J产生随机星梦写入个人账户     检查剩余红包数大于1
& Q- N3 O. Z6 i$ S    剩余红包数-1                产生随机星梦写入个人账户
' I9 v; {. O! a0 D- B% |* Y          完成                                 剩余红包数-1( n7 y  Q2 q4 i. V. C* d+ g4 @
                                                       完成! g4 C# r+ g7 D6 ]8 R
                                                   
% l& ~6 K- J- L4 K, t3 {. B; N3 D6 U- W- p
以上同一行代表同时产生既事件 睇明就知道点解星梦会负数。。。。虽然服务器处理既事件可能号短 不过哩个空档确实存在 就可能会产生红包数系负数,解决表面问题既方法系加个check约束比红包剩余数必须大于等于0,不过仍然多拿 不过显示上再冇问题,真正解决方法 系将成个过程做成存储过程,然后运行存储过程之前加锁。。。。。。
回复 支持 反对

使用道具 举报

victorsengmo 发表于 2010-8-12 10:17:29 | 显示全部楼层
本帖最后由 victorsengmo 于 2010-8-12 10:20 编辑
! O! v3 i  W3 @% e/ i6 g- o# x
哩个应该系并发线程问题 同时有5个人抢红包就会甘 之前民航都试过一张机票卖比2个人拉( f. D( Y; ]+ \
哩个系数据库既并发 ...
: G: q1 X, E2 G6 S/ j157972678 发表于 2010-8-12 10:11

6 b4 H4 L9 `. [3 x, N' \* u0 N; a, @9 h  B* O7 \6 z7 A
大概要加返個check lock吧~~: t& v  u0 u; V& j0 K1 N7 A

' D  R3 W- _! U8 n2 G! ^" n2 lif [ lock == 0] then{
7 V5 w- I( Z# b5 a: b   ....
" g$ S8 K/ \5 a, l! h/ r}else{
! S8 `, f/ j' e   ....
$ b, F9 j1 e( d2 z; d0 r" Y}2 y+ `! U  l4 K- {" F: ]! Q
6 L! [0 v2 a) S$ o
太多年無寫程式了~~
回复 支持 反对

使用道具 举报

ConvoyChan 发表于 2010-8-12 10:36:00 | 显示全部楼层
大概要加返個check lock吧~~" W7 A, H* {7 ~5 g9 p+ x

4 j$ \- V4 K2 P! r1 c. i$ V# {if [ lock == 0] then{
2 p  b: V8 E. Z$ R9 p! b( K7 q   ....0 e% S( D- }+ `- P3 a' `+ D9 b
}else{
  W8 j/ E! H0 E' n0 j   ....
: j, c( P+ y; W: P* E& ^}1 s3 P9 p( V3 a4 @1 O% h2 t
; ?0 d5 _: b  u) b5 J; h6 S/ S/ [
太多年無寫程 ...* I, x  x6 t' G9 y0 J
victorsengmo 发表于 2010-8-12 10:17 AM
4 L! i9 r+ S: W
( u2 G9 p1 b1 U0 m0 k( I+ B. S1 T

# }0 k- B2 O, [! @6 r" B    5关程序事2 ^/ T" I3 f7 q
拿红包主要3个步骤  I1 k; T0 l. l0 {* U( l# V
检查剩余红包数,红包金额加入账户,剩余红包数减17 C7 D' F# H/ F. I7 l
就系剩余红包数减1之前有另外一个用户申请红包,结果就会甘 程序系冇办法检查既 只可以靠数据库加锁
回复 支持 反对

使用道具 举报

ConvoyChan 发表于 2010-8-12 10:40:44 | 显示全部楼层
本帖最后由 157972678 于 2010-8-12 10:45 编辑 " w& U3 m6 M% `  j2 ~; i  r" x* E
大概要加返個check lock吧~~
; {2 x, b; Y% H6 q2 R& R  B) ~" F  q  s& ~2 e! p
if [ lock == 0] then{
. }6 N) Z" h0 d   ....
( |$ S7 B$ \5 _6 Y# {4 w( }2 L9 o2 k}else{
$ B* y, G0 \. G) |* I3 \1 z   ....
( \- Y4 c/ B3 c3 C) Q7 i+ q) k}# m  f% E+ q  }$ ^7 i
) C5 l! J" |6 f9 O
太多年無寫程 ...( T6 S8 ^$ p3 G! Y3 T5 J6 q
victorsengmo 发表于 2010-8-12 10:17 AM

/ M9 l' z1 Y& e4 c8 ?; h! |
  T* j4 N# _4 ?& v  [7 [0 k' k8 v+ V0 k9 o4 w7 _
    你哩个lock 数值 系每个用户页面打开既进程都5同,数据不共享,你打算点确定个lock系0定系1呢。。。。
* p$ _$ t& {: I2 @- x除非好似jsp甘用全局变量,不过网页代码要大改了。。。。5现实。。。。。。。。# n: g. j- T, E9 s; Q* b2 P2 L
and 如果判定是否够用既话lock用boolbean数据类型就得了 用数值只会减慢运算速度
0 r  a1 d1 x/ q) P/ O) d当然前提你5系认为个lock系读取剩余红包数然后写入既数值。。。。。如果系既话 个lock加左等于冇加$ D, Z$ g2 Y( v# f7 S4 m& D
! l4 G  P4 O6 D7 j. m
& v" @5 b/ k3 V+ L7 f. B! \$ e7 X4 i
      开始                                                                                                       剩余1红包+ ^. J) y' P$ M
    a申请红包                                       开始
" Y! p9 k, I# [检查剩余红包数大于1                      b申请红包                                             a发现可以申请
/ F, p. R$ M! c2 U2 U- H" N产生随机星梦写入个人账户     检查剩余红包数大于1                                    a获得星梦               红包数未减b发现可申请
1 P4 f* X  w. C! s, O# R    剩余红包数-1                产生随机星梦写入个人账户                               红包剩余0                 b获得星梦5 ?2 y" y6 L# y  J0 g, z
          完成                                 剩余红包数-1                                                                          红包剩余-10 S4 u# ]5 j- t# A
                                                       完成
回复 支持 反对

使用道具 举报

victorsengmo 发表于 2010-8-12 10:46:51 | 显示全部楼层
你哩个lock 数值 系每个用户页面打开既进程都5同,数据不共享,你打算点确定个lock系0定系1呢。。 ...
4 e# N2 a9 t% D157972678 发表于 2010-8-12 10:40

4 w8 d8 r% I0 ~" u$ S1 N8 F4 v: l. i; h/ q
有道理有道理~~看來我退步了很多...哈哈.....6 p. F4 X* ~  c5 }0 Z

3 T" Q2 X4 Q6 j6 k寫程式只係大學果時寫過~出到尼做野巳經無寫了~
回复 支持 反对

使用道具 举报

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 | 显示全部楼层
同一个世界,同一个梦想,同一个时刻,同一声祝福!, h! r$ |. y& v! a
洪王 发表于 2010-8-17 15:22
/ [, ]& U& |- N5 R) P
! m% [7 p7 J' H& m
....離晒題wor老兄....
回复 支持 反对

使用道具 举报

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

本版积分规则

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