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

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

使用道具 举报

ConvoyChan 发表于 2010-8-12 10:11:22 | 显示全部楼层
哩个应该系并发线程问题 同时有5个人抢红包就会甘 之前民航都试过一张机票卖比2个人拉
, F# i7 D6 p6 e9 t8 _哩个系数据库既并发锁问题。。。。厄 撤远了- s, {- _4 d6 P6 [  U
我估计会系甘既原因2 w9 M) z3 C' T+ N( @
* _/ v8 v' S5 _- i$ t
       开始
5 ]$ P# O) r) @    a申请红包                                       开始
( [( }% t0 S; H- m3 a8 @( w+ v检查剩余红包数大于1                      b申请红包  
. Z  C( f9 ~: l( u7 _  H产生随机星梦写入个人账户     检查剩余红包数大于1
2 i$ X7 d  ]) v' N3 G    剩余红包数-1                产生随机星梦写入个人账户: _! c9 t4 n$ F; A. r) v1 i
          完成                                 剩余红包数-1
) L5 X2 a7 f$ e# i" H, y" Y1 _                                                       完成: s5 l( Z5 b1 |1 O, i0 g# W
                                                   
! H5 B$ j' t- H# j: `$ G+ m& \6 F$ Q) D' j3 r  U2 p
以上同一行代表同时产生既事件 睇明就知道点解星梦会负数。。。。虽然服务器处理既事件可能号短 不过哩个空档确实存在 就可能会产生红包数系负数,解决表面问题既方法系加个check约束比红包剩余数必须大于等于0,不过仍然多拿 不过显示上再冇问题,真正解决方法 系将成个过程做成存储过程,然后运行存储过程之前加锁。。。。。。
回复 支持 反对

使用道具 举报

victorsengmo 发表于 2010-8-12 10:17:29 | 显示全部楼层
本帖最后由 victorsengmo 于 2010-8-12 10:20 编辑 3 ^# p' i* L- |6 s' Z
哩个应该系并发线程问题 同时有5个人抢红包就会甘 之前民航都试过一张机票卖比2个人拉4 R8 Q' X5 g6 O. M  i6 K2 v
哩个系数据库既并发 ...8 M1 Q) |: V1 }. Y5 W) o7 ^
157972678 发表于 2010-8-12 10:11
( a, {% ~3 x( o% y" o4 f  |$ m* O
! l, c. J( s& H  y# N! g& t
大概要加返個check lock吧~~4 v$ g# n3 L5 B6 H, d, J/ \

5 d8 q. |6 W/ D+ a  Dif [ lock == 0] then{
1 ^+ x3 k! B* [" a: {% [; l   ....( t+ B4 @$ B6 S& N
}else{
, r- P( ~9 }3 J, e- @9 }0 C& T1 q   ....+ i6 I. F8 u# c& k$ J# d  u
}
* N- M3 Q9 w% q8 W
' W& w% L: e  n% m/ v1 Y太多年無寫程式了~~
回复 支持 反对

使用道具 举报

ConvoyChan 发表于 2010-8-12 10:36:00 | 显示全部楼层
大概要加返個check lock吧~~
; T3 x( s. I# P! k9 u. l) _' R- H4 G1 r
if [ lock == 0] then{
. y* e! A: x8 o   ....) N7 V$ ]) g) h- K+ l* w
}else{
- t$ S. `% [- ]- g9 g  r   ....
* q* L, l. k' H! l+ K# B}
7 z/ \8 ?$ y& s2 G6 A
. K' ^5 n4 q' t5 Q7 W- V太多年無寫程 ...4 i3 B, m# L8 g3 S1 T8 y
victorsengmo 发表于 2010-8-12 10:17 AM
! S2 P1 f6 F# ?3 u
0 Z+ I3 e: h- G, V! t$ I9 x5 e

% h1 p/ P; l: e0 P; l    5关程序事
+ U/ S* |( L4 J" m) ], V拿红包主要3个步骤7 M1 o$ b9 q9 }" ?4 s9 G
检查剩余红包数,红包金额加入账户,剩余红包数减1; I: ?! a( N0 d1 T$ m  r% j- K! A8 F
就系剩余红包数减1之前有另外一个用户申请红包,结果就会甘 程序系冇办法检查既 只可以靠数据库加锁
回复 支持 反对

使用道具 举报

ConvoyChan 发表于 2010-8-12 10:40:44 | 显示全部楼层
本帖最后由 157972678 于 2010-8-12 10:45 编辑
7 o& @. }' y) J! M5 Y& C
大概要加返個check lock吧~~: Y& K3 q" X, i
1 H8 U9 Q% T% B2 U% Y# h! A* @
if [ lock == 0] then{
. S- }# [  k, x- g   ....
% \$ q) e  `* ^" `}else{" w3 \$ H) \4 f# b# T
   ....
8 b7 x! q9 }2 v}
6 F% R: |: D- n7 n9 ?3 T8 ^, J9 K' J6 `2 N7 x
太多年無寫程 ...2 X( H" Y. X8 {2 [7 y: D3 @. p+ J
victorsengmo 发表于 2010-8-12 10:17 AM
( E- w6 [" Y* W+ \, Q- q5 R. N2 t

9 H' N8 P  I6 i9 w4 b' o1 g) K8 d3 U; e$ |7 y
    你哩个lock 数值 系每个用户页面打开既进程都5同,数据不共享,你打算点确定个lock系0定系1呢。。。。& P8 J9 c5 z# }
除非好似jsp甘用全局变量,不过网页代码要大改了。。。。5现实。。。。。。。。/ J7 n8 c7 y, b4 N) ?' o! v% q
and 如果判定是否够用既话lock用boolbean数据类型就得了 用数值只会减慢运算速度
) j7 I7 _2 b( ^' g- z当然前提你5系认为个lock系读取剩余红包数然后写入既数值。。。。。如果系既话 个lock加左等于冇加! }! z' d( t- b6 y
& G& e+ |* E) b2 w5 L
2 I  R& v, I' }1 ~
      开始                                                                                                       剩余1红包2 O3 ]- }! x, i9 [
    a申请红包                                       开始, k% g/ b, o& k! i. @
检查剩余红包数大于1                      b申请红包                                             a发现可以申请
3 ^. A0 U: o. `& C8 F" z# `4 d产生随机星梦写入个人账户     检查剩余红包数大于1                                    a获得星梦               红包数未减b发现可申请$ Q/ {1 V, t8 }9 X7 Q
    剩余红包数-1                产生随机星梦写入个人账户                               红包剩余0                 b获得星梦
9 j7 I6 D1 D# O* F          完成                                 剩余红包数-1                                                                          红包剩余-1$ z2 R, ]' Z: g1 ^$ P$ j7 ~: A' M
                                                       完成
回复 支持 反对

使用道具 举报

victorsengmo 发表于 2010-8-12 10:46:51 | 显示全部楼层
你哩个lock 数值 系每个用户页面打开既进程都5同,数据不共享,你打算点确定个lock系0定系1呢。。 ...1 @$ U: R$ \* D( B* G7 i
157972678 发表于 2010-8-12 10:40

# v% p) D! t, L8 A
) `/ r( f: K/ G3 b. Z2 b. x有道理有道理~~看來我退步了很多...哈哈.....) a0 @- [! u$ K# ?
5 K3 e+ S, m) O" z. E
寫程式只係大學果時寫過~出到尼做野巳經無寫了~
回复 支持 反对

使用道具 举报

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 | 显示全部楼层
同一个世界,同一个梦想,同一个时刻,同一声祝福!% Q6 A: d8 z) s6 Q# ?( v
洪王 发表于 2010-8-17 15:22

+ D3 {1 f3 Y8 n" c/ g' f( {4 j3 p! Q% H3 h. n6 Q8 W
....離晒題wor老兄....
回复 支持 反对

使用道具 举报

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

本版积分规则

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