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

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

使用道具 举报

ConvoyChan 发表于 2010-8-12 10:11:22 | 显示全部楼层
哩个应该系并发线程问题 同时有5个人抢红包就会甘 之前民航都试过一张机票卖比2个人拉# Y' V! f% Y% \/ V7 f: W4 w6 J
哩个系数据库既并发锁问题。。。。厄 撤远了2 w' f& N( h6 _2 o- n
我估计会系甘既原因. E7 q2 j+ F9 S

7 {4 A, G$ N( s- a: C, l       开始' a4 G: b7 b; I! Y% J4 @# P! _
    a申请红包                                       开始
1 J( f: Y4 Q1 e2 E0 o6 g检查剩余红包数大于1                      b申请红包  / a( q7 b; v4 x1 b# F+ n5 t; K1 X
产生随机星梦写入个人账户     检查剩余红包数大于1
* y! _* L& G8 m- q9 h    剩余红包数-1                产生随机星梦写入个人账户$ n" ^. J$ |! b, \. r
          完成                                 剩余红包数-1
% m, o& Y' _! d$ p                                                       完成% V  l6 S3 w8 D8 H6 ~
                                                   
2 i( }' W) @4 |1 E
( q6 B! W9 ~2 ]7 B' r/ N1 G( L1 a以上同一行代表同时产生既事件 睇明就知道点解星梦会负数。。。。虽然服务器处理既事件可能号短 不过哩个空档确实存在 就可能会产生红包数系负数,解决表面问题既方法系加个check约束比红包剩余数必须大于等于0,不过仍然多拿 不过显示上再冇问题,真正解决方法 系将成个过程做成存储过程,然后运行存储过程之前加锁。。。。。。
回复 支持 反对

使用道具 举报

victorsengmo 发表于 2010-8-12 10:17:29 | 显示全部楼层
本帖最后由 victorsengmo 于 2010-8-12 10:20 编辑 : v2 ~# {* r! E& f
哩个应该系并发线程问题 同时有5个人抢红包就会甘 之前民航都试过一张机票卖比2个人拉# [2 ~8 }5 U8 ?
哩个系数据库既并发 ...( |6 |, q0 r8 T' u6 C% N' L
157972678 发表于 2010-8-12 10:11

' p8 W8 n% G0 A0 O" {7 x5 t$ }+ J1 g: I% u% D" F
大概要加返個check lock吧~~1 ^5 M  ~  s* n/ z1 M
% `: d: |1 c  ?8 ?7 ]
if [ lock == 0] then{
0 K+ Q+ L! r, H9 k9 Y5 r   ....
6 k: o9 A- T  @: z; |! Q- g}else{
9 _  j7 g- o3 n   ....
% {$ n+ r2 R# S}2 V0 U5 R3 [6 h4 O5 _& H3 q/ ]
3 i$ }5 P2 c" x" v
太多年無寫程式了~~
回复 支持 反对

使用道具 举报

ConvoyChan 发表于 2010-8-12 10:36:00 | 显示全部楼层
大概要加返個check lock吧~~
' `: R) D& D9 L7 h1 x( K# B9 @% e& ]! o+ |1 v3 L, Z
if [ lock == 0] then{
$ o) [# G) r) ?- I7 `) _   ....0 C! }6 z1 R* I3 L& I
}else{) s# r1 ~9 l8 u$ a8 L6 {8 v& l0 ~
   ....- {" k8 `. J1 s; D1 M/ k. i
}
  r. p3 B: H6 A- f5 w; G5 U
* S1 C4 S8 ^* p) [$ q6 s! q% C太多年無寫程 ...9 k4 p$ @2 M# }/ f5 v
victorsengmo 发表于 2010-8-12 10:17 AM
! V  |& d! V9 q* [" ^- ^/ K, `; I

  _) l$ q9 D, @  @$ n1 V$ O% P, f2 u0 x& t) Q
    5关程序事
4 s. b5 w8 q2 z" X4 h) x拿红包主要3个步骤
1 e0 m6 o% w, I( Z4 ^4 ]检查剩余红包数,红包金额加入账户,剩余红包数减1
  y8 Z- \/ C* H5 @; T' z就系剩余红包数减1之前有另外一个用户申请红包,结果就会甘 程序系冇办法检查既 只可以靠数据库加锁
回复 支持 反对

使用道具 举报

ConvoyChan 发表于 2010-8-12 10:40:44 | 显示全部楼层
本帖最后由 157972678 于 2010-8-12 10:45 编辑
$ W. z' k# G+ Z2 X( s0 j0 Q$ `
大概要加返個check lock吧~~% Y6 ]6 h7 M/ V

9 ?2 v. B& z1 |2 [  Aif [ lock == 0] then{% t( H; q6 J' b6 {; J1 O) O
   ....
! x$ G5 b" e$ p}else{6 n8 B/ {4 B$ I7 M! y
   ....
3 d  G$ Z8 F+ t, L4 Z% }}
  `* x& h$ a2 @/ Z4 J! ~8 C# B* h) `) b. Y
太多年無寫程 ...& |) J2 p9 X/ Y+ b$ T+ [8 {3 t) |; B
victorsengmo 发表于 2010-8-12 10:17 AM
! f% H  t5 j4 \$ `
) B! F3 S6 `; F( _+ f  U1 w
, L0 q% T$ l# h" l0 q' t
    你哩个lock 数值 系每个用户页面打开既进程都5同,数据不共享,你打算点确定个lock系0定系1呢。。。。
1 u8 k0 l3 J+ Z' B6 p除非好似jsp甘用全局变量,不过网页代码要大改了。。。。5现实。。。。。。。。
% F/ I* X9 R/ g9 C, Nand 如果判定是否够用既话lock用boolbean数据类型就得了 用数值只会减慢运算速度
  }: `  d  h3 X, I7 @" p$ n当然前提你5系认为个lock系读取剩余红包数然后写入既数值。。。。。如果系既话 个lock加左等于冇加* w3 s/ d3 r) A5 Z& V

3 B: K. l  h2 I  A0 o9 P3 x1 W# v4 Z+ p% O6 r& N2 f
      开始                                                                                                       剩余1红包
/ _5 r% h- X- }    a申请红包                                       开始- x  v. m3 [+ P: {6 h
检查剩余红包数大于1                      b申请红包                                             a发现可以申请
$ H- ~4 z: d! k7 D产生随机星梦写入个人账户     检查剩余红包数大于1                                    a获得星梦               红包数未减b发现可申请" r0 G  J$ P" u; a0 n+ N
    剩余红包数-1                产生随机星梦写入个人账户                               红包剩余0                 b获得星梦: O+ b' c: [5 {2 d" @
          完成                                 剩余红包数-1                                                                          红包剩余-1
. d/ @) i9 O+ M4 O                                                       完成
回复 支持 反对

使用道具 举报

victorsengmo 发表于 2010-8-12 10:46:51 | 显示全部楼层
你哩个lock 数值 系每个用户页面打开既进程都5同,数据不共享,你打算点确定个lock系0定系1呢。。 ...  _* Y( F* i0 J8 |4 j, ^2 s& J
157972678 发表于 2010-8-12 10:40
3 A! r2 q4 \6 x7 P) l3 F& {

: x; a5 s/ t5 ~/ w7 I4 t有道理有道理~~看來我退步了很多...哈哈...../ n2 S5 K  i2 L, w' |" Z3 I5 k

$ T* X+ s7 l  H/ ^6 F. j0 y寫程式只係大學果時寫過~出到尼做野巳經無寫了~
回复 支持 反对

使用道具 举报

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 | 显示全部楼层
同一个世界,同一个梦想,同一个时刻,同一声祝福!  Z) T) z/ N% w! Q6 q" }# j5 U; r
洪王 发表于 2010-8-17 15:22
7 x( X% X+ A8 o: l& v
/ E& H$ |. y- P4 M
....離晒題wor老兄....
回复 支持 反对

使用道具 举报

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

本版积分规则

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